Meine GPU, die Titan X ist, sollte schneller als die CPU sein, die Intel (R) Xeon (R) CPU E5-2643 v3 @ 3.40GHz ist. Aber zwei meiner Modelle laufen etwas langsamer auf der GPU. Ein Modell läuft auf der GPU viel schneller. Unter diesen beiden Modellen wird eines mit Tensorflow implementiert, das andere wird mit theano implementiert. Der gemeinsame Charakter der zwei Modelle ist, dass sie alle dem hierarchischen Bi-LSTM-Modell angehören, was bedeutet, dass die letzten Ausgaben des unteren Bi-LSTM in die anderen als Eingaben eingegeben werden. Keines der Modelle ist also zu einfach. Also würde ich gerne fragen, was sind die möglichen Gründe, dass sie langsamer auf GPU als auf CPU laufen?Was sind die möglichen Gründe dafür, dass ein Deep-Learning-Modell auf der GPU langsamer läuft als auf der CPU?
Antwort
Ich konnte ein paar Informationen für die Theano Seite bieten:
Theano mit scan
mehrere Probleme mit worden, die für RNN seine Arbeitspferd ist Schleifen.
Hier einige davon:
Da Theano nicht Forminformationen zum Zeitpunkt der Kompilierung nicht kennt, die resultierende kompilierte Routine suboptimal sein kann (wie
gemv
für Vektor-Vektor-Punkt verwenden).(Stand: Nov. 2016) Die aktuelle Version von ist in Cython implementiert, die einen gewissen Mehraufwand gegenüber einer reinen C++ - Version haben. Wenn die RNN in einem einzigen Schritt nicht viel Berechnungsdichte aufweist, kann dies signifikant sein.
Es funktioniert nicht gut. Die Verwendung einer
scan
zum Implementieren einer Zuordnungsoperation kann oft langsamer sein als die direkte Verwendung der zugrunde liegenden Operation. Anscheinend ist der Optimierer zu früh und kann diese Art von Problem immer noch nicht erkennen.
Lösung:
Versuchen ein Upgrade auf Version dev. Sie haben über die Zeit verschiedene Verbesserungen vorgenommen.
Versuchen Sie, die RNN (mit einer einfachen Schleife, um ein Diagramm anstelle von) zu erstellen, wenn Sie die Kompilierzeit leisten können.
Ich machte eine PR zu AdresseJetzt ist es Teil des Dev-Master-Zweiges.gemv
Problem, nur für alte GPU-Backend. Probieren Sie es aus (wenn es noch nicht zusammengeführt wurde).
- 1. Was sind die möglichen Gründe dafür, dass selbst nach erfolgreicher Ausführung die Kontrolle nicht zurückkommt?
- 2. OpenCV ORB GPU-Implementierung langsamer als CPU
- 3. Gründe dafür, dass /etc/init.d/crond nicht läuft
- 4. GPU liest von CPU oder CPU schreibt auf die GPU?
- 5. Keras (Tensorflow Backend) langsamer auf GPU als auf CPU beim Training bestimmter Netzwerke
- 6. Variablen auf CPU, Training/Gradienten auf GPU
- 7. Messzeit auf der GPU
- 8. Verwenden der GPU als CPU in KVM
- 9. Was sind die möglichen Gründe, wenn der Kalman-Filter keine stabilisierende Kalman-Verstärkung berechnen kann?
- 10. Warum läuft mein Programm auf meinem CPU-Gerät wesentlich schneller als auf meinem GPU-Gerät?
- 11. Shader auf der GPU ausführen
- 12. Woher weiß ich, dass mein OpenCL-Kernel auf der GPU läuft?
- 13. Was sind die legitimen Gründe, MappedByteBuffer.force() aufzurufen?
- 14. TensorFlow: Wie man überprüft, dass es auf GPU läuft
- 15. SQL-Abfrage läuft langsamer als
- 16. Soll ich Matrizen auf der GPU oder auf der CPU berechnen?
- 17. Wie man Tensorflow auf der CPU
- 18. Was sind die möglichen Anwendungsfälle der OrientDb Live Query-Funktion?
- 19. MPI-2 auf CPU vs. GPU
- 20. C++ AMP mit schnellen GPUs langsamer als CPU
- 21. Warum ist meine GPU beim Training von LSTM/RNN-Modellen langsamer als die CPU?
- 22. Nicht in der Lage, fehlerhaften Kernel zu beenden, der auf NVIDIA GPU läuft
- 23. TensorFlow: Grafikoptimierung (GPU-CPU-Leistung)
- 24. Was sind die möglichen Werte für Dateideskriptoren?
- 25. Was sind die Gründe dafür, keinen Index in Java 8 Streams zu haben?
- 26. Was sind die Programmiersprachen für GPU
- 27. Was sind die möglichen Gründe für "log4j: Fehler Konnte keinen Wert für den Schlüssel log4j.appender.SQL_APPENDER finden"
- 28. Was sind die möglichen Werte von HTTP_X_REQUESTED_WITH?
- 29. Warum läuft dieses Python-Skript auf mehreren Kernen 4x langsamer als auf einem einzigen Kern?
- 30. Was sind die Gründe hinter den Szenen, die dazu führen, dass selbst gehostete Videos nicht auf Handy laufen?
Was ist die GPU-Nutzung, die von der 'nvidia-smi' gemeldet wird? Vielleicht nutzt der Code nicht genug GPU? – sygi