CUDA及深度学习环境配置大全

文章目录

  • Anaconda
    • windows
    • linux
  • PyCharm
    • windows
    • linux
  • GPU&CUDA Driver&CUDA&cuDNN
    • GPU(显卡)
    • CUDA Driver(显卡驱动)
    • CUDA&cuDNN
      • 本地安装CUDA-Windows
      • 本地安装CUDA-Linux
      • conda安装CUDA
  • 版本对应关系
  • Pytorch
    • CPU版
    • GPU版
  • TensorFlow
    • CPU版
    • GPU版
      • conda CUDA
      • 本地CUDA

可能用到的文件:
链接:https://pan.baidu.com/s/1J_YWJXJPpTh-DgKFAlzeCA?pwd=afrx
提取码:afrx
复制这段内容后打开百度网盘手机App,操作更方便哦

Anaconda

Anaconda是专注于数据分析、能够对包和环境进行管理的Python发行版本,包含了conda、Python等多个科学包及其依赖项。

conda 是开源包(packages)和虚拟环境(environment)的管理系统:
1)包管理:可以使用 conda 来安装、更新 、卸载工具包。
2)虚拟环境管理:在conda中可以建立多个虚拟环境,用于隔离不同项目所需的不同版本的工具包。

windows

演示版本为4.10.3,文件Anaconda3-2021.11-Windows-x86_64.exe

常规安装流程,注意Advanced Installation Options这一页,有两种方式,选其中一种即可:

1)如下图1所示,两个都勾选,安装完成后,将在环境变量PATH中看到如图2所示的新增项。这种安装方法有用户反应安装失败或测试失败,可以尝试使用第2中方法(本人测试没有任何问题)。

CUDA及深度学习环境配置大全_第1张图片

CUDA及深度学习环境配置大全_第2张图片

2) 只勾选第2个,安装完成后,手动在环境变量PATH中添加如图2所示的新增项。

测试:

CUDA及深度学习环境配置大全_第3张图片

linux

演示版本为4.5.11,文件Anaconda3-5.3.0-Linux-x86_64.sh

# 执行安装程序,一直回车
bash Anaconda3-5.3.0-Linux-x86_64.sh

是否同意协议(默认no),输入yes

image-20220806095055557

(可能不出现)是否添加环境变量,有2种解决方案写在后面。

image-20220806112306631

是否安装VSCode,输入no

image-20220806095355853

(可能不出现)是否添加环境变量,有2种解决方案:
1)出现:输入yes(若输入no则等同于不出现,转2)),输入source ~/.bashrc立即生效
2)不出现:
修改环境变量 vim ~/.bashrc
在最后加上一行并保存(要修改成自己的路径) export PATH=/home/lu/anaconda3/bin:$PATH
立即生效 source ~/.bashrc

测试:

CUDA及深度学习环境配置大全_第4张图片

PyCharm

