Mímisbrunnr知恵の泉

← ローカルLLM 一覧

🎓 レベル:標準 | 重要度:A(必須) 📎 前提:モデル形式(safetensorsとGGUF) | 原理:推論の実務(機械学習)

要点(結論先出し)

概念 ── 「最小構成で何でも動かす」基盤

llama.cpp は依存を抑えたC/C++実装で、GPUが無くてもCPUだけで動きます。対応バックエンド(CUDA・Metal・Vulkan等・要最新確認)を選んでビルドすれば、その環境で最適化された推論ができます。ローカルLLMの「下回り」の事実上の標準です。

主なコマンド(名称は更新が速い・要最新確認):

動くコマンド(最小例)

# GGUFを指定して1回生成(GPUに35層オフロード)
llama-cli -m ./models/model-Q4_K_M.gguf \
  -p "ローカルLLMとは何かを3行で。" \
  -ngl 35 -c 4096

# OpenAI互換サーバとして常駐(既存ツールから叩ける)
llama-server -m ./models/model-Q4_K_M.gguf \
  -ngl 35 -c 8192 --host 127.0.0.1 --port 8080

-ngl(number of GPU layers)が肝。-c はコンテキスト長で、増やすほどKVキャッシュが太る → コンテキスト長とKVキャッシュ。詳細手順は対応lab。

仕組み ── GPUオフロード(層分割)

flowchart LR
  G["GGUFの全レイヤー"] --> SPLIT["-ngl で分割"]
  SPLIT --> GPU["前半N層をVRAMへ(速い)"]
  SPLIT --> CPU["残りをRAM+CPUで(遅い)"]
  GPU --> OUT["生成"]
  CPU --> OUT

-ngl を大きくするほどGPUが担当し速くなりますが、VRAMを食います。VRAMに収まる最大の -ngl を探すのが基本チューニング。全層載ればCPUオフロードは不要です。

運用の勘所

なぜそうするか

llama.cpp が基盤として強いのは、ハードを選ばず、層単位でメモリと速度をトレードできるから。これにより「VRAMちょうどに収める」細かな調整ができ、家庭用ハードの限界を押し広げられます。Ollamaの手軽さの裏にあるのもこの柔軟性です。

⚠️ よくある落とし穴

対応lab

関連