DE102021130626A1 - Trigger-reagierende clipextraktion basierend auf fernanalyse - Google Patents

Trigger-reagierende clipextraktion basierend auf fernanalyse Download PDF

Info

Publication number
DE102021130626A1
DE102021130626A1 DE102021130626.4A DE102021130626A DE102021130626A1 DE 102021130626 A1 DE102021130626 A1 DE 102021130626A1 DE 102021130626 A DE102021130626 A DE 102021130626A DE 102021130626 A1 DE102021130626 A1 DE 102021130626A1
Authority
DE
Germany
Prior art keywords
data
computer
memory
clip
data stream
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
DE102021130626.4A
Other languages
English (en)
Inventor
Milind Ramesh Naphade
Parthasarathy Sriram
Shuo Wang
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 DE102021130626A1 publication Critical patent/DE102021130626A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/765Interface circuits between an apparatus for recording and another apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • 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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44008Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44016Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for substituting a video clip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10527Audio or video recording; Data buffering arrangements
    • G11B2020/1062Data buffering arrangements, e.g. recording or playback buffers
    • G11B2020/10675Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control
    • G11B2020/10712Data buffering arrangements, e.g. recording or playback buffers aspects of buffer control buffer capacity, e.g. when the buffer capacity is exhausted, buffered data are overwritten with more recent data, accepting that the old data are lost

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Traffic Control Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Intelligent Video Analytics System kann unter Verwendung einer verteilten Rechenarchitektur mit Edge- und entfernten Vorrichtungen implementiert werden, wobei die Edge-Vorrichtungen den Video-Stream analysieren und Erfassungsdaten, die Zeitsegmenten entsprechen, an die entfernte Vorrichtung übertragen. Die Erfassungsdaten können ein Objekt (z. B., Fahrzeug, Fußgänger usw.) in dem Video-Stream identifizieren. Die entfernte Vorrichtung analysiert die von einer oder mehreren Edge-Vorrichtungen empfangenen Erfassungsdaten und erzeugt Extraktionstrigger, die an die eine oder mehreren Edge-Vorrichtungen übertragen werden. Wenn eine Edge-Vorrichtung einen Extraktionstrigger empfängt, extrahiert die Edge-Vorrichtung einen Clip aus dem Video-Stream und speichert den Clip in der persistente Speicherung. Die entfernte Vorrichtung kann dann den Clip abrufen. Die Edge-Vorrichtungen können einfache Identifikationsoperationen durchführen, während die entfernte Vorrichtung komplexe Algorithmen implementiert, um Ereignisse zu erfassen, die aus einem größeren Kontext, als den einzelnen Edge-Vorrichtungen verfügbar ist, Nutzen ziehen.

