DE102022114518A1 - Fusionierte verarbeitung eines kontinuierlichen mathematischen operators - Google Patents

Fusionierte verarbeitung eines kontinuierlichen mathematischen operators Download PDF

Info

Publication number
DE102022114518A1
DE102022114518A1 DE102022114518.2A DE102022114518A DE102022114518A1 DE 102022114518 A1 DE102022114518 A1 DE 102022114518A1 DE 102022114518 A DE102022114518 A DE 102022114518A DE 102022114518 A1 DE102022114518 A1 DE 102022114518A1
Authority
DE
Germany
Prior art keywords
data
memory
processed
upsampling
computer
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
DE102022114518.2A
Other languages
English (en)
Inventor
Tero Tapani KARRAS
Miika Samuli Aittala
Samuli Matias Laine
Erik Andreas Härkönen
Janne Johannes Hellsten
Jaakko T. Lehtinen
Timo Oskari Aila
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 DE102022114518A1 publication Critical patent/DE102022114518A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Image Processing (AREA)

Abstract

Systeme und Verfahren zur fusionierte Verarbeitung eines kontinuierlichen mathematischen Operators werden offenbart. Fusionierte Verarbeitung von kontinuierlichen mathematischer Operationen, wie beispielsweise punktweisen nichtlinearen Funktionen ohne Speichern von Zwischenergebnisse im Speicher verbessert Leistung, wenn die Leistung begrenzt ist. In einer Ausführungsform wird eine kontinuierliche mathematische Operation, die mindestens zwei von Faltung, Upsampling, punktweisen nichtlinearen Funktion und Downsampling umfasst, ausgeführt, um Eingangsdaten zu verarbeiten und alias-freie Ausgangsdaten zu erzeugen. In einer Ausführungsform werden die Eingangsdaten räumlich zur Verarbeitung parallel gekachelt, so dass die Zwischenergebnisse, die erzeugtes während Verarbeitung der Eingangsdaten für jede Kachel erzeugt werden, in einem gemeinsam genutzten Speicher innerhalb des Prozessors gespeichert werden können. Das Speichern der Zwischendaten in dem gemeinsam genutzten Speicher verbessert die Leistung im Vergleich zum Speichern der Zwischendaten in dem externen Speicher und Laden der Zwischendaten aus dem externen Speicher.