PyCharm是一种Python(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

windows

演示版本为专业版2021.3,文件pycharm-professional-2021.3.exe

常规安装,注意下面的Installation Options全选即可,安装完成需要重启系统。安装完成后将有下面两个新的环境变量被自动添加。

CUDA及深度学习环境配置大全_第5张图片

CUDA及深度学习环境配置大全_第6张图片

CUDA及深度学习环境配置大全_第7张图片

测试:

打开,新建一个项目,解释器选择anaconda环境下的python.exe

CUDA及深度学习环境配置大全_第8张图片

CUDA及深度学习环境配置大全_第9张图片

linux

演示版本为专业版2022.1,文件linux-pycharm-professional-2022.1.tar.gz

  1. 解压(解压之后的文件夹不能删除),然后在其bin目录下打开终端
  2. bash pycharm.sh安装
  3. 打开后固定到启动器,否则下次可能找不到在哪里打开

测试:

打开,新建一个项目,解释器选择anaconda环境下的python.exe

CUDA及深度学习环境配置大全_第10张图片

CUDA及深度学习环境配置大全_第11张图片

GPU&CUDA Driver&CUDA&cuDNN

CUDA 目前有两种不同的 API:Driver API 和 Runtime API,分别对应两个CUDA版本(最高支持的CUDA版本 和 正在使用的CUDA版本)。其中 Driver API及最高支持的API版本 在安装CUDA Driver时被确定,Runtime API和正在使用的CUDA版本 在安装cudatoolkit时被确定。通常将 Runtime API和正在使用的CUDA版本 称为CUDA例如CUDA 10.1,将 Driver API及最高支持的API版本 称为CUDA Driver,例如CUDA 11.6 Driver。

GPU(显卡)

纯硬件,深度学习一般使用NVIDIA GPU,作者测试Windows GPU 为 NVIDIA GTX 1050Ti,Linux 为 NVIDIA RTX 3060。

CUDA Driver(显卡驱动)

用来驱动显卡的程序,即GPU硬件所对应的软件。

根据显卡型号在官方网站可以下载驱动:https://www.nvidia.cn/Download/index.aspx?lang=cn#

CUDA及深度学习环境配置大全_第12张图片

Windows安装完驱动后,在 英伟达控制面板 帮助 系统信息 显示中可以看到 驱动程序版本,在组件中可以看到CUDA Driver版本,它的意思是现在所安装的显卡驱动程序 支持安装 CUDA 11.6.110及之前的所有版本,并不是已经安装了CUDA 11.6.110。

CUDA及深度学习环境配置大全_第13张图片

CUDA及深度学习环境配置大全_第14张图片

linux安装完驱动后,输入命令nvidia-smi可以看到 驱动程序版本(510.73.08)&CUDA Driver版本(11.6),同样它的意思是现在所安装的显卡驱动程序 支持安装 CUDA 11.6及之前的所有版本,并不是已经安装了CUDA 11.6

CUDA及深度学习环境配置大全_第15张图片

CUDA&cuDNN

CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。

cudatoolkit是CUDA开发工具包,有以下2种,应注意区分:
1)NIVDIA官网的cudatoolkit,下载后本地安装,较大(完整版),包含CUDA相关的开发(Development)、运行(Runtime)、调试(Nsight Systems、Nsight Compute)组件。网址为 https://developer.nvidia.com/cuda-toolkit-archive。
2)anaconda中的cudatoolkit,通过conda安装,较小(精简版),只包含CUDA的运行组件(Runtime)。命令为conda install cudatoolkit=???(一个等号)。
方法一安装完成后使用nvcc -V命令可以看到正在使用的CUDA版本,方法二则没有。

NVIDIA cuDNN是用于深度神经网络的GPU加速库,分别对应上面的2种cudatoolkit的安装方式为:
1)NIVDIA官网的cudatoolkit安装完成后,在官网下载对应版本的cuDNN,解压到CUDA的安装目录(同名文件夹将合并)。下载网址为https://developer.nvidia.com/rdp/cudnn-download。
2)anaconda中的cudatoolkit安装完成后,通过conda安装。命令为conda install cudnn=???(一个等号)。

本地安装CUDA-Windows

演示版本为CUDA10.1+cuDNN7.6.5,文件cuda_10.1.168_425.25_win10.exe和cudnn-10.1-windows10-x64-v7.6.5.32.zip

  1. 安装CUDA

    CUDA及深度学习环境配置大全_第16张图片

    # 添加系统变量
    
    变量名
        CUDA_PATH_V10_1
    变量值
        C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
    
    变量名
        CUDA_PATH
    变量值
        %CUDA_PATH_V10_1%
    
    变量名
        Path
    变量值
        %CUDA_PATH%\bin
        %CUDA_PATH%\include
        %CUDA_PATH%\lib
        %CUDA_PATH%\libnvvp
    
    # 实际起作用的是Path的新增值
    # 若安装了第2个CUDA版本例如11.3,则可以只新增一个 名CUDA_PATH_V11_3,值为其安装路径
    # Path不动,仅修改CUDA_PATH值 为CUDA_PATH_V10_1则使用10.1的CUDA,为CUDA_PATH_V11_3则使用11.3的版本,修改后可能需要重启环境/重启系统
    # 原理参考:Windows和Linux的环境变量 https://blog.csdn.net/qq_42283621/article/details/126079764
    
  2. 安装cuDNN

    将cudnn-10.1-windows10-x64-v7.6.5.32.zip压缩包解压,内容复制到CUDA安装路径的同名文件夹下即可。

  3. 测试

    在命令行模式下输入nvcc -V

    CUDA及深度学习环境配置大全_第17张图片

本地安装CUDA-Linux