Description

  • HINTERGRUND
  • Intelligent Video Analytics (IVA)-Systeme werden verwendet, um Video-Streams zu analysieren und Ergebnisse der Analyse in Echtzeit bereitzustellen. Ein populärer Einsatz eines IVA-Systems wird unter Verwendung einer verteilten Rechenarchitektur mit Edge- und Cloud-Vorrichtungen implementiert. In typischen Einsätzen werden die Edge-Vorrichtungen den Video-Stream analysieren, um Ereignisse zu erfassen und um Videoabschnitte, welche die Ereignisse betreffen, zu speichern und den Ereignissen entsprechende Metadaten an die Cloud-Vorrichtung zu übertragen. Die Metadaten werden dann verwendet, um spezifische Objekte (z. B., Autos und Fußgänger) und Zeitstempel zu identifizieren. In typischen Einsätzen können Cloud-Vorrichtungen die Videoabschnitte von die Edge-Vorrichtungen abrufen.
  • Weil jede Edge-Vorrichtung den Video-Stream analysiert, der durch die Edge-Vorrichtung in Isolation erfasst wird, können einige interessierende Ereignisse verpasst werden. Die Cloud-Vorrichtung zieht Nutzen aus einem größeren Kontext als Ergebnis des Empfangens von Metadaten von mehreren Edge-Vorrichtungen. Basierend auf einer weiteren Analyse der Metadaten und/oder abgerufenen Videoabschnitte im größeren Kontext, kann die Cloud-Vorrichtung oder ein Benutzer der Cloud-Vorrichtung bestimmen, dass zusätzlichen Videoabschnitte untersucht werden sollten. Die Edge-Vorrichtungen speichern typischerweise jedoch nicht den gesamten Video-Stream, der erfasst wurde. Sogar die Abschnitte, die gespeichert sind, können durch ein anschließend erfasstes Video überschrieben werden und sind daher für eine unbestimmte Zeitdauer nicht verfügbar. Somit können die zusätzlichen Videoabschnitte, die von der Cloud-Vorrichtung benötigt werden, in den Edge-Vorrichtungen nicht verfügbar sein und nicht abgerufen werden. Es gibt einen Bedarf, sich diesen Problemen und/oder anderen Problemen zu widmen, die dem Stand der Technik zugeordnet sind.
  • ZUSAMMENFASSUNG
  • Ausführungsformen der vorliegenden Offenbarung betreffen eine Trigger-reagierende Clipextraktion an einer Edge-Vorrichtung basierend auf Fernanalyse. Gemäß Ausführungsformen erfasst jede Edge-Vorrichtung Objekte, Instanzen und/oder Vorkommnisse, die in einem kontinuierliche Daten-Stream vorliegen, und erzeugt Erfassungsdaten, die an eine entfernte Vorrichtung übertragen werden. Die Edge-Vorrichtungen können einfache Identifikationsoperationen durchführen, während die entfernte Vorrichtung komplexe Algorithmen implementiert, um Ereignisse zu identifizieren, die aus einem größeren Kontext Nutzen ziehen, als was den einzelnen Edge-Vorrichtungen verfügbar sein würde. Die von mehreren Edge-Vorrichtungen empfangenen Erfassungsdaten können im zeitlichen Verlauf durch die entfernte Vorrichtung analysiert werden.
  • Basierend auf der Analyse bestimmt die entfernte Vorrichtung, welche Zeitsegmente des in den Edge-Vorrichtungen gepufferten Daten-Streams extrahiert und gespeichert werden sollten. Die entfernte Vorrichtung erzeugt Extraktionstrigger, die an eine oder mehrere der Edge-Vorrichtungen übertragen werden, die eine oder mehrere Edge-Vorrichtungen veranlassen, Clips des gepufferten Daten-Streams zu extrahieren und in der persistenten Speicherung zu speichern. Die entfernte Vorrichtung kann dann die Clips abrufen. Die Extraktionstrigger stellen einen Mechanismus zum Extrahieren von Clips aus einem oder mehreren Daten-Streams, die in einer oder mehreren Edge-Vorrichtungen gepuffert werden, basierend auf Fernanalyse bereit. Die kontinuierliche Erfassung von Daten und die Identifikation von Objekten durch die Edge-Vorrichtungen wird von der durch die entfernte Vorrichtung durchgeführten Analyse entkoppelt. Mit anderen Worten kann die Analyse asynchron mit der Erfassung und Identifikation durchgeführt werden. Im Gegensatz dazu führen herkömmliche System die Erfassung und Analyse innerhalb jeder Edge-Vorrichtung durch.
  • Figurenliste
  • Die vorliegenden Systeme und Verfahren zur Trigger-reagierenden Clipextraktion basierend auf Fernanalyse werden nachstehend in Bezug auf die beigefügten Zeichnungsfiguren beschrieben, wobei:
    • 1A veranschaulicht ein Blockdiagramm eines Beispiels eines verteilten Stream-Analyse- und Speichersystems, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 1B-1D veranschaulichen den Inhalt eines rollenden Puffers im zeitlichen Verlauf, die Übertragung von Erfassungsdaten und das Speichern eines Clips gemäß einer Ausführungsform.
    • 2A veranschaulicht ein Ablaufdiagramm eines Verfahrens zur Trigger-gesteuerten Clipextraktion gemäß einer Ausführungsform.
    • 2B veranschaulicht ein anderes Blockdiagramm eines Beispiels eines verteilten Stream-Analyse- und Speichersystems, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 3 veranschaulicht ein Ablaufdiagramm eines Verfahrens zur Erzeugung einer Extraktionstriggererzeugung, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 4 veranschaulicht ein Beispiel einer Parallelverarbeitungseinheit, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 5A ist ein Konzeptdiagramm eines unter Verwendung der PPU von 4 implementierten Verarbeitungssystems, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 5B veranschaulicht ein beispielhaftes System, bei dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann.
    • 5C veranschaulicht Komponenten eines beispielhaften Systems, das verwendet kann, um maschinelles Lernen in mindestens einer Ausführungsform zu trainieren und zu nutzen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Systeme und Verfahren werden offenbart, die Trigger-reagierende Clipextraktion basierend auf Fernanalyse betreffen. Ein Mechanismus zum Extrahieren von Clips eines Daten-Streams als Antwort auf das Empfangen eines Triggers von einem Fernanalysedienst ermöglicht, die Erfassung und Erfassungsoperationen von der Fernanalyse zu entkoppeln. Des Weiteren wird die Erfassung nicht unterbrochen und wird von der Extraktion und Speicherung von Clips entkoppelt. Der Mechanismus ist insbesondere nützlich zum Extrahieren und Speichern von Video-Clips aus kontinuierlichen Echtzeit-Video-Streams, die in Edge-Vorrichtungen gepuffert sind, basierend auf einer Analyse, die unter Verwendung mehreren Echtzeit-Video-Streams im zeitlichen Verlauf durchgeführt wird.
  • Im Gegensatz zu herkömmlichen Systemen, wie beispielsweise jene, die oben beschrieben sind, wird, wenn ein Extraktionstrigger von der Edge-Vorrichtung empfangen wird, ein Clip von dem gepufferten Echtzeit-Video-Stream extrahiert und in die der Edge-Vorrichtung zugeordneten persistenten Speicherung gespeichert. Daher können die Edge-Vorrichtungen nicht den gesamten erfassten Video-Stream in der persistenten Speicherung speichern. Der Echtzeit-Video-Stream, der während der Fernanalyse empfangen wird, wird an der Edge-Vorrichtung gepuffert, um die Latenz zu kompensieren, die anfiel, während die entfernte Vorrichtung die Analyse durchführt. Die entfernte Vorrichtung zieht Nutzen aus einem größeren Kontext als Ergebnis des Empfangens Erfassungs- und/oder Streaming-Daten von mehreren Edge-Vorrichtungen, was die Wahrscheinlichkeit verringert, dass einige interessierende Ereignisse verpasst werden. Wenn eine Edge-Vorrichtung einen Extraktionstrigger von der entfernten Vorrichtung empfängt, wird ein durch den Extraktionstrigger spezifizierter Clip aus dem gepufferten Daten-Stream extrahiert und gespeichert. Die Bürde des Identifizierens von Abschnitten des Daten-Streams, die zur weiteren Analyse gespeichert sind, können vorteilhafterweise von den Edge-Vorrichtungen entfernt werden. Die Gesamteffizienz des verteilten Systems kann verbessert werden, weil Abschnitte des Daten-Streams, die nicht benötigt werden, nicht gespeichert werden, und die Edge-Vorrichtungen Identifikationsaufgaben durchführen können, während die komplexere Analyse von der entfernten Vorrichtung durchgeführt wird. Abschnitte des Daten-Streams, die nicht notwendigerweise basierend auf der Analyse durch eine einzelne Edge-Vorrichtung gespeichert werden würden, können ebenfalls durch die Fernanalyse identifiziert und durch die Edge-Vorrichtung als Antwort auf den Extraktionstrigger gespeichert.
  • Offenbarte Ausführungsformen können unter Verwendung einer Vielfalt von unterschiedlichen Systemen, wie beispielsweise Automobilsysteme, Robotertechnik, Luftfahrzeuge, Bootssysteme, intelligente Bereichsüberwachung, Simulation und/oder andere Technologiebereiche implementiert werden. Offenbarte Vorgehensweisen können für beliebige Wahrnehmungs-basierte oder allgemeinere Bild-basierte Analyse, Überwachung und/oder Verfolgung von Objekten und/oder der Umgebung verwendet werden.
  • Ein Analysieren des Verkehrs an Kreuzungen und entlang Fahrbahnen ist von entscheidender Bedeutung für die Verwaltung des Verkehrsflusses, dem Minimieren von Stau und GHG-Emissionen, dem Maximieren der Sicherheit von Fußgängern und Fahrzeugen und der Reaktion auf Notfallsituationen. Während es eine zunehmende Vermehrung von Kameras entlang unserer Straßennetze gibt, sind existierende Systeme nicht imstande gewesen, Kamera-Feeds in Echtzeit zu überwachen und die Informationen zu verwenden, um wirksam manage oder andernfalls auf bestimmte Verkehrsbedingungen entlang Fahrbahnen zu reagieren. Beispielsweise können diese existierenden Systeme begrenzte Fähigkeiten aufweisen, die lediglich das Erfassen eines festen Satzes von Beobachtungstypen ermöglichen. Insbesondere können spezifische Regeln typischerweise zugeschnitten werden, um eine Videoanalyse durchzuführen. Beispielsweise können existierende Vorgehensweisen spezifische Eingabe erfordern, um die Videoanalyse von Verkehrskameradaten für jede Kamera an jedem Ort zu individualisieren. Dies kann das Ergebnis der umfangreichen Variierbarkeit sein, die in den visuellen Informationen existiert, die durch Kameras erfasst werden, die an unterschiedlichen Orten lokalisiert sind. Derartige visuelle Variierbarkeit kann aus einer beliebigen Anzahl von Gründen auftreten, wie beispielsweise als eine Funktion der Kamera, des Kamerablickwinkels, der Szene, die beobachtet wird, der Umgebung, Wetterbedingungen (z. B., Wind, Regen, Hagel, Staub usw.) und/oder der Tageszeit (z. B., Beeinflussung umgebender Beleuchtung, Schatten usw.). Aufgrund der umfangreichen visuellen Variationen, die sich für jede Kamera ergeben können, kann es ineffizient und unwirksam sein, eine individualisierte Videoanalytik zu erzeugen, um die riesige Menge an Bedingungen abzudecken, die jede einzelne Kamera antreffen wird, und die sogar noch mehr die einzelne Kameras antreffen werden, um dadurch die wirksame Verwendung dieser Verkehrskameras zum Extrahieren relevanter und zeitnaher Einblicke über Verkehrsfluss, Sicherheit und Vorkommnisse zu behindern.
  • Demgemäß sind hier beschriebene Ausführungsformen auf die Verfolgung von Objekten, wie beispielsweise Fahrzeuge, Maschinen (wie beispielsweise Roboter) oder Fußgänger gerichtet und Verwenden die Objekttrajektorien, um Objektbewegungsereignisse zu identifizieren. Auf einem hohen Niveau können eine Überwachung oder Sensorvorrichtung(en) (z. B., eine Kamera) kontinuierlich eine Region der physischen Umgebung überwachen. Kontinuierliche Überwachung von Objektbewegung kann ebenfalls die Identifikation von verschiedenen Trajektorienmerkmalen ermöglichen, wie beispielsweise durchschnittliche Geschwindigkeiten, Fahrzeugfluss usw. Die Erfassung eines Objekts kann an einer Edge-Vorrichtung durchgeführt werden, während die Objektbewegung durch die entfernte Vorrichtung überwacht und analysiert werden kann, um die ObjektbewegungsEreignisse zu identifizieren.
  • 1A veranschaulicht ein Blockdiagramm eines Beispiels eines verteilten Stream-Analyse- und Speichersystems 100, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Es sei zu verstehen, dass diese und andere Anordnungen hier lediglich als Beispiele dargelegt werden. Andere Anordnungen und Elemente (z. B., Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen usw.) können zusätzlich zu oder anstelle von jenen verwendet werden, die gezeigt werden, und einige Elemente können insgesamt weggelassen werden. Ferner sind viele der hier beschriebenen Elemente funktionale Entitäten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und Ort implementiert werden können. Verschiedene hier beschriebene Funktionen, die als durch Entitäten durchgeführt beschrieben werden, können von Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen durch ein Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Des Weiteren werden Fachleute verstehen, das jedes System, das die Operationen der verteilten Stream-Analyse- und Speichersystems 100 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Offenbarung ist.
  • Wie in 1A anschaulich dargestellt, können Ausführungsformen des verteilten Stream-Analyse- und Speichersystems 100 eine Edge-Vorrichtung 130, ein Netzwerk(e) 115 und einen Analysedienst 120 umfassen. Der Zweck des verteilten Stream-Analyse- und Speichersystems 100 ist, interessierende Clips des Echtzeit-Daten-Streams zu speichern, wobei „interessierend“ gemäß Analyse im zeitlichen Verlauf bestimmt und/oder basierend auf Daten-Streams erfassten durch mindestens einer Edge-Vorrichtung 130. Die Edge-Vorrichtung 130 erzeugt Erfassungsdaten durch Verarbeitung eines kontinuierlichen Echtzeit-Daten-Streams, der von einem oder mehreren Sensoren 102 erfasst wird.
  • Im Einsatz kann(können) der(die) Sensor(en) 102 einen kontinuierlichen Daten-Stream in einer Umgebung sammeln oder erfassen. Der kontinuierliche Daten-Stream kann Bilddaten umfassen, welche die Darstellung von Standbildern oder ein Video darstellen, das Objektbewegung anschaulich darstellt. In einer oder mehreren Ausführungsformen können ein oder mehrere Sensoren 102 beispielsweise eine Kamera umfassen (z. B., eine Videokamera, eine monokulare Kamera, eine stereoskopische Kamera, eine 360-Grad-Kamera, eine Breitsichtkamera usw.), die innerhalb der Umgebung positioniert sind, verwendet werden, um Daten (z. B., Bilder und/oder Video) der Umgebung innerhalb eines oder mehrerer Blickfelder der Kamera(s) zu erfassen. Als ein weiteres Beispiel können ein oder mehrere Light Detection und Ranging (LIDAR)-Sensoren, Infrarot (IR)-Sensoren, Radio Detection and Ranging (RADAR)-Sensoren, Wettersensoren, Geschwindigkeitssensoren und/oder andere Sensortypen imstande sein, eine Temperatur, eine Windvektorgeschwindigkeit, eine Niederschlagsmessung, Objektgeschwindigkeiten, Beschleunigungen und/oder Vektorgeschwindigkeiten und/oder dergleichen von einem oder mehreren Aspekten des Wetters oder der Objekte (z. B., Fahrzeuge, Fußgänger, Tiere, Drohnen, Flugzeuge usw.) in der Umgebung zu erfassen. In einem Beispiel können ein oder mehrere Sensoren 102 (z. B. Mikrophone) Geräusche in der Umgebung umfassen. Der Echtzeit-kontinuierliche Daten-Stream kann ein beliebiger Typ von kontinuierlichen Daten sein, die durch den(die) Sensor(en) 102 bereitgestellt werden, wie beispielsweise Audio, Video, Temperatur, Luftqualität usw.
  • Der Erfassungsdatengenerator 110 verarbeitet den durch den(die) Sensor(en) 102 erfassten kontinuierlichen Daten-Stream, um Erfassungsdaten zu erzeugen, die mindestens einem Zeitsegment in dem Daten-Stream entsprechen. Die Erfassungsdaten können die Anwesenheit eines Objekts, das Auftreten oder die Instanz in dem Daten-Stream während des Zeitsegments angeben. Beispiele von Erfassungsdaten umfassen Klassifizierungsdaten, Objektsegmentierungsdaten und Positionsdaten. Die Erfassungsdaten können Zeitsegmente angeben, die Objekte in einem Video-Stream, Geräusche in einem Audio-Stream und dergleichen entsprechen. Beispielsweise können die Erfassungsdaten Ort und Attribute (Farbe, Form) von identifizierten Objekten (Autos) umfassen. In einer Ausführungsform ist die Edge-Vorrichtung 110 konfiguriert, um die Anwesenheit des Objekts, das Auftreten oder die Instanz in dem Daten-Stream unter Verwendung vorbestimmter Kriterien zu identifizieren.
  • In einer Ausführungsform erzeugt der Erfassungsdatengenerator 110 Annotierungen (z. B., Begrenzungskästchen, Etikette oder Koordinaten), die in den Erfassungsdaten enthalten sind. Annotierungen könnten den(die) Ort(e) und/oder Abmessungen eines Begrenzungskästchens (z. B., einer geometrischen Form, deren Ort und Abmessungen sich von Frame-zu-Frame ändern können, welche die zeitliche Verfolgung eines Objekts angeben) eines Objekts und/oder andere Attribute eines identifizierten Objekts in einem Video darstellen. Die durch den Erfassungsdatengenerator 110 erzeugten Erfassungsdaten können jeden erfassbaren Aspekt eines Video-Frames darstellen, wie beispielsweise visuelle Merkmale des Video-Frames. Der Erfassungsdatengenerator 110 kann Erfassungsdaten erzeugen, die einem Frame von Videodaten unter Verwendung eines Zeitstempels zugeordnet sind, der einem Zeitsegment entspricht. Beispielsweise kann der Erfassungsdatengenerator 110 Erfassungsdaten für ein Frame von Videodaten mit einem spezifischen Zeitstempel erzeugen und kann das Frame und die Erfassungsdaten synchronisieren, in dem der Erfassungsdaten diesem Zeitstempel zugeordnet werden. Als Beispiel kann der den Erfassungsdaten zugeordnete Zeitstempel verwendet werden, um ein Clip von dem rollenden Puffer 105 zu extrahieren. Der Erfassungsdatengenerator 110 kann die erzeugten Erfassungsdaten für jedes Frame, das einem Zeitstempel zugeordnet wurde, an der Analysedienst 120 über das(die) Netzwerk(e) 115 übertragen.
  • In einer Ausführungsform verwendet der Erfassungsdatengenerator 110 eine oder mehrere Maschine Learning Models (MLMs), um Fahrzeuge und/oder Fahrzeugorte in Video-Frames zu erfassen und die Erfassungsdaten zu erzeugen. Ein anderer Erfassungsdatengenerator 110 kann ein oder mehrere MLMs verwenden, um Fußgänger und/oder Fußgängerorte in Video-Frames zu erfassen und die den erfassten Fußgängern zugeordnete Erfassungsdaten zu erzeugen. Dieser Erfassungsdatengenerator 110 kann innerhalb der gleichen Edge-Vorrichtung 130 oder unterschiedlichen Edge-Vorrichtungen 130 enthalten sein und kann an den gleichen oder unterschiedlichen Video-Streams seriell und/oder parallel arbeiten. Wie hier beschrieben, können die MLMs unter Verwendung eines oder mehrerer Mehrkern-Prozessoren, GPUs und/oder virtuell CPUs oder GPUs, wie beispielsweise einer Parallelverarbeitungseinheit (PPU) 400 von 4, implementiert werden.
  • Herkömmlicherweise kann eine Edge-Vorrichtung alles eines Video-Streams in persistente, nichtflüchtige oder permanente Speicherung (z. B., Diskette oder Festplatte) speichern, so dass die spezifischen Clips einem Rechenknoten zur Darstellung oder weiteren Analyse bereitgestellt werden können. Weil das Speichern des gesamten Video-Streams hinsichtlich der Speicherungsressourcen aufwändig ist, kann der gesamte Video-Stream stattdessen für einen begrenzten Zeitdauer (z. B., 24 Stunden, Woche) gespeichert werden. Wahlloses Speichern des gesamten Video-Streams ist hinsichtlich der Speicherungskosten aufwändig, kann jedoch ausreichende Zeit zur Analyse bereitstellen. Einige herkömmliche Edge-Vorrichtungen speichern Abschnitte des Video-Streams als Antwort auf vorbestimmte Aktivität (z. B., Bewegung, Geräusch). Da Speichern von lediglich Abschnitten des Video-Streams ermöglicht ebenfalls Zeit für Analyse, wobei jedoch Frames des Video-Streams, die basierend auf der Analyse interessierend sind, nicht zur Speicherung ausgewählt werden können. Andere Video-Stream-Abtasttechniken (z. B., Speichern eines Frames pro Minute) können ebenfalls niedrige Speicherungskosten jedoch ähnliche Nachteile zum Speichern von lediglich Abschnitten des gesamten Video-Streams aufweisen.
  • Wie in 1A gezeigt, empfängt der Erfassungsdatengenerator 110 einen kontinuierlichen Daten-Stream, der von dem Erfassungsdatengenerator 110 simultan verarbeitet und in den rollenden Puffer 105 geschrieben wird. Im Gegensatz zu persistenter Speicherung behält der rollende Puffer 105 nicht notwendigerweise Daten, wenn Leistung entfernt wird. Der rollende Puffer kann unter Verwendung von Registern oder physischen oder virtuellem RAM implementiert werden. In einer oder mehreren Ausführungsformen kann der rollende Puffer 105 eine begrenzte Kapazität aufweisen, so dass, sobald der Puffer voll ist, die ältesten Daten mit neuen Daten überschrieben werden. In einer Ausführungsform ist der rollende Puffer 105 ein Kreispuffer. Die Erfassungsdaten können ebenfalls in den rollenden Puffer 105 geschrieben werden.
  • Die Erfassungsdaten werden durch das(die) Netzwerk(e) 115 an einen Analysedienst 120 übertragen. In einer Ausführungsform werden die Erfassungsdaten über einen Nachrichtenvermittler übertragen. In einer Ausführungsform ist der Analysedienst 120 an einem entfernten Knoten lokalisiert und/oder ist in einer Cloud-Vorrichtung enthalten. Die Edge-Vorrichtung 130 und die Komponenten des Analysedienstes 120 können in dem verteilten Stream-Analyse- und Speichersystem 100 über das Netzwerk(e) 115 kommunizieren. Das(die) Netzwerk(e) 115 kann(können) ein Weitbereichsnetzwerk (WAN) (z. B., das Internet, ein öffentliches Telefonvermittlungsnetzwerk (public switched telephone Network; PSTN) usw.), ein Lokalbereichsnetzwerk (LAN) (z. B., Wi-Fi, ZigBee, Z-Wave, Bluetooth, Bluetooth Low Energy (BLE), Ethernet usw.), ein Low-Power-Wide-Area-Network (LPWAN) (z. B., LoRaWAN, Sigfox usw.), ein globales Navigationssatellitensystem (GNSS) Netzwerk (z. B., das Global Positioning System (GPS)) und/oder einen anderen Netzwerktyp umfassen. In einem beliebigen Beispiel kann jeder der Komponenten des verteilten Stream-Analyse- und Speichersystems 100 mit einer oder mehreren der anderen Komponenten über ein oder mehrere der Netzwerke 115 kommunizieren. In einigen Beispielen umfasst das(die) Netzwerk(e) 115 einen oder mehrere Kerne und/oder Edge-Netzwerke eines Cloud-Rechensystems.
  • In einer Ausführungsform ist das verteilten Stream-Analyse- und Speichersystems 100 konfiguriert, um Fahrzeuge zu erfassen und Pfade und/oder Positionen der erfassten Fahrzeuge im zeitlichen Verlauf zu analysieren, um Verkehrsverstöße identifizieren. Die Erfassung von Fahrzeugen ist ein Beispiel vorbestimmter Kriterien, die der Erfassungsdatengenerator 110 konfiguriert ist, zu identifizieren. Das Fahren in einer Fahrradspur für mehr als einen Block ist ein Beispiel vorbestimmter Kriterien, die von dem Analysedienst 120 verwendet werden, um Extraktionstrigger zu erzeugen. Eine einzelne Edge-Vorrichtung 130, die an einem festen Ort installiert ist, kann die Bilder nicht erfassen, die benötigt werden, um zu bestimmen, dass ein Fahrzeug in der Fahrradspur für mehr als ein Block war, während der Analysedienst 120 ausreichende Erfassungsdaten von mehreren Edge-Vorrichtungen 130 an unterschiedlichen Orten empfangen kann, um die Bestimmung durchzuführen.
  • Wie zuvor beschrieben, wird der kontinuierliche Daten-Stream zuerst verarbeitet, um Objekte zu erfassen, und die Erfassungsdaten werden an einen entfernten Knoten zur Analyse übertragen. Die von dem Analysedienst 120 durchgeführte Analyse unterscheidet sich dadurch von Erfassung, dass das Verhalten eines erfassten Objekts, das Auftreten oder die Instanz kann im zeitlichen Verlauf und über unterschiedliche Orte verfolgt werden, insbesondere wenn mehreren Edge-Vorrichtungen 130 dem Analysedienst 120 Erfassungsdaten bereitstellen.
  • Basierend auf der Analyse der Erfassungsdaten erzeugt der Analysedienst 120 einen oder mehrere Extraktionstrigger, die jeweils einen oder mehrere Clips spezifizieren, die von dem kontinuierliche Echtzeit-Daten-Stream zu extrahieren sind. Die Erfassungsdaten werden analysiert, um zu bestimmen, welche Abschnitte des Echtzeit-Daten-Streams als interessierend qualifizieren und werden in einer persistenten Clipspeicherung 125 gespeichert. In einer Ausführungsform erzeugt der Analysedienst 120 Annotierungen (z. B., Begrenzungskästchen, Etikette oder Koordinaten), die in dem Extraktionstrigger enthalten sind. Die Annotierungen können mit den Clips gespeichert werden.
  • Der Extraktionstrigger definiert einen Abschnitt des kontinuierlichen Daten-Streams, der in dem rollenden Puffer 105 gespeichert ist, um extrahiert zu werden, um einen Clip zu erzeugen. Der Abschnitt ist einem Zeitsegment zugeordnet und kann durch Zeitstempel, Framenummer oder dergleichen spezifiziert werden. Der extrahierte Clip wird dann in der persistenten Clipspeicherung 125 durch den Erfassungsdatengenerator 110 gespeichert. In einer Ausführungsform können Annotierungen gespeichert und/oder mit dem Clip kombiniert werden. Der Analysedienst 120 kann Clips, die in der persistenten Clipspeicherung 125 gespeichert sind, über das(die) Netzwerk(e) 115 abrufen.
  • Eine Latenz wird von dem Zeitpunkt eingeführt, wenn der kontinuierliche Daten-Stream erfasst wird, Erfassungsdaten werden erzeugt, Erfassungsdaten werden analysiert, wenn die Extraktionsanfrage für einen Clip des in dem rollenden Puffer 105 gespeicherten kontinuierlichen Daten-Streams an der Edge-Vorrichtung 130 empfangen wird. Die Kapazität des rollenden Puffers 105 sollte ausreichend sein, um die Latenz unterzubringen, so dass Abschnitte des kontinuierlichen Daten-Streams, die zur Extraktion durch den Analysedienst 120 anvisiert sind, durch neue Daten nicht überschrieben werden.
  • In einer Ausführungsform werden die Erfassungsdaten von einer Edge-Vorrichtung erzeugt und der Trigger wird durch eine Kernvorrichtung in einem Cloud-Rechensystem erzeugt, so dass die Erfassung von sowohl der Analyse der Erfassungsdaten und die Speicherung von Clips entkoppelt ist. Die Kernvorrichtung kann Erfassungsdaten von mehreren Edge-Vorrichtungen empfangen. Daher kann sich der Extraktionstrigger aus einer integrierten Analyse im zeitlichen Verlauf und/oder Erfassungsdaten basierend auf mehreren Sensoren 102 und/oder Edge-Vorrichtung(e) 130 ergeben. In einer Ausführungsform umfasst der Analysedienst 120 ein neuronales Netzwerk, das trainiert ist, um die Erfassungsdaten für spezifische Verhalten zu analysieren. Der Analysedienst 120 kann als ein rekurrentes neuronales Netzwerk (RNN), ein Langzeitspeicher (long short-term Speicher; LSTM) neuronales Netzwerk, faltendes neuronales Netzwerk (CNN) oder dergleichen implementiert sein. In einer Ausführungsform kann das in 5C veranschaulichte System 555 verwendet werden, um den Analysedienst 120 zu trainieren.
  • Obwohl die persistente Clipspeicherung 125 innerhalb der Edge-Vorrichtung 130 in 1A gezeigt ist, kann die persistente Clipspeicherung 125 extern zu der Edge-Vorrichtung 130 sein und mit dem(den) Netzwerk(en) 115 oder in einer unterschiedlichen Edge-Vorrichtung 130 gekoppelt sein, die ebenfalls mit dem(den) Netzwerk(en) 115 gekoppelt ist. Ungeachtet des physischen Orts des Analysediensts 120 relativ zu der Edge-Vorrichtung 130 nutzen in einer Ausführungsform der Analysedienst 120 nicht die Rechenressourcen mit der Edge-Vorrichtung 130 gemeinsam. Der Analysedienst 120 kann ebenfalls nicht direkt auf Daten zugreifen, die in dem rollenden Puffer 105 gespeichert sind.
  • Veranschaulichendere Informationen werden nun hinsichtlich verschiedener optionaler Architekturen und Merkmalen dargelegt, mit welchen das vorhergehende Rahmenwerk gemäß den Wünschen des Benutzers implementiert werden kann. Es sei dringend angemerkt, dass die folgenden Informationen für veranschaulichende Zwecke dargelegt werden und nicht in irgendeiner Art und Weise als beschränkend ausgelegt werden sollten. Beliebige der folgenden Merkmale können optional aufgenommen oder ohne den Ausschluss von anderen Merkmalen beschrieben werden.
  • 1B veranschaulicht einen Inhalt des rollenden Puffers 105 und die Übertragung von Erfassungsdaten gemäß einer Ausführungsform. Konzeptmäßig füllt sich der rollenden Puffer 105 mit neuen Daten von der linken Seite, ähnlich einem Firstin-First-out Puffer, wobei die in dem rollenden Puffer 105 gespeicherten ältesten Daten überschrieben werden. Wenn der Erfassungsdatengenerator 110 einen Abschnitt des einen Zeitsegments 150 entsprechenden kontinuierlichen Daten-Streams verarbeitet, werden Erfassungsdaten 130 erzeugt und an den Analysedienst 120 durch das(die) Netzwerk(e) 115 übertragen. Die Erfassungsdaten 130 können Zeitstempel, Orte, Attribute von identifizierten Objekten, Attribute von identifizierten Instanzen, Attribute von identifizierten Vorkommnissen, Annotationen, Framenummern oder andere Informationen umfassen. Die Erfassungsdaten 130 können ebenfalls in den rollenden Puffer 105 geschrieben werden.
  • 1C veranschaulicht das Speichern eines Clips aus dem Inhalt des rollenden Puffers 105 gemäß einer Ausführungsform. Nachdem die Erfassungsdaten 130 empfangen und durch den Analysedienst 120 analysiert wurden, wird ein Extraktionstrigger erzeugt. Der Extraktionstrigger wird von dem Analysedienst 120 zu dem Erfassungsdatengenerator 110 durch das(die) Netzwerk(e) 115 übertragen. Als Antwort auf das Empfangen des Extraktionstriggers 132 extrahiert der Erfassungsdatengenerator 110 einen Clip 155 aus dem rollenden Puffer 105 und speichert den Clip 155 in der persistenten Clipspeicherung 125. In einer Ausführungsform umfasst der Clip 155 das gesamte Zeitsegment 150, einen Abschnitt des Zeitsegments 150 oder einen Abschnitt der in dem rollenden Puffer 105 gespeicherten Daten, der nicht das Zeitsegment 150 umfasst. Der durch den Analysedienst 120 übertragene Extraktionstrigger spezifiziert den Abschnitt des kontinuierlichen Daten-Streams, der zu extrahieren und zu speichern ist. In einer Ausführungsform wird der Extraktionstrigger 132 basierend auf Erfassungsdaten erzeugt, die von einer unterschiedlichen Edge-Vorrichtung 130 empfangen werden. In einer Ausführungsform wird der Extraktionstrigger 132 basierend auf Erfassungsdaten erzeugt, die von zwei oder mehreren Edge-Vorrichtungen 130 empfangen werden.
  • Der Extraktionstrigger 132 kann ebenfalls spezifizieren, ob irgendwelche anderen Informationen, wie beispielsweise Attribute von identifizierten Objekte, Attribute von identifizierten Instanzen, Attribute von identifizierten Vorkommnissen, Annotierungen und/oder Framenummern mit dem Clip 155 enthalten und ebenfalls in der persistente Clipspeicherung 125 gespeichert sind. In einer Ausführungsform kann der Extraktionstrigger 132 Zeitstempel spezifizieren oder anderweitig angeben, die verwendet werden, um ein von mehreren Frames eines oder mehrerer Video-Streams in dem rollenden Puffer 105 zu identifizieren. Jeder Zeitstempel kann einem Frame eines Video-Streams entsprechen (z. B., kann ein Video-Stream mit Framerate von 30 fps ein erstes Frame mit einem Zeitstempel aufweisen und das anschließende Frame kann einen Zeitstempel 33ms später aufweisen). Die Edge-Vorrichtung 130 kann die Videodaten indizieren oder den Zeitstempeln (z. B., lokal, wie beispielsweise vor Ort oder entfernt an einem externen Ort) anderweitig in dem rollenden Puffer 105 und/oder der persistenten Clipspeicherung 125 zuordnen.
  • Die in der persistenten Clipspeicherung 125 gespeicherten Clips können basierend auf einer beliebigen Anzahl von Verfahren indiziert werden, die umfassen können, jedoch nicht begrenzt sind auf, den(die) Zeitstempel der Erfassungsdaten, die Klassifizierung von Objekten, die durch die Erfassungsdaten beschrieben werden, den Ort, an welchem die Erfassungsdaten erzeugt wurden, Attribute des zugeordneten Daten-Streams oder einer beliebigen Kombination von Verfahren.
  • 1D veranschaulicht das Speichern eines anderen Clips aus dem Inhalt des rollenden Puffers 105 gemäß einer Ausführungsform. Wenn sich der rollende Puffer 105 mit neuen Daten von der linken Seite füllt, wird ein Abschnitt des Zeitsegments 150, der in dem rollenden Puffer 105 gespeichert ist, überschrieben, und der verbleibende Abschnitt des Zeitsegments 150 ist ein Zeitsegment 160. Im Vergleich mit 1C ist die Latenz der Übertragung der Erfassungsdaten 130 für das Zeitsegment 150, bis zu dem Zeitpunkt, wenn der Extraktionstrigger 135 empfangen wird, größer als die Latenz der Übertragung der Erfassungsdaten 130, bis zu dem Zeitpunkt, wenn der Extraktionstrigger 132 empfangen wird.
  • In einer Ausführungsform spezifiziert der Extraktionstrigger 135 das Extrahieren eines Clips 165, der das gesamte Zeitsegment 160 umfasst. Als Antwort auf das Empfangen des Extraktionstriggers 135 extrahiert der Erfassungsdatengenerator 110 einen Clip 165 aus dem rollenden Puffer 105 und speichert den Clip 165 in der persistenten Clipspeicherung 125. Der Clip 165 umfasst den Abschnitt des Zeitsegments 150, der weiterhin in dem rollenden Puffer 105 verfügbar ist.
  • In einer Ausführungsform ist eine Kapazität des rollenden Puffers 105 konfiguriert, um eine Menge des kontinuierlichen Daten-Streams zu speichern, die während einer maximalen Latenz erfasst wird, die anfällt, bis ein Extraktionstrigger empfangen wird. In einer oder mehreren Ausführungsformen kann der Extraktionstrigger als Antwort auf eine Analyse von Erfassungsdaten erzeugt werden, die durch die Edge-Vorrichtung 130 erzeugt werden. Im Gegensatz zu herkömmlichen Techniken, welche die Erfassung und Analyse an der Edge-Vorrichtung in Isolation durchführen, stellt das verteilte Stream-Analyse- und Speichersystems 100 eine Trigger-gesteuerte, Ereignis-gesteuerte Speicherung nach Bedarf bereit, die effizient und kostenwirksam ist. Beispielsweise können die Edge-Vorrichtungen 130 kostengünstige, Energie-effiziente Rechenknoten sein, während ein weiterer (z. B., Cloud oder vor Ort Daten Server) Knoten, der den Analysedienst 120 umfasst, komplexer ist und leichter zugänglich und/oder aufgerüstet werden kann oder häufiger ersetzt wird. Das Speichern von Clips basierend auf Fernanalyse ermöglicht eine effizientere Verwendung der Speicherungsressourcen, während gewährleistet wird, dass als interessierend identifizierte Zeitsegmente extrahiert und in der persistenten Clipspeicherung 125 gespeichert werden.
  • 2A veranschaulicht ein Ablaufdiagramm eines Verfahrens 200 zur Trigger-reagierenden Clip-Extraktion gemäß einer Ausführungsform. Jeder Block des hier beschrieben Verfahrens 200 umfasst einen Rechenprozess, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen durch einen Prozessor, der im Speicher gespeicherte Anweisungen ausführt, ausgeführt werden. Das Verfahren kann ebenfalls als auf Computer-Speicherungsmedien gespeicherte computernutzbare Anweisungen ausgeführt sein. Das Verfahren kann durch eine eigenständige Anwendung, einen Dienst oder gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in in ein anderes Produkt bereitgestellt werden, um einige wenige zu nennen. Außerdem wird das Verfahren 200 beispielhaft mit Bezug auf das verteilte Stream-Analyse- und Speichersystem 100 von 1A beschrieben. Dieses Verfahren kann jedoch zusätzlich oder alternativ durch ein beliebiges System oder eine beliebige Kombination von Systemen ausgeführt werden, die jene umfassen, die hier beschrieben sind, jedoch nicht begrenzt auf jene begrenzt sind. Des Weiteren werden Fachleute verstehen, dass jedes System, dass das Verfahren 200 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Offenbarung ist.
  • Bei Schritt 205 verarbeitet eine Edge-Vorrichtung 130 einen von einem Sensor 102 erfassten Daten-Stream, um Erfassungsdaten zu erzeugen, die mindestens einem Zeitsegment in dem Daten-Stream entsprechen. In einer Ausführungsform ist der Daten-Stream ein kontinuierlicher Daten-Stream. In einer Ausführungsform werden die Erfassungsdaten gemäß vorbestimmter Kriterien erzeugt. In einer Ausführungsform werden die Erfassungsdaten durch ein neuronales Netzwerk erzeugt. In einer Ausführungsform kann das in 5C veranschaulichte System 555 verwendet werden, um den Erfassungsdatengenerator 110 zu trainieren. In einer Ausführungsform ist der Daten-Stream ein Video-Stream und die Erfassungsdaten entsprechen einem Objekt, das in dem Daten-Stream sichtbar ist. In einer Ausführungsform ist der Daten-Stream ein Audio-Stream und die Erfassungsdaten entsprechen einem Geräusch, das in dem Daten-Stream hörbar ist. In einer Ausführungsform ist der Sensor 102 eines von einer Kamera oder einem Mikrophon.
  • Bei Schritt 210 werden die Erfassungsdaten an eine entfernte Vorrichtung übertragen. In einer Ausführungsform ist ein in dem Netzwerk 115 enthaltener Kommunikationsdienst konfiguriert, um die Erfassungsdaten von der Edge-Vorrichtung zu der entfernten Vorrichtung weiterzuleiten und der Trigger von der entfernten Vorrichtung zu der Edge-Vorrichtung 130 weiterzuleiten. In einer Ausführungsform ist der Kommunikationsdienst in der Cloud lokalisiert. In einer Ausführungsform umfasst die entfernte Vorrichtung den Analysedienst 120. In einer Ausführungsform kann mindestens eine zusätzliche Edge-Vorrichtung 130 konfiguriert sein, um zusätzlichen Erfassungsdaten an die entfernte Vorrichtung zu übertragen. In einer Ausführungsform werden ein oder mehrere Ereignisse durch die entfernte Vorrichtung basierend auf den Erfassungsdaten identifiziert. In einer Ausführungsform entspricht ein Ereignis ein bestimmtes Verhalten, das ein Analysedienst 120 trainiert ist, zu identifizieren. Beispielsweise kann der Analysedienst 120 trainiert sein, um spezifische Verstöße zu identifizieren, wie beispielsweise Fahren in einer Fahrradspur für mehr als einen Block oder Parken eines Autos innerhalb eines beschränkten Bereichs oder ein Fahrzeug, das ein Durchführen eines illegalen Manövers (wie beispielsweise und ohne Einschränkung, Fahren in der falschen Richtung, Durchführen einer U-Kehre). Eine einzelne Edge-Vorrichtung 130, die an einem festen Ort installiert ist,, kann die Bilder nicht erfassen, die benötigt werden, um zu bestimmen, dass ein Ereignis stattgefunden hat. In einem anderen Beispiel kann der Analysedienst 120 trainiert werden, um einen Fußgänger zu identifizieren, der hingefallen ist.
  • In einer Ausführungsform erzeugt die entfernte Vorrichtung den Trigger basierend auf einer Analyse der Erfassungsdaten und der zusätzlichen Erfassungsdaten. In einer Ausführungsform wird der Trigger gemäß erwarteter Verhaltensmuster erzeugt. In einer Ausführungsform wird die Analyse von einem neuronales Netzwerk durchgeführt. In einer Ausführungsform können die Erfassungsdaten und/oder die extrahierten Clips zum Trainieren eines neuronalen Netzwerkmodells verwendet werden. In einer Ausführungsform können die Erfassungsdaten verwendet werden, wenn das Verhalten nicht einem gelernten Ereignis zugeordnet ist, und die Erfassungsdaten und/oder extrahierten Clips können geprüft werden, um unbekanntes Verhalten zu erkennen. In einer Ausführungsform können die Erfassungsdaten und/oder extrahierten Clips zur Trainieren, Testen oder Zertifizieren eines neuronalen Netzwerkmodells verwendet werden, das in einer Maschine, einem Roboter oder einem autonomen Fahrzeug eingesetzt wird.
  • Bei Schritt 215 empfängt die Edge-Vorrichtung 130 einen Trigger, der durch die entfernte Vorrichtung erzeugt wird und der ein Ereignis identifiziert. In einer Ausführungsform ist der Trigger ein Extraktionstrigger. In einer Ausführungsform wird der Trigger basierend auf der Analyse der Erfassungsdaten erzeugt. Bei Schritt 220 extrahiert, als Antwort auf den Trigger, die Edge-Vorrichtung einen Clip, der mindestens einen Abschnitt des Daten-Streams umfasst. In einer Ausführungsform spezifiziert der Trigger einen Zeitstempel innerhalb des kontinuierlichen Daten-Streams und eine Dauer des Clips. In einer Ausführungsform ist ein Puffer konfiguriert, um einen Abschnitt des kontinuierlichen Daten-Streams zu speichern, aus welcher der Clip extrahiert wird. In einer Ausführungsform ist der Puffer der rollende Puffer 105. Bei Schritt 225 wird der Clip in einer persistenten Speicherung gespeichert, wie beispielsweise der persistenten Clipspeicherung 125. In einer Ausführungsform werden Annotationsdaten, die dem Clip entsprechen, ebenfalls gespeichert.
  • 2B veranschaulicht ein anderes Blockdiagramm eines Beispiels eines verteilten Stream-Analyse- und Speichersystems 250, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Das System 250 umfasst eine entfernte Vorrichtung 255, das(die) Netzwerk(e) 115 und mehrere (N) Edge-Vorrichtungen 130 (z. B., Edge-Vorrichtung 130-1, ... 130-N). In einer Ausführungsform ist die entfernte Vorrichtung 255 ein Server oder eine Kernvorrichtung eines Cloud-Rechensystems. Jede Edge-Vorrichtung 130 erfasst kontinuierlich Streaming-Daten von einem oder mehreren Sensoren 103 und erzeugt Erfassungsdaten. Die Erfassungsdaten werden an die entfernte Vorrichtung 255 übertragen, die den Analysedienst 120 umfasst. In einer Ausführungsform umfasst die entfernte Vorrichtung 155 mehrere Analysedienste 120 und jeder Analysedienst 120 kann konfiguriert sein, um die Erfassungsdaten zu analysieren, um unterschiedliche Typen von Ereignissen zu identifizieren.
  • In einer Ausführungsform werden die Erfassungsdaten und Extraktionstrigger über einen Kommunikationsdienst 235 innerhalb des(der) Netzwerks(e) 115 übertragen. In einer Ausführungsform ist der Kommunikationsdienst 235 ein Nachrichtenvermittler, der einen asynchronen Betrieb der Edge-Vorrichtungen 130 und der entfernten Vorrichtung 155 ermöglicht. In einer Ausführungsform ist der Kommunikationsdienst 235 in der Cloud. In einer Ausführungsform verwendet der Kommunikationsdienst 235 definierte Richtlinien, um zu bestimmen, welcher Analysedienst 120 und/oder entfernte Vorrichtung 255 Erfassungsdaten empfangen sollte. Beispielsweise kann ein erster Analysedienst 120 eine Richtlinie definieren, um lediglich Erfassungsdaten zu empfangen, die Fahrzeugen entsprechen, und ein zweiter Analysedienst 120 kann eine Richtlinie definieren, um lediglich Erfassungsdaten zu empfangen, die Leuten entsprechen. Der Kommunikationsdienst 235 empfängt den(die) Extraktionstrigger für die N Edge-Vorrichtungen 130 und überträgt jeden Extraktionstrigger an eine oder mehrere der Edge-Vorrichtungen 130, die durch den Extraktionstrigger spezifiziert werden. In einer Ausführungsform kann die entfernte Vorrichtung 255 und/oder eine oder mehrere der Edge-Vorrichtungen 130 konfiguriert sein, um die Clips mit oder ohne Annotationen anzuzeigen.
  • In einer Ausführungsform verfolgt der Analysedienst 120, die Bewegung eines durch die mehreren Edge-Vorrichtungen 130 identifizierten Fahrzeugs im zeitlichen Verlauf. Der Analysedienst 120 kann Erfassungsdaten integrieren, die durch mehreren Edge-Vorrichtungen 130 übertragen werden, um zu bestimmen, welche Abschnitte der kontinuierlich gespeicherten Daten in einem oder mehreren der rollenden Puffer 105 extrahiert und gespeichert werden sollten. Beispielsweise kann die entfernte Vorrichtung 255 Erfassungsdaten analysieren, die von einer oder mehrere Edge-Vorrichtungen 130 für das gleiche Zeitsegment empfangen werden. Die entfernte Vorrichtung 255 kann Erfassungsdaten analysieren, die von einer oder mehreren Edge-Vorrichtungen 130 für unterschiedliche Zeitsegmente empfangen werden.
  • In einer Ausführungsform implementiert der Kommunikationsdienst 235 eine Zeitsynchronisation über Vorrichtungen des verteilten Stream-Analyse- und Speichersystems 250, um für die Zeitstempel und Erfassungsdaten über das verteilte Stream-Analyse- und Speichersystem 250 synchronisiert zu sein. Beispielsweise können sich die Edge-Vorrichtungen 130 mit einem Internet Protocol (IP)-Netzwerk verbinden und ein Network Time Protocol (NTP)-Dämon ausführen, um Zeit mit der entfernten Vorrichtung 255 zu synchronisieren und synchronisierte Zeitstempel für eingehende Videodaten zu bestimmen). Wenn die Videodaten verarbeitet und/oder erzeugt werden, können die Zeitstempel entsprechenden Frames zur Speicherung in der persistenten Clipspeicherung 125 zugeordnet und von dem rollenden Puffer 105 extrahiert werden.
  • 3 veranschaulicht ein Ablaufdiagramm eines Verfahrens 300 zur Extraktionstriggererzeugung, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Jeder Block des hier beschriebenen Verfahrens 200 umfasst einen Rechenprozess, der unter Verwendung einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen durch einen Prozessor ausgeführt werden, der im Speicher gespeichert Anweisungen ausführt. Das Verfahren kann ebenfalls als computernutzbare Anweisungen verkörpert sein, die auf Computerspeicherungsmedien gespeichert sind. Das Verfahren kann durch ein eigenständige Anwendung, einen Dienst oder gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in in ein anderes Produkt bereitgestellt werden, um einige zu nennen. Außerdem wird das Verfahren 300 beispielhaft mit Bezug auf das verteilte Stream-Analyse- und Speichersystem 100 von 1A oder das System 250 von 2B beschrieben. Dieses Verfahren kann jedoch zusätzlich oder alternativ durch ein beliebiges System oder eine beliebige Kombination von Systemen ausgeführt werden, die jene umfassen, die hier beschrieben sind, jedoch nicht auf jene begrenzt sind. Des Weiteren werden Fachleute verstehen, dass jedes System, dass das Verfahren 300 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Offenbarung ist.
  • Bei Schritt 305 werden Erfassungsdaten von mehreren Edge-Vorrichtungen 130 durch einen Analysedienst 120 innerhalb der entfernten Vorrichtung 255 analysiert. Die durch jeder Edge-Vorrichtung 130 breitgestellten Erfassungsdaten entsprechen mindestens einem Zeitsegment. Bei Schritt 310 identifiziert der Analysedienst 120 ein Ereignis basierend auf der Verarbeitung der von den mehreren Edge-Vorrichtungen 130 empfangenen Erfassungsdaten.
  • In einer Ausführungsform können die Erfassungsdaten (z. B., Bilddaten, LIDAR-Daten, RADAR-Daten usw.) analysiert werden, um Objekttrajektorien zu identifizieren oder zu bestimmen, Gesichtserkennung durchzuführen, Objekte zu klassifizieren und dergleichen. Eine Objekttrajektorie kann sich auf einen Pfad beziehen, der von einem sich bewegenden Objekt gefolgt wird, zusätzlich zu, in einigen Beispielen, eines oder mehrerer Attribute oder Charakteristiken des Objekts entlang des Pfades (z. B., Geschwindigkeit, Vektorgeschwindigkeit, Beschleunigung, Drehwinkel, Gierrate usw.). Obwohl ein Objekt im Allgemeinen hier als ein Fahrzeug (z. B., Auto, Lastwagen, Fahrrad, Motorrad usw.) bezeichnet wird, kann ein Objekt ein beliebiges sich bewegendes Element sein, wie beispielsweise eine Person, ein Tier, ein anderer Fahrzeugtyp, ein lebloses Objekt usw.
  • Eine Objekttrajektorie kann auf jede beliebige Art und Weise dargestellt werden. Eine Art und Weise, in welcher eine Objekttrajektorie dargestellt werden kann, umfasst eine Menge oder Reihe von Positionen oder Koordinaten eines Objekts und entsprechende Zeitpunkte (z. B., Zeitstempel) für die Positionen. In dieser Hinsicht kann ein erfasster kontinuierlicher Daten-Stream (z. B., Bilddaten oder andere Sensordaten) analysiert werden, um die Trajektorie jedes Objekts zu identifizieren oder zu bestimmen. Beispielsweise kann der Erfassungsdatengenerator 110 kontinuierliche Stream-Daten (z. B., ein Video, Standbilder, LIDAR Daten usw.) verarbeiten, um ein oder mehrere Objekte innerhalb des Blickfeldes des Sensors 102 zu verarbeiten. In dieser Hinsicht kann die Objekterfassung durchgeführt werden, um ein oder mehrere Objekte innerhalb des kontinuierlichen Daten-Streams zu erfassen (z. B., innerhalb eines Videos, das durch eine oder mehrere Kameras erfasste Bilddaten dargestellt wird). Eine Objekterfassung kann in einer beliebigen Art und Weise wie beispielsweise über maschinelles Lernen (z. B., faltende neuronale Netzwerke) oder andere Computer-Vision-Algorithmen durchgeführt werden. Erfasste Objekte können in den Erfassungsdaten beispielsweise unter Verwendung eines Begrenzungskästchens angegeben werden.
  • Bei Schritt 315 überträgt der Analysedienst 120 innerhalb der entfernten Vorrichtung 255 einen oder mehrere Extraktionstrigger an mindestens eine der mehreren Edge-Vorrichtungen 130. Der Analysedienst 120 kann Zeitsegmente bestimmen, die dem Ereignis entsprechen und die Zeitsegmente in dem(den) Extraktionstrigger(n) umfassen. Bei Schritt 320 extrahiert die mindestens eine der mehreren Edge-Vorrichtungen 130 einen oder mehrere Clips basierend auf dem(den) Extraktionstrigger(n). Der(die) Clip(s) kann(können) von einer entfernten Vorrichtung 255 zur weiteren Verarbeitung oder zur Darstellung an einen Benutzer abgerufen werden.
  • Das Erfassen von Objekten, Instanzen oder Vorkommnissen an Edge-Vorrichtungen und das Durchführen einer Analyse basierend auf Erfassungsdaten, die von mehreren Edge-Vorrichtungen gesammelt wurden, ermöglicht die Identifikation von Ereignissen in einem größeren Kontext. Zusätzlich können Abschnitte des kontinuierlichen Daten-Streams, die durch einzelne Edge-Vorrichtungen erfasst werden, extrahiert werden, um Clips zu erzeugen. Das Puffern des Daten-Streams für eine Zeitdauer, die gleich oder größer als die angefallene Latenz ist, während die Fernanalyse durchgeführt wird, gewährleistet, dass die Abschnitte des Daten-Streams verfügbar sind, um als Clips gespeichert zu werden. Die Fähigkeit, die Abschnitte des Daten-Streams zu bestimmen, um zu extrahieren, gewährleistet, dass die persistenten Speicherungsressourcen intelligent verwendet werden, um die Clips zu speichern, die durch Analyse im größeren Kontext und/oder im zeitlichen Verlauf identifiziert werden, als relevant zu sein. Die gespeicherten Clips können zum Durchführen einer zusätzlichen Analyse oder zur Darstellung verwendet werden.
  • Parallelverarbeitungsarchitektur
  • 4 veranschaulicht eine Parallelverarbeitungseinheit (Parallel Processing Unit; PPU) 400 gemäß einer Ausführungsform. Die PPU 400 kann verwendet werden, um ein oder mehrere der Edge-Vorrichtungen 130 oder des Analysedienstes 120 zu implementieren. In einer Ausführungsform ist die PPU 400 ein Multi-Threaded-Prozessor bzw. mehrsträngiger Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 400 ist eine Latenz-verbergende Architektur, die ausgestaltet ist, um eine große Anzahl von Threads bzw. Strängen parallel zu verarbeiten. Ein Thread bzw. Strang (z.B. ein Ausführungsthread) ist eine Instanziierung eines Satzes von Anweisungen, die konfiguriert sind, um von der PPU 400 ausgeführt zu werden. In einer Ausführungsform ist die PPU 400 eine Graphikverarbeitungseinheit (GPU), die konfiguriert ist, um eine Graphik-Rendering-Pipeline zur Verarbeitung von dreidimensionalen (3D) Graphikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung zu erzeugen. In anderen Ausführungsformen kann die PPU 400 zum Durchführen von Allzweckberechnungen benutzt werden. Während ein beispielhafter paralleler Prozessor hier für veranschaulichende Zwecke bereitgestellt wird, sei nachdrücklich bemerkt, dass ein derartiger Prozessor lediglich für veranschaulichende Zwecke dargelegt wird und dass ein beliebiger Prozessor benutzt werden kann, um dasselbe zu ergänzen und/oder zu ersetzen.
  • Eine oder mehrere PPUs 400 können konfiguriert sein, um Tausende von HPC(High Performing Computing)-, Rechenzentrum-, Cloud-Computing- und Maschinenlern-Anwendungen zu beschleunigen. Die PPU 400 kann konfiguriert sein, um zahlreiche Deep-Learning-Systeme und für autonome Fahrzeuge, Simulation, Rechengraphik, wie beispielsweise Strahlen- oder Pfadverfolgung, Deep-Learning, hochgenaue Sprache, Bild- und Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Wirkstoffentdeckung, Krankheitsdiagnose, Wettervorhersage, Analyse großer Datenmengen, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotertechnik, Fabrikautomation, Sprachübersetzung in Echtzeit, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und dergleichen umfassen.
  • Wie in 4 gezeigt, umfasst die PPU 400 eine Eingabe/Ausgabe(E/A)-Einheit 405, eine Frontend-Einheit 415, eine Planereinheit 420, eine Arbeitsverteilungs-Einheit 425, einen Hub 430, eine Kreuzschiene (Xbar) 470, einen oder mehrere allgemeine Verarbeitungscluster (GPCs) 450 und eine oder mehrere Speicherpartitionseinheiten 480. Die PPU 400 kann mit einem Host-Prozessor oder anderen PPUs 400 über eine Zwischenverbindung des Hochgeschwindigkeits-NVLink 410 verbunden sein. Die PPU 400 kann ebenfalls mit einem Host-Prozessor oder anderen peripheren Vorrichtungen über eine Zwischenverbindung 402 verbunden sein. Die PPU 400 kann ebenfalls mit einem lokalen Speicher 404 verbunden sein, der eine Anzahl von Speichervorrichtungen umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von Direktzugriffsspeicher(DRAM)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als ein HBM(Speicher mit hoher Bandbreite)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt sind.
  • Die Zwischenverbindung des NVLink 410 ermöglicht Systemen, eine oder mehrere PPUs 400 zu skalieren und zu umfassen, die mit einer oder mehreren CPUs kombiniert sind, unterstützt Cache-Kohärenz zwischen den PPUs 400 und CPUs sowie CPU-Mastering. Daten und/oder Befehle können mittels des NVLink 410 durch den Hub 430 an/von anderen Einheiten der PPU 400, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Das NVLink 410 wird ausführlicher in Verbindung mit 5B beschrieben.
  • Die E/A-Einheit 405 ist konfiguriert, um Kommunikationen (z.B. Befehle, Daten usw.) von einem Host-Prozessor (nicht gezeigt) über die Zwischenverbindung 402 zu übertragen und zu empfangen. Die E/A-Einheit 405 kann mit dem Host-Prozessor direkt über die Zwischenverbindung 402 oder durch eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einer Ausführungsform kann die E/A-Einheit 405 mit einem oder mehreren anderen Prozessoren, wie beispielsweise eine oder mehrere der PPUs, über die Zwischenverbindung 402 kommunizieren. In einer Ausführungsformen implementiert die E/A-Einheit 405 eine PCIe(Peripheral Component Zwischenverbindung Express)-Schnittstelle für Kommunikationen über einen PCIe-Bus und die Zwischenverbindung 402 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die E/A-Einheit 405 andere Typen von wohlbekannten Schnittstellen zum Kommunizieren mit externen Vorrichtungen umfassen.
  • Die E/A-Einheit 405 decodiert Pakete, die über die Zwischenverbindung 402 empfangen wurden. In einer Ausführungsform stellen die Pakete Befehle dar, die konfiguriert sind, um die PPU 400 zu veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 405 überträgt die decodierten Befehle an verschiedene andere Einheiten der PPU 400, wie es die Befehle spezifizieren können. Beispielsweise können einige Befehle an die Frontend-Einheit 415 übertragen werden. Andere Befehle können an den Hub 430 oder andere Einheiten der PPU 400, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Video-Codierer, einen Video-Decodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Mit anderen Worten ist die E/A-Einheit 405 konfiguriert, um Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 400 weiterzuleiten.
  • In einer Ausführungsform codiert ein Programm, das von dem Host-Prozessor ausgeführt wird, einen Befehlsstrom in einem Puffer, welcher der PPU 400 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten umfassen, die von diesen Anweisungen zu verarbeiten sind. Der Puffer ist ein Bereich in einem Speicher, der von sowohl dem Host-Prozessor als auch der PPU 400 zugänglich ist (z.B. Lesen/Schreiben). Beispielsweise kann die Host-Schnittstelleneinheit 405 konfiguriert sein, um auf den Puffer in einem Systemspeicher, der mit der Zwischenverbindung 402 verbunden ist, über Speicheranfragen, die über die Zwischenverbindung 402 übertragen werden, zuzugreifen. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger zu dem Start des Befehlsstroms an die PPU 400. Die Frontend-Einheit 415 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 415 verwaltet den einen oder mehrere Ströme, liest Befehle von den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 400 weiter.
  • Die Frontend-Einheit 415 ist mit einer Planereinheit 420 gekoppelt, welche die verschiedenen GPCs 450 konfiguriert, um Aufgaben zu verarbeiten, die durch den einen oder mehrere Ströme definiert sind. Die Planereinheit 420 ist konfiguriert, um Zustandsinformation zu verfolgen, die verschiedene Aufgaben betrifft, die von der Planereinheit 420 verwaltet werden. Der Zustand kann angeben, welchem GPC 450 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, ob ein Prioritätsniveau der Aufgabe zugeordnet ist und so weiter. Die Planereinheit 420 verwaltet die Ausführung einer Mehrzahl von Aufgaben auf dem einen oder mehreren GPCs 450.
  • Die Planereinheit 420 ist mit einer Arbeitsverteilungs-Einheit 425 gekoppelt, die konfiguriert ist, um Aufgaben zur Ausführung auf den GPCs 450 zu versenden. Die Arbeitsverteilungs-Einheit 425 kann eine Anzahl von eingeplanten Aufgaben verfolgen, die von der Planereinheit 420 empfangen werden. In einer Ausführungsform verwaltet die Arbeitsverteilungs-Einheit 425 einen Pool für anhängige Aufgaben und einen Pool für aktive Aufgaben für jeden der GPCs 450. Wenn ein GPC 450 die Ausführung einer Aufgabe abschließt, wird diese Aufgabe aus dem Pool für aktive Aufgaben für den GPC 450 geräumt und eine der anderen Aufgaben wird aus dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 450 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 450 inaktiv war, wie beispielsweise während darauf gewartet wird, dass eine Datenabhängigkeit behoben wird, dann kann die aktive Aufgabe aus dem GPC 450 geräumt und zu dem Pool für anhängige Aufgaben zurückgeführt werden, während eine weitere Aufgabe in dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 450 eingeplant wird.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiber-Kernel aus, der eine anwendungsprogrammierbare Schnittstelle (Application Programming Interface; API) implementiert, die einer oder mehreren Anwendungen ermöglicht, die auf dem Host-Prozessor ausgeführt werden, Operationen zur Ausführung auf der PPU 400 einzuplanen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 400 ausgeführt und die PPU 400 stellt Isolierung, Dienstqualität (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, welche den Treiber-Kernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 400 zu erzeugen. Der Treiberkernel gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 400 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von in Beziehung stehender Threads umfassen, die hier als ein Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 in Beziehung stehende Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Mehrzahl von Threads beziehen, die Anweisungen umfassen, um die Aufgabe durchzuführen, und die Daten durch einen gemeinsam genutzten Speicher austauschen können. Die Aufgaben können einer oder mehreren Verarbeitungseinheiten innerhalb eines GPC 450 zugeteilt werden und Anweisungen werden zur Ausführung durch mindestens einen Warp geplant.
  • Die Arbeitsverteilungseinheit 425 kommuniziert mit dem einem oder mehreren GPCs 450 über die Kreuzschiene 470. Die Kreuzschiene ist ein Zwischenverbindungsnetzwerk, das viele der Einheiten der PPU 400 mit anderen Einheiten koppelt. Beispielsweise kann die Kreuzschiene 470 konfiguriert sein, um die Arbeitsverteilungseinheit 425 mit einem bestimmten GPC 450 zu koppeln. Obwohl nicht explizit gezeigt, können eine oder mehrere Einheiten der PPU 400 ebenfalls mit der Kreuzschiene 470 über den Hub 430 gekoppelt sein.
  • Die Aufgaben werden von der Planereinheit 420 verwaltet und an einen GPC 450 durch die Arbeitsverteilungseinheit 425 gesendet. Die GPC ist konfiguriert, um die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC konsumiert werden, an einen anderen GPC über die Kreuzschiene weitergeleitet oder in dem Speicher gespeichert werden. Die Ergebnisse können in den Speicher 404 über die Speicherpartitionseinheiten 480 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 404 implementieren. Die Ergebnisse können an eine andere PPU 400 oder CPU über das NVLink 410 übertragen werden. In einer Ausführungsform umfasst die PPU 400 eine Anzahl U von Speicherpartitionseinheiten 480, die gleich der Anzahl von separaten und distinkten Speichervorrichtungen des mit der PPU gekoppelten Speicher 404 ist. Jeder GPC 450 kann eine Speicherverwaltungseinheit umfassen, um eine Übersetzung von virtuellen Adressen in physische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranfragen bereitzustellen. In einer Ausführungsform stellt die Speicherverwaltungseinheit einen oder mehrere Adressenübersetzungspuffer (Translation Lookaside Buffers; TLBs) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in dem Speicher 404 bereit.
  • In einer Ausführungsform umfasst die Speicherpartitionseinheit 480 eine Raster-Operationen(ROP)-Einheit, einen L2-Cache-Speicher und eine Speicherschnittstelle, die mit dem Speicher 404 gekoppelt ist. Die Speicherschnittstelle kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeits-Datentransfer implementieren. Die PPU 400 kann mit bis zu Y Speichervorrichtungen, wie beispielsweise einem Speicherstapel mit hoher Bandbreite oder Graphikdoppeldatenraten, Version 5 SDRAM oder anderen Arten eines persistenten Speicher verbunden sein. In einer Ausführungsform implementiert die Speicherschnittstelle eine HBM2-Speicherschnittstelle und Y ist gleich einem halben U. In einer Ausführungsform sind die HBM2-Speicherstapel auf der gleichen physischen Packung wie die PPU 400 lokalisiert, die wesentliche Leistungs- und Flächeneinsparungen verglichen mit herkömmlichen GDDR5 SDRAM Systemen bereitstellt. In einer Ausführungsform umfasst jeder HBM2-Stapel vier Speicher-Dies und Y ist gleich 4, wobei der HBM2-Stapel zwei 128-Bit Kanäle pro Die für eine Gesamtzahl von 8 Kanälen und eine Datenbusbreite von 1024 Bit umfasst.
  • In einer Ausführungsform unterstützt der Speicher 404 Fehlerkorrekturcode (ECC) mit Einzelfehlerkorrektur und Doppelfehlerdetektion (SECDED), um Daten zu schützen. Der ECC stellt eine höhere Zuverlässigkeit für Rechenanwendungen bereit, die gegen Datenverfälschung empfindlich sind. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, wo PPUs 400 sehr große Datensätze verarbeiten und/oder Anwendungen für längere Zeiträume ausführen.
  • In einer Ausführungsform implementiert die PPU 400 eine Mehr-Ebenen-Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionseinheit 480 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für den Speicher der CPU und den Speicher der PPU 400 bereitzustellen, der Datenteilung zwischen virtuellen Speichersystemen ermöglicht. In einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU 400 auf einen Speicher, der auf anderen Prozessoren lokalisiert ist, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU 400 bewegt werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt das NVLink 410 Adressenübersetzungsdienste, die der PPU 400 erlauben, auf Seitentabellen einer CPU direkt zuzugreifen und einen vollen Zugriff auf den CPU-Speicher durch die PPU 400 bereitstellen.
  • In einer Ausführungsform transferieren Kopiermaschinen Daten zwischen mehreren PPUs 400 oder zwischen PPUs 400 und CPUs. Die Kopiermaschinen können Seitenfehler für Adressen erzeugen, die nicht in den Seitentabellen abgebildet werden. Die Speicherpartitionseinheit 480 kann dann die Seitenfehler bedienen, wobei die Adressen in der Seitentabelle abgebildet werden, nachdem die Kopiermaschine den Transfer durchführen kann. In einem herkömmlichen System ist der Speicher für mehrere Kopiermaschinenoperationen zwischen mehreren Prozessoren gesperrt (z.B. nicht auslagerbar), was den verfügbaren Speicher wesentlich verringert. Mit Hardware-Seiten-Faulting können Adressen an die Kopiermaschinen weitergeleitet werden, ohne sich Sorgen zu machen, ob die Speicherseiten resident sind und das Kopierverfahren transparent ist.
  • Daten von dem Speicher 404 oder einem anderen Systemspeicher können von der Speicherpartitionseinheit 480 geholt und in dem L2-Cache-Speicher 460 gespeichert werden, der On-Chip lokalisiert ist und zwischen den verschiedenen GPCs 450 gemeinsam benutzt wird. Wie gezeigt, umfasst jede Speicherpartitionseinheit 480 einen Bereich des L2-Cache-Speichers, der einem entsprechenden Speicher 404 zugeordnet ist. Cache-Speicher niedrigerer Ebene können dann in verschiedenen Einheiten innerhalb der GPCs 450 implementiert werden. Beispielsweise kann jede der Verarbeitungseinheiten einen Ll-Cache-Speicher implementieren. Der L1-Cache-Speicher ist ein privater Speicher, der einer bestimmten Verarbeitungseinheit fest zugeordnet ist. Der L2-Cache-Speicher Daten ist mit der Speicherschnittstelle 470 und der Kreuzschiene 470 gekoppelt und Daten von dem L2-Cache-Speicher 460 können geholt und in jedem der L1-Cache-Speicher zur Verarbeitung gespeichert werden.
  • In einer Ausführungsform implementieren die Verarbeitungseinheiten innerhalb jeder GPC 450 eine SIMD(Einzelne-Anweisung, Mehrere-Daten)-Architektur, wobei jeder Thread in einer Gruppe von Threads (z.B. einem Warp) konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten. Alle Threads in der Gruppe von Threads führen die gleichen Anweisungen aus. In einer anderen Ausführungsform implementiert die Verarbeitungseinheit eine SIMT(Einzelne Anweisung, Mehrere Threads)-Architektur, wobei jeder Thread in einer Gruppe von Threads konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten, wobei jedoch einzelnen Threads in der Gruppe von Threads ermöglicht wird, während der Ausführung zu divergieren. In einer Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, was eine Nebenläufigkeit zwischen Warps und eine serielle Ausführung innerhalb Warps ermöglicht, wenn Threads innerhalb des Warp divergieren. In einer weiteren Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, was eine gleiche Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, welche die gleichen Anweisungen ausführen, konvergiert und für maximale Effizienz parallel ausgeführt werden.
  • Cooperative Groups ist ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads, das Entwicklern ermöglicht, die Granularität auszudrücken, bei der Threads kommunizieren, wobei der Ausdruck von reicheren, effizienten Parallelzerlegungen ermöglicht wird. Cooperative-Start-APIs unterstützen die Synchronisierung unter Thread-Blöcken für die Ausführung von parallelen Algorithmen. Herkömmliche Programmiermodelle stellen einen einzigen, einfachen Aufbau zum Synchronisieren von kooperierenden Threads bereit: eine Barriere über alle Threads eines Threadblocks (z.B. die Funktion syncthreads( )). Programmierer würden jedoch häufig gerne Gruppen von Threads bei kleineren als Thread-Block-Granularitäten definieren und innerhalb der definierten Gruppen synchronisieren, um größere Leistung, Gestaltungsflexibilität und Software-Wiederverwendung in der Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht Programmierern, Gruppen von Threads explizit bei Sub-Block(z.B. so klein wie ein einziger Thread)- und Mehr-Block-Granularitäten zu definieren und kollektive Operationen, wie beispielsweise Synchronisierung, an den Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen, so dass Bibliotheken und Hilfsfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz machen zu müssen. Cooperative-Groups-Primitiven ermöglichen neue Muster von kooperativer Parallelität, die Erzeuger-Verbraucher Parallelität, opportunistische Parallelität und globale Synchronisierung über ein gesamtes Gitter von Threadblöcken umfassen.
  • Jede Verarbeitungseinheit umfasst eine große Anzahl (z.B. 128, usw.) von unterschiedlichen Verarbeitungskernen, die eine vollständig in einer Pipeline angeordnete (fully-pipelined) Einfach-Präzisions- Verarbeitungseinheit umfassen, die eine Gleitkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit umfasst. In einer Ausführungsform implementieren die Gleitkommaarithmetik-Logikeinheiten den IEEE 754-3008 Standard für Gleitkommaarithmetik. In einer Ausführungsform umfassen die Kerne 64 Einfach-Präzisions-(32-Bit)-Gleitkommakerne, 64 Integer-Kerne, 32 Doppel-Präzisions-(64-Bit)-Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne sind konfiguriert, um Matrix-Operationen durchzuführen. Insbesondere sind die Tensorkerne konfiguriert, um Deep-Learning-Matrix-Arithmetik, wie beispielsweise Faltungsoperationen für neuronales Netzwerktraining und Inferenzieren, durchzuführen. In einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4-Matrix und führt eine Matrix-Multiplikations- und Akkumulations-Operation D=A×B+C durch, wobei A, B, C und D 4x4 Matrizen sind.
  • In einer Ausführungsform sind die Matrix-Multiplikations-Eingaben A und 16-Bit-Gleitkomma-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkomma-Matrizen sein. Tensorkerne arbeiten an 16-Bit-Gleitkomma-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Gleitkomma-Multiplikation erfordert 64 Operationen und ergibt ein Produkt voller Präzision, das dann unter Verwendung einer 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die von diesen kleineren Elementen aufgebaut werden. Eine API, wie beispielsweise die CUDA 9 C++ API, stellt spezialisierte Matrix-Lade-, Matrix-Multiplikations- und Matrix-Akkumulations- und Matrix-SpeicherOperationen bereit, um Tensorkerne von einem CUDA-C++ Programm effizient zu verwenden. Auf der CUDA-Ebene nimmt das Warp-Schnittstellenniveau 16x16 große Matrizen an, die alle 32 Threads des Warp überspannen.
  • Jede Verarbeitungseinheit kann ebenfalls M Spezialfunktionseinheiten (Special Function Units; SFUs) umfassen, die Sonderfunktionen durchführen (z.B. Attributauswertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs eine Baumtraversierungseinheit umfassen, die konfiguriert ist, um eine hierarchische Baumdatenstruktur zu durchlaufen. In einer Ausführungsform können die SFUs eine Textureinheit umfassen, die konfiguriert ist, um Texturkarten-Filteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten konfiguriert, um Texturkarten (z.B. eine 2D-Anordnung von Texeln) von dem Speicher 404 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zum Gebrauch in Shader-Programmen zu erzeugen, die von der Verarbeitungseinheit ausgeführt werden. In einer Ausführungsform werden die Texturkarten in dem gemeinsam genutzten Speicher gespeichert, der einen L1-Cache-Speicher umfassen kann. Die Textureinheiten implementieren Texturoperationen, wie beispielsweise Filteroperationen, unter Verwendung von Mip-Maps (z.B. Texturkarten von veränderlichem Detaillierungsgrad). In einer Ausführungsform umfasst jeder Verarbeitungseinheit zwei Textureinheiten.
  • Jede Verarbeitungseinheit umfasst ebenfalls N Lade- und Speichereinheiten, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher und der Registerdatei implementieren. Jede Verarbeitungseinheit umfasst ein Zwischenverbindungs-Netzwerk, das jede der Kerne der Registerdatei und der LSU mit der Registerdatei, dem gemeinsam genutzten Speicher verbindet. In einer Ausführungsform ist das Zwischenverbindungs-Netzwerk eine Kreuzschiene, die konfiguriert sein kann, um irgendeinen der Kerne mit irgendeinem der Register in der Registerdatei zu verbinden und die LSUs mit der Registerdatei und Speicherorten in dem gemeinsam genutzten Speicher zu verbinden.
  • Der gemeinsam genutzte Speicher ist eine Anordnung eines On-Chip-Speichers, die Datenspeicherung und Kommunikation zwischen Verarbeitungseinheiten und zwischen Threads innerhalb einer Verarbeitungseinheit ermöglicht. In einer Ausführungsform umfasst der gemeinsam genutzte Speicher 128KB von Speicherkapazität und ist in dem Pfad von jeder Verarbeitungseinheit zu der Speicherpartitionseinheit 480. Der gemeinsam genutzte Speicher kann verwendet werden, um Lese- und Schreibvorgänge zwischenzuspeichern. Eines oder mehrere der gemeinsam genutzten Speicher, L2-Cache-Speicher und Speicher 404 sind Hintergrundspeicher.
  • Das Kombinieren eines Daten-Cache und der gemeinsam genutzten Speicherfunktionalität in einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Cache von Programmen benutzbar, die den gemeinsam genutzten Speicher nicht verwenden. Wenn der gemeinsam genutzte Speicher beispielsweise konfiguriert ist, die Hälfte der Kapazität zu verwenden, können Textur- und Lade/Speicher-Operationen die verbleibende Kapazität verwenden. Integration innerhalb des gemeinsam genutzten Speichers ermöglicht dem gemeinsam genutzten Speicher als eine Leitung mit hohem Durchsatz zum Streamen von Daten zu arbeiten, während gleichzeitig eine höhere Bandbreite und ein latenzarmer Zugriff auf häufig wiederverwendete Daten bereitgestellt werden.
  • Wenn für Allzweck-Parallelberechnung konfiguriert ist, kann im Vergleich mit der Graphikverarbeitung eine einfachere Konfiguration verwendet werden. Im Einzelnen werden Festfunktions-Graphikverarbeitungseinheiten umgangen, wobei ein viel einfacheres Programmiermodell erzeugt wird. In der Allzweck-Parallelberechnungs-Konfiguration werden Blöcke von Threads von der Arbeitsverteilungs-Einheit 425 direkt den Verarbeitungseinheiten innerhalb der GPCs 450 zugewiesen und verteilt. Die Threads führen das gleiche Programm unter Verwendung einer eindeutigen Thread-ID in der Berechnung, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, unter Verwendung der Verarbeitungseinheit(en), um das Programm auszuführen und Berechnungen durchzuführen, eines gemeinsam genutzten Speichers, um zwischen Threads zu kommunizieren, und der LSU aus, um globalen Speicher durch den gemeinsam genutzten Speicher und der Speicherpartitionseinheit 480 zu lesen und zu beschreiben. Wenn für Allzweck-Parallelberechnung konfiguriert ist, können die Verarbeitungseinheiten ebenfalls Befehle schreiben, welche die Planereinheit 420 verwenden kann, um neue Arbeit auf den Verarbeitungseinheiten zu starten.
  • Die PPUs 400 können jeweils umfassen und/oder können konfiguriert sein, um Funktionen eines oder mehrerer Verarbeitungskerne und/oder Komponenten davon auszuführen, wie beispielsweise Tensorkerne bzw. Tensor Cores (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs), Ray Tracing (RT) Cores, Vision Processing Units (VPUs), Graphics Processing Clusters (GPCs), Texture Processing Clusters (TPCs), Streaming Multiprocessors (SMs), Tree Traversal Units (TTUs), Artificial Intelligence Accelerators (AIAs), Deep Learning Accelerators (DLAs), Arithmetik-Logik-Einheiten (ALUs), anwendungsspezifische integrierte Schaltungen (ASICs), Gleitkomma-Einheiten (FPUs), Ein-/Ausgabe-Elemente (E/As), Peripheral Component Interconnect (PCI)- oder Peripheral Component Interconnect Express (PCIe)-Elemente und/oder dergleichen.
  • Die PPU 400 kann in einem Tischcomputer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z.B. einer drahtlosen handgehaltenen Vorrichtung), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einer handgehaltenen elektronischen Vorrichtung und dergleichen umfasst sein. In einer Ausführungsform ist die PPU 400 auf einem einzelnen Halbleitersubstrat verkörpert. In einer anderen Ausführungsform ist die PPU 400 in einem System-auf-Chip (SoC) zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs 400, dem Speicher 404, einem Rechner-mitreduziertem-Befehlssatz(RISC)-CPU, einer Speicherverwaltungseinheit (MMU), einem Digital/Analog-Wandler (DAC) und dergleichen umfasst.
  • In einer Ausführungsform kann die PPU 400 auf einer Graphikkarte umfasst sein, die eine oder mehrere Speichervorrichtungen 404 umfasst. Die Graphikkarte kann konfiguriert sein, um sich mit einem PCIe-Schlitz auf einer Hauptplatine eines Tischcomputers schnittstellenmäßig zu verbinden. In noch einer anderen Ausführungsform kann die PPU 400 eine integrierte Graphikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der in dem Chipsatz der Hauptplatine umfasst ist. In noch einer anderen Ausführungsform kann die PPU 400 in rekonfigurierbarer Hardware verwirklicht sein. In noch einer anderen Ausführungsform können Teile der PPU 400 in rekonfigurierbarer Hardware verwirklicht sein.
  • Parallelverarbeitungsarchitektur
  • 4 veranschaulicht eine Parallelverarbeitungseinheit (Parallel Processing Unit; PPU) 400 gemäß einer Ausführungsform. Die PPU 400 kann verwendet werden, um ein oder mehrere der Edge-Vorrichtungen 130 oder des Analysedienstes 120 zu implementieren. In einer Ausführungsform ist die PPU 400 ein Multi-Threaded-Prozessor bzw. mehrsträngiger Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 400 ist eine Latenz-verbergende Architektur, die ausgestaltet ist, um eine große Anzahl von Threads bzw. Strängen parallel zu verarbeiten. Ein Thread bzw. Strang (z.B. ein Ausführungsthread) ist eine Instanziierung eines Satzes von Anweisungen, die konfiguriert sind, um von der PPU 400 ausgeführt zu werden. In einer Ausführungsform ist die PPU 400 eine Graphikverarbeitungseinheit (GPU), die konfiguriert ist, um eine Graphik-Rendering-Pipeline zur Verarbeitung von dreidimensionalen (3D) Graphikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung zu erzeugen. In anderen Ausführungsformen kann die PPU 400 zum Durchführen von Allzweckberechnungen benutzt werden. Während ein beispielhafter paralleler Prozessor hier für veranschaulichende Zwecke bereitgestellt wird, sei nachdrücklich bemerkt, dass ein derartiger Prozessor lediglich für veranschaulichende Zwecke dargelegt wird und dass ein beliebiger Prozessor benutzt werden kann, um dasselbe zu ergänzen und/oder zu ersetzen.
  • Eine oder mehrere PPUs 400 können konfiguriert sein, um Tausende von HPC(High Performing Computing)-, Rechenzentrum-, Cloud-Computing- und Maschinenlern-Anwendungen zu beschleunigen. Die PPU 400 kann konfiguriert sein, um zahlreiche Deep-Learning-Systeme und für autonome Fahrzeuge, Simulation, Rechengraphik, wie beispielsweise Strahlen- oder Pfadverfolgung, Deep-Learning, hochgenaue Sprache, Bild- und Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Wirkstoffentdeckung, Krankheitsdiagnose, Wettervorhersage, Analyse großer Datenmengen, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotertechnik, Fabrikautomation, Sprachübersetzung in Echtzeit, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und dergleichen umfassen.
  • Wie in 4 gezeigt, umfasst die PPU 400 eine Eingabe/Ausgabe(E/A)-Einheit 405, eine Frontend-Einheit 415, eine Planereinheit 420, eine Arbeitsverteilungs-Einheit 425, einen Hub 430, eine Kreuzschiene (Xbar) 470, einen oder mehrere allgemeine Verarbeitungscluster (GPCs) 450 und eine oder mehrere Speicherpartitionseinheiten 480. Die PPU 400 kann mit einem Host-Prozessor oder anderen PPUs 400 über eine Zwischenverbindung des Hochgeschwindigkeits-NVLink 410 verbunden sein. Die PPU 400 kann ebenfalls mit einem Host-Prozessor oder anderen peripheren Vorrichtungen über eine Zwischenverbindung 402 verbunden sein. Die PPU 400 kann ebenfalls mit einem lokalen Speicher 404 verbunden sein, der eine Anzahl von Speichervorrichtungen umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von Direktzugriffsspeicher(DRAM)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als ein HBM(Speicher mit hoher Bandbreite)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt sind.
  • Die Zwischenverbindung des NVLink 410 ermöglicht Systemen, eine oder mehrere PPUs 400 zu skalieren und zu umfassen, die mit einer oder mehreren CPUs kombiniert sind, unterstützt Cache-Kohärenz zwischen den PPUs 400 und CPUs sowie CPU-Mastering. Daten und/oder Befehle können mittels des NVLink 410 durch den Hub 430 an/von anderen Einheiten der PPU 400, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Das NVLink 410 wird ausführlicher in Verbindung mit 5B beschrieben.
  • Die E/A-Einheit 405 ist konfiguriert, um Kommunikationen (z.B. Befehle, Daten usw.) von einem Host-Prozessor (nicht gezeigt) über die Zwischenverbindung 402 zu übertragen und zu empfangen. Die E/A-Einheit 405 kann mit dem Host-Prozessor direkt über die Zwischenverbindung 402 oder durch eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einer Ausführungsform kann die E/A-Einheit 405 mit einem oder mehreren anderen Prozessoren, wie beispielsweise eine oder mehrere der PPUs, über die Zwischenverbindung 402 kommunizieren. In einer Ausführungsformen implementiert die E/A-Einheit 405 eine PCIe(Peripheral Component Zwischenverbindung Express)-Schnittstelle für Kommunikationen über einen PCIe-Bus und die Zwischenverbindung 402 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die E/A-Einheit 405 andere Typen von wohlbekannten Schnittstellen zum Kommunizieren mit externen Vorrichtungen umfassen.
  • Die E/A-Einheit 405 decodiert Pakete, die über die Zwischenverbindung 402 empfangen wurden. In einer Ausführungsform stellen die Pakete Befehle dar, die konfiguriert sind, um die PPU 400 zu veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 405 überträgt die decodierten Befehle an verschiedene andere Einheiten der PPU 400, wie es die Befehle spezifizieren können. Beispielsweise können einige Befehle an die Frontend-Einheit 415 übertragen werden. Andere Befehle können an den Hub 430 oder andere Einheiten der PPU 400, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Video-Codierer, einen Video-Decodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Mit anderen Worten ist die E/A-Einheit 405 konfiguriert, um Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 400 weiterzuleiten.
  • In einer Ausführungsform codiert ein Programm, das von dem Host-Prozessor ausgeführt wird, einen Befehlsstrom in einem Puffer, welcher der PPU 400 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten umfassen, die von diesen Anweisungen zu verarbeiten sind. Der Puffer ist ein Bereich in einem Speicher, der von sowohl dem Host-Prozessor als auch der PPU 400 zugänglich ist (z.B. Lesen/Schreiben). Beispielsweise kann die Host-Schnittstelleneinheit 405 konfiguriert sein, um auf den Puffer in einem Systemspeicher, der mit der Zwischenverbindung 402 verbunden ist, über Speicheranfragen, die über die Zwischenverbindung 402 übertragen werden, zuzugreifen. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger zu dem Start des Befehlsstroms an die PPU 400. Die Frontend-Einheit 415 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 415 verwaltet den einen oder mehrere Ströme, liest Befehle von den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 400 weiter.
  • Die Frontend-Einheit 415 ist mit einer Planereinheit 420 gekoppelt, welche die verschiedenen GPCs 450 konfiguriert, um Aufgaben zu verarbeiten, die durch den einen oder mehrere Ströme definiert sind. Die Planereinheit 420 ist konfiguriert, um Zustandsinformation zu verfolgen, die verschiedene Aufgaben betrifft, die von der Planereinheit 420 verwaltet werden. Der Zustand kann angeben, welchem GPC 450 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, ob ein Prioritätsniveau der Aufgabe zugeordnet ist und so weiter. Die Planereinheit 420 verwaltet die Ausführung einer Mehrzahl von Aufgaben auf dem einen oder mehreren GPCs 450.
  • Die Planereinheit 420 ist mit einer Arbeitsverteilungs-Einheit 425 gekoppelt, die konfiguriert ist, um Aufgaben zur Ausführung auf den GPCs 450 zu versenden. Die Arbeitsverteilungs-Einheit 425 kann eine Anzahl von eingeplanten Aufgaben verfolgen, die von der Planereinheit 420 empfangen werden. In einer Ausführungsform verwaltet die Arbeitsverteilungs-Einheit 425 einen Pool für anhängige Aufgaben und einen Pool für aktive Aufgaben für jeden der GPCs 450. Wenn ein GPC 450 die Ausführung einer Aufgabe abschließt, wird diese Aufgabe aus dem Pool für aktive Aufgaben für den GPC 450 geräumt und eine der anderen Aufgaben wird aus dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 450 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 450 inaktiv war, wie beispielsweise während darauf gewartet wird, dass eine Datenabhängigkeit behoben wird, dann kann die aktive Aufgabe aus dem GPC 450 geräumt und zu dem Pool für anhängige Aufgaben zurückgeführt werden, während eine weitere Aufgabe in dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 450 eingeplant wird.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiber-Kernel aus, der eine anwendungsprogrammierbare Schnittstelle (Application Programming Interface; API) implementiert, die einer oder mehreren Anwendungen ermöglicht, die auf dem Host-Prozessor ausgeführt werden, Operationen zur Ausführung auf der PPU 400 einzuplanen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 400 ausgeführt und die PPU 400 stellt Isolierung, Dienstqualität (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, welche den Treiber-Kernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 400 zu erzeugen. Der Treiberkernel gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 400 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von in Beziehung stehender Threads umfassen, die hier als ein Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 in Beziehung stehende Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Mehrzahl von Threads beziehen, die Anweisungen umfassen, um die Aufgabe durchzuführen, und die Daten durch einen gemeinsam genutzten Speicher austauschen können. Die Aufgaben können einer oder mehreren Verarbeitungseinheiten innerhalb eines GPC 450 zugeteilt werden und Anweisungen werden zur Ausführung durch mindestens einen Warp geplant.
  • Die Arbeitsverteilungseinheit 425 kommuniziert mit dem einem oder mehreren GPCs 450 über die Kreuzschiene 470. Die Kreuzschiene ist ein Zwischenverbindungsnetzwerk, das viele der Einheiten der PPU 400 mit anderen Einheiten koppelt. Beispielsweise kann die Kreuzschiene 470 konfiguriert sein, um die Arbeitsverteilungseinheit 425 mit einem bestimmten GPC 450 zu koppeln. Obwohl nicht explizit gezeigt, können eine oder mehrere Einheiten der PPU 400 ebenfalls mit der Kreuzschiene 470 über den Hub 430 gekoppelt sein.
  • Die Aufgaben werden von der Planereinheit 420 verwaltet und an einen GPC 450 durch die Arbeitsverteilungseinheit 425 gesendet. Die GPC ist konfiguriert, um die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC konsumiert werden, an einen anderen GPC über die Kreuzschiene weitergeleitet oder in dem Speicher gespeichert werden. Die Ergebnisse können in den Speicher 404 über die Speicherpartitionseinheiten 480 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 404 implementieren. Die Ergebnisse können an eine andere PPU 400 oder CPU über das NVLink 410 übertragen werden. In einer Ausführungsform umfasst die PPU 400 eine Anzahl U von Speicherpartitionseinheiten 480, die gleich der Anzahl von separaten und distinkten Speichervorrichtungen des mit der PPU gekoppelten Speicher 404 ist. Jeder GPC 450 kann eine Speicherverwaltungseinheit umfassen, um eine Übersetzung von virtuellen Adressen in physische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranfragen bereitzustellen. In einer Ausführungsform stellt die Speicherverwaltungseinheit einen oder mehrere Adressenübersetzungspuffer (Translation Lookaside Buffers; TLBs) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in dem Speicher 404 bereit.
  • In einer Ausführungsform umfasst die Speicherpartitionseinheit 480 eine Raster-Operationen(ROP)-Einheit, einen L2-Cache-Speicher und eine Speicherschnittstelle, die mit dem Speicher 404 gekoppelt ist. Die Speicherschnittstelle kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeits-Datentransfer implementieren. Die PPU 400 kann mit bis zu Y Speichervorrichtungen, wie beispielsweise einem Speicherstapel mit hoher Bandbreite oder Graphikdoppeldatenraten, Version 5 SDRAM oder anderen Arten eines persistenten Speicher verbunden sein. In einer Ausführungsform implementiert die Speicherschnittstelle eine HBM2-Speicherschnittstelle und Y ist gleich einem halben U. In einer Ausführungsform sind die HBM2-Speicherstapel auf der gleichen physischen Packung wie die PPU 400 lokalisiert, die wesentliche Leistungs- und Flächeneinsparungen verglichen mit herkömmlichen GDDR5 SDRAM Systemen bereitstellt. In einer Ausführungsform umfasst jeder HBM2-Stapel vier Speicher-Dies und Y ist gleich 4, wobei der HBM2-Stapel zwei 128-Bit Kanäle pro Die für eine Gesamtzahl von 8 Kanälen und eine Datenbusbreite von 1024 Bit umfasst.
  • In einer Ausführungsform unterstützt der Speicher 404 Fehlerkorrekturcode (ECC) mit Einzelfehlerkorrektur und Doppelfehlerdetektion (SECDED), um Daten zu schützen. Der ECC stellt eine höhere Zuverlässigkeit für Rechenanwendungen bereit, die gegen Datenverfälschung empfindlich sind. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, wo PPUs 400 sehr große Datensätze verarbeiten und/oder Anwendungen für längere Zeiträume ausführen.
  • In einer Ausführungsform implementiert die PPU 400 eine Mehr-Ebenen-Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionseinheit 480 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für den Speicher der CPU und den Speicher der PPU 400 bereitzustellen, der Datenteilung zwischen virtuellen Speichersystemen ermöglicht. In einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU 400 auf einen Speicher, der auf anderen Prozessoren lokalisiert ist, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU 400 bewegt werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt das NVLink 410 Adressenübersetzungsdienste, die der PPU 400 erlauben, auf Seitentabellen einer CPU direkt zuzugreifen und einen vollen Zugriff auf den CPU-Speicher durch die PPU 400 bereitstellen.
  • In einer Ausführungsform transferieren Kopiermaschinen Daten zwischen mehreren PPUs 400 oder zwischen PPUs 400 und CPUs. Die Kopiermaschinen können Seitenfehler für Adressen erzeugen, die nicht in den Seitentabellen abgebildet werden. Die Speicherpartitionseinheit 480 kann dann die Seitenfehler bedienen, wobei die Adressen in der Seitentabelle abgebildet werden, nachdem die Kopiermaschine den Transfer durchführen kann. In einem herkömmlichen System ist der Speicher für mehrere Kopiermaschinenoperationen zwischen mehreren Prozessoren gesperrt (z.B. nicht auslagerbar), was den verfügbaren Speicher wesentlich verringert. Mit Hardware-Seiten-Faulting können Adressen an die Kopiermaschinen weitergeleitet werden, ohne sich Sorgen zu machen, ob die Speicherseiten resident sind und das Kopierverfahren transparent ist.
  • Daten von dem Speicher 404 oder einem anderen Systemspeicher können von der Speicherpartitionseinheit 480 geholt und in dem L2-Cache-Speicher 460 gespeichert werden, der On-Chip lokalisiert ist und zwischen den verschiedenen GPCs 450 gemeinsam benutzt wird. Wie gezeigt, umfasst jede Speicherpartitionseinheit 480 einen Bereich des L2-Cache-Speichers, der einem entsprechenden Speicher 404 zugeordnet ist. Cache-Speicher niedrigerer Ebene können dann in verschiedenen Einheiten innerhalb der GPCs 450 implementiert werden. Beispielsweise kann jede der Verarbeitungseinheiten einen Ll-Cache-Speicher implementieren. Der L1-Cache-Speicher ist ein privater Speicher, der einer bestimmten Verarbeitungseinheit fest zugeordnet ist. Der L2-Cache-Speicher Daten ist mit der Speicherschnittstelle 470 und der Kreuzschiene 470 gekoppelt und Daten von dem L2-Cache-Speicher 460 können geholt und in jedem der L1-Cache-Speicher zur Verarbeitung gespeichert werden.
  • In einer Ausführungsform implementieren die Verarbeitungseinheiten innerhalb jeder GPC 450 eine SIMD(Einzelne-Anweisung, Mehrere-Daten)-Architektur, wobei jeder Thread in einer Gruppe von Threads (z.B. einem Warp) konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten. Alle Threads in der Gruppe von Threads führen die gleichen Anweisungen aus. In einer anderen Ausführungsform implementiert die Verarbeitungseinheit eine SIMT(Einzelne Anweisung, Mehrere Threads)-Architektur, wobei jeder Thread in einer Gruppe von Threads konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten, wobei jedoch einzelnen Threads in der Gruppe von Threads ermöglicht wird, während der Ausführung zu divergieren. In einer Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, was eine Nebenläufigkeit zwischen Warps und eine serielle Ausführung innerhalb Warps ermöglicht, wenn Threads innerhalb des Warp divergieren. In einer weiteren Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, was eine gleiche Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, welche die gleichen Anweisungen ausführen, konvergiert und für maximale Effizienz parallel ausgeführt werden.
  • Cooperative Groups ist ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads, das Entwicklern ermöglicht, die Granularität auszudrücken, bei der Threads kommunizieren, wobei der Ausdruck von reicheren, effizienten Parallelzerlegungen ermöglicht wird. Cooperative-Start-APIs unterstützen die Synchronisierung unter Thread-Blöcken für die Ausführung von parallelen Algorithmen. Herkömmliche Programmiermodelle stellen einen einzigen, einfachen Aufbau zum Synchronisieren von kooperierenden Threads bereit: eine Barriere über alle Threads eines Threadblocks (z.B. die Funktion syncthreads( )). Programmierer würden jedoch häufig gerne Gruppen von Threads bei kleineren als Thread-Block-Granularitäten definieren und innerhalb der definierten Gruppen synchronisieren, um größere Leistung, Gestaltungsflexibilität und Software-Wiederverwendung in der Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht Programmierern, Gruppen von Threads explizit bei Sub-Block(z.B. so klein wie ein einziger Thread)- und Mehr-Block-Granularitäten zu definieren und kollektive Operationen, wie beispielsweise Synchronisierung, an den Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen, so dass Bibliotheken und Hilfsfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz machen zu müssen. Cooperative-Groups-Primitiven ermöglichen neue Muster von kooperativer Parallelität, die Erzeuger-Verbraucher Parallelität, opportunistische Parallelität und globale Synchronisierung über ein gesamtes Gitter von Threadblöcken umfassen.
  • Jede Verarbeitungseinheit umfasst eine große Anzahl (z.B. 128, usw.) von unterschiedlichen Verarbeitungskernen, die eine vollständig in einer Pipeline angeordnete (fully-pipelined) Einfach-Präzisions- Verarbeitungseinheit umfassen, die eine Gleitkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit umfasst. In einer Ausführungsform implementieren die Gleitkommaarithmetik-Logikeinheiten den IEEE 754-3008 Standard für Gleitkommaarithmetik. In einer Ausführungsform umfassen die Kerne 64 Einfach-Präzisions-(32-Bit)-Gleitkommakerne, 64 Integer-Kerne, 32 Doppel-Präzisions-(64-Bit)-Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne sind konfiguriert, um Matrix-Operationen durchzuführen. Insbesondere sind die Tensorkerne konfiguriert, um Deep-Learning-Matrix-Arithmetik, wie beispielsweise Faltungsoperationen für neuronales Netzwerktraining und Inferenzieren, durchzuführen. In einer Ausführungsform arbeitet jeder Tensorkern an einer 4×4-Matrix und führt eine Matrix-Multiplikations- und Akkumulations-Operation D=A×B+C durch, wobei A, B, C und D 4×4 Matrizen sind.
  • In einer Ausführungsform sind die Matrix-Multiplikations-Eingaben A und 16-Bit-Gleitkomma-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkomma-Matrizen sein. Tensorkerne arbeiten an 16-Bit-Gleitkomma-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Gleitkomma-Multiplikation erfordert 64 Operationen und ergibt ein Produkt voller Präzision, das dann unter Verwendung einer 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die von diesen kleineren Elementen aufgebaut werden. Eine API, wie beispielsweise die CUDA 9 C++ API, stellt spezialisierte Matrix-Lade-, Matrix-Multiplikations- und Matrix-Akkumulations- und Matrix-SpeicherOperationen bereit, um Tensorkerne von einem CUDA-C++ Programm effizient zu verwenden. Auf der CUDA-Ebene nimmt das Warp-Schnittstellenniveau 16x16 große Matrizen an, die alle 32 Threads des Warp überspannen.
  • Jede Verarbeitungseinheit kann ebenfalls M Spezialfunktionseinheiten (Special Function Units; SFUs) umfassen, die Sonderfunktionen durchführen (z.B. Attributauswertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs eine Baumtraversierungseinheit umfassen, die konfiguriert ist, um eine hierarchische Baumdatenstruktur zu durchlaufen. In einer Ausführungsform können die SFUs eine Textureinheit umfassen, die konfiguriert ist, um Texturkarten-Filteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten konfiguriert, um Texturkarten (z.B. eine 2D-Anordnung von Texeln) von dem Speicher 404 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zum Gebrauch in Shader-Programmen zu erzeugen, die von der Verarbeitungseinheit ausgeführt werden. In einer Ausführungsform werden die Texturkarten in dem gemeinsam genutzten Speicher gespeichert, der einen L1-Cache-Speicher umfassen kann. Die Textureinheiten implementieren Texturoperationen, wie beispielsweise Filteroperationen, unter Verwendung von Mip-Maps (z.B. Texturkarten von veränderlichem Detaillierungsgrad). In einer Ausführungsform umfasst jeder Verarbeitungseinheit zwei Textureinheiten.
  • Jede Verarbeitungseinheit umfasst ebenfalls N Lade- und Speichereinheiten, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher und der Registerdatei implementieren. Jede Verarbeitungseinheit umfasst ein Zwischenverbindungs-Netzwerk, das jede der Kerne der Registerdatei und der LSU mit der Registerdatei, dem gemeinsam genutzten Speicher verbindet. In einer Ausführungsform ist das Zwischenverbindungs-Netzwerk eine Kreuzschiene, die konfiguriert sein kann, um irgendeinen der Kerne mit irgendeinem der Register in der Registerdatei zu verbinden und die LSUs mit der Registerdatei und Speicherorten in dem gemeinsam genutzten Speicher zu verbinden.
  • Der gemeinsam genutzte Speicher ist eine Anordnung eines On-Chip-Speichers, die Datenspeicherung und Kommunikation zwischen Verarbeitungseinheiten und zwischen Threads innerhalb einer Verarbeitungseinheit ermöglicht. In einer Ausführungsform umfasst der gemeinsam genutzte Speicher 128KB von Speicherkapazität und ist in dem Pfad von jeder Verarbeitungseinheit zu der Speicherpartitionseinheit 480. Der gemeinsam genutzte Speicher kann verwendet werden, um Lese- und Schreibvorgänge zwischenzuspeichern. Eines oder mehrere der gemeinsam genutzten Speicher, L2-Cache-Speicher und Speicher 404 sind Hintergrundspeicher.
  • Das Kombinieren eines Daten-Cache und der gemeinsam genutzten Speicherfunktionalität in einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Cache von Programmen benutzbar, die den gemeinsam genutzten Speicher nicht verwenden. Wenn der gemeinsam genutzte Speicher beispielsweise konfiguriert ist, die Hälfte der Kapazität zu verwenden, können Textur- und Lade/Speicher-Operationen die verbleibende Kapazität verwenden. Integration innerhalb des gemeinsam genutzten Speichers ermöglicht dem gemeinsam genutzten Speicher als eine Leitung mit hohem Durchsatz zum Streamen von Daten zu arbeiten, während gleichzeitig eine höhere Bandbreite und ein latenzarmer Zugriff auf häufig wiederverwendete Daten bereitgestellt werden.
  • Wenn für Allzweck-Parallelberechnung konfiguriert ist, kann im Vergleich mit der Graphikverarbeitung eine einfachere Konfiguration verwendet werden. Im Einzelnen werden Festfunktions-Graphikverarbeitungseinheiten umgangen, wobei ein viel einfacheres Programmiermodell erzeugt wird. In der Allzweck-Parallelberechnungs-Konfiguration werden Blöcke von Threads von der Arbeitsverteilungs-Einheit 425 direkt den Verarbeitungseinheiten innerhalb der GPCs 450 zugewiesen und verteilt. Die Threads führen das gleiche Programm unter Verwendung einer eindeutigen Thread-ID in der Berechnung, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, unter Verwendung der Verarbeitungseinheit(en), um das Programm auszuführen und Berechnungen durchzuführen, eines gemeinsam genutzten Speichers, um zwischen Threads zu kommunizieren, und der LSU aus, um globalen Speicher durch den gemeinsam genutzten Speicher und der Speicherpartitionseinheit 480 zu lesen und zu beschreiben. Wenn für Allzweck-Parallelberechnung konfiguriert ist, können die Verarbeitungseinheiten ebenfalls Befehle schreiben, welche die Planereinheit 420 verwenden kann, um neue Arbeit auf den Verarbeitungseinheiten zu starten.
  • Die PPUs 400 können jeweils umfassen und/oder können konfiguriert sein, um Funktionen eines oder mehrerer Verarbeitungskerne und/oder Komponenten davon auszuführen, wie beispielsweise Tensorkerne bzw. Tensor Cores (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs), Ray Tracing (RT) Cores, Vision Processing Units (VPUs), Graphics Processing Clusters (GPCs), Texture Processing Clusters (TPCs), Streaming Multiprocessors (SMs), Tree Traversal Units (TTUs), Artificial Intelligence Accelerators (AIAs), Deep Learning Accelerators (DLAs), Arithmetik-Logik-Einheiten (ALUs), anwendungsspezifische integrierte Schaltungen (ASICs), Gleitkomma-Einheiten (FPUs), Ein-/Ausgabe-Elemente (E/As), Peripheral Component Interconnect (PCI)- oder Peripheral Component Interconnect Express (PCIe)-Elemente und/oder dergleichen.
  • Die PPU 400 kann in einem Tischcomputer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z.B. einer drahtlosen handgehaltenen Vorrichtung), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einer handgehaltenen elektronischen Vorrichtung und dergleichen umfasst sein. In einer Ausführungsform ist die PPU 400 auf einem einzelnen Halbleitersubstrat verkörpert. In einer anderen Ausführungsform ist die PPU 400 in einem System-auf-Chip (SoC) zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs 400, dem Speicher 404, einem Rechner-mitreduziertem-Befehlssatz(RISC)-CPU, einer Speicherverwaltungseinheit (MMU), einem Digital/Analog-Wandler (DAC) und dergleichen umfasst.
  • In einer Ausführungsform kann die PPU 400 auf einer Graphikkarte umfasst sein, die eine oder mehrere Speichervorrichtungen 404 umfasst. Die Graphikkarte kann konfiguriert sein, um sich mit einem PCIe-Schlitz auf einer Hauptplatine eines Tischcomputers schnittstellenmäßig zu verbinden. In noch einer anderen Ausführungsform kann die PPU 400 eine integrierte Graphikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der in dem Chipsatz der Hauptplatine umfasst ist. In noch einer anderen Ausführungsform kann die PPU 400 in rekonfigurierbarer Hardware verwirklicht sein. In noch einer anderen Ausführungsform können Teile der PPU 400 in rekonfigurierbarer Hardware verwirklicht sein.
  • Beispielhafte Netzwerkumgebungen
  • Netzwerkumgebungen, die für die Implementierung von Ausführungsformen der Offenbarung geeignet sind, können ein oder mehrere Client-Vorrichtungen, Server, Network Attached Storage (NAS), andere Backend-Vorrichtungen und/oder andere Vorrichtungstypen umfassen. Die Client-Vorrichtungen, Server und/oder andere Vorrichtungstypen (z.B. jede Vorrichtung) können auf einer oder mehreren Instanzen der Recheneinrichtung(en) 500 von 5A und/oder des beispielhaften Systems 565 von 5B implementiert sein - z.B. kann jede Vorrichtung ähnliche Komponenten, Merkmale und/oder Funktionalität des Rechensystems 500 und/oder des beispielhaften Systems 565 umfassen. Komponenten einer Netzwerkumgebung können miteinander über ein oder mehrere Netzwerke kommunizieren, die drahtgebunden, drahtlos oder beides sein können. Das Netzwerk kann mehrere Netzwerke oder ein Netzwerk von Netzwerken aufweisen. Beispielsweise kann das Netzwerk ein oder mehrere Weitbereichsnetzwerke (Wide Area Networks; WANs), ein oder mehrere Lokalbereichsnetzwerke (Local Area Networks; LANs), ein oder mehrere öffentliche Netzwerke, wie das Internet und/oder ein öffentliches Telefonwählnetz (PSTN) und/oder ein oder mehrere private Netzwerke umfassen. Wo das Netzwerk ein drahtloses Telekommunikationsnetzwerk aufweist, können Komponenten wie eine Basisstation, ein Kommunikationsturm oder sogar Zugangspunkte (sowie auch andere Komponenten) eine drahtlose Konnektivität bereitstellen.
  • Kompatible Netzwerkumgebungen können eine oder mehrere Peer-to-Peer-Netzwerkumgebungen - in diesem Fall darf ein Server nicht in eine Netzwerkumgebung eingebunden sein - und eine oder mehrere Client-Server-Netzwerkumgebungen aufweisen - in diesem Fall können ein oder mehrere Server in eine Netzwerkumgebung eingebunden sein. Bei Peer-to-Peer-Netzwerkumgebungen kann die hier beschriebene Funktionalität in Bezug auf einen oder mehrere Server auf einer beliebigen Anzahl von Client-Vorrichtungen implementiert sein.
  • In mindestens einer Ausführungsform kann eine Netzwerkumgebung eine oder mehrere Cloud-basierte Netzwerkumgebungen, eine verteilte Computerumgebung, eine Kombination davon usw. umfassen. Eine Cloud-basierte Netzwerkumgebung kann eine Framework-Schicht, einen Job-Scheduler, einen Ressourcenmanager und ein verteiltes Dateisystem aufweisen, das auf einem oder mehreren Servern implementiert ist, die einen oder mehrere Core-Netzwerk-Server und/oder Edge-Server umfassen können. Eine Framework-Schicht kann ein Framework zur Unterstützung der Software einer Softwareschicht und/oder einer oder mehrerer Anwendungen) einer Anwendungsschicht aufweisen. Die Software oder die Anwendung(en) können jeweils webbasierte Service-Software oder -Anwendungen aufweisen. In Ausführungsformen kann/können eines oder mehrere der Client-Vorrichtungen die webbasierte Dienstsoftware oder Anwendungen verwenden (z.B. durch Zugriff auf die Dienstsoftware und/oder Anwendungen über eine oder mehrere Anwendungsprogrammierschnittstellen (APIs)). Die Framework-Schicht kann eine Art freies und quelloffenes Software-Framework für Webanwendungen sein, das z.B. ein verteiltes Dateisystem für die Verarbeitung großer Datenmengen (z.B. „Big Data“) verwenden kann, ist aber nicht darauf beschränkt.
  • Eine Cloud-basierte Netzwerkumgebung kann Cloud-Computing und/oder Cloud-Speicherung bereitstellen, die eine beliebige Kombination der hier beschriebenen Rechen- und/oder Datenspeicherfunktionen (oder einen oder mehrere Teile davon) ausführt. Jede dieser verschiedenen Funktionen kann über mehrere Standorte von zentralen oder Core-Servern aus verteilt sein (z.B. von einem oder mehreren Rechenzentren, die über einen Staat, eine Region, ein Land, den Globus usw. verteilt sein können). Wenn sich eine Verbindung zu einem Benutzer (z.B. eine Client-Vorrichtung) relativ nahe bei einem oder mehreren Edge-Servern befindet, kann/können ein Core-Server zumindest einen Teil der Funktionalität dem/den Edge-Server(n) zuweisen. Eine Cloud-basierte Netzwerkumgebung kann privat (z.B. auf eine einzelne Organisation beschränkt), öffentlich (z.B. für viele Organisationen verfügbar) und/oder eine Kombination davon (z.B. eine hybride Cloud-Umgebung) sein.
  • Das (die) Client-Vorrichtung(en) kann (können) zumindest einige der Komponenten, Merkmale und Funktionalität des beispielhaften Verarbeitungssystems 500 von 5B und/oder des beispielhaften Systems 565 von 5C aufweisen. Als Beispiel und nicht als Einschränkung kann eine Client-Vorrichtung ausgestaltet sein als ein Personal Computer (PC), ein Laptop-Computer, eine mobile Vorrichtung, ein Smartphone, ein Tablet-Computer, eine Smart-Uhr, ein tragbarer Computer, ein Personal Digital Assistant (PDA), ein MP3-Player, ein Virtual-Reality-Headset, ein Global Positioning System (GPS) oder -Vorrichtung, ein Video-Player, eine Videokamera, eine Überwachungsvorrichtung oder -system, ein Fahrzeug, ein Boot, ein fliegendes Schiff, eine virtuelle Maschine, eine Drohne, ein Roboter, eine tragbares Kommunikationsvorrichtung, ein Krankenhaus, eine Spielvorrichtung oder -system, ein Unterhaltungssystem, ein Fahrzeug-Computersystem, eine Steuervorrichtung für ein eingebettetes System, eine Fernbedienung, eine Vorrichtung, eine Vorrichtung der Unterhaltungselektronik, eine Workstation, eine Edge-Vorrichtung, eine beliebige Kombination dieser abgegrenzten Vorrichtungen oder eine andere geeignete Vorrichtung.
  • Maschinenlernen
  • Tiefe neuronale Netzwerke (DNNs), die auf Prozessoren entwickelt wurden, wie beispielsweise der PPU 400, wurden für diverse Verwendungsfälle, von selbstfahrenden Wagen bis schnellerer Wirkstoffentwicklung, von automatischer Bildbeschriftung in Online-Bilddatenbanken bis smarter Echtzeit-Sprachenübersetzung in Video-Chat-Anwendungen verwendet. Deep-Learning ist eine Technik, welche die neuronalen Lernverfahren des menschlichen Gehirns modelliert, die kontinuierlich lernt, kontinuierlich immer smarter wird und genauere Ergebnisse mit der Zeit schneller liefert. Ein Kind wird anfangs von einem Erwachsenen unterrichtet, verschiedene Formen korrekt zu identifizieren und zu klassifizieren, um schließlich imstande zu sein, Formen ohne irgendeine Nachhilfe zu identifizieren. Auf ähnliche Weise muss ein Tiefen-Learning-System oder ein neuronales Lernsystem in Objekterkennung und Klassifizierung trainiert werden, damit es smarter und effizienter beim Identifizieren von Grundobjekten, verdeckten Objekte usw. wird, während ebenfalls Objekten Kontext zugewiesen wird. Beispielsweise wird ein neuronales Lernsystem zur Orientierungspunkt-Lokalisierung und/oder Attributklassifizierung trainiert
  • Auf der einfachsten Ebene schauen Neuronen im menschlichen Gehirn auf verschiedene Eingaben, die empfangen werden, wobei Wichtigkeitsgrade jeder dieser Eingaben zugewiesen werden und eine Ausgabe an andere Neuronen weitergeleitet wird, um auf diese zu wirken. Ein künstliches Neuron oder ein Perzeptron ist das grundlegendste Modell eines neuronale Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts darstellen, die das Perzeptron trainiert wird, zu erkennen und zu klassifizieren, und jedem dieser Merkmale wird ein bestimmtes Gewicht basierend auf der Wichtigkeit des Merkmals beim Definieren der Gestalt eines Objekts zugewiesen.
  • Ein Modell eines tiefen neuronale Netzwerks (DNN) umfasst mehrere Schichten von vielen verbundenen Knoten (z.B. Perzeptronen, Boltzmann-Maschinen, radiale Basisfunktionen, Faltungsschichten usw.), die mit enormen Mengen an Eingabedaten trainiert werden können, um komplexe Probleme mit hoher Genauigkeit schnell zu lösen. In einem Beispiel gliedert eine erste Schicht des DNN-Modells ein Eingabebild eines Automobils in verschiedene Abschnitte auf und sucht nach Grundmustern, wie beispielsweise Linien und Winkel. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene, wie beispielsweise Rädern, Windschutzscheiben und Spiegeln, zu suchen. Die nächste Schicht kennzeichnet den Typ des Fahrzeugs und die letzten paar Schichten erzeugen ein Etikett für das Eingabebild, welches das Modell einer speziellen Automobilmarke kennzeichnet.
  • Sobald das DNN trainiert ist, kann das DNN eingesetzt und verwendet werden, um Objekte oder Muster in einem als Inferenz bekannten Verfahren zu identifizieren und zu klassifizieren. Beispiele von Inferenz (der Prozess, durch den ein DNN nützliche Information von einer gegebenen Eingabe extrahiert) umfassen ein Identifizieren handgeschriebener Zahlen auf Schecks, die in Geldausgabe-Maschinen eingezahlt werden, ein Identifizieren von Bildern von Freunden in Photos, Liefern von Filmempfehlungen an über fünfzig Millionen Nutzer, Identifizieren und Klassifizieren unterschiedlicher Typen von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Wagen oder Übersetzen von menschlicher Sprache in Echtzeit.
  • Während des Trainings strömen Daten durch das DNN in einer Vorwärtspropagierungsphase, bis eine Vorhersage erzeugt wird, die ein Etikett angibt, das der Eingabe entspricht. Wenn das neuronale Netzwerk die Eingabe nicht korrekt kennzeichnet, dann werden Fehler zwischen dem korrekten Etikett und dem vorhergesagten Etikett analysiert und die Gewichte werden für jedes Merkmal während einer Rückwärtspropagierungsphase eingestellt, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netzwerke erfordert enorme Mengen an paralleler Rechenleistung, die Gleitkomma-Multiplikationen und Gleitkomma-Additionen umfassen, die von der PPU 400 unterstützt werden. Inferenzieren ist weniger rechenintensiv als Training, das ein Latenz-empfindliches Verfahren ist, wo ein trainiertes neuronale Netzwerk auf neue Eingaben angewandt wird, die es zuvor nicht gesehen hat, um Bilder zu klassifizieren, Emotionen zu erfassen, Empfehlungen zu identifizieren, Sprache zu erkennen und zu übersetzen, und im Allgemeinen neue Informationen abzuleiten.
  • Neuronale Netzwerke stützen sich sehr auf Matrixrechenoperationen und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitkomma-Leistung und Bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von Verarbeitungskernen, die für Matrixrechenoperationen optimiert sind und einige zehn bis hunderte von TFLOPS von Leistung liefern, ist die PPU 400 eine Rechenplattform, die imstande ist, Leistung zu liefern, die für tiefe neuronale Netzwerk-basierte künstliche Intelligenz und Maschinenlernanwendungen erforderlich ist.
  • Des Weiteren können Bilder, die unter Anwendung einer oder mehrerer der hier offenbarten Techniken erzeugt wurden, zum Trainieren, Prüfen oder Zertifizieren von DNNs verwendet werden, die zur Erkennung von Objekten und Umgebungen in der realen Welt eingesetzt werden. Derartige Bilder können Szenen von Straßen, Fabriken, Gebäuden, städtischen Szenarien, ländlichen Szenarien, Menschen, Tieren und anderen physischen Objekten oder realen Umgebungen enthalten. Derartige Bilder können verwendet werden, um in Maschinen oder Robotern eingesetzte DNNs zu trainieren, zu prüfen oder zu zertifizieren, um physische Objekte in der realen Welt zu manipulieren, zu bearbeiten oder zu verändern. Außerdem können derartige Bilder verwendet werden, um in autonomen Fahrzeugen eingesetzte DNNs zu trainieren, zu prüfen oder zu zertifizieren, damit sie die Fahrzeuge durch die reale Welt navigieren und bewegen. Darüber hinaus können Bilder, die unter Anwendung einer oder mehrerer der hier offenbarten Techniken erzeugt wurden, verwendet werden, um den Benutzern derartiger Maschinen, Robotern und Fahrzeugen Informationen zu vermitteln.
  • 5C veranschaulicht Komponenten eines beispielhaften Systems 555, das verwendet werden kann, um maschinelles Lernen zu trainieren und zu nutzen, gemäß mindestens einer Ausführungsform. Wie erläutert wird, können verschiedene Komponenten durch verschiedene Kombinationen von Rechenvorrichtungen und Ressourcen oder ein einzelnes Rechensystem bereitgestellt werden, das von einer einzelnen Einheit oder mehreren Einheiten gesteuert werden kann. Außerdem können Aspekte durch unterschiedliche Einheiten ausgelöst, initiiert oder angefordert werden. In mindestens einer Ausführungsform könnte das Training eines neuronalen Netzwerks durch einen Anbieter, der einer Anbieterumgebung 506 zugeordnet ist, angewiesen werden, während in mindestens einer Ausführungsform das Training durch einen Kunden oder einen anderen Benutzer angefordert werden könnte, der über eine Client-Vorrichtung 502 oder eine andere derartige Ressource Zugriff auf eine Anbieterumgebung hat. In mindestens einer Ausführungsform können Trainingsdaten (oder durch ein trainiertes neuronales Netzwerk zu analysierende Daten) durch einen Anbieter, einen Benutzer oder einen Drittanbieter 524 von Inhalten bereitgestellt werden. In mindestens einer Ausführungsform kann die Client-Vorrichtung 502 ein Fahrzeug oder Objekt sein, das zum Beispiel stellvertretend für einen Benutzer zu navigieren ist, das Anfragen übermitteln und/oder Anweisungen empfangen kann, welche die Navigation einer Vorrichtung unterstützen.
  • In mindestens einer Ausführungsform können Anfragen über mindestens ein Netzwerk 504 übermittelt werden, um durch eine Anbieterumgebung 506 empfangen zu werden. In mindestens einer Ausführungsform kann eine Client-Vorrichtung eine beliebige geeignete elektronische und/oder Rechenvorrichtung sein, die es einem Benutzer ermöglicht, derartige Anfragen zu erzeugen und zu senden, wie beispielsweise unter anderem Desktop-Computer, Notebook-Computer, Computerserver, Smartphones, Tablet-Computer, Spielkonsolen (tragbar oder anderweitig), Computerprozessoren, Rechenlogik und Set-Top-Boxen. Das/die Netzwerk(e) 504 kann/können ein beliebiges geeignetes Netzwerk zum Übertragen einer Anfrage oder anderer derartiger Daten umfassen, wie Internet, ein Intranet, ein Ethernet, ein Mobilfunknetzwerk, ein Lokalbereichsnetzwerk (LAN), ein Weitbereichsnetzwerk (WAN), ein persönliches Netzwerk (PAN), ein Ad-hoc-Netzwerk mit direkten drahtlosen Verbindungen zwischen Peers und so weiter.
  • In mindestens einer Ausführungsform können Anfragen an einer Schnittstellenschicht 508 empfangen werden, die in diesem Beispiel Daten an einen Trainings- und Inferenzmanager 532 weiterleiten kann. Der Trainings- und Inferenzmanager 532 kann ein System oder ein Dienst sein, der Hardware und Software zum Verwalten von Anfragen und Bedienen entsprechender Daten oder Inhalte beinhaltet; in mindestens einer Ausführungsform kann der Trainings- und Inferenzmanager 532 eine Anfrage zum Trainieren eines neuronalen Netzwerks empfangen und kann Daten für eine Anfrage an ein Trainingsmodul 512 bereitstellen. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein geeignetes Modell oder neuronales Netzwerk auswählen, das verwendet werden soll, wenn es nicht durch die Anfrage spezifiziert ist, und kann ein Modell unter Verwendung relevanter Trainingsdaten trainieren. In mindestens einer Ausführungsform können Trainingsdaten ein Batch von Daten sein, die in einem Trainingsdaten-Repositorium 514 gespeichert sind, von der Client-Vorrichtung 502 empfangen oder von einem Drittanbieter 524 erhalten werden. In mindestens einer Ausführungsform kann das Trainingsmodul 512 für Trainingsdaten verantwortlich sein. Ein neuronales Netzwerk kann ein beliebiges geeignetes Netzwerk sein, wie beispielsweise ein rekurrentes neuronales Netzwerk (recurrent neural network; RNN) oder ein neuronales Faltungsnetzwerk (convolutional neural network; CNN). Sobald ein neuronales Netzwerk trainiert und erfolgreich bewertet wurde, kann ein trainiertes neuronales Netzwerk beispielsweise in einem Modell-Repositorium 516 gespeichert werden, das unterschiedliche Modelle oder Netzwerke für Benutzer, Anwendungen oder Dienste usw. speichern kann. In mindestens einer Ausführungsform können mehrere Modelle für eine einzelne Anwendung oder Einheit vorhanden sein, die basierend auf einer Reihe unterschiedlicher Faktoren genutzt werden können.
  • In mindestens einer Ausführungsform kann zu einem späteren Zeitpunkt eine Anfrage von der Client-Vorrichtung 502 (oder einer anderen derartigen Vorrichtung) nach Inhalten (z.B. Pfadbestimmungen) oder Daten empfangen werden, die mindestens teilweise durch ein trainiertes neuronales Netzwerk bestimmt oder beeinflusst werden. Diese Anfrage kann zum Beispiel Eingabedaten umfassen, die unter Verwendung eines neuronalen Netzwerks verarbeitet werden sollen, um eine oder mehrere Inferenzen oder andere Ausgabewerte, Klassifikationen oder Vorhersagen zu erhalten; oder für mindestens eine Ausführungsform können Eingabedaten durch die Schnittstellenschicht 508 empfangen und an das Inferenzmodul 518 geleitet werden, obwohl ebenfalls ein anderes System oder ein anderer Dienst verwendet werden kann. In mindestens einer Ausführungsform kann das Inferenzmodul 518 ein geeignetes trainiertes Netzwerk, wie beispielsweise ein trainiertes tiefes neuronales Netzwerk (DNN), wie hier erläutert, aus dem Modell-Repositorium 516 erhalten, wenn es nicht bereits lokal in dem Inferenzmodul 518 gespeichert ist. Das Inferenzmodul 518 kann Daten als Eingabe in ein trainiertes Netzwerk bereitstellen, das dann als Ausgabe eine oder mehrere Inferenzen erzeugen kann. Dies kann beispielsweise eine Klassifikation einer Instanz von Eingabedaten umfassen. In mindestens einer Ausführungsform können Inferenzen dann an die Client-Vorrichtung 502 zur Anzeige für einen Benutzer oder zu anderer Kommunikation mit ihm übertragen werden. In mindestens einer Ausführungsform können Kontextdaten für einen Benutzer ebenfalls in einem Benutzerkontextdaten-Repositorium 522 gespeichert sein, das Daten über einen Benutzer umfassen kann, die als Eingabe in ein Netzwerk beim Erzeugen von Inferenzen oder Bestimmen von Daten zur Rückgabe an einen Benutzer nach dem Erhalten von Instanzen nützlich sein können. In mindestens einer Ausführungsform können relevante Daten, die mindestens einige der Eingabe- oder Inferenzdaten umfassen können, ebenfalls in einer lokalen Datenbank 534 zum Verarbeiten zukünftiger Anfragen gespeichert sein. In mindestens einer Ausführungsform kann ein Benutzer Kontoinformationen oder andere Informationen verwenden, um auf Ressourcen oder Funktionalität einer Anbieterumgebung zuzugreifen. In mindestens einer Ausführungsform können, falls zulässig und verfügbar, Benutzerdaten ebenfalls gesammelt und verwendet werden, um Modelle weiter zu trainieren, um genauere Inferenzen für zukünftige Anfragen bereitzustellen. In mindestens einer Ausführungsform können Anfragen über eine Benutzerschnittstelle an einer auf der Client-Vorrichtung 502 ausgeführten Anwendung 526 für maschinelles Lernen empfangen und Ergebnisse über dieselbe Schnittstelle angezeigt werden. Eine Client-Vorrichtung kann Ressourcen wie einen Prozessor 528 und einen Speicher 562 zum Erzeugen einer Anfrage und zum Verarbeiten von Ergebnissen oder einer Antwort sowie mindestens ein Datenspeicherelement 552 zum Speichern von Daten für die Anwendung 526 für maschinelles Lernen umfassen.
  • In mindestens einer Ausführungsform ist ein Prozessor 528 (oder ein Prozessor des Trainingsmoduls 512 oder des Inferenzmoduls 518) eine zentrale Verarbeitungseinheit (CPU). Wie erwähnt, können Ressourcen in derartigen Umgebungen jedoch GPUs nutzen, um Daten für mindestens bestimmte Arten von Anfragen zu verarbeiten. Mit Tausenden von Kernen sind GPUs, wie beispielsweise die PPU 300, ausgestaltet, um erhebliche parallele Arbeitslasten zu bewältigen, und sind daher beim tiefen Lernen zum Trainieren neuronaler Netzwerke und zum Erzeugen von Vorhersagen weit verbreitet. Während die Verwendung von GPUs für Offline-Builds ein schnelleres Training größerer und komplexerer Modelle ermöglicht hat, impliziert das Erzeugen von Vorhersagen offline, dass entweder Eingabemerkmale zur Anfragezeit nicht verwendet werden können oder Vorhersagen für alle Permutationen von Merkmalen erzeugt und in einer Lookup-Tabelle gespeichert sein müssen, um Echtzeit-Anfragen zu bedienen. Wenn ein Deep-Learning-Framework einen CPU-Modus unterstützt und ein Modell klein und einfach genug ist, um einen Feed-Forward auf einer CPU mit einer angemessenen Latenz durchzuführen, könnte ein Dienst auf einer CPU-Instanz ein Modell hosten. In diesem Fall kann das Training offline auf einer GPU und die Inferenz in Echtzeit auf einer CPU vorgenommen werden. Wenn ein CPU-Vorgehensweise nicht praktikabel ist, dann kann ein Dienst auf einer GPU-Instanz ausgeführt werden. Da GPUs jedoch andere Leistungs- und Kosteneigenschaften als CPUs aufweisen, kann das Ausführen eines Dienstes, der einen Laufzeitalgorithmus auf eine GPU auslagert, jedoch erfordern, dass dieser anders als ein CPU-basierter Dienst ausgestaltet ist.
  • In mindestens einer Ausführungsform können Videodaten von der Client-Vorrichtung 502 zur Verbesserung in der Anbieterumgebung 506 bereitgestellt werden. In mindestens einer Ausführungsform können Videodaten zur Verbesserung auf der Client-Vorrichtung 502 verarbeitet werden. In mindestens einer Ausführungsform können Videodaten von einem Drittanbieter 524 für Inhalte gestreamt und durch den Drittanbieter 524 für Inhalte, die Anbieterumgebung 506 oder die Client-Vorrichtung 502 verbessert werden. In mindestens einer Ausführungsform können Videodaten von der Client-Vorrichtung 502 zur Verwendung als Trainingsdaten in der Anbieterumgebung 506 bereitgestellt werden.
  • In mindestens einer Ausführungsform kann überwachtes und/oder unüberwachtes Training durch die Client-Vorrichtung 502 und/oder die Anbieterumgebung 506 durchgeführt werden. In mindestens einer Ausführungsform wird ein Satz von Trainingsdaten 514 (z.B. klassifizierte oder bezeichnete Daten) als Eingabe bereitgestellt, um als Trainingsdaten zu fungieren. In einer Ausführungsform kann der Satz von Trainingsdaten verwendet werden, um den Analysedienst 120 und/oder den Erfassungsdatengenerator 110 zu trainieren.
  • In mindestens einer Ausführungsform können Trainingsdaten Instanzen mindestens eines Objekttyps umfassen, für den ein neuronales Netzwerk trainiert werden soll, sowie Informationen, die diesen Objekttyp identifizieren. In mindestens einer Ausführungsform können die Trainingsdaten einen Satz von Bildern umfassen, die jeweils eine Darstellung eines Objekttyps umfassen, wobei jedes Bild außerdem eine Bezeichnung, Metadaten, eine Klassifikation oder ein anderes Informationselement beinhaltet, die einen Objekttyp identifizieren, der in einem jeweiligen Bild dargestellt ist oder diesen zugeordnet ist. Als Trainingsdaten können ebenfalls verschiedene andere Arten von Daten verwendet werden, die Textdaten, Audiodaten, Videodaten usw. umfassen können. In mindestens einer Ausführungsform werden Trainingsdaten 514 als Trainingseingabe in ein Trainingsmodul 512 bereitgestellt. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein System oder ein Dienst sein, das bzw. der Hardware und Software beinhaltet, wie beispielsweise eine oder mehrere Rechenvorrichtungen, die eine Trainingsanwendung ausführen, um ein neuronales Netzwerk (oder ein anderes Modell oder einen anderen Algorithmus usw.) zu trainieren. In mindestens einer Ausführungsform empfängt das Trainingsmodul 512 eine Anweisung oder Anfrage, die einen zum Training zu verwendenden Modelltyp angibt, in mindestens einer Ausführungsform kann ein Modell ein beliebiges geeignetes statistisches Modell, ein geeignetes Netzwerk oder ein geeigneter Algorithmus sein, die für derartige Zwecke nützlich sind, die ein künstliches neuronales Netzwerk, einen Deep-Learning-Algorithmus, einen lernenden Klassifikator, ein Bayes-Netzwerk usw. umfassen können. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein Anfangsmodell oder ein anderes nicht trainiertes Modell aus einem geeigneten Repositorium 516 auswählen und Trainingsdaten 514 nutzen, um ein Modell zu trainieren, um dadurch ein trainiertes Modell (z.B. trainiertes tiefes neuronales Netzwerk) zu erzeugen, das verwendet werden kann, um ähnliche Datentypen zu klassifizieren oder andere derartige Inferenzen zu erzeugen. In mindestens einer Ausführungsform, bei der keine Trainingsdaten verwendet werden, kann dennoch ein geeignetes Anfangsmodell für das Training an Eingabedaten pro Trainingsmodul 512 ausgewählt werden.
  • In mindestens einer Ausführungsform kann ein Modell auf viele unterschiedliche Weisen trainiert werden, was teilweise von einem ausgewählten Modelltyp abhängen kann. In mindestens einer Ausführungsform kann einem Algorithmus für maschinelles Lernen ein Satz von Trainingsdaten bereitgestellt werden, wobei ein Modell ein Modellartefakt ist, das durch einen Trainingsprozess erzeugt wird. In mindestens einer Ausführungsform enthält jede Instanz von Trainingsdaten eine richtige Antwort (z.B. eine Klassifizierung), die als Ziel oder Zielattribut bezeichnet werden kann. In mindestens einer Ausführungsform findet ein Lernalgorithmus Muster in Trainingsdaten, die Eingabedatenattribute auf ein Ziel abbilden, eine vorherzusagende Antwort, und ein Modell für maschinelles Lernen, das diese Muster erfasst, wird ausgegeben. In mindestens einer Ausführungsform kann dann ein Modell für maschinelles Lernen verwendet werden, um Vorhersagen über neue Daten zu erhalten, für die kein Ziel festgelegt ist.
  • In mindestens einer Ausführungsform kann der Trainings- und Inferenzmanager 532 aus einem Satz von Modellen für maschinelles Lernen auswählen, die binäre Klassifikation, Mehrklassenklassifikation, generative und Regressionsmodellen umfassen. In mindestens einer Ausführungsform kann ein zu verwendender Modelltyp mindestens teilweise von einem vorherzusagenden Zieltyp abhängen.
  • Bilder und/oder Annotationen, die durch Anwenden einer oder mehrerer der hier offenbarten Techniken erzeugt werden, können auf einem Monitor oder einer anderen Anzeigevorrichtung angezeigt werden. In einigen Ausführungsformen kann die Anzeigevorrichtung direkt mit dem System oder Prozessor gekoppelt sein, welches/welcher die Bilder erzeugt oder rendert. In anderen Ausführungsformen kann die Anzeigevorrichtung indirekt mit dem System oder Prozessor, wie beispielsweise über ein Netzwerk, gekoppelt sein. Beispiele von derartigen Netzwerken umfassen das Internet, mobile Telekommunikations-Netzwerke, ein WIFI-Netzwerk, sowie auch jedes beliebige andere verdrahtete und/oder drahtlose Netzwerksystem. Wenn die Anzeigevorrichtung indirekt gekoppelt ist, können die Bilder, die durch das System oder den Prozessor erzeugt werden, über das Netzwerk zu der Anzeigevorrichtung gestreamt werden. Ein derartiges Streaming ermöglicht beispielsweise Videospielen oder anderen Anwendungen, die Bilder rendern, auf einem Server, in einem Rechenzentrum oder einer Cloud-basierten Rechenumgebung ausgeführt zu werden, und den gerenderten Bildern übertragen und auf einer oder mehreren Benutzervorrichtungen (wie beispielsweise einem Computer, Videospielkonsole, Smartphone, anderen mobilen Vorrichtung usw.) angezeigt zu werden, die von dem Server oder Rechenzentrum physisch getrennt sind. Folglich können die hier offenbarten Techniken angewendet werden, um die Bilder zu verbessern, die gestreamt werden, und Dienste zu verbessern, die Bilder streamen, wie beispielsweise NVIDIA GeForce Now (GFN), Google Stadia und dergleichen.
  • Es sei bemerkt, dass die hier beschriebenen Techniken in ausführbaren Anweisungen verkörpert sein können, die in einem computerlesbaren Medium gespeichert sind, zur Verwendung durch oder in Verbindung mit einer prozessorbasierten Anweisungsausführungsmaschine, einem System, einem Gerät oder einer Vorrichtung. Der Fachmann wird erkennen, dass bei einigen Ausführungsformen verschiedene Arten von computerlesbaren Medien zum Speichern von Daten beinhaltet sein können. Im hier verwendeten Sinne beinhaltet ein „computerlesbares Medium“ ein oder mehrere beliebige geeignete Medien zum Speichern der ausführbaren Anweisungen eines Computerprogramms, sodass die Anweisungsausführungsmaschine, das System, das Gerät oder die Vorrichtung die Anweisungen aus dem computerlesbaren Medium lesen (oder abrufen) kann und die Anweisungen zum Ausführen der beschriebenen Ausführungsformen ausführen kann. Geeignete Speicherformate beinhalten ein oder mehrere elektronische, magnetische, optische und elektromagnetische Formate. Eine nicht erschöpfende Liste herkömmlicher beispielhafter computerlesbarer Medien beinhaltet: eine tragbare Computerdiskette; einen Direktzugriffsspeicher (RAM); einen Festwertspeicher (ROM); einen löschbaren programmierbaren Festwertspeicher (EPROM); eine Flash-Speichervorrichtung; und optische Speichervorrichtungen, einschließlich einer tragbaren Compact Disc (CD), einer tragbaren digitalen Video Disc (DVD) und dergleichen.
  • Es sei zu verstehen, dass die Anordnung der der in den beigefügten Figuren veranschaulichten Komponenten für veranschaulichte Zwecke ist und dass andere Anordnungen möglich sind. Beispielsweise können eines oder mehrere der hier beschriebenen Elemente ganz oder teilweise als elektronische Hardwarekomponente realisiert werden. Andere Elemente können in Software, Hardware oder einer Kombination aus Software und Hardware implementiert sein. Darüber hinaus können einige oder alle dieser anderen Elemente kombiniert werden, einige können ganz weggelassen werden und zusätzliche Komponenten können hinzugefügt werden, während immer noch die hier beschriebene Funktionalität erreicht wird. Somit kann der hier beschriebene Gegenstand in vielen verschiedenen Variationen verkörpert sein, und alle diese Variationen sind angedacht, innerhalb des Umfangs der Ansprüche zu sein.
  • Um ein Verständnis des hier beschriebenen Gegenstands zu erleichtern, werden viele Aspekte in Form von Handlungssequenzen beschrieben. Der Fachmann wird erkennen, dass die verschiedenen Handlungen durch spezialisierte Schaltkreise oder Schaltungen, durch Programmanweisungen, die durch einen oder mehrere Prozessoren ausgeführt werden, oder durch eine Kombination von beiden durchgeführt werden können. Die Beschreibung einer beliebigen Handlungssequenz hier soll nicht implizieren, dass die spezielle Reihenfolge, die zum Durchführen dieser Sequenz beschrieben ist, befolgt werden muss. Alle hier beschriebene Verfahren können in einer beliebigen geeigneten Reihenfolge durchgeführt werden, sofern es hier nicht anders angegeben ist oder der Kontext dem anderweitig eindeutig widerspricht.
  • Die Verwendung der Begriffe „ein“, „einer“, „eine“ und „eines“ und „der/die/das“ und ähnlicher Bezüge im Kontext der Beschreibung des Gegenstands (insbesondere im Kontext der folgenden Patentansprüche) ist so auszulegen, dass sie sowohl den Singular als auch den Plural abdeckt, sofern es hier nicht anders angegeben ist oder der Kontext dem eindeutig widerspricht. Die Verwendung des Begriffs „mindestens eine/r/s“ gefolgt von einer Liste mit einem oder mehreren Elementen (z. B. „mindestens eine/r/s von A und B“) ist so auszulegen, dass sie einen aus den aufgeführten Elementen (A oder B) oder eine beliebige Kombination von zwei oder mehr der aufgeführten Punkte (A und B) bedeutet, sofern es hier nicht anders angegeben ist oder der Kontext dem eindeutig widerspricht. Darüber hinaus dient die vorstehende Beschreibung lediglich dem Zweck der Veranschaulichung und nicht dem Zweck der Einschränkung, da der angestrebte Schutzumfang durch die Patentansprüche, zusammen mit jeglichen Äquivalenten davon, definiert wird, wie sie im Folgenden dargelegt werden. Die Verwendung jeglicher Beispiele oder beispielhafter Wortwahl (z. B. „wie beispielsweise“), die hier bereitgestellt sind, ist nur lediglich dazu gedacht, den Gegenstand besser zu veranschaulichen, und stellt keine Einschränkung des Umfangs des Gegenstands dar, es sei denn, es ist etwas anderes beansprucht. Die Verwendung des Begriffs „basierend auf“ und andere ähnlicher Formulierungen, die eine Bedingung zur Herbeiführung eines Ergebnisses angeben, sowohl in den Patentansprüchen als auch in der schriftlichen Beschreibung, ist nicht bestimmt, irgendwelche anderen Bedingungen ausschließen, die dieses Ergebnis bewirken. Keinerlei Formulierung in der Beschreibung sollte so ausgelegt werden, dass sie ein beliebiges nichtbeanspruchtes Element als für die praktische Umsetzung der Erfindung wesentlich angibt.

Claims (21)

  1. Computerimplementiertes Verfahren, umfassend: Verarbeiten, an einer Edge-Vorrichtung, eines von einem Sensor erfassten Daten-Streams, um Erfassungsdaten zu erzeugen, die mindestens einem Zeitsegment in dem Daten-Stream entsprechen; Übertragen der Erfassungsdaten an eine entfernte Vorrichtung; Empfangen, durch die Edge-Vorrichtung, eines Triggers, der durch die entfernte Vorrichtung erzeugt wird, der ein Ereignis identifiziert; als Antwort auf den Trigger, Extrahieren eines Clips, der mindestens einen Abschnitt des Daten-Streams umfasst, durch die Edge-Vorrichtung; und Speichern des Clips in einer persistenten Speicherung.
  2. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei der Daten-Stream ein Video-Stream ist und die Erfassungsdaten einem Objekt entsprechen, das in dem Daten-Stream sichtbar ist.
  3. Computerimplementiertes Verfahren gemäß Anspruch 1 oder 2, wobei der Daten-Stream ein Audio-Stream ist und die Erfassungsdaten einem Geräusch entsprechen, das in dem Daten-Stream hörbar ist.
  4. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei der Sensor mindestens eines einer Kamera oder eines Mikrophons umfasst.
  5. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei der Sensor einen oder mehrere eines Light Detection and Ranging (LIDAR)-Sensors, Infrarot (IR)-Sensors, Radio Detection and Ranging (RADAR)-Sensors, Wettersensors oder Geschwindigkeitssensors umfasst.
  6. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei der Trigger einen Zeitstempel innerhalb des Daten-Streams und eine Dauer des Clips spezifiziert.
  7. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, ferner umfassend das Speichern von Annotationsdaten, die dem Clip entsprechen.
  8. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei mindestens eine zusätzliche Edge-Vorrichtung konfiguriert ist, um zusätzliche Erfassungsdaten an die entfernte Vorrichtung zu übertragen.
  9. Computerimplementiertes Verfahren gemäß Anspruch 8, wobei die entfernte Vorrichtung den Trigger basierend auf einer Analyse der Erfassungsdaten und der zusätzlichen Erfassungsdaten erzeugt.
  10. Computerimplementiertes Verfahren gemäß Anspruch 9, wobei die Analyse von einem neuronalen Netzwerk durchgeführt wird.
  11. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei die Erfassungsdaten von einem neuronalen Netzwerk erzeugt werden.
  12. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei die Edge-Vorrichtung einen Puffer umfasst, der konfiguriert ist, um einen Abschnitt des Daten-Streams zu speichern, aus dem der Clip reagierend auf den Trigger extrahiert wird.
  13. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei ein Kommunikationsdienst, der mit der Edge-Vorrichtung über ein Netzwerk verbunden ist, konfiguriert ist, um die Erfassungsdaten von der Edge-Vorrichtung zu der entfernten Vorrichtung weiterzuleiten und den Trigger von der entfernten Vorrichtung zu der Edge-Vorrichtung weiterzuleiten.
  14. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei die entfernte Vorrichtung innerhalb einer Cloud-Rechenumgebung lokalisiert ist.
  15. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei die Schritte des Verarbeitens, Übertragens, Empfangens, Extrahierens und Speicherns Daten erzeugen, die zum Trainieren, Testen oder Zertifizieren eines neuronalen Netzwerkmodells verwendet werden, das in einer Maschine, einem Roboter oder einem autonomen Fahrzeug eingesetzt wird.
  16. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei die Schritte des Verarbeitens, Übertragens, Empfangens, Extrahierens und Speicherns durch eine virtuelle Maschine durchgeführt werden, die in einer Rechenvorrichtung gehostet ist, die mindestens einen eines Prozessors oder einer Graphikverarbeitungseinheit umfasst.
  17. System, umfassend: eine Edge-Vorrichtung, die mit einer persistenten Speicherung gekoppelt und konfiguriert ist, um: einen Daten-Stream zu verarbeiten, der von einem Sensor erfasst wird, um Erfassungsdaten zu erzeugen, die mindestens einem Zeitsegment in dem Daten-Stream entsprechen; die Erfassungsdaten an eine entfernte Vorrichtung zu übertragen; einen Trigger zu empfangen, der durch die entfernte Vorrichtung erzeugt wird, der ein Ereignis identifiziert; als Antwort auf den Trigger einen Clip, der mindestens einen Abschnitt des Daten-Streams umfasst, durch die Edge-Vorrichtung zu extrahieren; und den Clip in der persistenten Speicherung zu speichern.
  18. System gemäß Anspruch 17, wobei der Daten-Stream ein Video-Stream ist und die Erfassungsdaten einem Objekt entsprechen, das in dem Daten-Stream sichtbar ist.
  19. System gemäß Anspruch 17, wobei der Daten-Stream ein Audio-Stream ist und die Erfassungsdaten einem Geräusch entsprechen, das in dem Daten-Stream hörbar ist.
  20. System gemäß einem der Ansprüche 17 bis 19, wobei das System konfiguriert ist, um ein computerimplementiertes Verfahren auszuführen, wie in einem der Ansprüche 1 bis 16 erwähnt.
  21. Nichttransitorische computerlesbare Medien, die Computeranweisungen speichern, die, wenn durch einen oder mehrere Prozessoren ausgeführt, den einen oder mehrere Prozessoren veranlassen, die folgenden Schritte durchzuführen: Verarbeiten eines Daten-Streams, der von einem Sensor erfasst wird, um Erfassungsdaten zu erzeugen, die mindestens einem Zeitsegment in dem Daten-Stream entsprechen; Übertragen der Erfassungsdaten an eine entfernte Vorrichtung; Empfangen eines Triggers, der durch die entfernte Vorrichtung erzeugt wird, der ein Ereignis identifiziert; als Antwort auf den Trigger, Extrahieren eines Clips, der mindestens einen Abschnitt des Daten-Streams umfasst, durch die Edge-Vorrichtung; und Speichern des Clips in einer persistenten Speicherung.
DE102021130626.4A 2020-11-24 2021-11-23 Trigger-reagierende clipextraktion basierend auf fernanalyse Pending DE102021130626A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/103,715 US20220165304A1 (en) 2020-11-24 2020-11-24 Trigger-responsive clip extraction based on remote analysis
US17/103,715 2020-11-24

Publications (1)

Publication Number Publication Date
DE102021130626A1 true DE102021130626A1 (de) 2022-05-25

Family

ID=81452885

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021130626.4A Pending DE102021130626A1 (de) 2020-11-24 2021-11-23 Trigger-reagierende clipextraktion basierend auf fernanalyse

Country Status (3)

Country Link
US (1) US20220165304A1 (de)
CN (1) CN114554279A (de)
DE (1) DE102021130626A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220185324A1 (en) * 2020-12-10 2022-06-16 Motional Ad Llc Merging LiDAR Information and Camera Information
CN117830489B (zh) * 2024-03-05 2024-05-03 浙江小牛哥科技有限公司 智能室内设计图像渲染系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070217761A1 (en) * 2006-03-07 2007-09-20 Coban Research And Technologies, Inc. Method for video/audio recording using unrestricted pre-event/post-event buffering with multiple bit and frame rates buffer files
CA2716636A1 (en) * 2009-10-07 2011-04-07 Telewatch Inc. Video analytics based control of video data storage
CN103959910B (zh) * 2011-09-22 2016-11-09 皇家飞利浦有限公司 利用户外照明网络的成像服务
US9025752B2 (en) * 2011-11-01 2015-05-05 At&T Intellectual Property I, L.P. Method and apparatus for providing ambient social telephony
US10863098B2 (en) * 2013-06-20 2020-12-08 Microsoft Technology Licensing. LLC Multimodal image sensing for region of interest capture
US9928878B2 (en) * 2014-08-13 2018-03-27 Intel Corporation Techniques and apparatus for editing video
US20160284127A1 (en) * 2015-03-26 2016-09-29 International Business Machines Corporation Individualized content in augmented reality systems
KR102673041B1 (ko) * 2016-08-18 2024-06-07 한화비전 주식회사 이벤트 검색 시스템, 장치 및 방법
KR20180086662A (ko) * 2017-01-23 2018-08-01 한화에어로스페이스 주식회사 모니터링 장치 및 시스템
US10595039B2 (en) * 2017-03-31 2020-03-17 Nvidia Corporation System and method for content and motion controlled action video generation
US10757358B1 (en) * 2019-06-05 2020-08-25 Primesensor Technology Inc. Photographing device having two output interfaces
US10593049B2 (en) * 2018-05-30 2020-03-17 Chiral Software, Inc. System and method for real-time detection of objects in motion
US20200029133A1 (en) * 2018-07-23 2020-01-23 NRS Systems Camera Capture in an Organization Information Distribution System
US10986017B2 (en) * 2018-08-23 2021-04-20 Agora Lab, Inc. Large-scale real-time multimedia communications
JP6792043B1 (ja) * 2019-10-18 2020-11-25 株式会社安川電機 事象推定システム及び事象推定方法
CN111225280B (zh) * 2020-01-22 2021-10-01 复旦大学 基于嵌入式平台的轻量级视频分析系统
US20220114477A1 (en) * 2020-10-14 2022-04-14 Baidu Usa Llc Event driven configurable artificial intelligence workflow

Also Published As

Publication number Publication date
CN114554279A (zh) 2022-05-27
US20220165304A1 (en) 2022-05-26

Similar Documents

Publication Publication Date Title
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102021112247A1 (de) Inhaltsbewusste Stilcodierung unter Verwendung neuronaler Netzwerke
DE102019122790A1 (de) Robotersteuerungssystem
CN111950693A (zh) 使用衰减参数进行神经网络推理
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
DE102021121560A1 (de) Objektbild vervollständigung
DE112021001762T5 (de) Erzeugen von kennzeichnungen für synthetische bilder unter verwenden eines oder mehrerer neuronaler netzwerke
DE112021000351T5 (de) Maschinenlernbasiertes objekterfassungssystem
DE102021128292A1 (de) Skalierbare semantische bildsuche mit deep- template- matching
DE112020004107T5 (de) Inhaltsempfehlungen unter verwendung eines oder mehrerer neuronaler netze
DE112021001733T5 (de) Hardwaregesteuerte aktualisierung eines physikalischen betriebsparameters zur fehlererkennung vor ort
DE102021110055A1 (de) Unter verwendung eines oder mehrerer neuronaler netzwerke bestimmte benachrichtigungen
DE112020005476T5 (de) Neuronales netz zur bildausrichtung
DE102022128027A1 (de) Fehlererkennung mit einem oder mehreren neuronalen netzen
DE112020003165T5 (de) Videointerpolation unter Verwendung eines oder mehrerer neuronaler Netze
DE102020127508A1 (de) Posenverfolgung von objekten in der hand
DE102018108314A1 (de) Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke
DE102022103881A1 (de) Generieren von frames für die neuronale simulation mit einem oder mehreren neuronalen netzen
DE102022110000A1 (de) Dynamische gewichtsaktualisierungen für neuronale netzwerke
DE102018124211A1 (de) Lernbasierte Kameraposenschätzung von Bildern einer Umgebung
DE102022100360A1 (de) Framework für maschinelles lernen angewandt bei einer halbüberwachten einstellung, um instanzenverfolgung in einer sequenz von bildframes durchzuführen
DE102021130626A1 (de) Trigger-reagierende clipextraktion basierend auf fernanalyse
DE102021132069A1 (de) Grafikverarbeitungseinheiten zur erkennung von betrug mittels neuronaler netze
DE102021132992A1 (de) Messen und Detektieren von Leerlaufzeiten und Erkennen der Ursachen dafür in Cloud-basierten Streaming-Anwendungen
DE112021007439T5 (de) Erzeugung von begrenzungsrahmen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication