実行プログラムと拡張機能

llama.cpp:どの設定が遅さの原因かを自分で確かめるには

llama.cppでファイルと設定を固定し遅い工程を特定

llama.cppはGGUF1モデルを実行し、llama-serverはHTTP要求を受け取るサーバーです。直接実行するとbackend・コンテキスト・GPU2配置・同時数を記録して調整できます。同じモデルと要求で接続確認・長文入力のprefill3・回答decode4を分けて見ると、調整の必要性を判断しやすくなります。

アプリで設定しにくいGPU配置やコンテキスト長を直接調整したいときはllama.cppを検討します。ファイルとリクエストを固定してサーバーを始めると、読み込み、入力処理、回答生成のどこを変えるか判断できます。実行ファイルと更新も自分で管理するため、今のアプリが必要な設定を提供するなら、そのまま使っても構いません。

同じモデルと要求で基準を作る

長い技術メモを要約するなら、GGUFファイルとリクエストを固定します。短いリクエストでサーバーの応答を確認してから、メモ全体を入れてください。入力の処理と回答の生成を分けると、どこで待つかが分かります。

直接実行では実行ファイル・ドライバー・更新・コマンドも管理します。アプリにない条件が必要な場合や特定ビルドの問題を再現する場合に、その作業が役立ちます。

中央サーバーの両側で二人が操作盤とノートPCを使い、サーバーから色線とブロックがつながる場面
直接実行ではファイルと設定を記録しやすい一方、ビルドと更新も管理します。

GPUが見えても実行ファイルとモデル対応を確認

GPU使用率が低いだけでカード故障とは判断しません。CPU5専用実行ファイルはGPUがあってもGPU backendを使いません。NVIDIA CUDA6・Apple Silicon Metal7・Vulkanでは準備手順が異なります。起動ログで検出デバイスと選択backendを確認します。デバイスが認識されていなければ、配置オプションを変えてもGPU実行にはなりません。

GGUFは配布形式であり、すべてのビルドがすべてのモデル構造に対応する保証ではありません。新しい構造では実行ファイルの対応と変換元モデルを確認します。画像入力が必要ならマルチモーダル実装と追加ファイルの対応も別途調べます。テキストGGUFだけで画像経路が用意されるわけではありません。

モデルパスと基準設定でサーバーを起動

モデルファイルを用意し、例の./models/model.ggufを実際のパスに置き換えます。local-guide別名・4,096コンテキスト・並列スロット1は比較用の基準値です。コンテキストは入力と生成回答で共用するため、4,096をすべてメモ入力に使える意味ではありません。初回読み込み時間は後続要求と分けます。

GPUレイヤー配置はautoから始め、ログとGPU別メモリで実際の配置を確認します。auto指定がモデル全体のGPU配置を意味するわけではありません。実行ファイルが想定と違う場合はバージョンと--helpを確認し、動作する最小コマンドとログを保存します。非対応オプションを削除した結果は元の例と同条件ではありません。

GGUFファイル名と量子化8・実行ファイルのバージョン・backend・コンテキスト4,096・スロット1を記録します。モデルと実行条件を固定すれば、バッチやGPU配置を一項目ずつ変更できます。

GGUFモデルでローカルサーバーを起動
llama-server -m ./models/model.gguf --alias local-guide --host 127.0.0.1 --port 8080 --ctx-size 4096 --parallel 1 --n-gpu-layers auto
実行ファイルがPATHにある前提の例です。自分でビルドした場合はパスを合わせ、GGUFの実際の場所と該当ビルドの--helpを確認します。
風景が映るコンピューターの前で、動物の絵がある緑の本が矢印で吹き出しの絵がある黄色い本につながる場面
モデルと要求を固定すると、その後の設定変更の影響を比較できます。

準備状態とAPI生成を分けて確認

サーバープロセス起動後、/healthが準備完了を示すか確認して短い質問を送ります。1つ目のコマンドは状態確認、2つ目はテキスト生成要求です。メモ全体を送る前に別名と接続を確認し、読み込み・接続問題を切り分けます。

API9成功だけではクライアントが期待するテンプレートやtool calling形式は確認できません。以下のcurlは回答全体を待つため往復時間は見られますが、最初のトークン10やprefill・decodeを個別には測りません。

