Chainer: Исключение в основном цикле обучения: недостаточно памяти для выделения 2097152000 байт (всего 13850445312 байт) - PullRequest
0 голосов
/ 19 июня 2019

Код обучения Chainer:

 I am using --
 Chainer: 6.0.0
 NumPy: 1.15.4
 CuPy:
     CuPy Version          : 6.0.0
     CUDA Root             : /usr/local/cuda-10.0
     CUDA Build Version    : 10000
     CUDA Driver Version   : 10010
     CUDA Runtime Version  : 10000
     cuDNN Build Version   : 7401
     cuDNN Version         : 7401
     NCCL Build Version    : 2307
     NCCL Runtime Version  : 2307
     iDeep: 2.0.0.post3

 AwS P2.xlarge Instances : Gpu k80 with Memory 11441MiB

Я проверил заполнение памяти -

   nvidia-smi -l 1

Мой вопрос - это проблема в исходном коде? ИЛИ Подлинно ли вся память заполнена? Как это решить?

Я подписан на CHAINER VAE

Все работает на процессоре . Требуется время, поэтому требуется запуск на GPU .

Я пытался уменьшить batch_size со 100 до 50, но, как я уже говорил, 8068MiB / 11441MiB память потребляется при выполнении строки

  avg_elbo_loss.to_gpu() .

Во-вторых, я изменил его на процессор

  avg_elbo_loss.to_cpu().

но то же самое происходит, когда я запускаю программу обновления

  updater = training.StandardUpdater(train_iter, optimizer, device=args.gpu)

Теперь, если я выполню еще какую-нибудь строку с args.gpu , тогда он выдаст OOM (из памяти)

Я снова применил использование более высоких экземпляров, таких как p2.8xlarge. Но, если это проблема в исходном коде, я должен знать, прежде чем перейти к другим экземплярам.

prior = network.make_prior(args.dim_z)
avg_elbo_loss = network.AvgELBOLoss(encoder, decoder, prior,
                            beta=args.beta, k=args.k)

Эта строка ниже занимает около 8068 МБ / 11441 МБ

avg_elbo_loss.to_gpu()

Есть еще строка кода, которая требует памяти, которая при выполнении выдает OOM

updater = training.StandardUpdater(train_iter, optimizer, device=args.gpu)

trainer.extend(extensions.Evaluator(test_iter,avg_elbo_loss , device=args.gpu))

И наконец для обучения

trainer.run()

 File "cupy/core/core.pyx", line 134, in cupy.core.core.ndarray.__init__
 File "cupy/cuda/memory.pyx", line 518, in cupy.cuda.memory.alloc
 File "cupy/cuda/memory.pyx", line 1085, in 
 cupy.cuda.memory.MemoryPool.malloc
 File "cupy/cuda/memory.pyx", line 1106, in 
 cupy.cuda.memory.MemoryPool.malloc
 File "cupy/cuda/memory.pyx", line 919, in 
 cupy.cuda.memory.SingleDeviceMemoryPool.malloc
 File "cupy/cuda/memory.pyx", line 949, in 
 cupy.cuda.memory.SingleDeviceMemoryPool._malloc
 File "cupy/cuda/memory.pyx", line 697, in cupy.cuda.memory._try_malloc

Завершит работу над расширениями и обновлениями тренера, прежде чем повторно использовать исключение.

Есть ли способ ее решить?

Я ожидал, что он запустится без проблем с памятью.

...