Description

  • HINTERGRUND
  • Ein kontinuierlicher mathematischer Operator kann durch die Verarbeitung von Eingangsdaten durch eine Sequenz von Funktionen approximiert werden, wobei Zwischendaten, die durch jede Funktion in der Sequenz erzeugt werden, im Speicher gespeichert werden. Der Speicher ist mit einem Prozessor gekoppelt, der die Funktionen implementiert, so dass die Zwischendaten über einen Speicherbus transferiert werden, um die Zwischendaten für jede Funktion in dem Speicher zu speichern und aus dem Speicher zu laden. Wenn eine der Funktionen die Auflösung der Zwischendaten erhöht, nimmt die Menge der über den Speicherbus transferierten Daten ebenfalls zu. Wenn die Leistung begrenzt ist, kann die Erhöhung der Menge an Daten, die transferiert wird, die Verarbeitungsleistung verringern. Es gibt einen Bedarf, sich diesen Problemen und/oder anderen Problemen zu widmen, die dem Stand der Technik zugeordnet sind.
  • ZUSAMMENFASSUNG
  • Die Fusionierte Verarbeitung von kontinuierlichen mathematischen Operationen, wie beispielsweise punktweisen nichtlinearen Funktionen, ohne das Speichern von Zwischenergebnissen im Speicher, verbessert die Leistung, wenn die Speicherbusbandbreite begrenzt ist. In einer Ausführungsform wird eine kontinuierliche mathematische Operation, die mindestens zwei von Faltung, Upsampling, punktweisen nichtlinearen Funktion und Downsampling umfasst, ausgeführt, um Eingangsdaten und Ausgangsdaten zu erzeugen. In einer Ausführungsform sind die Eingangsdaten zur parallelen Verarbeitung räumlich gekachelt, so dass die Zwischenergebnisse, die während der Verarbeitung der Eingangsdaten für jede Kachel erzeugt werden, in einem gemeinsam genutzten Speicher innerhalb des Prozessors gespeichert werden können. Das Speichern der Zwischendaten in dem gemeinsam genutzten Speicher verbessert die Leistung im Vergleich zu dem Speichern der Zwischendaten in dem externen Speicher und Laden der Zwischendaten aus dem externen Speicher.
  • Ein Verfahren, computerlesbares Medium und System werden zur fusionierten Verarbeitung eines kontinuierlichen mathematischen Operators offenbart. Das Verfahren, das computerlesbare Medium und das System können verwendet werden, um den kontinuierlichen mathematischen Operator zu approximieren. In einer Ausführungsform umfasst das Verfahren das Speichern von Eingangsdaten in einem Speicher, der eine oder mehrere Speichervorrichtungen umfasst, und das Lesen der Eingangsdaten aus dem Speicher durch einen Prozessor, der mit dem Speicher durch eine Schnittstelle gekoppelt ist. Der Prozessor führt Anweisungen aus, um den kontinuierlichen mathematischen Operator zu approximieren, durch: Upsampling der Zwischenmerkmalskarte, um eine Merkmalskarte vergrößerter Auflösung zu erzeugen, die eine kontinuierliche Merkmalskarte approximiert; Anwenden einer nichtlinearen Operation auf die Merkmalskarte vergrößerter Auflösung, um eine verarbeitete Merkmalskarte vergrößerter Auflösung zu erzeugen; Downsampling der verarbeiteten Merkmalskarte vergrößerter Auflösung, um eine verarbeitete Zwischenmerkmalskarte zu erzeugen; und Speichern der verarbeiteten Zwischenmerkmalskarte in dem Speicher.
  • Figurenliste
  • Die vorliegenden Systeme und Verfahren zur fusionierten Verarbeitung eines kontinuierlichen mathematschen Operators werden nachstehend mit Bezugnahme auf die beigefügten Zeichnungsfiguren ausführlich beschrieben, wobei:
    • 1A ein Konzeptdiagramm einer Topologie und von Wahrscheinlichkeitsdaten veranschaulicht, die verwendet werden, um eine Topologie zu lernen, gemäß einer Ausführungsform;
    • 1B feine Einzelheiten von Bildern veranschaulicht, die unter Verwendung eines herkömmlichen generativen neuronalen Netzwerk erzeugt wurden, gemäß dem Stand der Technik;
    • 1C feine Einzelheiten von Bildern veranschaulicht, die unter Verwendung des generativen neuronalen Netzwerks mit verringertem Aliasing erzeugt wurden, gemäß einer Ausführungsform;
    • 1D ein generatives neuronales Netzwerk mit verringertem Aliasing und konzeptionellen Merkmalskarten bei unterschiedlichen Graden der Hierarchie veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 1E ein Konzeptdiagramm ist, das diskrete und kontinuierliche Darstellungen von Merkmalskarten zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 2A Blockdiagramme einer beispielhaften Verarbeitungsschicht für ein herkömmliches generatives neuronales Netzwerk und eine beispielhafte Verarbeitungsschicht für ein generatives neuronales Netzwerk mit verringertem Aliasing veranschaulicht, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet sind;
    • 2B ein Ablaufdiagramm eines Verfahrens zum Approximieren aliasfreier Operationen gemäß einer Ausführungsform veranschaulicht;
    • 2C Merkmalskarten veranschaulicht, die durch ein herkömmliches generatives neuronales Netzwerk erzeugt wurden, und Merkmalskarten veranschaulicht, die durch das generative neuronale Netzwerk mit verringertem Aliasing erzeugt wurden, gemäß einer Ausführungsform;
    • 3 eine beispielhafte Parallelverarbeitungseinheit veranschaulicht, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 4A einen beispielhaften allgemeinen Verarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 3 veranschaulicht, der zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 4B eine beispielhafte Speicherpartitionseinheit der Parallelverarbeitungseinheit von 3 veranschaulicht, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 4C ein Beispiel des Streaming-Multi-Prozessors von 4A veranschaulicht, der zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 5A ein Konzeptdiagramm eines unter Verwendung der PPU von 4 implementierten Verarbeitungssystems ist, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 5B ein beispielhaftes System veranschaulicht, bei dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann;
    • 5C Komponenten eines beispielhaftes Systems veranschaulicht, das verwendet werden kann, um maschinelles Lernen zu trainieren und zu benutzen, in mindestens einer Ausführungsform;
    • 6 ein beispielhaftes Streaming-System veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 7A ein Konzeptdiagramm eines Verarbeitungssystems zur fusionierten Verarbeitung eines kontinuierlichen mathematischen Operators veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 7B das Kacheln von Zwischendaten veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist; und
    • 7C ein Ablaufdiagramm eines Verfahrens zur fusionierten Verarbeitung eines kontinuierlichen mathematischen Operators veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Systeme und Verfahren werden offenbart, die alias-freie generative neuronale Netzwerke betreffen, insbesondere neuronale Bildgeneratornetzwerke. In der realen Welt neigen Einzelheiten mit unterschiedlichem Maßstab dazu, sich hierarchisch zu transformieren. Beispielsweise veranlasst das Bewegen eines Kopfes einer Person, dass sich die Nase bewegt, was wiederum die Hautporen darauf bewegt. Die Struktur eines generativen neuronalen Netzwerks ist analog: grobe Merkmale niedriger Auflösung werden hierarchisch durch Upsampling verfeinert, lokal durch Faltungen gemischt und neue Einzelheiten werden durch nichtlineare Operationen eingeführt. Trotz der oberflächlichen Ähnlichkeit einer hierarchischen Struktur synthetisieren herkömmliche generative neuronale Netzwerkarchitekturen keine Bilder in einer natürlichen hierarchischen Art und Weise: die groben Merkmale scheinen hauptsächlich die Anwesenheit von feineren Merkmalen, jedoch nicht die genauen Positionen der feineren Merkmale zu steuern. Stattdessen erscheinen viele der feinen Einzelheiten als Ergebnis des Aliasing an Pixelkoordinaten fixiert zu sein, was zum Haften visueller Artefakte führt. Das störende „Haften“ bricht die Illusion einer festen und kohärenten Objektbewegung im Raum. Ein generatives neuronales Netzwerk mit verringertem Aliasing stellt eine Architektur bereit, die eine natürlichere Transformationenhierarchie aufweist, wobei die SubpixelPosition jedes Merkmals von darunterliegenden groben Merkmalen vererbt wird.
  • Im Gegensatz zu herkömmlichen Systemen, wie beispielsweise jene, die oben beschrieben sind, befestigt das alias-freie generative neuronale Netzwerk Einzelheiten in Ausgangsdaten an Merkmalen in den Zwischendaten pro Schicht, anstatt die Einzelheiten an Bildkoordinaten (z.B., Pixeln) zu befestigen. Die alias-freie Technik sieht eine natürlichere Bewegung für erzeugtes Video vor. Wenn eine Person beispielsweise ihren Kopf dreht, verschieben sich ihre Zähne ebenfalls mit der Bewegung, anstatt ruhig zu bleiben. Aliasing tritt während Merkmal-Upsampling und nichtlinearen Operationen auf, die in den Schichten des neuronalen Netzwerks durchgeführt werden. Die Faltungs-, Upsampling-, Downsampling- und punktweise nichtlineare Operationen, die von herkömmlichen generativen neuronalen Netzwerken durchgeführt werden, werden für alias-freie Leistung modifiziert.
  • Eine Bildsynthese wird für eine Vielfalt von Anwendungen verwendet, die Bildbearbeitung, Domänenverschiebung und Videoerzeugung umfassen. Generative neuronale Netzwerke können ebenfalls verwendet werden, um dreidimensionale (3D) Volumen, Audiosignale und dergleichen zu synthetisieren. Ein alias-freies generatives neuronales Netzwerk stellt eine Architektur bereit, die eine natürlichere Transformationshierarchie aufweist. Beispielsweise wird in einer Ausführungsform die genaue Subpixelposition jedes Merkmals exklusiv von darunterliegenden groben Merkmale vererbt. Die groben Merkmale steuern nicht nur die Anwesenheit von feineren Merkmale, sondern steuern ebenfalls Positionen der feineren Merkmale auf Oberflächen (z.B., Gesicht, Kopf usw.). Daher verringern die alias-freien generativen neuronalen Netzwerke das Haften visueller Artefakte.
  • Trotz einer hierarchischen Faltungsnatur von generativen neuronalen Netzwerken hängt der Syntheseprozess von herkömmlichen generativen neuronalen Netzwerken von absoluten Pixelkoordinaten in einer ungesunden Art und Weise ab. Die Abhängigkeit äußert sich beispielsweise als Einzelheiten, die an Bildkoordinaten anstatt den Oberflächen von anschaulich dargestellten Objekten festgeklebt sind. Eine Grundursache des Aliasing kann auf sorglose Signalverarbeitung zurückverfolgt werden. Beispielsweise umgehen herkömmliche generative neuronale Netzwerke teilweise die ideale hierarchische Konstruktion durch Zurückgreifen auf ungewollte positionellen Referenzen, die den Zwischenschichten durch Bildgrenzen, Pro-Pixel-Rauscheingaben und positionellen Codierungen sowie auch Aliasing verfügbar sind. Im Allgemeinen können neuronale Netzwerke ziemlich träge sein und Abkürzungen nehmen, wenn möglich, um durch die strenge hierarchische Verfeinerung zu laufen.
  • Trotzdem Aliasing ein subtiles und kritisches Problem ist, erlangte es wenig Aufmerksamkeit in der neuronalen Netzwerkliteratur. Zwei Quellen von Aliasing können identifiziert werden: erstens, schwache Nachher-Bilder der Pixelgitter, die sich aus nicht idealen Upsampling-Filtern ergeben (z.B., nächste, bilineare, „strided“ Faltungen mit gelernten Kerngewichtungen) und zweitens, die punktweise Anwendung von Nichtlinearitäten, wie beispielsweise einer rektifizierten linearen Aktivierungsfunktion (ReLU). Das herkömmliche generative neuronale Netzwerk weist die Mittel und die Motivation auf, um sogar die geringste Menge von Aliasing zu verstärken, und, wenn über mehrere Maßstäben kombiniert, kann das herkömmliche generative neuronale Netzwerk eine Basis für Texturmotive aufbauen, die feinere Einzelheiten definieren, die in Bildschirmkoordinaten sind. Aliasing wird von den meisten Filtern, die allgemein beim tiefen Lernen verwendet werden, und sogar von Filtern hoher Qualität, in Bildverarbeitung verwendet werden, eingeführt. Die Verarbeitung durch ein herkömmliches generatives neuronales Netzwerk verstärkt typischerweise Aliasing, das eingeführt wird.
  • 1A veranschaulicht Bilder, die unter Verwendung eines herkömmlichen generativen neuronalen Netzwerks erzeugt wurden, und Bilder, die unter Verwendung des generativen neuronalen Netzwerks mit verringertem Aliasing erzeugt wurden, gemäß einer Ausführungsform. Ein erzeugtes Bild 105 wird von einem latenten Code unter Verwendung eines herkömmlichen generativen neuronalen Netzwerks synthetisiert und ein erzeugtes Bild 110 wird von einem latenten Code unter Verwendung eines generativen neuronalen Netzwerks mit verringertem Aliasing synthetisiert. Die erzeugten Bilder 105 und 110 erscheinen beide von hoher Qualität und realistisch zu sein. Aliasing oder „Texturhaftung“ wird durch Mittelwertbildung von Bildern für die gleiche Region veranschaulicht, die als Antwort auf kleinen Änderungen (z.B., zufällige Störungen) in dem latenten Code erzeugt werden. Ohne Aliasing sollte das Ergebnis gleichmäßig verschwommen sein, weil sich die feinen Einzelheiten mit der Oberfläche bewegen und nicht an den Pixelkoordinaten haften sollten. Wie in dem gemittelten erzeugten Bild 115 veranschaulicht, das den Mittelwert von mehreren Bildern darstellt, die durch das herkömmliche generative neuronale Netzwerk erzeugt wurden, haften jedoch einige feine Einzelheiten, wie beispielsweise Pelz, an den gleichen Pixelkoordinaten und erscheinen klar und scharf. Im Gegensatz dazu erscheinen im gemittelten erzeugten Bild 120, das einen Mittelwert von mehreren Bildern darstellt, die durch das generative neuronale Netzwerk mit verringertem Aliasing erzeugt wurden, die feinen Einzelheiten gleichmäßig verschwommen.
  • 1B veranschaulicht feine Einzelheiten von Bildern 121, 122 und 123, die unter Verwendung eines herkömmlichen generativen neuronalen Netzwerks erzeugt wurden, gemäß dem Stand der Technik. Die Bilder 121, 122 und 123 (und zusätzliche Bilder, die nicht gezeigt werden) werden in Sequenz im Laufe der Zeit über Interpolation des latenten Raums synthetisiert, um dazwischenliegende Bilder zu erzeugen, die sanft im Laufe der Zeit übergehen, was zu einem Morphing-Effekt führt. Ein kurzes vertikales Pixelsegment wird von der gleichen Position in jedem der Bilder 121, 122 und 123 extrahiert, um Pixelregionen 125, 126 bzw. 127 zu erzeugen. Die Pixelregionen 125, 126 und 127 werden horizontal organisiert (gestapelt), wie in vergrößerten Regionen 128 gezeigt. Das gewünschte Ergebnis ist, dass sich Haare in Animation bewegen, was ein Zeit-variierendes Feld erzeugt.
    Die vergrößerten Regionen 128 umfassen ebenfalls zusätzliche horizontal gestapelte Pixelregionen, wobei die zusätzlichen Regionen von den zusätzliche Bildern extrahiert werden, die zwischen den Bildern 121 und 122 und den Bildern 122 und 123 synthetisiert wurden. Die Haare erscheinen meistens unverändert in Position im Laufe der Zeit, wie durch die horizontalen Streifen der Pixelregion 125 zu Pixelregion 126 veranschaulicht, die sich zur Pixelregion 127 in den vergrößerten Regionen 128 erstrecken.
  • 1C veranschaulicht feine Einzelheiten von Bildern 131, 132 und 133, die unter Verwendung des generativen neuronalen Netzwerks mit verringertem Aliasing erzeugt wurden, gemäß einer Ausführungsform. Die Bilder 131, 132 und 133 (und zusätzliche Bilder, die nicht gezeigt werden) wurden in Sequenz im Laufe der Zeit über Interpolation des latenten Raums synthetisiert, um dazwischenliegende Bilder zu erzeugen, die sanft im Laufe der Zeit übergehen, die zu einem Morphing-Effekt führen. Ein kurzes vertikales Pixelsegment wird aus der gleichen Position in jedem der Bilder 131, 132 und 133 extrahiert, um Pixelregionen 135, 136 bzw. 137 zu erzeugen. Die Pixelregionen 135, 136 und 137 sind horizontal organisiert (gestapelt), wie in vergrößerten Regionen 138 gezeigt. Die vergrößerten Regionen 138 umfassen ebenfalls zusätzliche Pixelregionen, die horizontal gestapelt sind, wobei die zusätzliche Regionen aus den zusätzliche Bildern extrahiert werden, die zwischen den Bildern 131 und 132 und den Bildern 132 und 133 synthetisiert wurden. Im Gegensatz zu den Haaren, die meistens unverändert in den vergrößerten Regionen 128 erscheinen, bewegen sich die Haare in den vergrößerten Regionen 138 im Laufe der Zeit von Pixelregion 13 zu Pixelregion 136 und erstrecken sich zu der Pixelregion 137, wobei ein Zeit-veränderliches Feld erzeugt wird.
  • Veranschaulichendere Informationen werden nun hinsichtlich verschiedener optionaler Architekturen und Merkmale dargelegt, mit denen das vorhergehende Rahmenwerk gemäß den Wünschen des Benutzers implementiert werden kann. Es sei nachdrücklich bemerkt, dass die folgenden Informationen für veranschaulichende Zwecke dargelegt werden und nicht in irgendeiner Art und Weise als beschränkend ausgelegt werden sollten. Jedes der folgenden Merkmale kann optional mit oder ohne den Ausschluss von anderen beschriebenen Merkmalen einbezogen werden.
  • 1D veranschaulicht ein generatives neuronales Netzwerk 100 mit verringertem Aliasing und konzeptuellen Merkmalskarten 141, 142 und 143 bei unterschiedlichen Grads einer Verarbeitungshierarchie, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet. In einer Ausführungsform empfängt das generative neuronale Netzwerk 100 mit verringertem Aliasing Eingabemerkmale als Eingaben, die gemäß einem latenten Code verarbeitet werden, um Ausgabedaten zu synthetisieren. In einer Ausführungsform sind die Ausgangsdaten ein erzeugtes Bild 140. Die Ausgangsdaten können ein eindimensionales (1D) Signal (z.B., Audiodaten) oder Daten höhere Dimension (z.B., 3D-Scan) sein, ohne Beschränkung. In einer Ausführungsform umfasst der latente Code 512 Zahlen. In einer Ausführungsform wird der latente Code in einen latenten Zwischenraum abgebildet, um ein oder mehrere Modulationssignale zu erzeugen, die mindestens einer Schicht des generativen neuronalen Netzwerks 100 bereitgestellt werden. In einer Ausführungsform ist jedes des einen oder mehrerer Modulationssignale einem unterschiedlichen hierarchischen Grad des generativen neuronalen Netzwerks 100 zugeordnet. In einer Ausführungsform sind die Eingabemerkmale eine gelernte Konstante. In einer Ausführungsform sind die Eingabemerkmale Fourier-Merkmale, die eine kontinuierliche Merkmalskarte natürlich definieren. Die Ausgangsdaten werden basierend auf den Eingabemerkmalen und dem latenten Code synthetisiert.
  • Die Merkmalskarten 141, 142 und 143 nehmen in der Auflösung zu, da die durch jede Schicht erzeugte Merkmalskarte durch eine anschließende Schicht oder Stufe in dem generativen neuronalen Netzwerk 100 verarbeitet wird. Bei einer oder mehreren der Schichten werden die Merkmalskarten aufwärts abgetastet, um die Auflösung zu erhöhen. Beispielsweise ist eine Auflösung der Merkmalskarte 143 größer im Vergleich mit den Merkmalskarten 141 und 142. Die Auflösung der Merkmalskarte 142 ist größer im Vergleich mit der Merkmalskarte 141. Wenn ein einfaches Filter, wie beispielsweise nächster Nachbar, für Upsampling verwendet kann, kann ein Gittermuster sichtbar sein. Sogar wenn ein komplexeres Filter verwendet wird, kann das Gittermuster nicht sichtbar sein, wobei ein herkömmliches generatives neuronales Netzwerk jedoch aggressiv versuchen kann, das Gittermuster zu extrahieren.
  • Wenn die Merkmalskarten in einer kontinuierlichen Form anstatt einer diskreten (z.B., verpixelten) Form dargestellt werden, ersetzen Merkmalskarten 145, 146 und 147 die Merkmalskarten 141, 142 bzw. 143. Die Verarbeitung der Merkmalskarten 145, 146 und 147 würde zu aliasfreien Ausgabedaten führen, wobei die Verarbeitung jedoch eine viel höhere Auflösung erfordert, so dass die Bitbreite jeder Berechnung unbegrenzt ist, was unpraktisch ist. Wie ferner hier beschrieben, ist es jedoch möglich, Upsampling und andere Operationen durchzuführen, um die kontinuierlichen Merkmalskarten 145, 146 und 147 besser zu approximieren.
  • Um Aliasing zu verringern oder zu beseitigen, sollten Informationen, welche die hierarchischen Verfeinerung durchlaufen, beseitigt werden, so dass das generative neuronale Netzwerk 100 daran gehindert wird, die Information zu verwenden. Während durch Bildgrenzen eingeführte Informationen durch einfaches Arbeiten an geringfügig größeren Bildern verringert werden kann, ist das Verringern oder Verhindern von Aliasing schwieriger. Aliasing wird am natürlichsten in dem klassischen Shannon-Nyquist-Signalverarbeitungs-Rahmenwerk behandelt und eine Lösung kann durch Umschalten des Fokus auf bandbegrenzte Funktionen auf einer kontinuierlichen Domäne gefunden werden, die lediglich durch diskrete Abtastgitter dargestellt werden. In einer kontinuierlichen Domäne bedeutet die erfolgreiche Beseitigung aller Quellen positioneller Referenzen, dass Einzelheiten ungeachtet der Pixelkoordinaten gleich gut erzeugt werden können, was wiederum zum Durchsetzen von kontinuierlicher Äquivarianz zu Sub-Pixel-Verschiebung (und optionalen Drehung) in allen Schichten des generativen neuronalen Netzwerks 100 äquivalent ist.
  • Visuelle Äquivarianz zu Sub-Pixel-Verschiebung bedeutet, dass ein horizontales Verschieben eines Abschnitts der Merkmalskarte 141 eine Verschiebung in einem entsprechenden Abschnitt jeder anschließenden Merkmalskarte 142 und 143 und den Ausgangsdaten veranlassen sollte und keine andere Wirkung aufweisen. Auf ähnliche Weise bedeutet Äquivarianz zu Drehung, dass das Drehen eines Abschnitts der Merkmalskarte 141 einen entsprechenden Abschnitt jeder anschließenden Merkmalskarte 142 und 143 und die Ausgangsdaten drehen sollten und keine andere Wirkung aufweisen. Bruchteil- oder Sub-Pixel- Verschiebung und -Verdrehung ist in der diskreten Form der Merkmalskarten 141, 142 und 143 schlecht definiert, jedoch für die kontinuierlichen Form 145, 146 und 147 gut definiert.
  • Bei erneuter Berücksichtigung der Signalverarbeitungsaspekte von herkömmlichen generativen neuronalen Netzwerken sind die herkömmlichen Upsampling-Filter einfach nicht aggressiv genug beim Unterdrücken von Aliasing und extreme hohe Qualität mit über 100 dB Stoppbanddämpfung kann erforderlich sein. Eine prinzipielle Lösung zu Aliasing, das durch punktweise Nichtlinearitäten erzeugt wird, kann durch Berücksichtigen der Wirkungen der punktweisen Nichtlinearitäten in der kontinuierlichen Domäne und geeignetes Tiefpassfiltern der Ergebnisse gefunden werden. Des Weiteren kann das Beschränken von Faltungsoperationen auf 1×1 Kerne ein starkes, Drehungsäquivariantes generatives neuronales Netzwerk 100 ergeben. Sobald Aliasing angemessen unterdrückt ist, um das generative neuronale Netzwerk 100 zu zwingen, eine natürlichere hierarchische Verfeinerung zu implementieren, ändert sich der Betrieb des generativen neuronalen Netzwerks 100 drastisch: Einzelheiten werden zu darunterliegenden Oberflächen korrekt beigefügt, wie in 1C gezeigt.
  • Obwohl sogar Daten als Werte in einem Pixelgitter gespeichert werden können, wie beispielsweise die diskreten Merkmalskarten 141, 142 und 143, sollte nicht angenommen werden, dass die Werte ein Signal direkt repräsentieren, das durch die Schichten des generativen neuronalen Netzwerks 100 verarbeitet wird. Gemäß dem Nyquist-Shannon-Abtastungstheorem kann ein regelmäßig abgetastetes Signal ein beliebiges kontinuierliches Signal darstellen, das Frequenzen zwischen null und der halben Abtastrate enthält. Es sei eine zweidimensionale, diskret abgetastete Merkmalskarte Z[x] betrachtet, die aus einem regelmäßigen Gitter von Dirac- Impulsen von variierenden Größen besteht, die 1/s Einheiten voneinander beabstandet sind, wobei s die Abtastrate ist. Dies ist analog zu einem unendlichen zweidimensionalen Gitter von Werten.
  • Bei gegebenen Z[x] und s gibt die Whittaker-Shannon Interpolationsformel an, dass die entsprechende kontinuierliche Darstellung z(x) durch Falten des diskret abgetasteten Dirac-Gitters Z[x] mit einem idealen Interpolationsfilter ϕs, d.h., z(x) = (ϕs) * Z) (x) erhalten wird, wobei * kontinuierliche Faltung und ϕs(x) = sinc(sx0) · sinc(sx1) unter Verwendung der Signalverarbeitungskonvention der Definierens von sine (x) = sin(πx)/ (πx) bezeichnet. ϕs weist eine Bandgrenze von s/2 entlang den horizontalen und vertikalen Dimensionen auf, die sicherstellt, dass die sich ergebenden kontinuierlichen Signale alle Frequenzen erfassen, die mit Abtastrate s dargestellt werden können.
  • 1E ist ein Konzeptdiagramm, das diskrete und kontinuierliche Darstellungen von Merkmalskarten zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung veranschaulicht. Eine diskrete Darstellung Z einer diskreten Merkmalskarte 150 und eine kontinuierliche Darstellung z einer kontinuierlichen Merkmalskarte 155 stehen miteinander über eine Faltung mit idealem Interpolationsfilter ϕs (Beispielfilter 160) und punktweiser Multiplikation mit einem Dirac-Kamm IIIs (Dirac-Kamm 165) in Beziehung.
  • Die Umwandlung der kontinuierlichen Merkmalskarte 155 in die Domäne der diskrete Merkmalskarte 150 entspricht dem Abtasten der kontinuierlichen Signalen z(x) bei den Abtastpunkten von Z[x], die definiert sein können, um die halbe Abtastbeabstandung versetzt zu sein, in den als Kreise gezeigte „Pixelmitten“ zu liegen. Das Abtasten der kontinuierlichen Merkmalskarte kann ausgedrückt werden als punktweise Multiplikation mit einem zweidimensionalen Dirac-Kamm  III s ( x ) = Σ X Z 2 δ ( x x + 1 2 s ) .
    Figure DE102022114518A1_0001
  • Das Einheitsquadrat x ∈ [0, 1]2 in z(x) (kontinuierliche Merkmalskarte 155) kann als eine Leinwand für das Signal von Interesse gekennzeichnet werden. In der diskreten Merkmalskarte 150 Z[x] gibt es s2 diskrete Abtastungen in dem Einheitsquadrat, wobei jedoch die Faltung mit dem Beispielfilter 160 ϕs bedeutet, dass Werte von Z[x] außerhalb des Einheitsquadrats ebenfalls z(x) innerhalb desselben beeinflussen. Somit ist das Speichern einer s × s Pixel Merkmalskarte nicht ausreichend; in Theorie würde die gesamte unendliche Z[x] gespeichert werden müssen. Als praktische Lösung kann Z[x] als zweidimensionale Anordnung gespeichert werden, die ein Region abdeckt, die geringfügig größer als das Einheitsquadrat ist. Beispielsweise wird jede Merkmalskarte 141, 142 und 143 erweitert, um mindestens einen zusätzliche Merkmalswert in jeder Dimension zu umfassen. Das Erweitern der Merkmalskarten beseitigt haftende Artefakte, die durch die Grenzen verursacht werden. Aliasing, das sich aus den diskreten Verarbeitungsoperationen ergibt, bleibt jedoch und kann verringert oder beseitigt werden, wie ferner hier beschrieben.
  • Mit festgestellter Korrespondenz zwischen der bandbegrenzten kontinuierlichen Merkmalskarte 155 z(x) und der diskret abgetasteten Merkmalskarte 150 Z[x] kann die gewöhnliche pixelzentrische Ansicht der Signale zugunsten eines kontinuierlichen Signals ignoriert werden. Im Kontext der folgenden Beschreibung wird z(x) interpretiert, als das tatsächliche Signal zu sein, an dem gearbeitet wird, und die diskret abgetastete Merkmalskarte 150 Z[x] ist lediglich eine zweckmäßige Codierung für die kontinuierliche Merkmalskarte 155 z (x) .
  • Praktische neuronale Netzwerke arbeiten an den diskret abgetasteten Merkmalskarten, wie beispielsweise der diskreten Merkmalskarte 150. Es sei die Operation F (Faltung, Nichtlinearität usw.) betrachtet, die an einer diskreten Merkmalskarte: Z' = F(Z) arbeitet. Die diskrete Merkmalskarte (z.B., diskrete Merkmalskarte 150) weist ein entsprechendes kontinuierliches Gegenstück auf (z.B., die kontinuierliche Merkmalskarte 155), so dass es eine entsprechende Abbildung in der kontinuierlichen Domäne gibt: z'= f(z). Nun kann eine in einer Domäne spezifizierte Operation ersichtlich sein, eine entsprechende Operation in der anderen Domäne durchzuführen: f ( z ) = Φ s , F ( III s z ) ,  F ( Z ) = III s , f ( Φ s Z ) ,
    Figure DE102022114518A1_0002
    wobei ⊙ punktweise Multiplikation bezeichnet und s und s' die Eingangs- und Ausgangsabtastraten sind.
  • Die Operation f ist äquivariant mit Bezug auf eine räumliche Transformation t der 2D-Ebene, wenn die Operation f mit der räumlichen Transformation t in der kontinuierlichen Domäne: t · f = f · t kommutiert. Es sei bemerkt, dass, wenn Eingaben auf s/2 bandbegrenzt sind, eine äquivariante Operation keinen Frequenzinhalt oberhalb der Ausgabe Bandgrenze von s'/2 erzeugen darf, da andernfalls keine wahrheitsgetreue diskrete Ausgabedarstellung existiert. Wenn der Frequenzinhalt der kontinuierlichen Merkmalskarte 155 beispielsweise zunimmt, kann es ebenfalls notwendig sein, die Abtastrate zu erhöhen, um sicherzustellen, dass Einzelheiten in der kontinuierlichen Domäne in der diskreten Domäne dargestellt werden können. Die fehlende Verwendung einer ausreichenden Abtastrate führt zu Aliasing, das als haftende Artefakte in jeder Ebene der diskreten Merkmalskarte und der Ausgabe erscheint. Die haftenden Artefakte verschieben sich nicht äquivariant mit Bezug auf die Eingabe. Gemäß dem Nyquist-Shannon-Abtastungstheorem können regelmäßig abgetastete diskrete Merkmalskarten kontinuierliche Merkmalskarten darstellen, die Frequenzen zwischen null und der halben Abtastrate enthalten.
  • Im Fall von Drehungs-Äquivarianz ist die spektrale Beschränkung etwas strenger - Drehen eines Bildes entspricht dem Drehen des Spektrums und um die Bandgrenze in sowohl horizontaler als auch vertikaler Richtung zu garantieren, muss das Spektrum auf eine Scheibe mit Radius s'/2 begrenzt sein. Dies findet sowohl auf die anfängliche Netzwerkeingabe sowie auch auf das Bandbegrenzungsfilter Anwendung, das zum Downsampling verwendet werden, wie ferner hier beschrieben.
  • Die primitiven Operationen in einem typischen generativen neuronalen Netzwerk umfassen Faltung, Upsampling, Downsampling und Nichtlinearität. Ohne Verlust von Allgemeinheit werden die Operationen als auf eine einzige Merkmalskarte wirkend beschrieben: eine punktweise lineare Kombination von Merkmalen weist keine Wirkung auf die Analyse auf. Es sei eine Standardfaltung mit einem diskreten Kern K betrachtet. K kann als Belegen des gleichen Gitters wie die Eingangsmerkmalskarte mit der Abtastrate s interpretiert werden. Die diskrete Domänenoperation ist einfach Fconv (Z)= K * Z und die entsprechende kontinuierliche Operation wird aus Gl. (1) erhalten: f conv ( z ) = Φ s ( III s z ) ) = K Φ s ( III s z ) ) = K z
    Figure DE102022114518A1_0003
    aufgrund der Kommutativität von Faltung und der Tatsache, dass Diskretisierung gefolgt von Faltung mit idealem Tiefpassfilter, beide mit gleicher Abtastrate s, eine Identitätsoperation ist, d.h., ϕs * (IIIs⊙z) = z. Mit anderen Worten arbeitet die Faltung durch kontinuierliches Schieben des diskretisierten Kerns über die kontinuierliche Darstellung der Merkmalskarte. Die Faltung führt keine neuen Frequenzen ein, so dass die Bandbegrenzungsanforderungen für sowohl Verschiebungs- als auch Drehungsäquivarianz erfüllt werden.
  • Faltung kommutiert ebenfalls mit Verschiebung in der kontinuierlichen Domäne und somit ist die Faltungsoperation äquivariant gegenüber Verschiebung. Für Drehungsäquivarianz muss der diskrete Kern K radial symmetrisch sein. In einer Ausführungsform sind symmetrische 1×1 Faltungskerne, trotz ihrer Einfachheit, eine brauchbare Wahl für Drehungsäquivariante generative neuronale Netzwerke.
  • Eine ideale Upsampling-Operation modifiziert nicht die kontinuierliche Darstellung, da der Zweck des Upsampling ist, die Ausgabeabtastrate zu erhöhen (s' > s), um Spielraum in dem Spektrum hinzufügen, wobei anschließende Schichten des generativen neuronalen Netzwerks 100 zusätzlichen Inhalt einführen können. Verschiebungs- und Drehungsäquivarianz folgen direkt vom Upsampling, das eine Identitätsoperation in der kontinuierlichen Domäne ist. Mit fup(z) = z ist die diskrete Operation gemäß G1. (1) gleich Fup(Z) = (IIIs,⊙(ϕs * Z)). Durch Wählen s' = ns mit Ganzzahl n, kann die diskrete Operation durch erstes Verschachteln Z mit Nullen implementiert werden, um ihre Abtastrate zu erhöhen, und dann Falten der verschachtelten Z mit einem diskretisierten Downsampling-Filter IIIs,⊙ϕs implementiert werden.
  • Im Downsampling ist z tiefpassgefiltert, um Frequenzen oberhalb der Ausgabebandgrenze zu entfernen, so dass die Signale wahrheitsgetreu in der groben Diskretisierung dargestellt werden können. Die Operation in der kontinuierlichen Domäne ist fdown(z) = ψs, *z, wobei ein ideales Tiefpassfilter ψs := s2 · ϕs einfach das entsprechende Interpolationsfilter normiert auf Einheitsmasse ist. Das diskrete Gegenstück ist F down ( Z ) = III s , ( ψ s , ( Φ s Z ) ) = 1 s 2 III s' ( ψ s' ψ s Z ) = ( s ' s ) 2 III s ' III s' ( Φ s ' Z ) .
    Figure DE102022114518A1_0004
     
    Figure DE102022114518A1_0005
    Die letztere Gleichung folgt aus ψs* ψs' = ψmin(s,s'). Auf ähnliche Weise zum Upsampling kann Downsampling durch einen ganzzahligen Bruchteil mit einer diskreten Faltung gefolgt durch Streichen von Abtastpunkten implementiert werden. Verschiebungs-Äquivarianz folgt automatisch von der Kommutativität von fdown(z) mit Verschiebung, wobei jedoch für Drehungs-Äquivarianz ϕs, mit einem radial symmetrischen Filter mit einem scheibenförmigen Frequenzgang ersetzt muss. Das ideale derartige Filter wird durch Φ s ° ( x ) = jin ( s x ) = 2 J 1 ( π s x )
    Figure DE102022114518A1_0006
     
    Figure DE102022114518A1_0007
    gegeben, wobei J1 die Bessel-Funktion der ersten Art ist.
  • Das Anwenden einer punktweisen Nichtlinearität σ in der diskreten Domäne kommutiert nicht mit bruchteiliger Verschiebung oder Drehung. In der kontinuierlichen Domäne kommutiert jede punktweise Funktion jedoch trivial mit geometrischen Transformationen und ist somit äquivariant zu Verschiebung und Drehung. Das Erfüllen der Bandbegrenzungs-Beschränkung ist eine andere Herausforderung - das Anwenden z.B. einer ReLU in der kontinuierlichen Domäne kann willkürlich hohe Frequenzen einführen, die in der diskretisierten Ausgabe nicht dargestellt werden können.
  • Eine natürliche Lösung für punktweise Nichtlinearitäten ist, den verletzenden hochfrequenten Inhalt durch Falten des kontinuierlichen Ergebnisses mit dem idealen Tiefpassfilter ψs zu beseitigen. Dann ist die kontinuierlichen Darstellung der Nichtlinearität fσ(z) = ψs * σ(z) = s2 · ϕs * σ(z) und das diskrete Gegenstück ist Fσ(Z) = s2 · IIIss * σ(ϕs * Z)) . Die diskrete Operation kann nicht ohne vorübergehendes Eintreten in die kontinuierlichen Darstellung realisiert werden. Die kontinuierliche Darstellung kann durch Upsampling des Signals, Anwenden der Nichtlinearität bei der höheren Auflösung und Downsampling des Ergebnisses danach approximiert werden. Obwohl sogar die Nichtlinearität immer noch in der diskreten Domäne durchgeführt wird, ist in einer Ausführungsform lediglich eine 2x vorübergehende Auflösung für Äquivarianz hoher Qualität ausreichend. Für Drehungsäquivarianz sollte das radiale symmetrische Tiefpassfilter Φ s °
    Figure DE102022114518A1_0008
    bei dem Downsampling-Schritt verwendet werden, wie oben erläutert.
  • Es sei bemerkt, dass Nichtlinearität die einzige Operation ist, die imstande ist, neuere Frequenzen in dem generativen neuronalen Netzwerk 100 zu erzeugen, und dass der Bereich der neuen Frequenzen durch Anwenden eines Rekonstruktionsfilters mit einer niedrigeren Grenze als s/2 vor der endgültigen Diskretisierungsoperation begrenzt werden kann. Das Rekonstruktionsfilter stellt genaue Steuerung darüber bereit, wie viel neue Information durch jede Schicht des generativen neuronalen Netzwerks 100 eingeführt wird. Zusammenfassend kann eine punktweise nichtlineare Operation willkürlich hohe Frequenzen in der kontinuierlichen Domäne σ(z) erzeugen. Tiefpassfiltern mit ϕs ist erforderlich, um sicherzustellen, dass Z' ein Ergebnis der punktweisen nichtlinearen Operation in der diskreten Domäne erfasst. Ein generatives neuronales Netzwerk kann konvertiert werden, um vollständig äquivariant bis zu einem gewünschten Grad von Genauigkeit zu Verschiebung und Drehung zu sein, indem die theoretischen Ideen zur Durchführung von Faltung, Upsampling, Downsampling und punktweisen nichtlinearen Operationen in der Praxis angewandt werden, was zu in einem generativen neuronalen Netzwerk mit verringertem Aliasing, wie beispielsweise dem generativen neuronalen Netzwerk 100, führt.
  • In einer Ausführungsform umfasst das generative neuronale Netzwerk 100 ein Abbildungsnetzwerk und ein Synthesenetzwerk G. Das Abbildungsnetzwerk transformiert einen anfänglichen, normal verteilten latenten Wert in einen latenten Zwischencode w ~ W. Das Synthesenetzwerk empfängt eine gelernte 4x4x512 Konstante Z0 (d.h., Eingangsmerkmale) oder Fourier-Merkmale und wendet eine Sequenz von N Schichten an - die Faltungen, Nichtlinearitäten, Upsampling und (optional) Pro-Pixel-Rauschen umfassen -, um ein Ausgabebild ZN = G(Z0; w) zu erzeugen. In einer Ausführungsform steuert der latente Zwischencode w die Modulation der Faltungskerne in G. In einer Ausführungsform folgen die Schichten einem starren 2x Upsampling-Plan, wobei zwei Schichten bei jeder Auflösung ausgeführt werden und die Anzahl von Merkmalskarten nach jedem Upsampling halbiert wird. In einer Ausführungsform approximiert das Upsampling diskreter Daten um 2x kontinuierliche Daten und ist ausreichend, um die Einführung von Aliasing während der anschließenden punktweisen nichtlinearen Operation erheblich zu verringern oder zu verhindern. In einer Ausführungsform ist das Upsampling größer als 2x, um kontinuierliche Daten besser zu approximieren.
  • Das Verringern oder Beseitigen von Aliasing macht jede Schicht von G äquivariant mit Bezug auf das kontinuierliche Signal, so dass alle feineren Einzelheiten zusammen mit den gröberen Merkmalen einer lokales Nachbarschaft transformier werden. Wenn erfolgreich, wird das gesamte generative neuronale Netzwerk 100 auf ähnliche Weise äquivariant. Mit anderen Worten wird die kontinuierliche Operation g des Synthesenetzwerks äquivariant mit Bezug auf Transformationen t (Verschiebungen und Drehungen) gemacht, die auf die kontinuierliche Eingabe z0: g(t[z0]; w) = t[g(z0; w)] angewandt wird.
  • 2A veranschaulicht Blockdiagramme einer beispielhaften Verarbeitungsschicht 205 für ein herkömmliches generatives neuronales Netzwerk und einer beispielhaften Verarbeitungsschicht 200 für ein generatives neuronales Netzwerk mit verringertem Aliasing, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Es sei zu verstehen, dass diese und andere hier beschriebene Anordnungen lediglich als Beispiele dargelegt sind. Andere Anordnungen und Elemente (z.B., Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen usw.) können verwendet werden, um zusätzlich zu oder anstatt jene gezeigt und einige Elemente können insgesamt weggelassen sind. Ferner werden viele der hier beschriebenen Elemente funktionale Entitäten, die als diskrete oder verteilte Komponenten oder in Verbindung mit andere Komponenten und in jeder geeigneten Kombination und Ort. Verschiedene Funktionen, die hier beschrieben werden, als durch Entitäten ausgeführt zu werden, durch Hardware, Firmware und/oder Software ausgeführt sind. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt.
  • Des Weiteren versteht sich für Durchschnittsfachleute, dass jedes beliebige System, welches die Operationen des generativen neuronalen Netzwerks 100 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Offenbarung fällt.
  • Sowohl das herkömmliche generative neuronale Netzwerk als auch das generative neuronale Netzwerk 100 umfassen ein Abbildungsnetzwerk und ein Synthesenetzwerk G. Wie zuvor beschrieben, transformiert das Abbildungsnetzwerk den latenten Code in einen latenten Zwischencode w ~ W. Das Synthesenetzwerk empfängt Eingangsmerkmale Z0 und wendet eine Sequenz von N Schichten an - die Faltungen, Nichtlinearitäten und Upsampling umfassen -, um ein Ausgabebild ZN = G(Z0; w) zu erzeugen. Der latente Zwischencode w steuert die Modulation der Faltungskerne in G.
  • Die Schicht 205 ist in einem herkömmlichen Synthesenetzwerk enthalten und empfängt Eingangsdaten niedriger Auflösung, wie beispielsweise eine Merkmalskarte, und erzeugt Aliasing-Zwischendaten. Die Schicht 205 umfasst einen Faltungsoperator 210, der ebenfalls empfängt Modulationsteuerungen (nicht gezeigt) von dem Abbildungsnetzwerk empfängt und Zwischendaten 212 erzeugt. Eine ReLU 215 verarbeitet die Zwischendaten 212, um verarbeitete Zwischendaten 217 zu erzeugen. Die verarbeiteten Zwischendaten 217 werden optional durch einen zweifachen Upsampler 220 verarbeitet, um verarbeitete Aliasing-Zwischendaten (z.B., Merkmalskarte) zu erzeugen. Aliasing kann durch die ReLU 215 und den zweifachen Upsampler 220 eingeführt sind. Techniken basierend auf der kontinuierlichen Analyse können verwendet werden, um das Aliasing von jeder der Operationen in dem generativen neuronalen Netzwerk 100 mit verringertem Aliasing zu verringern oder zu entfernen.
  • Die Schicht 200 ist im Vergleich mit der Schicht 205 modifiziert und kann als eine oder mehrere Stufen in einem Synthesenetzwerkabschnitt des generativen neuronalen Netzwerks 100 mit verringertem Aliasing umfasst sein. Die Schicht 200 empfängt Eingangsdaten niedriger Auflösung, wie beispielsweise eine Merkmalskarte, und erzeugt verarbeitete Zwischendaten mit verringertem Aliasing im Vergleich mit den durch die Schicht 205 erzeugten Aliasing-Zwischendaten. Die Schicht 200 umfasst einen Faltungsoperator 230, der ebenfalls Modulationssteuerungen (nicht gezeigt) von dem Abbildungsnetzwerk empfängt und Zwischendaten 232 erzeugt. In einer Ausführungsform kann der Faltungsoperator 230 konfiguriert sein, um einen N×N Faltungskern zu verwenden, wobei N=1 für Drehungs-Äquivarianz ist.
  • Ein Upsampler 235 verarbeitet die Zwischendaten 232, um Zwischendaten vergrößerter Auflösung 237 (z.B., Merkmalskarte) zu erzeugen. In einer Ausführungsform kann der Upsampler 235 konfiguriert sein, um ein zweifaches oder vierfaches Upsampling durchzuführen. Die Zwischendaten vergrößerter Auflösung 237 werden durch eine punktweisen Nichtlinearitätsoperation 240 verarbeitet, um verarbeitete Zwischendaten vergrößerter Auflösung 242 zu erzeugen. In einer Ausführungsform führt der punktweise Nichtlinearitätsoperator 240 eine ReLU-Operation durch. In einer Ausführungsform verringert Upsampling der Zwischendaten 232 Aliasing während der Anwendung der punktweisen Nichtlinearität.
  • Die verarbeiteten Zwischendaten vergrößerter Auflösung 242 werden dann durch einen Downsampler 245 abwärtsabgetastet, um die verarbeiteten Zwischendaten zu erzeugen. In einer Ausführungsform tastet der Downsampler 245 die verarbeiteten Zwischendaten vergrößerter Auflösung 242 um das Zweifache ab, um die verarbeiteten Zwischendaten bei einer ursprünglichen Auflösung der Zwischendaten 232 zu erzeugen. In einer Ausführungsform enthalten die Zwischendaten 232 lediglich räumliche Frequenzen bei oder unter einer halben Abtastrate einer ursprünglichen Auflösung der Zwischendaten 232. In einer Ausführungsform gleicht eine Rate des Upsampling einer Rate des Downsampling. In einer Ausführungsform ist eine Rate des Upsampling das Zweifache einer Rate des Downsampling. In einer Ausführungsform ist eine Rate des Downsampling das Zweifache einer Rate des Upsampling. In einer Ausführungsform führen der Faltungsoperator 230, der Upsampler 235, der punktweise Nichtlinearitätsoperator 240 und der Downsampler 245 Operationen durch, die zur Verschiebung und/oder Drehung äquivariant sind.
  • In einer Ausführungsform wird mindestens eines von dem Faltungsoperator 230, dem Upsampler 235, dem punktweisen Nichtlinearitätsoperator 240 und dem Downsampler 245 auf einem Server oder in einem Rechenzentrum implementiert und die Ausgangsdaten hoher Auflösung werden zu einer Benutzervorrichtung gestreamt. In einer Ausführungsform wird mindestens eines von dem Faltungsoperator 230, dem Upsampler 235, dem punktweisen Nichtlinearitätsoperator 240 und dem Downsampler 245 innerhalb einer Cloud-Rechenumgebung implementiert. In einer Ausführungsform wird mindestens eines von dem Faltungsoperator 230, dem Upsampler 235, dem punktweisen Nichtlinearitätsoperator 240 und dem Downsampler 245 zum Trainieren, Testen oder Zertifizieren eines neuronalen Netzwerks implementiert, das in einer Maschine, einem Roboter oder einem autonomen Fahrzeug eingesetzt wird. In einer Ausführungsform ist mindestens eines von dem Faltungsoperator 230, dem Upsampler 235, dem punktweisen Nichtlinearitätsoperator 240 und dem Downsampler 245 auf einer virtuellen Maschine implementiert, die einen Abschnitt einer Graphikverarbeitungseinheit umfasst.
  • 2B veranschaulicht ein Ablaufdiagramm eines Verfahrens 250 zum Approximieren von aliasfreien Operationen gemäß einer Ausführungsform. Jeder Block des hier beschrieben Verfahrens 250 umfasst ein Rechenverfahren, das mit einer beliebigen Kombination von Hardware, Firmware und/oder Software durchgeführt werden kann. So können beispielsweise verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Das Verfahren 230 kann ebenfalls als computerverwendbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. Das Verfahren kann durch eine eigenständige Anwendung, einen Dienst oder gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder einem Plug-in in ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Außerdem wird das Verfahren 250 beispielhaft mit Bezug auf das System von 2A beschrieben. Dieses Verfahren kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, jedoch nicht beschränkt auf jene, die hier beschrieben sind. Des Weiteren versteht sich für Durchschnittsfachleute, dass jedes beliebige System, welches das Verfahren 250 ausführt, in den Umfang und das Wesen von Ausführungsformen der vorliegenden Offenbarung fällt.
  • Ein neuronales Netzwerkmodell empfängt Eingangsdaten niedriger Auflösung, die durch eine Sequenz von Stufen verarbeitet werden, um Ausgangsdaten hoher Auflösung zu erzeugen. In einer Ausführungsform ist das neuronale Netzwerkmodell das generative neuronale Netzwerk 100 mit verringertem Aliasing. In einer Ausführungsform umfasst die Verarbeitung für jede Operation, die in der Sequenz von Stufen durchgeführt wird, die eine punktweise Nichtlinearität auf Zwischendaten bei einer ursprünglichen Auflösung anwendet, Upsampling und Downsampling. In einer Ausführungsform führen eine oder mehrere Schichten des neuronalen Netzwerkmodells das Verfahren 250 durch. In einer Ausführungsform sind die eine oder mehrere Schichten die Schicht 200. In einer Ausführungsform werden die Eingangsdaten niedriger Auflösung von einem Faltungsoperator verarbeitet, um die Zwischendaten zu erzeugen.
  • Bei Schritt 260 werden die Zwischendaten aufwärtsabgetastet, um Zwischendaten vergrößerter Auflösung zu erzeugen. Bei Schritt 265 wird die punktweise Nichtlinearität auf die Zwischendaten vergrößerter Auflösung angewandt, um verarbeitete Zwischendaten vergrößerter Auflösung zu erzeugen. Bei Schritt 270 werden die verarbeiteten Zwischendaten vergrößerter Auflösung abwärtsabgetastet, um verarbeitete Zwischendaten zu erzeugen. In einer Ausführungsform entsprechen die verarbeiteten Zwischendaten den Ausgangsdaten des generativen neuronalen Netzwerks 100 mit verringertem Aliasing. In einer Ausführungsform wird eine linearen Transformation an den verarbeiteten Zwischendaten durchgeführt, um die Ausgangsdaten zu erzeugen.
  • In einer Ausführungsform enthalten die Zwischendaten keine räumlichen Frequenzen oberhalb einer halben Abtastrate der ursprünglichen Auflösung. In einer Ausführungsform gleicht eine Rate des Upsampling gleich einer Rate des Downsampling und die verarbeiteten Zwischendaten sind bei der ursprünglichen Auflösung. In einer Ausführungsform ist eine Rate des Upsampling das Zweifache einer Rate des Downsampling und die verarbeiteten Zwischendaten sind bei dem Zweifachen der ursprünglichen Auflösung. In einer Ausführungsform ist eine Rate des Downsampling das Zweifache einer Rate des Upsampling. In einer Ausführungsform approximiert das Upsampling kontinuierliche Daten und verringert Aliasing während der Anwendung der punktweisen Nichtlinearität. In einer Ausführungsform ist das neuronale Netzwerkmodell ein Generator und die Ausgangsdaten hoher Auflösung sind ein Bild.
  • 2C veranschaulicht Merkmalskarten 251 und 252, die durch ein herkömmliches generatives neuronales Netzwerk erzeugt werden, und Merkmalskarten 261, 262, 271 und 272, die durch das generative neuronale Netzwerk mit verringertem Aliasing erzeugt werden, gemäß einer Ausführungsform. Die Merkmalskarten sind interne Darstellungen der verarbeiteten Zwischendaten, die durch eine Schicht des neuronalen Netzwerks erzeugt werden. Die Merkmalskarten 251 und 252 werden durch Schichten eines herkömmlichen generativen neuronalen Netzwerks erzeugt, wobei die Merkmalskarte 251 gröber im Vergleich mit der Merkmalskarte 252 ist. Es sei bemerkt, dass jedes Paar von Merkmalskarten (z.B., 251 und 252) verarbeitet wird, um ein Bild einer unterschiedlichen Person zu erzeugen. Obwohl sogar die resultierenden Bilder unterschiedlich sind, sind Charakteristiken der Merkmalskarten 251 und 252 ziemlich unterschiedlich im Vergleich mit den Merkmalskarten 261, 262, 271 und 272. Die Merkmalskarten 251 und 252 scheinen Signalgrößen zu codieren.
  • Die Merkmalskarten 261, 262, 271 und 272 werden durch Schichten eines generativen neuronalen Netzwerks mit verringertem Aliasing erzeugt, wobei die Merkmalskarten 261 und 271 gröber im Vergleich mit den Merkmalskarten 262 und 272 sind. Im Gegensatz zu den Merkmalskarten 251 und 252 scheinen die Merkmalskarten 261, 262, 271 und 272 Phaseninformationen zu codieren. Die Phaseninformationen werden für das generative neuronale Netzwerk benötigt, um Einzelheiten auf Oberflächen zu synthetisieren, weil sich das generative neuronale Netzwerk nicht auf das Pixelkoordinatensystem stützen kann und stattdessen ein Koordinatensystem lernen muss. Die Existenz eines Koordinatensystems, das eine genaue Lokalisierung auf den Oberflächen von Objekten ermöglicht, sollte sich in verschiedenen Anwendungen, einschließlich fortgeschrittener Bild- und Videobearbeitung, als nützlich erweisen.
  • Die Merkmalskarten 261 und 262 sind Verschiebungs-äquivariant im Vergleich mit den Merkmalskarten 251 und 252. Die Merkmalskarten 271 und 272 sind sowohl Verschiebungs- als auch Drehungs-Äquivariant. Genauer gesagt werden die Faltungsoperationen verwendet, um die Merkmalskarten 271 und 272 begrenzt auf N=1 zu erzeugen und ein radial symmetrisches Downsampling-Filter wird für verbesserte Drehungs-Äquivarianz verwendet. Im Gegensatz dazu werden die Faltungsoperationen verwendet, um die Merkmalskarten 261 und 262 mit N=3 zu erzeugen. Emergente positionelle Codierungsmuster scheinen in den Merkmalskarten 271 und 272 im Vergleich mit den Merkmalskarten 261 und 262 etwas besser definiert zu sein.
  • Im Gegensatz zu herkömmlichen Systemen legt das generative neuronale Netzwerk 100 mit verringertem Aliasing Einzelheiten in Ausgangsdaten an Merkmalen in den Zwischendaten pro Schicht an, anstatt die Einzelheiten an Bildkoordinaten (z.B., Pixel) zu befestigen. Das generative neuronale Netzwerk 100 mit verringertem Aliasing stellt erhebliche Verbesserungen zum Erzeugen vom Video und Animation bereit. Das Interpretieren sämtlicher Signale in den Schichten 200 des generativen neuronalen Netzwerks 100 mit verringertem Aliasing als kontinuierlich garantiert, dass ungewünschte Informationen nicht in den hierarchischen Syntheseprozess lecken können.
  • Die Schichten 200 des generativen neuronalen Netzwerks 100 mit verringertem Aliasing sind sogar bei Subpixel-Maßstäben äquivariant gegenüber Verschiebung und Drehung. Im Vergleich mit herkömmlichen Implementierungen von generativen neuronalen Netzwerken stellen die Faltung, Upsampling, Downsampling und punktweisen nichtlinearen Funktionen in der Schicht 200 verringertes Aliasing oder aliasfreien Betrieb für das generative neuronale Netzwerk 100 bereit.
  • Parallelverarbeitungsarchitektur
  • 4 veranschaulicht eine Parallelverarbeitungseinheit (Parallel Processing Unit; PPU) 400 gemäß einer Ausführungsform. Die PPU 400 kann verwendet werden, um das Verfahren 250 zu implementieren. Die PPU 400 kann verwendet werden, um das generative neuronale Netzwerk 100 und/oder die Schicht zu implementieren. In einer Ausführungsform kann ein Prozessor, wie beispielsweise die PPU 400, konfiguriert sein, um ein neuronales Netzwerkmodell zu implementieren. Das neuronale Netzwerkmodell kann als Softwareanweisungen implementiert sein, die durch den Prozessor ausgeführt werden, oder in einer anderen Ausführungsformen kann der Prozessor eine Matrix von Hardwareelementen umfassen, die konfiguriert sind, einen Satz von Eingaben (z.B. elektrische Signale, die Werte repräsentieren) zu verarbeiten, um einen Satz von Ausgaben zu erzeugen, die Aktivierungen des neuronalen Netzwerkmodells darstellen können. In noch anderen Ausführungsformen kann das neuronale Netzwerkmodell als eine Kombination von Softwareanweisungen und einer Verarbeitung implementiert sein, die durch eine Matrix von Hardwareelementen ausgeführt wird. Das Implementieren des neuronalen Netzwerkmodells kann das Bestimmen eines Satzes von Parametern für das neuronale Netzwerkmodell durch z.B. ein überwachtes oder unüberwachtes Training des neuronalen Netzwerkmodells sowie auch oder alternativ das Durchführen einer Inferenz unter Verwendung des Satzes der Parameter umfassen, um neue Sätze von Eingaben zu verarbeiten.
  • In einer Ausführungsform ist die PPU 400 ein Multi-Threaded-Prozessor bzw. mehrsträngiger Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 400 ist eine Latenz-verbergende Architektur, die ausgestaltet ist, um eine große Anzahl von Threads bzw. Strängen parallel zu verarbeiten. Ein Thread bzw. Strang (z.B. ein Ausführungsthread) ist eine Instanziierung eines Satzes von Anweisungen, die konfiguriert sind, um von der PPU 400 ausgeführt zu werden. In einer Ausführungsform ist die PPU 400 eine Graphikverarbeitungseinheit (GPU), die konfiguriert ist, um eine Graphik-Rendering-Pipeline zur Verarbeitung von dreidimensionalen (3D) Graphikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung zu erzeugen. In anderen Ausführungsformen kann die PPU 400 zum Durchführen von Allzweckberechnungen benutzt werden. Während ein beispielhafter paralleler Prozessor hier für veranschaulichende Zwecke bereitgestellt wird, sei nachdrücklich bemerkt, dass ein derartiger Prozessor lediglich für veranschaulichende Zwecke dargelegt wird und dass ein beliebiger Prozessor benutzt werden kann, um dasselbe zu ergänzen und/oder zu ersetzen.
  • Eine oder mehrere PPUs 400 können konfiguriert sein, um Tausende von HPC(High Performing Computing)-, Rechenzentrum-, Cloud-Computing- und Maschinenlern-Anwendungen zu beschleunigen. Die PPU 400 kann konfiguriert sein, um zahlreiche Deep-Learning-Systeme und Anwendungen für autonome Fahrzeuge, Simulation, Rechengraphik, wie beispielsweise Strahlen- oder Pfadverfolgung, Deep-Learning, hochgenaue Sprache, Bild- und Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Wirkstoffentdeckung, Krankheitsdiagnose, Wettervorhersage, Analyse großer Datenmengen, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotertechnik, Fabrikautomation, Sprachübersetzung in Echtzeit, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und dergleichen zu beschleunigen.
  • Wie in 4 gezeigt, umfasst die PPU 400 eine Eingabe/Ausgabe(E/A)-Einheit 405, eine Frontend-Einheit 415, eine Planereinheit 420, eine Arbeitsverteilungs-Einheit 425, einen Hub 430, eine Kreuzschiene (Xbar) 470, einen oder mehrere allgemeine Verarbeitungscluster (GPCs) 450 und eine oder mehrere Speicherpartitionseinheiten 480. Die PPU 400 kann mit einem Host-Prozessor oder anderen PPUs 400 über eine Zwischenverbindung des Hochgeschwindigkeits-NVLink 410 verbunden sein. Die PPU 400 kann ebenfalls mit einem Host-Prozessor oder anderen peripheren Vorrichtungen über eine Zwischenverbindung 402 verbunden sein. Die PPU 400 kann ebenfalls mit einem lokalen Speicher 404 verbunden sein, der eine Anzahl von Speichervorrichtungen umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von Direktzugriffsspeicher(DRAM)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als ein HBM(Speicher mit hoher Bandbreite)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt sind.
  • Die Zwischenverbindung des NVLink 410 ermöglicht Systemen, eine oder mehrere PPUs 400 zu skalieren und zu umfassen, die mit einer oder mehreren CPUs kombiniert sind, unterstützt Cache-Kohärenz zwischen den PPUs 400 und CPUs sowie CPU-Mastering. Daten und/oder Befehle können mittels des NVLink 410 durch den Hub 430 an/von anderen Einheiten der PPU 400, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Das NVLink 410 wird ausführlicher in Verbindung mit 5B beschrieben.
  • Die E/A-Einheit 405 ist konfiguriert, um Kommunikationen (z.B. Befehle, Daten usw.) von einem Host-Prozessor (nicht gezeigt) über die Zwischenverbindung 402 zu übertragen und zu empfangen. Die E/A-Einheit 405 kann mit dem Host-Prozessor direkt über die Zwischenverbindung 402 oder durch eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einer Ausführungsform kann die E/A-Einheit 405 mit einem oder mehreren anderen Prozessoren, wie beispielsweise eine oder mehrere der PPUs, über die Zwischenverbindung 402 kommunizieren. In einer Ausführungsformen implementiert die E/A-Einheit 405 eine PCIe(Peripheral Component Zwischenverbindung Express)-Schnittstelle für Kommunikationen über einen PCIe-Bus und die Zwischenverbindung 402 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die E/A-Einheit 405 andere Typen von wohlbekannten Schnittstellen zum Kommunizieren mit externen Vorrichtungen umfassen.
  • Die E/A-Einheit 405 decodiert Pakete, die über die Zwischenverbindung 402 empfangen wurden. In einer Ausführungsform stellen die Pakete Befehle dar, die konfiguriert sind, um die PPU 400 zu veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 405 überträgt die decodierten Befehle an verschiedene andere Einheiten der PPU 400, wie es die Befehle spezifizieren können. Beispielsweise können einige Befehle an die Frontend-Einheit 415 übertragen werden. Andere Befehle können an den Hub 430 oder andere Einheiten der PPU 400, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Video-Codierer, einen Video-Decodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Mit anderen Worten ist die E/A-Einheit 405 konfiguriert, um Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 400 weiterzuleiten.
  • In einer Ausführungsform codiert ein Programm, das von dem Host-Prozessor ausgeführt wird, einen Befehlsstrom in einem Puffer, welcher der PPU 400 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten umfassen, die von diesen Anweisungen zu verarbeiten sind. Der Puffer ist ein Bereich in einem Speicher, der von sowohl dem Host-Prozessor als auch der PPU 400 zugänglich ist (z.B. Lesen/Schreiben). Beispielsweise kann die Host-Schnittstelleneinheit 405 konfiguriert sein, um auf den Puffer in einem Systemspeicher, der mit der Zwischenverbindung 402 verbunden ist, über Speicheranfragen, die über die Zwischenverbindung 402 übertragen werden, zuzugreifen. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger zu dem Start des Befehlsstroms an die PPU 400. Die Frontend-Einheit 415 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 415 verwaltet den einen oder mehrere Ströme, liest Befehle von den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 400 weiter.
  • Die Frontend-Einheit 415 ist mit einer Planereinheit 420 gekoppelt, welche die verschiedenen GPCs 450 konfiguriert, um Aufgaben zu verarbeiten, die durch den einen oder mehrere Ströme definiert sind. Die Planereinheit 420 ist konfiguriert, um Zustandsinformation zu verfolgen, die verschiedene Aufgaben betrifft, die von der Planereinheit 420 verwaltet werden. Der Zustand kann angeben, welchem GPC 450 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, ob ein Prioritätsniveau der Aufgabe zugeordnet ist und so weiter. Die Planereinheit 420 verwaltet die Ausführung einer Mehrzahl von Aufgaben auf dem einen oder mehreren GPCs 450.
  • Die Planereinheit 420 ist mit einer Arbeitsverteilungs-Einheit 425 gekoppelt, die konfiguriert ist, um Aufgaben zur Ausführung auf den GPCs 450 zu versenden. Die Arbeitsverteilungs-Einheit 425 kann eine Anzahl von eingeplanten Aufgaben verfolgen, die von der Planereinheit 420 empfangen werden. In einer Ausführungsform verwaltet die Arbeitsverteilungs-Einheit 425 einen Pool für anhängige Aufgaben und einen Pool für aktive Aufgaben für jeden der GPCs 450. Wenn ein GPC 450 die Ausführung einer Aufgabe abschließt, wird diese Aufgabe aus dem Pool für aktive Aufgaben für den GPC 450 geräumt und eine der anderen Aufgaben wird aus dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 450 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 450 inaktiv war, wie beispielsweise während darauf gewartet wird, dass eine Datenabhängigkeit behoben wird, dann kann die aktive Aufgabe aus dem GPC 450 geräumt und zu dem Pool für anhängige Aufgaben zurückgeführt werden, während eine weitere Aufgabe in dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 450 eingeplant wird.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiber-Kernel aus, der eine anwendungsprogrammierbare Schnittstelle (Application Programming Interface; API) implementiert, die einer oder mehreren Anwendungen ermöglicht, die auf dem Host-Prozessor ausgeführt werden, Operationen zur Ausführung auf der PPU 400 einzuplanen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 400 ausgeführt und die PPU 400 stellt Isolierung, Dienstqualität (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, welche den Treiber-Kernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 400 zu erzeugen. Der Treiberkernel gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 400 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von in Beziehung stehender Threads umfassen, die hier als ein Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 in Beziehung stehende Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Mehrzahl von Threads beziehen, die Anweisungen umfassen, um die Aufgabe durchzuführen, und die Daten durch einen gemeinsam genutzten Speicher austauschen können. Die Aufgaben können einer oder mehreren Verarbeitungseinheiten innerhalb eines GPC 450 zugeteilt werden und Anweisungen werden zur Ausführung durch mindestens einen Warp geplant.
  • Die Arbeitsverteilungseinheit 425 kommuniziert mit dem einem oder mehreren GPCs 450 über die Kreuzschiene 470. Die Kreuzschiene ist ein Zwischenverbindungsnetzwerk, das viele der Einheiten der PPU 400 mit anderen Einheiten koppelt. Beispielsweise kann die Kreuzschiene 470 konfiguriert sein, um die Arbeitsverteilungseinheit 425 mit einem bestimmten GPC 450 zu koppeln. Obwohl nicht explizit gezeigt, können eine oder mehrere Einheiten der PPU 400 ebenfalls mit der Kreuzschiene 470 über den Hub 430 gekoppelt sein.
  • Die Aufgaben werden von der Planereinheit 420 verwaltet und an einen GPC 450 durch die Arbeitsverteilungseinheit 425 gesendet. Die GPC ist konfiguriert, um die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC konsumiert werden, an einen anderen GPC über die Kreuzschiene weitergeleitet oder in dem Speicher gespeichert werden. Die Ergebnisse können in den Speicher 404 über die Speicherpartitionseinheiten 480 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 404 implementieren. Die Ergebnisse können an eine andere PPU 400 oder CPU über das NVLink 410 übertragen werden. In einer Ausführungsform umfasst die PPU 400 eine Anzahl U von Speicherpartitionseinheiten 480, die gleich der Anzahl von separaten und distinkten Speichervorrichtungen des mit der PPU gekoppelten Speicher 404 ist. Jeder GPC 450 kann eine Speicherverwaltungseinheit umfassen, um eine Übersetzung von virtuellen Adressen in physische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranfragen bereitzustellen. In einer Ausführungsform stellt die Speicherverwaltungseinheit einen oder mehrere Adressenübersetzungspuffer (Translation Lookaside Buffers; TLBs) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in dem Speicher 404 bereit.
  • In einer Ausführungsform umfasst die Speicherpartitionseinheit 480 eine Raster-Operationen(ROP)-Einheit, einen L2-Cache-Speicher und eine Speicherschnittstelle, die mit dem Speicher 404 gekoppelt ist. Die Speicherschnittstelle kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeits-Datentransfer implementieren. Die PPU 400 kann mit bis zu Y Speichervorrichtungen, wie beispielsweise einem Speicherstapel mit hoher Bandbreite oder Graphikdoppeldatenraten, Version 5 SDRAM oder anderen Arten eines persistenten Speicher verbunden sein. In einer Ausführungsform implementiert die Speicherschnittstelle eine HBM2-Speicherschnittstelle und Y ist gleich einem halben U.
  • In einer Ausführungsform sind die HBM2-Speicherstapel auf der gleichen physischen Packung wie die PPU 400 lokalisiert, die wesentliche Leistungs- und Flächeneinsparungen verglichen mit herkömmlichen GDDR5 SDRAM Systemen bereitstellt. In einer Ausführungsform umfasst jeder HBM2-Stapel vier Speicher-Dies und Y ist gleich 4, wobei der HBM2-Stapel zwei 128-Bit Kanäle pro Die für eine Gesamtzahl von 8 Kanälen und eine Datenbusbreite von 1024 Bit umfasst.
  • In einer Ausführungsform unterstützt der Speicher 404 Fehlerkorrekturcode (ECC) mit Einzelfehlerkorrektur und Doppelfehlerdetektion (SECDED), um Daten zu schützen. Der ECC stellt eine höhere Zuverlässigkeit für Rechenanwendungen bereit, die gegen Datenverfälschung empfindlich sind. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, wo PPUs 400 sehr große Datensätze verarbeiten und/oder Anwendungen für längere Zeiträume ausführen.
  • In einer Ausführungsform implementiert die PPU 400 eine Mehr-Ebenen-Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionseinheit 480 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für den Speicher der CPU und den Speicher der PPU 400 bereitzustellen, der Datenteilung zwischen virtuellen Speichersystemen ermöglicht. In einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU 400 auf einen Speicher, der auf anderen Prozessoren lokalisiert ist, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU 400 bewegt werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt das NVLink 410 Adressenübersetzungsdienste, die der PPU 400 erlauben, auf Seitentabellen einer CPU direkt zuzugreifen und einen vollen Zugriff auf den CPU-Speicher durch die PPU 400 bereitstellen.
  • In einer Ausführungsform transferieren Kopiermaschinen Daten zwischen mehreren PPUs 400 oder zwischen PPUs 400 und CPUs. Die Kopiermaschinen können Seitenfehler für Adressen erzeugen, die nicht in den Seitentabellen abgebildet werden. Die Speicherpartitionseinheit 480 kann dann die Seitenfehler bedienen, wobei die Adressen in der Seitentabelle abgebildet werden, nachdem die Kopiermaschine den Transfer durchführen kann. In einem herkömmlichen System ist der Speicher für mehrere Kopiermaschinenoperationen zwischen mehreren Prozessoren gesperrt (z.B. nicht auslagerbar), was den verfügbaren Speicher wesentlich verringert. Mit Hardware-Seiten-Faulting können Adressen an die Kopiermaschinen weitergeleitet werden, ohne sich Sorgen zu machen, ob die Speicherseiten resident sind und das Kopierverfahren transparent ist.
  • Daten von dem Speicher 404 oder einem anderen Systemspeicher können von der Speicherpartitionseinheit 480 geholt und in dem L2-Cache-Speicher 460 gespeichert werden, der On-Chip lokalisiert ist und zwischen den verschiedenen GPCs 450 gemeinsam benutzt wird. Wie gezeigt, umfasst jede Speicherpartitionseinheit 480 einen Bereich des L2-Cache-Speichers, der einem entsprechenden Speicher 404 zugeordnet ist. Cache-Speicher niedrigerer Ebene können dann in verschiedenen Einheiten innerhalb der GPCs 450 implementiert werden. Beispielsweise kann jede der Verarbeitungseinheiten einen L1-Cache-Speicher implementieren. Der L1-Cache-Speicher ist ein privater Speicher, der einer bestimmten Verarbeitungseinheit fest zugeordnet ist. Der L2-Cache-Speicher Daten ist mit der Speicherschnittstelle 470 und der Kreuzschiene 470 gekoppelt und Daten von dem L2-Cache-Speicher 460 können geholt und in jedem der L1-Cache-Speicher zur Verarbeitung gespeichert werden.
  • In einer Ausführungsform implementieren die Verarbeitungseinheiten innerhalb jeder GPC 450 eine SIMD(Einzelne-Anweisung, Mehrere-Daten)-Architektur, wobei jeder Thread in einer Gruppe von Threads (z.B. einem Warp) konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten. Alle Threads in der Gruppe von Threads führen die gleichen Anweisungen aus. In einer anderen Ausführungsform implementiert die Verarbeitungseinheit eine SIMT(Einzelne Anweisung, Mehrere Threads)-Architektur, wobei jeder Thread in einer Gruppe von Threads konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten, wobei jedoch einzelnen Threads in der Gruppe von Threads ermöglicht wird, während der Ausführung zu divergieren. In einer Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, was eine Nebenläufigkeit zwischen Warps und eine serielle Ausführung innerhalb Warps ermöglicht, wenn Threads innerhalb des Warp divergieren. In einer weiteren Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, was eine gleiche Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, welche die gleichen Anweisungen ausführen, konvergiert und für maximale Effizienz parallel ausgeführt werden.
  • Cooperative Groups ist ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads, das Entwicklern ermöglicht, die Granularität auszudrücken, bei der Threads kommunizieren, wobei der Ausdruck von reicheren, effizienten Parallelzerlegungen ermöglicht wird. Cooperative-Start-APIs unterstützen die Synchronisierung unter Thread-Blöcken für die Ausführung von parallelen Algorithmen. Herkömmliche Programmiermodelle stellen einen einzigen, einfachen Aufbau zum Synchronisieren von kooperierenden Threads bereit: eine Barriere über alle Threads eines Threadblocks (z.B. die Funktion syncthreads( )). Programmierer würden jedoch häufig gerne Gruppen von Threads bei kleineren als Thread-Block-Granularitäten definieren und innerhalb der definierten Gruppen synchronisieren, um größere Leistung, Gestaltungsflexibilität und Software-Wiederverwendung in der Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht Programmierern, Gruppen von Threads explizit bei Sub-Block(z.B. so klein wie ein einziger Thread)- und Mehr-Block-Granularitäten zu definieren und kollektive Operationen, wie beispielsweise Synchronisierung, an den Threads in einer kooperativen Gruppe durchzuführen.
  • Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen, so dass Bibliotheken und Hilfsfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz machen zu müssen. Cooperative-Groups-Primitiven ermöglichen neue Muster von kooperativer Parallelität, die Erzeuger-Verbraucher Parallelität, opportunistische Parallelität und globale Synchronisierung über ein gesamtes Gitter von Threadblöcken umfassen.
  • Verarbeitungseinheit umfasst eine große Anzahl (z.B. 128, usw.) von unterschiedlichen Verarbeitungskernen, die vollständig in einer Pipeline angeordnete (fully-pipelined) Einfach-Präzisions- Verarbeitungseinheit umfassen, die eine Gleitkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit umfasst. In einer Ausführungsform implementieren die Gleitkommaarithmetik-Logikeinheiten den IEEE 754-3008 Standard für Gleitkommaarithmetik. In einer Ausführungsform umfassen die Kerne 64 Einfach-Präzisions-(32-Bit)-Gleitkommakerne, 64 Integer-Kerne, 32 Doppel-Präzisions-(64-Bit)-Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne sind konfiguriert, um Matrix-Operationen durchzuführen. Insbesondere sind die Tensorkerne konfiguriert, um Deep-Learning-Matrix-Arithmetik, wie beispielsweise GEMM (Matrix-Matrix-Multiplikation) für Faltungsoperationen während neuronalem Netzwerktraining und Inferenzieren, durchzuführen. In einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4-Matrix und führt eine Matrix-Multiplikations- und Akkumulations-Operation D=A×B+C durch, wobei A, B, C und D 4x4 Matrizen sind.
  • In einer Ausführungsform können die Matrix-Multiplikations-Eingaben A und B Ganzzahl-, Festkomma- oder Gleitkomma-Matrizen sein, während die Akkumulationsmatrizen C und D Ganzzahl-, Festkomma- oder Gleitkomma-Matrizen von gleicher oder höherer Bitbreite sein können. In einer Ausführungsform arbeiten Tensorkerne an ein, vier oder acht Bit Ganzzahl-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 8-Bit-Ganzzahl-Multiplikation erfordert 1024 Operationen und ergibt ein Produkt voller Präzision, das dann unter Verwendung einer 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 8x8x16-Matrix-Multiplikation akkumuliert wird. In einer Ausführungsform arbeiten Tensorkerne an 16-Bit Gleitkomma-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Ganzzahl-Multiplikation erfordert 64 Operationen und ergibt ein Produkt voller Präzision, das dann unter Verwendung einer 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die von diesen kleineren Elementen aufgebaut werden. Eine API, wie beispielsweise die CUDA 9 C++ API, stellt spezialisierte Matrix-Lade-, Matrix-Multiplikations- und Matrix-Akkumulations- und Matrix-Speicher-Operationen bereit, um Tensorkerne von einem CUDA-C++ Programm effizient zu verwenden. Auf der CUDA-Ebene nimmt das Warp-Schnittstellenniveau 16x16 große Matrizen an, die alle 32 Threads des Warp überspannen.
  • Jede Verarbeitungseinheit kann ebenfalls M Spezialfunktionseinheiten (Special Function Units; SFUs) umfassen, die Sonderfunktionen durchführen (z.B. Attributauswertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs eine Baumtraversierungseinheit umfassen, die konfiguriert ist, um eine hierarchische Baumdatenstruktur zu durchlaufen. In einer Ausführungsform können die SFUs eine Textureinheit umfassen, die konfiguriert ist, um Texturkarten-Filteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten konfiguriert, um Texturkarten (z.B. eine 2D-Anordnung von Texeln) von dem Speicher 404 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zum Gebrauch in Shader-Programmen zu erzeugen, die von der Verarbeitungseinheit ausgeführt werden. In einer Ausführungsform werden die Texturkarten in dem gemeinsam genutzten Speicher gespeichert, der einen L1-Cache-Speicher umfassen kann. Die Textureinheiten implementieren Texturoperationen, wie beispielsweise Filteroperationen, unter Verwendung von Mip-Maps (z.B. Texturkarten von veränderlichem Detaillierungsgrad). In einer Ausführungsform umfasst jeder Verarbeitungseinheit zwei Textureinheiten.
  • Jede Verarbeitungseinheit umfasst ebenfalls N Lade- und Speichereinheiten, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher und der Registerdatei implementieren. Jede Verarbeitungseinheit umfasst ein Zwischenverbindungs-Netzwerk, das jede der Kerne der Registerdatei und der LSU mit der Registerdatei, dem gemeinsam genutzten Speicher verbindet. In einer Ausführungsform ist das Zwischenverbindungs-Netzwerk eine Kreuzschiene, die konfiguriert sein kann, um irgendeinen der Kerne mit irgendeinem der Register in der Registerdatei zu verbinden und die LSUs mit der Registerdatei und Speicherorten in dem gemeinsam genutzten Speicher zu verbinden.
  • Der gemeinsam genutzte Speicher ist eine Anordnung eines On-Chip-Speichers, die Datenspeicherung und Kommunikation zwischen Verarbeitungseinheiten und zwischen Threads innerhalb einer Verarbeitungseinheit ermöglicht. In einer Ausführungsform umfasst der gemeinsam genutzte Speicher 128KB von Speicherkapazität und ist in dem Pfad von jeder Verarbeitungseinheit zu der Speicherpartitionseinheit 480.
    Der gemeinsam genutzte Speicher kann verwendet werden, um Lese- und Schreibvorgänge zwischenzuspeichern. Eines oder mehrere der gemeinsam genutzten Speicher, L2-Cache-Speicher und Speicher 404 sind Hintergrundspeicher.
  • Das Kombinieren eines Daten-Cache und der gemeinsam genutzten Speicherfunktionalität in einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Cache von Programmen benutzbar, die den gemeinsam genutzten Speicher nicht verwenden. Wenn der gemeinsam genutzte Speicher beispielsweise konfiguriert ist, die Hälfte der Kapazität zu verwenden, können Textur- und Lade/Speicher-Operationen die verbleibende Kapazität verwenden. Integration innerhalb des gemeinsam genutzten Speichers ermöglicht dem gemeinsam genutzten Speicher als eine Leitung mit hohem Durchsatz zum Streamen von Daten zu arbeiten, während gleichzeitig eine höhere Bandbreite und ein latenzarmer Zugriff auf häufig wiederverwendete Daten bereitgestellt werden.
  • Wenn für Allzweck-Parallelberechnung konfiguriert ist, kann im Vergleich mit der Graphikverarbeitung eine einfachere Konfiguration verwendet werden. Im Einzelnen werden Festfunktions-Graphikverarbeitungseinheiten umgangen, wobei ein viel einfacheres Programmiermodell erzeugt wird. In der Allzweck-Parallelberechnungs-Konfiguration werden Blöcke von Threads von der Arbeitsverteilungs-Einheit 425 direkt den Verarbeitungseinheiten innerhalb der GPCs 450 zugewiesen und verteilt. Die Threads führen das gleiche Programm unter Verwendung einer eindeutigen Thread-ID in der Berechnung, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, unter Verwendung der Verarbeitungseinheit(en), um das Programm auszuführen und Berechnungen durchzuführen, eines gemeinsam genutzten Speichers, um zwischen Threads zu kommunizieren, und der LSU aus, um globalen Speicher durch den gemeinsam genutzten Speicher und der Speicherpartitionseinheit 480 zu lesen und zu beschreiben. Wenn für Allzweck-Parallelberechnung konfiguriert ist, können die Verarbeitungseinheiten ebenfalls Befehle schreiben, welche die Planereinheit 420 verwenden kann, um neue Arbeit auf den Verarbeitungseinheiten zu starten.
  • Die PPUs 400 können jeweils umfassen und/oder können konfiguriert sein, um Funktionen eines oder mehrerer Verarbeitungskerne und/oder Komponenten davon ausführen, wie beispielsweise Tensorkerne bzw. Tensor Cores (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs),Ray Tracing (RT) Cores, Vision Processing Units (VPUs), Graphics Processing Clusters (GPCs), Texture Processing Clusters (TPCs), Streaming Multiprocessors (SMs), Tree Traversal Units (TTUs), Artificial Intelligence Accelerators (AIAs), Deep Learning Accelerators (DLAs), Arithmetik-Logik-Einheiten (ALUs), anwendungsspezifische integrierte Schaltungen (ASICs), Gleitkomma-Einheiten (FPUs), Ein-/Ausgabe-Elemente (E/As), Peripheral Component Interconnect (PCI)- oder Peripheral Component Interconnect Express (PCIe)-Elemente und/oder dergleichen.
  • Die PPU 400 kann in einem Tischcomputer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z.B. einer drahtlosen handgehaltenen Vorrichtung), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einer handgehaltenen elektronischen Vorrichtung und dergleichen umfasst sein. In einer Ausführungsform ist die PPU 400 auf einem einzelnen Halbleitersubstrat verkörpert. In einer anderen Ausführungsform ist die PPU 400 in einem System-auf-Chip (SoC) zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs 400, dem Speicher 404, einem Rechner-mit-reduziertem-Befehlssatz(RISC)-CPU, einer Speicherverwaltungseinheit (MMU), einem Digital/Analog-Wandler (DAC) und dergleichen umfasst.
  • In einer Ausführungsform kann die PPU 400 auf einer Graphikkarte umfasst sein, die eine oder mehrere Speichervorrichtungen 404 umfasst. Die Graphikkarte kann konfiguriert sein, um sich mit einem PCIe-Schlitz auf einer Hauptplatine eines Tischcomputers schnittstellenmäßig zu verbinden. In noch einer anderen Ausführungsform kann die PPU 400 eine integrierte Graphikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der in dem Chipsatz der Hauptplatine umfasst ist. In noch einer anderen Ausführungsform kann die PPU 400 in rekonfigurierbarer Hardware realisiert werden. In noch einer anderen Ausführungsform können Teile der PPU 400 in rekonfigurierbarer Hardware realisiert werden.
  • Beispielhaftes Rechensystem
  • Systeme mit mehreren GPUs und CPUs werden in einer Vielzahl von Industrien eingesetzt, da Entwickler mehr Parallelität in Anwendungen wie z. B. künstlicher Intelligenz aufdecken und wirksam einsetzen. Hochleistungs-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 verarbeitenden Einrichtungen innerhalb der Hochleistungssysteme ansteigt, müssen die Kommunikations- und Datenübertragungsmechanismen skaliert werden, um die erhöhte Bandbreite zu unterstützen.
  • 5A ist ein konzeptionelles Diagramm eines Verarbeitungssystems 500, das unter Verwendung der PPU 400 von 4 gemäß einer Ausführungsform implementiert wurde. Das beispielhafte System 500 kann konfiguriert sein, um das in 2B gezeigte Verfahren 250 zu implementieren. Das Verarbeitungssystem 500 umfasst eine CPU 530, einen Schalter 510 und mehrere PPUs 400 und jeweilige Speicher 404.
  • Der NVLink 410 stellt Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 400 bereit. Obwohl eine bestimmte Anzahl von NVLink 410 - und Interconnect 402 -Verbindungen in 5B dargestellt ist, kann die Anzahl der Verbindungen zu jeder PPU 400 und der CPU 530 variieren. Der Schalter 510 bildet die Schnittstelle zwischen der Verbindung 402 und der CPU 530. Die PPUs 400, die Speicher 404 und die NVLinks 410 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer Ausführungsform unterstützt der Schalter 510 zwei oder mehr Protokolle, um zwischen verschiedenen Verbindungen und/oder Links zu vermitteln.
  • In einer anderen Ausführungsform (nicht dargestellt) stellt der NVLink 410 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 400 und der CPU 530 bereit, und der Schalter 510 bildet eine Schnittstelle zwischen der Verbindung 402 und jeder der PPUs 400. Die PPUs 400, die Speicher 404 und die Verbindung 402 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer weiteren Ausführungsform (nicht dargestellt) stellt die Verbindung 402 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 400 und der CPU 530 bereit, und der Schalter 510 bildet eine Schnittstelle zwischen jeder der PPUs 400 unter Verwendung des NVLink 410, um eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 400 bereitzustellen. In einer anderen Ausführungsform (nicht dargestellt) stellt der NVLink 410 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 400 und der CPU 530 über den Schalter 510 bereit. In einer weiteren Ausführungsform (nicht dargestellt) stellt die Zwischenverbindung 402 eine oder mehrere Kommunikationsverbindungen direkt zwischen den einzelnen PPUs 400 bereit. Eine oder mehrere der NVLink 410 - Hochgeschwindigkeits-Kommunikationsverbindungen können als physische NVLink-Verbindung oder entweder als On-Chip- oder On-Die-Verbindung implementiert werden, die das gleiche Protokoll wie der NVLink 410 verwendet.
  • Im Kontext der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Die oder Chip hergestellt ist. Es sei darauf hingewiesen, dass sich der Begriff Einzel-Halbleiterplattform ebenfalls auf Multi-Chip-Module mit erhöhter Konnektivität beziehen kann, die den On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber der Verwendung einer herkömmlichen Bus-Implementierung bereitstellen. Natürlich können die verschiedenen Schaltungen oder Einrichtungen ebenfalls separat oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Anwenders angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als Leiterplattensubstrat implementiert werden und jede der PPUs 400 und/oder Speicher 404 können Einrichtungen mit Gehäuse sein. In einer Ausführungsform befinden sich die CPU 530, der Schalter 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform.
  • In einer Ausführungsform beträgt die Signalisierungsrate jedes NVLink 410 20 bis 25 Gigabit/Sekunde und jede PPU 400 umfasst sechs NVLink 410 -Schnittstellen (wie in 5A gezeigt, sind fünf NVLink 410 -Schnittstellen für jede PPU 400 vorhanden). Jeder NVLink 410 bietet eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jeder Richtung, wobei sechs Links 400 Gigabyte/Sekunde bereitstellen. Die NVLinks 410 können ausschließlich für die PPU-zu-PPU-Kommunikation verwendet werden, wie es in 5A dargestellt ist, oder für eine Kombination aus PPU-zu-PPU und PPU-zu-CPU, wenn die CPU 530 ebenfalls eine oder mehrere NVLink 410-Schnittstellen umfasst.
  • In einer Ausführungsform ermöglicht der NVLink 410 einen direkten Lade-/Speicher-/ atomaren Zugriff von der CPU 530 auf den Speicher 404 jeder PPU 400. In einer Ausführungsform unterstützt der NVLink 410 Kohärenzoperationen, so dass aus den Speichern 404 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 umfasst der NVLink 410 eine Unterstützung für Adressübersetzungsdienste (ATS), wodurch die PPU 400 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Einer oder mehrere der NVLinks 410 können ebenfalls so konfiguriert sein, dass sie in einem stromsparenden Modus arbeiten.
  • 5B veranschaulicht ein beispielhaftes System 565, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert sein können. Das beispielhafte System 565 kann konfiguriert sein, um das in 2B gezeigte Verfahren 250 zu implementieren.
  • Wie gezeigt, ist ein System 565 vorgesehen, das mindestens eine zentrale Verarbeitungseinheit 530 umfasst, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann direkt oder indirekt eine oder mehrere der folgenden Einrichtungen koppeln: Hauptspeicher 540, Netzwerkschnittstelle 535, CPU(s) 530, Anzeigeeinrichtung(en) 545, Eingabeeinrichtung(en) 560, einen Schalter 510 und ein Parallelverarbeitungssystem 525. Der Kommunikationsbus 575 kann unter Verwendung eines beliebigen geeigneten Protokolls implementiert werden und kann eine oder mehrere Verbindungen oder Busse darstellen, wie z. B. einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Der Kommunikationsbus 575 kann einen oder mehrere Bus- oder Verbindungstypen umfassen, wie z. B. einen ISA-Bus (Industry Standard Architecture), einen EISA-Bus (Extended Industry Standard Architecture), einen VESA-Bus (Video Electronics Standards Association), einen PCI-Bus (Peripheral Component Interconnect), einen PCIe-Bus (Peripheral Component Interconnect Express), HyperTransport und/oder eine andere Art von Bus oder Verbindung. Bei einigen Ausführungsformen gibt es direkte Verbindungen zwischen den Komponenten. Zum Beispiel kann/können die CPU(s) 530 direkt mit dem Hauptspeicher 540 verbunden sein. Darüber hinaus kann (können) die CPU(s) 530 direkt mit dem Parallelverarbeitungssystem 525 verbunden sein. Bei einer direkten oder Punkt-zu-Punkt-Verbindung zwischen Komponenten kann der Kommunikationsbus 575 eine PCIe-Verbindung umfassen, um die Verbindung herzustellen. In diesen Beispielen muss kein PCI-Bus im System 565 vorhanden sein.
  • Obwohl die verschiedenen Blöcke in 5B als über den Kommunikationsbus 575 mit Leitungen verbunden dargestellt sind, ist dies nicht als Einschränkung gedacht und dient nur der Übersichtlichkeit. Bei einigen Ausführungsformen kann beispielsweise eine Präsentationskomponente, wie die Anzeigeeinrichtung(en) 545, als E/A-Komponente betrachtet werden, wie die Eingabeeinrichtung(en) 560 (z.B., wenn die Anzeige ein Touchscreen ist). Als weiteres Beispiel kann(können) die CPU(s) 530 und/oder das Parallelverarbeitungssystem 525 einen Speicher umfassen (z. B. kann der Hauptspeicher 540 zusätzlich zu dem Parallelverarbeitungssystem 525, den CPUs 530 und/oder anderen Komponenten eine Speichereinrichtung darstellen). Mit anderen Worten ist die Recheneinrichtung von 5B lediglich veranschaulichend. Es wird nicht zwischen Kategorien wie „Workstation“, „Server“, „Laptop“, „Desktop“, „Tablet“, „Client-Gerät“, „mobiles Gerät“, „Handheld-Gerät“, „Spielkonsole“, „elektronische Steuereinheit (ECU)“, „Virtual-Reality-System“ und/oder anderen Einrichtungs- oder Systemtypen unterschieden, da alle im Rahmen der Recheneinrichtung von 5B in Betracht gezogen werden.
  • Das System 565 umfasst ebenfalls einen Hauptspeicher 540. Eine Steuerlogik (Software) und Daten sind in dem Hauptspeicher 540 gespeichert, der die Form einer Vielzahl von computerlesbaren Medien annehmen kann. Bei den computerlesbaren Medien kann es sich um alle verfügbaren Medien handeln, auf die das System 565 zugreifen kann. Die computerlesbaren Medien können sowohl flüchtige als auch nicht-flüchtige Medien sowie entfernbare und nicht-entfernbare Medien umfassen. Beispielhaft und ohne Einschränkung können die computerlesbaren Medien Computerspeichermedien und Kommunikationsmedien umfassen.
  • Die Computerspeichermedien können sowohl flüchtige als ebenfalls nichtflüchtige Medien und/oder entfernbare und nicht entfernbare Medien umfassen, die in einem beliebigen Verfahren oder einer beliebigen Technologie zur Speicherung von Informationen, wie z. B. computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen, implementiert sind. Beispielsweise kann der Hauptspeicher 540 computerlesbare Anweisungen speichern (z. B., die ein oder mehrere Programme und/oder ein oder mehrere Programmelemente darstellen, wie z. B. ein Betriebssystem). Computerspeichermedien können ein RAM, ein ROM, ein EEPROM, einen Flash-Speicher oder andere Speichertechnologien, eine CD-ROM, eine Digital Versatile Disk (DVD) oder andere optische Plattenspeicher, Magnetkassetten, Magnetbänder, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder jedes andere Medium umfassen, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das das System 565 zugreifen kann, sind aber nicht darauf beschränkt. Wie es hier verwendet wird, umfasst der Begriff Computerspeichermedium nicht per se Signale.
  • Die Computerspeichermedien können computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen in einem modulierten Datensignal, wie z. B. einer Trägerwelle oder einem anderen Transportmechanismus, verkörpern und weisen beliebige Informationsübertragungsmedien auf. Der Begriff „moduliertes Datensignal“ kann sich auf ein Signal beziehen, bei dem eine oder mehrere seiner Eigenschaften so eingestellt oder verändert sind, dass Informationen in dem Signal kodiert sind. Beispielhaft und ohne Einschränkung können die Computerspeichermedien verdrahtete Medien, wie z. B. ein verdrahtetes Netzwerk oder eine direkt verdrahtete Verbindung, und drahtlose Medien, wie z. B. akustische, HF-, Infrarot- und andere drahtlose Medien, umfassen. Kombinationen der oben genannten Medien sollten ebenfalls in den Bereich der computerlesbaren Medien eingeschlossen werden.
  • Computerprogramme, wenn sie ausgeführt werden, ermöglichen dem System 565, verschiedene Funktionen auszuführen. Die CPU(s) 530 kann/können so konfiguriert sein, dass sie zumindest einige der computerlesbaren Anweisungen ausführt/ausführen, um eine oder mehrere Komponenten des Systems 565 zu steuern, um eine oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. Die CPU(s) 530 kann/können jeweils einen oder mehrere Kerne umfassen (z. B. einen, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.), die in der Lage sind, eine Vielzahl von Software-Threads gleichzeitig zu verarbeiten. Die CPU(s) 530 kann/können jeden Prozessortyp umfassen und je nach Art des implementierten Systems 565 unterschiedliche Prozessortypen umfassen (z. B. Prozessoren mit weniger Kernen für mobile Einrichtungen und Prozessoren mit mehr Kernen für Server). Je nach Art des Systems 565 kann der Prozessor beispielsweise ein Advanced RISC Machines (ARM)-Prozessor sein, der mit Reduced Instruction Set Computing (RISC) implementiert ist, oder ein x86-Prozessor, der mit Complex Instruction Set Computing (CISC) implementiert ist. Das System 565 kann eine oder mehrere CPUs 530 umfassen, zusätzlich zu einem oder mehreren Mikroprozessoren oder zusätzlichen Co-Prozessoren, wie z. B. mathematischen Co-Prozessoren.
  • Zusätzlich zu oder alternativ zu der/den CPU(s) 530 kann das Parallelverarbeitungsmodul 525 so konfiguriert sein, dass es zumindest einige der computerlesbaren Anweisungen ausführt, um eine oder mehrere Komponenten des Systems 565 zu steuern, um eines oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. Das Parallelverarbeitungsmodul 525 kann vom System 565 zum Rendern von Grafiken (z. B. 3D-Grafiken) oder zur Durchführung von Allzweckberechnungen verwendet werden. Zum Beispiel kann das Parallelverarbeitungsmodul 525 für General-Purpose-Computing auf GPUs (GPGPU) verwendet werden. In Ausführungsformen kann/können die CPU(s) 530 und/oder das Parallelverarbeitungsmodul 525 diskret oder gemeinsam eine beliebige Kombination der Verfahren, Prozesse und/oder Abschnitte davon ausführen.
  • Das System 565 umfasst ebenfalls die Eingabeeinrichtung(en) 560, das Parallelverarbeitungssystem 525 und die Anzeigeeinrichtung(en) 545. Die Anzeigeeinrichtung(en) 545 kann (können) eine Anzeige (z. B. einen Monitor, einen Touchscreen, einen Fernsehbildschirm, ein Heads-up-Display (HUD), andere Anzeigetypen oder eine Kombination davon), Lautsprecher und/oder andere Präsentationskomponenten umfassen. Die Anzeigeeinrichtung(en) 545 kann/können Daten von anderen Komponenten (z. B. dem Parallelverarbeitungssystem 525, der/den CPU(s) 530 usw.) empfangen und die Daten ausgeben (z. B. als Bild, Video, Ton usw.).
  • Die Netzwerkschnittstelle 535 kann es dem System 565 ermöglichen, logisch mit anderen Einrichtungen gekoppelt zu sein, einschließlich der Eingabeeinrichtungen 560, der Anzeigeeinrichtung(en) 545 und/oder anderen Komponenten, von denen einige in das System 565 eingebaut (z. B. integriert) sein können. Dargestellte Eingabegeräte 560 weisen ein Mikrofon, eine Maus, eine Tastatur, einen Joystick, ein Gamepad, eine Spielsteuerung, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Einrichtung usw. auf. Die Eingabeeinrichtungen 560 können eine natürliche Benutzerschnittstelle (NUI) bereitstellen, die Luftgesten, Sprache oder andere physiologische Eingaben verarbeitet, die von einem Benutzer erzeugt werden. In einigen Fällen können die Eingaben an ein entsprechendes Netzwerkelement zur weiteren Verarbeitung übertragen werden. Eine NUI kann eine beliebige Kombination aus Spracherkennung, Stifterkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als ebenfalls neben dem Bildschirm, Luftgesten, Kopf- und Augenverfolgung und Berührungserkennung (wie unten ausführlicher beschrieben) in Verbindung mit einer Anzeige des Systems 565 implementieren. Das System 565 kann Tiefenkameras, wie z. B. stereoskopische Kamerasysteme, Infrarotkamerasysteme, RGB-Kamerasysteme, eine Touchscreen-Technologie und Kombinationen davon, zur Gestenerkennung und - erfassung umfassen. Zusätzlich kann das System 565 Beschleunigungsmesser oder Gyroskope umfassen (z. B. als Teil einer Trägheitsmesseinheit (IMU)), die eine Bewegungserkennung ermöglichen. Bei einigen Beispielen kann die Ausgabe der Beschleunigungsmesser oder Gyroskope von dem System 565 verwendet werden, um immersive Augmented Reality oder Virtual Reality darzustellen.
  • Darüber hinaus kann das System 565 über eine Netzwerkschnittstelle 535 zu Kommunikationszwecken mit einem Netzwerk (z. B. einem Telekommunikationsnetzwerk, einem lokalen Netzwerk (LAN), einem drahtlosen Netzwerk, einem Weitverkehrsnetzwerk (WAN) wie dem Internet, einem Peer-to-Peer-Netzwerk, einem Kabelnetzwerk oder Ähnlichem) verbunden sein. Das System 565 kann ein verteiltes Netzwerk und/oder eine Cloud-Computing-Umgebung umfassen.
  • Die Netzwerkschnittstelle 535 kann einen oder mehrere Empfänger, Sender und/oder Transceiver umfassen, die es dem System 565 ermöglichen, mit anderen Recheneinrichtungen über ein elektronisches Kommunikationsnetzwerk zu kommunizieren, einschließlich einer drahtgebundenen und/oder drahtlosen Kommunikation. Die Netzwerkschnittstelle 535 kann als ein Netzwerkschnittstellencontroller (NIC) implementiert sein, der eine oder mehrere Datenverarbeitungseinheiten (DPUs) umfasst, um Operationen wie (beispielsweise und ohne Beschränkung) Paket-Parsing und beschleunigte Netzwerkverarbeitung und - kommunikation durchzuführen. Die Netzwerkschnittstelle 535 kann Komponenten und Funktionen umfassen, um die Kommunikation über eine beliebige Anzahl verschiedener Netzwerke zu ermöglichen, wie z. B. drahtlose Netzwerke (z. B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), verdrahtete Netzwerke (z. B. Kommunikation über Ethernet oder InfiniBand), Weitverkehrsnetzwerke mit geringer Leistung (z. B. LoRaWAN, SigFox usw.) und/oder das Internet.
  • Das System 565 kann ebenfalls eine Sekundärspeicherung umfassen (nicht gezeigt). Die Sekundärspeicherung umfasst beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk auf, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein Digital-Versatile-Disk(DVD)-Laufwerk, eine Aufnahmeeinrichtung oder einen Universal Serial Bus (USB)-Flash-Speicher darstellt. Das Wechselspeicherlaufwerk liest in bekannter Weise von und/oder schreibt auf einen Wechselspeicher. Das System 565 kann ebenfalls eine festverdrahtete Stromversorgung, eine Batteriestromversorgung oder eine Kombination davon umfassen (nicht dargestellt). Die Stromversorgung kann das System 565 mit Strom versorgen, um den Betrieb der Komponenten des Systems 565 zu ermöglichen.
  • Jedes der vorstehenden Module und/oder Vorrichtungen kann sogar auf einer einzigen Halbleiterplattform gelegen sein, um das System 565 zu bilden. Alternativ können die verschiedenen Module ebenfalls separat oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Benutzers angeordnet sein.
  • Während verschiedene Ausführungsformen oben beschrieben wurden, sollte zu verstehen sein, dass sie lediglich als Beispiel und nicht als Einschränkung dargestellt wurden. Somit sollte die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch eine der oben beschriebenen beispielhaften Ausführungsformen begrenzt sein, sondern nur in Übereinstimmung mit den folgenden Ansprüchen und deren Äquivalenten definiert sein.
  • Beispielhafte Netzwerkumgebungen
  • Netzwerkumgebungen, die für die Implementierung von Ausführungsformen der Offenbarung geeignet sind, können ein oder mehrere Client-Vorrichtungen, Server, Network Attached Storage (NAS), andere Backend-Vorrichtungen und/oder andere Vorrichtungstypen umfassen. Die Client-Vorrichtungen, Server und/oder andere Vorrichtungstypen (z.B. jede Vorrichtung) können auf einer oder mehreren Instanzen des Verarbeitungssystems 500 von 5A und/oder des beispielhaften Systems 565 von 5B implementiert sein - z.B. kann jede Vorrichtung ähnliche Komponenten, Merkmale und/oder Funktionalität des Verarbeitungssystems 500 und/oder des beispielhaften Systems 565 umfassen.
  • Komponenten einer Netzwerkumgebung können über ein oder mehrere Netzwerke miteinander kommunizieren, die drahtgebunden, drahtlos oder beides sein können. Das Netzwerk kann mehrere Netzwerke oder ein Netzwerk von Netzwerken aufweisen. Beispielsweise kann das Netzwerk ein oder mehrere Wide Area Networks (WANs), ein oder mehrere Local Area Networks (LANs), ein oder mehrere öffentliche Netzwerke wie das Internet und/oder ein öffentliches Telefonwählnetz (PSTN) und/oder ein oder mehrere private Netzwerke umfassen. Wenn das Netzwerk ein drahtloses Telekommunikationsnetzwerk aufweist, können Komponenten wie eine Basisstation, ein Kommunikationsturm oder sogar Zugangspunkte (sowie auch andere Komponenten) eine drahtlose Verbindung bereitstellen.
  • Kompatible Netzwerkumgebungen können eine oder mehrere Peerto-Peer-Netzwerkumgebungen - in diesem Fall darf ein Server nicht in eine Netzwerkumgebung eingebunden sein - und eine oder mehrere Client-Server-Netzwerkumgebungen aufweisen - in diesem Fall können ein oder mehrere Server in eine Netzwerkumgebung eingebunden sein. Bei Peer-to-Peer-Netzwerkumgebungen kann die hier beschriebene Funktionalität in Bezug auf einen oder mehrere Server auf einer beliebigen Anzahl von Client-Vorrichtungen implementiert sein.
  • Bei mindestens einer Ausführungsform kann eine Netzwerkumgebung eine oder mehrere Cloud-basierte Netzwerkumgebungen, eine verteilte Computerumgebung, eine Kombination davon usw. aufweisen. Eine Cloud-basierte Netzwerkumgebung kann eine Framework-Schicht, einen Job-Scheduler, einen Ressourcenmanager und ein verteiltes Dateisystem aufweisen, das auf einem oder mehreren Servern implementiert ist, die einen oder mehrere Core-Netzwerk-Server und/oder Edge-Server umfassen können. Eine Framework-Schicht kann ein Framework zur Unterstützung der Software einer Softwareschicht und/oder einer oder mehrerer Anwendungen) einer Anwendungsschicht aufweisen. Die Software oder die Anwendung(en) können jeweils webbasierte Service-Software oder -Anwendungen aufweisen. Bei Ausführungsformen kann/können eines oder mehrere der Client-Vorrichtungen die webbasierte Dienstsoftware oder Anwendungen nutzen (z.B. durch Zugriff auf die Dienstsoftware und/oder Anwendungen über eine oder mehrere Anwendungsprogrammierschnittstellen (APIs)). Die Framework-Schicht kann eine Art freies und quelloffenes Software-Framework für Webanwendungen sein, das z.B. ein verteiltes Dateisystem für die Verarbeitung großer Datenmengen (z.B. „Big Data“) verwenden kann, ist aber nicht darauf beschränkt.
  • Eine Cloud-basierte Netzwerkumgebung kann Cloud-Computing und/oder Cloud-Speicherung bereitstellen, die eine beliebige Kombination der hier beschriebenen Rechen- und/oder Datenspeicherfunktionen (oder einen oder mehrere Teile davon) ausführt. Jede dieser verschiedenen Funktionen kann über mehrere Standorte von zentralen oder Core-Servern aus verteilt sein (z.B. von einem oder mehreren Rechenzentren, die über einen Staat, eine Region, ein Land, den Globus usw. verteilt sein können)e. Wenn sich eine Verbindung zu einem Benutzer (z.B. ein Client-Vorrichtung) relativ nahe bei einem oder mehreren Edge-Servern befindet, kann/können ein Core-Server zumindest einen Teil der Funktionalität dem/den Edge-Server(n) zuweisen. Eine Cloud-basierte Netzwerkumgebung kann privat (z.B. auf eine einzelne Organisation beschränkt), öffentlich (z.B. für viele Organisationen verfügbar) und/oder eine Kombination davon (z.B. eine hybride Cloud-Umgebung) sein.
  • Die Client-Vorrichtung(en) kann (können) zumindest einige der Komponenten, Merkmale und Funktionen des beispielhaften Verarbeitungssystem 500 von 5A und/oder des beispielhaften Systems 565 von 5B umfassen. Als Beispiel und nicht als Einschränkung kann eine Client-Vorrichtung ausgestaltet sein als ein Personal Computer (PC), ein Laptop-Computer, eine mobile Vorrichtung, ein Smartphone, ein Tablet-Computer, eine Smart-Uhr, ein tragbarer Computer, ein Personal Digital Assistant (PDA), ein MP3-Player, ein Virtual-Reality-Headset, ein Global Positioning System (GPS) oder - Vorrichtung, ein Video-Player, eine Videokamera, eine Überwachungsvorrichtung oder -system, ein Fahrzeug, ein Boot, ein fliegendes Schiff, eine virtuelle Maschine, eine Drohne, ein Roboter, eine tragbare Kommunikationsvorrichtung, eine Krankenhausvorrichtung, eine Spielevorrichtung oder -system, ein Unterhaltungssystem, ein Fahrzeug-Computersystem, eine Steuervorrichtung für ein eingebettetes System, eine Fernbedienung, ein Gerät, eine Vorrichtung der Unterhaltungselektronik, eine Workstation, eine Edge-Vorrichtung, eine beliebige Kombination dieser abgegrenzten Vorrichtungen oder eine andere geeignete Vorrichtung.
  • Maschinenlernen
  • Tiefe neuronale Netzwerke (DNNs), die auf Prozessoren entwickelt wurden, wie beispielsweise der PPU 400, wurden für diverse Verwendungsfälle, von selbstfahrenden Wagen bis schnellerer Wirkstoffentwicklung, von automatischer Bildbeschriftung in Online-Bilddatenbanken bis smarter Echtzeit-Sprachenübersetzung in Video-Chat-Anwendungen verwendet. Deep-Learning ist eine Technik, welche die neuronalen Lernverfahren des menschlichen Gehirns modelliert, die kontinuierlich lernt, kontinuierlich immer smarter wird und genauere Ergebnisse mit der Zeit schneller liefert. Ein Kind wird anfangs von einem Erwachsenen unterrichtet, verschiedene Formen korrekt zu identifizieren und zu klassifizieren, um schließlich imstande zu sein, Formen ohne irgendeine Nachhilfe zu identifizieren. Auf ähnliche Weise muss ein Tiefen-Learning-System oder ein neuronales Lernsystem in Objekterkennung und Klassifizierung trainiert werden, damit es smarter und effizienter beim Identifizieren von Grundobjekten, verdeckten Objekte usw. wird, während ebenfalls Objekten Kontext zugewiesen wird. Beispielsweise wird ein neuronales Lernsystem zur Orientierungspunkt-Lokalisierung und/oder Attributklassifizierung trainiert
  • Auf der einfachsten Ebene schauen Neuronen im menschlichen Gehirn auf verschiedene Eingaben, die empfangen werden, wobei Wichtigkeitsgrade jeder dieser Eingaben zugewiesen werden und eine Ausgabe an andere Neuronen weitergeleitet wird, um auf diese zu wirken. Ein künstliches Neuron oder ein Perzeptron ist das grundlegendste Modell eines neuronale Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts darstellen, die das Perzeptron trainiert wird, zu erkennen und zu klassifizieren, und jedem dieser Merkmale wird ein bestimmtes Gewicht basierend auf der Wichtigkeit des Merkmals beim Definieren der Gestalt eines Objekts zugewiesen.
  • Ein Modell eines tiefen neuronale Netzwerks (DNN) umfasst mehrere Schichten von vielen verbundenen Knoten (z.B. Perzeptronen, Boltzmann-Maschinen, radiale Basisfunktionen, Faltungsschichten usw.), die mit enormen Mengen an Eingabedaten trainiert werden können, um komplexe Probleme mit hoher Genauigkeit schnell zu lösen. In einem Beispiel gliedert eine erste Schicht des DNN-Modells ein Eingabebild eines Automobils in verschiedene Abschnitte auf und sucht nach Grundmustern, wie beispielsweise Linien und Winkel. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene, wie beispielsweise Rädern, Windschutzscheiben und Spiegeln, zu suchen. Die nächste Schicht kennzeichnet den Typ des Fahrzeugs und die letzten paar Schichten erzeugen ein Etikett für das Eingabebild, welches das Modell einer speziellen Automobilmarke kennzeichnet.
  • Sobald das DNN trainiert ist, kann das DNN eingesetzt und verwendet werden, um Objekte oder Muster in einem als Inferenz bekannten Verfahren zu identifizieren und zu klassifizieren. Beispiele von Inferenz (der Prozess, durch den ein DNN nützliche Information von einer gegebenen Eingabe extrahiert) umfassen ein Identifizieren handgeschriebener Zahlen auf Schecks, die in Geldausgabe-Maschinen eingezahlt werden, ein Identifizieren von Bildern von Freunden in Photos, Liefern von Filmempfehlungen an über fünfzig Millionen Nutzer, Identifizieren und Klassifizieren unterschiedlicher Typen von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Wagen oder Übersetzen von menschlicher Sprache in Echtzeit.
  • Während des Trainings strömen Daten durch das DNN in einer Vorwärtspropagierungsphase, bis eine Vorhersage erzeugt wird, die ein Etikett angibt, das der Eingabe entspricht. Wenn das neuronale Netzwerk die Eingabe nicht korrekt kennzeichnet, dann werden Fehler zwischen dem korrekten Etikett und dem vorhergesagten Etikett analysiert und die Gewichte werden für jedes Merkmal während einer Rückwärtspropagierungsphase eingestellt, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netzwerke erfordert enorme Mengen an paralleler Rechenleistung, die Gleitkomma-Multiplikationen und Gleitkomma-Additionen umfassen, die von der PPU 400 unterstützt werden. Inferenzieren ist weniger rechenintensiv als Training, das ein Latenz-empfindliches Verfahren ist, wo ein trainiertes neuronale Netzwerk auf neue Eingaben angewandt wird, die es zuvor nicht gesehen hat, um Bilder zu klassifizieren, Emotionen zu erfassen, Empfehlungen zu identifizieren, Sprache zu erkennen und zu übersetzen, und im Allgemeinen neue Informationen abzuleiten.
  • Neuronale Netzwerke stützen sich sehr auf Matrixrechenoperationen und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitkomma-Leistung und Bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von Verarbeitungskernen, die für Matrixrechenoperationen optimiert sind und einige zehn bis hunderte von TFLOPS von Leistung liefern, ist die PPU 400 eine Rechenplattform, die imstande ist, Leistung zu liefern, die für tiefe neuronale Netzwerk-basierte künstliche Intelligenz und Maschinenlernanwendungen erforderlich ist.
  • Des Weiteren können Bilder, die unter Anwendung einer oder mehrerer der hier offenbarten Techniken erzeugt wurden, zum Trainieren, Prüfen oder Zertifizieren von DNNs verwendet werden, die zur Erkennung von Objekten und Umgebungen in der realen Welt eingesetzt werden. Derartige Bilder können Szenen von Straßen, Fabriken, Gebäuden, städtischen Szenarien, ländlichen Szenarien, Menschen, Tieren und anderen physischen Objekten oder realen Umgebungen enthalten. Derartige Bilder können verwendet werden, um in Maschinen oder Robotern eingesetzte DNNs zu trainieren, zu prüfen oder zu zertifizieren, um physische Objekte in der realen Welt zu manipulieren, zu bearbeiten oder zu verändern. Außerdem können derartige Bilder verwendet werden, um in autonomen Fahrzeugen eingesetzte DNNs zu trainieren, zu prüfen oder zu zertifizieren, damit sie die Fahrzeuge durch die reale Welt navigieren und bewegen. Darüber hinaus können Bilder, die unter Anwendung einer oder mehrerer der hier offenbarten Techniken erzeugt wurden, verwendet werden, um den Benutzern derartiger Maschinen, Robotern und Fahrzeugen Informationen zu vermitteln.
  • 5C veranschaulicht Komponenten eines beispielhaften Systems 555, das verwendet werden kann, um maschinelles Lernen zu trainieren und zu nutzen, gemäß mindestens einer Ausführungsform. Wie erläutert wird, können verschiedene Komponenten durch verschiedene Kombinationen von Rechenvorrichtungen und Ressourcen oder ein einzelnes Rechensystem bereitgestellt werden, das von einer einzelnen Einheit oder mehreren Einheiten gesteuert werden kann. Außerdem können Aspekte durch unterschiedliche Einheiten ausgelöst, initiiert oder angefordert werden. In mindestens einer Ausführungsform könnte das Training eines neuronalen Netzwerks durch einen Anbieter, der einer Anbieterumgebung 506 zugeordnet ist, angewiesen werden, während in mindestens einer Ausführungsform das Training durch einen Kunden oder einen anderen Benutzer angefordert werden könnte, der über eine Client-Vorrichtung 502 oder eine andere derartige Ressource Zugriff auf eine Anbieterumgebung hat. In mindestens einer Ausführungsform können Trainingsdaten (oder durch ein trainiertes neuronales Netzwerk zu analysierende Daten) durch einen Anbieter, einen Benutzer oder einen Drittanbieter 524 von Inhalten bereitgestellt werden. In mindestens einer Ausführungsform kann die Client-Vorrichtung 502 ein Fahrzeug oder Objekt sein, das zum Beispiel stellvertretend für einen Benutzer zu navigieren ist, das Anfragen übermitteln und/oder Anweisungen empfangen kann, welche die Navigation einer Vorrichtung unterstützen.
  • In mindestens einer Ausführungsform können Anfragen über mindestens ein Netzwerk 504 übermittelt werden, um durch eine Anbieterumgebung 506 empfangen zu werden. In mindestens einer Ausführungsform kann eine Client-Vorrichtung eine beliebige geeignete elektronische und/oder Rechenvorrichtung sein, die es einem Benutzer ermöglicht, derartige Anfragen zu erzeugen und zu senden, wie beispielsweise unter anderem Desktop-Computer, Notebook-Computer, Computerserver, Smartphones, Tablet-Computer, Spielkonsolen (tragbar oder anderweitig), Computerprozessoren, Rechenlogik und Set-Top-Boxen. Das/die Netzwerk(e) 504 kann/können ein beliebiges geeignetes Netzwerk zum Übertragen einer Anfrage oder anderer derartiger Daten umfassen, wie Internet, ein Intranet, ein Ethernet, ein Mobilfunknetzwerk, ein Lokalbereichsnetzwerk (LAN), ein Weitbereichsnetzwerk (WAN), ein persönliches Netzwerk (PAN), ein Ad-hoc-Netzwerk mit direkten drahtlosen Verbindungen zwischen Peers und so weiter.
  • In mindestens einer Ausführungsform können Anfragen an einer Schnittstellenschicht 508 empfangen werden, die in diesem Beispiel Daten an einen Trainings- und Inferenzmanager 532 weiterleiten kann. Der Trainings- und Inferenzmanager 532 kann ein System oder ein Dienst sein, der Hardware und Software zum Verwalten von Anfragen und Bedienen entsprechender Daten oder Inhalte beinhaltet; in mindestens einer Ausführungsform kann der Trainings- und Inferenzmanager 532 eine Anfrage zum Trainieren eines neuronalen Netzwerks empfangen und kann Daten für eine Anfrage an ein Trainingsmodul 512 bereitstellen. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein geeignetes Modell oder neuronales Netzwerk auswählen, das verwendet werden soll, wenn es nicht durch die Anfrage spezifiziert ist, und kann ein Modell unter Verwendung relevanter Trainingsdaten trainieren. In mindestens einer Ausführungsform können Trainingsdaten ein Batch von Daten sein, die in einem Trainingsdaten-Repositorium 514 gespeichert sind, von der Client-Vorrichtung 502 empfangen oder von einem Drittanbieter 524 erhalten werden. In mindestens einer Ausführungsform kann das Trainingsmodul 512 für Trainingsdaten verantwortlich sein. Ein neuronales Netzwerk kann ein beliebiges geeignetes Netzwerk sein, wie beispielsweise ein rekurrentes neuronales Netzwerk (recurrent neural network; RNN) oder ein neuronales Faltungsnetzwerk (convolutional neural network; CNN). Sobald ein neuronales Netzwerk trainiert und erfolgreich bewertet wurde, kann ein trainiertes neuronales Netzwerk beispielsweise in einem Modell-Repositorium 516 gespeichert werden, das unterschiedliche Modelle oder Netzwerke für Benutzer, Anwendungen oder Dienste usw. speichern kann. In mindestens einer Ausführungsform können mehrere Modelle für eine einzelne Anwendung oder Einheit vorhanden sein, die basierend auf einer Reihe unterschiedlicher Faktoren genutzt werden können.
  • In mindestens einer Ausführungsform kann zu einem späteren Zeitpunkt eine Anfrage von der Client-Vorrichtung 502 (oder einer anderen derartigen Vorrichtung) nach Inhalten (z.B. Pfadbestimmungen) oder Daten empfangen werden, die mindestens teilweise durch ein trainiertes neuronales Netzwerk bestimmt oder beeinflusst werden. Diese Anfrage kann zum Beispiel Eingabedaten umfassen, die unter Verwendung eines neuronalen Netzwerks verarbeitet werden sollen, um eine oder mehrere Inferenzen oder andere Ausgabewerte, Klassifikationen oder Vorhersagen zu erhalten; oder für mindestens eine Ausführungsform können Eingabedaten durch die Schnittstellenschicht 508 empfangen und an das Inferenzmodul 518 geleitet werden, obwohl ebenfalls ein anderes System oder ein anderer Dienst verwendet werden kann. In mindestens einer Ausführungsform kann das Inferenzmodul 518 ein geeignetes trainiertes Netzwerk, wie beispielsweise ein trainiertes tiefes neuronales Netzwerk (DNN), wie hier erläutert, aus dem Modell-Repositorium 516 erhalten, wenn es nicht bereits lokal in dem Inferenzmodul 518 gespeichert ist. Das Inferenzmodul 518 kann Daten als Eingabe in ein trainiertes Netzwerk bereitstellen, das dann als Ausgabe eine oder mehrere Inferenzen erzeugen kann. Dies kann beispielsweise eine Klassifikation einer Instanz von Eingabedaten umfassen. In mindestens einer Ausführungsform können Inferenzen dann an die Client-Vorrichtung 502 zur Anzeige für einen Benutzer oder zu anderer Kommunikation mit ihm übertragen werden. In mindestens einer Ausführungsform können Kontextdaten für einen Benutzer ebenfalls in einem Benutzerkontextdaten-Repositorium 522 gespeichert sein, das Daten über einen Benutzer umfassen kann, die als Eingabe in ein Netzwerk beim Erzeugen von Inferenzen oder Bestimmen von Daten zur Rückgabe an einen Benutzer nach dem Erhalten von Instanzen nützlich sein können. In mindestens einer Ausführungsform können relevante Daten, die mindestens einige der Eingabe- oder Inferenzdaten umfassen können, ebenfalls in einer lokalen Datenbank 534 zum Verarbeiten zukünftiger Anfragen gespeichert sein. In mindestens einer Ausführungsform kann ein Benutzer Kontoinformationen oder andere Informationen verwenden, um auf Ressourcen oder Funktionalität einer Anbieterumgebung zuzugreifen. In mindestens einer Ausführungsform können, falls zulässig und verfügbar, Benutzerdaten ebenfalls gesammelt und verwendet werden, um Modelle weiter zu trainieren, um genauere Inferenzen für zukünftige Anfragen bereitzustellen. In mindestens einer Ausführungsform können Anfragen über eine Benutzerschnittstelle an einer auf der Client-Vorrichtung 502 ausgeführten Anwendung 526 für maschinelles Lernen empfangen und Ergebnisse über dieselbe Schnittstelle angezeigt werden. Eine Client-Vorrichtung kann Ressourcen wie einen Prozessor 528 und einen Speicher 562 zum Erzeugen einer Anfrage und zum Verarbeiten von Ergebnissen oder einer Antwort sowie mindestens ein Datenspeicherelement 552 zum Speichern von Daten für die Anwendung 526 für maschinelles Lernen umfassen.
  • In mindestens einer Ausführungsform ist ein Prozessor 528 (oder ein Prozessor des Trainingsmoduls 512 oder des Inferenzmoduls 518) eine zentrale Verarbeitungseinheit (CPU). Wie erwähnt, können Ressourcen in derartigen Umgebungen jedoch GPUs nutzen, um Daten für mindestens bestimmte Arten von Anfragen zu verarbeiten. Mit Tausenden von Kernen sind GPUs, wie beispielsweise die PPU 400, ausgestaltet, um erhebliche parallele Arbeitslasten zu bewältigen, und sind daher beim tiefen Lernen zum Trainieren neuronaler Netzwerke und zum Erzeugen von Vorhersagen weit verbreitet. Während die Verwendung von GPUs für Offline-Builds ein schnelleres Training größerer und komplexerer Modelle ermöglicht hat, impliziert das Erzeugen von Vorhersagen offline, dass entweder Eingabemerkmale zur Anfragezeit nicht verwendet werden können oder Vorhersagen für alle Permutationen von Merkmalen erzeugt und in einer Lookup-Tabelle gespeichert sein müssen, um Echtzeit-Anfragen zu bedienen. Wenn ein Deep-Learning-Framework einen CPU-Modus unterstützt und ein Modell klein und einfach genug ist, um einen Feed-Forward auf einer CPU mit einer angemessenen Latenz durchzuführen, könnte ein Dienst auf einer CPU-Instanz ein Modell hosten. In diesem Fall kann das Training offline auf einer GPU und die Inferenz in Echtzeit auf einer CPU vorgenommen werden. Wenn ein CPU-Vorgehensweise nicht praktikabel ist, dann kann ein Dienst auf einer GPU-Instanz ausgeführt werden. Da GPUs jedoch andere Leistungs- und Kosteneigenschaften als CPUs aufweisen, kann das Ausführen eines Dienstes, der einen Laufzeitalgorithmus auf eine GPU auslagert, jedoch erfordern, dass dieser anders als ein CPUbasierter Dienst ausgestaltet ist.
  • In mindestens einer Ausführungsform können Videodaten von der Client-Vorrichtung 502 zur Verbesserung in der Anbieterumgebung 506 bereitgestellt werden. In mindestens einer Ausführungsform können Videodaten zur Verbesserung auf der Client-Vorrichtung 502 verarbeitet werden. In mindestens einer Ausführungsform können Videodaten von einem Drittanbieter 524 für Inhalte gestreamt und durch den Drittanbieter 524 für Inhalte, die Anbieterumgebung 506 oder die Client-Vorrichtung 502 verbessert werden. In mindestens einer Ausführungsform können Videodaten von der Client-Vorrichtung 502 zur Verwendung als Trainingsdaten in der Anbieterumgebung 506 bereitgestellt werden.
  • In mindestens einer Ausführungsform kann überwachtes und/oder unüberwachtes Training durch die Client-Vorrichtung 502 und/oder die Anbieterumgebung 506 durchgeführt werden. In mindestens einer Ausführungsform wird ein Satz von Trainingsdaten 514 (z.B. klassifizierte oder bezeichnete Daten) als Eingabe bereitgestellt, um als Trainingsdaten zu fungieren. In einer Ausführungsform kann der Satz von Trainingsdaten in einer generativen adversen Trainingskonfiguration verwendet werden, um ein neurales Generatornetzwerk zu trainieren.
  • In mindestens einer Ausführungsform können Trainingsdaten Bilder von mindestens einem menschlichen Subjekt, Avatar oder Zeichen umfassen, für das ein neuronales Netzwerk zu trainieren ist. In mindestens einer Ausführungsform können Trainingsdaten Instanzen mindestens eines Objekttyps umfassen, für den ein neuronales Netzwerk trainiert werden soll, sowie Informationen, die diesen Objekttyp identifizieren. In mindestens einer Ausführungsform können die Trainingsdaten einen Satz von Bildern umfassen, die jeweils eine Darstellung eines Objekttyps umfassen, wobei jedes Bild außerdem eine Bezeichnung, Metadaten, eine Klassifikation oder ein anderes Informationselement beinhaltet, die einen Objekttyp identifizieren, der in einem jeweiligen Bild dargestellt ist oder diesen zugeordnet ist. Als Trainingsdaten können ebenfalls verschiedene andere Arten von Daten verwendet werden, die Textdaten, Audiodaten, Videodaten usw. umfassen können. In mindestens einer Ausführungsform werden Trainingsdaten 514 als Trainingseingabe in ein Trainingsmodul 512 bereitgestellt. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein System oder ein Dienst sein, das bzw. der Hardware und Software beinhaltet, wie beispielsweise eine oder mehrere Rechenvorrichtungen, die eine Trainingsanwendung ausführen, um ein neuronales Netzwerk (oder ein anderes Modell oder einen anderen Algorithmus usw.) zu trainieren. In mindestens einer Ausführungsform empfängt das Trainingsmodul 512 eine Anweisung oder Anfrage, die einen zum Training zu verwendenden Modelltyp angibt, in mindestens einer Ausführungsform kann ein Modell ein beliebiges geeignetes statistisches Modell, ein geeignetes Netzwerk oder ein geeigneter Algorithmus sein, die für derartige Zwecke nützlich sind, die ein künstliches neuronales Netzwerk, einen Deep-Learning-Algorithmus, einen lernenden Klassifikator, ein Bayes-Netzwerk usw. umfassen können. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein Anfangsmodell oder ein anderes nicht trainiertes Modell aus einem geeigneten Repositorium 516 auswählen und Trainingsdaten 514 nutzen, um ein Modell zu trainieren, um dadurch ein trainiertes Modell (z.B. trainiertes tiefes neuronales Netzwerk ) zu erzeugen, das verwendet werden kann, um ähnliche Datentypen zu klassifizieren oder andere derartige Inferenzen zu erzeugen. In mindestens einer Ausführungsform, bei der keine Trainingsdaten verwendet werden, kann dennoch ein geeignetes Anfangsmodell für das Training an Eingabedaten pro Trainingsmodul 512 ausgewählt werden.
  • In mindestens einer Ausführungsform kann ein Modell auf viele unterschiedliche Weisen trainiert werden, was teilweise von einem ausgewählten Modelltyp abhängen kann. In mindestens einer Ausführungsform kann einem Algorithmus für maschinelles Lernen ein Satz von Trainingsdaten bereitgestellt werden, wobei ein Modell ein Modellartefakt ist, das durch einen Trainingsprozess erzeugt wird. In mindestens einer Ausführungsform enthält jede Instanz von Trainingsdaten eine richtige Antwort (z.B. eine Klassifizierung), die als Ziel oder Zielattribut bezeichnet werden kann. In mindestens einer Ausführungsform findet ein Lernalgorithmus Muster in Trainingsdaten, die Eingabedatenattribute auf ein Ziel abbilden, eine vorherzusagende Antwort, und ein Modell für maschinelles Lernen, das diese Muster erfasst, wird ausgegeben. In mindestens einer Ausführungsform kann dann ein Modell für maschinelles Lernen verwendet werden, um Vorhersagen über neue Daten zu erhalten, für die kein Ziel festgelegt ist.
  • In mindestens einer Ausführungsform kann der Trainings- und Inferenzmanager 532 aus einem Satz von Modellen für maschinelles Lernen auswählen, die binäre Klassifikation, Mehrklassenklassifikation, generative und Regressionsmodellen umfassen. In mindestens einer Ausführungsform kann ein zu verwendender Modelltyp mindestens teilweise von einem vorherzusagenden Zieltyp abhängen.
  • Erzeugte Bilder, die eine oder mehrere der hier offenbarten Techniken anwenden, können auf einem Monitor oder einer anderen Anzeigevorrichtung angezeigt werden. In einigen Ausführungsformen kann die Anzeigevorrichtung direkt mit dem System oder Prozessor gekoppelt sein, das/der die Bilder erzeugt oder rendert. In anderen Ausführungsformen kann die Anzeigevorrichtung indirekt mit dem System oder Prozessor gekoppelt sein, wie beispielsweise über ein Netzwerk. Beispiele derartiger Netzwerks umfassen das Internet, mobile Telekommunikationsnetzwerke, ein WIFI-Netzwerk, sowie auch jedes andere verdrahtete und/oder drahtlose Netzwerksystem. Wenn die Anzeigevorrichtung indirekt gekoppelt ist, können die Bilder von dem System oder von dem Prozessor erzeugte Bilder über das Netzwerk zu der Anzeigevorrichtung gestreamt werden. Derartiges Streaming ermöglicht beispielsweise Videospielen oder anderen Anwendungen, die Bilder rendern, auf einem Server oder in einem Rechenzentrum ausgeführt zu werden, und die gerenderten Bilder gesendet und auf einer oder mehreren Benutzervorrichtungen (wie beispielsweise einem Computer, einer Videospielekonsole, einem Smartphone, einer anderen mobilen Vorrichtung usw.) angezeigt zu werden, die physisch von dem Server oder Rechenzentrum getrennt sind. Folglich können die hier offenbarten Techniken angewandt werden, um die Bilder zu verbessern, die gestreamt werden, und um Dienste zu verbessern, die Bilder streamen, wie beispielsweise NVIDIA GeForce Now (GFN), Google Stadia und dergleichen.
  • Beispielhaftes Streaming-System
  • 6 ist ein beispielhaftes Systemdiagramm für ein Streaming-System 605 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. 6 umfasst (einen) Server 603 (der(die) ähnliche Komponenten, Merkmale und/oder Funktionalität wie das beispielhafte Verarbeitungssystem 500 von 5A und/oder das beispielhafte System 565 von 5B, (eine) Client-Vorrichtung(en) 604 (die ähnliche Komponenten, Merkmale und/oder Funktionalität wie das beispielhafte Verarbeitungssystem 500 von 5A und/oder das beispielhafte System 565 von 5B und (ein) Netzwerk(e) 606 aufweisen kann(können), (das(die) ähnlich wie das(die) hier beschriebene(n) Netzwerk(e) sein kann(können). In einigen Ausführungsformen der vorliegenden Offenbarung kann das System 605 implementiert sein.
  • In einer Ausführungsform ist das Streaming-System 605 ein Spiele-Streaming-System und der(die) Server ist(sind) ein Spieleserver. In dem System 605 können die Client-Vorrichtung(en) 604 für eine Spielesitzung nur Eingabedaten als Reaktion auf Eingaben in die Eingabevorrichtung(en) 626 empfangen, welche die Eingabedaten an den(die) Server 603 übertragen, codierte Anzeigedaten von dem/den Server(n) 603 empfangen und die Anzeigedaten auf der Anzeige 624 anzeigen. Von daher werden die rechenintensiveren Berechnungen und Verarbeitungen an den/die Server 603 ausgelagert (z.B. wird das Rendering - insbesondere Strahlen- oder Pfad-Verfolgung - für die graphische Ausgabe der Spielesitzung von der(den) GPU(s) 615 des(der) Servers(n) 603 ausgeführt). Mit anderen Worten wird die Spielesitzung von dem(den) Server(n) 603 zu der(den) Client-Vorrichtung(en) 604 gestreamt, um dadurch die Anforderungen an die Client-Vorrichtung(en) 604 für die Graphikverarbeitung und das Rendering zu verringern.
  • Zum Beispiel kann eine Client-Vorrichtung 604 in Bezug auf eine Instanziierung einer Spielesitzung ein Frame der Spielesitzung auf der Anzeige 624 basierend auf dem Empfang der Anzeigedaten von dem(den) Server(n) 603 anzeigen. Die Client-Vorrichtung 604 kann eine Eingabe an einer der Eingabevorrichtung(en) 626 empfangen und als Antwort Eingabedaten erzeugen. Die Client-Vorrichtung 604 kann die Eingabedaten über die Kommunikationsschnittstelle 621 und über das(die) Netzwerk(e) 606 (z.B. das Internet) an den(die) Spielserver 603 übertragen, und der(die) Spielserver 603 kann(können) die Eingabedaten über die Kommunikationsschnittstelle 618 empfangen. Die CPU(s) 608 kann(können) die Eingabedaten empfangen, die Eingabedaten verarbeiten und Daten an die GPU(s) 615 übertragen, die die GPU(s) 615 veranlassen, ein Rendering der Spielesitzung zu erzeugen. Die Eingabedaten können z.B. eine Bewegung einer Figur des Benutzers in einem Spiel, das Abfeuern einer Waffe, das Nachladen, das Weiterleiten eines Balls, das Wenden eines Fahrzeugs usw. darstellen. Die Rendering-Komponente 612 kann die Spielsitzung rendern (z.B. repräsentativ für das Ergebnis der Eingabedaten), und die Render-Capture-Komponente 614 kann das Rendering der Spielsitzung als Anzeigedaten erfassen (z.B. als Bilddaten, die den gerenderten Frame der Spielsitzung erfassen). Das Rendering der Spielsitzung kann Beleuchtungs- und/oder Schatteneffekte mit Strahlen- oder Pfadverfolgung aufweisen, die unter Verwendung einer oder mehrerer paralleler Verarbeitungseinheiten - wie GPUs, die darüber hinaus die Verwendung eines oder mehrerer dedizierter Hardwarebeschleuniger oder Verarbeitungskerne zur Durchführung von Strahlen- oder Pfadverfolgungstechniken nutzen können - des(der) Server(s) 603 berechnet werden. Der Codierer 616 kann dann die Anzeigedaten codieren, um codierte Anzeigedaten zu erzeugen, und die codierten Anzeigedaten können über das(die) Netzwerk(e) 606 über die Kommunikationsschnittstelle 618 an die Client-Vorrichtung 604 übertragen werden. Die Client-Vorrichtung 604 kann die codierten Anzeigedaten über die Kommunikationsschnittstelle 621 empfangen und der Decoder 622 kann die codierten Anzeigedaten decodieren, um die Anzeigedaten zu erzeugen. Die Client-Vorrichtung 604 kann dann die Anzeigedaten über die Anzeige 624 anzeigen.
  • Fusionierte Verarbeitung eines kontinuierlichen mathematischen Operators
  • Systeme und Verfahren werden zur fusionierten Verarbeitung eines kontinuierlichen mathematischen Operators offenbart. Die Fusionierte Verarbeitung von kontinuierlichen mathematischen Operationen, wie beispielsweise punktweise nichtlineare Funktionen ohne Speichern von Zwischenergebnisse im Speicher, verbessert die Leistung, wenn die Speicherbusbandbreite begrenzt ist. In einer Ausführungsform wird eine kontinuierliche mathematische Operation ausgeführt, die mindestens zwei von Faltung, Upsampling, punktweisen nichtlinearen Funktion und Downsampling umfasst, um Eingangsdaten zu verarbeiten und alias-freie Ausgangsdaten zu erzeugen. In einer Ausführungsform wird eine fusionierte Verarbeitung durchgeführt, um ein alias-freies generatives neuronales Netzwerk zu implementieren, wobei Zwischenergebnisse (z.B., aufwärts abgetastete Merkmalskarten) in einem Auf-Chip-Speicher innerhalb eines Prozessors, wie beispielsweise dem gemeinsam genutzten Speicher/L1-Cache 465, anstatt dem externen Speicher 304 gespeichert werden. Das Speichern der Zwischendaten in dem gemeinsam genutzten Speicher verbessert die Leistung im Vergleich zum Speichern der Zwischendaten in dem externen Speicher und Laden der Zwischendaten aus dem externen Speicher. In einer Ausführungsform sind die Eingangsdaten zur parallelen Verarbeitung räumlich gekachelt, so dass die Zwischenergebnisse, die während der Verarbeitung der Eingangsdaten für jede Kachel erzeugt werden, in dem gemeinsam genutzten Speicher gespeichert werden können.
  • Das Implementieren einer kontinuierlichen mathematischen Operation, wie beispielsweise die Upsample-Nichtlinearität-Downsample-Sequenz der Schicht 200 oder das Verfahren 250 unter Verwendung primitiver Operationen, die in herkömmlichen Frameworks für tiefes Lernen verfügbar sind, ist ineffizient, weil die Zwischendaten gespeichert werden in und geladen werden aus dem externen Speicher. Die Zwischendaten 232, die Zwischendaten erhöhter Auflösung 237 und die verarbeiteten Zwischendaten erhöhter Auflösung 242 werden typischerweise zwischen internen (z.B., on-chip) und externen (z.B., offchip) Speicher mehrmals transferiert. die Transfers sind besonders aufwändig, weil der punktweise Nichtlinearitätsoperator 240 und der Downsampler 245 an aufwärts abgetasteten Daten hoher Auflösung arbeiten.
  • Anstatt herkömmliche primitive Operationen zu verwenden, kann die Schicht 200 oder das Verfahren 250 stattdessen als ein angepasster Kern implementiert sein, der die separaten Operationen zur Ausführung durch einen Prozessor kombiniert oder „fusioniert“, was den Transfer der Zwischendaten von einer Operation zu der nächsten durch einen gemeinsam genutzten Speicher ermöglicht, der innerhalb des Prozessors umfasst ist. Beispielsweise kann der angepasste Kern ein CUDA-Kern sein, der durch eine oder mehrere SMs 440 innerhalb der PPU 300 ausgeführt wird. Im Vergleich zu einer herkömmlichen Verarbeitung verbessert die fusionierte Verarbeitung über die Ausführung eines fusionierten Kerns die Trainingsleistung als Ergebnis eines verringerten externen Speicherverkehrs und verringert ebenfalls die externe Speichernutzung.
  • 7A veranschaulicht ein Konzeptdiagramm eines Verarbeitungssystems zur fusionierten Verarbeitung eines kontinuierlichen mathematischen Operators, der zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Eine Schicht 700 kann eine oder mehrere Verarbeitungselemente umfassen, die in der Schicht 200 von 2A enthalten sind, wobei ein Upsampler 735, ein punktweiser Nichtlinearitätsoperator 740 und ein Downsampler 745 jeweils den Upsampler 235, den punktweisen Nichtlinearitätsoperator 240 und den Downsampler 245 umfassen.
  • Auf ähnliche Weise können die Eingangsdaten 732, die Zwischendaten erhöhter Auflösung 737 und die verarbeiteten Zwischendaten erhöhter Auflösung 742 jeweils die Zwischendaten 232, Zwischendaten erhöhter Auflösung 237 und verarbeiteten Zwischendaten erhöhter Auflösung 242 umfassen. In einer Ausführungsform ist der Faltungsoperator 230 in der Schicht 700 umfasst.
  • Wenn ein fusionierter Kern durch einen SM 440 ausgeführt wird, um die Schicht 700 zu implementieren, können jeweils die Eingangsdaten 732, die Zwischendaten erhöhter Auflösung 737 und die verarbeiteten Zwischendaten erhöhter Auflösung 742 gespeichert werden in und geladen werden aus dem gemeinsam genutzten Speicher/L1-Cache 465. In einer Ausführungsform werden die Eingangsdaten 732 direkt in das Register geladen, das durch den Upsampler 735 zugänglich ist, und nicht in dem gemeinsam genutzten Speicher/L1-Cache 465 gespeichert. In einer Ausführungsform wird ein Faltungsoperator mit dem Upsampler 735 fusioniert und die Eingangsdaten 732, die von dem Faltungsoperator ausgegeben werden, werden direkt zu dem Upsampler 735 durch das Register transferiert, ohne in dem gemeinsam genutzten Speicher/L1-Cache 465 gespeichert zu sein. In einer Ausführungsform wird der Upsampler 735 mit dem punktweise Nichtlinearitätsoperator 740 fusioniert, so dass die Zwischendaten erhöhter Auflösung 737 direkt zu dem punktweise Nichtlinearitätsoperator 740 durch das Register transferiert werden, ohne in dem gemeinsam genutzten Speicher/L1-Cache 465 gespeichert zu sein. In einer Ausführungsform wird der punktweise Nichtlinearitätsoperator 740 mit dem Downsampler 745 fusioniert, so dass die verarbeiteten Zwischendaten erhöhter Auflösung 742 direkt zu dem Downsampler 745 durch das Register transferiert werden, ohne in dem gemeinsam genutzten Speicher/L1-Cache 465 gespeichert zu sein. In einer Ausführungsform ist der Downsampler 745 mit Speichern der verarbeiteten Zwischendaten fusioniert, so dass die von dem Downsampler 745 ausgegebenen verarbeiteten Zwischendaten direkt in den gemeinsam genutzten Speicher/L1-Cache 465 gespeichert werden, ohne im Register zu sein. In einer Ausführungsform ist der Downsampler 745 mit einem anschließenden Operator fusioniert, der die verarbeiteten Zwischendaten verarbeitet, so dass die verarbeiteten Zwischendaten direkt zu dem anschließenden Operator durch das Register transferiert werden, ohne in dem gemeinsam genutzten Speicher/L1-Cache 465 gespeichert zu sein.
  • In einer Ausführungsform können, wenn mindestens eines von den Eingangsdaten 732, den Zwischendaten erhöhter Auflösung 737 und den verarbeiteten Zwischendaten erhöhter Auflösung 742 die Kapazität des gemeinsam genutzten Speichers/L1-Cache 465 überschreitet, die Eingangsdaten niedriger Auflösung in Kacheln zur Verarbeitung partitioniert werden, so dass sich die Pro-Kachel-Zwischendaten 732, Zwischendaten erhöhter Auflösung 737 und/oder verarbeiteten Zwischendaten erhöhter Auflösung 742 in dem gemeinsam genutzten Speicher/LI-Cache 465 befinden. In einer Ausführungsform werden die Eingangsdaten in mindestens teilweise überlappenden Kacheln partitioniert, so dass Eingangsdaten innerhalb eines Umfangs einer ersten Kachel ebenfalls in innerhalb einer benachbarten Kachel umfasst sind.
  • 7B veranschaulicht das Kacheln von Zwischendaten, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. In einer Ausführungsform wird die Ausführung eines fusionierten Kerns zum Approximieren einer kontinuierlichen mathematischen Operation durch Unterteilen von Zieldaten 725 (z.B., Ausgangs- oder Zwischendaten) in nichtüberlappende Kacheln und Berechnen jeder Kachel der Zieldaten 725 durch einen unterschiedlichen Thread-Block parallelisiert. Beispielsweise wird jede der Zieldatenkacheln 720, 722, 724 und 726 durch einen unterschiedlichen Thread-Block erzeugt. Es sei bemerkt, dass die Zieldaten 725 dimensioniert sind, um einige Daten zu umfassen, die außerhalb eines mit einem erzeugten Ausgangsbild ausgerichteten konzeptuellen Umfangs (durchgezogene Linie) sind.
  • Unter der Annahme, dass Quellendaten 715 die Eingangsdaten sind, die verarbeitet werden, um die Zieldaten 725 zu erzeugen, werden Quellendatenkacheln 710, 712, 714 und 716 definiert, die jeweils den Zieldatenkacheln 720, 722, 724 und 726 entsprechen. Ein erster Thread-Block führt den fusionierten Kern aus und lädt die Quellendatenkachel 710 in den internen gemeinsam genutzten Speicher, der dem ersten Thread-Block zugeordnet ist. In einer Ausführungsform werden die unterschiedlichen Thread-Blöcke zugeteilt, um den fusionierten Kern auszuführen, um jeweils die Quellendatenkacheln 712, 724 und 716 zu verarbeiten und jeweils die Zieldatenkacheln 722, 724 und 726 jeweils zu erzeugen. In einer Ausführungsform wird mindestens ein Thread zugeteilt, um den fusionierten Kern auszuführen, um zwei oder mehr der Quellendatenkacheln 712, 724 und 716 zu verarbeiten und jeweils zwei oder mehr der Zieldatenkacheln 722, 724 und 726 zu erzeugen. Es sei bemerkt, dass jede der Quellendatenkacheln 720, 722, 724 und 726 räumlich mit benachbarten Quellendatenkacheln aufgrund der räumlichen Ausdehnung des Filters überlappt, wie beispielsweise das in 1E gezeigte Beispielfilter 160. In einer Ausführungsform wird die Zielkachelgröße basierend auf einer Menge des gemeinsam genutzten Speichers bestimmt, die zur Zuteilung zu jedem Thread-Block verfügbar ist. Die pro Thread-Block gemeinsam genutzte Speicherkapazität sollte gleich oder größer als die Speicherungsmenge sein, die für mindestens eine Quellendatenkachel und mindestens eines von den Pro-Quellen-Kacheleingangsdaten, den Zwischendaten erhöhter Auflösung und den verarbeiteten Zwischendaten erhöhter Auflösung benötigt wird.
  • In einer Ausführungsform können, wenn separierbare Filter für den Upsampler 735 und/oder den Downsampler 745 verwendet werden, Zwischenergebnisse der Filteroperationen (z.B., teilweise aufwärts abgetastete Zwischendaten) zwischen unterschiedlichen Threads gemeinsam genutzt werden. Das Verwenden eines separierbaren Filters ermöglicht eine Verarbeitung in einer einzigen Dimension (horizontal oder vertikal), mit dem Vorteil, dass weniger Berechnungen benötigt werden, um das gleiche Ergebnis für die gesamte Kachel wie die Verarbeitung in zwei Dimensionen zu erreichen. Ein Umfang des Registers oder des gemeinsam genutzten Speichers, die die Eingangsdaten 732 speichert, und die aufwärts abgetasteten Eingangsdaten in der einzigen Dimension können mehrmals wiederverwendet werden, um die gesamte Kachel aufwärts abzutasten. Auf ähnliche Weise kann der Umfang der Register oder des gemeinsam genutzten Speichers, der die verarbeiteten Zwischendaten erhöhter Auflösung 742 speichert, mehrmals wiederverwendet werden, um die gesamte Kachel abwärts abzutasten.
  • 7C veranschaulicht ein Ablaufdiagramm eines Verfahrens 750 zur fusionierten Verarbeitung eines kontinuierlichen mathematischen Operators, der zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. In einer Ausführungsform approximiert die fusionierte Verarbeitung den kontinuierlichen mathematischen Operator durch Verarbeitung einer diskreten Darstellung von Daten. Jeder Block des hier beschrieben Verfahrens 750 umfasst ein Rechenverfahren, das unter Verwendung einer beliebigen Kombination von Hardware, Firmware und/oder Software durchgeführt werden kann. So können beispielsweise verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Das Verfahren kann ebenfalls als computerverwendbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. Das Verfahren kann durch eine eigenständige Anwendung, einen Dienst oder gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder einem Plug-in in ein anderes Produkt bereitgestellt werden, um einige zu nennen. Außerdem wird das Verfahren 750 beispielhaft mit Bezug auf die Schicht 700 von 7A beschrieben. Dieses Verfahren kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, jedoch nicht beschränkt auf jene, die hier beschrieben sind. Des Weiteren versteht sich für Durchschnittsfachleute, dass jedes beliebige System, welches das Verfahren 750 durchführt, in den Umfang und das Wesen von Ausführungsformen der vorliegenden Offenbarung fällt.
  • Bei Schritt 755 werden Eingangsdaten in einem Speicher gespeichert, der eine oder mehrere Speichervorrichtungen umfasst. In einer Ausführungsform ist der Speicher ein externer Speicher, der mit einem Prozessor durch eine Schnittstelle gekoppelt ist. Beispielsweise umfasst der Prozessor in einer Ausführungsform die PPU 300 und der Speicher umfasst den Speicher 304. Der Prozessor führt Anweisungen aus, um den kontinuierlichen mathematischen Operator zu approximieren. In einer Ausführungsform implementiert der Prozessor ein neuronales Netzwerkmodell, das mindestens eine Stufe umfasst, welche die Eingangsdaten verarbeitet, um die Ausgangsdaten zu erzeugen. In einer Ausführungsform umfassen die Eingangsdaten eine Merkmalskarte.
  • Bei Schritt 760 liest der Prozessor die Eingangsdaten aus dem Speicher durch einen Prozessor, der mit dem Speicher durch die Schnittstelle gekoppelt ist. In einer Ausführungsform werden die Eingangsdaten durch die Schnittstelle transferiert und in einem gemeinsam genutzten Speicher innerhalb des Prozessors gespeichert. In einer Ausführungsform werden die Eingangsdaten in Kacheln partitioniert und eine oder mehrere Kacheln werden durch die Schnittstelle transferiert und in dem gemeinsam genutzten Speicher gespeichert.
  • Bei Schritt 765 werden die Eingangsdaten aufwärts abgetastet, um Zwischendaten erhöhter Auflösung zu erzeugen, um die kontinuierlichen Zwischendaten erhöhter Auflösung zu approximieren. In einer Ausführungsform sind Nullen für 2×-Upsampling mit den Eingangsdaten in jeder Dimension verschachtelt, bevor die Eingangsdaten gefiltert werden, um die Zwischendaten erhöhter Auflösung zu erzeugen. In einer Ausführungsform werden eindimensionale (1D) verschachtelte Eingangsdaten mit einem 2n-Abgriff-Filter verschachtelt, wobei n Eingangswerte ungleich null unter dem 2n-Abgriff-Filter sind. Wenn jeder Zwischendatenwert erhöhter Auflösung (z.B., Ausgangspixel) getrennt berechnet wird, erfordert die Faltung n Multiplikations-Addier-Operationen pro Pixel und ebenso so viele gemeinsam genutzte Speicherladeanweisungen für eine Gesamtzahl von 2n Anweisungen pro Ausgangspixel. Es sei jedoch bemerkt, dass die Berechnung von zwei benachbarten Ausgangspixels lediglich auf insgesamt n + 1 Pixel zugreift. Durch Berechnen zweier Ausgangspixel auf einmal und Vermeiden redundanter gemeinsam genutzten Speicherladeanweisungen, fallen durchschnittliche Kosten von 3/2n + 1/2 Anweisungen pro Pixel an - nahe bei 25% Ersparnisse. Für 4×-Upsampling kann die Anweisungszählung auf ähnliche Weise um bis zu 37,5% verringert werden, indem vier Ausgangspixels auf einmal berechnet werden. Diese Optimierungen können bei 2×- und 4×-Upsampling für sowohl separierbare als auch nicht separierbare Filter angewandt werden.
  • Für ein separierbares Filter müssen vertikale und horizontale 1D-Faltungen sequenziell durchgeführt werden, wohingegen ein nicht separierbares Filter unter Verwendung einer einzigen 2D-Faltung durchgeführt wird. In einer Ausführungsform sind die Eingangsdaten mehrdimensional und das Upsampling umfasst das Upsampling (horizontal oder vertikal) von Schnitten der Eingangsdaten (unter Verwendung eines separierbaren Filters), um Zwischenergebnisse zu erzeugen (z.B., teilweise aufwärts abgetastete Zwischendaten), die zu den Zwischendaten erhöhter Auflösung beitragen.
  • Bei Schritt 770 wird eine nichtlineare Operation auf die Zwischendaten erhöhter Auflösung angewandt, um verarbeitete Zwischendaten erhöhter Auflösung zu erzeugen. In einer Ausführungsform werden mindestens eines von den Zwischendaten erhöhter Auflösung und den verarbeiteten Zwischendaten erhöhter Auflösung nur in einem gemeinsam genutzten Speicher innerhalb des Prozessors gespeichert und nicht zwischen dem Prozessor und dem Speicher transferiert.
  • Bei Schritt 775 werden die verarbeiteten Zwischendaten erhöhter Auflösung abwärts abgetastet, um verarbeitete Zwischendaten zu erzeugen. In einer Ausführungsform ist eine Rate des Upsampling gleich einer Rate des Downsampling. In einer Ausführungsform, ein Rate von das Upsampling das Zweifache einer Rate des Downsampling. In einer Ausführungsform ist eine Rate des Downsampling das Zweifache einer Rate des Upsampling. In einer Ausführungsform hängt die Ausführung des Upsampling und Downsampling davon ab, ob die entsprechenden Filter separierbar sind oder nicht. In einer Ausführungsform sind die verarbeiteten Zwischendaten erhöhter Auflösung mehrdimensional und das Downsampling umfasst das Downsampling von Schnitten der verarbeiteten Zwischendaten erhöhter Auflösung in einer Dimension (unter Verwendung eines separierbaren Filters), um Zwischenergebnisse (z.B., teilweise abwärts abgetastete Zwischendaten) zu erzeugen, die zu den verarbeiteten Zwischendaten beitragen.
  • In einer Ausführungsform verarbeiten alle der Faltungen und der Nichtlinearitäts-Operationen Daten, die in dem internen gemeinsam genutzten Speicher gespeichert sind, und lediglich die endgültige Ausgabe der Downsampling-Operation oder einer anschließenden Operation wird in dem externen Speicher. In einer Ausführungsform sind das Upsampling, das Anwenden und das Downsampling äquivariant zu Verschiebung bis zu einem bestimmten Grad von Genauigkeit. In einer Ausführungsform sind das Upsampling, das Anwenden und das Downsampling äquivariant zu Verschiebung und Drehung bis zu einem bestimmten Grad von Genauigkeit. Bei Schritt 78 werden die verarbeiteten Zwischendaten in dem Speicher gespeichert.
  • In einer Ausführungsform sind die Eingangsdaten ein Abschnitt von größeren Eingangsdaten (z.B., gekachelt), die in die Eingangsdatenkacheln partitioniert sind, und der Prozessor führt die Anweisungen aus, um den kontinuierlichen mathematischen Operator durch Durchführen der Schritte 765, 770 und 775 auf den Eingangsdatenkacheln zu approximieren. In einer Ausführungsform werden das Upsampling, die nichtlineare Operation und das Downsampling gleichzeitig für mindestens zwei der Eingangsdatenkacheln durchgeführt, um mindestens zwei Ausgangsdatenkacheln zu erzeugen.
  • In einer Ausführungsform werden mindestens einer der Schritte 765, 770 und 775 auf einem Server oder in einem Rechenzentrum durchgeführt, um Ausgangsdaten zu erzeugen, die an eine Benutzervorrichtung gestreamt werden. In einer Ausführungsform wird mindestens einer der Schritte 765, 770 und 775 innerhalb einer Cloud-Rechenumgebung durchgeführt. In einer Ausführungsform wird mindestens einer der Schritte 765, 770 und 775 zum Trainieren, Testen oder Zertifizieren eines neuronalen Netzwerks durchgeführt, das in eines einer Maschine, einem Roboter oder einem autonomen Fahrzeug eingesetzt wird. In einer Ausführungsform wird mindestens einer der Schritte 765, 770 und 775 auf einer virtuellen Maschine durchgeführt, die einen Abschnitt einer GPU umfasst.
  • Die fusionierte Verarbeitung von kontinuierlichen mathematischen Operationen, wie beispielsweise punktweisen nichtlinearen Funktionen ohne Speichern von Zwischenergebnisse im Speicher, verbessert Leistung, wenn die Leistung begrenzt ist. In einer Ausführungsform wird eine kontinuierliche mathematische Operation ausgeführt, die mindestens zwei von Faltung, Upsampling, punktweiser nichtlinear Funktion und Downsampling umfasst, um Eingangsdaten zu verarbeiten und alias-freie Ausgangsdaten zu erzeugen. In einer Ausführungsform sind die Eingangsdaten räumlich zur Verarbeitung parallel gekachelt, so dass die Zwischenergebnisse, die während der Verarbeitung der Eingangsdaten für jede Kachel erzeugt werden, in einem gemeinsam genutzten Speicher innerhalb des Prozessors gespeichert werden können. Das Speichern der Zwischendaten in dem gemeinsam genutzten Speicher verbessert die Leistung im Vergleich zum Speichern der Zwischendaten in dem externen Speicher und Laden der Zwischendaten aus dem externen Speicher.
  • Es versteht sich, dass die in den beigefügten Figuren dargestellte Anordnung von Komponenten zu Veranschaulichungszwecken dient und dass andere Anordnungen möglich sind. Beispielsweise können ein oder mehrere der hier beschriebenen Elemente ganz oder teilweise als eine elektronische Hardwarekomponente realisiert sein. Andere Elemente können in Software, Hardware oder einer Kombination aus Software und Hardware implementiert sein. Außerdem können einige oder alle dieser anderen Elemente kombiniert werden, einige können ganz weggelassen werden und zusätzliche Komponenten können hinzugefügt werden, während die hier beschriebene Funktionalität noch immer erreicht wird. Folglich kann der hier beschriebene Gegenstand in vielen verschiedenen Variationen verkörpert sein und es wird davon ausgegangen, dass alle solche Variationen in den Geltungsbereich der Ansprüche fallen.
  • Um ein Verständnis des hier beschriebenen Gegenstands zu erleichtern, sind viele Aspekte im Hinblick auf Sequenzen von Aktionen beschrieben. Es versteht sich für den Fachmann, dass die verschiedenen Aktionen durch spezialisierte Schaltungen oder Schaltkreise, durch Programmanweisungen, die von einem oder mehreren Prozessoren ausgeführt werden, oder durch eine Kombination von beidem ausgeführt werden können. Die hier dargelegte Beschreibung einer beliebigen Sequenz von Aktionen soll nicht implizieren, dass der für die Ausführung dieser Sequenz beschriebenen spezifischen Reihenfolge gefolgt werden muss. Alle hier beschriebenen Verfahren können in jeder beliebigen geeigneten Reihenfolge durchgeführt werden, sofern es hier nicht anders angegeben ist oder anderweitig durch den Kontext klar widersprochen wird.
  • Die Verwendung der Begriffe „ein“ und „der“ und ähnliche Bezugnahmen im Kontext der Beschreibung des Gegenstands (insbesondere im Kontext der folgenden Ansprüche) sind so auszulegen, dass sie sowohl den Singular als auch den Plural abdecken, sofern dies hier nicht anders angegeben ist oder durch Kontext eindeutig im Widerspruch steht. Die Verwendung des Begriffs „zumindest ein“, gefolgt von einer Liste eines oder mehrerer Elemente (z. B. „zumindest einer von A und B“) ist so auszulegen, dass eines der aufgelisteten Elemente (A oder B) oder eine beliebige Kombination zweier oder mehrerer der aufgelisteten Elemente (A und B) ausgewählt wird, sofern dies hier nicht anders angegeben ist oder durch den Kontext klar widersprochen wird. Ferner dient die vorangehende Beschreibung lediglich der Zweck der Veranschaulichung und nicht dem Zweck der Beschränkung dient, da der angestrebte Schutzumfang durch die nachstehenden Ansprüche und deren Äquivalente definiert wird. Die Verwendung beliebiger und aller Beispiele, oder hier bereitgestellter beispielhafter Formulierungen (z.B. „wie beispielsweise“), dient lediglich der besseren Veranschaulichung des Gegenstands und stellt keine Beschränkung des Schutzumfangs des Gegenstands dar, sofern dies nicht anders beansprucht wird. Die Verwendung des Begriffs „basierend auf“ und anderer ähnlicher Ausdrücke, die eine Bedingung für die Herbeiführung eines Ergebnisses angeben, sowohl in den Ansprüchen als auch in der schriftlichen Beschreibung, soll keine wie auch immer anderen Bedingungen ausschließen, die dieses Ergebnis herbeiführen. Keine Formulierung in der Spezifikation sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als wesentlich für die praktische Umsetzung der beanspruchten Erfindung anzeigt.

Claims (21)

  1. Computerimplementiertes Verfahren zum Approximieren eines kontinuierlichen mathematischen Operators, umfassend: Speichern von Eingangsdaten in einem Speicher, der eine oder mehrere Speichervorrichtungen umfasst; und Lesen der Eingangsdaten aus dem Speicher durch einen Prozessor, der mit dem Speicher durch eine Schnittstelle gekoppelt ist, wobei der Prozessor Anweisungen ausführt, um den kontinuierlichen mathematischen Operator zu approximieren, durch: Upsampling der Eingabedaten, um Zwischendaten vergrößerter Auflösung zu erzeugen, die kontinuierliche Zwischendaten vergrößerter Auflösung approximieren; Anwenden einer nichtlinearen Operation auf die Zwischendaten vergrößerter Auflösung, um verarbeitete Zwischendaten vergrößerter Auflösung zu erzeugen; Downsampling der verarbeiteten Zwischendaten vergrößerter Auflösung, um verarbeitete Zwischendaten zu erzeugen; und Speichern der verarbeiteten Zwischendaten in dem Speicher.
  2. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei der Prozessor ein neuronales Netzwerkmodell implementiert, das mindestens eine Stufe umfasst; und die mindestens eine Stufe die Eingangsdaten verarbeitet, um die verarbeiteten Zwischendaten zu erzeugen.
  3. Computerimplementiertes Verfahren gemäß Anspruch 2, wobei die Eingangsdaten eine Merkmalskarte umfassen.
  4. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei mindestens eine der Zwischendaten vergrößerter Auflösung und der verarbeiteten Zwischendaten vergrößerter Auflösung lediglich in einem gemeinsam genutzten Speicher innerhalb des Prozessors gespeichert werden und nicht zwischen dem Prozessor und dem Speicher transferiert werden.
  5. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei die Eingangsdaten in Eingangsdatenkacheln partitioniert sind und der Prozessor die Anweisungen ausführt, um den kontinuierlichen mathematischen Operator zu approximieren, durch: gleichzeitiges Upsampling mindestens zwei der Eingangsdatenkacheln, um mindestens zwei Kacheln der Zwischendaten vergrößerter Auflösung zu erzeugen; gleichzeitiges Anwenden der nichtlinearen Operation auf die mindestens zwei Kacheln der Zwischendaten vergrößerter Auflösung, um mindestens zwei Kacheln den verarbeiteten Zwischendaten vergrößerter Auflösung zu erzeugen; gleichzeitiges Downsampling der mindestens zwei Kacheln der verarbeiteten Zwischendaten vergrößerter Auflösung, um mindestens zwei Kacheln der verarbeiteten Zwischendaten zu erzeugen; und Speichern der mindestens zwei Kacheln der verarbeiteten Zwischendaten in dem Speicher.
  6. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei der verarbeiteten Zwischendaten in mehrerer Ausgangsdaten Kacheln geteilt sind und der Prozessor die Anweisungen ausführt, um den kontinuierlichen mathematischen Operator zu approximieren durch: Zuweisen jeder Ausgabekachel ein einen Thread-Block zur Verarbeitung einer von mehreren Eingangskacheln, die jeweils einen Abschnitt der Eingangsdaten umfassen, durch: Upsampling der Eingabedatenkachel, um einen Abschnitt der Zwischendaten vergrößerter Auflösung für die Ausgabekachelzu erzeugen; Anwenden der nichtlinearen Operation auf den Abschnitt der Zwischendaten vergrößerter Auflösung, um einen Abschnitt der verarbeiteten Zwischendaten vergrößerter Auflösung für die Ausgabekachel zu erzeugen; Downsampling des Abschnitts der verarbeiteten Zwischendaten vergrößerter Auflösung, um einen Abschnitt der verarbeiteten Zwischendaten für die Ausgabekachel zu erzeugen; und Speichern des Abschnitts der verarbeiteten Zwischendaten in dem Speicher.
  7. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei die Eingangsdaten mehrdimensional sind und das Upsampling ein Upsampling der Eingangsdaten in einer Dimension umfasst, um teilweise aufwärtsabgetastete Zwischendaten zu erzeugen.
  8. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei die verarbeiteten Zwischendaten vergrößerter Auflösung mehrdimensional sind und das Downsampling der verarbeiteten Zwischendaten vergrößerter Auflösung in einer Dimension umfasst, um e abwärtsabgetastet Zwischendaten zu erzeugen.
  9. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei das Upsampling, Anwenden und Downsampling äquivariant gegenüber Verschiebung bis zu einem gewünschten Grad von Genauigkeit sind.
  10. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei das Upsampling, Anwenden und Downsampling äquivariant gegenüber Verschiebung und Drehung bis zu einem gewünschten Grad von Genauigkeit sind.
  11. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei mindestens einer der Schritte des Upsampling, Anwendens und Downsampling auf einem Server oder in einem Rechenzentrum durchgeführt wird, um Ausgangsdaten zu erzeugen, die zu einer Benutzervorrichtung gestreamt werden.
  12. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei mindestens einer der Schritte des Upsampling, Anwendens und Downsampling innerhalb einer Cloud-Rechenumgebung durchgeführt wird.
  13. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei mindestens einer der Schritte des Upsampling, Anwendens und Downsampling zum Trainieren, Testen oder Zertifizieren eines neuronales Netzwerks durchgeführt wird, das in einer Maschine, einem Roboter oder einem autonomen Fahrzeug eingesetzt wird.
  14. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei mindestens einer der Schritte des Upsampling, Anwendens und Downsampling auf einer virtuellen Maschine durchgeführt wird, die einen Abschnitt einer Graphikverarbeitungseinheit umfasst.
  15. System, umfassend: einen Speicher, der eine oder mehrere Speichervorrichtungen umfasst, die Eingangsdaten speichern; und einen Prozessor, der mit dem Speicher durch eine Schnittstelle gekoppelt ist, wobei der Prozessor Anweisungen ausführt, um einen kontinuierlichen mathematischen Operator zu approximieren, durch: Lesen der Eingangsdaten aus dem Speicher; Upsampling der Eingangsdaten, um Zwischendaten vergrößerter Auflösung zu erzeugen, die kontinuierlich Zwischendaten vergrößerter Auflösung approximieren; Anwenden einer nichtlinearen Operation auf die Zwischendaten vergrößerter Auflösung, um verarbeitete Zwischendaten vergrößerter Auflösung zu erzeugen; Downsampling der verarbeiteten Zwischendaten vergrößerter Auflösung, um verarbeitete Zwischendaten zu erzeugen; und Speichern der verarbeiteten Zwischendaten in dem Speicher.
  16. System gemäß Anspruch 15, wobei der Prozessor ein neuronales Netzwerkmodell implementiert, das mindestens eine Stufe umfasst; und die mindestens eine Stufe die Eingangsdaten verarbeitet, um die verarbeiteten Zwischendaten zu erzeugen.
  17. System gemäß Anspruch 16, wobei der Prozessor Anweisungen ausführt, um ein Verfahren auszuführen, wie in einem der Ansprüche 1 bis 14 erwähnt.
  18. System gemäß einem der Ansprüche 15 bis 17, wobei der Prozessor einen gemeinsam genutzten Speicher umfasst und mindestens eine der Zwischendaten vergrößerter Auflösung und der verarbeiteten Zwischendaten vergrößerter Auflösung werden lediglich in dem gemeinsam genutzten Speicher gespeichert und nicht zwischen dem Prozessor und dem Speicher übertragen werden.
  19. System gemäß einem der Ansprüche 15 bis 18, wobei das Upsampling, Anwenden und Downsampling zu einer Verschiebung bis zu einem gewünschten Grad von Genauigkeit äquivariant sind.
  20. Nichttransitorische computerlesbare Medien, die Computeranweisungen zum Approximieren eines kontinuierlichen mathematischen Operators speichern, die, wenn durch einen oder mehrere Prozessoren ausgeführt, den eine oder mehrere Prozessoren veranlassen, die folgenden Schritte durchzuführen: Lesen von Eingangsdaten aus einem Speicher, der mit mindestens einem der einen oder mehreren Prozessoren durch eine Schnittstelle verbunden ist; Upsampling der Eingangsdaten, um Zwischendaten vergrößerter Auflösung zu erzeugen, die kontinuierliche Zwischendaten vergrößerter Auflösung approximieren; Anwenden einer nichtlinearen Operation auf die Zwischendaten vergrößerter Auflösung, um verarbeitete Zwischendaten vergrößerter Auflösung zu erzeugen; Downsampling der verarbeiteten Zwischendaten vergrößerter Auflösung, um verarbeitete Zwischendaten zu erzeugen; und Speichern der verarbeiteten Zwischendaten in dem Speicher.
  21. Nichttransitorische computerlesbare Medien gemäß Anspruch 19 oder 20, wobei der mindestens eine der einen oder mehreren Prozessoren einen gemeinsam genutzten Speicher umfasst und mindestens eine der Zwischendaten vergrößerter Auflösung und der verarbeiteten Zwischendaten vergrößerter Auflösung nur in dem gemeinsam genutzten Speicher gespeichert und nicht zwischen dem Prozessor und dem Speicher transferiert werden.
DE102022114518.2A 2021-06-17 2022-06-09 Fusionierte verarbeitung eines kontinuierlichen mathematischen operators Pending DE102022114518A1 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202163211899P 2021-06-17 2021-06-17
US63/211,899 2021-06-17
US202163244125P 2021-09-14 2021-09-14
US63/244,125 2021-09-14
US17/562,521 2021-12-27
US17/562,521 US20220405980A1 (en) 2021-06-17 2021-12-27 Fused processing of a continuous mathematical operator

Publications (1)

Publication Number Publication Date
DE102022114518A1 true DE102022114518A1 (de) 2022-12-29

Family

ID=84388811

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022114518.2A Pending DE102022114518A1 (de) 2021-06-17 2022-06-09 Fusionierte verarbeitung eines kontinuierlichen mathematischen operators

Country Status (3)

Country Link
US (1) US20220405980A1 (de)
CN (1) CN115496196A (de)
DE (1) DE102022114518A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230237628A1 (en) * 2022-01-24 2023-07-27 Adobe Inc. Modeling continuous kernels to generate an enhanced digital image from a burst of digital images
CN116597268B (zh) * 2023-07-17 2023-09-22 中国海洋大学 一种高效的多聚焦图像融合方法及其模型搭建方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10257524B2 (en) * 2015-07-01 2019-04-09 Mediatek Inc. Residual up-sampling apparatus for performing transform block up-sampling and residual down-sampling apparatus for performing transform block down-sampling
CN110169072A (zh) * 2017-01-13 2019-08-23 索尼公司 图像处理装置和图像处理方法
EP3857447A4 (de) * 2018-09-30 2022-06-29 BOE Technology Group Co., Ltd. Vorrichtung und verfahren zur bildverarbeitung sowie system zum trainieren eines neuronalen netzes
KR20210067783A (ko) * 2019-11-29 2021-06-08 삼성전자주식회사 전자 장치, 그 제어 방법 및 시스템
US11948271B2 (en) * 2020-12-23 2024-04-02 Netflix, Inc. Machine learning techniques for video downsampling
US11984218B2 (en) * 2021-06-09 2024-05-14 Canon Medical Systems Corporation Apparatus, method, and non-transitory computer-readable storage medium for enhancing computed tomography image resolution

Also Published As

Publication number Publication date
US20220405980A1 (en) 2022-12-22
CN115496196A (zh) 2022-12-20

Similar Documents

Publication Publication Date Title
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
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
DE102019106123A1 (de) Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102021119722A1 (de) Feingranulare pro-vektor-skalierung für neuronale netzwerkquantisierung
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102022114518A1 (de) Fusionierte verarbeitung eines kontinuierlichen mathematischen operators
DE102018124211A1 (de) Lernbasierte Kameraposenschätzung von Bildern einer Umgebung
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102022118651A1 (de) Mehrfachauflösung-hash-codierung für neuronale netzwerke
DE102021205690A1 (de) Trainieren neuronaler Netze mit begrenzten Daten unter Verwendung invertierbarer Augmentationsoperatoren
DE102021130031A1 (de) Erscheinungsbildgesteuerte automatische dreidimensionale modellierung
DE102022100360A1 (de) Framework für maschinelles lernen angewandt bei einer halbüberwachten einstellung, um instanzenverfolgung in einer sequenz von bildframes durchzuführen
DE102022107232A1 (de) Gepackter fehlerkorrekturcode (ecc) für komprimierten datenschutz
DE102022113244A1 (de) Gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung
DE102022123434A1 (de) Gemeinsame Schätzung von Herzfrequenz und Atemfrequenz unter Verwendung neuronaler Netze
DE102021132992A1 (de) Messen und Detektieren von Leerlaufzeiten und Erkennen der Ursachen dafür in Cloud-basierten Streaming-Anwendungen
DE112019001978T5 (de) Verbesserung des realismus von szenen mit wasseroberflächen beim rendern
DE102022104142A1 (de) Strahldichte-caching in echtzeit durch ein neuronales netz für pfadverfolgungszwecke
DE102021104310A1 (de) Reservoir-basiertes räumlich-zeitliches resampling nach wichtigkeit unter verwendung einer globalen beleuchtungsdatenstruktur
DE102021128286A1 (de) Adaptives abtasten mit einer zielabtastrate

Legal Events

Date Code Title Description
R012 Request for examination validly filed