コンテンツにスキップ

Ollama (ホスト側に導入)

クラウド LLM (OpenAI / Anthropic / Gemini) のみを使う場合は不要。ローカルで LLM を走らせたいときだけ導入する。

ai lab では Ollama を LiteLLM 経由 (ollama/* wildcard ルート) で全クライアント共通に叩く。LiteLLM コンテナが host.docker.internal:11434 に抜けられるよう OLLAMA_BASE_URL=http://host.docker.internal:11434.env に入っている。コンテナではなくホストに直接インストールする。

なぜホストに入れるのか

  • Apple Silicon の Metal GPU はコンテナから見えない。Docker Desktop は軽量 Linux VM 上で動くため、macOS の Metal / MPS バックエンドにアクセスできず、コンテナ内で Ollama を動かすと CPU 推論になって実用的な速度が出ない。
  • ホスト直インストールなら Metal を直接叩けて、7B〜13B クラスのモデルでもリアルタイムにストリーミングできる。
  • コンテナからは host.docker.internal でホストのポートに抜けられるので、ネットワーク的なデメリットも無い。

インストール手順

# 1. Ollama 本体 (公式 installer)
brew install ollama

# 2. bind アドレスを 0.0.0.0 に広げる
#     (デフォルトは 127.0.0.1 のみで、Docker コンテナから host.docker.internal
#      経由で届かないため)
launchctl setenv OLLAMA_HOST 0.0.0.0:11434

# 3. サービス起動 (バックグラウンド常駐)
brew services start ollama

# 4. 動作確認 — (a) Ollama 直叩き
#    pull 済みモデルの一覧が返り、次に chat 推論が通ることを確認
curl http://localhost:11434/api/tags
curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen3.5:9b","messages":[{"role":"user","content":"hi"}]}'

# 5. 動作確認 — (b) LiteLLM 経由
#    同じ応答が LiteLLM の `ollama/*` wildcard 経由でも返ることを確認
#    (LiteLLM コンテナが host.docker.internal:11434 に抜けられるかの検証も兼ねる)
curl http://litellm.home.arpa/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"ollama/qwen3.5:9b","messages":[{"role":"user","content":"hi"}]}'

モデルの選び方

2026-04 時点の主要 open weights と提供元:

ベンダー モデルファミリー 主要タグ 特徴
Alibaba Qwen 3.5 qwen3.5:0.8bqwen3.5:122b dense、256K context、vision 対応、tool calling と日本語が安定
Alibaba Qwen 3 / Qwen 3-VL / Qwen 3-Coder qwen3:*qwen3-vl:*qwen3-coder:30b/480b 3.5 の前世代 + 特化版。qwen3:30b は MoE
Meta Llama 4 (MoE) llama4:16x17b (Scout 109B), llama4:128x17b (Maverick 400B) MoE で activated 17B、vision 対応、2026 年のフラグシップ
Meta Llama 3.3 llama3.3:70b dense 70B。Llama 3.1 405B 相当の品質
Meta Llama 3.1 / 3.2 llama3.1:8b/70b/405bllama3.2:1b/3b 汎用 baseline、小型は 3.2
Google Gemma 4 / Gemma 3 / Gemma 3n gemma4:26b/31bgemma3:270mgemma3:27bgemma3n:* 4 が最新、3n は超軽量 (ラップトップ / スマホ)
OpenAI gpt-oss gpt-oss:20b (dense)、gpt-oss:120b (MoE) OpenAI 公式 open weights、agentic / reasoning 寄り
DeepSeek R1 / V3.2 / Coder-V2 deepseek-r1:1.5b:671bdeepseek-v3.2deepseek-coder-v2:16b/236b R1 は reasoning 特化、V3.2 は 671B MoE の汎用
Mistral Mistral Small / Devstral mistral-small:24bdevstral-small-2:24b バランス型 / コード agentic
Microsoft Phi 4 phi4:14b 小型で reasoning に強い

Mac スペック × モデルサイズ

4-bit 量子化時の目安。unified memory の 1/3 〜 半分 くらいが快適ライン (他アプリと同時使用する前提)。コンテキストを長く取るとさらにメモリを食うので余裕を持たせる。MoE モデルは activated params が少ないので推論速度は速いが、全 params をメモリに載せる必要があるため、ディスク / メモリ要件は dense と同じ。

Mac メモリ 快適サイズ 起点モデル (迷ったらこれ) 他の候補
8 GB 1B-4B qwen3.5:4b qwen3.5:0.8b/2bllama3.2:3b
16 GB 9B-14B qwen3.5:9b llama3.1:8b
32 GB 20B-35B qwen3.5:27b / qwen3.5:35b gpt-oss:20bdeepseek-r1:32bgemma4:26b
64 GB 70B dense / Scout 級 MoE llama3.3:70b qwen3.5:122b (tight)、llama4:16x17bgpt-oss:120b
96 GB+ 100B+ MoE 快適、特大も可 llama4:16x17b gpt-oss:120bdeepseek-v3.2llama4:128x17b (245 GB)

用途別の選び方

  • 汎用 + tool calling: Qwen 3.5 系。日本語精度も高く実務で安定
  • フロンティア品質: 64 GB+ で llama4:16x17b / gpt-oss:120b / qwen3.5:122b / deepseek-v3.2
  • reasoning: deepseek-r1:*。思考トークンを多用するので精度は高いが遅い
  • コード特化: qwen3-coder:30bdevstral-small-2:24bqwen2.5-coder:32bdeepseek-coder-v2:*
  • vision / マルチモーダル: qwen3-vl:*qwen3.5:* (256K で画像対応)、llama4:*
  • 速度 / レイテンシ重視: 9B 以下の dense (qwen3.5:9bllama3.1:8b)
  • オンデバイス / 超軽量: gemma3n:*qwen3.5:0.8b/2bllama3.2:1b/3b

pull の例

# 16 GB Mac の起点
ollama pull qwen3.5:9b

# 32 GB なら
ollama pull qwen3.5:35b

# 64 GB なら
ollama pull llama3.3:70b

最新モデル / タグは https://ollama.com/library で要確認。

LiteLLM の config.yaml に明示登録する (Open WebUI 用)

services/litellm/config.yaml には ollama/* の wildcard ルートが入っており、curl や agent-demo のようにモデル名を直接指定して呼ぶクライアントならこれだけで動く。

一方 Open WebUI / Dify のような「モデル一覧をドロップダウンに出す」クライアントは wildcard を展開できないため、UI から選ぶには pull したモデルを 1 件ずつ明示登録する必要がある。

services/litellm/config.yamlmodel_list: に追記:

  # Ollama (明示登録。Open WebUI のドロップダウンに出すため)
  - model_name: ollama/qwen3.5:9b
    litellm_params:
      model: ollama_chat/qwen3.5:9b
      api_base: os.environ/OLLAMA_BASE_URL

  - model_name: ollama/llama3.3:70b
    litellm_params:
      model: ollama_chat/llama3.3:70b
      api_base: os.environ/OLLAMA_BASE_URL

反映:

mise run down:litellm && mise run up:litellm

これで Open WebUI のモデル選択メニューに ollama/qwen3.5:9b 等が並ぶ。wildcard ルートは残したままで良い (明示エントリが優先的にマッチし、未登録タグは wildcard で拾われる)。