演示版本为CUDA10.1+cuDNN7.6.5,文件cuda_10.1.105_418.39_linux.run和cudnn-10.1-linux-x64-v7.6.5.32.tgz

  1. 安装CUDA

    sh cuda_10.1.105_418.39_linux.run
    

    取消Driver(指的是CUDA Driver,如果已经安装即nvidia-smi有内容,那么这里应该取消),然后Install。

    CUDA及深度学习环境配置大全_第18张图片

    # 添加用户变量
    
    # vim ~/.bashrc
    
    export CUDA_HOME=/usr/local/cuda-10.1
    export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
    export PATH=$CUDA_HOME/bin:$PATH
    
    # source ~/.bashrc
    
    # 实际起作用的是LD_LIBRARY_PATH和PATH的新增值
    # 若安装了第2个CUDA版本例如11.3,则将CUDA_HOME改为CUDA 11.3的安装目录,source ~/.bashrc即可切换成功,LD_LIBRARY_PATH和PATH不用改动
    # 原理参考:Windows和Linux的环境变量 https://blog.csdn.net/qq_42283621/article/details/126079764
    
  2. 安装cuDNN

    将cudnn-10.1-linux-x64-v7.6.5.32.tgz压缩包解压,内容复制到CUDA安装路径的同名文件夹下即可。

  3. 测试

    在命令行模式下输入nvcc -V

    CUDA及深度学习环境配置大全_第19张图片

  4. 可能出现的问题

    1. Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.
    解决:apt install build-essential
    

conda安装CUDA

# 一个等号
conda install cudatoolkit=???
conda install cudnn=???

版本对应关系

