llama.cpp GPUバックエンド比較:Metal・CUDA・ROCm・Vulkan・SYCL
llama.cppのMetal、CUDA、HIP/ROCm、Vulkan、SYCL、CPUを比較し、Mac・NVIDIA・AMD・Intel環境での選び方とベンチマーク方法を解説します。

先に結論
Apple SiliconならMetal、NVIDIA GPUならCUDA、公式対応するAMD GPUならHIP/ROCmが第一候補です。Vulkanは幅広いGPUで試せる互換ルート、SYCLはIntel系を中心とする選択肢です。ただし同じGPUでもモデル構造と量子化によって結果が変わるため、最終判断はllama-benchで行います。
バックエンド早見表
| 環境 | 第一候補 | 特徴 | 確認点 |
|---|---|---|---|
| Apple Silicon Mac | Metal | ユニファイドメモリを利用しやすい | OS・ビルド更新による差 |
| NVIDIA | CUDA | 最適化と利用例が豊富 | ドライバーとCUDA世代 |
| AMD Linux | HIP/ROCm | 対応GPUでは有力 | GPUの公式対応表とROCm版 |
| AMD/Intel等 | Vulkan | ベンダーをまたいで試しやすい | 演算・量子化ごとの対応差 |
| Intel | SYCL / OpenVINO | Intel向け経路を選べる | 対象デバイスと配布バイナリ |
| GPUなし | CPU | 導入が簡単で再現しやすい | メモリ帯域とスレッド数 |
Metal:Apple Siliconの標準候補
Apple SiliconはCPUとGPUが同じユニファイドメモリを共有します。大きなGGUFを扱いやすい一方、OS全体も同じメモリを使うため、搭載容量ぎりぎりのモデルは安定しません。モデル重みだけでなくKV cacheと実行バッファの余裕を残します。
cmake -B build -DGGML_METAL=ON
cmake --build build --config Release -j
./build/bin/llama-bench -m model.gguf -ngl 99
Mac向けの導入手順はApple Silicon版llama.cppガイドも参照してください。
CUDA:NVIDIA GPUの第一候補
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j
./build/bin/llama-bench -m model.gguf -ngl 99
CUDAは単一GPUだけでなく、複数GPUへの分割やCPUへの一部オフロードも扱えます。VRAMに収まらないときは、量子化を下げる、コンテキストを短くする、GPUへ載せる層を減らす、複数GPUへ分ける順で比較します。
HIP/ROCm:AMDは対応表の確認が先
cmake -B build -DGGML_HIP=ON
cmake --build build --config Release -j
ROCmはバージョンとGPUアーキテクチャの組み合わせが重要です。「AMD GPUだから動く」と一括りにせず、AMDの公式対応表、llama.cppのビルド文書、対象モデルの既知問題を確認します。Windows HIPとLinux ROCmでも条件が異なる場合があります。
Vulkan:互換性を広げる選択肢
cmake -B build -DGGML_VULKAN=ON
cmake --build build --config Release -j
Vulkanは複数ベンダーで利用でき、CUDAやROCmが合わない環境の有力な候補です。一方、最新の演算や新しいモデル構造への対応時期、速度はバックエンドごとに差が出ます。動作したことと、最速で安定していることは分けて判断します。
SYCL・OpenVINO・OpenCL
llama.cppの公式リリースにはSYCLやOpenVINOのビルドも用意されています。2026年7月のb9968ではAdreno向けOpenCLのdense/MoE prefill最適化も入り、対応範囲はPC用GPUだけではありません。選択肢が増えた分、利用デバイスが公式バイナリの対象か、必要な演算が実装されているかを確認してください。
公平な比較方法
llama-bench \
-m model.gguf \
-p 512,2048 \
-n 128 \
-r 5 \
-o json
比較時に固定する項目は次の通りです。
- llama.cppのビルド番号
- 同じGGUFファイルとハッシュ
- GPUオフロード層数
- コンテキスト、batch、ubatch
- KV cacheの型
- 電源モードとバックグラウンド処理
llama-benchのt/sにはtokenizationとsampling時間が含まれません。実際のAPIではTTFT(最初の1トークンまでの時間)とリクエスト全体の時間も測ります。
選び方の実務フロー
- GPUベンダーのネイティブ候補を試す
- モデルが正常出力するか代表プロンプトで確認する
- prompt processingとgenerationを別々に測る
- VRAM不足なら量子化・context・offloadを調整する
- 代替バックエンドと同条件で比較する
まとめ
バックエンド名だけで優劣は決まりません。まずMetal、CUDA、ROCmなどハードウェアに近い経路を選び、VulkanやSYCLを代替候補にします。そのうえで、使いたいモデルと量子化を同条件で測るのが最短です。最新ビルドの状況はllama.cpp最新動向で随時確認してください。
これからGPUを選ぶ場合は、国内価格をVRAM 1GBあたりで計算したローカルLLM向けGPUのVRAMコスパ比較も参考にしてください。


