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

    你可能感兴趣的文章
    PostgreSQL 10.0 preview sharding增强 - pushdown 增强
    查看>>
    PostgreSQL 10.0 preview 变化 - pg_xlog,pg_clog,pg_log目录更名为pg_wal,pg_xact,log
    查看>>
    PostgreSQL 10.1 手册_部分 II. SQL 语言_第 15章 并行查询_15.2. 何时会用到并行查询?...
    查看>>
    PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.23. 行和数组比较
    查看>>
    PostgreSQL 10.1 手册_部分 III. 服务器管理_第 21 章 数据库角色
    查看>>
    Qt开发——网络编程UDP网络广播软件之服务器端
    查看>>
    Postgresql 12.9如何配置允许远程连接
    查看>>
    PostgreSQL 9.6 同步多副本 与 remote_apply事务同步级别 应用场景分析
    查看>>
    Postgresql CopyManager 流式批量数据入库
    查看>>
    PostgreSQL cube 插件 - 多维空间对象
    查看>>
    PostgreSQL Daily Maintenance - cluster table
    查看>>
    PostgreSQL on Linux 最佳部署手册
    查看>>
    PostgreSQL Oracle 兼容性之 - pipelined
    查看>>
    PostgreSQL Point-In-Time Recovery (Incremental Backup)
    查看>>
    postgresql Streaming Replication监控与注意事项
    查看>>
    postgresql 不需要付费_使用数据传输在PostgreSQL执行 外部连接运算符
    查看>>
    postgresql 主从配置_生产环境postgresql主从环境配置
    查看>>
    postgresql 函数&存储过程 ; 递归查询
    查看>>
    PostgreSQL 分组聚合查询中 filter 子句替换 case when
    查看>>
    PostgreSQL 同步流复制锁瓶颈分析
    查看>>