Ollamaに新たにモデルがリリースされた「OpenCoder」を試してみました。ollamaはローカルでAIモデルを実行できるツールで、OpenCoderを気軽に試せる点が魅力です。今回は、OpenCoderを使って簡単なサーバー・クライアントプログラムを生成し、実際に動作させてみたので、その様子をレポートします。
ollamaとは?
ollamaは、LLMをローカル環境で効率よく実行するためのランタイム環境です。特徴は次のとおりです。
- シンプルで使いやすい: コマンドラインインターフェースで、LLMの起動、停止、管理などが簡単に行えます。
- 高速で効率的: 複数のGPUに対応し、高速な推論処理を実現します。
- 柔軟性が高い: さまざまなLLMに対応し、カスタマイズも可能です。
Ollamaの環境構築について知りたい方はこちら
OpenCoderとは
完全にオープンで再現可能な大規模言語モデルらしいです。
すいません。詳しく知りません。。詳細は、以下参照ください。
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の紹介はこちらでしていますので、参考にしてください。
この記事が、あなたの参考になれば幸いです。
コメント