У меня есть план использовать распределенный TensorFlow, и я увидел, что TensorFlow может использовать графические процессоры для обучения и тестирования. В кластерной среде каждая машина может иметь 0 или 1 или более графических процессоров, и я хочу запустить свой график TensorFlow в графических процессорах на максимально возможном количестве машин.
Я обнаружил, что при запуске tf.Session()
TensorFlow выдает информацию о графическом процессоре в сообщениях журнала, как показано ниже:
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0)
У меня вопрос, как мне получить информацию о текущем доступном графическом процессоре от TensorFlow? Я могу получить загруженную информацию GPU из журнала, но я хочу сделать это более изощренным, программным способом. Я также мог бы намеренно ограничить использование графических процессоров, используя переменную среды CUDA_VISIBLE_DEVICES, поэтому я не хочу знать способ получения информации о графических процессорах из ядра ОС.
Короче говоря, я хочу, чтобы такая функция tf.get_available_gpus()
возвращалась, ['/gpu:0', '/gpu:1']
если в машине есть два GPU. Как я могу это реализовать?
источник
Free memory
для меня, используяtensorflow1.1
. Вfrom tensorflow.python.client import device_lib
device_lib.list_local_devices()
Вы можете проверить весь список устройств, используя следующий код:
источник
python3 -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
cannot import name 'format_exc' from 'traceback'
В утилите test также есть метод . Так что все, что нужно сделать, это:
и / или
Посмотрите документы Tensorflow для аргументов.
источник
tf.test.is_gpu_available()
что вернусьTrue
В TensorFlow 2.0 вы можете использовать
tf.config.experimental.list_physical_devices('GPU')
:Если у вас установлено два графических процессора, он выводит это:
С версии 2.1 вы можете удалить
experimental
:Видеть:
источник
'GPU'
на'XLA_GPU'
.Общепринятый ответ дает количество графических процессоров , но он также выделяет всю память на этих чипах. Вы можете избежать этого, создав сеанс с фиксированной нижней памятью перед вызовом device_lib.list_local_devices (), что может быть нежелательным для некоторых приложений.
В итоге я использовал nvidia-smi, чтобы получить количество графических процессоров без выделения памяти на них.
источник
Помимо превосходного объяснения, которое Мрри предложил, где он предложил использовать,
device_lib.list_local_devices()
я могу показать вам, как вы можете проверять информацию, связанную с GPU, из командной строки.Поскольку в настоящее время только Gvus от Nvidia работают на платформах NN, ответ охватывает только их. У Nvidia есть страница, где они документируют, как вы можете использовать интерфейс файловой системы / proc для получения во время выполнения информации о драйвере, любых установленных графических картах NVIDIA и статусе AGP.
Таким образом, вы можете запустить это из командной строки
cat /proc/driver/nvidia/gpus/0/information
и посмотреть информацию о вашем первом графическом процессоре. Это легко запустить из Python а также вы можете проверить второй, третий, четвертый GPU, пока он не выйдет из строя.Определенно, ответ Mrry более надежный, и я не уверен, будет ли мой ответ работать на машине, отличной от Linux, но на странице Nvidia есть другая интересная информация, о которой мало кто знает.
источник
В тензор потока 2 работает:
С версии 2.1 вы можете удалить
experimental
:https://www.tensorflow.org/api_docs/python/tf/config/list_physical_devices
источник
Я получил графический процессор под названием
NVIDIA GTX GeForce 1650 Ti
в моей машине сtensorflow-gpu==2.2.0
Запустите следующие две строки кода:
Вывод:
источник
Используйте этот способ и проверьте все детали:
источник
Убедитесь, что на вашем компьютере, поддерживающем GPU, установлена последняя версия TensorFlow 2.x GPU. Выполните следующий код на python:
Будет ли вывод выглядеть как,
источник