Как снизить потребление оперативной памяти в Tensorflow? - PullRequest
0 голосов
/ 24 февраля 2020

Привет,

Я пытаюсь использовать DarkFlow, реализацию Python YOLO (которая использует Tensorflow в качестве бэкэнда), на моем Nvidia Jetson Nano для обнаружения объектов. Я получил все настройки и прочее, но он не хочет тренироваться. Я установил его в режим графического процессора, и строка в выводе говорит следующее:

Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 897MB memory) -> physical GPU (device: 0, name: NVIDIA Tegra X1, pci bus id: 0000:00:00.0, compute capability: 5.3)

Это последняя строка, которую он выводит до того, как тренировка получает "Killed" без каких-либо дальнейших сообщений. Поскольку это тяжелый сверточный NN, я думаю, что причина в чрезмерном потреблении ОЗУ. Теперь я могу использовать этот графический процессор только в моем Jetson Nano, так что у кого-нибудь есть предложения, как уменьшить его или как решить проблему иначе?

Спасибо за ответы заранее!

1 Ответ

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

Вы можете попытаться уменьшить batch_size до 1 и понизить значения width,height, но не порекомендуете тренировку на jetson nano. Его ограниченные возможности (4 ГБ общая ОЗУ) затрудняют процесс обучения. Чтобы противостоять ограничениям, вы можете попытаться выполнить этот пост или этот , чтобы увеличить swap_area, который действует как ОЗУ, но все же я бы рекомендовал использовать nano только для логического вывода.

EDIT1 : Также известно, что Tensorflow имеет тенденцию пытаться выделить всю доступную оперативную память, что делает процесс уничтоженным ОС. Чтобы решить эту проблему, вы можете использовать tf.GPUOptions для ограничения использования памяти Tensorflow. Пример:

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.4)
session = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

Мы выбрали per_process_gpu_memory_fraction в качестве 0,4, так как лучше не разрешать Tensorflow выделять больше ОЗУ, чем половина доступных ресурсов (также потому, что оно используется совместно)

Удачи.

...