win10+Anaconda+CUDA+CUDNN+Tensorflow-gpu+CUDA多版本共存总结
在配置不同环境时,需要不同版本的python、Pytorch、Tensorflow等,conda可以创建独立的虚拟环境,使不同环境互相独立,不受影响。用GPU跑深度学习时,不同框架和版本需要安装不同的CUDA和cudnn,不同CUDA对应有最低的显卡驱动要求。
一、Tensorflow与Python、CUDA、cudnn 对应版本
Tensorflow和Python、CUDA、cudnn 对应版本:https://tensorflow.google.cn/install/source_windows?hl=en
二、显卡驱动安装/更新
显卡驱动:根据自己显卡选择下载安装,显卡驱动版本大于等于CUDA要求的版本就可以了,通常安装最新的显卡驱动。(一般电脑已经安装,只需确认或更新就行)
显卡驱动下载地址:https://www.nvidia.com/Download/index.aspx?lang=en-us
CUDA与显卡驱动对应关系:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
查看当前显卡驱动支持的最高CUDA版本,当要求的CUDA高于这个版本时,需要更新显卡驱动。
打开NVIDIA控制面板→选择左下角的系统信息→组件
三、CUDA安装
CUDA是NVIDIA推出的用于自家GPU的并行计算框架,在英伟达官网中CUDA就是命名为CUDA ToolKit的软件
CUDA下载地址: https://developer.nvidia.com/cuda-toolkit-archive
根据Tensorflow与Python、CUDA、cudnn 对应版本
选择下载,这里以Tensorflow_gpu-2.2.0为例,下载CUDA10.1安装
安装
1、双击下载的安装包,选择路径,这里路径为临时路径,安装完成会自动删除,点击ok;
2、点击“同意并继续”→选择自定义安装并下一步→安装过其他版本时,只勾选第一个CUDA进行安装,下一步→下一步,等待安装完成关闭(精简安装也可以,我目前没有遇到什么错误);
3、安装完成会自动添加环境变量
验证:nvcc -V
查看当前CUDA版本,如下安装成功。
四、cudnn安装
cudnn是用来辅助深度神经网络计算用的。
cudnn下载地址: https://developer.nvidia.com/rdp/cudnn-archive
根据Tensorflow与Python、CUDA、cudnn 对应版本
,这里选择cudnn7.6.2安装
安装
1、解压下载的cudnn文件,将文件夹中bin、include、lib三个目录复制到CUDA安装目录,则安装完成。
2、验证cudnn是否安装成功
在CUDA安装目录下进入 extras→demo_suite,在路径中输入 cmd 打开命令行窗口
分别输入 bandwidthTest.exe和deviceQuery.exe, 输出下图则安装成功。
五、Anaconda安装和常用conda命令
Anaconda是一个包含了python、conda和其他科学包的python发行版本,安装anaconda后,可以一键拥有python和一些常用的科学包,不用再一个个单独安装;其中的conda可以方便python环境的管理,针对不同的项目和要求,如运行别人的项目时,可以新建一个环境,配置不同框架、不同版本的环境,不同项目环境之间就不会互相影响了。
(一)、下载安装
Anaconda下载地址: https://www.anaconda.com/products/individual
打开官网下载地址,选择对应的版本下载,可以直接点击Download或选择其他版本。
安装
1、双击打开下载好的安装包,Next→I Agree→选择Just Me,Next(需要为多个用户安装时,选择All Users)→点击Browse…选择安装位置,Next;
2、这里选择自动将Anaconda添加到环境(也可后面手动添加环境变量,目前自动添加没有遇到什么问题,所以自动添加),点击Install开始安装,等待安装完成;
查看Anaconda是否安装成功
方法一:“开始” ——> “Anaconda3(64-bit)” ——> “Anaconda Navigator”,成功启动Anaconda Navigator则说明安装成功。
方法二:“开始” —— “Anaconda3(64-bit)” —— “右键以管理员身份运行Anaconda Prompt” ,能成功打开且能看到(base)则安装成功。
方法三:win+R,输入cmd打开控制台,输入conda --version(或者conda -V)
命令后回车,显示conda信息则安装成功。
(二)、conda常用命令
conda update -n base conda # 更新conda到最新
conda list # 查看已有库
conda config --add channels [网址] # 添加镜像(网址替换为要添加的镜像源)
# 清华源
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/free/
# 北京外国语大学
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
# 北京大学
conda config --add channels https://mirrors.pku.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.pku.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.pku.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes # 显示channel的url,可以知道包的安装来源
conda config --show channels # 查看已经添加的镜像
conda config --remove channels [网址] # 删除镜像(同添加)
conda config --remove-key channels # 恢复默认源
conda update [name] # 更新某个包,[name]为要更新的包名
conda install --use-local [packagename] # conda本地安装包(先cd进入到包的路径下)
conda info –e # 查看已安装的虚拟环境,*为当前所在环境,没有创建时只有一个base环境
conda create -n [name] python=3.6 # 创建python版本3.6,名为[name]的虚拟环境(python版本和name替换为自己的)
conda activate [name] # 激活环境
conda deactivate [name] # 退出环境
conda remove -n [name] --all # 删除已创建的虚拟环境
六、创建环境和CUDA切换
(一)、创建新环境
前面安装好Tensorflow_gpu-2.2.0对应的CUDA和cudnn后,现在创建一个独立的新环境,安装Tensorflow_gpu-2.2.0
1、conda info -e
:查看已有的环境,避免新环境重名
2、conda create -n tensorflow2 python=3.7
:创建名为tensorflow2 ,python版本3.7的环境
3、conda activate tensorflow2
:激活新建的环境
4、pip install tensorflow-gpu==2.2.0
:安装Tensorflow_gpu-2.2.0
5、验证
验证tensorflow 是否安装好:分别输入Python
→import tensorflow as tf
,没报错则成功。
(二)、可能报错的问题:If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
解决:pip install -U protobuf==3.20.0
将protobuf 4.21.1版本降级到3.20.x
查看是否支持CUDA和GPU:
tf.__version__
:查看tensorflow版本
tf.test.is_built_with_cuda()
:是否支持CUDA
tf.test.is_built_with_gpu_support()
:是否支持GPU
len(tf.config.list_physical_devices('GPU'))
:显卡数量,至少为1
(三)、CUDA切换
我之前安装的环境CUDA为11.8,现在新环境Tensorflow_gpu-2.2.0,更改了CUDA为10.1+cudnn7.6,如果要切换回原来11.8的版本,则对环境变量进行修改即可。
1、系统变量的 Path:需要用哪个版本的CUDA,就将其上移到最上方;
2、CUDA_PATH:将CUDA_PATH更改为对应版本。
3、NVCUDASAMPLES_ROOT:将NVCUDASAMPLES_ROOT更改为对应版本。
4、Win + R 输入 cmd打开命令行窗口,输入nvcc -V
:查看是否切换成功