llama.cpp (CUDA)を導入してみる

スポンサーリンク

OllamaとかLM Studioとか、なんならStrataとか出てきている昨今。 llama.cpp の導入手順をまとめました。

この記事で入れるのは、ggml-org 公式の Windows x64 / CUDA 版バイナリです。ベンチマークしようと思っているので、ツール側のバージョンが勝手に動かないように、版数を固定して、wingetやGUIランチャー経由ではなく、公式リリースのzipから導入するのがこの記事の方針です。

また、Hugging Faceからのモデルのダウンロード手順についても少し触れておきます。

スポンサーリンク

環境(参考)

項目内容
OSWindows 11 Pro (26H2)
GPURTX 4070 Ti Super(VRAM 16GB)
 KMD Version: 621.01
 CUDA UMD Version: 13.5
RAM64GB
llama.cppv0.8.0(実バイナリは b11960、Windows x64 / CUDA 13.4)

1. バーションの話

最近の llama.cpp は、vX.Y.Z というセマンティックバージョンが「安定版の目印」になっていて、そのバージョンページ自体にはバイナリが付いていません。ページ内のリリースノートが「Nightly build: b11960」のように、対応する b 番号のビルドを指し示す形式です。

なので「最新リリースページから落とす」だけだと、本体が入っていないことがあります。必ず、目印のバージョンに対応する bホニャララ のリリースページからダウンロードしてください。今回は以下。

CUDA は 13.4 版にしてみる

PowerShell でnvidia-smiを打ち込んで、CUDAのバージョンを確認しておきましょう。

CUDA 版には 12.4 と 13.4 の2系統があります。RTX 4070 Ti Super(Ada 世代)は両方に対応しますが、今回は 13.4 で統一しました。

注意点として、nvidia-smiやコントロールパネル等に出る CUDA の数字は「ドライバが対応できる上限」で、ドライバは古いランタイム向けに後方互換で動きます。つまり 12.4 版でも動作自体は可能です。逆に、ドライバが古い環境(CUDA 13.x にはドライバ 580 系以降が目安)では 13.4 版は動きません。その場合は 12.4 のペアに読み替えてください。

なお、12.4→13.4における変更箇所は主にBlackwell世代(RTX50xxとか)向けらしいので今回のRTX4070TiSuper的にはどちらでも良さそうですが、新しそうな方でいきます。

もう1つ大事なのは、本体と cudart(CUDA ランタイム DLL)の版数を必ずペアで揃えることです。13.4 と 12.4 を混ぜてはいけません。

なお、CUDA Toolkit のインストールは不要です。必要なのは NVIDIA ドライバと、cudart の zip に入っている DLL だけです。

2. フォルダ構成を作る

フォルダは「バージョンごとのバイナリ」「モデル」向けのものを準備。以下は例。

C:\tools\llama.cpp\
├─ b11960\ ← バイナリ(更新時はこのフォルダごと差し替え)
└─ models\ ← GGUF 置き場

3. ダウンロードと展開(2つの zip を同じフォルダへ)

b11960 のリリースページ(Windows の欄)から、次の2ファイルをダウンロードします。

  1. Windows x64 (CUDA 13) → llama-b11960-bin-win-cuda-13.4-x64.zip
  2. CUDA 13.4 DLLs → cudart-llama-bin-win-cuda-13.4-x64.zip

そして 2つとも同じフォルダへ展開します。cudart の DLL が exe と同居していないと、CUDA が読み込めずにエラーになるか、エラーも出さず静かに CPU 実行になります。

同じフォルダに llama-cli.exe / llama-server.exe / llama-bench.exe と、cublas64_13.dll / cudart64_13.dll 系の DLL が一緒に並んでいるか確認してください。

4. 動作確認

PowerShell
cd C:\tools\llama.cpp\b11960

# バージョンが見えればヨシ
.\llama-server.exe --version

# CUDA デバイスが見えているか
.\llama-cli.exe --list-devices

ファイルの配置が合っていれば、GPUが表示されます。

PowerShell
Available devices:
CUDA0: NVIDIA GeForce RTX 4070 Ti SUPER (16376 MiB,... free)

