【DL】搭建属于自己的GPU深度学习环境

搭建属于自己的GPU深度学习环境

一、GPU深度学习环境的搭建

深度学习主要有两种库tensorflowpytorch,下面会一一介绍。为使其互不打扰,我们新建两个环境并分别会将其安装在两个环境中(个人建议搭建深度学习之类的环境可以单独创个环境搭建,不要搭建在base环境或其他已有的环境中,这样的话,如果环境搭建失败了,直接将这个环境删掉就好了,不会影响到其他的环境)

1.1安装CUDA和cuDNN

下载CUDA和cuDNN
要使用GPU加速,首先就要去安装CUDA和cuDNN。
首先要看一下你的电脑的显卡对应的是哪个版本的CUDA,千万不要下错了,不然运行不了的。
查看方法很多,网上都很容易搜得到,这里介绍其中一种:
打开 NVIDIA控制面板 -> 帮助 -> 系统信息->组件,就可以查看自己的显卡对应哪个版本。我电脑的是GTX 1050,对应的是CUDA10.1
【DL】搭建属于自己的GPU深度学习环境
找好对应的版本后,就去下载,给出网址:https://developer.nvidia.com/cuda-toolkit-archive
进去后选择相应的版本和电脑信息。这里选择本地安装,也就是将安装包下下来,
【DL】搭建属于自己的GPU深度学习环境
先查看对应CUDA下需要下载cuDNN的版本(注意自己python版本的匹配):https://tensorflow.google.cn/install/source_windows
然后下载对应版本的cuDNN(绕过Nvidia官方要求的注册或登陆步骤直接下载cuDNN的方法),给出网址:https://developer.nvidia.com/rdp/cudnn-archive#a-collapse51b
【DL】搭建属于自己的GPU深度学习环境
安装CUDA
启动exe文件(在安装CUDA时候最好选用以管理员身份运行),会让你选择一个目录地址,这个只是文件的解压目录,并不是安装的目录,在安装完成之后会被自动删除,这里根据自己的情况选一下就好了。然后就会自动检测系统兼容性什么的,完成之后,就可以正式的安装了。
在安装时,选择自定义安装的方法。然后勾选,只要不勾选里面的 Visual Studio Integration 就好了
【DL】搭建属于自己的GPU深度学习环境
然后安装位置可以选择默认在C盘(网上说建议安在C盘),也可以自定义是设置安装路径。(注意不要选到你刚刚的解压文件夹里了,不然安装完成后又会被删掉)。这里最好记住这里的三个路径,后面会用得到。
【DL】搭建属于自己的GPU深度学习环境
然后点击下一步,让它安装就好了(可能会时间比较长,要耐心等待)。
安装cuDNN
安装完成之后,就安装cuDNN,这个很简单,是插入式安装。把文件解压,然后把里面的三个文件夹里的文件(注意,是文件)复制到CUDA安装文件夹(就是上面的 CUDA Development 的那个安装路径下)的对应文件夹内。
【DL】搭建属于自己的GPU深度学习环境
【DL】搭建属于自己的GPU深度学习环境
到这里,就安装完了,可以测试一下是否安装成功。
进入到上面的安装文件夹下的 extra/demo_suit 文件夹下,然后在地址栏输入 cmd,打开命名提示行。运行 bandwidthTest.exedeviceQuery.exe ,结果如下,得到两个 PASS,就基本是安装成功了。
【DL】搭建属于自己的GPU深度学习环境
【DL】搭建属于自己的GPU深度学习环境
至此,CUDA和cuDNN已经算是全部安装成功了。

1.2安装tensorflow-gpu深度学习库

这里又得要注意版本了。

首先,根据自己的 CUDA 和 cuDNN 找到自己的 tensorflow-gpu 版本(注意:这里除了CUDA和cuDNN的版本,还要注意 python的版本,比如我CUDA是10.1,cuDNN是7.6,那么我的python版本最高只支持到3.8)tensorflow官网
【DL】搭建属于自己的GPU深度学习环境
那如果我们的base等环境下的python版本过高怎么办?
不要急,我们创建一个新的环境就可以了,并且对于深度学习等环境的搭建也最好新建一个环境来操作,这样可以避免各个环境之间的干扰!

1.2.1创建一个新的环境

创建新环境有两种方法:

1.使用 anaconda 命令行窗口
2.直接在anaconda软件里
这里先介绍第一种方法,第二种在pytorch的安装里介绍

现在就来创一个python3.8的环境。
打开anaconda的命令提示窗口Anaconda Prompt (anaconda),输入:

conda create --name tf-gpu-py38 python=3.8

其表示: 创建一个名为tf-gpu-py38的环境,指定Python版本是3.8
如果中途断了,重新运行就好了,会接着下
其实环境名字建议起的简明易懂,比如这里的tf-gpu-py38, 表明是 tensorflow-gpu的环境,且python版本为3.8

运行,系统就会开始去解析并且创建环境。解析完成之后,会出来一个 package plan ,并询问是否继续,这就是我们创建这个新环境所需要下载的包,直接输入 y 回车,让它下载并创建环境,你只需要耐心等待即可。
【DL】搭建属于自己的GPU深度学习环境
下载完成后,就会自动创建环境,完成之后。我们也可以在 anacodna 的environments里看到这个环境。可以看到,这个环境很干净,只有一些python必要包,其余的都没有。
【DL】搭建属于自己的GPU深度学习环境
接下来,我们按照他给出的命令提示激活环境,进入这个环境
【DL】搭建属于自己的GPU深度学习环境

# 激活环境:
conda activate tf-gpu-py38
# 离开环境
conda deactivate

激活环境后,在命令行前面会有一个当前所处环境的表明,如图,激活前是base环境,激活后进入到了tf-gpu-py38环境
【DL】搭建属于自己的GPU深度学习环境
现在这里,就是一个全新的环境了

可以确定一下当前的python版本。
注意:这里的 V 大写
【DL】搭建属于自己的GPU深度学习环境

更多的关于anaconda环境管理的,可以参考这个:https://www.jianshu.com/p/2a628a462e87

notebook的安装
创建好环境后,打开anaconda软件,进入环境,因为这是一个新环境,所以notebook之类的也都没安装,所以我们进行手动安装,直接点击 install 即可
【DL】搭建属于自己的GPU深度学习环境
安装完后,install 就变成 launch 了。打开notebook,就可以直接使用了。

为Anaconda添加国内镜像源
如果我们要在anaconda里下载包等东西,因为他默认的下载路径在国外,所以速度特别慢,还容易断,为了解决这个问题,我们可以为他添加国内的镜像源地址。
打开 Anaconda Prompt ,输入如下命令添加镜像源,这里添加的是中科大的镜像源:

conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/

运行后,就会为anaconda添加镜像源路径。这时,我们打开anaconda,可以看到 channels 里已经有我们添加的这条路径了(建议不要在anaconda软件里手动添加,会有问题)
【DL】搭建属于自己的GPU深度学习环境

再列出一些其他的镜像源地址:
中科大:https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
清华:https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free

1.2.2 tensorflow-gpu的安装

对tensorflow-gpu,在Anaconda Prompt (anaconda3)里使用 pip 安装并且指定安装版本(不指定的话,会默认安装最新版的,这就可能跟你的CUDA等不对应了)。
这里是用的是清华大学的镜像源:https://pypi.tuna.tsinghua.edu.cn/simple。我这里按照对应关系,安装的tensorflow_gpu-2.3.0-cp38-cp38-win_amd64.whl。

pip install --user --upgrade tensorflow-gpu==2.3 -i https://pypi.tuna.tsinghua.edu.cn/simple

这里也可以使用conda命令(我是用的是这个命令,建议使用这个):
conda install --user --upgrade tensorflow-gpu==2.3 -i https://pypi.tuna.tsinghua.edu.cn/simple

因为pip使用的默认路径也是国外的,所以也要用镜像源 其他镜像源:
清华:https://pypi.tuna.tsinghua.edu.cn/simple
豆瓣:http://pypi.douban.com/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/

安装tensorflow-gpu时,还会自动下载一些相应依赖,所以要稍微等待一下下。安装完成之后,可以用 pip list 看一下是否有这个模块。
到这里,基本就可以使用GPU了,给几个例子试试:
(1)看看 tensorflow 检测到的 能使用的设备情况

# 检测 tensorflow 能使用的设备情况
from tensorflow.python.client import device_lib

#os.environ["CUDA_VISIBLE_DEVICES"] = "1"  # 这个可以指定使用哪个设备
print(device_lib.list_local_devices())

【DL】搭建属于自己的GPU深度学习环境
如果不能使用GPU,就不会输出GPU的型号和算力。
(2)输出是否能使用GPU

import tensorflow as tf

print(tf.test.is_gpu_available())
print(tf.test.gpu_device_name()) #输出gpu的名称

【DL】搭建属于自己的GPU深度学习环境
返回了True,也就是可以使用GPU,并且设备名字也跟上面得到的结果相同。
(3)使用tensorflow-gpu
说了这么多,能够直接使用tensorflow-gpu让GPU进行计算才是王道。

