要点(結論先出し)
- Ollama=「Docker風」にモデルを
pullしてrunするだけの体験層。ゼロから動くまでが最短(要最新確認)。 - 内部では llama.cpp(Apple Silicon では MLX)を包んでいるので、エンジンの強み(GGUF・GPUオフロード)はそのまま享受できる。
- Modelfile でモデル+システムプロンプト+パラメータをまとめ、OpenAI互換APIとして常駐できる。既存ツールの接続先をここに向けるだけ。
概念 ── 体験層の役目はモデル管理と起動
Ollama は重みのダウンロード・保存・GPUオフロードの面倒を肩代わりし、CLIとローカルAPIを提供します。初学者の入口として最適で、動いた後にllama.cpp直叩きやvLLMへ降りられます(→ 推論エンジンの使い分け)。
動くコマンド(最小例)
# モデルを取得して対話(モデル名・タグは要最新確認)
ollama pull llama3.1:8b
ollama run llama3.1:8b "ローカルLLMの利点を3つ。"
# APIサーバとして常駐(既定ポートで待受)
ollama serve
# OpenAI互換エンドポイントを叩く(curl例)
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"llama3.1:8b","messages":[{"role":"user","content":"3行で自己紹介"}]}'
Modelfile(設定をコード化)
# Modelfile: ベースモデル+人格+既定パラメータを固定
FROM llama3.1:8b
SYSTEM "あなたは簡潔に答える日本語アシスタントです。"
PARAMETER temperature 0.4
PARAMETER num_ctx 8192
ollama create my-assistant -f Modelfile
ollama run my-assistant "今日のタスクを箇条書きで"
num_ctx はコンテキスト長で、KVキャッシュとVRAMに直結 → コンテキスト長とKVキャッシュ。
仕組み ── 包む側と包まれる側
flowchart LR CLI["ollama run / API"] --> O["Ollama(モデル管理・起動)"] O --> ENG["内部エンジン(llama.cpp または MLX)"] ENG --> HW["GPU・CPU・Apple Silicon"]
だから「Ollamaの速度」は実質「下のエンジン+量子化+ハード」の話。手軽さはOllama、性能はエンジン層と切り分けると判断がぶれません。
なぜそうするか
最初の障壁は「ビルドや設定で挫折する」こと。Ollamaはそれを消して、まず成功体験を作るために使います。OpenAI互換APIを話すので、後から本格運用に移る際もアプリ側の改修が小さく済みます → OpenAI互換API。
⚠️ よくある落とし穴
- 既定のコンテキスト長で頭打ち:長文を扱うなら
num_ctxを明示(VRAMと相談)。 - 量子化タグの意味を見ない:同名モデルでもタグで量子化が違う。用途に合うものを選ぶ。
- 「Ollamaは別物」と誤解:下は llama.cpp/MLX。エンジンの知識はそのまま活きる。
- モデル名・タグを暗記:カタログは頻繁に変わる。要最新確認。
対応lab
local-llm-study/labs/ollama_quickstart.md… pull/run・Modelfile・API・num_ctx調整。
関連
- 基盤エンジン → llama.cpp
- API接続の本体 → OpenAI互換API
- 使い分け → 推論エンジンの使い分け