Набор тензорного потока CUDA_VISIBLE_DEVICES в jupyter
У меня два графических процессора, и я хотел бы одновременно запускать две разные сети через ipynb, однако первый ноутбук всегда выделяет оба графических процессора.
Используя CUDA_VISIBLE_DEVICES, я могу скрыть устройства для файлов python, однако я не уверен, как это сделать в ноутбуке.
В любом случае, чтобы скрыть разные графические процессоры к ноутбукам, работающим на одном сервере?
Ответы
Ответ 1
Вы можете установить переменные среды в ноутбуке, используя 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
Ответ 2
Вы можете сделать это быстрее без импорта, используя magics:
%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0
Обратите внимание, что все переменные env являются строками, поэтому не нужно использовать "
. Вы можете убедиться, что env-variable настроена путем запуска: %env <name_of_var>
. Или проверьте все из них с помощью %env
.