『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

人工智能47

文章开始书写时间:2022-03/19-14:30

0x00​:引子

最近云哥 @吃货本货 问小宋(笔者)如何在Apple的M1芯片进行深度学习开发,恰逢最近M1开发生态都趋于稳定,就把安装步骤梳理下分享出来。

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

0x01:分析

开始正式安装前,先对步骤进行梳理,方便后续安装。

简单分析下:

目的是在M1平台开发深度学习,需要以下几个必备因素:

  • 编辑器:VSCode,跨平台最佳编程工具,不接受反驳。你要反对,就算你对。(再透露一个小秘密:其实好多大厂也是用VSCode开发哦:)
  • 开发语言:不二之选-Python,这里版本采用Python3.8,最新深度学习框架依赖。
  • 深度学习框架:TensorFlow与PyTorch,这里安装两个最流行的框架,读者们按照自己需求安装就好。

配置环境其实有点像打游戏,需要不断通过升级。

下面就需要针对这几个因素逐个击破:

0x02:实操

如果你是一个有经验的开发人员,你可以在这里结束,并根据上面的分析开始安装(如果出现问题,请参见下面的分析)。以下教程是为新手用户编写的。

[En]

If you are an experienced developer, you can end it here and start the installation according to the above analysis (if something goes wrong, see the one below). The following tutorials are written for novice users.

1、VSCode安装

首先打开网址:Visual Studio Code February 2022,如果打不开,那可能需要科学上网,如果还不会,那就放弃吧,真的做开发需要一点天赋和努力的,对了还有一点英语阅读技能。

打开以后,点击红色框内(Mac,救命,这里指的是苹果MacOS,可不是口红,手动狗头:)的绿色链接网址下载(表示Arm版MacOS的软件)。

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

解压完成后,双击打开,如果遇到需要确认的信息,点击确定。

[En]

After the completion of the decompression, double-click to open it, if you encounter the information that needs to be confirmed, click OK.

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

此时VSCode就完成了,是不是很简单,下面要开始一些有难度的了。还是一样的规劝,实在搞不定就放弃的,别在这个领域卷了,如果没有选择就好好努力吧。

2、Python安装

这里采用的Miniconda(精简版Anaconda)下载地址:Miniconda — Conda documentation

打开后找到绿色位置,点击链接下载。

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

要注意下,这次下载的是.sh文件,不是安装包,不可直接点击傻瓜式安装。

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

需要借助"终端"工具执行安装

在启动台搜索"终端",点击打开"终端":

下面就开始执行Miniconda安装脚本,首先你要搞清楚刚刚下载的.sh文件保存到了那里,一般默认放在Downloads文件夹下(如果不是的话,需要找一下实际位置),执行以下脚本即可开始安装:

bash Downloads/Miniconda3-latest-MacOSX-arm64.sh

随后执行遇到需要确认的地方回车和输入"yes"确认,即可完成安装Miniconda。

完成,打开一个新的"终端",在里面输入

conda -V

如果输出正常,那么Miniconda就安装成功了,如果显示"command not found",那么你可能需要配置一下路径。

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

Python环境的安装就不如VSCode那么简单轻松了,不过恭喜你走到了这一步。

行百里者,半九十也。我们也迎来了最后一步安装TensorFlow与PyTorch,打完这两个boss,今天的游戏就通关啦。

3、TensorFlow与PyTorch安装

参考TensorFlow步骤:Tensorflow Plugin - Metal - Apple Developer,PyTorch步骤:Previous PyTorch Versions | PyTorch

首先我们先使用新建一个Python3.8环境,"终端"输入:

conda create -n py38 python=3.8

这句翻译为文字就是,使用conda新建(conda create)名为(-n)py38(py38)的环境,指定python版本为3.8(python=3.8)。对了执行的时候保持网络连接,因为需要下载东西到本地。

新建完成后就可以进入这个环境:

conda activate py38

下面就开始正式安装深度学习环境啦

先安装TensorFlow,参考TensorFlow步骤:Tensorflow Plugin - Metal - Apple Developer

依次执行:

conda install -c apple tensorflow-deps # Step 1: Environment setup Install the TensorFlow dependencies:
pip install tensorflow-macos # Step 2: Install base TensorFlow
pip install tensorflow-metal # Step 3: Install tensorflow-metal plugin

运行完,TensorFlow就安装完成了,下面测试一下TensorFlow:

