Bootstrap

配置Tensorflow使用GPU加速(Tensorflow2.6.0,Python3.6-3.9,CUDA11.2,cuDNN8.1)

目录

前言

一、安装Anaconda

1.1 从Anaconda官网下载Anaconda(默认安装最新版本)

1.2 安装Anaconda并配置环境变量

二、安装CUDA和cuDNN

2.1 下载CUDA Toolkit

2.2 安装CUDA Toolkit

2.3 下载安装cuDNN

2.4 配置CUDA环境变量

三、创建Anaconda虚拟环境并安装Tensorflow

3.1 创建Anaconda虚拟环境

3.2 安装tensorflow==2.6.0

四、Spyder 配置Tensorflow

参考


前言

对于刚使用Tensorflow的朋友来说,配置环境并使用GPU进行加速也是件令人头疼的事情,纯自己折腾会遇到比较多的坑,我对我安装Tensorflow的过程进行总结,我所安装的Tensorflow版本是2.6.0,与之对应的Python为3.6-3.9,CUDA为11.2,cuDNN为8.1。对于Tensorflow依赖信息可以进入中文官网查看。

https://tensorflow.google.cn/install/source_windows?hl=zh-cn#gpu

 

一、安装Anaconda

Python中很多库都是相互依赖的,而不同版本的库可能会有不少差异,因此就会出现更改某个库的版本后其他库无法正常使用的情况,因此为了解决这个问题一般会创建不同的虚拟环境来管理不同的库,比较常用的就是使用Anaconda来创建不同的虚拟环境。Anoconda相当于是python环境的管理工具,通过创建新的虚拟环境来解决部分库不兼容的问题,下面是安装配置Anaconda的具体步骤:

1.1 从Anaconda官网下载Anaconda(默认安装最新版本)

https://www.anaconda.com/download

1.2 安装Anaconda并配置环境变量

安装完成,在系统变量Path中添加以下环境变量:

D:\software\Anaconda3

D:\software\Anaconda3\Library

D:\software\naconda3\Scripts

注意:此处需要替换为自己的Anaconda安装路径

这里等后面安装Tensorflow时再进行虚拟环境创建

二、安装CUDA和cuDNN

CUDA(ComputeUnified Device Architecture),是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。

安装CUDA前先在cmd命令行输入nvidia-smi查看当前的的CUDA 版本,这个版本大于等于你要安装的CUDA 版本就不会出问题,否则可能需要升级驱动或下载更低版本的CUDA Toolkit。

nvidia-smi

 

我的CUDA版本是12.1大于需要安装的11.2,所以可以放心安装。

2.1 下载CUDA Toolkit

进入官网下载CUDA Toolkit:

https://developer.nvidia.com/cuda-toolkit-archive

(Win11系统也是适用的)

2.2 安装CUDA Toolkit

双击安装程序后出现如下界面,提示设置CUDA Toolkit的临时解压路径,这个目录后续会自动删除,选择一个空间大一点的目录就行。

报错,显卡兼容性检测失败。说我已安装cuda

换一个版本

可以了!!!看来是版本的问题。

选择自定义安装 

取消勾选项

选择安装目录,以下是默认安装目录:

安装目录可以自己修改,但是需要自己创建新的目录或者选择已经存在的目录,我这里是全放在了D盘,可以根据自己的情况决定是否更改路径,一定要记住安装路径后续需要配置环境变量。

更换后的安装路径

确定安装目录后,点击下一步进行安装:

下一步

安装成功

2.3 下载安装cuDNN

进入官网下载:

https://developer.nvidia.com/rdp/cudnn-archive

选择合版本的cuDNN,由于接下来要安装Tensorflow2.6.0所以选择v8.1版本的cuDNN,v8.1有4个子版本,由于CUDA要求是11.2版本的,所以只有以下框选的两个版本可以选择,这两个任选一个即可。

选择Windows版本

cuDNN需要登录账户才能下载,没有账号的话自己注册一个即可

下面是下载成功的压缩包:  

将下载好的cuDNN压缩包解压,并将解压后所有的文件复制粘贴至刚才CUDA的安装目录,注意是CUDA的安装目录,如果有提示文件重复则选择全部覆盖即可

2.4 配置CUDA环境变量

在系统变量的Path中添加环境变量

需要添加以下环境变量,前两项一般会自动添加,若没有则自己添加,注意要根据自己的安装目录进行添加

D:\software\NVIDIA GPU\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin

D:\software\NVIDIA GPU\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp

D:\software\NVIDIA GPU\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include

D:\software\NVIDIA GPU\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib

D:\software\NVIDIA GPU\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\CUPTI\lib64

添加成功后在cmd命令行输入nvcc -V查看一下安装的CUDA的版本:

nvcc -V

