博客
关于我
m1芯片Mac安装Apple版TensorFlow(conda-forge)+编译安装sklearn
阅读量:362 次
发布时间:2019-03-04

本文共 3491 字,大约阅读时间需要 11 分钟。

在Apple Silicon M1硬件上安装TensorFlow及数据科学包

折腾了一整晚,终于搞定了在Apple Silicon M1硬件上安装优化版TensorFlow!这确实是一段充满挑战的旅程。刚开始我并不打算折腾,直到发现使用bash安装Python虚拟环境的不便之处。虽然许多软件包可以通过源码编译安装到虚拟环境,但仍然有一些不合作的包装程序安装不了,比如sklearn。

对于Apple Silicon M1硬件,官方明确指出只有conda-forge方法可以使用。因此,我只能硬着头皮寻找解决方法。在Apple的GitHub主页中发现了一篇关于使用miniforge安装TensorFlow的方法,这个方法安装起来并不复杂,除了那可怕的网络速度...

安装完成TensorFlow后,接下来是安装sklearn。除了需要特别指定brew安装的libomp包的位置,其他步骤都按照官网指南一路走下来即可安装。以下是具体操作步骤:

安装TensorFlow

  • 先创建虚拟环境并激活它:
  • conda create -n tf24 python=3.8conda activate tf24
    1. 指定TensorFlow_macos软件包的位置:
    2. libs="/Users/xxx/tensorflow_macos/arm64/"env="/opt/homebrew/Caskroom/miniforge/base/envs/tf24/"
      1. 安装相关依赖包,注意版本号,建议复制安装文件名以避免找不到:
      2. conda install -c conda-forge pip setuptools cached-property sixconda upgrade -c conda-forge pip setuptools cached-property sixpip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/grpcio-1.33.2-cp38-cp38-macosx_11_0_arm64.whl"pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl"pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/tensorflow_addons_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl"
        1. 安装与TensorFlow相关的包:
        2. conda install -c conda-forge -y absl-pyconda install -c conda-forge -y astunparseconda install -c conda-forge -y gastconda install -c conda-forge -y opt_einsumconda install -c conda-forge -y termcolorconda install -c conda-forge -y typing_extensionsconda install -c conda-forge -y wheelconda install -c conda-forge -y typeguard
          1. 安装TensorBoard:
          2. pip install tensorboard
            1. 安装其他TensorFlow相关组件:
            2. pip install wrapt flatbuffers tensorflow_estimator google_pasta keras_preprocessing protobuf
              1. 最后安装TensorFlow本身(注意版本号):
              2. pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/tensorflow_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl"

                安装其他数据科学软件包

                相比于在tf_venv环境中安装软件包(需要进行各种编译安装),直接使用conda install走天下简直是简单到爆了,只需指定channel为conda-forge即可。

                pandas & pytables

                conda install pandas -c conda-forgeconda install pytables -c conda-forge

                matplotlib

                conda install matplotlib -c conda-forge

                ipython

                conda install ipython -c conda-forge

                手动安装sklearn

                由于sklearn不支持直接用homebrew编译安装,那只能硬着头皮编译了。

                安装相关依赖

                conda activate tf24conda install -c conda-forge scipy cython joblib threadpoolctl pytest compilers llvm-openmpbrew install libomp

                修改编译路径

                记录libomp的位置以便后续导入:

                /opt/homebrew/Cellar/libomp/11.1.0/lib/opt/homebrew/Cellar/libomp/11.1.0/include

                编译安装

                make cleanpip install --verbose --no-build-isolation --editable .

                验证安装

                conda list

                查看包信息:

                scikit-learn              0.24.1                    dev_0    
                scipy 1.6.0 py38hdf044fb_0 conda-forge...

                完成!不过还不能庆祝,查看sklearn安装位置:

                In [6]: import sklearnOut[6]: 

                安装目标是虚拟环境的/opt/homebrew/Caskroom/miniforge/base/envs/tf24/lib/python3.8/site-packages/,因此需要进行以下操作:

              3. 拷贝安装文件和egg-info文件:
              4. cp -r sklearn /opt/homebrew/Caskroom/miniforge/base/envs/tf24/lib/python3.8/site-packages/cp -r scikit_learn.egg-info /opt/homebrew/Caskroom/miniforge/base/envs/tf24/lib/python3.8/site-packages/
                1. 删除链接文件(可选):
                2. cd /opt/homebrew/Caskroom/miniforge/base/envs/tf24/lib/python3.8/site-packages/rm scikit-learn.egg-link

                  这样就能完美安装完成!(并且可以删除sklearn的源码文件了~)

                  验证

                  conda activate tf24ipython -c "import sklearn; print(sklearn._config)"

                  参考

                3. GitHub Issue(链接已去除)
                4. Medium文章(链接已去除)
                5. 更新日志

                  后来在一篇Medium博客中找到更简便的方法:

                  conda install -c conda-forge scikit-learn

                  直接使用conda安装即可解决问题,不用手动编译!希望大家不要学我的错误,尽量找到最方便快捷的方法。

    转载地址:http://iazg.baihongyu.com/

    你可能感兴趣的文章
    ntpdate同步配置文件调整详解
    查看>>
    NTPD使用/etc/ntp.conf配置时钟同步详解
    查看>>
    NTP及Chrony时间同步服务设置
    查看>>
    NTP服务器
    查看>>
    NTP配置
    查看>>
    NUC1077 Humble Numbers【数学计算+打表】
    查看>>
    NuGet Gallery 开源项目快速入门指南
    查看>>
    NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
    查看>>
    nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
    查看>>
    Nuget~管理自己的包包
    查看>>
    NuGet学习笔记001---了解使用NuGet给net快速获取引用
    查看>>
    nullnullHuge Pages
    查看>>
    NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
    查看>>
    null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
    查看>>
    Number Sequence(kmp算法)
    查看>>
    Numix Core 开源项目教程
    查看>>
    numpy
    查看>>
    Numpy 入门
    查看>>
    NumPy 库详细介绍-ChatGPT4o作答
    查看>>
    NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
    查看>>