教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]亲测可行详细和持续更新
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]亲测可行详细和持续更新相关的知识,希望对你有一定的参考价值。
【强烈建议收藏的干货】 更新概述: 1.待定 其它用到的: 1.anaconda包与环境的管理
注意: 单独安装cudatoolkit的指定版本需要加-c conda-forge
:
【推荐先安装cudatoolkit的指定版本然后再安装深度学习框架】
conda install cudatoolkit=11.2 -c conda-forge
conda install cudnn=8.1 -c conda-forge
conda install -c conda-forge cudatoolkit=11.2 cudnn=8.1.0
tensorflow版本从2.x开始不再区分CPU版和GPU版。
一、本文初衷
鄙人最初是学TensorFlow2.x的,然后最近由于学术界很多新算法都是pytorch实现的,然后最近想去学学pytorch,后来发现paddlepaddle在国内的发展数一数二是在太强了然后也想接触一下PaddlePaddle这个百度的深度学习框架,因为他有很多现成模型、开源模型。
但是,不幸的是鄙人原来使用的是CUDA10.0,无法安装CUDA10.0以上版本支持的DL框架版本。所以鄙人决定进行一番尝试,让PC兼容多个DL框架、以及多个DL框架的版本,是GPU版本。【比如CUDA10.2支持TensorFlow GPU 2.0.0】 经过收集资料、阅读文章、试错,最终 如愿以偿,故而以此篇文章记录一下。 之前,我想着时代和技术总要往前发展的,学,就要跟上版本【Python2旧版本.x、pyecharts旧版本0.5x等旧版本库不维护的事实历历在目,论自学学习新版本的重要性】,才不会被淘汰,新版本稳定而且改进很多、算法也多,不可避免的是可能有些bug,不过不用担心,你只要用的是稳定版,那么这些bug一般在发布之前就已经解决了,而且也不一定要用非常非常新的,跟得上脚步就可以了。(当然,有些公司在用的一些项目是旧版本的,可能你需要去学旧版本的TF,无可厚非,不过这里不谈这种外部条件)
为什么是GPU版本?
CPU擅长逻辑控制,是串行计算,而GPU擅长高强度计算,是并行计算。有卡不好好用,也太可惜了。
CPU版本安装不受显卡CUDA版本限制,随便装随便用,过程不复杂、不需要安装CUDA等组件,一句conda install xxx
就结束。
本文将会从0到1大致记录整个版本选择、框架安装的关键过程。【】
看完前面这些Fei话,接下来是本文的主要内容:
慢,另外插一段话: 之前我也尝试过多个DL框架GPU版本共存,但是我那种方式太麻烦,是通过安装多个CUDA和CUDNN来实现,每次换虚拟环境使用不同DL框架的不同版本、同DL框架的不同版本的时候都要且切换 CUDA+CUDNN的环境变量。属实麻烦。本文不采取这种方式, 所以,大家也不要那样做,不要装多个cuda,那样做很麻烦的,而且稍有忘记你就忘记换环境变量顺序了。
二、本文更新情况
- 2021.11.02 >>> 更新到三.(二)字数4655
三、关于CUDA和DL框架版本之间的各种关系
(一)、关于选择:
从开发者角度来看,你进行选择的角度可能是这两种:
- 从DL框架版本 选 CUDA版本+Cudnn版本;(就是比如你自己想用tf2.1.0版本,然后你去选择对应的CUDA10.1版本安装)
- 从CUDA版本+Cudnn版本 选 DL框架版本;(就是比如你自己有CUDA10.0版本,然后你去选择对应版本的TF2.0版本使用)
但是,你其实不必被这种思维禁锢,因为CUDA版本之间具有兼容性,CUDA版本对DL框架版本也具有兼容性,但是记住CUDA11.x版本不兼容CUDA10.x版本,因为这是一个大版本的跨度,有很多接口函数都变了。
注意:有个东西叫显卡算力。这个东西才是决定你的电脑能不能成为你的炼丹炉的关键,因为不同DL框架的不同版本都会有 显卡算力的不同要求。 比如paddlepaddle的: 显卡算力官方参考表:点击查看显卡算力 下面是我查看(红框框是1050的算力为6.1,为什么是1050,因为我没钱买卡)的【你可以点进去查看你的】:
本文要做的就是给你提供一个选择思路和选择方案,脱离这种思维禁锢,让你在多个版本之间快乐的翱翔 切换使用。
(二)、显卡驱动、CUDA、cudnn之间的关系:
首先要明确的是这三者不是同一个东西!不是同一个东西!不是同一个东西! 看着名字就不一样。。。
1、 关于NVIDIA (英伟达)显卡驱动版本与CUDA版本的疑惑:
(1).显卡驱动和CUDA版本绑定在一起,也就是说CUDA内置了显卡驱动,不需要去额外下载显卡驱动安装。如下图:10.2.89CUDA版本,后面的441.xx是显卡驱动版本。你安装好CUDA之后,显卡驱动会自动帮你装上。 当然,你要是非要把它两分开装的话,你可以去 NVIDIA CUDA官网 查看版本对应关系,然后分别下载安装。【点进去往下滑就看见了,不建议分开装,原装内置的才是最好的】
(2).CUDA同一个大版本之间具有向下兼容的特点:即CUDA10.2兼容 CUDA10.1、CUDA10.0,意思就是CUDA10.1、CUDA10.0下能安装使用的DL框架版本,在CUDA10.2版本下都能安装使用,但是需要进行一些改动。【这个很重要,全文重点】
注意, 能否让你的电脑成为炼丹炉的前提是你的显卡算力达标,这个标指的是DL框架的要求。【一般都会达到要求的吧,可以自己看一下PC上的NVIDIA显卡的控制面板上的系统信息,看看你的卡是什么,然后去查看你卡的算力是多少】
2、CUDA、CUDNN、显卡驱动的密切关联
参考:
- 官网介绍CUDA
- 显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?
- conda安装的cudatoolkit与Nvidia官方提供的cudatoolkit的区别
CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。CUDA是一个并行计算平台和编程模型,能够使得使用GPU进行通用计算变得简单和优雅。
CUDNN(CUDA Deep Neural Network library):是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。如果你要用GPU训练模型,CUDNN不是必须的,但是一般会采用这个加速库。
概括来说:
- CUDA 是NVIDIA专门负责管理分配运算单元的框架;
- CUDNN是用于深层神经网络的GPU加速库;
可以这样来形容这三者的关系:
显卡驱动(显卡)是一个炼丹炉,而CUDA看作是炼丹炉傍边的一个工作台,上面配有很多工具,如锤子、螺丝刀、斧头、药盒、木头、打火机等。cuDNN是基于CUDA的深度学习GPU加速库(CUDA可以用来实现cudnn定义的各种接口,早期就是用CUDA实现的,后来伴随这发展为了更快,使用更底层,更靠近硬件,更难用的工具来构建,比如汇编语言),内部封装了卷积等算子的库,有了它才能在GPU上完成深度学习的计算,cudnn就像是一种很厉害的火焰(比如《斗破苍穹》中的异火),让显卡熊熊燃烧,加速GPU运算。
3、cudatoolkit是什么?
cudatoolkit编译cu文件,提供cuda的各种库。另外,conda安装的cudatoolkit 与Nvidia官方提供的cudatoolkit是不一样的。不过,这个不需要深究,你只要知道cudatoolkit可以通过anaconda的conda安装,且cudatoolkit的版本需要和CUDA一致就可以了。
另外,该工具和显卡驱动有关系: 版本对应对照表
(三)、CUDA和DL框架之间的关系:
cuda和TensorFlow
cuda和paddlepaddle
cuda和Pytorch
四、在虚拟环境安装多个版本兼容的两种方法
先概念性介绍这两个方法,后续会是详细的安装解释:
- 方法1:安装CUDA10.2,然后CUDA10.2是兼容CUDA10.1和CUDA10.0,但是需要一些安装技巧,其实就是复制粘贴然后重命名。
- 方法2:不安装CUDA,只安装显卡驱动,然后在anaconda的虚拟环境中用conda安装CUDA和CUDNN。
1.在这里,我验证过了,第一种方式和第二种方式都有一个问题,那就是: 使用pycharm的时候,创建项目不能使用Virtualenv,而是必须使用已存在的conda环境作为环境的主体。
第二种方式的话,还有问题就是【但是,貌似并不影响】:
五、Anaconda安装【建议自带python3.7的那个2020.02】
下载地址:anaconda官网下载
下载地址:清华镜像站下载
一直点击下一步进行安装就可以了。 安装把环境变量设置一下。【不会设置环境变量的自行百度】
六、方法一:需要安装CUDA.exe软件的方式
CUDA官网下载 注意,显卡驱动是和CUDA绑定在一起的,就是CUDA内置的。如果安装完CUDA之后发现没有显卡驱动的话,或者检测出没有显卡驱动的话,就去下载显卡驱动安装【要结合DL框架和CUDA所需要的最低版本喔】: 显卡驱动下载
另外,这种 方式的全套软件我已打包到百度云网盘上,去官网下载太慢,需要的自取:【或者也可以加群取】
(一)下载安装CUDA10.2和CUDNN7.6.5
下载,安装一直点击下一步安装就好了。cudnn的话解压到CUDA10.2(以10.2为例子)的文件夹里面就好了,然后配置环境变量。【这里我卸载了CUDA所以,没有截图】
CUDA和CUDNN安装过程可以参考这里:CUDA安装和CUDNN
参考TensorFlow官网要求和常识设置环境变量:
环境变量大概是这些:
C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.0\\bin;%PATH%
C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.0\\extras\\CUPTI\\lib64;%PATH%
C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.0\\include;%PATH%
C:\\tools\\cuda\\bin;%PATH%
(二)CUDA.exe在大版本里保持兼容性的关键2步【全文重点】
让CUDA10.2能安装CUDA10.1、CUDA10.0支持的DL框架版本中(比如让CUDA10.2支持tf2.0.0),最重要的 2 步如下!
1.在CUDA的安装目录下找到 文件 cudart64_102.dll
,将她复制粘贴两份,分别重命名为:cudart64_101.dll
和cudart64_100.dll
。到此,这一步就完成了。
2.在anaconda中创建虚拟环境之后,安装CUDA10.2、CUDA10.1、CUDA10.0中支持的任意一个DL框架和版本。 比如:
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch-lts
conda install cudnn
比如:
conda install tensorflow-gpu=2.3.0 cudatoolkit=10.1
conda install cudnn
注意:cudatoolkit 就是相当于 CUDA。先安装cudatoolkit和DL框架,最后安装cudnn。安装完这三个之后,还要安装一下numpy的指定版本,numpy版本不能太新也不能太旧,建议。1.19.2或者1.19.4(反正是1.19.x最好)
pip install numpy==1.19.2
然后使用pycharm创建项目。在创建项目的时候这样选择、配置解释器才行: 【注意,如果你要创建新环境到项目里面的env文件夹的话、那么pycharm就会去寻找环境变量的CUDA,也就是10.2,那么你将会得到报错】 方法一就是这样了。这样就能CUDA就能在一个大版本号里面支持向下兼容了。比如CUDA10.2是主体软件,然后可以用TensorFlow GPU 2.0.0
七、方法二:无需安装CUDA.exe软件的方式
这种方式无需下载CUDA.exe软件安装和下载cudnn,因为anaconda已经可以使用conda安装cuda和cudnn。这种方法如下:
(一)收集信息并安装虚拟环境
1.查看你想安装的DL框架的版本,需要什么CUDA版本和CUDNN版本和Python版本。 2.创建虚拟环境,指定Python版本,在虚拟环境里面安装你想安装的DL框架的DL版本和与其对应的CUDA版本、CUDNN版本。 比如:
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch-lts
conda install cudnn
比如:
conda install tensorflow-gpu=2.3.0 cudatoolkit=10.1
conda install cudnn
注意:cudatoolkit 就是相当于 CUDA。先安装cudatoolkit和DL框架,最后安装cudnn。安装完这三个之后,还要安装一下numpy的指定版本,numpy版本不能太新也不能太旧,建议。1.19.2或者1.19.4(反正是1.19.x最好)
pip install numpy==1.19.2
(二)保持兼容性的关键1步【全文重点】
然后使用pycharm创建项目。在创建项目的时候这样选择、配置解释器才行: 【注意,如果你不这样做,那么你将会找不到cudatoolkit和cudnn,因为pycharm里面无法使用pip安装cudatoolkit和cudnn,pycharm的操作界面和依赖文件txt也无法安装,所以必须这样,不然你将会得到报错说 找不到cudatoolkit和cudnn】 到此,这是一个完整的无需CUDA.exe的安装方法。
八、Pytorch-GPU版安装
安装最新版:
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
conda install cudnn
也可以按照LTS(长期维护版,好像是到2025年吧,忘记了):
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch-lts
conda install cudnn
九、paddlepaddle-GPU版安装
paddlepaddle官网 安装:
conda install paddlepaddle-gpu==2.1.3 cudatoolkit=10.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
conda install cudnn
十、Tensorflow-GPU版安装
TensorFlow的官网安装:在这里 指定Python版本(建议py3.7)创建虚拟环境之后,安装如下:
conda install tensorflow-gpu=2.3.0 cudatoolkit=10.1
conda install cudnn
或者想用2.0.0的话:
conda install tensorflow-gpu=2.0.0 cudatoolkit=10.0
conda install cudnn
想用什么版本的自己查版本对应关系。
注意:cudatoolkit 就是相当于 CUDA。先安装cudatoolkit和DL框架,最后安装cudnn。安装完这三个之后,还要安装一下numpy的指定版本,numpy版本不能太新也不能太旧,建议。1.19.2或者1.19.4(反正是1.19.x最好)
pip install numpy==1.19.2
十一、关于报错:【持续更新,欢迎关注】
对于paddlepaddle-GPU和Pytorch-GPU,其实问题基本没有。这里记录的主要是TensorFlow的问题。
问题1:在pycharm里面import TensorFlow2.0.0失败OSError: [WinError 126] 找不到指定的模块。
问题链接:这呢 已经解决,是文件缺失,vc++runtime缺失,原因是此前进行过一次清理缺损包的操作。 解决方法: 第一种方法:直接conda安装回来; 第二种方法:删掉虚拟环境,如何update conda,然后重新构建虚拟环境。
问题2:tensorflow.python.framework.errors_impl.InternalError: cudaGetDevice() failed. Status: cudaGetErrorString symbol not found.
W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library cudart64_100.dll; dlerror: cudart64_100.dll not found
Traceback (most recent call last):
File "D:/Desktop/carbon_emissions_lstm/Univariate_prediction.py", line 41, in <module>
print(tf.test.is_gpu_available())
File "C:\\Users\\chenruhai\\anaconda3\\envs\\tf20\\lib\\site-packages\\tensorflow_core\\python\\framework\\test_util.py", line 1432, in is_gpu_available
for local_device in device_lib.list_local_devices():
File "C:\\Users\\chenruhai\\anaconda3\\envs\\tf20\\lib\\site-packages\\tensorflow_core\\python\\client\\device_lib.py", line 41, in list_local_devices
for s in pywrap_tensorflow.list_devices(session_config=session_config)
File "C:\\Users\\chenruhai\\anaconda3\\envs\\tf20\\lib\\site-packages\\tensorflow_core\\python\\pywrap_tensorflow_internal.py", line 2249, in list_devices
return ListDevices()
tensorflow.python.framework.errors_impl.InternalError: cudaGetDevice() failed. Status: cudaGetErrorString symbol not found.
原因分析:这种情况是TensorFlowGPU在cmd能使用,但是在pycharm里面无法使用,是因为缺少了cudnn这个包。
注意:重点在这,如果你使用以下命令安装,那么该cudatoolkit和cudnn将不会安装在虚拟环境里面,你可以去pip list验证。
conda install cudatoolkit=10.0
conda install cudnn
所以你需要这样:
conda install -n tf20 cudatoolkit=10.0
conda install cudnn
当然最重要的还是由于pycharm会去寻找环境变量,使用你需要使用已经存在的conda环境作为你项目的环境。【具体去看上面的方法一和方法二的第(二)步】
问题3:待定
以上是关于教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]亲测可行详细和持续更新的主要内容,如果未能解决你的问题,请参考以下文章
如何在windows10环境下安装Pytorch-0.4.1版本