Deeplearning4J CUDA Проблема с памятью - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь обучить модель MultiLayerNetwork на сервере GPU и сталкиваюсь с проблемами распределения памяти через несколько итераций после вызова model.fit(). Я прочитал документацию по управлению памятью, включил рабочую область в режиме обучения и сократил размер пакета до 32, но, похоже, все еще получаю ошибки.

Сведения о системе:

NVIDIA-SMI 410.72 Версия драйвера: 410.72 Версия CUDA: 10.0

03:00.0 3D controller: NVIDIA Corporation GP100GL [Tesla P100 PCIe 16GB] (rev a1)
04:00.0 3D controller: NVIDIA Corporation GP100GL [Tesla P100 PCIe 16GB] (rev a1)
82:00.0 3D controller: NVIDIA Corporation GP100GL [Tesla P100 PCIe 16GB] (rev a1)
83:00.0 3D controller: NVIDIA Corporation GP100GL [Tesla P100 PCIe 16GB] (rev a1

Java Опции: -Xms1G -Xmx2G -Dorg.bytedeco.javacpp.maxbytes=14G -Dorg.bytedeco.javacpp.maxphysicalbytes=14G

Драйверы Maven CUDA:

<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-cuda-10.0</artifactId>
    <version>1.0.0-beta4</version>
</dependency>
<dependency>
    <groupId>org.nd4j</groupId>
    <artifactId>nd4j-cuda-10.0-platform</artifactId>
    <version>1.0.0-beta4</version>
</dependency>

Ошибка:

java.lang.OutOfMemoryError: Cannot allocate new PointerPointer(4): totalBytes = 227M, physicalBytes = 14558M
    at org.bytedeco.javacpp.PointerPointer.<init> (PointerPointer.java:126)
    at org.nd4j.linalg.jcublas.ops.executioner.CudaExecutioner.calculateOutputShape 
    ...
Caused by: java.lang.OutOfMemoryError: Physical memory usage is too high: physicalBytes (14558M) > maxPhysicalBytes (14336M)
    at org.bytedeco.javacpp.Pointer.deallocator (Pointer.java:589)
    at org.bytedeco.javacpp.Pointer.init (Pointer.java:125)
    at org.bytedeco.javacpp.PointerPointer.allocateArray (Native Method)
    at org.bytedeco.javacpp.PointerPointer.<init> (PointerPointer.java:118)
    at org.nd4j.linalg.jcublas.ops.executioner.CudaExecutioner.calculateOutputShape 
    ...

1 Ответ

0 голосов
/ 06 марта 2020

Первое, что вы должны сделать, это обновить текущую версию, которая является 1.0.0-бета6.

Затем вы должны посмотреть, сколько памяти вашей модели действительно нужно для обработки больших партий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...