博客
关于我
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/

    你可能感兴趣的文章
    python3 robotframework+pycharm框架搭建
    查看>>
    Python3 shutil模块
    查看>>
    Python关于strftime函数详细解析 附实战代码
    查看>>
    Python3 tutorial day3
    查看>>
    python3 week4
    查看>>
    Python3 创建数组
    查看>>
    python3 套接字异常(a byte-like object is required not str)
    查看>>
    python3 实现用户三次输入错误记录黑名单并对该用户登录锁定-day1
    查看>>
    python3 文本变图片
    查看>>
    Python3 查看 com 组件的属性
    查看>>
    python3 案例分享--发邮件
    查看>>
    python3 模板库_Python3 标准库概览_Python教程_我爱模板网 - 提供下载各种免费建站资源,免费网站模板,免费网页特效,让你爱上建站!...
    查看>>
    Python3 求最大/小值及索引值 Numpy
    查看>>
    python3+django使用celery执行某些任务失败的解决方案
    查看>>
    Python3+Requests+Unittest实战系列【一】
    查看>>
    python3+requests+unittest实战系列【一】
    查看>>
    python3+requests+unittest实战系列【二】
    查看>>
    Python3+Requests+Unittest实战系列【二】
    查看>>
    python3----ASCII
    查看>>
    Python3-selenium自动化测试框架,结合HTMLTestRunner测试报告!
    查看>>