M1芯片MacBook Pro安装GPU支持版MXNet遇报错求指引
M1芯片MacBook Pro安装GPU加速版MXNet操作指引
你遇到的两类报错核心原因很明确:
- PyPI官方源推送的mxnet 1.6.0是x86架构编译版本,没有适配Apple Silicon M1芯片,既没法正常调用M1的GPU算力,还会因为架构不兼容出现运行崩溃,你第一次跑im2rec生成列表时的报错就是这个问题导致的
- 直接克隆MXNet源码到工作目录后,Python会优先导入没经过编译的源码目录,这个目录缺了大量C++扩展绑定的功能模块,就会触发如下报错:
AttributeError: module 'mxnet' has no attribute 'recordio'
按照以下步骤操作就能装好可用的版本:
- 第一步:彻底清理残留环境
激活你用的miniforge虚拟环境,先执行命令卸载所有残留的MXNet安装包:pip uninstall -y mxnet mxnet-cu*
之后手动进虚拟环境的site-packages目录,删掉所有名字带mxnet的文件夹和.dist-info文件;同时把你跑im2rec脚本的工作目录里之前克隆的MXNet源码文件夹彻底删干净,别留残留,不然Python导包的时候优先读本地的残缺源码,就算装对了版本也会报错。 - 第二步:安装适配arm64架构的基础依赖
优先用conda装依赖,避免pip拉到x86版本的包出现兼容问题:conda install -c conda-forge numpy openblas cmake llvm openmp opencv-python
注意Python版本选3.8或者3.9就行,MXNet对3.10及以上版本适配很差,容易出莫名其妙的编译错误。 - 第三步:安装支持M1 GPU加速的MXNet版本
别直接跑pip install mxnet装官方源的版本,那个没做M1适配,执行下面的命令装社区维护的适配Apple Metal加速的稳定版:pip install mxnet-osx-arm64==1.9.0 - 第四步:验证安装是否正常
在当前环境打开Python解释器,逐行跑下面的代码做校验:
正常情况下会依次输出import mxnet as mx # 打印版本号确认安装来源正确 print(mx.__version__) # 检查recordio模块是否存在 print(hasattr(mx, 'recordio')) # 检查GPU识别状态,返回值大于0就代表GPU加速可用 print(mx.context.num_gpus())1.9.0、True、1,说明所有功能都正常。 - 第五步:运行数据集制作脚本
验证通过后,你之前用的im2rec脚本不需要改任何内容,直接跑原来的命令就行:- 按9:1比例拆分训练/验证集生成列表文件:
python im2rec.py --list --recursive --train-ratio 0.9 dogscats . - 开8线程打包生成rec格式数据集:
python im2rec.py --num-thread 8 dogscats .
- 按9:1比例拆分训练/验证集生成列表文件:
- 提醒:之后跑MXNet相关脚本的时候,别把MXNet源码文件夹放到脚本的工作目录下,不然Python会优先导入没编译的源码,再次触发模块缺失的报错。
内容的提问来源于stack exchange,提问作者Hina
相关产品推荐
相关产品推荐

