第9部 ハードウェアと実行環境第18章

CUDA / ROCm / Metal / DirectML

同じGPUでも、話しかける「言葉」が違えば動きません。NVIDIAのCUDA、AMDのROCm、AppleのMetalとMLX、WindowsのDirectMLとWindows ML、そしてメーカーをまたぐVulkanやSYCLまで、実行バックエンドの地図を2026年10月時点で描きます。

約14分で読めます2026年10月改訂

このページの内容(10項目)
  1. バックエンドとは:GPUへの「通訳」
  2. CUDA:NVIDIAの標準語
  3. ROCm と HIP:AMDの答え
  4. Apple:Metal・MPS・MLX
  5. Windows:DirectMLからWindows MLへ
  6. メーカーをまたぐ共通語:Vulkan・SYCL・OpenVINO
  7. どれを選ぶ?
  8. バージョンの組み合わせに気をつける
  9. さらに深く学ぶ
  10. 出典・参考

llama.cppをダウンロードしようとしたら、ファイルが30個以上も並んでいた。どれを選べばいい?

llama.cppのリリースページを開くと、win-cuda-13.4-x64、win-rocm-10.0-x64、win-vulkan-x64、win-sycl-x64、macos-arm64……と、似た名前のファイルがずらりと並んでいます2026年10月時点。中身は同じllama.cppなのに、なぜこんなに種類があるのでしょう。

違いは、GPUに仕事を頼むときの「言葉」です。この章では、その言葉にあたる実行バックエンドを、メーカーごとに整理します。

バックエンドとは:GPUへの「通訳」

ひとことで言うと

バックエンドは、PyTorchやllama.cppのようなソフトと、GPUの間に入る通訳兼道具箱です。GPUのメーカーごとに専用のもの(CUDA、ROCm、Metal)と、メーカーをまたいで使える共通のもの(Vulkan、SYCL、DirectMLなど)があります。

