Local / Edge実践ガイド
llama.cppのn-gpu-layersはどう決める?GPUオフロードをログで確認する

目次
公式サイトで次に進む
この記事で明示的に扱うソフトだけを表示します。配布・手順は各公式ページで確認してください。
llama.cpp
local-gen.jpがファイルを配布するものではなく、互換性を保証するものでもありません。
llama.cppでGPUを使うとき、--n-gpu-layersを何に設定すればよいかは、モデル名だけでは決められない。
同じモデルでも量子化、コンテキスト長、バックエンド、GPUのVRAMによって配置できる量が変わるため、指定した数字より、実際の起動ログを見ることが重要だ。
--n-gpu-layersはGBではなくモデル層の数を扱う
llama.cppでは-ngl、--gpu-layers、--n-gpu-layersが同じ設定として用意されている。
使用中のバージョンでは、数値のほかautoやallを扱える場合がある。正確な利用方法は、そのバージョンの--helpや公式資料で確認する。
たとえば、
llama-cli -m model.gguf --n-gpu-layers 20
としたとき、20は20GBという意味ではない。GPUへ配置するモデル層の上限を指定する値だ。
一部だけGPUへ置く場合は段階的に試す
VRAMへ全体を置けない場合は、数値を指定して一部のモデル層だけをGPUへ配置できる。
--n-gpu-layers 10
--n-gpu-layers 20
--n-gpu-layers 30
のように比較できるが、最適な刻み幅は環境によって違う。メモリ不足に近い場合は小さめに変えた方が原因を追いやすい。
allを指定してもVRAMのすべてが解決するわけではない
モデル層を広くGPUへ配置できても、推論時にはほかにもVRAMを使う。
- KV cache
- コンテキスト長に応じた領域
- 実行時のバッファー
- ほかのGPU利用アプリ
などがある。
そのため、「全モデル層をGPUへ置けた」ことと「推論中の最大VRAM使用量がGPU容量以内に必ず収まる」ことは同じではない。
起動ログで実際の配置を確認する
起動したら、次を確認する。
- 使用されたGPUとバックエンド
- 何層がGPUへ配置されたか
- モデルのバッファーがどこへ置かれたか
- CPU側に残った部分
- エラーや警告
起動ログに出るバッファー容量は配置を確認する材料だが、その数字だけを推論中の最大VRAM使用量とは呼ばない。
比較するときは一項目だけ変える
最低限、次を固定する。
モデル・リビジョン:
GGUF・量子化:
llama.cppのバージョン:
バックエンド:
GPU:
コンテキスト長:
プロンプト:
そのうえでn-gpu-layersだけを変え、起動成否、実際のGPU配置、RAM・VRAM、応答時間を記録する。
メモリ不足ならコンテキストやKV cacheも確認する
n-gpu-layersを下げるとGPU側のモデル配置は減らせるが、メモリ不足の原因がモデル層だけとは限らない。
コンテキスト長、KV cache、バッチ設定、ほかのGPU利用アプリなども確認する。
特にコンテキスト長とn-gpu-layersを同時に変えると、どちらがVRAM差を作ったのか分かりにくくなる。
GGUFのファイル容量から層数を決めない
GGUFファイルの容量は保存領域の目安にはなるが、それだけからGPUへ何層置けるかは計算できない。
最終的には、安定して起動し、必要なコンテキストでメモリに収まり、待ち時間も許容できる設定を選ぶ。
VRAM不足への対処全体を整理したい場合は、GPUオフロードとCPUオフロードの使い分けへ進む。Windows + NVIDIAでCUDA経路自体がまだ動いていない場合は、llama.cppをWindows + NVIDIAで動かす手順を先に確認する。
まとめ
- --n-gpu-layersはモデル層をGPUへどこまで配置するか調整する設定で、GB単位の指定ではない
- 数値、auto、allを指定した結果は、起動ログで実際に何層がGPUへ配置されたか確認する
- モデル層がGPUへ収まっても、KV cacheや実行用バッファーなど別のVRAM使用がある
- 比較ではモデル、量子化、コンテキスト長、バックエンドを固定し、n-gpu-layersだけを変える
この記事で扱ったデータ
モデル・GPU・実行ソフトの確認済みデータを、記事とは別に確かめられます。