song@192 ~ % conda activate py38
(py38) song@192 ~ % python
Python 3.8.11 (default, Aug 16 2021, 12:04:33)
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> import tensorflow as tf
>>> print("tf version",tf.__version__)
tf version 2.8.0
>>> print("tf gpu",tf.test.is_gpu_available())
WARNING:tensorflow:From :1: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.

Instructions for updating:
Use `tf.config.list_physical_devices('GPU')` instead.

Metal device set to: Apple M1

systemMemory: 8.00 GB
maxCacheSize: 2.67 GB

2022-03-19 17:03:20.293520: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.

2022-03-19 17:03:20.294430: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: )
tf gpu True
>>>

然后安装PyTorch,参照:Previous PyTorch Versions | PyTorch,在"终端"执行

pip install torch==1.9.0 torchvision==0.10.0 torchaudio==0.9.0

安装完成后,同样做下测试:

(py38) song@192 ~ % python
Python 3.8.11 (default, Aug 16 2021, 12:04:33)
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> import torch
>>> print("torch version",torch.__version__)
torch version 1.9.0
>>> torch.ones(1)+torch.ones(1)
tensor([2.])
>>>

最后安装一些DL常用的库:

pip install pandas matplotlib glob2 tqdm opencv-python scipy scikit-learn

完成上述步骤,我们就完成了使用M1芯片的MacOS电脑环境的配置,本次游戏通关欢迎下次再见,拜拜。

如果有帮到你,请不要吝啬你的点赞鼓励,我也会越来越努力哟~​

0x03:参考

  1. Mac安装M1芯片版本miniconda流程 - Ravenna - 博客园
  2. Good guy:在M1上安装ARM版本的pytorch 1.80 和 M1 的tensorflow

Original: https://blog.csdn.net/xiaosongshine/article/details/123614352
Author: 小宋是呢
Title: 『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch



相关阅读

Title: 完美解决(最简单):不同虚拟环境不同CUDA版本的安装问题(tensorflow-gpu与pytorch)

一、虚拟环境1:torch环境的cuda配置

1.先安装Torch

进入pytorch官网,Start Locally | PyTorch找到想要安装的torch及对应的cuda,(比如我要下载cuda10.2的torch),选中cuda10.2对应的torch(如果没有想要的,查看以前版本torch),复制pip安装的命令,激活虚拟环境输入命令安装即可

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

2.安装cudnn

安装完后conda list查看安装情况,你会发现通过这个命令会自动安装torch torchvision、cudatoolkit(cuda), 没有安装cudnn,需要自己额外安装对应的cudnn,简单通过pip安装即可(没安装之前是没有cudnn的,我这里已经安装过cuda11.1和cudnn了,这里只是做个演示)

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

到此,这个虚拟环境cuda配置结束!没错,你能用gpu跑代码了!(因为torch官方将对应cuda与torch打包放一起了,这样不同的虚拟环境安装后便能使用,不需要自己重新去nvidia官网手动下载cuda安装包,更不需要设置环境变量什么乱七八糟的。后面tensorflow-gpu的cuda同样)

你可以新建一个py文件,输入下面代码查看是否能用gpu

import torch
print(torch.cuda.current_device())   # 返回当前设备索引
print(torch.cuda.device_count())    # 返回GPU的数量
print(torch.cuda.get_device_name(0))   # 返回gpu名字,设备索引默认从0开始
print(torch.cuda.is_available())   # cuda是否可用
print(torch.version.cuda)  # cuda版本

结果如下:

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

二、虚拟环境2:tensorflow环境的cuda配置

1.安装tensorflow-gpu及对应的cuda

激活虚拟环境2,找到想要安装的tensorflow-gpu版本,我这里以tensorflow-gpu1.12为例,输入如下代码:

conda install tensorflow-gpu=1.12 cudatoolkit

它会自动帮你匹配对应tensorflow-gpu1.12的cuda、cudnn版本,并一同下载安装,结果如下:

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

但是,一定要注意!!

有些版本的tensorflow-gpu也许会给你匹配错误的cuda,比如tensorflow-gpu=1.14,如下图:

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

查看tensorflow-gpu版本对应,很明显这个 cuda版本不对 !!所以一定要看一下是否匹配的太离谱,如果是这种情况,那你就得换一个tensorflow-gpu版本了,比如tensorflow-gpu1.15

到此,这个虚拟环境cuda也配置结束!没错,你也可以在这个虚拟环境下用gpu跑代码了!

你可以新建一个py文件,输入下面代码查看是否能用gpu

