教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】

时间:2022-01-12 00:58:15

【强烈建议收藏的干货】 更新概述: 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】 经过收集资料、阅读文章、试错,最终 如愿以偿,故而以此篇文章记录一下。 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】 之前,我想着时代和技术总要往前发展的,学,就要跟上版本【Python2旧版本.x、pyecharts旧版本0.5x等旧版本库不维护的事实历历在目,论自学学习新版本的重要性】,才不会被淘汰,新版本稳定而且改进很多、算法也多,不可避免的是可能有些bug,不过不用担心,你只要用的是稳定版,那么这些bug一般在发布之前就已经解决了,而且也不一定要用非常非常新的,跟得上脚步就可以了。(当然,有些公司在用的一些项目是旧版本的,可能你需要去学旧版本的TF,无可厚非,不过这里不谈这种外部条件)

为什么是GPU版本? CPU擅长逻辑控制,是串行计算,而GPU擅长高强度计算,是并行计算。有卡不好好用,也太可惜了。 CPU版本安装不受显卡CUDA版本限制,随便装随便用,过程不复杂、不需要安装CUDA等组件,一句conda install xxx 就结束。

本文将会从0到1大致记录整个版本选择、框架安装的关键过程。【】

看完前面这些Fei话,接下来是本文的主要内容: 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】

慢,另外插一段话: 之前我也尝试过多个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的: 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】 显卡算力官方参考表:点击查看显卡算力 下面是我查看(红框框是1050的算力为6.1,为什么是1050,因为我没钱买卡)的【你可以点进去查看你的】: 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】

本文要做的就是给你提供一个选择思路和选择方案,脱离这种思维禁锢,让你在多个版本之间快乐的翱翔 切换使用。

(二)、显卡驱动、CUDA、cudnn之间的关系:

首先要明确的是这三者不是同一个东西!不是同一个东西!不是同一个东西! 看着名字就不一样。。。

1、 关于NVIDIA (英伟达)显卡驱动版本与CUDA版本的疑惑:

(1).显卡驱动和CUDA版本绑定在一起,也就是说CUDA内置了显卡驱动,不需要去额外下载显卡驱动安装。如下图:10.2.89CUDA版本,后面的441.xx是显卡驱动版本。你安装好CUDA之后,显卡驱动会自动帮你装上。 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】 当然,你要是非要把它两分开装的话,你可以去 NVIDIA CUDA官网 查看版本对应关系,然后分别下载安装。【点进去往下滑就看见了,不建议分开装,原装内置的才是最好的】 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】

(2).CUDA同一个大版本之间具有向下兼容的特点:即CUDA10.2兼容 CUDA10.1、CUDA10.0,意思就是CUDA10.1、CUDA10.0下能安装使用的DL框架版本,在CUDA10.2版本下都能安装使用,但是需要进行一些改动。【这个很重要,全文重点】

注意, 能否让你的电脑成为炼丹炉的前提是你的显卡算力达标,这个标指的是DL框架的要求。【一般都会达到要求的吧,可以自己看一下PC上的NVIDIA显卡的控制面板上的系统信息,看看你的卡是什么,然后去查看你卡的算力是多少】

2、CUDA、CUDNN、显卡驱动的密切关联

参考:

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和TensorFlow版本对应关系 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】

cuda和paddlepaddle

cuda和paddlepaddle版本对应关系

cuda和Pytorch

cuda和pytorch版本对应关系

四、在虚拟环境安装多个版本兼容的两种方法

先概念性介绍这两个方法,后续会是详细的安装解释:

  • 方法1:安装CUDA10.2,然后CUDA10.2是兼容CUDA10.1和CUDA10.0,但是需要一些安装技巧,其实就是复制粘贴然后重命名。
  • 方法2:不安装CUDA,只安装显卡驱动,然后在anaconda的虚拟环境中用conda安装CUDA和CUDNN。

1.在这里,我验证过了,第一种方式和第二种方式都有一个问题,那就是: 使用pycharm的时候,创建项目不能使用Virtualenv,而是必须使用已存在的conda环境作为环境的主体。 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】

第二种方式的话,还有问题就是【但是,貌似并不影响】: 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】

五、Anaconda安装【建议自带python3.7的那个2020.02】

下载地址:anaconda官网下载

下载地址:清华镜像站下载

一直点击下一步进行安装就可以了。 安装把环境变量设置一下。【不会设置环境变量的自行百度】 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】

六、方法一:需要安装CUDA.exe软件的方式

CUDA官网下载 注意,显卡驱动是和CUDA绑定在一起的,就是CUDA内置的。如果安装完CUDA之后发现没有显卡驱动的话,或者检测出没有显卡驱动的话,就去下载显卡驱动安装【要结合DL框架和CUDA所需要的最低版本喔】: 显卡驱动下载

另外,这种 方式的全套软件我已打包到百度云网盘上,去官网下载太慢,需要的自取:【或者也可以加群取】

方法一的全套软件包,提取码:1998

(一)下载安装CUDA10.2和CUDNN7.6.5

下载,安装一直点击下一步安装就好了。cudnn的话解压到CUDA10.2(以10.2为例子)的文件夹里面就好了,然后配置环境变量。【这里我卸载了CUDA所以,没有截图】

CUDA和CUDNN安装过程可以参考这里:CUDA安装和CUDNN

参考TensorFlow官网要求和常识设置环境变量: 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】

环境变量大概是这些:

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.dllcudart64_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,那么你将会得到报错】 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】方法一就是这样了。这样就能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】 教程:Windows10下如何安装使用多版本Tensorflow2.x/Pytorch/paddlepaddle的GPU版本[和CUDA的安装及问题详解]【亲测可行】【详细和持续更新】到此,这是一个完整的无需CUDA.exe的安装方法。


八、Pytorch-GPU版安装

torch官网

安装最新版:

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的安装及问题详解]【亲测可行】【详细和持续更新】