MacBook 上安装 Tensorflow 支持 MPS GPU

MacBook 上安装测试 Tensorflow,Pytorch 对MPS GPU的支持

作者平时使用苹果的 MacBook M3 笔记本,在学习机器学习过程经常因为没有Nvidia显卡和CUDA环境导致效率低。MacBook M3 机器上带有强大的显卡 MPS (Metal Performance Shaders),并且 Tensorflow 和 Pytorch 都支持基于 MPS 的 GPU 计算。下面记录一下在MacOS环境中安装支持 MPS 的基本步骤。

Tensorflow 环境

1. 创建运行环境

为了保证各个项目之间的开发环境隔离,最好每个项目单独创建 python 得运行环境。我平时使用的是mini conda来管理 python 运行环境。

# 创建一个名为 tf_mps 的 python 运行环境,python 版本为3.10
% conda create -n tf_mps python=3.10

# 激活 tf_mps 环境
% conda activate tf_mps

2. 安装开发库

注意,安装默认的 tensorflow 开发库后,是不支持对 Metal GPU 的调用。必须还要安装 tensorflow-metal 库。

# 安装 tensorflow 开发库
% pip install tensorflow
# 安装 tensorflow 环境下对 Metal GPU 的支持库
% pip install tensorflow-metal

3. 测试是否支持GPU

安装完成后,测试一下对 Metal GPU 的支持是否启用。注意,如果是在 jupyter-lab 或是 VScode 的 jupyter-lab 环境中,安装完 tensorflow-metal 后,需要重启一下环境

然后编写如下 python 脚本测试,测试结果

import tensorflow as tf

# 打印 tensorflow的版本,需要大于V2.9版本才支持Metal GPU
print(tf.__version__)

# 打印当前机器上的物理计算设备
print(tf.config.list_physical_devices())

输入结果示例如下:

2.17.0
[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
 PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

可见当前 tensorflow 的版本是 2.17.0,计算设备包括一个 CPU 和 一个 GPU 单元。说明当前的 tensorflow 已经支持 Metal GPU 的计算。

Pytorch 环境

1. 安装

pytorch 的安装比较简单,创建3.8或更高的python环境。直接到 pytorch官网 选择Mac环境,然后复制安装命令执行即可。

pip3 install torch torchvision torchaudio
2. 测试

写段代码简单测试一下是否支持mps

import torch
if torch.backends.mps.is_available():
    mps_device = torch.device("mps")
    x = torch.ones(1, device=mps_device)
    print (x)
else:
    print ("MPS device not found.")
<think>好的,用户问的是为什么他的MacBook M3 Pro在训练大模型时,活动监视器显示GPU使用率为0%,而CPU使用率却达到了500%。我需要分步骤分析这个问题。 首先,我得确认用户是否正确地配置了深度学习框架来使用M3 Pro的GPU。因为如果框架没有正确配置,可能无法调用GPU,导致计算任务全由CPU处理。比如,PyTorch需要安装特定版本的ML Compute后端才能在macOS上使用GPU加速。用户可能没有安装对应的版本,或者环境变量没有设置正确,导致框架默认使用CPU。 接下来,要检查代码中是否有显式指定使用GPU的语句。例如,在PyTorch中需要将模型和数据移动到`mps`设备,TensorFlow可能需要特定的配置。如果代码中没有这样的设置,框架可能默认使用CPU,即使用户的硬件支持GPU。这时候用户可能需要检查代码中是否有类似`model.to('mps')`的语句,或者是否有正确导入相关库。 然后,考虑兼容性问题。Apple的M系列芯片使用Metal Performance Shaders(MPS)作为GPU加速后端,但并非所有深度学习框架或操作都完全支持MPS。可能存在某些层或操作只能在CPU上运行,尤其是自定义的或者较新的层。这可能导致GPU使用率低,而CPU负担加重。此外,如果框架的版本过旧,可能还没有适配M3 Pro的GPU架构,这时候需要更新到最新版本。 资源争用也是一个可能性。如果模型或数据预处理部分大量使用CPU,而GPU仅负责部分计算,这时候CPU的负载可能更高。例如,数据加载、预处理、后处理等环节如果没有异步加载或优化,可能占用大量CPU资源,导致GPU等待数据,从而利用率低下。 另外,活动监视器的监控机制可能需要考虑。macOS的活动监视器可能对M系列芯片的GPU使用率统计不够准确,或者显示的是显存使用而非计算负载。用户可能需要使用专门的工具,比如Xcode的Instruments,来更准确地监测GPU的实际使用情况。 还有,模型的大小和类型是否适合GPU处理。如果模型过小,或者计算量不足以让GPU满载,而CPU并行处理多个线程(比如500%意味着5个核心满载),这时候可能CPU更高效。或者模型中有大量串行计算,无法充分利用GPU的并行能力,导致CPU成为瓶颈。 最后,需要用户提供更多信息来进一步诊断,比如使用的框架、代码片段、模型结构等。建议用户检查框架文档,确保正确配置GPU支持,更新到最新版本,使用性能分析工具定位瓶颈,并优化数据预处理流程以减少CPU负担。</think>好的,我来逐步解释这一现象的可能原因和解决方案: 1. **框架适配性问题** - M系列芯片的GPU加速依赖Apple的Metal Performance Shaders (MPS) - 当前主流框架(TensorFlow/PyTorch)需要特定配置才能启用GPU加速: ```python # PyTorch示例代码(必须显式指定设备) import torch device = torch.device("mps") # 明确声明使用Apple GPU model = YourModel().to(device) # 模型必须迁移到MPS设备 ``` 2. **CPU占用500%的本质** - 500%表示5个CPU核心满载(100%*5核) - 常见于: - 数据预处理未优化(未使用多进程加载) - 模型包含大量CPU-only操作(如特殊正则化层) - 框架自动并行化CPU计算 3. **GPU 0%的潜在原因** - **未正确配置后端**:需安装特定版本框架 ```bash # PyTorch安装要求 pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu ``` - **操作不兼容MPS**:某些自定义CUDA核函数无法转换 - **显存限制**:大模型参数超出36GB统一内存时会触发CPU交换 4. **诊断步骤** - 验证GPU是否被识别: ```python import torch print(torch.backends.mps.is_available()) # 应返回True ``` - 监控Metal API调用: 使用终端命令: ```bash sudo xctrace record --template 'Metal System Trace' --output ./gputrace.trace ``` 5. **性能优化建议** - 启用混合精度训练: ```python torch.set_float32_matmul_precision('high') # 自动使用低精度计算 ``` - 调整数据加载: ```python DataLoader(..., num_workers=4, prefetch_factor=2) # 减少CPU阻塞 ``` - 使用Core ML优化工具: ```bash python -m coremltools.optimize.torch.pruning.magnitude_prune ``` 6. **硬件特性限制** - M3 Pro的GPU本质是集成显卡,存在: - 最大线程数限制(典型值:~25,000线程) - 缺乏专用Tensor核心 - 显存带宽限制(200GB/s vs NVIDIA 3090的936GB/s) **建议行动方案**: 1. 先运行官方MPS示例验证环境 2. 使用Instruments工具分析GPU实际利用率 3. 对模型进行Apple Neural Engine(ANE)适配 4. 考虑量化压缩模型至16位浮点 这种情况通常需要软硬件协同优化,建议参考Apple官方MLX框架(专为Apple Silicon设计)获得最佳性能: ```bash pip install mlx ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值