torch.backends.mps.is_available()がFalseになる、またはモデルをMPSへ移した直後にエラーが出る場合は、まずビルド対応と実行可能状態を分けて調べてください。今週は、Python環境とMacの情報を保存し、エラーを再現する最小サンプルで「端末・演算子・データ型」を切り分けるのが先です。 PyTorch 2.14のApple Silicon向け改良は、すべての研究コードや演算子がそのまま動く保証ではありません。公式のPyTorch 2.14リリースノートも確認し、代表的な研究タスクと結果の照合を終えてから移行を判断してください。

対象は、MPSの検出に失敗した理由をインストールの問題かMac側の条件か判断できない研究者、学生、研究室の環境担当者です。
すでに動いている処理の速度比較や、Macの購入相談ではなく、MPSの故障箇所を再現可能な証拠で特定したい人向けです。

最終確認日:2026年10月23日。情報はPyTorch 2.14のリリース資料と公式MPSバックエンド文書を基に確認しています。PyTorchの更新やMPSの対応状況が変更された場合は、作業前に最新版の公式資料も確認してください。

「ビルド済み」と「実行可能」を分けて確認する

MPSを調べるときは、is_built()とis_available()を同じ意味に扱わないことが出発点です。前者は、現在読み込んでいるPyTorchにMPSサポートが含まれるかを示します。後者は、その環境でMPSを利用できるかを確認するものです。詳細はPyTorchのMPSバックエンド文書に記載されています。

次の情報を、エラーが起きた実行環境でまとめて取得します。

import platform
import sys
import torch

print("python:", sys.executable)
print("python_version:", sys.version)
print("machine:", platform.machine())
print("macOS:", platform.mac_ver())
print("torch:", torch.__version__)
print("mps_built:", torch.backends.mps.is_built())
print("mps_available:", torch.backends.mps.is_available())

mps_builtがTrueでもmps_availableがFalseなら、PyTorchのビルドにMPSが含まれていることだけでは、現在の端末で使えるとは判断できません。実行中のPython、Macの機種、macOSの状態を合わせて記録してください。条件は更新されることがあるため、固定のバージョン組み合わせを決め打ちせず、公式インストール選択ページで現在の案内を確認します。

観察した状態 まず確認するもの 次に行うこと
is_built()がFalse 読み込んだPyTorchとPython環境 実行中の環境に適した公式インストール案内を確認
is_built()がTrue、is_available()がFalse 実行端末、macOS、Pythonの実行ファイル 同じ環境で情報を再取得し、公式MPS文書の条件を照合
is_available()がTrueだが処理で失敗 テンソルの移動、演算子、データ型 最小サンプルでエラー箇所を切り分け
実行は完了するが処理経路が不明 モデルとテンソルのdevice、fallback設定 MPS実行とCPU実行を分けて記録し、結果を照合

インストールエラーと環境の取り違えを切り分ける

同じMacでも、ターミナル、ノートブック、IDEから起動するPythonが異なれば、読み込まれるPyTorchも変わることがあります。ターミナルではMPSが使えるのにノートブックでは使えない場合、最初に疑うのはMac全体の故障ではなく、カーネルや仮想環境の違いです。

再インストールの前に記録する項目

次の順で確認すると、動いている環境を不用意に壊さずに済みます。

  1. エラーが発生したターミナルまたはノートブックで、上記の環境情報を出力します。
  2. sys.executableを見て、想定しているPythonが実際に使われているか確認します。
  3. ターミナルとノートブックの両方で同じ情報を出し、PythonとPyTorchの読み込み先を照合します。
  4. torch.__version__を記録し、PyTorchの公式リリース記録で対象ビルドの公開状況を確認します。
  5. 必要な場合に限り、インストール選択ページの案内に従って環境を整え、再起動後に同じ確認コードを実行します。

インポート自体が失敗するケースと、インポート後にMPSが利用できないケースは別問題です。エラーメッセージ、起動方法、Pythonの実行ファイルを一緒に保存すれば、環境を作り直した後も発生条件を比較できます。パッケージを入れ直す前に、現在の環境情報を記録しておくのが安全です。

MPSへ移せないエラーと演算子・データ型の制約を分ける

モデルやテンソルをMPSへ移す段階のエラーは、未対応演算子が実行中に失敗するケースとは区別してください。まず、モデルと入力テンソルの両方が意図したdeviceにあるか確認します。その後、失敗する処理を切り出して、どの演算で止まるのか調べます。

device = torch.device("mps")
model = model.to(device)
inputs = inputs.to(device)

print("model device:", next(model.parameters()).device)
print("input device:", inputs.device)

これはモデルにパラメーターがある場合の簡易確認です。パラメーターを持たないモデルや複数のdeviceを使う処理では、対象のテンソルや各処理段階を個別に確認してください。

また、PyTorchのMPS文書にあるデータ型の説明も確認し、float64など、対象となるデータ型がMPSで扱えるか調べます。MPSの環境変数に関する公式説明には、未対応演算子をCPUへfallbackさせる設定が案内されています。これは該当する演算の処理先を変える手段であり、未対応のデータ型をMPSで扱えるようにするものでも、すべてのエラーを解消するものでもありません。

