llama.cpp GPUバックエンド比較:Metal・CUDA・ROCm・Vulkan・SYCL

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

llama.cpp GPUバックエンド比較:Metal・CUDA・ROCm・Vulkan・SYCLのイメージイラスト

先に結論

Apple SiliconならMetal、NVIDIA GPUならCUDA、公式対応するAMD GPUならHIP/ROCmが第一候補です。Vulkanは幅広いGPUで試せる互換ルート、SYCLはIntel系を中心とする選択肢です。ただし同じGPUでもモデル構造と量子化によって結果が変わるため、最終判断はllama-benchで行います。

バックエンド早見表

環境第一候補特徴確認点
Apple Silicon MacMetalユニファイドメモリを利用しやすいOS・ビルド更新による差
NVIDIACUDA最適化と利用例が豊富ドライバーとCUDA世代
AMD LinuxHIP/ROCm対応GPUでは有力GPUの公式対応表とROCm版
AMD/Intel等Vulkanベンダーをまたいで試しやすい演算・量子化ごとの対応差
IntelSYCL / OpenVINOIntel向け経路を選べる対象デバイスと配布バイナリ
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トークンまでの時間)とリクエスト全体の時間も測ります。

選び方の実務フロー

  1. GPUベンダーのネイティブ候補を試す
  2. モデルが正常出力するか代表プロンプトで確認する
  3. prompt processingとgenerationを別々に測る
  4. VRAM不足なら量子化・context・offloadを調整する
  5. 代替バックエンドと同条件で比較する

まとめ

バックエンド名だけで優劣は決まりません。まずMetal、CUDA、ROCmなどハードウェアに近い経路を選び、VulkanやSYCLを代替候補にします。そのうえで、使いたいモデルと量子化を同条件で測るのが最短です。最新ビルドの状況はllama.cpp最新動向で随時確認してください。

これからGPUを選ぶ場合は、国内価格をVRAM 1GBあたりで計算したローカルLLM向けGPUのVRAMコスパ比較も参考にしてください。

公式資料