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:1bgemma3:4bgemma3:12bgemma3: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 3Llama 4Phi 4 reasoning/reasoning plus などを試すといいだろう。

Pythonから使う方法は PythonでOllamaを使う 参照。