Deeplearning4j-使用Cuda 9.1和 Cudnn7.1 加速模型训练

Deeplearning4j-使用Cuda 9.1和 Cudnn7.1 加速模型训练


一、卸载Cuda (可选)

我本机原本安装的版本为 Cuda 8.0,因为Dl4j更新版本之后,支持 Cuda 9.1,因此需要先对原有软件进行卸载。

我电脑的操作系统为win 10,在你安装完成以后,会有如下图所示的安装软件:

<center>
cuda安装包.png-94.8kB
cuda安装包.png-94.8kB

</center>

除了图中用红框标注的这三个,全部卸载。

即可完成cuda的卸载。

二、安装Cuda。

下载地址:

链接:https://pan.baidu.com/s/14yvW1C3M32TZyeN-kRXEyw 密码:z9k6

为了保证结果的可复现。 Cuda和Cudnn的安装地址已经放在上面了。

在安装的时候,需要注意使用自定义安装
<center>

cuda安装导引.png-155.9kB
cuda安装导引.png-155.9kB
</center>

在安装的时候需要勾掉以下属性

<center>
去掉选项.png-149.3kB
去掉选项.png-149.3kB

</center>

因为你不是 cuda 开发人员,只是使用的用户,因此不需要以下三项:

  1. Documentation: cuda开发文档
  2. Samples: cuda示例
  3. VS Studio Integration: VS开发cuda的集成插件。

也不安装Driver components,是害怕和你现有的软件冲突,导致显示器显示不正常。

在无限下一步之后安装完毕,在 CMD 窗口中使用nvcc -V命令查看 cuda 版本。
<center>

cuda版本.png-20kB
cuda版本.png-20kB
</center>

三、使用Cuda9.1加速 dl4j

dl4j使用gpu后端加速非常容易,只需要切换pom文件为:

<dependency>
    <groupId>org.nd4j</groupId>
    <artifactId>nd4j-cuda-9.1-platform</artifactId>
    <version>${nd4j.version}</version>
</dependency>

即可成功运行程序。

在运行程序之后可以看到如下的提示语:

o.n.l.f.Nd4jBackend - Loaded [JCublasBackend] backend
o.n.n.NativeOpsHolder - Number of threads used for NativeOps: 32
o.n.n.Nd4jBlas - Number of threads used for BLAS: 0
o.n.l.a.o.e.DefaultOpExecutioner - Backend used: [CUDA]; OS: [Windows 10]
o.n.l.a.o.e.DefaultOpExecutioner - Cores: [8]; Memory: [3.5GB];
o.n.l.a.o.e.DefaultOpExecutioner - Blas vendor: [CUBLAS]
o.n.l.j.o.e.CudaExecutioner - Device opName: [GeForce GTX 1050 Ti]; CC: [6.1]; Total/free memory: [4294967296]
o.d.n.m.MultiLayerNetwork - Starting MultiLayerNetwork with WorkspaceModes set to [training: SINGLE; inference: SEPARATE]

但是同样可以看到如下的报错:

o.d.n.l.c.ConvolutionLayer - cuDNN not found: use cuDNN for better GPU performance by including the deeplearning4j-cuda module. For more information, please refer to: https://deeplearning4j.org/cudnn
java.lang.ClassNotFoundException: org.deeplearning4j.nn.layers.convolution.CudnnConvolutionHelper
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_152]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_152]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) ~[na:1.8.0_152]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_152]
    at java.lang.Class.forName0(Native Method) ~[na:1.8.0_152]

这是因为还没有安装 Cudnn 引起的报错,但是这并不影响程序的正常运行。

四、安装Cudnn并且使用Cudnn加速

4.1 安装 Cudnn7.1

安装Cudnn非常简单,只需要打开对应的压缩包:

<center>
cudnn压缩包.png-64.2kB
cudnn压缩包.png-64.2kB
</center>

将图中所有的文件解压缩到Cuda的安装目录即可:
<center>

Cuda安装目录.png-61.2kB
Cuda安装目录.png-61.2kB
</center>

4.2 使用Cudnn加速程序

使用Cudnn对dl4j程序进行加速,还需要添加以下依赖到pom文件中:

<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-cuda-9.1</artifactId>
    <version>${dl4j.version}</version>
</dependency>

再次运行程序,就不会发现报错。

<center>
cudnn加速无报错.png-57.5kB
cudnn加速无报错.png-57.5kB
</center>

五、总结

程序运行示例为:https://github.com/sjsdfg/dl4j-tutorials/blob/master/src/main/java/lesson6/LenetMnistExample.java

即使用 Lenet 网络进行手写数字识别,总共对全部数据集,训练1个epoch

机器运行配置为:16G RAM, I7-7700HQ, 1050TI 4G显存

cpu cuda9.1 cuda9.1+cudnn7.1
2.586min 0.754min 0.457min

如果使用更好的机器,则会有更明显的加速效果。


更多文档可以查看 https://github.com/sjsdfg/deeplearning4j-issues
你的star是我持续分享的动力

完整代码和pom文件可查看: https://github.com/sjsdfg/dl4j-tutorials

<center></center>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容