2016-11-23 3 views
1

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?

+0

Was ist die GPU-Nutzung, die von der 'nvidia-smi' gemeldet wird? Vielleicht nutzt der Code nicht genug GPU? – sygi

Antwort

0

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:

  1. 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).

  2. (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.

  3. 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:

  1. Versuchen ein Upgrade auf Version dev. Sie haben über die Zeit verschiedene Verbesserungen vorgenommen.

  2. Versuchen Sie, die RNN (mit einer einfachen Schleife, um ein Diagramm anstelle von) zu erstellen, wenn Sie die Kompilierzeit leisten können.

  3. Ich machte eine PR zu Adresse gemv Problem, nur für alte GPU-Backend. Probieren Sie es aus (wenn es noch nicht zusammengeführt wurde). Jetzt ist es Teil des Dev-Master-Zweiges.

Verwandte Themen