从零开始的深度学习

主要内容:

  • 安装NVIDIA GPU驱动
  • 安装CUDA Toolkit
  • 安装cuDNN
  • 安装Conda(附带python)
  • 安装PyTorch
  • 安装TensorFlow

一、工具介绍

  • NVIDIA GPU驱动:nvidia-smi是nvidia 的系统管理接口,一般安装NVIDIA GPU驱动后即可使用。

  • CUDA Toolkit:CUDA(Compute Unified Device Architecture),是NVIDIA推出的运算平台,AMD也有类似的平台 ROCm,但并不成熟。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。

  • cuDNN:NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如Tensorflow、pytorch等。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。

  • Conda:Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。

    • 简单来说就是可以创建多个虚拟环境,各个虚拟环境互不干扰,在每个环境中可以装一个版本的python,以及各种版本的软件包。
  • PyTorch:PyTorch是一个开源的Python机器学习库,提供两个高级功能:1、具有强大的GPU加速的张量计算(如NumPy)。2、包含自动求导系统的深度神经网络。

  • TensorFlow:TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。

总结:NVIDIA GPU驱动、CUDA Toolkit、cuDNN作用是使用NVIDIA进行GPU加速,如果只使用CPU或AMD显卡则不需要。Conda方便后面环境配置和软件管理。PyTorch和TensorFlow是两个不同的深度学习框架,PyTorch学术界使用较为广泛,方便简单,易于上手。TensorFlow工业界使用较为广泛,泛用性好,被更多框架和平台支持。

二、环境配置

2.1、GPU相关(可选)

如果电脑GPU不是NVIDIA,则只能使用CPU,无法进行本小节的配置;是NVIDIA GPU,但只想使用CPU,也无需本小节的配置。建议初学者初期只使用CPU。

2.1.1、Windows

1. 下载安装NVIDIA GPU驱动

检查自己是否安装:打开cmd命令行,输入nvidia-smi,回车键运行,能运行成功说明已经正常安装。

image.png

其中Driver Version是驱动版本号,CUDA Version可能是支持的CUDA最高版本,并不是当前运行的CUDA版本。 ​

  1. 查看显卡型号

查看显卡:右键桌面 我的电脑(此电脑)->属性->设备管理器->显示适配器->查看显卡型号 如果桌面没有 我的电脑:右键桌面空白处->个性化->主题->桌面图标设置->勾选计算机

此处我的显卡是 NVIDIA Quadro K620 image.png

  1. 根据显卡型号下载驱动

下载地址:

image.png

根据型号选择对应驱动,点击搜索。跳转到下载页面下载即可。

  1. 安装NVIDIA GPU驱动

点击安装程序,选择安装包解压路径

image.png

选项自定义安装

image.png

选择要安装的组件,GPU加速只安装图形驱动程序即可;其他RTX桌面管理、HD音频驱动程序根据自己需要安装。

image.png

重启,检查nvidia-smi命令是否可以运行 ​

2. 下载安装CUDA Toolkit

根据NVIDIA驱动版本选择对应的CUDA下载,CUDA与NVIDIA版本对应关系如下: 官网文档:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

CUDA Toolkit Linux x86_64 Driver Version Windows x86_64 Driver Version
CUDA 11.0.3 Update 1 >= 450.51.06 >= 451.82
CUDA 11.0.2 GA >= 450.51.05 >= 451.48
CUDA 11.0.1 RC >= 450.36.06 >= 451.22
CUDA 10.2.89 >= 440.33 >= 441.22
CUDA 10.1 (10.1.105 general release, and updates) >= 418.39 >= 418.96
CUDA 10.0.130 >= 410.48 >= 411.31
CUDA 9.2 (9.2.148 Update 1) >= 396.37 >= 398.26
CUDA 9.2 (9.2.88) >= 396.26 >= 397.44
CUDA 9.1 (9.1.85) >= 390.46 >= 391.29
CUDA 9.0 (9.0.76) >= 384.81 >= 385.54

官网下载地址:https://developer.nvidia.com/cuda-toolkit-archive 选择合适的版本,目前10.x版本使用较多。

image.png

之后选择操作系统(Windows),指令集架构(x86_64),系统版本(Win10),安装类型(本地安装local)

image.png

