Код обучения 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
Завершит работу над расширениями и обновлениями тренера, прежде чем повторно использовать исключение.
Есть ли способ ее решить?
Я ожидал, что он запустится без проблем с памятью.