OllamaでローカルLLM
外部に出すのがはばかられる情報を扱う場合や、費用をかけたくない場合、再現性が必要な場合、rate limitを気にせず大量ループ処理したい場合に、ローカルLLMは魅力的である。ここでは Ollama(オラーマ)というツールを使って、アプリまたはコマンドラインまたはPythonからLLMを使う方法を説明する。Ollamaは llama.cpp から派生したたいへん使いやすいツールである。Ollama以外の選択肢としては LM Studio がある。
ここではMacを使う。Ollamaサイトよりdmgファイルをダウンロードし、開いて中に見えるOllama.appをApplicationsに移動する。アプリケーションの中のOllamaを起動すると、Ollamaアプリが立ち上がる。初回起動時に /Applications/Ollama.app/Contents/Resources/ollama へのシンボリックリンクが /usr/local/bin に作られる。また、バックグラウンドのプロセスが起動し、メニューバーにOllamaアイコンが常駐する。利用はOllamaアプリで行うのが簡単だが、ターミナルからollamaコマンドを使って行うことも、後述するようにPythonなどを使ってAPIを呼び出すこともできる。Emacsから使う方法は こちら、こちら に書いた。
まずは適当なモデルをダウンロードして動かす。
私のメモリ128GのMac Studio(M4 Max、SSD 512G、553800円)では、OpenAIのgpt-oss-120b(Ollamaでの名前は gpt-oss:120b
)が快適に使えた。モデルはOllamaアプリからも選べるが、ターミナルに
ollama pull gpt-oss:120b
とすればモデルがダウンロードされる(すでにダウンロード済みであれば更新を確認し、更新されていれば再ダウンロードする)。あるいは
ollama run gpt-oss:120b
と打ち込めば、モデルがダウンロードされていなければダウンロードして、起動し、ターミナル上で対話できる。
24GB以上あればgpt-oss-20bが使える。
ollama run gpt-oss:20b
16GBでもgpt-oss-20bは起動するが、メモリ不足で実用的でない。
メモリが少ない場合は、いろいろ選択肢がある。例えばGoogleの Gemma 3(ジェンマ・スリー)の場合、OllamaのGemma 3のページを参考にして、gemma3:1b
、gemma3:4b
、gemma3:12b
、gemma3:27b
の中から適当なものを選ぶ。メモリ8GのMacなら4b
、メモリ16GのMacなら12b
、それ以上なら27b
が使えそうである(b
はbillionつまり10億パラメータ)。モデルのページのView allの中には、さらにいろいろなバリエーションがある。デフォルトは4ビット量子化(Q4_K_M)だが、名前の最後に -it-qat
が付くものは新しいQAT版(Quantization-Aware Trained版)である。ちなみに Gemma /ʤémə/ は星の名前で、日本語名はゲンマである。
他の選択肢としては、中国系の Qwen 3(クウェン・スリー)、DeepSeek-R1 などが人気である。
アプリの使い方は直感的で、説明は不要であろう。
コマンドで使う場合は、例えば gemma3:12b
なら
ollama run gemma3:12b
と打ち込むと、初回はモデルのダウンロードが始まり、それが終われば入力を受け付ける状態になるので、何か質問すれば、答えが返る。ヘルプは /?
、終了は /bye
である。モデルが対応していれば、画像を含めることもできる。
>>> OCRしてください。 ./test.jpg
ダウンロードしたモデルは ~/.ollama
(ホームディレクトリ🏠の .ollama
フォルダ)に入る(Linuxでは /usr/share/ollama/.ollama
)。この位置はアプリの設定で変えられる(移動してシンボリックリンクを張ってもよい)。
私は、OpenAIのgpt-ossが出る前は、Gemma 3 27Bの8ビット量子化版 gemma3:27b-it-q8_0 を普段使いしていた。
ollama run gemma3:27b-it-q8_0
モデルの詳細は /show info
で調べられる:
>>> /show info Model architecture gemma3 parameters 27.4B context length 131072 embedding length 5376 quantization Q8_0 Capabilities completion vision Parameters top_p 0.95 stop "<end_of_turn>" temperature 1 top_k 64 License Gemma Terms of Use Last modified: February 21, 2024
8ビット27Bなら27Gバイト+αのメモリを使う。+αの量はコンテクスト長(扱える最大トークン数、num_ctx
)にも依存する。Gemma 3はコンテクスト長128Kまで対応する(1Bモデルは32Kまで)。メモリ・CPUの使用率はMac標準のアクティビティモニタで表示できるが、GPUの使用率も含めてグラフィカルに表示できる mactop は便利である。
パラメータを変えるには /set parameter
を使う。例えばコンテクスト長を131072、温度を0.1、最大出力トークン数を8192に設定しよう:
/set parameter num_ctx 131072 /set parameter temperature 0.1 /set parameter num_predict 8192
Gemma 3に飽きたら、さらに新しい Qwen 3 や Llama 4、Phi 4 reasoning/reasoning plus などを試すといいだろう。
Pythonから使う方法は PythonでOllamaを使う 参照。