为什么在Mac上加载tensorflow会导致“进程已完成,退出代码132(被信号4中断:SIGILL)”?

问题描述 投票:0回答:7

我使用的是配备 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 机器上运行良好。 错误消息是什么意思以及如何修复它?

python-3.x macos tensorflow
7个回答
6
投票

似乎当您安装了多个Python解释器时就会出现此问题,并且其中一些解释器适用于不同的架构师(x86_64与arm64)。您需要确保使用正确的Python解释器,如果您安装了Apple版本的tensorflow,那么可能需要arm64解释器。

如果你使用rosetta(苹果的x86_64模拟器)那么你需要使用x86_64 python解释器,如果你以某种方式加载arm64 python解释器,你将得到非法指令错误(这是完全有道理的)。

如果您使用任何安装新 python 解释器的脚本,那么您需要确保安装了适用于该架构的正确解释器(最有可能是arm64)。

总的来说,我认为发生这个问题是因为 python 环境设置不是为可以运行多个指令集/架构的系统而设计的,

pip
确实检查了包和主机系统的架构,但似乎你可以运行 x86_64 解释器来加载适用于arm64的软件包,这会产生问题。

供参考,tensorflow_macos中有一个

问题
,人们可以检查。


6
投票

对于 M1 Mac,来自 Apple 开发者页面,以下方法有效:

首先,从此处下载 Conda Env,然后按照以下说明进行操作(假设脚本已下载到 ~/Downloads 文件夹)

chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh
sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate

重新加载外壳并执行

python -m pip uninstall tensorflow-macos
python -m pip uninstall tensorflow-metal

conda install -c apple tensorflow-deps

python -m pip install tensorflow-macos
python -m pip install tensorflow-metal

如果上述方法由于某种原因不起作用,Apple 开发者页面

提供了一些边缘情况和其他信息

5
投票

就我而言,错误是

zsh: illegal hardware instruction  python

将我的答案放在这里,因为提到的错误(“zsh:非法硬件指令python”在macbook pro M1上安装Tensorflow时)的问题被标记为与本文重复。

因此,就我而言,安装

tensorflow-macos
tensorflow-metal
就是解决方案。现在,它们可以通过
pip
安装。但跑步
pip install tensorflow-macos
给了我以下错误

ERROR: Could not find a version that satisfies the requirement tensorflow-macos (from versions: none) 
ERROR: No matching distribution found for tensorflow-macos

所以,按照苹果论坛这里上的帖子,我必须执行以下操作

SYSTEM_VERSION_COMPAT=0 pip install tensorflow-macos tensorflow-metal

3
投票

安装 Tensorflow 版本 1.15 为我解决了这个问题。

$ conda install tensorflow==1.15

1
投票

我已经能够通过使用 Miniforge 而不是 Anaconda 作为 Python 环境来解决这个问题。 Anaconda 尚不支持arm64架构。


0
投票

这是因为M1芯片。现在有一个预发布版本,可为 macOS 11.0+ 提供硬件加速的 TensorFlow 和 TensorFlow Addons。 M1 Mac 和基于 Intel 的 Mac 通过 Apple 的 ML 计算框架支持本机硬件加速。

您需要安装支持M1芯片的TensorFlow只需拉取这个tensorflow macos存储库并运行

./scripts/download_and_install.sh


0
投票

正如其他人所说,对于M1/M2芯片,您必须将TenserFlow安装在右拱门下。

对于 Conda 用户,您可以这样做:

  1. conda activate myenv
  2. pip uninstall tenserflow
  3. conda config --env --add channels conda-forge
  4. conda config --env --set channel_priority strict
  5. conda install tensorflow
© www.soinside.com 2019 - 2024. All rights reserved.