У меня есть рабочая станция с 2-х графических процессоров, и я пытаюсь запустить несколько заданий tensorflow в то же время, так что я могу тренироваться больше, чем одну модель сразу, и т.д.Tensorflow несколько сеансов с несколькими графическими процессорами
Например, Я пытался отделить сессий на различные ресурсы с помощью Python API, используя в script1.py:
with tf.device("/gpu:0"):
# do stuff
в script2.py:
with tf.device("/gpu:1"):
# do stuff
в script3.py
with tf.device("/cpu:0"):
# do stuff
Если я запускаю каждый скрипт сам по себе, я вижу, что он использует указанное устройство. (Также модели очень хорошо вписываются в один графический процессор и не используют другой, даже если оба доступны.)
Однако, если один скрипт запущен, и я пытаюсь запустить другой, я всегда получаю эту ошибку:
I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 8
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:909] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:103] Found device 0 with properties:
name: GeForce GTX 980
major: 5 minor: 2 memoryClockRate (GHz) 1.2155
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 187.65MiB
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:909] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:103] Found device 1 with properties:
name: GeForce GTX 980
major: 5 minor: 2 memoryClockRate (GHz) 1.2155
pciBusID 0000:04:00.0
Total memory: 4.00GiB
Free memory: 221.64MiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:127] DMA: 0 1
I tensorflow/core/common_runtime/gpu/gpu_init.cc:137] 0: Y Y
I tensorflow/core/common_runtime/gpu/gpu_init.cc:137] 1: Y Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:702] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 980, pci bus id: 0000:01:00.0)
I tensorflow/core/common_runtime/gpu/gpu_device.cc:702] Creating TensorFlow device (/gpu:1) -> (device: 1, name: GeForce GTX 980, pci bus id: 0000:04:00.0)
I tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:42] Allocating 187.40MiB bytes.
E tensorflow/stream_executor/cuda/cuda_driver.cc:932] failed to allocate 187.40M (196505600 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY
F tensorflow/core/common_runtime/gpu/gpu_bfc_allocator.cc:47] Check failed: gpu_mem != nullptr Could not allocate GPU device memory for device 0. Tried to allocate 187.40MiB
Aborted (core dumped)
Кажется, каждый процесс tensorflow пытается захватить все графические процессоры на машине, когда он загружается, даже если не все устройства будут использоваться для запуска модели.
Я вижу, есть возможность ограничить количество GPU каждый процесс использует
tf.GPUOptions(per_process_gpu_memory_fraction=0.5)
... Я не пробовал, но это, кажется, как это сделал бы два процесса пытаются разделить 50% каждого графического процессора вместо того, чтобы запускать каждый процесс на отдельном графическом процессоре ...
Кто-нибудь знает, как настроить tenorflow для использования только одного графического процессора и оставить другой доступным для другого процесса тензорного потока?
Я пытаюсь запустить несколько заданий TensorFlow одновременно. +1 –