81 votes

Tensorflow définit CUDA_VISIBLE_DEVICES dans jupyter

J'ai deux GPU et souhaite utiliser simultanément deux réseaux différents via ipynb. Cependant, le premier ordinateur portable attribue toujours les deux GPU.

Grâce à CUDA_VISIBLE_DEVICES, je peux masquer des périphériques pour les fichiers python, mais je ne sais pas comment procéder dans un cahier.

Est-il possible de cacher différents GPU dans les ordinateurs portables fonctionnant sur le même serveur?

167voto

Yaroslav Bulatov Points 7316

Vous pouvez définir les variables d'environnement dans le bloc-notes à l'aide de os.environ . Procédez comme suit avant d’initialiser TensorFlow pour limiter TensorFlow au premier GPU.

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

Vous pouvez vérifier que les dispositifs appropriés sont visibles par TF.

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

J'ai tendance à l'utiliser depuis un module utilitaire comme notebook_util

 import notebook_util
notebook_util.pick_gpu_lowest_memory()
import tensorflow as tf
 

37voto

Salvador Dali Points 11667

Vous pouvez le faire plus rapidement sans aucune importation en utilisant simplement la magie :

 %env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0
 

Notez que toutes les variables env sont des chaînes, il n'est donc pas nécessaire d'utiliser " . Vous pouvez vérifier que la variable env est configurée en exécutant: %env <name_of_var> . Ou vérifiez-les tous avec %env .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X