DL4J中文文档/配置/CuDNN

与cuDNN一起使用DL4J

DL4J支持CUDA,但可以进一步通过cuDNN加速。大多数2D 卷积神经网络层(如ConvolutionLayer、SubsamplingLayer等),以及LSTM和BatchNormalization层都支持cuDNN。

为了可以使用cuDNN,你首先要切换ND4J到CUDA后端。这可以通过在pom.xml文件中nd4j-cuda-8.0nd4j-cuda-9.0, 或 nd4j-cuda-9.2 替换nd4j-native来完成。理想的情况下在nd4j-cuda-8.0-platformnd4j-cuda-9.0-platform, 或 nd4j-cuda-9.2-platform上添加依赖项以自动包括来自所有平台的二进制文件:

<dependency>
	<groupId>org.nd4j</groupId>
	<artifactId>nd4j-cuda-8.0-platform</artifactId>
	<version>1.0.0-beta2</version>
</dependency>

<dependency>
	<groupId>org.nd4j</groupId>
	<artifactId>nd4j-cuda-9.0-platform</artifactId>
	<version>1.0.0-beta2</version>
</dependency>

<dependency>
	<groupId>org.nd4j</groupId>
	<artifactId>nd4j-cuda-9.2-platform</artifactId>
	<version>1.0.0-beta2</version>
</dependency>

ND4J的安装说明中可以找到更多的信息。

为了让DL4J 加载 cuDNN,我们惟一要做的是添加对deeplearning4j-cuda-8.0deeplearning4j-cuda-9.0, 或 deeplearning4j-cuda-9.2的依赖, 例如:

<dependency>
	<groupId>org.deeplearning4j</groupId>
	<artifactId>deeplearning4j-cuda-8.0</artifactId>
	<version>1.0.0-beta2</version>
</dependency>

<dependency>
	<groupId>org.deeplearning4j</groupId>
	<artifactId>deeplearning4j-cuda-9.0</artifactId>
	<version>1.0.0-beta2</version>
</dependency>

<dependency>
	<groupId>org.deeplearning4j</groupId>
	<artifactId>deeplearning4j-cuda-9.2</artifactId>
	<version>1.0.0-beta2</version>
</dependency>

cuDNN的实际库没有捆绑,因此请确保从NVIDIA下载并安装适合你的平台的包

注意cuDNN和CUDA有多个组合被支持。当前,DL4J的支持下面的组合:

CUDA VersioncuDNN Version
8.06.0
9.07.0
9.27.1

要安装,只需将库提取到本地库使用的系统路径中找到的目录即可。最简单的方法是将它放在默认目录中的CUDA之外的其他库中。 (/usr/local/cuda/lib64/ on Linux, /usr/local/cuda/lib/ on Mac OS X, and C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\, 或 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin\ on Windows).

或者,对于CUDA 9.2,cuDNN与用于CUDA的JavaCPP Presets 的“redist”包捆绑在一起。在同意许可之后,我们可以添加以下依赖项,来取代安装CUDA和cuDNN:

 <dependency>
     <groupId>org.bytedeco.javacpp-presets</groupId>
     <artifactId>cuda</artifactId>
     <version>9.2-7.1-1.4.2</version>
     <classifier>linux-x86_64-redist</classifier>
 </dependency>
 <dependency>
     <groupId>org.bytedeco.javacpp-presets</groupId>
     <artifactId>cuda</artifactId>
     <version>9.2-7.1-1.4.2</version>
     <classifier>linux-ppc64le-redist</classifier>
 </dependency>
 <dependency>
     <groupId>org.bytedeco.javacpp-presets</groupId>
     <artifactId>cuda</artifactId>
     <version>9.2-7.1-1.4.2</version>
     <classifier>macosx-x86_64-redist</classifier>
 </dependency>
 <dependency>
     <groupId>org.bytedeco.javacpp-presets</groupId>
     <artifactId>cuda</artifactId>
     <version>9.2-7.1-1.4.2</version>
     <classifier>windows-x86_64-redist</classifier>
 </dependency>

还要注意,默认情况下,DL4j将使用根据cuDNN可用的最快算法,但是内存使用可能溢出,导致奇怪的启动错误。当这种情况发生时,尝试通过使用通过网络配置设置的NO_WORKSPACE模式来减少内存使用, 替换默认的ConvolutionLayer.AlgoMode.PREFER_FASTEST,例如:

    // 对于整个网络
    new NeuralNetConfiguration.Builder()
            .cudnnAlgoMode(ConvolutionLayer.AlgoMode.NO_WORKSPACE)
            // ...
    // 或对于单个层
    new ConvolutionLayer.Builder(h, w)
            .cudnnAlgoMode(ConvolutionLayer.AlgoMode.NO_WORKSPACE)
            // ...

 

翻译:风一样的男子

有任何问题请联系微信

如果您觉得我的文章给了您帮助,请为我买一杯饮料吧!以下是我的支付宝,意思一下我将非常感激!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值