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

I tensorflow distrubuted laufen Modell zu trainieren Bild klassifizieren, aber sehen keine Verwendung gpu (eigentlich gpu util von mnist oder anderen Trainings Job sind auch 0).Gpu util 0 ist, wenn tensorflow Training Job ausführen und Kontextwechsel ist sehr hoch

gibt es viele Umfrage-Systemaufruf, wenn Sie den Trainingsprozess straced (Umfrage fd/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 zeigt sehr hohe Kontextschalter, Millionen cs pro Sekunde.

Hatte jemand das schon einmal gesehen?

Antwort

0

Ich hatte das gleiche Problem zuvor, aber es ist, weil mein GPU nicht eingestellt ist zu laufen - ich lief Tensorflow auf meiner CPU, aber ich dachte, es wurde auf GPU ausgeführt. Wenn du alles richtig machst, wird es nicht so sein.

1) Sie können dies überprüfen, indem Sie nvidia-smi verwenden, um zu überprüfen: Obwohl die GPU-Utility 0% ist, ist der GPU-Speicher util auch 0%? Wenn es in Process überhaupt keinen Prozess gibt?

- Wenn ja, Ihre GPU wird überhaupt nicht verwendet, der Tensorflow muss auf der CPU laufen (Sie können oben verwenden, um CPU-Auslastung zu überprüfen, wenn es über 100% ist, dann ist es ein zusätzlicher Beweis, dass das Programm tatsächlich ist Parallel zur CPU)

In diesem Fall sollten Sie überprüfen, ob Sie die GPU-Version von Tensorflow installiert haben. Unter http://www.tensorflow.org finden Sie zwei verschiedene Versionen der Installationsanleitung für cpu/gpu. Eine CPU-Version Tensorflow kann nie auf GPU ausgeführt werden.

Darüber hinaus müssen Sie in einigen Computerumgebungen das GPU-Gerät angeben, das Sie explizit verwenden möchten. Verwenden Sie den Befehl wie folgt aus überprüfen:?

CUDA_VISIBLE_DEVICES = 0 Python rnn_mnist.py

(Note = im richtigen Format sein müssen, zB CUDA_VISIBLE_DEVICES = [0] ist ungültig, aber keine Warnung wird gefördert, das Programm wird nur auf CPU statt)

2) Wenn es nicht der Fall ist, dass der Python wirklich auf GPU läuft und es ist nur das Util ist 0%. Es gibt noch eine andere Möglichkeit, dass der Datenabruf zu viel Zeit kostet, was auf der CPU liegt, und die GPU immer auf Daten wartet, so dass das Util avg 0% ist.

- Der wahrscheinlichste Grund ist, dass Sie Batch_size zu klein einstellen, versuchen Sie 128 oder 1024.

Verwandte Themen