2017-08-15 7 views
0
tensorflow: 1.2.0 
gpu: TITAN X (Pascal) 
driver: 370.28 

je cours distrubuted tensorflow pour former l'image classer modèle, mais ne vois pas l'utilisation de gpu (en fait, gpu util de mnist ou tout autre travail de formation sont également 0).Gpu util est 0 lorsque Exécuter le travail de formation tensorflow et changement de contexte est très élevé

il y a de nombreux appels système de sondage quand straced le processus de formation (sondage fd est/dev/nvidia0):

poll([{fd=8, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=15, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=21, events=POLLIN}], 10, 100 <unfinished ...> 
futex(0x2d1eca4, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 3340677, {1502763800, 428734182}, ffffffff) = -1 ETIMEDOUT (Connection timed out) 

vmstat montre très haut changement de contexte, des millions cs par seconde.

avait quelqu'un vu cela auparavant?

Répondre

0

J'ai déjà eu le même problème auparavant, mais c'est parce que mon GPU n'est pas configuré pour fonctionner - J'ai lancé tensorflow sur mon CPU, mais je pensais qu'il était exécuté sur GPU. Si vous faites tout correctement, ce ne sera pas comme ça.

1) Vous pouvez vérifier cela par l'utilisation nvidia-smi pour vérifier: Malgré que la util gpu est 0%, est la mémoire gpu util aussi 0%? S'il n'y a aucun processus dans les processus du tout?

- Si c'est le cas, votre gpu n'est pas utilisé, le tensorflow doit tourner sur CPU (vous pouvez utiliser top pour vérifier l'utilisation du cpu, s'il est supérieur à 100%, c'est une preuve supplémentaire que le programme est réellement paraleled sur CPU)

Dans ce cas, vous devriez vérifier si vous avez installé la version gpu de tensorflow. Vous trouverez peut-être deux versions différentes de l'introduction de l'installation sur www.tensorflow.org pour cpu/gpu. Un tensorflow de version de CPU ne peut jamais être exécuté sur GPU.

De plus, dans certains environnements de machines, vous devez spécifier explicitement le périphérique gpu que vous souhaitez utiliser. Utilisez la commande comme suit pour vérifier:

CUDA_VISIBLE_DEVICES = 0 python rnn_mnist.py

(Note = doit être dans le format, par exemple CUDA_VISIBLE_DEVICES = [0] est invalide, mais pas d'avertissement sera encouragée le programme fonctionnera simplement sur le processeur à la place)

2) Si ce n'est pas le cas, que le python tourne vraiment sur GPU et que c'est juste l'util 0%. Il y a une autre possibilité que la récupération de données coûte trop de temps, ce qui est sur le CPU, et le GPU attend toujours des données, donc l'util est avg 0%.

- La raison la plus probable est que vous définissez batch_size trop petit, essayez 128 ou 1024.