Last verified: 2026-10-14 — llama.cpp build b11609.
このガイドのフラグは、llama.cppビルド
llama-serverおよびllama-cli(ビルドb11609、14 October 2026)に適用される。フラグ名はビルド間で変更される可能性がある — llama-server --helpを実行して、あなたのバイナリがサポートするものを確認してほしい。Flash attention
Flash attentionの有効化には-faまたは--flash-attn onを使用する。ほとんどのベンチマークで、これはllama.cppが提供するほぼフリーのパフォーマンス向上だ — 同じまたはより少ないメモリ使用量で高速な推論が得られ、品質への影響は無視できる。
- KVキャッシュの低いメモリ使用量 — ロングコンテキスト長で最大の効果がある。
- 高速な推論 — 特にGPU上で効果的であり、タイル計算がテンソルコアにうまくマッピングされる。
- 同じ出力品質 — flash attentionは標準アテンションと数学的に等価であり、近似ではない。
mmap vs mlock
llama.cppは2つの戦略のいずれかでモデルウェイトをメモリにロードする。デフォルトは--mmapで、モデルファイルをプロセスの仮想アドレス空間に直接マップする。代替は--mlockで、モデル全体を物理RAMにピン留めする。
mmapが優れる場面
--mmapがデフォルトなのは、ほとんどのインタラクティブな使用でうまく動作するからだ。OSは要求に応じてモデルページをロードするため、起動が速く、モデルファイルが実際にページに触れられるまでRAMに対して二重カウントされない。モデルのテストや短いセッションの実行であれば、デフォルトで問題ない。
mlockが優れる場面
--mlockはOSがモデルページをスワップに追い出すのを防ぐ。以下の場合に重要だ:
- 同じモデルを終日実行し、一貫したレイテンシを望む場合 — ページフォルトによるコールドスタートペナルティがない。
- システムが他のプロセスからのメモリ圧迫下にあり、モデルウェイトがページアウトされる可能性がある場合。
- スワップが遅い(またはスワップがない)マシンを使用しており、ページフォルトが推論を数秒間停止させる可能性がある場合。
スレッドチューニング
推論スレッド数の設定には-tフラグを使用する。適切な値はCPUが実際にどのくらいの作業を行うかに依存する。
Apple Siliconでは、GPUとCPUが統一メモリを共有し、Metalバックエンドがスケジューリングを処理するため、スレッドチューニングの影響は小さい。デフォルトは通常うまく動作する。
GPUオフロード戦略
GPUオフロードには-nglフラグを使用する。GPU上のレイヤーが多いほど推論は速くなるが、各レイヤーがVRAMを消費する。
パーシャルオフロード
オフロード数の設定には-nglをGPUメモリに収まるレイヤー数に設定する。残りのレイヤーはCPU上で実行される。
フルオフロード
全レイヤーのオフロードには-ngl 999を設定する。llama.cppは999を「残りのすべてのレイヤー」として扱う — 文字通り999レイヤーをオフロードしようとするわけではない。
レイヤーごとのメモリ見積もり
オフロードされた各レイヤーはウェイトとKVキャッシュの両方のためにVRAMを消費する。大まかな見積もり:
CUDAコンテキストとオーバーヘッドのために1-2 GBのVRAMヘッドルームを残すこと。
バッチサイズチューニング
プリフィルフェーズでllama.cppが一度に処理するトークン数を制御するフラグがある。相互作用
-bは外側の制限を設定する。プロンプトのトークン数が-bを超える場合、llama.cppは複数のバッチに分割する。-ubは内側のチャンクサイズを設定する。llama.cppはバッチを最大-ubトークンのマイクロバッチで処理する。-ubは-b以下でなければならない。
トレードオフ
KVキャッシュ精度
KVキャッシュはすべてのアクティブなシーケンスの各トークンのキーテンソルとバリューテンソルを格納する。デフォルトでは、llama.cppはキーとバリューの両方にf16(16ビット浮動小数点)を使用する。量子化精度に切り替えることで、わずかな品質コストでメモリ使用量を削減できる。
キーとバリューは独立して設定できる。一般的なパターンは両方に
q8_0を使用することで、ほとんどのベンチマークで1%未満の品質差でKVキャッシュフットプリントを半減する。
MoE最適化
Qwen3.5-35B-A3BやMixtralのようなMixture-of-expertsモデルは各レイヤーに多数のエキスパートサブネットワークを格納するが、トークンごとに少数のみをアクティブにする。エキスパートウェイトは非アクティブ時でもメモリ上に残るため、MoEモデルはアクティブパラメータ数の割に不釣り合いに大きい。 マルチGPUシステムでは、GPUメモリが逼迫している場合、エキスパートレイヤーをCPUに配置できる。--n-cpu-moe <num>は指定された数のエキスパートサブレイヤーをCPU上に保持し、モデルの残りはGPU上で実行する。これはわずかなレイテンシ増加と引き換えに、より大きなモデルをVRAMに収める。
設定例
Apple Silicon — MシリーズMacに最適化
-ngl 999)が機能する。
llama.cppはApple Siliconでうまく動作するが、Mac専用のデプロイの場合はMLXがAppleのMetalバックエンドに最適化されており、同じモデルでもより高速な推論を提供できる。クロスプラットフォームのポータビリティやOpenAI互換サーバーが必要な場合はllama.cppを使用すること。
GPUオフロード — NVIDIAまたはAMDディスクリートGPU
-nglを減らすこと — 総レイヤー数から始めて5ずつ減らしてロードされるか確認する。
CPUのみ — GPUなし
次のステップ
llama.cpp remote access
Expose your llama.cpp server to teammates and agents through Tokios — without opening ports.
Speculative decoding
Speed up decode with draft models, n-grams, and EAGLE — works with llama.cpp backends.
Test your deployment
Measure latency and throughput after tuning to confirm the improvement.
KV cache and context
Deeper explanation of how KV cache works across model architectures and runtimes.