Welche Größe neuronaler Netze kann auf aktuellen GPUs für Endverbraucher trainiert werden? (1060, 1070, 1080)


9

Ist es möglich, eine Faustregel für die Größe neuronaler Netze abzugeben, die auf gängigen GPUs für Endverbraucher trainiert werden können ? Zum Beispiel:

Das Papier Emergence of Locomotion (Reinforcement) trainiert ein Netzwerk unter Verwendung der Tanh-Aktivierung der Neuronen. Sie haben eine 3-lagige NN mit 300.200.100 Einheiten für den Planar Walker . Aber sie melden nicht die Hardware und Zeit ...

Aber könnte eine Faustregel entwickelt werden? Auch nur basierend auf aktuellen empirischen Ergebnissen, so zum Beispiel:

X-Einheiten, die die Sigmoid-Aktivierung verwenden, können auf einem 1060 Y-Lerniterationen pro Stunde ausführen.

Oder die Verwendung der Aktivierungsfunktion a anstelle von b führt zu einer zeitlichen Leistungsminderung.

Wenn ein Student / Forscher / Neugieriger eine GPU kaufen wird, um mit diesen Netzwerken herumzuspielen, wie entscheiden Sie, was Sie bekommen? Ein 1060 ist anscheinend die Einstiegsoption für das Budget, aber wie können Sie beurteilen, ob es nicht klüger ist, nur ein beschissenes Netbook zu kaufen, anstatt einen Hochleistungs-Desktop zu erstellen und die gesparten US-Dollar für die On-Demand-Cloud-Infrastruktur auszugeben?

Motivation für die Frage: Ich habe gerade einen 1060 gekauft und mich gefragt, ob ich nur das $ behalten und ein Google Cloud-Konto einrichten sollte. Und wenn ich meine Masterarbeitssimulation auf der GPU ausführen kann.

Antworten:


5

Normalerweise besteht das Problem darin, das Modell in den Video-RAM einzubauen. Wenn dies nicht der Fall ist, können Sie Ihr Modell überhaupt nicht ohne großen Aufwand trainieren (z. B. Teile des Modells separat trainieren). Wenn ja, ist die Zeit Ihr einziges Problem. Der Unterschied in der Trainingszeit zwischen Consumer-GPUs wie dem Nvidia 1080 und viel teureren GPU-Beschleunigern wie dem Nvidia K80 ist jedoch nicht sehr groß. Tatsächlich sind die besten Consumer-Karten schneller als GPU-Beschleuniger, es fehlen jedoch andere Eigenschaften wie VRAM. Zufällige Vergleiche und Benchmarks: http://timdettmers.com/2017/04/09/which-gpu-for-deep-learning/ , https://medium.com/@alexbaldo/a-comparison-between-nvidias-geforce -gtx-1080-and-tesla-p100-for-deep-learning-81a918d5b2c7

Um zu berechnen, ob Ihre Modelle in VRAM passen, schätzen Sie nur, wie viele Daten und welche Hyperparameter Sie haben (Eingaben, Ausgaben, Gewichte, Ebenen, Stapelgröße, welcher Datentyp usw.).


1
Gute Antwort, aber welche Art von Modell passt nicht in einen 6 / 8GB-Speicher? Angenommen, jeder Stapel von Trainingsdaten + das Modell. Ich habe keine Ahnung, wie ich die Größe des Modells berechnen soll, aber ich kann mir nicht vorstellen, dass einige tausend Neuronen und ihre Gewichte Gigabyte Speicher füllen können. Das Pretrained-Bilderkennungsmodell von Google ist ein paar hundert Meg. Tensorflow.org/tutorials/image_recognition und das kann mehr als die meisten anderen da draußen erkennen. Apple verarbeitet es auf dem Chip im iPhone, sodass das Modell selbst viel kleiner als die T-Daten sein muss. Und das muss nicht alles im RAM sein, oder?
Pascalwhoop

Ich arbeite oft mit NLP-Modellen, meistens mehrschichtigen RNNs, und wenn der Wortschatz groß ist, reichen möglicherweise sogar 8 GB nicht aus. Denken Sie daran, dass das Training normalerweise mehr Platz benötigt als die Vorhersage (Gradienten beanspruchen auch Platz).
C. Yduqoli

