ローカルAI・PC実践ガイド

Windowsでllama.cppをCUDA対応で使う方法|GGUFをGPUで起動する

Windowsでllama.cppをCUDA対応で使う方法 — GGUFの起動まで解説
目次

WindowsでGGUFをNVIDIA GPUに載せようとすると、CUDA版やビルドの説明が一度に出てきます。

かがり

CUDA版を探して、ビルドもして、モデルも用意して……始める前から手順が多いわ!

ロコ

まず公式のCUDA対応配布版を使おう。短い返答とGPUの配置を確かめてから進めるよ。

llama.cppはモデルを動かすためのツール群、CUDAはNVIDIA GPUへ計算を任せる仕組みです。配布版で動けば、ソースをビルドする準備をせずに会話を始められます。

最初は小さなモデルへ短い質問を送り、返答とGPUへの配置を同じログで確かめます。ここが通れば、普段使いたいモデルへ替えたときにも、どこから条件が変わったかを追えます。

ドライバーを確認し、Windows用のCUDA版を選ぶ

PowerShellを開き、次を実行します。

nvidia-smi

GPU名とドライバー情報が出れば、Windows側からGPUを認識できています。目的のGPUが見当たらない場合は、llama.cppを入れ直す前に、Windowsのデバイス認識とNVIDIAドライバーを見ましょう。表示できてから次へ進むと、調べる範囲を絞れます。

llama.cppの公式Releasesを開き、使うリリースのAssetsを見ます。Windows、CUDA、CPUアーキテクチャの三つを合わせて選んでください。一般的なWindows x64なら、名前のwin・cuda・x64が目印です。CUDAの版に必要なドライバー条件も、ここで照合しましょう。

たとえば、説明に使う固定版b11576には、llama-b11576-bin-win-cuda-12.4-x64.zipとCUDA 13.4用の配布物がありました。この例なら12.4がCUDAの版です。同じ一覧のcudart-llama-bin-win-cuda-12.4-x64.zipなど、対応するランタイムが別配布されている場合は、リリースの説明に従ってDLLもそろえます。使う版のファイル名で選んでください。

展開先は、新しいフォルダーにするのがおすすめです。古いCUDA版やCPU専用版と混ざると、どれを起動したのかが分かりにくくなります。今回の実行ファイルとDLLを一組として置き、次の確認もそのフォルダーで進めましょう。

展開したフォルダーで、GPUが見えるかを確かめる

llama-cli.exeのあるフォルダーをPowerShellで開き、次を実行します。

.\llama-cli.exe --version
.\llama-cli.exe --help
.\llama-cli.exe --list-devices

先頭に.\を付けると、今開いているフォルダーの実行ファイルを使えます。PATHに別の版を登録していても、今回展開したものを指定できるので、版の取り違えを防ぎやすくなります。

かがり

GPUの名前が出たら、もうGPUで会話できるってこと?

ロコ

認識できたところだね。次は小さなモデルを読み込んで、返答と配置ログを一緒に見よう。

版とオプションが出て、デバイス一覧に目的のNVIDIA GPUもあれば、GGUFを用意します。DLL不足で起動しなければ、まず配布物の組み合わせへ戻りましょう。起動するのにGPUが出ない場合は、CUDA版を選んだか、ドライバー条件が合うかを見ます。この段階ではまだモデルを読んでいないので、GGUFを取り直す必要はありません。

小さなGGUFで、最初の返答を出す

最初はQwen公式のQwen2.5-1.5B-Instruct、Q4_K_Mを使う案内にします。大きなモデルでVRAMを使い切る前に、短い返答とCUDA配置を見るための小型の対話用モデルです。下に、公式b11576で文脈長1024・生成上限64の短文を実行した記録も載せています。導入用のコマンド例とは設定が異なるので、比較するときは文脈長と生成上限をそろえます。

  1. Qwen公式の固定版ファイル一覧を開き、qwen2.5-1.5b-instruct-q4_k_m.ggufを選びます。
  2. この1ファイルを保存します。容量は1,117,320,736 bytes(約1.12GB)で、分割版ではありません。テキスト会話に別のGGUFや画像用投影ファイルは不要です。利用条件は公式モデルカードとApache 2.0表記で確認できます。
  3. 例では保存先をC:\modelsとします。別の場所へ保存したら、次の-mの引用符内を実際のパスへ替えます。まだフォルダーがなければ、エクスプローラーで保存先を作ってからダウンロードしてください。

