当我尝试在Apple M1上安装TensorFlow时,我遇到了4个问题:
1.但是我在谷歌上搜索的大多数文章都是关于使用Miniforge的,所以我觉得它们都有点过时了。
- How To Install TensorFlow on M1 Mac (The Easy Way)
- AI - Apple Silicon Mac M1 natively supports TensorFlow 2.8 GPU acceleration
- How to Setup TensorFlow on Apple M1 Pro and M1 Max (works for M1 too)
- How To Install TensorFlow 2.7 on MacBook Pro M1 Pro With Ease
1.我使用最新的conda 4.13成功地设置了我的python环境(3.8,3.9和3.10),但是当我尝试安装tensorflow时,我得到了错误“没有为tensorflow找到匹配的发行版”(全部失败)。
ERROR: Could not find a version that satisfies the requirement tensorflow (from versions: none)
ERROR: No matching distribution found for tensorflow
Could not find a version that satisfies the requirement tensorflow中的答案没有帮助。我在https://www.tensorflow.org/上也找不到有用的信息,实际上https://www.tensorflow.org/install只是说pip install tensorflow
。
1.我试着运行pip install tensorflow-macos
,它成功了。我从上面的“也适用于M1”文章中读到了“Apple的TensorFlow分支称为tensorflow-macos”,尽管我找不到太多关于这方面的信息。例如,https://www.tensorflow.org/没有提到这一点。我还从https://developer.apple.com/forums/thread/686926中发现有人点击了“错误:找不到与tensorflow-macos匹配的发行版“(但我没有找到)。
1.我在谷歌上搜索的所有文章,包括上面4篇文章和这篇Tensorflow on macOS Apple M1,都说我还需要运行以下2个命令conda install -c apple tensorflow-deps
pip install tensorflow-metal
但是我真的需要这样做吗?我在https://www.tensorflow.org/中找不到这个信息。这两个包tensorflow-deps
和tensorflow-metal
是什么?
6条答案
按热度按时间mcdcgff01#
提取the official directions from Apple(截至2022年7月13日),可以使用以下YAML创建一个环境:
tf-金属-臂64.yaml
编辑以包括其他软件包。
创建环境
在创建环境之前,我们需要知道基础架构是什么。使用
conda config --show subdir
检查。本机(osx-arm 64)基本
如果你已经安装了一个原生的osx-arm 64Miniforge变体(我推荐使用Mambaforge),那么你可以使用以下命令创建:
注:如果你没有曼巴,那么用
conda
代替mamba
;或者安装它以更快地求解:conda install -n base mamba
.仿真的(osx-64)基底
如果没有本机base,则需要覆盖
subdir
设置:请确保在安装或更新软件包之前始终激活环境。
xkrw2x1b2#
1.下载并安装Conda env:
https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
1.安装TensorFlow依赖项:
conda安装-c appletensorflow 量-deps
1.客户群TensorFlow:
1.安装基础TensorFlow-metal:
python -m pip安装张紧器流量-金属
1.创建Conda环境:
1.康达激活tensorflow -Env
tuwxkamq3#
首先,TensorFlow并不正式支持Mac M1。他们不分发为Mac M1(及其特定的arm64 arch)预编译的包,因此
tensorflow-macos
包由Apple维护。据我所知,TensorFlow只分发x86(Linux、Windows、Mac)和Raspberry PI(arm64)的官方轮。苹果在Tensorflow中使用了一个特定的插件,使框架与Mac OS的图形堆栈Metal兼容。换句话说,他们利用PluggableDevice API of Tensorflow编写代码,将TensorFlow操作转换为M1的GPU能够理解的代码。
这两个软件包分别包含:
tensorflow-deps
在arm64上运行Tensorflow的依赖项,即python
、numpy
、grpcio
和h5py
。我认为这是一个更方便的包。tensorflow-metal
:使Tensorflow能够在metal
上运行的插件,metal
是MacOS的着色器API(相当于其他平台上的Vulkan或DirectX12的低级API)。如果您习惯在Nvidia GPU上运行TensorFlow,可以将其视为CUDA的替代品。如果没有
tensorflow-metal
包,TensorFlow将无法利用M1的GPU,但仍能在CPU上运行代码。brgchamk4#
我用pip在我的M1 Mac上安装了一个tensorflow
2.9.2
的工作版本。首先,安装pyenv
和python3.10.6
。接下来,安装pip install tensorflow-metal
,最后安装pip install tensorflow-macos
。就这样,不需要tensorflow-deps
了。如果您的模型抱怨cuDNN不可用并且运行缓慢,请尝试按照tensorflow docs调整脚本以启用cuDNN
62o28rlo5#
我得到的两个答案有助于更好地理解如何在M1上安装TensorFlow。但我也想分享我的经验。
1.关于
tensorflow-deps
。我确实需要它,没有它pip无法安装grpcio
,因此实际上无法安装tensorflow-macos
。当我第一次问这个问题时,我没有足够重视pip install tensorflow-macos
的输出。1.关于
tensorflow-macos
包,实际上https://blog.tensorflow.org/2020/11/accelerating-tensorflow-performance-on-mac.html有完整的信息。顺便说一句,这篇发表于2020年11月18日的文章说:“在不久的将来,我们将通过将分叉版本集成到TensorFlow主分支中,使用户更容易获得这些性能数据。”但根据Lescurel的回答,他们似乎还没有。1.我不知道PluggableDevice的概念(就像在Lescurel的文章中一样),所以当我访问https://github.com/apple/tensorflow_macos时,我仍然感到困惑。如果你也不知道这一点,可以看看那篇文章,基本上它会让TensorFlow支持新设备。
1.在我列出的4篇文章中,“也适用于M1”是最有帮助的。它实际上解释了为什么我需要
tensorflow-deps
和tensorflow-metal
。但我之前没有足够注意的部分原因是:a)我想使用conda,而不是miniforge,所有这些软件包管理器工具让我有点害怕(来自nodejs background,npm,yarn,yarn 2,pnmp). merv的答案也建议了另一个mamba
,但我想我会通过. b)我不使用homebrew
,基本上所有关于在m1上安装ts的文章都提到了先安装homebrew。但是我使用macport
,因为我在这里提到的原因(我再次有点害怕这些包管理器工具)1.使用
environment.yaml
,就像merv的答案中的那个,是安装tensorflow的可靠方法!顺便说一句,一旦我弄清楚了安装tensorflow的整个过程,安装pytorch就容易多了,因为pytorch现在也支持M1,请在这里检查https://pytorch.org/blog/introducing-accelerated-pytorch-training-on-mac/
kq0g1dla6#
Apple的官方说明可从here获得。
撰写本报告时: