搭建属于自己的GPU深度学习环境
一、GPU深度学习环境的搭建
深度学习主要有两种库tensorflow
和pytorch
,下面会一一介绍。为使其互不打扰,我们新建两个环境并分别会将其安装在两个环境中(个人建议搭建深度学习之类的环境可以单独创个环境搭建,不要搭建在base环境或其他已有的环境中,这样的话,如果环境搭建失败了,直接将这个环境删掉就好了,不会影响到其他的环境)
1.1安装CUDA和cuDNN
下载CUDA和cuDNN
要使用GPU加速,首先就要去安装CUDA和cuDNN。
首先要看一下你的电脑的显卡对应的是哪个版本的CUDA,千万不要下错了,不然运行不了的。
查看方法很多,网上都很容易搜得到,这里介绍其中一种:
打开 NVIDIA控制面板 -> 帮助 -> 系统信息->组件
,就可以查看自己的显卡对应哪个版本。我电脑的是GTX 1050,对应的是CUDA10.1
找好对应的版本后,就去下载,给出网址:https://developer.nvidia.com/cuda-toolkit-archive
进去后选择相应的版本和电脑信息。这里选择本地安装,也就是将安装包下下来,
先查看对应CUDA下需要下载cuDNN的版本(注意自己python版本的匹配):https://tensorflow.google.cn/install/source_windows
然后下载对应版本的cuDNN(绕过Nvidia官方要求的注册或登陆步骤直接下载cuDNN的方法),给出网址:https://developer.nvidia.com/rdp/cudnn-archive#a-collapse51b
安装CUDA
启动exe文件(在安装CUDA时候最好选用以管理员身份运行),会让你选择一个目录地址,这个只是文件的解压目录,并不是安装的目录,在安装完成之后会被自动删除,这里根据自己的情况选一下就好了。然后就会自动检测系统兼容性什么的,完成之后,就可以正式的安装了。
在安装时,选择自定义安装的方法。然后勾选,只要不勾选里面的 Visual Studio Integration 就好了
然后安装位置可以选择默认在C盘(网上说建议安在C盘),也可以自定义是设置安装路径。(注意不要选到你刚刚的解压文件夹里了,不然安装完成后又会被删掉)。这里最好记住这里的三个路径,后面会用得到。
然后点击下一步,让它安装就好了(可能会时间比较长,要耐心等待)。
安装cuDNN
安装完成之后,就安装cuDNN,这个很简单,是插入式安装。把文件解压,然后把里面的三个文件夹里的文件(注意,是文件)复制到CUDA安装文件夹(就是上面的 CUDA Development 的那个安装路径下)的对应文件夹内。
到这里,就安装完了,可以测试一下是否安装成功。
进入到上面的安装文件夹下的 extra/demo_suit
文件夹下,然后在地址栏输入 cmd
,打开命名提示行。运行 bandwidthTest.exe
和 deviceQuery.exe
,结果如下,得到两个 PASS,就基本是安装成功了。
至此,CUDA和cuDNN已经算是全部安装成功了。
1.2安装tensorflow-gpu深度学习库
这里又得要注意版本了。
首先,根据自己的 CUDA 和 cuDNN 找到自己的 tensorflow-gpu 版本(注意:这里除了CUDA和cuDNN的版本,还要注意 python的版本,比如我CUDA是10.1,cuDNN是7.6,那么我的python版本最高只支持到3.8)tensorflow官网
那如果我们的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 回车
,让它下载并创建环境,你只需要耐心等待即可。
下载完成后,就会自动创建环境,完成之后。我们也可以在 anacodna 的environments里看到这个环境。可以看到,这个环境很干净,只有一些python必要包,其余的都没有。
接下来,我们按照他给出的命令提示激活环境,进入这个环境
# 激活环境:
conda activate tf-gpu-py38
# 离开环境
conda deactivate
激活环境后,在命令行前面会有一个当前所处环境的表明,如图,激活前是base环境,激活后进入到了tf-gpu-py38环境
现在这里,就是一个全新的环境了
可以确定一下当前的python版本。
注意:这里的 V 大写
更多的关于anaconda环境管理的,可以参考这个:https://www.jianshu.com/p/2a628a462e87
notebook的安装
创建好环境后,打开anaconda软件,进入环境,因为这是一个新环境,所以notebook之类的也都没安装,所以我们进行手动安装,直接点击 install 即可
安装完后,install
就变成 launch
了。打开notebook,就可以直接使用了。
为Anaconda添加国内镜像源
如果我们要在anaconda里下载包等东西,因为他默认的下载路径在国外,所以速度特别慢,还容易断,为了解决这个问题,我们可以为他添加国内的镜像源地址。
打开 Anaconda Prompt ,输入如下命令添加镜像源,这里添加的是中科大的镜像源:
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
运行后,就会为anaconda添加镜像源路径。这时,我们打开anaconda,可以看到 channels 里已经有我们添加的这条路径了(建议不要在anaconda软件里手动添加,会有问题)
再列出一些其他的镜像源地址:
中科大: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())
如果不能使用GPU,就不会输出GPU的型号和算力。
(2)输出是否能使用GPU
import tensorflow as tf
print(tf.test.is_gpu_available())
print(tf.test.gpu_device_name()) #输出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]
可以看到,训练数据时,GPU1(也就是我的NVIDIA显卡)被使用了。这里数据的训练不是很复杂,所以利用率也不是很明显。
到这里,你就已经取得阶段性胜利了!!!
1.2.3keras的安装
这里我是要找tensorflow-gpu 2.3
版本对应的keras
的版本,但是一直没有找到,所以干脆就直接使用命令来进行安装了,幸运的是安装后测试成功了。
安装命令:
conda install keras
安装后使用import keras
,并没有报错,然后使用带有keras的代码进行测试,也没有报错,并且运行成功,所以大功告成!安装成功!!!
安装后可以从Anaconda\pkgs
这个路径下找到keras,查看版本。我的是keras2.4.3
注意:
- 最好去查找自己需要的那个版本的keras,不指定的话,会默认安装最新版的,这就可能跟你的tensorflow-gpu不对应了,一般会显示你的tensorflow版本过低,需要安装高版本!
- 安装完成后,试试
import keras
,如果程序没有报错,那就安装成功了。
1.3 安装pytorch深度学习库
pytorch的安装没有tensorflow那么繁琐。同样,我们新创建一个环境来安装,这里使用第二种方法。
1.3.1 创建一个新的环境
首先打开anaconda软件,进入到environment,点击create来创建新环境,在弹出的窗口中输入名字并选择python版本
最后点击create并耐心等待,创建成功后就会又有一个新环境,对这个环境,同样进行notebook的安装。
1.3.2 pytorch的安装
方式一:
这里再介绍一种离线安装包的方法,个人建议pytorch可以用离线的方法安装,因为包太大了,在线容易下到一半掉线!先去https://download.pytorch.org/whl/torch_stable.html下载对应版本的pytorch安装包,对应方式见下图,或者也可以直接去官网寻找
这里torchversion版本应该是0.8.2,图片中的版本和我需要的不一样,但是各个框所代表的意义是一样的。
下载完成后,打开Anaconda Prompt (anaconda3), 进入到安装 pytorch的环境,输入命令:
pip install D:\\software\\DL\\Pytorch\\torchvision-0.8.2-cp38-cp38-win_amd64.whl
之后等待安装完成就行了。之后可以进行测试(具体测试可以看方式二中的测试过程)。
方式二(我采用的方式):
去pytorch官网根据自己的CUDA版本去找对应的安装版本以及语句。下面是我的:
然后就先激活pytorch环境pytorch-py38
,然后执行语句conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch
等待安装成功即可。
等待安装完成后,可以测试一下。
测试一:
import torch
x = torch.rand(5, 3)
print(x)
代表安装成功。
测试二:
直接检测是否能用GPU
import torch
torch.cuda.is_available()
如果输出为True
,则表示可以使用GPU。大功告成!!!