flowchart TD
  A["アプリ
チャットUIなど"] --> B["フレームワーク・ランタイム
PyTorch・llama.cpp・ONNX Runtime"] B --> C["バックエンド
CUDA・ROCm・Metal・Vulkan"] C --> D["ドライバ"] D --> E["GPU・NPU"]
図: アプリからハードウェアまでの層。バックエンドはランタイムとドライバの間にある

海外の工場に発注するとき、現地の言葉を話せる担当者がいると話が早く、細かい注文も通ります(専用バックエンド)。英語のような共通語でも発注はできますが、細かいニュアンスは伝わりにくいこともあります(共通バックエンド)。

バックエンドは、単なる言葉だけでなく「よく使う計算の高速な部品集」も含みます。行列計算、アテンション、GPUどうしの通信などを、そのハードに合わせて最適化したライブラリ群です。この部品集の厚みが、実際の速さを大きく左右します。

CUDA:NVIDIAの標準語

CUDAはNVIDIAのGPU向けの開発基盤です。行列計算のcuBLAS、ニューラルネット向けのcuDNN、GPU間通信のNCCLなど、長年積み上げた部品群があり、多くのAIソフトがまずCUDAで作られ、最もよく最適化される状況が続いています。推論向けにはTensorRT系の最適化ツールもあります(第9章)。

CUDA 13 CUDA Toolkit 13系

2025年8月の13.0で始まったメジャーバージョン。13.0で、Maxwell・Pascal・Volta世代(Turingより前)のGPU向けのコンパイルとライブラリの対応が外れました。2026年10月時点の最新は13.4系(13.4.3)で、Windowsでは13.1から、Linuxでは13.4から、ドライバがツールキットに同梱されなくなりました。古いGPUを使っている場合は、CUDA 12系のビルドを選ぶ必要があります。

llama.cppのリリースに cuda-12.4 と cuda-13.4 の両方があるのは、このためです。自分のGPUの世代とドライバのバージョンを確認して選びましょう。

ROCm と HIP:AMDの答え

ROCmはAMDのGPU向けのオープンソースの開発基盤です。その中心にあるHIPは、CUDAとよく似た書き方ができるように作られていて、CUDAのコードをHIPに変換するツールも用意されています。

ROCmは2025年9月に7.0、2026年8月に10.0が公開され、2026年10月時点の最新は2026年10月5日公開の10.1.0です。7.14からは「TheRock」という新しいビルド・リリースの仕組みに移りました。対応はデータセンター向けのInstinctだけでなく、Radeon RX 9000シリーズやRyzen AI Maxの内蔵GPUにも広がっており、10.1のリリースノートはLinuxに加えてWindows 11(25H2)を対応OSとして挙げています。

もう一歩深く: PyTorchでは「cuda」のまま

ROCm版のPyTorchは、あえて torch.cuda の名前をそのまま使います。PyTorchのドキュメントによると、既存のコードをほとんど書き換えずに動かせるようにするためです。AMDのGPUでも device="cuda" と書いて動くので、初めて見ると戸惑うかもしれません。

注意: 対応GPUの一覧を必ず確認

ROCmは公式に対応するGPUが決まっています。同じAMDのGPUでも、世代や型番によっては対象外のことがあります。インストール前に、使うROCmのバージョンの互換性一覧(compatibility matrix)を確認しましょう。

Apple:Metal・MPS・MLX

MacのGPUを使うための土台は、Appleのグラフィックス・計算APIであるMetalです。LLMの世界では、その上に複数の入り口があります。

  • llama.cppのMetalバックエンド: Apple Silicon で標準的に使われる。Ollama や LM Studio の中でも動いている(第8章)。
  • PyTorchのMPS: Metal Performance Shaders を使うバックエンドで、デバイス名は mps。
  • MLX: Appleの機械学習研究チームが作った配列計算フレームワーク。CPUとGPUが同じメモリを使うユニファイドメモリを前提に設計されている。LLM用のMLX-LMで推論も微調整もできる(第14章)。

MLXはApple Silicon 向けとして生まれましたが、2026年10月時点ではLinux向けにCUDAバックエンド(pip install mlx[cuda])やCPU版のパッケージも用意されています。それでも主な舞台はMacです。ユニファイドメモリについては第17章を参照してください。

Windows:DirectMLからWindows MLへ

DirectMLは、DirectX 12に対応したGPUなら、メーカーを問わず機械学習の計算を高速化できるWindowsのライブラリです。NVIDIA・AMD・Intel・QualcommのGPUで同じように動くのが魅力でした。

しかし2026年10月時点で、DirectMLは保守モードに入っています。GitHubのREADMEは、セキュリティやコンプライアンス関連の修正は続けるものの、新機能の追加は予定していないとし、Windows 11 24H2以降ではWindows MLの利用を検討するよう勧めています。

Windows ML Windows Machine Learning

2025年9月に一般提供が始まった、Windowsのローカル推論の基盤。中身はWindowsが保守するONNX Runtimeで、NPU・GPU・CPU向けの実行プロバイダ(Execution Provider、EP)を、端末のハードに合わせてWindowsが自動で入手・更新します。CPUとGPU(DirectML経由)はサポート対象のすべてのWindowsで使え、NPUや特定GPU向けのEPにはWindows 11 24H2以降が必要です。

つまりDirectMLは消えるわけではなく、Windows MLの中でGPU向けの土台の1つとして使われ続けます。新しくアプリを作るなら、入り口はWindows MLにする、と覚えておけば十分です。Copilot+ PCのNPUを使う推奨ルートも、Microsoftの開発者ガイドではWindows MLになっています。

メーカーをまたぐ共通語:Vulkan・SYCL・OpenVINO

Vulkan ヴァルカン

メーカーをまたいで使えるグラフィックス・計算API。llama.cppのVulkanバックエンドは、NVIDIA・AMD・IntelのGPUで同じバイナリが動くため、「とりあえずGPUで動かしたい」ときの頼れる選択肢です。専用バックエンドより遅いこともありますが、ドライバさえ入っていれば追加のツールキットが要らない手軽さがあります。

Intelは、業界標準のSYCLというC++のプログラミングモデルと、それを実装するoneAPIを推しています。llama.cppにはIntel GPU向けのSYCLバックエンドがあり、PyTorchもIntel GPUを xpu というデバイス名で直接サポートしています。かつて使われた「Intel Extension for PyTorch」はGitHubでアーカイブされ、開発が終わりました2026年10月時点。IntelのCPU・GPU・NPU向け推論ツールキットOpenVINOも、llama.cppのバックエンドとして開発が進んでいます。

バックエンド主な対象主なOS
CUDANVIDIA GPULinux・Windows
ROCm / HIPAMD GPULinux・Windows
Metal / MPS / MLXApple SiliconmacOS
Windows ML / DirectML各社GPU・NPUWindows
Vulkan各社GPULinux・Windows・Android
SYCL / oneAPI主にIntel GPULinux・Windows

どれを選ぶ?

flowchart TD
  A["GPUは?"] --> B["NVIDIA"]
  A --> C["AMD"]
  A --> D["Apple Silicon"]
  A --> E["Intel"]
  B --> F["CUDA"]
  C --> G["ROCm
だめならVulkan"] D --> H["Metal・MLX"] E --> I["SYCL
またはVulkan"]
図: llama.cppなどを手元で動かすときのバックエンド選びの目安

PyTorchでコードを書くときは、デバイス名で区別します。NVIDIAとAMD(ROCm版)は cuda、Macは mps、Intel GPUは xpu、GPUがなければ cpu です。アプリとして配布するなら、WindowsではWindows ML、ほかのOSではONNX Runtimeやllama.cppのように複数のバックエンドを抱えたランタイムを使うと、利用者の環境の違いを吸収しやすくなります(第6章)。

バージョンの組み合わせに気をつける

バックエンドで一番つまずきやすいのは、バージョンの組み合わせです。GPUのドライバ、CUDAやROCmのツールキット、PyTorchなどのフレームワークは、それぞれ対応するバージョンの範囲が決まっています。どれか1つだけ新しすぎたり古すぎたりすると、「GPUが見つからない」「起動時にエラーになる」といった症状が出ます。

  • PyTorch: CUDA版・ROCm版などを別々のパッケージとして配布しています。公式サイトのインストール画面で、OSとバックエンドを選んで出てくるコマンドを使うのが確実です。
  • llama.cpp: ビルド済みファイルの名前にバックエンドとバージョン(cuda-13.4、rocm-10.0など)が入っています。
  • ドライバ: 新しいツールキットは新しいドライバを要求するのが普通です。まずドライバを更新してから試しましょう。

Dockerなどのコンテナを使うと、ツールキットとフレームワークの組み合わせを丸ごと固定できます。NVIDIAやAMDは、動作確認済みの組み合わせを入れたコンテナイメージも提供しています。

ためしてみよう

手元のGPUがどのバックエンドで動くか迷ったら、llama.cppのVulkan版を試すのが手軽です。動いたら、次に専用バックエンド(CUDAやROCm)の版と速度を比べてみましょう。同じモデルでも差が出ることが実感できます。

よくある誤解

AMDのGPUではPyTorchのコードを大きく書き換える必要がある

ROCm版PyTorchは torch.cuda の名前をそのまま使うので、多くのコードは device="cuda" のまま動きます

DirectMLは廃止されたので、もう使えない

保守モードで新機能は追加されませんが、セキュリティ修正は続き、Windows MLのGPU向けの土台としても使われています

Vulkanはゲーム用なので、AIには使えない

Vulkanには汎用計算の機能があり、llama.cppのVulkanバックエンドは各社のGPUでLLMを動かす定番の選択肢です

確認クイズ

Q1. CUDAのコードとよく似た書き方ができる、AMDのプログラミング環境は?

  • SYCL
  • HIP
  • Metal

HIPはROCmの中心にあり、CUDAに近い書き方ができます。SYCLはIntelが推す業界標準、MetalはAppleのAPIです。

Q2. Windowsで新しくAI推論アプリを作るとき、Microsoftが推奨する入り口は?

  • DirectMLを直接使う
  • Windows ML
  • Metal

DirectMLは保守モードに入り、新機能はWindows MLで開発されています。Windows MLはONNX Runtimeを土台に、NPU・GPU・CPU向けの実行プロバイダを自動で選びます。

Q3. PyTorchで、Intel GPUを指すデバイス名は?

xpu です。NVIDIAとAMD(ROCm版)は cuda、Apple Silicon は mps です。

Q4. 古いPascal世代のNVIDIA GPUで、CUDA 13版のソフトが動かない。なぜ?

CUDA 13.0でTuringより前の世代(Maxwell・Pascal・Volta)への対応が外れたためです。CUDA 12系でビルドされた版を選びましょう。

この章のまとめ

  • バックエンドはソフトとGPUの間の通訳兼部品集。メーカー専用と、メーカー共通のものがある
  • CUDAは最も厚いエコシステム。CUDA 13ではTuringより前のGPUが対象外になった
  • AMDはROCmとHIP(2026年10月時点で10.1)。PyTorchではcudaの名前のまま動く
  • MacはMetal・MPS・MLX。WindowsはDirectMLが保守モードとなり、Windows MLが新しい入り口
  • VulkanやSYCLはメーカーをまたぐ選択肢。迷ったらllama.cppのVulkan版から試せる

さらに深く学ぶ

この章の内容をもう一歩掘り下げるための原典です。

第18章の論文・資料をすべて見る →

出典・参考

  1. ggml-org/llama.cpp Releases — CUDA 12.4/13.4・ROCm 10.0・Vulkan・SYCL・OpenVINO版のビルド(2026年10月時点)
  2. ggml-org/llama.cpp README — 対応バックエンド一覧(Metal・CUDA・HIP・Vulkan・SYCL・OpenVINOなど)
  3. NVIDIA「CUDA Toolkit Release Notes」 — Turingより前の世代の対応終了(13.0)、ドライバの非同梱化
  4. NVIDIA「CUDA Toolkit Archive」 — 13.0.0(2025年8月)〜13.4.3(2026年10月)
  5. AMD「ROCm Core SDK 10.1.0 release notes」(2026年10月5日)、「ROCm release history」
  6. PyTorch ドキュメント「HIP (ROCm) semantics」 — torch.cuda の名前を再利用
  7. PyTorch「MPS backend」、「Getting Started on Intel GPU」
  8. ml-explore/mlx(GitHub) — ユニファイドメモリ、Linux向けCUDAバックエンド
  9. microsoft/DirectML(GitHub) — 保守モードの告知とWindows MLへの案内
  10. Microsoft Learn「What is Windows ML?」、Windows Developer Blog「Windows ML is generally available」(2025年9月23日)
  11. Microsoft Learn「Copilot+ PCs developer guide」 — NPU利用の推奨ルートがDirectMLからWindows MLへ
  12. intel/intel-extension-for-pytorch(GitHub) — アーカイブ済みの告知