サーバー状態と回答を分けて確認
curl -sS http://127.0.0.1:8080/health
curl -sS http://127.0.0.1:8080/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"local-guide","messages":[{"role":"user","content":"Reply with one short sentence."}],"max_tokens":128,"stream":false}'
サーバーのターミナルは起動したまま、別のターミナルで実行します。準備状態を確認してから生成を要求します。

prefill・decode・同時要求を分けて確認

長いメモを送って最初の回答が遅い場合はprefill、生成開始後のトークンが遅い場合はdecodeが原因かもしれません。長文入力はコンテキストメモリも多く使うため、コンテキスト4,096の基準要求と比較しGPUの余裕とKVキャッシュ11を確認します。

prefillバッチを増やすと長文処理に役立つ場合がありますが、decodeも同じ割合で速くなるとは限りません。同時要求を増やすと総スループット12は変わっても、一人の完了時間が短くなるとは限りません。個人要約が目的ならスロット1を基準にし、ログが示すバッチ・コンテキスト・GPU配置の関連項目だけを一つずつ変更します。

比較では GGUF と量子化、入力・出力の長さ、backend、同時リクエスト数を固定します。準備実行の後、同じリクエストを 3 回以上送り、モデルのメモリ常駐と KV cache の再利用を記録してください。

キャッシュを消せなかった測定は cold start と呼べません。値が一度だけ大きく外れても除外せず、準備状態とバックグラウンド負荷を確認してから中央値でまとめます。

回答全体を待つcurlは往復時間用であり、prefillとdecodeを分けるベンチマークではありません。目標作業が安定して完了することを確認してから、直接管理する価値を判断します。OllamaやLM Studioに必要なオプションがあるなら、そのまま利用できます。

手が道の形をした板に黄色いブロックを置き、虫眼鏡がブロック間の赤い経路を拡大する場面
入力処理と回答生成のどちらが遅いか特定し、関連設定だけを変更します。

Vulkanで長いコンテキストを処理する際の量子化KVキャッシュ

llama.cpp b11413は、一部の長文モデルのVulkan実行経路を改善しました。Qwen3.8-Flash-NextのQSAなど、必要な位置だけを選んで読むsparse attention13モデルが対象です。量子化K/Vキャッシュでも選択した位置だけを読み、文脈全体を処理する負担を減らします。

PR作者によるRadeon R9700・RX 7900 XTの測定では、q8_0 KVキャッシュで64K文脈の生成が平均19%、128Kでは15%速くなりました。短い文脈では効果が小さいか低下することがあり、ランタイム14が経路を選択します。この値はf16キャッシュやプリフィルには適用しません。以下のコマンドはVulkanビルドと対応モデルを準備してから使います。

既存のVulkanサーバーコマンドでcache typeを指定
./llama-server -m /path/to/compatible-sparse-model.gguf --host 127.0.0.1 --flash-attn on --cache-type-k q8_0 --cache-type-v q8_0 --ctx-size 65536
対応するsparseモデルと十分に長いcontextで比較します。model pathとcontext長は実際のメモリ空きに合わせて調整してください。

0.6.0では判断モデルもローカルサーバーで実行できます

2026年10月5日公開のllama.cpp 0.6.0には、選択結果と確率を返す/v1/systemone APIが追加されました。問い合わせの担当振り分けや文書分類に使えます。対応モデルの選び方と入力・候補の送り方は、ローカル判断モデルの実行例で説明します。0.6.0公式リリース

速度に関わる変更には、Qwen4ExpのMTP15、MetalのF16 KV Flash Attention、CUDAのNVFP416・MXFP4演算経路の改善があります。自分のモデルに対応する機能を選び、同じ質問で更新前後を比較してください。既存の速度記録は測定時のバージョンを残し、新しい記録と比較できるようにしています。

10月8日のビルドでMoEキャッシュとDFlashが改善

llama.cpp b11507以降では、CPUに置いたMoE17のexpert重みを複数GPUのキャッシュに分けて保持できます。必要なexpertをGPUへ繰り返し転送する回数を減らす機能です。大きなMoEをRAM18とGPUに分けて動かす構成で試せます。

