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

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


一、卸载Cuda (可选)

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

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

cuda安装包.png-94.8kB

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

即可完成cuda的卸载。

二、安装Cuda。

下载地址:

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

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

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

cuda安装导引.png-155.9kB

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

去掉选项.png-149.3kB

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

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

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

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

cuda版本.png-20kB

三、使用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非常简单,只需要打开对应的压缩包:

cudnn压缩包.png-64.2kB

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

Cuda安装目录.png-61.2kB

4.2 使用Cudnn加速程序

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

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

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

cudnn加速无报错.png-57.5kB

五、总结

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

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

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

cpucuda9.1cuda9.1+cudnn7.1
2.586min0.754min0.457min

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


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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值