M1 MacBook Pro导入TensorFlow时出现Symbol not found错误
问题根因
报错触发的核心原因是当前安装的tensorflow-metal GPU加速插件编译目标为macOS 12.3版本,如果你的设备系统版本低于12.3,系统自带的/usr/lib/libc++.1.dylib动态库缺少插件依赖的函数符号,就会在加载插件时抛出动态链接错误。
可行解决方案
方案1:升级系统到适配版本(推荐)
直接将macOS升级到12.3及以上正式版本,升级完成后重启终端、重启Jupyter内核,直接运行测试代码即可正常识别GPU,不需要修改现有conda环境内的任何包版本,兼容性最稳定。
方案2:降级TensorFlow相关包适配低版本系统
如果暂时没有升级系统的计划,可以卸载当前高版本的TensorFlow组件,安装适配低版本macOS的组合版本,操作步骤如下:
- 先卸载环境中已安装的TensorFlow相关包,避免版本冲突
python -m pip uninstall -y tensorflow-macos tensorflow-metal tensorflow-deps - 执行命令安装版本匹配的依赖包
# 安装对应版本的TensorFlow底层依赖 conda install -c apple tensorflow-deps==2.9.0 # 安装2.9.2版本的tensorflow-macos python -m pip install tensorflow-macos==2.9.2 # 安装0.5.0版本的tensorflow-metal,该版本最低支持macOS 12.0 python -m pip install tensorflow-metal==0.5.0 # 重新安装tensorflow-datasets python -m pip install tensorflow-datasets - 安装完成后重启Jupyter内核,重新运行测试代码验证即可。
方案3:临时回退到CPU运行模式
如果短时间内不需要使用GPU加速,可以直接删除或重命名路径下的libmetal_plugin.dylib文件,TensorFlow会自动跳过金属插件加载,回退到CPU模式正常运行,不会抛出导入错误。你当前环境下该文件的路径为:~/miniforge3/lib/python3.9/site-packages/tensorflow-plugins/libmetal_plugin.dylib
修复验证标准
修复完成后运行测试代码,正常输出会同时列出CPU和GPU设备,类似如下格式即代表安装正常:
TensorFlow has access to the following devices: [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')] TensorFlow version: 2.9.2
注意:安装TensorFlow相关依赖时,尽量固定使用conda安装底层依赖、pip安装TensorFlow主包和插件,不要混用两种包管理器安装同一个组件,否则容易出现隐性依赖冲突。
内容的提问来源于stack exchange,提问作者Arannya
相关产品推荐
相关产品推荐

