Tensorflow使用CUDA进行GPU加速
前言
对于刚使用Tensorflow的友友来说配置环境并使用GPU进行加速也是件令人头疼的事情,纯自己折腾会遇到比较多的坑,所以这里详细介绍一下Tensorflow的环境配置
先进入官网查看Tensorflow依赖信息:
https://tensorflow.google.cn/install/source_windows?hl=zh-cn#gpu
目前Tensorflow版本已经更新到2.16.1但是中文官网发布的最新经过测试的构建配置的Tensorflow版本是2.6.0,例如2.6.0版本的Tensorflow对应的Python为3.6-3.9,CUDA为11.2,cuDNN为8.1
语言选择为English后官网发布的最新经过测试的构建配置的Tensorflow版本已经和最新的Tensorflow版本保持一致,但是Windows平台停留在了2.10,因为2.11及以上版本以上已经取消对Windows GPU的支持,可以看到从2.5.0到2.10版本的Tensorflow适配的CUDA和cuDNN版本均相同只是支持的Python有所不同,下面还是以安装2.6.0版本的Tensorflow为例
https://tensorflow.google.cn/install/source_windows#gpu
补充说明:
1.Tensorflow从2.0.0及以后版本后不再区分cpu版本和gpu版本,即cpu版本和gpu版本是一样的
2.从2.11及以上的版本的Tensorflow取消了对Windows平台的GPU的支持,即如果你用的是Window平台并且想使用GPU加速则安装Tensorflow的版本需要在2.10及以下
一、安装Anaconda
Python中很多库都是相互依赖的,而不同版本的库可能会有不少差异,因此就会出现更改某个库的版本后其他库无法正常使用的情况,因此为了解决这个问题一般会创建不同的虚拟环境来管理不同的库,比较常用的就是使用Anaconda来创建不同的虚拟环境。Anoconda相当于是python环境的管理工具,通过创建新的虚拟环境来解决部分库不兼容的问题,下面是安装配置Anaconda的具体步骤:
1.从Anaconda官网下载Anaconda
https://www.anaconda.com/download
直接点击下载最新版即可
2.安装Anaconda并配置环境变量
安装路径可以自行修改
环境变量待会儿自己配置
安装完成的界面:
在系统变量Path中添加以下环境变量:
D:\Program Files\Anaconda3
D:\Program Files\Anaconda3\Library
D:\Program Files\Anaconda3\Scripts
注意:需要替换为你自己的Anaconda安装路径,我这里的安装路径是D:\Program Files\Anaconda3
这里等后面安装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所以可以放心安装
1.下载安装CUDA Toolkit
进入官网下载CUDA Toolkit:
https://developer.nvidia.com/cuda-toolkit-archive
这里Win11系统也是适用的
2.安装CUDA Toolkit
双击安装程序后出现如下界面,提示设置CUDA Toolkit的临时解压路径,这个目录后续会自动删除,选择一个空间大一点的目录就行
点击OK后就开始解压和安装
安装界面:
选择同意并继续:
选择自定义安装:
取消安装Visual Studio Integration和Display Driver
点击下一步:
选择安装目录,以下是默认安装目录:
安装目录可以自己修改,但是需要自己创建新的目录或者选择已经存在的目录,我这里是全放在了D盘,大家可以根据自己的情况决定是否更改路径,一定要记住安装路径后续需要配置环境变量
确定安装目录后点击下一步进行安装:
点击下一步:
至此CUDA安装完成
3.下载安装cuDNN
进入官网下载:
https://developer.nvidia.com/rdp/cudnn-archive
选择合版本的cuDNN,由于我接下来要安装Tensorflow2.6.0所以选择v8.1版本的cuDNN,v8.1有4个子版本,由于CUDA要求是11.2版本的,所以只有以下框选的两个版本可以选择,这两个任选一个即可
我选择的是cuDNN v8.1.1 (Feburary 26th, 2021), for CUDA 11.0,11.1 and 11.2,选择Windows版本
cuDNN需要登录账户才能下载,没有账号的话自己注册一个即可,下面是下载成功的压缩包:
将下载好的cuDNN压缩包解压,并将解压后所有的文件复制粘贴至刚才CUDA的安装目录,注意是CUDA的安装目录,如果有提示文件重复则选择全部覆盖即可
3.配置CUDA环境变量
在系统变量的Path中添加环境变量:
需要添加以下环境变量,前两项一般会自动添加,若没有则自己添加,注意要根据自己的安装目录进行添加
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib
D:\Program Files\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
至此CUDA安装结束
三、创建Anaconda虚拟环境并安装Tensorflow
Anaconda安装完成之后,打开Anaconda Prompt软件。Windows系统用户按win键在开始菜单找到Anoconda3文件,里面就有Anaconda Prompt软件,后续涉及到的conda命令都是在Anaconda Prompt中执行的
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
进入创建好的虚拟环境:
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
keras2.6.0安装成功
尝试导入tensorflow测试是否安装成功:
先输入python进入python命令行,再输入import tensorflow as tf:
结果提示protobuf版本太高,安装3.20.0版本的protobuf
pip install protobuf==3.20.0
再次进行测试:
依次输入以下命令:若结果显示True则说明Tensorflow环境已经配置完成,可以使用GPU进行加速了
python
import tensorflow as tf
tf.test.is_gpu_available()
结果为True,至此终于配置完整
tips:如果需要用conda命令安装第三方库,为了加快安装进度可以换为国内的镜像,以下是具体步骤:
查看当前默认的下载镜像:
conda config --show channels
结果为defaults即默认镜像
依次输入以下命令添加清华镜像:注意最好使用清华镜像,使用其他源如阿里云镜像安装第三方库时可能会报错
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
conda config --set show_channel_urls yes
再次查看源,结果显示已经成功添加了清华镜像:
注:也可以通过修改文件的方式修改conda的默认下载镜像,用记事本打开C:\Users\你自己的电脑用户名\.condarc,修改.condarc文件内容改为以下内容(这里以清华源为例):
注意:.condarc文件默认情况下是不存在的,但当用户第一次运行 conda config命令时自动创建该文件,因此第一次配置时建议使用命令行方式
四、在Pycharm中添加创建的虚拟环境
在Pycharm中依次点击设置–>Python解释器–>添加Python解释器–>Conda环境,进入如下界面:
选择Conda可执行文件的路径,这里选择的是D:\Program Files\Anaconda3\condabin\conda.bat,即找到conda.bat的路径,然后点击加载环境则会出现所有创建的虚拟环境,如下图:这里选择创建的虚拟环境tensorflow_2.6后点击确定:
如果没有找到conda.bat也可以选择conda.exe的路径作为Conda可执行文件的路径来加载Anaconda虚拟环境,如我这里的是D:\Program Files\Anaconda3\Scripts\conda.exe,结果都是一样的:
还可以在系统解释器中尝试加载解释器,这里要选择你要添加的虚拟环境的解释器路径,即虚拟环境中python.exe的路径
如果以上方法点击确定后并没有出现刚刚选择的虚拟环境tensorflow_2.6的解释器,则尝试新建一个项目并自定义环境,具体设置如下最后点击创建就会发现新建项目的解释器为tensorflow_2.6的解释器并且在其他项目中也可以选择使用这个解释器了:
至此全部工作完成
注意事项
1.在已经配置好Tensorflow的虚拟环境中再下载其他第三方库时一定要注意库的版本符合当前版本的Tensorflow的要求并且安装时要指定库的版本号否则会默认安装最新版本,最终导致库发生冲突无法正常使用Tensorflow
2.不建议在环境变量中添加名为:PYTHONPATH的环境变量,否则在Python的搜索路径中PYTHONPATH对应的路径优先级高于Anaconda中的路径,这会导致在Anaconda创建的虚拟环境运行程序时优先使用PYTHONPATH对应的路径下的库,从而因为版本问题报错,这样创建虚拟环境就失去意义
例如:我添加了名为PYTHONPATH,值为D:\Program Files\Python\Package\site-packages的环境变量
查看Python的搜索路径发现D:\Program Files\Python\Package\site-packages优先级比Anaconda的路径高,这会导致即使在Anaconda创建的虚拟环境运行程序时也优先调用D:\Program Files\Python\Package\site-packages路径的库,从而容易出错
如果需要在此基础上安装sklearn库,特别要注意版本和安装顺序问题,安装sklearn之前先把其他依赖库安装好,具体命令和顺序如下:
1.安装matplotlib,这个库一般都会被用到来画图
pip install matplotlib==3.5.3
2.安装scipy
pip install scipy==1.10.1
3.安装scikit-learn,sklearn库的名字叫scikit-learn,不要写成pip install sklearn了
pip install scikit-learn=1.3.2
4.安装pandas
pip install pandas==1.3.5
当然,这些库的版本并不是只能是这些,其他版本可自行探索文章来源:https://www.toymoban.com/news/detail-855751.html
以下是与2.6.0版本的tensorflow不会发生冲突的一些库的版本号,必要时可参考文章来源地址https://www.toymoban.com/news/detail-855751.html
absl-py==0.15.0
astunparse==1.6.3
cachetools==5.3.1
certifi==2023.5.7
charset-normalizer==3.1.0
clang==5.0
contourpy==1.0.7
cycler==0.11.0
flatbuffers==1.12
fonttools==4.39.4
gast==0.4.0
google-auth==2.19.1
google-auth-oauthlib==1.0.0
google-pasta==0.2.0
grpcio==1.54.2
h5py==3.1.0
idna==3.4
importlib-metadata==6.6.0
importlib-resources==5.12.0
joblib==1.2.0
keras==2.6.0
Keras-Preprocessing==1.1.2
kiwisolver==1.4.4
Markdown==3.4.3
MarkupSafe==2.1.3
matplotlib==3.3.4
numpy==1.19.5
oauthlib==3.2.2
opt-einsum==3.3.0
packaging==23.1
pandas==1.1.4
Pillow==9.5.0
protobuf==3.20.1
pyasn1==0.5.0
pyasn1-modules==0.3.0
pyparsing==3.0.9
python-dateutil==2.8.2
pytz==2023.3
requests==2.31.0
requests-oauthlib==1.3.1
rsa==4.9
scikit-learn==1.2.2
scipy==1.10.1
seaborn==0.12.2
six==1.15.0
tensorboard==2.12.3
tensorboard-data-server==0.7.0
tensorflow==2.12.0
tensorflow-estimator==2.12.0
tensorflow-gpu==2.6.0
termcolor==1.1.0
threadpoolctl==3.1.0
typing-extensions==3.7.4.3
tzdata==2023.3
urllib3==1.26.16
Werkzeug==2.3.6
wrapt==1.12.1
zipp==3.15.0
到了这里,关于配置Tensorflow使用CUDA进行GPU加速(超详细教程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!