[PYTHON] Vorhersage von Effekten mit LSTM mithilfe von Keras + Tensorflow Teil 2 (Berechnung mit GPU)

Einführung

ThinkPad X260 (Core i7-6500 2,5 GHz (2core 4 Thread)), als ich [Vorhersage von Effekten mit LSTM mithilfe von Keras + Tensorflow] schrieb (http://qiita.com/rakichiki/items/a514f3a4f3e979ace3c9) Die Berechnung dauerte lange. Beim Deep Learning gibt es viele Parameter, und selbst wenn Sie versuchen, sie auf verschiedene Weise zu ändern, bleibt dies nicht so lange, wie es dauert. Darüber hinaus verfügt FX über mehrere Währungspaare, und es reicht nicht aus, nur ein Währungspaar zu haben, und es wird erwartet, dass die Überprüfung länger dauert.

Es kann jedoch mit GPUs beschleunigt werden, egal ob Tensorflow oder Keras. Es ist nur natürlich, Deep Learning auf einer GPU durchzuführen (wie wir später sehen werden, kann sich dieser Ablauf ändern). Deshalb habe ich mich für Geforce GTX 1070 entschieden.

Schwer (2017/6/5 7:00 hinzugefügt)

Eigentlich habe ich es bereits gekauft (ich habe es gekauft, um TensorFlow unter Ubuntu zu testen), aber die Hardware hat die folgende Konfiguration.

・ Geforce GTX 1070 (8 GB Speicher) ・ Core i5-6500 3,2 GHz (4core 4Thread) ・ Betriebssystem: Windows 10 64-Bit ・ Speicher: 8 GB

Da die Hauptsache darin besteht, die GPU berechnen zu lassen, ist der GPU-Teil reichhaltig, aber ich dachte, dass die CPU sowieso nicht notwendig wäre (ich werde es später erklären, aber wenn dies fehlschlägt ...). Ich lasse Speicher aus, verwende aber SSD (die Datenmenge ist zu gering und alles ist in Ordnung).

Außerdem habe ich 1070 mit 8 GB gewählt, weil ich viel Speicher auf der GPU haben möchte. Ich denke, wir könnten es noch schneller machen, indem wir 1080 oder 1080 Ti wählen, aber wir konnten nicht investieren, weil wir nicht wussten, wie viel GPU-Leistung wir brauchten. Weil die Stromversorgung in letzter Minute ist. Es wäre schön, wenn es auch für andere Zwecke verwendet werden könnte, aber ich könnte nicht zu viel investieren, weil ich vorhabe, es nur für tiefes Lernen zu verwenden. Wenn es nur eine Testversion ist, sind vielleicht 1060 mit 6 GB Speicher gut ...

Der Grund, warum ich Windows als Betriebssystem gewählt habe, ist, dass ich eine ähnliche Umgebung an anderer Stelle verwenden möchte. Ich hatte TensorFlow bereits unter Ubuntu ausprobiert (ich habe zu diesem Zeitpunkt noch kein Keras verwendet), aber die Installation war ziemlich schwierig.

Ich wollte auch, dass die Erfahrung es sofort installieren kann, wenn ich in Zukunft einen Notebook-PC (Windows) mit einer GPU kaufe.

Vorbereitung

Zunächst wird die GPU-Version von Tensorflow vorgestellt. Ich möchte sagen, dass es nicht so schwierig ist, wenn Sie auf install von TensorFlow verweisen, aber ich habe zwei.

Das erste ist die Installation von scipy. Grundsätzlich konnte ich es nicht mit Pip usw. installieren. Ich habe scipy-0.19.0-cp35-cp35m-win_amd64.whl von Inoffizielle Windows-Binärdateien für Python-Erweiterungspakete mitgebracht. Sie können dies mitbringen und installieren, indem Sie den Dateinamen wie unten gezeigt angeben.

# pip install scipy-0.19.0-cp35-cp35m-win_amd64.whl

Die zweite ist die VS-Bibliothek. Eigentlich war es hier bis zur vorletzten Woche (um den 28. Mai 2017), aber warum nicht? ..Ich werde es nachsehen.

Eigentlich hatte ich zuvor eine TensorFlow-GPU-Umgebung unter Ubuntu vorbereitet, aber es war subtil, welche einfacher war. Beides kann nicht reibungslos durchgeführt werden. Die Untu-Umgebung ist jetzt möglicherweise einfacher.

Es ist schade, dass es auf der Site keine detaillierten Schritte gibt, wie z. B. das Platzieren der NVIDIA cuDNN-Bibliothek im Pfad.

Es dauert jedoch länger, als es auf der CPU berechnet werden kann, daher muss ich die GPU tatsächlich einführen.

Quelle

Obwohl es sich um eine Quelle handelt, ist sie bereits in Github registriert. Git-Klon https://github.com/rakichiki/keras_fx.git und es wird keras_fx_gpu.ipynb sein. Es kann eine Fehlerbehebung als zuvor sein. Obwohl der Dateiname über eine GPU verfügt, funktioniert er auch in einer reinen CPU-Umgebung. Wenn Sie dies mit jupyter starten und hochladen, funktioniert es.

Die folgenden Teile von keras_fx_gpu.ipynb haben sich geändert (ich habe von irgendwoher darauf verwiesen, aber ich habe vergessen ... Es tut mir leid, dass ich nicht auf die Person verlinkt habe, die darauf verwiesen hat).

Einstellung für die Speichernutzung


import tensorflow as tf
from keras import backend as K

config = tf.ConfigProto(allow_soft_placement=True)
config.gpu_options.allow_growth = True
session = tf.Session(config=config)
K.set_session(session)

Wie ich in Ausführung und Diskussion erwähnen werde, hat die GPU weniger Speicher als der Hauptteil. Beispielsweise verfügt die Geforce GTX 1070 über 8 GB Speicher. Es ist heutzutage in Ordnung, 16 GB Speicher auf einem Entwicklungs-PC zu haben (mein Haupt-ThinkPad X260 hat 16 GB).

Deep Learning verbraucht jedoch viel Speicher, und wenn es nicht angegeben wird, kann es zuerst viel Speicher beanspruchen. Aus diesem Grund denke ich, dass verschiedene Probleme auftreten können, wenn Sie nicht zuerst schreiben, dass Sie so viel verwenden, wie Sie wie oben beschrieben verwenden.

Bisher war bei Verwendung von TensorFlow mit GPU unter Linux und beim Versuch, parallel zu berechnen, der GPU-Speicher unzureichend und neue Aufgaben konnten nicht gestartet werden. Ist die Verwendung geplant?

Ausführung (nur Geschwindigkeit) und Berücksichtigung (2017/06/06 07:15 Hauptrevision)

Lass es uns laufen. Dieses Mal denken wir jedoch daran, wie viel Zeit für die Berechnung von 9 Währungspaaren gespart werden kann, anstatt die Devisengewinne zu steigern. Ich weiß nicht, wie lange es dauern wird, bis das Ergebnis angezeigt wird, selbst wenn ich die Quelle optimiere oder ändere.

Dann ist das Ergebnis wie folgt. Es gibt die höchste Zahl in der Berechnung für die GPU-Last und die Speicherübertragungsbandbreite.

Umgebung Anzahl der Währungspaare Zeit(Protokoll) GPU laden(%) GPU-Speicherübertragungsbandbreite(%) GPU-Speichernutzung(MB)
Core i7-6500 2.5GHz (2core 4thread) 1 27.9 - - -
Core i7-6500 2.5GHz (2core 4thread) 2 48.8 - - -
Geforce GTX 1070 & Core i5-6500 3.2Ghz (4core 4Thread) 1 3.1 50 15 526
Geforce GTX 1070 & Core i5-6500 3.2Ghz (4core 4Thread) 2 4.4 72 20 793
Geforce GTX 1070 & Core i5-6500 3.2Ghz (4core 4Thread) 3 5.5 75 22 1,069
Geforce GTX 1070 & Core i5-6500 3.2Ghz (4core 4Thread) 4 7.0 76 23 1,345
Geforce GTX 1070 & Core i5-6500 3.2Ghz (4core 4Thread) 5 9.0 76 23 1,620
Geforce GTX 1070 & Core i5-6500 3.2Ghz (4core 4Thread) 6 11.1 77 23 1,891
Geforce GTX 1070 & Core i5-6500 3.2Ghz (4core 4Thread) 7 12.6 76 23 2,079
Geforce GTX 1070 & Core i5-6500 3.2Ghz (4core 4Thread) 8 14.7 77 23 2,355
Geforce GTX 1070 & Core i5-6500 3.2Ghz (4core 4Thread) 9 16.5 76 23 2,664

ThinkPad X260 (Core i7-6500 2,5 GHz (2core 4thread)) und Desktop-PC (Geforce GTX 1070 & Core i5-6500 3,2 GHz (4core 4Thread)).

Die Anzahl der Währungspaare ist die Anzahl der gleichzeitig geöffneten und ausgeführten Banknoten. Die CPU dauert zu lange, daher habe ich nur bis zu 2 Währungspaare ausprobiert.

Erstens gibt es beim Vergleich eines Währungspaars einen fast neunfachen Unterschied zwischen CPU und GPU. Es ist fast 11 Mal mit 2 Währungspaaren. Wenn der Geschwindigkeitsunterschied um eine Größenordnung unterschiedlich ist, denke ich, dass es eine Zahl ist, die Sie motiviert, sich der Herausforderung zu stellen, selbst wenn es beim Übergang ein großes Problem gibt. Außerdem habe ich aufgegeben, weil es anscheinend zu lange dauern würde, 9 Währungspaare mit der CPU zu messen (es wird über 3 Stunden dauern).

Je nachdem, was Sie berechnen, macht eine starke Verarbeitung einen größeren Unterschied. Als Leitfaden würden Sie jedoch denken, dass es dumm wäre, diese Art der Berechnung mit der CPU durchzuführen.

*: Überdenken Sie das Teil mithilfe der GPU (Wenn Sie darüber nachdenken, haben Sie die Informationen zur GPU protokolliert. Wenn Sie es sich ansehen, können Sie es etwas einfacher erklären.)

Wenn Sie sich diese Nummer ansehen, sehen Sie, dass die GPU nicht die gesamte GPU in einem Währungspaar verwendet.

Es ist jedoch ersichtlich, dass GPUs nicht mehr verwendet werden, wobei sich 3 oder mehr Währungspaare um 75% bewegen.

Ich kann jedoch die Zahlen nicht sehen, die durch die Speicherübertragungsbandbreite und die Speichernutzung (bis zu 8 GB) behindert werden. Obwohl die Temperatur der GPU nicht angegeben ist, bedeutet dies nicht, dass der thermische Stopp aufgetreten ist, da sogar 9 Währungspaare nur 70 Grad erreicht haben.

Hier habe ich mir die Situation von 9 Währungspaaren angesehen.

9.png

Die CPU hat 100% erreicht. Ich dachte, dass die GPU-Version von TensorFlow / Keras nur die GPU berechnet, aber das ist nicht der Fall. Ist es die Berechnung des Verlustes usw.?

Mit der Einführung der GPU besteht die Aussicht auf eine Beschleunigung bis zu einem gewissen Grad, aber es gibt einige Hindernisse, und es kann nicht gesagt werden, dass sie vollständig genutzt werden kann.

Als ich diesen PC kaufte, entschied ich mich für die Konfiguration, weil ich dachte: "Da sie von der GPU berechnet wird, sollte die CPU eine steife Konfiguration haben." Aber es scheint, dass es ein Fehler war.

Trotzdem ist es möglich, 9 Währungspaare gleichzeitig zu berechnen. Nun, mir wird wahrscheinlich gesagt, dass ich vorher einen frühen Stopp einlegen soll ...

Impressionen

Das Ergebnis war, dass die CPU zu einem Engpass wurde und die Berechnungsgeschwindigkeit nicht unerwartet anstieg. Es scheint jedoch möglich zu sein, die Geschwindigkeit je nach Verwendung der GPU um etwa eine Größenordnung zu erhöhen.

Es wird jedoch davon ausgegangen, dass GPUs auf dieser Welt nicht gut sind, und jedes Unternehmen ergreift Maßnahmen.

Goole hat eine dedizierte [TPU] erstellt (http://www.publickey1.jp/blog/17/googlecloud_tpuaigoogle_io_2017.html), NVIDIA verfügt über eine Tensoreinheit auf der neuesten GPU und Qualcomm über eine Snapdragon 835. DSP von Tensorflow Es wird unterstützt (TensorFlow funktioniert jedoch nur mit CPU und CUDA, daher verstehe ich den Fall von Qualcomm nicht ...), und es ist möglich, mit FP16 und INT8 mit Vega, der neuesten GPU von AMD, zu berechnen. Ich versuche, die Fähigkeit zur detaillierten Berechnung zu verbessern. Es scheint, dass sich jedes Unternehmen mehr als jetzt darauf konzentriert, das tiefe Lernen zu beschleunigen.

Weder Googles TPU noch Snapdragon 835 werden jedoch an die breite Öffentlichkeit verkauft, GPUs mit Tensor-Einheiten werden noch nicht zum Verkauf angeboten (nein, ich könnte sie nicht kaufen, wenn sie es wären), und AMDs Vega wird immer noch nicht zum Verkauf angeboten. , TensorFlow unterstützt immer noch nur CUDA, daher kann ich es nicht verwenden ...

Es scheint schwieriger zu sein, die Leistung leichter als jetzt zu verbessern, aber ich hoffe, dass sich dieser Bereich im nächsten Jahr (2018) etwas verbessern wird.

Schließlich

Derzeit haben wir eine Arbeitsquelle und eine Umgebung geschaffen, in der Sie sie problemlos ausprobieren können. Jetzt können Sie endlich anfangen. Von nun an werde ich die Ergebnisse nach und nach in Frage stellen.

Verknüpfung

Recommended Posts

Vorhersage von Effekten mit LSTM mithilfe von Keras + Tensorflow Teil 2 (Berechnung mit GPU)
Versuchen Sie, FX mit LSTM mithilfe von Keras + Tensorflow Teil 3 vorherzusagen (versuchen Sie, alle Parameter zu treffen).
Versuchen Sie, den Wechselkurs (FX) mit nicht tiefem maschinellem Lernen vorherzusagen
Anfänger RNN (LSTM) | Versuchen Sie es mit Keras
Versuchen Sie, Kirschblüten mit xg Boost vorherzusagen
Aktienprognose mit TensorFlow (LSTM) ~ Aktienprognose Teil 1 ~
Videorahmenvorhersage unter Verwendung von Faltungs-LSTM mit TensorFlow
Versuchen Sie, das Fizzbuzz-Problem mit Keras zu lösen
So reduzieren Sie die GPU-Speichernutzung mit Keras
Versuchen Sie Tensorflow mit einer GPU-Instanz unter AWS
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Versuchen Sie, mit MVC eine RESTful-API mit Flask 1.0.2 zu erstellen
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
Multivariates LSTM mit Keras
Versuchen Sie eine Regression mit TensorFlow
[TensorFlow 2 / Keras] Ausführen des Lernens mit CTC Loss in Keras
Versuchen Sie, eine lineare Regression mit Pytorch mit Google Colaboratory zu implementieren
Versuchen Sie, den Boden durch Rekursion herauszufordern
Versuchen Sie es mit TensorFlow
Versuchen Sie, PythonTex mit Texpad zu verwenden.
Versuchen Sie es mit matplotlib mit PyCharm
Versuchen Sie es mit SQLAlchemy + MySQL (Teil 1)
Versuchen Sie es mit SQLAlchemy + MySQL (Teil 2)
Versuchen Sie TensorFlow MNIST mit RNN
Versuchen Sie es mit Folium mit Anakonda
[Anmerkung] Versuchen wir, den Stromverbrauch vorherzusagen! (Teil 1)
Versuchen Sie, Online-Familien-Mahjong mit Python zu analysieren (TEIL 1: Daten aufnehmen)