我已经在Mac Mini 2020 M1上使用pip
安装了Tensorflow和Metal插件,
$ pip3 install tensorflow-macos tensorflow-metal
$ pip3 uninstall numpy # related to https://stackoverflow.com/q/66060487/2395656
$ pip3 install numpy==1.20.3
然后我尝试列出设备来查看Mac GPU,
import tensorflow
d = tensorflow.config.list_physical_devices()
print(d)
它会产生错误,
Init Plugin
Init Graph Optimizer
Init Kernel
Init Plugin
2021-06-10 02:20:21.128021: F tensorflow/c/experimental/stream_executor/stream_executor.cc:823] Non-OK-status: stream_executor::MultiPlatformManager::RegisterPlatform( std::move(cplatform)) status: Internal: platform is already registered with name: "METAL"
我认为Metal插件试图多次注册自己。
请帮帮忙,谢谢!
5条答案
按热度按时间v1uwarro1#
在我的MacBook Air M1上,Monterey 12.3和brew安装的Python python@3.8和python@3.9在它们的标准位置/opt/homebrew,以及Xcode 13.3在其标准位置,在寻找 * 小时 * 之后,我终于注意到以下内容并有了这个理论:
首先,我不喜欢使用conda或miniconda等。(我似乎唯一缺乏的非python依赖是hdf 5)。此外,我确认通过tensorflow支持创建上面提到的venv工作正常。但是如果我 * 只是 * 想在系统位置pip安装tensorflow-macos和tensorflow-metal,用于酿造Python:
如果在最后一个阶段,插件 tensorflow-metal 安装了:
在brew系统默认目录下使用/opt/homebrew/bin/python3中的brew-ed python@3.9:/opt/homebrew/lib/python3.9/site-packages/tensorflow-plugins
然后我得到关于金属插件已经注册的错误。
但是,如果我在我的用户目录中安装库,而不是~/Library/Python/3.9/lib/python/site-packages通过
那就一切正常了注意,这仅涉及插件,即TensorFlow-MacOS包仍然可以在BREW系统位置。
我注意到了这一切,因为从过去的Xcode Python(3.8)使用中,我有一个用户包目录(Python库)在~/Library/Python/3.8/lib/Python/site-packages(只有在使用系统Python时才能添加包),并且因为它存在,酝酿的python@3.8在没有我提供--user to pip的情况下安装了所有东西。
所以我把头撞到墙上,为什么酿造python@3.8工作,而python@3.9不工作。我通过pip卸载从python@3.9系统目录中清除了所有的包,甚至清除了整个系统的site-packages目录,并且仍然使用两个简单的pip步骤进行了干净的安装,它一直失败。这是因为3.9没有用户包目录,所有内容都返回到brew系统目录。
我很确信这不是一个情况下,一些配置或包混合冲突之间的各种Python,因为我一直非常小心,以清洁一切之前,我重现。此外,将python@3.8下的tensorflow-metal的安装从我的用户包目录移动到brew系统目录,会重现以前在python@3.8下工作的错误。
长话短说:tensorflow插件初始化有一个bug,当tensorflow-metal插件安装在/opt/homebrew下时会触发,导致其注册被调用两次。当安装在本地--用户目录中时,可以避免这种情况。
我已经浪费了足够多的时间来做这个工作,我对我的理论很满意,所以现在将进一步研究它。我只是想我可能会为其他人提供一些线索,以防他们遇到这个。
yruzcnhs2#
经过一番努力,我已经解决了这个问题。
我相信Tensorflow现在可以同时使用CPU和GPU。
vddsk6oq3#
请在创建虚拟环境后尝试相同操作。
参考-https://developer.apple.com/forums/thread/684889
91zkwejq4#
我遇到的Apple M1错误是:
Tensorflow测试脚本
lsmd5eda5#
我采取了更直接的方法。问题是tensorflow-plugins使用site_packages,它可以有重复的符号链接。所以我替换了
tensorflow/__init__.py
的第419行:由