配布物は先ほどのb11576を説明の基準にしています。以下の--single-turnとGPU自動配置は同じタグのオプション実装で確認できます。別版を使う場合は、その実行ファイルの--helpとも照合します。

.\llama-cli.exe -m "C:\models\qwen2.5-1.5b-instruct-q4_k_m.gguf" -c 4096 -n 128 --single-turn -p '日本語で一文だけ挨拶してください'

-c 4096は会話を扱う文脈長、-n 128は生成上限の指定です。--single-turnを付けているので、一回返答したら終了します。どのモデルにも最適な値として使うのではなく、まず短い質問を試す出発点にしてください。

返答が出たら、同じ画面をさかのぼって起動ログを読みます。探すのはCUDAデバイス名、GPU側のモデルバッファー、オフロードした層数です。GPU一覧に名前が出たことは認識の確認で、今回のモデルをどこまで載せたかは、読み込み時のログで確かめます。

現在はGPUへの配置を自動で調整するのが標準です。CPU側のバッファーがログに残っていても、その文字だけで失敗とは言えません。-ngl 99のように大きな値を指定する方法もありますが、99層や全層をGPUへ載せられる保証ではありません。最初は自動配置で何が起きたかを見ましょう。

公式b11576でも、1.5Bの返答と29/29層のGPU配置を確認した

2026年10月25日には、上で案内した公式b11576のWindows CUDA12.4版を使い、Qwen2.5-1.5B-Instruct Q4_K_Mで短い返答まで確認しました。使用版は0.6.0-dev / build 11576 / commit 358a420ec。RTX 5090、ドライバー617.42、Ryzen 9 9950X、RAM約61.6GiBの環境です。

モデルはQwen公式の固定revisionの単体GGUFで、容量1,117,320,736 bytes、公開LFSのSHA-256と一致しました。公式リリースAPIが示すZIPのSHA-256も、実行前に照合しています。

対象 SHA-256
b11576 Windows CUDA12.4 ZIP a564489ac9e28b9236fa5aa73eef746508e28101157c5189962fc114a100d8cd
対応CUDA12.4 DLL ZIP 8c79a9b226de4b3cacfd1f83d24f962d0773be79f1e7b75c6af4ded7e32ae1d6
実行したllama-cli.exe aeae767bd2645669b90bc597995201e9121393458c814dfa9bff22599ff34b80

文脈長1024、生成上限64、temperature 0、seed 20261025、--n-gpu-layers 99、--single-turnで、「田中さんは10月30日までに画像を3枚用意します。担当者と期限だけを日本語で答えてください」と送りました。返答は「田中さん、10月30日までに3枚の画像を用意してください。」です。担当者と期限は残っていますが、作業内容も付いており、指定どおりの2項目だけにはなっていません。

配置ログにはoffloaded 29/29 layers to GPU、CUDA0のモデルバッファー934.70MiB、KVバッファー28.00MiB、計算バッファー65.51MiBが出ました。-ngl 99の指定だけで判断せず、実際に載った層数を読み取れた例です。

初回は返答まで出たものの、既定のCLI表示には配置ログが残りませんでした。同じ入力へ--log-verbose --log-file engine.logを付けて再実行し、上のログと終了コード0を確認しています。ログを保存した回の起動から終了までは約1.35秒でしたが、読み込み・初期化を含む時間でTTFTではありません。初回の約34.81秒との差を、そのまま初回/再実行の性能差にはしません。