import tensorflow as tf
import os
import numpy as np

# 加载数据集
# from keras.datasets import mnist
# (train_images, train_labels), (test_images, test_labels) = mnist.load_data()
# 这里加载数据集要去访问一个网址进行下载,由于众所周知的原因,这个网址是访问不了的
# 所以这里使用下载下来的本地数据集。
# 链接:https://pan.baidu.com/s/1rzqWrlsO7Zg2gtmCxYQZjA
# 提取码:ff9z
path='F:\DL\mnist.npz'
f = np.load(path)
x_train, y_train = f['x_train'], f['y_train']
x_test, y_test = f['x_test'], f['y_test']
f.close()

x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test,  y_test, verbose=2)
结果:
Epoch 1/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.3028 - accuracy: 0.9122
Epoch 2/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.1414 - accuracy: 0.9579
Epoch 3/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.1067 - accuracy: 0.9676: 0s - loss:
Epoch 4/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0849 - accuracy: 0.9737
Epoch 5/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0733 - accuracy: 0.9780
313/313 - 1s - loss: 0.0762 - accuracy: 0.9761
[0.07618406414985657, 0.9761000275611877]

【DL】搭建属于自己的GPU深度学习环境
可以看到,训练数据时,GPU1(也就是我的NVIDIA显卡)被使用了。这里数据的训练不是很复杂,所以利用率也不是很明显。
到这里,你就已经取得阶段性胜利了!!!

1.2.3keras的安装

这里我是要找tensorflow-gpu 2.3版本对应的keras的版本,但是一直没有找到,所以干脆就直接使用命令来进行安装了,幸运的是安装后测试成功了。
安装命令:

conda install keras

安装后使用import keras,并没有报错,然后使用带有keras的代码进行测试,也没有报错,并且运行成功,所以大功告成!安装成功!!!
安装后可以从Anaconda\pkgs这个路径下找到keras,查看版本。我的是keras2.4.3
【DL】搭建属于自己的GPU深度学习环境

注意:

  • 最好去查找自己需要的那个版本的keras,不指定的话,会默认安装最新版的,这就可能跟你的tensorflow-gpu不对应了,一般会显示你的tensorflow版本过低,需要安装高版本!
  • 安装完成后,试试import keras ,如果程序没有报错,那就安装成功了。

1.3 安装pytorch深度学习库

pytorch的安装没有tensorflow那么繁琐。同样,我们新创建一个环境来安装,这里使用第二种方法。

1.3.1 创建一个新的环境

首先打开anaconda软件,进入到environment,点击create来创建新环境,在弹出的窗口中输入名字并选择python版本
【DL】搭建属于自己的GPU深度学习环境
最后点击create并耐心等待,创建成功后就会又有一个新环境,对这个环境,同样进行notebook的安装。

1.3.2 pytorch的安装

方式一:
这里再介绍一种离线安装包的方法,个人建议pytorch可以用离线的方法安装,因为包太大了,在线容易下到一半掉线!先去https://download.pytorch.org/whl/torch_stable.html下载对应版本的pytorch安装包,对应方式见下图,或者也可以直接去官网寻找
这里torchversion版本应该是0.8.2,图片中的版本和我需要的不一样,但是各个框所代表的意义是一样的。
【DL】搭建属于自己的GPU深度学习环境
下载完成后,打开Anaconda Prompt (anaconda3), 进入到安装 pytorch的环境,输入命令:

pip install D:\\software\\DL\\Pytorch\\torchvision-0.8.2-cp38-cp38-win_amd64.whl

之后等待安装完成就行了。之后可以进行测试(具体测试可以看方式二中的测试过程)。
方式二(我采用的方式):
pytorch官网根据自己的CUDA版本去找对应的安装版本以及语句。下面是我的:
【DL】搭建属于自己的GPU深度学习环境
然后就先激活pytorch环境pytorch-py38,然后执行语句conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch 等待安装成功即可。
【DL】搭建属于自己的GPU深度学习环境
【DL】搭建属于自己的GPU深度学习环境
等待安装完成后,可以测试一下。
测试一:

import torch
x = torch.rand(5, 3)
print(x)

【DL】搭建属于自己的GPU深度学习环境
代表安装成功。
测试二:
直接检测是否能用GPU

import torch
torch.cuda.is_available()

【DL】搭建属于自己的GPU深度学习环境
如果输出为True,则表示可以使用GPU。大功告成!!!

上一篇:入坑AI一路过来走过的弯路和思考


下一篇:C语言—双向链表