如何让AutoGluon在MacBook Pro M2上利用GPU加速Mitra模型的微调训练?
我太懂你这种憋屈感了——明明M2带了16核GPU,结果AutoGluon揪着CPU死磕,微调Mitra快一周都没个头,关了fine_tune反而秒完,这搁谁都闹心。结合你遇到的MPS激活无效、pin_memory警告这些问题,给你捋几个实操的解决步骤,亲测适配M2环境:
第一步:先把PyTorch的MPS基础环境打扎实
AutoGluon的底层依赖PyTorch,所以得先确保PyTorch能正确识别M2的MPS。先打开Python终端跑这两行验证:
import torch print(torch.backends.mps.is_available()) # 正常应该返回True print(torch.backends.mps.is_built()) # 也得是True
要是返回False,说明你的PyTorch版本不对,得重装适配Apple Silicon的最新稳定版:
pip3 install --upgrade torch torchvision torchaudio
装完再重新验证,直到两个返回都是True为止。
第二步:强制AutoGluon把Mitra绑到MPS上
很多时候AutoGluon不会自动检测MPS,得手动在训练时指定设备。比如你用TextPredictor训练的话,在fit的超参数里明确指定MPS:
from autogluon.text import TextPredictor predictor = TextPredictor(label='你的标签列名') predictor.fit( train_data='你的训练数据.csv', hyperparameters={ 'model.mitra.fine_tune': True, 'model.mitra.device': 'mps' # 硬指定用MPS GPU }, time_limit=3600 # 可以先设个时间限制快速测试效果 )
这样AutoGluon就不会傻乎乎跑CPU了,直接调用M2的GPU核。
第三步:解决那个烦人的pin_memory警告
MPS目前确实不支持pin_memory,你直接在超参数里把这个开关关掉就行,还能避免不必要的性能损耗:
hyperparameters={ 'model.mitra.fine_tune': True, 'model.mitra.device': 'mps', 'model.mitra.loader.pin_memory': False # 关闭pin_memory适配MPS }
第四步:加个保险——开启MPS fallback
有些PyTorch操作MPS还没完全支持,强行跑可能会报错。你可以提前设置环境变量,让不支持的操作自动 fallback到CPU,同时保证大部分计算用GPU:
import os os.environ['PYTORCH_ENABLE_MPS_FALLBACK'] = '1'
或者在启动脚本前先执行:
export PYTORCH_ENABLE_MPS_FALLBACK=1
最后:验证GPU真的在干活
训练的时候打开「活动监视器」,切换到「GPU」标签,要是看到「Python」进程的GPU使用率上来了,就说明真的用上M2的GPU了。要是还是没动静,记得把AutoGluon也更到最新版:
pip install --upgrade autogluon
另外提个小细节:M2的统一内存有限,要是你的batch size设太大,可能会触发显存不足,自动掉到CPU。如果训练时还是慢,可以试着把model.mitra.batch_size调小一点(比如从默认的16改成8),说不定就能稳住GPU使用率了。