入力・返答・使用版・検証したZIP情報・配置ログの抜粋と元記録のハッシュを保存できます。ここで確かめたのは、この1.5B・量子化・短文条件の起動です。自分のGGUFでも、まず返答内容と実際の配置ログを一緒に見てから、文脈長や入力を広げましょう。

取得済みの27Bモデルでは、短い要約が返った

RTX 5090 32GB・RAM 64GBのWindows PCで、保存済みのQwen3.8-27B-Q4_K_M.ggufを実行しました。使ったのはLM Studioに導入済みのCUDA 12版ランタイムに含まれるllama-server.exe(llama.cpp 0.7.0-dev、commit 620d222)です。上の公式配布CLIとは配布元と実行形式が違いますが、保存済みGGUFを読む一例として、版と結果を残します。

項目 今回の設定・結果
実施日 2026年10月23日
モデルのファイル容量 18,973,870,528 bytes(約17.67GiB)、Q4_K_M
起動設定 文脈長4096、同時処理1、CPUスレッド8、-ngl 99、画像入力なし
起動から準備完了 約9.16秒
送った内容 架空の会議メモから担当・期限・作業を3行へ整理
応答の待ち時間 初回2.70秒、同じ入力の再送0.96秒・1.04秒。モデル読み込みは含まない
返答 3回とも3人の担当・期限・作業を取り出し、finish_reason=stopで終了
観測したメモリ GPU全体の標本最大21,687MiB(約21.2GiB)、専用プロセスの物理メモリ標本最大約17.75GiB

実際の初回の返答は次のとおりです。

*   田中さん:10月30日までに画像を3枚用意する
*   佐藤さん:10月31日までに誤字を確認する
*   鈴木さん:11月2日までに公開予約をする

再送では入力の一部がキャッシュされ、起動ログの入力処理量も初回91トークンから4トークンへ減りました。0.96秒を新しい長文すべての待ち時間には使えません。また、0.5秒おきに取ったGPUの値にはデスクトップなども含み、厳密なモデル単体のピークや24GB GPUの動作証明ではありません。この配布版のログには実際に配置した層数が出なかったため、-ngl 99を指定したことから「全層GPU配置」とは数えていません。

入力・返答・使用版・時間の記録を保存できます。ここで確かめたのは短いテキスト要約です。画像入力、長文、Flash-Nextは試していません。同じ名前の系列でも、別のモデルへ成功を広げずに使いましょう。

かがり

担当と期限がこの短さで出るなら、会議のあとに使えそうね! 自分のメモでも同じ速さかしら?

ロコ

まず同じくらい短い架空のメモで比べよう。再送の速さにはキャッシュも効いているから、新しい入力の待ち時間を見たいね。

この記録から使い方を考えるなら、先に返答と元メモを一人ずつ照合します。担当・期限・作業が対応していれば、次は内容を替えた同程度の長さのメモを試します。元メモにない情報を足す、期限を取り違える場合は、速度が足りていても確認が必要です。今回の三回の成功は、あらゆる会議メモを正しく処理できる保証にはせず、自分の用途を確かめる出発点にしてください。

止まった場所から、次の一手を選ぶ

エラーが出たら、最後の一行だけでなく、直前に何をしていたかも見ましょう。次の表は実機で故障を再現した一覧ではなく、上の確認手順と公式ビルド資料を使って、戻る場所を分けるためのものです。

止まった画面・表示 まず変えるもの・確かめるもの 次へ進める目印
--versionさえ表示されず、DLL不足のダイアログが出る 同じリリース・CUDA版の実行ファイルと必要なランタイムDLLを、新しい展開先でそろえる そのフォルダーの.\llama-cli.exe --versionが表示される
--list-devicesに目的のGPUがない CPU専用版ではなくCUDA版を起動したか、必要ドライバー条件が合うかを見る 同じ実行ファイルの一覧に目的のNVIDIA GPUが出る
モデルのパスを開けない -mへ渡した場所とファイル名を直す。分割版なら必要なファイル一式も照合する ファイルを開く段階を通り、モデルの情報が読み込まれる
モデル読み込み中にunsupportedが出る 前後のログから未対応の構造・量子化を特定し、配布元が案内する対応版と照合する 同じGGUFを読み込み、短い返答まで進める
メモリ確保に失敗する 最後に動いた小型モデルと文脈長へ戻し、GPUを使う別アプリの使用量を見る 短い返答が終わり、同じログでGPU側の配置も読める

