Тензор потока установлен 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"