选择完成后,点击下方的 Base Installer 下载安装;Base Installer下面的Patch补丁包可以不下载安装(可选)。

image.png

双击下载的安装包,选择解压路径,安装完成解压内容会自动删除; 解压完成,开始安装,选择自定义安装:

image.png

取消Driver components,即不安装驱动,前面已经安装。

image.png

选择安装路径并记住路径

image.png

安装完成,运行 nvcc -V ,能够正常执行,则说明安装成功。

image.png

3. 下载cuDNN

官网下载地址:https://developer.nvidia.com/rdp/cudnn-archive (下载需要注册NVIDIA账号) 根据CUDA版本选择cuDNN:

image.png

下载完成后解压只有一个cuda文件夹,文件夹下包含三个子文件夹:

image.png

将三个子文件夹中的文件,分别复制到CUDA Toolkit安装路径下对应的文件夹中

  • cuDNN中bin目录下的文件移动到 CUDA 的 bin 目录中
  • cuDNN目录中的 include 中的文件移动到 CUDA 的 include 目录中
  • cuDNN目录中的 lib 中的文件移动到 CUDA 的 lib 目录中
image.png

复制完成,验证是否成功 通过NVIDIA提供的 deviceQuery.exe 和 bandwidthTest.exe 来查看GPU的状态,两者均在安装目录的 extras_suite文件夹中

image.png

执行返回 Result = PASS 说明安装成功。

2.1.2、Linux

1. 安装NVIDIA GPU驱动

如果你使用Linux,我相信你应该有一定的基础,由于目前手上没有Linux设备,这里不再演示。 安装过程,可参考知乎专栏:https://zhuanlan.zhihu.com/p/59618999

2. 安装CUDA Toolkit

官网下载地址:https://developer.nvidia.com/cuda-toolkit-archive 根据系统和NVIDIA驱动版本,选择合适的CUDA。

image.png

选择完成后,下方给出下载安装指令,执行 Base Installer 进行下载安装;Base Installer下面的Patch补丁包可以不下载安装(可选)。

image.png

这里的下载命令是: ​wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run 安装命令是: sudo sh cuda_10.2.89_440.33.01_linux.run 如果没有root权限,可以安装在用户目录,此时安装命令: sh cuda_10.2.89_440.33.01_linux.run --silent --toolkit --toolkitpath=$HOME/cuda_10.2 --installpath=$HOME/cuda_10.2

安装完成设置环境变量:

1
2
3
4
5
6
7
8
9
10
# 编辑用户目录下的.bashrc文件
cd ~
vim .bashrc

# 添加如下内容
export PATH=$HOME/cuda_10.2/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/cuda_10.2/lib64

# 激活环境变量
source ~/.bashrc

测试是否安装成功: nvcc -V 可以正常执行说明安装成功。

3. 下载cuDNN

官网下载地址:https://developer.nvidia.com/rdp/cudnn-archive (下载需要注册NVIDIA账号) 根据CUDA版本选择cuDNN

image.png

安装cuDNN

1
2
3
4
5
6
7
8
9
10
# 解压cuDNN
tar -zxvf cudnn-10.2.tgz

# 将cuDNN文件复制到CUDA Toolkit安装目录中
cp cuda/include/cudnn.h ~/cuda_10.2/include/
cp cuda/lib64/libcudnn* ~/cuda_10.2/lib64/

# 赋予执行权限
chmod a+r ~/cuda_10.2/include/cudnn.h
chmod a+r ~/cuda_10.2/lib64/libcudnn*

2.2、安装Conda

conda分为anaconda和miniconda。anaconda是包含一些常用包的版本,miniconda则是精简版,需要什么装什么,这里介绍miniconda的安装。 官网地址:https://docs.conda.io/en/latest/miniconda.html

2.2.1、安装

进入官网:

  • Windows installers一栏就是Windows安装包
  • Linux installers一栏就是Linux安装包

选择对应的操作系统和conda版本即可。 一般安装MiniConda3,python版本无所谓,3.x以上都可以,后面可以根据需要自行更改。 ​

安装完成后,检测是否正常:conda info -e

2.2.2、配置

执行如下命令,配置Miniconda

1
2
3
4
5
6
7
8
9
10
11
# 配置国内镜像清华源,下载加速
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/

