ollamaでOpenCoderを試してみた! – 完全にオープンで再現可能な大規模言語モデル

この記事は約11分で読めます。
スポンサーリンク

Ollamaに新たにモデルがリリースされた「OpenCoder」を試してみました。ollamaはローカルでAIモデルを実行できるツールで、OpenCoderを気軽に試せる点が魅力です。今回は、OpenCoderを使って簡単なサーバー・クライアントプログラムを生成し、実際に動作させてみたので、その様子をレポートします。

ollamaとは?

ollamaは、LLMをローカル環境で効率よく実行するためのランタイム環境です。特徴は次のとおりです。

  • シンプルで使いやすい: コマンドラインインターフェースで、LLMの起動、停止、管理などが簡単に行えます。
  • 高速で効率的: 複数のGPUに対応し、高速な推論処理を実現します。
  • 柔軟性が高い: さまざまなLLMに対応し、カスタマイズも可能です。

Ollamaの環境構築について知りたい方はこちら

OpenCoderとは

完全にオープンで再現可能な大規模言語モデルらしいです。
すいません。詳しく知りません。。詳細は、以下参照ください。

完全にオープンで再現可能な大規模言語モデル「OpenCoder」がリリースされる|au Webポータル
au Webポータル

OpenCoderをollamaで実行

まずはollamaを使ってOpenCoderをダウンロードしました。以下のコマンドを実行するだけで、簡単にダウンロードが完了しました。

ollama pull opencoder

ダウンロードサイズは5GB程度と、一般的なサイズなにかなと思います。

OpenCoderの動作を確認

OpenCoderに以下のプログラムで「Pythonでソケット通信プログラムを作成して」と指示してみました。
※現在、英語と中国語のみの対応とのことなので、英語で指示しています。

# -*- coding: utf-8 -*-
import ollama
import os
import time

start_time = time.time()

response = ollama.chat(
    model='opencoder',
    messages=[{
        'role': 'user',
        'content': 'Generate a socket communication program in Python',
    }]
)

end_time = time.time()
elapsed_time = end_time - start_time

print(f"Response: {response['message']['content']}")
print(f"Elapsed time: {elapsed_time:.2f} seconds")

生成結果

以下の通り、生成結果を返してくれました。
簡単なプログラムで、3分20秒ほど生成に時間を要しました。
※私のPC環境が、intel N100 なのでパワー不足のため時間はかかっているものと推測します。

Response: Here is a simple example of how you can use sockets for communication between two programs written in python.

Server Side:

```python
import socket

def Main():
    host = "localhost"
    port = 5000 
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind((host,port))
    
    s.listen(1)
    print("Waiting for connection")

    c, addr = s.accept()
    print("Connection from ",addr)

    while True:
        data = c.recv(1024).decode()
        if not data:
            break
        print ("from connected user: " + str(data))
        data = input(' -> ')
        c.send(data.encode())

    c.close()

if __name__ == '__main__':
    Main()
```

Client Side:

```python
import socket

def Main():
    host = "localhost"
    port = 5000
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    s.connect((host,port))

    while True:
        data = input(' -> ')
        s.send(data.encode())
        reply = s.recv(1024).decode()

        if not reply:
            break
        print("Received from server: "+reply)

    s.close()

if __name__ == '__main__':
    Main()
```

You can run these two programs simultaneously. The first one acts as a server, listening for incoming connections and messages. The second program acts as a client that connects to the server and allows you to send and receive messages. Please note this is a basic example and does not include error handling or security measures.

Elapsed time: 202.42 seconds

動作確認

生成されたプログラムを実行したところ、問題なく動作しました。

サーバーとクライアント間でメッセージを送受信することができました。

OpenCoderの評価

OpenCoderは、軽量で手軽にコード生成を試せる点が魅力です。今回のように簡単なプログラムであれば、問題なく生成することができました。

ただし、ウェブの情報によると、GPT4やllama3.1と比べると精度は劣るようです。
また、現時点で対応している言語は英語と中国語のみで、日本語には対応していません。

まとめ

OpenCoderは、軽量で日本語対応が待ち望まれるものの、気軽にコード生成を試せるツールとして、今後発展が期待されます。特に、簡単なプログラムやコードの断片を生成したい場合に役立つでしょう。
OpenCoderの今後の発展に期待です!!

今回使用したPCはこちらです。
※2024年11月現在で、Amazonであれば5500円クーポンを使って、23000円ほどで購入可能です。

こちらのPCの紹介はこちらでしていますので、参考にしてください。

この記事が、あなたの参考になれば幸いです。

コメント

タイトルとURLをコピーしました