OllamaでローカルLLM
[2025-04-19] 4ビット量子化を最適化したQAT版がOllamaからも出ました。以下で例えば gemma3:12b
となっているところを gemma3:12b-it-qat
のようにして試してみてください。8ビット量子化以上を使っているなら不要です。
外部に出すのがはばかられる情報を扱う場合や、費用をかけたくない場合、再現性が必要な場合、rate limitを気にせず大量ループ処理したい場合に、ローカルLLMは魅力的である。ここでは Ollama(オラーマ)というツールを使ってコマンドラインまたはPythonからLLMを使う方法を説明する。Ollamaは llama.cpp から派生したたいへん使いやすいツールである。
ここではMacを使う。OllamaサイトよりバイナリのZIPファイルをダウンロードし、展開してOllama.appを /Applications(あるいは適当な場所)に移動し、起動すると /Applications/Ollama.app/Contents/Resources/ollama へのシンボリックリンクが /usr/local/bin にできる。また、バックグラウンドのプロセスが起動し、メニューバーにOllamaアイコンが常駐する。利用はターミナルからollamaコマンドを使って行うか、後述するようにPythonなどを使ってバックグラウンドのプロセスのAPIを呼び出す。
まずは適当なモデルをダウンロードして動かす。ここではGoogleの Gemma 3(ジェンマ・スリー)を使ってみる。
OllamaのGemma 3のページを参考にして、デフォルトの4ビット量子化(Q4_K_M)された4サイズのGemma 3のうち適当なものを選ぶ。メモリ8GのMacなら4B、メモリ16GのMacなら12B、それ以上なら27Bを使えばよかろう(Bはbillionつまり10億パラメータ)。例えば12Bモデルなら、ターミナルに
ollama run gemma3:12b
と打ち込むと、初回はモデルのダウンロードが始まり、それが終われば入力を受け付ける状態になるので、何か質問すれば、答えが返る。ヘルプは /?
、終了は /bye
である。
ダウンロードしたモデルは ~/.ollama
(ホームディレクトリ🏠の .ollama
フォルダ)に入る。ドライブの容量が足りなければ、あとで外部ドライブにモデルを移動してシンボリックリンクを張ってもよい。
私はメモリ128GのMac Studioを買ったので、4ビットでなくても8ビットでも、おそらく16ビットでも大丈夫そうだが、8ビットあれば十分だ。OllamaのGemma 3のページ のドロップダウンメニューの最後の「View all」から探すと、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
Pythonから使う方法は PythonでOllamaを使う 参照。