DE102021105249A1 - Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen - Google Patents

Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen Download PDF

Info

Publication number
DE102021105249A1
DE102021105249A1 DE102021105249.1A DE102021105249A DE102021105249A1 DE 102021105249 A1 DE102021105249 A1 DE 102021105249A1 DE 102021105249 A DE102021105249 A DE 102021105249A DE 102021105249 A1 DE102021105249 A1 DE 102021105249A1
Authority
DE
Germany
Prior art keywords
neural network
training
learning
learning rate
hyperparameters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021105249.1A
Other languages
English (en)
Inventor
Anjul Patney
Brandon Lee Rowlett
Yinghao Xu
Andrew Leighton Edelsten
Aaron Eliot Lefohn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102021105249A1 publication Critical patent/DE102021105249A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • G06T7/0012Biomedical image inspection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person
    • G06T2207/30201Face

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
  • Radiology & Medical Imaging (AREA)
  • Quality & Reliability (AREA)
  • Image Analysis (AREA)

Abstract

Die offenbarten Mikrotrainingsverfahren verbessern die Genauigkeit von trainierten neuronalen Netzen durch Durchführen einer iterative Verfeinerung bei niedrigen Lernraten unter Verwendung einer relativ kurzen Reihe von Mikrotrainingsschritten. Ein Framework für das Training neuronaler Netze empfängt das trainierte neuronale Netz zusammen mit einem zweiten Trainingsdatensatz und einem Satz von Hyperparametern. Das Framework für das Training neuronaler Netze erzeugt ein mikrotrainiertes neuronales Netz durch Anpassen eines oder mehrerer Gewichte des trainierten neuronalen Netzes mit einer niedrigeren Lernrate, um inkrementelle Genauigkeitsverbesserungen zu ermöglichen, ohne die Berechnungsstruktur des trainierten neuronalen Netzes wesentlich zu verändern. Das mikrotrainierte neuronale Netz kann auf Änderungen in der Genauigkeit und/oder Qualität bewertet werden. Zusätzliche Mikrotrainingseinheiten können mit dem mikrotrainierten neuronalen Netz durchgeführt werden, um die Genauigkeit oder Qualität weiter zu verbessern.