import tensorflow as tf
hello = tf.constant('hello,tensorflow')
sess = tf.Session()
print(sess.run(hello))

结果如下:

『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch

三、总结

通过这样的方法此类推,随意创建其他的虚拟环境和cuda

不用手动安装cuda!

不用设置环境变量!

随意切换虚拟环境!

随意使用任一虚拟环境对应的cuda!

Original: https://blog.csdn.net/m0_61102347/article/details/120922915
Author: TC1398
Title: 完美解决(最简单):不同虚拟环境不同CUDA版本的安装问题(tensorflow-gpu与pytorch)

Original: https://blog.csdn.net/xiaosongshine/article/details/123614352
Author: 小宋是呢
Title: 『开发技巧』MacbookM1芯片深度学习环境配置最全教程:简明安装开发TensorFlow与PyTorch



相关阅读

Title: python: 开始使用tensorflow 出现的一些问题即解决办法

python 用了快一年了, 想试用一下tensorflow, 了解一下深度学习(deep learning), 但是与其他的模块不同, tensorflow用起来并不容易, 或许是刚开始吧。

  1. 版本问题,版本不同, 用法差别很大

所以,有必要首先了解自己用的是版本1.x, 或者是2.x. 可以用以下办法查版本:

a) pip list

b) conda list

c) 在python 程序内: print(tf.version)

我的版本是2.6.2

看教程, 很多给的第一个示范程序是:

l = tf.constant(23,dtype="int32",name="val1")

m = tf.constant(22,dtype="int32",name="val2")

with tf.Session() as val:

new_output=val.run(l*m)

print(new_output)

结果不运行,出错讯息是:

AttributeError "module 'Tensorflow' has no attribute 'session'"

网上查了, 以上的教科程序只适合与tensorflow 版本1.x, 不适合2.x

解决办法:

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

l = tf.constant(23,dtype="int32",name="val1")

m = tf.constant(22,dtype="int32",name="val2")

with tf.compat.v1.Session() as val:

new_output=val.run(l*m)

print(new_output)

  1. interl-CPU优化/GPU问题

运行如下代码,估计其他代码也会出现同样的问题:

import tensorflow.compat.v1 as tf

tf.compat.v1.disable_eager_execution() #not working without it
a1=tf.placeholder(tf.float32)
a2=tf.placeholder(tf.float32)
a3=tf.placeholder(tf.float32)
a_sum=tf.add_n([a1,a2,a3])
sess=tf.compat.v1.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(a_sum,feed_dict={a1:10,a2:20,a3:30}))

出现了警告讯息:

This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.

解决方法:

AVX(Advanced Vector Extensions-Intel® AVX) 是intel 优化CPU用于浮点计算的技术,如果有GPU了,其实不用考虑该警告讯息。 不过, 不管怎么说, 如果不愿意看到该警告讯息, 可以加上如下2行代码:

import os

Original: https://blog.csdn.net/m0_60558800/article/details/124764493
Author: 北京维多
Title: python: 开始使用tensorflow 出现的一些问题即解决办法

相关文章
UNet详解(附图文和代码实现) 人工智能

UNet详解(附图文和代码实现)

卷积神经网络被大规模的应用在分类任务中,输出的结果是整个图像的类标签。但是UNet是像素级分类,输出的则是每个像素点的类别,且不同类别的像素会显示不同颜色,UNet常常用在生物医学图像上,而该任务中图...
【好数推荐】自然对话语音数据集来啦! 人工智能

【好数推荐】自然对话语音数据集来啦!

当前行业提供的大部分人工智能数据都以朗读式训练数据为主,然而人与机器之间的交互不应该只是一问一答的简单对话或者命令控制,而是要理解语言的上下文,识别人的情感需求并做出相应的反馈"。 随着技术突破带来的...
带你了解3类预训练语音模型预测方法 人工智能

带你了解3类预训练语音模型预测方法

摘要:在调研多篇论文后,笔者发现预训练语音模型的预测方法基本可以分为以下3类: 本文分享自华为云社区《预训练语音模型调研小结》,作者: Hudson。 在调研多篇论文后,笔者发现预训练语音模型的预测方...
NLP进阶,Bert+BiLSTM情感分析实战 人工智能

NLP进阶,Bert+BiLSTM情感分析实战

Bert+BiLSTM做情感分析 情感分析 情感分析一类的任务比如商品评价正负面分析,敏感内容分析,用户感兴趣内容分析、甚至安全领域的异常访问日志分析等等实际上都可以用文本分类的方式去做,情感分析的问...