-
HINTERGRUND
-
Die vorliegende Erfindung betrifft ein Verwenden von hybriden Parallelitätstechniken, um Schichten in einem neuronalen Netz eines Arrays von Prozessoren zuzuweisen.
-
Trainieren eines neuronalen Netzes (NN) ist ein zeitraubender Prozess. Infolgedessen verwenden viele Trainingsplattformen ein Array von Prozessoren (z.B. einen 2-D-Torus), um die Betriebslast jeder Schicht des NN zu verteilen. Es gibt mehrere bekannte Techniken zum Verteilen der Betriebslast auf eine Mehrzahl von Prozessoren. Bei einer derartigen Technik handelt es sich um Datenparallelität, bei der die Betriebslast durch die Merkmale (oder Eingaben) der Schichten aufgeteilt wird. Bei dieser Technik kann jeder Prozessor alle Aufgaben für einen bestimmten Batch (oder Minibatch) von Trainingsdaten durchführen. Zum Beispiel kann unter Verwendung eines Bildprozessor-NN jedem Prozessor zugewiesen werden, ein jeweiliges Bild zu verarbeiten. Zu diesem Zweck müssen die Gewichtungen (oder Kerne) für diese Schicht zu jedem der Prozessoren übermittelt werden. In NN-Schichten, bei denen die Gewichtungen größer als die Merkmale sind (die hierin als gewichtungsschwere Schichten bezeichnet werden), ist ein Verwenden der Datenparallelitätstechnik wegen der Gewichtungsverringerung zwischen den Chips ineffizient, bei denen am Ende jedes Batch- oder Minibatchtrainings die Gewichtungen synchronisiert werden. Dies ist eine von Chip zu Chip erfolgende aufwendige Operation und oftmals die Hauptschwachstelle bei Datenparallelität.
-
Bei einer weiteren Technik handelt es sich um Modellparallelität, bei der die Betriebslast für eine Schicht in der Ausgabedimension aufgeteilt wird. Das heißt, die ersten mehreren Merkmale werden in einem Prozessor berechnet, die nächsten mehreren Merkmale werden in einem weiteren Prozessor berechnet usw. Dadurch wird vermieden, dass alle Gewichtungen der Schicht an den Prozessor gesendet werden müssen, und somit wird eine Gewichtungsverringerung vermieden. Jedoch erfordert bei einem NN jedes Ausgabemerkmal normalerweise den gesamten Eingabekanal. Das heißt, jeder Prozessor benötigt zum Berechnen eines neuen Merkmals nach wie vor die gesamte Eingabe der Schicht (z.B. die Ausgabe aus der vorhergehenden Schicht). Bei Verwendung von Modellparallelität wird die Eingabe in allen Prozessoren repliziert (was als Durchführen von „Aktivierungen“ bezeichnet wird). Bevor die nächste Schicht in dem NN beginnen kann, muss jeder Prozessor die durch jeden anderen Chip berechnete Ausgabe empfangen - d.h., die Aktivierungen aller Prozessoren werden untereinander ausgetauscht. Somit ist Modellparallelität bei gewichtungsschweren Schichten effizienter als Datenparallelität, aber weniger effizient bei merkmalsschweren Schichten (bei denen mehr Merkmalsdaten (oder Eingabedaten) als Gewichtungsdaten vorliegen).
-
KURZDARSTELLUNG
-
Gemäß einer Ausführungsform der vorliegenden Erfindung liegt ein Verfahren vor, das ein Auswählen einer hybriden Parallelitätstechnik zum Aufteilen einer Betriebslast einer Schicht eines neuronalen Netzes auf ein Array von Prozessoren umfasst, wobei jeder Prozessor in dem Array von Prozessoren Daten zu benachbarten Prozessoren in einer ersten Richtung und in einer zweiten Richtung übertragen kann. Das Verfahren umfasst außerdem, dass dem Array von Prozessoren unter Verwendung der ausgewählten hybriden Parallelitätstechnik Aufgaben zugewiesen werden, die der Schicht des neuronalen Netzes entsprechen, wobei die hybride Parallelitätstechnik ein Verwenden einer ersten Parallelitätstechnik umfasst, wenn Daten zwischen Prozessoren in dem Array von Prozessoren in der ersten Richtung übertragen werden, und ein Verwenden einer zweiten, anderen Parallelitätstechnik, wenn Daten zwischen Prozessoren in dem Array von Prozessoren in der zweiten Richtung übertragen werden.
-
Bei einer weiteren Ausführungsform der vorliegenden Erfindung handelt es sich um ein System, das ein Array von Prozessoren und einen Zuweiser (assignor) eines neuronalen Netzes umfasst. Der Zuweiser ist so konfiguriert, dass er eine hybride Parallelitätstechnik zum Aufteilen einer Betriebslast einer Schicht eines neuronalen Netzes auf ein Array von Prozessoren auswählt, wobei jeder Prozessor in dem Array von Prozessoren Daten zu benachbarten Prozessoren in einer ersten Richtung und in einer zweiten Richtung übertragen und Aufgaben, die der Schicht des neuronalen Netzes entsprechen, unter Verwendung der ausgewählten hybriden Parallelitätstechnik des Arrays von Prozessoren zuweisen kann, wobei die hybride Parallelitätstechnik ein Verwenden einer ersten Parallelitätstechnik umfasst, wenn Daten zwischen Prozessoren des Arrays von Prozessoren in der ersten Richtung übertragen werden, und ein Verwenden einer zweiten, anderen Parallelitätstechnik, wenn Daten zwischen Prozessoren des Arrays von Prozessoren in der zweiten Richtung übertragen werden.
-
Bei einer weiteren Ausführungsform der vorliegenden Erfindung handelt es sich ein durch einen Computer lesbares Speichermedium, auf dem durch einen Computer lesbarer Programmcode verkörpert ist, wobei der durch einen Computer lesbare Programmcode durch einen oder mehrere Computerprozessoren lesbar ist, um eine Operation durchzuführen. Die Operation umfasst ein Auswählen einer hybriden Parallelitätstechnik zum Aufteilen einer Betriebslast einer Schicht eines neuronalen Netzes auf ein Array von Prozessoren, wobei jeder Prozessor in dem Array von Prozessoren Daten zu benachbarten Prozessoren in einer ersten Richtung und in einer zweiten Richtung übertragen kann, und ein Zuweisen von Aufgaben, die der Schicht des neuronalen Netzes entsprechen, unter Verwendung der ausgewählten hybriden Parallelitätstechnik zu dem Array von Prozessoren, wobei die hybride Parallelitätstechnik ein Verwenden einer ersten Parallelitätstechnik umfasst, wenn Daten zwischen Prozessoren in dem Array von Prozessoren in der ersten Richtung übertragen werden, und ein Verwenden einer zweiten, anderen Parallelitätstechnik, wenn Daten zwischen Prozessoren in dem Array von Prozessoren in der zweiten Richtung übertragen werden.
-
Figurenliste
-
Im Folgenden werden Ausführungsformen der Erfindung lediglich beispielhaft beschrieben, wobei auf die beigefügten Zeichnungen Bezug genommen wird, in denen:
- 1 ein NN-Trainingssystem gemäß einer hierin beschriebenen Ausführungsform veranschaulicht.
- 2 NN-Trainingshardware gemäß einer hierin beschriebenen Ausführungsform veranschaulicht.
- 3 verschiedene Dimensionen in einem NN gemäß einer hierin beschriebenen Ausführungsform veranschaulicht.
- 4 ein Flussdiagramm zum Ermitteln einer optimalen Technik zur Ausführung des Aufteilens von NN-Schichten unter dem Array von Prozessoren gemäß einer hierin beschriebenen Ausführungsform ist.
- 5 ein Flussdiagramm zum Auswählen einer hybriden Parallelitätstechnik gemäß einer hierin beschriebenen Ausführungsform ist.
- 6 ein Prozessor-Array veranschaulicht, das x- und y-Ringe gemäß einer hierin beschriebenen Ausführungsform bildet.
- 7 eine Matrix zum Auswählen einer Parallelitätstechnik für eine NN-Schicht gemäß einer hierin beschriebenen Ausführungsform veranschaulicht.
- 8 eine Einstufung von Parallelitätstechniken auf der Grundlage der Eigenschaften der NN-Schicht gemäß einer hierin beschriebenen Ausführungsform veranschaulicht.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Anstatt auf Datenparallelität oder aber Modellparallelität beschränkt zu sein, führen die hierin beschriebenen Ausführungsformen hybride Parallelitätstechniken ein, bei denen eine Mischung aus Daten- und Modellparallelität verwendet werden kann, um die Betriebslast einer Schicht unter einem Array von Prozessoren (z.B. ein Array von integrierten Schaltungen (integrated circuits, ICs) oder Chips) aufzuteilen. Bei einer Ausführungsform umfasst das Array von Prozessoren x-Ringe in einer ersten Richtung (X-Richtung) und y-Ringe in einer zweiten Richtung (Y-Richtung). Beim Konfigurieren des Arrays kann die Bandbreite der Prozessoren in einer Richtung größer als die Bandbreite in der anderen Richtung sein. Das heißt, der Systementwickler kann absichtlich mehrere Datenübertragungsverbindungen zum Austauschen von Daten zwischen Prozessoren in der X-Richtung als in der Y-Richtung zuweisen. Jede Schicht kann dann dahingehend charakterisiert werden, ob sie eher merkmalsschwer oder gewichtungsschwerer ist. Je nach dieser Charakterisierung kann die Betriebslast einer NN-Schicht des Arrays unter Verwendung einer hybriden Parallelitätstechnik anstelle der Verwendung allein der Datenparallelitätstechnik oder allein der Modellparallelitätstechnik zugewiesen werden. Zum Beispiel kann eine NN-Schicht geringfügig gewichtungsschwerer als merkmalsschwer sein. Da Modellparallelitätstechnik effizienter beim Ausführen gewichtungsschwerer Schichten ist, kann die Betriebslast der NN-Schicht unter Verwendung einer ersten hybriden Parallelitätstechnik aufgeteilt werden, bei der Datenparallelität in der X-Richtung verwendet wird (bei der die Bandbreite höher ist), um eine Gradientenverringerung entlang einer schnellen X-Richtungsverbindung zu realisieren, und Modellparallelität in der Y-Richtung verwendet wird (bei der die Bandbreite geringer ist, aber Modellparallelität von sich aus bei gewichtungsschweren Schichten effizienter ist). Wenn umgekehrt eine NN-Schicht eher merkmalsschwer als gewichtungsschwer ist, kann die Betriebslast unter Verwendung einer zweiten hybriden Parallelitätstechnik aufgeteilt werden, bei der Modellparallelität in der X-Richtung verwendet wird, um die negative Auswirkung von Merkmalsaktivierung zu minimieren, während Datenparallelität in der Y-Richtung verwendet wird, da Datenparallelität von sich aus bei gewichtungsschweren Schichten effizienter ist.
-
Während die hybriden Parallelitätstechniken bei einem Array von Prozessoren verwendet werden können, bei dem sich die Bandbreite in einer Richtung von der Bandbreite in der dazu im rechten Winkel stehenden Richtung unterscheidet, können die hybriden Parallelitätstechniken außerdem verwendet werden, wenn die Bandbreite in beiden Richtungen des Arrays dieselbe ist.
-
1 veranschaulicht ein NN-Trainingssystem 100 gemäß einer hierin beschriebenen Ausführungsform. Das Trainingssystem 100 umfasst ein Datenverarbeitungssystem 105, das eine ausgewählte Technik 145 verwendet, um die Betriebslast jeder Schicht in einem NN aufzuteilen, das einer NN-Trainingshardware 150 zugewiesen ist. Obwohl die Ausführungsformen hierin ein Aufteilen einer Betriebslast einer Schicht beim Trainieren des NN beschreiben, sind sie auf diese beschränkt. Es kann vorteilhaft sein, eine Betriebslast unter Verwendung der nachstehend erörterten Techniken in anderen Situationen als beim Trainieren des NN aufzuteilen.
-
Das Datenverarbeitungssystem 105 umfasst einen Prozessor 110, der eine beliebige Anzahl von Verarbeitungselementen mit einer beliebigen Anzahl von Verarbeitungskernen und Speicher 115 darstellt, der flüchtige Speicherelemente, nichtflüchtige Speicherelemente und Kombinationen davon umfassen kann. Wie gezeigt umfasst der Speicher 115 zwei Softwareanwendungen, die in dem Datenverarbeitungssystem 105 ausgeführt werden: einen NN-Zuweiser 120 und einen Leistungsschätzer 125. Der NN-Zuweiser 120 ermittelt die ausgewählte Technik 145, die verwendet wird, um die Betriebslast der Schichten in dem NN der NN-Trainingshardware 150 zuzuweisen. Bei einer Ausführungsform wählt der NN-Zuweiser 120 die Technik 145 als Reaktion auf Informationen aus, die der Leistungsschätzer 125 über jede Schicht in dem NN erzeugt. Das heißt, der NN-Zuweiser 120 kann für die verschiedenen Schichten in dem NN eine unterschiedliche Technik 145 auswählen.
-
Der Leistungsschätzer 125 modelliert (oder simuliert) die NN-Schichten, um die Leistung der Schichten unter Verwendung einer Vielfalt von Parallelitätstechniken zu schätzen. Bei diesem Beispiel bewertet der Leistungsschätzer 125 die Schichten, um ihre Leistungsfähigkeit zu ermitteln, wenn die Datenparallelitätstechnik 130, die Modellparallelitätstechnik 135 und eine oder mehrere hybride Parallelitätstechniken 140 verwendet werden. Bei einer Ausführungsform handelt es sich bei den hybriden Parallelitätstechniken 140 um beliebige Techniken, bei denen es sich um eine Mischung aus zwei anderen Parallelitätstechniken handelt, die in Kombination verwendet werden, um eine Betriebslast einer Aufgabe unter den verschiedenen Hardwareelementen in der NN-Trainingshardware 150 aufzuteilen. Das heißt, bei der hybriden Parallelitätstechnik 140 kann es sich um eine oder mehrere Techniken handeln, die eine Kombination aus der Datenparallelitätstechnik 130 und der Modellparallelitätstechnik 135 sind. Die hybride Parallelitätstechnik 140 ist jedoch nicht auf eine Kombination der Techniken 130, 135 beschränkt, sondern könnte eine Kombination aus anderen Arten von Parallelitätstechniken umfassen, die verwendet werden, um die Betriebslast einer Schicht unter der Trainingshardware 150 aufzuteilen.
-
Die NN-Trainingshardware 150 umfasst mehrere Prozessoren 155, die jeweils mehrere Kerne 160 umfassen. Die Kerne 160 umfassen mehrere Verarbeitungselement-Arrays (PE-Arrays) (PE = processing element) (z.B. systolische Arrays), die unter Verwendung mehrerer PEs 170 gebildet sind. Wie nachstehend erörtert teilt die ausgewählte Technik 145 die Betriebslast einer Schicht zwischen den Prozessoren 155 auf. Wenn es sich bei der ausgewählten Technik 145 um die Datenparallelitätstechnik 130 handelt, wird die Betriebslast durch Minibatches aufgeteilt, wobei jeder Minibatch einem anderen Prozessor 155 zugewiesen wird (z.B. wird ein Bild, das beim Trainieren eines Bildverarbeitungs-NN verwendet wird, an jeden Prozessor 155 gesendet). Wenn es sich bei der ausgewählten Technik 145 um die Modellparallelitätstechnik 135 handelt, wird jedem Prozessor 155 ein Teilsatz der Merkmale in den Ausgabedaten zugewiesen (wobei es sich um einen oder mehrere Teilsätze handelt). Die Prozessoren 155 können dann parallel arbeiten, um ihre zugewiesenen Aufgaben auszuführen. Zum Beispiel kann jeder Prozessor 155 ein Bild gleichzeitig verarbeiten oder jeder Prozessor 155 kann seinen zugewiesenen Teilsatz von Merkmalen gleichzeitig verarbeiten.
-
2 veranschaulicht NN-Trainingshardware gemäß einer hierin beschriebenen Ausführungsform. 2 veranschaulicht ein 2-D-Array 200, das die Prozessoren 155 umfasst, die untereinander sowohl horizontal (eine X-Richtung) als auch vertikal (eine Y-Richtung) mit benachbarten Prozessoren 155 verbunden sind. Daher können die Prozessoren verarbeitete Daten gemeinsam nutzen. Dieses gemeinsame Nutzen von Daten wird nachstehend ausführlicher beschrieben, wenn die hybriden Parallelitätstechniken erörtert werden.
-
Jeder Prozessor 155 umfasst mehrere Kerne 160, die zu Datenübertragungszwecken unter Verwendung einer auf dem Chip befindlichen Zwischenverbindung 202 verbunden sind, die den Kernen 160 ermöglicht, mit externem Speicher 205 (z.B. RAM) in der NN-Trainingshardware Daten auszutauschen. Jeder Kern 160 wiederum umfasst mehrere PE-Arrays 165, die mit Arbeitspufferspeicher 210 verbunden sind, der eine beliebige Anzahl von Caches darstellt (z.B. Level-1- und Level-2-Caches), die chipinternen Speicher bilden.
-
Jedes PE-Array 165 umfasst mehrere PEs 170, die untereinander verbunden sind, um ein Array oder Gitter (z.B. ein systolisches Array) zu bilden. Die Eingänge und Ausgänge des PE-Arrays 165 umfassen First-In-First-Out-Puffer (FIFO-Puffer) 215. Jedes PE 170 umfasst Multiplikations-Akkumulations-Einheiten (MAC-Einheiten) (MAC = multiply-accumulate) 220, die mit einer Registrierungsdatei 225 verbunden sind.
-
Die Betriebslast einer NN-Schicht kann unter den in 2 veranschaulichten verschiedenen Hardwarekomponenten verteilt werden. Die nachstehend aufgeführten Techniken konzentrieren sich jedoch auf das Aufteilen der Betriebslast einer NN-Schicht unter den Prozessoren 155. Andere Techniken können dann verwendet werden, um die jedem Prozessor 155 zugewiesene Betriebslast unter den Kernen 160, den PE-Arrays 165 und den PEs 170 aufzuteilen. Das heißt, dass bei den nachstehenden Ausführungsformen zwar ein Auswählen einer optimalen Parallelitätstechnik zum Verteilen der Betriebslast unter den Prozessoren 155 erörtert wird, die Betriebslast aber ferner unter den Hardwareelementen in den Prozessoren 155 unter Verwendung zusätzlicher Parallelitätstechniken aufgeteilt werden kann.
-
3 veranschaulicht verschiedene Dimensionen in einem NN gemäß einer hierin beschriebenen Ausführungsform. Das heißt, 3 veranschaulicht verschiedene Dimensionen, die zum Partitionieren einer faltenden Schicht in einem NN verwendet werden können. Die Betriebslast der Faltungsschicht kann drei Datenstrukturen eingeben: Eingabe (Eing), Ausgabe (Ausg), und Gewichtungen (Kerne). NEing ist die Anzahl von Merkmalen (oder Gesichtern) in den Daten, die aus der vorhergehenden Schicht oder den vorhergehenden Schichten in dem NN empfangen wurden. Das heißt, die Eingabe hat eine Tiefe von NEing. Jedes Merkmal oder Gesicht hat Dimensionen, die durch Ni und Nj ausgedrückt werden (z.B. eine Merkmalsgröße von Ni x Nj). Beim Durchführen einer Faltung wird jedes Pixel in einem Merkmal unter Verwendung eines der Kerne verarbeitet (z.B. ein Punktprodukt). Das NN hat eine Anzahl von NAusg Kernen, wobei jeder Kern eine Höhe Ki, eine Breite Kj und eine Tiefe bei NEing hat.
-
Faltung funktioniert, indem das Punktprodukt eines der Kerne mit einem Pixel in einem der Merkmal in der Eingabe durchgeführt wird. Dadurch wird ein Skalarwert (z.B. ein Pixel) ausgegeben, der in der Ausgabe gespeichert wird. Infolgedessen handelt es sich bei der Tiefe der Ausgabe um NAusg (z.B. die Anzahl von Merkmalen in der Ausgabe), die mit der Anzahl von Kernen identisch ist. Ein Verschieben des Kerns unter Verwendung einer Schrittgröße beim Durchführen des Punktprodukts für andere Pixel in dem Merkmal oder Gesicht der Eingabe führt zu einem Merkmal (oder Gesicht) der Ausgabe. Unter Annahme einer Schrittgröße von 1 haben die Merkmale oder Gesichter der Ausgabe dieselbe Breite und Höhe (Ni und Nj) wie die Merkmale der Eingabe.
-
Das Durchführen einer Faltung führt zu vier Dimensionen: NEing, Nij, Kij und NAusg zum Aufteilen der Betriebslast der Faltungsschicht. Aber das Trainieren eines NN umfasst außerdem Minibatches (mb), bei denen ein NN unter Verwendung unterschiedlicher Eingabetrainingsdaten (z.B. unterschiedlicher Trainingsbilder) trainiert werden kann, die alle dieselben Gewichtungen (Kerne) verwenden, um mehrere Ausgabeergebnisse zu erzeugen. Somit ist der mb eine fünfte Dimension, die mit den anderen vier Dimensionen verwendet werden kann, um die Betriebslast einer Faltungsschicht darzustellen als: N{Eing, Ausg, Nij, Kij, mb}.
-
Andere Arten von Schichten können unter Verwendung anderer Dimensionen ausgedrückt werden. Beim Durchführen einer Matrixmultiplikation bei vollständig verbundenen Schichten in einem NN betragen die Werte Nij und Kij zum Beispiel 1. In jedem Fall können die hierin beschriebenen Ausführungsformen verwendet werden, um unterschiedliche Arten von Schichten zu verteilen, die unterschiedliche Arten (und Anzahlen) von Dimensionen haben können.
-
4 ist ein Flussdiagramm eines Verfahrens 400 zum Ermitteln einer optimalen Technik zur Ausführung des Aufteilens von NN-Schichten unter dem Array von Prozessoren gemäß einer hierin beschriebenen Ausführungsform. Bei Block 405 wählt der Zuweiser eine Schicht in einem NN aus. Bei einer Ausführungsform wird das Verfahren 400 verwendet, um durch jede Schicht in dem NN zu iterieren und eine optimale Parallelitätstechnik auszuwählen.
-
Bei Block 410 ermittelt der NN-Zuweiser eine optimale Technik zum Aufteilen der Ausführung der Schicht auf ein 2-D-Array von Prozessoren. Das heißt, der NN-Zuweiser kann ermitteln, welche der in 1 veranschaulichten Techniken (die Datenparallelitätstechnik 130, die Modellparallelitätstechnik 135 oder eine hybride Parallelitätstechnik 140) die optimale Technik für die betreffende Schicht ist.
-
Bei einer Ausführungsform handelt es sich bei dem 2-D-Array von Prozessoren um einen 2-D-Torus, bei dem die Prozessoren untereinander verbunden sind. Zum Beispiel können die Prozessoren zu Datenübertragungszwecken mit benachbarten Prozessoren in zwei unterschiedlichen Richtungen verbunden sein (z.B. x/Y oder Nord/Süd). Bei einer Ausführungsform kann die Bandbreite für die Prozessor-zu-Prozessor-Datenübertragung je nach der Richtung unterschiedlich sein. Zum Beispiel kann das 2-D-Array so gestaltet sein, dass die Datenübertragung zwischen Prozessoren in der X-Richtung eine höhere Bandbreite als die Datenübertragung zwischen Prozessoren in der y-Richtung hat. Die Einzelheiten zum Auswählen der optimalen Technik, die beim Aufteilen der Betriebslast unter den Prozessoren in einem 2-D-Array verwendet werden soll, sind nachstehend in 5 beschrieben.
-
Bei Block 415 ermittelt der NN-Zuweiser, ob weitere Schichten in dem NN verbleiben. Das heißt, der NN-Zuweiser ermittelt, ob er für jede Schicht in dem NN eine optimale Parallelitätstechnik ausgewählt hat. Wenn nicht, kehrt das Verfahren 400 zu Block 405 zurück, aber wenn dies der Fall ist, geht das Verfahren zu Block 420 weiter.
-
Bei Block 420 weist der NN-Zuweiser beim Trainieren des NN dem 2-D-Array von Prozessoren Aufgaben unter Verwendung der optimalen Techniken zu. Wenn es sich bei der ausgewählten Technik um Datenparallelität oder Modellparallelität handelt, tauschen die Prozessoren in beiden Richtungen Daten aus, indem gemäß diesen Techniken Daten übermittelt werden. Das heißt, wenn Datenparallelität ausgewählt ist, tauschen die Prozessoren Gewichtungen/Kerne sowohl in der X- als auch in der Y-Richtung des 2-D-Arrays aus (die auch als Gradientenrichtung bezeichnet wird). Wenn Modellparallelität ausgewählt ist, tauschen die Prozessoren Eingabemerkmale entlang beider Richtungen aus.
-
Wenn jedoch eine hybride Parallelitätstechnik ausgewählt ist, tauschen die Prozessoren Daten in einer Richtung gemäß der Datenparallelität und in der anderen Richtung gemäß der Modellparallelität aus. Dementsprechend hat die Parallelitätstechnik, die in der Richtung des 2-D-Arrays mit der höheren Bandbreite realisiert ist, die Leistung im Verhältnis zu der Technik verbessert, die in der anderen Richtung realisiert ist, die eine geringere Bandbreite hat. Die Einzelheiten dieses Kompromisses werden nachstehend erörtert.
-
5 ist ein Flussdiagramm eines Verfahrens 500 zum Auswählen einer hybriden Parallelitätstechnik gemäß einer hierin beschriebenen Ausführungsform. Das Verfahren 500 beschreibt mehrere Techniken zum Durchführen von Block 410 im Verfahren 400, um eine optimale Parallelitätstechnik für eine Schicht in einem NN auszuwählen. Aus Gründen der Anschaulichkeit wird das Verfahren 500 zusammen mit 6 beschrieben.
-
Bei Block 505 schätzt der Leistungsschätzer die Leistung der Schicht bei Verwendung einer Mehrzahl von Parallelitätstechniken. Zum Beispiel kann der Leistungsschätzer bei jeder Schicht ein Modell oder eine Simulation verwenden, um zu schätzen, wie die Schicht an der NN-Trainingshardware bei Verwendung jeder der unterschiedlichen Parallelitätstechniken, z.B. Datenparallelität, Modellparallelität oder hybride Parallelität, ausgeführt werden würde.
-
Bei einer Ausführungsform kann der Leistungsschätzer anstelle des Modellierens oder Simulierens jeder Parallelitätstechnik für jede Schicht Heuristiken verwenden, um die Anzahl von Techniken zu begrenzen, die geschätzt werden. Zum Beispiel kann der Leistungsschätzer ein Gewichtung-zu Merkmal-Verhältnis erzeugen, das verwendet werden kann, um schnell zu ermitteln, welche Parallelitätstechnik verwendet werden sollte. Wenn die Schicht gemäß einem vordefinierten Schwellenwert wesentlich mehr Gewichtungsdaten als Merkmalsdaten enthält, kann der Leistungsschätzer ohne Durchführen beliebiger weiterer Modellierung oder Simulation annehmen, dass Modellparallelität die optimale Parallelitätstechnik ist. Wenn umgekehrt das Gewichtung-zu-Merkmal-Verhältnis angibt, dass die Schicht wesentlich mehr Merkmalsdaten als Gewichtungsdaten enthält, wird Datenparallelität als die optimale Parallelitätstechnik erachtet. Somit muss der Leistungsschätzer nicht jede Parallelitätstechnik für jede Schicht modellieren oder testen.
-
Wie vorstehend erwähnt kann das 2-D-Array von Prozessoren mehrere Dimensionen umfassen, bei denen mindestens eine Dimension eine höhere Bandbreite für die Prozessor-zu-Prozessor-Datenübertragung als eine weitere Dimension hat. 6 veranschaulicht ein Array von Prozessoren, die x- und y-Ringe in einem 2-D-Array 600 gemäß einer hierin beschriebenen Ausführungsform bilden. Der x-Ring 610 gibt Datenübertragungsverbindungen an, die Prozessoren 155 zum Übertragen von Daten in der X-Richtung verwenden, während der y-Ring 605 Datenübertragungsverbindungen angibt, die Prozessoren 155 zum Übertragen von Daten in der Y-Richtung verwenden.
-
Bei einer Ausführungsform kann das 2-D-Array 600 begrenzte Ressourcen für Datenübertragungsverbindungen umfassen, die die x- und die y-Ringe bilden. Anstelle des Zuweisens derselben Anzahl von Ressourcen für beide Ringe hat das 2-D-Array 600 eine unterschiedliche Bandbreite für den x- und den y-Ring. Das heißt, bei dem 2-D-Array 600 handelt es sich um ein asymmetrisches Array (oder einen symmetrischen Torus), bei dem sich die Bandbreite für die Prozessor-zu-Prozessor-Datenübertragung je nach der Datenübertragungsrichtung unterscheidet. Zum Beispiel können jede Verbindung von Prozessor zu Prozessor mehrere physische Verbindungen umfassen. Um den x-Ringen 610 mehr Bandbreite als den y-Ringen 605 zuzuweisen, kann das 2-D-Array mehr physische Verbindungen haben, die jeder Prozessor-zu-Prozessor-Verbindung in der X-Richtung als den Prozessor-zu-Prozessor-Verbindungen in der Y-Richtung zugewiesen sind. Infolgedessen sind die Prozessoren 155 in der Lage, Daten in der X-Richtung (z.B. zu benachbarten Prozessoren links und rechts) schneller zu übertragen als in der Y-Richtung (z.B. zu benachbarten Prozessoren oberhalb und unterhalb). Auf diese Weise werden die hierin beschriebenen hybriden Parallelitätstechniken wirksam eingesetzt, bei denen die weniger effizienten Parallelitätstechniken verwendet werden können, wenn Daten zwischen den Prozessoren 155 in der X-Richtung übertragen werden (um den Vorteil der höheren Bandbreite zu nutzen), während die effizientere Parallelitätstechnik verwendet wird, wenn Daten zwischen den Prozessoren 155 in der Y-Richtung übertragen werden. Bei einigen NN-Schichten ist dies möglicherweise nicht der Fall und es ist optimal, die effizientere Parallelitätstechnik in der Richtung mit der höheren Bandbreite zu verwenden.
-
Zwar veranschaulichen die 2 und 6 ein 2-D Array von Prozessoren, die Ausführungsformen sind jedoch nicht darauf beschränkt. Wenn ein NN unter Verwendung eines N-dimensionalen Arrays von Prozessoren realisiert ist (bei dem N größer als 3 ist), kann mindestens eine der Dimensionen (oder Einrichtungen) so gestaltet sein, dass sie eine höhere Bandbreite als mindestens eine andere Dimension hat. Daher können die hierin beschriebenen Ausführungsformen verwendet werden, um ein hybrides Parallelitätsmodell auszuwählen, bei dem unterschiedliche Dimensionen unterschiedliche Parallelitätstechniken verwenden.
-
Unter erneuter Bezugnahme auf das Verfahren 500 ermittelt der NN-Zuweiser bei Block 510 unter Verwendung von Leistungsschätzungen, die bei Block 505 erzeugt wurden, ob Daten- oder Modellparallelität die optimale Parallelitätstechnik für die Schicht ist. Wenn dies der Fall ist, geht das Verfahren 500 zu Block 515 weiter, bei dem der NN-Zuweiser die Daten- oder Modellparallelitätstechnik für die Schicht zuweist. Das heißt, beim Aufteilen von Aufgaben und Konfigurieren der NN-Trainingshardware werden die Daten in beiden Richtungen in dem 2-D-unter Verwendung derselben Parallelitätstechnik unabhängig davon übertragen, ob es sich um die Datenmodellparallelitätstechnik oder die Modellparallelitätstechnik handelt. Daher wird dasselbe Parallelitätsmodell in beiden Richtungen verwendet, selbst wenn eine der Richtungen möglicherweise eine höhere Bandbreite als die andere Richtung hat.
-
Anderenfalls geht das Verfahren 500 zu Block 520 weiter, bei dem der NN-Zuweiser unter Verwendung der Leistungsschätzungen ermittelt, ob die aktuell bewertete Schicht eher merkmalsschwer als gewichtungsschwer ist. Wie vorstehend erwähnt ist bei NN-Schichten, bei denen die Merkmale zahlreicher als die Gewichtungen sind (z.B. eine schwere Schicht), die Datenparallelitätstechnik effizienter als die Modellparallelitätstechnik. Das heißt, bei einigen NNs erfordert jedes Ausgabemerkmal den gesamten Eingabekanal. Das heißt, jeder Prozessor benötigt zum Berechnen eines neuen Merkmals nach wie vor die gesamte Eingabe der Schicht (z.B. die Ausgabe aus der vorhergehenden Schicht). Bei Verwendung von Modellparallelität wird die Eingabe in allen Prozessoren repliziert, oder Aktivierungen werden an allen Prozessoren durchgeführt. Somit geht das Verfahren 500, wenn es sich bei der Schicht um eine merkmalsschwere Schicht handelt, zu Block 535 weiter, bei dem der NN-Zuweiser die Modellparallelitätstechnik zur Verwendung in der Richtung mit der höchsten Bandbreite in dem 2-D-Array auswählt. Auf diese Weise hat die negative Auswirkung der Aktivierungen weniger Einfluss auf den effizienten Betrieb des NN, da diese Aktivierungen auf den Prozessor-zu-Prozessor-Verbindungen mit der höheren Bandbreite übermittelt werden. Bei Block 540 wählt der NN-Zuweiser die Datenparallelitätstechnik zur Verwendung in der Richtung mit der kleinsten Bandbreite in dem 2-D-Array aus.
-
Im Gegensatz hierzu geht das Verfahren, wenn es sich bei der Schicht um eine eher gewichtungsschwere Schicht handelt, von Block 520 zu Block 525, bei dem der NN-Zuweiser die Datenparallelitätstechnik zur Verwendung in der Richtung mit der größten Bandbreite in dem 2-D-Array auswählt, und zu Block 530 weiter, bei dem der NN-Zuweiser die Modellparallelitätstechnik zur Verwendung in der Richtung mit der kleinsten Bandbreite auswählt. Da Datenparallelität auf den Verbindungen mit der höheren Bandbreite verwendet wird, wird die negative Auswirkung der Gradientenverringerung verringert. Auf diese Weise gibt das Verfahren 500 ein Verwenden zweier unterschiedlicher hybrider Parallelitätstechniken an. Eine hybride Technik bilden die Blöcke 535 und 540, bei denen Modellparallelität in der Dimension mit der höheren Bandbreite des Arrays von Prozessoren verwendet wird und Datenparallelität in der Dimension mit der geringeren Bandbreite verwendet wird, und die andere bilden die Blöcke 525 und 530, bei denen Datenparallelität in der Dimension mit der höheren Bandbreite des Arrays von Prozessoren verwendet wird und Modellparallelität in der Dimension mit der geringeren Bandbreite verwendet wird.
-
Wie vorstehend erwähnt kann es jedoch effizienter sein, Datenparallelität in der Richtung zu verwenden, die höhere Bandbreite bei merkmalsschweren Schichten hat, oder Modellparallelität in der Richtung zu verwenden, die die höhere Bandbreite bei gewichtungsschweren Schichten hat. Zum Beispiel bevorzugen Schichten eines langen Kurzzeitgedächtnisses (LSTM), obwohl sie gewichtungsschwer sind, hybride Parallelität, bei der Modellparallelität in der Richtung mit der höheren Bandbreite verwendet wird und Datenparallelität in der Richtung mit der geringeren Bandbreite verwendet wird. In diesem Fall ist Gradientenverringerung ziemlich selten (tritt nur auf, nachdem alle Zeitschritte ausgeführt wurden) und kann auf Verbindungen der langsameren Richtung vorkommen, ohne die Leistung zu beeinträchtigen.
-
Zwar wird das Verfahren 500 im Kontext eines asymmetrischen Arrays erörtert, bei dem sich die Bandbreite unterscheidet, das Verfahren 500 kann aber auch in einem symmetrischen Array von Prozessoren verwendet werden, bei dem die Bandbreite in der X- und in der Y-Richtung dieselbe ist. Zum Beispiel kann die NN-Trainingshardware mehr Prozessoren umfassen, als zu testende Minibatches vorliegen. In diesem Fall ist die Verwendung nur von Datenparallelität ineffizient, da der NN-Zuweiser einen Batch (z.B. ein Bild) jedem Prozessor zuweisen kann. In diesem Fall kann die Verwendung eines hybriden Parallelitätsmodells die Effizienz verbessern. Bei einem weiteren Beispiel hat der NN-Zuweiser möglicherweise nicht genügend Merkmale zum Verteilen auf alle Prozessoren (z.B. ist NAusg kleiner als die Anzahl von Prozessoren in dem Array). Somit kann die Verwendung von nur Modellparallelität ineffizient sein, aber das Aufteilen der Dimensionen unter Verwendung eines hybriden Parallelitätsmodells kann zu einer effizienteren Verwendung der NN-Trainingshardware führen. Bei diesen Beispielen spielt es keine Rolle, welche Parallelität in welcher Richtung verwendet wird, da die Richtungen in einem symmetrischen Array dieselbe Bandbreite haben.
-
7 veranschaulicht eine Matrix 700 zum Auswählen einer Parallelitätstechnik für eine NN-Schicht gemäß einer hierin beschriebenen Ausführungsform. Die Matrix 700 veranschaulicht vier Parallelitätstechniken und ihre Beziehungen zueinander. Die x-Achse gibt die Parallelitätstechnik an, die in der X-Richtung des 2-D-Arrays verwendet wird, während die y-Achse die Parallelitätstechnik angibt, die in der Y-Richtung des 2-D-Arrays verwendet wird.
-
Die Parallelitätstechnik „Alles Daten“ ist diejenige, bei der nur Datenparallelität verwendet wird, wenn die Betriebslast aufgeteilt wird. Daher wird die Parallelität in der X-Richtung und in der Y-Richtung des 2-D-Arrays unter Verwendung von Datenparallelität durchgeführt.
-
Bei der Parallelitätstechnik „DatenXModellY“ handelt sich um eine erste hybride Parallelitätstechnik, bei der Datenparallelität in der X-Richtung des 2-D-Arrays verwendet wird, aber Modellparallelität in der Y-Richtung des 2-D-Arrays verwendet wird.
-
Bei der Parallelitätstechnik „ModellXDatenY“ handelt sich um eine zweite hybride Parallelitätstechnik, bei der Modellparallelität in der X-Richtung des 2-D-Arrays verwendet wird, aber Datenparallelität in der Y-Richtung des 2-D-Arrays verwendet wird.
-
Bei der Parallelitätstechnik „Alles Modell“ handelt es sich um diejenige, bei der nur Modellparallelität verwendet wird, wenn die Betriebslast aufgeteilt wird. Daher wird die Parallelität in der X-Richtung und in der Y-Richtung des 2-D-Arrays unter Verwendung von Modellparallelität durchgeführt.
-
8 veranschaulicht eine Einstufung von Parallelitätstechniken auf der Grundlage der Eigenschaften der NN-Schicht gemäß einer hierin beschriebenen Ausführungsform. Die hybriden Parallelitätstechniken stellen einen Kompromiss zwischen den Vorteilen und Nachteilen der Daten- und der Modellparallelitätstechnik dar. Bei NN-Schichten, bei denen es sich hauptsächlich um merkmalsschwere Schichten handelt, führt die Verwendung der Parallelitätstechnik „Alles Daten“ in beiden Richtungen des 2-D-Arrays wahrscheinlich zur effizientesten Verwendung der NN-Trainingshardware. Umgekehrt führt bei NN-Schichten, bei denen es sich hauptsächlich um gewichtsschwere Schichten handelt, die Verwendung der Parallelitätstechnik „Alles Modell“ in beiden Richtungen des 2-D-Arrays wahrscheinlich zur effizientesten Verwendung der NN-Trainingshardware.
-
Die Verwendung der hybriden Parallelitätstechniken (d.h. von „DatenXModellY“ und „ModellXDatenY“) kann die Effizienz im Verhältnis zu den Techniken „Alles Daten“ oder „Alles Modell“ bei Schichten verbessern, die nicht hauptsächlich merkmalsschwer oder gewichtsschwer sind. Das heißt, bei Schichten, die unter diese beiden Extreme fallen, kann es effizienter sein, eine hybride Parallelitätstechnik zu verwenden. Das heißt, bei Schichten, bei denen der Leistungsschätzer feststellt, dass sie eher merkmalsschwer als gewichtsschwer sind, kann die hybride Parallelität „ModellXDatenY“ zu einer verbesserten Effizienz führen (unter der Annahme, die X-Richtung des 2-D-Arrays mehr Bandbreite als die Y-Richtung hat). Das heißt, Modellparallelität wird in der X Richtung durchgeführt, während Datenparallelität in der Y-Richtung verwendet wird. Somit ermöglicht dies der NN-Trainingshardware, die negative Auswirkung der langsameren Eingabeaktivierungen der Modellparallelität abzumildern, da sie in der X-Richtung durchgeführt wird, in der die Bandbreite am höchsten ist, während die von sich aus effizientere Datenparallelität in der Y-Richtung verwendet wird, in der die Bandbreite geringer ist. Zum Beispiel bevorzugen faltende Schichten mit kleineren Merkmalsgrößen (z.B. der abschließende Satz von faltenden Schichten in ResNet und GoogLeNet), die nur unwesentlich merkmalsschwer sind, die Parallelität „ModellXDatenY“, um die Aktivierung/Fehlerrotation zu optimieren.
-
Bei NN-Schichten, die eher gewichtsschwer als merkmalsschwer sind, kann die hybride Parallelität „DatenXModellY“ zu einer verbesserten Effizienz führen, da Datenparallelität in der Richtung mit der höheren Bandbreite durchgeführt wird (d.h. in der X-Richtung), wodurch die negative Auswirkung der Gewichtungs-/Gradientenverringerung minimiert wird, während die von sich aus effizientere Modellparallelität in der Richtung mit der geringeren Bandbreite durchgeführt wird. Zum Beispiel bevorzugen kleine, vollständig verbundene Schichten (z.B. letzte Schichten von VGG/ResNet), die mäßig gewichtsschwer sind, „DatenXModellY“, da sie eine Gradientenverringerung entlang Verbindungen in der X-Richtung realisieren.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung sollen der Veranschaulichung dienen, sind jedoch nicht als vollständig oder auf die offenbarten Ausführungsformen beschränkt gedacht. Für Fachleute sind viele Modifikationen und Variationen denkbar, ohne dass diese eine Abweichung vom Schutzumfang und Grundgedanken der beschriebenen Ausführungsformen darstellen würden. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung bzw. die technische Verbesserung gegenüber den auf dem Markt vorgefundenen Technologien zu erläutern bzw. anderen mit entsprechenden Fachkenntnissen das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
-
Im Vorstehenden wird Bezug auf in dieser Offenbarung vorgestellte Ausführungsformen genommen. Der Schutzbereich der vorliegenden Offenbarung ist jedoch nicht auf bestimmte beschriebene Ausführungsformen beschränkt. Stattdessen ist eine beliebige Kombination der folgenden Merkmale und Elemente unabhängig davon denkbar, ob sie mit unterschiedlichen Ausführungsformen im Zusammenhang stehen, um die Erfindung zu realisieren und in die Praxis umzusetzen. Obwohl hierin offenbarte Ausführungsformen möglicherweise Vorteile gegenüber anderen möglichen Lösungen oder gegenüber dem Stand der Technik erzielen, schränkt des Weiteren eine angegebene Ausführungsform den Schutzbereich der vorliegenden Offenbarung unabhängig davon nicht ein, ob ein bestimmter Vorteil durch eine angegebene Ausführungsform erzielt wird. Daher tragen die Aspekte, Merkmale, Ausführungsformen und Vorteile lediglich einen veranschaulichenden Charakter und sind nicht als Elemente oder Einschränkungen der beigefügten Ansprüche gedacht, ausgenommen in Fällen, in denen dies in einem Anspruch bzw. in Ansprüchen ausdrücklich angegeben ist. Ebenso ist der Bezug auf „die Erfindung“ nicht als Verallgemeinerung eines hierin offenbarten Erfindungsgegenstands auszulegen und nicht als Element oder Einschränkung der beigefügten Ansprüche anzusehen, ausgenommen in Fällen, in denen dies in einem Anspruch bzw. in Ansprüchen ausdrücklich angegeben ist.
-
Aspekte der vorliegenden Erfindung können die Form einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (unter anderem Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert, die im hierin allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet sind.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) enthalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine materielle Einheit handeln, auf der Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen aufbewahrt und gespeichert sein können. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel, ohne auf diese beschränkt zu sein, um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder eine beliebige geeignete Kombination des Vorstehenden handeln. Eine nicht erschöpfende Liste genauerer Beispiele des durch einen Computer lesbaren Speichermediums umfasst Folgendes: eine transportable Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen transportablen Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine Digital Versatile Disc (DVD), einen Speicherstick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhöhte Strukturen in einer Rille mit darauf aufgezeichneten Anweisungen oder beliebige geeignete Kombinationen des Vorstehenden. Ein durch einen Computer lesbares Speichermedium im hierin verwendeten Sinne ist nicht so auszulegen, dass es sich dabei um flüchtige Signale an sich handelt, beispielsweise um Funkwellen oder sich frei ausbreitende elektromagnetische Wellen, um elektromagnetische Wellen, die sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder um elektrische Signale, die über ein Kabel übertragen werden.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können über ein Netzwerk, zum Beispiel das Internet, ein lokales Netzwerk ein Weitverkehrsnetzwerk und/oder ein Drahtlosnetzwerk von einem durch einen Computer lesbaren Speichermedium auf betreffende Datenverarbeitungs-/Verarbeitungseinheiten oder auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, Drahtlosübertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder eine Netzwerkschnittstelle in der Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der jeweiligen Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Durch einen Computer lesbare Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung können Assembleranweisungen, ISA-Anweisungen (ISA = Instruction Set Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, Daten zum Setzen von Zuständen oder entweder Quellcode oder Objektcode sein, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, zu denen eine objektorientierte Programmiersprache wie beispielsweise Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C“ oder ähnliche Programmiersprachen gehören. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Bei dem letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (Local Area Network, LAN) oder über ein Weitverkehrsnetzwerk (Wide Area Network, WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internetdienstanbieters (Internet Service Provider)). Bei einigen Ausführungsformen können elektronische Schaltungen, zu denen beispielsweise programmierbare Logikschaltungen, vor Ort programmierbare Gatteranordnungen (Field-Programmable Gate Arrays, FPGA) oder programmierbare Logikanordnungen (PLA) gehören, die durch einen Computer lesbaren Programmanweisungen ausführen, indem Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen genutzt werden, um die elektronische Schaltung zu personalisieren, sodass Aspekte der vorliegenden Erfindung durchgeführt werden.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Flussdiagrammdarstellungen und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird klar sein, dass jeder Block der Flussdiagramme und/oder der Blockschemata und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschemata mit Hilfe von durch einen Computer lesbaren Programmanweisungen realisiert werden kann bzw. können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder anderer programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel schaffen, um die in einem Block bzw. in den Blöcken des Flussdiagramms bzw. der Flussdiagramme und/oder des Blockschemas bzw. der Blockschemata angegebenen Funktionen/Aktionen zu realisieren. Diese durch einen Computer lesbaren Programmanweisungen können ebenfalls in einem durch einen Computer lesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass das durch einen Computer lesbare Medium mit darauf gespeicherten Anweisungen ein Erzeugnis aufweist, das Anweisungen enthält, die die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebene Funktion/Aktion realisieren.
-
Die durch einen Computer lesbaren Programmanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Operationen ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer, auf anderen programmierbaren Vorrichtungen oder Einheiten ausgeführt werden, die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen realisieren.
-
Die Flussdiagramme und Blockschemata in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Flussdiagrammen bzw. in den Blockschemata ein Modul, ein Segment oder einen Abschnitt von Anweisungen darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zum Realisieren der angegebenen Logikfunktion bzw. Logikfunktionen aufweist. Bei einigen alternativen Realisierungsformen können die in dem Block angegebenen Funktionen in einer anderen als in der Reihenfolge ausgeführt werden, die in den Figuren angegeben ist. Zum Beispiel können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der mit den Blöcken verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der Blockschemata und/oder Flussdiagrammdarstellungen sowie Kombinationen von Blöcken in den Blockschemata und/oder Flussdiagrammdarstellungen mit Hilfe zweckgebundener hardwaregestützter Systeme zum Ausführen der angegebenen Funktionen bzw. Aktionen oder mit Hilfe von Kombinationen aus zweckgebundener Hardware und zweckgebundenen Computeranweisungen realisiert werden kann bzw. können.
-
Ausführungsformen der Erfindung können Endbenutzern über eine Cloud-Datenverarbeitungsinfrastruktur bereitgestellt werden. Der Begriff „Cloud-Datenverarbeitung“ („Cloud-Computing“) bezeichnet allgemein die Bereitstellung skalierbarer Datenverarbeitungsressourcen als Dienst über ein Netzwerk. Formaler ausgedrückt kann Cloud-Computing als Datenverarbeitungsfunktion definiert werden, die eine Abstraktion zwischen der Datenverarbeitungsressource und ihrer zugrundeliegenden technischen Architektur (z.B. Server, Speicher, Netzwerke) bereitstellt, die den benutzerfreundlichen bedarfsorientierten Netzwerkzugriff auf eine gemeinsam genutzte Ansammlung konfigurierbarer Datenverarbeitungsressourcen ermöglicht, die mit minimalem Verwaltungsaufwand bzw. über minimale Interaktion mit dem Dienstanbieter bereitgestellt und freigegeben werden kann. Somit ermöglicht Cloud-Computing einem Benutzer unabhängig von den zugrundeliegenden physischen Systemen (oder den Standorten der Systeme), die zur Bereitstellung der Datenverarbeitungsressourcen verwendet werden, auf virtuelle Datenverarbeitungsressourcen (z.B. Speicher, Daten, Anwendungen und selbst auf komplette virtualisierte Datenverarbeitungssysteme) in der „Cloud“ zuzugreifen.
-
In der Regel werden Cloud-Computing-Ressourcen einem Benutzer auf einer Grundlage der Kosten pro Nutzung (Pay-per-Use) bereitgestellt, bei der Benutzern nur Kosten für die tatsächlich genutzten Datenverarbeitungsressourcen (z.B. eine Größe des durch einen Benutzer verbrauchten Speicherplatzes oder eine Anzahl virtueller Systeme, die der Benutzer instanziiert hat) in Rechnung gestellt werden. Ein Benutzer kann über das Internet jederzeit und von überall auf beliebige der Ressourcen zugreifen, die sich in der Cloud befinden. Im Kontext der vorliegenden Erfindung kann ein Benutzer auf Anwendungen (z.B. auf den NN-Zuweiser oder den Leistungsschätzer) und zugehörige Daten zugreifen, die in der Cloud zur Verfügung stehen. Zum Beispiel könnten der NN-Zuweiser oder der Leistungsschätzer auf einem Datenverarbeitungssystem in der Cloud ausgeführt werden und die optimale Parallelitätstechnik für jede Schicht in einem NN auswählen. In einem derartigen Fall könnte der NN-Zuweiser oder der Leistungsschätzer die optimalen Techniken auswählen und diese Auswahlen auf einem Speicherplatz in der Cloud speichern. Dies ermöglicht einem Benutzer, von einem beliebigen Datenverarbeitungssystem, das an ein mit der Cloud verbundenes Netzwerk (z.B. das Internet) angeschlossen ist, auf diese Daten zuzugreifen.
-
Zwar ist das Vorstehende auf Ausführungsformen der vorliegenden Erfindung gerichtet, andere und weitere Ausführungsformen der Erfindung können jedoch entwickelt werden, ohne von deren grundlegendem Schutzbereich abzuweichen, wobei deren Schutzbereich durch die nachfolgenden Ansprüche festgelegt ist.