需先验证macOS≥12.3、Metal支持YES、架构为arm64;再创建Python 3.11 Conda环境;接着按序安装tensorflow-macos==2.18.0和tensorflow-metal==1.1.0;最后在代码中调用tf.config.set_visible_devices([], 'GPU')并检查list_physical_devices('GPU')确认启用。

确认系统与硬件是否支持MPS加速
如果你在M1/M2 Mac上运行TensorFlow训练任务时发现GPU设备始终为空、训练速度毫无提升,大概率是底层环境未通过Metal Performance Shaders(MPS)正确启用芯片内置GPU。第一步必须验证基础条件是否满足。
打开终端,依次执行以下三条命令:
sw_vers -productVersion → 确保输出为【12.3或更高版本】,低于此版本的macOS无法加载MPS后端;
system_profiler SPDisplaysDataType | grep -i metal → 输出中必须包含“Metal Support: YES”,否则显卡驱动层未就绪;
uname -m → 返回结果必须是【arm64】,若显示x86_64说明当前终端正运行在Rosetta 2转译模式下,所有后续安装都将失效。
创建专用Conda环境并安装核心组件
不要复用已有base环境或全局Python,M1/M2上TensorFlow-macos与tensorflow-metal对Python版本极其敏感,3.12尚不稳定,3.9又缺部分API,实测【Python 3.11是当前最稳妥的选择】。
方法一:使用Mambaforge(推荐)
brew install mambaforge → mamba init zsh → 关闭并重开终端 → mamba create -n tf218 python=3.11 → mamba activate tf218;
方法二:使用Miniforge(轻量备选)
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh → bash Miniconda3-latest-MacOSX-arm64.sh → 激活新环境后运行conda activate base → conda create -n tf218 python=3.11。
注意:环境创建后务必执行conda activate tf218,确保后续所有pip操作都在该隔离环境中进行。
安装tensorflow-macos与tensorflow-metal插件
TensorFlow-macos本身不带GPU能力,它只是一个适配Apple Silicon的CPU版框架;真正的GPU加速由独立插件tensorflow-metal提供,二者版本必须严格匹配,错配会导致tf.config.list_physical_devices('GPU')返回空列表。
第一步:安装主框架
pip install tensorflow-macos==2.18.0
第二步:立即安装配套插件
pip install tensorflow-metal==1.1.0
⚠️关键提醒:必须先装tensorflow-macos,再装tensorflow-metal,顺序颠倒会导致插件注册失败,且重装时需先pip uninstall tensorflow-metal tensorflow-macos再按序重来。
在代码中启用GPU并验证设备识别
环境装完不代表GPU自动生效——TensorFlow不会像PyTorch那样默认探测MPS,你必须在模型构建前显式启用Metal后端。
① 在Python脚本开头加入强制设备配置:
import tensorflow as tf
tf.config.set_visible_devices([], 'GPU') # 清除可能残留的无效GPU句柄
② 加载模型前插入设备检查逻辑:
gpus = tf.config.list_physical_devices('GPU')
if gpus:
print("✅ GPU已识别:", gpus[0])
# 可选:限制内存增长避免OOM
try:
tf.config.experimental.set_memory_growth(gpus[0], True)
except RuntimeError as e:
print(e)
③ 运行训练时观察日志:若看到类似“Metal device initialized”或“Using Metal for GPU computation”的提示,说明加速链路已贯通。

















