我尝试在我的MacBook Pro上使用Tensorflow和M1 Pro芯片。我读了很多文章,看了很多视频,但我无法让它工作。我最近的尝试是使用下面的conda env,代码只是在python文件中导入Tensorflow并运行它。
这是错误消息:
2022-12-28 19:14:01.671088: F tensorflow/c/experimental/stream_executor/stream_executor.cc:808] Non-OK-status: stream_executor::MultiPlatformManager::RegisterPlatform( std::move(cplatform)) status: INTERNAL: platform is already registered with name: "METAL"
[1] 1296 abort /opt/homebrew/bin/python
这是我用来创建env的文件:
name: tf-metal
channels:
- apple
- conda-forge
dependencies:
- python=3.10
- pip
- jupyter
- tensorflow-deps
- pandas
- pandas-datareader
- scikit-learn
- scipy
- ipykernel
## PyPI packages
- pip:
- tensorflow-macos
- tensorflow-metal
我也试过用jupyter notebook运行它,但是我的内核一直崩溃。
我的感觉是有些人可以让它在m1上工作,而有些人不能......就像我一样:(
1条答案
按热度按时间yyyllmsg1#
我有一个类似的问题很长一段时间了,也有很多问题得到教程中提出的解决方案等为我工作。我认为是什么问题(虽然我不能完全肯定这一点)是一些必需的包的现有版本或缓存版本,即使在我尝试重新安装正确的包后,这些包仍然存在。我不能使用M1芯片使用的arm64架构,它是特定于应用程序的,所以你的麻木安装会很好,但是它会导致tensorflow的问题(还有一些其他的gpu应用程序,我见过其他人在努力)
我可以通过使用conda channels来强制它在搜索依赖项时只在特定的通道中查找(因此只在我们漂亮的新arm64架构兼容包中查找),而不是查找现有安装和旧安装来解决这个问题。
我没有从文件创建环境,而是使用以下命令
如果有一种方法可以直接在环境文件中实现这一点,我对此并不熟悉,但是有一些非常简单的变通方法可以达到同样的效果。在我看来,最简单的方法是为所有相关的包指定通道,如下所示
我做了一些测试,这也使我能够成功地安装它,虽然它花了大约一分半钟来运行。下面是我使用的测试文件:
希望这有帮助:)