接下来验证CUDA是否安装成功,进入CUDA安装路径下的demo_suite目录,在地址栏输入cmd并回车即可进入该目录下,也可以直接在cmd命令行进入该目录

进入该目录下后,依次输入以下命令,若结果均为PASS,那么恭喜CUDA已经安装成功了!!!

.\bandwidthTest.exe

.\deviceQuery.exe

三、创建Anaconda虚拟环境并安装Tensorflow

Anaconda安装完成之后,打开Anaconda Prompt软件。Windows系统用户按win键在开始菜单找到Anoconda3文件,里面就有Anaconda Prompt软件,后续涉及到的conda命令都是在Anaconda Prompt中执行的。

3.1 创建Anaconda虚拟环境

Anaconda虚拟环境常用命令:

创建一个虚拟环境:这里的tensorflow_2.6是需要创建的虚拟环境名字,可以替换为自己取的不带空格和中文的其它虚拟环境名字,注意需要指定Python版本

conda create -n tensorflow_2.6 python=3.9

激活创建的虚拟环境也即进入虚拟环境

conda activate tensorflow_2.6

查看所有的虚拟环境:

conda env list

退出当前的虚拟环境:

conda deactivate

删除创建的虚拟环境:(这里是删除名为tensorflow_2.6的虚拟环境)

conda remove -n tensorflow_2.6 --all

下面进行具体操作:创建一个名为tensorflow_2.6的虚拟环境并指定Python版本为3.9,注意Python的版本需要符合Tensorflow的要求

打开Anaconda Prompt 进入base环境,输入conda create -n tensorflow_2.6 python=3.9

虚拟环境创建成功,查看所有的虚拟环境,可以看到刚刚创建的虚拟环境tensorflow_2.6

conda env list

进入创建好的虚拟环境

conda activate tensorflow_2.6

3.2 安装tensorflow==2.6.0

确保已经进入要安装的虚拟环境,输入以下命令,这里使用清华源加快下载速度,注意可以使用pip安装和conda命令安装,但是推荐使用pip安装,如果使用conda安装会出现一些库的版本不符合Tensorflow的要求。

注意:pip安装和conda安装的区别:

pip安装会照顾当前安装的包。如果环境中已经存在依赖包但是与当前的版本不匹配时,pip会先删除这些依赖包,然后安装兼容当前安装包的版本,这可能会导致安装完后一些之前已经安装的包因为依赖包版本的改变而无法使用。另外使用pip安装时如果未指定版本则会默认安装最新版本。

conda安装是照顾已经安装的包。如果当前需要安装的包所依赖的包已经存在,conda则不会因为版本问题删除这些依赖包,而只是安装合适版本的当前需要安装的包,以适配已经安装的包,保证安装的所有软件包都能够兼容。如果用户指定了安装版本,但是与已经存在的依赖不兼容,则会安装失败。这样做的好处是安装包后不会导致之前的包不能使用。

通常情况下如果没有版本要求,建议使用conda安装。但是有一些特定包例如TensorFlow,更推荐使用pip安装。使用conda安装会出现一些库的版本不符合Tensorflow的要求。例如TensorFlow2.6.0在conda中显示numpy的兼容版本>=1.20.0,用conda安装TensorFlow2.6.0结果安装的numpy是最新版本的,结果就是使用Tensorflow时报错numpy has no attribute object…,而通过pip安装TensorFlow2.6.0时匹配的numpy的版本是1.19.5则没有问题。

pip install tensorflow==2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装成功但是keras的版本不符合要求,需要重新安装keras。与tensorflow2.6.0版本对应的keras版本为2.6.0,进行安装:

pip install keras==2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

尝试导入tensorflow测试是否安装成功:

先输入python进入python命令行,再输入import tensorflow as tf

结果提示protobuf版本太高,安装3.20.0版本的protobuf

pip install protobuf==3.20.0

再次进行测试,依次输入:

python

import tensorflow as tf

tf.test.is_gpu_available()

结果为True,至此终于配置完整。

四、Spyder 配置Tensorflow

打开anaconda自带的是spyder运行代码会报错,如下所示。

这是由于在安装完成之后,打开Spyder会发现其实用的解释器还是base,这个时候我们需要切换到虚拟环境tensorflow_2.6中的python.exe解释器。

修改完成后,重启内核会报错,显示内核错误。

此时我们需要在Anaconda Prompt中激活虚拟环境,安装指定版本的spyder-kernels。

重启spyder,发现控制台python版本变了。

运行代码,打开任务管理器,发现gpu已经开始工作了。

参考

配置Tensorflow使用CUDA进行GPU加速(超详细教程)_tensorflow cuda-CSDN博客 (保姆教程)Spyder 配置Tensorflow(2.5.0)和keras(2.4.3)_tensorflow2.5.0对应keras-CSDN博客

;