パスを確かめるだけなら、PowerShellで次を実行できます。出ない場合は、生成を繰り返す前に実際の保存先へ直してください。

Test-Path -LiteralPath 'C:\models\qwen2.5-1.5b-instruct-q4_k_m.gguf' -PathType Leaf

Trueはファイルが存在するという結果です。ダウンロード完了、モデル互換性、GPU配置まで保証する値ではありません。

GPUは見えるのにGGUFで止まるなら、次はモデルを調べます。取得は完了したか、その版がモデルの構造と量子化へ対応するかを見てください。unsupportedと出ている場合は、直前のログから何が未対応なのかを読み、配布ページに書かれた対応版と照合します。

メモリ不足になったら、ほかのGPUアプリを閉じる、小さなモデルへ戻す、増やした文脈長を戻す、と一つずつ試します。直前まで動いていたなら、まずそのコマンドに戻ると比べやすいです。読み込み時に足りないのか、会話を長くしてから足りなくなるのかも残すと、モデルと文脈長のどちらを減らすか選べます。

短い返答とGPU配置がそろったら、普段聞きたい質問を一つ送ってみてください。回答の内容と待ち時間が用途に合えば、配布版での準備はここまでで十分です。大きなモデルや長い文脈を試すのは、その後に一つずつ。重くなった理由を見失わずに広げられます。

特定の修正が必要なら、自分でビルドする

配布版にない修正や構成が必要になったら、公式ビルド手順から自分でビルドします。WindowsではVisual Studio 2022のC++デスクトップ開発、必要なCMakeツール、Git、CUDA Toolkitを用意し、Developer PowerShell for VS 2022を開きます。単に会話を始めたいだけなら、先に配布版で動くかを見る方が準備を減らせます。

ビルドする場合は新しい作業フォルダーへソースを取得します。途中でエラーが出たらそこで止め、一つが成功してから次のコマンドへ進みましょう。

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp

特定の修正が目的なら、その修正を含むコミットを公式履歴で選び、40桁のSHAを控えます。次のコマンドへその値を渡して、ビルドする版を固定します。

$revision = Read-Host '使うコミットのSHA(40桁)'
if ($revision -notmatch '^[0-9a-fA-F]{40}$') { throw '40桁のコミットSHAを入力してください' }
git checkout --detach $revision

切り替えに成功したら、CUDAを有効にしてビルドします。

cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release

生成された実行ファイルを探します。

Get-ChildItem .\build -Recurse -Filter llama-cli.exe

Visual StudioのRelease出力がbuild\bin\Releaseにある場合は、次のように同じファイルでGPUの確認と生成を続けられます。出力先が異なる場合は、そのパスへ直してください。

$cli = (Resolve-Path .\build\bin\Release\llama-cli.exe -ErrorAction Stop).Path
& $cli --version
& $cli --list-devices
& $cli -m "C:\models\qwen2.5-1.5b-instruct-q4_k_m.gguf" -c 4096 -n 128 --single-turn -p '日本語で一文だけ挨拶してください'

GGML_CUDA=ONで作るのはCUDAバックエンドです。ビルド完了だけでは、GGUFがGPUへ載ったかまでは分かりません。配布版のときと同じように、実行ファイルの版、読み込みログ、返答を合わせて確かめましょう。動いた版とコマンドを残せば、次に更新したときも同じ条件から比べられます。

まとめ

  • 公式のWindows用CUDA配布版から始め、対応するDLLとドライバーをそろえる
  • 同じ実行ファイルでGPU一覧、モデル読み込み、返答と配置を確認する
  • 普段の質問へ広げ、配布版にない修正が必要なら自前ビルドを選ぶ

公式サイト

各リンクから、配布元のファイルや説明を開けます。