Тензор потока установлен CUDA_VISIBLE_DEVICES в пределах юпитера

У меня есть два графических процессора, и я хотел бы одновременно запускать две разные сети через ipynb, однако первый ноутбук всегда выделяет оба графических процессора.

Используя CUDA_VISIBLE_DEVICES, я могу скрыть устройства для файлов Python, однако я не уверен, как это сделать в ноутбуке.

Есть ли способ скрыть разные графические процессоры для ноутбуков, работающих на одном сервере?

3 ответа

Решение

Вы можете установить переменные среды в блокноте, используя os.environ, Выполните следующие действия перед инициализацией TensorFlow, чтобы ограничить TensorFlow первым графическим процессором.

import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"   # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="0"

Вы можете дважды проверить, что у вас есть правильные устройства, видимые для TF

from tensorflow.python.client import device_lib
print device_lib.list_local_devices()

Я склонен использовать его из служебного модуля, как notebook_util

import notebook_util
notebook_util.pick_gpu_lowest_memory()
import tensorflow as tf

Вы можете сделать это быстрее без импорта, просто используя магию:

%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0

Обратите внимание, что все переменные env являются строками, поэтому нет необходимости использовать ", Вы можете проверить, что env-переменная установлена, запустив: %env <name_of_var>, Или проверьте их все %env,

Вы также можете включить несколько ядер графического процессора, например:

      import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"   # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="0,2,3,4"
Другие вопросы по тегам