Ограничение использования памяти графического процессора M XNet - PullRequest
1 голос
/ 17 июня 2020

Есть ли способ, которым мы можем ограничить выделение памяти, используемое этой моделью, чтобы позволить одновременное выполнение моделей?

В настоящее время я использую InsightFace который построен на M XNet.

После загрузки первой модели статистика памяти графического процессора отражает:

utilization.gpu 74 utilization.memory 0 memory.free 13353 memory.used 2777 memory.total 16130

После выполнения первого логического вывода он всплывает, но GPU Utilization все еще очень низкий при 3:

utilization.gpu 3 utilization.memory 0 memory.free 9789 memory.used 6341 memory.total 16130

Это заставляет меня думать, что мы должны иметь возможность загружать больше моделей на тот же графический процессор, но, к сожалению, память уже выделена для M XNet.


Пробные решения:

  1. Попытка ctx.empty_cache() между вызовами модели - https://mxnet.apache.org/api/python/docs/api/mxnet/context/index.html#mxnet .context.Context. empty_cache
  2. Попытка MXNET_GPU_MEM_POOL_RESERVE:60 - https://discuss.mxnet.io/t/how-to-limit-gpu-memory-usage/6304/3
  3. Использование gc.collect() Сброс памяти графического процессора с помощью Keras 1.2.2 с M Xnet backend

Но ни один из них не работал.

1 Ответ

1 голос
/ 18 июня 2020

Посмотрев на Переменные среды M XNet, выясняется, что ответ отрицательный.


Вы можете попробовать установить MXNET_MEMORY_OPT=1 и MXNET_BACKWARD_DO_MIRROR=1, которые задокументированы в разделе «Оптимизация памяти» ссылки, которой я поделился.

Также убедитесь, что min(MXNET_EXEC_NUM_TEMP, MXNET_GPU_WORKER_NTHREADS) = 1 верно для вас, что должно быть, если вы использовали значения по умолчанию для этих переменных среды.

...