# 其他
conda config --set show_channel_urls yes
conda config --set ssl_verify false

2.2.3、常用命令参数

  • 查看虚拟环境: conda info -e
  • 激活虚拟环境:conda activate myTorch
    • activate 后是虚拟环境名
  • 退出虚拟环境: conda deactivate
  • 删除虚拟环境:conda remove -n 虚拟环境名 --all
  • 安装某个软件到当前虚拟环境:conda install 包名 -y
  • 卸载当前虚拟环境中的某个软件包:conda uninstall 包名 -y
  • 安装某个软件包到指定虚拟环境中:conda install -n 虚拟环境名 包名 -y
  • 卸载指定虚拟环境中的某个软件包:conda uninstall -n 虚拟环境名 包名 -y

2.3、安装PyTorch

PyTorch的安装分为GPU版和CPU版,使用官网命令安装和手动安装需要注意选择。 ​

  • 创建虚拟环境:conda create -n myTorch python=3.6.9
    • -n 后接的myTorch是自定义的虚拟环境名,自己随便起名;python=3.6.9指定该虚拟环境下使用的python版本。
  • 激活环境:conda activate myTorch

之后的安装都在此虚拟环境下进行!

2.3.1 官网命令安装PyTorch

官网地址:

image.png

选择PyTorch版本(1.9.0),操作系统版本(Windows),包管理器(Conda),语言(Language),计算平台(CUDA 10.2) 得到安装命令:conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch 命令中 -c 后接的是官方默认源,如果比较慢,可以使用清华源(ps:好像也不快,经常下载失败):

1
2
conda config --add channels  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda install pytorch torchvision torchaudio cudatoolkit=10.2

同理包管理选择pip也可以:

1
pip3 install torch==1.9.0+cu102 torchvision==0.10.0+cu102 torchaudio===0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

这里可以看到使用pip安装,需要显式的指定pytorch和torchvison、torchaudio的版本。 ​

2.3.2 手动安装PyTorch

手动安装是为了解决自动下载安装总是由于网络问题失败的问题。 安装前需要下载需要的包,地址:

手动安装,最值得注意的是选择torch和torchvision的版本对应关系。

pytrch=1.4、torchvision=0.5 pytorch=1.6、torchvision=0.7 torch=1.9、torchvision=0.10 其他版本可以自行百度

以官网为例,访问上述地址,可以看到需要的whl包文件。

image.png
image.png

软件包格式:设备(cpu/gpu)-软件包名-包版本-python版本-操作系统_处理器

  • 如果使用的是cpu那么就选cpu版本,如果适用gpu那么需要根据安装的cuda版本选择,比如安装了cuda10.2就选择cu102。
  • 如果使用的python版本是3.6.x就选择cp36-cp36m,其他版本对应选择即可。
  • 如果操作系统是Windows,就选择win;如果是linux就选择linux。
  • 处理器架构目前基本都是64位,amd64和x86_64相同都是64位。

使用下载工具下载对应的torch和torchvision,下载完成使用pip命令安装。 假如下载的文件分别为:torchvision-0.5.0+cpu-cp37-cp37m-win_amd64.whl、torch-1.4.0+cpu-cp37-cp37m-win_amd64.whl:

1
2
pip install ./torchvision-0.5.0+cpu-cp37-cp37m-win_amd64.whl
pip install ./torch-1.4.0+cpu-cp37-cp37m-win_amd64.whl

2.4、安装TensorFlow

TensorFlow的安装也分为GPU版和CPU版,CPU版本安装较简单;但如果安装GPU版,则需要满足与cuDNN和CUDA的关系。否则可能无法使用GPU加速。 另外TensorFlow 1.x 和 2.x 变动较大,建议安装 2.x 版本,相对简单易用。 ​

2.4.1 CPU版本安装

