機械学習の学習・推論において、NVIDIA GPUとMac(Apple Silicon)は同じようには使えません。CUDA専用に作られたライブラリが数多く存在し、Macでは動かないものが一定数あるためです。ライブラリごとの対応状況と、Macで実際にできる機械学習の範囲を公式ドキュメントにもとづいて整理しました。読めば、NVIDIAとMacをどう使い分ければよいかが分かります。
この記事の対象読者:機械学習を使ったサービス開発を検討している経営者・事業責任者、Macで機械学習環境の構築を検討している開発者・データサイエンティストの方
そもそも「NVIDIAのGPU」と「MacのGPU」の違い
NVIDIAのGPUとMacのGPUは、同じ「GPU」という名前でも、動かすための命令の規格が違います。工場にたとえると分かりやすくなります。
NVIDIA GPUは、CUDAという専用工具だけを使う高性能な専用工場です。研究者が公開する最新の機械学習コードの多くは、この工場(CUDA)があることを前提に作られています。
Mac GPU(Apple Silicon)は、別メーカーの統合型工場です。Metal・MPSという別の工作機械を使い、NVIDIA工場向けの工具(CUDA)はそのままでは使えません。PyTorchのように、両方の工場に対応した設計のツールなら、指定を変えるだけでMacのGPUでも動かせます。
| 用語 | 比喩で言えば | この記事での意味 |
|---|---|---|
| NVIDIA GPU | 高性能な専用工場 | CUDAという専用工具で計算する装置 |
| CUDA | 工場専用の工作機械・工具 | NVIDIA GPU専用の命令規格 |
| Mac GPU(Apple Silicon) | 別メーカーの統合型工場 | Metal・MPSという別規格で動く装置 |
| Metal / MPS | Mac工場用の別の工作機械 | Appleが用意したMac GPU向けの命令規格 |
| ユニファイドメモリ | CPUとGPUが同じ作業机を使う方式 | MacでCPUとGPUがメモリを共有する仕組み |
【比較表】使えるもの・使えないもの一覧
機械学習で使う主要なツールのうち、GPUを使った高速化まで含めて動くのはPyTorchなど一部に限られます。ツールごとの対応状況は次の表のとおりです。
| ツール | 何に使うか | NVIDIA(CUDA) | Mac(CPU) | Mac(GPU/Metal・MPS) |
|---|---|---|---|---|
| PyTorch | 画像・音声・Transformerの学習全般 | ◎ | ○ | ○ |
| LightGBM/XGBoost/CatBoost | 表データの予測(需要予測・解約予測など) | ◎ | ◎ | × |
| TensorFlow + tensorflow-metal | 画像・時系列データの学習 | ◎ | ○ | ○ |
| JAX | 数値計算・強化学習の研究コード | ◎ | ○ | △ |
| MLX/MLX-LM | LLMのローカル推論・LoRA微調整 | ○(Linux版のみ) | — | ◎ |
| llama.cpp | 量子化LLMのローカル推論 | ◎ | ○ | ◎ |
| FlashAttention | LLMの長文処理を高速・省メモリ化 | ◎ | × | × |
| xFormers | Transformerの高速Attention部品 | ◎ | × | × |
| bitsandbytes | LLMの4bit/8bit量子化 | ◎ | ○ | △ |
| DeepSpeed | 巨大モデルの複数GPU分散学習 | ◎ | × | △(単一デバイスのみ) |
| RAPIDS(cuDF/CuPy) | GPUでのpandas風処理・数値計算 | ◎ | × | × |
◎=日常的に使いやすい、○=使えるが確認が必要、△=制約が大きい、×=原則として同じ使い方ができない
MLXは「Apple Silicon専用」と思われがちですが、実際にはLinux上でCUDAバックエンドを使う配布も用意されています。ローカルLLMの推論・微調整をMacで完結させたい場合の有力な選択肢である点は変わりません。
「動かないもの」の役割
表の「×」は、古くて使われていないという意味ではありません。それぞれ現役で使われている道具です。何のための道具かを知れば、自社の用途に必要かどうかが判断できます。
FlashAttentionとxFormers
どちらも、LLMやTransformerの計算を高速・省メモリにするための専用部品です。Transformerは文章中の単語同士の関係を計算するAttentionという処理を大量に行い、文が長くなるほどメモリと計算量が急増します。FlashAttentionはGPUメモリの使い方を工夫してこれを高速化する実装で、xFormersはMeta社が公開する高速Attention部品集です。
FlashAttention-2の公式要件はCUDA 12以上と、A100・RTX4090・H100などAmpere以降のGPUです。xFormersも公式配布はLinux/Windows向けのCUDA版が中心です。どちらもCUDA専用のカーネルを組み込む設計のため、Macでは動きません。普通の画像分類や表データ予測、小型LLMの推論には不要です。長文脈のLLMを高速・低メモリで学習するコードでは重要になるため、そうした公開コードはMacへ単純移植できないと考えておいた方が安全です。
bitsandbytes
LLMを4bitや8bitに圧縮して、少ないGPUメモリで動かすための道具です。本来16桁分の精密な数値を4桁程度に圧縮するイメージで、多少の精度と引き換えに大きいLLMを扱えるようにします。
bitsandbytesはApple Siliconも公式サポート対象としています。ただし実際の配布はCPUビルドが中心で、GPU(MPS)を使った高速化のコードは開発中の段階です。Macで軽くLLMを微調整したい場合は、bitsandbytesを無理に使うより、後述するMLXのLoRA・QLoRAを使う方が現実的です。
DeepSpeed
巨大なモデルを複数のGPUに分けて学習させたり、1枚のGPUに収まらない学習を工夫して行ったりするための仕組みです。DeepSpeedの実行には、CUDAまたはROCmのコンパイラが必要です。Macでは環境変数の指定によって単一デバイスでの学習が使えるようになっていますが、複数GPUに分散させる本来の用途はNVIDIA環境が前提です。7B〜数十B規模以上のLLMを本格的に学習・継続事前学習するなら重要です。社内文書向けに少量の例で調整する程度なら、Mac上のLoRAで足りることが多くなります。
RAPIDS(cuDF・CuPy)
cuDFはGPUで動くpandasのような表データ処理ツール、CuPyはGPUで動くNumPyのような数値計算ツールです。対応にはNVIDIAのVolta世代(2017年以降に登場したNVIDIAのGPU設計の系統)以降のGPUが必要で、NVIDIA GPU以外では動きません。Polars・pandas・NumPy・LightGBMをCPUで使う通常の表データ案件であれば、RAPIDSが無くて困る場面は多くありません。
Macが実際に得意な機械学習
Macだけでも機械学習は十分に可能です。むしろ得意な領域がはっきりしています。
表データの予測
売上・需要・在庫予測、解約予測、価格推定、レコメンドのランキングといった表データの予測は、Macだけで十分に実用的です。中心となるLightGBM・CatBoost・scikit-learnはGPUが必須ではなく、データの整備や検証設計の方が結果への影響が大きくなります。弊社でもKaggleの需要予測・価格推定・レコメンドのコンペティションに取り組んできました。H&Mのレコメンドタスクでは、GPUを使わずCPUのみで銀メダル相当のスコアに到達しています。3.9億行・30GBというログデータも、Mac上でPolarsのストリーミング処理により扱えました。
ローカルLLMの推論と軽い微調整
MacではローカルでLLMを動かし、機密文書を外部に送らずに要約・検索・分類できます。AppleのMLXはApple Silicon向けの機械学習フレームワークです。MLX-LMには、Llama・Mistral・Qwen・Gemmaなどに対するLoRA・QLoRAの微調整の仕組みが用意されています。llama.cppもApple Siliconを主要な対象の1つとし、Metal・Accelerateを使って量子化モデルをローカル推論できます。Macは最大128GB(M4 Max)や192GB(M4 Ultra)のユニファイドメモリを搭載できます。GPU専用メモリが24GBのRTX4090には載らない量子化LLMも、この容量なら載せられる場合があります。載ることと高速に学習できることは別で、巨大モデルのフル学習ではNVIDIAが優位のままです。
画像分類の試作
Mac上のPyTorch MPSでは、ResNetやEfficientNet、ViTといった標準的な画像モデルの学習が可能です。DICOM画像のような医用画像でも同じです。次の範囲までは十分に候補になります。
- 読み込み・整形/画像データの前処理とキャッシュ作成
- サイズ統一・正規化/学習用にデータの形を揃える工程
- 試運転/小型モデル・少ないepochでの学習確認
弊社でもMRI画像を扱う画像コンペティションで、この進め方をとりました。まずMac上で前処理と小規模な検証を行い、GPUを本格的に使う学習だけをクラウドのNVIDIA環境へ切り出しています。Kaggleが無料で提供するT4での実測では、1ステップあたり1.19秒という具体的な数値が得られました。同じデータ・同じモデルでMac上の所要時間も計測すれば、どちらで学習を回すべきかを数値で判断できます。
「Macは10倍遅い」の実態
「10倍遅い」という言葉は、比較対象を固定しないと正しくありません。GPUによって性能の差が大きいためです。
| 比較対象 | メモリ容量 | メモリ帯域 | 主な用途 |
|---|---|---|---|
| NVIDIA H100 | 80GB(HBM) | 3.35TB/s(SXM版) | データセンター向け大規模学習 |
| NVIDIA A100 | 80GB(HBM) | 2TB/s | データセンター向け学習 |
| NVIDIA RTX4090 | 24GB(GDDR6X) | 約1TB/s | 個人・開発者向け最上位 |
| NVIDIA T4 | 16GB(GDDR6) | 320GB/s | Kaggle無料枠などクラウドの中〜低位GPU |
| Apple M4 Max | 最大128GB(ユニファイドメモリ) | 最大546GB/s | Apple Silicon最上位クラスのノート・デスクトップ |
| Apple M4 Ultra | 最大192GB(ユニファイドメモリ) | 819GB/s | Mac Studioの最上位構成 |
この表から分かるのは、「NVIDIA GPU」とひとくくりにMacとの差を語ると実態を見誤るということです。H100・A100はメモリ帯域がMacの最上位機よりも大きく、大規模な深層学習では5倍から10倍以上の差が出ても不思議ではありません。一方でT4はメモリ帯域がM4 Max・M4 Ultraよりも小さく、内容によってはMacと同等かMacが有利になる場面もあります。
差が生まれる理由は、次の3つです。
- 演算性能そのもの/GPUが1秒間にこなせる計算量の差
- メモリ帯域/データをGPU内でやり取りする速さの差
- カーネル最適化の蓄積/CUDA向けに長年積み上がった高速化コードの層の厚さ
判断に迷う場合は、自社の学習ジョブと同じデータ・同じモデル・同じバッチサイズで、実際に1ステップの時間を計測するのが最も確実です。弊社の医用画像コンペティションでは、この考え方でKaggle T4を実測し、1ステップ1.19秒という数値を得ました。
同じ方法は自社の環境でもそのまま使えます。クラウドのNVIDIA環境とMacの両方で同じ条件の1ステップを計測すれば、どちらに学習を任せるべきかを数値で判断できます。
【要注意】Macで機械学習をするときの落とし穴
Macで学習が動いているのに、想定より大幅に遅くなる典型的な原因があります。PyTorchのMPSが対応していない演算に当たったときの挙動です。
PyTorch MPSで未対応の演算に遭遇すると、通常はエラーになります。PYTORCH_ENABLE_MPS_FALLBACKという環境変数を1に設定すると、未対応の演算だけをCPUへ逃がして処理を続けられます。ただしこれは「直った」のではなく、GPUでの計算の途中にCPUへの往復が挟まる状態です。この往復のたびにGPUとCPUの間でデータをやり取りするため、想定より大きく遅くなります。
本番学習の前に、次のコードで小さなデータを使い、実際にMPSだけで走っているかを確認するのが安全です。
import torch
device = "mps" if torch.backends.mps.is_available() else "cpu"
print(device)
このコードを実行すると、Apple SiliconのGPUが使える環境であればmpsが表示されます。そのうえで1エポックの所要時間を計測し、エラーやCPUフォールバックの警告が出ていないかを確認します。
| 症状 | 原因 | 対処 |
|---|---|---|
| 学習開始直後にエラーで止まる | MPSが未対応の演算を使っている | 環境変数でCPUフォールバックを有効化するか、対応済みの演算に置き換える |
| 動くが想定より大幅に遅い | GPUとCPUの間で計算が往復している | 小規模データで1ステップの時間を計測し、フォールバック箇所を特定する |
| GitHub公開コードがそのまま動かない | CUDA専用ライブラリ(FlashAttention等)への依存 | 該当部分を標準的な実装に置き換えるか、クラウドNVIDIA環境を使う |
結局、NVIDIAとMacの選び方
現実的な使い分けは、二段構えです。Macを日常の開発・前処理・表データ予測・ローカルLLM推論の主力にし、画像の本格学習やCUDA専用のコードだけをクラウドのNVIDIA環境に任せます。
需要予測・解約予測・価格推定・レコメンドといった表データの機械学習は、Mac中心で始めて問題ありません。機密性の高い社内文書をローカルLLMで扱う用途や、LoRAでの軽い追加学習もMacが有力です。一般的な画像分類はMacでも試作でき、実測したうえで本番学習の置き場所を決めるのが妥当です。重い画像学習・最先端のLLM学習・CUDA専用の研究コードの再現は、NVIDIA環境が必要になる、あるいは強く推奨される領域です。
生成AI組み込みアプリの開発やAI駆動開発の支援を行う現場でも、同じ考え方が定着しています。開発・検証はMacで行い、GPUを本格的に必要とする学習だけをクラウドのNVIDIA環境に切り出す運用です。
この使い分けが当てはまらないケース
基盤モデルをゼロから事前学習する、あるいは複数GPUでの分散学習が前提の巨大モデルを扱う場合は、この使い分けは当てはまりません。DeepSpeedや、NCCL(複数のGPU間でデータをやり取りするNVIDIA製の通信規格)による高速通信は、NVIDIA GPU向けに設計されています。Macで同じ構成を再現する手段がないためです。この規模の開発を計画している場合は、最初からクラウドのNVIDIA環境を前提に設計するのが回避策になります。
まとめ
NVIDIA GPUとMacは、機械学習で「一部は同じように使えるが、完全には同じではない」というのが正確な結論です。CUDA専用のFlashAttention・xFormers・RAPIDSなどはMacで動かず、DeepSpeedの複数GPU分散学習も再現できません。一方で、表データの予測やローカルLLMの推論・軽い微調整、一般的な画像分類の試作はMacで十分に実用的です。「10倍遅い」という言葉も、H100やRTX4090との比較では起こり得ますが、T4との比較では当てはまらないことがあります。開発・前処理・表データ・ローカルLLMはMacを主力にし、重い画像学習や巨大LLMの学習だけをクラウドのNVIDIA環境に任せます。この使い分けが、多くの企業にとって現実的な選択です。
参考リンク
- PyTorch公式 MPS環境変数ドキュメント
- Apple公式 tensorflow-metalページ
- MLX公式リポジトリ(Apple)
- FlashAttention公式リポジトリ
- RAPIDS公式インストールガイド
監修者
池田 智彦 | 株式会社Spovisor 代表取締役
NTTドコモ・KDDIで通信業界に21年従事し、グローバル/国内市場で10以上の新規事業の立ち上げと、1,000万ユーザー規模サービスの開発・運用を主導。事業戦略から海外展開、エンジニアリングまで横断する経験を活かし、2023年6月に株式会社Spovisorを設立。現在はAI・アプリ開発、生成AIコンサル、AI駆動開発支援、AI顧問など、企業のDXを実装まで伴走する支援に取り組む。
生成AI/AIエージェントを「成果」に変える、Spovisorの伴走支援
株式会社Spovisorは、生成AI・AIエージェントを「使ってみた」で終わらせず、業務やプロダクトに組み込んで成果を出すところまで伴走する実装パートナーです。
| 支援領域 | 内容 |
|---|---|
| 生成AI組み込みアプリ開発 | Claude/ChatGPT/AIエージェントを組み込んだ業務アプリや自社プロダクトの設計から実装まで支援 |
| 生成AI導入コンサル/AI顧問 | 経営課題や業務プロセスから導入ポイントを設計し、本番運用まで伴走 |
| AI駆動開発支援 | Claude Code/Codexを使った開発生産性向上を現場へ定着 |