it-swarm.com.ru

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

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

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

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

51
Tim

Вы можете установить переменные среды в блокноте, используя 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
110
Yaroslav Bulatov

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

%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0

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

20
Salvador Dali