CPU しか出ない場合や、(none)と出る場合は、CUDAのdllたちとllamaのバイナリたちが一緒のフォルダにいるか、今一度確認をしてください。

PATH は通したい人は通してください。

5. モデルをダウンロード

モデルをHugging Faceから取得します。Hugging FaceからGGUFファイルを落としてきて配置するか、CLIで取得したい場合はHugging Face(CLI)を導入しておきましょう。導入は以下のコマンド。

PowerShell
pip install huggingface_hub[cli]

インストールできたらログインしてみます。

PowerShell
hf auth login

ログインはブラウザからログインか、トークンでログインか選べますが、ブラウザで良いと思います。
たとえば、Qwen3-14B-Q4_K_M.ggufをダウンロードしたいときは、

PowerShell
hf download Qwen/Qwen3-14B-GGUF Qwen3-14B-Q4_K_M.gguf --local-dir ./models

のように、リポジトリ名とファイル名、保存先を指定して実行します。リポジトリ全体で良い場合はファイル名は不要です。保存先は、–local-dirだけであれば、今いるディレクトリに保存され、”./models”と指定すれば、この例では直下のmodelsフォルダに保存されます。

6. モデルを置いて起動テスト

前項ではQwen3-14Bのダウンロードを例としてあげていますが、まずはGGUF ファイルはもっと小さめのモデルで起動だけ確認すると、問題が起きたときの切り分けが楽です。何かしらモデルが準備できたらテストしてみます。

チャット(CLI)の場合:

PowerShell
cd C:\tools\llama.cpp\b11960
.\llama-cli.exe -m C:\tools\llama.cpp\models\<model>.gguf -ngl 99 -c 8192 -cnv

サーバー(WebUI / API が http://localhost:8080 に立つやつ)の場合:

PowerShell
.\llama-server.exe -m C:\tools\llama.cpp\models\<model>.gguf -ngl 99 -c 8192 --port 8080

-ngl 99 は全レイヤーを GPU に載せる指定です。VRAM に載り切らない大きなモデルでは、ここを段階的に下げて「部分オフロード」で動かすことになります(ベンチマーク編で実測します)。ポートは既定値がバージョンで変わることがあるので、--port 8080 は常に明示するのがおすすめです。また、-c 8192はコンテキストサイズです。

導入確認用のスモークテストとして、llama-bench を1回回しておくと安心です。

PowerShell
.\llama-bench.exe -m C:\tools\llama.cpp\models\<model>.gguf -p 512 -n 128 -r 3 -ngl 99 -o jsonl `| Tee-Object C:\tools\llama.cpp\results\smoke-b11960.jsonl

ex. トラブルシューティング

症状原因の見当対処
--list-devices に CPU しか出ないcudart を別フォルダに展開した/版数ペア不一致2つの zip を同じフォルダへ展開し直す。13.4 と 12.4 が混ざっていないか確認
cublas64_13.dll が無い等の DLL エラーcudart の zip 未展開、または 12.4 側との取り違え13.4 側の cudart zip を同フォルダへ展開
起動時にドライバ不足系のエラードライバが CUDA 13.x 未対応ドライバを最新化する。できない環境では 12.4 ペアに切り替える
動くが極端に遅い(数 tok/s)静かに CPU 実行へフォールバックしている-ngl 99 の付け忘れ確認と、デバイス表示の再確認
起動直後に落ちる/OOMVRAMに載り切らない-ngl を段階的に下げる、または -c を 8192 から下げる(条件を変えたら記録に残す)
バージョンがいつの間にか変わっているwinget 等の自動更新が混在zip 運用に一本化する(winget 版があればアンインストールして混在を解消)

まとめ

  • 公式バイナリは「安定版マーカー(v0.8.0)」と「実バイナリ(b11960)」が分かれているので、b 番号のページから落とす
  • 本体と cudart は同じ CUDA 版数のペアで、同じフォルダに展開する
  • --list-devices で CUDA0 が見えること
  • モデルはHugging Face CLI等からダウンロード

土台ができたので、色々遊びましょう。

タイトルとURLをコピーしました