cuDNN

在 DL4J中使用NVIDIA cuDNN 库

与cuDNN一起使用DL4J

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

要让DL4J加载cuDNN,我们只需要添加一个依赖项deeplearning4j-cuda-9.2, deeplearning4j-cuda-10.0, 或 deeplearning4j-cuda-10.1, 例如 :

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

<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-cuda-10.0</artifactId>
    <version>1.0.0-beta6</version>
</dependency>

<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-cuda-10.1</artifactId>
    <version>1.0.0-beta6</version>
</dependency>

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

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

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

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

<dependency>
     <groupId>org.bytedeco</groupId>
     <artifactId>cuda-platform-redist</artifactId>
     <version>10.2-7.6-1.5.2</version>
 </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)
            // ...

最后更新于