現在の--moe-cache-mibはキャッシュ全体の容量をMiBで指定し、複数GPUでは--tensor-splitの配分に従って分けます。標準値は0で無効です。llama-server --helpにオプションがあるか確認し、同じ文書でキャッシュ有無の初回応答待ちと生成速度を比べてください。

b11512にはDFlashの出力head共有の修正も入っています。DFlash構成の更新では、メイン・draftモデルを維持して同じ入力を送り、最後まで生成できるか確認しましょう。b11507・b11512は10月8日のrolling buildで、固定リリース0.6.0とは別の更新系列です。

用語の注釈

  1. GGUF — モデル情報を格納するファイル形式で、llama.cpp系のツールで広く使われます。

    本文に戻る
  2. GPU — 多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。

    本文に戻る
  3. プリフィル — LLMが入力プロンプトを読み、各トークンの内部表現を計算する段階です。プロンプトが長いほど処理するトークンが増えます。

    本文に戻る
  4. トークンのデコード — 入力とそれまでの回答をもとに、次の出力トークンを順に生成する段階です。

    本文に戻る
  5. CPU — OSや一般的なプログラム命令を実行する中央処理装置です。AIでは前処理やデータ転送などの汎用処理も担います。

    本文に戻る
  6. CUDA — NVIDIA GPUで汎用計算を行うソフトウェア基盤です。

    本文に戻る
  7. Metal — Apple機器でグラフィックスやGPUの並列計算を実行する低水準の技術です。

    本文に戻る
  8. 量子化 — モデルの重みや計算値を少ないビット数で表し、保存容量やメモリ使用量を減らす方法です。表現が粗くなるため、精度にも影響することがあります。

    本文に戻る
  9. API — 別のコードからプログラムの機能を呼び出すための決められたインターフェースです。

    本文に戻る
  10. トークン — モデルが入力や出力を分けて処理する単位です。

    本文に戻る
  11. KVキャッシュ — 過去トークンのAttention用キー・バリューを保存し、後続トークン生成で再利用するメモリです。容量はコンテキスト長やバッチサイズで変わります。

    本文に戻る
  12. スループット — 一定時間に処理・生成した作業量です。トークン/秒やリクエスト/秒など、単位を合わせて比較します。

    本文に戻る
  13. Attention — 入力トークン間の関連度を計算し、各位置の情報を現在の表現に反映するニューラルネットワーク演算です。

    本文に戻る
  14. ランタイム — プログラムの実行時に必要な機能を提供するソフトウェア環境です。ローカルAIではモデル実行エンジンを指すこともあります。

    本文に戻る
  15. MTP — 複数の将来トークンを一度に予測する学習目標、またはそれを行うモデル構成です。投機的デコーディングでは、その予測を候補トークンとして提案できます。

    本文に戻る
  16. NVFP4 — NVIDIAが定義した4ビット浮動小数点データ形式です。対応状況はGPU世代、モデル、ソフトウェア実装によって異なります。

    本文に戻る
  17. MoE — 複数の専門家サブネットワークから入力に応じて一部を選ぶモデル構造です。総パラメータ数と1トークン処理時に有効な数は異なることがあります。

    本文に戻る
  18. システムRAM — プログラムの実行中にデータを一時保存するシステムメモリです。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
llama.cppはGGUFモデルを実行し、llama-serverはHTTP要求を受け取るサーバーです。直接実行するとbackend・コンテキスト・GPU配置・同時数を記録して調整できます。同じモデルと要求で接続確認・長文入力のprefill・回答decodeを分けて見ると、調整の必要性を判断しやすくなります。
必要なメモリはどのくらいですか?
長いメモを送って最初の回答が遅い場合はprefill、生成開始後のトークンが遅い場合はdecodeが原因かもしれません。長文入力はコンテキストメモリも多く使うため、コンテキスト4,096の基準要求と比較しGPUの余裕とKVキャッシュを確認します。
変更履歴

サイトの説明を変更した記録です。インストール済みのエンジンやモデルのバージョンを自動で確認した結果ではありません。

  1. llama.cppのサーバー起動・復旧案内を追加

    準備したGGUFファイル1つでサーバーを起動し、ローカルAPIを確認する例を追加しました。GPUへの配置・文脈・リクエスト数を1項目ずつ変更し、メモリ不足が起きたら正常に動いていた設定へ戻す手順を説明しました。