我正在使用配备M1处理器的MacBook Pro,macOS版本11.0.1,PyCharm中的Python 3.8,Tensorflow版本2.4.0rc4(也尝试了2.3.0,2.3.1,2.4.0rc0)。我正在尝试运行以下代码:
import tensorflow
这将导致错误消息:
Process finished with exit code 132 (interrupted by signal 4: SIGILL)
代码在我的Windows和Linux机器上运行正常。错误消息是什么意思,我如何修复它?
6条答案
按热度按时间tv6aics11#
当你安装了多个python解释器时,似乎会发生这个问题,其中一些是针对不同的架构(x86_64 vs arm 64)。你需要确保使用正确的python解释器,如果你安装了苹果版本的tensorflow,那么可能需要一个arm 64解释器。
如果你使用rosetta(苹果的x86_64模拟器),那么你需要使用x86_64 Python解释器,如果你以某种方式加载arm 64 Python解释器,你会得到非法指令错误(这完全有道理)。
如果你使用任何安装新python解释器的脚本,那么你需要确保安装了正确的架构解释器(最有可能是arm 64)。
总的来说,我认为这个问题的发生是因为python环境设置不是为可以运行多个指令集/架构的系统而设计的,
pip
确实检查了包和主机系统的架构,但似乎你可以运行x86_64解释器来加载一个为arm 64设计的包,这就产生了这个问题。作为参考,在
tensorflow_macos
中有一个issue,人们可以检查。bxfogqkk2#
安装Tensorflow 1.15版为我解决了这个问题。
bttbmeg03#
对于M1 Mac,来自Apple开发人员page的以下工作:
首先,从here下载Conda Env,然后按照以下说明操作(假设脚本下载到~/Downloads文件夹)
重新加载shell并执行
如果由于某种原因上述方法不起作用,Apple开发人员page提供了一些边缘情况和其他信息
klr1opcd4#
我已经能够通过使用Miniforge而不是Anaconda作为Python环境来解决这个问题。Anaconda还不支持arm64架构。
t5fffqht5#
在我的例子中,错误是
把我的答案放在这里,因为上面提到的错误("zsh: illegal hardware instruction python" when installing Tensorflow on macbook pro M1)的问题被标记为这篇文章的重复。
所以,在我的例子中,安装
tensorflow-macos
和tensorflow-metal
是解决方案。现在,它们可以通过pip
安装。但是运行pip install tensorflow-macos
给了我以下错误所以,根据苹果论坛上的帖子,我不得不做以下事情
jv2fixgn6#
这是因为M1芯片。现在有一个预发布版本,为macOS 11.0+提供硬件加速的TensorFlow和TensorFlow Addons。通过Apple的ML Compute框架,M1 Mac和基于Intel的Mac支持原生硬件加速。
您需要安装支持M1芯片的TensorFlow只需拉取此tensorflow macos存储库并运行
./scripts/download_and_install.sh