J'ai l'intention d'utiliser TensorFlow distribué et j'ai vu que TensorFlow pouvait utiliser des GPU pour la formation et les tests. Dans un environnement de cluster, chaque machine peut avoir 0 ou 1 ou plusieurs GPU, et je souhaite exécuter mon graphique TensorFlow dans des GPU sur autant de machines que possible.
J'ai constaté que lors de l'exécution de tf.Session()
TensorFlow, il donne des informations sur le GPU dans les messages du journal comme ci-dessous:
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0)
Ma question est de savoir comment obtenir des informations sur le GPU actuellement disponible auprès de TensorFlow? Je peux obtenir des informations GPU chargées à partir du journal, mais je veux le faire de manière programmatique plus sophistiquée. Je pourrais également restreindre intentionnellement les GPU en utilisant la variable d'environnement CUDA_VISIBLE_DEVICES, donc je ne veux pas connaître un moyen d'obtenir des informations GPU à partir du noyau du système d'exploitation.
En bref, je veux qu'une fonction comme tf.get_available_gpus()
celle-ci revienne ['/gpu:0', '/gpu:1']
s'il y a deux GPU disponibles dans la machine. Comment puis-je mettre en œuvre cela?
la source
Free memory
pour moi, en utilisanttensorflow1.1
. En pythonfrom tensorflow.python.client import device_lib
device_lib.list_local_devices()
Vous pouvez vérifier toutes les listes d'appareils en utilisant le code suivant:
la source
python3 -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
cannot import name 'format_exc' from 'traceback'
Il existe également une méthode dans le test util . Il ne reste donc qu'à:
et / ou
Recherchez des arguments dans la documentation Tensorflow.
la source
tf.test.is_gpu_available()
will returnTrue
Dans TensorFlow 2.0, vous pouvez utiliser
tf.config.experimental.list_physical_devices('GPU')
:Si vous avez deux GPU installés, il génère ceci:
À partir de la version 2.1, vous pouvez supprimer
experimental
:Voir:
la source
'GPU'
pour'XLA_GPU'
.La réponse acceptée vous donne le nombre de GPU mais elle alloue également toute la mémoire sur ces GPU. Vous pouvez éviter cela en créant une session avec une mémoire inférieure fixe avant d'appeler device_lib.list_local_devices () qui peut être indésirable pour certaines applications.
J'ai fini par utiliser nvidia-smi pour obtenir le nombre de GPU sans leur allouer de mémoire.
la source
Outre l'excellente explication de Mrry, où il a suggéré d'utiliser,
device_lib.list_local_devices()
je peux vous montrer comment vous pouvez vérifier les informations relatives au GPU à partir de la ligne de commande.Étant donné qu'actuellement, seuls les gpus de Nvidia fonctionnent pour les frameworks NN, la réponse ne les couvre que. Nvidia a une page où ils documentent comment vous pouvez utiliser l'interface du système de fichiers / proc pour obtenir des informations d'exécution sur le pilote, toutes les cartes graphiques NVIDIA installées et l'état AGP.
Vous pouvez donc l'exécuter à partir de la ligne de commande
cat /proc/driver/nvidia/gpus/0/information
et voir des informations sur votre premier GPU. Il est facile d' exécuter cela à partir de python et vous pouvez également vérifier le deuxième, le troisième, le quatrième GPU jusqu'à ce qu'il échoue.La réponse de Mrry est certainement plus robuste et je ne suis pas sûr que ma réponse fonctionnera sur une machine non Linux, mais cette page de Nvidia fournit d'autres informations intéressantes, que peu de gens connaissent.
la source
Ce qui suit fonctionne dans tensorflow 2:
À partir de la version 2.1, vous pouvez supprimer
experimental
:https://www.tensorflow.org/api_docs/python/tf/config/list_physical_devices
la source
J'ai un GPU appelé
NVIDIA GTX GeForce 1650 Ti
dans ma machine avectensorflow-gpu==2.2.0
Exécutez les deux lignes de code suivantes:
Production:
la source
Utilisez cette méthode et vérifiez toutes les pièces:
la source
Assurez-vous que le dernier GPU TensorFlow 2.x est installé sur votre machine prenant en charge le GPU, exécutez le code suivant en python,
Obtiendra une sortie ressemble à,
la source