CPU fallbackが有効でも、処理の一部がCPUへ移っているなら「すべての計算がMPS上で動いた」とは言えません。実行の完了と、GPU利用の確認は別々に記録してください。

小さな再現コードから研究用の結果検証へ進む

次のチェックリストを使い、広い環境変更に進む前に証拠を揃えます。

  • [ ] エラーが発生したPythonの実行ファイル、PyTorchのバージョン、MacとmacOSの情報を保存した。
  • [ ] is_built()とis_available()の出力を別々に記録した。
  • [ ] ターミナルとノートブックで異なるPython環境を使っていないか照合した。
  • [ ] 失敗する演算を含む最小サンプルを作り、モデル移動、データ型、演算子のどこで止まるか確認した。
  • [ ] fallbackを使う場合、CPUへ処理が移る可能性を記録し、MPSでの実行と同一視していない。
  • [ ] 研究用入力と前処理を揃え、CPUとの出力差を研究上の許容条件に照らして確認した。
  • [ ] 乱数や実行条件も保存し、再実行時に比較できるようにした。

小さなサンプルが通ったら、次に対象プロジェクトの代表的なデータと処理を使って確認します。出力の完全一致を前提にせず、研究で重要な数値、評価指標、後続の解析結果をCPUと比較してください。許容差は一律の値で決めず、用途や論文・実験計画で必要な精度に基づいて設定します。PyTorch 2.14の再現性に関する説明も参考にし、実行条件と乱数に関する記録を残してください。

MPS・CPU・HPCのどこで続けるか判断する

Apple Silicon MacでMPSが使える状態でも、すべての研究処理を移す必要はありません。短い検証やMac固有の動作確認はMPSを試し、未対応処理が研究結果に影響する場合は、CPUまたは研究室のHPCへ切り替えるのが現実的です。

選択肢 向いている状況 判断上の注意
MPSを継続 対象処理が通り、代表的な出力が研究要件を満たす fallbackの有無と実際のdeviceを記録
CPUで暫定実行 小規模な検証や、MPS固有の問題を切り分けたい 研究用の本計算に適するかは別途確認
HPCへ切り替え 研究室で検証済みの計算環境があり、対象処理に適合する macOS固有の挙動検証は別のMac環境で行う
移行を保留 数値差や処理経路を説明できず、研究結果を確認できない 既存の再現可能な環境を維持して原因調査を続ける

MPSでエラーが続く場合でも、環境を一括して更新する必要はありません。先に最小サンプルで原因を分け、問題が演算子の対応状況や研究上の精度要件に関わるなら、HPCや既存CPU環境で検証を続けます。Mac固有の動作確認が目的なら、計算の本体をHPCに残して、Mac側では必要な確認だけ行う分担も選択肢です。

よくある質問

PyTorch 2.14を入れたのにMPSを検出できない場合はありますか?

あります。インストールしたバージョン名だけでは、実行中のPythonがその環境を読み込んでいるか、端末の条件が満たされているかは分かりません。まずsys.executable、torch.__version__、is_built()、is_available()を同じ実行環境で出し、ビルド対応と利用可能状態を分けて調べてください。

is_built()がTrueでis_available()がFalseなら何を見ますか?

その状態は、PyTorchにMPSサポートが含まれることと、現在の実行環境でMPSを使えることが同じではないと示しています。Macの機種とmacOS、Pythonの実行環境を記録し、ターミナルとノートブックで差がないか確認してください。条件や手順は公式MPS文書の最新情報と照合します。

未対応のMPS演算子はCPU fallbackで処理できますか?

公式に案内されたfallback設定で、未対応演算子をCPUへ回せる場合があります。ただし、対象の演算がCPUに移ればMPSで計算したことにはなりません。fallbackはデータ型の制約や、あらゆる実行エラーを解決する設定ではないため、エラーの種類と処理先を個別に確認します。

MPSとCPUの研究結果をどう比較すればよいですか?

入力、前処理、モデル設定、乱数条件を揃え、研究上重要な出力や評価指標を照合します。浮動小数点演算の違いを考慮し、許容範囲は研究目的に沿って決めてください。実行できたことだけでは妥当性を確認できないため、再現条件と結果をセットで保存します。

MPSの切り分けを続ける間、研究の本計算をCPUやHPCで維持する方法もあります。ただし、CPUでは対象タスクの実行条件が限られることがあり、HPCではmacOS固有の確認ができず、研究室の共有環境では依存関係の変更調整が必要になることもあります。Mac固有の検証環境が一時的に必要なら、まず脱識別済みのサンプルで条件を確かめてください。手元にMacがない場合は、VMSPINのリモートMac利用案内で利用条件を確認し、料金とプランを必要な検証期間と照らし合わせて判断できます。長期の常時利用や物理接続が必要な研究では、購入や研究室設備の利用が適する場合もあります。