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.
quelle
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.
quelle
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.
quelle