Ollama: ローカルPCでLLMを動かしてみる!

Ollamaは、ローカルPCでオープンソースの大規模言語モデル(LLM)を簡単に利用できる、非常に魅力的なツールです。今回は、Windows環境にOllamaを導入し、LLMを利用する方法について紹介します。
Ollamaをインストール
まず、公式のダウンロードページに行き、Ollamaのインストーラーをダウンロードします。ダウンロードしたインストーラを実行すると、以下のような画面が表示されるので、[Install]ボタンをクリックします。

LLMを使ってみる
Ollamaのインストールが終わったら、PowerShellを起動します。今回は、メタ社が開発した Llama 3.1 を使ってみたいと思います。
以下のように、ollama run llama3.1 と入力してコマンドを実行すると、モデルのダウンロードが始まります。

ダウンロードが終了すると、自動でモデルが実行されますので、プロンプトに適当に入力してみます。

実行結果を見ると、自然な日本語が生成されていることを確認できます。また、内容についても不自然回答にはなっていません。なお、終了する場合は、プロンプトに /exit と入力して実行してください。
Ollamaのコマンドには、上記以外にもいくつか用意されているのでヘルプで確認してみてください。

OllamaでサポートしているLLM
Ollamaで利用できるLLMのモデルについては公式ページを確認してください。以下に、代表的なモデルをまとめます。
| Model | Parameters | Size | Download |
|---|---|---|---|
| Llama 3.1 | 8B | 4.7GB | ollama run llama3.1 |
| Llama 3.1 | 70B | 40GB | ollama run llama3.1:70b |
| Llama 3.1 | 405B | 231GB | ollama run llama3.1:405b |
| Phi 3 Mini | 3.8B | 2.3GB | ollama run phi3 |
| Phi 3 Medium | 14B | 7.9GB | ollama run phi3:medium |
| Gemma 2 | 2B | 1.6GB | ollama run gemma2:2b |
| Gemma 2 | 9B | 5.5GB | ollama run gemma2 |
| Gemma 2 | 27B | 16GB | ollama run gemma2:27b |
| Mistral | 7B | 4.1GB | ollama run mistral |
| Moondream 2 | 1.4B | 829MB | ollama run moondream |
| Neural Chat | 7B | 4.1GB | ollama run neural-chat |
| Starling | 7B | 4.1GB | ollama run starling-lm |
| Code Llama | 7B | 3.8GB | ollama run codellama |
| Llama 2 Uncensored | 7B | 3.8GB | ollama run llama2-uncensored |
| LLaVA | 7B | 4.5GB | ollama run llava |
| Solar | 10.7B | 6.1GB | ollama run solar |
Ollamaをサーバーとして利用する
ollama-pythonというPythonパッケージを利用することで、PythonからOllamaのLLMを利用することができます。次のようにpipコマンドで簡単にインストールできます。
$ pip install ollama
OllamaのLLMを利用するPythonコードは次のようになります。
from ollama import Client
if __name__ == "__main__":
client = Client(host="http://localhost:11434")
response = client.chat(model="llama3.1", messages=[{
"role": "user",
"content": "深層学習のアーキテクチャの1つであるTransformerとはどのようなものですか?",
},]
)
print(response["message"]["content"])
Ollamaはデフォルトで、127.0.0.1:11434で待ち受けされるようです。ポート番号を変更する際は、環境変数OLLAMA_HOSTを設定する必要があるようです。また、外部環境からのリクエストに応答する際は、以下の環境変数を設定するようです。
OLLAMA_HOST=0.0.0.0 OLLAMA_ORIGINS=192.168.0.*
通常、ローカル環境でLLMを動かす場合、構築に手間がかかりますが、Ollamaを利用することで簡単に導入できます。現時点では、ChatGPTなどのLLMベンダーが用意したモデルを利用するのが一般的ですが、最近オープンソースのLLMにも注目が集まっています。モデルのファインチューニング等が不要であれば、Ollamaを利用するのも選択肢に入りそうです。