【问题标题】:What is the proper way to install TensorFlow on Apple M1 in 20222022年在Apple M1上安装TensorFlow的正确方法是什么
【发布时间】:2022-08-04 03:44:25
【问题描述】:

当我尝试在 Apple M1 上安装 TensorFlow 时,我遇到了 4 个问题:

  1. Conda has supported M1 since 2022.05.06 但我在 Google 上搜索的大部分文章都在谈论使用 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
    5. 我使用最新的 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 fork 称为 tensorflow-macos\" 虽然我找不到太多关于那个的信息。例如,https://www.tensorflow.org/ 没有提到那个。我还从https://developer.apple.com/forums/thread/686926 发现有人打了那个\"错误:没有为 tensorflow-macos 找到匹配的分布\"(但我没有)。

      2. 我google的所有文章,包括上面4篇文章和这个Tensorflow on macOS Apple M1,都说我还需要运行以下2个命令

        conda install -c apple tensorflow-deps

        pip install tensorflow-metal

      但我真的需要这样做吗?我无法从https://www.tensorflow.org/ 找到此信息。 tensorflow-depstensorflow-metal 这两个包是什么?

  • 康达已支持osx-arm64通过 Conda Forge 获得更长的时间。蟒蛇仅在最近添加了支持,这就是 OP 链接的内容。 official Apple installation directions 节目使用 Miniforge(来自 Conda Forge),而不是 Anaconda。

标签: tensorflow conda apple-m1


【解决方案1】:

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

tf-metal-arm64.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-arm64) 根据

如果你安装了原生osx-arm64Miniforge 变体(我推荐Mambaforge),然后您可以使用以下命令创建:

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

笔记:如果您没有 Mamba,则将 conda 替换为 mamba;或安装它以更快地解决:conda install -n base mamba

模拟 (osx-64) 根据

如果你没有本地人根据,那么您将需要覆盖 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

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

【讨论】:

  • 感谢您回答我的问题,但为什么是曼巴?我对所有这些安装程序感到很困惑,这也是我提出问题的原因之一。
  • 它是 Conda 的编译(快速)版本。
【解决方案2】:

首先,TensorFlow 不正式支持 Mac M1。他们不分发为 Mac M1(及其特定的 arm64 架构)预编译的包,因此由 Apple 维护的 tensorflow-macos 包。据我所知,TensorFlow 只为 x86(Linux、Windows、Mac)和 Raspberry PI(arm64)分发官方轮子。

Apple 正在使用 Tensorflow 中的特定插件来使框架与 MacOS 的图形堆栈 Metal 兼容。换句话说,他们正在利用 PluggableDevice API of Tensorflow 编写代码,将 TensorFlow 操作转换为 M1 的 GPU 可以理解的代码。

这两个包分别包含:

  • tensorflow-deps 在 arm64 上运行 Tensorflow 的依赖项,即 pythonnumpygrpcioh5py。我相信这更像是一个便利包。
  • tensorflow-metal:一个使 tensorflow 能够在 MacOS 的着色器 API metal 上运行的插件(类似于其他平台上的 Vulkan 或 DirectX12 的低级 API)。如果您习惯于在 Nvidia GPU 上运行 TensorFlow,您可以将其视为 CUDA 的替代品。

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

【讨论】:

  • 谢谢!但是 tensorflow-macos 呢?它是 M1 的“那个”包吗?我想知道为什么tensorflow.org 没有提到它。
  • TensorFlow 不正式支持 Mac M1。他们不分发为 Mac M1(特定 arm64 架构)预编译的包,因此由 Apple 维护的 tensorflow-macos 包。据我所知,TensorFlow 仅分发适用于 x86(Linux、Windows、Mac)和 Raspberry PI(arm64)的官方轮子。
  • 再次感谢。在我问我的问题之前,我还搜索了 developer.apple.com 论坛并找到了developer.apple.com/forums/thread/686926,所以有人点击了“”错误:找不到版本:tensorflow-macos 也出现错误。所以这个包有点令人困惑。
  • 我也添加了一个答案,所以我确实需要tensorflow-deps
【解决方案3】:

我得到的两个答案有助于更好地理解如何在 m1 上安装 TensorFlow。但我也想分享我的经验。

  1. 关于tensorflow-deps。我确实需要它,没有它 pip 无法安装grpcio,因此实际上无法安装tensorflow-macos。当我第一次问这个问题时,我没有足够注意pip install tensorflow-macos 的输出。

  2. 关于tensorflow-macos 包,其实https://blog.tensorflow.org/2020/11/accelerating-tensorflow-performance-on-mac.html 有完整的信息。顺便说一句,那篇发表于 2020 年 11 月 18 日的文章说:“在不久的将来,我们将通过将分叉版本集成到 TensorFlow 主分支中,让用户更容易获得这些性能数据。”但根据莱斯库尔的回答,他们似乎没有。

  3. 我不知道 PluggableDevice 的概念(就像 Lescrel 的那样),所以即使我访问了https://github.com/apple/tensorflow_macos 我仍然感到困惑。如果你也不知道的话可以看看那篇文章,基本上它会让 TensorFlow 支持新设备。

  4. 对于我列出的 4 篇文章,“也适用于 M1”是最有帮助的。它实际上解释了为什么我需要tensorflow-depstensorflow-metal。但我事先没有给予足够关注的部分原因是:a)我想使用 conda,而不是 miniforge,所有这些包管理器工具都让我有点害怕(来自nodejs背景)。 merv 的回答还建议了另一个mamba,但我想我会通过的。 b)我不使用homebrew,基本上所有关于在m1上安装ts的文章都提到首先安装自制软件。但我使用macportfor the reason I mentioned here(我再次有点害怕这些包管理器工具)

  5. 使用 environment.yaml 就像 merv 的答案一样是安装 tensorflow 的可靠方法!

【讨论】:

    【解决方案4】:

    我用 pip 在我的 M1 Mac 上安装了 tensorflow 2.9.2 的工作版本。首先,安装pyenv和python3.10.6。接下来是pip install tensorflow-metal,最后是pip install tensorflow-macos。而已。

    【讨论】:

      猜你喜欢
      • 2021-04-22
      • 2021-12-16
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2021-05-17
      • 2021-07-27
      • 2021-12-15
      • 2022-07-02
      相关资源
      最近更新 更多