版本对应要求:TensorFlow/PyTorch对应CUDA、CUDA对应cuDNN(TensorFlow/PyTorch与cuDNN无需直接对应,下载cuDNN时在网址https://developer.nvidia.com/rdp/cudnn-download很容易找到CUDA的对应版本)

CUDA PyTorch(pytorch) TensorFlow(tensorflow tensorflow-gpu)
10.0 1.2.0 1.1.0 1.0.0 2.0.0
10.1 1.7.0 1.6.0 1.5.0 1.4.0 2.1.0 2.2.0 2.3.0
10.2 1.11.0 1.10.0 1.9.0 1.8.0 1.7.0 1.6.0 1.5.0
11.0 1.7.0 2.4.0
11.1 1.8.0
11.2 2.5.0 2.6.0 2.7.0 2.8.0 2.9.0
11.3 1.12.1 1.11.0 1.10.0 1.9.0
11.6 1.12.1

Pytorch

Facebook推出的深度学习框架,新版本的Pytorch兼容老版本,学习简单使用方便,学术界广泛使用。

# 安装测试testpytorch.py

import torch

print(f'PyTorch版本为{torch.__version__}')
if torch.cuda.is_available():
    print(f'CUDA可用,版本为{torch.version.cuda}')
    if torch.backends.cudnn.is_available():
    	print(f'cuDNN可用,版本为{ torch.backends.cudnn.version()}')
    else:
        print('cuDNN不可用')
else:
    print('CUDA不可用')

if torch.cuda.is_available():
    a = torch.tensor(1, device='cuda')
    b = torch.tensor(2, device='cuda')
    print(a + b)
else:
    a = torch.tensor(1)
    b = torch.tensor(2)
    print(a + b)

CPU版

cpu版本直接无脑安装即可,无需GPU/CUDA Driver/CUDA/cuDNN

windows和linux相同

# 创建虚拟环境
> conda create -n torchcpu python=3.7
> conda activate torchcpu

# 安装(官方https://pytorch.org/get-started/locally/的安装命令)
> conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cpuonly -c pytorch

# 运行测试程序
> python testpytorch.py
# PyTorch版本为1.11.0
# CUDA不可用
# tensor(3)

GPU版

需要有GPU和GPU Driver,无需 本地安装CUDA和 本地安装cuDNN

windows和linux相同

pytorch自带cudnn,官方提供的安装命令中包含conda install … cudatoolkit=??? -c pytorch

某些版本(旧版本常见)对某些GPU不支持(例如pytorch1.7.0对于GTX 3060)。

# 创建虚拟环境
> conda create -n torchgpu python=3.7
> conda activate torchgpu

# 安装(官方https://pytorch.org/get-started/locally/的安装命令)
> conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch

# 运行测试程序
> python testpytorch.py
# PyTorch版本为1.11.0
# CUDA可用,版本为11.3
# cuDNN可用,版本为8200
# tensor(3, device='cuda:0')

TensorFlow

Geogle推出的深度学习框架,新老版本互相不兼容,推出时间早性能好,工业界广泛使用。

由于2020年之后Python2.7停止维护,故无法在win上安装tensorflow 1,linux上正常安装即可

# linux python2 tf1使用该测试程序,其他使用下面的测试程序
# 推荐使用conda命令安装,将自动下载对应的cudatoolkit和cudnn,
#    例如conda install tensorflow-gpu==1.15.0
# 运行该程序后,使用nvidia-smi命令查看是否有显存占用,
#    如果显存未占用可能需要再同时安装本地版的CUDA(cuda10.0 cudnn7.6,原因不祥)
import tensorflow as tf

print(tf.test.is_gpu_available())
sess = tf.Session()
for i in range(10000):
    a = tf.constant(1)
    b = tf.constant(2)
    print (sess.run(a + b))

# 安装测试testtensorflow.py

import tensorflow as tf

print(f'TensorFlow版本为{tf.__version__}')
if tf.test.is_gpu_available():
    print('CUDA可用')
    a = tf.constant(1).gpu()
    b = tf.constant(2).gpu()
    t = a + b
    print(t, t.device)
else:
    print('CUDA不可用')
    a = tf.constant(1)
    b = tf.constant(2)
    t = a + b
    print(t, t.device)

CPU版

cpu版本直接无脑安装即可,无需GPU/CUDA Driver/CUDA/cuDNN

windows和linux相同

# 创建虚拟环境
> conda create -n tfcpu python=3.7
> conda activate tfcpu

# 安装
> conda install tensorflow==2.3.0

# 运行测试程序
> python testtensorflow.py
# TensorFlow版本为2.3.0
# CUDA不可用
# tf.Tensor(3, shape=(), dtype=int32) /job:localhost/replica:0/task:0/device:CPU:0

GPU版

conda CUDA

需要有GPU和GPU Driver,无需 本地安装CUDA和 本地安装cuDNN

conda中存储的window和linux不同,window版本包括2.0.0、2.1.0、2.3.0、2.5.0、2.6.0,linux版本包括2.0.0、2.1.0、2.2.0、2.4.1。

通过conda命令安装cudatoolkit和cudnn

此安装方式某些版本(旧版本常见)对某些GPU不支持,可使用“本地CUDA”方法重试。

# 创建虚拟环境
> conda create -n tfgpu python=3.7
> conda activate tfgpu

# 安装
# linux(linux使用conda安装,将自动安装对应版本的cudatoolkit和cudnn)
> conda install tensorflow-gpu==2.2.0
# windows(windows使用conda安装,需手动安装对应版本的cudatoolkit和cudnn)
> conda install cudatoolkit=10.1
> conda install cudnn=7.6.5
> conda install tensorflow-gpu==2.3.0

# 运行测试程序(linux)
> python testtensorflow.py
# TensorFlow版本为2.2.0
# CUDA可用
# tf.Tensor(3, shape=(), dtype=int32) /job:localhost/replica:0/task:0/device:GPU:0

# 运行测试程序(windows)
> python testtensorflow.py
# TensorFlow版本为2.3.0
# CUDA可用
# tf.Tensor(3, shape=(), dtype=int32) /job:localhost/replica:0/task:0/device:GPU:0

本地CUDA

需要有GPU、GPU Driver、本地安装CUDA 和 本地安装cuDNN

pip中存储的window和linux相同,包含2.0.0、2.1.0、2.2.0、2.3.0、2.4.0、2.5.0、2.6.0、2.7.0、2.8.0、2.9.0。

# 按照上面“本地安装CUDA-Windows”的方法安装CUDA10.1+cuDNN7.6.5

# 创建虚拟环境
> conda create -n tfgpulocal python=3.7
> conda activate tfgpulocal

# 安装
> pip install tensorflow-gpu==2.3.0

# 运行测试程序
> python testtensorflow.py
# TensorFlow版本为2.3.0
# CUDA可用
# tf.Tensor(3, shape=(), dtype=int32) /job:localhost/replica:0/task:0/device:GPU:0
# 可能出现的问题
问题:TypeError: Descriptors cannot not be created directly.
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.
If you cannot immediately regenerate your protos, some other possible workarounds are:
 1. Downgrade the protobuf package to 3.20.x or lower.
 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
解决:pip install protobuf==3.20.1

你可能感兴趣的:(深度学习,个人开发)