Tensorflow establecer DISPOSITIVOS VISIBLES CUDA dentro de jupyter


Tengo dos GPU y me gustaría ejecutar dos redes diferentes a través de ipynb simultáneamente, sin embargo, el primer portátil siempre asigna ambas GPU.

Usando CUDA_VISIBLE_DEVICES, puedo ocultar dispositivos para archivos python, sin embargo, no estoy seguro de cómo hacerlo dentro de un cuaderno.

¿Hay de todos modos para ocultar diferentes GPU en los portátiles que se ejecutan en el mismo servidor?

Author: Tim, 2016-06-18

2 answers

Puede establecer variables de entorno en el cuaderno usando os.environ. Haga lo siguiente antes de inicializar TensorFlow para limitar TensorFlow a la primera GPU.

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

Puede verificar que tiene los dispositivos correctos visibles para TF

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

Tiendo a usarlo desde el módulo de utilidad como notebook_util

import notebook_util
notebook_util.pick_gpu_lowest_memory()
import tensorflow as tf
 84
Author: Yaroslav Bulatov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-09 02:10:16

Puedes hacerlo más rápido sin importar nada solo usando magics :

%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0

Observe que todas las variables env son cadenas, por lo que no es necesario usar ". Puede verificar que env-variable está configurado ejecutando: %env <name_of_var>. O comprobar todos ellos con %env.

 17
Author: Salvador Dali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-02 07:44:32