GeForce RTX 3060 12GBでllama.cppを動かすとき、CUDA対応のビルドとモデルのGPU割り当ては別の操作です。CPU用にビルドされたプログラムへ起動オプションを足しても、CUDAによる推論にはなりません。公式のビルド手順と起動引数を分けて確認します。
llama.cppはGGUF形式のモデルを直接扱えるため、モデルの量子化形式、GPUへ置く層、コンテキスト長を細かく指定できます。RTX 3060 12GBでは4B〜8Bの量子化モデルが試しやすく、VRAMに近い容量のモデルは起動引数で使用量を調整します。
CUDA対応ビルドの準備
llama.cppの公式ビルド資料は、NVIDIA GPU用のCUDAバックエンドを案内しています。必要なのはCUDA Toolkit、CMake、C/C++のビルド環境です。RTX 3060はAmpere世代のGPUで、CUDAを利用する対象になります。
GPUドライバーとCUDA Toolkitは役割が違います。ドライバーは実行環境、ToolkitはソースからCUDA対応版をビルドするための開発環境です。既製のCUDA対応バイナリを使うならビルド工程は省けますが、ソースから作る場合はToolkitを導入してCMakeにバックエンドを指定します。
ソースコードを取得してllama.cppのディレクトリへ移動した後、公式資料のCUDA構成を実行します。
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release
1行目はCUDA対応を有効にしてビルド設定を作り、2行目で実行ファイルを生成します。ビルドに失敗する場合は、CMakeのエラーに示されるCUDA Toolkitの検出状況、コンパイラー、ドライバーとToolkitの組み合わせを確認します。Windowsでは選んだCMakeジェネレーターに対応するC++開発環境も必要です。
GGUFモデルとGPUへの割り当て
モデルは利用許諾を確認したGGUFファイルを用意します。llama.cppの実行ファイルは、ビルド環境によって build/bin などに生成されます。実際のファイル位置に合わせて llama-cli を起動し、-m でGGUFを指定します。
llama-cli -m model.gguf --n-gpu-layers all --ctx-size 4096
公式のマルチGPU資料では、–n-gpu-layers がGPUに置く層の上限です。all は可能な範囲でGPUへ置く指定で、–ctx-size はコンテキスト長を表します。モデルファイルのパスは保存先に合わせて置き換えます。
同じ資料によると、–n-gpu-layers の標準値は auto です。最初は自動設定で起動し、どの層がGPUに載ったかログで確かめる方法もあります。GPUが認識されるかを切り分けるには –list-devices を使えます。CPUだけで動いているようなら、ビルド時にCUDAが有効だったかを先に調べます。
VRAMに収まらない場合
12GBはカードの総VRAM容量です。モデルの重み、KVキャッシュ、計算用の領域が同じメモリを使います。ファイルが9GB台の量子化モデルでも、コンテキストを大きくすると収まり方が変わります。CUDAのメモリ不足が出たら –ctx-size を下げ、必要に応じてGPUに置く層数を減らします。
層を減らすと一部の処理がCPU側に移ります。GPUだけに収める目的なら、モデルサイズや量子化形式を小さくする方が筋が通ります。たとえば同じモデルのQ4とQ8では重みのファイル容量が変わります。ファイル容量だけで実際のトークン生成速度を予測できないため、同じ入力とコンテキスト条件で確認します。
llama.cppはサーバー用の実行方法も提供します。チャット用UIや別のプログラムから接続する場合は llama-server を使い、同じモデルパスとGPU層の設定を渡します。まず llama-cli でモデルが正常に動くかを確かめ、その後にサーバーへ切り替えると問題を分けやすくなります。
2枚構成との違い
1枚のRTX 3060 12GBでは、モデル全体とキャッシュを12GBに収めるのが目標です。2枚使う構成では、llama.cppの標準のlayer分割によりモデルの層を複数GPUへ配分できます。公式資料は、GPU間の接続速度や分割モードが性能に影響すると説明しています。
2枚構成では各GPUに別々のメモリ領域があり、llama.cppが層を振り分けます。1枚で収まる8Bのモデルなら、まず単一GPUでの動作を固めてから、2枚構成の必要性を判断します。
まとめ
llama.cppでRTX 3060 12GBのCUDAを使うには、GGML_CUDAを有効にしたビルドと、起動時のGPU層設定を確認します。GGUFの容量に加え、コンテキスト長がVRAM使用量を左右します。2枚構成の層分割を検討する場合はRTX 3060 12GBを2枚使うローカルLLM構成で具体的な条件を整理しています。