使用pip直接输入以下命令: pip install 'tensorflow==2.2.0' -i [http://pypi.doubanio.com/simple/](http://pypi.doubanio.com/simple/) --trusted-host pypi.doubanio.com 其中 2.2.0是版本号,-i 后指定安装源,–trusted-host 表示信任安装源,防止无法下载。 ​

2.4.2 GPU版本安装

命令与cpu版本类似,但需要保证TensorFlow版本与cuDNN和CUDA版本对应: pip install 'tensorflow-gpu==2.2.0' -i [http://pypi.doubanio.com/simple/](http://pypi.doubanio.com/simple/) --trusted-host pypi.doubanio.com 只需要在tensorflow后加上-gpu即会下载gpu版本。 ​

下方是官网给出的对应关系:

  • Linux GPU
版本 Python 版本 编译器 构建工具 cuDNN CUDA
tensorflow-2.4.0 3.6-3.8 GCC 7.3.1 Bazel 3.1.0 8.0 11.0
tensorflow-2.3.0 3.5-3.8 GCC 7.3.1 Bazel 3.1.0 7.6 10.1
tensorflow-2.2.0 3.5-3.8 GCC 7.3.1 Bazel 2.0.0 7.6 10.1
tensorflow-2.1.0 2.7、3.5-3.7 GCC 7.3.1 Bazel 0.27.1 7.6 10.1
tensorflow-2.0.0 2.7、3.3-3.7 GCC 7.3.1 Bazel 0.26.1 7.4 10.0
tensorflow_gpu-1.15.0 2.7、3.3-3.7 GCC 7.3.1 Bazel 0.26.1 7.4 10.0
tensorflow_gpu-1.14.0 2.7、3.3-3.7 GCC 4.8 Bazel 0.24.1 7.4 10.0
tensorflow_gpu-1.13.1 2.7、3.3-3.7 GCC 4.8 Bazel 0.19.2 7.4 10.0
tensorflow_gpu-1.12.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.11.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 7 9
tensorflow_gpu-1.9.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.11.0 7 9
tensorflow_gpu-1.8.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.10.0 7 9
tensorflow_gpu-1.7.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.9.0 7 9
tensorflow_gpu-1.6.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.9.0 7 9
tensorflow_gpu-1.5.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.8.0 7 9
tensorflow_gpu-1.4.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.5.4 6 8
tensorflow_gpu-1.3.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.4.5 6 8
tensorflow_gpu-1.2.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.4.5 5.1 8
tensorflow_gpu-1.1.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.4.2 5.1 8
  • Windows GPU
版本 Python 版本 编译器 构建工具 cuDNN CUDA
tensorflow_gpu-2.4.0 3.6-3.8 MSVC 2019 Bazel 3.1.0 8.0 11.0
tensorflow_gpu-2.3.0 3.5-3.8 MSVC 2019 Bazel 3.1.0 7.6 10.1
tensorflow_gpu-2.2.0 3.5-3.8 MSVC 2019 Bazel 2.0.0 7.6 10.1
tensorflow_gpu-2.1.0 3.5-3.7 MSVC 2019 Bazel 0.27.1-0.29.1 7.6 10.1
tensorflow_gpu-2.0.0 3.5-3.7 MSVC 2017 Bazel 0.26.1 7.4 10
tensorflow_gpu-1.15.0 3.5-3.7 MSVC 2017 Bazel 0.26.1 7.4 10
tensorflow_gpu-1.14.0 3.5-3.7 MSVC 2017 Bazel 0.24.1-0.25.2 7.4 10
tensorflow_gpu-1.13.0 3.5-3.7 MSVC 2015 update 3 Bazel 0.19.0-0.21.0 7.4 10
tensorflow_gpu-1.12.0 3.5-3.6 MSVC 2015 update 3 Bazel 0.15.0 7.2 9.0
tensorflow_gpu-1.11.0 3.5-3.6 MSVC 2015 update 3 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.9.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.8.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.7.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.6.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.5.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.4.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 6 8
tensorflow_gpu-1.3.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 6 8
tensorflow_gpu-1.2.0 3.5-3.6 MSVC 2015 update 3 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.1.0 3.5 MSVC 2015 update 3 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.0.0 3.5 MSVC 2015 update 3 Cmake v3.6.3 5.1 8

注:其实TensorFlow 2.x 以后不再区分CPU版和GPU版,上述两个命令只在 1.x 版本有区别。

2.4.3 手动下载地址

https://pypi.org/project/tensorflow/#files 手动下载后,pip安装即可,注意python版本、操作系统和处理器架构。

1
pip install tensorflow-2.2.0-cp36-cp36m-win_amd64.whl