Набір тензорних потоків CUDA_VISIBLE_DEVICES у межах jupyter


77

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

Використовуючи CUDA_VISIBLE_DEVICES, я можу приховувати пристрої для файлів python, проте я не впевнений, як це зробити в блокноті.

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

Відповіді:


156

Ви можете встановити змінні середовища в зошиті за допомогою 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

1
для мене це не спрацювало os.environ ["CUDA_VISIBLE_DEVICES"] = "0" ... Я змінив його на os.environ ["CUDA_VISIBLE_DEVICES"] = "", а потім він спрацював. Я використовую tensorflow 1.12
AlonSamuel

Я спробував відобразити локальні пристрої tensorflow, як згадувалося. Моя система виводить лише тип пристрою: ЦП. Чи означає це, що на tensorflow не працює графічний процесор.
shaifali Gupta

Це не працює для мене після імпорту тензорфлоу.
rjurney

33

Ви можете зробити це швидше без будь-якого імпорту, просто використовуючи магію :

%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0

Зверніть увагу, що всі змінні env є рядками, тому не потрібно використовувати ". Ви можете переконатися в тому , що ENV-змінна встановлюється командою: %env <name_of_var>. Або перевірте всі з них %env.


Чи впливає це envналаштування на інші скрипти python? як це виглядає як зміна змінної середовища os.
JenkinsY

@JenkinsY ви можете легко перевірити це, встановивши змінну в одному сценарії та прочитавши в іншому.
Сальвадор Далі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.