目录
0. 引言
刚尝试运行了MiniVGGNet处理数据集Cifar10的程序。MiniVGGNet是一个卷积层只有两层的网络,总体层数为5层。而VGGNet一般为16层到19层。
环境1:i3-6100(双核,四线程)、8G内存、无外接GPU、Ubuntu18、Tensorflow、Keras、Python2.7。上跑MiniVGGNet训练Cifar10。耗时达到了3个半小时。
笔者在环境2:i7-8700K、16G、GPU: GeForce GTX 1060、Win10、CUDA9.2的环境中,准备搭建环境,在GPU上尝试跑同样的代码试试。
虽然网络上、CSDN上同类型的文章也不少,但是我觉得一方面是自己需要总结,另一方面是软件版本升级得比较快,我们也需要与时俱进的资料。
好,以下是主要过程。
1 安装准备
1.1 确认显卡适合使用
到CUDA-enabled GPU cards.查看自己电脑中的GPU是否榜上有名,GPU边上的计算能力也要注意。因为,tensorflow官网说明,只支持计算能力大于3.5的GPU。
1.2 下载显卡相关安装程序
tensorflow的官网有对软硬件要求有说明。
要CUDA9.0、需要显卡驱动版本大于等于384.x。cuDNN版本大于等于7.2.。其他暂时不用理会。
1.2.1 显卡驱动
第一、先到https://www.geforce.cn/drivers更新一下显卡驱动。同时可以确认一下,显卡驱动的版本是否符合以下表格。
因为目前,Tensorflow要求CUDA版本是9.0,故更新驱动时候,驱动程序的版本大于这个数值,就安全了。
1.2.2 CUDA Toolkit
CUDA已经出到10了。但是我们需要legacy releases中下载CUDA9.0。我的电脑是win10,因此需要选择win10 64bit,我喜欢下载本地安装包,因为用下载工具比较方便。
同时这个CUDA还有4个补丁patch。也下载了。需要先把CUDA9.0主体安装完毕,才可以安装补丁程序。
1.2.3 cuDNN
注册一下,就可以下载了。
2 安装步骤
我的电脑已经安装了visual studio2015社区版和Visual Studio2017社区版。本身安装VS是为了编译OpenCV库的。现在对于深度学习来说,不知是不是必要的了。
安装步骤为:CUDA9.0、CUDA更新包1-4、cudnn。
CUDA的安装过程只需要执行一直下一步,默认的安装就OK了。而cudnn,只需要打开压缩包,ctrl+A,ctrl+C,到cuda/v9.0目录内粘贴一下就好。具体请参照https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html。
3 使用pip安装必要的库
由于我也是玩了python不久,今天才知道可以更新pip源。因此在这里也提一下。
windows下面,换pip源的方法是:
到c:\Users\<用户名>,新建文件夹:pip。在pip文件夹内新建一个文件为pip.ini。
把一下内容复制到pip.ini之内。
[global]
trusted-host=pypi.douban.com
index-url=http://pypi.douban.com/simple
然后使用pip install tensorflow-gpu,也用同样的方式安装keras、matplotlib、sklearn、imutils、numpy等包。
刚开始我安装了最新的python3.7,结果tensorflow for python3.7的还没出……只好换为python3.6了。
执行到这一步,发现通过pip install的包,下载速度达到了1mb/s了。惊讶而又兴奋。
4 执行例子
例子1. 可验证是否识别GPU
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
例子2. 机器学习学习笔记:用MiniVGGNet处理Cifar-10数据集
执行里面的代码。
原先i3-6100需要350s迭代一次,这里使用GPU,只需要13s就可以迭代一次了。GPU进行了加速。占用率是60%。效率比CPU高了一大截。
2019年8月3日更新:
笔记本配置:I7 + GTX 1660Ti
CUDA10.0+CUDNN7.5+tensorflow-gpu1.13.1+python3.7 安装后测试通过。但仍然发现这个错误“Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED”。需要参考:https://blog.csdn.net/weixin_42769131/article/details/88848478#commentBox
代码上方增加以下内容:
import tensorflow as tf
from keras import backend as K
config = tf.ConfigProto()
config.gpu_options.allow_growth=True
sess = tf.Session(config=config)
K.set_session(sess)
很高兴的看到,已经能训练模型了。笔记本的显卡GTX1660Ti和我去年配的台式机电脑GTX1060的训练时间是旗鼓相当的。