Description

  • TECHNISCHES GEBIET
  • Die Erfindung bezieht sich auf das Training neuronaler Netze und insbesondere auf das Mikrotraining zur iterativen Verfeinerung eines neuronalen Netzes mit wenigen Einstellungen bzw. Anpassungen.
  • HINTERGRUND
  • Herkömmliche Trainingsverfahren für neuronale Netze liefern manchmal unzureichende Ergebnisse in Bezug auf Genauigkeit oder Qualität. Dies ist insbesondere dann der Fall, wenn das Training auf Datensätzen basiert, die unzureichend, vorbelastet oder eine Kombination daraus sind. Darüber hinaus bieten konventionelle Trainingstechniken im Allgemeinen keine zusätzlichen Verbesserungsmöglichkeiten in eingeschränkten Szenarien, in denen ungenaue Trainingsverluste oder unzureichende Daten ein erneutes Training unpraktisch oder ineffektiv machen. Bei Anwendungen der Bildsynthese mit generativen neuronalen Netzen können sich unzureichende Ergebnisse in Form von Bildartefakten in einem generierten Bild bemerkbar machen. Es besteht eine Notwendigkeit, diese Probleme und/oder andere mit dem Stand der Technik verbundene Probleme zu lösen.
  • KURZBESCHREIBUNG
  • Offenbart werden ein Verfahren, ein computerlesbares Medium und ein System zum Mikrotrainieren eines neuronalen Netzes, um die Genauigkeit und/oder Qualität zu verbessern. Das Verfahren umfasst ein Empfangen eines neuronalen Netzes, das dazu trainiert wurde, eine Verlustfunktion zu erfüllen, unter Verwendung eines ersten Satzes von Hyperparametern und eines ersten Trainingsdatensatzes, ein Empfangen eines zweiten Trainingsdatensatzes und ein Empfangen eines zweiten Satzes von Hyperparametern. In einer Ausführungsform begrenzt ein zweiter Lernparameter, der in dem zweiten Satz von Hyperparametern spezifiziert ist, die Anpassungen von einem oder mehreren Gewichten, die von dem neuronalen Netz verwendet werden, im Vergleich mit einem entsprechenden ersten Lernparameter in dem ersten Satz von Hyperparametern. Das Verfahren umfasst ferner ein Anwenden des zweiten Trainingsdatensatzes auf das neuronale Netz gemäß dem zweiten Satz von Hyperparametern, um durch Anpassen des einen oder der mehreren Gewichte, die von dem neuronalen Netz zum Verarbeiten des zweiten Trainingsdatensatzes verwendet werden, ein erstes mikrotrainiertes neuronales Netz zu erzeugen. In bestimmten Anwendungen erzeugt das trainierte neuronale Netz Ausgangsdaten, die visuelle Artefakte enthalten; und das erste mikrotrainierte neuronale Netz, das gemäß dem Verfahren erzeugt wird, reduziert die visuellen Artefakte.
  • Figurenliste
    • 1A veranschaulicht ein Flussdiagramm eines Verfahrens zum Mikrotrainieren eines neuronalen Netzes, gemäß einer Ausführungsform.
    • 1B veranschaulicht das Mikrotraining innerhalb eines Gesamthypothesenraums, gemäß einer Ausführungsform.
    • 1C veranschaulicht ein Framework für ein neuronales Netz, gemäß einer Ausführungsform.
    • 2A veranschaulicht ein Flussdiagramm eines Verfahrens zur Verbesserung des Trainings neuronaler Netze unter Verwendung von Mikrotraining, gemäß einer Ausführungsform.
    • 2B veranschaulicht ein Diagramm durchschnittlicher Unterschiede zwischen Schichten verschiedener mikrotrainierter Netze, gemäß einer Ausführungsform.
    • 3 veranschaulicht eine Parallelverarbeitungseinheit, gemäß einer Ausführungsform.
    • 4A veranschaulicht einen Universalverarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 3, gemäß einer Ausführungsform.
    • 4B veranschaulicht eine Speicherpartitionseinheit der Parallelverarbeitungseinheit von 3, gemäß einer Ausführungsform.
    • 5A veranschaulicht den Streaming-Multiprozessor aus 4A, gemäß einer Ausführungsform.
    • 5B ist ein konzeptionelles Diagramm eines Verarbeitungssystems, das unter Verwendung der PPU von 3 implementiert wurde, gemäß einer Ausführungsform.
    • 5C veranschaulicht ein beispielhaftes System, in dem die verschiedenen Architekturen und/oder Funktionen der verschiedenen vorangehenden Ausführungsformen implementiert sein können.
  • DETAILLIERTE BESCHREIBUNG
  • Die offenbarten Techniken, die hierin als Mikrotraining bezeichnet werden, verbessern die Genauigkeit von trainierten neuronalen Netzen durch Durchführen einer iterativen Verfeinerung bei niedrigen Lernraten unter Verwendung einer Reihe von Mikrotrainingsschritten mit wenigen Schritten. Die Mikrotrainingsschritte umfassen deutlich weniger Trainingsiterationen als das anfängliche Training eines trainierten neuronalen Netzes. Eine niedrigere Lernrate erleichtert in diesem Zusammenhang die inkrementelle Verbesserung der Genauigkeit, ohne die Berechnungsstruktur des trainierten neuronalen Netzes wesentlich zu verändern. In diesem Kontext bezieht sich die Berechnungsstruktur sowohl auf die Topologie des neuronalen Netzes als auch auf verschiedene Verteilungen, die darin intern dargestellt werden (z.B. durch Aktivierungsgewichte, Aktivierungsfunktionen usw.). Eine gegebene Netztopologie kann angeben, wie die internen künstlichen Neuronenknoten in Schichten organisiert und miteinander verbunden sind. Auf jeden Mikrotrainingsschritt kann ein Auswertungsschritt folgen (z.B. Eingabe durch einen menschlichen Bediener über eine Benutzeroberfläche), um eine inkrementelle Qualitätsänderung zu bewerten. Zum Beispiel kann eine kleine Anzahl von Pixeln, die mit dünnen Linien verbunden sind (z.B. dunkle Telefonkabel gegen einen hellen Himmel in einer Szene im Freien), Aliasing- bzw. Treppen-Artefakte aufweisen, die für den menschlichen Bediener (Betrachter) sichtbar sind und von konventionellem automatisiertem Training weitgehend ignoriert werden; diese Pixel können jedoch während des Mikrotrainings so optimiert werden, dass sie korrekt kantengeglättet erscheinen. In diesem Zusammenhang verfeinert das Mikrotraining ein zuvor trainiertes Netz, um solche visuell wichtigen Artefakte (z.B. Aliasing bzw. Treppenbildung) zu reduzieren oder zu eliminieren.
  • 1A veranschaulicht ein Flussdiagramm eines Verfahrens 110 zum Mikrotrainieren eines neuronalen Netzes, gemäß einer Ausführungsform. Obwohl das Verfahren 110 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 110 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm ausgeführt werden. Beispielsweise kann das Verfahren 110 von einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder einem beliebigen Prozessor ausgeführt werden, der in der Lage ist, Operationen zum Auswerten und Trainieren neuronaler Netze durchzuführen. Darüber hinaus versteht sich für den Fachmann, dass jedes System, das das Verfahren 110 ausführt, innerhalb des Rahmens und der Idee der Ausführungsformen der Erfindung liegt. In einer Ausführungsform führt eine Verarbeitungseinheit das Verfahren 110 in Verbindung mit verschiedenen Operationen eines Trainings-Frameworks für neuronale Netze und/oder eines Laufzeitsystems für neuronale Netze aus. In bestimmten Ausführungsformen umfasst die Verarbeitungseinheit eine oder mehrere Instanzen einer Parallelverarbeitungseinheit, wie z.B. die Parallelverarbeitungseinheit 300 von 3.
  • Das Verfahren 110 beginnt mit Schritt 111, in dem die Verarbeitungseinheit ein neuronales Netz (Gs) empfängt, das dazu trainiert wurde, eine Verlustfunktion (Ls) zu erfüllen, unter Verwendung eines ersten Satzes von Hyperparametern (Hs) und eines ersten Trainingsdatensatzes (Ds). In einer Ausführungsform ist das neuronale Netz ein tiefes generatives neuronales Netz, das zum Erzeugen von Bildern konfiguriert ist. In einer Ausführungsform enthält der erste Satz von Hyperparametern mindestens einen Modellskalierungsparameter wie beispielsweise eine Epochenzahl, eine Stapelgröße, eine Anzahl von Trainingsiterationen, eine Lernrate und eine Verlustfunktion. In einer Ausführungsform spezifiziert die Epochenanzahl eine Anzahl von Trainingsdurchläufen über alle spezifizierten Trainingsmuster. Jeder Trainingsdurchlauf für ein bestimmtes Trainingsmuster umfasst einen Vorwärtsdurchlauf und einen Rückwärtsdurchlauf. Die spezifizierten Trainingsmuster können in Stapeln organisiert sein, wobei die Stapelgröße eine Anzahl von Trainingsmustern pro Stapel angibt. Die Anzahl der Trainingsiterationen gibt die Anzahl der Trainingsdurchläufe an, die mit den verschiedenen Stapeln durchgeführt werden, um ein bestimmtes neuronales Netz einmal auf alle verfügbaren Trainingsmuster zu trainieren. Bei eintausend Trainingsmustern und einer Stapelgröße von zweihundert sind beispielsweise fünf Iterationen erforderlich, um eine Epoche abzuschließen. In einer Ausführungsform kann sich ein gegebener Satz von Hyperparametern auf eine oder mehrere Sammlungen von Trainingsmustern beziehen. Ferner ist die Lernrate ein Wert, der skaliert, wie schnell ein gegebenes neuronales Netz Gewichte in einem gegebenen Durchlauf bzw. Durchgang anpasst. Zusätzlich kann die Verlustfunktion eine Differenz zwischen einer vorhergesagten Ausgabe und einer tatsächlichen, von dem neuronalen Netz berechneten Ausgabe angeben. Im Kontext eines Hyperparameters kann die Verlustfunktion eine Funktion zum Berechnen der Differenz angeben.
  • In bestimmten Anwendungsfällen wird das neuronale Netz (Gs) dazu trainiert, durch Optimieren der Verlustfunktion (Ls) unter Verwendung des ersten Satzes von Hyperparametern (Hs) und dem ersten Trainingsdatensatz (Ds) neue Bilder zu erzeugen. Wenn das neuronale Netz jedoch unter Verwendung eines anderen Testdatensatzes (DT) evaluiert wird, können die Ergebnisse unbefriedigend sein (z.B. sichtbare Artefakte in den generierten Bildern). Unbefriedigende Ergebnisse können aus einem oder mehreren Gründen auftreten. Ein erster beispielhafter Grund tritt auf, wenn die Verlustfunktion Ls sich von einer Testverlustfunktion (LT) unterscheidet; folglich kann das Training zur Optimierung gegen die Verlustfunktion Ls inadäquat sein, wenn die Bewertung in Bezug auf die Testverlustfunktion LT erfolgt. In diesem Fall kann die Verlustfunktion (Ls) eine inadäquate Verlustrückmeldung liefern, um das neuronale Netz Gs so zu trainieren, dass visuelle Artefakte vermieden werden, die möglicherweise nur für LT von Bedeutung sind. Dieser Fall ist besonders herausfordernd, wenn die Testverlustfunktion einen subjektiven menschlichen Betrachter involviert.
  • Ein zweiter beispielhafter Grund für unbefriedigende Ergebnisse kann auftreten, wenn sich eine Verteilung für den ersten Trainingsdatensatz (Ds) ausreichend von der Verteilung für den Testdatensatz (DT) unterscheidet. In diesem Fall kann der erste Trainingsdatensatz nicht genügend repräsentative Daten enthalten, um das neuronale Netz Gs so zu trainieren, dass visuelle Artefakte vermieden werden. Ein dritter beispielhafter Grund für unbefriedigende Ergebnisse kann auftreten, wenn der erste Satz von Hyperparametern (Hs) suboptimal abgestimmt ist. Die Optimierung von Hyperparametern (Hs) allein zur Behebung von Trainingsdefiziten kann jedoch im Allgemeinen unpraktisch sein.
  • Wenn ein beliebiger der drei oben genannten Gründe für unbefriedigende Ergebnisse in einem Anwendungsfall des Trainings eines neuronalen Netzes zutrifft, kann ein einfaches Neutrainieren des neuronalen Netzes Gs auf herkömmliche Weise nicht unbedingt die Qualität eines Evaluierungsergebnisses verbessern. Die Verbesserung von Ls zur Anpassung an LT kann unpraktisch sein; die Erfassung eines ausreichend großen Trainingsdatensatzes kann unpraktisch sein; und eine Optimierung von Hs kann unpraktisch sein. Die hierin beschriebene Mikrotrainingstechnik stellt jedoch einen Mechanismus zur Verbesserung von Ergebnissen ohne Überwinden unpraktischer Hürden bereit.
  • In einer Ausführungsform ist S gleich Null und ist das neuronale Netz Gs ist ein trainiertes neuronales Netz (Go), das unter Verwendung eines ersten Trainingsdatensatzes (Do) und eines ersten Satzes von Hyperparametern (Ho) trainiert wurde. In verschiedenen Anwendungsfällen kann das trainierte neuronale Netz Ausgangsdaten erzeugen, die visuelle Artefakte enthalten. Die Artefakte können, ohne darauf beschränkt zu sein, geometrische Aliasing-Artefakte (z.B. gezackte Kanten, blockiges Aussehen), Rauschartefakte (z.B. Rendering-Rauschartefakte), Beleuchtungseffekt-Artefakte (z.B. Wasserreflexionsartefakte) und zeitliche Artefakte (z.B. Schimmern, schwimmende Erscheinungen) umfassen.
  • In Schritt 113 empfängt die Verarbeitungseinheit einen zweiten Trainingsdatensatz (D1). Der zweite Trainingsdatensatz D1 kann zusätzliche Trainingsmuster enthalten, die ausgewählt wurden, um das neuronale Netz speziell auf die Unterdrückung der visuellen Artefakte zu trainieren. Zum Beispiel können zur Verbesserung der Anti-Aliasing-Qualität zusätzliche Bilder, die dünne, kontrastreiche Linien darstellen, beschafft und mit dem zweiten Trainingsdatensatz (D1) zur Verwendung während des Mikrotrainings gemischt werden, um das neuronale Netz G1 anzuleiten, kontinuierlichere und ästhetisch ansprechendere Anti-Aliasing-Linien zu erzeugen, ohne anderes wertvolle Training zu stören. In Schritt 115 empfängt die Verarbeitungseinheit einen zweiten Satz von Hyperparametern (H1). In einer Ausführungsform wird in dem zweiten Satz von Hyperparametern ein zweiter Lernparameter spezifiziert, um Anpassungen eines oder mehrerer Gewichte, die von dem neuronalen Netz verwendet werden, im Vergleich zu einem entsprechenden ersten Lernparameter in dem ersten Satz von Hyperparametern zu begrenzen. In einer Ausführungsform umfasst der erste Lernparameter eine erste Lernrate, und umfasst der zweite Lernparameter eine zweite Lernrate, die geringer bzw. kleiner als die erste Lernrate ist. In bestimmten Ausführungsformen liegt die zweite Lernrate in einem Bereich von zehnmal niedriger bis über eintausendmal niedriger als die erste Lernrate. Zum Beispiel kann die erste Lernrate im Bereich von 1e-3 bis 1e-5 liegen, während die zweite Lernrate im Bereich von 1e-4 bis 1e-8 liegen kann.
  • In einer Ausführungsform umfasst der erste Satz von Hyperparametern eine erste Anzahl von Trainingsiterationen und umfasst der zweite Satz von Hyperparametern eine zweite Anzahl von Trainingsiterationen, die geringer bzw. kleiner ist als die erste Anzahl von Trainingsiterationen. In bestimmten Ausführungsformen ist die zweite Anzahl von Trainingsiterationen eintausendmal (oder mehr) kleiner als die erste Anzahl von Trainingsiterationen. Allgemeiner ausgedrückt, kann der zweite Satz von Hyperparametern einen Gesamtrechenaufwand für das Training festlegen, der hunderte bis tausende Male (oder mehr) kleiner sein kann als der Gesamtrechenaufwand, der durch den ersten Satz von Hyperparametern spezifiziert wurde.
  • In Schritt 117 wendet die Verarbeitungseinheit den zweiten Trainingsdatensatz auf das neuronale Netz gemäß dem zweiten Satz von Hyperparametern an, während sie das eine oder die mehreren Gewichte anpasst, die von dem neuronalen Netz verwendet werden, um den zweiten Trainingsdatensatz zu verarbeiten und ein erstes mikrotrainiertes neuronales Netz zu erzeugen. Auf diese Weise repräsentiert das erste mikrotrainierte neuronale Netz (G1) eine zusätzlich trainierte Instanz des trainierten neuronalen Netzes (Go).
  • In einer Ausführungsform wendet die Verarbeitungseinheit den zweiten Trainingsdatensatz in Kombination mit mindestens einem Teil des ersten Trainingsdatensatzes an, um das erste mikrotrainierte neuronale Netz zu erzeugen. Zum Beispiel kann der gesamte zweite Trainingsdatensatz zusammen mit dem gesamten ersten Trainingsdatensatz verwendet werden, um das erste mikrotrainierte neuronale Netz zu trainieren und zu erzeugen. In einem anderen Beispiel kann der gesamte zweite Trainingsdatensatz zusammen mit ungefähr der Hälfte des ersten Trainingsdatensatzes verwendet werden. Alternativ können verschiedene andere Kombinationen aus dem zweiten Trainingsdatensatz und dem ersten Trainingsdatensatz verwendet werden, um das erste mikrotrainierte neuronale Netz zu trainieren und zu erzeugen. In einer Ausführungsform wird die zweite Anzahl von Trainingsiterationen verwendet, um das erste mikrotrainierte neuronale Netz zu trainieren und zu erzeugen.
  • In einer Ausführungsform kann jede Gewichtung des ersten mikrotrainierten neuronalen Netzes während des Mikrotrainings angepasst werden. In alternativen Ausführungsformen können bestimmte Gewichte, wie z.B. Gewichte, die einer bestimmten Schicht zugeordnet sind, gesperrt und während des Mikrotrainings nicht angepasst werden.
  • In einer Ausführungsform implementiert das trainierte neuronale Netz eine U-Netz-Architektur mit einem ersten Satz von Aktivierungsfunktionsgewichten und implementiert das erste mikrotrainierte neuronale Netz eine entsprechende U-Netz-Architektur mit einem zweiten, anderen Satz von Aktivierungsfunktionsgewichten. In verschiedenen Ausführungsformen umfassen das trainierte neuronale Netz und das erste mikrotrainierte neuronale Netz Netze innerhalb eines Systems eines generativen adversarischen neuronalen Netzes (GAN). Ein GAN umfasst typischerweise ein Erzeuger- bzw. Generatornetz und ein Unterscheider- bzw. Diskriminatornetz, die jeweils ein tiefes neuronales Netz wie z.B. ein U-Netz mit einer beliebig tiefen Architektur sein können. Die GAN-Struktur stellt das Generatornetz gegen das Diskriminatornetz, wobei das Generatornetz lernt, synthetische Daten zu erzeugen, die von natürlichen Daten nicht zu unterscheiden sind, und das Diskriminatornetz lernt, synthetische Daten von natürlichen Daten zu unterscheiden. In bestimmten Anwendungen kann das Generatornetz so trainiert werden, dass es qualitativ hochwertige synthetische Daten erzeugt, wie z.B. synthetische, imaginäre Bilder. In anderen Anwendungen lernt das Diskriminatornetz, die Erkennung über natürliche oder anfängliche Trainingsdaten hinaus zu verallgemeinern. Im Kontext der Erfindung kann jeder technisch machbare Trainingsmechanismus (z.B. Backpropagation) während des Trainings durchgeführt werden, ohne dass der Rahmen und die Idee der verschiedenen Ausführungsformen verlassen wird.
  • Nachstehend werden weitere veranschaulichende Informationen bezüglich verschiedener optionaler Architekturen und Funktionen dargelegt, mit denen das oben beschriebene Framework nach den Wünschen des Benutzers implementiert werden kann. Es wird ausdrücklich darauf hingewiesen, dass die folgenden Informationen zu veranschaulichenden Zwecken dargelegt werden und nicht als in irgendeiner Weise beschränkend auszulegen sind. Jedes der folgenden Merkmale kann optional mit oder ohne Ausschluss anderer beschriebener Merkmale integriert werden.
  • 1B veranschaulicht das Mikrotraining innerhalb eines Gesamthypothesenraums 140, gemäß einer Ausführungsform. Wie dargestellt, durchläuft ein untrainiertes neuronales Netz Gu einen anfänglichen Trainingspfad 142, der zu einem trainierten neuronalen Netz Go führt. Der anfängliche Trainingspfad 142 kann in Übereinstimmung mit jeder technisch möglichen Trainingstechnik durchlaufen werden. Das trainierte neuronale Netz Go befindet sich innerhalb eines lokalen Optimierungsbereichs 144, aber das trainierte neuronale Netz Go liefert möglicherweise nicht tatsächlich ein auf dem ersten Trainingsdatensatz Do und einem ersten Satz von Hyperparametern Ho basierendes, ideales Ergebnis 146. Die offenbarten Verfahren 110 und 200 verfeinern das trainierte neuronale Netz Go, um sich dem idealen Ergebnis 146 anzunähern. In diesem Beispiel wird das trainierte neuronale Netz Go durch einen Pfad verfeinert, der von dem trainierten neuronalen Netz Go zu den mikrotrainierten neuronalen Netzen G1, G2 und schließlich G3 führt. Darüber hinaus sieht die Technik subjektive menschliche Eingaben vor, um die automatisierten Trainingsergebnisse besser mit der menschlichen Wahrnehmung abzustimmen, um die Qualität in Bereichen zu erhöhen, die für die menschliche Wahrnehmung visuell wichtig und deutlich sind, aber algorithmisch nur schwer in Form von automatisierten Verlustfunktionen modelliert werden können.
  • Wie gezeigt, resultiert ein anfängliches Trainingsergebnis in dem trainierten neuronalen Netz Go unter Verwendung des Trainingsdatensatzes Do, einer Verlustfunktion und von Hyperparametern Ho. Ein verbessertes Trainingsergebnis unter Verwendung des offenbarten Mikrotrainingsverfahrens führt zu einem verfeinerten neuronalen Netz G3, das näher am idealen Ergebnis 146 liegt. Kleine Änderungen an dem trainierten neuronalen Netz Go während des Mikrotrainings bewahren den Nutzen des ursprünglichen Trainings mit dem Trainingsdatensatz Do, während sie kleine Modifikationen erlauben, die die Qualität verbessern können. Zum Beispiel kann das verfeinerte neuronale Netz G1 allgemein das trainierte neuronale Netz Go replizieren, jedoch mit der Hinzufügung kleiner Änderungen zu den Aktivierungsfunktionsgewichten, die eine verbesserte Qualität bereitstellen.
  • Das offenbarte Mikrotrainingsverfahren umfasst das Empfangen eines trainierten neuronalen Netzes Go (Gs, s=o), das Empfangen eines zweiten Trainingsdatensatzes (z.B. D1), das Empfangen eines zweiten Satzes von Hyperparametern H1 und das Trainieren eines neuen mikrotrainierten neuronalen Netzes GS+1, basierend auf dem neuronalen Netz Gs. Während einer ersten Mikrotrainingssitzung wird das neuronale Netz G1 aus dem neuronalen Netz Go erzeugt. In einer Ausführungsform können zusätzliche Trainingsmuster zu nachfolgenden zweiten Trainingsdatensätzen (z.B. D2, D3 usw.) hinzugefügt werden, und kann jede nachfolgende Mikrotrainingssitzung (z.B. Iteration) ein nachfolgendes neuronales Netz G2, G3 usw. erzeugen. Mehrere Mikrotrainingssitzungen können durchgeführt werden, um ein nachfolgendes neuronales Netz GS+n weiter zu verfeinern. Das Mikrotraining behält allgemein die interne Rechenstruktur eines trainierten neuronalen Netzes bei, so dass Vergleichs- und Interpolationsoperationen an den Ausgängen eines ursprünglich trainierten neuronalen Netzes (Gs) und der nachfolgenden mikrotrainierten neuronalen Netze GS+1 durchgeführt werden können. Wie gezeigt, ermöglichen die offenbarten Techniken, dass ein mikrotrainiertes neuronales Netz G3 Ergebnisse liefert, die näher an dem idealen Ergebnis 146 liegen können als ein konventionell trainiertes neuronales Netz Go. Ferner stellen die offenbarten Techniken eine Qualitätsverbesserung des neuronalen Netzes bereit, während sie vorteilhafterweise nur einen bescheidenen zusätzlichen Rechenaufwand über das anfängliche Training hinaus erfordern, da für das Mikrotraining im Vergleich zum herkömmlichen Training um Größenordnungen weniger Trainingsiterationen erforderlich sind.
  • In einem beispielhaften Anwendungsfall können, nachdem das mikrotrainierte neuronale Netz erzeugt ist, bestimmte Trainingsdaten durch das mikrotrainierte neuronale Netz verarbeitet werden, wobei die Ergebnisse dem Betrachter zur Beurteilung angezeigt werden. Wenn die Ergebnisse als akzeptabel bewertet werden, kann der Betrachter eine Eingabe in eine Benutzeroberfläche bereitstellen, die anzeigt, dass die Anforderungen für die Fertigstellung erfüllt wurden. In diesem Beispiel kann der Betrachter visuelle Artefakte bewerten, die mit Anti-Aliasing, Rauschunterdrückung, Beleuchtungseffekten usw. zusammenhängen. Solche visuellen Artefakte können algorithmisch schwer als besser oder schlechter in Bezug auf eine vorherige Trainingssitzung quantifiziert werden, aber der Betrachter kann leicht eine subjektive Bewertung basierend auf der menschlichen Wahrnehmung der Artefakte bereitstellen. Im weiteren Verlauf des Beispiels kann der zweite Trainingsdatensatz so aufgebaut sein, dass er Trainingsdaten enthält, die speziell auf die visuellen Artefakte ausgerichtet sind, auf die das Mikrotraining abzielt. In der speziellen Anwendung von Anti-Aliasing kann ein kleiner Bruchteil von einem Prozent der gesamten Bildschirmpixel Artefakte aufweisen, wie z.B. Artefakte, die mit dünnen, kontrastreichen Linien verbunden sind (z.B. dunkle Telefonkabel gegen einen hellen Himmel in einer Szene im Freien). Bei nur wenigen Pixeln, die von bestimmten Aliasing-Artefakten betroffen sind, können herkömmliche Trainingstechniken für diese wenigen Pixel keine zuverlässigen Ergebnisse von hoher Qualität liefern; diese Aliasing-Artefakte können jedoch für einen menschlichen Betrachter sehr deutlich sichtbar sein und die Bildqualität merklich verringern.
  • 1C veranschaulicht ein Framework 170 eines neuronalen Netzes 170, gemäß einer Ausführungsform. Wie gezeigt, enthält das Framework 170 des neuronalen Netzes einen Diskriminator 178, der dazu konfiguriert ist, ein Referenzmuster 176 mit Referenzbilddaten oder ein synthetisches Muster 186 mit synthetischen Bilddaten zu empfangen. Der Diskriminator 178 erzeugt eine Verlustausgabe, die von einer Parameteranpassungseinheit 180 zur Berechnung von Anpassungen der jeweiligen Parameter des neuronalen Netzes verwendet wird. Im Kontext der folgenden Beschreibung stellt der Verlust ein Konfidenz- bzw. Vertrauensniveau dar, dass es sich bei dem ausgewählten Muster 176 oder 186 um ein Referenzmuster und nicht um ein synthetisches Muster handelt. Die Parameteranpassungseinheit 180 empfängt darüber hinaus Hyperparameter als Eingaben. Das Referenzmuster 176 kann aus einem Trainingsdatensatz 174 ausgewählt werden, der erfasste Bilder aus realen Szenen enthält, die als Referenzmusterbilder 175 verwendet werden. Das Muster 186 wird durch den Generator 184 auf der Grundlage von vorherigem Training und einer latenten Zufallsvariablen 182 und/oder anderen Eingaben synthetisiert. In einer Ausführungsform umfasst der Generator 184 ein erstes neuronales Netz und umfasst der Diskriminator 178 ein zweites neuronales Netz.
  • In einer Ausführungsform ist das Framework des neuronalen Netzes 170 dazu konfiguriert, in einem Modus eines generativen adversen Netzes (GAN) zu arbeiten, wobei der Diskriminator 178 dazu trainiert ist, „echte“ Referenzmusterbilder 175 zu identifizieren, während der Generator 184 dazu trainiert ist, „gefälschte“ Muster 186 zu synthetisieren. In einer Ausführungsform trainiert der Diskriminator 178 auf Mustern 176, wobei jeder Trainingsdurchlauf einen Vorwärtsdurchlauf umfasst, in dem ein Muster 176 ausgewertet wird, und einen Rückwärtsdurchlauf, in dem Gewichte und/oder Vorbelastungen innerhalb des Diskriminators 178 angepasst werden, z.B. unter Verwendung von Rückwärtspropagationstechniken. Ferner trainiert der Generator 184 dann darauf hin, ein Muster 186 zu synthetisieren, das den Diskriminator 178 überlisten kann. Jeder Trainingsdurchlauf umfasst einen Vorwärtsdurchlauf, in dem das Muster 186 synthetisiert wird, und einen Rückwärtsdurchlauf, in dem die Gewichte und/oder Vorbelastungen bzw. Bias-Komponenten innerhalb des Generators 184 angepasst werden (z.B. unter Verwendung von Rückwärtspropagation). In einer Ausführungsform führt die Parameteranpassungseinheit 180 eine Rückwärtspropagation durch, um neue Parameter des neuronalen Netzes (z.B. Gewichte und/oder Vorlast- bzw. Bias-Komponenten) zu berechnen, die aus einem bestimmten Trainingsdurchgang resultieren.
  • In dem Prozess des kontradiktorischen Trainings kann der Diskriminator 178 lernen, besser zu verallgemeinern, während der Generator 184 lernen kann, besser zu synthetisieren. Beide Verbesserungen können getrennt voneinander nützlich sein. In bestimmten Anwendungsfällen, wie z.B. bei der Bildverbesserung (z.B. Superauflösung/Upsampling, Anti-Aliasing, Rauschunterdrückung usw.), kann eine Verfeinerung des Trainings erforderlich sein, um Artefakte in Bildern zu vermeiden, die von dem ursprünglich trainierten neuronalen Netz Go in dem Generator 184 synthetisiert wurden. Eine solche Trainingsverfeinerung kann bereitgestellt werden, wenn das Framework 170 des neuronalen Netzes 170 dazu konfiguriert ist, das in 1A beschriebene Mikrotrainingsverfahren 110 und/oder das in 2A beschriebene Verfahren 200 durchzuführen.
  • In einer Ausführungsform ist das Framework 170 des neuronalen Netzes dazu konfiguriert, in einem Mikrotrainingsmodus zu arbeiten, wobei Beispielbilder 175 so ausgewählt werden, dass sie speziell auf Defizite in dem ursprünglich trainierten neuronalen Netz Go abzielen. In dem Mikrotrainingsmodus erzeugt der Generator 184 ein Muster 186, das über die Benutzeroberfläche 188 auf einem Anzeigegerät angezeigt wird. Das Muster 186 kann neben einem zuvor erzeugten Muster angezeigt werden, und der Betrachter kann feststellen, ob das Muster 186 eine Verbesserung gegenüber dem zuvor erzeugten Muster darstellt. Darüber hinaus kann die Benutzerschnittstelle 188 einen Satz von Mustern 186 auf dem Anzeigegerät anzeigen und eine Eingabe vom Betrachter erhalten, die angibt, ob der Generator 184 während des Mikrotrainings ausreichend trainiert worden ist. In einer Ausführungsform ist das Framework 170 des neuronalen Netzes dazu konfiguriert, das in 1A beschriebene Verfahren 110 und das in 2A beschriebene Verfahren 200 durchzuführen. Das Framework 170 des neuronalen Netzes kann auch konventionelle Trainingstechniken durchführen, einschließlich Techniken für GAN-Training. In einer Ausführungsform kann das konventionelle und/oder GAN-Training den ersten Satz von Hyperparametern verwenden, während das Mikrotraining den zweiten Satz von Hyperparametern verwenden kann.
  • 2A veranschaulicht ein Flussdiagramm eines Verfahrens 200 zur Verbesserung des Trainings neuronaler Netze unter Verwendung von Mikrotraining, gemäß einer Ausführungsform. Obwohl das Verfahren 200 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 200 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm ausgeführt werden. Beispielsweise kann das Verfahren 200 von einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder einem beliebigen Prozessor ausgeführt werden, der in der Lage ist, Operationen zum Auswerten und Trainieren neuronaler Netze durchzuführen. Darüber versteht es sich für den Fachmann, dass jedes System, das das Verfahren 200 ausführt, innerhalb des Rahmens und der Idee der Ausführungsformen der Erfindung liegt. In einer Ausführungsform führt eine Verarbeitungseinheit das Verfahren 200 in Verbindung mit verschiedenen Operationen eines Trainings-Frameworks für neuronale Netze und/oder eines Laufzeitsystems für neuronale Netze aus. In bestimmten Ausführungsformen umfasst die Verarbeitungseinheit eine oder mehrere Instanzen einer Parallelverarbeitungseinheit, wie z.B. die Parallelverarbeitungseinheit 300 von 3. In einer Ausführungsform ist das in 1C beschriebene Framework 170 des neuronalen Netzes zumindest teilweise auf der Verarbeitungseinheit implementiert und dazu konfiguriert, das Verfahren 200 auszuführen.
  • Das Verfahren 200 beginnt mit Schritt 201, in dem die Verarbeitungseinheit einen ersten Datensatz unter Verwendung eines neuronalen Generatornetzes synthetisiert. In einer Ausführungsform umfasst das neuronale Generatornetz das trainierte neuronale Netz des Verfahrens 110. In einer Ausführungsform umfassen die synthetisierten Daten ein oder mehrere Bilder (z.B. Videobilder). Die Bilder können in Übereinstimmung mit allen technisch möglichen Techniken erzeugt sein, einschließlich in der Technik bekannter Techniken für Deep Learning Super-Sampling (DLSS), Super-Resolution/Upsampling und/oder Anti-Aliasing, Entrauschen usw., die von einem neuronalen Netz bereitgestellt werden, das dazu konfiguriert ist, als Generator-Netz zu fungieren.
  • In Schritt 203 wird eine Bestimmung durchgeführt, ob eine Abschlussbedingung erfüllt ist. Es kann jedes technisch mögliche Verfahren durchgeführt werden, um zu bestimmen, dass die Abschlussbedingung erfüllt ist. In einer Ausführungsform werden das/die synthetisierte(n) eine oder mehreren Bilder auf einem Anzeigegerät einem menschlichen Betrachter präsentiert, und ist die Abschlussbedingung erfüllt, wenn die Qualität des einen oder der mehreren Bilder von dem Betrachter als ausreichend gut beurteilt wird. Zum Beispiel kann eine Benutzerschnittstelle, wie beispielsweise die Benutzerschnittstelle 188, eine Eingabe von dem Betrachter erhalten, die anzeigt, dass die Ergebnisse akzeptabel sind und daher die Abschlussbedingung erfüllt ist. In einer Ausführungsform wird die Benutzeroberfläche auf der Verarbeitungseinheit ausgeführt, wobei die Bilder und die Werkzeuge der Benutzeroberfläche auf dem Anzeigegerät dargestellt werden.
  • Falls in Schritt 204 die Abschlussbedingung erfüllt ist, wird das Verfahren 200 beendet. Andernfalls fährt dann, wenn die Abschlussbedingung nicht erfüllt ist, das Verfahren 200 zu Schritt 205 fort. Zum Abschluss von Schritt 204 empfängt die Verarbeitungseinheit eine Meldung, dass die Abschlussbedingung erfüllt ist. In einer Ausführungsform ist die Abschlussbedingung erfüllt, wenn die Benutzerschnittstelle eine Eingabeanzeige empfängt, dass das Mikrotraining ausreichend gute Ergebnisse erzielt hat.
  • In Schritt 205 bereitet die Verarbeitungseinheit den zweiten Trainingsdatensatz vor. In einer Ausführungsform kann das Vorbereiten des zweiten Trainingsdatensatzes den Empfang von Eingaben über die Benutzerschnittstelle beinhalten, um Bilder auszuwählen, die in den zweiten Trainingsdatensatz aufzunehmen sind. Die Bilder können ausgewählt werden, um die Verteilung der Ziel-Ausgangsdaten, die in dem Trainingsdatensatz Ds enthalten sind, der während des Mikrotrainings eines neuronalen Generatornetzes verwendet wird, besser mit Testanforderungen für das neuronale Generatornetz, die durch den Testdatensatz DT repräsentiert werden, abzustimmen. Das Vorbereiten des zweiten Trainingsdatensatzes kann, ohne darauf beschränkt zu sein, ein Erfassen zusätzlicher Trainingsmuster beinhalten, die speziell auf visuelle Artefakte und/oder Bildmerkmale abzielen, die von dem Betrachter identifiziert wurden und durch Mikrotraining zu entfernen sind. Das Vorbereiten des zweiten Trainingsdatensatzes kann ferner, ohne darauf beschränkt zu sein, ein Entfernen von Mustern, die Fehler oder Auslassungen aufweisen, aus dem ersten Trainingsdatensatz, ein erneutes Erfassen von fehlerhaften Mustern und ein Hinzufügen/Modifizieren/Erweitern des ersten Trainingsdatensatzes umfassen, um die Trainingsverteilungen des zweiten Trainingsdatensatzes besser mit dem Testdatensatz abzustimmen. Das Verfahren 200 fährt dann mit der Ausführung des Verfahrens 110 von 1A fort, um ein mikrotrainiertes Generatornetz zu erzeugen. Nach Beendigung des Verfahrens 110 schreitet das Verfahren 200 zu Schritt 207 fort.
  • In Schritt 207 synthetisiert die Verarbeitungseinheit einen zweiten Satz von Daten unter Verwendung des mikrotrainierten Generatornetzes. In einer Ausführungsform umfassen die synthetisierten Daten ein oder mehrere Bilder (z.B. Videobilder). Die Bilder können in Übereinstimmung mit allen technisch möglichen Techniken erzeugt sein, einschließlich in der Technik bekannter Techniken für Deep Learning Super-Sampling (DLSS), Super-Resolution / Up-Sampling und/oder Anti-Aliasing, Entrauschen usw., die von einem neuronalen Netz bereitgestellt werden, das dazu konfiguriert ist, als ein Generatornetz zu fungieren.
  • In Schritt 209 wird eine Bestimmung durchgeführt, ob sich Ergebnisse zwischen dem ersten Datensatz und dem zweiten Datensatz verbessert haben. In einer Ausführungsform werden Bilder, die den ersten Datensatz umfassen, mit entsprechenden Bildern, die den zweiten Datensatz umfassen, auf einer Anzeigevorrichtung von einem menschlichen Betrachter verglichen. Die Qualität der angezeigten Bilder kann von dem Betrachter bewertet werden. Die Bestimmung, dass sich die Ergebnisse verbessert haben, kann z.B. dadurch erfolgen, dass eine Benutzerschnittstelle eine Eingabe von dem Betrachter erhält, die anzeigt, dass sich die Ergebnisse verbessert haben. In einer Ausführungsform wird die Benutzerschnittstelle auf der Verarbeitungseinheit ausgeführt, wobei Bilder und Werkzeuge der Benutzerschnittstelle auf der Anzeigevorrichtung dargestellt werden.
  • Falls sich in Schritt 210 die Ergebnisse verbessert haben, geht das Verfahren zurück zu Schritt 203. Andernfalls schreitet das Verfahren zu Schritt 211 fort. In Schritt 211 passt die Verarbeitungseinheit einen oder mehrere Mikrotraining-Parameter an. Ferner kann die Verarbeitungseinheit das mikrotrainierte neuronale Netz, das zuvor durch das Verfahren 110 erzeugt wurde, verwerfen. Das Anpassen des einen oder der mehreren Mikrotraining-Parameter kann, ohne darauf beschränkt zu sein, ein Hinzufügen von Trainingsmustern (z.B. Bilder) zu dem zweiten Trainingsdatensatz, ein Entfernen von Trainingsmustern aus dem zweiten Trainingsdatensatz und ein Anpassen eines oder mehrerer Hyperparameter, wie z.B. die Lernrate, die Iterationsanzahl usw., umfassen. In einer Ausführungsform wird das Anpassen des einen oder der mehreren Mikrotraining-Parameter von einem Betrachter über eine Benutzeroberfläche durchgeführt. Nach Abschluss von Schritt 211 kehrt das Verfahren zu Schritt 205 zurück.
  • Es können mehrere Durchläufe durch die Verfahrensschritte 203 bis 211 durchgeführt werden, bis die Abschlussbedingung in Schritt 204 erfüllt ist und die Benutzeroberfläche eine Eingabeanzeige erhält, dass das Mikrotraining ausreichend gute Ergebnisse erzielt hat. Während jeder Mikrotrainingssitzung des Verfahrens 110 wird ein nachfolgendes neues neuronales Netz (z.B. G1, G2, G3 usw.) erzeugt. Jedes neue neuronale Netz kann beibehalten oder verworfen werden, je nachdem, ob das neue neuronale Netz die Ergebnisse verbessert.
  • In einer Ausführungsform kann das Verfahren 110 und/oder das Verfahren 200 Transfer-Lernen durchführen, um ein neues neuronales Netz GS+n zu erzeugen, das für eine andere Anwendung optimiert ist als das ursprünglich trainierte neuronale Netz Go. In einer anderen Ausführungsform kann das Verfahren 110 und/oder das Verfahren 200 durchgeführt werden, um die Generalisierung, wie beispielsweise in einem Diskriminatornetz, zu verbessern.
  • Allgemeiner ausgedrückt, stellen die offenbarten Techniken ein schnelles Verfeinerungstraining für bestehende (z.B. vortrainierte) neuronale Netze, eine schnelle Verfeinerung für neue Anwendungen unter Verwendung nur eines kleinen Trainingssatzes, der auf die neue Anwendung abzielt, und einen Mechanismus zum Einbeziehen eines menschlichen Bedieners in die Trainingsschleife bereit.
  • 2B veranschaulicht ein Diagramm 250 durchschnittlicher Unterschiede zwischen Schichten verschiedener mikrotrainierter Netze, gemäß einer Ausführungsform. Wie gezeigt, zeigt die vertikale Achse 252 die Gesamtunterschiede zwischen den Schichtkoeffizienten (Gewichte und Bias-Komponenten) verschiedener mikrotrainierter neuronaler Netze (G1, G2 usw.) an, die aus demselben Elternteil (d.h. dem anfänglich trainierten neuronalen Netz Go) erzeugt wurden, aber mit unterschiedlichem Mikrotraining oder Grad des Mikrotrainings, angezeigt durch die Linien 255, 256, 257 und 258. Die horizontale Achse 254 enthält diskrete Markierungen, die jeweils alternierende Gewichte und Bias-Komponenten für verschiedene neuronale Netzschichten für eine bestimmte neuronale Netztopologie anzeigen. Wie gezeigt, sind Unterschiede in den durch die Linie 255 angezeigten Schichtkoeffizienten allgemein größer als die Unterschiede in den durch die Linie 258 angezeigten Schichtkoeffizienten. Ferner wurde ein neuronales Netz, das der Linie 255 zugeordnet ist, so mikrotrainiert, dass es weiter von dem übergeordneten neuronalen Netz entfernt ist als ein neuronales Netz, das der Zeile 258 zugeordnet ist.
  • Wie in der Gesamtform der Gewichts- und Bias-Differenzen bzw.-Unterschiede für die verschiedenen mikrotrainierten neuronalen Netze dargestellt ist, ändern kleine Iterationsschritte und niedrige Lernraten, die mit dem Mikrotraining verbunden sind, nicht die gesamte Berechnungsstruktur der mikrotrainierten neuronalen Netze. Die Beibehaltung der Berechnungsstruktur zwischen neuronalen Netzen ermöglicht Operationen wie Vergleiche und Interpolationen zwischen einem übergeordneten Netz und verschiedenen Netzen, die durch Mikrotraining erzeugt wurden. Zum Beispiel kann ein neuronales Netz zur Bildschärfung trainiert werden, um die Schärfe eines synthetisierten Ausgangsbilds zu verbessern, jedoch können resultierende Ausgangsbilder als zu scharf bewertet werden; daher kann ein Mittelwert oder eine Interpolation der Gewichte zwischen dem übergeordneten neuronalen Netz und dem neuronalen Netz zur Bildschärfung verwendet werden, um den Grad der Schärfe zu reduzieren. Ein solcher Interpolationsschritt erfordert nur eine Interpolation der Gewichte und Bias-Komponenten, aber kein zusätzliches Training. Allgemeiner ausgedrückt, kann eine rechnerische Zusammensetzung zwischen und unter einem übergeordneten neuronalen Netz und mikrotrainierten Netzen, die aus dem übergeordneten neuronalen (Eltern-) Netz erzeugt wurden, durchgeführt werden.
  • Parallelverarbeitungsarchitektur
  • In 3 ist eine Parallelverarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform dargestellt. In einer Ausführungsform ist die PPU 300 ein Multi-Threaded-Prozessor, der auf einer oder mehreren integrierten Schaltungseinheiten implementiert ist. Die PPU 300 ist eine latenzverbergende Architektur, die dafür ausgelegt ist, viele Threads parallel zu verarbeiten. Ein Thread (z.B. ein Ausführungs-Thread) ist eine Instanziierung eines Satzes von Anweisungen, die zur Ausführung durch die PPU 300 konfiguriert sind. In einer Ausführungsform ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die so konfiguriert ist, dass sie eine Grafik-Rendering-Pipeline für die Verarbeitung dreidimensionaler (3D) Grafikdaten implementiert, um zweidimensionale (2D) Bilddaten für die Anzeige auf einem Anzeigegerät, wie z.B. einer Flüssigkristallanzeige (LCD)-Vorrichtung, zu erzeugen. In anderen Ausführungsformen kann die PPU 300 für die Durchführung von Universalberechnungen verwendet werden. Während ein beispielhafter Parallelprozessor hier zu Veranschaulichungszwecken bereitgestellt ist, wird ausdrücklich darauf hingewiesen, dass ein solcher Prozessor nur zu Veranschaulichungszwecken dargelegt wird und dass jeder beliebige Prozessor zur Ergänzung und/oder zum Ersatz desselben verwendet werden kann.
  • Eine oder mehrere PPUs 300 können dazu konfiguriert sein, Tausende von High Performance Computing (HPC)-, Rechenzentrums- und Machine Learning-Anwendungen zu beschleunigen. Die PPU 300 kann dazu konfiguriert sein, zahlreiche Deep-Learning-Systeme und -Anwendungen, darunter autonome Fahrzeugplattformen, Deep Learning, hochpräzise Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalysen, molekulare Simulationen, Arzneimittelentdeckung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analysen, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und dergleichen, zu beschleunigen.
  • Wie in 3 gezeigt, umfasst die PPU 300 eine Eingabe-/Ausgabe (E/A)-Einheit 305, eine Frontendeinheit 315, eine Planereinheit 320, eine Arbeitsverteilungseinheit 325, einen Hub 330, eine Quer- bzw. Kreuzschiene bzw. Crossbar (Xbar) 370, einen oder mehrere Universalverarbeitungscluster bzw. General Processing Cluster (GPCs) 350 und eine oder mehrere Speicherpartitionseinheiten 380 umfassen. Die PPU 300 kann mit einem Host-Prozessor oder anderen PPUs 300 über eine oder mehrere Hochgeschwindigkeits-NVLink 310-Verbindungen verbunden sein. Die PPU 300 kann mit einem Host-Prozessor oder anderen Peripheriegeräten über einen Interconnect bzw. eine Zwischenverbindung 302 verbunden sein. Die PPU 300 kann auch mit einem lokalen Speicher 304 verbunden sein, der eine Reihe von Speichergeräten umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von dynamischen Direktzugriffsspeicher (DRAM)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als ein Speicher-Subsystem mit hoher Bandbreite bzw. High-Bandwidth Memory (HBM)-Subsystem konfiguriert sein, wobei mehrere DRAM-Chips in jeder Vorrichtung gestapelt sind.
  • Die NVLink 310-Verbindung ermöglicht es Systemen, zu skalieren und eine oder mehrere PPUs 300 kombiniert mit einer oder mehreren CPUs zu enthalten, unterstützt Cache-Kohärenz zwischen den PPUs 300 und den CPUs sowie CPU-Mastering. Daten und/oder Befehle können über den NVLink 310 durch den Hub 330 zu/von anderen Einheiten der PPU 300, wie z.B. einer oder mehreren Kopier-Engines, einem Video-Encoder, einem Video-Decoder, einer Leistungsverwaltungseinheit usw. (nicht explizit dargestellt), übertragen werden. Der NVLink 310 wird in Verbindung mit 5B näher beschrieben.
  • Die E/A-Einheit 305 ist dazu konfiguriert, Kommunikationen (z.B. Befehle, Daten usw.) von einem Host-Prozessor (nicht dargestellt) über die Zwischenverbindung 302 zu senden und zu empfangen. Die E/A-Einheit 305 kann mit dem Host-Prozessor direkt über die Verbindung 302 oder über ein oder mehrere Zwischenvorrichtungen wie z.B. eine Speicherbrücke kommunizieren. In einer Ausführungsform kann die E/A-Einheit 305 mit einem oder mehreren anderen Prozessoren, wie einer oder mehreren PPUs 300, über die Verbindung 302 kommunizieren. In einer Ausführungsform implementiert die E/A-Einheit 305 eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle für die Kommunikation über einen PCIe-Bus und ist die Verbindung 302 ein PCIe-Bus. In alternativen Ausführungsformen kann die E/A-Einheit 305 andere Arten von bekannten Schnittstellen für die Kommunikation mit externen Geräten implementieren.
  • Die E/A-Einheit 305 dekodiert Pakete, die über die Verbindung 302 empfangen werden. In einer Ausführungsform repräsentieren die Pakete Befehle, die dazu konfiguriert sind, die PPU 300 zu veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 305 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 300, wie es die Befehle vorgeben. Einige Befehle können z.B. an die Frontendeinheit 315 übertragen werden. Andere Befehle können an den Hub 330 oder andere Einheiten der PPU 300, wie z.B. eine oder mehrere Kopier-Engines, einen Video-Encoder, einen Video-Decoder, eine Leistungsverwaltungs-einheit usw. (nicht explizit dargestellt), übertragen werden. Mit anderen Worten ist die E/A-Einheit 305 dazu konfiguriert, die Kommunikation zwischen und unter den verschiedenen logischen Einheiten der PPU 300 zu leiten.
  • In einer Ausführungsform kodiert ein von dem Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einen Puffer, der der PPU 300 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann aus mehreren Befehlen und Daten bestehen, die durch diese Anweisungen zu verarbeiten sind. Der Puffer ist ein Bereich in einem Speicher, auf den sowohl der Host-Prozessor als auch die PPU 300 zugreifen (z.B. lesen/schreiben) können. Beispielsweise kann die E/A-Einheit 305 dazu konfiguriert sein, über Speicheranforderungen, die über die Verbindung 302 übertragen werden, auf den Puffer in einem mit der Verbindung 302 verbundenen Systemspeicher zuzugreifen. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger auf den Anfang des Befehlsstroms an die PPU 300. Die Frontendeinheit 315 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontendeinheit 315 verwaltet den einen oder die mehreren Ströme, liest Befehle aus den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 300 weiter.
  • Die Frontendeinheit 315 ist mit einer Planereinheit 320 gekoppelt, die die verschiedenen GPCs 350 dazu konfiguriert, die von dem einen oder den mehreren Streams definierten Aufgaben zu verarbeiten. Die Planereinheit 320 ist dazu konfiguriert, Zustandsinformationen in Bezug auf die verschiedenen, von der Planereinheit 320 verwalteten Aufgaben nachzuverfolgen. Der Zustand kann anzeigen, welchem GPC 350 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, eine Prioritätsstufe, die mit der Aufgabe verbunden ist, und so weiter. Die Planereinheit 320 verwaltet die Ausführung einer Vielzahl von Aufgaben auf dem einen oder mehreren GPCs 350.
  • Die Planereinheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die dazu konfiguriert ist, Aufgaben zur Ausführung auf den GPCs 350 zu verteilen. Die Arbeitsverteilungseinheit 325 kann eine Anzahl von geplanten Aufgaben nachverfolgen, die von der Planereinheit 320 empfangen wurden. In einer Ausführungsform verwaltet die Arbeitsverteilungseinheit 325 einen Vorrat bzw. Pool ausstehender Aufgaben und einen Vorrat bzw. Pool aktiver Aufgaben für jeden der GPCs 350. Der Pool ausstehender Aufgaben kann eine Anzahl von Slots (z.B. 32 Slots) umfassen, die Aufgaben enthalten, die zur Bearbeitung durch einen bestimmten GPC 350 zugewiesen sind. Der Pool aktiver Aufgaben kann eine Anzahl von Slots (z.B. 4 Slots) für Aufgaben enthalten, die aktiv von den GPCs 350 bearbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe beendet, wird diese Aufgabe aus dem Pool aktiver Aufgaben für den GPC 350 entfernt und wird eine der anderen Aufgaben aus dem Pool ausstehender Aufgaben ausgewählt und für die Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 350 im Leerlauf war, z.B. während des Wartens auf die Auflösung einer Datenabhängigkeit, dann kann die aktive Aufgabe aus dem GPC 350 entfernt und in den Pool ausstehender Aufgaben zurückgeführt werden, während eine andere Aufgabe in dem Pool ausstehender Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant wird.
  • Die Arbeitsverteilungseinheit 325 kommuniziert über die XBar 370 mit dem einen oder den mehreren GPCs 350. Die XBar 370 ist ein Zwischenverbindungsnetzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. Beispielsweise kann die XBar 370 so konfiguriert sein, dass sie die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 koppelt. Obwohl nicht explizit dargestellt, können auch eine oder mehrere andere Einheiten der PPU 300 über den Hub 330 mit der XBar 370 verbunden sein.
  • Die Aufgaben werden von der Planereinheit 320 verwaltet und von der Arbeitsverteilungseinheit 325 an einen GPC 350 weitergeleitet. Der GPC 350 ist dazu konfiguriert, die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 verbraucht, über die XBar 370 an einen anderen GPC 350 weitergeleitet oder im Speicher 304 abgelegt werden. Die Ergebnisse können über die Speicherpartitionseinheiten 380, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 304 implementieren, in den Speicher 304 geschrieben werden. Die Ergebnisse können über den NVLink 310 an eine andere PPU 300 oder CPU übertragen werden. In einer Ausführungsform umfasst die PPU 300 eine Anzahl U von Speicherpartitionseinheiten 380, die der Anzahl der separaten und unterschiedlichen Speichervorrichtungen des mit der PPU 300 gekoppelten Speichers 304 entspricht. Eine Speicherpartitionseinheit 380 wird weiter unten in Verbindung mit 4B genauer beschrieben.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 300 zu planen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 300 ausgeführt und stellt die PPU 300 Isolierung, Dienstgüte (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) generieren, die den Treiberkern veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu generieren. Der Treiberkern gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von zusammenhängenden Threads umfassen, die hierin als ein Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 zusammengehörige Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Vielzahl von Threads beziehen, die Anweisungen zur Ausführung der Aufgabe enthalten und Daten über gemeinsam genutzten Speicher austauschen können. Threads und kooperierende Threads werden in Verbindung mit 5A ausführlicher beschrieben.
  • 4A veranschaulicht einen GPC 350 der PPU 300 aus 3, gemäß einer Ausführungsform. Wie in 4A gezeigt, umfasst jeder GPC 350 eine Anzahl von Hardwareeinheiten zur Verarbeitung von Aufgaben. In einer Ausführungsform umfasst jeder GPC 350 einen Pipeline-Verwalter 410, eine Vorrasterungsoperations- bzw. Pre-Raster Operations Unit (PROP) 415, eine Raster-Engine 425, eine Arbeitsverteilungs-Kreuzschiene bzw. -Crossbar (WDX) 480, eine Speicherverwaltungseinheit bzw. Memory Management Unit (MMU) 490 und einen oder mehrere Datenverarbeitungscluster bzw. Data Processing Cluster (DPCs) 420. Es versteht sich von selbst, dass der GPC 350 aus 4A anstelle der in 4A gezeigten Einheiten oder zusätzlich zu diesen weitere Hardwareeinheiten enthalten kann.
  • In einer Ausführungsform wird der Betrieb des GPC 350 durch den Pipeline-Verwalter 410 gesteuert. Der Pipeline-Verwalter 410 verwaltet die Konfiguration des einen oder der mehreren DPCs 420 zur Verarbeitung von Aufgaben, die dem GPC 350 zugewiesen sind. In einer Ausführungsform kann der Pipeline-Verwalter 410 mindestens einen der einen oder mehreren DPCs 420 dazu konfigurieren, mindestens einen Teil einer Grafik-Rendering-Pipeline zu implementieren. Zum Beispiel kann ein DPC 420 dazu konfiguriert sein, ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipeline-Verwalter 410 kann auch dazu konfiguriert sein, von der Arbeitsverteilungseinheit 325 empfangene Pakete an die entsprechenden logischen Einheiten innerhalb des GPC 350 weiterzuleiten. Beispielsweise können einige Pakete an Hardware-Einheiten mit fester Funktion in der PROP 415 und/oder in der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die DPCs 420 zur Verarbeitung durch die Primitiv-Engine 435 oder den SM 440 weitergeleitet werden können. In einer Ausführungsform kann der Pipeline-Verwalter 410 mindestens einen der einen oder mehreren DPCs 420 dazu konfigurieren, ein neuronales Netzmodell und/oder eine Rechenpipeline zu implementieren.
  • Die PROP-Einheit 415 ist dazu konfiguriert, die von der Raster-Engine 425 und den DPCs 420 erzeugten Daten an eine Raster Operations (ROP)-Einheit weiterzuleiten, die in Verbindung mit 4B näher beschrieben wird. Die PROP-Einheit 415 kann darüber hinaus dazu konfiguriert sein, Optimierungen für die Farbmischung durchzuführen, Pixeldaten zu organisieren, Adressübersetzungen vorzunehmen und dergleichen.
  • Die Raster-Engine 425 enthält eine Reihe von Hardware-Einheiten mit fester Funktion, die zur Durchführung verschiedener Rasteroperationen konfiguriert sind. In einer Ausführungsform umfasst die Raster-Engine 425 eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine und eine Kachelkoaleszenz- bzw. Tile Coalescing-Engine. Die Setup-Engine empfängt transformierte Vertices bzw. Scheitelpunkte und erzeugt Ebenengleichungen, die mit dem durch die Vertices definierten geometrischen Primitiv verbunden sind. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x,y-Abdeckungsmaske für eine Kachel) für das Primitiv zu erzeugen. Die Ausgabe der Grobraster-Engine wird an die Culling-Engine weitergeleitet, wo Fragmente, die mit dem Primitiv verbunden sind und einen z-Test nicht bestehen, aussortiert werden, und an eine Clipping-Engine weitergeleitet, wo Fragmente, die außerhalb eines Sichtkegels liegen, abgeschnitten werden. Die Fragmente, die das Beschneiden und Aussortieren überstehen, können an die Feinraster-Engine weitergeleitet werden, um Attribute für die Pixelfragmente auf der Grundlage der von der Setup-Engine erzeugten Ebenengleichungen zu generieren. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die z.B. von einem in einem DPC 420 implementierten Fragment-Shader verarbeitet werden.
  • Jeder in dem GPC 350 enthaltene DPC 420 umfasst einen M-Pipe-Controller (MPC) 430, eine Primitiv-Engine 435 und einen oder mehrere SMs 440. Der MPC 430 steuert den Betrieb des DPC 420 und leitet die von dem Pipeline-Verwalter 410 empfangenen Pakete an die entsprechenden Einheiten in dem DPC 420 weiter. Beispielsweise können Pakete, die einem Vertex zugeordnet sind, an die Primitiv-Engine 435 weitergeleitet werden, die dazu konfiguriert ist, Vertex-Attribute, die dem Vertex zugeordnet sind, aus dem Speicher 304 abzurufen. Demgegenüber können Pakete, die mit einem Shader-Programm verbunden sind, an den SM 440 übertragen werden.
  • Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der für die Verarbeitung von Aufgaben konfiguriert ist, die durch eine Anzahl von Threads repräsentiert werden. Jeder SM 440 ist Multi-Thread-fähig und dazu konfiguriert, eine Vielzahl von Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig auszuführen. In einer Ausführungsform implementiert der SM 440 eine SIMD (Single-Instruction, Multiple-Data)-Architektur, bei der jeder Thread in einer Gruppe von Threads (z.B. ein Warp) dazu konfiguriert ist, einen anderen Satz von Daten auf der Grundlage desselben Satzes von Anweisungen zu verarbeiten. Alle Threads in der Gruppe von Threads führen die gleichen Anweisungen aus. In einer anderen Ausführungsform implementiert der SM 440 eine SIMT (Single-Instruction, Multiple Thread)-Architektur, bei der jeder Thread in einer Gruppe von Threads dazu konfiguriert ist, einen anderen Datensatz auf der Grundlage desselben Befehlssatzes zu verarbeiten, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung divergieren dürfen. In einer Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungsstatus für jeden Warp beibehalten, wodurch Gleichzeitigkeit zwischen Warps und serielle Ausführung innerhalb von Warps ermöglicht wird, wenn Threads innerhalb des Warps divergieren. In einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungsstatus für jeden einzelnen Thread beibehalten, wodurch gleiche Gleichzeitigkeit zwischen allen Threads innerhalb und zwischen Warps ermöglicht wird. Wenn der Ausführungsstatus für jeden einzelnen Thread beibehalten wird, können Threads, die dieselben Anweisungen ausführen, zusammengeführt und parallel ausgeführt werden, um maximale Effizienz zu erzielen. Der SM 440 wird weiter unten in Verbindung mit 5A genauer beschrieben.
  • Die MMU 490 repräsentiert stellt eine Schnittstelle zwischen dem GPC 350 und der Speicherpartitionseinheit 380. Die MMU 490 kann die Übersetzung von virtuellen Adressen in physische Adressen, Speicherschutz und eine Arbitrierung von Speicheranforderungen bereitstellen. In einer Ausführungsform stellt die MMU 490 einen oder mehrere Übersetzungs-Lookaside-Puffer (TLBs) zur Durchführung der Übersetzung virtueller Adressen in physische Adressen in dem Speicher 304 bereit.
  • 4B zeigt eine Speicherpartitionseinheit 380 der PPU 300 aus 3, gemäß einer Ausführungsform. Wie in 4B gezeigt, umfasst die Speicherpartitionseinheit 380 eine Raster Operations (ROP)-Einheit 450, einen Level Two (L2)-Cache 460 und eine Speicherschnittstelle 470. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeitsdatenübertragung implementieren. In einer Ausführungsform enthält die PPU 300 U Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Paar von Speicherpartitionseinheiten 380, wobei jedes Paar von Speicherpartitionseinheiten 380 mit einer entsprechenden Speichereinrichtung des Speichers 304 verbunden ist. Beispielsweise kann die PPU 300 mit bis zu Y Speichervorrichtungen, wie z.B. Speicherstapeln mit hoher Bandbreite oder Grafikspeicher mit doppelter Datenrate, Version 5, synchronem dynamischem Direktzugriffsspeicher oder anderen Arten von dauerhaftem Speicher, verbunden sein.
  • In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und ist Y gleich der Hälfte von U. In einer Ausführungsform befinden sich die HBM2-Speicherstapel auf demselben physischen Gehäuse wie die PPU 300, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Energie- und Flächeneinsparungen ermöglicht. In einer Ausführungsform umfasst jeder HBM2-Stapel vier Speicherchips und ist Y gleich 4, wobei der HBM2-Stapel zwei 128-Bit-Kanäle pro Chip für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit umfasst.
  • In einer Ausführungsform unterstützt der Speicher 304 Single-Error Correcting Double-Error Detecting (SECDED) Error Correction Code (ECC) zum Schutz der Daten. ECC bietet eine höhere Zuverlässigkeit für Rechenanwendungen, die empfindlich auf Datenbeschädigung reagieren. Zuverlässigkeit ist besonders wichtig in Rechenumgebungen mit großen Clustern, in denen PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen über längere Zeiträume ausführen. In einer Ausführungsform implementiert die PPU 300 eine mehrstufige Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionierungseinheit 380 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für den CPU- und PPU 300-Speicher bereitzustellen und so die gemeinsame Nutzung von Daten zwischen virtuellen Speichersystemen zu ermöglichen. In einer Ausführungsform wird die Häufigkeit von Zugriffen einer PPU 300 auf Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU 300 verschoben werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt der NVLink 310 Adressübersetzungsdienste, die es der PPU 300 ermöglichen, direkt auf die Seitentabellen einer CPU zuzugreifen und der PPU 300 vollen Zugriff auf den CPU-Speicher zu ermöglichen.
  • In einer Ausführungsform übertragen die Kopie-Engines Daten zwischen mehreren PPUs 300 oder zwischen PPUs 300 und CPUs. Die Kopier-Engines können Seitenfehler für Adressen erzeugen, die nicht in die Seitentabellen abgebildet sind. Die Speicherpartitionseinheit 380 kann dann die Seitenfehler bedienen und die Adressen in die Seitentabelle abbilden, woraufhin die Kopier-Engine die Übertragung durchführen kann. In einem herkömmlichen System wird der Speicher für mehrere Kopiervorgänge zwischen mehreren Prozessoren gepinnt (z.B. ist nicht auslagerbar), wodurch der verfügbare Speicher erheblich reduziert wird. Mit Hardware Page Faulting können Adressen an die Kopier-Engines weitergegeben werden, ohne dass man sich Gedanken darüber machen muss, ob die Speicherseiten resident sind, und ist der Kopierprozess transparent.
  • Daten aus dem Speicher 304 oder einem anderen Systemspeicher können von der Speicherpartitionseinheit 380 abgerufen und in dem L2-Cache 460 gespeichert werden, der sich auf dem Chip befindet und von den verschiedenen GPCs 350 gemeinsam genutzt wird. Wie gezeigt, enthält jede Speicherpartitionseinheit 380 einen Teil des L2-Cache 460, der mit einem entsprechenden Speicher 304 verbunden ist. Caches unterer Ebenen können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert sein. Zum Beispiel kann jeder der SMs 440 einen Cache der Ebene eins (L1) implementieren. Der L1-Cache ist ein privater Speicher, der für einen bestimmten SM 440 dediziert ist. Daten aus dem L2-Cache 460 können abgerufen und in jedem der L1-Caches zur Verarbeitung in den Funktionseinheiten der SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und der XBar 370 gekoppelt.
  • Die ROP-Einheit 450 führt Grafikrasteroperationen durch, die sich auf die Pixelfarbe beziehen, wie z.B. Farbkomprimierung, Pixelüberblendung und dergleichen. Die ROP-Einheit 450 implementiert darüber hinaus eine Tiefenprüfung in Verbindung mit der Raster-Engine 425 und empfängt eine Tiefe für eine Abtaststelle, die einem Pixelfragment zugeordnet ist, von der Culling-Engine der Raster-Engine 425. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine dem Fragment zugeordnete Abtastposition getestet. Wenn das Fragment den Tiefentest für die Abtastposition besteht, aktualisiert die ROP-Einheit 450 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 425. Es wird deutlich, dass die Anzahl der Speicherpartitionseinheiten 380 von der Anzahl der GPCs 350 abweichen kann und daher jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt sein kann. Die ROP-Einheit 450 nachverfolgt die von den verschiedenen GPCs 350 empfangenen Pakete und bestimmt, an welchen GPC 350 ein von der ROP-Einheit 450 erzeugtes Ergebnis über die Xbar 370 weiterzuleiten ist. Obwohl die ROP-Einheit 450 in 4B innerhalb der Speicherpartitionseinheit 380 enthalten ist, kann sich die ROP-Einheit 450 in anderen Ausführungsformen auch außerhalb der Speicherpartitionseinheit 380 befinden. Zum Beispiel kann sich die ROP-Einheit 450 in dem GPC 350 oder einer anderen Einheit befinden.
  • 5A veranschaulicht den Streaming-Multiprozessor 440 aus 4A, gemäß einer Ausführungsform. Wie in 5A gezeigt, umfasst der SM 440 einen Anweisungscache 505, eine oder mehrere Planereinheiten 510, eine Registerdatei 520, einen oder mehrere Verarbeitungskerne 550, eine oder mehrere Spezialfunktionseinheiten bzw. Special Function Units (SFUs) 552, eine oder mehrere Lade-/Speicher-Einheiten bzw. Load/Store Units (LSUs) 554, ein Verbindungsnetzwerk 580, und einen gemeinsam genutzten Speicher/L1-Cache 570.
  • Wie oben beschrieben, teilt die Arbeitsverteilungseinheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300 zu. Die Aufgaben werden einem bestimmten DPC 420 innerhalb eines GPC 350 zugewiesen und dann, wenn die Aufgabe mit einem Shader-Programm verbunden ist, kann die Aufgabe einem SM 440 zugewiesen werden. Die Planereinheit 510 empfängt die Aufgaben von der Arbeitsverteilungseinheit 325 und verwaltet die Anweisungsplanung für einen oder mehrere Thread-Blöcke, die dem SM 440 zugewiesen sind. Die Planereinheit 510 plant Thread-Blöcke für die Ausführung als Warps von parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugewiesen ist. In einer Ausführungsform führt jeder Warp 32 Threads aus. Die Planereinheit 510 kann eine Vielzahl verschiedener Thread-Blöcke verwalten, indem sie die Warps den verschiedenen Thread-Blöcken zuweist und dann Anweisungen aus der Vielzahl verschiedener kooperativer Gruppen an die verschiedenen Funktionseinheiten (z.B. Kerne 550, SFUs 552 und LSUs 554) während jedes Taktzyklus versendet.
  • Kooperative Gruppen bzw. Cooperative Groups ist ein Programmiermodell zum Organisieren von Gruppen kommunizierender Threads, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit der Threads kommunizieren, was den Ausdruck reichhaltigerer, effizienterer paralleler Dekompositionen ermöglicht. Die APIs für den kooperativen Start unterstützen die Synchronisierung zwischen Thread-Blöcken für die Ausführung paralleler Algorithmen. Herkömmliche Programmiermodelle bieten ein einziges, einfaches Konstrukt für die Synchronisierung kooperierender Threads: eine Sperre über alle Threads eines Thread-Blocks (z.B. die Funktion syncthreads( )). Programmierer möchten jedoch oft Gruppen von Threads mit einer kleineren Granularität als Thread-Blöcke definieren und innerhalb der definierten Gruppen synchronisieren, um eine höhere Leistung, Designflexibilität und Software-Wiederverwendung in Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Kooperative Gruppen ermöglicht es Programmierern, Gruppen von Threads explizit auf Sub-Block- (z.B. so klein wie ein einzelner Thread) und Multi-Block-Granularität zu definieren und kollektive Operationen wie die Synchronisation auf den Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Komposition über Software-Grenzen hinweg, so dass Bibliotheken und Utility-Funktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. Die Primitive für kooperative Gruppen ermöglichen neue Muster kooperativer Parallelität, einschließlich Producer-Consumer-Parallelität, opportunistischer Parallelität und globaler Synchronisierung über ein ganzes Gitter von Thread-Blöcken hinweg.
  • Eine Versendeeinheit 515 ist dazu konfiguriert, Anweisungen an eine oder mehrere der Funktionseinheiten zu übermitteln. In der Ausführungsform umfasst die Planereinheit 510 zwei Versendeeinheiten 515, die es ermöglichen, zwei verschiedene Anweisungen aus demselben Warp während jedes Taktzyklus zu versenden. In alternativen Ausführungsformen kann jede Planereinheit 510 eine einzelne Versendeeinheit 515 oder zusätzliche Versendeeinheiten 515 enthalten.
  • Jeder SM 440 enthält eine Registerdatei 520, die einen Satz von Registern für die Funktionseinheiten des SM 440 bereitstellt. In einer Ausführungsform ist die Registerdatei 520 zwischen den einzelnen Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein eigener Teil der Registerdatei 520 zugewiesen ist. In einer anderen Ausführungsform ist die Registerdatei 520 zwischen den verschiedenen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 stellt Zwischenspeicher für Operanden, die mit den Datenpfaden der Funktionseinheiten verbunden sind, bereit.
  • Jeder SM 440 umfasst L Prozessorkerne 550. In einer Ausführungsform umfasst der SM 440 eine große Anzahl (z.B. 128 usw.) von unterschiedlichen Verarbeitungskernen 550. Jeder Kern 550 kann eine voll pipelinierte, einfachgenaue, doppeltgenaue und/oder gemischte genaue Verarbeitungseinheit enthalten, die eine Gleitkomma-Arithmetik-Logikeinheit und eine Ganzzahl-Arithmetik-Logikeinheit umfasst. In einer Ausführungsform implementieren die Arithmetik-Gleitkomma-Logikeinheiten den Standard IEEE 754-2008 für Gleitkomma-Arithmetik. In einer Ausführungsform umfassen die Kerne 550 64 Gleitkomma-Kerne mit einfacher Genauigkeit (32 Bit), 64 Ganzzahl-Kerne, 32 Gleitkomma-Kerne mit doppelter Genauigkeit (64 Bit) und 8 Tensor-Kerne.
  • Tensor-Kerne sind zur Durchführung von Matrixoperationen konfiguriert, und, in einer Ausführungsform, sind ein oder mehrere Tensor-Kerne in den Kernen 550 enthalten. Insbesondere sind die Tensorkerne dazu konfiguriert, Deep-Learning-Matrixarithmetik durchzuführen, wie z.B. Faltungsoperationen für das Training und die Inferenzierung neuronaler Netze. In einer Ausführungsform arbeitet jeder Tensorkern mit einer 4x4-Matrix und führt eine Matrixmultiplikations- und Akkumulationsoperation D=Ax B+C durch, wobei A, B, C und D 4x4-Matrizen sind.
  • In einer Ausführungsform sind die Matrix-Multiplikationseingänge A und B 16-Bit-Gleitkommamatrizen, während die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkommamatrizen sein können. Tensorkerne arbeiten mit 16-Bit-Gleitkomma-Eingangsdaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Gleitkommamultiplikation erfordert 64 Operationen und resultiert in einem Produkt mit voller Genauigkeit, das dann mit 32-Bit-Gleitkommaaddition mit den anderen Zwischenprodukten für eine 4x4x4-Matrixmultiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die aus diesen kleineren Elementen aufgebaut sind. Eine API, wie z.B. die CUDA 9 C++ API, stellt spezialisierte Matrix-Lade-, Matrix-Multiplikations- und Akkumulations- und Matrix-Speicher-Operationen zur Verfügung, um Tensorkerne effizient von einem CUDA-C++ Programm aus zu nutzen. Auf der CUDA-Ebene geht die Schnittstelle auf Warp-Ebene von Matrizen der Größe 16x16 aus, die sich über alle 32 Threads des Warps erstrecken.
  • Jeder SM 440 umfasst darüber hinaus M SFUs 552, die spezielle Funktionen (z.B. Attributauswertung, reziproke Quadratwurzel und dergleichen) durchführen. In einer Ausführungsform können die SFUs 552 eine Baumdurchlaufeinheit enthalten, die zum Durchlaufen einer hierarchischen Baumdatenstruktur konfiguriert ist. In einer Ausführungsform können die SFUs 552 eine Textureinheit enthalten, die dazu konfiguriert ist, Texturabbildungsfilterungsoperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten dazu konfiguriert, Texturkarten (z.B. eine 2D-Anordnung von Texeln) aus dem Speicher 304 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in von dem SM 440 ausgeführten Shader-Programmen zu erzeugen. In einer Ausführungsform werden die Texturkarten im gemeinsam genutzten Speicher/L1-Cache 470 gespeichert. Die Textureinheiten implementieren Texturoperationen, wie z.B. Filteroperationen unter Verwendung von Mip-Maps (z.B. Texturkarten mit unterschiedlichen Detailstufen). In einer Ausführungsform umfasst jeder SM 340 zwei Textureinheiten.
  • Jeder SM 440 umfasst darüber hinaus N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache 570 und der Registerdatei 520 implementieren. Jeder SM 440 umfasst ein Interconnect- bzw. Verbindungsnetzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520 und dem gemeinsam genutzten Speicher/L1-Cache 570 verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk 580 eine Kreuzschiene, die dazu konfiguriert sein kann, dass jede der Funktionseinheiten mit jedem der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und Speicherplätzen in dem gemeinsam genutzten Speicher/L1-Cache 570 zu verbinden.
  • Der gemeinsam genutzte Speicher/L1-Cache 570 ist eine Anordnung bzw. ein Array von On-Chip-Speicher, der die Datenspeicherung und Kommunikation zwischen dem SM 440 und der Primitiv-Engine 435 sowie zwischen Threads in dem SM 440 ermöglicht. In einer Ausführungsform umfasst der gemeinsam genutzte Speicher/L1-Cache 570 128 KB Speicherkapazität und befindet sich in dem Pfad von dem SM 440 zu der Speicherpartitionseinheit 380. Der gemeinsam genutzte Speicher/L1-Cache 570 kann zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet werden. Einer oder mehrere des gemeinsam genutzten Speichers/L1-Cache 570, des L2-Cache 460 und des Speichers 304 sind Sicherungsspeicher.
  • Ein Kombinieren von Daten-Cache und Funktionalität gemeinsam genutzten Speichers in einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Zwischenspeicher für Programme nutzbar, die keinen gemeinsam genutzten Speicher verwenden. Falls z.B. gemeinsam genutzter Speicher dazu konfiguriert ist, die Hälfte der Kapazität zu nutzen, können Textur- und Lade-/Speicher-Operationen die verbleibende Kapazität nutzen. Eine Integration in den gemeinsam genutzten Speicher/L1-Cache 570 ermöglicht es dem gemeinsam genutzten Speicher/L1-Cache 570, als eine durchsatzstarke Leitung für Streaming-Daten zu fungieren und gleichzeitig einen Zugriff mit hoher Bandbreite und niedriger Latenz auf häufig wiederverwendete Daten bereitzustellen.
  • Bei einer Konfiguration für allgemeine parallele Berechnungen kann im Vergleich zur Grafikverarbeitung eine einfachere Konfiguration verwendet werden. Insbesondere werden die in 3 gezeigten Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein viel einfacheres Programmiermodell entsteht. In der Konfiguration für allgemeine parallele Berechnungen weist die Arbeitsverteilungseinheit 325 Blöcke von Threads zu und verteilt diese direkt an die DPCs 420. Die Threads in einem Block führen dasselbe Programm aus, wobei eine eindeutige Thread-ID in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 440 zur Ausführung des Programms und zur Durchführung von Berechnungen, der gemeinsam genutzte Speicher/L1-Cache 570 zur Kommunikation zwischen den Threads und die LSU 554 zum Lesen und Schreiben des globalen Speichers über den gemeinsam genutzten Speicher/L1-Cache 570 und die Speicherpartitionseinheit 380 verwendet werden. Bei einer Konfiguration für allgemeine parallele Berechnungen, kann der SM 440 auch Befehle schreiben, die die Planereinheit 320 dazu verwenden kann, neue Arbeit auf den DPCs 420 zu starten.
  • Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z.B. einem drahtlosen Handheld-Gerät), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einem Fahrzeug, einer kopfmontierten Anzeige bzw. Head Mounted Display, einem elektronischen Handheld-Gerät und dergleichen enthalten sein. In einer Ausführungsform ist die PPU 300 auf einem einzigen Halbleitersubstrat verkörpert. In einer anderen Ausführungsform ist die PPU 300 in einem System-on-a-Chip (SoC) zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs 300, dem Speicher 304, einer RISC (Reduced Instruction Set Computer)-CPU, einer MMU (Memory Management Unit), einem DAC (Digital-Analog-Wandler) und dergleichen, enthalten.
  • In einer Ausführungsform kann die PPU 300 auf einer Grafikkarte enthalten sein, die ein oder mehrere Speichervorrichtungen enthält. Die Grafikkarte kann dazu konfiguriert sein, mit einem PCIe-Steckplatz auf einer Hauptplatine eines Desktop-Computers verbunden werden zu können. In einer weiteren Ausführungsform kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der im Chipsatz der Hauptplatine enthalten ist.
  • Beispielhaftes Rechensystem
  • Systeme mit mehreren GPUs und CPUs werden in einer Vielzahl von Branchen eingesetzt, da Entwickler mehr Parallelität in Anwendungen wie der künstlichen Intelligenz aufdecken und nutzen. Leistungsstarke GPU-beschleunigte Systeme mit zehn bis vielen tausend Rechenknoten werden in Rechenzentren, Forschungseinrichtungen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Da die Anzahl der Verarbeitungsgeräte innerhalb der Hochleistungssysteme steigt, müssen die Kommunikations- und Datenübertragungsmechanismen skalieren, um die erhöhte Bandbreite zu unterstützen.
  • 5B ist ein konzeptionelles Diagramm eines Verarbeitungssystems 500, das unter Verwendung der PPU 300 aus 3 implementiert ist, gemäß einer Ausführungsform. Das beispielhafte System 565 kann so konfiguriert sein, dass es das in 1A gezeigte Verfahren 110 und/oder das in 2A gezeigte Verfahren 200 implementiert. Das Verarbeitungssystem 500 umfasst eine CPU 530, einen Switch 510 und mehrere PPUs 300 sowie entsprechende Speicher 304. Der NVLink 310 stellt Hochgeschwindigkeitskommunikationsverbindungen zwischen jeder der PPUs 300 bereit. Obwohl in 5B eine bestimmte Anzahl von NVLink 310- und Interconnect 302-Verbindungen dargestellt ist, kann die Anzahl der Verbindungen zu jeder PPU 300 und der CPU 530 variieren. Der Switch 510 bildet die Schnittstelle zwischen der Verbindung 302 und der CPU 530. Die PPUs 300, die Speicher 304 und die NVLinks 310 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer Ausführungsform unterstützt der Switch 510 zwei oder mehr Protokolle, um zwischen verschiedenen Verbindungen und/oder Links zu vermitteln.
  • In einer anderen Ausführungsform (nicht dargestellt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und bildet der Schalter 510 die Schnittstelle zwischen der Verbindung 302 und jeder der PPUs 300. Die PPUs 300, die Speicher 304 und die Verbindung 302 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer weiteren Ausführungsform (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und bildet der Switch 510 eine Schnittstelle zwischen jeder der PPUs 300 unter Verwendung des NVLink 310, um eine oder mehrere Hochgeschwindigkeitskommunikationsverbindungen zwischen den PPUs 300 bereitzustellen. In einer anderen Ausführungsform (nicht dargestellt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 und der CPU 530 über den Switch 510 bereit. In einer weiteren Ausführungsform (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen den einzelnen PPUs 300 direkt bereit. Eine oder mehrere der NVLink 310-Hochgeschwindigkeits-Kommunikationsverbindungen können als physische NVLink-Verbindung oder entweder als On-Chip- oder On-Die-Verbindung implementiert werden, die dasselbe Protokoll wie der NVLink 310 verwendet.
  • Im Kontext mit der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Die oder Chip hergestellt wird. Es wird angemerkt, dass sich der Begriff einzelne Halbleiterplattform auch auf Multi-Chip-Module mit erhöhter Konnektivität beziehen kann, die einen On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber der Verwendung einer herkömmlichen Bus-Implementierung bieten. Natürlich können die verschiedenen Schaltungen oder Geräte auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Anwenders angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als ein Leiterplattensubstrat implementiert sein und können jede der PPUs 300 und/oder der Speicher 304 gehäuste Vorrichtungen sein. In einer Ausführungsform befinden sich die CPU 530, der Switch 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform.
  • In einer Ausführungsform beträgt die Signalisierungsrate jedes NVLink 310 20 bis 25 Gigabit/Sekunde und umfasst jede PPU 300 sechs NVLink 310-Schnittstellen (wie in 5B gezeigt, sind fünf NVLink 310-Schnittstellen für jede PPU 300 enthalten). Jeder NVLink 310 bietet eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jeder Richtung, wobei sechs Links 300 Gigabyte/Sekunde bereitstellen. Die NVLinks 310 können ausschließlich für die PPU-zu-PPU-Kommunikation verwendet werden, wie in 5B gezeigt, oder für eine Kombination aus PPU-zu-PPU und PPU-zu-CPU, wenn die CPU 530 ebenfalls eine oder mehrere NVLink 310-Schnittstellen enthält.
  • In einer Ausführungsform ermöglicht der NVLink 310 den direkten Lade-/Speicher/Atom-Zugriff von der CPU 530 auf den Speicher 304 jeder PPU 300. In einer Ausführungsform unterstützt der NVLink 310 Kohärenzoperationen, so dass aus den Speichern 304 gelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden können, was die Cache-Zugriffslatenz für die CPU 530 reduziert. In einer Ausführungsform enthält der NVLink 310 Unterstützung für Adressübersetzungsdienste (ATS), wodurch die PPU 300 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Einer oder mehrere der NVLinks 310 können auch dazu konfiguriert sein, in einem stromsparenden Modus zu arbeiten.
  • 5C veranschaulicht ein beispielhaftes System 565, in dem die verschiedenen Architekturen und/oder Funktionen der verschiedenen vorherigen Ausführungsformen implementiert sein können. Das beispielhafte System 565 kann dazu konfiguriert sein, das in 1A gezeigte Verfahren 110 und das in 2A gezeigte Verfahren 200 zu implementieren.
  • Wie gezeigt, wird ein System 565 bereitgestellt, das mindestens eine zentrale Verarbeitungseinheit 530 enthält, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann unter Verwendung eines beliebigen geeigneten Protokolls implementiert sein, wie z.B. PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport oder ein anderes Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll bzw. anderer Protokolle. Das System 565 enthält darüber hinaus einen Hauptspeicher 540. Steuerlogik (Software) und Daten werden im Hauptspeicher 540 gespeichert, der die Form eines Direktzugriffsspeichers (RAM) annehmen kann.
  • Das System 565 umfasst darüber hinaus Eingabegeräte 560, das Parallelverarbeitungssystem 525 und Anzeigegeräte 545, z.B. eine herkömmliche CRT (Kathodenstrahlröhre), ein LCD (Flüssigkristallanzeige), eine LED (Licht emittierende Diode), eine Plasmaanzeige oder dergleichen. Benutzereingaben können von den Eingabegeräten 560, z.B. einer Tastatur, einer Maus, einem Touchpad, einem Mikrofon und dergleichen, empfangen werden. Jedes der vorgenannten Module und/oder Geräte kann sogar auf einer einzigen Halbleiterplattform angeordnet sein, um das System 565 zu bilden. Alternativ können die verschiedenen Module auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen angeordnet sein, je nach den Wünschen des Benutzers.
  • Ferner kann das System 565 über eine Netzschnittstelle 535 zu Kommunikationszwecken mit einem Netzwerk (z.B. einem Telekommunikationsnetz, einem lokalen Netz (LAN), einem drahtlosen Netz, einem Weitverkehrsnetz (WAN) wie dem Internet, einem Peer-to-Peer-Netz, einem Kabelnetz oder ähnlichem) verbunden sein.
  • Das System 565 kann darüber hinaus einen Sekundärspeicher enthalten (nicht dargestellt). Der Sekundärspeicher 610 umfasst z.B. ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein DVD (Digital Versatile Disk)-Laufwerk, eine Aufzeichnungsvorrichtung oder einen USB (Universal Serial Bus)-Flash-Speicher repräsentiert. Das Wechselspeicherlaufwerk liest in gut bekannter Weise von einem und/oder schreibt auf einen Wechselspeicher.
  • Computerprogramme oder Computersteuerungslogik-Algorithmen können in dem Hauptspeicher 540 und/oder in dem Sekundärspeicher gespeichert sein. Solche Computerprogramme ermöglichen es dem System 565 dann, wenn sie ausgeführt werden, verschiedene Funktionen auszuführen. Der Speicher 540, der Speicher und/oder jeder andere Speicher sind mögliche Beispiele für computerlesbare Medien.
  • Die Architektur und/oder die Funktionalität der verschiedenen vorangehenden Figuren kann im Kontext eines allgemeinen Computersystems, eines Leiterplattensystems, eines für Unterhaltungszwecke dedizierten Spielkonsolensystems, eines anwendungsspezifischen Systems und/oder eines beliebigen anderen gewünschten Systems implementiert sein. Beispielsweise kann das System 565 die Form eines Desktop-Computers, eines Laptop-Computers, eines Tablet-Computers, von Servern, Supercomputern, eines Smartphones (z.B. eines drahtlosen Handgeräts), eines persönlichen digitalen Assistenten (PDA), einer Digitalkamera, eines Fahrzeugs, eines Head-Mounted-Displays, eines elektronischen Handgeräts, eines Mobiltelefons, eines Fernsehers, einer Workstation, von Spielkonsolen, eines eingebetteten Systems und/oder jeder anderen Art von Logik annehmen.
  • Während vorstehend verschiedene Ausführungsformen beschrieben wurden, versteht sich, dass diese nur beispielhaft und nicht als beschränkend dargestellt worden sind. Daher sind die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch eine der oben beschriebenen beispielhaften Ausführungsformen zu beschränken, sondern nur in Übereinstimmung mit den folgenden Ansprüchen und deren Äquivalenten zu definieren.
  • Maschinelles Lernen
  • Tiefe neuronale Netze (DNNs), die auf Prozessoren wie beispielsweise der PPU 300 entwickelt wurden, werden für verschiedenste Anwendungsfälle eingesetzt, von selbstfahrenden Autos bis zur schnelleren Medikamentenentwicklung, von der automatischen Bildunterschrift in Online-Bilddatenbanken bis zur intelligenten Echtzeit-Sprachübersetzung in Video-Chat-Anwendungen. Deep Learning ist eine Technik, die den neuronalen Lernprozess des menschlichen Gehirns modelliert und dabei kontinuierlich lernt, immer intelligenter wird und mit der Zeit immer genauere Ergebnisse liefert. Ein Kind lernt anfangs von einem Erwachsenen, verschiedene Formen richtig zu identifizieren und zu klassifizieren, und ist schließlich in der Lage, Formen ohne Nachhilfe zu erkennen. In ähnlicher Weise muss ein Deep Learning- oder neuronales Lernsystem in der Objekterkennung und -klassifizierung trainiert werden, damit es schlauer und effizienter bei der Identifizierung von Basisobjekten, verdeckten Objekten usw. wird und gleichzeitig den Objekten einen Kontext zuordnen kann.
  • Auf der einfachsten Ebene betrachten Neuronen im menschlichen Gehirn verschiedene Inputs bzw. Eingaben, die empfangen werden, werden jeder dieser Eingaben Wichtigkeitsstufen zugewiesen, und wird die Ausgabe an andere Neuronen weitergeleitet, die darauf reagieren. Ein künstliches Neuron oder Perzeptron ist das einfachste Modell eines neuronalen Netzes. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts repräsentieren, für dessen Erkennung und Klassifizierung das Perzeptron trainiert wird, und wird jedem dieser Merkmale eine bestimmte Gewichtung zugewiesen, die auf der Wichtigkeit dieses Merkmals bei der Definition der Form eines Objekts basiert.
  • Ein Modell eines tiefen neuronalen Netzes (Deep Neural Network; DNN) umfasst mehrere Schichten vieler verbundener Knoten (z.B. Perceptrons, Boltzmann-Maschinen, Radialbasisfunktionen, Faltungsschichten usw.), die mit enormen Mengen an Eingabedaten trainiert werden können, um komplexe Probleme schnell und mit hoher Genauigkeit zu lösen. In einem Beispiel zerlegt eine erste Schicht des DNN-Modells ein Eingabebild eines Autos in verschiedene Abschnitte und sucht nach grundlegenden Mustern wie Linien und Winkeln. Die zweite Schicht setzt die Linien zusammen, um nach Mustern auf höherer Ebene wie Rädern, Windschutzscheiben und Spiegeln zu suchen. Die nächste Schicht identifiziert den Fahrzeugtyp, und die letzten paar Schichten generieren ein Label für das Eingabebild, das das Modell einer bestimmten Automarke identifiziert.
  • Sobald das DNN trainiert ist, kann es eingesetzt und zur Identifizierung und Klassifizierung von Objekten oder Mustern in einem als Inferenz bezeichneten Prozess verwendet werden. Beispiele für Inferenz (der Prozess, durch den ein DNN nützliche Informationen aus einer gegebenen Eingabe extrahiert) sind die Identifizierung handgeschriebener Zahlen auf Schecks, die in Geldautomaten eingezahlt wurden, die Identifizierung von Bildern von Freunden auf Fotos, die Bereitstellung von Filmempfehlungen für über fünfzig Millionen Benutzer, die Identifizierung und Klassifizierung verschiedener Arten von Autos, Fußgängern und Straßengefahren in fahrerlosen Autos oder die Übersetzung menschlicher Sprache in Echtzeit.
  • Während des Trainings fließen Daten in einer Vorwärtspropagationsphase durch das DNN, bis eine Vorhersage erzeugt wird, die eine der Eingabe entsprechende Kennzeichnung anzeigt. Wenn das neuronale Netz die Eingabe nicht korrekt kennzeichnet, werden die Fehler zwischen der korrekten Kennzeichnung und der vorhergesagten Kennzeichnung analysiert und die Gewichte für jedes Merkmal in einer Rückwärtspropagierungsphase angepasst, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netze erfordert enorme Mengen an paralleler Rechenleistung, einschließlich Gleitkommamultiplikationen und -additionen, die von der PPU 300 unterstützt werden. Die Inferenzierung ist weniger rechenintensiv als das Training, da es sich um einen latenzabhängigen Prozess handelt, bei dem ein trainiertes neuronales Netz auf neue Eingaben angewendet wird, die es zuvor noch nicht gesehen hat, um Bilder zu klassifizieren, Sprache zu übersetzen und allgemein neue Informationen abzuleiten.
  • Neuronale Netze sind in hohem Maße auf Matrix-Mathematik-Operationen angewiesen, und komplexe mehrschichtige Netze erfordern enorme Mengen an Gleitkomma-Leistung und Bandbreite, um sowohl effizient als auch schnell zu sein. Mit Tausenden von Rechenkernen, die für Matrix-Mathematik-Operationen optimiert sind und Dutzende bis Hunderte von TFLOPS an Leistung liefern, ist die PPU 300 eine Rechenplattform, die die für tiefe, auf neuronalen Netzen basierende Anwendungen der künstlichen Intelligenz und des maschinellen Lernens erforderliche Leistung bereitstellt.
  • Es wird angemerkt, dass die hierin beschriebenen Techniken (z.B. die Verfahren 110 und 200) in ausführbaren Anweisungen verkörpert sein können, die in einem computerlesbaren Medium zur Verwendung durch oder in Verbindung mit einer prozessorbasierten Anweisungsausführungsmaschine, einem System, einer Vorrichtung oder einem Gerät gespeichert sind. Für den Fachmann versteht sich, dass bei einigen Ausführungsformen verschiedene Arten von computerlesbaren Medien zum Speichern von Daten verwendet werden können. Wie hierin verwendet, umfasst ein „computerlesbares Medium“ ein oder mehrere beliebige geeignete Medien zum Speichern der ausführbaren Befehle eines Computerprogramms, so dass die Befehlsausführungsmaschine, das System, der Apparat oder die Vorrichtung die Befehle von dem computerlesbaren Medium lesen (oder abrufen) und die Befehle zum Ausführen der beschriebenen Ausführungsformen ausführen kann. Geeignete Speicherformate umfassen eines oder mehrere aus einem elektronischen, magnetischen, optischen und elektromagnetischen Format. Eine nicht abschließende Liste konventioneller, beispielhafter computerlesbarer Medien umfasst: eine tragbare Computerdiskette; einen Direktzugriffsspeicher (RAM); einen Festwertspeicher (ROM); einen löschbaren programmierbaren Festwertspeicher (EPROM); eine Flash-Speichervorrichtung; und optische Speichervorrichtungen, einschließlich einer tragbaren Compact Disc (CD), einer tragbaren digitalen Video-Disk (DVD) und dergleichen.
  • Es versteht sich, dass die in den beigefügten Figuren dargestellte Anordnung der Komponenten nur der Veranschaulichung dient und dass andere Anordnungen möglich sind. Beispielsweise können eines oder mehrere der hier beschriebenen Elemente ganz oder teilweise als elektronische Hardwarekomponente realisiert sein. Andere Elemente können in Software, Hardware oder einer Kombination aus Software und Hardware realisiert sein. Darüber hinaus können einige oder alle dieser anderen Elemente kombiniert werden, einige können ganz weggelassen werden, und es können zusätzliche Komponenten hinzugefügt werden, während die hier beschriebene Funktionalität dennoch erreicht wird. Somit kann der hier beschriebene Gegenstand in vielen verschiedenen Variationen verkörpert werden, und alle diese Variationen werden als innerhalb des Schutzumfangs der Ansprüche liegend betrachtet.
  • Um das Verständnis des hier beschriebenen Gegenstands zu erleichtern, werden viele Aspekte in Form von Abfolgen von Aktionen beschrieben. Für den Fachmann versteht sich, dass die verschiedenen Aktionen von speziellen Schaltungen oder Schaltkreisen, von Programmbefehlen, die von einem oder mehreren Prozessoren ausgeführt werden, oder von einer Kombination aus beidem ausgeführt werden können. Die hierin beschriebene Abfolge von Aktionen soll nicht bedeuten, dass die spezifische Reihenfolge, die für die Ausführung dieser Abfolge beschrieben wird, eingehalten werden muss. Alle hier beschriebenen Verfahren können in jeder geeigneten Reihenfolge ausgeführt werden, sofern hierin nichts anders angegeben oder durch Kontext eindeutig widerlegt wird.
  • Die Verwendung der Begriffe „ein“ und „eine“ und „die“ und ähnlicher Verweise im Kontext der Beschreibung des Gegenstands (insbesondere im Kontext der folgenden Ansprüche) ist so auszulegen, dass sie sowohl die Einzahl als auch die Mehrzahl umfasst, sofern hier nicht anders angegeben oder durch Kontext eindeutig widerlegt wird. Die Verwendung des Begriffs „mindestens eines“, gefolgt von einer Aufzählung eines oder mehrerer Gegenstände (z.B. „mindestens eines von A und B“) ist so auszulegen, dass damit ein aus den aufgelisteten Gegenständen (A oder B) ausgewählter Gegenstand oder eine beliebige Kombination von zwei oder mehreren der aufgelisteten Gegenstände (A und B) gemeint ist, sofern hier nicht anders angegeben oder durch Kontext eindeutig widerlegt wird. Darüber hinaus dient die vorstehende Beschreibung nur der Veranschaulichung und nicht der Beschränkung, da der angestrebte Schutzumfang durch die nachstehend aufgeführten Ansprüche zusammen mit deren Äquivalenten definiert wird. Die Verwendung von Beispielen oder beispielhaften Ausdrücken (z.B. „wie beispielsweise“) dient lediglich der besseren Veranschaulichung des Gegenstands und stellt keine Einschränkung des Schutzumfangs dar, sofern nichts anderes beansprucht wird. Die Verwendung des Begriffs „basierend auf‟ und anderer ähnlicher Ausdrücke, die eine Bedingung für das Herbeiführen eines Ergebnisses angeben, sowohl in den Ansprüchen als auch in der schriftlichen Beschreibung, soll keine anderen Bedingungen ausschließen, die dieses Ergebnis herbeiführen. Keine Formulierung in der Beschreibung ist so auszulegen, dass sie ein nicht beanspruchtes Element als wesentlich für die Ausführung der beanspruchten Erfindung bezeichnet.

Claims (16)

  1. Verfahren, umfassend: Empfangen eines neuronalen Netzes, das dazu trainiert wurde, eine Verlustfunktion zu erfüllen, unter Verwendung eines ersten Satzes von Hyperparametern und eines ersten Trainingsdatensatzes, wobei das trainierte neuronale Netz Ausgangsdaten erzeugt, die visuelle Artefakte enthalten; Empfangen eines zweiten Trainingsdatensatzes; Empfangen eines zweiten Satzes von Hyperparametern, wobei ein zweiter Lernparameter, der in dem zweiten Satz von Hyperparametern spezifiziert ist, Anpassungen von einem oder mehreren Gewichten, die von dem neuronalen Netz verwendet werden, im Vergleich zu einem entsprechenden ersten Lernparameter in dem ersten Satz von Hyperparametern begrenzt; und Anwenden des zweiten Trainingsdatensatzes auf das neuronale Netz gemäß dem zweiten Satz von Hyperparametern, während das eine oder die mehreren Gewichte angepasst werden, die von dem neuronalen Netz zum Verarbeiten des zweiten Trainingsdatensatzes verwendet werden, um ein erstes mikrotrainiertes neuronales Netz zu erzeugen.
  2. Verfahren nach Anspruch 1, wobei der erste Lernparameter eine erste Lernrate umfasst, und der zweite Lernparameter eine zweite Lernrate umfasst, die geringer als die erste Lernrate ist.
  3. Verfahren nach Anspruch 2, wobei die zweite Lernrate mindestens zehnmal niedriger ist als die erste Lernrate.
  4. Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend ein Bestimmen, dass eine Vervollständigungsanforderung erfüllt worden ist.
  5. Verfahren nach Anspruch 4, wobei das Bestimmen ein Empfangen einer Eingangsindikation von einer Benutzerschnittstelle umfasst.
  6. Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend ein Erzeugen und Anzeigen eines Testbilds aus einem entsprechenden Trainingsbild innerhalb des zweiten Trainingsdatensatzes unter Verwendung des ersten mikrotrainierten neuronalen Netzes, wobei die visuellen Artefakte innerhalb des Testbilds relativ zu einem zweiten Testbild, das durch das neuronale Netz für das entsprechende Trainingsbild erzeugt wurde, reduziert sind.
  7. Verfahren nach einem der vorangehenden Ansprüche, wobei die visuellen Artefakte geometrische Aliasing-Artefakte umfassen.
  8. Verfahren nach einem der vorangehenden Ansprüche, wobei die visuellen Artefakte Rendering-Rauschartefakte enthalten.
  9. Verfahren nach einem der vorangehenden Ansprüche, wobei die visuellen Artefakte Beleuchtungseffekt-Artefakte enthalten.
  10. Verfahren nach einem der vorangehenden Ansprüche, wobei das neuronale Netz eine U-Netz-Architektur mit einem ersten Satz von Aktivierungsfunktionsgewichten implementiert und das erste mikrotrainierte neuronale Netz eine entsprechende U-Netz-Architektur mit einem zweiten, anderen Satz von Aktivierungsfunktionsgewichten implementiert.
  11. Verfahren nach einem der vorangehenden Ansprüche, wobei der erste Satz von Hyperparametern eine erste Anzahl von Trainingsiterationen umfasst und der zweite Satz von Hyperparametern eine zweite Anzahl von Trainingsiterationen umfasst, die kleiner ist als die erste Anzahl von Trainingsiterationen.
  12. Verfahren nach Anspruch 11, wobei die zweite Anzahl von Trainingsiterationen mindestens eintausendmal kleiner ist als die erste Anzahl von Trainingsiterationen.
  13. System, umfassend: eine Speicherschaltung mit darin gespeicherten Programmieranweisungen; eine Parallelverarbeitungseinheit, die mit der Speicherschaltung gekoppelt ist, wobei die Parallelverarbeitungseinheit die Programmieranweisungen abruft und ausführt, um ein Verfahren nach einem der Ansprüche 1 bis 12 durchzuführen.
  14. System nach Anspruch 13, wobei der erste Lernparameter eine erste Lernrate umfasst und der zweite Lernparameter eine zweite Lernrate umfasst, die geringer als die erste Lernrate und mindestens zehnmal niedriger als die erste Lernrate ist.
  15. Nicht-transitorisches computerlesbares Medium, das Computeranweisungen zur Gesichtsanalyse speichert, die dann, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, ein Verfahren nach einem der Ansprüche 1 bis 12 durchzuführen.
  16. Nicht-transitorisches computerlesbares Medium nach Anspruch 15, wobei der erste Lernparameter eine erste Lernrate umfasst, und der zweite Lernparameter eine zweite Lernrate umfasst, die geringer als die erste Lernrate und mindestens zehnmal niedriger als die erste Lernrate ist.
DE102021105249.1A 2020-03-13 2021-03-04 Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen Pending DE102021105249A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/818,266 2020-03-13
US16/818,266 US20210287096A1 (en) 2020-03-13 2020-03-13 Microtraining for iterative few-shot refinement of a neural network

Publications (1)

Publication Number Publication Date
DE102021105249A1 true DE102021105249A1 (de) 2021-09-16

Family

ID=77457440

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021105249.1A Pending DE102021105249A1 (de) 2020-03-13 2021-03-04 Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen

Country Status (3)

Country Link
US (1) US20210287096A1 (de)
CN (1) CN113392968A (de)
DE (1) DE102021105249A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11755951B2 (en) * 2020-05-15 2023-09-12 Vmware, Inc. Machine learning with an intelligent continuous learning service in a big data environment
EP3923210A1 (de) * 2020-06-01 2021-12-15 Replica Analytics Erzeugung von synthetischen daten
US11836221B2 (en) * 2021-03-12 2023-12-05 Google Llc Systems and methods for refined object estimation from image data
CN114331806A (zh) * 2022-03-17 2022-04-12 南京砺算科技有限公司 图形处理器及图形处理方法
CN115409124B (zh) * 2022-09-19 2023-05-23 小语智能信息科技(云南)有限公司 基于微调原型网络的小样本敏感信息识别方法
CN117079263B (zh) * 2023-10-16 2024-01-02 内江师范学院 一种碑文文字提取方法、装置、设备及介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9679258B2 (en) * 2013-10-08 2017-06-13 Google Inc. Methods and apparatus for reinforcement learning
WO2018098230A1 (en) * 2016-11-22 2018-05-31 Massachusetts Institute Of Technology Systems and methods for training neural networks
KR20180068511A (ko) * 2016-12-14 2018-06-22 삼성전자주식회사 영상에 포함된 도로와 관련된 정보를 결정하는 뉴럴 네트워크를 학습시키는 학습 데이터를 생성하는 장치 및 방법
US10255681B2 (en) * 2017-03-02 2019-04-09 Adobe Inc. Image matting using deep learning
WO2018184224A1 (en) * 2017-04-07 2018-10-11 Intel Corporation Methods and systems for boosting deep neural networks for deep learning
US11836597B2 (en) * 2018-08-09 2023-12-05 Nvidia Corporation Detecting visual artifacts in image sequences using a neural network model
US11100611B2 (en) * 2019-03-29 2021-08-24 GE Precision Healthcare LLC Systems and methods for background noise reduction in magnetic resonance images
US11610154B1 (en) * 2019-04-25 2023-03-21 Perceive Corporation Preventing overfitting of hyperparameters during training of network
US11100684B2 (en) * 2019-07-11 2021-08-24 Canon Medical Systems Corporation Apparatus and method for artifact detection and correction using deep learning

Also Published As

Publication number Publication date
US20210287096A1 (en) 2021-09-16
CN113392968A (zh) 2021-09-14

Similar Documents

Publication Publication Date Title
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102019130702A1 (de) Stilbasierte architektur für generative neuronale netzwerke
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102019106123A1 (de) Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102019103310A1 (de) Schätzer for einen optimalen betriebspunkt für hardware, die unter einer beschränkung der gemeinsam genutzten leistung/wärme arbeitet
DE102019135639A1 (de) Auf Echtzeit-Strahlverfolgung (RTRT) basierende adaptive Mehrfrequenzschattierung (AMFS)
DE102019128750A1 (de) Reduzierung des detailgrades eines polygonnetzes, um eine komplexität einer bildlich wiedergegebenen geometrie innerhalb einer szene zu verringern
DE102019130311A1 (de) Transponierte schwachbesetzte matrix multipliziert mit dichtbesetzter matrix für ein training neuronaler netzwerke
DE102019132001A1 (de) Vorrichtung und verfahren für einen hierarchischen beamtracer
DE102019106996A1 (de) Darstellen eines neuronalen netzwerks unter verwendung von pfaden innerhalb des netzwerks zum verbessern der leistung des neuronalen netzwerks
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102019134020A1 (de) Dekompprimierungstechniken zur verarbeitung komprimierter daten, die für künstliche neuronale netzwerke geeignet sind
DE102018114799A1 (de) Halbüberwachtes lernen zur orientierungspunktlokalisierung
DE102021130031A1 (de) Erscheinungsbildgesteuerte automatische dreidimensionale modellierung
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE102022121509A1 (de) Einzelbild-inversrendering
DE102019121200A1 (de) Bewegungsadaptives rendern mittels shading mit variabler rate

Legal Events

Date Code Title Description
R012 Request for examination validly filed