M1 Max芯片Mac导入torchrec模块触发OSError报错问题求助
问题根因
触发该报错的核心原因是默认pip源拉取的fbgemm_gpu(torchrec的强制依赖)预编译包为x86_64架构/Linux平台版本,并非适配Apple Silicon(M1 Max为arm64架构)macOS的Mach-O格式二进制,系统无法正常加载。只要安装时拉取的是错误架构的预编译包,哪怕新建虚拟环境重装也会重复触发相同报错。
报错原文参考:
OSError: dlopen(/opt/homebrew/Caskroom/miniforge/base/envs/dlrm_env2/lib/python3.10/site-packages/fbgemm_gpu/fbgemm_gpu_py.so, 0x0006): tried: '/opt/homebrew/Caskroom/miniforge/base/envs/dlrm_env2/lib/python3.10/site-packages/fbgemm_gpu/fbgemm_gpu_py.so' (not a mach-o file)
解决步骤
- 先清理现有环境中错误安装的相关包,执行以下命令:
pip uninstall -y torchrec fbgemm-gpu fbgemm-gpu-nightly
- 确认终端运行架构:终端执行
arch命令,输出结果必须为arm64。如果输出为i386,需关闭当前终端,在访达中找到终端应用,右键选择「显示简介」,取消勾选「使用Rosetta打开」,重启终端后重新进入对应虚拟环境。 - 按顺序安装适配arm64架构的依赖包:
- 先安装编译所需的基础依赖:
pip install numpy ninja pyre-extensions- 设置环境变量指定编译CPU版本的fbgemm_gpu,跳过CUDA相关逻辑,再执行安装。该步骤会从源码本地编译,耗时根据设备性能在5-15分钟不等,属于正常现象:
export FBGEMM_CPU_ONLY=1 pip install fbgemm-gpu --no-binary fbgemm-gpu- 最后安装CPU版本torchrec,同样跳过预编译二进制包,使用本地编译适配版本:
pip install torchrec --no-binary torchrec - 安装完成后进入Python交互环境,执行
import torchrec,无dlopen类报错即为安装成功。
注意事项
不要直接照搬PyTorch官方教程里的默认pip安装命令,也不要通过conda源直接安装torchrec,目前官方预编译包、conda源的torchrec相关包均未提供适配Apple Silicon arm64架构的版本,直接安装仍会触发架构不匹配报错。
内容的提问来源于stack exchange,提问作者Ibrahim
相关产品推荐
相关产品推荐

