Ollama は各種 LLM をローカルで手軽に動かせます。HTTP サーバーとして実装されているため、LLM を専用マシンに分離することも簡単です。
デフォルトでは 127.0.0.1:11434
で待ち受けされるため、ローカルからのアクセスに制限されます。
11434
は llAMA (LLAMA) ということのようです。
WSL2 はホストとは別の IP アドレスを持っているため、Windows 側の Ollama に WSL2 から 127.0.0.1:11434
でアクセスすることはできません。
外部からのアクセスを許可するには環境変数 OLLAMA_HOST
と OLLAMA_ORIGINS
を設定します。👉FAQ
OLLAMA_HOST=0.0.0.0
OLLAMA_ORIGINS=192.168.0.*
※ 127.0.0.1
と 0.0.0.0
の違いについては以下の記事が参考になります。
クライアント
OLLAMA_HOST
はサーバーだけでなく、クライアントにも影響します。
OLLAMA_HOST
が設定されていない、または自ホストが指定されている場合、ollama
コマンドを実行すると、サーバーが起動していなければ自動的に起動します。一方、他のホストが設定されている場合は、指定されたホストに接続しようとしますが、起動していなければ失敗します。
ライブラリ
Python からアクセスするための公式ライブラリがあります。
OLLAMA_HOST
が設定されていれば、自動的にそちらに接続します。
import ollama
ollama.generate(model="gemma2:2b", prompt="Who are you?")
LangChain
汎用的な LLM ライブラリである LangChain でも Ollama はサポートされています。
ただし LangChain では OLLAMA_HOST は参照されないため、別マシンにアクセスするには base_url
を指定する必要があります。
from langchain_community.llms import Ollama
llm = Ollama(base_url="http://192.168.0.11:11434", model="gemma2:2b")
llm.invoke("Who are you?")
参考
ローカル LLM の構築は手間が掛かりそうなので敬遠していましたが、Ollama はあっさり動きました。型落ちのノート PC (Core i5-3320M) でも、gemma:2b
は 5tps くらいは出るので驚きました(gemma2:2b
も同程度)。Ollama と Gemma の組み合わせは私にとって画期的でした。