DE102022105841A1 - Automatische kennzeichnung und segmentierung mit hilfe von modellen des maschinellen lernens - Google Patents

Automatische kennzeichnung und segmentierung mit hilfe von modellen des maschinellen lernens Download PDF

Info

Publication number
DE102022105841A1
DE102022105841A1 DE102022105841.7A DE102022105841A DE102022105841A1 DE 102022105841 A1 DE102022105841 A1 DE 102022105841A1 DE 102022105841 A DE102022105841 A DE 102022105841A DE 102022105841 A1 DE102022105841 A1 DE 102022105841A1
Authority
DE
Germany
Prior art keywords
images
neural network
image
memory
data
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
DE102022105841.7A
Other languages
English (en)
Inventor
Subhashree Radhakrishnan
Partha Sriram
Farzin Aghdasi
Seunghwan Cha
Zhiding Yu
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 DE102022105841A1 publication Critical patent/DE102022105841A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/12Edge-based segmentation
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/02Affine transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/22Image preprocessing by selection of a specific region containing or referencing a pattern; Locating or processing of specific regions to guide the detection or recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/24Aligning, centring, orientation detection or correction of the image
    • G06V10/242Aligning, centring, orientation detection or correction of the image by image rotation, e.g. by 90 degrees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/25Determination of region of interest [ROI] or a volume of interest [VOI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/26Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10072Tomographic images
    • G06T2207/10081Computed x-ray tomography [CT]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

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

Abstract

In verschiedenen Beispielen werden Verfahren beschrieben, um ein trainiertes neuronales Netz zu erzeugen, das gegenüber verschiedenen Umweltmerkmalen robust ist. In einer Ausführungsform schließt das Training das Modifizieren von Bildern eines Datensatzes und das Erzeugen von Begrenzungsrahmen und/oder anderen Segmentierungsinformationen für die modifizierten Bilder ein, die zum Trainieren eines neuronalen Netzes verwendet werden.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Herkömmliche Verfahren für Auto-Kennzeichnungs- und Segmentierungswerkzeuge stützen sich auf bestehende Datensätze, die aufgrund eines Mangels an Daten in verschiedenen Bereichen möglicherweise keine robusten Tools für eine Vielzahl von Anwendungen liefern. Zum Beispiel können bestehende Trainingsdatensätze bestimmte Umgebungen, Objektausrichtungen oder andere Merkmale der Einsatzumgebung für bestimmte automatische Kennzeichnungs- oder Segmentierungswerkzeuge nicht einschließen. Darüber hinaus ist es zeitaufwändig und fehleranfällig, Anmerkungen und Masken für Trainingsdatensätze zu erhalten. Des Weiteren funktionieren neuronale Faltungsnetze (Convolutional Neural Networks - CNNs), die für die Objekterkennung und andere Aufgaben verwendet werden, oft am besten, wenn sie in rechteckige Rahmen unterteilt sind, wobei diese rechteckigen Rahmen Ränder aufweisen, die parallel zu den Begrenzungen der den CNNs bereitgestellten Bilder verlaufen, was in verschiedenen realen Anwendungen eine Domänenlücke verursachen kann. Bestehende Tools für die automatische Kennzeichnung und Segmentierung werden durch bestehende Trainingsdatensätze eingeschränkt, die kostspielig und schwer zu erzeugen sind. Außerdem müssen diese Tools beim Training von Menschen überwacht werden..
  • Figurenliste
  • Die vorliegenden Systeme und Verfahren für ein rotationsrobustes Auto-Kennzeichnungswerkzeug zur Segmentierung werden im Folgenden unter Bezugnahme auf die beigefügten Figuren detailliert beschrieben, wobei:
    • 1 ist eine Veranschaulichung einer ersten Trainingsstufe, um ein Vorkennzeichnungswerkzeug zu erzeugen, um eine Bildsegmentierung während einer zweiten Trainingsstufe durchzuführen, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
    • 2 ist eine Veranschaulichung einer zweiten Trainingsstufe, um ein trainiertes neuronales Netz zu erzeugen, um eine Bildsegmentierung gemäß einigen Ausführungsformen der vorliegenden Offenbarung durchzuführen;
    • 3 ist eine Veranschaulichung der Bildsegmentierung, die gemäß einigen Ausführungsformen der vorliegenden Offenbarung von einem neuronalen Netz erzeugt wird;
    • 4 ist eine Veranschaulichung der Bildsegmentierung, die gemäß einigen Ausführungsformen der vorliegenden Offenbarung durch ein neuronales Netz erzeugt wird;
    • 5 ist eine Veranschaulichung eines zweistufigen Trainingsprozesses zur Erzeugung eines trainierten neuronalen Netzes zum Durchführen einer Bildsegmentierung gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
    • 6 ist eine Veranschaulichung der Bildsegmentierung, die gemäß einigen Ausführungsformen der vorliegenden Offenbarung durch ein Vorkennzeichnungswerkzeug und ein trainiertes neuronales Netz erzeugt wird;
    • 7 ist ein Flussdiagramm, das eine erste Trainingsstufe veranschaulicht, um ein Vorkennzeichnungswerkzeug zu erzeugen, das die Bildsegmentierung während einer zweiten Trainingsstufe durchführt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
    • 8 ist ein Flussdiagramm, das eine zweite Trainingsstufe veranschaulicht, um ein trainiertes neuronales Netz zu erzeugen, um eine Bildsegmentierung durchzuführen, gemäß einigen Ausführungsformen der vorliegenden Offenbarung;
    • 9 ist ein Flussdiagramm, das eine Reihe von Transformationen veranschaulicht, die gemäß einigen Ausführungsformen der vorliegenden Offenbarung auf Bilder eines Datensatzes angewendet werden;
    • 10A veranschaulicht eine Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 10B veranschaulicht Inferenz- und/oder Trainingslogik gemäß mindestens einer Ausführungsform;
    • 11 veranschaulicht das Training und den Einsatz eines neuronalen Netzes gemäß mindestens einer Ausführungsform;
    • 12 veranschaulicht ein beispielhaftes Rechenzentrumssystem gemäß mindestens einer Ausführungsform;
    • 13A veranschaulicht ein beispielhaftes autonomes Fahrzeug gemäß mindestens einer Ausführungsform;
    • 13B veranschaulicht ein Beispiel für Kamerastandorte und Sichtfelder für das autonome Fahrzeug aus 13A gemäß mindestens einer Ausführungsform;
    • 13C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug aus 13A veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 13D ist eine Darstellung, die ein System zur Kommunikation zwischen cloudbasierten Server(n) und dem autonomen Fahrzeug aus 13A veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 14 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 15 ist ein Blockdiagramm, das ein Computersystem veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 16 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 17 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 18A veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 18B veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 18C veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 18D veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 18E und 18F veranschaulichen ein gemeinsam genutztes Programmiermodell gemäß mindestens einer Ausführungsform;
    • 19 veranschaulicht beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren gemäß mindestens einer Ausführungsform;
    • 20A-20B veranschaulichen beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren gemäß mindestens einer Ausführungsform;
    • 21A-21B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik gemäß mindestens einer Ausführungsform;
    • 22 veranschaulicht ein Computersystem gemäß mindestens einer Ausführungsform;
    • 23A veranschaulicht einen Parallelprozessor gemäß mindestens einer Ausführungsform;
    • 23B veranschaulicht eine Partitionseinheit gemäß mindestens einer Ausführungsform;
    • 23C veranschaulicht einen Verarbeitungscluster gemäß mindestens einer Ausführungsform;
    • 23D veranschaulicht einen Grafik-Multiprozessor gemäß mindestens einer Ausführungsform;
    • 24 veranschaulicht ein System mit mehreren Grafikverarbeitungseinheiten (graphics processing unit - GPU) gemäß mindestens einer Ausführungsform;
    • 25 veranschaulicht einen Grafikprozessor gemäß mindestens einer Ausführungsform;
    • 26 ist ein Blockdiagramm, das eine Prozessor-Mikroarchitektur für einen Prozessor veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 27 veranschaulicht einen Deep-Learning-Anwendungsprozessor gemäß mindestens einer Ausführungsform;
    • 28 ist ein Blockdiagramm, das einen beispielhaften neuromorphen Prozessor veranschaulicht, gemäß mindestens einer Ausführungsform;
    • 29 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 30 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 31 veranschaulicht mindestens Abschnitte eines Grafikprozessors gemäß einer oder mehreren Ausführungsformen;
    • 32 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine eines Grafikprozessors gemäß mindestens einer Ausführungsform;
    • 33 ist ein Blockdiagramm von mindestens Abschnitten eines Grafikprozessorkerns gemäß mindestens einer Ausführungsform;
    • 34A-34B veranschaulichen Thread-Ausführungslogik, die ein Array von Verarbeitungselementen eines Grafikprozessorkerns beinhaltet, gemäß mindestens einer Ausführungsform;
    • 35 veranschaulicht eine Parallelverarbeitungseinheit (parallel processing unit - „PPU“) gemäß mindestens einer Ausführungsform;
    • 36 veranschaulicht einen Universalverarbeitungscluster (general processing cluster - „GPC“) gemäß mindestens einer Ausführungsform;
    • 37 veranschaulicht eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform;
    • 38 veranschaulicht einen Streaming-Multiprozessor gemäß mindestens einer Ausführungsform.
    • 39 ist ein beispielhaftes Datenablaufdiagramm für eine weiterentwickelte Rechenpipeline gemäß mindestens einer Ausführungsform;
    • 40 ist eine Systemdarstellung für ein beispielhaftes System zum Trainieren, Anpassen, Instanziieren und Einsetzen von Modellen des maschinellen Lernens in einer weiterentwickelten Rechenpipeline gemäß mindestens einer Ausführungsform;
    • 41 veranschaulicht gemäß mindestens einer Ausführungsform einen fortgeschrittenen Rechenprozess 4010A zur Verarbeitung von Bildgeberdaten;
    • 42A schließt gemäß mindestens einer Ausführungsform ein Beispiel-Datenablaufdiagramm eines virtuellen Instruments ein, das eine Ultraschallvorrichtung unterstützt;
    • 42B schließt ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments ein, das einen CT-Scanner unterstützt, gemäß mindestens einer Ausführungsform
    • 43A veranschaulicht ein Datenablaufdiagramm für einen Prozess zum Trainieren eines Modells des maschinellen Lernens gemäß mindestens einer Ausführungsform; und
    • 43B ist eine beispielhafte Veranschaulichung einer Client-Server-Architektur zum Erweitern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • Ausführungsformen der vorliegenden Offenbarung beziehen sich auf ein rotationsrobustes Auto-Kennzeichnungswerkzeug für die Segmentierung. Es werden Systeme und Verfahren offenbart, die ein Selbsttrainingsverfahren bereitstellen, um Segmentierungsmasken (z. B. für Fußgängererkennungsaufgaben) aus Begrenzungsrahmen zu erhalten, die von einem ersten Modell erzeugt wurden. Die erhaltenen Segmentierungsmasken können dann von einem zweiten Modell verwendet werden, um enge(re) Begrenzungsrahmen in gedrehten Bildern zu erzeugen, die als zusätzliche Augmentation verwendet werden können, um einen an der Ground Truth orientierten Begrenzungsrahmen (z. B. einen nicht achsenausgerichteten Begrenzungsrahmen) für Objekte in einem Bild zu erzeugen und/oder um Segmentierungskennungen für Objekte zu erhalten. Die Rotation ist ein Beispiel für Modifikationen, die in verschiedenen Ausführungsformen auf einen Trainingsdatensatz (z. B. einen kuratierten und mit Anmerkungen versehenen Satz von Bildern) angewendet werden können, um die Robustheit der trainierten Modelle zu erhöhen und eine Domänenlücke zu verringern. Die Domänenlücke beschreibt einen Unterschied zwischen einer in einem Trainingsdatensatz erfassten Umgebung und einer Umgebung, in der ein trainiertes Modell (z. B. mit dem Trainingsdatensatz trainiert) eingesetzt wird. Weitere Beispiele für Modifikationen des Trainingsdatensatzes, die in der vorliegenden Offenbarung verwendet werden, schließen Modifikationen der Luminanz, des Kontrasts, der Skalierung, der Drehung, der Ausrichtung oder andere Modifikationen des Trainingsdatensatzes ein, um die Umgebung zu emulieren, in der das trainierte Modell Schlussfolgerungen erzeugt.
  • Im Gegensatz zu herkömmlichen Systemen, wie den oben beschriebenen, erfordern die in der vorliegenden Offenbarung beschriebenen Systeme und Verfahren keine menschliche Interaktion (z. B. Selbsttrainingsverfahren) und können mit vorhandenen Trainingsdatensätzen verwendet werden. Mit anderen Worten, die in der vorliegenden Offenbarung beschriebenen Systeme und Verfahren eliminieren die Kosten und Fehler, die durch die Notwendigkeit menschlichen Eingreifens entstehen, und können mit vorhandenen Trainingsdatensätzen durchgeführt werden, wodurch die Notwendigkeit und die Kosten für das Erzeugen eines Trainingsdatensatzes entfallen. Zum Beispiel sind Modelle, die mit den in der vorliegenden Offenbarung beschriebenen Systemen und Verfahren trainiert wurden (z. B. Faltungsneuronale Netze), robust gegenüber Rotation, Verdeckung, Beschneidung oder anderen Formen der Behinderung von Objekten in Bildern oder Videos.
  • In einer Ausführungsform wird ein zweistufiges Auto-Kennzeichnungswerkzeug verwendet, um eine Segmentierung und/oder Anmerkungen zu erhalten, die zumindest teilweise auf Begrenzungsrahmen für einen Satz von Bildern basieren. In dieser Ausführungsform wird in der ersten Stufe ein Modell anhand eines Trainingsdatensatzes trainiert, um vorläufige Maskenkommentare für den Trainingsdatensatz oder einen anderen Trainingsdatensatz zu erzeugen. In einem Beispiel wird ein Maskenregion-basierendes neuronales Faltungsnetz (Masken-Region-based Convolutional Neural Network - Masken-R-CNN) mit Hilfe eines ersten Datensatzes (z. B. dem Common Objects in Context-Datensatz) trainiert. Das Masken-R-CNN wird dann verwendet, um vorläufige Maskenkommentare für einen zweiten Trainingsdatensatz zu erzeugen. Des Weiteren wird in diesem Beispiel das Masken-R-CNN ohne ein Regionvorschlagsnetz (Region Proposal Network) ausgeführt, da der Trainingsdatensatz Begrenzungsrahmen für Objekte in den Bildern einschließt. In verschiedenen Ausführungsformen werden die vorläufigen Maskenkommentare und der zweite Trainingsdatensatz dann verwendet, um ein neues Modell zu trainieren oder das oben beschriebene Masken-R-CNN-Modell erneut zu trainieren, was zu einem Vorkennzeichnungswerkzeug führt, das in der zweiten Stufe verwendet wird.
  • In der zweiten Ausführungsform wird ein neues Modell (z. B. ein neues Masken-R-CNN-Modell) unter Verwendung des zweiten Trainingsdatensatzes trainiert, der Begrenzungsrahmen und Segmentierungen einschließt, die von dem in Stufe 1 erzeugten Vorkennzeichnungswerkzeug erzeugt wurden. Zusätzlich werden in verschiedenen Ausführungsformen Modifikationen an dem zweiten Trainingsdatensatz vorgenommen. In einem Beispiel werden die Bilder aus dem Trainingsdatensatz gedreht (z. B. um fünf Grad im Uhrzeigersinn), das Vorkennzeichnungswerkzeug wird dann verwendet, um grobe Begrenzungsrahmen um die Objekte in den Bildern des Trainingsdatensatzes zu erzeugen, und ein neues Modell (z. B. das in Stufe zwei trainierte Modell) wird verwendet, um feinere Begrenzungsrahmen um die Objekte in den Bildern zu erzeugen. Auf diese Weise können zusätzliche Trainingsdaten erzeugt werden, um den Trainingsdatensatz zu erweitern und eventuelle Lücken zu schließen.
  • Unter Bezugnahme auf 1 ist 1 ein beispielhaftes Verfahren zum Trainieren eines Vorkennzeichnungswerkzeugs 108 zur Verwendung beim Trainieren eines rotationsrobusten neuronalen Netzes zur Segmentierung gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Es versteht sich von selbst, dass diese und andere hier beschriebene Anordnungen nur als Beispiele aufgeführt sind. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Anordnungen, Gruppierungen von Funktionen usw.) können zusätzlich zu den gezeigten oder anstelle von ihnen verwendet werden, und einige Elemente können ganz weggelassen werden. Ferner sind viele der hier beschriebenen Elemente funktionale Einheiten, die als einzelne oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und an jedem geeigneten Ort implementiert werden können. Verschiedene hierin beschriebene Funktionen, die von Einheiten durchgeführt werden, können von Hardware, Firmware und/oder Software ausgeführt werden. Zum Beispiel können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt.
  • Jeder Block der hier beschriebenen Verfahren 100, 200 und 500 umfasst einen Prozess des Berechnens, der mit einer beliebigen Kombination von Hardware, Firmware und/oder Software durchgeführt werden kann (siehe 1, 2 und 5). Die verschiedenen Funktionen und/oder Operationen, die in der vorliegenden Offenbarung beschrieben werden, können von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. In einem Beispiel schließt der Datensatz 102 eine Sammlung kommentierter Bilder ein, die in einer Speichervorrichtung wie einer Festplatte (HDD) gespeichert sind. In einem anderen Beispiel schließt das neuronale Netz 104 einen im Speicher eines Rechensystems gespeicherten Quellcode ein, der, wenn er von einem Prozessor des Rechensystems ausgeführt wird, das Rechensystem veranlasst, Operationen zur Inferenzierung durchzuführen, wie sie im Folgenden näher beschrieben werden. Die Verfahren können auch in Form von computerverwendbaren Anweisungen, die auf einem Speichermedium gespeichert sind, verkörpert werden. Die Verfahren können als eigenständige Anwendung, als Dienst oder gehosteter Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder als Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus werden die Verfahren 100, 200 und 500 beispielhaft für das Computersystem von 12 beschrieben. Diese Verfahren können jedoch zusätzlich oder alternativ von jedem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen Systeme.
  • 1 ist ein Ablaufdiagramm, das ein Verfahren 100 zum Erzeugen des Vorkennzeichnungswerkzeugs 108 gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt (siehe 1). Das Verfahren 100 schließt den Datensatz 102 ein, der in verschiedenen Ausführungsformen Bilder 110, die verschiedene Objekte und/oder Klassen von Objekten (z. B. Menschen, Autos, Kleidung, Tiere usw.) darstellen, und Begrenzungsrahmen 112 einschließt. In einer Ausführungsform schließen die Begrenzungsrahmen 112 Metadaten oder andere Informationen ein, die den Bildern 110 des Datensatzes 102 zugeordnet sind und ein Rechteck oder eine andere geometrische Form definieren, die ein bestimmtes Objekt in einem Bild des Datensatzes 102 umschließt (z. B. eine Begrenzung bildet). Zum Beispiel schließen die Begrenzungsrahmen 112 die minimale (z. B. die kleinste Fläche) oder perimetrische Begrenzungsrahmen um ein Objekt in einem Bild ein, bei der alle Pixel, die das Objekt darstellen, innerhalb einer durch die Begrenzungsrahmen geschaffenen Begrenzung liegen. Die Begrenzungsrahmen 112 haben in verschiedenen Ausführungsformen die Dimension N, wobei N die Gesamtzahl der Dimensionen ist, die in den Bildern 110 des Datensatzes 102 dargestellt sind. Zum Beispiel kann der Datensatz 102 dreidimensionale Bilder 110, Bilder 110, die ein Video umfassen, zweidimensionale Bilder 110 oder andere Bilder einschließen, die sich für das Training eines neuronalen Netzes oder das Durchführen von Schlussfolgerungen unter Verwendung eines neuronalen Netzes eignen.
  • In verschiedenen Ausführungsformen umfasst der Datensatz 102 einen kuratierten Datensatz, der Segmentierungs- und Anmerkungsinformationen (z. B. Begrenzungsrahmen 112) einschließt, die zumindest teilweise auf menschlichen Operatoren basieren. In einem Beispiel umfasst der Datensatz 102 den Datensatz Common Objects in Context (COCO). In wieder anderen Ausführungsformen werden die Segmentierungs- und Anmerkungsinformationen (z. B. Begrenzungsrahmen 112) von einem Modell wie einem neuronalen Netz erzeugt.
  • Zurück zu 1: Die Bilder 110 des Datensatzes 102 werden einem neuronalen Netz 104 bereitgestellt, das vorläufige Maskenkommentare 114 erzeugt. In einer Ausführungsform ist das neuronale Netz 104 ein trainiertes Netz zur Erkennung von Objekten und/oder einer Klasse von Objekten, die in den Bildern 110 dargestellt sind. In verschiedenen Ausführungsformen schließt das neuronale Netz 104 ein beliebiges neuronales Netz ein, das darauf trainiert ist, die Segmentierung und Kennzeichnung von Bildern durchzuführen. In einem Beispiel wird das neuronale Netz 104 anhand des Datensatzes 102 trainiert. In einem anderen Beispiel wird das neuronale Netz 104 unter Verwendung eines vom Datensatz 102 getrennten Datensatzes trainiert.
  • In verschiedenen Ausführungsformen umfasst das neuronale Netz 104 ein auf Maskenregionen basierendes neuronales Faltungsnetz (R-CNN) oder ein anderes neuronales Faltungsnetz, das geeignet ist, grobe Segmentierungsinformationen für Objekte in den Bildern 110 zu erzeugen, die beim Training eines neuronalen Netzes 106 verwendet werden. In verschiedenen Ausführungsformen schließen die dem neuronalen Netz 104 zur Verfügung gestellten Bilder 110 keine Segmentierungs- und/oder Anmerkungsinformationen ein (z. B. die Begrenzungsrahmen 112). In einer Ausführungsform schließen die vorläufigen Maskenanmerkungen 114 Begrenzungsrahmen und/oder Masken für Objekte und/oder eine Klasse von Objekten (z. B. Personen) ein, die in den Bildern 110 dargestellt sind. Die vorläufigen Maskenanmerkungen 114 werden weiter unten im Zusammenhang mit 3 näher beschrieben.
  • In verschiedenen Ausführungsformen schließt das neuronale Trainingsnetz 106 ein beliebiges neuronales Netz ein, das mit Segmentierungs- und Anmerkungsinformationen trainiert werden kann. In einem Beispiel ist das neuronale Netz 106 ein Masken-R-CNN ohne das Modul Regional Proposal Network. Des Weiteren wird das neuronale Netz 106, wie in der in 1 dargestellten Ausführungsform veranschaulicht, anhand des Datensatzes 102, einschließlich der Begrenzungsrahmen 112 und der vorläufigen Maskenkommentare 114 trainiert, die zumindest teilweise vom neuronalen Netz 104 erzeugt wurden. In verschiedenen Ausführungsformen wird als Ergebnis des Trainings des neuronalen Netzes 106, wie oben beschrieben, ein Vorkennzeichnungswerkzeug 108 erzeugt. Bei dem Vorkennzeichnungswerkzeug 108 handelt es sich in einer Ausführungsform um ein trainiertes neuronales Netz, das beim Durchführen von Rückschlüssen auf eine Eingabe (z. B. ein Bild) eine Feinsegmentierung (z. B. Masken) und Anmerkungen für Bilder eines Datensatzes (z. B. des Datensatzes 102) erzeugt. In verschiedenen Ausführungsformen schließt das Vorkennzeichnungswerkzeug 108 Software, Hardware oder eine Kombination davon ein, die ein neuronales Netz oder ein anderes Modell verwendet, um verschiedene Operationen durchzuführen, wie z. B. das Durchführen von Schlussfolgerungen, um eine Maske zu erzeugen, das Erstellen von Begrenzungsrahmen oder andere in der vorliegenden Offenbarung beschriebene Operationen. Wie weiter unten näher beschrieben, kann das Vorkennzeichnungswerkzeug 108 verwendet werden, um eine Segmentierung und Kennzeichnung für modifizierte Datensätze zu erzeugen. In einem Beispiel werden die Bilder 110 des Datensatzes 102 gedreht oder anderweitig verändert, um ein umweltverträgliches, trainiertes Modell zu erzeugen.
  • 2 ist ein Ablaufdiagramm, das ein Verfahren 200 zum Erzeugen eines trainierten neuronalen Netzes 208 zeigt, das gemäß einigen Ausführungsformen der vorliegenden Offenbarung robust gegenüber Drehung, Verdeckung, Abschneiden oder anderen Formen der Behinderung oder Verdunkelung von Objekten in Bildern oder Videos ist. In verschiedenen Ausführungsformen schließt das Verfahren 200 zum Trainieren des trainierten neuronalen Netzes 208 einen Datensatz 202 ein. Zum Beispiel schließt der Datensatz 202 einen Satz von Bildern ein, die Objekte darstellen (z. B. einen kuratierten Satz von Bildern einschließlich Begrenzungsrahmen und Anmerkungen), wie oben im Zusammenhang mit 1 beschrieben. Des Weiteren schließt der Datensatz 202 in verschiedenen Ausführungsformen Modifikationen und/oder Änderungen an dem Satz der im Datensatz 202 enthaltenen Bilder ein. Die Modifikationen und/oder Änderungen an den Bildgebern erweitern in solchen Ausführungsformen den Datensatz 202, indem sie zumindest modifizierte Bilder 210 erzeugen, um eine Domänenlücke zwischen dem Bildgeber im Datensatz 202 und der Zieldomäne für das trainierte neuronale Netz 208 zu verringern, so dass das trainierte neuronale Netz 208 bei der Inferenz bessere Ergebnisse erzielen kann.
  • In einer Ausführungsform wird der Datensatz 202 erweitert, indem der Satz von Bildern zumindest um eine optische Achse gedreht wird, um die modifizierten Bilder 210 zu erzeugen. Zum Beispiel wird der Satz von Bildern um fünf Grad im Uhrzeigersinn gedreht, um die modifizierten Bilder 210 zu erzeugen. Darüber hinaus werden die modifizierten Bilder 210 in verschiedenen Ausführungsformen beim Training des neuronalen Netzes 206 verwendet, das weiter unten ausführlicher beschrieben wird. In einem anderen Beispiel werden den Bildern 210 zugeordnete Luminanzwerte modifiziert, um die modifizierten Bilder 210 zu erzeugen.
  • Des Weiteren werden in verschiedenen Ausführungsformen mehrere Modifikationen und/oder Änderungen an dem Satz von Bildern durchgeführt, um die modifizierten Bilder 210 zu erzeugen und den Datensatz 202 zu erweitern. In einem Beispiel wird der Bildgeber um fünf Grad im Uhrzeigersinn und zehn Grad im Uhrzeigersinn gedreht, um die modifizierten Bilder 210 zu erzeugen (z. B. schließen die modifizierten Bilder 210 Bilder des um fünf Grad und zehn Grad gedrehten Bildgebers ein). In einer Ausführungsform werden mehrere Arten von Modifikationen oder Änderungen auf den Satz von Bildern angewendet, um die modifizierten Bilder 210 zu erzeugen. Zum Beispiel wird der Satz von Bildern gedreht und ein dem Satz von Bildern zugeordneter Maßstab geändert. Diese Modifikationen und/oder Änderungen können einzeln oder in Kombination durchgeführt werden. Des Weiteren können die Modifikationen und/oder Änderungen seriell oder parallel auf den Satz von Bildern angewendet werden.
  • Wie oben beschrieben, kann die Modifikation und/oder Änderung des Bildsatzes eine Vielzahl verschiedener Operationen einschließen, wie z. B. Drehen, Spiegeln, Zuschneiden, Ändern der Belichtung, Ändern des Weißabgleichs, Ändern der Farbe, Ändern der Sättigung, Schärfen der Bilder, Anwenden von Filtern, Ändern des Maßstabs oder anderweitiges Ändern, Einstellen oder anderweitiges Verändern des Bildsatzes, um eine Umgebung darzustellen, in der das trainierte neuronale Netz 208 die Inferenzierung durchführt.
  • Zurück zu 2: In verschiedenen Ausführungsformen werden die modifizierten Bilder 210 einem Vorkennzeichnungswerkzeug 208 bereitgestellt, das feinere Maskenkommentare 214 für Objekte erzeugt, die in den modifizierten Bildern 210 dargestellt sind. Bei dem Vorkennzeichnungswerkzeug 208 handelt es sich in einer Ausführungsform um ein neuronales Netz oder ein anderes Modell, das mit dem Verfahren 100 trainiert wurde, das oben im Zusammenhang mit 1 beschrieben wurde. Zum Beispiel ist das Vorkennzeichnungswerkzeug 208 ein Masken-R-CNN, das mit einem Datensatz trainiert wurde, der Begrenzungsrahmen und Anmerkungen einschließt (z. B. der Datensatz 102). In einer Ausführungsform erzeugt das Vorkennzeichnungswerkzeug 208 feinere Maskenkommentare 214 für eine bestimmte Klasse von Objekten und/oder Objekten in den modifizierten Bildern 214, wie weiter unten im Zusammenhang mit 4 näher beschrieben. Die feineren Maskenvermerke 214 schließen in verschiedenen Ausführungsformen zusätzliche Daten und/oder Metadaten ein, die Pixel der modifizierten Bilder 210 identifizieren, die ein bestimmtes Objekt und/oder eine bestimmte Klasse von Objekten darstellen. In einem Beispiel umfassen die modifizierten Bilder 210 einen Satz von Bildern, die Personen im Kontext darstellen (z. B. Fußgänger), die um eine Reihe von Werten um eine optische Achse gedreht wurden. Das Vorkennzeichnungswerkzeug 208 erzeugt dann feinere Maskenkommentare 214, die die Pixel des Bildsatzes identifizieren, die Personen einschließen, sowie Kennzeichnungen, die die Pixel als Personen zuordbar identifizieren. Wie bereits erwähnt, führt die Drehung des Bildes um die optische Achse in einigen Beispielen dazu, dass Begrenzungsrahmen und andere Segmentierungsinformationen, die dem Datensatz 202 zugeordnet sind, ungenau und/oder falsch sind. In solchen Beispielen erzeugt das Vorkennzeichnungswerkzeug 208 feinere Maskenkommentare 214, die genaue Segmentierungsinformationen bereitstellen, die zum Trainieren eines neuronalen Netzes 206 verwendet werden.
  • In verschiedenen Ausführungsformen schließt das neuronale Trainingsnetz 206 jedes neuronale Netz ein, das mit Segmentierungs- und Annotationsinformationen wie den feineren Maskenannotationen 214 trainiert werden kann. In einem Beispiel ist das neuronale Netz 206 ein Masken-R-CNN, das mit dem Datensatz 202 trainiert wurde, der die modifizierten Bilder 210 und die feineren Maskenkommentare 214 einschließt. Des Weiteren führt das neuronale Netz 206, wie in der Ausführungsform in 2 veranschaulicht, beim Training mit dem Datensatz 202 (der die Begrenzungsrahmen, die modifizierten Bilder 210 und die feineren Maskenanmerkungen 214 einschließt) zu einem trainierten neuronalen Netz 208. In verschiedenen Ausführungsformen handelt es sich bei dem trainierten neuronalen Netz 208 um ein robustes Modell, das in der Lage ist, Objekte oder Klassen von Objekten zu identifizieren, die in Bildern dargestellt sind. Zum Beispiel kann das trainierte neuronale Netz 208 durch das Drehen von Bildern des Datensatzes, um modifizierte Bilder 210 zu erzeugen, in der Lage sein, Objekte in Bildern unabhängig von einem optischen Winkel (z. B. dem Kamerawinkel) der Bilder zu erkennen. In einem anderen Beispiel kann das trainierte neuronale Netz 208 durch die Reduzierung der Luminanzwerte, die den Bildern im Datensatz zugeordnet sind, in der Lage sein, Objekte in schwach beleuchteten Bildern zu erkennen.
  • 3 ist eine Veranschaulichung eines Bildes 300, das gemäß mindestens einer Ausführungsform der vorliegenden Offenbarung vorläufige Maskenkommentare 302 einschließt. In verschiedenen Ausführungsformen werden die vorläufigen Maskenkommentare 302 von einem trainierten Modell erzeugt, wie z. B. dem oben im Zusammenhang mit 1 beschriebenen neuronalen Netz 104 zur Inferenzierung.
  • Wie in 3 veranschaulicht, schließt das Bild 300 die vorläufigen Maskenkommentare 302 für die auf dem Bild 300 abgebildeten Personen ein. Obwohl das Bild 300 und die vorläufigen Maskenkommentare 302 Personen einschließen, kann das neuronale Netz so trainiert werden, dass es die vorläufigen Maskenkommentare 302 für beliebige Objekte oder Klassen von Objekten erzeugt. Des Weiteren können in verschiedenen Ausführungsformen die vorläufigen Maskenkommentare 302 verschiedene Arten von Segmentierungsinformationen wie Begrenzungsrahmen, Masken, Kennzeichnungen, Anmerkungen oder andere Informationen einschließen, die zur Identifizierung von Objekten in Bildern geeignet sind. Während das Bild 300 in 3 dargestellt ist, können die vorläufigen Maskenkommentare 302 auch für dreidimensionale Darstellungen, vierdimensionale Darstellungen, Videos oder andere Medien erzeugt werden, auf denen Objekte dargestellt werden können.
  • In einigen Beispielen werden die vorläufigen Maskenkommentare 302 als zusätzliche Daten in das Bild 300 eingeschlossen. In anderen Beispielen sind die vorläufigen Maskenkommentare 302 zusätzliche Daten, die zusammen mit den Bildern bereitgestellt werden (z. B. als Kommentare zu einem Bild, das einem neuronalen Netz bereitgestellt wird). Des Weiteren kann die vorläufige Maskenanmerkung 302, wie oben beschrieben, grobe Anmerkungen einschließen, die von einem neuronalen Netz erzeugt wurden, das mit einem kuratierten Datensatz trainiert wurde. In verschiedenen Ausführungsformen werden die vorläufigen Maskenkommentare 302 zum Trainieren eines neuronalen Netzes verwendet, wie z. B. das oben beschriebene Vorkennzeichnungswerkzeug 208.
  • 4 ist eine Veranschaulichung eines Bildes 400, das gemäß mindestens einer Ausführungsform der vorliegenden Offenbarung feinere Maskenanmerkungen 402 einschließt. In verschiedenen Ausführungsformen werden die feineren Maskenkommentare 402 von einem trainierten Modell erzeugt, wie z. B. dem oben im Zusammenhang mit 1 beschriebenen Vorkennzeichnungswerkzeug 108. Wie in 3 veranschaulicht, schließt das Bild 400 die feineren Maskenkommentare 402 für die auf dem Bild 400 abgebildeten Personen ein. In verschiedenen Ausführungsformen werden die feineren Maskenkommentare 402 von dem Vorkennzeichnungswerkzeug für Bilder eines Datensatzes erzeugt, der zum Trainieren des Vorkennzeichnungswerkzeugs verwendet wird. Des Weiteren können, wie oben im Zusammenhang mit 2 beschrieben, die Bilder des Datensatzes modifiziert werden und die feineren Maskenkommentare 402 können zumindest teilweise basierend auf den modifizierten Bildern erzeugt werden. Obwohl das Bild 400 und die feineren Maskenkommentare 402 Personen einschließen, kann das neuronale Netz so trainiert werden, dass es die feineren Maskenkommentare 402 für jedes Objekt oder Klasse von Objekten erzeugt. Des Weiteren können in verschiedenen Ausführungsformen die feineren Maskenkommentare 402 verschiedene Arten von Segmentierungsinformationen wie Begrenzungsrahmen, Masken, Kennzeichnungen, Anmerkungen oder andere Informationen einschließen, die zur Identifizierung von Objekten in Bildern geeignet sind. Während das Bild 400 in 4 dargestellt ist, können die feineren Maskenkommentare 402 auch für dreidimensionale Bilder, vierdimensionale Bilder, Videos oder andere Medien erzeugt werden, auf denen Objekte dargestellt werden können.
  • In einigen Beispielen werden die feineren Maskenanmerkungen 402 als zusätzliche Daten in das Bild 400 eingeschlossen. In wieder anderen Beispielen sind die feineren Maskenkommentare 402 zusätzliche Daten, die zusammen mit den Bildern bereitgestellt werden (z. B. als Kommentare zu einem Bild, das einem neuronalen Netz bereitgestellt wird). In verschiedenen Ausführungsformen werden die feineren Maskenkommentare 402 verwendet, um neuronale Netze zu trainieren, wie das oben beschriebene trainierte neuronale Netz 208.
  • 5 ist ein Ablaufdiagramm, das ein Verfahren 500 zum Erzeugen eines trainierten neuronalen Netzes zeigt, das gemäß einigen Ausführungsformen der vorliegenden Offenbarung robust gegenüber Rotation, Okklusion, Abschneiden, anderen Formen von Hindernissen oder anderen Umgebungsfaktoren in Bildern oder Videos ist. In verschiedenen Ausführungsformen schließt das Verfahren 500 zum Trainieren des neuronalen Netzes zwei Trainingsstufen ein, eine erste Trainingsstufe 502 und eine zweite Trainingsstufe 504. Des Weiteren schließt in einem Beispiel die erste Trainingsstufe 502 das Verfahren 100 wie oben beschrieben ein und die zweite Trainingsstufe das Verfahren 200 wie oben beschrieben. Während der ersten Trainingsstufe 502, in Block 506, verwendet das System, das das Verfahren 500 durchführt, ein neuronales Netz, um eine Inferenzierung auf einem Datensatz durchzuführen. Wie oben beschrieben, kann das neuronale Netz ein Masken-R-CNN einschließen, das zumindest teilweise basierend auf einem kuratierten Datensatz trainiert wurde (der sich von dem Datensatz, der zum Durchführen der Inferenzierung verwendet wird, unterscheiden kann). Des Weiteren wird in verschiedenen Ausführungsformen in Block 508 eine Pseudo-Masken-Segmentierung als Ergebnis des Durchführens der Inferenz auf den Datensatz durch das neuronale Netz erzeugt. Zum Beispiel kann die vom neuronalen Netz erzeugte Pseudo-Maskensegmentierung vorläufige Maskenkommentare einschließen, wie oben beschrieben.
  • In verschiedenen Ausführungsformen wird in der zweiten Trainingsstufe 504 in Block 510 ein zweites neuronales Netz trainiert, das zumindest teilweise auf der Pseudomaskensegmentierung und dem Datensatz basiert. Wie oben beschrieben, wird der Datensatz in verschiedenen Ausführungsformen ergänzt oder anderweitig erweitert, indem der Datensatz modifiziert wird (z. B. durch Bilder oder Videos, die in den Datensatz eingeschlossen sind). Zum Beispiel werden die Bilder des Datensatzes verändert und Segmentierungsdaten (z. B. eine Maske) für den veränderten Datensatz erzeugt, die dann zum Trainieren des neuronalen Netzes verwendet werden. In Block 508 wird das trainierte neuronale Netz verwendet, um eine feinere Pseudomaskensegmentierung zu erzeugen. In einer Ausführungsform schließt die feinere Pseudomaskensegmentierung die oben in Verbindung mit 4 beschriebenen feineren Maskenkommentare ein. Des Weiteren wird die feinere Pseudomasken-Segmentierung in verschiedenen Ausführungsformen verwendet, um zusätzliche Modelle zu trainieren, die gegenüber verschiedenen Umgebungsfaktoren robust sind, die zumindest durch die oben beschriebene Modifizierung des Datensatzes erfasst werden.
  • 6 ist eine Veranschaulichung eines modifizierten Bildes 600, das gemäß mindestens einer Ausführungsform, die in der vorliegenden Offenbarung beschrieben wird, grobe und feine Anmerkungen einschließt. In verschiedenen Ausführungsformen, wie oben beschrieben, werden Bilder, Videos oder andere Informationen, die in einem Datensatz eingeschlossen sind, modifiziert und verwendet, um umweltrobuste Modelle zu trainieren. Wie in 6 veranschaulicht, schließt das modifizierte Bild 600 ein um eine Achse gedrehtes Bild ein. Obwohl 6 ein gedrehtes modifiziertes Bild veranschaulicht, kann eine beliebige Anzahl von zusätzlichen und/oder alternativen Modifikationen auf ein Bild angewendet werden, um ein modifiziertes Bild zu erzeugen, wie oben ausführlicher beschrieben.
  • In verschiedenen Ausführungsformen, wie oben beschrieben, erzeugt ein erstes trainiertes neuronales Netz einen groben Begrenzungsrahmen 602 für ein Objekt in dem modifizierten Bild. Der grobe Begrenzungsrahmen 602 schließt in einem Beispiel die vorbereitenden Maskenkommentare ein, wie oben beschrieben. In einem anderen Beispiel wird der grobe Begrenzungsrahmen als Ergebnis eines neuronalen Netzes erzeugt, das nicht in der oben beschriebenen Weise trainiert wurde, um ein rotationsrobustes neuronales Netz zu erzeugen. In solchen Beispielen schließt der grobe Begrenzungsrahmen 602, wie in 6 veranschaulicht, zusätzliche Pixel ein, die nicht der im modifizierten Bild 600 abgebildeten Person entsprechen. In verschiedenen Ausführungsformen wird der feine Begrenzungsrahmen 604 für das modifizierte Bild 600 von einem Vorkennzeichnungswerkzeug erzeugt, wie oben beschrieben. Darüber hinaus wird der feine Begrenzungsrahmen 604 in einer Ausführungsform dazu verwendet, ein neuronales Netz zu trainieren, das rotationsrobust ist.
  • Unter Bezugnahme auf 7 ist 7 ein Ablaufdiagramm zur Erzeugung eines Vorkennzeichnungswerkzeugs gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Es versteht sich von selbst, dass diese und andere hier beschriebene Anordnungen nur als Beispiele dargestellt werden. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen usw.) können zusätzlich zu oder anstelle der gezeigten verwendet werden, und einige Elemente können ganz weggelassen werden. Ferner sind viele der hier beschriebenen Elemente funktionale Einheiten, die als einzelne oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und an jedem geeigneten Ort implementiert werden können. Verschiedene hier beschriebene Funktionen, die von Einheiten durchgeführt werden, können von Hardware, Firmware und/oder Software ausgeführt werden. Zum Beispiel können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt.
  • In den 7, 8 und 9 umfasst jeder Block der hier beschriebenen Verfahren 700, 800 und 900 einen Prozess des Berechnens, der mit einer beliebigen Kombination von Hardware, Firmware und/oder Software durchgeführt werden kann. Zum Beispiel können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Die Verfahren können auch in Form von computerverwendbaren Anweisungen, die auf einem Speichermedium gespeichert sind, verkörpert werden. Die Verfahren können durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus werden die Verfahren 700, 800 und 900 beispielhaft im Hinblick auf die oben beschriebenen Trainingsmethoden beschrieben. Diese Verfahren können jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hierin beschriebenen Systeme.
  • 7 ist ein Ablaufdiagramm, das ein Verfahren 700 zum Erzeugen eines Vorkennzeichnungswerkzeugs gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. Das Verfahren 700 erhält in Block B702 einen Datensatz, der Begrenzungsrahmen-Informationen einschließt. In verschiedenen Ausführungsformen schließt der Datensatz Bilder ein, die verschiedene Objekte und/oder Klassen von Objekten (z. B. Menschen, Autos, Kleidung, Tiere usw.) darstellen, sowie Begrenzungsrahmen, die den Objekten entsprechen. Zum Beispiel umfasst der Datensatz den Datensatz Common Objects in Context (COCO), der Begrenzungsrahmen einschließt. In einer Ausführungsform schließen die Begrenzungsrahmen Metadaten oder andere Informationen ein, die den Bildern des Datensatzes zugeordnet sind und ein Rechteck oder eine andere geometrische Form definieren, die ein bestimmtes Objekt in einem Bild des Datensatzes umschließt. Zum Beispiel schließen die Begrenzungsrahmen den minimalen Umfang des Begrenzungsrahmens um ein Objekt in einem Bild ein, bei der alle Pixel, die das Objekt darstellen, innerhalb des Begrenzungsrahmens liegen. In verschiedenen Ausführungsformen schließen die Begrenzungsrahmen-Informationen ferner Segmentierungsinformationen, Anmerkungen oder andere Informationen ein, die sich zum Trainieren von Modellen eignen, um Objekterkennung, Kennzeichnung oder ähnliche Aufgaben durchzuführen. In einer Ausführungsform wird die Begrenzungsrahmen-Information von einem trainierten Modell erzeugt, das eine Inferenz auf die im Datensatz enthaltenen Bilder durchführt.
  • Zurück zu 7: Das System, das das Verfahren 700 ausführt, führt in Block B704 eine Inferenzierung des Datensatzes durch, um vorläufige Maskenkommentare zu erzeugen. Zum Beispiel führt ein trainiertes neuronales Netz das Inferencing durch, um Objekte und/oder eine Klasse von Objekten zu erkennen, die in den Bildern dargestellt sind. Das neuronale Netz wird in einer Ausführungsform auf einem zweiten Datensatz trainiert, der sich von dem oben beschriebenen Datensatz unterscheidet. In verschiedenen Ausführungsformen schließt das neuronale Netz jedes neuronale Netz ein, das darauf trainiert ist, die Segmentierung und Kommentierung von Bildern durchzuführen. In einem Beispiel wird das neuronale Netz anhand des Datensatzes und der Begrenzungsrahmen-Informationen trainiert. Zum Beispiel umfasst das neuronale Netz ein auf Maskenregion basierendes neuronales Faltungsnetz (R-CNN) oder andere neuronale Faltungsnetze, die geeignet sind, grobe Segmentierungsinformationen für Objekte in den Bildern zu erzeugen. In verschiedenen Ausführungsformen schließen die dem neuronalen Netz bereitgestellten Bilder keine Segmentierungs- und/oder Anmerkungsinformationen ein (z. B. die Begrenzungsrahmen-Informationen). In einer Ausführungsform schließen die vorläufigen Maskenkommentare Begrenzungsrahmen und/oder Masken für Objekte und/oder eine Klasse von Objekten (z. B. Personen) ein, die in den Bildern des Datensatzes dargestellt sind. In einer Ausführungsform schließen die vorläufigen Maskenkommentare die oben im Zusammenhang mit 3 näher beschriebenen vorläufigen Maskenkommentare ein.
  • In verschiedenen Ausführungsformen trainiert das System, das das Verfahren 700 ausführt, im Block B706 ein Modell (z. B. ein zuvor untrainiertes neuronales Netz), das zumindest teilweise auf dem Datensatz und den vorläufigen Maskenkommentaren basiert. In verschiedenen Ausführungsformen schließt das trainierte neuronale Netz ein beliebiges neuronales Netz ein, das mit Segmentierungs- und Annotationsinformationen trainiert werden kann. In einem Beispiel ist das neuronale Netz ein Masken-R-CNN ohne ein Regional Proposal Network-Modul. Des Weiteren wird das Training des neuronalen Netzes unter Verwendung des Datensatzes, einschließlich der Begrenzungsrahmen und der vorläufigen Maskenkommentare durchgeführt, die zumindest teilweise durch das neuronale Inferenznetz im Block B704 erzeugt wurden. In verschiedenen Ausführungsformen erzeugt das System, das das Verfahren 700 ausführt, in Block B708 ein Vorkennzeichnungswerkzeug als Ergebnis des Trainings des neuronalen Netzes. Bei dem Vorkennzeichnungswerkzeug handelt es sich in einer Ausführungsform um ein trainiertes neuronales Netz, das beim Durchführen von Rückschlüssen auf eine Eingabe (z. B. ein Bild) eine Feinsegmentierung (z. B. Masken) und Anmerkungen für Bilder eines Datensatzes (z. B. des Datensatzes) erzeugt. Wie in der vorliegenden Offenbarung beschrieben, wird das Vorkennzeichnungswerkzeug in einer Ausführungsform verwendet, um eine Segmentierung und Kennzeichnung für modifizierte Datensätze (z. B. gedrehte Bilder eines Datensatzes) zu erzeugen.
  • 8 ist ein Ablaufdiagramm, das ein Verfahren 800 zum Erzeugen eines trainierten neuronalen Netzes gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. In verschiedenen Ausführungsformen schließt das Verfahren 800 in Block B802 das Erhalten eines Trainingsdatensatzes ein. Zum Beispiel schließt der Trainingsdatensatz einen Satz von Bildern ein, der Objekte mit oder ohne zusätzliche Informationen wie Segmentierungsinformationen, Begrenzungsrahmen-Informationen, Kennzeichnungsinformationen oder andere Informationen wie oben beschrieben darstellen. Des Weiteren schließt das Verfahren 800 in Block B804 in verschiedenen Ausführungsformen das Modifizieren und/oder Verändern der im Datensatz enthaltenen Bilder ein. In einer Ausführungsform erweitert die Modifikation und/oder Änderung des Bildsatzes den Datensatz, indem zumindest modifizierte Bilder erzeugt werden, um eine Domänenlücke zwischen dem Bildsatz im Datensatz und der Zieldomäne für das trainierte neuronale Netz zu verringern, so dass das trainierte neuronale Netz bei der Inferenzierung bessere Ergebnisse erzielen kann. In einem Beispiel werden die Bilder des Trainingsdatensatzes um eine optische Achse um verschiedene Grade gedreht (z. B. 5 Grad, -5 Grad, 8 Grad usw.). In einem anderen Beispiel werden die Bilder erweitert, indem zumindest der Maßstab der Bilder verändert wird. In einem weiteren Beispiel werden die den Bildern zugeordneten Luminanzwerte im Block B804 verändert.
  • In einer Ausführungsform werden mehrere Arten von Modifikationen oder Änderungen auf die Bilder angewendet, um die modifizierten Bilder zu erzeugen. Zum Beispiel werden die Bilder gedreht und ein den Bildern zugeordneter Maßstab wird geändert. Diese Modifikationen und/oder Änderungen können einzeln oder in Kombination durchgeführt werden. Des Weiteren können die Modifikationen und/oder Änderungen seriell oder parallel auf die Bilder angewendet werden.
  • Wie oben beschrieben, kann die Modifikation und/oder Änderung des Bildsatzes eine Vielzahl verschiedener Operationen einschließen, wie z. B. Drehen, Spiegeln, Zuschneiden, Modifizieren der Belichtung, Modifizieren des Weißabgleichs, Modifizieren der Farbe, Modifizieren der Sättigung, Schärfen von Bildern, Anwenden von Filtern, Modifizieren des Maßstabs oder anderweitiges Modifizieren, Anpassen oder anderweitiges Verändern des Bildsatzes, um eine Umgebung darzustellen, in der das trainierte Modell (z. B. das als Ergebnis des Ausführens des Verfahrens 800 erhaltene Modell) eine Inferenzierung durchführt.
  • Zurück zu 8: In verschiedenen Ausführungsformen schließt das Verfahren 800 in Block B806 das Durchführen von Inferenzen mit dem modifizierten Datensatz ein, indem der modifizierte Datensatz zumindest einem Vorkennzeichnungswerkzeug bereitgestellt wird. In verschiedenen Ausführungsformen schließt das Vorkennzeichnungswerkzeug ein trainiertes Modell ein, wie oben ausführlicher beschrieben. Zum Beispiel ist das Vorkennzeichnungswerkzeug 208 ein Masken-R-CNN, das mit einem Datensatz trainiert wurde, der Begrenzungsrahmen und Anmerkungen einschließt (z. B. der Datensatz 102). In einer Ausführungsform erzeugt das Vorkennzeichnungswerkzeug feinere Maskenkommentare für Objekte, die in den modifizierten Bildern dargestellt sind. Zum Beispiel erzeugt das Vorkennzeichnungswerkzeug feinere Maskenkommentare für eine bestimmte Klasse von Objekten und/oder Objekten in dem modifizierten Datensatz, wie oben in Verbindung mit 4 näher beschrieben. Die feineren Maskenkommentare schließen in verschiedenen Ausführungsformen zusätzliche Daten und/oder Metadaten ein, die Pixel (z. B. Segmentierungsinformationen) von modifizierten Bildern identifizieren, die ein bestimmtes Objekt und/oder eine bestimmte Klasse von Objekten abbilden. In einem Beispiel umfassen die modifizierten Bilder einen Satz von Bildern, die Personen (z. B. Fußgänger) darstellen, die um eine Reihe von Werten um eine optische Achse gedreht wurden. Das Vorkennzeichnungswerkzeug erzeugt dann feinere Maskenkommentare, die die Pixel des Bildsatzes identifizieren, die Personen einschließen, sowie Kennzeichnungen, die die Pixel als den Personen zugeordnet identifizieren. Wie bereits erwähnt, führt die Drehung des Bildes um die optische Achse in einigen Beispielen dazu, dass Begrenzungsrahmen und andere Segmentierungsinformationen, die dem Datensatz zugeordnet sind, ungenau und/oder falsch sind. In solchen Beispielen erzeugt das Vorkennzeichnungswerkzeug feinere Maskenkommentare, die genaue Segmentierungsinformationen bereitstellen, um ein neuronales Netz zu trainieren, wie in der vorliegenden Offenbarung beschrieben.
  • In verschiedenen Ausführungsformen schließt das Verfahren 800 im Block B808 das Training eines neuronalen Netzes ein, das zumindest teilweise auf dem modifizierten Datensatz und den feineren Maskenkommentaren basiert. In verschiedenen Ausführungsformen schließt der modifizierte Datensatz den Datensatz ein, um den Datensatz zu erweitern und eine Domänenlücke zu verringern, die einer Umgebung zugeordnet ist, in der das trainierte neuronale Netz die oben beschriebenen Inferenzen durchführt. In einer Ausführungsform schließt das neuronale Netz ein beliebiges neuronales Netz ein, das mit Hilfe von Segmentierungs- und/oder Annotationsinformationen wie den feineren Maskenannotationen trainiert werden kann. Zum Beispiel ist das neuronale Netz ein Masken-R-CNN, das mit dem Datensatz und/oder dem modifizierten Datensatz trainiert wurde, der die modifizierten Bilder und die für den modifizierten Datensatz erzeugten feineren Maskenkommentare einschließt. Des Weiteren führt das Verfahren 800 im Block B810 durch das Training des neuronalen Netzes zu einem trainierten neuronalen Netz. In verschiedenen Ausführungsformen handelt es sich bei dem trainierten neuronalen Netz um ein umweltverträgliches, trainiertes Modell, das in der Lage ist, in Bildern dargestellte Objekte oder Klassen von Objekten zu identifizieren. Zum Beispiel ist das trainierte neuronale Netz als Ergebnis der Drehung von Bildern des Datensatzes, um modifizierte Bilder zu erzeugen, in der Lage, Objekte in Bildern unabhängig von einem optischen Winkel (z. B. Kamerawinkel) der Bilder zu erkennen. In einem anderen Beispiel ist das trainierte neuronale Netz in der Lage, durch die Reduzierung der Luminanzwerte, die den Bildern des Datensatzes zugeordnet sind, Objekte in schwach beleuchteten Bildern zu erkennen.
  • 9 ist ein Ablaufdiagramm, das ein Verfahren 900 zum Ändern eines Datensatzes gemäß einigen Ausführungsformen der vorliegenden Offenbarung zeigt. In verschiedenen Ausführungsformen schließt das Verfahren 900 im Block B902 das Erhalten eines Bildes und einer Kennzeichnung für ein Objekt ein, die in einem Bild dargestellt ist. Zum Beispiel wird das Bild aus einem Datensatz erhalten, wie dem Datensatz 102, der oben im Zusammenhang mit 1 beschrieben wurde. In verschiedenen Ausführungsformen ist die Kennzeichnung in den Datensatz eingeschlossen. In wieder anderen Ausführungsformen wird die Kennzeichnung von einem neuronalen Netz oder einem anderen Modell erhalten. In verschiedenen Ausführungsformen schließt das Verfahren 900 im Block B904 eine Segmentierung des Bildes ein, um Pixel des Objekts von anderen Pixeln im Bild zu unterscheiden. Zum Beispiel wird die Segmentierung des Bildes mit Hilfe einer Maske R-CNN erhalten, die auf einem kuratierten Datensatz trainiert wurde, um die Segmentierung durchzuführen (z. B. das Vorkennzeichnungswerkzeug 108, wie oben im Zusammenhang mit 1 beschrieben). In anderen Ausführungsformen wird die Segmentierung manuell oder halb-manuell erhalten. Zum Beispiel erzeugt ein neuronales Netz oder ein anderes Modell Segmentierungsinformationen für das Bild und ein Benutzer validiert und/oder passt die Ausgabe an.
  • In verschiedenen Ausführungsformen schließt das Verfahren 900 in Block B906 das Durchführen einer Reihe von Transformationen des Bildes ein, um eine Reihe von transformierten Bildern zu erhalten. Zum Beispiel wird, wie oben beschrieben, das Bild um eine Achse mit verschiedenen Werten gedreht, um einen Satz von gedrehten Bildern zu erzeugen. Andere Beispiele für Transformationen schließen Dehnen, Verschieben, Skalieren, Farbkorrekturen, Beschneiden, Freistellen, anderweitiges Verändern des Bildes oder eine Kombination von Transformationen ein, die parallel oder seriell durchgeführt werden.
  • In verschiedenen Ausführungsformen schließt das Verfahren 900 im Block B908 die Verwendung der erhaltenen Segmentierung ein, um eine Reihe von Begrenzungsrahmen für die Objekte zu bestimmen, die in der Reihe der transformierten Bilder dargestellt sind. Zum Beispiel wird die Transformation, die auf das Bild angewandt wurde, um den Satz der transformierten Bilder zu erhalten, auf die Segmentierung angewandt, um eine Position des Objekts in dem transformierten Bild zu bestimmen. In verschiedenen Ausführungsformen schließt die Berechnung der Begrenzungsrahmen die Berechnung eines Rahmens mit Ecken ein, die die folgenden Eckpunkte aufweisen: (Xmin, Ymax), (Xmin, Ymin), (Xmax, Ymax), (Xmax, Ymin), wobei Xmin die x-Koordinate des am weitesten links liegenden Pixels der Segmentierung ist, Xmax die x-Koordinate des am weitesten rechts liegenden Pixels der Segmentierung ist, Ymin die y-Koordinate des am weitesten unten liegenden Pixels in der Segmentierung ist und Ymax die y-Koordinate des am weitesten oben liegenden Pixels in der Segmentierung ist. In wieder anderen Ausführungsformen wird der Begrenzungsrahmen durch zwei Koordinatensätze (z. B. (Xmin, Ymax) und (Xmax, Ymin)) und mindestens einen Längenwert (z. B. die Länge einer Seite in einem Quadrat oder eine Basis und Höhe in einem Rechteck) berechnet. Andere Verfahren zum Bestimmen eines Begrenzungsrahmens für ein Objekt können im Zusammenhang mit der vorliegenden Offenbarung verwendet werden. Zum Beispiel wird in Ausführungsformen, in denen ein Objekt einen langen Schwanz oder eine ähnliche Komponente enthält, die das Erzeugen eines Begrenzungsrahmens, die nur das abgebildete Objekt einschließt, erschwert, ein Histogramm oder eine andere statistische Technik verwendet, um den kleinsten Begrenzungsrahmen auszuwählen, die einen Schwellenwert (z. B. 95%) der Pixel oder andere Werte umfasst, um zu unterbinden, dass der Begrenzungsrahmen zumindest einen Abschnitt der Pixel des Bildes einschließt, die das Objekt nicht abbilden.
  • In verschiedenen Ausführungsformen schließt das Verfahren 900 im Block B910 das Zuordnen der Kennzeichnung zu den Begrenzungsrahmen des Objekts in dem Satz der transformierten Bilder ein. Zum Beispiel wird der Satz der transformierten Bilder zu dem Datensatz hinzugefügt, der die Kennzeichnung und die Begrenzungsrahmen-Informationen einschließt, die wie oben beschrieben erzeugt wurden. In verschiedenen Ausführungsformen wird der Satz der transformierten Bilder gemäß dem Format des Datensatzes im Datensatz gespeichert. In verschiedenen Ausführungsformen wird der Datensatz, der den Satz der transformierten Bilder einschließt, außerdem zum Trainieren eines neuronalen Netzes verwendet, das gegenüber der durchgeführten Transformation robust ist. Zum Beispiel ist das resultierende neuronale Netz, das mit dem Datensatz trainiert wurde, der die transformierten Bilder und die Begrenzungsrahmen-Informationen einschließt, beim Durchführen der Inferenz robust gegenüber der Rotation, da die Bilder während der Transformation gedreht werden. Wie in 9 veranschaulicht, wird das Verfahren 900 in verschiedenen Ausführungsformen wiederholt, um den Datensatz zu erweitern. Zum Beispiel werden, wie oben beschrieben, die Transformationen nacheinander angewandt, um ferner eine Domänenlücke zu verringern. In verschiedenen Ausführungsformen wird das Verfahren 900 durchgeführt, um einen Satz von gedrehten Bildern und Begrenzungsrahmen-Informationen zu erzeugen, die zur Erweiterung des Datensatzes verwendet werden, und dann wiederholt, um einen Satz von gestreckten Bildern und Begrenzungsrahmen-Informationen zu erzeugen, die zur Erweiterung des Datensatzes verwendet werden.
  • INFERENZ- UND TRAININGSLOGIK
  • 10A veranschaulicht Inferenz- und/oder Trainingslogik 1015, die verwendet wird, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden nachstehend in Verbindung mit 10A und/oder 10B bereitgestellt.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 ohne Einschränkung Code- und/oder Datenspeicher 1001 beinhalten, um Vorwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten und/oder andere Parameter zu speichern, um Neuronen oder Schichten eines neuronalen Netzes zu konfigurieren, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In mindestens einer Ausführungsform kann die Trainingslogik 1015 einen Code- und/oder Datenspeicher 1001 beinhalten oder an diesen gekoppelt sein, um Graphencode oder andere Software zu speichern, um die Zeitsteuerung und/oder die Reihenfolge zu steuern, in der Gewichtungs- und/oder andere Parameterinformationen geladen werden sollen, um Logik zu konfigurieren, die Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetisch-logische Einheiten (arithmetic logic units - ALU)) beinhalten. In mindestens einer Ausführungsform lädt Code, wie etwa Graphencode, Gewichtungs- oder andere Parameterinformationen in Prozessor-ALUs auf Grundlage einer Architektur eines neuronalen Netzes, dem derartiger Code entspricht. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 1001 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, das trainiert oder in Verbindung mit einer oder mehreren Ausführungsformen während der Vorwärtspropagation von Eingabe-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder dem Inferenzieren unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen verwendet wird. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 1001 in einem anderen chipinternen oder chipexternen Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, enthalten sein.
  • In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Code- und/oder Datenspeichers 1001 zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen intern oder extern sein. In mindestens einer Ausführungsform kann der Code und/oder Code- und/oder Datenspeicher 1001 Cache-Speicher, dynamischer zufällig adressierbarer Speicher (dynamic randomly addressable memory - „DRAM“), statischer zufällig adressierbarer Speicher (static randomly addressable memory - „SRAM“), nichtflüchtiger Speicher (z. B. Flash-Speicher) oder anderer Speicher sein. In mindestens einer Ausführungsform kann eine Wahl, ob der Code und/oder Code- und/oder Datenspeicher 1001 zum Beispiel zu einem Prozessor intern oder extern ist oder DRAM, SRAM, Flash oder einen anderen Speichertyp umfasst, von dem verfügbaren chipinternen oder chipexternen Speicher, den Latenzanforderungen der Trainings- und/oder Inferenzfunktionen, die durchgeführt werden, der Batch-Größe der Daten, die beim Inferenzieren und/oder Trainieren eines neuronalen Netzes verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 ohne Einschränkung einen Code- und/oder Datenspeicher 1005 beinhalten, um Rückwärts- und/oder Ausgabegewichtungs- und/oder Eingabe-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzes entsprechen, das in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder zum Inferenzieren verwendet wird. In mindestens einer Ausführungsform speichert der Code- und/oder Datenspeicher 1005 Gewichtungsparameter und/oder Eingabe-/Ausgabedaten jeder Schicht eines neuronalen Netzes, die in Verbindung mit einer oder mehreren Ausführungsformen trainiert oder verwendet wird, während der Rückwärtspropagierung von Eingabe-/Ausgabedaten und/oder Gewichtungsparametern während des Trainierens und/oder Inferenzierens unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen. In mindestens einer Ausführungsform kann die Trainingslogik 1015 einen Code- und/oder Datenspeicher 1005 beinhalten oder an diesen gekoppelt sein, um Graphencode oder andere Software zu speichern, um die Zeitsteuerung und/oder die Reihenfolge zu steuern, in der Gewichtungs- und/oder andere Parameterinformationen geladen werden sollen, um Logik zu konfigurieren, die Ganzzahl- und/oder Gleitkommaeinheiten (zusammen arithmetisch-logische Einheiten (arithmetic logic units - ALU)) beinhalten.
  • In mindestens einer Ausführungsform bewirkt ein Code, wie z. B. ein Graphencode, das Laden von Gewichts- oder anderen Parameterinformationen in Prozessor-ALUs basierend auf einer Architektur eines neuronalen Netzes, dem dieser Code entspricht. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Codes und/oder der Speicherung 1005 in andere On-Chip- oder Off-Chip-Datenspeicher eingeschlossen werden, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Codes und/oder der Speicherung 1005 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder -Schaltungen sein. In mindestens einer Ausführungsform kann es sich bei der Code- und/oder Datenspeicherung 1005 um Cache-Speicher, DRAM, SRAM, nichtflüchtigen Speicher (z. B. Flash-Speicher) oder andere Speicher handeln. In mindestens einer Ausführungsform kann die Wahl, ob der Code- und/oder Datenspeicher 1005 intern oder extern zu einem Prozessor ist, zum Beispiel DRAM, SRAM, Flash-Speicher oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, den Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzfunktionen, der Größe der Datenstapel, die bei der Inferenz und/oder dem Training eines neuronalen Netzes verwendet werden, oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 1001 und der Code- und/oder Datenspeicher 1005 getrennte Speicherstrukturen sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 1001 und der Code- und/oder Datenspeicher 1005 eine kombinierte Speicherstruktur sein. In mindestens einer Ausführungsform können der Code- und/oder Datenspeicher 1001 und der Code- und/oder Datenspeicher 1005 teilweise kombiniert und teilweise getrennt sein. In mindestens einer Ausführungsform kann jeder Abschnitt des Code- und/oder Datenspeichers 1001 und des Code- und/oder Datenspeichers 1005 in einen anderen On-Chip- oder Off-Chip-Datenspeicher eingeschlossen werden, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 ohne Einschränkung eine oder mehrere arithmetische Logikeinheit(en) („ALU(s)“) 1010, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, einschließen, um logische und/oder mathematische Operationen durchzuführen, die zumindest teilweise auf einem Trainings- und/oder Inferenzcode basieren oder von diesem angegeben werden (z. B., Graphencode), deren Ergebnis in einem Aktivierungsspeicher 1020 gespeicherte Aktivierungen (z. B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzes) erzeugen kann, die Funktionen von Eingabe/Ausgabe- und/oder Gewichtungsparameterdaten sind, die in Code- und/oder Datenspeicher 1001 und/oder Code- und/oder Datenspeicher 1005 gespeichert sind. In mindestens einer Ausführungsform werden die in dem Aktivierungsspeicher 1020 gespeicherten Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die von der/den ALU(s) 1010 als Reaktion auf das Durchführen von Befehlen oder anderem Code durchgeführt wird, wobei in dem Code- und/oder Datenspeicher 1005 und/oder dem Datenspeicher 1001 gespeicherte Gewichtungswerte als Operanden zusammen mit anderen Werten, wie z. B. Vorspannungswerten, Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, verwendet werden, von denen jeder oder alle in dem Code- und/oder Datenspeicher 1005 oder dem Code- und/oder Datenspeicher 1001 oder einem anderen Speicher auf oder außerhalb des Chips gespeichert sein können.
  • In mindestens einer Ausführungsform sind die ALU(s) 1010 in einen oder mehrere Prozessoren oder andere logische Hardware-Vorrichtungen oder Schaltungen eingeschlossen, während in einer weiteren Ausführungsform die ALU(s) 1010 extern zu einem Prozessor oder einer anderen logischen Hardware-Vorrichtung oder Schaltung sein können, die sie verwendet (z. B. ein Co-Prozessor). In mindestens einer Ausführungsform können die ALUs 1010 in die Ausführungseinheiten eines Prozessors oder anderweitig in eine Bank von ALUs eingeschlossen sein, auf die die Ausführungseinheiten eines Prozessors entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlichen Typs (z. B. zentrale Verarbeitungseinheiten, Grafikverarbeitungseinheiten, feste Funktionseinheiten usw.) zugreifen können. In mindestens einer Ausführungsform können die Code- und/oder Datenspeicherung 1001, die Code- und/oder Datenspeicherung 1005 und die Aktivierungsspeicherung 1020 in einem Prozessor oder einer anderen logischen Vorrichtung oder Schaltung untergebracht sein, während sie sich in einer weiteren Ausführungsform in verschiedenen Prozessoren oder anderen logischen Vorrichtungen oder Schaltungen befinden können, oder in einer Kombination aus gleichen und verschiedenen Prozessoren oder anderen logischen Vorrichtungen oder Schaltungen. In mindestens einer Ausführungsform kann ein beliebiger Abschnitt des Aktivierungsspeichers 1020 in einen anderen On-Chip- oder Off-Chip-Datenspeicher eingeschlossen sein, einschließlich des L1-, L2- oder L3-Caches eines Prozessors oder des Systemspeichers. Des Weiteren kann der Inferenz- und/oder Trainingscode zusammen mit anderem Code gespeichert werden, auf den ein Prozessor oder eine andere Hardwarelogik oder -schaltung zugreifen kann und der mit Hilfe der Abruf-, Dekodier-, Planungs-, Ausführungs-, Zurückzieh- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet wird.
  • In mindestens einer Ausführungsform kann die aktivierende Speicherung 1020 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z. B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einer Ausführungsform kann sich die aktivierende Speicherung 1020 vollständig oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen befinden. In mindestens einer Ausführungsform kann die Wahl, ob der Aktivierungsspeicher 1020 intern oder extern zu einem Prozessor ist, zum Beispiel DRAM, SRAM, Flash-Speicher oder einen anderen Speichertyp umfasst, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, den Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzfunktionen, der Stapelgröße der bei der Inferenz und/oder dem Training eines neuronalen Netzes verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015, die in 10A veranschaulicht ist, in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (application-specific integrated circuit - „ASIC“) verwendet werden, wie etwa einer Tensorflow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (inference processing unit - IPU) von Graphcore™ oder einem Prozessor vom Typ Nervana® (z. B. „Lake Crest“) von Intel Corp. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015, die in 10A veranschaulicht ist, in Verbindung mit Hardware einer Zentraleinheit („CPU“), Hardware einer Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie etwa feldprogrammierbaren Gatearrays („FPGA“) verwendet werden.
  • 10B veranschaulicht Inferenz- und/oder Trainingslogik 1015 gemäß mindestens einer Ausführungsform; In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 ohne Einschränkung Folgendes beinhalten: Hardwarelogik, bei der Berechnungsressourcen dediziert oder anderweitig ausschließlich in Verbindung mit Gewichtungswerten oder anderen Informationen verwendet werden, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzes entsprechen. In mindestens einer Ausführungsform kann die in 10B veranschaulichte Inferenz- und/oder Trainingslogik 1015 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC) verwendet werden, wie etwa der TensorFlow® Processing Unit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Prozessor vom Typ Nervana® (z. B. „Lake Crest“) der Intel Corp. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015, die in 10B veranschaulicht ist, in Verbindung mit Hardware einer Zentraleinheit (CPU), Hardware einer Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie etwa feldprogrammierbaren Gatearrays (FPGA) verwendet werden. In mindestens einer Ausführungsform beinhaltet die Inferenz- und/oder Trainingslogik 1015 ohne Einschränkung den Code- und/oder Datenspeicher 1001 und den Code- und/oder Datenspeicher 1005, die zum Speichern von Code (z. B. Graphencode), Gewichtungswerten und/oder anderen Informationen, einschließlich Verzerrungswerten, Gradienteninformationen, Momentwerten und/oder anderer Parameter- oder Hyperparameterinformationen, verwendet werden können. In mindestens einer Ausführungsform, die in 10B veranschaulicht ist, ist jeder von dem Code- und/oder Datenspeicher 1001 und dem Code- und/oder Datenspeicher 1005 einer dedizierten Rechenressource, wie etwa der Rechenhardware 1002 bzw. der Rechenhardware 1006, zugeordnet. In mindestens einer Ausführungsform umfasst jede von der Rechenhardware 1002 und der Rechenhardware 1006 eine oder mehrere ALU, die mathematische Funktionen, wie etwa lineare algebraische Funktionen, nur an Informationen durchführen, die im Code- und/oder Datenspeicher 1001 und Code- und/oder Datenspeicher 1005 gespeichert sind, deren Ergebnis im Aktivierungsspeicher 1020 gespeichert ist.
  • In mindestens einer Ausführungsform entspricht jeder von dem Code- und/oder Datenspeicher 1001 und 1005 und die entsprechende Rechenhardware 1002 bzw. 1006 derartig unterschiedlichen Schichten eines neuronalen Netzes, dass die sich ergebende Aktivierung von einem „Speicher-/Rechenpaar 1001/1002“ des Code- und/oder Datenspeichers 1001 und der Rechenhardware 1002 als eine Eingabe für das „Speicher-/Rechenpaar 1005/1006“ des Code- und/oder Datenspeichers 1005 und der Rechenhardware 1006 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzes widerzuspiegeln. In mindestens einer Ausführungsform kann jedes der Speicher-/Rechenpaar 1001/1002 und 1005/1006 mehr als einer Schicht eines neuronalen Netzes entsprechen. In mindestens einer Ausführungsform können zusätzliche Speicher-/Berechnungspaare (nicht gezeigt) nach oder parallel zu den Speicherberechnungspaaren 1001/1002 und 1005/1006 in der Inferenz- und/oder Trainingslogik 1015 beinhaltet sein.
  • TRAINING UND EINSATZ VON NEURONALEN NETZEN
  • 11 veranschaulicht das Training und den Einsatz eines tiefen neuronalen Netzes gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 1106 unter Verwendung eines Trainingsdatensatzes 1102 trainiert. In mindestens einer Ausführungsform ist das Trainings-Framework 1104 ein PyTorch-Framework, wohingegen das Trainings-Framework 1104 in anderen Ausführungsformen ein TensorFlow-, Boost-, Caffe-, Microsoft-Cognitive-Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deeplearning4j- oder ein anderes Trainings-Framework ist. In mindestens einer Ausführungsform trainiert das Trainings-Framework 1104 ein untrainiertes neuronales Netz 1106 und ermöglicht, dass es unter Verwendung der hierin beschriebenen Verarbeitungsressourcen trainiert wird, um ein trainiertes neuronales Netz 1108 zu erzeugen. In mindestens einer Ausführungsform können die Gewichtungen zufällig oder durch Vorabtraining unter Verwendung eines Deep-Belief-Netzes gewählt werden. In mindestens einer Ausführungsform kann das Training entweder auf überwachte, teilweise überwachte oder nicht überwachte Weise durchgeführt werden.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 1106 unter Verwendung von überwachtem Lernen trainiert, wobei der Trainingsdatensatz 1102 eine Eingabe beinhaltet, die mit einer gewünschten Ausgabe für eine Eingabe gepaart ist, oder wobei der Trainingsdatensatz 1102 eine Eingabe beinhaltet, die eine bekannte Ausgabe aufweist, und eine Ausgabe des neuronalen Netzes 1106 manuell bewertet wird. In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 1106 auf überwachte Weise trainiert und es verarbeitet Eingaben aus dem Trainingsdatensatz 1102 und vergleicht die resultierenden Ausgaben mit einem Satz von erwarteten oder gewünschten Ausgaben. In mindestens einer Ausführungsform werden Fehler dann durch das untrainierte neuronale Netz 1106 rückpropagiert. In mindestens einer Ausführungsform stellt das Trainings-Framework 1104 Gewichtungen ein, die das untrainierte neuronale Netz 1106 steuern. In mindestens einer Ausführungsform beinhaltet das Trainings-Framework 1104 Werkzeuge, um zu überwachen, wie gut das untrainierte neuronale Netz 1106 zu einem Modell konvergiert, wie etwa dem trainierten neuronalen Netz 1108, das dazu geeignet ist, korrekte Antworten zu erzeugen, wie etwa in dem Ergebnis 1114, die auf Eingabedaten wie etwa einem neuen Datensatz 1112 basieren. In mindestens einer Ausführungsform trainiert das Trainings-Framework 1104 das untrainierte neuronale Netz 1106 wiederholt, während Gewichtungen eingestellt werden, um eine Ausgabe des untrainierten neuronalen Netzes 1106 unter Verwendung einer Verlustfunktion und eines Einstellungsalgorithmus, wie etwa des stochastischen Gradientenabstiegs, zu verfeinern. In mindestens einer Ausführungsform trainiert das Trainings-Framework 1104 das untrainierte neuronale Netz 1106, bis das untrainierte neuronale Netz 1106 eine gewünschte Genauigkeit erreicht. In mindestens einer Ausführungsform kann das trainierte neuronale Netz 1108 dann zum Implementieren einer beliebigen Anzahl von Operationen des maschinellen Lernens eingesetzt werden.
  • In mindestens einer Ausführungsform wird das untrainierte neuronale Netz 1106 unter Verwendung von nicht überwachtem Lernen trainiert, wobei das untrainierte neuronale Netz 1106 versucht, sich selbst unter Verwendung nicht gekennzeichneter Daten zu trainieren. In mindestens einer Ausführungsform beinhaltet der Trainingsdatensatz 1102 für nicht überwachtes Lernen Eingabedaten ohne assoziierte Ausgabedaten oder „Ground-Truth“-Daten. In mindestens einer Ausführungsform kann das untrainierte neuronale Netz 1106 Gruppierungen innerhalb des Trainingsdatensatzes 1102 lernen und bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 1102 in Bezug stehen. In mindestens einer Ausführungsform kann nicht überwachtes Training verwendet werden, um eine selbstorganisierende Karte in dem trainierten neuronalen Netz 1108 zu erzeugen, die dazu in der Lage ist, Operationen durchzuführen, die beim Reduzieren der Dimensionalität des neuen Datensatzes 1112 nützlich sind. In mindestens einer Ausführungsform kann nicht überwachtes Training auch verwendet werden, um Anomalieerkennung durchzuführen, was die Identifizierung von Datenpunkten in einem neuen Datensatz 1112 ermöglicht, die von normalen Mustern des neuen Datensatzes 1112 abweichen.
  • In mindestens einer Ausführungsform kann halbüberwachtes Lernen verwendet werden, wobei es sich um eine Technik handelt, bei der der Trainingsdatensatz 1102 eine Mischung aus gekennzeichneten und nicht gekennzeichneten Daten beinhaltet. In mindestens einer Ausführungsform kann das Trainings-Framework 1104 verwendet werden, um inkrementelles Lernen durchzuführen, wie etwa durch Transferlerntechniken. In mindestens einer Ausführungsform ermöglicht das inkrementelle Lernen es dem trainierten neuronalen Netz 1108, sich an den neuen Datensatz 1112 anzupassen, ohne das Wissen zu vergessen, das dem trainierten neuronalen Netz 1108 während des anfänglichen Trainings beigebracht wurde.
  • RECHENZENTRUM
  • 12 veranschaulicht ein beispielhaftes Rechenzentrum 1200, in dem mindestens eine Ausführungsform verwendet werden kann. In mindestens einer Ausführungsform beinhaltet das Rechenzentrum 1200 eine Rechenzentrumsinfrastrukturschicht 1210, eine Framework-Schicht 1220, eine Software-Schicht 1230 und eine Anwendungsschicht 1240.
  • In mindestens einer Ausführungsform, wie in 12 gezeigt, kann die Rechenzentrumsinfrastrukturschicht 1210 einen Ressourcenorchestrator 1212, gruppierte Rechenressourcen 1214 und Knoten-Rechenressourcen (node computing resources - „Knoten-C.R.s“) 1216(1)-1216(N) beinhalten, wobei „N“ eine positive ganze Zahl darstellt (die eine andere ganze Zahl „N“ sein kann, als in anderen Figuren verwendet). In mindestens einer Ausführungsform können die Knoten-C.R.s 1216(1)-1216(N) eine beliebige Anzahl von zentralen Verarbeitungseinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbarer Gate-Arrays (FPGAs), Grafikprozessoren usw.), Speichervorrichtungen 1218(1)-1218(N) (z. B. dynamischer Festwertspeicher, Festkörperspeicher oder Festplattenlaufwerke), Vorrichtungen zur Netz-Eingabe/Ausgabe (network input/output - „NW-E/A“), Netz-Switches, virtuellen Maschinen (virtual machines - „VMs“), Leistungsmodulen und Kühlmodulen usw. beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann es sich bei einer oder mehreren Knoten-C.R.s aus den Knoten-C.R.s 1216(1)-1216(N) um einen Server handeln, der eine oder mehrere der vorstehend erwähnten Rechenressourcen aufweist.
  • In mindestens einer Ausführungsform können die gruppierten Rechenressourcen 1214 separate Gruppierungen von Knoten-C.R.s beinhalten, die innerhalb eines oder mehrerer Racks (nicht gezeigt) oder vieler Racks untergebracht sind, die in Rechenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-C.R.s innerhalb der gruppierten Rechenressourcen 1214 können in mindestens einer Ausführungsform gruppierte Rechen-, Netz-, Arbeitsspeicher- oder Datenspeicherressourcen beinhalten, die dazu konfiguriert oder zugewiesen sein können, eine oder mehrere Arbeitslasten zu unterstützen. In mindestens einer Ausführungsform können mehrere Knoten-C.R.s, die CPUs oder Prozessoren beinhalten, innerhalb eines oder mehrerer Racks gruppiert sein, um Rechenressourcen zum Unterstützen einer oder mehrerer Arbeitslasten bereitzustellen. In mindestens einer Ausführungsform können ein oder mehrere Racks auch eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und Netzwerk-Switches in beliebiger Kombination beinhalten.
  • In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 1212 einen oder mehrere Knoten-C.R.s 1216(1)-1216(N) und/oder gruppierte Berechnungsressourcen 1214 konfigurieren oder anderweitig steuern. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 1212 eine Verwaltungsentität für Softwaregestaltungsinfrastruktur (software design infrastructure - „SDI“) für das Rechenzentrum 1200 beinhalten. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 1012 Hardware, Software oder eine Kombination davon beinhalten.
  • In mindestens einer Ausführungsform beinhaltet, wie in 12 gezeigt, die Frameworkschicht 1220 einen Aufgaben-Scheduler 1222, einen Konfigurationsverwalter 1224, einen Ressourcenverwalter 1226 und ein verteiltes Dateisystem 1228. In mindestens einer Ausführungsform kann die Framework-Schicht 1220 ein Framework beinhalten, um Software 1232 der Softwareschicht 1230 und/oder eine oder mehrere Anwendung(en) 1242 der Anwendungsschicht 1240 zu unterstützen. In mindestens einer Ausführungsform kann/können die Software 1232 oder die Anwendung(en) 1242 jeweils webbasierte Dienstsoftware oder - anwendungen beinhalten, wie etwa diejenigen, die von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt sind. In mindestens einer Ausführungsform kann es sich bei der Framework-Schicht 1220 um eine Art freien und quelloffenen Software-Webanwendungsrahmen wie etwa Apache Spark™ (im Folgenden „Spark“) handeln, der das verteilte Dateisystem 1228 für die Verarbeitung großer Datenmengen (z. B. „Big Data“) verwenden kann, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann der Aufgaben-Scheduler 1222 einen Spark-Treiber beinhalten, um die Planung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 1200 unterstützt werden. In mindestens einer Ausführungsform kann der Konfigurationsverwalter 1224 in der Lage sein, unterschiedliche Schichten zu konfigurieren, wie etwa die Softwareschicht 1230 und die Frameworkschicht 1220, was Spark und das verteilte Dateisystem 1228 zum Unterstützen einer umfangreicher Datenverarbeitung beinhaltet. In mindestens einer Ausführungsform kann der Ressourcenverwalter 1226 in der Lage sein, geclusterte oder gruppierte Berechnungsressourcen zu verwalten, die dem verteilten Dateisystem 1228 und dem Aufgaben-Scheduler 1222 zur Unterstützung zugeordnet oder zugewiesen sind. In mindestens einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen gruppierte Rechenressourcen 1214 in der Rechenzentrumsinfrastrukturschicht 1210 beinhalten. In mindestens einer Ausführungsform kann sich der Ressourcenverwalter 1226 mit dem Ressourcen-Orchestrator 1212 koordinieren, um diese zugeordneten oder zugewiesenen Berechnungsressourcen zu verwalten.
  • In mindestens einer Ausführungsform kann die in der Software-Schicht 1230 enthaltene Software 1232 Software beinhalten, die mindestens durch Abschnitte der Knoten-C.R.s 1216(1)-1216(N), der gruppierten Rechenressourcen 1214 und/oder des verteilten Dateisystems 1228 der Framework-Schicht 1220 verwendet wird. Zu einem oder mehreren Typen von Software können in mindestens einer Ausführungsform Software zum Durchsuchen von Internet-Webseiten, Software zum Scannen von E-Mails auf Viren, Datenbank-Software und Software für Streaming-Videoinhalte gehören, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform kann/können die Anwendung(en) 1242, die in der Anwendungsschicht 1240 enthalten ist/sind, eine oder mehrere Arten von Anwendungen beinhalten, die von mindestens Teilen der Knoten-C.R.s 1216(1)-1216(N), gruppierten Berechnungsressourcen 1214 und/oder dem verteilten Dateisystem 1228 der Frameworkschicht 1220 verwendet werden. Zu einem oder mehreren Typen von Anwendungen können in mindestens einer Ausführungsform eine beliebige Anzahl von einer Genomikanwendung, einer Anwendung zur kognitiven Berechnung und einer Anwendung für maschinelles Lernen gehören, einschließlich Trainings- oder Inferenz-Software, Rahmen-Software für maschinelles Lernen (z. B. PyTorch, TensorFlow, Caffe usw.) oder anderer Anwendungen für maschinelles Lernen, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform können Konfigurationsverwalter 1224, Ressourcenverwalter 1226 und Ressourcen-Orchestrator 1212 eine beliebige Anzahl und einen beliebigen Typ von selbstmodifizierenden Handlungen auf Grundlage einer beliebigen Menge und eines belieben Typs von Daten implementieren, die auf jede technisch machbare Weise erfasst werden. In mindestens einer Ausführungsform können selbstmodifizierende Handlungen einen Rechenzentrumsbetreiber des Rechenzentrums 1200 dahingehend entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Abschnitte eines Rechenzentrums zu vermeiden.
  • In mindestens einer Ausführungsform kann das Rechenzentrum 1200 Werkzeuge, Dienste, Software oder andere Ressourcen beinhalten, um ein oder mehrere Modelle für maschinelles Lernen zu trainieren oder Informationen unter Verwendung eines oder mehrerer Modelle für maschinelles Lernen gemäß einer oder mehrerer hierin beschriebener Ausführungsformen vorherzusagen oder zu inferenzieren. Zum Beispiel kann in mindestens einer Ausführungsform ein Modell für maschinelles Lernen trainiert werden, indem Gewichtungsparameter gemäß einer Architektur eines neuronalen Netzes unter Verwendung von Software und Rechenressourcen berechnet werden, die vorstehend in Bezug auf das Rechenzentrum 1200 beschrieben sind. In mindestens einer Ausführungsform können trainierte Modelle für maschinelles Lernen, die einem oder mehreren neuronalen Netzen entsprechen, verwendet werden, um Informationen unter Verwendung der vorstehend in Bezug auf das Rechenzentrum 1200 beschriebenen Ressourcen zu inferenzieren oder vorherzusagen, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere hierin beschriebene Trainingstechniken berechnet werden.
  • In mindestens einer Ausführungsform kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um Training und/oder Inferenzieren unter Verwendung der vorstehend beschriebenen Ressourcen durchzuführen. Darüber hinaus können eine oder mehrere der vorstehend beschriebenen Software- und/oder Hardware-Ressourcen als Dienst konfiguriert sein, um Benutzern das Trainieren oder Durchführen des Inferenzierens von Informationen zu ermöglichen, wie etwa Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann eine Inferenz- und/oder Trainingslogik 1015 im System der 12 zum Inferenzieren oder Vorhersagen von Operationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von neuronalen Netztrainingsoperationen, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen von neuronalen Netzen berechnet wurden.
  • In verschiedenen Ausführungsformen stellt das Rechenzentrum 12 Rechenressourcen bereit, um die oben beschriebenen Trainingsverfahren auszuführen. Zum Beispiel stellt das Rechenzentrum 12 die Inferenz- und/oder Trainingslogik 1015 bereit, um das Vorkennzeichnungswerkzeug wie oben beschrieben zu erzeugen.
  • AUTONOMES FAHRZEUG
  • 13A veranschaulicht ein beispielhaftes autonomes Fahrzeug 1300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das autonome Fahrzeug 1300 (hierin alternativ als „Fahrzeug 1300“ bezeichnet) ohne Einschränkung ein Personenkraftwagen sein, wie etwa ein Auto, ein Truck, ein Bus und/oder ein anderer Fahrzeugtyp, der einen oder mehrere Fahrgäste aufnimmt. In mindestens einer Ausführungsform kann das Fahrzeug 1300 ein Sattelschlepper sein, der zum Befördern von Fracht verwendet wird. In mindestens einer Ausführungsform kann das Fahrzeug 1300 ein Flugzeug, ein Roboterfahrzeug oder eine andere Art von Fahrzeug sein.
  • Autonome Fahrzeuge können im Hinblick auf Automatisierungslevels beschrieben werden, die von der National Highway Traffic Safety Administration („NHTSA“), einer Abteilung des US-Verkehrsministeriums, und der Society of Automotive Engineers („SAE“) „Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles“ (z. B. Standard Nr. J3016-201806, veröffentlicht am 15. Juni 2018, Standard Nr. J3016-201609, veröffentlicht am 30. September 2016, sowie frühere und zukünftige Versionen dieses Standards) definiert sind. In mindestens einer Ausführungsform kann das Fahrzeug 1300 zu einer Funktionalität gemäß einem oder mehreren von Level 1 bis einschließlich Level 5 der Levels für autonomes Fahren in der Lage sein. Zum Beispiel kann in mindestens einer Ausführungsform das Fahrzeug 1300 in Abhängigkeit von der Ausführungsform zu einer bedingten Automatisierung (Level 3), einer hohen Automatisierung (Level 4) und/oder einer vollständigen Automatisierung (Level 5) in der Lage sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ohne Einschränkung Komponenten wie etwa ein Fahrgestell, eine Fahrzeugkarosserie, Räder (z. B. 2, 4, 6, 8, 18 usw.), Reifen, Achsen und andere Komponenten eines Fahrzeugs beinhalten. In mindestens einer Ausführungsform kann das Fahrzeug 1300 ohne Einschränkung ein Antriebssystem 1350 beinhalten, wie etwa eine Brennkraftmaschine, ein Hybridelektrotriebwerk, einen vollelektrischen Motor und/oder einen anderen Typ von Antriebssystem. In mindestens einer Ausführungsform kann das Antriebssystem 1350 mit einem Antriebsstrang des Fahrzeugs 1300 verbunden sein, der ohne Einschränkung ein Getriebe beinhalten kann, um den Antrieb des Fahrzeugs 1300 zu ermöglichen. In mindestens einer Ausführungsform kann das Antriebssystem 1350 als Reaktion auf das Empfangen von Signalen von einer Drossel/Fahrpedal(en) 1352 gesteuert werden.
  • In mindestens einer Ausführungsform wird ein Lenksystem 1354, das ohne Einschränkung ein Lenkrad beinhalten kann, verwendet, um das Fahrzeug 1300 zu lenken (z. B. entlang eines gewünschten Pfads oder einer gewünschten Route), wenn das Antriebssystem 1350 in Betrieb ist (z. B., wenn das Fahrzeug 1300 in Bewegung ist). In mindestens einer Ausführungsform kann das Lenksystem 1354 Signale von Lenkaktor(en) 1356 empfangen. In mindestens einer Ausführungsform kann ein Lenkrad für die Funktionalität einer vollständigen Automatisierung (Level 5) optional sein. In mindestens einer Ausführungsform kann ein Bremssensorsystem 1346 verwendet werden, um Fahrzeugbremsen als Reaktion auf das Empfangen von Signalen von Bremsaktor(en) 1348 und/oder Bremssensoren zu betreiben.
  • In mindestens einer Ausführungsform stellen Steuerung(en) 1336, die ohne Einschränkung ein oder mehrere Systeme auf einem Chip (system on chips - „SoCs“) (in 13A nicht gezeigt) und/oder Grafikverarbeitungseinheit(en) („GPU(s)“) beinhalten können, einer/einem oder mehreren Komponenten und/oder Systemen des Fahrzeugs 1300 Signale (die z. B. für Befehle repräsentativ sind) bereit. Zum Beispiel können in mindestens einer Ausführungsform die Steuerung(en) 1336 Signale zum Betreiben von Fahrzeugbremsen über die Bremsaktor(en) 1348, zum Betreiben des Lenksystems 1354 über die Lenkaktor(en) 1356, zum Betreiben des Antriebssystems 1350 über die Drossel/Fahrpedal(e) 1352 senden. In mindestens einer Ausführungsform können die Steuerung(en) 1336 eine oder mehrere bordeigene (z. B. integrierte) Rechenvorrichtungen beinhalten, die Sensorsignale verarbeiten und Betriebsbefehle ausgeben (z. B. Signale, die Befehle darstellen), um autonomes Fahren zu ermöglichen und/oder einen menschlichen Fahrer beim Fahren des Fahrzeugs 1300 zu unterstützen. In mindestens einer Ausführungsform können die Steuerung(en) 1336 eine erste Steuerung für Funktionen des autonomen Fahrens, eine zweite Steuerung für funktionelle Sicherheitsfunktionen, eine dritte Steuerung für eine Funktionalität der künstlichen Intelligenz (z. B. maschinelles Sehen), eine vierte Steuerung für eine Infotainment-Funktionalität, eine fünfte Steuerung für Redundanz in Notfällen und/oder andere Steuerungen beinhalten. In mindestens einer Ausführungsform kann eine einzelne Steuerung zwei oder mehr der vorstehenden Funktionalitäten handhaben, können zwei oder mehr Steuerungen eine einzelne Funktionalität handhaben und/oder eine beliebige Kombination davon.
  • In mindestens einer Ausführungsform stellen die Steuerung(en) 1336 Signale zum Steuern einer/eines oder mehrerer Komponenten und/oder Systeme des Fahrzeugs 1300 als Reaktion auf Sensordaten bereit, die von einem oder mehreren Sensoren empfangen werden (z. B. Sensoreingaben). In mindestens einer Ausführungsform können Sensordaten zum Beispiel und ohne Einschränkung empfangen werden von Sensor(en) 1358 von globalen Navigationssatellitensystemen (global navigation satellite systems - „GNSS“) (z. B. Sensor(en) des globalen Positionsbestimmungssystems), RADAR-Sensor(en) 1360, Ultraschallsensor(en) 1362, LIDAR-Sensor(en) 1364, Sensor(en) 1366 einer Trägheitsmesseinheit (inertial measurement unit - „IMU“) (z. B. Beschleunigungsmesser(n), Gyroskop(en), einem Magnetkompass oder Magnetkompassen, Magnetometer(n) usw.), Mikrofon(en) 1396, Stereokamera(s) 1368, Weitsichtkamera(s) 1370 (z. B. Fischaugenkameras), Infrarotkamera(s) 1372, Rundumkamera(s) 1374 (z. B. 360-Grad-Kameras), Langstreckenkameras (in 13A nicht gezeigt), Mittelstreckenkamera(s) (in 13A nicht gezeigt), Geschwindigkeitssensor(en) 1344 (z. B. zum Messen der Geschwindigkeit des Fahrzeugs 1300), Schwingungssensor(en) 1342, Lenksensor(en) 1340, Bremssensor(en) (z. B. als Teil des Bremssensorsystems 1346) und/oder anderen Sensortypen.
  • In mindestens einer Ausführungsform können eine oder mehrere der Steuerung(en) 1336 Eingaben (z. B. durch Eingabedaten dargestellt) von einem Kombiinstrument 1332 des Fahrzeugs 1300 empfangen und Ausgaben (z. B. durch Ausgabedaten, Anzeigedaten usw. dargestellt) über eine Anzeige 1334 einer Mensch-Maschine-Schnittstelle (human-machine interface - „HMI“), einen akustischen Melder, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 1300 bereitstellen. In mindestens einer Ausführungsform können Ausgaben Informationen wie etwa Fahrzeuggeschwindigkeit, Drehzahl, Zeit, Kartendaten (z. B. eine hochauflösende Karte (in 13A nicht gezeigt), Standortdaten (z. B. den Standort des Fahrzeugs 1300, wie etwa auf einer Karte), Richtung, Standort anderer Fahrzeuge (z. B. ein Belegungsgitter), Informationen über Objekte und den Status von Objekten, wie durch die Steuerung(en) 1336 wahrgenommen, usw. beinhalten. Zum Beispiel kann in mindestens einer Ausführungsform die HMI-Anzeige 1334 Informationen über das Vorhandensein eines oder mehrerer Objekte (z. B. eines Straßenschilds, eines Warnschilds, einer umschaltenden Ampel usw.) und/oder Informationen über Fahrmanöver anzeigen, die das Fahrzeug durchgeführt hat, gerade durchführt oder durchführen wird (z. B. jetzt die Spur wechseln, in zwei Meilen die Ausfahrt 34B nehmen usw.).
  • In mindestens einer Ausführungsform beinhaltet das Fahrzeug 1300 ferner eine Netzschnittstelle 1324, die drahtlose Antenne(n) 1326 und/oder Modem(s) zum Kommunizieren über ein oder mehrere Netze verwenden kann. Zum Beispiel kann in mindestens einer Ausführungsform die Netzschnittstelle 1324 dazu in der Lage sein, über Netze mit Long-Term Evolution („LTE“), Breitband-Codemultiplexverfahren (Wideband Code Division Multiple Access - „WCDMA“), Universal Mobile Telecommunications System („UMTS“), Global System for Mobile Communication („GSM“), IMT-CDMA Multi-Carrier („CDMA2000“) usw. zu kommunizieren. In mindestens einer Ausführungsform können die drahtlose(n) Antenne(n) 1326 auch Kommunikation zwischen Objekten in der Umgebung (z. B. Fahrzeugen, mobilen Vorrichtungen usw.) unter Verwendung von lokalen Netz(en), wie etwa Bluetooth, Bluetooth Low Energy („LE“), Z-Wave, ZigBee usw., und/oder Weitverkehrsnetz(en) mit geringem Leistungsverbrauch (low power wide-area networks - „LPWAN“), wie etwa LoRaWAN-Protokollen, SigFox-Protokollen usw., ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann eine Inferenz- und/oder Trainingslogik 1015 im System der 13A zum Inferenzieren oder Vorhersagen von Operationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von neuronalen Netztrainingsoperationen, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen von neuronalen Netzen berechnet wurden.
  • In verschiedenen Ausführungsformen verwendet das autonome Fahrzeug 1300 die Inferenz- und/oder Trainingslogik 1015, um ein neuronales Netz oder ein anderes Modell auszuführen, das mit dem oben beschriebenen Verfahren trainiert wurde, um die Fußgänger- und/oder Objekterkennung mit einem umweltrobusten neuronalen Netz oder einem anderen Modell durchzuführen.
  • 13B veranschaulicht ein Beispiel für Kamerastandorte und Sichtfelder für das autonome Fahrzeug 1300 aus 13A gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform stellen die Kameras und die jeweiligen Sichtfelder eine beispielhafte Ausführungsform dar und sie sollen nicht einschränkend sein. Zum Beispiel können in mindestens einer Ausführungsform zusätzliche und/oder alternative Kameras enthalten sein und/oder die Kameras können sich an unterschiedlichen Stellen an dem Fahrzeug 1300 befinden.
  • In mindestens einer Ausführungsform können Kameratypen für Kameras Digitalkameras beinhalten, ohne darauf beschränkt zu sein, die zur Verwendung mit Komponenten und/oder Systemen des Fahrzeugs 1300 ausgelegt sind. In mindestens einer Ausführungsform können die Kamera(s) mit dem Automobilsicherheitsintegritätslevel (automotive safety integrity level - „ASIL“) B und/oder mit einem anderen ASIL betrieben werden. In mindestens einer Ausführungsform können die Kameratypen in Abhängigkeit von der Ausführungsform zu einer beliebigen Bildaufnahmerate in der Lage sein, wie etwa 60 Einzelbilder pro Sekunde (frames per second - fps), 1220 fps, 240 fps usw. In mindestens einer Ausführungsform können Kameras dazu in der Lage sein, Rollblendenverschlüsse, globale Blendenverschlüsse, einen anderen Typ von Blendenverschluss oder eine Kombination davon zu verwenden. In mindestens einer Ausführungsform kann das Farbfilterarray ein Red-Clear-Clear-Clear-(„RCCC“-)Farbfilterarray, ein Red-Clear-Clear-Blue-(„RCCB“-)Farbfilterarray, ein Red-Blue-Green-Clear-(„RBGC“-)Farbfilterarray, ein Foveon-X3-Farbfilterarray, ein Bayer-Sensoren-(„RGGB“-)Farbfilterarray, ein Monochromsensor-Farbfilterarray und/oder einen anderen Typ von Farbfilterarray beinhalten. In mindestens einer Ausführungsform können Klarpixelkameras, wie etwa Kameras mit einem RCCC-, einem RCCB- und/oder einem RBGC-Farbfilterarray, in einem Bestreben zum Erhöhen der Lichtempfindlichkeit verwendet werden.
  • In mindestens einer Ausführungsform können eine oder mehrere der Kamera(s) verwendet werden, um Funktionen der weiterentwickelten Fahrerassistenzsysteme (advanced driver assistance systems - „ADAS“) durchzuführen (z. B. als Teil einer redundanten oder ausfallsicheren Ausgestaltung). Zum Beispiel kann in mindestens einer Ausführungsform eine Multifunktions-Monokamera installiert sein, um Funktionen bereitzustellen, die Spurverlassenswarnung, Verkehrszeichenassistent und intelligente Scheinwerfersteuerung beinhalten. In mindestens einer Ausführungsform können eine oder mehrere der Kamera(s) (z. B. alle Kameras) simultan Bilddaten (z. B. Video) aufnehmen und bereitstellen.
  • In mindestens einer Ausführungsform können eine oder mehrere Kameras in einer Montagebaugruppe, wie etwa einer kundenspezifisch entworfenen (dreidimensional („3D“) gedruckten) Baugruppe, montiert sein, um Streulicht und Reflexionen aus dem Inneren des Fahrzeugs 1300 (z. B. Reflexionen von dem Armaturenbrett, die in den Windschutzscheibenspiegeln reflektiert werden) herauszuschneiden, die die Bilddatenerfassungsfähigkeiten der Kameras beeinträchtigen können. Unter Bezugnahme auf Seitenspiegelmontagebaugruppen können in mindestens einer Ausführungsform die Seitenspiegelbaugruppen kundenspezifisch 3D-gedruckt werden, sodass eine Kameramontageplatte mit einer Form eines Seitenspiegels übereinstimmt. In mindestens einer Ausführungsform können die Kamera(s) in Seitenspiegel integriert sein. In mindestens einer Ausführungsform können bei Seitensichtkameras die Kamera(s) auch innerhalb von vier Säulen an jeder Ecke einer Kabine integriert sein.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte einer Umgebung vor dem Fahrzeug 1300 beinhaltet (z. B. nach vorn gerichtete Kameras), für die Rundumsicht verwendet werden, um dabei zu helfen, nach vorn gerichtete Pfade und Hindernisse zu identifizieren, sowie mithilfe einer oder mehrerer Steuerung(en) 1336 und/oder Steuer-SoCs beim Bereitstellen von Informationen zu helfen, die zum Erzeugen eines Belegungsgitters und/oder Bestimmen bevorzugter Fahrzeugpfade entscheidend sind. In mindestens einer Ausführungsform können nach vorn gerichtete Kameras verwendet werden, um viele ähnliche ADAS-Funktionen wie LIDAR durchzuführen, einschließlich ohne Einschränkung Notbremsung, Fußgängerdetektion und Kollisionsvermeidung. In mindestens einer Ausführungsform können nach vom gerichtete Kameras auch für ADAS-Funktionen und - Systeme verwendet werden, einschließlich ohne Einschränkung Spurverlassenswarnungen (Lane Departure Warnings - „LDW“), autonomer Geschwindigkeitssteuerung (Autonomous Cruise Control - „ACC“) und/oder anderer Funktionen wie etwa Verkehrszeichenerkennung.
  • In mindestens einer Ausführungsform kann eine Vielfalt an Kameras in einer nach vorn gerichteten Konfiguration verwendet werden, einschließlich zum Beispiel einer monokularen Kameraplattform, die einen Farbbildsensor mit CMOS („complementary metal oxide semiconductor“ - komplementärer Metalloxid-Halbleiter) beinhaltet. In mindestens einer Ausführungsform kann eine Weitsichtkamera 1370 verwendet werden, um Objekte wahrzunehmen, die aus einer Peripherie ins Blickfeld kommen (z. B. Fußgänger, kreuzender Verkehr oder Fahrräder). Obwohl in 13B nur eine Weitsichtkamera 1370 veranschaulicht ist, kann in anderen Ausführungsformen eine beliebige Anzahl (einschließlich null) von Weitsichtkameras an dem Fahrzeug 1300 vorhanden sein. In mindestens einer Ausführungsform kann eine beliebige Anzahl von Langstreckenkamera(s) 1398 (z. B. ein Weitsichtstereokamerapaar) zur tiefenbasierten Objektdetektion verwendet werden, insbesondere für Objekte, für die ein neuronales Netz noch nicht trainiert worden ist. In mindestens einer Ausführungsform können die Langstreckenkamera(s) 1398 auch zur Objektdetektion und - klassifizierung sowie zur grundlegenden Objektverfolgung verwendet werden.
  • In mindestens einer Ausführungsform kann eine beliebige Anzahl der Stereokamera(s) 1368 auch in einer nach vorn gerichteten Konfiguration enthalten sein. In mindestens einer Ausführungsform können eine oder mehrere der Stereokamera(s) 1368 eine integrierte Steuereinheit beinhalten, die eine skalierbare Verarbeitungseinheit umfasst, die eine programmierbare Logik („FPGA“) und einen Mehrkern-Mikroprozessor mit einer integrierten Schnittstelle für ein Controller Area Network („CAN“) oder Ethernet auf einem einzelnen Chip bereitstellen kann. In mindestens einer Ausführungsform kann eine derartige Einheit verwendet werden, um eine 3D-Karte einer Umgebung des Fahrzeugs 1300 zu erzeugen, einschließlich einer Abstandsschätzung für alle Punkte in einem Bild. In mindestens einer Ausführungsform können eine oder mehrere der Stereokamera(s) 1368 ohne Einschränkung kompakte(n) Stereosichtsensor(en) beinhalten, die ohne Einschränkung zwei Kameraobjektive (je eines links und rechts) und einen Bildverarbeitungschip beinhalten können, die den Abstand von dem Fahrzeug 1300 zu einem Zielobjekt messen und die erzeugten Informationen (z. B. Metadaten) verwenden können, um autonome Notbrems- und Spurverlassenswarnfunktionen zu aktivieren. In mindestens einer Ausführungsform können andere Typen von Stereokamera(s) 1368 zusätzlich oder alternativ zu den hierin beschriebenen verwendet werden.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte der Umgebung seitlich des Fahrzeugs 1300 beinhaltet (z. B. Seitensichtkameras), für die Rundumsicht verwendet werden, wodurch Informationen bereitgestellt werden, die zum Erstellen und Aktualisieren eines Belegungsgitters sowie zum Erzeugen von Seitenaufprallkollisionswarnungen verwendet werden. Zum Beispiel könnten in mindestens einer Ausführungsform die Rundumkamera(s) 1374 (z. B. vier Rundumkameras, wie in 13B veranschaulicht) an dem Fahrzeug 1300 positioniert sein. In mindestens einer Ausführungsform können die Rundumkamera(s) 1374 ohne Einschränkung eine beliebige Anzahl und Kombination von Weitsichtkameras, Fischaugenkamera(s), 360-Grad-Kamera(s) und/oder ähnlichen Kameras beinhalten. Zum Beispiel können in mindestens einer Ausführungsform vier Fischaugenkameras an einer Vorderseite, einer Rückseite und Seiten des Fahrzeugs 1300 positioniert sein. In mindestens einer Ausführungsform kann das Fahrzeug 1300 drei Rundumkamera(s) 1374 (z. B. links, rechts und hinten) verwenden und eine oder mehrere andere Kamera(s) (z. B. eine nach vorn gerichtete Kamera) als vierte Rundumsichtkamera ausnutzen.
  • In mindestens einer Ausführungsform können Kameras mit einem Sichtfeld, das Abschnitte einer Umgebung hinter dem Fahrzeug 1300 beinhaltet (z. B. Rückfahrkameras), für die Einparkhilfe, für die Rundumsicht, für Heckkollisionswarnungen und zum Erstellen und Aktualisieren eines Belegungsgitters verwendet werden. In mindestens einer Ausführungsform kann eine große Vielfalt an Kameras verwendet werden, einschließlich, aber nicht beschränkt auf, Kameras, die auch als nach vom gerichtete Kamera(s) geeignet sind (z. B. Langstreckenkameras 1398 und/oder Mittelstreckenkamera(s) 1376, Stereokamera(s) 1368, Infrarotkamera(s) 1372 usw.), wie hierin beschrieben.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem System aus 13B für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 13C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug 1300 aus 13A veranschaulicht, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist jede/jedes der Komponenten, Merkmale und Systeme des Fahrzeugs 1300 in 13C als über einen Bus 1302 verbunden veranschaulicht. In mindestens einer Ausführungsform kann der Bus 1302 ohne Einschränkung eine CAN-Datenschnittstelle (hierin alternativ als „CAN-Bus“ bezeichnet) beinhalten. In mindestens einer Ausführungsform kann ein CAN ein Netz innerhalb des Fahrzeugs 1300 sein, das zum Unterstützen beim Steuern verschiedener Merkmale und Funktionen des Fahrzeugs 1300 verwendet wird, wie etwa Betätigung von Bremsen, Beschleunigung, Bremsung, Lenkung, Scheibenwischern usw. In mindestens einer Ausführungsform kann der Bus 1302 so konfiguriert sein, dass er Dutzende oder sogar Hunderte von Knoten aufweist, jeder mit seiner eigenen eindeutigen Kennung (z. B. einer CAN-ID). In mindestens einer Ausführungsform kann der Bus 1302 ausgelesen werden, um Lenkradwinkel, Geschwindigkeit über Grund, Motorumdrehungen pro Minute (revolutions per minute - „RPMs“), Tastenpositionen und/oder andere Fahrzeugstatusindikatoren zu ermitteln. In mindestens einer Ausführungsform kann der Bus 1302 ein CAN-Bus sein, der mit ASIL B konform ist.
  • In mindestens einer Ausführungsform können zusätzlich zu oder alternativ zu CAN auch FlexRay- und/oder Ethernet-Protokolle verwendet werden. In mindestens einer Ausführungsform kann eine beliebige Anzahl von Bussen, die den Bus 1302 bilden, vorhanden sein, die ohne Einschränkung null oder mehr CAN-Busse, null oder mehr FlexRay-Busse, null oder mehr Ethernet-Busse und/oder null oder mehr andere Typen von Bussen unter Verwendung unterschiedlicher Protokolle beinhalten können. In mindestens einer Ausführungsform können zwei oder mehr Busse verwendet werden, um unterschiedliche Funktionen durchzuführen, und/oder zur Redundanz verwendet werden. Zum Beispiel kann ein erster Bus für die Funktionalität der Kollisionsvermeidung verwendet werden und ein zweiter Bus für die Betätigungssteuerung verwendet werden. In mindestens einer Ausführungsform kann jeder Bus des Busses 1302 mit beliebigen Komponenten des Fahrzeugs 1300 kommunizieren und zwei oder mehr Busse des Busses 1302 können mit entsprechenden Komponenten kommunizieren. In mindestens einer Ausführungsform kann jedes einer beliebigen Anzahl von System(en) auf Chip(s) („SoC(s)“) 1304 (wie etwa dem SoC 1304(A) und SoC 1304(B), jede der Steuerung(en) 1336 und/oder jeder Computer innerhalb des Fahrzeugs Zugriff auf die gleichen Eingabedaten (z. B. Eingaben von Sensoren des Fahrzeugs 1300) haben und mit einem gemeinsamen Bus, wie etwa dem CAN-Bus, verbunden sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 eine oder mehrere Steuerung(en) 1336 beinhalten, wie etwa diejenigen, die hierin in Bezug auf 13A beschrieben sind. In mindestens einer Ausführungsform können die Steuerung(en) 1336 für eine Vielfalt an Funktionen verwendet werden. In mindestens einer Ausführungsform können die Steuerung(en) 1336 an beliebige von verschiedenen anderen Komponenten und Systemen des Fahrzeugs 1300 gekoppelt sein und zur Steuerung des Fahrzeugs 1300, der künstlichen Intelligenz des Fahrzeugs 1300, des Infotainments für das Fahrzeug 1300 und/oder anderer Funktionen verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 eine beliebige Anzahl von SoCs 1304 beinhalten. In mindestens einer Ausführungsform kann jedes der SoCs 1304 ohne Einschränkung zentrale Verarbeitungseinheiten („CPU(s)“) 1306, Grafikverarbeitungseinheiten („GPU(s)“) 1308, Prozessor(en) 1310, Cache(s) 1312, einen oder mehrere Beschleuniger 1314, einen oder mehrere Datenspeicher 1316 und/oder andere nicht veranschaulichte Komponenten und Merkmale beinhalten. In mindestens einer Ausführungsform können die SoC(s) 1304 zum Steuern des Fahrzeugs 1300 in einer Vielfalt an Plattformen und Systemen verwendet werden. Zum Beispiel können in mindestens einer Ausführungsform die SoC(s) 1304 in einem System (z. B. System des Fahrzeugs 1300) mit einer hochauflösenden (High Definition - „HD“) Karte 1322 kombiniert werden, die Kartenauffrischungen und/oder -aktualisierungen über die Netzschnittstelle 1324 von einem oder mehreren Servern (in 13C nicht gezeigt) erlangen kann.
  • In mindestens einer Ausführungsform können die CPU(s) 1306 einen CPU-Cluster oder CPU-Komplex (hierin alternativ als „CCPLEX“ bezeichnet) beinhalten. In mindestens einer Ausführungsform können die CPU(s) 1306 mehrere Kerne und/oder Level-Zwei-(„L2“-)Caches beinhalten. Zum Beispiel können in mindestens einer Ausführungsform die CPU(s) 1306 acht Kerne in einer kohärenten Mehrprozessorkonfiguration beinhalten. In mindestens einer Ausführungsform können die CPU(s) 1306 vier Doppelkerncluster beinhalten, wobei jeder Cluster einen dedizierten L2-Cache aufweist (z. B. einen 2 Megabyte (MB) großen L2-Cache). In mindestens einer Ausführungsform können die CPU(s) 1306 (z. B. CCPLEX) so konfiguriert sein, dass sie simultane Clusteroperationen unterstützen, sodass eine beliebige Kombination von Clustern der CPU(s) 1306 zu einem beliebigen gegebenen Zeitpunkt aktiv sein kann.
  • In mindestens einer Ausführungsform können eine oder mehrere der CPU(s) 1306 Leistungsverwaltungsfähigkeiten implementieren, die ohne Einschränkung eines oder mehrere der folgenden Merkmale beinhalten: einzelne Hardwareblöcke können automatisch taktgesteuert werden, wenn sie inaktiv sind, um dynamische Leistung zu sparen; jeder Kerntakt kann gesteuert werden, wenn ein derartiger Kern aufgrund der Ausführung von Wait-for-Interrupt-(„WFI“-)/Wait-for-Event-(„WFE“-)Anweisungen keine Anweisungen aktiv ausführt; jeder Kern kann unabhängig leistungsgesteuert sein; jeder Kerncluster kann unabhängig taktgesteuert sein, wenn alle Kerne taktgesteuert oder leistungsgesteuert sind; und/oder jeder Kerncluster kann unabhängig leistungsgesteuert sein, wenn alle Kerne leistungsgesteuert sind. In mindestens einer Ausführungsform können die CPU(s) 1306 ferner einen erweiterten Algorithmus zum Verwalten von Leistungszuständen implementieren, bei dem zulässige Leistungszustände und erwartete Aufwachzeiten vorgegeben werden und die Hardware/der Mikrocode bestimmt, in welchen besten Leistungszustand für einen Kern, einen Cluster und einen CCPLEX einzutreten ist. In mindestens einer Ausführungsform können die Verarbeitungskerne vereinfachte Leistungszustand-Eintrittssequenzen in Software unterstützen, wobei Arbeit an Mikrocode abgeladen wird.
  • In mindestens einer Ausführungsform können die GPU(s) 1308 eine integrierte GPU (hierin alternativ als „iGPU“ bezeichnet) beinhalten. In mindestens einer Ausführungsform können die GPU(s) 1308 programmierbar sein und für parallele Arbeitslasten effizient sein. In mindestens einer Ausführungsform können die GPU(s) 1308 einen erweiterten Tensor-Anweisungssatz verwenden. In mindestens einer Ausführungsform können die GPU(s) 1308 einen oder mehrere Streaming-Mikroprozessoren beinhalten, wobei jeder Streaming-Mikroprozessor einen Level-Eins-(„L1“-)Cache beinhalten kann (z. B. einen L1-Cache mit einer Speicherkapazität von mindestens 96 KB), und zwei oder mehr Streaming-Mikroprozessoren können einen L2-Cache gemeinsam nutzen (z. B. einen L2-Cache mit einer Speicherkapazität von 512 KB). In mindestens einer Ausführungsform können die GPU(s) 1308 mindestens acht Streaming-Mikroprozessoren beinhalten. In mindestens einer Ausführungsform können die GPU(s) 1308 Berechnungs-Anwendungsprogrammierschnittstelle(n) (application programming interface(s) - API(s)) verwenden. In mindestens einer Ausführungsform können die GPU(s) 1308 eine oder mehrere Parallelrechenplattformen und/oder Programmiermodelle (z. B. das CUDA-Modell von NVIDIA) verwenden.
  • In mindestens einer Ausführungsform können eine oder mehrere der GPU(s) 1308 für die beste Rechenleistung in Automobil- und eingebetteten Anwendungsfällen leistungsoptimiert sein. Zum Beispiel könnten in mindestens einer Ausführungsform die GPU(s) 1308 auf einer Fin-Feldeffekttransistor-(„FinFET“-)Schaltung hergestellt sein. In mindestens einer Ausführungsform kann jeder Streaming-Mikroprozessor eine Anzahl von Verarbeitungskernen mit gemischter Genauigkeit beinhalten, die in mehrere Blöcke partitioniert sind. Zum Beispiel und ohne Einschränkung könnten 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke partitioniert sein. In mindestens einer Ausführungsform könnten jedem Verarbeitungsblock 16 FP32-Kerne, 8 FP64-Kerne, 16 INT32-Kerne, zwei NVIDIA-Tensorkerne mit gemischter Genauigkeit für Deep-Learning-Matrixarithmetik, ein Level-Null-(„L0“-)Anweisungs-Cache, ein Warp-Scheduler, eine Zuteilungseinheit und/oder eine 64 KB große Registerbank zugewiesen sein. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren unabhängige parallele Integer- und Gleitkomma-Datenpfade beinhalten, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Berechnung und Adressierungsberechnungen zu ermöglichen. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren eine unabhängige Thread-Planungsfähigkeit beinhalten, um eine feinkörnigere Synchronisation und Kooperation zwischen parallelen Threads zu ermöglichen. In mindestens einer Ausführungsform können Streaming-Mikroprozessoren eine kombinierte Einheit aus L1-Daten-Cache und gemeinsam genutztem Speicher beinhalten, um die Rechenleistung zu verbessern, während die Programmierung vereinfacht wird.
  • In mindestens einer Ausführungsform können eine oder mehrere der GPU(s) 1308 einen Speicher mit hoher Bandbreite (high bandwidth memory - „HBM“) und/oder ein 16-GB-HBM2-Speicherteilsystem beinhalten, um in einigen Beispielen eine Spitzenspeicherbandbreite von etwa 900 GB/Sekunde bereitzustellen. In mindestens einer Ausführungsform kann zusätzlich oder alternativ zu HBM-Speicher ein synchroner Grafik-Direktzugriffsspeicher (synchronous graphics random-access memory - „SGRAM“) verwendet werden, wie etwa ein synchroner Direktzugriffsspeicher vom Graphics-Double-Data-Rate-Typ fünf (graphics double data rate type five - „GDDR5“).
  • In mindestens einer Ausführungsform können die GPU(s) 1308 einheitliche Speichertechnologie beinhalten. In mindestens einer Ausführungsform kann die Unterstützung von Adressübersetzungsdiensten (address translation services - „ATS“) verwendet werden, um zu ermöglichen, dass die GPU(s) 1308 direkt auf Seitentabellen von CPU(s) 1306 zugreifen. In mindestens einer Ausführungsform kann, wenn die Speicherverwaltungseinheit (memory management unit - „MMU“) einer GPU der GPU(s) 1308 einen Fehler erleidet, eine Adressübersetzungsanforderung an die CPU(s) 1306 übertragen werden. Als Reaktion darauf können 2 CPUs der CPU(s) 1306 in mindestens einer Ausführungsform in ihren Seitentabellen nach einer Virtuell-auf-Physisch-Abbildung für eine Adresse suchen und die Übersetzung zurück an die GPU(s) 1308 übertragen. In mindestens einer Ausführungsform kann die einheitliche Speichertechnologie einen einzelnen einheitlichen virtuellen Adressraum für Speicher sowohl der CPU(s) 1306 als auch der GPU(s) 1308 ermöglichen, wodurch die Programmierung der GPU(s) 1308 und die Portierung von Anwendungen auf die GPU(s) 1308 vereinfacht werden.
  • In mindestens einer Ausführungsform können die GPU(s) 1308 eine beliebige Anzahl von Zugriffszählern beinhalten, die die Häufigkeit des Zugriffs der GPU(s) 1308 auf Speicher anderer Prozessoren nachverfolgen können. In mindestens einer Ausführungsform kann der/können die Zugriffszähler dazu beitragen, sicherzustellen, dass Speicherseiten in physischen Speicher eines Prozessors verschoben werden, der am häufigsten auf Seiten zugreift, wodurch die Effizienz für Speicherbereiche, die von mehreren Prozessoren gemeinsam genutzt werden, verbessert wird.
  • In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1304 eine beliebige Anzahl von Cache(s) 1312 beinhalten, einschließlich der hierin beschriebenen. In mindestens einer Ausführungsform könnten die Cache(s) 1312 zum Beispiel einen Level-Drei-(„L3“-)Cache beinhalten, der sowohl den CPU(s) 1306 als auch den GPU(s) 1308 zur Verfügung steht (der z.B. mit den CPU(s) 1306 und GPU(s) 1308 verbunden ist). In mindestens einer Ausführungsform können die Cache(s) 1312 einen Rückschreib-Cache beinhalten, der die Zustände von Zeilen nachverfolgen kann, wie etwa durch Verwenden eines Cache-Kohärenzprotokolls (z. B. MEI, MESI, MSI usw.). In mindestens einer Ausführungsform kann ein L3-Cache in Abhängigkeit von der Ausführungsform 4 MB Speicher oder mehr beinhalten, obwohl auch kleinere Cache-Größen verwendet werden können.
  • In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1304 einen oder mehrere Beschleuniger 1314 beinhalten (z.B. Hardware-Beschleuniger, Software-Beschleuniger oder eine Kombination davon). In mindestens einer Ausführungsform können die SoC(s) 1304 einen Hardware-Beschleunigungscluster beinhalten, der optimierte Hardware-Beschleuniger und/oder einen großen chipinternen Speicher beinhalten kann. In mindestens einer Ausführungsform kann großer chipinterner Speicher (z. B. 4 MB SRAM) einen Hardware-Beschleunigungscluster zum Beschleunigen neuronaler Netze und anderer Berechnungen ermöglichen. In mindestens einer Ausführungsform kann ein Hardware-Beschleunigungscluster verwendet werden, um die GPU(s) 1308 zu ergänzen und einige Tasks der GPU(s) 1308 auszulagern (z. B. mehr Zyklen der GPU(s) 1308 zum Durchführen anderer Tasks freizumachen). In mindestens einer Ausführungsform könnte der/könnten die Beschleuniger 1314 für zielgerichtete Arbeitslasten (z. B. Wahrnehmung, neuronale Faltungsnetze (convolutional neural networks - „CNNs“), rekurrente neuronale Netze (recurrent neural networks - „RNNs“) usw.) verwendet werden, die stabil genug sind, um für eine Beschleunigung geeignet zu sein. In mindestens einer Ausführungsform kann ein CNN regionsbasierte oder regionale neuronale Faltungsnetze (regional convolutional neural networks - „RCNNs“) und schnelle RCNNs (wie z. B. für die Objektdetektion verwendet) oder einen anderen Typ von CNN beinhalten.
  • In mindestens einer Ausführungsform kann der/können die Beschleuniger 1314 (z. B. Hardware-Beschleunigungscluster) einen oder mehrere Deep-Learning-Beschleuniger (deep learning accelerator - „DLA“) beinhalten. DLA(s) können in mindestens einer Ausführungsform ohne Einschränkung eine oder mehrere Tensor-Verarbeitungseinheiten (Tensor processing units - „TPUs“) beinhalten, die so konfiguriert sein können, dass sie zusätzliche zehn Billionen Operationen pro Sekunde für Deep-Learning-Anwendungen und Inferenzieren bereitstellen. In mindestens einer Ausführungsform können die TPUs Beschleuniger sein, die zum Durchführen von Bildverarbeitungsfunktionen (z. B. für CNNs, RCNNs usw.) konfiguriert und optimiert sind. In mindestens einer Ausführungsform können die DLA(s) ferner für einen spezifischen Satz von Typen von neuronalen Netzen und Gleitkommaoperationen sowie zum Inferenzieren optimiert sein. In mindestens einer Ausführungsform kann die Ausgestaltung der DLA(s) mehr Rechenleistung pro Millimeter bereitstellen als eine typische Universal-GPU und sie übertrifft typischerweise die Rechenleistung einer CPU bei weitem. In mindestens einer Ausführungsform können die TPU(s) mehrere Funktionen durchführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die zum Beispiel INT8-, INT16- und FP16-Datentypen sowohl für Merkmale als auch für Gewichtungen unterstützt, sowie Postprozessorfunktionen. In mindestens einer Ausführungsform können die DLA(s) neuronale Netze, insbesondere CNNs, an verarbeiteten oder unverarbeiteten Daten für beliebige einer Vielfalt von Funktionen schnell und effizient ausführen, darunter zum Beispiel und ohne Einschränkung: ein CNN für die Identifizierung und Detektion von Objekten unter Verwendung von Daten von Kamerasensoren; ein CNN für die Abstandsschätzung unter Verwendung von Daten von Kamerasensoren; ein CNN für die Detektion und Identifizierung und Detektion von Einsatzfahrzeugen unter Verwendung von Daten von Mikrofonen; ein CNN für die Gesichtserkennung und Identifizierung von Fahrzeugbesitzern unter Verwendung von Daten von Kamerasensoren; und/oder ein CNN für sicherheits- und/oder sicherungsbezogene Ereignisse.
  • In mindestens einer Ausführungsform können die DLA(s) eine beliebige Funktion der GPU(s) 1308 durchführen und durch Verwenden eines Inferenzbeschleunigers kann ein Gestalter zum Beispiel entweder DLA(s) oder GPU(s) 1308 für eine beliebige Funktion anvisieren. In mindestens einer Ausführungsform kann sich ein Gestalter zum Beispiel auf die Verarbeitung von CNNs und Gleitkommaoperationen an den DLA(s) konzentrieren und andere Funktionen den GPU(s) 1308 und/oder Beschleuniger(n) 1314 überlassen.
  • In mindestens einer Ausführungsform kann der/können die Beschleuniger 1314 einen programmierbaren Sichtbeschleuniger (programmable vision accelerator - „PVA“) beinhalten, der hierin alternativ als Beschleuniger für maschinelles Sehen bezeichnet werden kann. In mindestens einer Ausführungsform kann der PVA zum Beschleunigen von Algorithmen für maschinelles Sehen für weiterentwickelte Fahrerassistenzsysteme („ADAS“) 1338, autonomes Fahren, Augmented-Reality-(„AR“-)Anwendungen und/oder Virtual-Reality-(„VR“-)Anwendungen ausgestaltet und konfiguriert sein. In mindestens einer Ausführungsform kann der PVA ein Gleichgewicht zwischen Rechenleistung und Flexibilität bereitstellen. In mindestens einer Ausführungsform kann jeder PVA zum Beispiel und ohne Einschränkung eine beliebige Anzahl von Reduced-Instruction-Set-Computer-(„RISC“-)Kernen, direkten Speicherzugriff (direct memory access - „DMA“) und/oder eine beliebige Anzahl von Vektorprozessoren beinhalten.
  • In mindestens einer Ausführungsform können RISC-Kerne mit Bildsensoren (z. B. Bildsensoren beliebiger hierin beschriebener Kameras), Bildsignalprozessor(en) usw. interagieren. In mindestens einer Ausführungsform kann jeder RISC-Kern eine beliebige Menge an Speicher beinhalten. In mindestens einer Ausführungsform können RISC-Kerne in Abhängigkeit von der Ausführungsform ein beliebiges von einer Reihe von Protokollen verwenden. In mindestens einer Ausführungsform können RISC-Kerne ein Echtzeitbetriebssystem (real-time operating system - „RTOS“) ausführen. In mindestens einer Ausführungsform können RISC-Kerne unter Verwendung einer oder mehrerer Vorrichtungen mit integrierten Schaltungen, anwendungsspezifischen integrierten Schaltungen („ASICs“) und/oder Speichervorrichtungen implementiert sein. In mindestens einer Ausführungsform könnten die RISC-Kerne zum Beispiel einen Anweisungs-Cache und/oder einen eng gekoppelten RAM beinhalten.
  • In mindestens einer Ausführungsform kann DMA es den Komponenten des PVA ermöglichen, unabhängig von den CPU(s) 1306 auf Systemspeicher zuzugreifen. In mindestens einer Ausführungsform kann DMA eine beliebige Anzahl von Merkmalen unterstützen, die zum Bereitstellen der Optimierung eines PVA verwendet werden, einschließlich der Unterstützung von mehrdimensionaler Adressierung und/oder zirkulärer Adressierung, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform kann DMA bis zu sechs oder mehr Dimensionen der Adressierung unterstützen, die ohne Einschränkung Blockbreite, Blockhöhe, Blocktiefe, horizontale Blockabstufung, vertikale Blockabstufung und/oder Tiefenabstufung beinhalten können.
  • In mindestens einer Ausführungsform können Vektorprozessoren programmierbare Prozessoren sein, die so ausgestaltet sein können, dass sie die Programmierung für Algorithmen des maschinellen Sehens effizient und flexibel ausführen und Signalverarbeitungsfähigkeiten bereitstellen. In mindestens einer Ausführungsform kann ein PVA einen PVA-Kern und zwei Vektorverarbeitungsteilsystempartitionen beinhalten. In mindestens einer Ausführungsform kann ein PVA-Kern ein Prozessorteilsystem, DMA-Engine(s) (z. B. zwei DMA-Engines) und/oder andere Peripheriegeräte beinhalten. In mindestens einer Ausführungsform kann ein Vektorverarbeitungsteilsystem als primäre Verarbeitungs-Engine eines PVA betreiben werden und eine Vektorverarbeitungseinheit (vector processing unit - „VPU“), einen Anweisungs-Cache und/oder Vektorspeicher (z. B. „VMEM“) beinhalten. In mindestens einer Ausführungsform kann der VPU-Kern einen digitalen Signalprozessor beinhalten, wie zum Beispiel einen digitalen Single-Instruction-Multiple-Data-(„SΠVID“-)Very-Long-Instruction-Word-(„VLIW“-)Signalprozessor. In mindestens einer Ausführungsform kann eine Kombination aus SIMD und VLIW den Durchsatz und die Geschwindigkeit erhöhen.
  • In mindestens einer Ausführungsform kann jeder der Vektorprozessoren einen Anweisungs-Cache beinhalten und an dedizierten Speicher gekoppelt sein. Daher kann in mindestens einer Ausführungsform jeder der Vektorprozessoren so konfiguriert sein, dass er unabhängig von anderen Vektorprozessoren ausgeführt wird. In mindestens einer Ausführungsform können Vektorprozessoren, die in einem konkreten PVA enthalten sind, so konfiguriert sein, dass sie Datenparallelität einsetzen. Zum Beispiel kann in mindestens einer Ausführungsform eine Vielzahl von Vektorprozessoren, die in einem einzelnen PVA enthalten ist, einen gemeinsamen Algorithmus des maschinellen Sehens ausführen, jedoch an unterschiedlichen Regionen eines Bildes. In mindestens einer Ausführungsform können die in einem konkreten PVA enthaltenen Vektorprozessoren simultan unterschiedliche Algorithmen des maschinellen Sehens an einem Bild ausführen oder auch unterschiedliche Algorithmen an sequenziellen Bildern oder Abschnitten eines Bildes ausführen. In mindestens einer Ausführungsform kann unter anderem eine beliebige Anzahl PVAs in einem Hardware-Beschleunigungscluster enthalten sein und eine beliebige Anzahl von Vektorprozessoren in jedem PVA enthalten sein. In mindestens einer Ausführungsform kann der PVA zusätzlichen Speicher für Fehlerkorrekturcode (error correcting code - „ECC“) beinhalten, um die Gesamtsystemsicherheit zu erhöhen.
  • In mindestens einer Ausführungsform kann der/können die Beschleuniger 1314 ein chipinternes Netz für maschinelles Sehen und statischen Direktzugriffsspeicher (static random-access memory - „SRAM“) beinhalten, um einen SRAM mit hoher Bandbreite und niedriger Latenz für den/die Beschleuniger 1314 bereitzustellen. In mindestens einer Ausführungsform kann chipinterner Speicher mindestens 4 MB SRAM beinhalten, der zum Beispiel und ohne Einschränkung acht feldkonfigurierbare Speicherblöcke umfasst, auf die sowohl ein PVA als auch ein DLA zugreifen können. In mindestens einer Ausführungsform kann jedes Paar von Speicherblöcken eine Schnittstelle für einen weiterentwickelten Peripheriebus (advanced peripheral bus - „APB“), eine Konfigurationsschaltung, eine Steuerung und einen Multiplexer beinhalten. In mindestens einer Ausführungsform kann ein beliebiger Typ von Speicher verwendet werden. In mindestens einer Ausführungsform können ein PVA und ein DLA auf Speicher über einen Backbone zugreifen, der einem PVA und einem DLA Hochgeschwindigkeitszugriff auf Speicher bereitstellt. In mindestens einer Ausführungsform kann ein Backbone ein chipinternes Netz für maschinelles Sehen beinhalten, das einen PVA und einen DLA mit Speicher zusammenschaltet (z. B. unter Verwendung eines APB).
  • In mindestens einer Ausführungsform kann ein chipinternes Netz für maschinelles Sehen eine Schnittstelle beinhalten, die vor der Übertragung eines beliebigen Steuersignals/einer beliebigen Adresse/beliebiger Daten bestimmt, dass sowohl ein PVA als auch ein DLA einsatzbereite und gültige Signale bereitstellen. In mindestens einer Ausführungsform kann eine Schnittstelle separate Phasen und separate Kanäle zum Übertragen von Steuersignalen/Adressen/Daten sowie Burst-artige Kommunikation für eine kontinuierliche Datenübermittlung bereitstellen. In mindestens einer Ausführungsform kann eine Schnittstelle mit den Standards International Organization for Standardization („ISO“) 26262 oder International Electrotechnical Commission („IEC“) 61508 konform sein, obwohl andere Standards und Protokolle verwendet werden können.
  • In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1304 einen Echtzeitstrahlverfolgungs-Hardware-Beschleuniger beinhalten. In mindestens einer Ausführungsform kann der Echtzeitstrahlverfolgungs-Hardware-Beschleuniger verwendet werden, um schnell und effizient Positionen und Ausdehnungen von Objekten (z. B. innerhalb eines Weltmodells) zu bestimmen, um Echtzeitvisualisierungssimulationen zu erzeugen, für die RADAR-Signalinterpretation, für die Schallausbreitungssynthese und/oder -analyse, für die Simulation von SONAR-Systemen, für die allgemeine Wellenausbreitungssimulation, für den Vergleich mit LIDAR-Daten zum Zwecke der Lokalisierung und/oder für andere Funktionen und/oder für andere Verwendungen.
  • In mindestens einer Ausführungsform kann der/können die Beschleuniger 1314 ein breites Spektrum von Verwendungen für das autonome Fahren aufweisen. In mindestens einer Ausführungsform kann ein PVA für wichtige Verarbeitungsstufen im ADAS und in autonomen Fahrzeugen verwendet werden. In mindestens einer Ausführungsform passen die Fähigkeiten eines PVA gut zu algorithmischen Domänen, die eine vorhersagbare Verarbeitung bei niedriger Leistung und niedriger Latenz benötigen. Anders ausgedrückt, zeigt ein PVA eine gute Rechenleistung für halbdichte oder dichte reguläre Berechnungen, auch an kleinen Datensätzen, die vorhersagbare Laufzeiten bei niedriger Latenz und niedriger Leistung erfordern könnten. In mindestens einer Ausführungsform, wie etwa in dem Fahrzeug 1300, könnten die PVAs so ausgestaltet sein, dass sie klassische Algorithmen des maschinellen Sehens ausführen, da sie bei der Objektdetektion und beim Betreiben an Integermathematik effizient sein können.
  • Zum Beispiel wird gemäß mindestens einer Ausführungsform der Technologie ein PVA verwendet, um maschinelles Stereo-Sehen durchzuführen. In mindestens einer Ausführungsform kann in einigen Beispielen ein auf semiglobalem Abgleich basierender Algorithmus verwendet werden, obwohl dies nicht einschränkend sein soll. In mindestens einer Ausführungsform verwenden Anwendungen für das autonome Fahren auf Level 3-5 Bewegungsschätzung/Stereo-Abgleich spontan (z. B. Struktur aus Bewegung, Fußgängererkennung, Fahrspurdetektion usw.). In mindestens einer Ausführungsform kann ein PVA Funktionen des maschinellen Stereo-Sehens an Eingaben von zwei monokularen Kameras durchführen.
  • In mindestens einer Ausführungsform kann ein PVA verwendet werden, um dichten optischen Fluss durchzuführen. Zum Beispiel könnte ein PVA in mindestens einer Ausführungsform RADAR-Rohdaten verarbeiten (z. B. unter Verwendung einer schnellen 4D-Fourier-Transformation), um verarbeitete RADAR-Daten bereitzustellen. In mindestens einer Ausführungsform wird ein PVA für die Laufzeit-Tiefenverarbeitung verwendet, indem zum Beispiel Laufzeit-Rohdaten verarbeitet werden, um verarbeitete Laufzeitdaten bereitzustellen.
  • In mindestens einer Ausführungsform kann ein DLA verwendet werden, um einen beliebigen Typ von Netz auszuführen, um die Steuerung und Fahrsicherheit zu verbessern, einschließlich zum Beispiel und ohne Einschränkung ein neuronales Netz, das ein Maß der Konfidenz für jede Objektdetektion ausgibt. In mindestens einer Ausführungsform kann die Konfidenz als Wahrscheinlichkeit dargestellt oder interpretiert werden oder als Bereitstellung einer relativen „Gewichtung“ jeder Detektion im Vergleich zu anderen Detektionen. In mindestens einer Ausführungsform ermöglicht ein Konfidenzmaß es einem System, weitere Entscheidungen darüber zu treffen, welche Detektionen als richtig positive Detektionen und nicht als falsch positive Detektionen betrachtet werden sollten. In mindestens einer Ausführungsform kann ein System einen Schwellenwert für die Konfidenz festlegen und nur Detektionen, die den Schwellenwert überschreiten, als richtig positive Detektionen betrachten. In einer Ausführungsform, in der ein automatisches Notbrems(automatic emergency braking - „AEB“)-System verwendet wird, würden falsch positive Erkennungen dazu führen, dass das Fahrzeug automatisch eine Notbremsung durchführt, was natürlich unerwünscht ist. In mindestens einer Ausführungsform können Detektionen mit hoher Konfidenz als Auslöser für AEB betrachtet werden. In mindestens einer Ausführungsform kann ein DLA ein neuronales Netz zur Regression des Konfidenzwerts ausführen. In mindestens einer Ausführungsform kann das neuronale Netz als seine Eingabe mindestens eine Teilmenge von Parametern verwenden, wie etwa die Abmessungen des Begrenzungsrahmens, die (z. B. von einem anderen Teilsystem) erlangte Grundebenenschätzung, die Ausgabe von IMU-Sensor(en) 1366, die mit der Ausrichtung des Fahrzeugs 1300 korreliert, den Abstand, die 3D-Standortschätzungen des Objekts, die von dem neuronalen Netz und/oder anderen Sensoren (z. B. LIDAR-Sensor(en) 1364 oder RADAR-Sensor(en) 1360) erlangt werden, sowie andere.
  • In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1304 einen oder mehrere Datenspeicher 1316 (z.B. Speicher) beinhalten. In mindestens einer Ausführungsform kann es sich bei den Datenspeicher(n) 1316 um chipinternen Speicher der SoC(s) 1304 handeln, der neuronale Netze speichern kann, die auf den GPU(s) 1308 und/oder einem DLA ausgeführt werden sollen. In mindestens einer Ausführungsform kann die Kapazität der Datenspeicher(s) 1316 groß genug sein, um mehrere Instanzen von neuronalen Netzen zur Redundanz und Sicherheit zu speichern. In mindestens einer Ausführungsform kann der/können die Datenspeicher 1316 L2- oder L3-Cache(s) umfassen.
  • In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1304 eine beliebige Anzahl von Prozessor(en) 1310 (z.B. eingebettete Prozessoren) beinhalten. In mindestens einer Ausführungsform können die Prozessor(en) 1310 einen Booting- und Leistungsverwaltungsprozessor beinhalten, der ein dedizierter Prozessor und Teilsystem sein kann, um Booting-Leistungs- und -verwaltungsfunktionen und die damit verbundene Sicherheitsdurchsetzung zu handhaben. In mindestens einer Ausführungsform kann der Booting- und Leistungsverwaltungsprozessor ein Teil einer Booting-Sequenz der SoC(s) 1304 sein und Laufzeit-Leistungsverwaltungsdienste bereitstellen. In mindestens einer Ausführungsform kann ein Booting-Leistungs- und Verwaltungsprozessor Takt- und Spannungsprogrammierung, Unterstützung bei Übergängen des Systems in einen Zustand mit niedriger Leistung, Verwaltung von Thermo- und Temperatursensoren der SoC(s) 1304 und/oder Verwaltung von Leistungszuständen der SoC(s) 1304 bereitstellen. In mindestens einer Ausführungsform kann jeder Temperatursensor als Ringoszillator implementiert sein, dessen Ausgangsfrequenz proportional zur Temperatur ist, und die SoC(s) 1304 können Ringoszillatoren verwenden, um Temperaturen von CPU(s) 1306, GPU(s) 1308 und/oder Beschleuniger(n) 1314 zu detektieren. Falls bestimmt wird, dass Temperaturen einen Schwellenwert überschreiten, kann in mindestens einer Ausführungsform ein Booting- und Leistungsverwaltungsprozessor dann in eine Temperaturfehlerroutine eintreten und die SoC(s) 1304 in einen Zustand mit niedrigerer Leistung versetzen und/oder das Fahrzeug 1300 in einen Modus des Fahrens zu einem sicheren Halt versetzen (z. B. das Fahrzeug 1300 zu einem sicheren Halt bringen).
  • In mindestens einer Ausführungsform können die Prozessor(en) 1313 ferner einen Satz von eingebetteten Prozessoren beinhalten, die als Audioverarbeitungs-Engine dienen können, die ein Audioteilsystem sein kann, das eine vollständige Hardware-Unterstützung für Mehrkanal-Audio über mehrere Schnittstellen sowie eine breite und flexible Palette von Audio-E/A-Schnittstellen ermöglicht. In mindestens einer Ausführungsform ist eine Audioverarbeitungs-Engine ein dedizierter Prozessorkern mit einem digitalen Signalprozessor mit dediziertem RAM
  • In mindestens einer Ausführungsform können die Prozessor(en) 1310 ferner eine stets eingeschaltete Prozessor-Engine beinhalten, die notwendige Hardware-Merkmale zum Unterstützen der Sensorverwaltung bei niedriger Leistung und der Aufweck-Anwendungsfälle bereitstellen kann. In mindestens einer Ausführungsform kann die stets eingeschaltete Prozessor-Engine ohne Einschränkung einen Prozessorkern, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z. B. Zeitgeber und Unterbrechungssteuerungen), verschiedene E/A-Steuerungsperipheriegeräte und Routing-Logik beinhalten.
  • In mindestens einer Ausführungsform können die Prozessor(en) 1310 ferner eine Sicherheitscluster-Engine beinhalten, die ohne Einschränkung ein dediziertes Prozessorteilsystem zum Handhaben der Sicherheitsverwaltung für Automobilanwendungen beinhaltet. In mindestens einer Ausführungsform kann eine Sicherheitscluster-Engine ohne Einschränkung zwei oder mehr Prozessorkerne, einen eng gekoppelten RAM, unterstützende Peripheriegeräte (z. B. Zeitgeber, eine Unterbrechungssteuerung usw.) und/oder Routing-Logik beinhalten. In einem Sicherheitsmodus können zwei oder mehr Kerne in mindestens einer Ausführungsform in einem Gleichschrittmodus arbeiten und als einzelner Kern mit einer Vergleichslogik funktionieren, um etwaige Unterschiede zwischen ihren Operationen zu detektieren. In mindestens einer Ausführungsform können die Prozessor(en) 1310 ferner eine Echtzeitkamera-Engine beinhalten, die ohne Einschränkung ein dediziertes Prozessorteilsystem zum Handhaben der Echtzeitkameraverwaltung beinhalten kann. In mindestens einer Ausführungsform können die Prozessor(en) 1310 ferner einen Signalprozessor mit hohem Dynamikbereich beinhalten, der ohne Einschränkung einen Bildsignalprozessor beinhalten kann, der eine Hardware-Engine ist, die Teil einer Kameraverarbeitungspipeline ist.
  • In mindestens einer Ausführungsform können die Prozessor(en) 1310 einen Videobildkompositor beinhalten, der ein Verarbeitungsblock sein kann (z. B. auf einem Mikroprozessor implementiert), der Videonachverarbeitungsfunktionen implementiert, die durch eine Videowiedergabeanwendung benötigt werden, um ein endgültiges Bild für das Fenster eines Wiedergabeprogramms zu erzeugen. In mindestens einer Ausführungsform kann ein Videobildkompositor eine Objektiwerzeichnungskorrektur an den Weitsichtkamera(s) 1370, Rundumkamera(s) 1374 und/oder kabineninternen Überwachungskamerasensor(en) durchführen. In mindestens einer Ausführungsform werden die kabineninternen Überwachungskamerasensor(en) vorzugsweise durch ein neuronales Netz überwacht, das auf einer anderen Instanz des SoC 1304 läuft und so konfiguriert ist, dass es Ereignisse in der Kabine erkennt und entsprechend reagiert. In mindestens einer Ausführungsform kann ein kabineninternes System ohne Einschränkung Lippenlesen durchführen, um den Mobilfunkdienst zu aktivieren und einen Anruf zu tätigen, E-Mails zu diktieren, ein Ziel des Fahrzeugs zu ändern, ein Infotainmentsystem des Fahrzeugs und dessen Einstellungen zu aktivieren oder zu ändern oder sprachaktiviertes Surfen im Internet bereitzustellen. In mindestens einer Ausführungsform stehen einem Fahrer bestimmte Funktionen zur Verfügung, wenn ein Fahrzeug in einem autonomen Modus betrieben wird, und sind ansonsten deaktiviert.
  • In mindestens einer Ausführungsform kann ein Videobildkompositor eine erweiterte zeitliche Rauschunterdrückung sowohl für die räumliche als auch für die zeitliche Rauschunterdrückung beinhalten. In mindestens einer Ausführungsform, in der Bewegung in einem Video vorkommt, gewichtet die Rauschunterdrückung zum Beispiel die räumlichen Informationen entsprechend, indem sie die Gewichtungen der Informationen, die durch benachbarte Einzelbilder bereitgestellt werden, verringert. In mindestens einer Ausführungsform, in der ein Bild oder ein Abschnitt eines Bildes keine Bewegung beinhaltet, kann die durch den Videobildkompositor durchgeführte zeitliche Rauschunterdrückung Informationen aus einem vorherigen Bild verwenden, um das Rauschen in einem derzeitigen Bild zu unterdrücken.
  • In mindestens einer Ausführungsform kann ein Videobildkompositor auch so konfiguriert sein, dass er eine Stereoentzerrung an den eingegebenen Stereoobjektiv-Einzelbildern durchführt. In mindestens einer Ausführungsform kann ein Videobildkompositor ferner für die Benutzerschnittstellenzusammensetzung verwendet werden, wenn ein Desktop des Betriebssystems in Verwendung ist und die GPU(s) 1308 nicht zum kontinuierlichen Rendern neuer Oberflächen erforderlich sind. Wenn die GPU(s) 1308 eingeschaltet sind und aktiv 3D-Rendering durchführen, kann in mindestens einer Ausführungsform ein Videobildkompositor verwendet werden, um die GPU(s) 1308 abzuladen, um die Rechenleistung und Reaktionsfähigkeit zu verbessern.
  • In mindestens einer Ausführungsform können ein oder mehrere SoC der SoC(s) 1304 ferner eine serielle Mobile-Industry-Processor-Interface-(„MIPI“-)Kameraschnittstelle zum Empfangen von Videos und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingabeblock beinhalten, der für eine Kamera und verwandte Pixeleingabefunktionen verwendet werden kann. In mindestens einer Ausführungsform können eines oder mehrere der SoC(s) 1304 ferner Eingabe/Ausgabe-Steuerung(en) beinhalten, die durch Software gesteuert werden können und zum Empfangen von E/A-Signalen verwendet werden können, die keiner bestimmten Rolle zugewiesen sind.
  • In mindestens einer Ausführungsform können ein oder mehrere SoC der SoC(s) 1304 ferner eine breite Palette von Peripherieschnittstellen beinhalten, um die Kommunikation mit Peripheriegeräten, Audiocodierern/-decodierern („Codecs“), Leistungsverwaltung und/oder anderen Vorrichtungen zu ermöglichen. In mindestens einer Ausführungsform können die SoC(s) 1304 verwendet werden, um Daten von Kameras (z. B. über Gigabit-Multimedia-Serial-Link- und Ethernet-Kanäle verbunden), Sensoren (z. B. LIDAR-Sensor(en) 1364, RADAR-Sensor(en) 1360 usw., die über Ethernet-Kanäle verbunden sein können), Daten von dem Bus 1302 (z.B. Geschwindigkeit des Fahrzeugs 1300, Lenkradposition usw.), Daten von GNSS-Sensor(en) 1358 (z. B. über einen Ethernet-Bus oder einen CAN-Bus verbunden) usw. zu verarbeiten. In mindestens einer Ausführungsform können ein oder mehrere SoC der SoC(s) 1304 ferner dedizierte Massenspeichersteuerungen mit hoher Rechenleistung beinhalten, die eigene DMA-Engines beinhalten können und die verwendet werden können, um CPU(s) 1306 routinemäßige Datenverwaltungs-Tasks abzunehmen.
  • In mindestens einer Ausführungsform können die SoC(s) 1304 eine Ende-zu-Ende-Plattform mit einer flexiblen Architektur sein, die die Automatisierungslevels 3-5 überspannt und dadurch eine umfassende funktionelle Sicherheitsarchitektur bereitstellt, die Techniken des maschinellen Sehens und des ADAS für Diversität und Redundanz ausnutzt und effizient einsetzt und eine Plattform für einen flexiblen, zuverlässigen Fahrsoftwarestapel zusammen mit Deep-Learning-Werkzeugen bereitstellt. In mindestens einer Ausführungsform können die SoC(s) 1304 schneller, zuverlässiger und sogar energieeffizienter und platzeffizienter sein als herkömmliche Systeme. Zum Beispiel können in mindestens einer Ausführungsform der/die Beschleuniger 1314, wenn sie mit den CPU(s) 1306, GPU(s) 1308 und Datenspeicher(n) 1316 kombiniert sind, eine schnelle, effiziente Plattform für autonome Fahrzeuge der Levels 3-5 bereitstellen.
  • In mindestens einer Ausführungsform können Algorithmen des maschinellen Sehens auf CPUs ausgeführt werden, die unter Verwendung einer Programmiersprache auf hohem Level, wie etwa C, konfiguriert werden können, um eine große Vielfalt von Verarbeitungsalgorithmen über eine große Vielfalt von visuellen Daten auszuführen. In mindestens einer Ausführungsform sind die CPUs jedoch oft nicht dazu in der Lage, die Rechenleistungsanforderungen vieler Anwendungen des maschinellen Sehens zu erfüllen, wie zum Beispiel in Bezug auf die Ausführungszeit und den Leistungsverbrauch. In mindestens einer Ausführungsform sind viele CPUs nicht dazu in der Lage, komplexe Objektdetektionsalgorithmen in Echtzeit auszuführen, die in fahrzeuginternen ADAS-Anwendungen und in praktischen autonomen Fahrzeugen der Levels 3-5 verwendet werden.
  • Die hierin beschriebenen Ausführungsformen ermöglichen es, dass mehrere neuronale Netze simultan und/oder sequenziell durchgeführt und die Ergebnisse miteinander kombiniert werden, um eine autonome Fahrfunktionalität der Levels 3-5 zu ermöglichen. Zum Beispiel kann in mindestens einer Ausführungsform ein CNN, das auf einem DLA oder einer diskreten GPU (z. B. GPU(s) 1320) ausgeführt wird, eine Text- und Worterkennung beinhalten, die das Lesen und Verstehen von Verkehrsschildern ermöglicht, einschließlich Schildern, für die ein neuronales Netz nicht speziell trainiert worden ist. In mindestens einer Ausführungsform kann ein DLA ferner ein neuronales Netz beinhalten, das dazu in der Lage ist, ein Zeichen zu identifizieren, zu interpretieren und ein semantisches Verständnis davon bereitzustellen und dieses semantische Verständnis an Pfadplanungsmodule weiterzugeben, die auf einem CPU-Komplex laufen.
  • In mindestens einer Ausführungsform können mehrere neuronale Netze simultan ausgeführt werden, wie für das Fahren bei Level 3, 4 oder 5. In mindestens einer Ausführungsform kann zum Beispiel ein Warnschild mit der Aufschrift „Vorsicht: Blinkende Lichter weisen auf Vereisung hin“ zusammen mit einem elektrischen Licht durch mehrere neuronale Netze unabhängig oder gemeinsam interpretiert werden. In mindestens einer Ausführungsform kann ein derartiges Warnschild selbst durch ein erstes eingesetztes neuronales Netz (z. B. ein neuronales Netz, das trainiert wurde) als Verkehrsschild identifiziert werden und ein Text „Blinkende Lichter weisen auf Vereisung hin“ kann durch ein zweites eingesetztes neuronales Netz interpretiert werden, das eine Pfadplanungssoftware des Fahrzeugs (die vorzugsweise auf einem CPU-Komplex ausgeführt wird) darüber informiert, dass, wenn blinkende Lichter detektiert werden, Vereisung vorliegt. In mindestens einer Ausführungsform kann ein blinkendes Licht identifiziert werden, indem ein drittes eingesetztes neuronales Netz über mehrere Einzelbilder hinweg betrieben wird, das eine Pfadplanungssoftware des Fahrzeugs über ein Vorhandensein (oder ein Nichtvorhandensein) von blinkenden Lichtern informiert. In mindestens einer Ausführungsform können alle drei neuronalen Netze simultan laufen, wie etwa innerhalb eines DLA und/oder auf GPU(s) 1308.
  • In mindestens einer Ausführungsform kann ein CNN zur Gesichtserkennung und Fahrzeugbesitzeridentifizierung Daten von Kamerasensoren verwenden, um das Vorhandensein eines autorisierten Fahrers und/oder Besitzers des Fahrzeugs 1300 zu identifizieren. In mindestens einer Ausführungsform kann eine stets eingeschaltete Sensorverarbeitungs-Engine verwendet werden, um ein Fahrzeug zu entriegeln, wenn sich ein Besitzer einer Fahrertür nähert und Lichter einschaltet, und um in einem Sicherheitsmodus ein derartiges Fahrzeug zu deaktivieren, wenn ein Besitzer ein derartiges Fahrzeug verlässt. Auf diese Weise stellen die SoC(s) 1304 Sicherheit gegen Diebstahl und/oder Carjacking bereit.
  • In mindestens einer Ausführungsform kann ein CNN zur Detektion und Identifizierung von Einsatzfahrzeugen Daten von Mikrofonen 1396 verwenden, um Sirenen von Einsatzfahrzeugen zu detektieren und zu identifizieren. In mindestens einer Ausführungsform verwenden die SoC(s) 1304 ein CNN zum Klassifizieren von Umgebungs- und Stadtgeräuschen sowie zum Klassifizieren von visuellen Daten. In mindestens einer Ausführungsform wird ein CNN, das auf einem DLA läuft, dafür trainiert, eine relative Annäherungsgeschwindigkeit eines Einsatzfahrzeugs zu identifizieren (z. B. durch Verwenden eines Dopplereffekts). In mindestens einer Ausführungsform kann ein CNN auch dafür trainiert werden, Einsatzfahrzeuge zu identifizieren, die für ein lokales Gebiet, in dem ein Fahrzeug betrieben wird, spezifisch sind, wie durch die GNSS-Sensor(en) 1358 identifiziert. In mindestens einer Ausführungsform versucht ein CNN, wenn es in Europa betrieben wird, europäische Sirenen zu detektieren, und in Nordamerika versucht ein CNN, nur nordamerikanische Sirenen zu identifizieren. In mindestens einer Ausführungsform kann, sobald ein Einsatzfahrzeug detektiert wird, ein Steuerprogramm verwendet werden, um mit der Hilfe der Ultraschallsensor(en) 1362 eine Sicherheitsroutine für Einsatzfahrzeuge auszuführen, um ein Fahrzeug zu verlangsamen, an einen Straßenrand zu fahren, ein Fahrzeug zu parken und/oder ein Fahrzeug im Leerlauf laufen zu lassen, bis die Einsatzfahrzeuge vorbeigefahren sind.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 CPU(s) 1318 (z.B. diskrete CPU(s) oder dCPU(s)) beinhalten, die über eine Hochgeschwindigkeitszusammenschaltung (z. B. PCIe) an die SoC(s) 1304 gekoppelt sein können. In mindestens einer Ausführungsform können die CPU(s) 1318 zum Beispiel einen X86-Prozessor beinhalten. Die CPU(s) 1318 können dazu verwendet werden, eine beliebige einer Vielfalt von Funktionen durchzuführen, einschließlich zum Beispiel des Vermittelns potenziell inkonsistenter Ergebnisse zwischen ADAS-Sensoren und SoC(s) 1304 und/oder des Überwachens des Status und Zustands der Steuerung(en) 1336 und/oder eines Infotainmentsystems auf einem Chip („Infotainment-SoC“) 1330.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 GPU(s) 1320 (z.B. diskrete GPU(s) oder dGPU(s)) beinhalten, die über eine Hochgeschwindigkeitszusammenschaltung (z. B. NVLINK-Kanal von NVIDIA) an die SoC(s) 1304 gekoppelt sein können. In mindestens einer Ausführungsform können die GPU(s) 1320 eine zusätzliche Funktionalität für künstliche Intelligenz bereitstellen, wie etwa durch Ausführen redundanter und/oder unterschiedlicher neuronaler Netze, und sie können zum Trainieren und/oder Aktualisieren neuronaler Netze mindestens zum Teil auf Grundlage von Eingaben (z. B. Sensordaten) von Sensoren eines Fahrzeugs 1300 verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner die Netzschnittstelle 1324 beinhalten, die ohne Einschränkung drahtlose Antenne(n) 1326 beinhalten kann (z. B. eine oder mehrere drahtlose Antennen für unterschiedliche Kommunikationsprotokolle, wie etwa eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). In mindestens einer Ausführungsform kann die Netzschnittstelle 1324 verwendet werden, um eine drahtlose Verbindungsfähigkeit mit Internet-Cloud-Diensten (z. B. mit Server(n) und/oder anderen Netzvorrichtungen), mit anderen Fahrzeugen und/oder mit Rechenvorrichtungen (z. B. Client-Vorrichtungen von Fahrgästen) zu ermöglichen. In mindestens einer Ausführungsform kann zum Kommunizieren mit anderen Fahrzeugen eine direkte Verknüpfung zwischen dem Fahrzeug 130 und einem anderen Fahrzeug hergestellt werden und/oder eine indirekte Verknüpfung (z. B. über Netze und über das Internet) hergestellt werden. In mindestens einer Ausführungsform können direkte Verknüpfungen unter Verwendung einer Fahrzeug-zu-Fahrzeug-Kommunikationsverknüpfung bereitgestellt werden. In mindestens einer Ausführungsform kann eine Fahrzeug-zu-Fahrzeug-Kommunikationsverknüpfung dem Fahrzeug 1300 Informationen über Fahrzeuge in der Nähe des Fahrzeugs 1300 bereitstellen (z. B. Fahrzeuge vor, neben und/oder hinter dem Fahrzeug 1300). In mindestens einer Ausführungsform kann eine derartige vorgenannte Funktionalität Teil einer kooperativen adaptiven Geschwindigkeitssteuerungsfunktionalität des Fahrzeugs 1300 sein.
  • In mindestens einer Ausführungsform kann die Netzschnittstelle 1324 ein SoC beinhalten, das eine Modulations- und Demodulationsfunktionalität bereitstellt und es den Steuerung(en) 1336 ermöglicht, über drahtlose Netze zu kommunizieren. In mindestens einer Ausführungsform kann die Netzschnittstelle 1324 ein Hochfrequenz-Frontend für die Aufwärtskonvertierung vom Basisband auf die Hochfrequenz und die Abwärtskonvertierung von der Hochfrequenz auf das Basisband beinhalten. In mindestens einer Ausführungsform können Frequenzkonvertierungen auf eine beliebige technisch machbare Weise durchgeführt werden. Frequenzkonvertierungen könnten zum Beispiel durch hinreichend bekannte Prozesse und/oder unter Verwendung von Überlagerungsprozessen durchgeführt werden. In mindestens einer Ausführungsform kann die Hochfrequenz-Frontend-Funktionalität durch einen separaten Chip bereitgestellt sein. In mindestens einer Ausführungsform können die Netzschnittstellen eine drahtlose Funktionalität zum Kommunizieren über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle beinhalten.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner einen oder mehrere Datenspeicher 1328 beinhalten, die ohne Einschränkung chipexternen (z. B. außerhalb der SoC(s) 1304 liegenden) Speicher beinhalten können. In mindestens einer Ausführungsform kann der/können die Datenspeicher 1328 ohne Einschränkung ein oder mehrere Speicherelemente beinhalten, darunter RAM, SRAM, dynamischen Direktzugriffsspeicher (dynamic random-access memory - „DRAM“), Video-Direktzugriffsspeicher (video random-access memory - „VRAM“), Flash-Speicher, Festplatten und/oder andere Komponenten und/oder Vorrichtungen, die mindestens ein Datenbit speichern können.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner GNSS-Sensor(en) 1358 (z. B. GPS- und/oder unterstützte GPS-Sensoren) beinhalten, um bei Funktionen zur Kartierung, Wahrnehmung, Erzeugung des Belegungsgitters und/oder Pfadplanung zu helfen. In mindestens einer Ausführungsform kann eine beliebige Anzahl von GNSS-Sensor(en) 1358 verwendet werden, einschließlich zum Beispiel und ohne Einschränkung eines GPS unter Verwendung eines USB-Steckers mit einer Ethernet-zu-Seriell-Brücke (z. B. RS-232-Brücke).
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner RADAR-Sensor(en) 1360 beinhalten. In mindestens einer Ausführungsform können die RADAR-Sensor(en) 1360 durch das Fahrzeug 1300 zur Fahrzeugdetektion mit großer Reichweite verwendet werden, auch bei Dunkelheit und/oder schlechten Wetterbedingungen. In mindestens einer Ausführungsform können die RADAR-Funktionssicherheitslevel ASIL B sein. In mindestens einer Ausführungsform können die RADAR-Sensor(en) 1360 einen CAN-Bus und/oder den Bus 1302 (z. B. zum Übertragen der durch die RADAR-Sensor(en) 1360 erzeugten Daten) zum Steuern von und Zugriff auf Objektverfolgungsdaten verwenden, wobei in einigen Beispielen Zugriff auf Ethernet-Kanäle zum Zugreifen auf Rohdaten besteht. In mindestens einer Ausführungsform kann eine große Vielfalt von RADAR-Sensortypen verwendet werden. Zum Beispiel und ohne Einschränkung können die RADAR-Sensor(en) 1360 für die Verwendung als Front-, Heck- und Seiten-RADAR geeignet sein. In mindestens einer Ausführungsform handelt es sich bei einem oder mehreren Sensoren der RADAR-Sensor(en) 1360 um einen Impuls-Doppler-RADAR-Sensor.
  • In mindestens einer Ausführungsform können die RADAR-Sensor(en) 1360 unterschiedliche Konfigurationen beinhalten, wie etwa mit großer Reichweite und schmalem Sichtfeld, mit geringer Reichweite und breitem Sichtfeld, mit seitlicher Abdeckung mit kurzer Reichweite usw. In mindestens einer Ausführungsform kann das RADAR mit großer Reichweite für die adaptive Geschwindigkeitssteuerungsfunktionalität verwendet werden. In mindestens einer Ausführungsform können RADAR-Systeme mit großer Reichweite ein breites Sichtfeld bereitstellen, das durch zwei oder mehr unabhängige Scans realisiert wird, wie etwa innerhalb einer Reichweite von 250 m (Metern). In mindestens einer Ausführungsform können die RADAR-Sensor(en) 1360 dabei helfen, zwischen statischen und sich bewegenden Objekten zu unterscheiden, und durch das ADAS-System 1338 für den Notbremsassistenten und die Vorwärtskollisionswarnung verwendet werden. In mindestens einer Ausführungsform können die Sensor(en) 1360, die in einem RADAR-System mit großer Reichweite enthalten sind, ohne Einschränkung ein monostatisches multimodales RADAR mit mehreren (z. B. sechs oder mehr) festen RADAR-Antennen und einer Hochgeschwindigkeits-CAN- und FlexRay-Schnittstelle beinhalten. In mindestens einer Ausführungsform mit sechs Antennen können vier zentrale Antennen ein fokussiertes Strahlenmuster erzeugen, das dazu ausgestaltet ist, die Umgebung des Fahrzeugs 1300 bei höheren Geschwindigkeiten mit minimalen Störungen durch den Verkehr auf den benachbarten Fahrspuren aufzuzeichnen. In mindestens einer Ausführungsform können zwei weitere Antennen das Sichtfeld erweitern, wodurch es möglich ist, Fahrzeuge, die in eine Fahrspur des Fahrzeugs 1300 einfahren oder diese verlassen, schnell zu detektieren.
  • In mindestens einer Ausführungsform können RADAR-Systeme mit mittlerer Reichweite beispielsweise eine Reichweite von bis zu 160 m (vorne) oder 80 m (hinten) und ein Sichtfeld von bis zu 42 Grad (vorne) oder 150 Grad (hinten) beinhalten. In mindestens einer Ausführungsform können RADAR-Systeme mit kurzer Reichweite ohne Einschränkung eine beliebige Anzahl von RADAR-Sensor(en) 1360 beinhalten, die für die Installation an beiden Enden eines hinteren Stoßfängers ausgestaltet sind. Wenn das RADAR-Sensorsystem an beiden Enden eines hinteren Stoßfängers installiert ist, kann es in mindestens einer Ausführungsform zwei Strahlen erzeugen, die tote Winkel in einer rückwärtigen Richtung und neben einem Fahrzeug konstant überwachen. In mindestens einer Ausführungsform können RADAR-Systeme mit kurzer Reichweite in dem ADAS-System 1338 zur Detektion des toten Winkels und/oder zur Spurwechselassistenz verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner Ultraschallsensor(en) 1362 beinhalten. In mindestens einer Ausführungsform können die Ultraschallsensor(en) 1362, die an einer vorderen, einer hinteren und/oder seitlichen Stelle des Fahrzeugs 1300 positioniert sein können, für die Einparkhilfe und/oder zum Erstellen und Aktualisieren eines Belegungsgitters verwendet werden. In mindestens einer Ausführungsform kann eine große Vielfalt von Ultraschallsensor(en) 1362 verwendet werden und können unterschiedliche Ultraschallsensor(en) 1362 für unterschiedliche Detektionsreichweiten (z.B. 2,5 m, 4 m) verwendet werden. In mindestens einer Ausführungsform können die Ultraschallsensor(en) 1362 bei funktionellen Sicherheitslevels von ASIL B betrieben werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 LIDAR-Sensor(en) 1364 beinhalten. In mindestens einer Ausführungsform können die LIDAR-Sensor(en) 1364 zur Objekt- und Fußgängerdetektion, Notbremsung, Kollisionsvermeidung und/oder für andere Funktionen verwendet werden. In mindestens einer Ausführungsform können die LIDAR-Sensor(en) 1364 bei dem funktionellen Sicherheitslevel ASIL B betrieben werden. In mindestens einer Ausführungsform kann das Fahrzeug 1300 mehrere LIDAR-Sensoren 1364 (z. B. zwei, vier, sechs usw.) beinhalten, die einen Ethernet-Kanal verwenden können (um z. B. einem Gigabit-Ethernet-Switch Daten bereitzustellen).
  • In mindestens einer Ausführungsform können die LIDAR-Sensor(en) 1364 dazu in der Lage sein, eine Liste von Objekten und deren Abstände für ein 360-Grad-Sichtfeld bereitzustellen. In mindestens einer Ausführungsform können handelsübliche LIDAR-Sensor(en) 1364 zum Beispiel eine beworbene Reichweite von ungefähr 100 m aufweisen, mit einer Genauigkeit von 2 cm bis 3 cm und mit Unterstützung für eine 100 Mbps-Ethernet-Verbindung. In mindestens einer Ausführungsform können ein oder mehrere nicht hervorstehende LIDAR-Sensoren verwendet werden. In einer derartigen Ausführungsform können die LIDAR-Sensor(en) 1364 eine kleine Vorrichtung beinhalten, die in eine vordere, eine hintere, eine seitliche Stelle und/oder eine Eckstelle des Fahrzeugs 1300 eingebettet sein kann. In mindestens einer Ausführungsform können die LIDAR-Sensor(en) 1364 in einer derartigen Ausführungsform ein horizontales Sichtfeld von bis zu 120 Grad und ein vertikales Sichtfeld von bis zu 35 Grad mit einer Reichweite von 200 m selbst bei Objekten mit niedrigem Reflexionsvermögen bereitstellen. In mindestens einer Ausführungsform können die an der Front montierte(n) LIDAR-Sensor(en) 1364 für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert sein.
  • In mindestens einer Ausführungsform können auch LIDAR-Technologien, wie etwa 3D-Flash-LIDAR, verwendet werden. In mindestens einer Ausführungsform verwendet 3D-Flash-LIDAR einen Laserblitz als Übertragungsquelle, um die Umgebung des Fahrzeugs 1300 bis zu ungefähr 200 m zu erleuchten. In mindestens einer Ausführungsform umfasst eine Flash-LIDAR-Einheit ohne Einschränkung einen Rezeptor, der die Laserimpuls-Laufzeit und das reflektierte Licht an jedem Pixel aufzeichnet, was wiederum einer Reichweite von dem Fahrzeug 1300 zu Objekten entspricht. In mindestens einer Ausführungsform kann Flash-LIDAR ermöglichen, dass mit jedem Laserblitz hochgenaue und verzeichnungsfreie Bilder der Umgebung erzeugt werden. In mindestens einer Ausführungsform können vier Flash-LIDAR-Sensoren eingesetzt werden, einer an jeder Seite des Fahrzeugs 1300. In mindestens einer Ausführungsform beinhalten 3D-Flash-LIDAR-Systeme ohne Einschränkung eine Festkörper-3D-Staring-Array-LIDAR-Kamera ohne bewegliche Teile außer einem Lüfter (z. B. eine nicht scannende LIDAR-Vorrichtung). In mindestens einer Ausführungsform kann die Flash-LIDAR-Vorrichtung einen 5-Nanosekunden-Laserimpuls der Klasse I (augensicher) pro Bild verwenden und das reflektierte Laserlicht als 3D-Reichweitenpunktwolke und gemeinsam registrierte Intensitätsdaten erfassen.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner IMU-Sensor(en) 1366 beinhalten. In mindestens einer Ausführungsform können die IMU-Sensor(en) 1366 in einer Mitte einer Hinterachse des Fahrzeugs 1300 angeordnet sein. In mindestens einer Ausführungsform können die IMU-Sensor(en) 1366 zum Beispiel und ohne Einschränkung (einen) Beschleunigungsmesser, (ein) Magnetometer, Gyroskop(e), einen Magnetkompass, Magnetkompasse und/oder andere Sensortypen beinhalten. In mindestens einer Ausführungsform, wie etwa bei sechsachsigen Anwendungen, können die IMU-Sensor(en) 1366 ohne Einschränkung Beschleunigungsmesser und Gyroskope beinhalten. In mindestens einer Ausführungsform, wie etwa bei neunachsigen Anwendungen, können die IMU-Sensor(en) 1366 ohne Einschränkung Beschleunigungsmesser, Gyroskope und Magnetometer beinhalten.
  • In mindestens einer Ausführungsform können die IMU-Sensor(en) 1366 als miniaturisiertes GPS-gestütztes Trägheitsnavigationssystem (GPS-Aided Inertial Navigation System - „GPS/INS“) mit hoher Rechenleistung implementiert sein, das Trägheitssensoren von mikroelektromechanischen Systemen (micro-electro-mechanical systems - „MEMS“), einen hochempfindlichen GPS-Empfänger und weiterentwickelte Kalman-Filteralgorithmen kombiniert, um Schätzungen von Position, Geschwindigkeit und Lage bereitzustellen. In mindestens einer Ausführungsform können die IMU-Sensor(en) 1366 es dem Fahrzeug 1300 ermöglichen, seinen Kurs zu schätzen, ohne dass Eingaben von einem Magnetsensor erforderlich sind, indem Änderungen der Geschwindigkeit direkt von einem GPS beobachtet und an die IMU-Sensor(en) 1366 korreliert werden. In mindestens einer Ausführungsform können die IMU-Sensor(en) 1366 und GNSS-Sensor(en) 1358 in einer einzelnen integrierten Einheit kombiniert sein.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 Mikrofon(e) 1396 beinhalten, die in dem Fahrzeug 1300 und/oder um dieses herum platziert sind. In mindestens einer Ausführungsform können die Mikrofon(e) 1396 unter anderem zur Detektion und Identifizierung von Einsatzfahrzeugen verwendet werden.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner eine beliebige Anzahl von Kameratypen beinhalten, darunter Stereokamera(s) 1368, Weitsichtkamera(s) 1370, Infrarotkamera(s) 1372, Rundumkamera(s) 1374, Langstreckenkamera(s) 1398, Mittelstreckenkamera(s) 1376 und/oder andere Kameratypen. In mindestens einer Ausführungsform können Kameras verwendet werden, um Bilddaten um die gesamte Peripherie des Fahrzeugs 1300 herum zu erfassen. Welche Typen von Kameras verwendet werden, hängt in mindestens einer Ausführungsform von dem Fahrzeug 1300 ab. In mindestens einer Ausführungsform kann eine beliebige Kombination von Kameratypen verwendet werden, um die notwendige Abdeckung um das Fahrzeug 1300 herum bereitzustellen. In mindestens einer Ausführungsform kann eine Anzahl von eingesetzten Kameras in Abhängigkeit von der Ausführungsform unterschiedlich sein. In mindestens einer Ausführungsform könnte das Fahrzeug 1300 zum Beispiel sechs Kameras, sieben Kameras, zehn Kameras, zwölf Kameras oder eine andere Anzahl von Kameras beinhalten. In mindestens einer Ausführungsform können Kameras beispielsweise und ohne Einschränkung Gigabit-Multimedia-Serial-Link- („GMSL“-) und/oder Gigabit-Ethernet-Kommunikation unterstützen. In mindestens einer Ausführungsform könnte jede Kamera so sein wie bereits hierin in Bezug auf 13A und 13B detaillierter beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner Schwingungssensor(en) 1342 beinhalten. In mindestens einer Ausführungsform können die Schwingungssensor(en) 1342 Schwingungen von Komponenten des Fahrzeugs 1300, wie etwa Achse(n), messen. Zum Beispiel können in mindestens einer Ausführungsform Änderungen der Schwingungen eine Änderung des Straßenbelags angeben. Wenn zwei oder mehr Schwingungssensoren 1342 verwendet werden, können in mindestens einer Ausführungsform die Unterschiede zwischen den Schwingungen verwendet werden, um die Reibung oder den Schlupf des Straßenbelags zu bestimmen (z. B., wenn ein Unterschied der Schwingung zwischen einer leistungsbetriebenen Achse und einer sich frei drehenden Achse besteht).
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 das ADAS-System 1338 beinhalten. In mindestens einer Ausführungsform kann das ADAS-System 1338 in einigen Beispielen ohne Einschränkung ein SoC beinhalten. In mindestens einer Ausführungsform kann das ADAS-System 1338 ohne Einschränkung eine beliebige Anzahl und Kombination eines Systems zur autonomen/adaptiven/automatischen Geschwindigkeitssteuerung (autonomous/adaptive/automatic cruise control - „ACC“), eines Systems zur kooperativen adaptiven Geschwindigkeitssteuerung (cooperative adaptive cruise control - „CACC“), eines Systems zur Vorwärtszusammenstoßwarnung (forward crash warning - „FCW“), eines automatischen Systems zur Notbremsung („AEB“), eines Systems zur Spurverlassenswarnung („LDW“), eines Systems zur Spurhalteassistenz (lane keep assist - „LKA“), eines Systems zur Totwinkelwarnung (blind spot warning - „BSW“), eines Systems zur Querverkehrswarnung (rear cross-traffic warning - „RCTW“), eines Systems zur Kollisionswarnung (collision warning - „CW“), eines Systems zur Spurzentrierung (lane centering - „LC“) und/oder anderer Systeme, Merkmale und/oder Funktionen beinhalten.
  • In mindestens einer Ausführungsform kann das ACC-System RADAR-Sensor(en) 1360, LIDAR-Sensor(en) 1364 und/oder eine beliebige Anzahl von Kamera(s) verwenden. In mindestens einer Ausführungsform kann das ACC-System ein Längs-ACC-System und/oder ein Quer-ACC-System beinhalten. In mindestens einer Ausführungsform überwacht und steuert ein Längs-ACC-System den Abstand zu einem anderen Fahrzeug, das sich unmittelbar vor dem Fahrzeug 1300 befindet, und es stellt die Geschwindigkeit des Fahrzeugs 1300 automatisch ein, um einen sicheren Abstand zu vorausfahrenden Fahrzeugen einzuhalten. In mindestens einer Ausführungsform führt ein Quer-ACC-System eine Abstandshaltung durch und es rät dem Fahrzeug 1300, die Fahrspur zu wechseln, wenn dies notwendig ist. In mindestens einer Ausführungsform steht eine Quer-ACC mit anderen ADAS-Anwendungen, wie etwa LC und CW, in Bezug.
  • In mindestens einer Ausführungsform verwendet ein CACC-System Informationen von anderen Fahrzeugen, die über die Netzschnittstelle 1324 und/oder die drahtlose(n) Antenne(n) 1326 von anderen Fahrzeugen über eine drahtlose Verknüpfung oder indirekt über eine Netzverbindung (z. B. über das Internet) empfangen werden können. In mindestens einer Ausführungsform können direkte Verknüpfungen durch eine Fahrzeug-zu-Fahrzeug- (vehicle-to-vehicle - „V2V“-) Kommunikationsverknüpfung bereitgestellt werden, während indirekte Verknüpfungen durch eine Infrastruktur-zu-Fahrzeug- (infrastructure-to-vehicle - „I2V“-) Kommunikationsverknüpfung bereitgestellt werden können. Im Allgemeinen stellt V2V-Kommunikation Informationen über unmittelbar vorausfahrende Fahrzeuge (z. B. Fahrzeuge, die sich unmittelbar vor dem und auf derselben Spur wie das Fahrzeug 1300 befinden) bereit, während I2V-Kommunikation Informationen über weiter entfernt vorausfahrenden Verkehr bereitstellt. In mindestens einer Ausführungsform kann ein CACC-System entweder eines oder beides von I2V- und V2V-Informationsquellen beinhalten. In mindestens einer Ausführungsform kann ein CACC-System angesichts der Informationen über Fahrzeuge vor dem Fahrzeug 1300 zuverlässiger sein und es hat das Potenzial, die Gleichmäßigkeit des Verkehrsflusses zu verbessern und Staus auf der Straße zu reduzieren.
  • In mindestens einer Ausführungsform ist ein FCW-System so ausgestaltet, dass es einen Fahrer vor einer Gefahr warnt, sodass ein derartiger Fahrer eine korrigierende Maßnahme ergreifen kann. In mindestens einer Ausführungsform verwendet ein FCW-System eine nach vorn gerichtete Kamera und/oder RADAR-Sensor(en) 1360, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das heißt elektrisch gekoppelt, um eine Rückmeldung des Fahrers bereitzustellen, wie etwa eine Anzeige, einen Lautsprecher und/oder eine vibrierende Komponente. In mindestens einer Ausführungsform kann ein FCW-System eine Warnung bereitstellen, wie etwa in Form eines Tons, einer visuellen Warnung, einer Schwingung und/oder eines schnellen Bremsimpulses.
  • In mindestens einer Ausführungsform detektiert ein AEB-System eine drohende Vorwärtskollision mit einem anderen Fahrzeug oder einem anderen Objekt und es kann automatisch die Bremsen betätigen, falls ein Fahrer nicht innerhalb eines vorgegebenen Zeit- oder Abstandsparameters eine korrigierende Maßnahme ergreift. In mindestens einer Ausführungsform kann das AEB-System nach vom gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1360 verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. Wenn ein AEB-System eine Gefahr detektiert, warnt es in mindestens einer Ausführungsform typischerweise zuerst einen Fahrer, um eine korrigierende Maßnahme zu ergreifen, um eine Kollision zu vermeiden, und falls dieser Fahrer keine korrigierende Maßnahme ergreift, kann dieses AEB-System automatisch die Bremsen in dem Bestreben betätigen, einen Aufprall einer vorhergesagten Kollision zu verhindern oder mindestens abzuschwächen. In mindestens einer Ausführungsform kann das AEB-System Techniken wie etwa dynamische Bremsunterstützung und/oder Bremsung aufgrund eines bevorstehenden Zusammenstoßes beinhalten.
  • In mindestens einer Ausführungsform stellt ein LDW-System visuelle, akustische und/oder taktile Warnungen bereit, wie etwa Lenkrad- oder Sitzschwingungen, um den Fahrer zu warnen, wenn das Fahrzeug 1300 die Fahrspurmarkierungen überquert. In mindestens einer Ausführungsform wird ein LDW-System nicht aktiviert, wenn ein Fahrer ein absichtliches Verlassen der Fahrspur angibt, wie etwa durch Betätigen des Blinkers. In mindestens einer Ausführungsform kann ein LDW-System nach vorn und zur Seite gerichtete Kameras verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das heißt elektrisch gekoppelt, um eine Rückmeldung des Fahrers bereitzustellen, wie etwa eine Anzeige, einen Lautsprecher und/oder eine vibrierende Komponente. In mindestens einer Ausführungsform ist ein LKA-System eine Variation eines LDW-Systems. In mindestens einer Ausführungsform stellt ein LKA-System eine Lenkeingabe oder eine Bremsung bereit, um das Fahrzeug 1300 zu korrigieren, falls das Fahrzeug 1300 beginnt, seine Fahrspur zu verlassen.
  • In mindestens einer Ausführungsform detektiert und warnt ein BSW-System einen Fahrer vor Fahrzeugen in einem toten Winkel eines Automobils. In mindestens einer Ausführungsform kann das BSW-System einen visuellen, akustischen und/oder taktilen Alarm bereitstellen, um anzugeben, dass das Einfädeln in oder Wechseln von Fahrspuren unsicher ist. In mindestens einer Ausführungsform kann ein BSW-System eine zusätzliche Warnung bereitstellen, wenn ein Fahrer einen Blinker verwendet. In mindestens einer Ausführungsform kann ein BSW-System nach hinten gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1360 verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das heißt elektrisch an eine Rückmeldung des Fahrers gekoppelt, wie etwa eine Anzeige, einen Lautsprecher und/oder eine vibrierende Komponente.
  • In mindestens einer Ausführungsform kann ein RCTW-System eine visuelle, akustische und/oder taktile Benachrichtigung bereitstellen, wenn ein Objekt außerhalb der Reichweite einer Heckkamera detektiert wird, wenn das Fahrzeug 1300 rückwärtsfährt. In mindestens einer Ausführungsform beinhaltet ein RCTW-System ein AEB-System, um sicherzustellen, dass Fahrzeugbremsen betätigt werden, um einen Zusammenstoß zu vermeiden. In mindestens einer Ausführungsform kann ein RCTW-System einen oder mehrere nach hinten gerichtete RADAR-Sensor(en) 1360 verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, das heißt elektrisch gekoppelt, um eine Rückmeldung des Fahrers bereitzustellen, wie etwa eine Anzeige, einen Lautsprecher und/oder eine vibrierende Komponente.
  • In mindestens einer Ausführungsform können herkömmliche ADAS-Systeme anfällig für falsch positive Ergebnisse sein, die für den Fahrer ärgerlich und ablenkend sein können, aber typischerweise nicht katastrophal sind, da herkömmliche ADAS-Systeme einen Fahrer warnen und es diesem Fahrer ermöglichen, zu entscheiden, ob wirklich eine Sicherheitsbedingung vorliegt, und entsprechend zu handeln. In mindestens einer Ausführungsform entscheidet das Fahrzeug 1300 im Falle von widersprüchlichen Ergebnissen selbst, ob das Ergebnis eines primären Computers oder eines sekundären Computers (z. B. einer ersten Steuerung oder einer zweiten Steuerung der Steuerungen 1336) zu beachten ist. In mindestens einer Ausführungsform kann das ADAS-System 1338 zum Beispiel ein Reserve- und/oder sekundärer Computer sein, der einem Rationalitätsmodul eines Reserve-Computers Wahrnehmungsinformationen bereitstellt. In mindestens einer Ausführungsform kann ein Rationalitätsmonitor eines Reserve-Computers redundante diverse Software auf Hardware-Komponenten ausführen, um Fehler in der Wahrnehmung und bei dynamischen Fahr-Tasks zu detektieren. In mindestens einer Ausführungsform können die Ausgaben aus dem ADAS-Systems 1338 einer Überwachungs-MCU bereitgestellt werden. Falls Ausgaben aus einem primären Computer und Ausgaben aus einem sekundären Computer einander widersprechen, bestimmt eine Überwachungs-MCU in mindestens einer Ausführungsform, wie der Widerspruch beizulegen ist, um einen sicheren Betrieb sicherzustellen.
  • In mindestens einer Ausführungsform kann ein primärer Computer so konfiguriert sein, dass er einer Überwachungs-MCU eine Konfidenzbewertung bereitstellt, die eine Konfidenz dieses primären Computers für ein gewähltes Ergebnis angibt. Falls diese Konfidenzbewertung einen Schwellenwert überschreitet, kann diese Überwachungs-MCU in mindestens einer Ausführungsform der Führung dieses primären Computers folgen, unabhängig davon, ob dieser sekundäre Computer ein widersprüchliches oder inkonsistentes Ergebnis bereitstellt. In mindestens einer Ausführungsform, in der eine Konfidenzbewertung einen Schwellenwert nicht erreicht und der primäre und der sekundäre Computer unterschiedliche Ergebnisse angeben (z. B. einen Widerspruch), kann eine Überwachungs-MCU zwischen den Computern vermitteln, um ein zweckmäßiges Resultat zu bestimmen.
  • In mindestens einer Ausführungsform kann eine Überwachungs-MCU so konfiguriert sein, dass sie neuronale(s) Netz(e) ausführt, die dafür trainiert und konfiguriert sind, mindestens zum Teil auf Grundlage von Ausgaben aus einem primären Computer und Ausgaben aus einem sekundären Computer die Bedingungen zu bestimmen, unter denen dieser sekundäre Computer Fehlalarme bereitstellt. In mindestens einer Ausführungsform können neuronale Netz(e) in einer Überwachungs-MCU lernen, wann der Ausgabe eines sekundären Computers vertraut werden kann und wann nicht. Zum Beispiel können in mindestens einer Ausführungsform, wenn dieser sekundäre Computer ein RADAR-basiertes FCW-System ist, neuronale Netz(e) in einer Überwachungs-MCU lernen, wann ein FCW-System metallische Objekte identifiziert, die tatsächlich keine Gefahren sind, wie etwa ein Abflussgitter oder ein Gullydeckel, das/der einen Alarm auslöst. Wenn ein sekundärer Computer ein kamerabasiertes LDW-System ist, kann in mindestens einer Ausführungsform ein neuronales Netz in einer Überwachungs-MCU lernen, die LDW zu überschreiben, wenn Fahrradfahrer oder Fußgänger vorhanden sind und ein Verlassen der Fahrspur tatsächlich ein sicherstes Manöver ist. In mindestens einer Ausführungsform kann eine Überwachungs-MCU mindestens eines von einem DLA oder einer GPU beinhalten, der/die zum Ausführen von neuronalen Netz(en) mit assoziiertem Speicher geeignet ist. In mindestens einer Ausführungsform kann eine Überwachungs-MCU eine Komponente eines oder mehrerer SoC(s) 1304 umfassen und/oder als solche enthalten sein.
  • In mindestens einer Ausführungsform kann das ADAS-System 1338 einen sekundären Computer beinhalten, der die ADAS-Funktionalität unter Verwendung der traditionellen Regeln des maschinellen Sehens durchführt. In mindestens einer Ausführungsform kann dieser sekundäre Computer klassische Regeln des maschinellen Sehens (wenn-dann) verwenden und das Vorhandensein eines neuronalen Netz(en) in einer Überwachungs-MCU die Zuverlässigkeit, Sicherheit und Rechenleistung verbessern. Zum Beispiel macht in mindestens einer Ausführungsform die diverse Implementation und absichtliche Nicht-Identität ein Gesamtsystem fehlertoleranter, insbesondere gegenüber Fehlern, die durch die Funktionalität von Software (oder Software-Hardware-Schnittstellen) verursacht werden. Falls zum Beispiel in mindestens einer Ausführungsform ein Software-Bug oder -Fehler in der auf einem primären Computer laufenden Software vorliegt und ein nicht identischer Software-Code, der auf einem sekundären Computer läuft, ein konsistentes Gesamtergebnis bereitstellt, dann kann eine Überwachungs-MCU eine größere Konfidenz dafür aufweisen, dass ein Gesamtergebnis korrekt ist und ein Bug in der Software oder Hardware auf diesem primären Computer keinen wesentlichen Fehler verursacht.
  • In mindestens einer Ausführungsform kann eine Ausgabe des ADAS-Systems 1338 in einen Wahrnehmungsblock eines primären Computers und/oder in einen Block für dynamische Fahr-Tasks eines primären Computers eingespeist werden. Falls das ADAS-System 1338 zum Beispiel eine Vorwärtszusammenstoßwarnung aufgrund eines unmittelbar vorausliegenden Objekts angibt, kann ein Wahrnehmungsblock in mindestens einer Ausführungsform diese Information beim Identifizieren von Objekten verwenden. In mindestens einer Ausführungsform kann ein sekundärer Computer ein eigenes neuronales Netz aufweisen, das trainiert wird und somit ein Risiko von falsch positiven Ergebnissen reduziert, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner ein Infotainment-SoC 1330 (z. B. ein fahrzeuginternes Infotainment-System (in-vehicle infotainment system - IVI-System)) beinhalten. Obwohl als es als ein SoC veranschaulicht und beschrieben ist, kann das Infotainment-SoC 1330 in mindestens einer Ausführungsform kein SoC sein und ohne Einschränkung zwei oder mehr diskrete Komponenten beinhalten. In mindestens einer Ausführungsform kann das Infotainment-SoC 1330 ohne Einschränkung eine Kombination aus Hardware und Software beinhalten, die verwendet werden kann, um dem Fahrzeug 1300 Audio (z. B. Musik, einen persönlichen digitalen Assistenten, Navigationsanweisungen, Nachrichten, Radio usw.), Video (z. B. TV, Filme, Streaming usw.), Telefon (z. B. Freisprechen), Netzverbindungsfähigkeit (z. B. LTE, WiFi usw.) und/oder Informationsdienste (z. B. Navigationssysteme, Rückwärtseinparkhilfe, ein Radiodatensystem, fahrzeugbezogene Informationen wie etwa Kraftstofffüllstand, insgesamt zurückgelegte Strecke, Bremskraftstofffüllstand, Ölfüllstand, Tür öffnen/schließen, Luftfilterinformationen usw.) bereitzustellen. Das Infotainment-SoC 1330 könnte zum Beispiel Radios, Plattenspieler, Navigationssysteme, Videowiedergabevorrichtungen, USB- und Bluetooth-Verbindungsfähigkeit, Carputer, In-Car-Entertainment, WiFi, Audiosteuerelemente am Lenkrad, ein Freisprech-Sprachsteuerelement, eine Heads-up-Anzeige (heads-up display - „HUD“), eine HMI-Anzeige 1334, eine Telematikvorrichtung, ein Steuerfeld (z. B. zum Steuern von und/oder Interagieren mit verschiedenen Komponenten, Merkmalen und/oder Systemen) und/oder andere Komponenten beinhalten. In mindestens einer Ausführungsform kann das Infotainment-SoC 1330 ferner verwendet werden, um Benutzer(n) des Fahrzeugs 1300 Informationen (z. B. visuell und/oder akustisch) bereitzustellen, wie etwa Informationen von dem ADAS-System 1338, Informationen zum autonomen Fahren, wie etwa geplante Fahrzeugmanöver, Trajektorien, Umgebungsinformationen (z. B. Kreuzungsinformationen, Fahrzeuginformationen, Straßeninformationen usw.) und/oder andere Informationen.
  • In mindestens einer Ausführungsform kann das Infotainment-SoC 1330 eine beliebige Menge und einen beliebigen Typ von GPU-Funktionalität beinhalten. In mindestens einer Ausführungsform kann das Infotainment-SoC 1330 über den Bus 1302 mit anderen Vorrichtungen, Systemen und/oder Komponenten des Fahrzeugs 1300 kommunizieren. In mindestens einer Ausführungsform kann das Infotainment-SoC 1330 an eine Überwachungs-MCU gekoppelt sein, sodass eine GPU eines Infotainment-Systems einige Selbstfahrfunktionen ausführen kann, falls die primäre(n) Steuerung(en) 1336 (z. B. primäre und/oder Reserve-Computer des Fahrzeugs 1300) ausfallen. In mindestens einer Ausführungsform kann das Infotainment-SoC 1330 das Fahrzeug 1300 in einen Modus des Fahrens zu einem sicheren Halt versetzen, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann das Fahrzeug 1300 ferner ein Kombiinstrument 1332 (z. B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.) beinhalten. In mindestens einer Ausführungsform kann das Kombiinstrument 1332 ohne Einschränkung eine Steuerung und/oder einen Supercomputer (z. B. eine diskrete Steuerung oder einen diskreten Supercomputer) beinhalten. In mindestens einer Ausführungsform kann das Kombiinstrument 1332 ohne Einschränkung eine beliebige Anzahl und Kombination eines Satzes von Messausrüstung beinhalten, wie etwa Geschwindigkeitsmesser, Kraftstoffstand, Öldruck, Drehzahlmesser, Wegstreckenzähler, Blinker, Schaltknüppelpositionsangabe, Sicherheitsgurt-Warnleuchte(n), Feststellbremsen-Warnleuchte(n), Motorfehlfunktionsleuchte(n), Informationen über ergänzende Rückhaltesysteme (z. B. Airbags), Beleuchtungssteuerelemente, Sicherheitssystemsteuerelemente, Navigationsinformationen usw. In einigen Beispielen können Informationen angezeigt und/oder von dem Infotainment-SoC 1330 und dem Kombiinstrument 1332 gemeinsam genutzt werden. In mindestens einer Ausführungsform kann das Kombiinstrument 1332 als Teil des Infotainment-SoC 1330 enthalten sein oder umgekehrt.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem System aus 13C für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 13D ist eine Darstellung eines Systems zur Kommunikation zwischen cloudbasierten Server(n) und dem autonomen Fahrzeug 1300 aus 13A gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System ohne Einschränkung den/die Server 1378, die Netz(e) 1390 und eine beliebige Anzahl und einen beliebigen Typ von Fahrzeugen, einschließlich des Fahrzeugs 1300, beinhalten. In mindestens einer Ausführungsform kann der /können die Server 1378 ohne Einschränkung eine Vielzahl von GPUs 1384(A)-1384(H) (hierin zusammen als GPUs 1384 bezeichnet), PCIe-Switches 1382(A)-1382(D) (hierin zusammen als PCIe-Switches 1382 bezeichnet) und/oder CPUs 1380(A)-1380(B) (hierin zusammen als CPUs 1380 bezeichnet) beinhalten. In mindestens einer Ausführungsform können die GPUs 1384, CPUs 1380 und PCIe-Switches 1382 mit Hochgeschwindigkeitszusammenschaltungen zusammengeschaltet sein, wie zum Beispiel und ohne Einschränkung den NVLink-Schnittstellen 1388, die von NVIDIA entwickelt wurden, und/oder PCIe-Verbindungen 1386. In mindestens einer Ausführungsform sind die GPUs 1384 über ein NVLink- und/oder NVSwitch-SoC verbunden und die GPUs 1384 und die PCIe-Switches 1382 über PCIe-Zusammenschaltungen verbunden. Obwohl acht GPUs 1384, zwei CPUs 1380 und vier PCIe-Switches 1382 veranschaulicht sind, soll dies nicht einschränkend sein. In mindestens einer Ausführungsform kann jeder des/der Server(s) 1378 ohne Einschränkung eine beliebige Anzahl von GPUs 1384, CPUs 1380 und/oder PCIe-Switches 1382 in beliebiger Kombination beinhalten. Zum Beispiel könnte(n) in mindestens einer Ausführungsform der/die Server 1378 jeweils acht, sechzehn, zweiunddreißig und/oder mehr GPUs 1384 beinhalten.
  • In mindestens einer Ausführungsform kann der/können die Server 1378 über die Netz(e) 1390 und von Fahrzeugen Bilddaten empfangen, die für Bilder repräsentativ sind, die unerwartete oder veränderte Straßenbedingungen zeigen, wie etwa kürzlich begonnene Straßenarbeiten. In mindestens einer Ausführungsform kann der/können die Server 1378 über die Netz(e) 1390 und an die Fahrzeuge neuronale Netze 1392, aktualisiert oder anderweitig, und/oder Karteninformationen 1394 übertragen, einschließlich ohne Einschränkung Informationen bezüglich Verkehrs- und Straßenbedingungen. In mindestens einer Ausführungsform können Aktualisierungen der Karteninformationen 1394 ohne Einschränkung Aktualisierungen für die HD-Karte 1322 beinhalten, wie etwa Informationen bezüglich Baustellen, Schlaglöchern, Umleitungen, Überschwemmungen und/oder anderer Hindernisse. In mindestens einer Ausführungsform können die neuronalen Netze 1392 und/oder Karteninformationen 1394 aus einem neuen Training und/oder Erfahrungen resultieren, die in Daten dargestellt werden, die von einer beliebigen Anzahl von Fahrzeugen in einer Umgebung empfangen wurden, und/oder mindestens zum Teil auf Training basieren, das in einem Rechenzentrum (z. B. unter Verwendung der Server 1378 und/oder anderen Servern) durchgeführt wurde.
  • In mindestens einer Ausführungsform kann der/können die Server 1378 verwendet werden, um Modelle des maschinellen Lernens (z. B. neuronale Netze) mindestens zum Teil auf Grundlage von Trainingsdaten zu trainieren. In mindestens einer Ausführungsform können die Trainingsdaten durch Fahrzeuge erzeugt werden und/oder in einer Simulation (z. B. unter Verwendung einer Spiele-Engine) erzeugt werden. In mindestens einer Ausführungsform wird eine beliebige Menge von Trainingsdaten mit Tags versehen (z. B., wenn das assoziierte neuronale Netz von überwachtem Lernen profitiert) und/oder einer anderen Vorverarbeitung unterzogen. In mindestens einer Ausführungsform wird eine beliebige Menge von Trainingsdaten nicht mit Tags versehen und/oder vorverarbeitet (z. B., wenn das damit assoziierte neuronale Netz kein überwachtes Lernen erfordert). In mindestens einer Ausführungsform können, sobald die Modelle des maschinellen Lernens trainiert sind, die Modelle des maschinellen Lernens durch Fahrzeuge verwendet werden (z. B. über die Netz(e) 1390 an Fahrzeuge übertragen werden) und/oder die Modelle des maschinellen Lernens können durch den/die Server 1378 verwendet werden, um Fahrzeuge aus der Ferne zu überwachen.
  • In mindestens einer Ausführungsform kann der/können die Server 1378 Daten von Fahrzeugen empfangen und die Daten auf aktuelle neuronale Echtzeit-Netze zum intelligenten Echtzeit-Inferenzieren anwenden. In mindestens einer Ausführungsform kann der/können die Server 1378 Deep-Learning-Supercomputer und/oder dedizierte KI-Computer beinhalten, die durch die GPU(s) 1384 angetrieben werden, wie etwa die von NVIDIA entwickelten DGX- und DGX-Station-Maschinen. In mindestens einer Ausführungsform kann der/können die Server 1378 jedoch eine Deep-Learning-Infrastruktur beinhalten, die CPU-angetriebene Rechenzentren verwendet.
  • In mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur des/der Server(s) 1378 zum schnellen Echtzeit-Inferenzieren in der Lage sein und diese Fähigkeit verwenden, um den Zustand von Prozessoren, Software und/oder assoziierter Hardware in dem Fahrzeug 1300 zu bewerten und zu verifizieren. Zum Beispiel kann in mindestens einer Ausführungsform die Deep-Learning-Infrastruktur periodische Aktualisierungen von dem Fahrzeug 1300 empfangen, wie etwa eine Sequenz von Bildern und/oder Objekten, die das Fahrzeug 1300 in dieser Sequenz von Bildern lokalisiert hat (z. B. über maschinelles Sehen und/oder andere Techniken des maschinellen Lernens zur Objektklassifizierung). In mindestens einer Ausführungsform kann die Deep-Learning-Infrastruktur ihr eigenes neuronales Netz ausführen, um Objekte zu identifizieren und sie mit Objekten zu vergleichen, die durch das Fahrzeug 1300 identifiziert wurden, und falls die Ergebnisse nicht übereinstimmen und die Deep-Learning-Infrastruktur zu dem Schluss kommt, dass die KI in dem Fahrzeug 1300 eine Fehlfunktion aufweist, dann kann der/können die Server 1378 ein Signal an das Fahrzeug 1300 übertragen, das einen ausfallsicheren Computer des Fahrzeugs 1300 anweist, die Steuerung zu übernehmen, die Fahrgäste zu benachrichtigen und ein sicheres Parkmanöver durchzuführen.
  • In mindestens einer Ausführungsform kann der/können die Server 1378 GPU(s) 1384 und einen oder mehrere programmierbare Inferenzbeschleuniger (z. B. TensorRT-3-Vorrichtungen von NVIDIA) beinhalten. In mindestens einer Ausführungsform kann eine Kombination von GPU-angetriebenen Servern und Inferenzbeschleunigung eine Reaktionsfähigkeit in Echtzeit ermöglichen. In mindestens einer Ausführungsform, wie etwa, wenn die Rechenleistung weniger kritisch ist, können durch CPUs, FPGAs und andere Prozessoren angetriebene Server zum Inferenzieren verwendet werden. In mindestens einer Ausführungsform werden die Hardware-Struktur(en) 1015 verwendet, um eine oder mehrere Ausführungsformen durchzuführen. Details bezüglich der Hardware-Struktur 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt.
  • COMPUTERSYSTEME
  • 14 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das ein System mit zusammengeschalteten Vorrichtungen und Komponenten, ein System auf einem Chip (SOC) oder eine Kombination davon sein kann, gebildet mit einem Prozessor, der Ausführungseinheiten zum Ausführen einer Anweisung beinhalten kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann ein Computersystem 1400 ohne Einschränkung eine Komponente, wie etwa einen Prozessor 1402, beinhalten, um Ausführungseinheiten einschließlich Logik zum Durchführen von Algorithmen für Prozessdaten gemäß der vorliegenden Offenbarung zu verwenden, wie etwa in der hierin beschriebenen Ausführungsform. In mindestens einer Ausführungsform kann das Computersystem 1400 Prozessoren beinhalten, wie etwa die PENTIUM®-Prozessorfamilie, die Mikroprozessoren Xeon™, Itanium®, XScale™ und/oder StrongARM™, Intel® Core™ oder Intel® Nervana™, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs, die andere Mikroprozessoren, Engineering-Arbeitsstationen, Set-Top-Boxen und dergleichen aufweisen) verwendet werden können. In mindestens einer Ausführungsform kann das Computersystem 1400 eine Version des Betriebssystems WINDOWS ausführen, das von der Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (zum Beispiel UNIX und Linux), eingebettete Software und/oder grafische Benutzerschnittstellen verwendet werden können.
  • Ausführungsformen können in anderen Vorrichtungen wie etwa tragbaren Vorrichtungen und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen sind Mobiltelefone, Internetprotokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (personal digital assistants - „PDAs“) und tragbare PCs. In mindestens einer Ausführungsform können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor (digital signal processor - „DSP“), ein System auf einem Chip, Netzcomputer („NetPCs“), Set-Top-Boxen, Netz-Hubs, Switches für ein Weitverkehrsnetz (wide area network - „WAN“) oder ein beliebiges anderes System beinhalten, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform durchführen kann.
  • In mindestens einer Ausführungsform kann das Computersystem 1400 ohne Einschränkung den Prozessor 1402 beinhalten, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 1408 beinhalten kann, um Trainieren und/oder Inferenzieren eines Modells des maschinellen Lernens gemäß den hierin beschriebenen Techniken durchzuführen. In mindestens einer Ausführungsform ist das Computersystem 1400 ein Einzelprozessor-Desktop- oder -Serversystem, aber in einer anderen Ausführungsform kann das Computersystem 1400 ein Multiprozessorsystem sein. In mindestens einer Ausführungsform kann der Prozessor 1402 ohne Einschränkung einen Mikroprozessor für einen Complex Instruction Set Computer („CISC“), einen Mikroprozessor für Reduced Instruction Set Computing („RISC“), einen Very-Long-Instruction-Word-(„VLIW“-)Mikroprozessor, einen Prozessor, der eine Kombination von Anweisungssätzen implementiert, oder eine beliebige andere Prozessorvorrichtung, wie etwa einen digitalen Signalprozessor, beinhalten. In mindestens einer Ausführungsform kann der Prozessor 1402 an einen Prozessorbus 1410 gekoppelt sein, der Datensignale zwischen dem Prozessor 1402 und anderen Komponenten in dem Computersystem 1400 übertragen kann.
  • In mindestens einer Ausführungsform kann der Prozessor 1402 ohne Einschränkung einen internen Level-1-(„L1“-)Cache-Speicher („Cache“) 1404 beinhalten. In mindestens einer Ausführungsform kann der Prozessor 1402 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. In mindestens einer Ausführungsform kann sich der Cache-Speicher extern zu dem Prozessor 1402 befinden. Andere Ausführungsformen können in Abhängigkeit von der konkreten Implementation und den Anforderungen auch eine Kombination aus sowohl internen als auch externen Caches beinhalten. In mindestens einer Ausführungsform kann eine Registerbank 1406 unterschiedliche Typen von Daten in verschiedenen Registern speichern, einschließlich ohne Einschränkung Integerregistern, Gleitkommaregistern, Statusregistern und eines Anweisungszeigerregisters.
  • In mindestens einer Ausführungsform befindet sich die Ausführungseinheit 1408, einschließlich ohne Einschränkung der Logik zum Durchführen von Integer- und Gleitkommaoperationen, ebenfalls in dem Prozessor 1402. In mindestens einer Ausführungsform kann der Prozessor 1402 auch Festwertspeicher (read only memory - „ROM“) für Mikrocode („µcode“) beinhalten, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einer Ausführungsform kann die Ausführungseinheit 1408 Logik zum Handhaben eines gepackten Anweisungssatzes 1409 beinhalten. In mindestens einer Ausführungsform können durch die Aufnahme des gepackten Anweisungssatzes 1409 in einen Anweisungssatz eines Universalprozessors zusammen mit der damit assoziierten Schaltung zum Ausführen von Anweisungen Operationen, die durch viele Multimedia-Anwendungen verwendet werden, unter Verwendung von gepackten Daten in dem Prozessor 1402 durchgeführt werden. In einer oder mehreren Ausführungsformen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem eine volle Breite des Datenbusses eines Prozessors zum Durchführen von Operationen an gepackten Daten verwendet wird, wodurch die Notwendigkeit entfallen kann, kleinere Dateneinheiten über den Datenbus dieses Prozessors zu übermitteln, um eine oder mehrere Operationen an einem Datenelement nach dem anderen durchzuführen.
  • In mindestens einer Ausführungsform kann die Ausführungseinheit 1408 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Typen von Logikschaltungen verwendet werden. In mindestens einer Ausführungsform kann das Computersystem 1400 ohne Einschränkung einen Speicher 1420 beinhalten. In mindestens einer Ausführungsform kann der Speicher 1420 eine Vorrichtung mit dynamischem Direktzugriffsspeicher („DRAM“), eine Vorrichtung mit statischem Direktzugriffsspeicher („SRAM“), eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung sein. In mindestens einer Ausführungsform kann der Speicher 1420 Anweisung(en) 1419 und/oder Daten 1421 speichern, die durch Datensignale dargestellt werden, die durch den Prozessor 1402 ausgeführt werden können.
  • In mindestens einer Ausführungsform kann ein Systemlogikchip an den Prozessorbus 1410 und den Speicher 1420 gekoppelt sein. In mindestens einer Ausführungsform kann ein Systemlogikchip ohne Einschränkung einen Speichersteuerungs-Hub (memory controller hub - „MCH“) 1416 beinhalten und der Prozessor 1402 mit dem MCH 1416 über den Prozessorbus 1410 kommunizieren. In mindestens einer Ausführungsform kann der MCH 1416 dem Speicher 1420 einen Speicherpfad 1418 mit hoher Bandbreite für die Anweisungs- und Datenspeicherung sowie für die Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens einer Ausführungsform kann der MCH 1416 Datensignale zwischen dem Prozessor 1402, dem Speicher 1420 und anderen Komponenten in dem Computersystem 1400 leiten und Datensignale zwischen dem Prozessorbus 1410, dem Speicher 1420 und einer System-E/A-Schnittstelle 1422 überbrücken. In mindestens einer Ausführungsform kann ein Systemlogikchip einen Grafikport zum Koppeln an eine Grafiksteuerung bereitstellen. In mindestens einer Ausführungsform kann der MCH 1416 durch einen Speicherpfad 1418 mit hoher Bandbreite an den Speicher 1420 gekoppelt sein und eine Grafik-/Videokarte 1412 durch eine Accelerated-Graphics-Port-(„AGP“- )Zusammenschaltung 1414 an den MCH 1416 gekoppelt sein.
  • In mindestens einer Ausführungsform kann das Computersystem 1400 die System-E/A-Schnittstelle 1422 als proprietären Hub-Schnittstellenbus verwenden, um den MCH 1416 an einen E/A-Steuerungs-Hub (I/O controller hub - „ICH“) 1430 zu koppeln. In mindestens einer Ausführungsform kann der ICH 1430 direkte Verbindungen zu einigen E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellen. In mindestens einer Ausführungsform kann ein lokaler E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zum Verbinden von Peripheriegeräten mit dem Speicher 1420, einem Chipsatz und dem Prozessor 1402 beinhalten. Beispiele können ohne Einschränkung eine Audiosteuerung 1429, einen Firmware-Hub („Flash-BIOS“) 1428, einen drahtlosen Sendeempfänger 1426, einen Datenspeicher 1424, eine ältere E/A-Steuerung 1423, die Benutzereingabe- und Tastaturschnittstellen 1425 enthält, einen seriellen Erweiterungsport 1427, wie etwa einen Universal-Serial-Bus-(„USB“-)Port, und eine Netzsteuerung 1434 beinhalten. In mindestens einer Ausführungsform kann der Datenspeicher 1424 ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • In mindestens einer Ausführungsform veranschaulicht 14 ein System, das zusammengeschaltete Hardware-Vorrichtungen oder „Chips“ beinhaltet, wohingegen 14 in anderen Ausführungsformen ein beispielhaftes SoC veranschaulichen kann. In mindestens einer Ausführungsform können die in 14 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z. B. PCIe) oder einer Kombination davon zusammengeschaltet sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 1400 unter Verwendung von Compute-Express-Link-(CXL-)Zusammenschaltungen zusammengeschaltet.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem System aus 14 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 15 ist ein Blockdiagramm, das eine elektronische Vorrichtung 1500 zum Nutzen eines Prozessors 1510 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann die elektronische Vorrichtung 1500 zum Beispiel und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, eine mobile Vorrichtung, ein Telefon, ein eingebetteter Computer oder eine beliebige andere geeignete elektronische Vorrichtung sein.
  • In mindestens einer Ausführungsform kann die elektronische Vorrichtung 1500 ohne Einschränkung den Prozessor 1510 beinhalten, der kommunikativ an eine beliebige geeignete Anzahl oder einen beliebigen geeigneten Typ von Komponenten, Peripheriegeräten, Modulen oder Vorrichtungen gekoppelt ist. In mindestens einer Ausführungsform ist der Prozessor 1510 unter Verwendung eines Busses oder einer Schnittstelle gekoppelt, wie etwa eines I2C-Busses, eines Systemverwaltungsbusses (System Management Bus - „SMBus“), eines Low-Pin-Count-(LPC- )Busses, einer seriellen Peripherieschnittstelle (Serial Peripheral Interface - „SPI“), eines High-Definition-Audio-(„HDA“-)Busses, eines Serial-Advance-Technology-Attachment-(„SATA“- )Busses, eines Universal Serial Bus („USB“) (Version 1, 2, 3 usw.) oder eines Universal-Asynchronous-Receiver/Transmitter-(„UART“-)Busses. In mindestens einer Ausführungsform veranschaulicht 15 ein System, das zusammengeschaltete Hardware-Vorrichtungen oder „Chips“ beinhaltet, wohingegen 15 in anderen Ausführungsformen ein beispielhaftes SoC veranschaulichen kann. In mindestens einer Ausführungsform können die in 15 veranschaulichten Vorrichtungen mit proprietären Zusammenschaltungen, standardisierten Zusammenschaltungen (z. B. PCIe) oder einer Kombination davon zusammengeschaltet sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten aus 15 unter Verwendung von Compute-Express-Link-(CXL-)Zusammenschaltungen zusammengeschaltet.
  • In mindestens einer Ausführungsform kann 15 eine Anzeige 1524, einen Touchscreen 1525, ein Touchpad 1530, eine Einheit zur Nahfeldkommunikation (Near Field Communications - „NFC“) 1545, einen Sensor-Hub 1540, einen Thermosensor 1546, einen Express-Chipsatz (Express Chipset - „EC“) 1535, ein Trusted Platform Module („TPM“) 1538, BIOS-/Firmware-/Flash-Speicher („BIOS, FW-Flash“) 1522, einen DSP 1560, ein Laufwerk 1520, wie etwa ein Halbleiterlaufwerk (Solid State Disk - „SSD“) oder ein Festplattenlaufwerk (Hard Disk Drive - „HDD“), eine Einheit für ein drahtloses lokales Netz (wireless local area network - „WLAN“) 1550, eine Bluetooth-Einheit 1552, eine Einheit für ein drahtloses Weitverkehrsnetz (Wireless Wide Area Network - „WWAN“) 1556, eine Einheit für ein globales Positionsbestimmungssystem (Global Positioning System - GPS) 1555, eine Kamera („USB-3.0-Kamera“) 1554, wie etwa eine USB-3.0-Kamera, und/oder eine Low-Power-Double-Data-Rate-(„LPDDR“-)Speichereinheit („LPDDR3“) 1515, die zum Beispiel in einem LPDDR3-Standard implementiert ist, beinhalten. Diese Komponenten können jeweils auf eine beliebige geeignete Weise implementiert sein.
  • In mindestens einer Ausführungsform können andere Komponenten durch hierin beschriebene Komponenten kommunikativ an den Prozessor 1510 gekoppelt sein. In mindestens einer Ausführungsform können ein Beschleunigungsmesser 1541, ein Umgebungslichtsensor (ambient light sensor - „ALS“) 1542, ein Kompass 1543 und ein Gyroskop 1544 kommunikativ an den Sensor-Hub 1540 gekoppelt sein. In mindestens einer Ausführungsform können ein Thermosensor 1539, ein Lüfter 1537, eine Tastatur 1536 und ein Touchpad 1530 kommunikativ an den EC 1535 gekoppelt sein. In mindestens einer Ausführungsform können Lautsprecher 1563, Kopfhörer 1564 und ein Mikrofon („Mikro“) 1565 kommunikativ an eine Audioeinheit („Audiocodec und Klasse-D-Verst.“) 1562 gekoppelt sein, die wiederum kommunikativ an den DSP 1560 gekoppelt sein kann. In mindestens einer Ausführungsform kann die Audioeinheit 1562 zum Beispiel und ohne Einschränkung einen Audiocodierer/-decodierer („Codec“) und einen Klasse-D-Verstärker beinhalten. In mindestens einer Ausführungsform kann eine SIM-Karte („SIM“) 1557 kommunikativ an die WWAN-Einheit 1556 gekoppelt sein. In mindestens einer Ausführungsform können Komponenten wie etwa die WLAN-Einheit 1550 und die Bluetooth-Einheit 1552 sowie die WWAN-Einheit 1556 in einem Next Generation Form Factor („NGFF“) implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem System aus 15 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 16 veranschaulicht ein Computersystem 1600 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist das Computersystem 1600 so konfiguriert, dass es verschiedene Prozesse und Verfahren implementiert, die in dieser Offenbarung beschrieben sind.
  • In mindestens einer Ausführungsform umfasst das Computersystem 1600 ohne Einschränkung mindestens eine zentrale Verarbeitungseinheit („CPU“) 1602, die mit einem Kommunikationsbus 1610 verbunden ist, der unter Verwendung eines beliebigen geeigneten Protokolls implementiert ist, wie etwa PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder beliebiger anderer Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(e). In mindestens einer Ausführungsform beinhaltet das Computersystem 1600 ohne Einschränkung einen Hauptspeicher 1604 und Steuerlogik (z. B. implementiert als Hardware, Software oder eine Kombination davon) und Daten werden in dem Hauptspeicher 1604 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einer Ausführungsform stellt ein Netzschnittstellen-Teilsystem („Netzschnittstelle“) 1622 eine Schnittstelle zu anderen Rechenvorrichtungen und Netzen bereit, um Daten von anderen Systemen mit dem Computersystem 1600 zu empfangen und an diese zu übertragen.
  • In mindestens einer Ausführungsform beinhaltet das Computersystem 1600 ohne Einschränkung in mindestens einer Ausführungsform Eingabevorrichtungen 1608, ein Parallelverarbeitungssystem 1612 und Anzeigevorrichtungen 1606, die unter Verwendung einer herkömmlichen Kathodenstrahlröhre (cathode ray tube - „CRT“), einer Flüssigkristallanzeige (liquid crystal display - „LCD“), einer Anzeige mit Leuchtdioden (light emitting diode - „LED“), einer Plasmaanzeige oder anderer geeigneter Anzeigetechnologien implementiert sein können. In mindestens einer Ausführungsform werden Benutzereingaben von Eingabevorrichtungen 1608 wie etwa Tastatur, Maus, Touchpad, Mikrofon usw. empfangen. In mindestens einer Ausführungsform kann sich jedes hierin beschriebene Modul auf einer einzelnen Halbleiterplattform befinden, um ein Verarbeitungssystem zu bilden.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem System aus 16 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 17 veranschaulicht ein Computersystem 1700 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das Computersystem 1700 ohne Einschränkung einen Computer 1710 und einen USB-Stick 1720. In mindestens einer Ausführungsform kann der Computer 1710 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Prozessor(en) (nicht gezeigt) und einen Speicher (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform beinhaltet der Computer 1710 ohne Einschränkung einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer.
  • In mindestens einer Ausführungsform beinhaltet der USB-Stick 1720 ohne Einschränkung eine Verarbeitungseinheit 1730, eine USB-Schnittstelle 1740 und eine USB-Schnittstellenlogik 1750. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1730 ein(e) beliebige(s/r) Anweisungsausführungssystem, -apparat oder -vorrichtung sein, das/der/die dazu in der Lage ist, Anweisungen auszuführen. In mindestens einer Ausführungsform kann die Verarbeitungseinheit 1730 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Verarbeitungskernen (nicht gezeigt) beinhalten. In mindestens einer Ausführungsform umfasst die Verarbeitungseinheit 1730 eine anwendungsspezifische integrierte Schaltung („ASIC“), die zum Durchführen beliebiger Mengen und Typen von Operationen optimiert ist, die mit maschinellem Lernen assoziiert sind. Zum Beispiel ist in mindestens einer Ausführungsform die Verarbeitungseinheit 1730 eine Tensor-Verarbeitungseinheit („TPC“), die zum Durchführen von Inferenzoperationen des maschinellen Lernens optimiert ist. In mindestens einer Ausführungsform ist die Verarbeitungseinheit 1730 eine Sichtverarbeitungseinheit (vision processing unit - „VPU“), die für zum Durchführen von Inferenzoperationen des maschinellen Sehens und des maschinellen Lernens optimiert ist.
  • In mindestens einer Ausführungsform kann die USB-Schnittstelle 1740 ein beliebiger Typ von USB-Stecker oder USB-Buchse sein. Zum Beispiel ist in mindestens einer Ausführungsform die USB-Schnittstelle 1740 eine USB-3.0-Typ-C-Buchse für Daten und Leistung. In mindestens einer Ausführungsform ist die USB-Schnittstelle 1740 ein USB-3.0-Typ-A-Stecker. In mindestens einer Ausführungsform kann die USB-Schnittstellenlogik 1750 eine beliebige Menge und einen beliebigen Typ von Logik beinhalten, die es der Verarbeitungseinheit 1730 ermöglicht, über den USB-Stecker 1740 eine Schnittstelle mit Vorrichtungen (z. B. dem Computer 1710) zu bilden.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem System aus 17 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 18A veranschaulicht eine beispielhafte Architektur, in der eine Vielzahl von GPUs 1810(1)-1810(N) über Hochgeschwindigkeitsverknüpfungen 1840(1)-1840(N) (z. B. Busse, Punkt-zu-Punkt-Zusammenschaltungen usw.) kommunikativ an eine Vielzahl von Mehrkernprozessoren 1805(1)-1805(M) gekoppelt ist. In mindestens einer Ausführungsform unterstützen die Hochgeschwindigkeitsverknüpfungen 1840(1)-1840(N) einen Kommunikationsdurchsatz von 4 GB/s, 30 GB/s, 80 GB/s oder höher. In mindestens einer Ausführungsform können verschiedene Zusammenschaltungsprotokolle verwendet werden, einschließlich, aber nicht beschränkt auf, PCIe 4.0 oder 5.0 und NVLink 2.0. In verschiedenen Figuren stellen „N“ und „M“ positive ganze Zahlen dar, deren Werte von Figur zu Figur unterschiedlich sein können.
  • Zusätzlich und in mindestens einer Ausführungsform sind zwei oder mehr der GPUs 1810 über Hochgeschwindigkeitsverknüpfungen 1829(1)-1829(2) zusammengeschaltet, die unter Verwendung ähnlicher oder anderer Protokolle/Verknüpfungen implementiert sein können als derjenigen, die für die Hochgeschwindigkeitsverknüpfungen 1840(1)-1840(N) verwendet werden. Auf ähnliche Weise können zwei oder mehr der Mehrkernprozessoren 1805 über eine Hochgeschwindigkeitsverknüpfung 1828 verbunden sein, bei der es sich um Busse eines symmetrischen Multiprozessors (symmetric multi-processor - SMP) handeln kann, die mit 20 GB/s, 30 GB/s, 120 GB/s oder höher betrieben werden. Alternativ kann die gesamte Kommunikation zwischen den verschiedenen in 18A gezeigten Systemkomponenten unter Verwendung von ähnlichen Protokollen/Verknüpfungen erzielt werden (z. B. über eine gemeinsame Zusammenschaltungsstruktur).
  • In mindestens einer Ausführungsform ist jeder Mehrkernprozessor 1805 jeweils über Speicherzusammenschaltungen 1826(1)-1826(M) kommunikativ an einen Prozessorspeicher 1801(1)-1801(M) gekoppelt und jede GPU 1810(1)-1810(N) jeweils über GPU-Speicherzusammenschaltungen 1850(1)-1850(N) kommunikativ an den GPU-Speicher 1820(1)-1820(N) gekoppelt. In mindestens einer Ausführungsform können die Speicherzusammenschaltungen 1826 und 1850 ähnliche oder unterschiedliche Speicherzugriffstechnologien nutzen. Bei den Prozessorspeichern 1801(1)-1801(M) und den GPU-Speichern 1820 kann es sich beispielsweise und ohne Einschränkung um flüchtige Speicher, wie etwa dynamische Direktzugriffsspeicher (DRAMs) (einschließlich gestapelter DRAMs), Grafik-DDR-SDRAM (GDDR) (z. B. GDDR5, GDDR6) oder Speicher mit hoher Bandbreite (High Bandwidth Memory - HBM), und/oder um nichtflüchtige Speicher, wie etwa 3D XPoint oder Nano-Ram, handeln. In mindestens einer Ausführungsform kann ein Abschnitt der Prozessorspeicher 1801 flüchtiger Speicher sein und ein anderer Abschnitt nichtflüchtiger Speicher sein (z. B. unter Verwendung einer Speicherhierarchie mit zwei Levels (two-level memory - 2LM)).
  • Wie hierin beschrieben, können verschiedene Mehrkernprozessoren 1805 und GPUs 1810 zwar physisch an einen konkreten Speicher 1801 bzw. 1820 gekoppelt sein und/oder eine einheitliche Speicherarchitektur implementiert sein, bei der ein virtueller Systemadressraum (auch als „effektiver Adressraum“ bezeichnet) auf verschiedene physische Speicher verteilt ist. Zum Beispiel können die Prozessorspeicher 1801(1)-1801(M) jeweils 64 GB Systemspeicheradressraum umfassen und die GPU-Speicher 1820(1)-1820(N) jeweils 32 GB Systemspeicheradressraum umfassen, was zu einem adressierbaren Speicher von insgesamt 256 GB führt, wenn M=2 und N=4. Andere Werte für N und M sind möglich.
  • 18B veranschaulicht zusätzliche Details für eine Zusammenschaltung zwischen einem Mehrkernprozessor 1807 und einem Grafikbeschleunigungsmodul 1846 gemäß einer beispielhaften Ausführungsform. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1846 einen oder mehrere GPU-Chips beinhalten, die auf einer Leitungskarte integriert sind, die über eine Hochgeschwindigkeitsverknüpfung 1840 (z. B. einen PCIe-Bus, NVLink usw.) an den Prozessor 1807 gekoppelt ist. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1846 alternativ auf einem Gehäuse oder Chip mit dem Prozessor 1807 integriert sein.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 1807 eine Vielzahl von Kernen 1860A-1860D, jeder mit einem Adressenübersetzungspuffer (translation lookaside buffer - „TLB“) 1861A-1861D und einem oder mehreren Caches 1862A-1862D. In mindestens einer Ausführungsform können die Kerne 1860A-1860D verschiedene andere Komponenten zum Ausführen von Anweisungen und Verarbeiten von Daten beinhalten, die nicht veranschaulicht sind. In mindestens einer Ausführungsform können die Caches 1862A-1862D Level-1-(L1-) und Level-2-(L2-)Caches umfassen. Außerdem können ein oder mehrere gemeinsam genutzte Caches 1856 in den Caches 1862A-1862D enthalten sein und von Sätzen von Kernen 1860A-1860D gemeinsam genutzt werden. Eine Ausführungsform des Prozessors 1807 beinhaltet zum Beispiel 24 Kerne, jeder mit einem eigenen L1-Cache, zwölf gemeinsam genutzten L2-Caches und zwölf gemeinsam genutzten L3-Caches. In dieser Ausführungsform werden ein oder mehrere L2- und L3-Caches von zwei benachbarten Kernen gemeinsam genutzt. In mindestens einer Ausführungsform sind der Prozessor 1807 und das Grafikbeschleunigungsmodul 1846 mit dem Systemspeicher 1814 verbunden, der die Prozessorspeicher 1801(1)-1801(M) aus 18A beinhalten kann.
  • In mindestens einer Ausführungsform wird die Kohärenz für Daten und Anweisungen, die in verschiedenen Caches 1862A-1862D, 1856 und Systemspeicher 1814 gespeichert sind, über Zwischenkernkommunikation über einen Kohärenzbus 1864 aufrechterhalten. Zum Beispiel kann in mindestens einer Ausführungsform jeder Cache eine Cache-Kohärenzlogik/-schaltung aufweisen, die damit assoziiert ist, um als Reaktion auf detektierte Lese- oder Schreibvorgänge in konkreten Cache-Zeilen über den Kohärenzbus 1864 zu kommunizieren. In mindestens einer Ausführungsform wird ein Cache-Snooping-Protokoll über den Kohärenzbus 1864 implementiert, um Cache-Zugriffe per Snooping zu kontrollieren.
  • In mindestens einer Ausführungsform koppelt eine Proxy-Schaltung 1825 das Grafikbeschleunigungsmodul 1846 kommunikativ an den Kohärenzbus 1864, was es dem Grafikbeschleunigungsmodul 1846 ermöglicht, an einem Cache-Kohärenzprotokoll als Peer der Kerne 1860A-1860D teilzunehmen. Insbesondere stellt in mindestens einer Ausführungsform eine Schnittstelle 1835 Verbindungsfähigkeit mit der Proxy-Schaltung 1825 über eine Hochgeschwindigkeitsverknüpfung 1840 bereit und eine Schnittstelle 1837 verbindet das Grafikbeschleunigungsmodul 1846 mit der Hochgeschwindigkeitsverknüpfung 1840.
  • In mindestens einer Ausführungsform stellt eine Beschleuniger-Integrationsschaltung 1836 Cache-Verwaltungs-, Speicherzugriffs-, Kontextverwaltungs- und Unterbrechungsverwaltungsdienste im Auftrag einer Vielzahl von Grafikverarbeitungs-Engines 1831(1)-1831(N) des Grafikbeschleunigungsmoduls 1846 bereit. In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1831(1)-1831(N) jeweils eine separate Grafikverarbeitungseinheit (GPU) umfassen. In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1831(1)-1831(N) alternativ unterschiedliche Typen von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen, wie etwa Grafikausführungseinheiten, Medienverarbeitungs-Engines (z. B. Videocodierer/-decodierer), Abtaster und Blit-Engines. In mindestens einer Ausführungsform kann das Grafikbeschleunigungsmodul 1846 eine GPU mit einer Vielzahl von Grafikverarbeitungs-Engines 1831(1)-1831(N) sein oder die Grafikverarbeitungs-Engines 1831(1)-1831(N) können einzelne GPUs sein, die auf einem gemeinsamen Gehäuse, einer Leitungskarte oder einem Chip integriert sind.
  • In mindestens einer Ausführungsform beinhaltet die Beschleuniger-Integrationsschaltung 1836 eine Speicherverwaltungseinheit (MMU) 1839 zum Durchführen verschiedener Speicherverwaltungsfunktionen, wie etwa Übersetzungen von virtuellem in physischen Speicher (auch als Übersetzungen von effektivem in realen Speicher bezeichnet) und Speicherzugriffsprotokolle zum Zugreifen auf Systemspeicher 1814. Die MMU 1839 kann in mindestens einer Ausführungsform auch einen Adressenübersetzungspuffer (TLB) (nicht gezeigt) für das Caching von Übersetzungen von virtuellen/effektiven in physische/reale Adressen beinhalten. In mindestens einer Ausführungsform kann ein Cache 1838 Befehle und Daten für einen effizienten Zugriff durch die Grafikverarbeitungs-Engines 1831(1)-1831(N) speichern. In mindestens einer Ausführungsform werden die in dem Cache 1838 und in den Grafikspeichern 1833(1)-1833(M) gespeicherten Daten mit den Kern-Caches 1862A-1862D, 1856 und dem Systemspeicher 1814 kohärent gehalten, möglicherweise unter Verwendung einer Abrufeinheit 1844. Wie erwähnt, kann dies über die Proxy-Schaltung 1825 im Auftrag des Caches 1838 und der Speicher 1833(1)-1833(M) erzielt werden (z. B. Senden von Aktualisierungen an den Cache 1838 in Bezug auf Modifikationen/Zugriffe auf Cache-Zeilen in den Prozessor-Caches 1862A-1862D, 1856 und Empfangen von Aktualisierungen von dem Cache 1838).
  • In mindestens einer Ausführungsform speichert ein Satz von Registern 1845 Kontextdaten für Threads, die durch die Grafikverarbeitungs-Engines 1831(1)-1831(N) ausgeführt werden, und eine Kontextverwaltungsschaltung 1848 verwaltet Thread-Kontexte. Zum Beispiel kann die Kontextverwaltungsschaltung 1848 Sicherungs- und Wiederherstellungsoperationen durchführen, um Kontexte verschiedener Threads während Kontextumschaltungen zu sichern und wiederherzustellen (z. B., wenn ein erster Thread gesichert und ein zweiter Thread gespeichert wird, damit ein zweiter Thread durch eine Grafikverarbeitungs-Engine ausgeführt werden kann). Zum Beispiel kann die Kontextverwaltungsschaltung 1848 bei einer Kontextumschaltung derzeitige Registerwerte in einer bezeichneten Region in dem Speicher speichern (z. B. identifiziert durch einen Kontextzeiger). Sie kann dann bei der Rückkehr zu einem Kontext die Registerwerte wiederherstellen. In mindestens einer Ausführungsform empfängt und verarbeitet eine Unterbrechungsverwaltungsschaltung 1847 von Systemvorrichtungen empfangene Unterbrechungen.
  • In mindestens einer Ausführungsform werden virtuelle/effektive Adressen von einer Grafikverarbeitungs-Engine 1831 durch die MMU 1839 in reale/physische Adressen in dem Systemspeicher 1814 übersetzt. In mindestens einer Ausführungsform unterstützt die Beschleuniger-Integrationsschaltung 1836 mehrere (z. B. 4, 8, 16) Grafikbeschleunigermodule 1846 und/oder andere Beschleunigervorrichtungen. Das Grafikbeschleunigermodul 1846 kann in mindestens einer Ausführungsform für eine einzelne Anwendung dediziert sein, die auf dem Prozessor 1807 ausgeführt wird, oder von mehreren Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform ist eine virtualisierte Grafikausführungsumgebung dargestellt, in der die Ressourcen der Grafikverarbeitungs-Engines 1831(1)-1831(N) mit mehreren Anwendungen oder virtuellen Maschinen (VMs) gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Ressourcen in „Slices“ unterteilt werden, die unterschiedlichen VMs und/oder Anwendungen auf Grundlage von Verarbeitungsanforderungen und Prioritäten, die mit VMs und/oder Anwendungen assoziiert sind, zugewiesen werden.
  • In mindestens einer Ausführungsform fungiert die Beschleuniger-Integrationsschaltung 1836 als Brücke zu einem System für das Grafikbeschleunigungsmodul 1846 und sie stellt Adressübersetzungs- und Systemspeicher-Cache-Dienste bereit. Darüber hinaus kann die Beschleuniger-Integrationsschaltung 1836 in mindestens einer Ausführungsform Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungs-Engines 1831(1)-1831(N), Unterbrechungen und Speicherverwaltung zu verwalten.
  • Da in mindestens einer Ausführungsform die Hardware-Ressourcen der Grafikverarbeitungs-Engines 1831(1)-1831(N) explizit auf einen realen Adressraum abgebildet sind, den der Host-Prozessor 1807 sieht, kann ein beliebiger Host-Prozessor diese Ressourcen direkt unter Verwendung eines effektiven Adresswerts adressieren. In mindestens einer Ausführungsform ist eine Funktion der Beschleuniger-Integrationsschaltung 1836 die physische Trennung der Grafikverarbeitungs-Engines 1831(1)-1831(N), sodass sie einem System als unabhängige Einheiten erscheinen.
  • In mindestens einer Ausführungsform sind ein oder mehrere Grafikspeicher 1833(1)-1833(M) jeweils an jede der Grafikverarbeitungs-Engines 1831(1)-1831 (N) gekoppelt und es gilt N=M. In mindestens einer Ausführungsform speichern die Grafikspeicher 1833(1)-1833(M) Anweisungen und Daten, die durch jede der Grafikverarbeitungs-Engines 1831(1)-1831(N) verarbeitet werden. In mindestens einer Ausführungsform kann es sich bei den Grafikspeichern 1833(1)-1833(M) um flüchtige Speicher, wie etwa DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z. B. GDDR5, GDDR6) oder HBM, und/oder um nichtflüchtige Speicher, wie etwa 3D XPoint oder Nano-Ram, handeln.
  • In mindestens einer Ausführungsform können zum Reduzieren des Datenverkehrs über die Hochgeschwindigkeitsverknüpfung 1840 Verzerrungstechniken verwendet werden, um sicherzustellen, dass es sich bei den in den Grafikspeichern 1833(1)-1833(M) gespeicherten Daten um Daten handelt, die am häufigsten durch die Grafikverarbeitungs-Engines 1831(1)-1831(N) verwendet werden und vorzugsweise nicht durch die Kerne 1860A-1860D verwendet werden (zumindest nicht häufig). Auf ähnliche Weise versucht in mindestens einer Ausführungsform ein Verzerrungsmechanismus, Daten, die von den Kernen (und vorzugsweise nicht von den Grafikverarbeitungs-Engines 1831(1)-1831(N)) benötigt werden, innerhalb der Caches 1862A-1862D, 1856 und des Systemspeichers 1814 zu behalten.
  • 18C veranschaulicht eine andere beispielhafte Ausführungsform, bei der die Beschleuniger-Integrationsschaltung 1836 in den Prozessor 1807 integriert ist. In dieser Ausführungsform kommunizieren die Grafikverarbeitungs-Engines 1831(1)-1831(N) direkt über die Hochgeschwindigkeitsverknüpfung 1840 mit der Beschleuniger-Integrationsschaltung 1836 über die Schnittstelle 1837 und die Schnittstelle 1835 (die wiederum eine beliebige Form von Bus- oder Schnittstellenprotokoll sein können). In mindestens einer Ausführungsform kann die Beschleuniger-Integrationsschaltung 1836 ähnliche Operationen durchführen wie diejenigen, die in Bezug auf 18B beschrieben sind, aber möglicherweise mit einem höheren Durchsatz, da sie sich in unmittelbarer Nähe zu dem Kohärenzbus 1864 und den Caches 1862A-1862D, 1856 befindet. In mindestens eine Ausführungsform unterstützt eine Beschleuniger-Integrationsschaltung unterschiedliche Programmiermodelle, einschließlich eines Programmiermodells mit dediziertem Prozess (ohne Virtualisierung des Grafikbeschleunigungsmoduls) und gemeinsam genutzter Programmiermodelle (mit Virtualisierung), die Programmiermodelle beinhalten können, die durch die Beschleuniger-Integrationsschaltung 1836 gesteuert werden, und Programmiermodelle, die durch das Grafikbeschleunigungsmodul 1846 gesteuert werden.
  • In mindestens einer Ausführungsform sind die Grafikverarbeitungs-Engines 1831(1)-1831(N) für eine einzelne Anwendung oder einen einzelnen Prozess unter einem einzelnen Betriebssystem dediziert. In mindestens einer Ausführungsform kann eine einzelne Anwendung andere Anwendungsanforderungen zu der Grafikverarbeitungs-Engines 1831(1)-1831(N) lenken und so eine Virtualisierung innerhalb einer VM/Partition bereitstellen.
  • In mindestens einer Ausführungsform können die Grafikverarbeitungs-Engines 1831(1)-1831(N) von mehreren VM-/Anwendungspartitionen gemeinsam genutzt werden. In mindestens einer Ausführungsform können gemeinsam genutzte Modelle einen System-Hypervisor verwenden, um die Grafikverarbeitungs-Engines 1831(1)-1831(N) zu virtualisieren und den Zugriff durch jedes Betriebssystem zu ermöglichen. Bei Systemen mit einzelner Partition ohne Hypervisor befinden sich die Grafikverarbeitungs-Engines 1831(1)-1831(N) in mindestens einer Ausführungsform im Besitz eines Betriebssystems. In mindestens einer Ausführungsform kann ein Betriebssystem die Grafikverarbeitungs-Engines 1831(1)-1831(N) virtualisieren, um Zugriff auf jeden Prozess oder jede Anwendung bereitzustellen.
  • In mindestens einer Ausführungsform wählt das Grafikbeschleunigungsmodul 1846 oder eine einzelne Grafikverarbeitungs-Engine 1831(1)-1831(N) ein Prozesselement unter Verwendung eines Prozessidentifikators aus. In mindestens einer Ausführungsform sind die Prozesselemente in dem Systemspeicher 1814 gespeichert und unter Verwendung der hierin beschriebenen Technik zur Übersetzung von effektiven Adressen in reale Adressen adressierbar. In mindestens einer Ausführungsform kann ein Prozessidentifikator ein implementationsspezifischer Wert sein, der einem Host-Prozess bereitgestellt wird, wenn er seinen Kontext bei der Grafikverarbeitungs-Engine 1831(1)-1831(N) registriert (das heißt, die Systemsoftware aufruft, um ein Prozesselement zu einer mit dem Prozesselement verknüpften Liste hinzuzufügen). In mindestens einer Ausführungsform können die unteren 16 Bit eines Prozessidentifikators einen Versatz eines Prozesselements innerhalb einer mit dem Prozesselement verknüpften Liste sein.
  • 18D veranschaulicht eine beispielhafte Beschleuniger-Integrations-Slice 1890. In mindestens einer Ausführungsform umfasst ein „Slice“ einen vorgegebenen Abschnitt der Verarbeitungsressourcen der Beschleuniger-Integrationsschaltung 1836. In mindestens einer Ausführungsform ist eine Anwendung effektiver Adressraum 1882 innerhalb des Systemspeichers 1814, der Prozesselemente 1883 speichert. In mindestens einer Ausführungsform werden Prozesselemente 1883 als Reaktion auf GPU-Aufrufe 1881 von Anwendungen 1880, die auf dem Prozessor 1807 ausgeführt werden, gespeichert. In mindestens einer Ausführungsform enthält ein Prozesselement 1883 den Prozesszustand für die entsprechende Anwendung 1880. In mindestens einer Ausführungsform kann ein in dem Prozesselement 1883 enthaltener Arbeitsdeskriptor (work descriptor - WD) 1884 eine einzelne durch eine Anwendung angeforderte Aufgabe sein oder einen Zeiger auf eine Warteschlange von Aufgaben enthalten. In mindestens einer Ausführungsform ist der WD 1884 ein Zeiger auf eine Aufgabeanforderungswarteschlange im effektiven Adressraum 1882 einer Anwendung.
  • In mindestens einer Ausführungsform können das Grafikbeschleunigungsmodul 1846 und/oder die einzelnen Grafikverarbeitungs-Engines 1831(1)-1831(N) von allen oder einer Teilmenge der Prozesse in einem System gemeinsam genutzt werden. In mindestens einer Ausführungsform kann eine Infrastruktur zum Einrichten der Prozesszustände und zum Senden eines WD 1884 an ein Grafikbeschleunigungsmodul 1846 zum Starten einer Aufgabe in einer virtualisierten Umgebung enthalten sein.
  • In mindestens einer Ausführungsform ist ein Programmiermodell mit dediziertem Prozess implementationsspezifisch. In mindestens einer Ausführungsform besitzt in diesem Modell ein einzelner Prozess das Grafikbeschleunigungsmodul 1846 oder eine einzelne Grafikverarbeitungs-Engine 1831. Wenn das Grafikbeschleunigungsmodul 1846 durch einen einzelnen Prozess in Besitz genommen ist, initialisiert ein Hypervisor in mindestens einer Ausführungsform die Beschleuniger-Integrationsschaltung 1836 für eine besitzende Partition und ein Betriebssystem initialisiert die Beschleuniger-Integrationsschaltung 1836 für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 1846 zugeordnet ist.
  • In mindestens einer Ausführungsform ruft im Betrieb eine WD-Abrufeinheit 1891 in der Beschleuniger-Integrationsscheibe 1890 den nächsten WD 1884 ab, der eine Angabe der Arbeit beinhaltet, die durch eine oder mehrere Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 1846 zu erledigen ist. In mindestens einer Ausführungsform können Daten von dem WD 1884 in den Registern 1845 gespeichert und durch die MMU 1839, die Unterbrechungsverwaltungsschaltung 1847 und/oder die Kontextverwaltungsschaltung 1848 verwendet werden, wie veranschaulicht. Eine Ausführungsform der MMU 1839 beinhaltet zum Beispiel eine Segment-/Seitenlaufschaltung zum Zugreifen auf Segment-/Seitentabellen 1886 innerhalb des virtuellen Adressraums 1885 eines OS. In mindestens einer Ausführungsform kann die Unterbrechungsverwaltungsschaltung 1847 von dem Grafikbeschleunigungsmodul 1846 empfangene Unterbrechungsereignisse 1892 verarbeiten. Beim Durchführen von Grafikoperationen wird in mindestens einer Ausführungsform eine durch eine Grafikverarbeitungs-Engine 1831(1)-1831(N) erzeugte effektive Adresse 1893 durch die MMU 1839 in eine reale Adresse übersetzt.
  • In mindestens einer Ausführungsform werden Register 1845 für jede Grafikverarbeitungs-Engine 1831(1)-1831(N) und/oder jedes Grafikbeschleunigungsmodul 1846 dupliziert und sie können durch einen Hypervisor oder ein Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in mindestens einer Ausführungsform in einer Beschleuniger-Integrations-Slice 1890 beinhaltet sein. Beispielhafte Register, die durch einen Hypervisor initialisiert werden können, sind in Tabelle 1 gezeigt. Tabelle 1 - Durch Hypervisor initialisierte Register
    Register Nr. Beschreibung
    1 Slice-Steuerregister
    2 Geplanter Prozess-Bereichszeiger für reale Adresse (RA)
    3 Autoritätsmasken-Überschreibungsregister
    4 Unterbrechungsvektor-Tabelleneintragsversatz
    5 Unterbrechungsvektor-Tabelleneintragsbegrenzung
    6 Zustandsregister
    7 Logische Partitions-ID
    8 Hypervisor-Beschleunigernutzungsaufzeichnungszeiger für reale Adresse (RA)
    9 Speicherbeschreibungsregister
  • Beispielhafte Register, die durch ein Betriebssystem initialisiert werden können, sind in Tabelle 2 gezeigt. Tabelle 2 - Durch Betriebssystem initialisierte Register
    Register Nr Beschreibung
    1 Prozess- und Thread-Identifikation
    2 Kontext-Sicherungs-/-Wiederherstellungszeiger für effektive Adresse (EA)
    3 Beschleunigernutzungsaufzeichnungszeiger für virtuelle Adresse (VA)
    4 Speichersegmenttabellenzeiger für virtuelle Adresse (VA)
    5 Autoritätsmaske
    6 Arbeitsdeskriptor
  • In mindestens einer Ausführungsform ist jeder WD 1884 spezifisch für ein konkretes Grafikbeschleunigungsmodul 1846 und/oder die Grafikverarbeitungs-Engines 1831(1)-1831(N). In mindestens einer Ausführungsform enthält er alle Informationen, die für eine Grafikverarbeitungs-Engine 1831(1)-1831(N) erforderlich sind, um Arbeit zu verrichten, oder er kann ein Zeiger auf einen Speicherort sein, an dem eine Anwendung eine Befehlswarteschlange von abzuschließender Arbeit eingerichtet hat.
  • 18E veranschaulicht zusätzliche Details für eine beispielhafte Ausführungsform eines gemeinsam genutzten Modells. Diese Ausführungsform beinhaltet einen realen Hypervisor-Adressraum 1898, in dem eine Prozesselementliste 1899 gespeichert ist. In mindestens einer Ausführungsform kann auf den realen Hypervisor-Adressraum 1898 über einen Hypervisor 1896 zugegriffen werden, der die Grafikbeschleunigungsmodul-Engines für das Betriebssystem 1895 virtualisiert.
  • In mindestens einer Ausführungsform ermöglichen gemeinsam genutzte Programmiermodelle, dass alle oder eine Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System ein Grafikbeschleunigungsmodul 1846 verwenden. In mindestens einer Ausführungsform gibt es zwei Programmiermodelle, bei denen das Grafikbeschleunigungsmodul 1846 von mehreren Prozessen und Partitionen gemeinsam genutzt wird, nämlich über Zeit-Slices gemeinsam genutzt und über gerichtete Grafik gemeinsam genutzt.
  • In mindestens einer Ausführungsform besitzt in diesem Modell der System-Hypervisor 1896 das Grafikbeschleunigungsmodul 1846 und er stellt seine Funktion allen Betriebssystemen 1895 zur Verfügung. Damit ein Grafikbeschleunigungsmodul 1846 die Virtualisierung durch den System-Hypervisor 1896 unterstützt, muss in mindestens einer Ausführungsform das Grafikbeschleunigungsmodul 1846 bestimmte Anforderungen einhalten, wie etwa (1) die Aufgabenanforderung einer Anwendung muss autonom sein (das heißt, der Zustand muss zwischen den Aufgaben nicht beibehalten werden), oder das Grafikbeschleunigungsmodul 1846 muss einen Mechanismus zum Sichern und Wiederherstellen von Kontext bereitstellen, (2) das Grafikbeschleunigungsmodul 1846 garantiert, dass die Aufgabenanforderung einer Anwendung innerhalb einer vorgegebenen Zeitspanne abgeschlossen wird, einschließlich etwaiger Übersetzungsfehler, oder das Grafikbeschleunigungsmodul 1846 stellt eine Fähigkeit bereit, die Verarbeitung einer Aufgabe vorwegzunehmen, und (3) dem Grafikbeschleunigungsmodul 1846 muss Fairness zwischen den Prozessen garantiert werden, wenn es in einem gerichteten gemeinsam genutzten Programmiermodell arbeitet.
  • In mindestens einer Ausführungsform ist es erforderlich, dass die Anwendung 1880 einen Systemaufruf des Betriebssystems 1895 mit einem Grafikbeschleunigungsmodultyp, einem Arbeitsdeskriptor (WD), einem Wert des Autoritätsmaskenregisters (authority mask register - AMR) und einem Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (context save/restore area pointer - CSRP) vornimmt. In mindestens einer Ausführungsform beschreibt der Typ des Grafikbeschleunigungsmoduls eine gezielte Beschleunigungsfunktion für einen Systemaufruf. In mindestens einer Ausführungsform kann der Typ des Grafikbeschleunigungsmoduls ein systemspezifischer Wert sein. In mindestens einer Ausführungsform ist der WD spezifisch für das Grafikbeschleunigungsmodul 1846 formatiert und er kann in Form eines Befehls des Grafikbeschleunigungsmoduls 1846, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer beliebigen anderen Datenstruktur vorliegen, um durch das Grafikbeschleunigungsmodul 1846 zu verrichtende Arbeit zu beschreiben.
  • In mindestens einer Ausführungsform ist ein AMR-Wert ein AMR-Zustand, der für einen derzeitigen Prozess zu verwenden ist. In mindestens einer Ausführungsform ist ein Wert, der an ein Betriebssystem übergeben wird, ähnlich einer Anwendung, die einen AMR festlegt. Falls in mindestens einer Ausführungsform Implementationen der Beschleuniger-Integrationsschaltung 1836 (nicht gezeigt) und des Grafikbeschleunigungsmoduls 1846 kein Benutzer-Autoritätsmasken-Überschreibungsregister (User Authority Mask Override Register - UAMOR) unterstützen, kann ein Betriebssystem einen derzeitigen UAMOR-Wert auf einen AMR-Wert anwenden, bevor ein AMR in einem Hypervisor-Aufruf übergeben wird. In mindestens einer Ausführungsform kann der Hypervisor 1896 optional einen derzeitigen Wert für ein Autoritätsmasken-Überschreibungsregister (Authority Mask Override Register - AMOR) anwenden, bevor ein AMR in dem Prozesselement 1883 platziert wird. In mindestens einer Ausführungsform ist CSRP eines der Register 1845, die eine effektive Adresse eines Bereichs im effektiven Adressraum 1882 einer Anwendung für das Grafikbeschleunigungsmodul 1846 zum Sichern und Wiederherstellen des Kontextzustands enthalten. In mindestens einer Ausführungsform ist dieser Zeiger optional, falls zwischen Aufgaben oder wenn eine Aufgabe vorzeitig beendet wird, kein Zustand gespeichert werden muss. In mindestens einer Ausführungsform kann der Kontext-Sicherungs-/-Wiederherstellungsbereich gepinnter Systemspeicher sein.
  • Beim Empfangen eines Systemaufrufs kann das Betriebssystem 1895 verifizieren, ob die Anwendung 1880 registriert ist und die Autorität zum Verwenden des Grafikbeschleunigungsmoduls 1846 bekommen hat. In mindestens einer Ausführungsform ruft das Betriebssystem 1895 dann den Hypervisor 1896 mit den in Tabelle 3 gezeigten Informationen auf. Tabelle 3 - OS-zu-Hypervisor-Aufrufparameter
    Parameter Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregister(AMR)-Wert (möglicherweise maskiert)
    3 Ein Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (CSRP) für effektive Adresse (EA)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Ein Beschleunigernutzungsaufzeichnungszeiger (AURP) für virtuelle Adresse (VA)
    6 Ein Speichersegmenttabellenzeiger (SSTP) für virtuelle Adresse
    7 Eine logische Unterbrechungsdienstnummer (logical interrupt service number - LISN)
  • In mindestens einer Ausführungsform verifiziert der Hypervisor 1896 beim Empfangen eines Hypervisor-Aufrufs, dass das Betriebssystem 1895 registriert ist und die Autorität zur Verwendung des Grafikbeschleunigungsmoduls 1846 bekommen hat. In mindestens einer Ausführungsform setzt der Hypervisor 1896 dann das Prozesselement 1883 in eine mit dem Prozesselement verknüpfte Liste für einen entsprechenden Typ des Grafikbeschleunigungsmoduls 1846 ein. In mindestens einer Ausführungsform kann ein Prozesselement die in Tabelle 4 gezeigten Informationen beinhalten. Tabelle 4 - Prozesselementinformationen
    Element Nr. Beschreibung
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Autoritätsmaskenregister(AMR)-Wert (möglicherweise maskiert).
    3 Ein Kontext-Sicherungs-/-Wiederherstellungsbereichszeiger (CSRP) für effektive Adresse (EA)
    4 Eine Prozess-ID (PID) und optionale Thread-ID (TID)
    5 Ein Beschleunigernutzungsaufzeichnungszeiger (AURP) für virtuelle Adresse (VA)
    6 Ein Speichersegmenttabellenzeiger (SSTP) für virtuelle Adresse
    7 Eine logische Unterbrechungsdienstnummer (logical interrupt service number - LISN)
    8 Unterbrechungsvektortabelle, abgeleitet aus Hypervisor-Aufrufparametern
    9 Ein Zustandsregister(SR)-Wert
    10 Ein Wert für eine logische Partition-ID (LPID)
    11 Ein Hypervisor-Beschleunigernutzungsaufzeichnungszeiger für reale Adresse (RA)
    12 Speicherdeskriptorregister (Storage Descriptor Register - SDR)
  • In mindestens einer Ausführungsform initialisiert der Hypervisor eine Vielzahl von Registern 1845 der Beschleuniger-Integrations-Slice 890.
  • Wie in 18F veranschaulicht, wird in mindestens einer Ausführungsform ein einheitlicher Speicher verwendet, der über einen gemeinsamen virtuellen Speicheradressraum adressierbar ist, der zum Zugreifen auf die physischen Prozessorspeicher 1801(1)-1801(N) und die GPU-Speicher 1820(1)-1820(N) verwendet wird. In dieser Implementation nutzen Operationen, die auf den GPUs 1810(1)-1810(N) ausgeführt werden, einen gleichen virtuellen/effektiven Speicheradressraum für den Zugriff auf die Prozessorspeicher 1801(1)-1801(M) und umgekehrt, was die Programmierbarkeit vereinfacht. In mindestens einer Ausführungsform wird ein erster Abschnitt eines virtuellen/effektiven Adressraums dem Prozessorspeicher 1801(1) zugewiesen, ein zweiter Abschnitt dem zweiten Prozessorspeicher 1801(N), ein dritter Abschnitt dem GPU-Speicher 1820(1) und so weiter. In mindestens einer Ausführungsform wird dadurch ein gesamter virtueller/effektiver Speicherraum (mitunter als effektiver Adressraum bezeichnet) über jeden der Prozessorspeicher 1801 und GPU-Speicher 1820 verteilt, was ermöglicht, dass ein beliebiger Prozessor oder eine beliebige GPU auf einen beliebigen physischen Speicher mit einer virtuellen Adresse zugreifen kann, die auf diesen Speicher abgebildet ist.
  • In mindestens einer Ausführungsform stellt die Verzerrungs-/Kohärenzverwaltungsschaltung 1894A-1894E innerhalb einer oder mehrerer MMUs 1839A-1839E die Cache-Kohärenz zwischen Caches eines oder mehrerer Host-Prozessoren (z. B. 1805) und GPUs 1810 sicher und implementiert Verzerrungstechniken, die physische Speicher angeben, in denen bestimmte Typen von Daten gespeichert werden sollten. Wenngleich in mindestens einer Ausführungsform mehrere Instanzen der Verzerrungs-/Kohärenzverwaltungsschaltung 1894A-1894E in 18F veranschaulicht sind, kann die Verzerrungs-/Kohärenzschaltung innerhalb einer MMU eines oder mehrerer Host-Prozessoren 1805 und/oder innerhalb der Beschleuniger-Integrationsschaltung 1836 implementiert sein.
  • Eine Ausführungsform ermöglicht es, dass GPU-Speicher 1820 als Teil des Systemspeichers abgebildet werden und unter Verwendung von Technologie für gemeinsam genutzten virtuellen Speicher (shared virtual memory - SVM) darauf zugegriffen wird, ohne jedoch Rechenleistungsnachteile zu erleiden, die mit der vollständigen System-Cache-Kohärenz assoziiert sind. In mindestens einer Ausführungsform stellt eine Fähigkeit, dass auf GPU-Speicher 1820 als Systemspeicher ohne lästigen Cache-Kohärenz-Overhead zugegriffen wird, eine vorteilhafte Betriebsumgebung für GPU-Abladung bereit. In mindestens einer Ausführungsform ermöglicht diese Anordnung es der Software des Host-Prozessors 1805, ohne den Overhead der traditionellen E/A-DMA-Datenkopien Operanden einzurichten und auf Berechnungsergebnisse zuzugreifen. In mindestens einer Ausführungsform sind an derartigen traditionellen Kopien Treiberaufrufe, Unterbrechungen und auf Speicher abgebildete E/A-Zugriffe (memory mapped I/O accesses - MMIO-Zugriffe) beteiligt, die alle in Bezug auf einfache Speicherzugriffe ineffizient sind. In mindestens einer Ausführungsform kann eine Fähigkeit, ohne Cache-Kohärenz-Overheads auf GPU-Speicher 1820 zuzugreifen, für die Ausführungszeit einer abgeladenen Berechnung entscheidend sein. In Fällen mit erheblichem Streaming-Schreibspeicherverkehr kann zum Beispiel der Cache-Kohärenz-Overhead eine effektive Schreibbandbreite, die durch eine GPU 1810 gesehen wird, in mindestens einer Ausführungsform erheblich reduzieren. In mindestens einer Ausführungsform können die Effizienz des Operandensetups, die Effizienz des Ergebniszugriffs und die Effizienz der GPU-Berechnung eine Rolle beim Bestimmen der Effektivität einer GPU-Abladung spielen.
  • In mindestens einer Ausführungsform wird die Auswahl von GPU-Verzerrung und Host-Prozessorverzerrung durch eine Verzerrungs-Tracker-Datenstruktur angetrieben. In mindestens einer Ausführungsform kann zum Beispiel eine Verzerrungstabelle verwendet werden, die eine seitengranulare Struktur sein kann (z. B. mit einer Granularität einer Speicherseite gesteuert), die 1 oder 2 Bit pro GPU-gebundener Speicherseite beinhaltet. In mindestens einer Ausführungsform kann eine Verzerrungstabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU-Speicher 1820 implementiert werden, mit oder ohne Verzerrungs-Cache in einer GPU 1810 (um z. B. häufig/kürzlich verwendete Einträge einer Verzerrungstabelle zwischenzuspeichern). Alternativ kann in mindestens einer Ausführungsform eine gesamte Verzerrungstabelle innerhalb einer GPU aufbewahrt werden.
  • In mindestens einer Ausführungsform wird vor dem tatsächlichen Zugriff auf einen GPU-Speicher auf einen Verzerrungstabelleneintrag zugegriffen, der mit jedem Zugriff auf den GPU-gebundenen Speicher 1820 assoziiert ist, wodurch die folgenden Operationen verursacht werden. In mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU 1810, die ihre Seite in der GPU-Verzerrung finden, direkt an einen entsprechenden GPU-Speicher 1820 weitergeleitet. In mindestens einer Ausführungsform werden lokale Anforderungen von einer GPU, die ihre Seite in der Host-Verzerrung finden, an den Prozessor 1805 weitergeleitet (z. B. über eine Hochgeschwindigkeitsverknüpfung, wie hierin beschrieben). In mindestens einer Ausführungsform schließen Anforderungen von dem Prozessor 1805, die eine angeforderte Seite in der Host-Prozessor-Verzerrung finden, eine Anforderung wie ein normales Lesen des Speichers ab. Alternativ können Anforderungen, die an eine GPU-Verzerrungsseite gerichtet sind, an eine GPU 1810 weitergeleitet werden. In mindestens einer Ausführungsform kann eine GPU dann eine Seite in eine Host-Prozessor-Verzerrung umwandeln, falls sie derzeitig keine Seite verwendet. In mindestens einer Ausführungsform kann ein Verzerrungszustand einer Seite entweder durch einen softwarebasierten Mechanismus, einen hardwareunterstützten softwarebasierten Mechanismus oder, für einen begrenzten Satz von Fällen, einen rein hardwarebasierten Mechanismus geändert werden.
  • Ein Mechanismus zum Ändern des Verzerrungszustands setzt in mindestens einer Ausführungsform einen API-Aufruf (z. B. OpenCL) ein, der wiederum den Vorrichtungstreiber einer GPU aufruft, der wiederum eine Nachricht an eine GPU sendet (oder einen Befehlsdeskriptor in die Warteschlange stellt), die sie anweist, einen Verzerrungszustand zu ändern und bei einigen Übergängen eine Cache-Leerungsoperation in einem Host durchzuführen. In mindestens einer Ausführungsform wird eine Cache-Leerungsoperation für einen Übergang von der Verzerrung des Host-Prozessors 1805 zur Verzerrung der GPU verwendet, jedoch nicht für einen entgegengesetzten Übergang.
  • In mindestens einer Ausführungsform wird die Cache-Kohärenz aufrechterhalten, indem bewirkt wird, dass GPU-verzerrte Seiten durch den Host-Prozessor 1805 vorübergehend nicht zwischengespeichert werden können. Um auf diese Seiten zuzugreifen, kann in mindestens einer Ausführungsform der Prozessor 1805 Zugriff von der GPU 1810 anfordern, die den Zugriff sofort gewähren kann oder auch nicht. Um die Kommunikation zwischen dem Prozessor 1805 und der GPU 1810 zu reduzieren, ist es daher in mindestens einer Ausführungsform vorteilhaft, sicherzustellen, dass GPU-verzerrte Seiten solche sind, die durch eine GPU, aber nicht den Host-Prozessor 1805, benötigt werden und umgekehrt.
  • Die Hardware-Struktur(en) 1015 werden verwendet, um eine oder mehrere Ausführungsformen durchzuführen. Details bezüglich einer Hardware-Struktur(en) 1015 können hierin in Verbindung mit 10A und/oder 10B bereitgestellt werden.
  • 19 veranschaulicht beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden können, gemäß verschiedenen hierin beschriebenen Ausführungsformen. Zusätzlich zu dem, was veranschaulicht ist, können andere Logik und Schaltungen in mindestens einer Ausführungsform enthalten sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Peripherieschnittstellensteuerungen oder Universalprozessorkerne.
  • 19 ist ein Blockdiagramm, das eine beispielhafte integrierte Schaltung 1900 als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 1900 einen oder mehrere Anwendungsprozessor(en) 1905 (z. B. CPUs), mindestens einen Grafikprozessor 1910 und sie kann zusätzlich einen Bildprozessor 1915 und/oder einen Videoprozessor 1920 beinhalten, von denen jeder beliebige ein modularer IP-Kern sein kann. In mindestens einer Ausführungsform beinhaltet die integrierte Schaltung 1900 Peripherie- oder Buslogik, die eine USB-Steuerung 1925, eine UART-Steuerung 1930, eine SPI/SDIO-Steuerung 1935 und eine I22S/I22C-Steuerung 1940 beinhaltet. In mindestens einer Ausführungsform kann die integrierte Schaltung 1900 eine Anzeigevorrichtung 1945 beinhalten, die an eine oder mehrere von einer High-Definition-Multimedia-Interface-(HDMI-)Steuerung 1950 und einer Mobile-Industry-Processor-Interface-(MIPI-)Anzeigeschnittstelle 1955 gekoppelt ist. In mindestens einer Ausführungsform kann die Speicherung durch ein Flash-Speicherteilsystem 1960 bereitgestellt sein, das Flash-Speicher und eine Flash-Speichersteuerung beinhaltet. In mindestens einer Ausführungsform kann eine Speicherschnittstelle über eine Speichersteuerung 1965 für den Zugriff auf SDRAM- oder SRAM-Speichervorrichtungen bereitgestellt sein. In mindestens einer Ausführungsform beinhalten einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheits-Engine 1970.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in der integrierten Schaltung 1900 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 20A-20B veranschaulichen beispielhafte integrierte Schaltungen und damit assoziierte Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden können, gemäß verschiedenen hierin beschriebenen Ausführungsformen. Zusätzlich zu dem, was veranschaulicht ist, können andere Logik und Schaltungen in mindestens einer Ausführungsform enthalten sein, einschließlich zusätzlicher Grafikprozessoren/-kerne, Peripherieschnittstellensteuerungen oder Universalprozessorkerne.
  • 20A-20B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung innerhalb eines SoC gemäß hierin beschriebenen Ausführungsformen veranschaulichen. 20A veranschaulicht einen beispielhaften Grafikprozessor 2010 einer integrierten Schaltung als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform. 20B veranschaulicht einen zusätzlichen beispielhaften Grafikprozessor 2040 einer integrierten Schaltung als System auf einem Chip, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafikprozessor 2010 aus 20A ein Grafikprozessorkern mit niedriger Leistung. In mindestens einer Ausführungsform ist der Grafikprozessor 2040 aus 20B ein Grafikprozessorkern mit höherer Rechenleistung. In mindestens einer Ausführungsform kann jeder der Grafikprozessoren 2010, 2040 eine Variante des Grafikprozessors 1910 aus 19 sein.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2010 einen Vertexprozessor 2005 und einen oder mehrere Fragmentprozessor(en) 2015A-2015N (z.B. 2015A, 2015B, 2015C, 2015D bis 2015N-1 und 2015N). In mindestens einer Ausführungsform kann der Grafikprozessor 2010 unterschiedliche Shader-Programme über separate Logik ausführen, sodass der Vertexprozessor 2005 zum Ausführen von Operationen für Vertex-Shader-Programme optimiert ist, während ein oder mehrere Fragmentprozessor(en) 2015A-2015N Shading-Operationen für Fragmente (z. B. Pixel) für Fragment- oder Pixel-Shader-Programme ausführen. In mindestens einer Ausführungsform führt der Vertexprozessor 2005 eine Vertexverarbeitungsstufe einer 3D-Grafik-Pipeline durch und erzeugt Primitive und Vertexdaten. In mindestens einer Ausführungsform verwenden die Fragmentprozessor(en) 2015A-2015N Primitiv- und Vertexdaten, die durch den Vertexprozessor 2005 erzeugt wurden, um einen Bildspeicher zu produzieren, der auf einer Anzeigevorrichtung angezeigt wird. In mindestens einer Ausführungsform sind die Fragmentprozessor(en) 2015A-2015N zum Ausführen von Fragment-Shader-Programmen optimiert, wie sie in einer OpenGL-API bereitgestellt sind, die zum Durchführen ähnlicher Operationen wie ein Pixel-Shader-Programm verwendet werden können, wie es in einer Direct-3D-API bereitgestellt ist.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2010 zusätzlich eine(n) oder mehrere Speicherverwaltungseinheiten (MMUs) 2020A-2020B, Cache(s) 2025A-2025B und Schaltungszusammenschaltung(en) 2030A-2030B. In mindestens einer Ausführungsform stellen eine oder mehrere MMU(s) 2020A-2020B die Abbildung von virtuellen auf physische Adressen für den Grafikprozessor 2010 bereit, einschließlich für den Vertexprozessor 2005 und/oder die Fragmentprozessor(en) 201 5A-201 5N, der/die auf in Speicher gespeicherte Vertex- oder Bild-/Texturdaten verweisen kann/können, zusätzlich zu den in einem oder mehreren Cache(s) 2025A-2025B gespeicherten Vertex- oder Bild-/Texturdaten. In mindestens einer Ausführungsform können eine oder mehrere MMU(s) 2020A-2020B mit anderen MMUs innerhalb eines Systems synchronisiert werden, einschließlich einer oder mehrerer MMUs, die einem oder mehreren Anwendungsprozessor(en) 1905, Bildprozessoren 1915 und/oder Videoprozessoren 1920 aus 19 zugeordnet sind, sodass jeder Prozessor 1905-1920 an einem gemeinsam genutzten oder einheitlichen virtuellen Speichersystem teilnehmen kann. In mindestens einer Ausführungsform ermöglichen es eine oder mehrere Schaltungszusammenschaltung(en) 2030A-2030B dem Grafikprozessor 2010, entweder über einen internen Bus des SoC oder über eine direkte Verbindung Schnittstellen mit anderen IP-Kernen innerhalb des SoC zu bilden.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2040 einen oder mehrere Shader-Kern(e) 2055A-2055N (z. B. 2055A, 2055B, 2055C, 2055D, 2055E, 2055F bis 2055N-1 und 2055N), wie in 20B gezeigt, was eine einheitliche Shader-Kernarchitektur bereitstellt, bei der ein einzelner Kern oder Typ oder Kern alle Typen von programmierbarem Shader-Code ausführen kann, einschließlich Shader-Programmcode zum Implementieren von Vertex-Shadern, Fragment-Shadern und/oder Rechen-Shadern. In mindestens einer Ausführungsform kann eine Anzahl der Shader-Kerne variieren. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2040 einen Zwischenkern-Task-Verwalter 2045, der als Thread-Zuteiler fungiert, um Ausführungs-Threads einem oder mehreren Shader-Kernen 2055A-2055N zuzuteilen, sowie eine Kachelungseinheit 2058 zum Beschleunigen von Kachelungsoperationen für das kachelbasierte Rendering, bei dem Rendering-Operationen für eine Szene in dem Bildraum unterteilt werden, um zum Beispiel die lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder die Verwendung interner Caches zu optimieren.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in der integrierten Schaltung 20A und/oder 20B für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 21A-21B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik gemäß in dieser Schrift beschriebenen Ausführungsformen. 21A veranschaulicht einen Grafikkern 2100, der in mindestens einer Ausführungsform innerhalb des Grafikprozessors 1910 aus 19 enthalten sein kann und in mindestens einer Ausführungsform ein einheitlicher Shader-Kern 2055A-2055N wie in 20B sein kann. 21B veranschaulicht eine hochparallele Universal-Grafikverarbeitungseinheit (general-purpose graphics processing unit - „GPGPU“) 2130, die in mindestens einer Ausführungsform für den Einsatz auf einem Multi-Chip-Modul geeignet ist.
  • In mindestens einer Ausführungsform beinhaltet der Grafikkern 2100 einen gemeinsam genutzten Anweisungszwischenspeicher 2102, eine Textureinheit 2118 und einen Zwischenspeicher/gemeinsam genutzten Speicher 2120, die Ausführungsressourcen innerhalb des Grafikkerns 2100 gemeinsam sind. In mindestens einer Ausführungsform kann der Grafikkern 2100 mehrere Slices 2101A-2101N oder eine Partition für jeden Kern beinhalten, und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 2100 beinhalten. In mindestens einer Ausführungsform können die Slices 2101A-2101N Unterstützungslogik beinhalten, die einen lokalen Anweisungs-Cache 2104A-2104N, einen Thread-Scheduler 2106A-2106N, einen Thread-Zuteiler 2108A-2108N und einen Satz von Registern 2110A-2110N beinhaltet. In mindestens einer Ausführungsform können die Slices 2101A-2101N einen Satz zusätzlicher Funktionseinheiten (additional function units - AFUs 2112A-2112N), Gleitkommaeinheiten (floating-point units - FPUs 2114A-2114N), arithmetisch-logischer Einheiten für Integer (ALUs 2116A-2116N), Adressberechnungseinheiten (address computational units - ACUs 2113A-2113N), Gleitkommaeinheiten mit doppelter Genauigkeit (double-precision floating-point units - DPFPUs 2115A-2115N) und Matrixverarbeitungseinheiten (matrix processing units - MPUs 2117A-2117N) beinhalten.
  • In mindestens einer Ausführungsform können die FPUs 2114A-2114N Gleitkommaoperationen mit einfacher Genauigkeit (32 Bit) und mit halber Genauigkeit (16 Bit) ausführen, während die DPFPUs 2115A-2115N Gleitkommaoperationen mit doppelter Genauigkeit (64 Bit) ausführen. In mindestens einer Ausführungsform können die ALUs 2116A-2116N ganzzahlige Operationen mit variabler Präzision mit einer Genauigkeit von 8-Bit, 16-Bit und 32-Bit ausführen und können für Operationen mit gemischter Präzision konfiguriert sein. In mindestens einer Ausführungsform können die MPUs 2117A-2117N auch für Matrixoperationen mit gemischter Genauigkeit konfiguriert sein, die Gleitkomma- und 8-Bit-Ganzzahloperationen mit halber Genauigkeit beinhalten. In mindestens einer Ausführungsform können die MPUs 2117-2117N eine Vielfalt von Matrixoperationen durchführen, um Anwendungsrahmen für maschinelles Lernen zu beschleunigen, einschließlich des Ermöglichens der Unterstützung für eine beschleunigte allgemeine Matrix-zu-Matrix-Multiplikation (general matrix to matrix multiplication - GEMM). In mindestens einer Ausführungsform können die AFUs 2112A-2112N zusätzliche logische Operationen ausführen, die nicht von Gleitkomma- oder Ganzzahleinheiten unterstützt werden, die trigonometrische Operationen (z. B. Sinus, Cosinus usw.) beinhalten.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann eine Inferenz- und/oder Trainingslogik 1015 in dem Grafikkern 2100 zum Inferenzieren oder Vorhersagen von Operationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von neuronalen Netztrainingsoperationen, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen von neuronalen Netzen berechnet wurden.
  • 21B veranschaulicht eine Universalverarbeitungseinheit (general-purpose processing unit - GPGPU) 2130, die konfiguriert werden kann, um hochparallele Rechenoperationen zu ermöglichen, die von einem Array von Grafikverarbeitungseinheiten ausgeführt werden sollen, in mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann die GPGPU 2130 direkt mit anderen Instanzen der GPGPU 2130 verbunden sein, um einen Multi-GPU-Cluster zu erzeugen, um die Trainingsgeschwindigkeit für tiefe neuronale Netze zu verbessern. In mindestens einer Ausführungsform beinhaltet die GPGPU 2130 eine Hostschnittstelle 2132, um eine Verbindung mit einem Hostprozessor zu ermöglichen. In mindestens einer Ausführungsform ist die Host-Schnittstelle 2132 eine PCI-Express-Schnittstelle. In mindestens einer Ausführungsform kann die Host-Schnittstelle 2132 eine anbieterspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einer Ausführungsform empfängt die GPGPU 2130 Befehle von einem Hostprozessor und verwendet einen globalen Scheduler 2134, um Ausführungsthreads, die diesen Befehlen zugeordnet sind, an einen Satz von Rechenclustern 2136A-2136H zu verteilen. In mindestens einer Ausführungsform teilen sich die Rechencluster 2136A-2136H einen schnellen Pufferspeicher 2138. In mindestens einer Ausführungsform kann der schnelle Pufferspeicher 2138 als ein Zwischenspeicher höherer Ebene für schnelle Pufferspeicher innerhalb der Rechencluster 2136A-2136H dienen.
  • In mindestens einer Ausführungsform beinhaltet die GPGPU 2130 einen Speicher 2144A-2144B, der über einen Satz von Speichersteuerungen 2142A-2142B mit Rechenclustern 2136A-2136H gekoppelt ist. In mindestens einer Ausführungsform kann der Speicher 2144A-2144B verschiedene Typen von Speichervorrichtungen beinhalten, darunter dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchroner Grafik-Direktzugriffsspeicher (SGRAM), darunter Grafik-Double-Data-Rate-(GDDR-)Speicher.
  • In mindestens einer Ausführungsform beinhalten die Rechencluster 2136A-2136H jeweils einen Satz von Grafikkernen, wie etwa den Grafikkern 2100 aus 21A, die mehrere Arten von Ganzzahl- und Gleitkomma-Logikeinheiten beinhalten kann, die Rechenoperationen mit einer Reihe von Genauigkeiten ausführen können, die für maschinelle Lernberechnungen geeignete beinhalten. Zum Beispiel kann in mindestens einer Ausführungsform mindestens eine Teilmenge von Gleitkommaeinheiten in jedem der Rechencluster 213 6A-213 6H dazu konfiguriert sein, 16-Bit- oder 32-Bit-Gleitkommaoperationen auszuführen, während eine andere Teilmenge von Gleitkommaeinheiten dazu konfiguriert sein können, 64-Bit-Gleitkommaoperationen auszuführen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der GPGPU 2130 so konfiguriert sein, dass sie als Rechencluster arbeiten. In mindestens einer Ausführungsform variiert die Kommunikation, die von den Rechenclustern 2136A-2136H für die Synchronisation und den Datenaustausch verwendet wird, zwischen den Ausführungsformen. In mindestens einer Ausführungsform kommunizieren mehrere Instanzen der GPGPU 2130 über die Hostschnittstelle 2132. In mindestens einer Ausführungsform beinhaltet die GPGPU 2130 einen E/A-Hub 2139, der die GPGPU 2130 mit einer GPU-Link 2140 koppelt, der eine direkte Verbindung zu anderen Instanzen der GPGPU 2130 ermöglicht. In mindestens einer Ausführungsform ist der GPU-Link 2140 an eine dedizierte GPU-zu-GPU-Brücke gekoppelt, welche die Kommunikation und Synchronisation zwischen mehreren Instanzen der GPGPU 2130 ermöglicht. In mindestens einer Ausführungsform ist die GPU-Verknüpfung 2140 mit einer Hochgeschwindigkeitszusammenschaltung gekoppelt, um Daten an andere GPGPUs oder Parallelprozessoren zu übertragen und davon zu empfangen. In mindestens einer Ausführungsform befinden sich mehrere Instanzen der GPGPU 2130 in getrennten Datenverarbeitungssystemen und kommunizieren über eine Netzwerkvorrichtung, auf die über die Hostschnittstelle 2132 zugegriffen werden kann. In mindestens einer Ausführungsform kann die GPU-Verknüpfung 2140 so konfiguriert sein, dass eine Verbindung zu einem Host-Prozessor zusätzlich zu oder alternativ zu der Host-Schnittstelle 2132 ermöglicht wird.
  • In mindestens einer Ausführungsform kann die GPGPU 2130 dazu konfiguriert sein, neuronale Netze zu trainieren. In mindestens einer Ausführungsform kann die GPGPU 2130 innerhalb einer Inferenzplattform verwendet werden. In mindestens einer Ausführungsform, in der die GPGPU 2130 für die Inferenz verwendet wird, kann die GPGPU 2130 weniger Rechencluster 2136A-2136H beinhalten, als wenn die GPGPU 2130 zum Trainieren eines neuronalen Netzes verwendet wird. In mindestens einer Ausführungsform kann sich die dem Speicher 2144A-2144B zugeordnete Speichertechnologie zwischen Inferenz- und Trainingskonfigurationen unterscheiden, wobei Speichertechnologien mit höherer Bandbreite Trainingskonfigurationen gewidmet sind. In mindestens einer Ausführungsform kann eine Inferenzkonfiguration der GPGPU 2130 inferenzspezifische Anweisungen unterstützen. In mindestens einer Ausführungsform kann eine Inferenzkonfiguration zum Beispiel Unterstützung für eine oder mehrere 8-Bit-Integer-Skalarprodukt-Anweisungen bereitstellen, die während der Inferenzoperationen für eingesetzte neuronale Netze verwendet werden können.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zur Inferenz- und/oder Trainingslogik 1015 werden hier in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in der GPGPU 2130 für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtungsparametern basieren, die mit Hilfe von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder den hier beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden.
  • 22 ist ein Blockdiagramm, das ein Rechensystem 2200 gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform weist das Rechensystem 2200 ein Verarbeitungs-Subsystem 2201 mit einem oder mehreren Prozessor(en) 2202 und einem Systemspeicher 2204 auf, die über einen Verbindungspfad kommunizieren, der einen Speicher-Hub 2205 einschließen kann. In mindestens einer Ausführungsform kann der Speicher-Hub 2205 eine getrennte Komponente innerhalb einer Chipsatzkomponente sein oder in einen oder mehrere Prozessor(en) 2202 integriert sein. In mindestens einer Ausführungsform ist der Speicher-Hub 2205 über eine Kommunikationsverbindung 2206 mit einem E/A-Subsystem 2211 gekoppelt. In mindestens einer Ausführungsform schließt das E/A-Subsystem 2211 einen E/A-Hub 2207 ein, über den das Rechensystem 2200 Eingaben von einer oder mehreren Vorrichtung(en) 2208 empfangen kann. In mindestens einer Ausführungsform kann der E/A-Hub 2207 einem Anzeigekörper-Controller, der durch den Controller 2202 in einen oder mehrere Prozessoren eingeschlossen sein kann, ermöglichen, Ausgaben für eine oder mehrere Anzeigevorrichtung(en) 2210A bereitzustellen. In mindestens einer Ausführungsform kann eine oder mehrere Anzeigevorrichtung(en) 2210A, die mit dem E/A-Hub 2207 verbunden ist/sind, eine lokale, interne oder eingebettete Anzeigevorrichtung einschließen.
  • In mindestens einer Ausführungsform schließt das Verarbeitungs-Subsystem 2201 einen oder mehrere Parallelprozessor(en) 2212 ein, der/die über einen Bus oder eine andere Kommunikationsverbindung 2213 mit dem Speicher-Hub 2205 verbunden ist/sind. In mindestens einer Ausführungsform kann die Kommunikationsverbindung 2213 eine beliebige Anzahl von standardbasierten Kommunikationsverbindungstechnologien oder -protokollen verwenden, wie z. B. PCI Express, aber nicht darauf beschränkt, oder eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einer Ausführungsform bilden ein oder mehrere parallele(r) Prozessor(en) 2212 ein rechnerisch fokussiertes paralleles oder vektorielles Verarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern einschließen kann, wie z. B. ein MIC-Prozessor (Many Integrated Core). In mindestens einer Ausführungsform bilden einige oder alle Parallelprozessoren 2212 ein Grafikverarbeitungssubsystem, das Pixel an einen oder mehrere Anzeigekörper 2210A ausgeben kann, die über den E/A-Hub 2207 gekoppelt sind. In mindestens einer Ausführungsform kann (können) der (die) Parallelprozessor(en) 2212 auch einen Display-Controller und eine Display-Schnittstelle (nicht gezeigt) einschließen, um eine direkte Verbindung mit einem oder mehreren Anzeigekörper(n) 2210B zu ermöglichen.
  • In mindestens einer Ausführungsform kann eine Systemspeichereinheit 2214 mit dem E/A-Hub 2207 verbunden werden, um eine Speicherung für das Rechensystem 2200 bereitzustellen. In mindestens einer Ausführungsform kann ein E/A-Switch 2216 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, der Verbindungen zwischen dem E/A-Hub 2207 und anderen Komponenten ermöglicht, wie z. B. einem Netzwerkadapter 2218 und/oder einem drahtlosen Netzwerkadapter 2219, der in die Plattform integriert werden kann, und verschiedenen anderen Vorrichtungen, die über eine oder mehrere Add-in-Vorrichtung(en) 2220 hinzugefügt werden können. In mindestens einer Ausführungsform kann der Netzwerkadapter 2218 ein Ethernet-Adapter oder ein anderer kabelgebundener Netzwerkadapter sein. In mindestens einer Ausführungsform kann der drahtlose Netzadapter 2219 eine oder mehrere der folgenden Vorrichtungen einschließen: Wi-Fi, Bluetooth, Near Field Communication (NFC) oder andere Netzvorrichtungen, die eine oder mehrere drahtlose Funkgeräte einschließen.
  • In mindestens einer Ausführungsform kann das Rechensystem 2200 auch andere, nicht explizit dargestellte Komponenten einschließen, einschließlich USB- oder andere Anschlussverbindungen, optische Speicherlaufwerke, Videoaufnahmevorrichtungen und dergleichen, die ebenfalls mit dem E/A-Hub 2207 verbunden sein können. In mindestens einer Ausführungsform können die Kommunikationspfade, die die verschiedenen Komponenten in 22 miteinander verbinden, unter Verwendung beliebiger geeigneter Protokolle implementiert werden, wie z. B. auf PCI (Peripheral Component Interconnect) basierende Protokolle (z. B. PCI-Express) oder andere Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder Protokolle, wie z. B. NV-Link High-Speed-Interconnect oder Interconnect-Protokolle.
  • In mindestens einer Ausführungsform enthält (enthalten) der (die) Parallelprozessor(en) 2212 eine für die Grafik- und Videoverarbeitung optimierte Schaltung, die zum Beispiel eine Videoausgabeschaltung einschließt und eine Grafikverarbeitungseinheit (GPU) darstellt. In mindestens einer Ausführungsform enthält (enthalten) der (die) Parallelprozessor(en) 2212 Schaltkreise, die für die allgemeine Verarbeitung optimiert sind. In mindestens einer Ausführungsform können die Komponenten des Rechensystems 2200 mit einem oder mehreren anderen Systemelementen auf einem einzigen integrierten Schaltkreis integriert sein. Zum Beispiel können in mindestens einer Ausführungsform der/die Parallelprozessor(en) 2212, der Speicher-Hub 2205, der/die Prozessor(en) 2202 und der E/A-Hub 2207 in eine integrierte Schaltung für ein System auf einem Chip (SoC) integriert werden. In mindestens einer Ausführungsform können die Komponenten des Rechensystems 2200 in ein einziges Gehäuse integriert werden, um eine System-in-Package-Konfiguration (SIP) zu bilden. In mindestens einer Ausführungsform kann mindestens ein Abschnitt der Komponenten des Rechensystems 2200 in ein Multi-Chip-Modul (MCM) integriert werden, das mit anderen Multi-Chip-Modulen zu einem modularen Rechensystem zusammengeschaltet werden kann.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zur Inferenz- und/oder Trainingslogik 1015 werden hier in Verbindung mit den 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 im System FIG. 2200 für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtungsparametern basieren, die mit Hilfe von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder den hier beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden.
  • PROZESSOREN
  • 23A veranschaulicht einen Parallelprozessor 2300 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können verschiedene Komponenten des Parallelprozessors 2300 unter Verwendung einer oder mehrerer integrierter Schaltungen implementiert werden, wie etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate-Arrays (FPGAs). In mindestens einer Ausführungsform ist der veranschaulichte Parallelprozessor 2300 eine Variante eines oder mehrerer Parallelprozessor(en) 2212, die in 22 gemäß einer beispielhaften Ausführungsform gezeigt sind.
  • In mindestens einer Ausführungsform beinhaltet der Parallelprozessor 2300 eine Parallelverarbeitungseinheit 2302. In mindestens einer Ausführungsform beinhaltet die Parallelverarbeitungseinheit 2302 eine E/A-Einheit 2304, die Kommunikation mit anderen Vorrichtungen ermöglicht, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 2302. In mindestens einer Ausführungsform kann die E/A-Einheit 2304 direkt mit anderen Vorrichtungen verbunden sein. In mindestens einer Ausführungsform ist die E/A-Einheit 2304 über die Verwendung einer Hub- oder Switch-Schnittstelle, wie etwa eines Speicher-Hubs 2305, mit anderen Vorrichtungen verbunden. In mindestens einer Ausführungsform bilden Verbindungen zwischen dem Speicher-Hub 2305 und der E/A-Einheit 2304 eine Kommunikationsverknüpfung 2313. In mindestens einer Ausführungsform ist die E/A-Einheit 2304 mit einer Host-Schnittstelle 2306 und einer Speicherkreuzschiene 2316 verbunden, wobei die Host-Schnittstelle 2306 Befehle empfängt, die auf das Durchführen von Verarbeitungsoperationen gerichtet sind, und die Speicherkreuzschiene 2316 Befehle empfängt, die auf das Durchführen von Speicheroperationen gerichtet sind.
  • In mindestens einer Ausführungsform kann, wenn die Host-Schnittstelle 2306 einen Befehlspuffer über die E/A-Einheit 2304 empfängt, die Host-Schnittstelle 2306 Arbeitsoperationen zum Durchführen dieser Befehle an ein Frontend 2308 richten. In mindestens einer Ausführungsform ist das Frontend 2308 mit einem Scheduler 2310 gekoppelt, der so konfiguriert ist, dass er Befehle oder andere Arbeitselemente an ein Verarbeitungsclusterarray 2312 verteilt. In mindestens einer Ausführungsform stellt der Scheduler 2310 sicher, dass das Verarbeitungsclusterarray 2312 ordnungsgemäß konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Tasks an ein Cluster eines Verarbeitungsclusterarrays 2312 verteilt werden. In mindestens einer Ausführungsform ist der Scheduler 2310 über Firmware-Logik implementiert, die auf einem Mikrocontroller ausgeführt wird. In mindestens einer Ausführungsform ist der Mikrocontroller-implementierte Scheduler 2310 so konfigurierbar, dass er komplexe Planungs- und Arbeitsverteilungsoperationen mit grober und feiner Granularität durchführt, was eine schnelle Präemption und Kontextumschaltung von Threads ermöglicht, die auf dem Verarbeitungsarray 2312 ausgeführt werden. In mindestens einer Ausführungsform kann die Host-Software Arbeitslasten für die Planung auf dem Verarbeitungsclusterarray 2312 über einen von mehreren Grafikverarbeitungspfaden nachweisen. In mindestens einer Ausführungsform können die Arbeitslasten dann durch die Logik des Scheduler 2310 innerhalb eines Mikrocontrollers, der den Scheduler 2310 beinhaltet, automatisch auf das Verarbeitungsarraycluster 2312 verteilt werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2312 bis zu „N“ Verarbeitungscluster beinhalten (z. B. Cluster 2314A, Cluster 2314B bis Cluster 2314N), wobei „N“ eine positive ganze Zahl darstellt (die eine andere ganze Zahl „N“ sein kann, als in anderen Figuren verwendet). In mindestens einer Ausführungsform kann jeder Cluster 2314A-2314N des Verarbeitungsclusterarrays 2312 eine große Anzahl von nebenläufigen Threads ausführen. In mindestens einer Ausführungsform kann der Scheduler 2310 den Clustern 2314A-2314N des Verarbeitungsclusterarrays 2312 Arbeit zuweisen, indem er verschiedene Planungs- und/oder Arbeitsverteilungsalgorithmen verwendet, die in Abhängigkeit von der Arbeitslast variieren können, die für jeden Typ von Programm oder Berechnung entsteht. In mindestens einer Ausführungsform kann die Planung dynamisch durch den Scheduler 2310 gehandhabt werden oder teilweise durch Compiler-Logik während der Kompilierung der Programmlogik unterstützt werden, die für die Ausführung durch das Verarbeitungsclusterarray 2312 konfiguriert ist. In mindestens einer Ausführungsform können unterschiedliche Cluster 2314A-2314N des Verarbeitungsclusterarrays 2312 zum Verarbeiten unterschiedlicher Programmtypen oder zum Durchführen unterschiedlicher Berechnungstypen zugewiesen sein.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2312 so konfiguriert sein, dass es verschiedene Typen von Parallelverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform ist das Verarbeitungsclusterarray 2312 so konfiguriert, dass es Universal-Parallelberechnungsoperationen durchführt. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2312 zum Beispiel Logik zum Ausführen von Verarbeitungs-Tasks beinhalten, einschließlich des Filterns von Video- und/oder Audiodaten, des Durchführens von Modellierungsoperationen, einschließlich Physikoperationen, und des Durchführens von Datentransformationen.
  • In mindestens einer Ausführungsform ist das Verarbeitungsclusterarray 2312 so konfiguriert, dass es Parallelgrafikverarbeitungsoperationen durchführt. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2312 zusätzliche Logik beinhalten, um die Ausführung derartiger Grafikverarbeitungsoperationen zu unterstützen, einschließlich, aber nicht beschränkt auf, Texturabtastlogik, um Texturoperationen durchzuführen, sowie Tesselierungslogik und andere Vertexverarbeitungslogik. In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2312 so konfiguriert sein, dass es grafikverarbeitungsbezogene Shader-Programme ausführt, wie etwa, aber nicht beschränkt auf, Vertex-Shader, Tesselierungs-Shader, Geometrie-Shader und Pixel-Shader. In mindestens einer Ausführungsform kann die Parallelverarbeitungseinheit 2302 Daten aus dem Systemspeicher über die E/A-Einheit 2304 zur Verarbeitung übermitteln. In mindestens einer Ausführungsform können während der Verarbeitung die übermittelten Daten in einem chipinternen Speicher (z. B. dem Parallelprozessorspeicher 2322) während der Verarbeitung gespeichert und dann wieder in den Systemspeicher geschrieben werden.
  • Wenn die Parallelverarbeitungseinheit 2302 zum Durchführen der Grafikverarbeitung verwendet wird, kann der Scheduler 2310 in mindestens einer Ausführungsform so konfiguriert sein, dass er eine Verarbeitungsarbeitslast in annähernd gleich große Tasks aufteilt, um eine bessere Verteilung der Grafikverarbeitungsoperationen auf mehrere Cluster 2314A-2314N des Verarbeitungsclusterarrays 2312 zu ermöglichen. In mindestens einer Ausführungsform können Abschnitte des Verarbeitungsclusterarrays 2312 so konfiguriert sein, dass sie unterschiedliche Verarbeitungstypen durchführen. Zum Beispiel kann in mindestens einer Ausführungsform ein erster Abschnitt so konfiguriert sein, dass er Vertex-Shading und Topologieerzeugung durchführt, ein zweiter Abschnitt kann so konfiguriert sein, dass er Tesselierungs- und Geometrie-Shading durchführt, und ein dritter Abschnitt kann so konfiguriert sein, dass er Pixel-Shading oder andere Bildschirmraumoperationen durchführt, um ein gerendertes Bild zur Anzeige zu produzieren. In mindestens einer Ausführungsform können Zwischendaten, die durch einen oder mehrere der Cluster 2314A-2314N produziert werden, in Puffern gespeichert werden, um zu ermöglichen, dass die Zwischendaten zur weiteren Verarbeitung zwischen den Clustern 2314A-2314N übertragen werden.
  • In mindestens einer Ausführungsform kann das Verarbeitungsclusterarray 2312 auszuführende Verarbeitungs-Tasks über den Scheduler 2310 empfangen, der von dem Frontend 2308 Befehle empfängt, die Verarbeitungs-Tasks definieren. In mindestens einer Ausführungsform können die Verarbeitungs-Tasks Indizes der zu verarbeitenden Daten beinhalten, z. B. Oberflächen-(Patch-)Daten, Primitivdaten, Vertexdaten und/oder Pixeldaten, sowie Zustandsparameter und Befehle, die definieren, wie die Daten verarbeitet werden sollen (z. B. welches Programm ausgeführt werden soll). In mindestens einer Ausführungsform kann der Scheduler 2310 so konfiguriert sein, dass er den Tasks entsprechende Indizes abruft, oder er kann Indizes von dem Frontend 2308 empfangen. In mindestens einer Ausführungsform kann das Frontend 2308 so konfiguriert sein, dass es sicherstellt, dass das Verarbeitungsclusterarray 2312 in einen gültigen Zustand konfiguriert wird, bevor eine durch eingehende Befehlspuffer (z. B. Batch-Puffer, Push-Puffer usw.) vorgegebene Arbeitslast initiiert wird.
  • In mindestens einer Ausführungsform kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 2302 mit einem Parallelprozessorspeicher 2322 gekoppelt sein. In mindestens einer Ausführungsform kann auf den Parallelprozessorspeicher 2322 über die Speicherkreuzschiene 2316 zugegriffen werden, die Speicheranforderungen von dem Verarbeitungsclusterarray 2312 sowie von der E/A-Einheit 2304 empfangen kann. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 2316 über eine Speicherschnittstelle 2318 auf den Parallelprozessorspeicher 2322 zugreifen. In mindestens einer Ausführungsform kann die Speicherschnittstelle 2318 mehrere Partitionseinheiten (z. B. Partitionseinheit 2320A, Partitionseinheit 2320B bis Partitionseinheit 2320N) beinhalten, die jeweils an einen Abschnitt (z. B. Speichereinheit) des Parallelprozessorspeichers 2322 gekoppelt werden können. In mindestens einer Ausführungsform ist eine Anzahl der Partitionseinheiten 2320A-2320N so konfiguriert, dass sie gleich einer Anzahl von Speichereinheiten ist, sodass eine erste Partitionseinheit 2320A eine entsprechende erste Speichereinheit 2324A aufweist, eine zweite Partitionseinheit 2320B eine entsprechende Speichereinheit 2324B aufweist und eine N-te Partitionseinheit 2320N eine entsprechende N-te Speichereinheit 2324N aufweist. In mindestens einer Ausführungsform kann eine Anzahl der Partitionseinheiten 2320A-2320N nicht gleich einer Anzahl der Speichereinheiten sein.
  • In mindestens einer Ausführungsform können die Speichereinheiten 2324A-2324N verschiedene Typen von Speichervorrichtungen beinhalten, darunter dynamischer Direktzugriffsspeicher (DRAM) oder Grafik-Direktzugriffsspeicher, wie etwa synchroner Grafik-Direktzugriffsspeicher (SGRAM), darunter Grafik-Double-Data-Rate-(GDDR-)Speicher. In mindestens einer Ausführungsform können die Speichereinheiten 2324A-2324N auch 3D-Stapelspeicher beinhalten, einschließlich, aber nicht beschränkt auf, Speicher mit hoher Bandbreite (HBM). In mindestens einer Ausführungsform können Rendering-Ziele, wie etwa Bildspeicher oder Texturkarten, über die Speichereinheiten 2324A-2324N hinweg gespeichert werden, was es den Partitionseinheiten 2320A-2320N ermöglicht, Abschnitte jedes Rendering-Ziels parallel zu schreiben, um die verfügbare Bandbreite des Parallelprozessorspeichers 2322 effizient zu nutzen. In mindestens einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 2322 zugunsten einer einheitlichen Speicherausgestaltung ausgeschlossen werden, die Systemspeicher in Verbindung mit lokalem Cache-Speicher nutzt.
  • In mindestens einer Ausführungsform kann ein beliebiger der Cluster 2314A-2314N des Verarbeitungsclusterarrays 2312 Daten verarbeiten, die in beliebige der Speichereinheiten 2324A-2324N innerhalb des Parallelprozessorspeichers 2322 geschrieben werden. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 2316 so konfiguriert sein, dass sie eine Ausgabe jedes Clusters 2314A-2314N an eine beliebige Partitionseinheit 2320A-2320N oder an einen anderen Cluster 2314A-2314N übermittelt, der zusätzliche Verarbeitungsoperationen an einer Ausgabe ausführen kann. In mindestens einer Ausführungsform kann jeder Cluster 2314A-2314N durch die Speicherkreuzschiene 2316 mit der Speicherschnittstelle 2318 kommunizieren, um aus verschiedenen externen Speichervorrichtungen zu lesen oder in diese zu schreiben. In mindestens einer Ausführungsform weist die Speicherkreuzschiene 2316 eine Verbindung mit der Speicherschnittstelle 2318 auf, um mit der E/A-Einheit 2304 zu kommunizieren, sowie eine Verbindung mit einer lokalen Instanz des Parallelprozessorspeichers 2322, was es den Verarbeitungseinheiten innerhalb der unterschiedlichen Verarbeitungscluster 2314A-2314N ermöglicht, mit Systemspeicher oder anderem Speicher zu kommunizieren, der nicht lokal zu der Parallelverarbeitungseinheit 2302 ist. In mindestens einer Ausführungsform kann die Speicherkreuzschiene 2316 virtuelle Kanäle verwenden, um Verkehrsströme zwischen Clustern 2314A-2314N und Partitionseinheiten 2320A-2320N zu trennen.
  • In mindestens einer Ausführungsform können mehrere Instanzen der Parallelverarbeitungseinheit 2302 auf einer einzelnen Erweiterungskarte bereitgestellt sein oder mehrere Erweiterungskarten zusammengeschaltet sein. In mindestens einer Ausführungsform können unterschiedliche Instanzen der Parallelverarbeitungseinheit 2302 so konfiguriert sein, dass sie zusammenarbeiten, auch wenn die unterschiedlichen Instanzen unterschiedliche Anzahlen von Verarbeitungskernen, unterschiedliche Mengen von lokalem Parallelprozessorspeicher und/oder andere Konfigurationsunterschiede aufweisen. Zum Beispiel können in mindestens einer Ausführungsform einige Instanzen der Parallelverarbeitungseinheit 2302 Gleitkommaeinheiten mit höherer Genauigkeit in Bezug auf andere Instanzen beinhalten. In mindestens einer Ausführungsform können Systeme, die eine oder mehrere Instanzen der Parallelverarbeitungseinheit 2302 oder des Parallelprozessors 2300 einbeziehen, in einer Vielfalt von Konfigurationen und Formfaktoren implementiert sein, einschließlich, aber nicht beschränkt auf, Desktop-, Laptop- oder tragbarer persönlicher Computer, Server, Arbeitsstationen, Spielekonsolen und/oder eingebetteter Systeme.
  • 23B ist ein Blockdiagramm einer Partitionseinheit 2320 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Partitionseinheit 2320 eine Instanz einer der Partitionseinheiten 2320A-2320N aus 23A. In mindestens einer Ausführungsform beinhaltet die Partitionseinheit 2320 einen L2-Cache 2321, eine Bildspeicherschnittstelle 2325 und eine ROP 2326 (raster operations unit - Rasteroperationeneinheit). In mindestens einer Ausführungsform ist der L2-Cache 2321 ein Lese-/Schreib-Cache, der so konfiguriert ist, dass er Lade- und Sicherungsoperationen durchführt, die von der Speicherkreuzschiene 2316 und der ROP 2326 empfangen werden. In mindestens einer Ausführungsform werden Lesefehler und dringende Rückschreibanforderungen durch den L2-Cache 2321 an die Bildspeicherschnittstelle 2325 zur Verarbeitung ausgegeben. In mindestens einer Ausführungsform können Aktualisierungen auch über die Bildspeicherschnittstelle 2325 zur Verarbeitung an einen Bildspeicher gesendet werden. In mindestens einer Ausführungsform bildet die Bildspeicherschnittstelle 2325 eine Schnittstelle mit einer der Speichereinheiten in dem Parallelprozessorspeicher, wie etwa mit den Speichereinheiten 2324A-2324N aus 23 (z. B. innerhalb des Parallelprozessorspeichers 2322).
  • In mindestens einer Ausführungsform ist die ROP 2326 eine Verarbeitungseinheit, die Rasteroperationen durchführt, wie etwa Schablone, Z-Test, Blending usw. In mindestens einer Ausführungsform gibt die ROP 2326 dann verarbeitete Grafikdaten aus, die in Grafikspeicher gespeichert werden. In mindestens einer Ausführungsform beinhaltet die ROP 2326 Komprimierungslogik, um Tiefen- oder Farbdaten, die in den Speicher geschrieben werden, zu komprimieren und Tiefen- oder Farbdaten, die aus dem Speicher gelesen werden, zu dekomprimieren. In mindestens einer Ausführungsform kann die Komprimierungslogik verlustfreie Komprimierungslogik sein, die einen oder mehrere von mehreren Komprimierungsalgorithmen verwendet. In mindestens einer Ausführungsform kann ein Typ der Komprimierung, die durch die ROP 2326 durchgeführt wird, auf Grundlage von statistischen Eigenschaften der zu komprimierenden Daten variieren. Zum Beispiel wird in mindestens einer Ausführungsform die Delta-Farbkomprimierung an Tiefen- und Farbdaten auf Kachelbasis ausgeführt.
  • In mindestens einer Ausführungsform ist die ROP 2326 innerhalb jedes Verarbeitungsclusters (z. B. Cluster 2314A-2314N aus 23A) statt innerhalb der Partitionseinheit 2320 enthalten. In mindestens einer Ausführungsform werden Lese- und Schreibanforderungen für Pixeldaten anstelle von Pixelfragmentdaten über die Speicherkreuzschiene 2316 übertragen. In mindestens einer Ausführungsform können verarbeitete Grafikdaten auf einer Anzeigevorrichtung angezeigt werden, wie etwa einer der einen oder der mehreren Anzeigevorrichtung(en) 2210 aus 22, zur weiteren Verarbeitung durch die Prozessor(en) 2202 geroutet werden oder zur weiteren Verarbeitung durch eine der Verarbeitungsentitäten innerhalb des Parallelprozessors 2300 aus 23A geroutet werden.
  • 23C ist ein Blockdiagramm eines Verarbeitungsclusters 2314 innerhalb einer Parallelverarbeitungseinheit gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist ein Verarbeitungscluster eine Instanz eines der Verarbeitungscluster 2314A-2314N aus 23A. In mindestens einer Ausführungsform kann der Verarbeitungscluster 2314 so konfiguriert sein, dass er viele Threads parallel ausführt, wobei sich „Thread“ auf eine Instanz eines konkreten Programms bezieht, die an einem konkreten Satz von Eingabedaten ausgeführt wird. In mindestens einer Ausführungsform werden Ausgabetechniken für Single-Instruction-Multiple-Data-(SIMD-)Anweisungen verwendet, um die parallele Ausführung einer großen Anzahl von Threads zu unterstützen, ohne mehrere unabhängige Anweisungseinheiten bereitzustellen. In mindestens einer Ausführungsform werden Single-Instruction-Multiple-Thread-(SIMT-)Techniken verwendet, um die parallele Ausführung einer großen Anzahl von im Allgemeinen synchronisierten Threads zu unterstützen, wobei eine gemeinsame Anweisungseinheit verwendet wird, die so konfiguriert ist, dass sie Anweisungen an einen Satz von Verarbeitungs-Engines innerhalb jedes der Verarbeitungscluster ausgibt.
  • In mindestens einer Ausführungsform kann der Betrieb des Verarbeitungsclusters 2314 über einen Pipelineverwalter 2332 gesteuert werden, der die Verarbeitungs-Tasks auf die SIMT-Parallelprozessoren verteilt. In mindestens einer Ausführungsform empfängt der Pipelineverwalter 2332 Anweisungen von dem Scheduler 2310 aus 23A und verwaltet die Ausführung dieser Anweisungen über einen Grafik-Multiprozessor 2334 und/oder eine Textureinheit 2336. In mindestens einer Ausführungsform ist der Grafikmultiprozessor 2334 eine beispielhafte Instanz eines SIMT-Parallelprozessors. In mindestens einer Ausführungsform können jedoch verschiedene Typen von SIMT-Parallelprozessoren mit unterschiedlichen Architekturen innerhalb des Verarbeitungsclusters 2314 enthalten sein. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Grafik-Multiprozessors 2334 innerhalb eines Verarbeitungsclusters 2314 enthalten sein. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2334 Daten verarbeiten und eine Datenkreuzschiene 2340 kann verwendet werden, um verarbeitete Daten an eines von mehreren möglichen Zielen, einschließlich anderer Shader-Einheiten, zu verteilen. In mindestens einer Ausführungsform kann der Pipelineverwalter 2332 die Verteilung von verarbeiteten Daten erleichtern, indem er Ziele für zu verteilende verarbeitete Daten über die Datenkreuzschiene 2340 vorgibt.
  • In mindestens einer Ausführungsform kann jeder Grafik-Multiprozessor 2334 innerhalb des Verarbeitungsclusters 2314 einen identischen Satz von funktioneller Ausführungslogik (z. B. arithmetisch-logische Einheiten, Lade-Speicher-Einheiten usw.) beinhalten. In mindestens einer Ausführungsform kann funktionelle Ausführungslogik pipelineartig konfiguriert sein, wobei neue Anweisungen ausgegeben werden können, bevor vorherige Anweisungen abgeschlossen sind. In mindestens einer Ausführungsform unterstützt die funktionelle Ausführungslogik eine Vielfalt von Operationen, darunter Integer- und Fließkommaarithmetik, Vergleichsoperationen, boolesche Operationen, Bitverschiebung und Berechnung verschiedener algebraischer Funktionen. In mindestens einer Ausführungsform kann dieselbe Hardware einer funktionellen Einheit ausgenutzt werden, um unterschiedliche Operationen auszuführen, und eine beliebige Kombination von funktionellen Einheiten kann vorhanden sein.
  • In mindestens einer Ausführungsform stellen die an den Verarbeitungscluster 2314 übertragenen Anweisungen einen Thread dar. In mindestens einer Ausführungsform ist ein Satz von Threads, der über einen Satz von Parallelverarbeitungs-Engines ausgeführt wird, eine Thread-Gruppe. In mindestens einer Ausführungsform führt eine Thread-Gruppe ein gemeinsames Programm an unterschiedlichen Eingabedaten aus. In mindestens einer Ausführungsform kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb eines Grafik-Multiprozessors 2334 zugeordnet sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe weniger Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2334. Wenn eine Thread-Gruppe weniger Threads beinhaltet als eine Anzahl von Verarbeitungs-Engines, können in mindestens einer Ausführungsform eine oder mehrere der Verarbeitungs-Engines während der Zyklen, in denen diese Thread-Gruppe verarbeitet wird, inaktiv sein. In mindestens einer Ausführungsform kann eine Thread-Gruppe auch mehr Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2334. Wenn eine Thread-Gruppe mehr Threads als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2334 beinhaltet, kann das Verarbeiten in mindestens einer Ausführungsform über aufeinanderfolgende Taktzyklen durchgeführt werden. In mindestens einer Ausführungsform können mehrere Thread-Gruppen nebenläufig auf einem Grafik-Multiprozessor 2334 ausgeführt werden.
  • In mindestens einer Ausführungsform beinhaltet der Grafik-Multiprozessor 2334 einen internen Cache-Speicher zum Durchführen von Lade- und Speicheroperationen. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2334 auf einen internen Cache verzichten und einen Cache-Speicher (z. B. L1-Cache 2348) innerhalb des Verarbeitungsclusters 2314 verwenden. In mindestens einer Ausführungsform hat jeder Grafik-Multiprozessor 2334 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z. B. Partitionseinheiten 2320A-2320N aus 23A), die von allen Verarbeitungsclustern 2314 gemeinsam genutzt werden und zum Übermitteln von Daten zwischen Threads verwendet werden können. In mindestens einer Ausführungsform kann der Grafikmultiprozessor 2334 auch auf den chipexternen globalen Speicher zugreifen, der einen oder mehrere von dem lokalen Parallelprozessorspeicher und/oder dem Systemspeicher beinhalten kann. In mindestens einer Ausführungsform kann ein beliebiger Speicher, der zu der Parallelverarbeitungseinheit 2302 extern ist, als globaler Speicher verwendet werden. In mindestens einer Ausführungsform beinhaltet der Verarbeitungscluster 2314 mehrere Instanzen des Grafik-Multiprozessors 2334 und er kann gemeinsame Anweisungen und Daten teilen, die in dem L1-Cache 2348 gespeichert sein können.
  • In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2314 eine MMU 2345 (Speicherverwaltungseinheit) beinhalten, die so konfiguriert ist, dass sie virtuelle Adressen auf physische Adressen abbildet. In mindestens einer Ausführungsform können sich eine oder mehrere Instanzen der MMU 2345 innerhalb der Speicherschnittstelle 2318 aus 23A befinden. In mindestens einer Ausführungsform beinhaltet die MMU 2345 einen Satz von Seitentabelleneinträgen (page table entries - PTEs), der dazu verwendet wird, eine virtuelle Adresse auf eine physische Adresse einer Kachel abzubilden, sowie optional einen Cache-Zeilenindex. In mindestens einer Ausführungsform kann die MMU 2345 Adressenübersetzungspuffer (TLB) oder Caches beinhalten, die sich innerhalb des Grafik-Multiprozessors 2334 oder L1-Cache 2348 oder Verarbeitungsclusters 2314 befinden können. In mindestens einer Ausführungsform wird eine physische Adresse verarbeitet, um den Oberflächendatenzugriff lokal zu verteilen, um eine effiziente Anforderungsverschachtelung zwischen den Partitionseinheiten zu ermöglichen. In mindestens einer Ausführungsform kann ein Cache-Zeilenindex verwendet werden, um zu bestimmen, ob eine Anforderung für eine Cache-Zeile ein Treffer oder ein Fehler ist.
  • In mindestens einer Ausführungsform kann ein Verarbeitungscluster 2314 derart konfiguriert sein, dass jeder Grafik-Multiprozessor 2334 an eine Textureinheit 2336 zum Durchführen von Texturabbildungsoperationen gekoppelt ist, z. B. zum Bestimmen von Texturabtastpositionen, Lesen von Texturdaten und Filtern von Texturdaten. In mindestens einer Ausführungsform werden die Texturdaten aus einem internen Textur-L1-Cache (nicht gezeigt) oder aus einem L1-Cache innerhalb des Grafik-Multiprozessors 2334 gelesen und je nach Bedarf aus einem L2-Cache, dem lokalen Parallelprozessorspeicher oder dem Systemspeicher abgerufen. In mindestens einer Ausführungsform gibt jeder Grafik-Multiprozessor 2334 verarbeitete Tasks an die Datenkreuzschiene 2340 aus, um einen verarbeiteten Task einem anderen Verarbeitungscluster 2314 zur weiteren Verarbeitung bereitzustellen oder um einen verarbeiteten Task über die Speicherkreuzschiene 2316 in einem L2-Cache, lokalen Parallelprozessorspeicher oder Systemspeicher zu speichern. In mindestens einer Ausführungsform ist eine preROP 2342 (Vor-Rasteroperationeneinheit) so konfiguriert, dass sie Daten von dem Grafik-Multiprozessor 2334 empfängt und Daten an ROP-Einheiten leitet, die sich in den hierin beschriebenen Partitionseinheiten befinden können (z. B. Partitionseinheiten 2320A-2320N aus 23A). In mindestens einer Ausführungsform kann die preROP-Einheit 2342 Optimierungen für die Farbmischung, das Organisieren von Pixelfarbdaten und das Durchführen von Adressübersetzungen durchführen.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem Grafikverarbeitungscluster 2314 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 23D zeigt einen Grafik-Multiprozessor 2334 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der Grafik-Multiprozessor 2334 mit dem Pipelineverwalter 2332 des Verarbeitungsclusters 2314 gekoppelt. In mindestens einer Ausführungsform weist der Grafik-Multiprozessor 2334 eine Ausführungspipeline auf, die einen Anweisungs-Cache 2352, eine Anweisungseinheit 2354, eine Adressabbildungseinheit 2356, eine Registerbank 2358, einen oder mehrere Kerne 2362 einer Universal-Grafikverarbeitungseinheit (GPGPU) und eine oder mehrere Lade-/Speichereinheiten 2366 beinhaltet, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform sind die GPGPU-Kerne 2362 und die Lade-/Speichereinheiten 2366 über eine Speicher- und Cache-Zusammenschaltung 2368 mit dem Cache-Speicher 2372 und dem gemeinsam genutzten Speicher 2370 gekoppelt.
  • In mindestens einer Ausführungsform empfängt der Anweisungs-Cache 2352 einen Stream von auszuführenden Anweisungen von dem Pipelineverwalter 2332. In mindestens einer Ausführungsform werden die Anweisungen in dem Anweisungs-Cache 2352 zwischengespeichert und durch eine Anweisungseinheit 2354 zur Ausführung zugeteilt. In mindestens einer Ausführungsform kann die Anweisungseinheit 2354 Anweisungen als Thread-Gruppen (z. B. Warps) zuteilen, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb der GPGPU-Kerne 2362 zugeordnet wird. In mindestens einer Ausführungsform kann eine Anweisung auf einen beliebigen von einem lokalen, gemeinsam genutzten oder globalen Adressraum zugreifen, indem sie eine Adresse innerhalb eines einheitlichen Adressraums vorgibt. In mindestens einer Ausführungsform kann die Adressabbildungseinheit 2356 verwendet werden, um Adressen in einem einheitlichen Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf die durch die Lade-/Speichereinheiten 2366 zugegriffen werden kann.
  • In mindestens einer Ausführungsform stellt die Registerbank 2358 einen Satz von Registern für funktionelle Einheiten des Grafik-Multiprozessors 2334 bereit. In mindestens einer Ausführungsform stellt die Registerbank 2358 einen temporären Datenspeicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten (z. B. GPGPU-Kernen 2362, Lade-/Speichereinheiten 2366) des Grafik-Multiprozessors 2334 verbunden sind. In mindestens einer Ausführungsform ist die Registerbank 2358 derart zwischen den einzelnen funktionellen Einheiten aufgeteilt, dass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerbank 2358 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerbank 2358 auf unterschiedliche Warps aufgeteilt, die durch den Grafik-Multiprozessor 2334 ausgeführt werden.
  • In mindestens einer Ausführungsform können die GPGPU-Kerne 2362 jeweils Gleitkommaeinheiten (FPUs) und/oder arithmetisch-logische Einheiten (ALUs) für Integer beinhalten, die zum Ausführen von Anweisungen des Grafik-Multiprozessors 2334 verwendet werden. In mindestens einer Ausführungsform können die GPGPU-Kerne 2362 eine ähnliche Architektur aufweisen oder sich bezüglich der Architektur unterscheiden. In mindestens einer Ausführungsform beinhaltet ein erster Abschnitt der GPGPU-Kerne 2362 eine FPU mit einfacher Genauigkeit und eine Integer-ALU, während ein zweiter Abschnitt der GPGPU-Kerne eine FPU mit doppelter Genauigkeit beinhaltet. In mindestens einer Ausführungsform können FPUs den Standard IEEE 754-2308 für Gleitkommaarithmetik implementieren oder Gleitkommaarithmetik mit variabler Genauigkeit ermöglichen. In mindestens einer Ausführungsform kann der Grafik-Multiprozessor 2334 zusätzlich eine oder mehrere Festfunktions- oder Spezialfunktionseinheiten beinhalten, um spezifische Funktionen, wie etwa Operationen zum Kopieren von Rechtecken oder Pixel-Blending, durchzuführen. In mindestens einer Ausführungsform können einer oder mehrere der GPGPU-Kerne 2362 auch Fest- oder Spezialfunktionslogik beinhalten.
  • In mindestens einer Ausführungsform beinhalten die GPGPU-Kerne 2362 SIMD-Logik, die dazu in der Lage ist, eine einzelne Anweisung an mehreren Datensätzen durchzuführen. In mindestens einer Ausführungsform können die GPGPU-Kerne 2362 SIMD4-, SIMD8- und SIMD16-Anweisungen physisch ausführen und SIMD1-, SIMD2- und SIMD32-Anweisungen logisch ausführen. In mindestens einer Ausführungsform können SIMD-Anweisungen für GPGPU-Kerne zur Kompilierzeit durch einen Shader-Compiler erzeugt werden oder automatisch erzeugt werden, wenn Programme ausgeführt werden, die für Single-Program-Multiple-Data-(SPMD-) oder SIMT-Architekturen geschrieben und kompiliert wurden. In mindestens einer Ausführungsform können mehrere Threads eines für ein SIMT-Ausführungsmodell konfigurierten Programms über eine einzelne SIMD-Anweisung ausgeführt werden. Zum Beispiel können in mindestens einer Ausführungsform acht SIMT-Threads, die gleiche oder ähnliche Operationen durchführen, parallel über eine einzelne SIMD8-Logikeinheit ausgeführt werden.
  • In mindestens einer Ausführungsform ist die Speicher- und Cache-Zusammenschaltung 2368 ein Zusammenschaltungsnetz, das jede funktionelle Einheit des Grafik-Multiprozessors 2334 mit der Registerbank 2358 und dem gemeinsam genutzten Speicher 2370 verbindet. In mindestens einer Ausführungsform ist die Speicher- und Cache-Zusammenschaltung 2368 eine Kreuzschienen-Zusammenschaltung, die es der Lade-/Speichereinheit 2366 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher 2370 und der Registerbank 2358 zu implementieren. In mindestens einer Ausführungsform kann die Registerbank 2358 mit der gleichen Frequenz wie die GPGPU-Kerne 2362 arbeiten, sodass die Datenübermittlung zwischen den GPGPU-Kernen 2362 und der Registerbank 2358 eine sehr geringe Latenz aufweisen kann. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 2370 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf funktionellen Einheiten innerhalb des Grafik-Multiprozessors 2334 ausgeführt werden. In mindestens einer Ausführungsform kann der Cache-Speicher 2372 zum Beispiel als Daten-Cache verwendet werden, um Texturdaten zwischenzuspeichern, die zwischen funktionellen Einheiten und der Textureinheit 2336 kommuniziert werden. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher 2370 auch als programmverwalteter Cache verwendet werden. In mindestens einer Ausführungsform können Threads, die auf den GPGPU-Kernen 2362 ausgeführt werden, zusätzlich zu den automatisch zwischengespeicherten Daten, die innerhalb des Cache-Speichers 2372 gespeichert sind, programmatisch Daten innerhalb des gemeinsam genutzten Speichers speichern.
  • In mindestens einer Ausführungsform ist ein Parallelprozessor oder eine GPGPU, wie hierin beschrieben, kommunikativ an Host-/Prozessorkerne gekoppelt, um Grafikoperationen, Operationen des maschinellen Lernens, Musteranalyseoperationen und verschiedene Funktionen einer Universal-GPU (GPGPU) zu beschleunigen. In mindestens einer Ausführungsform kann eine GPU über einen Bus oder eine andere Zusammenschaltung (z. B. eine Hochgeschwindigkeitszusammenschaltung wie etwa PCIe oder NVLink) kommunikativ an den Host-Prozessor/die Kerne gekoppelt sein. In mindestens einer Ausführungsform kann eine GPU in einem Gehäuse oder Chip als Kerne integriert sein und kommunikativ über einen internen Prozessorbus/eine Zusammenschaltung, die intern zu einem Gehäuse oder Chip ist, an Kerne gekoppelt sein. In mindestens einer Ausführungsform können die Prozessorkerne unabhängig von einer Weise, auf welche eine GPU verbunden ist, einer derartigen GPU Arbeit in Form von Sequenzen von Befehlen/Anweisungen zuweisen, die in einem Arbeitsdeskriptor enthalten sind. In mindestens einer Ausführungsform verwendet diese GPU dann dedizierte Schaltung/Logik zum effizienten Verarbeiten dieser Befehle/Anweisungen.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zur Inferenz- und/oder Trainingslogik 1015 werden hier in Verbindung mit den 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 im Grafik-Multiprozessor 2334 für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtungsparametern basieren, die mit Hilfe von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder den hier beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden.
  • 24 veranschaulicht ein Multi-GPU Rechensystem 2400 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das Multi-GPU-Rechensystem 2400 einen Prozessor 2402 einschließen, der über einen Host Interface Switch 2404 mit mehreren universellen Grafikverarbeitungseinheiten (GPGPUs) 2406A-D gekoppelt ist. In mindestens einer Ausführungsform ist der Host-Interface-Switch 2404 eine PCI-Express-Switch-Vorrichtung, die den Prozessor 2402 mit einem PCI-Express-Bus verbindet, über den der Prozessor 2402 mit den GPGPUs 2406A-D kommunizieren kann. In mindestens einer Ausführungsform können die GPGPUs 2406A-D über eine Reihe von Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindungen von GPU zu GPU (2416) miteinander verbunden werden. In mindestens einer Ausführungsform sind die GPU-zu-GPU-Verbindungen 2416 mit jeder der GPGPUs 2406A-D über eine eigene GPU-Verbindung verbunden. In mindestens einer Ausführungsform ermöglichen die P2P-GPU-Verbindungen 2416 eine direkte Kommunikation zwischen den einzelnen GPGPUs 2406A-D, ohne dass eine Kommunikation über den Host-Schnittstellenbus 2404 erforderlich ist, an den der Prozessor 2402 angeschlossen ist. In mindestens einer Ausführungsform, bei der der GPU-zu-GPU-Verkehr auf P2P-GPU-Links 2416 geleitet wird, bleibt der Host-Schnittstellenbus 2404 für den Zugriff auf den Systemspeicher oder für die Kommunikation mit anderen Instanzen des Multi-GPU-Rechensystems 2400 verfügbar, zum Beispiel über eine oder mehrere Netz-Vorrichtungen. Während in mindestens einer Ausführungsform die GPGPUs 2406A-D über den Host Interface Switch 2404 mit dem Prozessor 2402 verbunden sind, schließt der Prozessor 2402 in mindestens einer Ausführungsform eine direkte Unterstützung für P2P GPU Links 2416 ein und kann sich direkt mit den GPGPUs 2406A-D verbinden.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zur Inferenz- und/oder Trainingslogik 1015 werden hier in Verbindung mit den 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 im Multi-GPU-Rechensystem 2400 für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtungsparametern basieren, die mit Hilfe von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen neuronaler Netze oder hier beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden.
  • 25 ist ein Blockdiagramm eines Grafikprozessors 2500 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2500 eine Ringzusammenschaltung 2502, ein Pipeline-Frontend 2504, eine Medien-Engine 2537 und Grafikkerne 2580A-2580N. In mindestens einer Ausführungsform koppelt die Ringzusammenschaltung 2502 den Grafikprozessor 2500 an andere Verarbeitungseinheiten, einschließlich anderer Grafikprozessoren oder eines oder mehrerer Universalprozessorkerne. In mindestens einer Ausführungsform ist der Grafikprozessor 2500 einer von vielen Prozessoren, die in ein Mehrkern-Verarbeitungssystem integriert sind.
  • In mindestens einer Ausführungsform empfängt der Grafikprozessor 2500 Batches von Befehlen über die Ringzusammenschaltung 2502. In mindestens einer Ausführungsform werden eingehende Befehle durch einen Befehls-Streamer 2503 in dem Pipeline-Frontend 2504 interpretiert. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2500 skalierbare Ausführungslogik zum Durchführen von 3D-Geometrieverarbeitung und Medienverarbeitung über die Grafikkern(e) 2580A-2580N. In mindestens einer Ausführungsform führt der Befehls-Streamer 2503 der Geometriepipeline 2536 Befehle für 3D-Geometrieverarbeitungsbefehle zu. In mindestens einer Ausführungsform führt der Befehls-Streamer 2503 für mindestens einige Medienverarbeitungsbefehle Befehle einem Video-Frontend 2534 zu, das mit der Medien-Engine 2537 gekoppelt ist. In mindestens einer Ausführungsform beinhaltet die Medien-Engine 2537 eine Videoqualitäts-Engine (Video Quality Engine - VQE) 2530 für die Video- und Bildnachverarbeitung und eine Engine zum Codieren/Decodieren in mehreren Formaten (multi-format encode/decode - MFX) 2533 zum Bereitstellen von hardwarebeschleunigter Codierung und Decodierung von Mediendaten. In mindestens einer Ausführungsform erzeugen die Geometriepipeline 2536 und die Medien-Engine 2537 jeweils Ausführungs-Threads für Thread-Ausführungsressourcen, die durch mindestens einen Grafikkern 2580 bereitgestellt sind.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2500 skalierbare Thread-Ausführungsressourcen mit den Grafikkernen 2580A-2580N (die modular sein können und mitunter als Kern-Slices bezeichnet werden), die jeweils mehrere Teilkerne 2550A-50N, 2560A-2560N (mitunter als Kernteil-Slices bezeichnet) aufweisen. In mindestens einer Ausführungsform kann der Grafikprozessor 2500 eine beliebige Anzahl von Grafikkernen 2580A aufweisen. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2500 einen Grafikkern 2580A, der mindestens einen ersten Teilkern 2550A und einen zweiten Teilkern 2560A aufweist. In mindestens einer Ausführungsform ist der Grafikprozessor 2500 ein Prozessor niedriger Leistung mit einem einzelnen Teilkern (z. B. 2550A). In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 2500 mehrere Grafikkerne 2580A-2580N, von denen jeder einen Satz von ersten Teilkernen 2550A-2550N und einen Satz von zweiten Teilkernen 2560A-2560N beinhaltet. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den ersten Teilkernen 2550A-2550N mindestens einen ersten Satz von Ausführungseinheiten 2552A-2552N und Medien-/Texturabtastern 2554A-2554N. In mindestens einer Ausführungsform beinhaltet jeder Teilkern in den zweiten Teilkernen 2560A-2560N mindestens einen zweiten Satz von Ausführungseinheiten 2562A-2562N und Abtastern 2564A-2564N. In mindestens einer Ausführungsform nutzen die Teilkerne 2550A-2550N, 2560A-2560N jeweils einen Satz von gemeinsam genutzten Ressourcen 2570A-2570N gemeinsam. In mindestens einer Ausführungsform beinhalten die gemeinsam genutzten Ressourcen gemeinsam genutzten Cache-Speicher und Pixeloperationslogik.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 1015 in dem Grafikprozessor 2500 für Inferenz- oder Vorhersageoperationen mindestens zum Teil auf Grundlage von Gewichtungsparametern verwendet werden, die unter Verwendung von Trainingsoperationen für neuronale Netze, Funktionen und/oder Architekturen von neuronalen Netzen oder hierin beschriebenen Anwendungsfällen für neuronale Netze berechnet wurden.
  • 26 ist ein Blockdiagramm, das die Mikroarchitektur für einen Prozessor 2600, der Logikschaltungen zum Durchführen von Anweisungen beinhalten kann, gemäß mindestens einer Ausführungsform veranschaulicht. In mindestens einer Ausführungsform kann der Prozessor 2600 Anweisungen durchführen, einschließlich x86-Anweisungen, ARM-Anweisungen, spezialisierter Anweisungen für anwendungsspezifische integrierte Schaltungen (ASICs) usw. In mindestens einer Ausführungsform kann der Prozessor 2600 Register zum Speichern von gepackten Daten beinhalten, wie etwa 64 Bit breite MMX™-Register in Mikroprozessoren, die mit der MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. In mindestens einer Ausführungsform können MMX-Register, die sowohl in Integer- als auch in Gleitkommaform verfügbar sind, mit Elementen mit gepackten Daten arbeiten, die mit Single-Instruction-Multiple-Data-(„SIMD“) und Streaming-SIMD-Erweiterungs-(„SSE“)Anweisungen einhergehen. In mindestens einer Ausführungsform können 128 Bit breite XMM-Register, die sich auf die SSE2-, SSE3-, SSE4-, AVX- oder darüber hinausgehende Technologie beziehen (allgemein als „SSEx“ bezeichnet), derartige Operanden mit gepackten Daten aufbewahren. In mindestens einer Ausführungsform kann der Prozessor 2600 Anweisungen zum Beschleunigen von Algorithmen für maschinelles Lernen oder Deep Learning, Training oder Inferenzieren durchführen.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2600 ein In-Order-Frontend („Frontend“) 2601 zum Abrufen von auszuführenden Anweisungen und Vorbereiten von Anweisungen, die später in einer Prozessorpipeline verwendet werden sollen. In mindestens einer Ausführungsform kann das Frontend 2601 mehrere Einheiten beinhalten. In mindestens einer Ausführungsform ruft ein Anweisungsvorababrufer 2626 Anweisungen aus dem Speicher ab und speist die Anweisungen in einen Anweisungsdecodierer 2628 ein, der die Anweisungen wiederum decodiert oder interpretiert. Zum Beispiel decodiert in mindestens einer Ausführungsform der Anweisungsdecodierer 2628 eine empfangene Anweisung in eine oder mehrere Operationen, die als „Mikroanweisungen“ oder „Mikrooperationen“ bezeichnet werden (auch als „Mikro-Ops“ oder „µops“ bezeichnet) und die eine Maschine ausführen kann. In mindestens einer Ausführungsform parst der Anweisungsdecodierer 2628 eine Anweisung in einen Opcode und entsprechende Daten- und Steuerfelder, die durch die Mikroarchitektur verwendet werden können, um Operationen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform kann ein Ablaufverfolgungscache 2630 decodierte µops in programmgeordnete Sequenzen oder Abläufe in einer µοp-Warteschlange 2634 zur Ausführung zusammenstellen. Wenn der Ablaufverfolgungscache 2630 auf eine komplexe Anweisung stößt, stellt in mindestens einer Ausführungsform ein Mikrocode-ROM 2632 die für den Abschluss einer Operation notwendigen µops bereit.
  • In mindestens einer Ausführungsform können einige Anweisungen in eine einzelne Mikro-Op umgewandelt werden, während andere mehrere Mikro-Ops benötigen, um eine vollständige Operation abzuschließen. In mindestens einer Ausführungsform kann, falls mehr als vier Mikro-Ops benötigt werden, um eine Anweisung abzuschließen, der Anweisungsdecodierer 2628 auf den Mikrocode-ROM 2632 zugreifen, um diese Anweisung durchzuführen. In mindestens einer Ausführungsform kann eine Anweisung in eine kleine Anzahl von Mikro-Ops zur Verarbeitung in dem Anweisungsdecodierer 2628 decodiert werden. In mindestens einer Ausführungsform kann eine Anweisung innerhalb des Mikrocode-ROM 2632 gespeichert werden, wenn eine Reihe von Mikro-Ops zum Erzielen einer derartigen Operation benötigt werden sollte. In mindestens einer Ausführungsform bezieht sich der Ablaufverfolgungscache 2630 auf ein programmierbares logisches Array (programmable logic array - „PLA“) für den Einsprungpunkt, um einen korrekten Mikroanweisungszeiger zum Lesen von Mikrocodesequenzen zu bestimmen, um eine oder mehrere Anweisungen aus dem Mikrocode-ROM 2632 gemäß mindestens einer Ausführungsform abzuschließen. In mindestens einer Ausführungsform kann das Frontend 2601 einer Maschine, nachdem der Mikrocode-ROM 2632 die Sequenzierung von Mikro-Ops für eine Anweisung fertiggestellt hat, das Abrufen von Mikro-Ops aus dem Ablaufverfolgungscache 2630 wiederaufnehmen.
  • In mindestens einer Ausführungsform kann die Engine zur Ausführung in einer anderen Reihenfolge („Out-of-Order-Engine“) 2603 Anweisungen zur Ausführung vorbereiten. In mindestens einer Ausführungsform verfügt die Out-of-Order-Ausführungslogik über eine Reihe von Puffern, um den Fluss der Anweisungen zu glätten und neu zu ordnen, um die Rechenleistung zu optimieren, während sie eine Pipeline durchlaufen und zur Ausführung eingeplant werden. In mindestens einer Ausführungsform umfasst die Out-of-Order-Ausführungs-Engine 2603 ohne Einschränkung einen Zuweiser/Registerumbenenner 2640, eine Speicher-µop-Warteschlange 2642, eine Integer-/Gleitkomma-µop-Warteschlange 2644, einen Speicher-Scheduler 2646, einen schnellen Scheduler 2602, einen langsamen/allgemeinen Gleitkomma-Scheduler („langsamer/allgemeiner FP-Scheduler“) 2604 und einen einfachen Gleitkomma-Scheduler („einfacher FP-Scheduler“) 2606. In mindestens einer Ausführungsform werden der schnelle Scheduler 2602, der langsame/allgemeine Gleitkomma-Scheduler 2604 und der einfache Gleitkomma-Scheduler 2606 hierin auch zusammen als „µop-Scheduler 2602, 2604, 2606“ bezeichnet. In mindestens einer Ausführungsform weist der Zuweiser/Registerumbenenner 2640 Maschinenpuffer und Ressourcen zu, die jede µοp für die Ausführung benötigt. In mindestens einer Ausführungsform benennt der Zuweiser/Registerumbenenner 2640 logische Register in Einträge in einer Registerbank um. In mindestens einer Ausführungsform weist der Zuweiser/Registerumbenenner 2640 auch einen Eintrag für jede µοp in einer von zwei µop-Warteschlangen zu, und zwar in der Speicher-Ilop-Warteschlange 2642 für Speicheroperationen und der Integer-/Gleitkomma-µop-Warteschlange 2644 für Nicht-Speicheroperationen, vor dem Speicher-Scheduler 2646 und den µop-Schedulern 2602, 2604, 2606. In mindestens einer Ausführungsform bestimmen die µop-Scheduler 2602, 2604, 2606 auf Grundlage der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die µops benötigen, um ihre Operation abzuschließen, wann eine µop zur Ausführung bereit ist. In mindestens einer Ausführungsform kann der schnelle Scheduler 2602 auf jeder Hälfte des Haupttaktzyklus planen, während der langsame/allgemeine Gleitkomma-Scheduler 2604 und der einfache Gleitkomma-Scheduler 2606 einmal pro Hauptprozessortaktzyklus planen können. In mindestens einer Ausführungsform vermitteln die µop-Scheduler 2602, 2604, 2606 Zuteilungsports, um µops zur Ausführung einzuplanen.
  • In mindestens einer Ausführungsform beinhaltet der Ausführungsblock 2611 ohne Einschränkung eine Integerregisterbank/ein Umgehungsnetz 2608, eine Gleitkommaregisterbank/ein Umgehungsnetz („FP-Registerbank/Umgehungsnetz“) 2610, Adresserzeugungseinheiten (address generation units - „AGUs“) 2612 und 2614, schnelle arithmetisch-logische Einheiten (ALUs) („schnelle ALUs“) 2616 und 2618, eine langsame arithmetisch-logische Einheit („langsame ALU“) 2620, eine Gleitkomma-ALU („FP“) 2622 und eine Gleitkomma-Bewegungseinheit („FP-Bewegung“) 2624. In mindestens einer Ausführungsform werden die Integerregisterbank/das Umgehungsnetz 2608 und die Gleitkommaregisterbank/das Umgehungsnetz 2610 hierin auch als „Registerbänke 2608, 2610“ bezeichnet. In mindestens einer Ausführungsform werden die AGUs 2612 und 2614, die schnellen ALUs 2616 und 2618, die langsame ALU 2620, die Gleitkomma-ALU 2622 und die Gleitkomma-Bewegungseinheit 2624 hierin auch als „Ausführungseinheiten 2612, 2614, 2616, 2618, 2620, 2622 und 2624“ bezeichnet. In mindestens einer Ausführungsform kann der Ausführungsblock 2611 ohne Einschränkung eine beliebige Anzahl (einschließlich null) und einen beliebigen Typ von Registerbänken, Umgehungsnetzen, Adresserzeugungseinheiten und Ausführungseinheiten in beliebiger Kombination beinhalten.
  • In mindestens einer Ausführungsform können die Registernetze 2608, 2610 zwischen den µop-Schedulern 2602, 2604, 2606 und den Ausführungseinheiten 2612, 2614, 2616, 2618, 2620, 2622 und 2624 angeordnet sein. In mindestens einer Ausführungsform führt die Integerregisterbank/das Umgehungsnetz 2608 Integeroperationen durch. In mindestens einer Ausführungsform führt die Gleitkommaregisterbank/das Umgehungsnetz 2610 Gleitkommaoperationen durch. In mindestens einer Ausführungsform kann jedes der Registernetze 2608, 2610 ohne Einschränkung ein Umgehungsnetz beinhalten, das gerade abgeschlossene Ergebnisse, die noch nicht in eine Registerbank geschrieben wurden, umgehen oder zu neuen abhängigen µops weiterleiten kann. In mindestens einer Ausführungsform können die Registernetze 2608, 2610 miteinander Daten kommunizieren. In mindestens einer Ausführungsform kann die Integerregisterbank/das Umgehungsnetz 2608 ohne Einschränkung zwei separate Registerbänke beinhalten, eine Registerbank für Daten niederer Ordnung mit zweiunddreißig Bit und eine zweite Registerbank für Daten hoher Ordnung mit zweiunddreißig Bit. In mindestens einer Ausführungsform kann die Gleitkommaregisterbank/das Umgehungsnetz 2610 ohne Einschränkung 128 Bit breite Einträge beinhalten, da Gleitkommaanweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bit aufweisen.
  • In mindestens einer Ausführungsform können die Ausführungseinheiten 2612, 2614, 2616, 2618, 2620, 2622, 2624 Anweisungen ausführen. In mindestens einer Ausführungsform speichern die Registernetze 2608, 2610 Integer- und Gleitkommadaten-Operandenwerte, die Mikroanweisungen benötigen, um ausgeführt zu werden. In mindestens einer Ausführungsform kann der Prozessor 2600 ohne Einschränkung eine beliebige Anzahl und Kombination der Ausführungseinheiten 2612, 2614, 2616, 2618, 2620, 2622, 2624 beinhalten. In mindestens einer Ausführungsform können die Gleitkomma-ALU 2622 und die Gleitkomma-Bewegungseinheit 2624 Gleitkomma-, MMX-, SIMD-, AVX- und SSE- oder andere Operationen ausführen, einschließlich spezialisierter Anweisungen des maschinellen Lernens. In mindestens einer Ausführungsform kann die Gleitkomma-ALU 2622 ohne Einschränkung einen 64 Bit mal 64 Bit großen Gleitkommadividierer zum Ausführen von Divisions-, Quadratwurzel- und Rest-Mikro-Ops beinhalten. In mindestens einer Ausführungsform können Anweisungen, an denen ein Gleitkommawert beteiligt ist, mit Gleitkomma-Hardware gehandhabt werden. In mindestens einer Ausführungsform können ALU-Operationen an die schnellen ALUs 2616, 2618 übergeben werden. In mindestens einer Ausführungsform können die schnellen ALUs 2616, 2618 schnelle Operationen mit einer effektiven Latenz von einem halben Taktzyklus ausführen. In mindestens einer Ausführungsform gehen die meisten komplexen Integeroperationen an die langsame ALU 2620, da die langsame ALU 2620 ohne Einschränkung Integerausführungs-Hardware für Operationen vom Typ mit langer Latenz beinhalten kann, wie etwa einen Multiplikator, Verschiebungen, Flag-Logik und Verzweigungsverarbeitung. In mindestens einer Ausführungsform können die Lade-/Speicheroperationen eines Speichers durch die AGUs 2612, 2614 ausgeführt werden. In mindestens einer Ausführungsform können die schnelle ALU 2616, die schnelle ALU 2618 und die langsame ALU 2620 Integeroperationen an 64-Bit-Datenoperanden durchführen. In mindestens einer Ausführungsform können die schnelle ALU 2616, die schnelle ALU 2618 und die langsame ALU 2620 so implementiert sein, dass sie eine Vielfalt von Datenbitgrößen unterstützen, darunter sechzehn, zweiunddreißig, 128, 256 usw. In mindestens einer Ausführungsform können die Gleitkomma-ALU 2622 und die Gleitkomma-Bewegungseinheit 2624 so implementiert sein, dass sie einen Bereich von Operanden unterstützen, der Bits mit verschiedenen Breiten aufweist, wie etwa 128 Bit breite Operanden mit gepackten Daten in Verbindung mit SIMD- und Multimedia-Anweisungen.
  • In mindestens einer Ausführungsform teilen die µop-Scheduler 2602, 2604, 2606 abhängige Operationen zu, bevor die Ausführung einer übergeordneten Last beendet ist. In mindestens einer Ausführungsform kann der Prozessor 2600, da µops in dem Prozessor 2600 spekulativ geplant und ausgeführt werden können, auch Logik zum Handhaben von Speicherfehlern beinhalten. In mindestens einer Ausführungsform können, falls eine Datenlast in einem Daten-Cache einen Fehler verursacht, abhängige Operationen in einer Pipeline im Gange sein, die einen Scheduler mit temporär inkorrekten Daten verlassen haben. In mindestens einer Ausführungsform verfolgt ein Wiederholungsmechanismus Anweisungen, die falsche Daten verwenden, und führt sie erneut aus. In mindestens einer Ausführungsform könnte es sein, dass abhängige Operationen wiederholt werden müssen, und es kann unabhängigen Operationen ermöglicht werden, abgeschlossen zu werden. In mindestens einer Ausführungsform können die Scheduler und ein Wiederholungsmechanismus mindestens einer Ausführungsform eines Prozessors auch dafür ausgestaltet sein, Anweisungssequenzen für Zeichenfolgenvergleichsoperationen abzufangen.
  • In mindestens einer Ausführungsform können sich „Register“ auf bordeigene Prozessorspeicherorte beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden können. In mindestens einer Ausführungsform kann es sich bei den Registern um diejenigen handeln, die von außerhalb eines Prozessors (aus der Sicht eines Programmierers) verwendbar sein können. In mindestens einer Ausführungsform sind die Register möglicherweise nicht auf einen konkreten Schaltungstyp beschränkt. Vielmehr kann ein Register in mindestens einer Ausführungsform Daten speichern, Daten bereitstellen und die hierin beschriebenen Funktionen durchführen. In mindestens einer Ausführungsform können die hierin beschriebenen Register durch Schaltungen innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl unterschiedlicher Techniken implementiert werden, wie etwa dedizierter physischer Register, dynamisch zugewiesener physischer Register unter Verwendung von Registerumbenennung, Kombinationen aus dedizierten und dynamisch zugewiesenen physischen Registern usw. In mindestens einer Ausführungsform speichern Integerregister 32-Bit-Integerdaten. Eine Registerdatei von mindestens einer Ausführungsform enthält außerdem acht Multimedia-SIMD-Register für gepackte Daten.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Ausführungsblock 2611 und andere gezeigte oder nicht gezeigte Speicher oder Register einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in dem Ausführungsblock 2611 veranschaulichten ALUs verwenden. Darüber hinaus können Gewichtungsparameter im chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Ausführungsblocks 2611 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 27 veranschaulicht einen Deep-Learning-Anwendungsprozessor 2700 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform verwendet der Deep-Learning-Anwendungsprozessor 2700 Anweisungen, die bei Ausführung durch den Deep-Learning-Anwendungsprozessor 2700 den Deep-Learning-Anwendungsprozessor 2700 dazu veranlassen, einige oder alle der in dieser gesamten Offenbarung beschriebenen Prozesse und Techniken durchzuführen. In mindestens einer Ausführungsform ist der Deep-Learning-Anwendungsprozessor 2700 eine anwendungsspezifische integrierte Schaltung (ASIC). In mindestens einer Ausführungsform führt der Anwendungsprozessor 2700 Matrixmultiplikationsoperationen entweder „fest verdrahtet“ in Hardware als Ergebnis des Durchführens einer oder mehrerer Anweisungen oder beides durch. In mindestens einer Ausführungsform beinhaltet der Deep-Learning-Anwendungsprozessor 2700 ohne Einschränkung Verarbeitungscluster 2710(1)-2710(12), chipübergreifende Verknüpfungen (Inter-Chip Links - „ICLs“) 2720(1)-2720(12), chipübergreifende Steuerungen (Inter-Chip Controllers - „ICCs“) 2730(1)-2730(2), Speicher mit hoher Bandbreite der zweiten Generation (high-bandwidth memory second generation - „HBM2“) 2740(1)-2740(4), Speichersteuerungen (memory controllers - „Mem Ctrlrs“) 2742(1)-2742(4), eine Bitübertragungsschicht mit Speicher mit hoher Bandbreite (high bandwidth memory physical layer - „HBM PHY“) 2744(1)-2744(4), eine zentrale Verwaltungssteuerungs-Verarbeitungseinheit („Verwaltungssteuerungs-CPU“) 2750, eine serielle Peripherieschnittstelle, eine zwischenintegrierte Schaltung und einen Universal-Eingabe/Ausgabe-Block („SPI, I2C, GPIO“) 2760, eine Interconnect-Express-Steuerung für Peripheriekomponenten und einen Direktspeicherzugriffsblock („PCIe-Steuerung und DMA“) 2770 und einen sechzehnspurigen Interconnect-Express-Port für Peripheriekomponenten („PCI-Express x 16“) 2780.
  • In mindestens einer Ausführungsform können die Verarbeitungscluster 2710 Deep-Learning-Operationen durchführen, einschließlich Inferenz- oder Vorhersageoperationen auf Grundlage von Gewichtungsparametern, die mit einer oder mehreren Trainingstechniken, einschließlich der hierin beschriebenen, berechnet wurden. In mindestens einer Ausführungsform kann jeder Verarbeitungscluster 2710 ohne Einschränkung eine beliebige Anzahl und einen beliebigen Typ von Prozessoren beinhalten. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2700 eine beliebige Anzahl und einen beliebigen Typ von Verarbeitungsclustern 2700 beinhalten. In mindestens einer Ausführungsform sind die chipübergreifenden Verknüpfungen 2720 bidirektional. In mindestens einer Ausführungsform ermöglichen die chipübergreifenden Verknüpfungen 2720 und die chipübergreifenden Steuerungen 2730 mehreren Deep-Learning-Anwendungsprozessoren 2700 den Austausch von Informationen, einschließlich Aktivierungsinformationen, die aus dem Durchführen eines oder mehrerer Algorithmen des maschineller Lernens resultieren, die in einem oder mehreren neuronalen Netzen verkörpert sind. In mindestens einer Ausführungsform kann der Deep-Learning-Anwendungsprozessor 2700 eine beliebige Anzahl (einschließlich null) und einen beliebigen Typ von ICLs 2720 und ICCs 2730 beinhalten.
  • In mindestens einer Ausführungsform stellen die HBM2s 2740 insgesamt 32 Gigabyte (GB) Speicher bereit. In mindestens einer Ausführungsform ist HBM2 2740(i) sowohl mit der Speichersteuerung 2742(i) als auch der HBM PHY 2744(i) assoziiert, wobei „i“ eine willkürliche ganze Zahl ist. In mindestens einer Ausführungsform kann eine beliebige Anzahl von HBM2s 2740 einen beliebigen Typ und eine beliebige Gesamtmenge an Speicher mit hoher Bandbreite bereitstellen und mit einer beliebigen Anzahl (einschließlich null) und einem beliebigen Typ von Speichersteuerungen 2742 und HBM PHYs 2744 assoziiert sein. In mindestens einer Ausführungsform können SPI, I2C, GPIO 2760, PCIe-Steuerung und DMA 2770 und/oder PCIe 2780 durch eine beliebige Anzahl und einen beliebigen Typ von Blöcken ersetzt werden, die eine beliebige Anzahl und einen beliebigen Typ von Kommunikationsstandards auf eine beliebige technisch machbare Weise ermöglichen.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um dem Deep-Learning-Anwendungsprozessor 2700 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor 2700 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z. B. eines neuronalen Netzes) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den Deep-Learning-Anwendungsprozessor 2700 trainiert wurde. In mindestens einer Ausführungsform kann der Prozessor 2700 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • 28 ist ein Blockdiagramm eines neuromorphen Prozessors 2800 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2800 eine oder mehrere Eingaben von Quellen außerhalb des neuromorphen Prozessors 2800 empfangen. In mindestens einer Ausführungsform können diese Eingaben an ein oder mehrere Neuronen 2802 innerhalb des neuromorphen Prozessors 2800 übertragen werden. In mindestens einer Ausführungsform können die Neuronen 2802 und Komponenten davon unter Verwendung von Schaltungen oder Logik implementiert sein, einschließlich einer oder mehrerer arithmetisch-logischer Einheiten (ALUs). In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2800 ohne Einschränkung Tausende oder Millionen von Instanzen von Neuronen 2802 beinhalten, aber es kann eine beliebige geeignete Anzahl von Neuronen 2802 verwendet werden. In mindestens einer Ausführungsform kann jede Instanz des Neurons 2802 einen Neuroneneingang 2804 und einen Neuronenausgang 2806 beinhalten. In mindestens einer Ausführungsform können die Neuronen 2802 Ausgaben erzeugen, die an Eingänge anderer Instanzen von Neuronen 2802 übertragen werden können. Zum Beispiel können in mindestens einer Ausführungsform die Neuroneneingänge 2804 und die Neuronenausgänge 2806 über Synapsen 2808 zusammengeschaltet sein.
  • In mindestens einer Ausführungsform können die Neuronen 2802 und die Synapsen 2808 derart zusammengeschaltet sein, dass der neuromorphe Prozessor 2800 arbeitet, um die durch den neuromorphen Prozessor 2800 empfangenen Informationen zu verarbeiten oder zu analysieren. In mindestens einer Ausführungsform können die Neuronen 2802 einen Ausgabeimpuls (oder „Fire“ oder „Spike“) übertragen, wenn die über den Neuroneneingang 2804 empfangenen Eingaben einen Schwellenwert überschreiten. In mindestens einer Ausführungsform können die Neuronen 2802 die an den Neuroneneingängen 2804 empfangenen Signale summieren oder integrieren. Zum Beispiel können in mindestens einer Ausführungsform die Neuronen 2802 als leckende Integrate-and-Fire-Neuronen implementiert sein, wobei, falls eine Summe (als „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet, das Neuron 2802 eine Ausgabe (oder „Feuern“) unter Verwendung einer Übertragungsfunktion, wie etwa einer Sigmoid- oder Schwellenwertfunktion, erzeugen kann. In mindestens einer Ausführungsform kann ein leckendes Integrate-and-Fire-Neuron Signale, die an den Neuroneneingängen 2804 empfangen werden, zu einem Membranpotential summieren und auch einen Abklingfaktor (oder ein Leck) anwenden, um ein Membranpotential zu reduzieren. In mindestens einer Ausführungsform kann ein leckendes Integrate-and-Fire-Neuron feuern, falls mehrere Eingabesignale an den Neuroneneingängen 2804 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d. h., bevor ein Membranpotential zu weit nach unten abklingt, um zu feuern). In mindestens einer Ausführungsform können die Neuronen 2802 unter Verwendung von Schaltungen oder Logik implementiert sein, die Eingaben empfangen, Eingaben in ein Membranpotential integrieren und ein Membranpotential abklingen lassen. In mindestens einer Ausführungsform können Eingaben gemittelt werden oder kann eine beliebige andere geeignete Übertragungsfunktion verwendet werden. Darüber hinaus können die Neuronen 2802 in mindestens einer Ausführungsform ohne Einschränkung Komparatorschaltungen oder -logik beinhalten, die einen Ausgabe-Spike an dem Neuronenausgang 2806 erzeugen, wenn das Ergebnis des Anwendens einer Übertragungsfunktion auf den Neuroneneingang 2804 einen Schwellenwert überschreitet. In mindestens einer Ausführungsform kann das Neuron 2802, sobald es feuert, zuvor empfangene Eingabeinformationen ignorieren, indem es zum Beispiel ein Membranpotential auf 0 oder einen anderen geeigneten Standardwert zurücksetzt. In mindestens einer Ausführungsform kann das Neuron 2802, sobald das Membranpotential auf 0 zurückgesetzt wurde, nach einer geeigneten Zeitspanne (oder Refraktärzeit) den normalen Betrieb wiederaufnehmen.
  • In mindestens einer Ausführungsform können die Neuronen 2802 durch die Synapsen 2808 zusammengeschaltet sein. In mindestens einer Ausführungsform können die Synapsen 2808 arbeiten, um Signale von einem Ausgang eines ersten Neurons 2802 an einen Eingang eines zweiten Neurons 2802 zu übertragen. In mindestens einer Ausführungsform können die Neuronen 2802 Informationen über mehr als eine Instanz der Synapse 2808 übertragen. In mindestens einer Ausführungsform können eine oder mehrere Instanzen des Neuronenausgangs 2806 über eine Instanz der Synapse 2808 mit einer Instanz des Neuroneneingangs 2804 in dem gleichen Neuron 2802 verbunden sein. In mindestens einer Ausführungsform kann eine Instanz des Neurons 2802, die eine über eine Instanz der Synapse 2808 zu übertragende Ausgabe erzeugt, als „präsynaptisches Neuron“ in Bezug auf diese Instanz der Synapse 2808 bezeichnet werden. In mindestens einer Ausführungsform kann eine Instanz des Neurons 2802, die eine über eine Instanz der Synapse 2808 übertragene Eingabe empfängt, als „postsynaptisches Neuron“ in Bezug auf diese Instanz der Synapse 2808 bezeichnet werden. Da eine Instanz des Neurons 2802 Eingaben von einer oder mehreren Instanzen der Synapse 2808 empfangen kann und auch Ausgaben über eine oder mehrere Instanzen der Synapse 2808 übertragen kann, kann in mindestens einer Ausführungsform eine einzelne Instanz des Neurons 2802 daher sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Instanzen der Synapsen 2808 sein.
  • In mindestens einer Ausführungsform können die Neuronen 2802 in eine oder mehrere Schichten organisiert sein. In mindestens einer Ausführungsform kann jede Instanz des Neurons 2802 einen Neuronenausgang 2806 aufweisen, der sich durch eine oder mehrere Synapsen 2808 zu einem oder mehreren Neuroneneingängen 2804 auffächern kann. In mindestens einer Ausführungsform können die Neuronenausgänge 2806 der Neuronen 2802 in einer ersten Schicht 2810 mit den Neuroneneingängen 2804 der Neuronen 2802 in einer zweiten Schicht 2812 verbunden sein. In mindestens einer Ausführungsform kann die Schicht 2810 als „vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 2802 in einer Instanz der ersten Schicht 2810 zu jeder Instanz des Neurons 2802 in der zweiten Schicht 2812 auffächern. In mindestens einer Ausführungsform kann die erste Schicht 2810 als „vollständig verbundene vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann sich jede Instanz des Neurons 2802 in einer Instanz der zweiten Schicht 2812 zu weniger als allen Instanzen des Neurons 2802 in einer dritten Schicht 2814 auffächern. In mindestens einer Ausführungsform kann die zweite Schicht 2812 als „spärlich verbundene vorwärtsgekoppelte Schicht“ bezeichnet werden. In mindestens einer Ausführungsform können sich die Neuronen 2802 in der zweiten Schicht 2812 zu den Neuronen 2802 in mehreren anderen Schichten auffächern, einschließlich zu den Neuronen 2802, die sich ebenfalls in der zweiten Schicht 2812 befinden. In mindestens einer Ausführungsform kann die zweite Schicht 2812 als „rekurrente Schicht“ bezeichnet werden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2800 ohne Einschränkung eine beliebige geeignete Kombination von rekurrenten Schichten und vorwärtsgekoppelten Schichten beinhalten, einschließlich ohne Einschränkung sowohl spärlich verbundener vorwärtsgekoppelter Schichten als auch vollständig verbundener vorwärtsgekoppelter Schichten.
  • In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2800 ohne Einschränkung eine rekonfigurierbare Zusammenschaltungsarchitektur oder dedizierte fest verdrahtete Zusammenschaltungen beinhalten, um die Synapse 2808 mit den Neuronen 2802 zu verbinden. In mindestens einer Ausführungsform kann der neuromorphe Prozessor 2800 ohne Einschränkung Schaltung oder Logik beinhalten, die es ermöglicht, Synapsen je nach Bedarf auf Grundlage der Topologie des neuronalen Netzes und des Neuronen-Fan-In/-Out unterschiedlichen Neuronen 2802 zuzuweisen. Zum Beispiel können in mindestens einer Ausführungsform die Synapsen 2808 mit den Neuronen 2802 unter Verwendung einer Zusammenschaltungsstruktur, wie etwa eines Netzes auf einem Chip, oder mit dedizierten Verbindungen verbunden sein. In mindestens einer Ausführungsform können die Synapsenzusammenschaltungen und Komponenten davon unter Verwendung von Schaltungen oder Logik implementiert sein.
  • 29 ist ein Blockdiagramm eines Verarbeitungssystems gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet das System 2900 einen oder mehrere Prozessoren 2902 und einen oder mehrere Grafikprozessoren 2908 und kann ein Einzelprozessor-Desktop-System, ein Mehrprozessor-Workstation-System oder ein Server-System sein, dass eine große Anzahl von Prozessoren 2902 oder Prozessorkernen 2907 aufweist. In mindestens einer Ausführungsform ist das System 2900 eine Verarbeitungsplattform, die in eine integrierte Schaltung als System auf einem Chip (SoC) zur Verwendung in mobilen, tragbaren oder eingebetteten Vorrichtungen integriert ist.
  • In mindestens einer Ausführungsform kann das System 2900 eine serverbasierte Spieleplattform, eine Spielekonsole, einschließlich einer Spiele- und Medienkonsole, eine mobile Spielekonsole, eine tragbare Spielekonsole oder eine Online-Spielekonsole beinhalten oder in diese integriert sein. In mindestens einer Ausführungsform ist das System 2900 ein Mobiltelefon, ein Smartphone, eine Tablet-Rechenvorrichtung oder eine mobile Internet-Vorrichtung. In mindestens einer Ausführungsform kann das Verarbeitungssystem 2900 auch eine tragbare Vorrichtung beinhalten, mit dieser gekoppelt oder in diese integriert sein, wie etwa eine Smartwatch-Wearable-Vorrichtung, eine Smart-Eyewear-Vorrichtung, eine Augmented-Reality-Vorrichtung oder eine Virtual-Reality-Vorrichtung. In mindestens einer Ausführungsform ist das Verarbeitungssystem 2900 eine Fernseh- oder Set-Top-Box-Vorrichtung, die einen oder mehrere Prozessoren 2902 und eine grafische Schnittstelle aufweist, die durch einen oder mehrere Grafikprozessoren 2908 erzeugt wird.
  • In mindestens einer Ausführungsform beinhalten ein oder mehrere Prozessoren 2902 jeweils einen oder mehrere Prozessorkerne 2907 zum Verarbeiten von Anweisungen, die bei ihrer Ausführung Operationen für System- und Benutzer-Software durchführen. In mindestens einer Ausführungsform ist jeder von einem oder mehreren Prozessorkernen 2907 so konfiguriert, dass er eine spezifische Anweisungssequenz 2909 verarbeitet. In mindestens einer Ausführungsform kann die Anweisungssequenz 2909 Complex Instruction Set Computing (CISC), Reduced Instruction Set Computing (RISC) oder Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. In mindestens einer Ausführungsform können die Prozessorkerne 2907 jeweils eine andere Anweisungssequenz 2909 verarbeiten, die Anweisungen beinhalten kann, um die Emulation anderer Anweisungssequenzen zu erleichtern. In mindestens einer Ausführungsform kann der Prozessorkern 2907 auch andere Verarbeitungsvorrichtungen beinhalten, wie etwa einen digitalen Signalprozessor (DSP).
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 2902 einen Cache-Speicher 2904. In mindestens einer Ausführungsform kann der Prozessor 2902 einen einzelnen internen Cache oder mehrere Levels von internem Cache aufweisen. In mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 2902 gemeinsam genutzt. In mindestens einer Ausführungsform verwendet der Prozessor 2902 auch einen externen Cache (z. B. einen Level-3-(L3-)Cache oder Last-Level-Cache (LLC)) (nicht gezeigt), der unter Verwendung bekannter Cache-Kohärenztechniken von den Prozessorkernen 2907 gemeinsam genutzt werden kann. In mindestens einer Ausführungsform ist in dem Prozessor 2902 zusätzlich eine Registerbank 2906 enthalten, die unterschiedliche Typen von Registern zum Speichern unterschiedlicher Datentypen beinhalten kann (z. B. Integerregister, Gleitkommaregister, Statusregister und ein Anweisungszeigerregister). In mindestens einer Ausführungsform kann die Registerbank 2906 Allzweckregister oder andere Register beinhalten.
  • In mindestens einer Ausführungsform sind ein oder mehrere Prozessor(en) 2902 mit einem oder mehreren Schnittstellenbus(sen) 2910 gekoppelt, um Kommunikationssignale, wie etwa Adress-, Daten- oder Steuersignale, zwischen dem Prozessor 2902 und anderen Komponenten in dem System 2900 zu übertragen. In mindestens einer Ausführungsform kann der Schnittstellenbus 2910 ein Prozessorbus sein, wie etwa eine Version eines Direct-Media-Interface-(DMI-)Busses. In mindestens einer Ausführungsform ist der Schnittstellenbus 2910 nicht auf einen DMI-Bus beschränkt, sondern kann einen oder mehrere Peripheral-Component-Interconnect-Busse (z. B. PCI, PCI Express), Speicherbusse oder andere Typen von Schnittstellenbussen beinhalten. In mindestens einer Ausführungsform beinhalten die Prozessor(en) 2902 eine integrierte Speichersteuerung 2916 und einen Plattformsteuerungs-Hub 2930. In mindestens einer Ausführungsform ermöglicht die Speichersteuerung 2916 die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 2900, während der Plattformsteuerungs-Hub (platform controller hub - PCH) 2930 Verbindungen mit E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellt.
  • In mindestens einer Ausführungsform kann eine Speichervorrichtung 2920 eine Vorrichtung mit dynamischem Direktzugriffsspeicher (DRAM), eine Vorrichtung mit statischem Direktzugriffsspeicher (SRAM), eine Flash-Speichervorrichtung, eine Phasenwechsel-Speichervorrichtung oder eine andere Speichervorrichtung sein, die eine geeignete Rechenleistung aufweist, um als Prozessspeicher zu dienen. In mindestens einer Ausführungsform kann die Speichervorrichtung 2920 als Systemspeicher für das System 2900 arbeiten, um Daten 2922 und Anweisungen 2921 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 2902 eine Anwendung oder einen Prozess ausführen. In mindestens einer Ausführungsform ist die Speichersteuerung 2916 zudem an einen optionalen externen Grafikprozessor 2912 gekoppelt, der mit einem oder mehreren Grafikprozessoren 2908 in den Prozessoren 2902 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In mindestens einer Ausführungsform kann eine Anzeigevorrichtung 2911 mit den Prozessor(en) 2902 verbunden sein. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2911 eine oder mehrere von einer internen Anzeigevorrichtung, wie in einer mobilen elektronischen Vorrichtung oder einer Laptop-Vorrichtung, oder einer externen Anzeigevorrichtung beinhalten, die über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) angeschlossen ist. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 2911 eine am Kopf befestigte Anzeige (head mounted display - HMD) beinhalten, wie etwa eine stereoskopische Anzeigevorrichtung zur Verwendung bei Virtual-Reality-(VR-)Anwendungen oder Augmented-Reality-(AR-)Anwendungen.
  • In mindestens einer Ausführungsform ermöglicht der Plattformsteuerungs-Hub 2930, dass Peripheriegeräte mit der Speichervorrichtung 2920 und dem Prozessor 2902 über einen Hochgeschwindigkeits-E/A-Bus verbunden werden. In mindestens einer Ausführungsform beinhalten die E/A-Peripheriegeräte eine Audiosteuerung 2946, eine Netzsteuerung 2934, eine Firmware-Schnittstelle 2928, einen drahtlosen Sendeempfänger 2926, Berührungssensoren 2925 und eine Datenspeichervorrichtung 2924 (z. B. Festplattenlaufwerk, Flash-Speicher usw.). In mindestens einer Ausführungsform kann die Datenspeichervorrichtung 2924 über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriebus, wie etwa einen Peripheral-Component-Interconnect-Bus (z. B. PCI, PCI Express), verbunden sein. In mindestens einer Ausführungsform können die Berührungssensoren 2925 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren beinhalten. In mindestens einer Ausführungsform kann der drahtlose Sendeempfänger 2926 ein Wi-Fi-Sendeempfänger, ein Bluetooth-Sendeempfänger oder ein Sendeempfänger für ein mobiles Netz, wie etwa ein 3G-, 4G- oder Long-Term-Evolution-(LTE-)Sendeempfänger sein. In mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 2928 die Kommunikation mit der System-Firmware und kann zum Beispiel eine Unified Extensible Firmware Interface (UEFI) sein. In mindestens einer Ausführungsform kann die Netzwerksteuerung 2934 eine Netzwerkverbindung zu einem drahtgebundenen Netzwerk ermöglichen. In mindestens einer Ausführungsform ist eine Hochleistungsnetzwerksteuerung (nicht gezeigt) mit dem Schnittstellenbus 2910 gekoppelt. In mindestens einer Ausführungsform ist die Audiosteuerung 2946 eine Mehrkanal-High-Definition-Audiosteuerung. In mindestens einer Ausführungsform beinhaltet das System 2900 eine optionale ältere E/A-Steuerung 2940 zum Koppeln von älteren Vorrichtungen (z. B. Personal System 2 (PS/2)) an das System 2900. In mindestens einer Ausführungsform kann der Plattformsteuerungs-Hub 2930 auch mit einer oder mehreren Universal-Serial-Bus-(USB-)Steuerungen 2942 verbunden sein, die mit Eingabevorrichtungen, wie etwa Kombinationen aus Tastatur und Maus 2943, einer Kamera 2944 oder anderen USB-Eingabevorrichtungen, verbunden sind.
  • In mindestens einer Ausführungsform kann eine Instanz der Speichersteuerung 2916 und des Plattformsteuerungs-Hubs 2930 in einen diskreten externen Grafikprozessor, wie etwa den externen Grafikprozessor 2912, integriert sein. In mindestens einer Ausführungsform können der Plattformsteuerungs-Hub 2930 und/oder die Speichersteuerung 2916 extern zu einem oder mehreren Prozessor(en) 2902 sein. Zum Beispiel kann das System 2900 in mindestens einer Ausführungsform eine externe Speichersteuerung 2916 und einen Plattformsteuerungs-Hub 2930 beinhalten, der als Speichersteuerungs-Hub und Peripheriesteuerungs-Hub innerhalb eines Systemchipsatzes konfiguriert sein kann, der mit den Prozessor(en) 2902 in Kommunikation steht.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Grafikprozessor 2908 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 10A oder 10B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 2908 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 30 ist ein Blockdiagramm eines Prozessors 3000, der einen oder mehrere Prozessorkerne 3002A-3002N, eine integrierte Speichersteuerung 3014 und einen integrierten Grafikprozessor 3008 aufweist, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozessor 3000 zusätzliche Kerne bis einschließlich des zusätzlichen Kerns 3002N beinhalten, die durch Kästen mit gestrichelten Linien dargestellt sind. In mindestens einer Ausführungsform beinhaltet jeder der Prozessorkerne 3002A-3002N eine oder mehrere interne Cache-Einheiten 3004A-3004N. In mindestens einer Ausführungsform weist jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 3006 auf.
  • In mindestens einer Ausführungsform stellen die internen Cache-Einheiten 3004A-3004N und die gemeinsam genutzten Cache-Einheiten 3006 eine Cache-Speicherhierarchie innerhalb des Prozessors 3000 dar. In mindestens einer Ausführungsform können die Cache-Speichereinheiten 3004A-3004N mindestens ein Level von Anweisungs- und Daten-Cache innerhalb jedes Prozessorkerns und ein oder mehrere Levels von gemeinsam genutztem Cache mittleren Levels, wie etwa ein Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Levels, beinhalten, wobei ein höchstes Cache-Level vor dem externen Speicher als LLC klassifiziert ist. In mindestens einer Ausführungsform hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 3006 und 3004A-3004N aufrecht.
  • In mindestens einer Ausführungsform kann der Prozessor 3000 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 3016 und einen Systemagentenkern 3010 beinhalten. In mindestens einer Ausführungsform verwalten Bussteuerungseinheiten 3016 einen Satz von Peripheriebussen, wie etwa einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einer Ausführungsform stellt der Systemagentenkern 3010 eine Verwaltungsfunktionalität für verschiedene Prozessorkomponenten bereit. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 3010 eine oder mehrere integrierte Speichersteuerungen 3014, um den Zugriff auf verschiedene externe Speichervorrichtungen (nicht gezeigt) zu verwalten.
  • In mindestens einer Ausführungsform beinhalten einer oder mehrere der Prozessorkerne 3002A-3002N Unterstützung für simultanes Multi-Threading. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 3010 Komponenten zum Koordinieren und Betreiben der Kerne 3002A-3002N während der Multi-Thread-Verarbeitung. In mindestens einer Ausführungsform kann der Systemagentenkern 3010 zusätzlich eine Leistungssteuereinheit (power control unit - PCU) beinhalten, die Logik und Komponenten zum Regulieren eines oder mehrerer Leistungszustände der Prozessorkerne 3002A-3002N und des Grafikprozessors 3008 beinhaltet.
  • In mindestens einer Ausführungsform beinhaltet der Prozessor 3000 zusätzlich den Grafikprozessor 3008 zum Ausführen von Grafikverarbeitungsoperationen. In mindestens einer Ausführungsform ist der Grafikprozessor 3008 mit gemeinsam genutzten Cache-Einheiten 3006 und dem Systemagentenkern 3010 gekoppelt, der eine oder mehrere integrierte Speichersteuerungen 3014 beinhaltet. In mindestens einer Ausführungsform beinhaltet der Systemagentenkern 3010 zudem eine Anzeigesteuerung 3011, um die Grafikprozessorausgabe zu einer oder mehreren gekoppelten Anzeigen zu treiben. In mindestens einer Ausführungsform kann die Anzeigesteuerung 3011 auch ein separates Modul sein, das über mindestens eine Zusammenschaltung mit dem Grafikprozessor 3008 gekoppelt ist, oder sie kann in den Grafikprozessor 3008 integriert sein.
  • In mindestens einer Ausführungsform wird eine ringbasierte Zusammenschaltungseinheit 3012 zum Koppeln interner Komponenten des Prozessors 3000 verwendet. In mindestens einer Ausführungsform kann eine alternative Zusammenschaltungseinheit verwendet werden, wie etwa eine Punkt-zu-Punkt-Zusammenschaltung, eine geschaltete Zusammenschaltung oder andere Techniken. In mindestens einer Ausführungsform ist der Grafikprozessor 3008 über eine E/A-Verknüpfung 3013 mit der Ringzusammenschaltung 3012 gekoppelt.
  • In mindestens einer Ausführungsform stellt die E/A-Verknüpfung 3013 mindestens eine von mehreren Sorten von E/A-Zusammenschaltungen dar, einschließlich einer gehäuseinternen E/A-Zusammenschaltung, die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Speichermodul 3018 mit hoher Rechenleistung, wie etwa einem eDRAM-Modul, erleichtert. In mindestens einer Ausführungsform verwenden jeder der Prozessorkerne 3002A-3002N und der Grafikprozessor 3008 ein eingebettetes Speichermodul 3018 als gemeinsam genutzten Last-Level-Cache.
  • In mindestens einer Ausführungsform sind die Prozessorkerne 3002A-3002N homogene Kerne, die eine gemeinsame Anweisungssatzarchitektur ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 3002A-3002N bezüglich der Anweisungssatzarchitektur (instruction set architecture - ISA) heterogen, wobei einer oder mehrere der Prozessorkerne 3002A-3002N einen gemeinsamen Anweisungssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 3002A-3002N eine Teilmenge eines gemeinsamen Anweisungssatzes oder eines anderen Anweisungssatzes ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 3002A-3002N bezüglich der Mikroarchitektur heterogen, wobei ein oder mehrere Kerne, die einen relativ betrachtet höheren Leistungsverbrauch aufweisen, mit einem oder mehreren Kernen, die einen niedrigeren Leistungsverbrauch aufweisen, gekoppelt sind. In mindestens einer Ausführungsform kann der Prozessor 3000 auf einem oder mehreren Chips oder als SoC-integrierte Schaltung implementiert sein.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Grafikprozessor 3008 einbezogen sein. Zum Beispiel können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in einer 3D-Pipeline verkörperten ALUs, Grafikkern(e) 3002, gemeinsam genutzte Logik oder andere Logik in 30 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 10A oder 10B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chip internem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Prozessors 3000 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 31 ist ein Blockdiagramm eines Grafikprozessors 3100, bei dem es sich um eine diskrete Grafikverarbeitungseinheit oder um einen mit einer Vielzahl von Verarbeitungskernen integrierten Grafikprozessor handeln kann. In mindestens einer Ausführungsform kommuniziert der Grafikprozessor 3100 über eine auf Speicher abgebildete E/A-Schnittstelle mit Registern auf dem Grafikprozessor 3100 und mit in Speicher abgelegten Befehlen. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 3100 eine Speicherschnittstelle 3114 zum Zugreifen auf Speicher. In mindestens einer Ausführungsform ist die Speicherschnittstelle 3114 eine Schnittstelle zu lokalem Speicher, einem oder mehreren internen Caches, einem oder mehreren gemeinsam genutzten externen Caches und/oder zu Systemspeicher.
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 3100 zudem eine Anzeigesteuerung 3102, um Anzeigeausgabedaten zu einer Anzeigevorrichtung 3120 zu treiben. In mindestens einer Ausführungsform beinhaltet die Anzeigesteuerung 3102 Hardware für eine oder mehrere Überlagerungsebenen für die Anzeigevorrichtung 3120 und die Komposition mehrerer Schichten von Video- oder Benutzerschnittstellenelementen. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 3120 eine interne oder externe Anzeigevorrichtung sein. In mindestens einer Ausführungsform ist die Anzeigevorrichtung 3120 eine am Kopf befestigte Anzeigevorrichtung, wie etwa eine Virtual-Reality-(VR-)Anzeigevorrichtung oder eine Augmented-Reality-(AR-)Anzeigevorrichtung. In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 3100 eine Videocodec-Engine 3106 zum Codieren, Decodieren oder Transcodieren von Medien in, aus oder zwischen einem oder mehreren Mediencodierformaten, einschließlich, aber nicht beschränkt auf, Moving-Picture-Experts-Group-(MPEG-)Formate wie etwa MPEG-2, Advanced-Video-Coding-(AVC-)Formate wie etwa H.264/MPEG-4 AVC sowie Society of Motion Picture & Television Engineers (SMPTE) 421M/VC-1 und Joint-Photographic-Experts-Group-(JPEG-)Formate wie etwa JPEG und Motion JPEG (MJPEG).
  • In mindestens einer Ausführungsform beinhaltet der Grafikprozessor 3100 eine Block-Image-Transfer-(BLIT-)Engine 3104, um zweidimensionale (2D) Rastereroperationen durchzuführen, einschließlich zum Beispiel Bit-Boundary Block Transfers. In mindestens einer Ausführungsform werden jedoch 2D-Grafikoperationen unter Verwendung einer oder mehreren Komponenten einer Grafikverarbeitungs-Engine (graphics processing engine - GPE) 3110 durchgeführt. In mindestens einer Ausführungsform ist die GPE 3110 eine Rechen-Engine zum Durchführen von Grafikoperationen, einschließlich dreidimensionaler (3D) Grafikoperationen und Medienoperationen.
  • In mindestens einer Ausführungsform beinhaltet die GPE 3110 eine 3D-Pipeline 3112 zum Durchführen von 3D-Operationen, wie etwa Rendern dreidimensionaler Bilder und Szenen unter Verwendung von Verarbeitungsfunktionen, die an 3D-Primitivformen (z. B. Rechteck, Dreieck usw.) wirken. In mindestens einer Ausführungsform beinhaltet die 3D-Pipeline 3112 programmierbare Elemente und Festfunktionselemente, die verschiedene Tasks durchführen und/oder Ausführungs-Threads für ein 3D-/Medienteilsystem 3115 erzeugen. Während die 3D-Pipeline 3112 zum Durchführen von Medienoperationen verwendet werden kann, beinhaltet die GPE 3110 in mindestens einer Ausführungsform auch eine Medienpipeline 3116, die zum Durchführen von Medienoperationen, wie etwa Videonachverarbeitung und Bildverbesserung, verwendet wird.
  • In mindestens einer Ausführungsform beinhaltet die Medienpipeline 3116 Festfunktions- oder programmierbare Logikeinheiten, um eine oder mehrere spezialisierte Medienoperationen durchzuführen, wie etwa Beschleunigung von Videodecodierung, Videoentschachtelung und Beschleunigung von Videocodierung anstelle oder im Auftrag der Videocodec-Engine 3106. In mindestens einer Ausführungsform beinhaltet die Medienpipeline 3116 zusätzlich eine Thread-Erzeugungseinheit, um Threads zum Ausführen auf dem 3D-/Medienteilsystem 3115 zu erzeugen. In mindestens einer Ausführungsform führen erzeugte Threads Berechnungen für Medienoperationen auf einer oder mehreren Grafikausführungseinheiten aus, die in dem 3D-/Medienteilsystem 3115 enthalten sind.
  • In mindestens einer Ausführungsform beinhaltet das 3D-/Medienteilsystem 3115 Logik zum Ausführen von Threads, die durch die 3D-Pipeline 3112 und die Medienpipeline 3116 erzeugt werden. In mindestens einer Ausführungsform senden die 3D-Pipeline 3112 und die Medienpipeline 3116 Thread-Ausführungsanforderungen an das 3D-/Medienteilsystem 3115, das Thread-Zuteilungslogik zum Vermitteln und Zuteilen verschiedener Anforderungen an verfügbare Thread-Ausführungsressourcen beinhaltet. In mindestens einer Ausführungsform beinhalten die Ausführungsressourcen ein Array von Grafikausführungseinheiten zum Verarbeiten von 3D- und Medien-Threads. In mindestens einer Ausführungsform beinhaltet das 3D-/Medienteilsystem 3115 einen oder mehrere interne Caches für Thread-Anweisungen und Daten. In mindestens einer Ausführungsform beinhaltet das Teilsystem 3115 auch gemeinsam genutzten Speicher, einschließlich Registern und adressierbaren Speichers, um Daten zwischen Threads gemeinsam zu nutzen und Ausgabedaten zu speichern.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zur Inferenz- und/oder Trainingslogik 1015 werden hier in Verbindung mit den 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Grafikprozessor 3100 integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in der 3D-Pipeline 3112 enthaltenen ALUs verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hier beschriebenen Inferenz- und/oder Trainingsoperationen mit einer anderen als der in 10A oder 10B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (dargestellt oder nicht dargestellt) gespeichert werden, die die ALUs des Grafikprozessors 3100 so konfigurieren, dass sie einen oder mehrere hierin beschriebene maschinelle Lernalgorithmen, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchführen.
  • 32 ist ein Blockdiagramm einer Grafikverarbeitungsmaschine 3210 eines Grafikprozessors gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die Grafikverarbeitungsmaschine (GPE) 3210 eine Version der in 31 gezeigten GPE 3110. In mindestens einer Ausführungsform ist eine Medienpipeline 3216 optional und kann nicht explizit in die GPE 3210 eingeschlossen werden. In mindestens einer Ausführungsform ist ein getrennter Medien- und/oder Bildprozessor mit GPE 3210 verbunden.
  • In mindestens einer Ausführungsform ist GPE 3210 mit einem Befehlsstreamer 3203 gekoppelt oder schließt diesen ein, der einen Befehlsstrom für eine 3D-Pipeline 3212 und/oder Medienpipeline 3216 bereitstellt. In mindestens einer Ausführungsform ist der Befehlsstreamer 3203 mit einem Speicher gekoppelt, bei dem es sich um einen Systemspeicher oder einen oder mehrere interne Cache-Speicher und gemeinsam genutzte Cache-Speicher handeln kann. In mindestens einer Ausführungsform empfängt der Command Streamer 3203 Befehle aus dem Speicher und sendet sie an die 3D-Pipeline 3212 und/oder die Media Pipeline 3216. In mindestens einer Ausführungsform handelt es sich bei den Befehlen um Anweisungen, Primitive oder Mikrooperationen, die aus einem Ringpuffer abgerufen werden, in dem Befehle für die 3D-Pipeline 3212 und die Media-Pipeline 3216 gespeichert sind. In mindestens einer Ausführungsform kann ein Ringpuffer zusätzlich Batch-Befehlspuffer einschließen, die Stapel von mehreren Befehlen speichern. In mindestens einer Ausführungsform können die Befehle für die 3D-Pipeline 3212 auch Verweise auf im Speicher gespeicherte Daten einschließen, wie z. B. Scheitelpunkt- und Geometriedaten für die 3D-Pipeline 3212 und/oder Bilddaten und Speicheraufgaben für die Medien-Pipeline 3216, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform verarbeiten die 3D-Pipeline 3212 und die Medien-Pipeline 3216 Befehle und Daten, indem sie Operationen durchführen oder einen oder mehrere Ausführungs-Threads an eine Grafikkernreihe 3214 weiterleiten. In mindestens einer Ausführungsform schließt die Reihe der Grafikkerne 3214 einen oder mehrere Blöcke von Grafikkernen ein (z. B. Grafikkern(e) 3215A, Grafikkern(e) 3215B), wobei jeder Block einen oder mehrere Grafikkerne einschließt. In mindestens einer Ausführungsform schließt jeder Grafikkern eine Reihe von Grafikausführungsressourcen ein, die eine allgemeine und eine grafikspezifische Ausführungslogik zum Durchführen von Grafik- und Rechenoperationen sowie eine Texturverarbeitungslogik mit fester Funktion und/oder eine Beschleunigungslogik für maschinelles Lernen und künstliche Intelligenz einschließen, einschließlich der Inferenz- und/oder Trainingslogik 1015 in 10A und 10B.
  • In mindestens einer Ausführungsform schließt die 3D-Pipeline 3212 eine fest funktionierende und programmierbare Logik ein, um ein oder mehrere Shader-Programme wie Scheitelpunkt-Shader, Geometrie-Shader, Pixel-Shader, Fragment-Shader, Rechen-Shader oder andere Shader-Programme auszuführen, indem sie Anweisungen verarbeitet und Ausführungs-Threads an die Reihe 3214 des Grafikkerns sendet. In mindestens einer Ausführungsform stellt die Reihe 3214 der Grafikkerne einen einheitlichen Block von Ausführungsressourcen für die Verarbeitung von Shader-Programmen bereit. In mindestens einer Ausführungsform schließt eine Mehrzweck-Ausführungslogik (z. B. Ausführungseinheiten) innerhalb des/der Grafikkerns/Grafikkerne 3215A-3215B der Reihe 3214 Unterstützung für verschiedene 3D API Shader-Sprachen ein und kann mehrere gleichzeitige, mehreren Shadern zugeordnete Ausführungs-Threads ausführen.
  • In mindestens einer Ausführungsform schließt die Reihe der Grafikkerne 3214 auch eine Ausführungslogik ein, um Medienfunktionen wie Video- und/oder Bildverarbeitung auszuführen. In mindestens einer Ausführungsform schließen die Ausführungseinheiten zusätzlich eine Mehrzwecklogik ein, die so programmiert werden kann, dass sie zusätzlich zu den Operationen der Grafikverarbeitung parallele Mehrzweck-Rechenoperationen durchführt.
  • In mindestens einer Ausführungsform können Ausgabedaten, die von Threads erzeugt werden, die auf der Reihe 3214 des Grafikkerns ausgeführt werden, an den Speicher in einem Unified Return Buffer (URB) 3218 ausgegeben werden. In mindestens einer Ausführungsform kann der URB 3218 Daten für mehrere Threads speichern. In mindestens einer Ausführungsform kann der URB 3218 verwendet werden, um Daten zwischen verschiedenen Threads zu senden, die auf der Reihe 3214 ausgeführt werden. In mindestens einer Ausführungsform kann URB 3218 zusätzlich für die Synchronisation zwischen Threads auf der Grafikkernreihe 3214 und der festen Funktionslogik innerhalb der gemeinsamen Funktionslogik 3220 verwendet werden.
  • In mindestens einer Ausführungsform ist die Reihe der Grafikkerne 3214 skalierbar, so dass die Reihe der Grafikkerne 3214 eine variable Anzahl von Grafikkernen einschließt, von denen jeder eine variable Anzahl von Ausführungseinheiten basierend auf einem angestrebten Energie- und Leistungsniveau des GPE 3210 aufweist. In mindestens einer Ausführungsform sind die Ausführungsressourcen dynamisch skalierbar, so dass die Ausführungsressourcen nach Bedarf aktiviert oder deaktiviert werden können.
  • In mindestens einer Ausführungsform ist die Grafikkernreihe 3214 mit einer gemeinsam genutzten Funktionslogik 3220 gekoppelt, die mehrere Ressourcen einschließt, die von den Grafikkernen in der Grafikkernreihe 3214 gemeinsam genutzt werden. In mindestens einer Ausführungsform sind die von der gemeinsamen Funktionslogik 3220 durchgeführten gemeinsamen Funktionen in Hardware-Logikeinheiten verkörpert, die spezielle Zusatzfunktionen für die Grafikkernreihe 3214 bereitstellen. In mindestens einer Ausführungsform schließt die gemeinsame Funktionslogik 3220 eine Sampler-Einheit 3221, eine Mathematikeinheit 3222 und eine Inter-Thread-Kommunikationslogik (ITC) 3223 ein, ist aber nicht darauf beschränkt. In mindestens einer Ausführungsform sind ein oder mehrere Cache(s) 3225 in die gemeinsame Funktionslogik 3220 eingeschlossen oder mit ihr gekoppelt.
  • In mindestens einer Ausführungsform wird eine gemeinsam genutzte Funktion verwendet, wenn die Nachfrage nach einer speziellen Funktion nicht ausreicht, um sie in die Reihe der Grafikkerne 3214 aufzunehmen. In mindestens einer Ausführungsform wird eine einzelne Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 3220 verwendet und mit anderen Ausführungsressourcen innerhalb der Reihe 3214 des Grafikkerns geteilt. In mindestens einer Ausführungsform können bestimmte gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 3220, die von der Grafikkernreihe 3214 ausgiebig genutzt werden, in die gemeinsam genutzte Funktionslogik 3226 innerhalb der Grafikkernreihe 3214 eingeschlossen werden. In mindestens einer Ausführungsform kann die gemeinsame Funktionslogik 3226 innerhalb der Reihe 3214 einige oder alle Funktionen der gemeinsamen Funktionslogik 3220 einschließen. In mindestens einer Ausführungsform können alle Logikelemente der gemeinsam genutzten Funktionslogik 3220 in der gemeinsam genutzten Funktionslogik 3226 der Grafikkernreihe 3214 dupliziert sein. In mindestens einer Ausführungsform wird die gemeinsam genutzte Funktionslogik 3220 zugunsten der gemeinsam genutzten Funktionslogik 3226 in der Reihe 3214 des Grafikkerns ausgeschlossen.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zur Inferenz- und/oder Trainingslogik 1015 werden hier in Verbindung mit den 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Grafikprozessor 3210 integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der in der 3D-Pipeline 3212 enthaltenen ALUs, den/die Grafikkern(e) 3215, die gemeinsam genutzte Funktionslogik 3226, die gemeinsam genutzte Funktionslogik 3220 oder eine andere Logik in 32 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hier beschriebenen Inferenz- und/oder Trainingsoperationen mit einer anderen als der in den 10A oder 10B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 3210 konfigurieren, um einen oder mehrere hier beschriebene maschinelle Lernalgorithmen, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 33 ist ein Blockdiagramm der Hardwarelogik eines Grafikprozessorkerns 3300 gemäß mindestens einer hierin beschriebenen Ausführungsform. In mindestens einer Ausführungsform ist der Grafikprozessorkern 3300 in einer Reihe von Grafikkernen eingeschlossen. In mindestens einer Ausführungsform kann der Grafikprozessorkern 3300, der manchmal auch als Scheibe bezeichnet wird, ein oder mehrere Grafikkerne innerhalb eines modularen Grafikprozessors sein. In mindestens einer Ausführungsform ist der Grafikprozessorkern 3300 beispielhaft für eine Grafikkernscheibe, und ein hierin beschriebener Grafikprozessor kann mehrere Grafikkernscheiben einschließen, basierend auf den angestrebten Energie- und Leistungsumfängen. In mindestens einer Ausführungsform kann jeder Grafikkern 3300 einen festen Funktionsblock 3330 einschließen, der mit mehreren Unterkernen 3301A-3301F gekoppelt ist, die auch als Unterscheiben bezeichnet werden und modulare Blöcke von Mehrzweck- und fester Funktionslogik einschließen.
  • In mindestens einer Ausführungsform schließt der Festfunktionsblock 3330 eine Geometrie- und Festfunktionspipeline 3336 ein, die von allen Sub-Cores im Grafikprozessor 3300 gemeinsam genutzt werden kann, zum Beispiel in Grafikprozessor-Implementierungen mit geringerer Leistung und/oder geringerem Energieverbrauch. In mindestens einer Ausführungsform schließt die Geometrie- und Festfunktionspipeline 3336 eine 3D-Festfunktionspipeline, eine Video-Front-End-Einheit, einen Thread-Spawner und Thread-Dispatcher sowie einen Unified-Return-Puffer-Manager ein, der Unified-Return-Puffer verwaltet.
  • In mindestens einer Ausführungsform schließt der feste Funktionsblock 3330 auch eine Grafik-SoC-Schnittstelle 3337, einen Grafik-Mikrocontroller 3338 und eine Medienpipeline 3339 ein. In mindestens einer Ausführungsform stellt die Grafik-SoC-Schnittstelle 3337 eine Schnittstelle zwischen dem Grafikkern 3300 und anderen Prozessorkernen innerhalb eines integrierten System-on-Chip-Schaltkreises bereit. In mindestens einer Ausführungsform ist der Grafik-Mikrocontroller 3338 ein programmierbarer Subprozessor, der so konfiguriert werden kann, dass er verschiedene Funktionen des Grafikprozessors 3300 verwaltet, einschließlich Thread Dispatch, Scheduling und Preemption. In mindestens einer Ausführungsform schließt die Medien-Pipeline 3339 eine Logik ein, die das Dekodieren, Kodieren, Vorverarbeiten und/oder Nachverarbeiten von Multimediadaten, einschließlich Bild- und Videodaten, erleichtert. In mindestens einer Ausführungsform implementiert die Medienpipeline 3339 Medienoperationen über Anfragen an die Rechen- oder Abtastlogik innerhalb der Sub-Cores 3301A-3301F.
  • In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 3337 dem Grafikkern 3300 die Kommunikation mit Mehrzweck-Anwendungsprozessorkernen (z. B. CPUs) und/oder anderen Komponenten innerhalb eines SoC, einschließlich Elementen der Speicherhierarchie wie einem gemeinsam genutzten Cache-Speicher der letzten Ebene, System-RAM und/oder eingebettetem On-Chip- oder On-Package-DRAM In mindestens einer Ausführungsform kann die SoC-Schnittstelle 3337 auch die Kommunikation mit festen Vorrichtungen innerhalb eines SoCs ermöglichen, wie z. B. Kamera-Bildgeber-Pipelines, und ermöglicht die Nutzung und/oder Implementierung globaler Speicher-Atomik, die von Grafikkern 3300 und CPUs innerhalb eines SoCs gemeinsam genutzt werden kann. In mindestens einer Ausführungsform kann die Grafik-SoC-Schnittstelle 3337 auch Energieverwaltungssteuerungen für den Grafikprozessorkern 3300 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikprozessorkerns 3300 und anderen Taktdomänen innerhalb eines SoCs ermöglichen. In mindestens einer Ausführungsform ermöglicht die SoC-Schnittstelle 3337 den Empfang von Befehlspuffern von einem Befehlsstreamer und einem globalen Thread-Dispatcher, die so konfiguriert sind, dass sie Befehle und Anweisungen für jeden einzelnen oder mehrere Grafikkerne innerhalb eines Grafikprozessors bereitstellen. In mindestens einer Ausführungsform können Befehle und Anweisungen an die Medienpipeline 3339 gesendet werden, wenn Medienoperationen durchgeführt werden sollen, oder an eine Geometrie- und Festfunktionspipeline (z. B. Geometrie- und Festfunktionspipeline 3336 und/oder eine Geometrie- und Festfunktionspipeline 3314), wenn Grafikverarbeitungsoperationen durchgeführt werden sollen.
  • In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3338 so konfiguriert sein, dass er verschiedene Planungs- und Verwaltungsaufgaben für den Grafikkern 3300 durchführt. In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3338 die Planung von Grafik- und/oder Rechenaufgaben auf verschiedenen parallelen Grafikmaschinen in den Reihen 3302A-3302F, 3304A-3304F der Ausführungseinheiten (EU) in den Sub-Cores 3301A-3301F durchführen. In mindestens einer Ausführungsform kann die Hostsoftware, die auf einem CPU-Kern eines SoC ausgeführt wird, der den Grafikkern 3300 einschließt, Arbeitslasten an einen von mehreren Grafikprozessorpfaden übergeben, der eine Operation zur Planung auf einer geeigneten Grafik-Engine aufruft. In mindestens einer Ausführungsform schließen die Operationen das Bestimmen der als nächstes auszuführenden Arbeitslast, das Übergeben einer Arbeitslast an einen Befehlsstreamer, das Vorziehen bestehender Arbeitslasten, die Überwachung des Fortschritts einer Arbeitslast und die Benachrichtigung der Hostsoftware über den Abschluss einer Arbeitslast ein. In mindestens einer Ausführungsform kann der Grafik-Mikrocontroller 3338 auch einen stromsparenden Zustand oder Leerlauf für den Grafikkern 3300 ermöglichen, indem er dem Grafikkern 3300 die Möglichkeit bereitstellt, unabhängig von einem Betriebssystem und/oder einer Grafiktreibersoftware auf einem System Register innerhalb des Grafikkerns 3300 über Zustandsübergänge bei niedrigem Stromverbrauch zu speichern und wiederherzustellen.
  • In mindestens einer Ausführungsform kann der Grafikkern 3300 mehr oder weniger als die veranschaulichten Unterkerne 3301A-3301F aufweisen, bis zu N modulare Unterkerne. In mindestens einer Ausführungsform kann der Grafikkern 3300 für jeden Satz von N Unterkernen auch eine gemeinsam genutzte Funktionslogik 3310, einen gemeinsam genutzten und/oder Cache-Speicher 3312, eine Geometrie-/Festfunktionspipeline 3314 sowie eine zusätzliche Festfunktionslogik 3316 einschließen, um verschiedene Grafik- und Rechenoperationen zu beschleunigen. In mindestens einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 3310 Logikeinheiten (z. B. Sampler, Mathematik und/oder Inter-Thread-Kommunikationslogik) einschließen, die von allen N Sub-Cores im Grafikkern 3300 gemeinsam genutzt werden können. In mindestens einer Ausführungsform kann der gemeinsam genutzte und/oder Cache-Speicher 3312 ein Cache der letzten Ebene für N Sub-Cores 3301A-3301F innerhalb des Grafikkerns 3300 sein und kann auch als gemeinsam genutzter Speicher dienen, auf den mehrere Sub-Cores zugreifen können. In mindestens einer Ausführungsform kann die Geometrie-/Festfunktionspipeline 3314 anstelle der Geometrie-/Festfunktionspipeline 3336 in den Festfunktionsblock 3330 eingeschlossen werden und kann ähnliche Logikeinheiten einschließen.
  • In mindestens einer Ausführungsform schließt der Grafikkern 3300 zusätzliche feste Funktionslogik 3316 ein, die verschiedene feste Funktionsbeschleunigungslogik zur Verwendung durch den Grafikkern 3300 einschließen kann. In mindestens einer Ausführungsform schließt die zusätzliche feste Funktionslogik 3316 eine zusätzliche Geometrie-Pipeline ein, die bei der positionsabhängigen Schattierung funktioniert. Bei der positionsabhängigen Schattierung gibt es mindestens zwei Geometrie-Pipelines, nämlich eine vollständige Geometrie-Pipeline in den Geometrie- und Festfunktions-Pipelines 3314, 3336 und eine Cull-Pipeline, eine zusätzliche Geometrie-Pipeline, die in die zusätzliche Festfunktionslogik 3316 eingeschlossen sein kann. In mindestens einer Ausführungsform ist eine Cull-Pipeline eine abgespeckte Version einer vollständigen Geometrie-Pipeline. In mindestens einer Ausführungsform können eine vollständige Pipeline und eine Cull-Pipeline verschiedene Instanzen einer Anwendung ausführen, wobei jede Instanz einen getrennten Kontext aufweist. In mindestens einer Ausführungsform kann die positionsabhängige Schattierung lange Cull-Läufe von verworfenen Dreiecken ausblenden, so dass die Schattierung in einigen Fällen früher abgeschlossen werden kann. Zum Beispiel kann in mindestens einer Ausführungsform die Cull-Pipeline-Logik innerhalb der zusätzlichen festen Funktionslogik 3316 Positions-Shader parallel zu einer Hauptanwendung ausführen und erzeugt kritische Ergebnisse im Allgemeinen schneller als eine vollständige Pipeline, da eine Cull-Pipeline die Positionsattribute von Scheitelpunkten abruft und schattiert, ohne eine Rasterung und ein Rendering von Pixeln in einen Bildpuffer durchzuführen. In mindestens einer Ausführungsform kann eine Cull-Pipeline die erzeugten kritischen Ergebnisse verwenden, um die Sichtbarkeitsinformationen für alle Dreiecke zu berechnen, unabhängig davon, ob diese Dreiecke gecullt werden. In mindestens einer Ausführungsform kann eine vollständige Pipeline (die in diesem Fall als Replay-Pipeline bezeichnet werden kann) die Sichtbarkeitsinformationen verwenden, um ausgemergelte Dreiecke zu überspringen und nur die sichtbaren Dreiecke zu schattieren, die schließlich an eine Rasterisierungsphase übergeben werden.
  • In mindestens einer Ausführungsform kann die zusätzliche feste Funktionslogik 3316 auch eine Logik zur Beschleunigung des maschinellen Lernens einschließen, wie z. B. eine Logik zur Matrixmultiplikation mit fester Funktion für Implementierungen, die Optimierungen für das Training oder die Inferenzierung des maschinellen Lernens beinhalten.
  • In mindestens einer Ausführungsform schließt jeder Grafik-Sub-Core 3301A-3301F eine Reihe von Ausführungsressourcen ein, die zum Ausführen von Grafik-, Medien- und Rechenoperationen als Reaktion auf Anfragen von Grafik-Pipeline-, Medien-Pipeline- oder Shader-Programmen verwendet werden können. In mindestens einer Ausführungsform schließen die Grafiksubkerne 3301A-3301F mehrere EU-Reihen 3302A 3302F, 3304Av3304F, die Thread-Dispatch- und Inter-Thread-Kommunikationslogik (TD/IC) 3303A-3303F, einen 3D-Sampler (z. B. Textur) 3305A-3305F, einen Media-Sampler 3306A-3306F, einen Shader-Prozessor 3307A-3307F und einen gemeinsamen lokalen Speicher (SLM) 3308A-3308F ein. In mindestens einer Ausführungsform schließen die EU-Reihen 3302A-3302F, 3304A-3304F jeweils mehrere Ausführungseinheiten ein, bei denen es sich um Mehrzweck-Grafikverarbeitungseinheiten handelt, die in der Lage sind, logische Gleitkomma- und Ganzzahl-/Fixpunkt-Operationen im Dienste einer Grafik-, Medien- oder Rechenoperation durchzuführen, einschließlich Grafik-, Medien- oder Rechenshader-Programmen. In mindestens einer Ausführungsform führt die TD/IC-Logik 3303A-3303F lokale Thread-Dispatch- und Thread-Control-Operationen für Ausführungseinheiten innerhalb eines Sub-Cores durch und erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Sub-Cores ausgeführt werden. In mindestens einer Ausführungsform können die 3D-Sampler 3305A-3305F Textur- oder andere 3D-Grafikdaten in den Speicher einlesen. In mindestens einer Ausführungsform können 3D-Sampler Texturdaten basierend auf einem konfigurierten Zustand und einem einer bestimmten Textur zugeordneten Texturformat unterschiedlich lesen. In mindestens einer Ausführungsform können die Medien-Sampler 3306A-3306F ähnliche Operationen basierend auf einem Typ und einem Format durchführen, die den Mediendaten zugeordnet sind. In mindestens einer Ausführungsform kann jeder Grafik-Sub-Core 3301A-3301F abwechselnd einen vereinheitlichten 3D- und Medien-Sampler einschließen. In mindestens einer Ausführungsform können Threads, die auf Ausführungseinheiten in jedem der Sub-Cores 3301A 3301F ausgeführt werden, den gemeinsamen lokalen Speicher 3308A-3308F in jedem Sub-Core nutzen, damit Threads, die innerhalb einer Thread-Gruppe ausgeführt werden, einen gemeinsamen Pool von On-Chip-Speicher nutzen können.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zur Inferenz- und/oder Trainingslogik 1015 werden hier in Verbindung mit den 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte oder die gesamte Inferenz- und/oder Trainingslogik 1015 in den Grafikprozessor 3300 integriert sein. Zum Beispiel können in mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der ALUs in einer 3D-Pipeline, den Grafik-Mikrocontroller 3338, die Geometrie- undFestfunktions-Pipeline 3314 und 3336 oder eine andere Logik in 33 verwenden. Darüber hinaus können in mindestens einer Ausführungsform die hier beschriebenen Inferenz- und/oder Trainingsoperationen mit einer anderen als der in den 10A oder 10B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert werden, die die ALUs des Grafikprozessors 3300 so konfigurieren, dass sie einen oder mehrere der hier beschriebenen maschinellen Lernalgorithmen, neuronalen Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchführen.
  • 34A-34B veranschaulichten eine Thread-Ausführungslogik 3400 einschließlich eines Arrays zum Verarbeiten von Elementen eines Grafikprozessorkerns gemäß mindestens einer Ausfühunrsform. 34A veranschaulicht mindestens eine Ausführungsform, in der die Thread-Ausführungslogik 3400 verwendet wird. 34B veranschaulicht beispielhafte interne Details einer Grafikausführungseinheit 3408 gemäß mindestens einer Ausführungsform.
  • Wie in 34A veranschaulicht, beinhaltet die Thread-Ausführungslogik 3400 in mindestens einer Ausführungsform einen Shader-Prozessor 3402, einen Thread-Zuteiler 3404, einen Anweisungs-Cache 3406, ein skalierbares Ausführungseinheitenarray einschließlich einer Vielzahl von Ausführungseinheiten 3407A-3407N und 3408A-3408N, einen Abtaster 3410, einen Daten-Cache 3412 und einen Datenport 3414. In mindestens einer Ausführungsform kann ein skalierbares Ausführungseinheitenarray dynamisch skalieren, indem eine oder mehrere Ausführungseinheiten (z. B. beliebige der Ausführungseinheiten 3408A-N oder 3407A-N) zum Beispiel auf Grundlage von Rechenanforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In mindestens einer Ausführungsform sind die skalierbaren Ausführungseinheiten über eine Zusammenschaltungsstruktur zusammengeschaltet, die mit jeder Ausführungseinheit verknüpft ist. In mindestens einer Ausführungsform beinhaltet die Thread-Ausführungslogik 3400 eine oder mehrere Verbindungen mit Speicher, wie etwa Systemspeicher oder Cache-Speicher, durch eines oder mehrere des Anweisungs-Caches 3406, des Datenports 3414, des Abtasters 3410 und der Ausführungseinheiten 3407 oder 3408. In mindestens einer Ausführungsform ist jede Ausführungseinheit (z. B. 3407A) eine eigenständige programmierbare Universalrecheneinheit, die dazu in der Lage ist, mehrere simultane Hardware-Threads auszuführen, während mehrere Datenelemente parallel für jeden Thread verarbeitet werden. In mindestens einer Ausführungsform ist das Array der Ausführungseinheiten 3407 und/oder 3408 so skalierbar, dass es eine beliebige Anzahl einzelner Ausführungseinheiten beinhaltet.
  • In mindestens einer Ausführungsform werden die Ausführungseinheiten 3407 und/oder 3408 hauptsächlich zum Ausführen von Shader-Programmen verwendet. In mindestens einer Ausführungsform kann der Shader-Prozessor 3402 verschiedene Shader-Programme verarbeiten und mit den Shader-Programmen assoziierte Ausführungs-Threads über einen Thread-Zuteiler 3404 zuteilen. In mindestens einer Ausführungsform beinhaltet der Thread-Zuteiler 3404 Logik zum Vermitteln von Thread-Initiierungsanforderungen von Grafik- und Medienpipelines und zum Instanziieren angeforderter Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 3407 und/oder 3408. Zum Beispiel kann in mindestens einer Ausführungsform eine Geometriepipeline Vertex-, Tesselierungs- oder Geometrie-Shader der Thread-Ausführungslogik zum Verarbeiten zuteilen. In mindestens einer Ausführungsform kann der Thread-Zuteiler 3404 auch Laufzeit-Thread-Erzeugungsanforderungen von ausführenden Shader-Programmen verarbeiten.
  • In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3407 und/oder 3408 einen Anweisungssatz, der systemeigene Unterstützung für viele Standard-3D-Grafik-Shader-Anweisungen beinhaltet, sodass Shader-Programme aus Grafikbibliotheken (z. B. Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten Vertex- und Geometrieverarbeitung (z. B. Vertexprogramme, Geometrieprogramme und/oder Vertex-Shader), Pixelverarbeitung (z. B. Pixel-Shader, Fragment-Shader) und Universalverarbeitung (z. B. Rechen- und Medien-Shader). In mindestens einer Ausführungsform ist jede der Ausführungseinheiten 3407 und/oder 3408, die eine oder mehrere arithmetisch-logische Einheiten (ALUs) beinhalten, zur Multi-Issue-Single-Instruction-Multiple-Data-(SIMD-)Ausführung in der Lage und der Mehr-Thread-Betrieb ermöglicht eine effiziente Ausführungsumgebung trotz Speicherzugriffen mit höherer Latenz. In mindestens einer Ausführungsform weist jeder Hardware-Thread innerhalb jeder Ausführungseinheit eine dedizierte Registerbank mit hoher Bandbreite und einen damit assoziierten unabhängigen Thread-Zustand auf. In mindestens einer Ausführungsform erfolgt die Ausführung mit mehreren Ausgaben pro Takt an Pipelines, die zu Integer- und Gleitkommaoperationen mit einfacher oder doppelter Genauigkeit, SIMD-Verzweigungsfähigkeit, logischen Operationen, transzendentalen Operationen und anderen sonstigen Operationen in der Lage sind. In mindestens einer Ausführungsform bewirkt die Abhängigkeitslogik innerhalb der Ausführungseinheiten 3407 und/oder 3408, dass ein wartender Thread schläft, während er auf Daten aus dem Speicher oder einer der gemeinsam genutzten Funktionen wartet, bis die angeforderten Daten zurückgegeben wurden. In mindestens einer Ausführungsform können, während ein wartender Thread schläft, Hardware-Ressourcen der Verarbeitung anderer Threads gewidmet werden. Zum Beispiel kann in mindestens einer Ausführungsform eine Ausführungseinheit während einer Verzögerung, die mit einer Vertex-Shader-Operation assoziiert ist, Operationen für einen Pixel-Shader, Fragment-Shader oder einen anderen Typ von Shader-Programm, einschließlich eines anderen Vertex-Shaders, durchführen.
  • In mindestens einer Ausführungsform arbeitet jede Ausführungseinheit in den Ausführungseinheiten 3407 und/oder 3408 an Arrays von Datenelementen. In mindestens einer Ausführungsform ist die Anzahl der Datenelemente eine „Ausführungsgröße“ oder die Anzahl der Kanäle für eine Anweisung. In mindestens einer Ausführungsform ist ein Ausführungskanal eine logische Ausführungseinheit für den Zugriff auf Datenelemente, die Maskierung und die Flusssteuerung innerhalb von Anweisungen. In mindestens einer Ausführungsform kann die Anzahl der Kanäle unabhängig von einer Anzahl der physischen arithmetisch-logischen Einheiten (ALUs) oder Gleitkommaeinheiten (FPUs) für einen konkreten Grafikprozessor sein. In mindestens einer Ausführungsform unterstützen die Ausführungseinheiten 3407 und/oder 3408 Integer- und Gleitkommadatentypen.
  • In mindestens einer Ausführungsform beinhaltet ein Anweisungssatz einer Ausführungseinheit SIMD-Anweisungen. In mindestens einer Ausführungsform können verschiedene Datenelemente als gepackter Datentyp in einem Register gespeichert werden und die Ausführungseinheit verarbeitet verschiedene Elemente auf Grundlage der Datengröße der Elemente. Zum Beispiel werden in mindestens einer Ausführungsform beim Betreiben an einem 256 Bit breiten Vektor 256 Bit eines Vektors in einem Register gespeichert und eine Ausführungseinheit wird an einem Vektor als vier separate 64 Bit große gepackte Datenelemente (Datenelemente der Größe Vierfachwort (Quad-Word - QW)), acht separate 32 Bit große gepackte Datenelemente (Datenelemente der Größe Doppelwort (Double Word - DW)), sechzehn separate 16 Bit große gepackte Datenelemente (Datenelemente der Größe Wort (Word - W)) oder zweiunddreißig separate 8 Bit große Datenelemente (Datenelemente der Größe Byte (B)) betrieben. In mindestens einer Ausführungsform sind jedoch andere Vektorbreiten und Registergrößen möglich.
  • In mindestens einer Ausführungsform können eine oder mehrere Ausführungseinheiten zu einer fusionierten Ausführungseinheit 3409A-3409N kombiniert werden, die Thread-Steuerlogik (3411A-3411N) aufweist, die fusionierten EUs gemeinsam ist, wie etwa die Ausführungseinheit 3407A, die mit der Ausführungseinheit 3408A zu der fusionierten Ausführungseinheit 3409A fusioniert wird. In mindestens einer Ausführungsform können mehrere EUs zu einer EU-Gruppe fusioniert werden. In mindestens einer Ausführungsform kann jede EU in einer fusionierten EU-Gruppe so konfiguriert sein, dass sie einen separaten SIMD-Hardware-Thread ausführt, wobei eine Anzahl der EUs in einer fusionierten EU-Gruppe gemäß verschiedenen Ausführungsformen möglicherweise variiert. In mindestens einer Ausführungsform können verschiedene SIMD-Breiten pro EU durchgeführt werden, einschließlich, aber nicht beschränkt auf, SIMD8, SIMD16 und SIMD32. In mindestens einer Ausführungsform beinhaltet jede fusionierte Grafikausführungseinheit 3409A-3409N mindestens zwei Ausführungseinheiten. Zum Beispiel beinhaltet in mindestens einer Ausführungsform die fusionierte Ausführungseinheit 3409A eine erste EU 3407A, eine zweite EU 3408A und Thread-Steuerlogik 3411A, die der ersten EU 3407A und der zweiten EU 3408A gemeinsam ist. In mindestens einer Ausführungsform steuert die Thread-Steuerlogik 3411A Threads, die auf der fusionierten Grafikausführungseinheit 3409A ausgeführt werden, sodass jede EU innerhalb der fusionierten Ausführungseinheiten 3409A-3409N unter Verwendung eines gemeinsamen Anweisungszeigerregisters ausgeführt werden kann.
  • In mindestens einer Ausführungsform sind ein oder mehrere interne Anweisungs-Caches (z. B. 3406) in der Thread-Ausführungslogik 3400 enthalten, um Thread-Anweisungen für Ausführungseinheiten zwischenzuspeichern. In mindestens einer Ausführungsform sind ein oder mehrere Daten-Caches (z. B. 3412) enthalten, um Thread-Daten während der Thread-Ausführung zwischenzuspeichern. In mindestens einer Ausführungsform ist ein Abtaster 3410 enthalten, um Texturabtastung für 3D-Operationen und Medienabtastung für Medienoperationen bereitzustellen. In mindestens einer Ausführungsform beinhaltet der Abtaster 3410 eine spezialisierte Textur- oder Medienabtastfunktionalität, um Textur- oder Mediendaten während eines Abtastprozesses zu verarbeiten, bevor die abgetasteten Daten einer Ausführungseinheit bereitgestellt werden.
  • Während der Ausführung senden Grafik- und Medienpipelines in mindestens einer Ausführungsform Thread-Initiierungsanforderungen über die Thread-Erzeugungs- und - Zuteilungslogik an die Thread-Ausführungslogik 3400. In mindestens einer Ausführungsform wird, sobald eine Gruppe geometrischer Objekte verarbeitet und in Pixeldaten gerastert wurde, die Pixelprozessorlogik (z. B. Pixel-Shader-Logik, Fragment-Shader-Logik usw.) innerhalb des Shader-Prozessors 3402 aufgerufen, um Ausgabeinformationen weiter zu berechnen und zu veranlassen, dass die Ergebnisse in Ausgabeflächen (z. B. Farbpuffer, Tiefenpuffer, Schablonenpuffer usw.) geschrieben werden. In mindestens einer Ausführungsform berechnet ein Pixel-Shader oder Fragment-Shader die Werte verschiedener Vertexattribute, die über ein gerastertes Objekt interpoliert werden sollen. In mindestens einer Ausführungsform führt die Pixelprozessorlogik innerhalb des Shader-Prozessors 3402 dann ein über eine Anwendungsprogrammierschnittstelle (API) zugeführtes Pixel- oder Fragment-Shader-Programm aus. In mindestens einer Ausführungsform teilt der Shader-Prozessor 3402 zum Ausführen eines Shader-Programms Threads über den Thread-Zuteiler 3404 einer Ausführungseinheit (z. B. 3408A) zu. In mindestens einer Ausführungsform verwendet der Shader-Prozessor 3402 die Texturabtastlogik in dem Abtaster 3410, um auf Texturdaten in Texturkarten zuzugreifen, die in Speicher gespeichert sind. In mindestens einer Ausführungsform werden durch arithmetische Operationen an Texturdaten und eingegebenen Geometriedaten Pixelfarbdaten für jedes geometrische Fragment berechnet oder ein oder mehrere Pixel von der weiteren Verarbeitung ausgeschlossen.
  • In mindestens einer Ausführungsform stellt der Datenport 3414 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 3400 bereit, um verarbeitete Daten zur weiteren Verarbeitung an einer Grafikprozessor-Ausgabepipeline an Speicher auszugeben. In mindestens einer Ausführungsform beinhaltet der Datenport 3414 einen oder mehrere Cache-Speicher (z. B. den Daten-Cache 3412) oder ist an diesen gekoppelt, um Daten für den Speicherzugriff über einen Datenport zwischenzuspeichern.
  • Wie in 34B veranschaulicht, kann eine Grafikausführungseinheit 3408 in mindestens einer Ausführungsform eine Anweisungsabrufeinheit 3437, ein Array von allgemeinen Registerbänken (general register file - GRF) 3424, ein Array von architektonischen Registerbänken (architectural register file - ARF) 3426, einen Thread-Vermittler 3422, eine Sendeeinheit 3430, eine Verzweigungseinheit 3432, einen Satz SIMD-Gleitkommaeinheiten (FPUs) 3434 und einen Satz dedizierter Integer-SIMD-ALUs 3435 beinhalten. In mindestens einer Ausführungsform beinhalten die GRF 3424 und die ARF 3426 einen Satz allgemeiner Registerbänke und Architekturregisterbänke, die mit jedem simultanen Hardware-Thread assoziiert sind, der in der Grafikausführungseinheit 3408 aktiv sein kann. In mindestens einer Ausführungsform wird der architektonische Zustand pro Thread in der ARF 3426 verwaltet, während die während der Thread-Ausführung verwendeten Daten in der GRF 3424 gespeichert werden. In mindestens einer Ausführungsform kann der Ausführungszustand jedes Threads, einschließlich der Anweisungszeiger für jeden Thread, in Thread-spezifischen Registern in der ARF 3426 aufbewahrt werden.
  • In mindestens einer Ausführungsform weist die Grafikausführungseinheit 3408 eine Architektur auf, die eine Kombination aus simultanem Multi-Threading (Simultaneous Multi-Threading - SMT) und feinkörnigem verschachteltem Multi-Threading (Interleaved Multi-Threading - IMT) ist. In mindestens einer Ausführungsform weist die Architektur eine modulare Konfiguration auf, die zur Ausgestaltungszeit auf Grundlage einer Zielanzahl von simultanen Threads und Anzahl von Registern pro Ausführungseinheit fein abgestimmt werden kann, wobei die Ressourcen der Ausführungseinheit auf die Logik aufgeteilt werden, die zum Ausführen mehrerer simultaner Threads verwendet wird.
  • In mindestens einer Ausführungsform kann die Grafikausführungseinheit 3408 mehrere Anweisungen gleichzeitig ausgeben, die jeweils unterschiedliche Anweisungen sein können. In mindestens einer Ausführungsform kann der Thread-Vermittler 3422 des Grafikausführungseinheits-Threads 3408 Anweisungen einer der Sendeeinheit 3430, der Verzweigungseinheit 3432 oder der SIMD-FPU(s) 3434 zur Ausführung zuteilen. In mindestens einer Ausführungsform kann jeder Ausführungs-Thread auf 128 Universalregister innerhalb der GRF 3424 zugreifen, wobei jedes Register 32 Byte speichern kann, die als SIMD-8-Elementvektor von 32-Bit-Datenelementen zugänglich sind. In mindestens einer Ausführungsform weist jeder Thread der Ausführungseinheit Zugriff auf 4 Kilobyte innerhalb der GRF 3424 auf, obwohl Ausführungsformen nicht derart beschränkt sind und in anderen Ausführungsformen mehr oder weniger Registerressourcen bereitgestellt sein können. In mindestens einer Ausführungsform können bis zu sieben Threads simultan ausgeführt werden, obwohl eine Anzahl der Threads pro Ausführungseinheit gemäß Ausführungsformen auch variieren kann. In mindestens einer Ausführungsform, in der sieben Threads auf 4 Kilobyte zugreifen können, kann die GRF 3424 insgesamt 28 Kilobyte speichern. In mindestens einer Ausführungsform können flexible Adressierungsmodi erlauben, dass Register zusammen adressiert werden, um effektiv breitere Register zu bilden oder um geschichtete rechteckige Blockdatenstrukturen darzustellen.
  • In mindestens einer Ausführungsform werden Speicheroperationen, Abtasteroperationen und andere Systemkommunikation mit längerer Latenz über „Sende“-Anweisungen zugeteilt, die durch Nachrichtenweitergabe an die Sendeeinheit 3430 ausgeführt werden. In mindestens einer Ausführungsform werden Verzweigungsanweisungen der Verzweigungseinheit 3432 zugeteilt, um SIMD-Divergenz und schließlich -Konvergenz zu erleichtern.
  • In mindestens einer Ausführungsform beinhaltet die Grafikausführungseinheit 3408 eine oder mehrere SIMD-Gleitkommaeinheiten (FPU(s)) 3434 zum Durchführen von Gleitkommaoperationen. In mindestens einer Ausführungsform unterstützen die FPU(s) 3434 auch Integerberechnung. In mindestens einer Ausführungsform können die FPU(s) 3434 bis zu einer Anzahl von M 32-Bit-Gleitkomma- (oder -Integer-) Operationen über SIMD ausführen oder bis zu 2M 16-Bit-Integer- oder 16-Bit-Gleitkommaoperationen über SIMD ausführen. In mindestens einer Ausführungsform stellt mindestens eine FPU erweiterte mathematische Fähigkeiten bereit, um transzendentale mathematische Funktionen mit hohem Durchsatz und 64-Bit-Gleitkomma mit doppelter Genauigkeit zu unterstützen. In mindestens einer Ausführungsform ist auch ein Satz von 8-Bit-Integer-SIMD-ALUs 3435 vorhanden, der spezifisch zum Durchführen von Operationen, die mit Berechnungen für maschinelles Lernen assoziiert sind, optimiert sein kann.
  • In mindestens einer Ausführungsform können Arrays von mehreren Instanzen der Grafikausführungseinheit 3408 in einer Grafikteilkern-Gruppierung (z. B. einem Teil-Slice) instanziiert sein. In mindestens einer Ausführungsform kann die Ausführungseinheit 3408 Anweisungen über eine Vielzahl von Ausführungskanälen hinweg ausführen. In mindestens einer Ausführungsform wird jeder Thread, der auf der Grafikausführungseinheit 3408 ausgeführt wird, auf einem anderen Kanal ausgeführt.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform können Abschnitte der oder die gesamte Inferenz- und/oder Trainingslogik 1015 in die Thread-Ausführungslogik 3400 einbezogen sein. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung von anderer Logik als der in 10A oder 10B veranschaulichten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in chipinternem oder chipexternem Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs der Thread-Ausführungslogik 3400 konfigurieren, um eine(n) oder mehrere hierin beschriebene Algorithmen des maschinellen Lernens, neuronale Netzarchitekturen, Anwendungsfälle oder Trainingstechniken durchzuführen.
  • 35 veranschaulicht eine Parallelverarbeitungseinheit („PPU“) 3500 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist die PPU 3500 mit maschinenlesbarem Code konfiguriert, der bei Ausführung durch die PPU 3500 die PPU 3500 dazu veranlasst, einige oder alle der in dieser gesamten Offenbarung beschriebenen Prozesse und Techniken durchzuführen. In mindestens einer Ausführungsform ist die PPU 3500 ein Multi-Thread-Prozessor, der auf einer oder mehreren Vorrichtungen mit integrierter Schaltung implementiert ist und der Multi-Threading als Technik zur Latenzverbergung nutzt, die dazu ausgestaltet ist, computerlesbare Anweisungen (auch als maschinenlesbare Anweisungen oder einfach Anweisungen bezeichnet) auf mehreren Threads parallel zu verarbeiten. In mindestens einer Ausführungsform bezieht sich ein Thread auf einen Ausführungs-Thread und er ist eine Instanziierung eines Satzes von Anweisungen, der dazu konfiguriert ist, durch die PPU 3500 ausgeführt zu werden. In mindestens einer Ausführungsform ist die PPU 3500 eine Grafikverarbeitungseinheit („GPU“), die so konfiguriert ist, dass sie eine Grafik-Rendering-Pipeline zum Verarbeiten dreidimensionaler („3D“) Grafikdaten implementiert, um zweidimensionale („2D“) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie etwa einer Vorrichtung mit Flüssigkristallanzeige („LCD“), zu erzeugen. In mindestens einer Ausführungsform wird die PPU 3500 genutzt, um Berechnungen, wie etwa lineare Algebraoperationen und Operationen des maschinellen Lernens, durchzuführen. 35 veranschaulicht ein Beispiel für einen Parallelprozessor, der nur zu Veranschaulichungszwecken dient und als nicht einschränkendes Beispiel für Prozessorarchitekturen ausgelegt werden sollte, die innerhalb des Umfangs dieser Offenbarung in Betracht gezogen werden, und dass ein beliebiger geeigneter Prozessor zur Ergänzung und/oder als Ersatz für diesen eingesetzt werden kann.
  • In mindestens einer Ausführungsform sind eine oder mehrere PPUs 3500 so konfiguriert, dass sie Anwendungen für Hochleistungsrechnen (High Performance Computing - „HPC“), für ein Rechenzentrum und für maschinelles Lernen beschleunigen. In mindestens einer Ausführungsform ist die PPU 3500 so konfiguriert, dass sie Deep-Learning-Systeme und - Anwendungen beschleunigt, einschließlich der folgenden nicht einschränkenden Beispiele: Plattformen für autonome Fahrzeuge, Deep Learning, Sprach-, Bild- und Texterkennungssysteme mit hoher Genauigkeit, intelligente Videoanalytik, Molekularsimulationen, Arzneimittelforschung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und mehr.
  • In mindestens einer Ausführungsform beinhaltet die PPU 3500 ohne Einschränkung eine Eingabe/Ausgabe-(„E/A“-)Einheit 3506, eine Frontend-Einheit 3510, eine Scheduler-Einheit 3512, eine Arbeitsverteilungseinheit 3514, einen Hub 3516, eine Kreuzschiene (crossbar - „XBar“) 3520, einen oder mehrere Universalverarbeitungscluster („GPCs“) 3518 und eine oder mehrere Partitionseinheiten („Speicherpartitionseinheiten“) 3522. In mindestens einer Ausführungsform ist die PPU 3500 mit einem Host-Prozessor oder anderen PPUs 3500 über eine oder mehrere Hochgeschwindigkeits-GPU-Zusammenschaltungen („GPU-Zusammenschaltungen“) 3508 verbunden. In mindestens einer Ausführungsform ist die PPU 3500 über einen Systembus 3502 mit einem Host-Prozessor oder anderen Peripherievorrichtungen verbunden. In mindestens einer Ausführungsform ist die PPU 3500 mit einem lokalen Speicher verbunden, der eine oder mehrere Speichervorrichtungen („Speicher“) 3504 umfasst. In mindestens einer Ausführungsform beinhalten die Speichervorrichtungen 3504 ohne Einschränkung eine oder mehrere Vorrichtungen mit dynamischem Direktzugriffsspeicher („DRAM“). In mindestens einer Ausführungsform sind eine oder mehrere DRAM-Vorrichtungen als Teilsysteme mit Speicher mit hoher Bandbreite („HBM“) konfiguriert und/oder konfigurierbar, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt sind.
  • In mindestens einer Ausführungsform kann sich die Hochgeschwindigkeits-GPU-Zusammenschaltung 3508 auf eine drahtbasierte mehrspurige Kommunikationsverknüpfung beziehen, die durch Systeme zum Skalieren verwendet wird und eine oder mehrere PPUs 3500 in Kombination mit einer oder mehreren zentralen Verarbeitungseinheiten („CPUs“) beinhaltet und die Cache-Kohärenz zwischen PPUs 3500 und CPUs sowie CPU-Mastering unterstützt. In mindestens einer Ausführungsform werden Daten und/oder Befehle durch die Hochgeschwindigkeits-GPU-Zusammenschaltung 3508 über den Hub 3516 zu/von anderen Einheiten der PPU 3500 übertragen, wie etwa einer/einem oder mehreren Kopier-Engines, Videocodierern, Videodecodierern, Leistungsverwaltungseinheiten und anderen Komponenten, die in 35 möglicherweise nicht explizit veranschaulicht sind.
  • In mindestens einer Ausführungsform ist die E/A-Einheit 3506 so konfiguriert, dass sie Kommunikation (z.B. Befehle, Daten) von einem Host-Prozessor (in 35 nicht veranschaulicht) über den Systembus 3502 überträgt und empfängt. In mindestens einer Ausführungsform kommuniziert die E/A-Einheit 3506 mit dem Host-Prozessor direkt über den Systembus 3502 oder durch eine oder mehrere Zwischenvorrichtungen wie etwa eine Speicherbrücke. In mindestens einer Ausführungsform kann die E/A-Einheit 3506 über den Systembus 3502 mit einem oder mehreren anderen Prozessoren kommunizieren, wie etwa einer oder mehreren der PPUs 3500. In mindestens einer Ausführungsform implementiert die E/A-Einheit 3506 eine Peripheral-Component-Interconnect-Express-(„PCIe“-)Schnittstelle für die Kommunikation über einen PCIe-Bus. In mindestens einer Ausführungsform implementiert die E/A-Einheit 3506 Schnittstellen zum Kommunizieren mit externen Vorrichtungen.
  • In mindestens einer Ausführungsform decodiert die E/A-Einheit 3506 über den Systembus 3502 empfangene Pakete. In mindestens einer Ausführungsform stellen mindestens einige Pakete Befehle dar, die so konfiguriert sind, dass sie die PPU 3500 dazu veranlassen, verschiedene Operationen durchzuführen. In mindestens einer Ausführungsform überträgt die E/A-Einheit 3506 decodierte Befehle an verschiedene andere Einheiten der PPU 3500, wie durch Befehle vorgegeben. In mindestens einer Ausführungsform werden Befehle an die Frontend-Einheit 3510 übertragen und/oder an den Hub 3516 oder andere Einheiten der PPU 3500 übertragen, wie etwa eine oder mehrere Kopier-Engines, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (in 35 nicht explizit veranschaulicht). In mindestens einer Ausführungsform ist die E/A-Einheit 3506 so konfiguriert, dass sie Kommunikation zwischen und unter verschiedenen logischen Einheiten der PPU 3500 routet.
  • In mindestens einer Ausführungsform codiert ein durch den Host-Prozessor ausgeführtes Programm einen Befehlsstream in einem Puffer, der der PPU 3500 Arbeitslasten zur Verarbeitung bereitstellt. In mindestens einer Ausführungsform umfasst eine Arbeitslast Anweisungen und Daten, die durch diese Anweisungen verarbeitet werden sollen. In mindestens einer Ausführungsform ist ein Puffer eine Region in einem Speicher, auf die sowohl ein Host-Prozessor als auch die PPU 3500 zugreifen können (z. B. Lesen/Schreiben) - eine Host-Schnittstelleneinheit kann so konfiguriert sein, dass sie auf diesen Puffer in einem Systemspeicher, der mit dem Systembus 3502 verbunden ist, über Speicheranforderungen zugreift, die über den Systembus 3502 durch die E/A-Einheit 3506 übertragen werden. In mindestens einer Ausführungsform schreibt ein Host-Prozessor einen Befehlsstrom in einen Puffer und überträgt dann einen Zeiger für einen Start eines Befehlsstroms an die PPU 3500, sodass die Frontend-Einheit 3510 Zeiger für einen oder mehrere Befehlsströme empfängt und einen oder mehrere Befehlsströme verwaltet, indem sie Befehle aus Befehlsströmen liest und Befehle an verschiedene Einheiten der PPU 3500 weiterleitet.
  • In mindestens einer Ausführungsform ist die Frontend-Einheit 3510 an die Scheduler-Einheit 3512 gekoppelt, die verschiedene GPCs 3518 zum Verarbeiten von Tasks konfiguriert, die durch einen oder mehrere Befehlsströme definiert sind. In mindestens einer Ausführungsform ist die Scheduler-Einheit 3512 so konfiguriert, dass sie Zustandsinformationen in Bezug auf verschiedene durch die Scheduler-Einheit 3512 verwaltete Tasks verfolgt, wobei die Zustandsinformationen angeben können, welchem der GPCs 3518 ein Task zugeordnet ist, ob der Task aktiv oder inaktiv ist, welcher Prioritätslevel mit dem Task assoziiert ist, und so weiter. In mindestens einer Ausführungsform verwaltet die Scheduler-Einheit 3512 die Ausführung einer Vielzahl von Tasks auf einem oder mehreren GPCs 3518.
  • In mindestens einer Ausführungsform ist die Scheduler-Einheit 3512 an die Arbeitsverteilungseinheit 3514 gekoppelt, die so konfiguriert ist, dass sie Tasks zur Ausführung auf den GPCs 3518 zuteilt. In mindestens einer Ausführungsform verfolgt die Arbeitsverteilungseinheit 3514 eine Anzahl geplanter Tasks nach, die von der Scheduler-Einheit 3512 empfangen wurde, und die Arbeitsverteilungseinheit 3514 verwaltet einen Pool ausstehender Tasks und einen Pool aktiver Tasks für jeden der GPCs 3518. In mindestens einer Ausführungsform umfasst der Pool ausstehender Tasks eine Anzahl von Schlitzen (z. B. 32 Schlitze), die Tasks enthalten, die zur Verarbeitung durch einen konkreten GPC 3518 zugeordnet sind; ein Pool aktiver Tasks kann eine Anzahl von Schlitzen (z. B. 4 Schlitze) für Tasks umfassen, die aktiv durch die GPCs 3518 verarbeitet werden, sodass, wenn einer der GPCs 3518 die Ausführung eines Tasks abschließt, dieser Task aus diesem Pool aktiver Tasks für den GPC 3518 entfernt wird und ein anderer Task aus einem Pool ausstehender Tasks ausgewählt und zur Ausführung auf dem GPC 3518 eingeplant wird. Falls ein aktiver Task auf dem GPC 3518 inaktiv ist, wie etwa, während er darauf wartet, dass eine Datenabhängigkeit aufgelöst wird, dann wird in mindestens einer Ausführungsform dieser aktive Task aus dem GPC 3518 entfernt und in diesen Pool ausstehender Tasks zurückgeführt, während ein anderer Task in diesem Pool ausstehender Tasks ausgewählt und zur Ausführung auf dem GPC 3518 eingeplant wird.
  • In mindestens einer Ausführungsform kommuniziert die Arbeitsverteilungseinheit 3514 mit einem oder mehreren GPCs 3518 über die XBar 3520. In mindestens einer Ausführungsform ist die XBar 3520 ein Zusammenschaltungsnetz, das viele Einheiten der PPU 3500 an andere Einheiten der PPU 3500 koppelt und dazu konfiguriert sein kann, die Arbeitsverteilungseinheit 3514 an einen konkreten GPC 3518 zu koppeln. In mindestens einer Ausführungsform können auch eine oder mehrere andere Einheiten der PPU 3500 über den Hub 3516 mit der XBar 3520 verbunden sein.
  • In mindestens einer Ausführungsform werden Tasks durch die Scheduler-Einheit 3512 verwaltet und durch die Arbeitsverteilungseinheit 3514 einem der GPCs 3518 zugeteilt. In mindestens einer Ausführungsform ist der GPC 3518 so konfiguriert, dass er einen Task verarbeitet und Ergebnisse erzeugt. In mindestens einer Ausführungsform können die Ergebnisse durch andere Tasks innerhalb des GPC 3518 verbraucht, über die XBar 3520 an einen anderen GPC 3518 geroutet oder in dem Speicher 3504 gespeichert werden. In mindestens einer Ausführungsform können die Ergebnisse über die Partitionseinheiten 3522, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in den/aus dem Speicher 3504 implementieren, in den Speicher 3504 geschrieben werden. In mindestens einer Ausführungsform können die Ergebnisse über die Hochgeschwindigkeits-GPU-Zusammenschaltung 3508 an eine andere PPU oder CPU übertragen werden. In mindestens einer Ausführungsform beinhaltet die PPU 3500 ohne Einschränkung eine Anzahl U von Partitionseinheiten 3522, die gleich einer Anzahl von separaten und unterschiedlichen Speichervorrichtungen 3504 ist, die an die PPU 3500 gekoppelt sind, wie hierin in Verbindung mit 37 detaillierter beschrieben.
  • In mindestens einer Ausführungsform führt ein Host-Prozessor einen Treiberkernel aus, der eine Anwendungsprogrammierschnittstelle („API“) implementiert, die es einer oder mehreren auf einem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 3500 zu planen. In mindestens einer Ausführungsform werden mehrere Rechenanwendungen simultan durch die PPU 3500 ausgeführt und die PPU 3500 stellt Isolierung, Dienstgüte (quality of service - „QoS“) und unabhängige Adressräume für mehrere Rechenanwendungen bereit. In mindestens einer Ausführungsform erzeugt eine Anwendung Anweisungen (z. B. in Form von API-Aufrufen), die einen Treiberkernel dazu veranlassen, einen oder mehrere Tasks zur Ausführung durch die PPU 3500 zu erzeugen, und dieser Treiberkernel gibt Tasks an einen oder mehrere Ströme aus, die durch die PPU 3500 verarbeitet werden. In mindestens einer Ausführungsform umfasst jeder Task eine oder mehrere Gruppen von verwandten Threads, die als Warp bezeichnet werden können. In mindestens einer Ausführungsform umfasst ein Warp eine Vielzahl von verwandten Threads (z. B. 32 Threads), die parallel ausgeführt werden kann. In mindestens einer Ausführungsform können sich kooperierende Threads auf eine Vielzahl von Threads beziehen, die Anweisungen zum Durchführen von Tasks beinhalten und die Daten durch einen gemeinsam genutzten Speicher austauschen. In mindestens einer Ausführungsform werden Threads und kooperierende Threads in Verbindung mit 37 detaillierter beschrieben.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um der PPU 3500 bereitgestellte Informationen vorherzusagen oder abzuleiten. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z. B. eines neuronalen Netzes) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch die PPU 3500 trainiert wurde. In mindestens einer Ausführungsform kann die PPU 3500 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • 36 veranschaulicht einen Universalverarbeitungscluster („GPC“) 3600 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform handelt es sich bei dem GPC 3600 um den GPC 3518 aus 35. In mindestens einer Ausführungsform beinhaltet jeder GPC 3600 ohne Einschränkung eine Anzahl von Hardware-Einheiten zum Verarbeiten von Tasks und beinhaltet jeder GPC 3600 ohne Einschränkung einen Pipelineverwalter 3602, eine Vor-Rasteroperationeneinheit (pre-raster operations unit - „preROP“) 3604, eine Raster-Engine 3608, eine Arbeitsverteilungskreuzschiene (work distribution crossbar - „WDX“) 3616, eine Speicherverwaltungseinheit („MMU“) 3618, einen oder mehrere Datenverarbeitungscluster (Data Processing Clusters - „DPCs“) 3606 und eine beliebige geeignete Kombination von Teilen.
  • In mindestens einer Ausführungsform wird der Betrieb des GPC 3600 durch den Pipelineverwalter 3602 gesteuert. In mindestens einer Ausführungsform verwaltet der Pipelineverwalter 3602 die Konfiguration eines oder mehrerer DPCs 3606 für die Verarbeitung von Tasks, die dem GPC 3600 zugewiesen sind. In mindestens einer Ausführungsform konfiguriert der Pipelineverwalter 3602 mindestens einen von einem oder mehreren DPCs 3606 dazu, mindestens einen Abschnitt einer Grafik-Rendering-Pipeline zu implementieren. In mindestens einer Ausführungsform ist der DPC 3606 dazu konfiguriert, ein Vertex-Shader-Programm auf einem programmierbaren Streaming-Multiprozessor (streaming multi-processor - „SM“) 3614 auszuführen. In mindestens einer Ausführungsform ist der Pipelineverwalter 3602 so konfiguriert, dass er die von einer Arbeitsverteilungseinheit empfangenen Pakete an zweckmäßige logische Einheiten innerhalb des GPC 3600 routet, und in mindestens einer Ausführungsform können einige Pakete an Festfunktions-Hardwareeinheiten in dem preROP 3604 und/oder der Raster-Engine 3608 geroutet werden, während andere Pakete zum Verarbeiten durch eine Primitiv-Engine 3612 oder den SM 3614 an die DPCs 3606 geroutet werden können. In mindestens einer Ausführungsform konfiguriert der Pipelineverwalter 3602 mindestens einen der DPCs 3606 zum Implementieren eines Modells eines neuronalen Netzes und/oder einer Rechenpipeline.
  • In mindestens einer Ausführungsform ist die preROP-Einheit 3604 so konfiguriert, dass sie in mindestens einer Ausführungsform die durch die Raster-Engine 3608 und die DPCs 3606 erzeugten Daten an eine Einheit für Rasteroperationen (Raster Operations - „ROP“) in der Partitionseinheit 3522 routet, die vorstehend in Verbindung mit 35 detaillierter beschrieben ist. In mindestens einer Ausführungsform ist die preROP-Einheit 3604 so konfiguriert, dass sie unter anderem Optimierungen für die Farbmischung durchführt, Pixelfarbdaten organisiert und Adressübersetzungen durchführt. In mindestens einer Ausführungsform beinhaltet die Raster-Engine 3608 ohne Einschränkung eine Anzahl von Festfunktions-Hardwareeinheiten, die so konfiguriert sind, dass sie verschiedene Rasteroperationen durchführen, und in mindestens einer Ausführungsform beinhaltet die Raster-Engine 3608 ohne Einschränkung eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine, eine Kachelverschmelzungs-Engine und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform empfängt die Setup-Engine transformierte Vertices und sie erzeugt Ebenengleichungen, die mit dem durch die Vertices definierten geometrischen Primitiv assoziiert sind; die Ebenengleichungen werden an eine Grobraster-Engine übertragen, um Abdeckungsinformationen (z. B. eine x-, y-Abdeckungsmaske für eine Kachel) für das Primitiv zu erzeugen; die Ausgabe einer Grobraster-Engine wird an eine Culling-Engine übertragen, in der Fragmente, die mit einem Primitiv assoziiert sind und einen z-Test nicht bestehen, Culling unterzogen werden und an eine Clipping-Engine übertragen werden, in der Fragmente, die außerhalb eines Sichtkegelstumpfes liegen, Clipping unterzogen werden. In mindestens einer Ausführungsform werden Fragmente, die das Clipping und Culling überstehen, an eine Feinraster-Engine übergeben, um Attribute für Pixelfragmente auf Grundlage von Ebenengleichungen zu erzeugen, die durch eine Setup-Engine erzeugt werden. In mindestens einer Ausführungsform umfasst eine Ausgabe der Raster-Engine 3608 Fragmente, die durch eine beliebige geeignete Entität, wie etwa durch einen innerhalb des DPC 3606 implementierten Fragment-Shader, verarbeitet werden sollen.
  • In mindestens einer Ausführungsform umfasst jeder DPC 3606, der in dem GPC 3600 enthalten ist, ohne Einschränkung eine M-Pipe-Steuerung (M-Pipe Controller - „MPC“) 3610; die Primitiv-Engine 3612; einen oder mehrere SMs 3614 und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform steuert die MPC 3610 den Betrieb des DPC 3606 und routet von dem Pipelineverwalter 3602 empfangene Pakete an die entsprechenden Einheiten in dem DPC 3606. In mindestens einer Ausführungsform werden Pakete, die mit einem Vertex assoziiert sind, an die Primitiv-Engine 3612 geroutet, die so konfiguriert ist, dass sie Vertexattribute, die mit einem Vertex assoziiert sind, aus dem Speicher abruft; im Gegensatz dazu können Pakete, die mit einem Shader-Programm assoziiert sind, an den SM 3614 übertragen werden.
  • In mindestens einer Ausführungsform umfasst der SM 3614 ohne Einschränkung einen programmierbaren Streaming-Prozessor, der so konfiguriert ist, dass er Tasks verarbeitet, die durch eine Anzahl von Threads dargestellt sind. In mindestens einer Ausführungsform weist der SM 3614 mehrere Threads auf und ist so konfiguriert, dass er eine Vielzahl von Threads (z. B. 32 Threads) aus einer konkreten Gruppe von Threads nebenläufig ausführt und eine Single-Instruction-Multiple-Data-(„SIMD“-)Architektur implementiert, bei der jeder Thread in einer Gruppe von Threads (z. B. ein Warp) so konfiguriert ist, dass er einen anderen Datensatz auf Grundlage des gleichen Anweisungssatzes verarbeitet. In mindestens einer Ausführungsform führen alle Threads in einer Gruppe von Threads einen gemeinsamen Satz von Anweisungen aus. In mindestens einer Ausführungsform implementiert der SM 3614 eine Single-Instruction-Multiple-Thread-(„SIMT“-)Architektur, bei der jeder Thread in einer Gruppe von Threads so konfiguriert ist, dass er einen anderen Datensatz auf Grundlage dieses gemeinsamen Anweisungssatzes verarbeitet, wobei jedoch zugelassen wird, dass die einzelnen Threads in einer Gruppe von Threads während der Ausführung divergieren. In mindestens einer Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, wodurch Nebenläufigkeit zwischen Warps und serielle Ausführung innerhalb von Warps ermöglicht werden, wenn Threads innerhalb eines Warps divergieren. In einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, wodurch gleichwertige Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht wird. In mindestens einer Ausführungsform wird der Ausführungszustand für jeden einzelnen Thread beibehalten und Threads, die gemeinsame Anweisungen ausführen, können zur besseren Effizienz konvergiert und parallel ausgeführt werden. Mindestens eine Ausführungsform des SM 3614 wird hierin detaillierter beschrieben.
  • In mindestens einer Ausführungsform stellt die MMU 3618 eine Schnittstelle zwischen dem GPC 3600 und einer Speicherpartitionseinheit (z. B. der Partitionseinheit 3522 aus 35) bereit und stellt die MMU 3618 Übersetzung virtueller Adressen in physische Adressen, Speicherschutz und Vermittlung von Speicheranforderungen bereit. In mindestens einer Ausführungsform stellt die MMU 3618 einen oder mehrere Adressenübersetzungspuffer („TLBs“) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in Speicher bereit.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um dem GPC 3600 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der GPC 3600 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z. B. eines neuronalen Netzes) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den GPC 3600 trainiert wurde. In mindestens einer Ausführungsform kann der GPC 3600 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • 37 veranschaulicht eine Speicherpartitionseinheit 3700 einer Parallelverarbeitungseinheit („PPU“) gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet die Speicherpartitionseinheit 3700 ohne Einschränkung eine Einheit 3702 für Rasteroperationen („ROP“), einen Level-Zwei-(„L2“-)Cache 3704, eine Speicherschnittstelle 3706 und eine beliebige geeignete Kombination davon. In mindestens einer Ausführungsform ist die Speicherschnittstelle 3706 an Speicher gekoppelt. In mindestens einer Ausführungsform kann die Speicherschnittstelle 3706 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für die Hochgeschwindigkeitsdatenübermittlung implementieren. In mindestens einer Ausführungsform beinhaltet die PPU U Speicherschnittstellen 3706, wobei U eine positive ganze Zahl ist, mit einer Speicherschnittstelle 3706 pro Paar von Partitionseinheiten 3700, wobei jedes Paar von Partitionseinheiten 3700 mit einer entsprechenden Speichervorrichtung verbunden ist. In mindestens einer Ausführungsform kann die PPU zum Beispiel mit bis zu Y Speichervorrichtungen verbunden sein, wie etwa mit Speicherstapeln mit hoher Bandbreite oder mit einem synchronen dynamischen Direktzugriffsspeicher mit Graphics-Double-Data-Rate-Version 5 („GDDR5-SDRAM“).
  • In mindestens einer Ausführungsform implementiert die Speicherschnittstelle 3706 eine Speicherschnittstelle mit Speicher mit hoher Bandbreite der zweiten Generation („HBM2“) und Y ist gleich der Hälfte von U. In mindestens einer Ausführungsform befinden sich HBM2-Speicherstapel auf einem physischen Gehäuse mit einer PPU, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Leistungs- und Flächeneinsparungen bereitstellt. In mindestens einer Ausführungsform beinhaltet jeder HBM2-Stapel ohne Einschränkung vier Speicher-Dies mit Y=4, wobei jeder HBM2-Stapel zwei 128-Bit-Kanäle pro Die für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet. In mindestens einer Ausführungsform unterstützt dieser Speicher Single-Error-Correcting-Double-Error-Detecting-(„SECDED“- )Fehlerkorrekturcode (Error Correction Code - „ECC“) zum Schützen von Daten. In mindestens einer Ausführungsform kann der ECC eine höhere Zuverlässigkeit für Rechenanwendungen bereitstellen, die für Datenkorruption empfindlich sind.
  • In mindestens einer Ausführungsform implementiert die PPU eine Speicherhierarchie mit mehreren Levels. In mindestens einer Ausführungsform unterstützt die Speicherpartitionseinheit 3700 einen einheitlichen Speicher, um einen einzelnen einheitlichen virtuellen Adressraum für den Speicher der zentralen Verarbeitungseinheit („CPU“) und der PPU bereitzustellen, wodurch die gemeinsame Nutzung von Daten zwischen virtuellen Speichersystemen ermöglicht wird. In mindestens einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU auf einen Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU verschoben werden, die häufiger auf Seiten zugreift. In mindestens einer Ausführungsform unterstützt die Hochgeschwindigkeits-GPU-Zusammenschaltung 3508 Adressübersetzungsdienste, die es der PPU ermöglichen, direkt auf die Seitentabellen einer CPU zuzugreifen, und einer PPU vollen Zugriff auf den CPU-Speicher bereitstellen.
  • In mindestens einer Ausführungsform übermitteln Kopier-Engines Daten zwischen mehreren PPUs oder zwischen PPUs und CPUs. In mindestens einer Ausführungsform können Kopier-Engines Seitenfehler für Adressen erzeugen, die nicht in Seitentabellen abgebildet sind, und die Speicherpartitionseinheit 3700 bedient dann Seitenfehler, indem sie die Adressen in die Seitentabelle abbildet, woraufhin die Kopier-Engine eine Übermittlung durchführt. In mindestens einer Ausführungsform ist der Speicher für mehrere Kopier-Engine-Operationen zwischen mehreren Prozessoren gepinnt (d. h. nicht auslagerbar), was den verfügbaren Speicher erheblich reduziert. In mindestens einer Ausführungsform können bei Hardware-Seitenfehlern Adressen an Kopier-Engines übergeben werden, ohne Rücksicht darauf, ob Speicherseiten speicherresident sind und ein Kopierprozess transparent ist.
  • Daten aus dem Speicher 3504 aus 35 oder einem anderen Systemspeicher werden gemäß mindestens einer Ausführungsform durch die Speicherpartitionseinheit 3700 abgerufen und in L2-Cache 3704 gespeichert, der sich auf dem Chip befindet und von verschiedenen GPCs gemeinsam genutzt wird. Jede Speicherpartitionseinheit 3700 beinhaltet in mindestens einer Ausführungsform ohne Einschränkung mindestens einen Abschnitt des L2-Caches, der mit einer entsprechenden Speichervorrichtung assoziiert ist. In mindestens einer Ausführungsform sind die Caches der unteren Levels in verschiedenen Einheiten innerhalb der GPCs implementiert. In mindestens einer Ausführungsform kann jeder der SMs 3614 aus 36 einen Level-1-(„L1“- )Cache implementieren, wobei dieser L1-Cache ein privater Speicher ist, der für einen konkreten SM 3614 dediziert ist, und Daten aus dem L2-Cache 3704 werden abgerufen und in jedem L1-Cache zum Verarbeiten in funktionellen Einheiten der SMs 3614 gespeichert. In mindestens einer Ausführungsform ist der L2-Cache 3704 an die Speicherschnittstelle 3706 und die in 35 gezeigte XBar 3520 gekoppelt.
  • In mindestens einer Ausführungsform führt die ROP-Einheit 3702 Grafikrasteroperationen durch, die mit der Pixelfarbe in Bezug stehen, wie etwa Farbkomprimierung, Pixel-Blending und mehr. In mindestens einer Ausführungsform implementiert die ROP-Einheit 3702 die Tiefenprüfung in Verbindung mit der Raster-Engine 3608, wobei sie eine Tiefe für eine Abtaststelle, die mit einem Pixelfragment assoziiert ist, von einer Culling-Engine der Raster-Engine 3608 empfängt. In mindestens einer Ausführungsform wird die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine mit einem Fragment assoziierte Abtaststelle geprüft. Falls dieses Fragment die Tiefenprüfung für diese Abtaststelle besteht, aktualisiert die ROP-Einheit 3702 dann in mindestens einer Ausführungsform den Tiefenpuffer und überträgt ein Ergebnis dieser Tiefenprüfung an die Raster-Engine 3608. Es versteht sich, dass sich eine Anzahl der Partitionseinheiten 3700 von einer Anzahl der GPCs unterscheiden kann und daher kann jede ROP-Einheit 3702 in mindestens einer Ausführungsform an jeden GPC gekoppelt sein. In mindestens einer Ausführungsform verfolgt die ROP-Einheit 3702 die von verschiedenen GPCs empfangenen Pakete und bestimmt, ob ein durch die ROP-Einheit 3702 erzeugtes Ergebnis zu der XBar 3520 durchgeroutet werden soll.
  • 38 veranschaulicht einen Streaming-Multiprozessor („SM“) 3800 gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform ist der SM 3800 der SM aus 36. In mindestens einer Ausführungsform beinhaltet der SM 3800 ohne Einschränkung einen Anweisungs-Cache 3802, eine oder mehrere Scheduler-Einheiten 3804, eine Registerbank 3808, einen oder mehrere Verarbeitungskerne („Kerne“) 3810, eine oder mehrere Spezialfunktionseinheiten (special function units - „SFUs“) 3812, eine oder mehrere Lade-/Speichereinheiten (load/store units - „LSUs“) 3814, ein Zusammenschaltungsnetz 3816, einen gemeinsam genutzten Speicher/Level-Eins-(„L1“-)Cache 3818 und/oder eine beliebige geeignete Kombination davon.
  • In mindestens einer Ausführungsform teilt eine Arbeitsverteilungseinheit Tasks zur Ausführung auf Universalverarbeitungsclustern („GPCs“) von Parallelverarbeitungseinheiten („PPUs“) zu und jeder Task wird einem konkreten Datenverarbeitungscluster („DPC“) innerhalb eines GPC zugewiesen, und falls ein Task mit einem Shader-Programm assoziiert ist, wird dieser Task einem der SMs 3800 zugewiesen. In mindestens einer Ausführungsform empfängt die Scheduler-Einheit 3804 Tasks von einer Arbeitsverteilungseinheit und sie verwaltet die Anweisungsplanung für einen oder mehrere Thread-Blöcke, die dem SM 3800 zugeordnet sind. In mindestens einer Ausführungsform plant die Scheduler-Einheit 3804 Thread-Blöcke für die Ausführung als Warps aus parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugewiesen ist. In mindestens einer Ausführungsform führt jeder Warp Threads aus. In mindestens einer Ausführungsform verwaltet die Scheduler-Einheit 3804 eine Vielzahl von unterschiedlichen Thread-Blöcken, indem sie unterschiedlichen Thread-Blöcken Warps zuweist und dann während jedes Taktzyklus Anweisungen aus einer Vielzahl von unterschiedlichen kooperativen Gruppen verschiedenen funktionellen Einheiten (z. B. Verarbeitungskernen 3810, SFUs 3812 und LSUs 3814) zuteilt.
  • In mindestens einer Ausführungsform können sich kooperative Gruppen auf ein Programmiermodell zum Organisieren von Gruppen kommunizierender Threads beziehen, das es Entwicklern erlaubt, die Granularität auszudrücken, mit der Threads kommunizieren, und so den Ausdruck satterer, effizienterer paralleler Dekompositionen ermöglicht. In mindestens einer Ausführungsform unterstützen kooperative Start-APIs die Synchronisation zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. In mindestens einer Ausführungsform stellen Anwendungen herkömmlicher Programmiermodelle ein einzelnes, einfaches Konstrukt zum Synchronisieren von kooperierenden Threads bereit: eine Sperre über alle Threads eines Thread-Blocks (z. B. die Funktion syncthreads( )). In mindestens einer Ausführungsform können Programmierer jedoch Gruppen von Threads mit einer geringeren als Thread-Block-Granularität definieren und innerhalb definierter Gruppen synchronisieren, um eine höhere Rechenleistung, Ausgestaltungsflexibilität und Software-Wiederverwendung in Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen. In mindestens einer Ausführungsform ermöglichen es kooperative Gruppen Programmierern, Gruppen von Threads explizit mit Teilblock- (d. h. so klein wie ein einzelner Thread) und Mehrblock-Granularität zu definieren und kollektive Operationen, wie etwa Synchronisation, an Threads in einer kooperativen Gruppe durchzuführen. In mindestens einer Ausführungsform unterstützt dieses Programmiermodell eine saubere Komposition über Software-Grenzen hinweg, sodass sich Bibliotheken und Dienstprogrammfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. In mindestens einer Ausführungsform ermöglichen Primitive der kooperativen Gruppen neue Muster der kooperativen Parallelität, einschließlich, aber nicht beschränkt auf, Produzent-Konsument-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein gesamtes Gitter von Thread-Blöcken.
  • In mindestens einer Ausführungsform ist eine Zuteilungseinheit 3806 so konfiguriert, dass sie Anweisungen an eine oder mehrere funktionelle Einheiten überträgt, und die Scheduler-Einheit 3804 beinhaltet ohne Einschränkung zwei Zuteilungseinheiten 3806, die es ermöglichen, dass zwei unterschiedliche Anweisungen aus einem gemeinsamen Warp während jedes Taktzyklus zugeteilt werden. In mindestens einer Ausführungsform beinhaltet jede Scheduler-Einheit 3804 eine einzelne Zuteilungseinheit 3806 oder zusätzliche Zuteilungseinheiten 3806.
  • In mindestens einer Ausführungsform beinhaltet jeder SM 3800 in mindestens einer Ausführungsform ohne Einschränkung die Registerbank 3808, die einen Satz von Registern für funktionelle Einheiten des SM 3800 bereitstellt. In mindestens einer Ausführungsform ist die Registerbank 3808 auf jede funktionelle Einheit aufgeteilt, sodass jeder funktionellen Einheit ein dedizierter Abschnitt der Registerbank 3808 zugewiesen ist. In mindestens einer Ausführungsform ist die Registerbank 3808 auf unterschiedliche Warps aufgeteilt, die durch den SM 3 800 ausgeführt werden, und die Registerbank 3808 stellt temporären Datenspeicher für Operanden bereit, die mit Datenpfaden von funktionellen Einheiten verbunden sind. In mindestens einer Ausführungsform umfasst jeder SM 3800 ohne Einschränkung eine Vielzahl von L Verarbeitungskernen 3810, wobei L eine positive ganze Zahl ist. In mindestens einer Ausführungsform beinhaltet der SM 3800 ohne Einschränkung eine große Anzahl (z. B. 128 oder mehr) von unterschiedlichen Verarbeitungskernen 3810. In mindestens einer Ausführungsform beinhaltet jeder Verarbeitungskern 3810 ohne Einschränkung eine Vollpipelineverarbeitungseinheit mit einfacher Genauigkeit, doppelter Genauigkeit und/oder gemischter Genauigkeit, die ohne Einschränkung eine arithmetisch-logische Einheit für Gleitkommazahlen und eine arithmetisch-logische Einheit für Integer beinhaltet. In mindestens einer Ausführungsform implementieren die arithmetisch-logischen Einheiten für Gleitkommazahlen den Standard IEEE 754-2008 für Gleitkommaarithmetik. In mindestens einer Ausführungsform beinhalten die Verarbeitungskerne 3810 ohne Einschränkung 64 Gleitkommakerne mit einfacher Genauigkeit (32 Bit), 64 Integerkerne, 32 Gleitkommakerne mit doppelter Genauigkeit (64 Bit) und 8 Tensorkerne.
  • Tensorkerne sind gemäß mindestens einer Ausführungsform dazu konfiguriert, Matrixoperationen durchzuführen. In mindestens einer Ausführungsform sind ein oder mehrere Tensorkerne in den Verarbeitungskernen 3810 enthalten. In mindestens einer Ausführungsform sind die Tensorkerne so konfiguriert, dass sie Deep-Learning-Matrixarithmetik durchführen, wie etwa Faltungsoperationen zum Trainieren und Inferenzieren neuronaler Netze. In mindestens einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4-Matrix und er führt eine Matrixmultiplikations- und -akkumulationsoperation D = A X B + C durch, wobei A, B, C und D 4x4-Matrizen sind.
  • In mindestens einer Ausführungsform sind die Matrixmultiplikationseingaben A und B 16-Bit-Gleitkommamatrizen und die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkommamatrizen. In mindestens einer Ausführungsform arbeiten die Tensorkerne an 16-Bit-Gleitkommaeingabedaten mit 32-Bit-Gleitkommaakkumulation. In mindestens einer Ausführungsform verwendet die 16-Bit-Gleitkommamultiplikation 64 Operationen und ergibt ein Produkt mit voller Genauigkeit, das dann unter Verwendung von 32-Bit-Gleitkommaaddition mit anderen Zwischenprodukten für eine 4x4x4-Matrixmultiplikation akkumuliert wird. In mindestens einer Ausführungsform werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die aus diesen kleineren Elementen aufgebaut sind. In mindestens einer Ausführungsform legt eine API, wie etwa die CUDA 9 C++-API, spezielle Matrixlade-, Matrixmultiplizier- und -akkumulations- und Matrixspeicheroperationen offen, um Tensorkerne aus einem CUDA-C++-Programm effizient zu verwenden. In mindestens einer Ausführungsform wird auf einem CUDA-Level auf einer Warp-Level-Schnittstelle von Matrizen der Größe 16x16 ausgegangen, die sich über alle 32 Threads des Warp erstrecken.
  • In mindestens einer Ausführungsform umfasst jeder SM 3800 ohne Einschränkung M SFUs 3812, die Spezialfunktionen durchführen (z. B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In mindestens einer Ausführungsform beinhalten die SFUs 3812 ohne Einschränkung eine Baumtraversierungseinheit, die so konfiguriert ist, dass sie eine hierarchische Baumdatenstruktur traversiert. In mindestens einer Ausführungsform beinhalten die SFUs 3812 ohne Einschränkung eine Textureinheit, die dazu konfiguriert ist, Texturkartenfilteroperationen durchzuführen. In mindestens einer Ausführungsform sind die Textureinheiten dazu konfiguriert, Texturkarten (z. B. ein 2D-Array von Texeln) aus Speicher zu laden und Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Shader-Programmen zu produzieren, die durch den SM 3800 ausgeführt werden. In mindestens einer Ausführungsform werden die Texturkarten in dem gemeinsam genutzten Speicher/L1-Cache 3818 gespeichert. In mindestens einer Ausführungsform implementieren die Textureinheiten Texturoperationen, wie etwa Filteroperationen unter Verwendung von Mip-Karten (z. B. Texturkarten mit variierenden Detailgraden), gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform beinhaltet jeder SM 3800 ohne Einschränkung zwei Textureinheiten.
  • Jeder SM 3800 umfasst in mindestens einer Ausführungsform ohne Einschränkung N LSUs 3814, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache 3818 und der Registerbank 3808 implementieren. Das Zusammenschaltungsnetz 3816 verbindet in mindestens einer Ausführungsform jede funktionelle Einheit mit der Registerbank 3808 und die LSU 3814 mit der Registerbank 3808 und dem gemeinsam genutzten Speicher/L1-Cache 3818. In mindestens einer Ausführungsform ist das Zusammenschaltungsnetz 3816 eine Kreuzschiene, die so konfiguriert sein kann, dass sie beliebige funktionelle Einheiten mit beliebigen Registern in der Registerbank 3808 verbindet und LSUs 3814 mit der Registerbank 3808 und Speicherorten in dem gemeinsam genutzten Speicher/L1-Cache 3818 verbindet.
  • In mindestens einer Ausführungsform ist der gemeinsam genutzte Speicher/L1-Cache 3818 ein Array von chipinternem Speicher, das in mindestens einer Ausführungsform die Datenspeicherung und die Kommunikation zwischen dem SM 3 800 und der Primitiv-Engine sowie zwischen Threads in dem SM 3800 ermöglicht. In mindestens einer Ausführungsform umfasst der gemeinsam genutzte Speicher/L1-Cache 3818 ohne Einschränkung eine Speicherkapazität von 128 KB und er befindet sich in einem Pfad von dem SM 3800 zu einer Partitionseinheit. In mindestens einer Ausführungsform wird der gemeinsam genutzte Speicher/L1-Cache 3818 in mindestens einer Ausführungsform zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet. In mindestens einer Ausführungsform sind einer oder mehrere von dem gemeinsam genutzten Speicher/L1-Cache 3818, L2-Cache und Speicher Ergänzungsspeicher.
  • Das Kombinieren der Funktionalität des Daten-Cache und des gemeinsam genutzten Speichers in einem einzelnen Speicherblock stellt in mindestens einer Ausführungsform eine verbesserte Rechenleistung für beide Typen von Speicherzugriffen bereit. In mindestens einer Ausführungsform wird die Kapazität durch Programme, die keinen gemeinsam genutzten Speicher verwenden, als Cache verwendet oder sie kann so verwendet werden, wie etwa, falls der gemeinsam genutzte Speicher so konfiguriert ist, dass er die Hälfte einer Kapazität verwendet, und Textur- und Lade-/Speicheroperationen die verbleibende Kapazität verwenden können. Die Integration in den gemeinsam genutzten Speicher/L1-Cache 3818 ermöglicht dem gemeinsam genutzten Speicher/L1-Cache 3818 gemäß mindestens einer Ausführungsform das Fungieren als Leitung mit hohem Durchsatz für Streaming-Daten, während simultan Zugriff mit hoher Bandbreite und niedriger Latenz auf häufig wiederverwendete Daten bereitgestellt wird. In mindestens einer Ausführungsform kann bei einer Konfiguration für Universalparallelberechnung eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. In mindestens einer Ausführungsform werden Festfunktions-Grafikverarbeitungseinheiten umgangen, wodurch ein viel einfacheres Programmiermodell entsteht. Bei einer Konfiguration für Universalparallelberechnungen ordnet eine Arbeitsverteilungseinheit in mindestens einer Ausführungsform Blöcke von Threads direkt den DPCs zu und verteilt diese. In mindestens einer Ausführungsform führen Threads in einem Block ein gemeinsames Programm aus, wobei eine eindeutige Thread-ID bei der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 3800 zum Ausführen des Programms und Durchführen von Berechnungen verwendet wird, der gemeinsam genutzte Speicher/L1-Cache 3818 zum Kommunizieren zwischen den Threads verwendet wird und die LSU 3814 zum Lesen des und Schreiben in den globalen Speicher durch den gemeinsam genutzten Speicher/L1-Cache 3818 und die Speicherpartitionseinheit verwendet wird. Bei der Konfiguration für Universalparallelberechnungen schreibt der SM 3800 in mindestens einer Ausführungsform Befehle, die durch die Scheduler-Einheit 3804 verwendet werden können, um neue Arbeit in den DPCs zu starten.
  • In mindestens einer Ausführungsform ist eine PPU in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z. B. einer drahtlosen tragbaren Vorrichtung), einem persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, einem Fahrzeug, einer am Kopf befestigten Anzeige, einer tragbaren elektronischen Vorrichtung usw. enthalten oder daran gekoppelt. In mindestens einer Ausführungsform ist eine PPU auf einem einzelnen Halbleitersubstrat verkörpert. In mindestens einer Ausführungsform ist eine PPU in einem System auf einem Chip („SoC“) zusammen mit einer oder mehreren anderen Vorrichtungen enthalten, wie etwa zusätzlichen PPUs, Speicher, einer Reduced-Instruction-Set-Computer-(„RISC“-)CPU, einer Speicherverwaltungseinheit („MMU“), einem Digital-Analog-Wandler (digital-to-analog converter - „DAC“) und dergleichen.
  • In mindestens einer Ausführungsform kann eine PPU auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen beinhaltet. In mindestens einer Ausführungsform kann diese Grafikkarte so konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf einer Hauptplatine eines Desktop-Computers eine Schnittstelle bildet. In mindestens einer Ausführungsform kann diese PPU eine integrierte Grafikverarbeitungseinheit („iGPU“) sein, die im Chipsatz einer Hauptplatine enthalten ist.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt. In mindestens einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor verwendet, um ein Modell des maschinellen Lernens, wie etwa ein neuronales Netz, zu trainieren, um dem SM 3800 bereitgestellte Informationen vorherzusagen oder zu inferenzieren. In mindestens einer Ausführungsform wird der SM 3800 verwendet, um Informationen auf Grundlage eines trainierten Modells des maschinellen Lernens (z. B. eines neuronalen Netzes) zu inferenzieren oder vorherzusagen, das durch einen anderen Prozessor oder ein anderes System oder durch den SM 3800 trainiert wurde. In mindestens einer Ausführungsform kann der SM 3800 verwendet werden, um einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.
  • Es werden Ausführungsformen offenbart, die mit einer virtualisierten Rechenplattform für weiterentwickeltes Rechnen in Bezug stehen, wie etwa Bildinferenz und Bildverarbeitung in medizinischen Anwendungen. Ohne Einschränkung können Ausführungsformen Radiografie, Magnetresonanztomografie (MRT), Nuklearmedizin, Ultraschall, Sonografie, Elastografie, fotoakustische Bildgebung, Tomografie, Echokardiografie, funktionelle Nahinfrarotspektroskopie und Magnetpartikelbildgebung oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können eine virtualisierte Rechenplattform und die hierin beschriebenen damit assoziierten Prozesse zusätzlich oder alternativ ohne Einschränkung in der Forensikanalyse, der Detektion und Bildgebung des Untergrunds (z. B. Ölexploration, Archäologie, Paläontologie usw.), der Topografie, der Ozeanografie, der Geologie, der Osteologie, der Meteorologie, der intelligenten Bereichs- oder Objektverfolgung und -überwachung, der Sensordatenverarbeitung (z. B. RADAR, SONAR, LIDAR usw.) und/oder der Genomik und Gensequenzierung verwendet werden.
  • Unter Bezugnahme auf 39 ist 39 ein beispielhaftes Datenablaufdiagramm für einen Prozess 3900 zum Erzeugen und Einsetzen einer Bildverarbeitungs- und -inferenzpipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 3900 zur Verwendung mit Bildgebungsvorrichtungen, Verarbeitungsvorrichtungen, Genomikvorrichtungen, Gensequenzierungsvorrichtungen, Radiologievorrichtungen und/oder anderen Vorrichtungstypen in einer oder mehreren Einrichtungen 3902 eingesetzt werden, wie etwa medizinischen Einrichtungen, Krankenhäusern, Gesundheitsinstituten, Kliniken, Forschungs- oder Diagnoselabors usw. In mindestens einer Ausführungsform kann der Prozess 3900 zum Durchführen einer Genomanalyse und -inferenz an Sequenzierungsdaten eingesetzt werden. Beispiele für Genomanalysen, die unter Verwendung der hierin beschriebenen Systeme und Prozesse durchgeführt werden können, beinhalten ohne Einschränkung Varianten-Calling, Mutationsdetektion und Quantifizierung der Genexpression.
  • In mindestens einer Ausführungsform kann der Prozess 3900 innerhalb eines Trainingssystems 3904 und/oder eines Einsatzsystems 3906 ausgeführt werden. In mindestens einer Ausführungsform kann das Trainingssystem 3904 verwendet werden, um das Training, den Einsatz und die Implementation von Modellen des maschinellen Lernens (z. B. neuronale Netze, Objektdetektionsalgorithmen, Algorithmen des maschinellen Sehens usw.) zur Verwendung in dem Einsatzsystem 3906 durchzuführen. In mindestens einer Ausführungsform kann das Einsatzsystem 3906 so konfiguriert sein, dass es Verarbeitungs- und Rechenressourcen in einer verteilten Rechenumgebung ablädt, um die Infrastrukturanforderungen in der Einrichtung 3902 zu reduzieren. In mindestens einer Ausführungsform kann das Einsatzsystem 3906 eine gestraffte Plattform zum Auswählen, individuellen Anpassen und Implementieren virtueller Instrumente zur Verwendung mit Bildgebungsvorrichtungen (z. B. MRT, CT-Scan, Röntgen, Ultraschall usw.) oder Sequenzierungsvorrichtungen in der Einrichtung 3902 bereitstellen. In mindestens einer Ausführungsform können virtuelle Instrumente softwaredefinierte Anwendungen zum Durchführen einer oder mehrerer Verarbeitungsoperationen in Bezug auf Bildgebungsdaten beinhalten, die durch Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Radiologievorrichtungen und/oder andere Vorrichtungstypen erzeugt werden. In mindestens einer Ausführungsform können eine oder mehrere Anwendungen in einer Pipeline Dienste (z. B. Inferenz, Visualisierung, Berechnung, KI usw.) des Einsatzsystems 3906 während der Ausführung von Anwendungen verwenden oder aufrufen.
  • In mindestens einer Ausführungsform können einige der Anwendungen, die in weiterentwickelten Verarbeitungs- und Inferenzpipelines verwendet werden, Modelle des maschinellen Lernens oder andere KI verwenden, um einen oder mehrere Verarbeitungsschritte durchzuführen. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens in der Einrichtung 3902 unter Verwendung von Daten 3908 (wie etwa Bildgebungsdaten) trainiert werden, die in der Einrichtung 3902 erzeugt wurden (und auf einem oder mehreren Servern eines Bildarchivierungs- und Kommunikationssystems (picture archiving and communication system - PACS) in der Einrichtung 3902 gespeichert sind), und sie können unter Verwendung von Bildgebungs- oder Sequenzierungsdaten 3908 aus einer anderen Einrichtung oder anderen Einrichtungen (z. B. einem anderen Krankenhaus, Labor, einer anderen Klinik usw.) oder einer Kombination davon trainiert werden. In mindestens einer Ausführungsform kann das Trainingssystem 3904 verwendet werden, um Anwendungen, Dienste und/oder andere Ressourcen zum Erzeugen von funktionierenden, einsatzfähigen Modellen des maschinellen Lernens für das Einsatzsystem 3906 bereitzustellen.
  • In mindestens einer Ausführungsform kann eine Modellregistrierungsdatenbank 3924 durch Objektspeicher unterstützt werden, der Versionierung und Objekt-Metadaten unterstützen kann. In mindestens einer Ausführungsform kann der Zugriff auf den Objektspeicher zum Beispiel durch eine mit Cloud-Speicher (z. B. einer Cloud 4026 aus 40) kompatible Anwendungsprogrammierschnittstelle (API) von innerhalb einer Cloud-Plattform erfolgen. In mindestens einer Ausführungsform können Modelle des maschinellen Lernens innerhalb der Modellregistrierungsdatenbank 3924 durch Entwickler oder Partner eines Systems, das mit einer API interagiert, hochgeladen, aufgelistet, modifiziert oder gelöscht werden. In mindestens einer Ausführungsform kann eine API Zugriff auf Verfahren bereitstellen, die es Benutzern mit zweckmäßigen Anmeldeinformationen ermöglichen, Modelle mit Anwendungen zu assoziieren, sodass Modelle als Teil der Ausführung von containerisierten Instanziierungen von Anwendungen ausgeführt werden können.
  • In mindestens einer Ausführungsform kann eine Trainingspipeline 4004 (40) ein Szenario beinhalten, in dem die Einrichtung 3902 ihr eigenes Modell des maschinellen Lernens trainiert oder ein bestehendes Modell des maschinellen Lernen aufweist, das optimiert oder aktualisiert werden muss. In mindestens einer Ausführungsform können Bildgebungsdaten 3908, die durch Bildgebungsvorrichtung(en), Sequenzierungsvorrichtungen und/oder andere Vorrichtungstypen erzeugt wurden, empfangen werden. In mindestens einer Ausführungsform kann, sobald Bildgebungsdaten 3908 empfangen werden, die KI-gestützte Annotation 3910 verwendet werden, um beim Erzeugen von Annotationen zu helfen, die den Bildgebungsdaten 3908 entsprechen, die als Ground-Truth-Daten für ein Modell des maschinellen Lernens verwendet werden sollen. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3910 ein oder mehrere Modelle des maschinellen Lernens (z. B. neuronale Faltungsnetze (CNNs)) beinhalten, die darauf trainiert werden können, Annotationen zu erzeugen, die bestimmten Typen von Bildgebungsdaten 3908 (z. B. von bestimmten Vorrichtungen) und/oder bestimmten Typen von Anomalien in den Bildgebungsdaten 3908 entsprechen. In mindestens einer Ausführungsform können die KI-gestützten Annotationen 3910 dann direkt verwendet oder unter Verwendung eines Annotationswerkzeugs (z. B. von einem Forscher, Kliniker, Arzt, Wissenschaftler usw.) eingestellt oder fein abgestimmt werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform können in einigen Beispielen gekennzeichnete Klinikdaten 3912 (z. B. Annotationen, die von einem Kliniker, Arzt, Wissenschaftler, Techniker usw. bereitgestellt werden) als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform können die KI-gestützten Annotationen 3910, gekennzeichneten Klinikdaten 3912 oder eine Kombination davon als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann ein trainiertes Modell des maschinellen Lernens als Ausgabemodell 3916 bezeichnet werden und durch das Einsatzsystem 3906 verwendet werden, wie hierin beschrieben.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 4004 (40) ein Szenario beinhalten, in dem die Einrichtung 3902 ein Modell des maschinellen Lernens zur Verwendung beim Durchführen eines oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen in dem Einsatzsystem 3906 benötigt, die Einrichtung 3902 aber möglicherweise derzeit kein derartiges Modell des maschinellen Lernens aufweist (oder möglicherweise kein Modell aufweist, das für derartige Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform kann ein bestehendes Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3924 ausgewählt werden. In mindestens einer Ausführungsform kann die Modellregistrierungsdatenbank 3924 Modelle des maschinellen Lernens beinhalten, die zum Durchführen einer Vielfalt von unterschiedlichen Inferenz-Tasks an Bildgebungsdaten trainiert sind. In mindestens einer Ausführungsform können die Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 3924 an Bildgebungsdaten von anderen Einrichtungen als der Einrichtung 3902 trainiert worden sein (z. B. Einrichtungen, die sich an einem anderen Ort befinden). In mindestens einer Ausführungsform können die Modelle des maschinellen Lernens an Bildgebungsdaten von einem Ort, zwei Orten oder einer beliebigen Anzahl von Orten trainiert worden sein. In mindestens einer Ausführungsform kann das Training beim Trainieren an Bildgebungsdaten von einem spezifischen Ort an diesem Ort oder mindestens auf eine Weise stattfinden, mit der die Vertraulichkeit der Bildgebungsdaten geschützt wird oder die Übermittlung der Bildgebungsdaten außerhalb der Räumlichkeiten eingeschränkt wird (z. B. zur Einhaltung von HIPAA-Vorschriften, Datenschutzvorschriften usw.). In mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens, sobald es an einem Ort trainiert - oder teilweise trainiert - wurde, zur Modellregistrierungsdatenbank 3924 hinzugefügt werden. In mindestens einer Ausführungsform kann ein Modell des maschinellen Lernens dann in einer beliebigen Anzahl von anderen Einrichtungen erneut trainiert oder aktualisiert werden und ein erneut trainiertes oder aktualisiertes Modell kann in der Modellregistrierungsdatenbank 3924 verfügbar gemacht werden. In mindestens einer Ausführungsform kann dann ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3924 ausgewählt werden - und als Ausgabemodell 3916 bezeichnet werden - und in dem Einsatzsystem 3906 verwendet werden, um einen oder mehrere Verarbeitungs-Tasks für eine oder mehrere Anwendungen eines Einsatzsystems durchzuführen.
  • In mindestens einer Ausführungsform kann die Trainingspipeline 4004 (40) in einem Szenario verwendet werden, das beinhaltet, dass die Einrichtung 3902 ein Modell des maschinellen Lernens zur Verwendung beim Durchführen eines oder mehrerer Verarbeitungs-Tasks für eine oder mehrere Anwendungen in dem Einsatzsystem 3906 erfordert, die Einrichtung 3902 aber möglicherweise derzeit kein derartiges Modell des maschinellen Lernens aufweist (oder möglicherweise kein Modell aufweist, das für derartige Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform könnte ein aus der Modellregistrierungsdatenbank 3924 ausgewähltes Modell des maschinellen Lernens aufgrund von Unterschieden bei den Populationen, genetischen Variationen, der Robustheit der zum Trainieren eines Modells des maschinellen Lernens verwendeten Trainingsdaten, der Verschiedenartigkeit der Anomalien der Trainingsdaten und/oder anderer Probleme mit den Trainingsdaten nicht für die in der Einrichtung 3902 erzeugten Bildgebungsdaten 3908 fein abgestimmt oder optimiert sein. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3910 verwendet werden, um beim Erzeugen von Annotationen zu helfen, die den Bildgebungsdaten 3908 entsprechen, die als Ground-Truth-Daten für das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden sollen. In mindestens einer Ausführungsform können gekennzeichnete Klinikdaten 3912 (z. B. Annotationen, die von einem Kliniker, Arzt, Wissenschaftler usw. bereitgestellt werden) als Ground-Truth-Daten für das Training eines Modells des maschinellen Lernens verwendet werden. In mindestens einer Ausführungsform kann das erneute Trainieren oder Aktualisieren eines Modells des maschinellen Lernens als Modelltraining 3914 bezeichnet werden. In mindestens einer Ausführungsform kann das Modelltraining 3914 - z. B. KI-gestützte Annotationen 3910, gekennzeichnete klinische Daten 3912 oder eine Kombination davon - als Ground-Truth-Daten für das erneute Training oder Aktualisieren eines Modells des maschinellen Lernens verwendet werden.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 3906 Software 3918, Dienste 3920, Hardware 3922 und/oder andere Komponenten, Merkmale und Funktionalitäten beinhalten. In mindestens einer Ausführungsform kann das Einsatzsystem 3906 einen Software-„Stapel“ beinhalten, sodass die Software 3918 auf den Diensten 3920 aufgebaut sein kann und die Dienste 3920 verwenden kann, um einige oder alle Verarbeitungs-Tasks durchzuführen, und die Dienste 3920 und die Software 3918 können auf der Hardware 3922 aufgebaut sein und die Hardware 3922 verwenden, um Verarbeitungs-, Speicher- und/oder andere Rechen-Tasks des Einsatzsystems 3906 auszuführen.
  • In mindestens einer Ausführungsform kann die Software 3918 eine beliebige Anzahl von unterschiedlichen Containern beinhalten, wobei jeder Container eine Instanziierung einer Anwendung ausführen kann. In mindestens einer Ausführungsform kann jede Anwendung einen oder mehrere Verarbeitungs-Tasks in einer weiterentwickelten Verarbeitungs- und Inferenzpipeline durchführen (z. B. Inferenz, Objektdetektion, Merkmalsdetektion, Segmentierung, Bildverbesserung, Kalibrierung usw.). In mindestens einer Ausführungsform kann für jeden Typ von Bildgebungsvorrichtung (z. B. CT, MRT, Röntgen, Ultraschall, Sonografie, Echokardiografie usw.), Sequenzierungsvorrichtung, Radiologievorrichtung, Genomikvorrichtung usw. eine beliebige Anzahl von Containern vorhanden sein, die einen Datenverarbeitungs-Task in Bezug auf Bildgebungsdaten 3908 (oder andere Datentypen, wie etwa die hierin beschriebenen), die durch eine Vorrichtung erzeugt werden, durchführen können. In mindestens einer Ausführungsform kann eine weiterentwickelte Verarbeitungs- und Inferenzpipeline auf Grundlage von Auswahlen unterschiedlicher Container definiert werden, die zum Verarbeiten von Bildgebungsdaten 3908 gewünscht oder erforderlich sind, zusätzlich zu Containern, die Bildgebungsdaten zur Verwendung durch jeden Container und/oder zur Verwendung durch die Einrichtung 3902 nach dem Verarbeiten durch eine Pipeline empfangen und konfigurieren (z. B. zur Rückkonvertierung von Ausgaben in einen verwendbaren Datentyp, wie etwa Daten der digitalen Bildgebung und Kommunikation in der Medizin (digital imaging and communications in medicine - DICOM), Daten eines Radiologieinformationssystems (radiology information system - RIS), Daten eines Klinikinformationssystems (clinical information system - CIS), Daten zum Aufruf einer entfernten Prozedur (remote procedure call - RPC), Daten, die im Wesentlichen mit einer Schnittstelle zur Darstellungszustandsübermittlung (representation state transfer - REST) konform sind, Daten, die im Wesentlichen mit einer dateibasierten Schnittstelle konform sind, und/oder Rohdaten, zur Speicherung und Anzeige in der Einrichtung 3902). In mindestens einer Ausführungsform kann eine Kombination von Containern innerhalb der Software 3918 (die z. B. eine Pipeline bilden) als virtuelles Instrument bezeichnet werden (wie hierin detaillierter beschrieben) und ein virtuelles Instrument kann Dienste 3920 und Hardware 3922 ausnutzen, um einige oder alle Verarbeitungs-Tasks von in Containern instanziierten Anwendungen auszuführen.
  • In mindestens einer Ausführungsform kann eine Datenverarbeitungspipeline Eingabedaten (z. B. Bildgebungsdaten 3908) in einem DICOM-, RIS-, CIS-, REST-konformen, RPC-, Rohdaten- und/oder anderen Format als Reaktion auf eine Inferenzanforderung (z. B. eine Anforderung von einem Benutzer des Einsatzsystems 3906, wie etwa einem Kliniker, einem Arzt, einem Radiologen usw.) empfangen. In mindestens einer Ausführungsform können die Eingabedaten für ein oder mehrere Bilder, Videos und/oder andere Datendarstellungen repräsentativ sein, die durch eine oder mehrere Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Radiologievorrichtungen, Genomikvorrichtungen und/oder andere Vorrichtungstypen erzeugt werden. In mindestens einer Ausführungsform können die Daten als Teil der Datenverarbeitungspipeline einer Vorverarbeitung unterzogen werden, um die Daten für die Verarbeitung durch eine oder mehrere Anwendungen vorzubereiten. In mindestens einer Ausführungsform kann eine Nachbearbeitung an einer Ausgabe einer oder mehrerer Ableitungsaufgaben oder anderer Verarbeitungsaufgaben einer Pipeline durchgeführt werden, um Ausgabedaten für eine nächste Anwendung vorzubereiten und/oder Ausgabedaten für die Übermittlung und/oder Verwendung durch einen Benutzer vorzubereiten (z. B. als eine Antwort auf eine Ableitungsanfrage). In mindestens einer Ausführungsform können Inferenz-Tasks durch ein oder mehrere Modelle des maschinellen Lernens durchgeführt werden, wie etwa trainierte oder eingesetzte neuronale Netze, die Ausgabemodelle 3916 des Trainingssystems 3904 beinhalten können.
  • In mindestens einer Ausführungsform können die Tasks der Datenverarbeitungspipeline in einem Container(n) eingekapselt sein, die jeweils eine diskrete, voll funktionsfähige Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung darstellen, die dazu in der Lage ist, sich auf Modelle des maschinellen Lernens zu beziehen. In mindestens einer Ausführungsform können Container oder Anwendungen in einem privaten (z. B. zugriffsbeschränkten) Bereich einer Containerregistrierungsdatenbank (hierin detaillierter beschrieben) veröffentlicht werden und trainierte oder eingesetzte Modelle können in der Modellregistrierungsdatenbank 3924 gespeichert und mit einer oder mehreren Anwendungen assoziiert werden. In mindestens einer Ausführungsform können Abbilder von Anwendungen (z. B. Containerabbilder) in einer Containerregistrierungsdatenbank verfügbar sein und sobald es durch einen Benutzer aus einer Containerregistrierungsdatenbank für den Einsatz in einer Pipeline ausgewählt wurde, kann ein Abbild verwendet werden, um einen Container für eine Instanziierung einer Anwendung zur Verwendung durch das System eines Benutzers zu erzeugen.
  • In mindestens einer Ausführungsform können Entwickler (z. B. Software-Entwickler, Kliniker, Ärzte usw.) Anwendungen (z. B. als Container) zum Durchführen von Bildverarbeitung und/oder Inferenz an zugeführten Daten entwickeln, veröffentlichen und speichern. In mindestens einer Ausführungsform kann die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines Software-Entwicklungskits (software development kit - SDK) durchgeführt werden, das mit einem System assoziiert ist (um z. B. sicherzustellen, dass eine entwickelte Anwendung und/oder ein entwickelter Container mit einem System konform oder kompatibel ist). In mindestens einer Ausführungsform kann eine Anwendung, die entwickelt wird, lokal (z. B. in einer ersten Einrichtung, an Daten von einer ersten Einrichtung) mit einem SDK geprüft werden, das mindestens einige der Dienste 3920 als System (z. B. System 4000 aus 40) unterstützen kann. Da DICOM-Objekte zwischen einem und Hunderten von Bildern oder anderen Datentypen enthalten können, und aufgrund einer Variation der Daten, kann ein Entwickler in mindestens einer Ausführungsform für das Verwalten (z. B. das Festlegen von Konstrukten für, den Einbau von Vorverarbeitung in eine Anwendung usw.) der Extraktion und Vorbereitung eingehender DICOM-Daten zuständig sein. In mindestens einer Ausführungsform kann eine Anwendung, sobald sie durch das System 4000 validiert wurde (z. B. bezüglich Genauigkeit, Sicherheit, Patientendatenschutz usw.), in einer Containerregistrierungsdatenbank zur Auswahl und/oder Implementation durch einen Benutzer (z. B. ein Krankenhaus, eine Klinik, ein Labor, einen Gesundheitsdienstleister usw.) verfügbar sein, um einen oder mehrere Verarbeitungs-Tasks in Bezug auf Daten in einer Einrichtung (z. B. einer zweiten Einrichtung) eines Benutzers durchzuführen.
  • In mindestens einer Ausführungsform können Entwickler dann Anwendungen oder Container durch ein Netz für den Zugriff und die Verwendung durch Benutzer eines Systems (z. B. des Systems 4000 aus 40) teilen. In mindestens einer Ausführungsform können abgeschlossene und validierte Anwendungen oder Container in einer Containerregistrierungsdatenbank gespeichert werden und damit assoziierte Modelle des maschinellen Lernens in der Modellregistrierungsdatenbank 3924 gespeichert werden. In mindestens einer Ausführungsform kann eine anfordernde Entität (z. B. ein Benutzer in einer medizinischen Einrichtung) - die eine Inferenz- oder Bildverarbeitungsanforderung bereitstellt - eine Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 3924 nach einer Anwendung, einem Container, einem Datensatz, einem Modell des maschinellen Lernens usw. durchsuchen, eine gewünschte Kombination von Elementen zur Aufnahme in die Datenverarbeitungspipeline auswählen und eine Bildverarbeitungsanforderung absenden. In mindestens einer Ausführungsform kann eine Anforderung Eingabedaten (und in einigen Beispielen damit assoziierte Patientendaten) beinhalten, die zum Durchführen einer Anforderung notwendig sind, und/oder eine Auswahl von Anwendung(en) und/oder Modellen des maschinellen Lernens beinhalten, die bei der Verarbeitung einer Anforderung ausgeführt werden sollen. In mindestens einer Ausführungsform kann eine Anforderung dann an eine oder mehrere Komponenten des Einsatzsystems 3906 (z. B. eine Cloud) übergeben werden, um die Verarbeitung der Datenverarbeitungspipeline durchzuführen. In mindestens einer Ausführungsform kann die Verarbeitung durch das Einsatzsystem 3906 die Referenzierung ausgewählter Elemente (z. B. Anwendungen, Container, Modelle usw.) aus einer Containerregistrierungsdatenbank und/oder Modellregistrierungsdatenbank 3924 beinhalten. In mindestens einer Ausführungsform können, sobald Ergebnisse durch eine Pipeline erzeugt wurden, die Ergebnisse als Referenz an einen Benutzer zurückgegeben werden (z. B. zur Ansicht in einer Ansichtanwendungssuite, die auf einer lokalen Arbeitsstation oder einem lokalen Endgerät in den Räumlichkeiten ausgeführt wird). In mindestens einer Ausführungsform kann ein Radiologe Ergebnisse von einer Datenverarbeitungspipeline empfangen, die eine beliebige Anzahl von Anwendungen und/oder Containern beinhaltet, wobei die Ergebnisse Anomaliedetektion in Röntgenbildern, CT-Scans, MRTs usw. beinhalten können.
  • In mindestens einer Ausführungsform können zur Unterstützung der Verarbeitung oder Ausführung von Anwendungen oder Containern in Pipelines die Dienste 3920 ausgenutzt werden. In mindestens einer Ausführungsform können die Dienste 3920 Rechendienste, Dienste für künstliche Intelligenz (KI), Visualisierungsdienste und/oder andere Diensttypen beinhalten. In mindestens einer Ausführungsform können die Dienste 3920 eine Funktionalität bereitstellen, die eine oder mehrere Anwendungen in der Software 3918 gemeinsam haben, sodass die Funktionalität zu einem Dienst abstrahiert werden kann, der durch Anwendungen aufgerufen oder ausgenutzt werden kann. In mindestens einer Ausführungsform kann die durch die Dienste 3920 bereitgestellte Funktionalität dynamisch und effizienter laufen, während sie ebenfalls gut skalierbar ist, indem es Anwendungen erlaubt wird, Daten parallel zu verarbeiten (z. B. unter Verwendung einer Parallelrechenplattform 4030 (40)). Anstatt dass jede Anwendung, die eine gleiche Funktionalität teilt, die durch einen Dienst 3920 angeboten wird, eine entsprechende Instanz des Dienstes 3920 aufweisen muss, kann der Dienst 3920 in mindestens einer Ausführungsform von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Dienste einen Inferenzserver oder eine Inferenz-Engine beinhalten, der/die als nicht einschränkende Beispiele zum Ausführen von Detektions- oder Segmentierungs-Tasks verwendet werden kann. In mindestens einer Ausführungsform kann ein Modelltrainingsdienst enthalten sein, der die Fähigkeit bereitstellen kann, Modelle des maschinellen Lernens zu trainieren und/oder erneut zu trainieren. In mindestens einer Ausführungsform kann ferner ein Datenerweiterungsdienst enthalten sein, der die Extraktion, Größenänderung, Skalierung und/oder andere Erweiterung von GPU-beschleunigten Daten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) bereitstellen kann. In mindestens einer Ausführungsform kann ein Visualisierungsdienst verwendet werden, der Bild-Rendering-Effekte - wie etwa Strahlverfolgung, Rasterung, Entrauschen, Schärfung usw. - hinzufügen kann, um zweidimensionale (2D) und/oder dreidimensionale (3D) Modelle realistischer zu gestalten. In mindestens einer Ausführungsform können Dienste für virtuelle Instrumente enthalten sein, die Strahlformung, Segmentierung, Inferenzieren, Bildgebung und/oder Unterstützung für andere Anwendungen innerhalb von Pipelines virtueller Instrumente bereitstellen.
  • In mindestens einer Ausführungsform, in der ein Dienst 3920 einen KI-Dienst (z. B. einen Inferenzdienst) beinhaltet, können ein oder mehrere Modelle des maschinellen Lernens, die mit einer Anwendung zur Anomaliedetektion (z. B. Tumoren, Wachstumsauffälligkeiten, Narbenbildung usw.) assoziiert sind, ausgeführt werden, indem ein Inferenzdienst (z. B. ein Inferenzserver) aufgerufen wird (z. B. als API-Aufruf), um Modell(e) des maschinellen Lernens oder deren Verarbeitung als Teil der Anwendungsausführung auszuführen. In mindestens einer Ausführungsform, in der eine andere Anwendung ein oder mehrere Modelle des maschinellen Lernens für Segmentierungs-Tasks beinhaltet, kann eine Anwendung einen Inferenzdienst aufrufen, um Modelle des maschinellen Lernens zum Durchführen einer oder mehrerer mit Segmentierungs-Tasks assoziierten Verarbeitungsoperationen auszuführen. In mindestens einer Ausführungsform kann die Software 3918, die eine weiterentwickelte Verarbeitungs- und Inferenzpipeline implementiert, die eine Segmentierungsanwendung und eine Anomaliedetektionsanwendung beinhaltet, gestrafft werden, da jede Anwendung einen gleichen Inferenzdienst zum Durchführen eines oder mehrerer Inferenz-Tasks aufrufen kann.
  • In mindestens einer Ausführungsform kann die Hardware 3922 GPUs, CPUs, Grafikkarten, ein KI-/Deep-Learning-System (z. B. einen KI-Supercomputer wie etwa das DGX-Supercomputersystem von NVIDIA), eine Cloud-Plattform oder eine Kombination davon beinhalten. In mindestens einer Ausführungsform können unterschiedliche Typen von Hardware 3922 verwendet werden, um eine effiziente, speziell entwickelte Unterstützung für Software 3918 und Dienste 3920 in dem Einsatzsystem 3906 bereitzustellen. In mindestens einer Ausführungsform kann die Verwendung von GPU-Verarbeitung für die lokale Verarbeitung (z. B. in der Einrichtung 3902), innerhalb eines KIIDeep-Leaming-Systems, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 3906 implementiert werden, um die Effizienz, Genauigkeit und Wirksamkeit von Bildverarbeitung, Bildrekonstruktion, Segmentierung, MRT-Untersuchungen, Schlaganfall- oder Herzinfarktdetektion (z. B. in Echtzeit), Bildqualität beim Rendern usw. zu verbessern. In mindestens einer Ausführungsform kann eine Einrichtung Bildgebungsvorrichtungen, Genomikvorrichtungen, Sequenzierungsvorrichtungen und/oder andere Vorrichtungstypen in den Räumlichkeiten beinhalten, die GPUs ausnutzen können, um Bildgebungsdaten zu erzeugen, die für die Anatomie eines Probanden repräsentativ sind.
  • In mindestens einer Ausführungsform können die Software 3918 und/oder die Dienste 3920 als nicht einschränkende Beispiele für die GPU-Verarbeitung in Bezug auf Deep Learning, maschinelles Lernen und/oder Datenverarbeitung mit hoher Rechenleistung optimiert sein. In mindestens einer Ausführungsform kann mindestens ein Teil der Rechenumgebung des Einsatzsystems 3906 und/oder des Trainingssystems 3904 in einem Rechenzentrum auf einem oder mehreren Supercomputern oder Rechensystemen mit hoher Rechenleistung mit GPU-optimierter Software (z. B. Hardware- und Software-Kombination des DGX-Systems von NVIDIA) ausgeführt werden. In mindestens einer Ausführungsform können Rechenzentren mit HIPAA-Bestimmungen konform sein, sodass der Empfang, die Verarbeitung und die Übertragung von Bildgebungsdaten und/oder anderen Patientendaten in Bezug auf den Schutz von Patientendaten sicher gehandhabt werden. In mindestens einer Ausführungsform kann die Hardware 3922 eine beliebige Anzahl von GPUs beinhalten, die zur parallelen Verarbeitung von Daten, wie hierin beschrieben, aufgerufen werden können. In mindestens einer Ausführungsform kann die Cloud-Plattform ferner GPU-Verarbeitung für die GPU-optimierte Ausführung von Deep-Learning-Tasks, Tasks des maschinellen Lernens oder anderen Rechen-Tasks beinhalten. In mindestens einer Ausführungsform kann die Cloud-Plattform (z. B. NGC von NVIDIA) unter Verwendung von KI-/Deep-Learning-Supercomputer(n) und/oder GPU-optimierter Software (z. B. wie auf DGX-Systemen von NVIDIA bereitgestellt) als Hardware-Abstraktions- und - Skalierungsplattform ausgeführt werden. In mindestens einer Ausführungsform kann die Cloud-Plattform ein Anwendungscontainer-Clustering-System oder Orchestrierungssystem (z. B. KUBERNETES) auf mehreren GPUs integrieren, um eine nahtlose Skalierung und Lastverteilung zu ermöglichen.
  • 40 ist eine Systemdarstellung für ein beispielhaftes System 4000 zum Erzeugen und Einsetzen einer Bildgebungseinsatzpipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 4000 verwendet werden, um den Prozess 3900 aus 39 und/oder andere Prozesse, einschließlich weiterentwickelter Verarbeitungs- und Inferenzpipelines, zu implementieren. In mindestens einer Ausführungsform kann das System 4000 das Trainingssystem 3904 und das Einsatzsystem 3906 beinhalten. In mindestens einer Ausführungsform können das Trainingssystem 3904 und das Einsatzsystem 3906 unter Verwendung von Software 3918, Diensten 3920 und/oder Hardware 3922, wie hierin beschrieben, implementiert werden.
  • In mindestens einer Ausführungsform kann das System 4000 (z. B. das Trainingssystem 3904 und/oder das Einsatzsystem 3906) in einer Cloud-Computing-Umgebung implementiert sein (z. B. unter Verwendung der Cloud 4026). In mindestens einer Ausführungsform kann das System 4000 lokal in Bezug auf eine Einrichtung des Gesundheitswesens oder als Kombination aus sowohl Cloud- als auch lokalen Rechenressourcen implementiert werden. In mindestens einer Ausführungsform können in Ausführungsformen, in denen Cloud Computing implementiert ist, Patientendaten von einer oder mehreren Komponenten des Systems 4000 getrennt oder nicht durch diese verarbeitet werden, was die Verarbeitung nicht konform mit HIPAA- und/oder anderen Vorschriften oder Gesetzen zur Datenhandhabung und zum Datenschutz machen würde. In mindestens einer Ausführungsform kann der Zugriff auf die APIs in der Cloud 4026 durch erlassene Sicherheitsmaßnahmen oder -protokolle auf autorisierte Benutzer beschränkt sein. In mindestens einer Ausführungsform kann ein Sicherheitsprotokoll Web-Token beinhalten, die durch einen Authentifizierungsdienst (z. B. AuthN, AuthZ, Gluecon usw.) signiert sein können und eine zweckmäßige Autorisierung tragen können. In mindestens einer Ausführungsform können APIs von virtuellen Instrumenten (hierin beschrieben) oder anderen Instanziierungen des Systems 4000 auf einen Satz von öffentlichen IPs beschränkt sein, die für die Interaktion sicherheitsüberprüft oder autorisiert wurden.
  • In mindestens einer Ausführungsform können verschiedene Komponenten des Systems 4000 unter Verwendung beliebiger einer Vielfalt von unterschiedlichen Netztypen, einschließlich, aber nicht beschränkt auf, lokaler Netze (LANs) und/oder Weitverkehrsnetze (WANs), über drahtgebundene und/oder drahtlose Kommunikationsprotokolle miteinander kommunizieren. In mindestens einer Ausführungsform kann die Kommunikation zwischen Einrichtungen und Komponenten des Systems 4000 (z. B. zum Übertragen von Inferenzanforderungen, zum Empfangen von Ergebnissen von Inferenzanforderungen usw.) über einen Datenbus oder Datenbusse, drahtlose Datenprotokolle (Wi-Fi), drahtgebundene Datenprotokolle (z. B. Ethernet) usw. kommuniziert werden.
  • In mindestens einer Ausführungsform kann das Trainingssystem 3904 Trainingspipelines 4004 ausführen, die denjenigen ähnlich sind, die hierin in Bezug auf 39 beschrieben sind. In mindestens einer Ausführungsform, in der ein oder mehrere Modelle des maschinellen Lernens in Einsatzpipelines 4010 durch das Einsatzsystem 3906 verwendet werden sollen, können Trainingspipelines 4004 verwendet werden, um ein oder mehrere (z. B. vorab trainierte) Modelle zu trainieren oder erneut zu trainieren und/oder eines oder mehrere der vorab trainierten Modelle 4006 zu implementieren (z. B. ohne eine Notwendigkeit eines erneuten Trainings oder einer Aktualisierung). In mindestens einer Ausführungsform können als Ergebnis der Trainingspipelines 4004 Ausgabemodell(e) 3916 erzeugt werden. In mindestens einer Ausführungsform können die Trainingspipelines 4004 eine beliebige Anzahl von Verarbeitungsschritten beinhalten, zum Beispiel, aber nicht beschränkt auf, die Konvertierung oder Anpassung von Bildgebungsdaten (oder anderen Eingabedaten) (z. B. unter Verwendung eines DICOM-Adapters 4002A zum Konvertieren von DICOM-Bildern in ein anderes Format, das für die Verarbeitung durch jeweilige Modelle des maschinellen Lernens geeignet ist, wie etwa das Format der Neuroimaging Informatics Technology Initiative (NIfTI)), KI-gestützte Annotation 3910, Kennzeichnung oder Annotation von Bildgebungsdaten 3908, um gekennzeichnete Klinikdaten 3912 zu erzeugen, Modellauswahl aus einer Modellregistrierungsdatenbank, Modelltraining 3914, Training, erneutes Training oder Aktualisieren von Modellen und/oder andere Verarbeitungsschritte. In mindestens einer Ausführungsform können für unterschiedliche Modelle des maschinellen Lernens, die durch das Einsatzsystem 3906 verwendet werden, unterschiedliche Trainingspipelines 4004 verwendet werden. In mindestens einer Ausführungsform kann für ein erstes Modell des maschinellen Lernens eine Trainingspipeline 4004 verwendet werden, die einem ersten Beispiel ähnlich ist, das in Bezug auf 39 beschrieben ist, für ein zweites Modell des maschinellen Lernens eine Trainingspipeline 4004 verwendet werden, die einem zweiten Beispiel ähnlich ist, das in Bezug auf 39 beschrieben ist, und für ein drittes Modell des maschinelles Lernens eine Trainingspipeline 4004 verwendet werden, die einem dritten Beispiel ähnlich ist, das in Bezug auf 39 beschrieben ist. In mindestens einer Ausführungsform kann eine beliebige Kombination von Tasks innerhalb des Trainingssystems 3904 verwendet werden, in Abhängigkeit davon, was für jedes jeweilige Modell des maschinellen Lernens erforderlich ist. In mindestens einer Ausführungsform können eines oder mehrere der Modelle des maschinellen Lernens bereits trainiert und einsatzbereit sein, sodass die Modelle des maschinellen Lernens möglicherweise keiner Verarbeitung durch das Trainingssystem 3904 unterzogen werden und durch das Einsatzsystem 3906 implementiert werden können.
  • In mindestens einer Ausführungsform können die Ausgabemodell(e) 3916 und/oder die vorab trainierte(n) Modell(e) 4006 in Abhängigkeit von der Implementation oder Ausführungsform beliebige Typen von Modellen des maschinellen Lernens beinhalten. In mindestens einer Ausführungsform und ohne Einschränkung können durch das System 4000 verwendete Modelle des maschinellen Lernens Modell(e) des maschinellen Lernens unter Verwendung von linearer Regression, logistischer Regression, Entscheidungsbäumen, Stützvektormaschinen (support vector machines - SVM), naivem Bayes-Klassifikator, k-nächstem Nachbarn (k-nearest neighbor - Knn), k-Means-Clustering, Random Forest, Dimensionsreduktionsalgorithmen, Gradientenverstärkungsalgorithmen, neuronalen Netzen (z. B. Autocodierern, faltenden, rekurrenten, Perzeptronen, langem Kurzzeitgedächtnis (Long/Short Term Memory - LSTM), Hopfield, Boltzmann, Deep Belief, entfaltenden, erzeugenden gegnerischen, Flüssigkeitszustandsmaschine usw.) und/oder andere Typen von Modellen des maschinellen Lernens beinhalten.
  • In mindestens einer Ausführungsform können die Trainingspipelines 4004 KI-gestützte Annotation beinhalten, wie hierin in Bezug auf mindestens 43B detaillierter beschrieben. In mindestens einer Ausführungsform können gekennzeichnete Klinikdaten 3912 (z. B. herkömmliche Annotation) durch eine beliebige Anzahl von Techniken erzeugt werden. In mindestens einer Ausführungsform können Kennzeichnungen oder andere Annotationen innerhalb eines Zeichenprogramms (z. B. eines Annotationsprogramms), eines Programms zur computergestützten Konstruktion (computer aided design - CAD), eines Kennzeichnungsprogramms, eines anderen Typs von Programm, das zum Erzeugen von Annotationen oder Kennzeichnungen für Ground Truth geeignet ist, erzeugt werden und/oder in einigen Beispielen von Hand gezeichnet werden. In mindestens einer Ausführungsform können die Ground-Truth-Daten synthetisch produziert (z. B. aus Computermodellen oder Renderings erzeugt), real produziert (z. B. aus Daten der realen Welt ausgestaltet und produziert), maschinell automatisiert (z. B. unter Verwendung von Merkmalsanalyse und Lernen, um Merkmale aus Daten zu extrahieren und dann Kennzeichnungen zu erzeugen), von Menschen annotiert (z. B. definiert ein Kennzeichner oder Annotationsexperte die Stelle von Kennzeichnungen) und/oder eine Kombination davon sein. In mindestens einer Ausführungsform können für jede Instanz der Bildgebungsdaten 3908 (oder eines anderen Datentyps, der durch Modelle des maschinellen Lernens verwendet wird) entsprechende Ground-Truth-Daten vorhanden sein, die durch das Trainingssystem 3904 erzeugt werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation als Teil der Einsatzpipelines 4010 durchgeführt werden; entweder zusätzlich zu oder anstelle der KI-gestützten Annotation, die in den Trainingspipelines 4004 enthalten ist. In mindestens einer Ausführungsform kann das System 4000 eine mehrschichtige Plattform beinhalten, die eine Software-Schicht (z. B. Software 3918) von Diagnoseanwendungen (oder anderen Anwendungstypen) beinhalten kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen durchführen kann. In mindestens einer Ausführungsform kann das System 4000 kommunikativ an (z. B. über verschlüsselte Verknüpfungen) PACS-Servernetze einer oder mehrerer Einrichtungen gekoppelt sein. In mindestens einer Ausführungsform kann das System 4000 so konfiguriert sein, dass es auf Daten (z. B. DICOM-Daten, RIS-Daten, Rohdaten, CIS-Daten, REST-konforme Daten, RPC-Daten, Rohdaten usw.) von PACS-Servern zugreift und diese referenziert (z. B. über einen DICOM-Adapter 4002 oder einen Adapter für einen anderen Datentyp, wie etwa RIS, CIS, REST-konform, RPC, Rohdaten usw.), um Operationen durchzuführen, wie etwa Trainieren von Modellen des maschinellen Lernens, Einsetzen von Modellen des maschinellen Lernens, Bildverarbeitung, Inferenzieren und/oder andere Operationen.
  • In mindestens einer Ausführungsform kann eine Software-Schicht als sichere, verschlüsselte und/oder authentifizierte API implementiert sein, durch die Anwendungen oder Container aus einer externen Umgebung(en) (z. B. Einrichtung 3902) ausgewählt (z. B. aufgerufen) werden können. In mindestens einer Ausführungsform können Anwendungen dann einen oder mehrere Dienste 3920 aufrufen oder ausführen, um Rechen-, KI- oder Visualisierungs-Tasks durchzuführen, die mit jeweiligen Anwendungen assoziiert sind, und die Software 3918 und/oder die Dienste 3920 können die Hardware 3922 ausnutzen, um Verarbeitungs-Tasks auf effektive und effiziente Weise durchzuführen.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 3906 Einsatzpipelines 4010 ausführen. In mindestens einer Ausführungsform können Einsatzpipelines 4010 eine beliebige Anzahl von Anwendungen beinhalten, die sequenziell, nicht sequenziell oder auf andere Weise auf Bildgebungsdaten (und/oder andere Datentypen) angewendet werden können, die durch Bildgebungsvorrichtungen, Sequenzierungsvorrichtungen, Genomikvorrichtungen usw. erzeugt werden - einschließlich KI-gestützter Annotation, wie vorstehend beschrieben. In mindestens einer Ausführungsform, wie hierin beschrieben, kann eine Einsatzpipeline 4010 für eine einzelne Vorrichtung als virtuelles Instrument für eine Vorrichtung bezeichnet werden (z. B. ein virtuelles Ultraschallinstrument, ein virtuelles CT-Scan-Instrument, ein virtuelles Sequenzierungsinstrument usw.). In mindestens einer Ausführungsform kann für eine einzelne Vorrichtung in Abhängigkeit von Informationen, die von Daten gewünscht sind, die durch eine Vorrichtung erzeugt wurden, mehr als eine Einsatzpipeline 4010 vorhanden sein. Wenn Detektionen von Anomalien anhand einer MRT-Maschine gewünscht sind, kann in mindestens einer Ausführungsform eine erste Einsatzpipeline 4010 vorhanden sein, und wenn Bildverbesserung anhand einer Ausgabe einer MRT-Maschine gewünscht ist, kann eine zweite Einsatzpipeline 4010 vorhanden sein.
  • In mindestens einer Ausführungsform können für die Einsatzpipelines 4010 verfügbare Anwendungen eine beliebige Anwendung beinhalten, die zum Durchführen von Verarbeitungs-Tasks an Bildgebungsdaten oder anderen Daten von Vorrichtungen verwendet werden kann. In mindestens einer Ausführungsform können unterschiedliche Anwendungen für die Bildverbesserung, Segmentierung, Rekonstruktion, Anomaliedetektion, Objektdetektion, Merkmalsdetektion, Behandlungsplanung, Dosimetrie, Strahlenplanung (oder andere Strahlenbehandlungsprozeduren) und/oder andere Analyse-, Bildverarbeitungs- oder Inferenz-Tasks zuständig sein. In mindestens einer Ausführungsform kann das Einsatzsystem 3906 Konstrukte für jede der Anwendungen definieren, sodass die Benutzer des Einsatzsystems 3906 (z. B. medizinische Einrichtungen, Labors, Kliniken usw.) die Konstrukte verstehen und die Anwendungen für die Implementation innerhalb ihrer jeweiligen Einrichtung anpassen können. In mindestens einer Ausführungsform kann eine Anwendung zur Bildrekonstruktion für die Aufnahme in die Einsatzpipeline 4010 ausgewählt werden, doch der durch eine Bildgebungsvorrichtung erzeugte Datentyp kann sich von einem innerhalb einer Anwendung verwendeten Datentyp unterscheiden. In mindestens einer Ausführungsform kann der DICOM-Adapter 4002B (und/oder ein DICOM-Lesegerät) oder ein Adapter oder ein Lesegerät für einen anderen Datentyp (z. B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) innerhalb der Einsatzpipeline 4010 verwendet werden, um Daten in eine Form zu konvertieren, die durch eine Anwendung innerhalb des Einsatzsystems 3906 verwendet werden kann. In mindestens einer Ausführungsform kann der Zugriff auf Bibliotheken mit DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten und/oder anderen Datentypen akkumuliert und vorverarbeitet werden, einschließlich des Decodierens, Extrahierens und/oder Durchführens von Faltungen, Farbkorrekturen, Schärfe-, Gamma- und/oder anderen Erweiterungen der Daten. In mindestens einer Ausführungsform können DICOM-Daten, RIS-Daten, CIS-Daten, REST-konforme Daten, RPC-Daten und/oder Rohdaten ungeordnet sein und ein Vorlauf kann ausgeführt werden, um gesammelte Daten zu organisieren oder zu sortieren. Da verschiedene Anwendungen in mindestens einer Ausführungsform Bildoperationen gemeinsam nutzen können, kann in einigen Ausführungsformen eine Datenerweiterungsbibliothek (z. B. als einer der Dienste 3920) verwendet werden, um diese Operationen zu beschleunigen. In mindestens einer Ausführungsform kann zur Vermeidung von Engpässen herkömmlicher Verarbeitungsansätze, die sich auf CPU-Verarbeitung stützen, die Parallelrechenplattform 4030 zur GPU-Beschleunigung dieser Verarbeitungs-Tasks verwendet werden.
  • In mindestens einer Ausführungsform kann eine Bildrekonstruktionsanwendung einen Verarbeitungs-Task beinhalten, der die Verwendung eines Modells des maschinellen Lernens beinhaltet. In mindestens einer Ausführungsform kann ein Benutzer ein eigenes Modell des maschinellen Lernens verwenden wollen oder ein Modell des maschinellen Lernens aus der Modellregistrierungsdatenbank 3924 auswählen wollen. In mindestens einer Ausführungsform kann ein Benutzer ein eigenes Modell des maschinellen Lernens implementieren oder ein Modell des maschinellen Lernens zur Aufnahme in eine Anwendung zum Durchführen eines Verarbeitungs-Tasks auswählen. In mindestens einer Ausführungsform können die Anwendungen auswählbar und individuell anpassbar sein und durch das Definieren von Konstrukten von Anwendungen werden der Einsatz und die Implementation von Anwendungen für einen konkreten Benutzer als nahtlosere Benutzererfahrung dargestellt. In mindestens einer Ausführungsform können Einsatzpipelines 4010 durch Ausnutzen anderer Merkmale des Systems 4000 - wie etwa der Dienste 3920 und der Hardware 3922 - noch benutzerfreundlicher sein, eine einfachere Integration bereitstellen und genauere, effizientere und raschere Ergebnisse produzieren.
  • In mindestens einer Ausführungsform kann das Einsatzsystem 3906 eine Benutzerschnittstelle 4014 (z. B. eine grafische Benutzerschnittstelle, eine Webschnittstelle usw.) beinhalten, die verwendet werden kann, um Anwendungen für die Aufnahme in die Einsatzpipeline(s) 4010 auszuwählen, Anwendungen anzuordnen, Anwendungen oder Parameter oder Konstrukte davon zu modifizieren oder zu ändern, die Einsatzpipeline(s) 4010 während des Setups und/oder des Einsatzes zu verwenden und damit zu interagieren und/oder anderweitig mit dem Einsatzsystem 3906 zu interagieren. In mindestens einer Ausführungsform, obwohl nicht in Bezug auf das Trainingssystem 3904 veranschaulicht, kann die Benutzerschnittstelle 4014 (oder eine andere Benutzerschnittstelle) zum Auswählen von Modellen für die Verwendung in dem Einsatzsystem 3906, zum Auswählen von Modellen für das Training oder das erneute Training in dem Trainingssystem 3904 und/oder zum anderweitigen Interagieren mit dem Trainingssystem 3904 verwendet werden.
  • In mindestens einer Ausführungsform kann der Pipelineverwalter 4012 zusätzlich zu einem Anwendungsorchestrierungssystem 4028 verwendet werden, um die Interaktion zwischen den Anwendungen oder Containern der Einsatzpipeline(s) 4010 und den Diensten 3920 und/oder der Hardware 3922 zu verwalten. In mindestens einer Ausführungsform kann der Pipelineverwalter 4012 so konfiguriert sein, dass er Interaktionen von Anwendung zu Anwendung, von Anwendung zu Dienst 3920 und/oder von Anwendung oder Dienst zu Hardware 3922 erleichtert. In mindestens einer Ausführungsform soll dies, obwohl es als in der Software 3918 beinhaltet veranschaulicht ist, nicht einschränkend sein, und in einigen Beispielen kann der Pipeline-Verwalter 4012 in den Diensten 3920 beinhaltet sein. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 4028 (z. B. Kubernetes, DOCKER usw.) ein Container-Orchestrierungssystem beinhalten, das Anwendungen zu Containern als logische Einheiten zur Koordination, Verwaltung, Skalierung und zum Einsatz gruppieren kann. In mindestens einer Ausführungsform kann durch das Assoziieren von Anwendungen aus den Einsatzpipeline(s) 4010 (z. B. einer Rekonstruktionsanwendung, einer Segmentierungsanwendung usw.) mit einzelnen Containern jede Anwendung in einer in sich geschlossenen Umgebung (z. B. auf Kernel-Level) ausgeführt werden, um die Geschwindigkeit und Effizienz zu erhöhen.
  • In mindestens einer Ausführungsform kann jede Anwendung und/oder jeder Container (oder ein Abbild davon) einzeln entwickelt, modifiziert und eingesetzt werden (z. B. kann ein erster Benutzer oder Entwickler eine erste Anwendung entwickeln, modifizieren und einsetzen und ein zweiter Benutzer oder Entwickler eine zweite Anwendung separat von einem ersten Benutzer oder Entwickler entwickeln, modifizieren und einsetzen), was es ermöglichen kann, sich auf einen Task einer einzelnen Anwendung und/oder Container(n) zu fokussieren und zu konzentrieren, ohne durch Tasks einer anderen Anwendung(en) oder eines anderen Container(n) behindert zu werden. In mindestens einer Ausführungsform kann die Kommunikation und Kooperation zwischen unterschiedlichen Containern oder Anwendungen durch den Pipelineverwalter 4012 und das Anwendungsorchestrierungssystem 4028 unterstützt werden. In mindestens einer Ausführungsform kann, solange eine erwartete Eingabe und/oder Ausgabe jedes Containers oder jeder Anwendung einem System bekannt ist (z. B. auf Grundlage von Konstrukten von Anwendungen oder Containern), das Anwendungsorchestrierungssystem 4028 und/oder der Pipelineverwalter 4012 die Kommunikation unter und zwischen jedem der Anwendungen oder Container sowie die gemeinsame Nutzung von Ressourcen unter und zwischen diesen erleichtern. Da eine oder mehrere Anwendungen oder Container in den Einsatzpipeline(s) 4010 gleiche Dienste und Ressourcen gemeinsam nutzen können, kann das Anwendungsorchestrierungssystem 4028 in mindestens einer Ausführungsform die gemeinsame Nutzung von Diensten oder Ressourcen zwischen und unter verschiedenen Anwendungen oder Containern orchestrieren, deren Last verteilen und bestimmen. In mindestens einer Ausführungsform kann ein Scheduler verwendet werden, um den Ressourcenbedarf von Anwendungen oder Containern, die derzeitige Nutzung oder geplante Nutzung dieser Ressourcen und die Ressourcenverfügbarkeit zu verfolgen. In mindestens einer Ausführungsform kann ein Scheduler somit Ressourcen unterschiedlichen Anwendungen zuweisen und Ressourcen zwischen und unter Anwendungen im Hinblick auf Bedarf und Verfügbarkeit eines Systems verteilen. In einigen Beispielen kann ein Scheduler (und/oder eine andere Komponente des Anwendungsorchestrierungssystems 4028) die Ressourcenverfügbarkeit und -verteilung auf Grundlage von Beschränkungen bestimmen, die einem System auferlegt werden (z. B. Benutzerbeschränkungen), wie etwa Dienstgüte (QoS), Dringlichkeit des Bedarfs an Datenausgaben (um z. B. zu bestimmen, ob Echtzeitverarbeitung oder verzögerte Verarbeitung ausgeführt werden soll) usw.
  • In mindestens einer Ausführungsform können die Dienste 3920, die durch Anwendungen oder Container in dem Einsatzsystem 3906 ausgenutzt und gemeinsam genutzt werden, Rechendienste 4016, KI-Dienste 4018, Visualisierungsdienste 4020 und/oder andere Diensttypen beinhalten. In mindestens einer Ausführungsform können Anwendungen einen oder mehrere der Dienste 3920 aufrufen (z. B. ausführen), um Verarbeitungsoperationen für eine Anwendung durchzuführen. In mindestens einer Ausführungsform können die Rechendienste 4016 durch Anwendungen ausgenutzt werden, um Superrechnen oder andere Tasks des Hochleistungsrechnens (HPC) durchzuführen. In mindestens einer Ausführungsform können die Rechendienst(e) 4016 ausgenutzt werden, um Parallelverarbeitung (z. B. unter Verwendung einer Parallelrechenplattform 4030) zum Verarbeiten von Daten durch eine oder mehrere Anwendungen und/oder einen oder mehrere Tasks einer einzelnen Anwendung im Wesentlichen simultan durchzuführen. In mindestens einer Ausführungsform kann die Parallelrechenplattform 4030 (z. B. CUDA von NVIDIA) Universaldatenverarbeitung auf GPUs (GPGPU) ermöglichen (z. B. GPUs 4022). In mindestens einer Ausführungsform kann eine Software-Schicht der Parallelrechenplattform 4030 Zugriff auf virtuelle Anweisungssätze und Parallelberechnungselemente von GPUs zur Ausführung von Rechenkernels bereitstellen. In mindestens einer Ausführungsform kann die Parallelrechenplattform 4030 Speicher beinhalten und in einigen Ausführungsformen kann ein Speicher zwischen und unter mehreren Containern und/oder zwischen und unter unterschiedlichen Verarbeitungs-Tasks innerhalb eines einzelnen Containers gemeinsam genutzt werden. In mindestens einer Ausführungsform können Aufrufe für Interprozesskommunikation (inter-process communication - IPC) für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers erzeugt werden, um gleiche Daten aus einem gemeinsam genutzten Speichersegment der Parallelrechenplattform 4030 zu verwenden (z. B., wenn mehrere unterschiedliche Stufen einer Anwendung oder mehrere Anwendungen gleiche Informationen verarbeiten). In mindestens einer Ausführungsform können gleiche Daten an einem gleichem Speicherort für eine beliebige Anzahl von Verarbeitungs-Tasks verwendet werden (z. B. zur gleichen Zeit, zu unterschiedlichen Zeiten usw.), anstatt eine Kopie der Daten zu erstellen und die Daten an unterschiedliche Orte in dem Speicher zu verschieben (z. B. eine Lese-/Schreiboperation). In mindestens einer Ausführungsform können, da Daten verwendet werden, um neue Daten als Ergebnis der Verarbeitung zu erzeugen, diese Informationen über einen neuen Ort von Daten gespeichert und von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können ein Ort von Daten und ein Ort von aktualisierten oder modifizierten Daten Teil einer Definition sein, wie Nutzdaten innerhalb von Containern zu verstehen sind.
  • In mindestens einer Ausführungsform können die KI-Dienste 4018 ausgenutzt werden, um Inferenzdienste zum Ausführen von Modell(en) des maschinellen Lernens durchzuführen, die mit Anwendungen assoziiert sind (z. B. mit dem Durchführen eines oder mehrerer Verarbeitungs-Tasks einer Anwendung beauftragt). In mindestens einer Ausführungsform können die KI-Dienste 4018 das KI-System 4024 ausnutzen, um Modell(e) des maschinellen Lernens (z. B. neuronale Netze wie etwa CNNs) für Segmentierung, Rekonstruktion, Objektdetektion, Merkmalsdetektion, Klassifizierung und/oder andere Inferenz-Tasks auszuführen. In mindestens einer Ausführungsform können die Anwendungen der Einsatzpipeline(s) 4010 eines oder mehrere der Ausgabemodelle 3916 aus dem Trainingssystem 3904 und/oder andere Modelle der Anwendungen verwenden, um Inferenz an Bildgebungsdaten (z. B. DICOM-Daten, RIS-Daten, CIS-Daten, REST-konformen Daten, RPC-Daten, Rohdaten usw.) durchzuführen. In mindestens einer Ausführungsform können zwei oder mehr Beispiele für das Inferenzieren unter Verwendung des Anwendungsorchestrierungssystems 4028 (z. B. eines Schedulers) verfügbar sein. In mindestens einer Ausführungsform kann eine erste Kategorie einen Pfad mit hoher Priorität/geringer Latenz beinhalten, der höhere Service Level Agreements erreichen kann, wie etwa zum Durchführen von Inferenz an dringenden Anforderungen während eines Notfalls oder für einen Radiologen während der Diagnose. In mindestens einer Ausführungsform kann eine zweite Kategorie einen Pfad mit Standardpriorität beinhalten, der für Anforderungen verwendet werden kann, die nicht dringend sind oder bei denen die Analyse zu einem späteren Zeitpunkt durchgeführt werden kann. In mindestens einer Ausführungsform kann das Anwendungsorchestrierungssystem 4028 Ressourcen (z. B. Dienste 3920 und/oder Hardware 3922) auf Grundlage von Prioritätspfaden für unterschiedliche Inferenz-Tasks der KI-Dienste 4018 verteilen.
  • In mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher mit den KI-Diensten 4018 innerhalb des Systems 4000 verbunden sein. In mindestens einer Ausführungsform kann der gemeinsam genutzte Datenspeicher als Cache (oder anderer Speichervorrichtungstyp) arbeiten und zum Verarbeiten von Inferenzanforderungen von Anwendungen verwendet werden. In mindestens einer Ausführungsform kann, wenn eine Inferenzanforderung abgesendet wird, eine Anforderung durch einen Satz von API-Instanzen des Einsatzsystems 3906 empfangen werden und eine oder mehrere Instanzen können ausgewählt werden (z. B. für beste Anpassung, für Lastverteilung usw.), um eine Anforderung zu verarbeiten. In mindestens einer Ausführungsform kann zum Verarbeiten einer Anforderung eine Anforderung in eine Datenbank eingegeben werden, ein Modell des maschinellen Lernens kann aus der Modellregistrierungsdatenbank 3924 lokalisiert werden, falls es sich nicht bereits in einem Cache befindet, ein Validierungsschritt kann sicherstellen, dass ein zweckmäßiges Modell des maschinellen Lernens in einen Cache (z. B. einen gemeinsam genutzten Datenspeicher) geladen wird, und/oder eine Kopie eines Modells kann in einem Cache gesichert werden. In mindestens einer Ausführungsform kann ein Scheduler (z. B. des Pipelineverwalters 4012) verwendet werden, um eine Anwendung zu starten, auf die in einer Anforderung verwiesen wird, falls eine Anwendung nicht bereits läuft oder falls nicht genügend Instanzen einer Anwendung vorhanden sind. In mindestens einer Ausführungsform kann ein Inferenzserver gestartet werden, falls ein Inferenzserver zum Ausführen eines Modells nicht bereits gestartet ist. In mindestens einer Ausführungsform kann pro Modell eine beliebige Anzahl von Inferenzservern gestartet werden. In mindestens einer Ausführungsform können in einem Pull-Modell, in dem Inferenzserver geclustert sind, Modelle zwischengespeichert werden, wann immer eine Lastverteilung vorteilhaft ist. In mindestens einer Ausführungsform können Inferenzserver statisch in entsprechende, verteilte Server geladen werden.
  • In mindestens einer Ausführungsform kann das Inferenzieren unter Verwendung eines Inferenzservers durchgeführt werden, der in einem Container läuft. In mindestens einer Ausführungsform kann eine Instanz eines Inferenzservers mit einem Modell (und optional einer Vielzahl von Versionen eines Modells) assoziiert sein. In mindestens einer Ausführungsform kann, falls eine Instanz eines Inferenzservers nicht existiert, wenn eine Anforderung zum Durchführen einer Inferenz an einem Modell empfangen wird, eine neue Instanz geladen werden. In mindestens einer Ausführungsform kann beim Starten eines Inferenzservers ein Modell an einen Inferenzserver übergeben werden, sodass der gleiche Container zum Bedienen unterschiedlicher Modelle verwendet werden kann, solange der Inferenzserver als andere Instanz läuft.
  • In mindestens einer Ausführungsform kann während der Anwendungsausführung eine Inferenzanforderung für eine gegebene Anwendung empfangen werden und ein Container (der z. B. eine Instanz eines Inferenzservers hostet) geladen werden (falls nicht bereits geschehen) und eine Startprozedur aufgerufen werden. In mindestens einer Ausführungsform kann Vorverarbeitungslogik in einem Container eingehende Daten laden, decodieren und/oder beliebige zusätzliche Vorverarbeitung an diesen durchführen (z. B. unter Verwendung von CPU(s) und/oder GPU(s)). In mindestens einer Ausführungsform kann ein Container, sobald die Daten für die Inferenz vorbereitet sind, die Inferenz nach Bedarf an den Daten durchführen. In mindestens einer Ausführungsform kann dies einen einzelnen Inferenzaufruf an einem Bild (z. B. einem Handröntgenbild) beinhalten oder eine Inferenz an Hunderten von Bildern (z. B. einem Brust-CT) erfordern. In mindestens einer Ausführungsform kann eine Anwendung Ergebnisse vor dem Abschluss zusammenfassen, was ohne Einschränkung eine einzelne Konfidenzbewertung, eine Segmentierung auf Pixellevel, eine Segmentierung auf Voxellevel, das Erzeugen einer Visualisierung oder das Erzeugen von Text zum Zusammenfassen von Befunden beinhalten kann. In mindestens einer Ausführungsform können unterschiedlichen Modellen oder Anwendungen unterschiedliche Prioritäten zugeordnet werden. Zum Beispiel können einige Modelle eine Echtzeitpriorität (TAT weniger als eine Minute) aufweisen, während andere eine niedrigere Priorität aufweisen können (z. B. TAT weniger als 10 Minuten). In mindestens einer Ausführungsform können die Modellausführungszeiten von der anfordernden Institution oder Entität gemessen werden und die Zeit für die Traversierung des Partnernetzes sowie die Ausführung auf einem Inferenzdienst beinhalten.
  • In mindestens einer Ausführungsform kann die Übermittlung von Anforderungen zwischen den Diensten 3920 und den Inferenzanwendungen hinter einem Software-Entwicklungskit (SDK) verborgen sein und der robuste Transport durch eine Warteschlange bereitgestellt sein. In mindestens einer Ausführungsform wird eine Anforderung über eine API für eine einzelne Anwendungs-/Tenant-ID-Kombination in einer Warteschlange platziert und ein SDK entnimmt eine Anforderung aus einer Warteschlange und gibt eine Anforderung einer Anwendung. In mindestens einer Ausführungsform kann ein Name einer Warteschlange in einer Umgebung bereitgestellt sein, aus der ein SDK diesen aufnimmt. In mindestens einer Ausführungsform kann die asynchrone Kommunikation durch eine Warteschlange nützlich sein, da sie es einer beliebigen Instanz einer Anwendung ermöglichen kann, die Arbeit aufzunehmen, sobald sie verfügbar wird. In mindestens einer Ausführungsform können die Ergebnisse durch eine Warteschlange zurück übermittelt werden, um sicherzustellen, dass keine Daten verloren gehen. In mindestens einer Ausführungsform können Warteschlangen auch eine Fähigkeit bereitstellen, Arbeit zu segmentieren, da Arbeit mit höchster Priorität an eine Warteschlange gehen kann, mit der die meisten Instanzen einer Anwendung verbunden sind, während Arbeit mit niedrigster Priorität an eine Warteschlange gehen kann, mit der nur eine einzelne Instanz verbunden ist, die Tasks in einer Reihenfolge verarbeitet, in der sie empfangen werden. In mindestens einer Ausführungsform kann eine Anwendung auf einer GPU-beschleunigten Instanz laufen, die in der Cloud 4026 erzeugt wurde, und ein Inferenzdienst kann das Inferenzieren auf einer GPU durchführen.
  • In mindestens einer Ausführungsform können die Visualisierungsdienste 4020 ausgenutzt werden, um Visualisierungen zur Ansicht von Ausgaben von Anwendungen und/oder Einsatzpipeline(s) 4010 zu erzeugen. In mindestens einer Ausführungsform können die GPUs 4022 durch die Visualisierungsdienste 4020 ausgenutzt werden, um Visualisierungen zu erzeugen. In mindestens einer Ausführungsform können Rendering-Effekte, wie etwa Strahlverfolgung, durch die Visualisierungsdienste 4020 implementiert werden, um Visualisierungen mit höherer Qualität zu erzeugen. In mindestens einer Ausführungsform können Visualisierungen ohne Einschränkung 2D-Bild-Renderings, 3D-Volumen-Renderings, 3D-Volumenrekonstruktionen, 2D-Tomografiescheiben, Virtual-Reality-Anzeigen, Augmented-Reality-Anzeigen usw. beinhalten. In mindestens einer Ausführungsform können virtualisierte Umgebungen verwendet werden, um eine virtuelle interaktive Anzeige oder Umgebung (z. B. eine virtuelle Umgebung) für die Interaktion durch Benutzer eines Systems (z. B. Ärzte, Pfleger, Radiologen usw.) zu erzeugen. In mindestens einer Ausführungsform können die Visualisierungsdienste 4020 einen internen Visualizer, Kinematik und/oder andere Rendering- oder Bildverarbeitungsfähigkeiten oder - funktionen (z. B. Strahlverfolgung, Rasterung, interne Optik usw.) beinhalten.
  • In mindestens einer Ausführungsform kann die Hardware 3922 GPUs 4022, das KI-System 4024, die Cloud 4026 und/oder beliebige andere Hardware beinhalten, die zum Ausführen des Trainingssystems 3904 und/oder des Einsatzsystems 3906 verwendet wird. In mindestens einer Ausführungsform können die GPUs 4022 (z. B. TESLA- und/oder QUADRO-GPUs von NVIDIA) eine beliebige Anzahl von GPUs beinhalten, die zum Ausführen von Verarbeitungs-Tasks von Rechendiensten 4016, KI-Diensten 4018, Visualisierungsdiensten 4020, anderen Diensten und/oder beliebigen von Merkmalen oder Funktionen der Software 3918 verwendet werden können. In Bezug auf die KI-Dienste 4018 können die GPUs 4022 zum Beispiel zum Durchführen von Vorverarbeitung an Bildgebungsdaten (oder anderen Datentypen, die durch Modelle des maschinellen Lernens verwendet werden), Nachverarbeitung an Ausgaben der Modelle des maschinellen Lernens und/oder zum Durchführen von Inferenzieren (z. B. zum Ausführen von Modellen des maschinellen Lernens) verwendet werden. In mindestens einer Ausführungsform können die Cloud 4026, das KI-System 4024 und/oder andere Komponenten des Systems 4000 die GPUs 4022 verwenden. In mindestens einer Ausführungsform kann die Cloud 4026 eine GPU-optimierte Plattform für Deep-Learning-Tasks beinhalten. In mindestens einer Ausführungsform kann das KI-System 4024 GPUs verwenden und die Cloud 4026 - oder mindestens ein Abschnitt, der mit Deep Learning oder Inferenzieren beauftragt ist - kann unter Verwendung eines oder mehrerer KI-Systeme 4024 ausgeführt werden. Obwohl es sich bei der Hardware 3922 der Veranschaulichung nach um diskrete Komponenten handelt, soll dies demnach nicht einschränkend sein und beliebige Komponenten der Hardware 3922 können mit beliebigen anderen Komponenten der Hardware 3922 kombiniert oder durch diese ausgenutzt werden.
  • In mindestens einer Ausführungsform kann das KI-System 4024 ein speziell entwickeltes Rechensystem (z. B. einen Supercomputer oder einen HPC) beinhalten, das für Inferenzieren, Deep Learning, maschinelles Lernen und/oder andere Tasks der künstlichen Intelligenz konfiguriert ist. In mindestens einer Ausführungsform kann das KI-System 4024 (z. B. DGX von NVIDIA) GPU-optimierte Software (z. B. einen Software-Stapel) beinhalten, die unter Verwendung einer Vielzahl von GPUs 4022 zusätzlich zu CPUs, RAM, Datenspeicher und/oder anderen Komponenten, Merkmalen oder Funktionen ausgeführt werden kann. In mindestens einer Ausführungsform können ein oder mehrere KI-Systeme 4024 in der Cloud 4026 (z. B. in einem Rechenzentrum) implementiert sein, um einige oder alle der KI-basierten Verarbeitungs-Tasks des Systems 4000 durchzuführen.
  • In mindestens einer Ausführungsform kann die Cloud 4026 eine GPU-beschleunigte Infrastruktur (z. B. NGC von NVIDIA) beinhalten, die eine GPU-optimierte Plattform zum Ausführen von Verarbeitungs-Tasks des Systems 4000 bereitstellen kann. In mindestens einer Ausführungsform kann die Cloud 4026 ein KI-System(e) 4024 zum Durchführen eines oder mehrerer KI-basierter Tasks des Systems 4000 beinhalten (z. B. als Hardware-Abstraktions- und -Skalierungsplattform). In mindestens einer Ausführungsform kann die Cloud 4026 in das Anwendungsorchestrierungssystem 4028 integriert sein, das mehrere GPUs ausnutzt, um eine nahtlose Skalierung und Lastverteilung zwischen und unter den Anwendungen und Diensten 3920 zu ermöglichen. In mindestens einer Ausführungsform kann die Cloud 4026 damit beauftragt sein, mindestens einige der Dienste 3920 des Systems 4000 auszuführen, einschließlich der Rechendienste 4016, der KI-Dienste 4018 und/oder der Visualisierungsdienste 4020, wie hierin beschrieben. In mindestens einer Ausführungsform kann die Cloud 4026 Inferenz mit kleinen und großen Batches durchführen (z. B. unter Ausführung von TENSOR RT von NVIDIA), eine beschleunigte Parallelrechen-API und -Plattform 4030 bereitstellen (z. B. CUDA von NVIDIA), ein Anwendungsorchestrierungssystem 4028 ausführen (z. B. KUBERNETES), eine Grafik-Rendering-API und -Plattform bereitstellen (z. B. für Strahlverfolgung, 2D-Grafik, 3D-Grafik und/oder andere Rendering-Techniken, um Kinematik mit höherer Qualität zu erzeugen) und/oder sie kann andere Funktionen für das System 4000 bereitstellen.
  • In mindestens einer Ausführungsform kann die Cloud 4026 in dem Bestreben, die Vertraulichkeit von Patientendaten zu wahren (z. B., wenn Patientendaten oder -akten außerhalb der Räumlichkeiten verwendet werden sollen), eine Registrierungsdatenbank beinhalten - wie etwa eine Deep-Learning-Containerregistrierungsdatenbank. In mindestens einer Ausführungsform kann eine Registrierungsdatenbank Container für Instanziierungen von Anwendungen speichern, die Vorverarbeitungs-, Nachverarbeitungs- oder andere Verarbeitungs-Tasks an Patientendaten durchführen können. In mindestens einer Ausführungsform kann die Cloud 4026 Daten empfangen, die Patientendaten sowie Sensordaten in Containern beinhalten, die angeforderte Verarbeitung nur für die Sensordaten in diesen Containern durchführen und dann eine resultierende Ausgabe und/oder Visualisierungen an zweckmäßige Parteien und/oder Vorrichtungen weiterleiten (z. B. medizinische Vorrichtungen in den Räumlichkeiten, die zur Visualisierung oder Diagnose verwendet werden), ohne dass Patientendaten extrahiert oder gespeichert müssen oder anderweitig darauf zugegriffen werden muss. In mindestens einer Ausführungsform wird die Vertraulichkeit der Patientendaten in Übereinstimmung mit HIPAA- und/oder anderen Datenvorschriften gewahrt.
  • 41 veranschaulicht gemäß mindestens einer Ausführungsform ein Beispiel für eine Bereitstellungspipeline 4010A zur Verarbeitung von Bildgeberdaten. In mindestens einer Ausführungsform kann das System 4000 - und insbesondere das Auslösungssystem 3906 - zur Anpassung, Aktualisierung und/oder Integration der Auslösungspipeline(s) 4010A in eine oder mehrere Produktionsumgebungen verwendet werden. In mindestens einer Ausführungsform schließt die Bereitstellungspipeline 4010A in 41 ein nicht begrenztes Beispiel für eine Bereitstellungspipeline 4010A ein, die von einem bestimmten Benutzer (oder einem Team von Benutzern) in einer Einrichtung (z. B. in einem Krankenhaus, einer Klinik, einem Labor, einer Forschungsumgebung usw.) individuell definiert werden kann. In mindestens einer Ausführungsform kann ein Benutzer zur Definition von Bereitstellungspipelines 4010A für einen CT-Scanner 4102 beispielsweise aus einer Behälter-Registrierung eine oder mehrere Anwendungen auswählen, die bestimmte Funktionen oder Aufgaben in Bezug auf die vom CT-Scanner 4102 erzeugten Bildgeberdaten durchführen. In mindestens einer Ausführungsform können Anwendungen in der Bereitstellungspipeline 4010A als Behälter eingesetzt werden, die die Dienste 3920 und/oder die Hardware 3922 des Systems 4000 nutzen können. Darüber hinaus kann die Bereitstellungspipeline 4010A zusätzliche Verarbeitungsaufgaben oder Anwendungen einschließen, die implementiert werden können, um Daten für die Verwendung durch Anwendungen herzustellen (z. B. können der DICOM-Adapter 4002B und der DICOM-Leser 4106 in der Bereitstellungspipeline 4010A verwendet werden, um Daten für die Verwendung durch die CT-Rekonstruktion 4108, die Organsegmentierung 4110 usw. vorzubereiten). In mindestens einer Ausführungsform kann die Bereitstellungspipeline 4010A angepasst oder ausgewählt werden, um eine konsistente Bereitstellung, eine einmalige Verwendung oder eine andere Häufigkeit oder ein anderes Intervall zu ermöglichen. In mindestens einer Ausführungsform kann ein Benutzer die CT-Rekonstruktion 4108 und die Organsegmentierung 4110 für mehrere Subjekte über einen bestimmten Zeitraum hinweg aufweisen und daher die Pipeline 4010A für diesen Zeitraum einsetzen. In mindestens einer Ausführungsform kann ein Benutzer für jede Anfrage aus dem System 4000 die Anwendungen auswählen, die er für diese Anfrage zur Verarbeitung der Daten durchführen möchte. In mindestens einer Ausführungsform kann die Bereitstellungspipeline 4010A in jedem beliebigen Intervall angepasst werden, und aufgrund der Anpassungsfähigkeit und Skalierbarkeit einer Behälterstruktur im System 4000 kann dies ein nahtloser Prozess sein.
  • In mindestens einer Ausführungsform kann die Ausführungspipeline 4010A von 41 einen CT-Scanner 4102 einschließen, der Bildgeberdaten eines Patienten oder Subjekts erzeugt. In mindestens einer Ausführungsform können die Bildgeberdaten des CT-Scanners 4102 auf einem oder mehreren PACS-Servern 4104 gespeichert werden, die einer Einrichtung zugeordnet sind, in der sich der CT-Scanner 4102 befindet. In mindestens einer Ausführungsform kann (können) der (die) PACS-Server 4104 Software- und/oder Hardware-Komponenten einschließen, die direkt mit den Bildgebern (z. B. dem CT-Scanner 4102) in einer Einrichtung verbunden werden können. In mindestens einer Ausführungsform kann der DICOM-Adapter 4002B das Senden und Empfangen von DICOM-Aufgaben unter Verwendung von DICOM-Protokollen ermöglichen. In mindestens einer Ausführungsform kann der DICOM-Adapter 4002B bei der Herstellung oder Konfiguration von DICOM-Daten von PACS-Server(n) 4104 für die Verwendung durch die Bereitstellungspipeline 4010A helfen. In mindestens einer Ausführungsform kann der Pipeline-Manager 4012 nach der Verarbeitung der DICOM-Daten über den DICOM-Adapter 4002B die Daten an die Deployment-Pipeline 4010A weiterleiten. In mindestens einer Ausführungsform kann der DICOM-Leser 4106 Bilddateien und alle zugeordneten Metadaten aus DICOM-Daten extrahieren (z. B. Sinogramm-Rohdaten, wie in der Visualisierung 4116A veranschaulicht). In mindestens einer Ausführungsform können die extrahierten Arbeitsdateien in einem Cache gespeichert werden, damit sie von anderen Anwendungen in der Einsatzpipeline 4010A schneller verarbeitet werden können. In mindestens einer Ausführungsform kann, sobald das DICOM-Lesegerät 4106 die Extraktion und/oder Speicherung von Daten beendet hat, ein Signal der Fertigstellung an den Pipeline-Manager 4012 übermittelt werden. In mindestens einer Ausführungsform kann der Pipeline-Manager 4012 dann eine oder mehrere andere Anwendungen oder Behälter in der Bereitstellungspipeline 4010A einleiten oder aufrufen.
  • In mindestens einer Ausführungsform kann die Anwendung CT-Rekonstruktion 4108 und/oder der Behälter ausgeführt werden, sobald Daten (z. B. Sinogramm-Rohdaten) für die Verarbeitung durch die Anwendung CT-Rekonstruktion 4108 verfügbar sind. In mindestens einer Ausführungsform kann die CT-Rekonstruktion 4108 Sinogramm-Rohdaten aus einem Cache lesen, eine Bilddatei aus Sinogramm-Rohdaten rekonstruieren (z. B. wie in der Visualisierung 4116B veranschaulicht) und die resultierende Bilddatei in einem Cache speichern. In mindestens einer Ausführungsform kann dem Pipeline-Manager 4012 nach Abschluss der Rekonstruktion signalisiert werden, dass die Rekonstruktionsaufgabe abgeschlossen ist. In mindestens einer Ausführungsform kann, sobald die Rekonstruktion abgeschlossen ist und eine rekonstruierte Bilddatei in einem Cache (oder einer anderen Vorrichtung) gespeichert ist, die Anwendung und/oder der Behälter für die Organsegmentierung 4110 vom Pipeline-Manager 4012 ausgelöst werden. In mindestens einer Ausführungsform kann die Anwendung Organsegmentierung 4110 und/oder der Behälter eine Bilddatei aus einem Cache lesen, eine Bilddatei normalisieren oder in ein für die Inferenz geeignetes Format umwandeln (z. B. eine Bilddatei in eine Eingabeauflösung eines maschinellen Lernmodells umwandeln) und die Inferenz anhand eines normalisierten Bildes ausführen. In mindestens einer Ausführungsform kann die Anwendung Organsegmentierung 4110 und/oder der Behälter auf die Dienste 3920 zurückgreifen, um die Inferenz mit einem normalisierten Bild durchzuführen, und der Pipeline-Manager 4012 und/oder das System zur Anwendungsorchestrierung 4028 können die Nutzung der Dienste 3920 durch die Anwendung Organsegmentierung 4110 und/oder den Behälter erleichtern. In mindestens einer Ausführungsform kann zum Beispiel die Anwendung Organsegmentierung 4110 und/oder der Behälter die KI-Dienste 4018 nutzen, um Inferenzen auf einem normalisierten Bild durchzuführen, und die KI-Dienste 4018 können die Hardware 3922 (z. B. das KI-System 4024) nutzen, um die KI-Dienste 4018 auszuführen. In mindestens einer Ausführungsform kann das Ergebnis einer Inferenz eine Maskendatei sein (z. B. wie in der Visualisierung 4116C veranschaulicht), die in einem Cache (oder einer anderen Speichervorrichtung) gespeichert werden kann.
  • In mindestens einer Ausführungsform kann, sobald Anwendungen, die DICOM-Daten und/oder aus DICOM-Daten extrahierte Daten verarbeiten, die Verarbeitung abgeschlossen haben, ein Signal für den Pipeline-Manager 4012 erzeugt werden. In mindestens einer Ausführungsform kann der Pipeline-Manager 4012 dann den DICOM-Writer 4112 ausführen, um die Ergebnisse aus einem Cache (oder einer anderen Speichervorrichtung) zu lesen und die Ergebnisse in ein DICOM-Format (z. B. als DICOM-Ausgabe 4114) zu verpacken, damit sie von den Benutzern in einer Einrichtung, die eine Anfrage erzeugt haben, verwendet werden können. In mindestens einer Ausführungsform kann die DICOM-Ausgabe 4114 dann an den DICOM-Adapter 4002B übertragen werden, um die DICOM-Ausgabe 4114 für die Speicherung auf dem/den PACS-Server(n) 4104 herzustellen (z. B. für die Anzeige durch einen DICOM-Viewer in einer Einrichtung). In mindestens einer Ausführungsform können als Reaktion auf eine Anforderung zur Rekonstruktion und Segmentierung Visualisierungen 4116B und 4116C erzeugt werden, die einem Benutzer für Diagnosen, Untersuchungen und/oder andere Zwecke zur Verfügung stehen.
  • Obwohl als aufeinanderfolgende Anwendung in der Bereitstellungspipeline 4010A veranschaulicht, können die Anwendungen CT-Rekonstruktion 4108 und Organsegmentierung 4110 in mindestens einer Ausführungsform parallel verarbeitet werden. In mindestens einer weiteren Ausführungsform, in der die Anwendungen keine Abhängigkeiten voneinander aufweisen und Daten für jede Anwendung verfügbar sind (z. B. nachdem der DICOM-Leser 4106 Daten extrahiert hat), können die Anwendungen gleichzeitig, im Wesentlichen gleichzeitig oder mit einer gewissen Überlappung ausgeführt werden. In mindestens einer Ausführungsform, in der zwei oder mehr Anwendungen ähnliche Dienste 3920 benötigen, kann ein Scheduler des Systems 4000 für den Lastausgleich und die Verteilung von Rechen- oder Verarbeitungsressourcen zwischen und unter verschiedenen Anwendungen verwendet werden. In mindestens einer Ausführungsform kann in einigen Ausführungsformen eine Plattform für paralleles Berechnen 4030 verwendet werden, um parallele Prozesse für Anwendungen durchzuführen, um die Laufzeit der Bereitstellungspipeline 4010A zu verkürzen und Ergebnisse in Echtzeit bereitzustellen.
  • In mindestens einer Ausführungsform und unter Bezugnahme auf die 42A-42B kann das Auslösungssystem 3906 als ein oder mehrere virtuelle Instrumente implementiert werden, um verschiedene Funktionalitäten - wie Bildverarbeitung, Segmentierung, Anreicherung, KI, Visualisierung und Inferenz - mit Bildgebungsvorrichtungen (z. B. CT-Scannern, Röntgengeräten, MRT-Geräten usw.), Sequenzierungsvorrichtungen, Genomikvorrichtungen und/oder anderen Gerätetypen durchzuführen. In mindestens einer Ausführungsform kann das System 4000 die Erstellung und Bereitstellung virtueller Instrumente ermöglichen, die eine softwaredefinierte Bereitstellungspipeline 4010 einschließen können, die von einem oder mehreren Geräten erzeugte rohe/unverarbeitete Eingabedaten empfangen und verarbeitete/rekonstruierte Daten ausgeben kann. In mindestens einer Ausführungsform können Deployment-Pipelines 4010 (z. B. 4010A und 4010B), die virtuelle Instrumente darstellen, Intelligenz in eine Pipeline implementieren, z. B. durch die Nutzung von Modellen des maschinellen Lernens, um einem System eine containerisierte Inferenzunterstützung bereitzustellen. In mindestens einer Ausführungsform können virtuelle Instrumente eine beliebige Anzahl von Behältern ausführen, die jeweils Instanzen von Anwendungen einschließen. In mindestens einer Ausführungsform, z. B. wenn Echtzeitverarbeitung erwünscht ist, können Bereitstellungspipelines 4010, die virtuelle Instrumente repräsentieren, statisch sein (z. B. können Behälter und/oder Anwendungen festgelegt werden), während in anderen Beispielen Behälter und/oder Anwendungen für virtuelle Instrumente aus einem Pool von Anwendungen oder Ressourcen (z. B. innerhalb einer Behälterregistrierung) ausgewählt werden können (z. B. auf einer Basis pro Anfrage).
  • In mindestens einer Ausführungsform kann das System 4000 als ein oder mehrere virtuelle Instrumente vor Ort in einer Einrichtung instanziiert oder ausgeführt werden, zum Beispiel in einem Rechensystem, das neben einer radiologischen Maschine, einer Bildgebungsvorrichtung und/oder einem anderen Gerätetyp in einer Einrichtung eingesetzt wird oder anderweitig mit diesen kommuniziert. In mindestens einer Ausführungsform kann eine Vor-Ort-Installation jedoch in einem Rechensystem einer Vorrichtung selbst (z. B. einem in eine Bildgebungsvorrichtung integrierten Rechensystem), in einem lokalen Rechenzentrum (z. B. einem Rechenzentrum vor Ort) und/oder in einer Cloud-Umgebung (z. B. in der Cloud 4026) instanziiert oder ausgeführt werden. In mindestens einer Ausführungsform kann das Auslösungssystem 3906, das als virtuelles Instrument arbeitet, in einigen Beispielen von einem Supercomputer oder einem anderen HPC-System instanziiert werden. In mindestens einer Ausführungsform kann die Installation vor Ort die Nutzung hoher Bandbreiten (zum Beispiel über lokale Kommunikationsschnittstellen mit höherem Durchsatz, wie RF over Ethernet) für die Verarbeitung in Echtzeit ermöglichen. In mindestens einer Ausführungsform kann die Verarbeitung in Echtzeit oder nahezu in Echtzeit besonders nützlich sein, wenn ein virtuelles Instrument ein Ultraschallgerät oder eine andere Bildgebungsmodalität unterstützt, bei der sofortige Visualisierungen erwartet oder für genaue Diagnosen und Analysen benötigt werden. In mindestens einer Ausführungsform kann eine Cloud-Computing-Architektur in der Lage sein, dynamisches Bursting zu einem Cloud-Computing-Dienstanbieter oder einem anderen Rechencluster durchzuführen, wenn die lokale Nachfrage die Kapazität oder Fähigkeit vor Ort übersteigt. In mindestens einer Ausführungsform kann eine Cloud-Architektur, wenn sie implementiert ist, für das Training von neuronalen Netzen oder anderen maschinellen Lernmodellen abgestimmt werden, wie hier in Bezug auf das Trainingssystem 3904 beschrieben. In mindestens einer Ausführungsform können maschinelle Lernmodelle mit Hilfe von Trainingspipelines kontinuierlich lernen und sich verbessern, wenn sie zusätzliche Daten von den von ihnen unterstützten Vorrichtungen verarbeiten. In mindestens einer Ausführungsform können virtuelle Instrumente kontinuierlich verbessert werden, indem zusätzliche Daten, neue Daten, bestehende maschinelle Lernmodelle und/oder neue oder aktualisierte maschinelle Lernmodelle verwendet werden.
  • In mindestens einer Ausführungsform kann ein Rechensystem einen Teil oder die gesamte hier beschriebene Hardware 3922 einschließen, und die Hardware 3922 kann auf verschiedene Arten verteilt sein, z. B. innerhalb einer Vorrichtung, als Teil einer Rechenvorrichtung, die mit einer Vorrichtung gekoppelt ist und sich in deren Nähe befindet, in einem lokalen Rechenzentrum in einer Einrichtung und/oder in der Cloud 4026. In mindestens einer Ausführungsform, da das Auslösungssystem 3906 und die zugehörigen Anwendungen oder Behälter in Software erstellt werden (z. B. als diskrete Instanziierungen von Anwendungen in Containern), können das Verhalten, die Operation und die Konfiguration der virtuellen Instrumente sowie die von den virtuellen Instrumenten erzeugten Ausgaben nach Belieben modifiziert oder angepasst werden, ohne dass die Rohausgabe eines von einem virtuellen Instrument unterstützten Geräts verändert oder angepasst werden muss.
  • 42A schließt ein beispielhaftes Datenablaufdiagramm eines virtuellen Instruments ein, das gemäß mindestens einer Ausführungsform eine Ultraschallvorrichtung unterstützt. In mindestens einer Ausführungsform kann die Bereitstellungspipeline 4010B einen oder mehrere der Dienste 3920 des Systems 4000 nutzen. In mindestens einer Ausführungsform können die Bereitstellungspipeline 4010B und die Dienste 3920 die Hardware 3922 eines Systems entweder lokal oder in der Cloud 4026 nutzen. In mindestens einer Ausführungsform, obwohl nicht veranschaulicht, kann der Prozess 4200 durch den Pipeline-Manager 4012, das AnwendungsOrchestrierungssystem 4028 und/oder die Plattform für paralleles Rechnen 4030 unterstützt werden.
  • In mindestens einer Ausführungsform kann der Prozess 4200 den Empfang von Bildgebungsdaten von einer Ultraschallvorrichtung 4202 einschließen. In mindestens einer Ausführungsform können die Bildgeberdaten auf dem/den PACS-Server(n) in einem DICOM-Format (oder einem anderen Format, wie z. B. RIS, CIS, REST-konform, RPC, Rohdaten usw.) gespeichert sein und vom System 4000 zur Verarbeitung durch die Ausführungsform 4010 aufgenommen werden, die als virtuelles Instrument (z. B. ein virtueller Ultraschall) für die Ultraschallvorrichtung 4202 ausgewählt oder angepasst wurde. In mindestens einer Ausführungsform können Bildgebungsdaten direkt von einer Bildgebungsvorrichtung (z. B. der Ultraschallvorrichtung 4202) empfangen und von einem virtuellen Instrument verarbeitet werden. In mindestens einer Ausführungsform kann ein Wandler oder ein anderer Signalwandler, der kommunikativ zwischen einer Bildgebungsvorrichtung und einem virtuellen Instrument angeschlossen ist, von einer Bildgebungsvorrichtung erzeugte Signaldaten in Bilddaten umwandeln, die von einem virtuellen Instrument verarbeitet werden können. In mindestens einer Ausführungsform können Rohdaten und/oder Bilddaten auf das DICOM-Lesegerät 4106 angewendet werden, um Daten zur Verwendung durch Anwendungen oder Behälter der Bereitstellungspipeline 4010B zu extrahieren. In mindestens einer Ausführungsform kann der DICOM-Leser 4106 die Datenerweiterungsbibliothek 4214 (z. B. DALI von NVIDIA) als Dienst 3920 (z. B. als einer der Berechnungsdienste 4016) nutzen, um Daten zu extrahieren, in der Größe zu verändern, neu zu skalieren und/oder anderweitig für die Verwendung durch Anwendungen oder Behälter herzustellen.
  • In mindestens einer Ausführungsform kann nach der Herstellung der Daten eine Anwendung und/oder ein Behälter 4206 ausgeführt werden, um die Daten aus der Vorrichtung 4202 in eine Bilddatei zu rekonstruieren. In mindestens einer Ausführungsform kann nach der Rekonstruktion 4206 oder gleichzeitig mit der Rekonstruktion 4206 eine Anwendung und/oder ein Behälter zur Erkennung 4208 für die Anomalienerkennung, Objekterkennung, Merkmalserkennung und/oder anderen Erkennungsaufgaben in Bezug auf die Daten ausgeführt werden. In mindestens einer Ausführungsform kann eine während der Rekonstruktion 4206 erzeugte Bilddatei während der Erkennung 4208 verwendet werden, um Anomalien, Objekte, Merkmale usw. zu identifizieren. In mindestens einer Ausführungsform kann die Anwendung zur Erkennung 4208 eine Inferenzmaschine 4216 (z. B. als einer der KI-Dienste 4018) nutzen, um eine Inferenz auf Daten durchzuführen, um Erkennungen zu erzeugen. In mindestens einer Ausführungsform können ein oder mehrere maschinelle Lernmodelle (z. B. aus dem Trainingssystem 3904) von der Anwendung Erkennung 4208 ausgeführt oder aufgerufen werden.
  • In mindestens einer Ausführungsform können nach Abschluss der Rekonstruktion 4206 und/oder der Erkennung 4208 die von diesen Anwendungen und/oder Behältern ausgegebenen Daten verwendet werden, um Visualisierungen 4210 zu erzeugen, wie z. B. die Visualisierung 4212 (z. B. eine Graustufenausgabe), die auf einer Workstation oder einem Anzeigekörper angezeigt wird. In mindestens einer Ausführungsform kann die Visualisierung es einem Techniker oder einem anderen Benutzer ermöglichen, die Ergebnisse der Einsatzpipeline 4010B in Bezug auf die Ultraschallvorrichtung 4202 zu visualisieren. In mindestens einer Ausführungsform kann die Visualisierung 4210 durch Nutzung einer Renderkomponente 4218 des Systems 4000 ausgeführt werden (z. B. durch einen der Visualisierungsdienste 4020). In mindestens einer Ausführungsform kann die Renderkomponente 4218 einen 2D-, OpenGL- oder Raytracing-Dienst ausführen, um die Visualisierung 4212 zu erzeugen.
  • 42B schließt gemäß mindestens einer Ausführungsform ein Datenablaufdiagramm eines virtuellen Instruments ein, das einen CT-Scanner unterstützt. In mindestens einer Ausführungsform kann die Bereitstellungspipeline 4010C einen oder mehrere der Dienste 3920 des Systems 4000 nutzen. In mindestens einer Ausführungsform können die Bereitstellungspipeline 4010C und die Dienste 3920 die Hardware 3922 eines Systems entweder lokal oder in der Cloud 4026 nutzen. In mindestens einer Ausführungsform, obwohl nicht veranschaulicht, kann der Prozess 4220 durch den Pipeline-Manager 4012, das AnwendungsOrchestrierungssystem 4028 und/oder die Plattform für paralleles Rechnen 4030 unterstützt werden.
  • In mindestens einer Ausführungsform kann der Prozess 4220 einschließen, dass der CT-Scanner 4222 Rohdaten erzeugt, die vom DICOM-Lesegerät 4106 aufgenommen werden können (z. B. direkt, über einen PACS-Server 4104, nach der Verarbeitung usw.). In mindestens einer Ausführungsform kann ein virtueller CT (instanziiert durch die Bereitstellungspipeline 4010C) eine erste Echtzeitpipeline zur Überwachung eines Patienten (z. B. Erkennung von Patientenbewegungen KI 4226) und/oder zur Anpassung oder Optimierung der Belichtung des CT-Scanners 4222 (z. B. unter Verwendung der Belichtungssteuerung KI 4224) einschließen. In mindestens einer Ausführungsform können eine oder mehrere der Anwendungen (z. B. 4224 und 4226) einen Dienst 3920 nutzen, wie z. B. KI-Dienst(e) 4018. In mindestens einer Ausführungsform können die Ausgaben der Anwendung (oder des Behälters) KI 4224 zur Belichtungssteuerung und/oder der Anwendung (oder des Behälters) KI 4226 zur Erkennung von Patientenbewegungen als Rückmeldung an den CT-Scanner 4222 und/oder einen Techniker verwendet werden, um die Belichtung (oder andere Einstellungen des CT-Scanners 4222) anzupassen und/oder einen Patienten darüber zu informieren, sich weniger zu bewegen.
  • In mindestens einer Ausführungsform kann die Bereitstellungspipeline 4010C eine Nicht-Echtzeit-Pipeline zur Analyse von Daten einschließen, die vom CT-Scanner 4222 erzeugt wurden. In mindestens einer Ausführungsform kann eine zweite Pipeline eine Anwendung und/oder einen Behälter für die CT-Rekonstruktion 4108, eine Anwendung und/oder einen Behälter für die Groberkennung KI 4228, eine Anwendung und/oder einen Behälter für die Feinerkennung KI 4232 (z. B. wenn bestimmte Ergebnisse durch die Groberkennung KI 4228 erkannt werden), eine Anwendung und/oder einen Behälter für die Visualisierung 4230 und eine Anwendung und/oder einen Behälter für den DICOM-Writer 4112 (und/oder einen anderen Datentyp wie RIS, CIS, REST-konform, RPC, raw usw.) einschließen. In mindestens einer Ausführungsform können die vom CT-Scanner 4222 erzeugten Rohdaten durch die Pipelines der Deployment-Pipeline 4010C (instanziiert als virtuelles CT-Instrument) geleitet werden, um Ergebnisse zu erzeugen. In mindestens einer Ausführungsform können die Ergebnisse des DICOM-Writers 4112 zur Anzeige übertragen und/oder auf dem/den PACS-Server(n) 4104 zum späteren Abrufen, Analysieren oder Anzeigen durch einen Techniker, Arzt oder anderen Benutzer gespeichert werden.
  • 43A veranschaulicht ein Datenflussdiagramm für einen Prozess 4300 zum Trainieren, erneuten Trainieren oder Aktualisieren eines Modells für maschinelles Lernen gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 4300 als nicht einschränkendes Beispiel unter Verwendung des Systems 4000 aus 40 ausgeführt werden. In mindestens einer Ausführungsform kann der Prozess 4300 die Dienste 3920 und/oder die Hardware 3922 des Systems 4000 ausnutzen, wie hierin beschrieben. In mindestens einer Ausführungsform können verfeinerte Modelle 4312, die durch den Prozess 4300 erzeugt wurden, durch das Einsatzsystem 3906 für eine oder mehrere containerisierte Anwendungen in Einsatzpipelines 4010 ausgeführt werden.
  • In mindestens einer Ausführungsform kann das Modelltraining 3914 das erneute Trainieren oder Aktualisieren eines anfänglichen Modells 4304 (z. B. eines vorab trainierten Modells) unter Verwendung neuer Trainingsdaten (z. B. neuer Eingabedaten, wie etwa des Kundendatensatzes 4306, und/oder neuer mit den Eingabedaten assoziierter Ground-Truth-Daten) beinhalten. In mindestens einer Ausführungsform können, um das Anfangsmodell 4304 neu zu trainieren oder zu aktualisieren, Ausgabe- oder Verlustschicht(en) des Anfangsmodells 4304 zurückgesetzt oder gelöscht und/oder durch (eine) aktualisierte oder neue Ausgabe- oder Verlustschicht(en) ersetzt werden. In mindestens einer Ausführungsform kann das anfängliche Modell 4304 bereits fein abgestimmte Parameter (z. B. Gewichtungen und/oder Verzerrungen) aufweisen, die aus einem früheren Training übriggeblieben sind, sodass das Training oder das erneute Training 3914 nicht so lange dauern oder so viel Verarbeitung erfordern kann wie das Training eines Modells von Grund auf. In mindestens einer Ausführungsform können während des Modelltrainings 3914 durch Zurücksetzen oder Ersetzen der Ausgabe- oder Verlustschicht(en) des anfänglichen Modells 4304 die Parameter aktualisiert und für einen neuen Datensatz auf Grundlage von Verlustberechnungen neu abgestimmt werden, die mit der Genauigkeit der Ausgabe- oder Verlustschicht(en) beim Erzeugen von Vorhersagen an einem neuen Kundendatensatz 4306 (z. B. Bilddaten 3908 aus 39) assoziiert sind.
  • In mindestens einer Ausführungsform können die vorab trainierten Modelle 4006 in einem Datenspeicher oder einer Registrierungsdatenbank (z. B. der Modellregistrierungsdatenbank 3924 aus 39) gespeichert sein. In mindestens einer Ausführungsform können die vorab trainierten Modelle 4006 mindestens teilweise in einer oder mehreren anderen Einrichtungen als der Einrichtung, die den Prozess 4300 ausführt, trainiert worden sein. In mindestens einer Ausführungsform können zum Schutz der Privatsphäre und der Rechte von Patienten, Probanden oder Klienten unterschiedlicher Einrichtungen die vorab trainierten Modelle 4006 in den Räumlichkeiten unter Verwendung von Kunden- oder Patientendaten, die in den Räumlichkeiten erzeugt wurden, trainiert worden sein. In mindestens einer Ausführungsform können die vorab trainierten Modelle 4006 unter Verwendung der Cloud 4026 und/oder anderer Hardware 3922 trainiert werden, aber vertrauliche, datenschutzrechtlich geschützte Patientendaten dürfen nicht an beliebige Komponenten der Cloud 4026 (oder anderer Hardware außerhalb der eigenen Räumlichkeiten) übermittelt werden, durch diese verwendet werden oder für diese zugänglich sein. In mindestens einer Ausführungsform, in der ein vorab trainiertes Modell 4006 unter Verwendung von Patientendaten von mehr als einer Einrichtung trainiert wird, kann das vorab trainierte Modell 4006 einzeln für jede Einrichtung trainiert worden sein, bevor es an Patienten- oder Kundendaten einer anderen Einrichtung trainiert wird. In mindestens einer Ausführungsform, wie etwa, wenn Kunden- oder Patientendaten von Datenschutzbedenken ausgenommen wurden (z. B. durch eine Verzichtserklärung, für die experimentelle Verwendung usw.) oder wenn Kunden- oder Patientendaten in einem öffentlichen Datensatz enthalten sind, können Kunden- oder Patientendaten von einer beliebigen Anzahl von Einrichtungen verwendet werden, um das vorab trainierte Modell 4006 innerhalb und/oder außerhalb der eigenen Räumlichkeiten zu trainieren, wie etwa in einem Rechenzentrum oder einer anderen Cloud-Computing-Infrastruktur.
  • In mindestens einer Ausführungsform kann ein Benutzer beim Auswählen von Anwendungen zur Verwendung in den Einsatzpipelines 4010 auch Modelle des maschinellen Lernens auswählen, die für spezifische Anwendungen verwendet werden sollen. In mindestens einer Ausführungsform kann ein Benutzer kein Modell zur Verwendung aufweisen, sodass ein Benutzer ein vorab trainiertes Modell 4006 zum Verwenden mit einer Anwendung auswählen kann. In mindestens einer Ausführungsform ist das vorab trainierte Modell 4006 möglicherweise nicht dafür optimiert, genaue Ergebnisse an dem Kundendatensatz 4306 einer Einrichtung eines Benutzers zu erzeugen (z. B. auf Grundlage der Patientenvielfalt, der Demografie, der Typen der verwendeten medizinischen Bildgebungsvorrichtungen usw.). In mindestens einer Ausführungsform kann das vorab trainierte Modell 4006 vor dem Einsetzen des vorab trainierten Modells 4006 in der Einsatzpipeline 4010 zur Verwendung mit einer Anwendung(en) für die Verwendung in einer jeweiligen Einrichtung aktualisiert, erneut trainiert und/oder fein abgestimmt werden.
  • In mindestens einer Ausführungsform kann ein Benutzer ein vorab trainiertes Modell 4006 auswählen, das aktualisiert, erneut trainiert und/oder fein abgestimmt werden soll, und das vorab trainierte Modell 4006 kann als anfängliches Modell 4304 für das Trainingssystem 3904 innerhalb des Prozesses 4300 bezeichnet werden. In mindestens einer Ausführungsform kann der Kundendatensatz 4306 (z. B. Bildgebungsdaten, Genomdaten, Sequenzierungsdaten oder andere Datenarten, die von Vorrichtungen in einer Einrichtung erzeugt werden) verwendet werden, um das Modelltraining 3914 (das ohne Einschränkung das Übertragungslernen beinhalten kann) auf dem anfänglichen Modell 4304 durchzuführen, um das präzisierte Modell 4312 zu erzeugen. In mindestens einer Ausführungsform können die Ground-Truth-Daten, die dem Kundendatensatz 4306 entsprechen, durch das Trainingssystem 3904 erzeugt werden. In mindestens einer Ausführungsform können Ground-Truth-Daten mindestens teilweise von Klinikern, Wissenschaftlern, Ärzten, Fachkräften in einer Einrichtung erzeugt werden (z. B. als gekennzeichnete Klinikdaten 3912 aus 39).
  • In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3910 in einigen Beispielen verwendet werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 3910 (z. B. unter Verwendung eines SDK für die KI-gestützt Annotation implementiert) Modelle des maschinellen Lernens (z. B. neuronale Netze) ausnutzen, um vorgeschlagene oder vorhergesagte Ground-Truth-Daten für einen Kundendatensatz zu erzeugen. In mindestens einer Ausführungsform kann der Benutzer 4310 Anmerkungswerkzeuge innerhalb einer Benutzeroberfläche (einer grafischen Benutzeroberfläche (GUI)) auf der Rechenvorrichtung 4308 verwenden.
  • In mindestens einer Ausführungsform kann der Benutzer 4310 über die Rechenvorrichtung 4308 mit einer GUI interagieren, um Annotationen oder automatische Annotationen zu bearbeiten oder fein abzustimmen. In mindestens einer Ausführungsform kann ein Polygonbearbeitungsmerkmal verwendet werden, um Vertices eines Polygons an genauere oder feiner abgestimmte Stellen zu verschieben.
  • In mindestens einer Ausführungsform können, sobald Ground-Truth-Daten mit dem Kundendatensatz 4306 assoziiert sind, die Ground-Truth-Daten (z. B. aus KI-gestützter Annotation, manueller Kennzeichnung usw.) während des Modelltrainings 3914 durch verwendet werden, um das verfeinerte Modell 4312 zu erzeugen. In mindestens einer Ausführungsform kann der Kundendatensatz 4306 beliebig oft auf das Anfangsmodell 4304 angewendet werden und Ground-Truth-Daten können verwendet werden, um Parameter des Anfangsmodells 4304 zu aktualisieren, bis ein zulässiges Genauigkeitsniveau für das präzisierte Modell 4312 erreicht wird. In mindestens einer Ausführungsform kann das verfeinerte Modell 4312, sobald das verfeinerte Modell 4312 erzeugt ist, innerhalb einer oder mehrerer Einsatzpipelines 4010 in einer Einrichtung zum Durchführen eines oder mehrerer Verarbeitungs-Tasks in Bezug auf medizinische Bildgebungsdaten eingesetzt werden.
  • In mindestens einer Ausführungsform kann das verfeinerte Modell 4312 in die vorab trainierten Modellen 4006 in der Modellregistrierungsdatenbank 3924 hochgeladen werden, um durch eine andere Einrichtung ausgewählt zu werden. In mindestens einer Ausführungsform kann dieser Prozess in einer beliebigen Anzahl von Einrichtungen durchgeführt werden, sodass das verfeinerte Modell 4312 an neuen Datensätzen beliebig oft weiter verfeinert werden kann, um ein universelleres Modell zu erzeugen.
  • 43B ist eine beispielhafte Darstellung einer Client-Server-Architektur 4332 zum Verbessern von Anmerkungswerkzeugen mit vortrainierten Anmerkungsmodellen gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können KI-unterstützte Anmerkungswerkzeuge 4336 auf Grundlage einer Client-Server-Architektur 4332 instanziiert werden. In mindestens einer Ausführungsform können die Annotationswerkzeuge 4336 in Bildgebungsanwendungen zum Beispiel Radiologen beim Identifizieren von Organen und Auffälligkeiten unterstützen. In mindestens einer Ausführungsform können Bildgebungsanwendungen Softwarewerkzeuge beinhalten, die dem Benutzer 4310 helfen, als ein nichteinschränkendes Beispiel einige Extrempunkte auf einem bestimmten Organ von Interesse in Rohbildern 4334 (z. B. in einem 3D-MRT oder CT) zu identifizieren, und automatisch kommentierte Ergebnisse für alle 2D-Schnitte eines bestimmten Organs empfangen. In mindestens einer Ausführungsform können die Ergebnisse in einem Datenspeicher als Trainingsdaten 4338 gespeichert und als (zum Beispiel und ohne Einschränkung) Ground-Truth-Daten für das Training verwendet werden. In mindestens einer Ausführungsform kann, wenn die Rechenvorrichtung 4308 Extrempunkte für die KI-gestützte Annotation 3910 sendet, ein Deep-Learning-Modell diese Daten zum Beispiel als Eingabe empfangen und Inferenzergebnisse eines segmentierten Organs oder einer Auffälligkeit zurückgeben. In mindestens einer Ausführungsform können vorinstanziierte Anmerkungswerkzeuge, wie etwa das KI-unterstützte Anmerkungswerkzeug 4336B in 43B, durch das Ausführen von API-Aufrufen (z. B. API-Aufruf 4344) an einen Server, wie etwa einen Anmerkungshilfsserver 4340, der zum Beispiel einen Satz vortrainierter Modelle 4342 beinhalten kann, die in einer Anmerkungsmodellregistrierungsdatenbank gespeichert sind, verbessert werden. In mindestens einer Ausführungsform kann eine Annotationsmodellregistrierungsdatenbank vorab trainierte Modelle 4342 (z. B. Modelle des maschinellen Lernens, wie etwa Deep-Learning-Modelle) speichern, die vorab trainiert sind, um eine KI-gestützte Annotation an einem konkreten Organ oder einer Auffälligkeit durchzuführen. In mindestens einer Ausführungsform können diese Modelle durch Verwenden von Trainingspipelines 4004 weiter aktualisiert werden. In mindestens einer Ausführungsform können vorab installierte Annotationswerkzeuge im Verlauf der Zeit verbessert werden, wenn neue gekennzeichnete Klinikdaten 3912 hinzugefügt werden.
  • Die Inferenz- und/oder Trainingslogik 1015 wird verwendet, um Inferenz- und/oder Trainingsvorgänge durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Details bezüglich der Inferenz- und/oder Trainingslogik 1015 werden hierin in Verbindung mit 10A und/oder 10B bereitgestellt.
  • Mindestens eine Ausführungsform der Offenbarung kann im Hinblick auf die folgenden Absätze beschrieben werden:
    • 1. Verfahren, das Folgendes umfasst: Erhalten eines Bildes, das ein in dem Bild dargestelltes Objekt enthält; Durchführen einer Kennzeichnung von Bereichen des Bildes, um Bereiche, die jeweilige Teile des Objekts darstellen, von Bereichen zu unterscheiden, die jeweilige Teile des Bildes darstellen, die sich von dem Objekt unterscheiden; Durchführen eines Satzes von Transformationen an dem Bild, um einen Satz von transformierten Bildern zu erzeugen; und Erzeugen eines Satzes von Begrenzungen des Objekts für den Satz von transformierten Bildern, zumindest teilweise basierend auf der durchgeführten Kennzeichnung.
    • 2. Verfahren nach Absatz 1, wobei das Durchführen des Satzes von Transformationen ferner das Drehen des Bildes um einen Satz von Werten umfasst.
    • 3. Verfahren nach Absatz 1 oder 2, wobei der Satz von Begrenzungen Begrenzungsrahmen des Objekts in dem Satz von transformierten Bildern umfasst.
    • 4. Verfahren nach Absatz 1 bis 3, wobei das Verfahren ferner das Trainieren eines neuronalen Netzes umfasst, das zumindest teilweise auf dem Satz von transformierten Bildern und dem Satz von Begrenzungen des Objekts basiert.
    • 5. Verfahren nach Absatz 1 bis 4, wobei das neuronale Netz trainiert wird, um eine Objekterkennung durchzuführen.
    • 6. Verfahren nach Absatz 1 bis 5, wobei: das Bild einen ersten Begrenzungsrahmen für das Objekt aufweist; der Satz von Transformationen eine Drehung des Bildes umfasst, um ein gedrehtes Bild zu ergeben; und der Satz von Begrenzungen einen zweiten Begrenzungsrahmen des Objekts umfasst, die Seiten parallel zu dem ersten Begrenzungsrahmen für das Objekt hat und die eine Fläche hat, die kleiner ist als ein Rahmen mit minimalem Umfang, der den ersten Begrenzungsrahmen vollständig umschließen würde, nachdem die Drehung auf den ersten Begrenzungsrahmen angewendet wurde.
    • 7. Verfahren nach Absatz 1 bis 6, wobei das Durchführen des Satzes von Transformationen ferner das Ändern eines Skalenwertes des Bildes umfasst.
    • 8. Verfahren nach Absatz 1 bis 7, wobei das Durchführen des Satzes von Transformationen ferner das Verändern eines Luminanzwertes eines Satzes von Bildern des zweiten Datensatzes umfasst.
    • 9. Verfahren nach Absatz 1 bis 8, wobei das Durchführen des Satzes von Transformationen ferner das Verändern eines Kontrastwertes für einen Satz von Bildern des zweiten Datensatzes umfasst.
    • 10. Verfahren nach Absatz 1 bis 9, wobei die Kennzeichnung eine Segmentierung des Bildes ist, die von einem neuronalen Netz erzeugt wird, das darauf trainiert ist, Segmentierungen durchzuführen.
    • 11. Verfahren nach Absatz 1 bis 10, wobei das neuronale Netz ein auf Maskenregionen basierendes neuronales Faltungsnetz umfasst.
    • 12. Verfahren nach Absatz 1 bis 11 umfasst ferner das Zuordnen des Satzes von Begrenzungen zu einer Kennzeichnung des Objekts in einem Trainingsdatensatz.
    • 13. Verfahren nach Absatz 1 bis 12, wobei das Bild ferner ein Bild aus einem Satz von Bildern umfasst, die ein Video umfassen.
    • 14. Verfahren nach Absatz 1 bis 13, wobei eine erste Begrenzung des Satzes von Begrenzungenn ferner einen rechteckigen Bereich umfasst, der das Objekt einschließt.
    • 15. System umfassend: einen oder mehrere Prozessoren; und einen Speicher, der Anweisungen speichert, die als Ergebnis der Ausführung durch den einen oder die mehreren Prozessoren das System veranlassen: ein Bild zu erhalten, das ein Objekt darstellt; ein erstes Modell zu verwenden, um eine Segmentierung des Bildes zu erhalten, um Pixel des Objekts von anderen Pixeln zu unterscheiden; die Segmentierung zu verwenden, um Begrenzungen des Objekts in einem Satz von modifizierten Versionen des Bildes zu bestimmen; und das Objekt den Begrenzungenn in einem Trainingsdatensatz zuzuordnen.
    • 16. System nach einem der Absätze 1 bis 15, wobei das erste Modell ferner ein neurales Faltungsnetz umfasst, das zumindest teilweise auf einem kuratierten Datensatz basiert.
    • 17. System nach einem der Absätze 1 bis 16, wobei der Speicher ferner Anweisungen einschließt, die als Ergebnis der Ausführung durch den einen oder die mehreren Prozessoren das System veranlassen, den Trainingsdatensatz zu verwenden, um ein zweites Modell zu trainieren, um eine Objekterkennung durchzuführen.
    • 18. System nach einem der Absätze 1 bis 17, wobei das zweite Modell ein neuronales Faltungsnetzwerk einschließt.
    • 19. System nach einem der Absätze 1 bis 18, wobei die Begrenzungen einen Satz von Begrenzungsrahmen des Objekts umfassen.
    • 20. System nach einem der Absätze 1 bis 19, wobei der Satz modifizierter Bilder ein Bild umfasst, das zumindest teilweise auf der Drehung des erhaltenen Bildes basiert.
    • 21. Maschinenlesbares Medium, das einen Satz von Anweisungen aufweist, die, wenn sie von einem oder mehreren Prozessoren durchgeführt werden, den einen oder die mehreren Prozessoren veranlassen, mindestens: ein Vorkennzeichnungswerkzeug zu erzeugen, das zumindest teilweise auf Kennzeichnungen basiert, die Objekten innerhalb eines ersten Satzes von Bildern eines ersten Datensatzes und einem ersten Satz von Maskenanmerkungen zugeordnet sind; einen zweiten Satz von Bildern eines zweiten Datensatzes zu modifizieren, um einen Satz modifizierter Bilder zu erzeugen; und ein neuronales Netz zu trainieren, das zumindest teilweise auf dem Satz modifizierter Bilder und einem zweiten Satz von Maskenanmerkungen basiert, die von dem Vorkennzeichnungswerkzeug erzeugt wurden und Objekten innerhalb des Satzes modifizierter Bilder entsprechen.
    • 22. Maschinenlesbares Medium nach einem der Absätze 1 bis 21, wobei der erste Satz von Maskenkommentaren durch ein neuronales Faltungsnetz erzeugt wird, das zumindest teilweise auf dem ersten Satz von Bildern basiert.
    • 23. Maschinenlesbares Medium nach einem der Absätze 1 bis 22, wobei der Satz von Begrenzungsrahmen in den ersten Datensatz eingeschlossen ist.
    • 24. Maschinenlesbares Medium nach einem der Absätze 1 bis 23, wobei der Satz von Befehlen, die den einen oder die mehreren Prozessoren veranlassen, den zweiten Satz von Bildern zu modifizieren, um den Satz von modifizierten Bildern zu erzeugen, ferner Befehle umfasst, die, wenn sie von dem einen oder den mehreren Prozessoren durchgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Bilder des zweiten Satzes von Bildern um unterschiedliche Beträge um eine Drehachse zu drehen.
    • 25. Maschinenlesbares Medium nach einem der Absätze 1 bis 24, wobei der Satz von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen, den zweiten Satz von Bildern zu modifizieren, um den Satz von modifizierten Bildern zu erzeugen, ferner Anweisungen umfasst, die, wenn sie von dem einen oder den mehreren Prozessoren durchgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Farbwerte zu modifizieren, die Bildern des zweiten Satzes von Bildern zugeordnet sind.
    • 26. Maschinenlesbares Medium nach einem der Absätze 1 bis 25, wobei der Satz von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen, den zweiten Satz von Bildern zu modifizieren, um den Satz von modifizierten Bildern zu erzeugen, ferner Anweisungen umfasst, die, wenn sie von dem einen oder den mehreren Prozessoren durchgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Luminanzwerte zu modifizieren, die Bildern des zweiten Satzes von Bildern zugeordnet sind.
    • 27. Maschinenlesbares Medium nach einem der Absätze 1 bis 26, wobei der Satz von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen, den zweiten Satz von Bildern zu modifizieren, um den Satz von modifizierten Bildern zu erzeugen, ferner Anweisungen umfasst, die, wenn sie von dem einen oder den mehreren Prozessoren durchgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Skalenwerte zu modifizieren, die Bildern des zweiten Satzes von Bildern zugeordnet sind.
    • 28. Verfahren, umfassend: Erhalten einer Segmentierung eines Bildes; das Durchführen einer Transformation des Bildes, um ein transformiertes Bild zu erhalten; und das Erzeugen einer Begrenzung eines Objekts, die in dem transformierten Bild dargestellt ist, basierend zumindest teilweise auf der Segmentierung.
    • 29. Verfahren nach einem der Absätze 1 bis 28, wobei das Erhalten der Segmentierung ferner die Verwendung eines neuronalen Netzes umfasst, um die Segmentierung des Bildes zu erzeugen.
    • 30. Verfahren nach einem der Absätze 1 bis 29, wobei das Durchführen der Transformation des Bildes ferner das Drehen des Bildes umfasst.
    • 31. Verfahren nach einem der Absätze 1 bis 30, wobei die Begrenzung des Objekts, die in dem transformierten Bild dargestellt ist, ferner einen Begrenzungsrahmen umfasst.
    • 32. Verfahren nach einem der Absätze 1 bis 31, wobei das Verfahren ferner das Trainieren eines neuronalen Netzes umfasst, das zumindest teilweise auf der Begrenzung des in dem transformierten Bild dargestellten Objekts basiert.
    • 33. Verfahren nach einem der Absätze 1 bis 32, wobei das Bild ferner eine erste Begrenzung des Objekts umfasst und die erzeugte Begrenzung sich von einer anderen Begrenzung unterscheidet, die durch eine auf die erste Begrenzung angewandte Transformation erzeugt wurde.
  • In mindestens einer Ausführungsform kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen solchen Chip beziehen. In mindestens einer Ausführungsform können Multi-Chip-Module mit erhöhter Verbindungsfähigkeit verwendet werden, die den chipinternen Betrieb simulieren und wesentliche Verbesserungen gegenüber der Nutzung einer herkömmlichen Implementation mit einer zentralen Verarbeitungseinheit („CPU“) und einem Bus bieten. In mindestens einer Ausführungsform können verschiedene Module je nach Wunsch des Benutzers auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen untergebracht sein.
  • In mindestens einer Ausführungsform, unter erneuter Bezugnahme auf 16, sind Computerprogramme in Form von maschinenlesbarem ausführbarem Code oder Computersteuerlogik-Algorithmen in dem Hauptspeicher 1604 und/oder Sekundärspeicher gespeichert. Falls sie durch einen oder mehrere Prozessoren ausgeführt werden, ermöglichen es Computerprogramme dem System 1600, verschiedene Funktionen gemäß mindestens einer Ausführungsform durchzuführen. In mindestens einer Ausführungsform sind Arbeitsspeicher 1604, Datenspeiche und/oder beliebiger anderer Speicher mögliche Beispiele für computerlesbare Medien. In mindestens einer Ausführungsform kann sich der Sekundärspeicher auf ein(e) beliebige(s) geeignete(s) Speichervorrichtung oder -system beziehen, wie etwa ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein Digital-Versatile-Disk-(„DVD“-)Laufwerk, eine Aufzeichnungsvorrichtung, einen Universal-Serial-Bus-(„USB“-)Flash-Speicher usw. darstellt. In mindestens einer Ausführungsform werden die Architektur und/oder die Funktionalität verschiedener vorheriger Figuren im Kontext der CPU 1602, des Parallelverarbeitungssystems 1612, einer integrierten Schaltung, die mindestens zu einem Teil der Fähigkeiten sowohl der CPU 1602 als auch des Parallelverarbeitungssystems 1612 in der Lage ist, eines Chipsatzes (z. B. einer Gruppe integrierter Schaltungen, die so ausgestaltet ist, dass sie als Einheit zum Durchführen verwandter Funktionen arbeitet und verkauft wird, usw.) und/oder einer beliebigen geeigneten Kombination integrierter Schaltung(en) implementiert.
  • In mindestens einer Ausführungsform werden die Architektur und/oder Funktionalität verschiedener vorhergehender Figuren im Kontext eines allgemeinen Computersystems, eines Leiterplattensystems, eines für Unterhaltungszwecke dedizierten Spielekonsolensystems, eines anwendungsspezifischen Systems und mehr implementiert. In mindestens einer Ausführungsform kann das Computersystem 1600 die Form eines Desktop-Computers, eines Laptop-Computers, eines Tablet-Computers, von Servern, von Supercomputern, eines Smartphones (z. B. einer drahtlosen tragbaren Vorrichtung), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer am Kopf befestigten Anzeige, einer tragbaren elektronischen Vorrichtung, einer Mobiltelefonvorrichtung, eines Fernsehgeräts, einer Arbeitsstation, von Spielekonsolen, eines eingebetteten Systems und/oder eines beliebigen anderen Typs von Logik annehmen.
  • In mindestens einer Ausführungsform beinhaltet das Parallelverarbeitungssystem 1612 ohne Einschränkung eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 1614 und damit assoziierte Speicher 1616. In mindestens einer Ausführungsform sind die PPUs 1614 über eine Zusammenschaltung 1618 und einen Switch 1620 oder Multiplexer mit einem Host-Prozessor oder anderen Peripherievorrichtungen verbunden. In mindestens einer Ausführungsform verteilt das Parallelverarbeitungssystem 1612 Rechen-Tasks auf PPUs 1614, die parallelisierbar sein können - zum Beispiel als Teil der Verteilung von Rechen-Tasks auf mehrere Thread-Blöcke einer Grafikverarbeitungseinheit („GPU“). In mindestens einer Ausführungsform wird der Speicher von einigen oder allen PPUs 1614 gemeinsam genutzt und ist er für diese zugänglich (z. B. für Lese- und/oder Schreibzugriff), obwohl ein derartiger gemeinsam genutzter Speicher Einbußen bei der Rechenleistung in Bezug auf die Verwendung von lokalem Speicher und Registern, die in einer PPU 1614 resident sind, mit sich bringen kann. In mindestens einer Ausführungsform wird der Betrieb der PPUs 1614 durch Verwendung eines Befehls wie etwa _syncthreads() synchronisiert, wobei alle Threads in einem Block (z. B. über mehrere PPUs 1614 hinweg ausgeführt) einen bestimmten Punkt der Codeausführung erreichen müssen, bevor sie fortfahren.
  • Andere Variationen liegen innerhalb des Geistes der vorliegenden Offenbarung. Somit können zwar bezüglich der offenbarten Techniken diverse Modifikationen und alternative Konstruktionen vorgenommen werden, bestimmte veranschaulichte Ausführungsformen davon werden jedoch in den Zeichnungen gezeigt und wurden vorangehend ausführlich beschrieben. Allerdings versteht es sich, dass nicht die Absicht verfolgt wird, die Offenbarung auf die spezifische(n) offenbarte(n) Form oder Formen einzuschränken, sondern die Absicht ganz im Gegenteil darin besteht, sämtliche Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und Umfang der wie in den beigefügten Ansprüchen definierten Offenbarung fallen.
  • Die Verwendung der Ausdrücke „ein“ und „eine“ und „der/die/das“ und ähnlicher Referenten im Kontext des Beschreibens offenbarter Ausführungsformen (insbesondere im Kontext der folgenden Ansprüche) ist so auszulegen, dass sie sowohl den Singular als auch den Plural abdeckt, sofern hierin nichts anderes angegeben ist oder der Kontext dem eindeutig widerspricht, und nicht als Definition eines Ausdrucks. Die Ausdrücke „umfassend“, „aufweisend“, „beinhaltend“ und „enthaltend“ sind als offene Ausdrücke auszulegen (die „einschließlich, aber nicht beschränkt auf bedeuten), sofern nicht anderweitig angemerkt. Wenn es unmodifiziert vorliegt und sich auf physische Verbindungen bezieht, ist „verbunden“ als teilweise oder vollständig ineinander enthalten, aneinander angebracht oder aneinander angefügt auszulegen, auch wenn ein Element dazwischenliegt. Die Nennung von Wertebereichen hierin soll lediglich als kurzes Verfahren zur einzelnen Bezugnahme auf jeden separaten Wert dienen, der in den Bereich fällt, es sei denn, hierin ist etwas anderes angegeben, und jeder separate Wert ist in die Beschreibung eingeschlossen, als ober einzeln hierin wiedergegeben wäre. In mindestens einer Ausführungsform ist die Verwendung des Ausdrucks „Satz“ (z. B. „ein Satz von Gegenständen“) oder „Teilmenge“ als eine nicht leere Sammlung auszulegen, die ein oder mehrere Elemente umfasst, es sei denn, es ist etwas anderes angemerkt oder der Kontext widerspricht dem. Sofern nichts anderes angegeben ist oder der Kontext dem widerspricht, bezeichnet ferner der Ausdruck „Teilmenge“ eines entsprechenden Satzes nicht notwendigerweise eine richtige Teilmenge des entsprechenden Satzes, sondern die Teilmenge und der entsprechende Satz können gleich sein.
  • Sofern nicht spezifisch etwas anderes genannt ist oder der Kontext dem eindeutig widerspricht, ist verbindende Sprache, wie etwa Formulierungen der Form „wenigstens eines von A, B und C“ oder „mindestens eines von A, B und C“, andernfalls in dem Kontext zu verstehen, in dem sie allgemein verwendet werden, um darzustellen, dass ein Gegenstand, ein Ausdruck usw. entweder A oder B oder C oder eine beliebige nicht leere Teilmenge des Satzes aus A und B und C sein kann. Zum Beispiel beziehen sich in dem veranschaulichenden Beispiel für einen Satz, der drei Elemente aufweist, die verbindenden Formulierungen „wenigstens eines von A, B und C“ und „mindestens eines von A, B und C“ auf einen beliebigen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Somit soll derartige verbindende Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungen es erforderlich machen, dass mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden ist. Sofern nichts anderes angemerkt ist oder der Kontext dem widerspricht, gibt der Ausdruck „Vielzahl“ einen Zustand der Pluralität an (z. B. gibt „eine Vielzahl von Gegenständen“ mehrere Gegenstände an). In mindestens einer Ausführungsform beträgt die Anzahl der Gegenstände in einer Vielzahl mindestens zwei, es können aber auch mehr sein, wenn dies entweder explizit oder durch den Kontext angegeben ist. Sofern nichts anderes genannt ist oder es anderweitig aus dem Kontext ersichtlich ist, bedeutet die Formulierung „auf Grundlage von“ „mindestens zum Teil auf Grundlage von“ und nicht „ausschließlich auf Grundlage von“.
  • Hierin beschriebene Vorgänge von Prozessen können in einer beliebigen geeigneten Reihenfolge durchgeführt werden, sofern es hierin nicht anders angegeben ist oder der Kontext dem anderweitig eindeutig widerspricht. In mindestens einer Ausführungsform wird ein Prozess, wie etwa die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon), unter der Steuerung von einem oder mehreren Computersystemen durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und er ist als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), der zusammen auf einem oder mehreren Prozessoren ausgeführt wird, durch Hardware oder Kombinationen davon implementiert. In mindestens einer Ausführungsform ist Code auf einem computerlesbaren Speichermedium gespeichert, zum Beispiel in Form eines Computerprogramms, das eine Vielzahl von Anweisungen umfasst, die durch einen oder mehrere Prozessoren ausgeführt werden können. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nichttransitorisches computerlesbares Speichermedium, das transitorische Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nichttransitorische Datenspeicherschaltungen (z. B. Puffer, Cache und Warteschlangen) innerhalb von Sendeempfängern von transitorischen Signalen einschließt. In mindestens einer Ausführungsform ist der Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichttransitorischen computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen gespeichert sind (oder einem anderen Speicher zum Speichern ausführbarer Anweisungen), die bei Ausführung (d. h. als Ergebnis der Ausführung) durch einen oder mehrere Prozessoren eines Computersystems das Computersystem dazu veranlassen, hierin beschriebene Operationen durchzuführen. Ein Satz von nichttransitorischen computerlesbaren Speichermedien umfasst in mindestens einer Ausführungsform mehrere nichttransitorische computerlesbare Speichermedien und einem oder mehreren der einzelnen nichttransitorischen Speichermedien mehrerer nichttransitorischer computerlesbarer Speichermedien fehlt der gesamte Code, während mehrere nichttransitorische computerlesbare Speichermedien zusammen den gesamten Code speichern. In mindestens einer Ausführungsform werden die ausführbaren Anweisungen so ausgeführt, dass unterschiedliche Anweisungen durch unterschiedliche Prozessoren ausgeführt werden - zum Beispiel speichert ein nichttransitorisches computerlesbares Speichermedium Anweisungen und eine hauptsächliche zentrale Verarbeitungseinheit („CPU“) führt einige der Anweisungen aus, während eine Grafikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. In mindestens einer Ausführungsform weisen unterschiedliche Komponenten eines Computersystems separate Prozessoren auf und unterschiedliche Prozessoren führen unterschiedliche Teilmengen von Anweisungen aus.
  • Dementsprechend sind in mindestens einer Ausführungsform Computersysteme so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder kollektiv Vorgänge der hierin beschriebenen Prozesse durchführen, und sind solche Computersysteme mit geeigneter Hardware und/oder Software konfiguriert, welche die Durchführung der Vorgänge ermöglichen. Ferner ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzelne Vorrichtung und in einer anderen Ausführungsform ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten, sodass das verteilte Computersystem die hierin beschriebenen Operationen durchführt und sodass eine einzelne Vorrichtung nicht alle Operationen durchführt.
  • Die Verwendung jeglicher und aller Beispiele oder beispielhafter Wortwahl (z. B. „wie etwa“), die hierin bereitgestellt ist, soll lediglich die Ausführungsformen der Offenbarung besser verdeutlichen und stellt keine Einschränkung des Umfangs der Offenbarung dar, es sei denn, es ist etwas anderes beansprucht. Keinerlei Wortwahl in der Beschreibung sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als für die Umsetzung der Offenbarung wesentlich angibt.
  • Jegliche Bezugnahmen, einschließlich Veröffentlichungen, Patentanmeldungen und Patenten, die hierin genannt werden, sind hiermit durch Bezugnahme in demselben Maße aufgenommen, als wäre jede Bezugnahme einzeln und spezifisch als durch Bezugnahme eingeschlossen angegeben und in ihrer Gesamtheit hierin dargelegt.
  • In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Ausdrücke nicht als Synonyme füreinander beabsichtigt sein können. Vielmehr kann in konkreten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem oder indirektem physischem oder elektrischem Kontakt miteinander stehen. Mit „gekoppelt“ kann auch gemeint sein, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, jedoch trotzdem miteinander zusammenwirken oder interagieren.
  • Sofern nicht ausdrücklich anders angegeben, versteht es sich, dass sich Begriffe wie „Verarbeitung“, „Berechnung“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Beschreibung auf Handlungen und/oder Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung, die Daten, die als physische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt sind, manipulieren und/oder in andere Daten umwandeln, die auf ähnliche Weise als physische Größen in den Speichern, Registern oder anderen derartigen Informationsspeicher-, -übertragungs- oder - anzeigevorrichtungen des Rechensystems dargestellt sind.
  • Auf ähnliche Weise kann sich der Ausdruck „Prozessor“ auf eine beliebige Vorrichtung oder einen beliebigen Abschnitt einer Vorrichtung beziehen, die/der elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speicher gespeichert werden können. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hierin verwendet, können „Software“-Prozesse zum Beispiel Software- und/oder Hardware-Entitäten beinhalten, die im Verlauf der Zeit Arbeit verrichten, wie etwa Tasks, Threads und intelligente Agenten. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. In mindestens einer Ausführungsform werden die Ausdrücke „System“ und „Verfahren“ hierin insofern austauschbar verwendet, dass ein System ein oder mehrere Verfahren verkörpern kann und die Verfahren als System betrachtet werden können.
  • Im vorliegenden Dokument kann auf das Erlangen, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. In mindestens einer Ausführungsform kann der Prozess des Erlangens, Erfassens, Empfangens oder Eingebens von analogen und digitalen Daten auf eine Vielfalt von Weisen erzielt werden, wie etwa durch das Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In mindestens einer Ausführungsform können Prozesse des Erlangens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch das Übermitteln von Daten über eine serielle oder parallele Schnittstelle erfolgen. In mindestens einer Ausführungsform können Prozesse des Erlangens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch das Übermitteln von Daten über ein Computernetz von der bereitstellenden Entität zu der erfassenden Entität erfolgen. In mindestens einer Ausführungsform kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen von analogen oder digitalen Daten Bezug genommen werden. In verschiedenen Beispielen können Prozesse des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens von analogen oder digitalen Daten durch das Übermitteln von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozesskommunikationsmechanismus erfolgen.
  • Auch wenn die Beschreibungen hierin beispielhafte Implementationen der beschriebenen Techniken darlegen, können auch andere Architekturen verwendet werden, um die beschriebene Funktionalität zu implementieren, und sie sollen im Umfang dieser Offenbarung liegen. Darüber hinaus könnten, obwohl spezifische Verteilungen von Zuständigkeiten vorstehend zum Zwecke der Beschreibung definiert sein können, verschiedene Funktionen und Zuständigkeiten in Abhängigkeit von den Umständen anders verteilt und aufgeteilt werden.
  • Obwohl der Gegenstand ferner in für Strukturmerkmale und/oder Verfahrenshandlungen spezifischer Sprache beschrieben wurde, versteht sich, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht unbedingt auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen zum Implementieren der Ansprüche offenbart.

Claims (33)

  1. Verfahren, umfassend: Erhalten eines Bildes, das ein in dem Bild dargestelltes Objekt beinhaltet; Durchführen einer Kennzeichnung von Bereichen des Bildes, um Bereiche, die entsprechende Teile des Objekts darstellen, von Bereichen zu unterscheiden, die entsprechende, von dem Objekt verschiedene Teile des Bildes darstellen; Durchführen eines Satzes von Transformationen an dem Bild, um einen Satz von transformierten Bildern zu erzeugen; und Erzeugen, zumindest teilweise basierend auf der durchgeführten Kennzeichnung, eines Satzes von Begrenzungen des Objekts für den Satz von transformierten Bildern.
  2. Verfahren nach Anspruch 1, wobei das Durchführen des Satzes von Transformationen ferner das Drehen des Bildes um einen Satz von Werten umfasst.
  3. Verfahren nach Anspruch 1 oder 2, wobei der Satz von Begrenzungen Begrenzungsrahmen des Objekts in dem Satz von transformierten Bildern umfasst.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren ferner das Trainieren eines neuronalen Netzes umfasst, das zumindest teilweise auf dem Satz von transformierten Bildern und dem Satz der Begrenzungen des Objekts basiert.
  5. Verfahren nach Anspruch 4, wobei das neuronale Netz so trainiert wird, dass es eine Objekterkennung durchführt.
  6. Verfahren nach einem vorhergehenden Anspruch, wobei: das Bild einen ersten Begrenzungsrahmen für das Objekt aufweist; der Satz von Transformationen eine Drehung des Bildes umfasst, um ein gedrehtes Bild zu erhalten; und der Satz von Begrenzungen eines zweiten Begrenzungsrahmens des Objekts umfasst, die zu dem ersten Begrenzungsrahmen für das Objekt parallele Seiten aufweist und die eine Fläche aufweist, die kleiner ist als ein Rahmen mit minimalem Umfang, der den ersten Begrenzungsrahmen vollständig umschließen würde, nachdem die Drehung auf den ersten Begrenzungsrahmen angewendet wurde.
  7. Verfahren nach einem vorhergehenden Anspruch, wobei das Durchführen des Satzes von Transformationen ferner das Modifizieren eines Skalenwertes des Bildes umfasst.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Durchführen des Satzes von Transformationen ferner das Modifizieren eines Luminanzwertes eines Satzes von Bildern des zweiten Datensatzes umfasst.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Durchführen des Satzes von Transformationen ferner das Modifizieren eines Kontrastwertes für einen Satz von Bildern des zweiten Datensatzes umfasst.
  10. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Kennzeichnung eine Segmentierung des Bildes ist, die von einem neuronalen Netz erzeugt wird, das für das Durchführen von Segmentierungen trainiert wurde.
  11. Verfahren nach Anspruch 10, wobei das neuronale Netz ein auf Maskenregionen basierendes neuronales Faltungsnetz umfasst.
  12. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend das Zuordnen des Satzes von Begrenzungen zu einer Kennzeichnung des Objekts in einem Trainingsdatensatz.
  13. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Bild ferner ein Einzelbild aus einem Satz von Bildern umfasst, der ein Video enthalten.
  14. Verfahren nach einem der vorhergehenden Ansprüche, wobei eine erste Begrenzung des Satzes von Begrenzungen ferner einen rechteckigen Bereich umfasst, der das Objekt einschließt.
  15. System, umfassend: einen oder mehrere Prozessoren; und einen Speicher, der Anweisungen speichert, die als Ergebnis der Ausführung durch den einen oder die mehreren Prozessoren das System zu Folgendem veranlassen,: ein Bild zu erhalten, das ein Objekt abbildet; ein erstes Modell zu verwenden, um eine Segmentierung des Bildes zu erhalten, um Pixel des Objekts von anderen Pixeln zu unterscheiden; die Segmentierung zu verwenden, um die Begrenzungen Objekts in einem Satz von modifizierten Versionen des Bildes zu bestimmen; und das Objekt den Begrenzungen in einem Trainingsdatensatz zuzuordnen.
  16. System nach Anspruch 15, wobei das erste Modell ferner ein neuronales Faltungsnetz umfasst, das zumindest teilweise auf einem kuratierten Datensatz basiert.
  17. System nach Anspruch 15 oder 16, wobei der Speicher ferner Anweisungen einschließt, die als Ergebnis der Ausführung durch den einen oder die mehreren Prozessoren das System veranlassen, den Trainingsdatensatz zu verwenden, um ein zweites Modell zu trainieren, um die Objekterkennung durchzuführen.
  18. System nach Anspruch 17, wobei das zweite Modell ein neuronales Faltungsnetz einschließt.
  19. System nach einem der Ansprüche 15 bis 18, wobei die Begrenzungen einen Satz von Begrenzungsrahmen des Objekts umfassen.
  20. System nach einem der Ansprüche 15 bis 19, wobei der Satz modifizierter Bilder ein Bild umfasst, das zumindest teilweise auf der Drehung des erhaltenen Bildes basiert.
  21. Maschinenlesbares Medium, auf dem ein Satz von Befehlen gespeichert ist, die, wenn sie von einem oder mehreren Prozessoren durchgeführt werden, den einen oder die mehreren Prozessoren zu Folgendem veranlassen: ein Vorkennzeichnungswerkzeug zu erzeugen, das zumindest teilweise auf Kennzeichnungen basiert, die Objekten innerhalb eines ersten Satzes von Bildern eines ersten Datensatzes und einem ersten Satz von Maskenanmerkungen zugeordnet sind; einen zweiten Satz von Bildern eines zweiten Datensatzes zu modifizieren, um einen Satz von modifizierten Bildern zu erzeugen; und ein neuronales Netz zu trainieren, das zumindest teilweise auf dem Satz modifizierter Bilder und einem zweiten Satz von Maskenkommentaren basiert, die von dem Vorkennzeichnungswerkzeug erzeugt wurden und Objekten innerhalb des Satzes modifizierter Bilder entsprechen.
  22. Maschinenlesbares Medium nach Anspruch 21, wobei der erste Satz von Maskenkommentaren durch ein neuronales Faltungsnetz erzeugt wird, das zumindest teilweise auf dem ersten Satz von Bildern basiert.
  23. Maschinenlesbares Medium nach Anspruch 21 oder 22, wobei der Satz von Begrenzungsrahmen in den ersten Datensatz eingeschlossen ist.
  24. Maschinenlesbares Medium nach einem der Ansprüche 21 bis 23, wobei der Satz von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen, den zweiten Satz von Bildern zu modifizieren, um den Satz modifizierter Bilder zu erzeugen, ferner Anweisungen umfasst, die, wenn sie von dem einen oder den mehreren Prozessoren durchgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Bilder des zweiten Satzes von Bildern um unterschiedliche Beträge um eine Drehachse zu drehen.
  25. Maschinenlesbares Medium nach einem der Ansprüche 21 bis 24, wobei der Satz von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen, den zweiten Satz von Bildern zu modifizieren, um den Satz von modifizierten Bildern zu erzeugen, ferner Anweisungen umfasst, die, wenn sie von dem einen oder den mehreren Prozessoren durchgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Farbwerte zu modifizieren, die Bildern des zweiten Satzes von Bildern zugeordnet sind.
  26. Maschinenlesbares Medium nach einem der Ansprüche 21 bis 25, wobei der Satz von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen, den zweiten Satz von Bildern zu modifizieren, um den Satz von modifizierten Bildern zu erzeugen, ferner Anweisungen umfasst, die, wenn sie von dem einen oder den mehreren Prozessoren durchgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Luminanzwerte zu modifizieren, die Bildern des zweiten Satzes von Bildern zugeordnet sind.
  27. Maschinenlesbares Medium nach einem der Ansprüche 21 bis 26, wobei der Satz von Anweisungen, die den einen oder die mehreren Prozessoren veranlassen, den zweiten Satz von Bildern zu modifizieren, um den Satz von modifizierten Bildern zu erzeugen, ferner Anweisungen umfasst, die, wenn sie von dem einen oder den mehreren Prozessoren durchgeführt werden, den einen oder die mehreren Prozessoren veranlassen, Skalenwerte zu modifizieren, die Bildern des zweiten Satzes von Bildern zugeordnet sind.
  28. Verfahren, umfassend: Erhalten einer Segmentierung eines Bildes; Durchführen einer Transformation des Bildes, um ein transformiertes Bild zu erhalten; und Erzeugen einer Begrenzung eines Objekts, das in dem transformierten Bild dargestellt ist, basierend zumindest teilweise auf der Segmentierung.
  29. Verfahren nach Anspruch 28, wobei das Erhalten der Segmentierung ferner die Verwendung eines neuronalen Netzes umfasst, um die Segmentierung des Bildes zu erzeugen.
  30. Verfahren nach Anspruch 28 oder 29, wobei das Durchführen der Transformation des Bildes ferner das Drehen des Bildes umfasst.
  31. Verfahren nach einem der Ansprüche 28 bis 30, wobei die Begrenzung des Objekts, das in dem transformierten Bild dargestellt ist, ferner einen Begrenzungsrahmen umfasst.
  32. Verfahren nach einem der Ansprüche 28 bis 31, wobei das Verfahren ferner das Trainieren eines neuronalen Netzes umfasst, das zumindest teilweise auf der Begrenzung des in dem transformierten Bild dargestellten Objekts basiert.
  33. Verfahren nach einem der Ansprüche 28 bis 32, wobei das Bild ferner eine erste Begrenzung des Objekts umfasst und die erzeugte Begrenzung sich von einer anderen Begrenzung unterscheidet, die durch eine auf die erste Begrenzung angewandte Transformation erzeugt wurde.
DE102022105841.7A 2021-03-15 2022-03-14 Automatische kennzeichnung und segmentierung mit hilfe von modellen des maschinellen lernens Pending DE102022105841A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/201,816 US11899749B2 (en) 2021-03-15 2021-03-15 Automatic labeling and segmentation using machine learning models
US17/201,816 2021-03-15

Publications (1)

Publication Number Publication Date
DE102022105841A1 true DE102022105841A1 (de) 2022-09-15

Family

ID=83005106

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022105841.7A Pending DE102022105841A1 (de) 2021-03-15 2022-03-14 Automatische kennzeichnung und segmentierung mit hilfe von modellen des maschinellen lernens

Country Status (3)

Country Link
US (1) US11899749B2 (de)
CN (1) CN115147431A (de)
DE (1) DE102022105841A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230334814A1 (en) * 2022-04-19 2023-10-19 Verizon Patent And Licensing Inc. Systems and methods for utilizing neural network models to label images
TWI830549B (zh) * 2022-12-22 2024-01-21 財團法人工業技術研究院 物件自動化標記方法及其系統
CN117274510B (zh) * 2023-11-22 2024-05-24 天津博优智能科技有限公司 一种基于三维建模和结构尺寸测量的车体故障检测方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10769491B2 (en) * 2017-09-01 2020-09-08 Sri International Machine learning system for generating classification data and part localization data for objects depicted in images
US10803617B2 (en) * 2018-03-21 2020-10-13 Wipro Limited Method and system for detecting and correcting an orientation of an image
US10297070B1 (en) * 2018-10-16 2019-05-21 Inception Institute of Artificial Intelligence, Ltd 3D scene synthesis techniques using neural network architectures
TWI765262B (zh) * 2019-06-26 2022-05-21 長佳智能股份有限公司 根據仿真分離重疊染色體之分離模型的訓練方法及利用該分離模型分離重疊染色體的方法及系統
US20220366578A1 (en) * 2019-11-21 2022-11-17 Trigo Vision Ltd. Item identification and tracking system

Also Published As

Publication number Publication date
US11899749B2 (en) 2024-02-13
US20220292306A1 (en) 2022-09-15
CN115147431A (zh) 2022-10-04

Similar Documents

Publication Publication Date Title
DE112021003077T5 (de) Technik zur Durchführung der Architektursuche für neuronale Netzwerke mit föderiertem Lernen
DE102022103363A1 (de) Verwenden neuronaler netze zum durchführen von objekterkennung, instanzsegmentierung und semantischer entsprechung aus der bounding-box-überwachung
DE102021124008A1 (de) Training eines neuronalen netzes unter verwendung robuster temporaler ensemblebildung
DE112021000120T5 (de) Modellprädiktive regelungstechniken für autonome systeme
DE102021122617A1 (de) Globales föderiertes training für neuronale netze
DE102021121560A1 (de) Objektbild vervollständigung
DE112021001762T5 (de) Erzeugen von kennzeichnungen für synthetische bilder unter verwenden eines oder mehrerer neuronaler netzwerke
DE102022114651A1 (de) Training von objekterfassungssystemen mit generierten bildern
DE112021000253T5 (de) Auswählen von annotationen für trainingsbilder unter verwendung eines neuronalen netzwerks
DE112020005364T5 (de) Api für rekurrente neuronale netze
DE112021001835T5 (de) Beschriften von bildern mit einem neuronalen netz
DE102021129825A1 (de) Objekterkennung und kollisionsvermeidung unter verwendung eines neuronalen netzes
DE112021002945T5 (de) Kontextbezogene Bildübersetzung mit Hilfe neuronaler Netze
DE102021123213A1 (de) Bewegungssteuerung eines neuronalen Netzes
DE112021003301T5 (de) Techniken zur klassifikation mit neuronalen netzen
DE112021001946T5 (de) Attribut-bewusste bildgeneration unter verwendung von neuronalen netzwerken
DE102021125238A1 (de) Auf fourier-transformation basierte bildsynthese unter verwendung von neuralen netzen
DE112021000953T5 (de) Erzeugung von kennzeichen mittels neuronaler netze
DE102021132071A1 (de) Scheduler für neuronales netz
DE112021001461T5 (de) Verbesserte objektidentifizierung mittels eines oder mehrerer neuronaler netze
DE112021001807T5 (de) Beschleunigtes Training für neuronale Netzmodelle
DE102022101664A1 (de) Techniken des maschinellen lernens zur verbesserung von anwendungen für videokonferenzen
DE112021001102T5 (de) Hybride quantisierung von neuronalen netzen für edge-computing-anwendungen
DE102021125533A1 (de) Generierung von differenzierten datenschutzdatensätzen unter verwendung von generativen modellen
DE102021131760A1 (de) Anwendungsprogrammierschnittstelle für berechnungen einesneuronalen netzes

Legal Events

Date Code Title Description
R012 Request for examination validly filed