3

Als Einschränkung würde ich vorschlagen, dass Rechengeschwindigkeit und Ressourcen bei der Entwicklung einer neuronalen Netzwerkarchitektur zweitrangig sein sollten, es sei denn, Sie stoßen an grundlegende technologische Grenzen.

Anfang dieses Jahres habe ich jedoch meine MS-Arbeit abgeschlossen, die Pipelines für die Bioinformatik-Analyse mit Daten zur Sequenzierung des gesamten Genoms umfasste. Die Entwicklung dieses Projekts dauerte laut unserem Cluster-Jobmanager über 100.000 Stunden Rechenzeit. Wenn Sie eine Frist einhalten, können Ressourcen eine echte Einschränkung darstellen und die Geschwindigkeit kann entscheidend sein.

Um Ihre Fragen so zu beantworten, wie ich sie verstehe:

Wäre ich besser dran gewesen, mit dem Geld Zeit in der Cloud zu kaufen?

Wahrscheinlich. Die wenigen hundert Dollar, die Sie für den 1060 ausgegeben haben, würden Sie weit bringen, Ihre Modelle in der Cloud zu trainieren. Soweit ich das beurteilen kann, muss die GPU nicht zu 100% gestartet werden (Sie würden beispielsweise Kryptowährungen abbauen). Mit Cloud-Instanzen können Sie schließlich skalieren und mehrere Modelle gleichzeitig trainieren, wodurch die Erkundung und Validierung jeder Architektur, für die Sie sich entscheiden, beschleunigt werden kann.

Gibt es eine Möglichkeit, die Rechenzeit eines neuronalen Netzwerks auf einer bestimmten GPU zu messen?

Nun, Big O ist ein Schätzer, aber es hört sich so an, als wollten Sie eine genauere Methode. Ich bin mir sicher, dass sie existieren, aber ich würde dem entgegenwirken, dass Sie Ihre Schätzung mit einfachen Berechnungen der Umschläge vornehmen können, die Threads, Speicher, Code-Iterationen usw. berücksichtigen. Möchten Sie wirklich in die GPU-Verarbeitungspipeline auf der Datenbank eintauchen? 1060? Möglicherweise können Sie eine sehr gute Schätzung erstellen, indem Sie alles verstehen, was zwischen Ihrem Code und dem Metall passiert, aber letztendlich ist es wahrscheinlich nicht die Zeit und Mühe wert. Dies wird wahrscheinlich bestätigen, dass die Big O-Notation (wenn Sie so wollen das einfache Modell) den größten Teil der Variation in der Rechenzeit erfasst. Eine Sache, die Sie tun können, wenn Sie Engpässe bemerken, ist die Leistungsprofilerstellung.


2

Es kommt darauf an, was Sie brauchen. Sie können jede Netzwerkgröße auf jeder Ressource trainieren. Das Problem ist die Zeit des Trainings. Wenn Sie Inception auf einer durchschnittlichen CPU trainieren möchten, dauert die Konvergenz Monate. Es hängt also alles davon ab, wie lange Sie warten können, bis Ihre Ergebnisse basierend auf Ihrem Netzwerk angezeigt werden. Wie bei neuronalen Netzen haben wir nicht nur eine Operation, sondern viele (wie Verkettung, maximales Pooling, Auffüllen usw.). Es ist unmöglich, eine Schätzung vorzunehmen, während Sie suchen. Beginnen Sie einfach mit dem Training einiger berüchtigter Netzwerke und messen Sie die Zeit. Anschließend können Sie interpolieren, wie lange es dauern wird, Netzwerke zu trainieren, nach denen Sie suchen.


Kennen Sie eine Ressource, die Informationen für verschiedene NN-Jobs sammelt? Also eine Liste von: NN-Typ, Anzahl der Einheiten, Hyperparameter, Datensatzgröße, verwendete Hardware, benötigte Zeit? Das würde helfen, eine Faustregel zu entwickeln
Pascalwhoop
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.