Я новичок в обучении на основе GPU и в моделях глубокого обучения.Я использую cDCGAN (Conditonal DCGAN) в тензорном потоке на моих 2 графических процессорах Nvidia GTX 1080.Мой набор данных состоит из 320000 изображений с размерами классов 64 * 64 и 2350.Мой размер пакета очень маленький, т.е. 10, так как я столкнулся с ошибкой OOM (OOM при выделении тензора с формой [32,64,64,2351]) с большим размером batch_size.
Обучение идет очень медленно, насколько я понимаю, вплоть до размера партии (поправьте меня, если я ошибаюсь).Если я сделаю help -n 1 nvidia-smi
, я получу следующий вывод.
В основном используется GPU:0
, поскольку Volatile GPU-Util дает мне около 0% -65%, тогда как GPU:1
всегда 0% -3% макс.Производительность для GPU:0
всегда в P2, тогда как GPU:1
в основном P8 или иногда P2.У меня есть следующие вопросы.
1) Почему GPU: 1 не используется больше, чем текущее состояние, и почему он в основном имеет P8 Perf, хотя не используется?
2) Низкая скорость тренировочного процесса, вплоть до размера моей партии, или могут быть другие причины?
3) Как я могу улучшить производительность?4) Как можно избежать ошибки OOM с большим размером партии?
Редактировать 1:
Подробности модели следующие:
Генератор:
У меня есть 4 слоя (полностью подключены, UpSampling2d-conv2d, UpSampling2d-conv2d, conv2d).
W1 имеет форму [X + Y, 16 * 16 * 128], т. Е. (2450, 32768), w2 [3, 3, 128, 64], w3 [3, 3, 64, 32], w4 [[3, 3, 32, 1]] соответственно
Дискриминатор
Он имеет пять уровней (conv2d, conv2d, conv2d, conv2d, полностью подключен).
w1 [5, 5, X + Y, 64], т. Е. (5, 5, 2351, 64), w2 [3, 3, 64, 64], w3 [3, 3, 64, 128], w4 [2, 2, 128, 256], [16 * 16 * 256, 1] соответственно.