61 votes

tensorflow sur GPU : pas de périphériques connus, bien que deviceQuery de cuda renvoie un résultat "PASS".

Note : cette question a été initialement demandé sur github mais il a été demandé d'être ici à la place

J'ai des difficultés à faire fonctionner tensorflow sur le gpu, et cela ne semble pas être le problème habituel de configuration de cuda, car tout semble indiquer que cuda est correctement configuré.

Le symptôme principal : lorsque je lance tensorflow, mon gpu n'est pas détecté ( le code en cours d'exécution y son rendement ).

Ce qui diffère des problèmes habituels, c'est que cuda semble correctement installé et fonctionne. ./deviceQuery à partir des échantillons cuda est réussie ( sortie ).

J'ai deux cartes graphiques :

  • une vieille GTX 650 utilisée pour mes moniteurs (je ne veux pas utiliser celle-là avec tensorflow)
  • une GTX 1060 que je veux dédier à tensorflow

J'utilise :

J'ai essayé :

  • en ajoutant /usr/local/cuda/bin/ a $PATH
  • forcer le placement du gpu dans le script de tensorflow à l'aide de with tf.device('/gpu:1'): (et with tf.device('/gpu:0'): quand il a échoué, pour faire bonne mesure)
  • en mettant sur liste blanche le gpu que je voulais utiliser avec CUDA_VISIBLE_DEVICES au cas où la présence de ma vieille carte non supportée causerait des problèmes.
  • exécuter le script avec sudo (parce que pourquoi pas)

Voici les sorties de nvidia-smi y nvidia-debugdump -l si c'est utile.

À ce stade, j'ai l'impression d'avoir suivi toutes les pistes et je n'ai aucune idée de ce que je pourrais essayer d'autre. Je ne sais même pas si je suis en train d'envisager un bogue ou un problème de configuration. Tout conseil sur la façon de déboguer ce problème serait grandement apprécié. Merci !

Mise à jour Avec l'aide de Yaroslav sur github, j'ai obtenu plus d'informations sur le débogage en augmentant le niveau du journal, mais cela ne semble pas dire grand chose sur la sélection du périphérique : https://gist.github.com/oelmekki/760a37ca50bf58d4f03f46d104b798bb

Mise à jour 2 : L'utilisation de theano détecte correctement le gpu, mais il est intéressant de noter qu'il se plaint que cuDNN est trop récent, puis se rabat sur le cpu ( le code a été exécuté , sortie ). Peut-être que cela pourrait être le problème avec tensorflow également ?

1 votes

Comme autre vérification, vous pouvez essayer un autre framework (comme Theano) avec le GPU pour voir si cela fonctionne. Peut-être que votre configuration GPU est cassée et n'est pas détectée par deviceQuery.

0 votes

Bonne idée, merci. Je vais essayer et le signaler dans le corps de la question.

0 votes

Cette sortie est suspicieusement petite, voici ce que je vois quand j'exécute avec VLOG=1 -- pastebin.com/LQF0j3Ri

0voto

Simurgh Points 1

Cette erreur peut être causée par la capacité de calcul de votre GPU. CUDA prend officiellement en charge la capacité de calcul des GPU entre 3.5 et 5.0, vous pouvez vérifier ici : https://en.wikipedia.org/wiki/CUDA

Dans mon cas, l'erreur était la suivante :

Ignorer le périphérique gpu visible (device : 0, name : GeForce GT 640M, pci bus id : 0000:01:00.0, compute capability : 3.0) avec la capacité de calcul Cuda 3.0. La capacité Cuda minimale requise est de 3.5.

Pour l'instant, nous ne pouvons compiler à partir du code source que sur Linux (ou mac OS) pour dépasser la limite de '3.5~5.0'.

0voto

bruzzo Points 92

Il y a plusieurs problèmes d'incompatibilité du système.

Les exigences en matière de bibliothèques peuvent varier selon la version de TensorFlow.

Lors de l'utilisation de python en mode interactif, beaucoup d'informations utiles sont imprimées dans stderr . Ce que je suggère pour TensorFlow avec la version 2.0 ou plus à appeler :

python3.8 -c "import tensorflow as tf ; print('tf version:', tf. version ) ; tf.config.list_physical_devices()"

Après cette commande, vous observerez les bibliothèques manquantes (ou une version de celle-ci) pour travailler avec GPU en plus des exigences :

p.s. CUDA_VISIBLE_DEVICES ne devrait pas avoir de lien réel avec TensorFlow, ou alors c'est plus général - c'est un moyen de personnaliser les GPUs disponibles pour tous les processus lancés.

0voto

Aelius Points 407

Pour les utilisateurs d'anaconda . J'ai installé tensorflow-gpu via une interface graphique en utilisant Anaconda Navigator et en configurant le GPU NVIDIA comme dans guide tensorflow mais tensorflow n'a pas pu trouver le GPU de toute façon. J'ai alors désinstallé tensorflow, toujours via l'interface graphique (voir aquí ) et l'a réinstallé via la ligne de commande dans une émission de prompt anaconda :

conda install -c anaconda tensorflow-gpu

et alors tensorflow pourrait trouver le GPU correctement.

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