2022年在Apple M1上安装TensorFlow的正确方式是什么

t1rydlwq  于 2022-11-16  发布在  其他
关注(0)|答案(6)|浏览(218)

当我尝试在Apple M1上安装TensorFlow时,我遇到了4个问题:
1.但是我在谷歌上搜索的大多数文章都是关于使用Miniforge的,所以我觉得它们都有点过时了。

  1. How To Install TensorFlow on M1 Mac (The Easy Way)
  2. AI - Apple Silicon Mac M1 natively supports TensorFlow 2.8 GPU acceleration
  3. How to Setup TensorFlow on Apple M1 Pro and M1 Max (works for M1 too)
  4. 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-depstensorflow-metal是什么?

mcdcgff0

mcdcgff01#

提取the official directions from Apple(截至2022年7月13日),可以使用以下YAML创建一个环境:

tf-金属-臂64.yaml

name: tf-metal
channels:
  - apple
  - conda-forge
dependencies:
  - python=3.9  ## specify desired version
  - pip
  - tensorflow-deps

  ## uncomment for use with Jupyter
  ## - ipykernel

  ## PyPI packages
  - pip:
    - tensorflow-macos
    - tensorflow-metal  ## optional, but recommended

编辑以包括其他软件包。

创建环境

在创建环境之前,我们需要知道基础架构是什么。使用conda config --show subdir检查。

本机(osx-arm 64)基本

如果你已经安装了一个原生的osx-arm 64Miniforge变体(我推荐使用Mambaforge),那么你可以使用以下命令创建:

mamba env create -n my_tf_env -f tf-metal-arm64.yaml

:如果你没有曼巴,那么用conda代替mamba;或者安装它以更快地求解:conda install -n base mamba .

仿真的(osx-64)基底

如果没有本机base,则需要覆盖subdir设置:

## create env
CONDA_SUBDIR=osx-arm64 mamba env create -n my_tf_env -f tf-metal-arm64.yaml

## activate
mamba activate my_tf_env

## permanently set the subdir
conda config --env --set subdir osx-arm64

请确保在安装或更新软件包之前始终激活环境。

xkrw2x1b

xkrw2x1b2#

1.下载并安装Conda env:
https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh

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

1.安装TensorFlow依赖项:
conda安装-c appletensorflow 量-deps
1.客户群TensorFlow:

python -m pip install tensorflow-macos

1.安装基础TensorFlow-metal:
python -m pip安装张紧器流量-金属
1.创建Conda环境:

conda create -n tensorflow-env tensorflow

1.康达激活tensorflow -Env

tuwxkamq

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的依赖项,即pythonnumpygrpcioh5py。我认为这是一个更方便的包。
  • tensorflow-metal:使Tensorflow能够在metal上运行的插件,metal是MacOS的着色器API(相当于其他平台上的Vulkan或DirectX12的低级API)。如果您习惯在Nvidia GPU上运行TensorFlow,可以将其视为CUDA的替代品。

如果没有tensorflow-metal包,TensorFlow将无法利用M1的GPU,但仍能在CPU上运行代码。

brgchamk

brgchamk4#

我用pip在我的M1 Mac上安装了一个tensorflow 2.9.2的工作版本。首先,安装pyenv和python 3.10.6。接下来,安装pip install tensorflow-metal,最后安装pip install tensorflow-macos。就这样,不需要tensorflow-deps了。
如果您的模型抱怨cuDNN不可用并且运行缓慢,请尝试按照tensorflow docs调整脚本以启用cuDNN

62o28rlo

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-depstensorflow-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/

kq0g1dla

kq0g1dla6#

Apple的官方说明可从here获得。
撰写本报告时:

conda create python=3.10.6 --name <NAME>
conda activate <NAME>
conda install -c apple tensorflow-deps
python -m pip install tensorflow-macos
python -m pip install tensorflow-metal

相关问题