DE102021126580A1 - Automatisierte knotenübergreifende kommunikation in einem verteilten gerichteten azyklischen graphen - Google Patents

Automatisierte knotenübergreifende kommunikation in einem verteilten gerichteten azyklischen graphen Download PDF

Info

Publication number
DE102021126580A1
DE102021126580A1 DE102021126580.0A DE102021126580A DE102021126580A1 DE 102021126580 A1 DE102021126580 A1 DE 102021126580A1 DE 102021126580 A DE102021126580 A DE 102021126580A DE 102021126580 A1 DE102021126580 A1 DE 102021126580A1
Authority
DE
Germany
Prior art keywords
dag
vertex
data
vertices
nodes
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
DE102021126580.0A
Other languages
English (en)
Inventor
Bradley David Safnuk
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.)
Ford Global Technologies LLC
Original Assignee
Ford Global Technologies LLC
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 Ford Global Technologies LLC filed Critical Ford Global Technologies LLC
Publication of DE102021126580A1 publication Critical patent/DE102021126580A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06F18/2148Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/18Loop-free operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Diese Offenbarung stellt ein System und ein Verfahren zur automatisierten knotenübergreifenden Kommunikation in einem verteilten gerichteten azyklischen Graphen bereit. Das Verfahren kann das Identifizieren eines gerichteten azyklischen Graphen („DAG“), der eine Vielzahl von Knoten überlagert, und das Identifizieren der dem DAG zugrundeliegenden Knoten beinhalten. Ein untergeordneter DAG kann in einem Eintrittsscheitelpunkt des DAG erzeugt werden. Der untergeordnete DAG kann einen Scheitelpunkt für jeden der dem DAG zugrundeliegenden Knoten beinhalten. Daten und Metadaten können an dem Eintrittsscheitelpunkt empfangen werden. Die Daten können an einen nächsten Scheitelpunkt in dem DAG abgegeben werden und die Metadaten können an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG kommuniziert werden.

Description

  • GEBIET DER TECHNIK
  • Die Offenbarung betrifft im Allgemeinen verteilte Computersysteme.
  • ALLGEMEINER STAND DER TECHNIK
  • Die Computernutzung dominiert zunehmend das Konstruktionsdesign. Dies hat zu einer verbesserten Designqualität geführt, aber neue Herausforderungen im Hinblick auf das Design stoßen an die Grenzen aktueller Rechensysteme. Zum Beispiel kann ein Computer verwendet werden, um einen Luftstrom über die Außenkarosserie eines Autos zu simulieren. Um eine nützliche Simulation zu erzeugen, erfordert dies massive Mengen an Eingabedaten und Berechnungen. Zusätzlich zu dem schieren Datenvolumen für eine derartige Simulation kann die Rechenlast für eine derartige Simulation auch massiv sein, da die Beziehung zwischen den Eingabedaten und den Ausgaben komplex sein kann.
  • Derartige Schwierigkeiten können durch verteiltes Rechnen angegangen werden. Gegenwärtig arbeitet das verteilte Rechnen gemäß einem Master-Slave-Modell, bei dem ein Knoten einen Überblick über die durch Slaves durchgeführten Rechenvorgänge behält und diese steuert. Die Slaves führen Vorgänge aus, wenn sie eine Anweisung von dem Master empfangen, haben jedoch keinen Überblick über oder Kenntnis von Vorgängen, die durch andere Slaves allein oder insgesamt durchgeführt werden. Derartige Master-Slave-Konfigurationen können erhebliche Vorteile aufweisen, es können jedoch auch Nachteile vorhanden sein. Genau gesagt, können sich derartige Konfigurationen auf eine starke Beteiligung des Benutzers am Programmieren des Betriebs der Slaves und am Programmieren der Steuerung des Slaves durch den Master angewiesen sein. Dieses nahezu benutzerdefinierte Programm kann die Flexibilität des Berechnens gemäß einem Master-Slave-Modell einschränken, da jede Änderung der Konfiguration oder des Betriebs eines oder mehrerer Knoten in dem verteilten Rechennetzwerk eine Neuprogrammierung erfordern kann.
  • Angesichts der wachsenden Rechenanforderungen und der Einschränkungen aktueller Verfahren des verteilten Rechens können neue und verbesserte Verfahren des verteilten Rechnens und insbesondere des verteilten Trainings erwünscht sein.
  • KURZDARSTELLUNG
  • In einigen Ausführungsformen wird ein Verfahren zum Trainieren und Nutzen massiv paralleler neuronaler Netzwerke offenbart. Ein verteiltes Rechensystem kann dazu konfiguriert sein, verschiedene Vorgänge durchzuführen. Das verteilte Rechensystem kann einen gerichteten azyklischen Graphen (directed acyclic graph - „DAG“) aufteilen, der eine Vielzahl von Scheitelpunkten umfasst, die in paarweisen Beziehungen über eine Vielzahl von Kanten unter einer Vielzahl von Knoten verbunden sind. Jeder Knoten kann eine Rechenvorrichtung umfassen. Das verteilte Rechensystem kann eine Karte des DAG bereitstellen, die einen Datenfluss durch die Scheitelpunkte zu jedem der Scheitelpunkte des DAG beschrieben hat. Das verteilte Rechensystem kann eine topologische Sortierung der Scheitelpunkte des DAG durchführen und den DAG durchqueren. In einigen Ausführungsformen kann das verteilte Rechensystem mindestens einen Klon-DAG erzeugen, der mit dem DAG und/oder einem Abschnitt des DAG identisch ist, wobei der Klon-DAG eine Vielzahl von Klonscheitelpunkten umfasst, einen entsprechenden Scheitelpunkt in dem DAG für jeden der Klonscheitelpunkte identifizieren, wobei aggregierte Gradientendaten basierend auf Gradientendaten von jedem der Klonscheitelpunkte und dessem entsprechenden Scheitelpunkt in dem DAG während des Trainings des DAG und des Klon-DAG berechnet werden, und mindestens eine Gewichtung des DAG und des Klon-DAG basierend auf den aggregierten Gradientendaten aktualisieren. In einigen Ausführungsformen kann einer von einer Vielzahl von Scheitelpunkten des DAG ein Eintrittsscheitelpunkt sein, und in einigen Ausführungsformen kann das verteilte Rechensystem die dem DAG zugrundeliegenden Knoten identifizieren, einen untergeordneten DAG in dem Eintrittsscheitelpunkt erzeugen, wobei der untergeordnete DAG eine Vielzahl von untergeordneten Scheitelpunkten beinhaltet, wobei jeder der Vielzahl von untergeordneten Scheitelpunkten einem der Knoten, die dem DAG zugrundeliegen, entspricht, Daten und Metadaten an dem Eintrittsscheitelpunkt empfangen, die Daten an einen nächsten Scheitelpunkt in dem DAG abgeben und die Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG kommunizieren.
  • In anderen Ausführungsformen wird ein System zum Trainieren und Nutzen massiv paralleler neuronaler Netzwerke offenbart. Das System kann einen oder mehrere Prozessoren beinhalten und kann einen oder mehrere Speicher beinhalten, in denen computerausführbare Anweisungen gespeichert sind, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren dahingehend konfigurieren, verschiedene Vorgänge durchzuführen. Der eine oder die mehreren Prozessoren können einen gerichteten azyklischen Graphen („DAG“) aufteilen, der eine Vielzahl von Scheitelpunkten umfasst, die in paarweisen Beziehungen über eine Vielzahl von Kanten unter einer Vielzahl von Knoten verbunden sind. Jeder Knoten kann eine Rechenvorrichtung umfassen. Der eine oder die mehreren Prozessoren können eine Karte des DAG bereitstellen, die einen Datenfluss durch die Scheitelpunkte zu jedem der Scheitelpunkte des DAG beschrieben hat. Der eine oder die mehreren Prozessoren können eine topologische Sortierung der Scheitelpunkte des DAG durchführen und den DAG durchqueren.
  • In einigen Ausführungsformen wird ein Verfahren zum Trainieren und Nutzen geklonter neuronaler Netzwerke offenbart. Ein Rechensystem kann dazu konfiguriert sein, verschiedene Vorgänge durchzuführen. Das Rechensystem kann einen gerichteten azyklischen Graphen („DAG“) identifizieren, wobei der DAG eine Vielzahl von Scheitelpunkten beinhalten kann, die in paarweisen Beziehungen über eine Vielzahl von Kanten darunter verbunden sind. Das Rechensystem kann mindestens einen Klon-DAG erzeugen, der mit dem DAG identisch ist und/oder mit einem Abschnitt des DAG identisch ist, wobei der mindestens eine Klon-DAG eine Vielzahl von Klonscheitelpunkten beinhalten kann. Das Rechensystem kann für jeden der Scheitelpunkte des DAG einen entsprechenden Klonscheitelpunkt aus den Klonscheitelpunkten des mindestens einen Klon-DAG identifizieren und aggregierte Gradientendaten basierend auf Gradientendaten von jedem der Klonscheitelpunkte und dessen entsprechendem Scheitelpunkt in dem DAG berechnen. Das Rechensystem kann mindestens eine Gewichtung des DAG und des mindestens einen Klon-DAG basierend auf den aggregierten Gradientendaten aktualisieren.
  • In einigen Ausführungsformen kann das Rechensystem die Scheitelpunkte des DAG identifizieren, und aggregierte Gradientendaten können während des Trainings basierend auf Gradientendaten von jedem der Klonscheitelpunkte und dessen entsprechendem Scheitelpunkt in dem DAG berechnet werden. In einigen Ausführungsformen kann das Identifizieren des entsprechenden Klonscheitelpunkts aus den Klonscheitelpunkten des mindestens einen Klon-DAG das Anwenden eines inkrementellen Benennens über die Klonscheitelpunkte des mindestens einen Klon-DAG, das Benachrichtigen von Scheitelpunkten des DAG über ihre entsprechenden Klonscheitelpunkte des mindestens einen Klon-DAG und das Benachrichtigen von Klonscheitelpunkten des mindestens einen Klon-DAG über ihre entsprechenden beinhalten.
  • In einigen Ausführungsformen beinhaltet das Trainieren jedes von dem DAG und dem mindestens einen Klon-DAG das Aufnehmen von ersten Daten in den DAG und das Aufnehmen von zweiten Daten in den mindestens einen Klon-DAG, das Durchführen eines Vorwärtsdurchlaufs durch jeden von dem DAG und dem mindestens einen Klon-DAG und das Durchführen eines Rückwärtsdurchlaufs durch jeden von dem DAG und dem mindestens einen Klon-DAG. Die ersten Daten und die zweiten Daten sind möglicherweise nicht identisch.
  • Das Rechensystem kann ferner einen Gradienten für jeden Scheitelpunkt des DAG und für jeden der Klonscheitelpunkte des mindestens einen Klon-DAG erzeugen. Das Rechensystem kann Scheitelpunktgradienten zwischen entsprechenden Scheitelpunkten des DAG und des mindestens einen Klon-DAG austauschen. In einigen Ausführungsformen beinhaltet das Berechnen von aggregierten Gradientendaten basierend auf Gradientendaten von jedem der Klonscheitelpunkte und dessen entsprechendem Scheitelpunkt in dem DAG das Berechnen von Mittelgradientendaten. In einigen Ausführungsformen kann das Aktualisieren von mindestens einer Gewichtung des DAG und des mindestens einen Klon-DAG basierend auf den aggregierten Gradientendaten gemäß synchronen Gradientenaktualisierungen durchgeführt werden. In einigen Ausführungsformen kann das Aktualisieren von mindestens einer Gewichtung des DAG und des mindestens einen Klon-DAG basierend auf den aggregierten Gradientendaten gemäß asynchronen Gradientenaktualisierungen durchgeführt werden.
  • In anderen Ausführungsformen wird ein System zum Trainieren neuronaler Netzwerke offenbart. Das System kann einen oder mehrere Prozessoren beinhalten und kann einen oder mehrere Speicher beinhalten, in denen computerausführbare Anweisungen gespeichert sind, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren dahingehend konfigurieren, verschiedene Vorgänge durchzuführen. Der eine oder die mehreren Prozessoren können einen DAG identifizieren, einschließlich einer Vielzahl von Scheitelpunkten, die in paarweisen Beziehungen über eine Vielzahl von Kanten unter dieser verbunden sind, und mindestens einen Klon-DAG erzeugen, der mit dem DAG und/oder mit einem Abschnitt des DAG identisch ist, wobei der mindestens eine Klon-DAG eine Vielzahl von Klonscheitelpunkten beinhaltet. Der eine oder die mehreren Prozessoren können einen entsprechenden Klonscheitelpunkt aus den Klonscheitelpunkten des mindestens einen Klon-DAG für jeden der Scheitelpunkte des DAG identifizieren, jeden von dem DAG und dem mindestens einen Klon-DAG trainieren, wobei das Trainieren das Berechnen aggregierter Gradientendaten basierend auf Gradientendaten von jedem der Klonscheitelpunkte und dessem entsprechenden Scheitelpunkt in dem DAG beinhalten kann, und mindestens eine Gewichtung des DAG und des mindestens einen Klon-DAG basierend auf den aggregierten Gradientendaten aktualisieren.
  • In einigen Ausführungsformen können der eine oder die mehreren Prozessoren die Scheitelpunkte des DAG identifizieren, und aggregierte Gradientendaten können während des Trainings basierend auf Gradientendaten von jedem der Klonscheitelpunkte und dessen entsprechendem Scheitelpunkt in dem DAG berechnet werden. In einigen Ausführungsformen kann das Identifizieren des entsprechenden Klonscheitelpunkts aus den Klonscheitelpunkten des mindestens einen Klon-DAG das Anwenden eines inkrementellen Benennens über die Klonscheitelpunkte des mindestens einen Klon-DAG, das Benachrichtigen von Scheitelpunkten des DAG über ihre entsprechenden Klonscheitelpunkte des mindestens einen Klon-DAG und das Benachrichtigen von Klonscheitelpunkten des mindestens einen Klon-DAG über ihre entsprechenden Scheitelpunkte des DAG beinhalten. In einigen Ausführungsformen beinhaltet das Trainieren jedes von dem DAG und dem mindestens einen Klon-DAG das Aufnehmen von ersten Daten in den DAG und das Aufnehmen von zweiten Daten in den mindestens einen Klon-DAG, das Durchführen eines Vorwärtsdurchlaufs durch jeden von dem DAG und dem mindestens einen Klon-DAG und das Durchführen eines Rückwärtsdurchlaufs durch jeden von dem DAG und dem mindestens einen Klon-DAG. Die ersten Daten und die zweiten Daten können identisch sein oder sind möglicherweise nicht identisch.
  • In einigen Ausführungsformen können der eine oder die mehreren Prozessoren einen Gradienten für jeden Scheitelpunkt des DAG und für jeden der Klonscheitelpunkte des mindestens einen Klon-DAG erzeugen. In einigen Ausführungsformen können der eine oder die mehreren Prozessoren Scheitelpunktgradienten zwischen entsprechenden Scheitelpunkten des DAG und des mindestens einen Klon-DAG austauschen. In einigen Ausführungsformen kann das Berechnen von aggregierten Gradientendaten basierend auf Gradientendaten von jedem der Klonscheitelpunkte und dessen entsprechendem Scheitelpunkt in dem DAG das Berechnen von Mittelgradientendaten beinhalten. In einigen Ausführungsformen kann das Aktualisieren von mindestens einer Gewichtung des DAG und des mindestens einen Klon-DAG basierend auf den aggregierten Gradientendaten gemäß synchronen Gradientenaktualisierungen durchgeführt werden. In einigen Ausführungsformen kann das Aktualisieren von mindestens einer Gewichtung des DAG und des mindestens einen Klon-DAG basierend auf den aggregierten Gradientendaten gemäß asynchronen Gradientenaktualisierungen durchgeführt werden.
  • In einigen Ausführungsformen wird ein Verfahren zum Trainieren und Nutzen geklonter neuronaler Netzwerke offenbart. Ein Rechensystem kann dazu konfiguriert sein, verschiedene Vorgänge durchzuführen. Das Rechensystem kann einen gerichteten azyklischen Graphen („DAG“) identifizieren, der eine Vielzahl von Knoten überlagert, wobei der DAG eine Vielzahl von Scheitelpunkten beinhalten kann, die in paarweisen Beziehungen über eine Vielzahl von Kanten darunter verbunden sind, wobei einer der Vielzahl von Scheitelpunkten des DAG ein Eintrittsscheitelpunkt sein kann und jeder der Vielzahl von Knoten eine Rechenvorrichtung sein kann. Das Rechensystem kann die dem DAG zugrundeliegenden Knoten identifizieren und einen untergeordneten DAG in dem Eintrittsscheitelpunkt erzeugen, wobei der untergeordnete DAG eine Vielzahl von untergeordneten Scheitelpunkten beinhaltet, wobei jeder der Vielzahl von untergeordneten Scheitelpunkten einem der dem DAG zugrundeliegenden Knoten entspricht. Das Rechensystem kann Daten und Metadaten an dem Eintrittsscheitelpunkt empfangen, die Daten an einen nächsten Scheitelpunkt in dem DAG abgeben und die Metadaten über den untergeordneten DAG an Knoten kommunizieren, die dem DAG zugrundeliegen.
  • In einigen Ausführungsformen können die an dem Eintrittsscheitelpunkt empfangenen Daten Trainingsdaten sein und in einigen Ausführungsformen können die an dem Eintrittsscheitelpunkt empfangenen Daten ein Stapel von Trainingsdaten aus einer Vielzahl von Stapeln von Trainingsdaten sein. In einigen Ausführungsformen können die an dem Eintrittsscheitelpunkt empfangenen Metadaten angeben, dass der empfangene Stapel ein letzter Stapel ist, und/oder sie können eine Position des empfangenen Stapels innerhalb der Vielzahl von Stapeln angeben.
  • In einigen Ausführungsformen kann das Rechensystem Kommunikationsverbindungen zwischen jedem der untergeordneten Scheitelpunkte und dem entsprechenden Knoten erzeugen. In einigen Ausführungsformen ermöglicht das Abgeben von Daten an den nächsten Scheitelpunkt in dem DAG das Durchqueren des DAG, und das Kommunizieren der Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG, kann das Durchqueren des untergeordneten DAG beinhalten. In einigen Ausführungsformen kann das Rechensystem eine Karte des DAG für jeden der Scheitelpunkte des DAG bereitstellen, wobei die Karte einen Datenfluss durch die Scheitelpunkte beschreibt, und eine topologische Sortierung der Scheitelpunkte des DAG durchführen, wobei die topologische Sortierung eine deterministische topologische Sortierung sein kann, und wobei die deterministische topologische Sortierung eine Reihenfolge von Vorgängen zum Durchqueren des DAG steuert. In einigen Ausführungsformen kann das Rechensystem eine Kante identifizieren, die separate Knoten verbindet, und einen Datenaustauschscheitelpunkt zwischen den separaten Knoten einfügen, wobei der Datenaustauschscheitelpunkt eine rekursive DAG-Struktur aufweisen kann und einen Sendescheitelpunkt und einen Empfangsscheitelpunkt beinhalten kann.
  • In anderen Ausführungsformen wird ein System zum Trainieren neuronaler Netzwerke offenbart. Das System kann einen oder mehrere Prozessoren beinhalten und kann einen oder mehrere Speicher beinhalten, in denen computerausführbare Anweisungen gespeichert sind, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren dahingehend konfigurieren, verschiedene Vorgänge durchzuführen. Der eine oder die mehreren Prozessoren können einen gerichteten azyklischen Graphen („DAG“) identifizieren, wobei der DAG eine Vielzahl von Scheitelpunkten beinhaltet, die in paarweisen Beziehungen über eine Vielzahl von Kanten verbunden sind. In einigen Ausführungsformen kann einer der Vielzahl von Scheitelpunkten des DAG ein Eintrittsscheitelpunkt sein und kann jeder der Vielzahl von Knoten eine Rechenvorrichtung sein. Der eine oder die mehreren Prozessoren können die dem DAG zugrundeliegenden Knoten identifizieren und einen untergeordneten DAG in dem Eintrittsscheitelpunkt erzeugen, wobei der untergeordnete DAG eine Vielzahl von untergeordneten Scheitelpunkten beinhaltet, wobei jeder der Vielzahl von untergeordneten Scheitelpunkten einem der dem DAG zugrundeliegenden Knoten entspricht. Der eine oder die mehreren Prozessoren können Daten und Metadaten an dem Eintrittsscheitelpunkt empfangen, die Daten an einen nächsten Scheitelpunkt in dem DAG abgeben und die Metadaten über den untergeordneten DAG an Knoten kommunizieren, die dem DAG zugrundeliegen.
  • In einigen Ausführungsformen können die an dem Eintrittsscheitelpunkt empfangenen Daten Trainingsdaten beinhalten und in einigen Ausführungsformen können die an dem Eintrittsscheitelpunkt empfangenen Daten ein Stapel von Trainingsdaten aus einer Vielzahl von Stapeln von Trainingsdaten sein. In einigen Ausführungsformen geben die an dem Eintrittsscheitelpunkt empfangenen Metadaten an, dass der empfangene Stapel ein letzter Stapel ist, und/oder sie geben eine Position des empfangenen Stapels innerhalb der Vielzahl von Stapeln an. In einigen Ausführungsformen können der eine oder die mehreren Prozessoren Kommunikationsverbindungen zwischen jedem der untergeordneten Scheitelpunkte und dem entsprechenden Knoten erzeugen. In einigen Ausführungsformen ermöglicht das Abgeben von Daten an den nächsten Scheitelpunkt in dem DAG das Durchqueren des DAG, und das Kommunizieren der Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG, umfasst das Durchqueren des untergeordneten DAG.
  • In einigen Ausführungsformen können der eine oder die mehreren Prozessoren eine Karte des DAG für jeden der Scheitelpunkte des DAG bereitstellen, wobei die Karte einen Datenfluss durch die Scheitelpunkte beschreibt, und eine topologische Sortierung der Scheitelpunkte des DAG durchführen, wobei die topologische Sortierung eine deterministische topologische Sortierung sein kann, und wobei die deterministische topologische Sortierung eine Reihenfolge von Vorgängen zum Durchqueren des DAG steuert. In einigen Ausführungsformen können der eine oder die mehreren Prozessoren eine Kante identifizieren, die separate Knoten verbindet, und einen Datenaustauschscheitelpunkt zwischen den separaten Knoten einfügen, wobei der Datenaustauschscheitelpunkt eine rekursive DAG-Struktur sein kann, die einen Sendescheitelpunkt und einen Empfangsscheitelpunkt beinhaltet.
  • Figurenliste
  • Ein weiteres Verständnis der Art und der Vorteile verschiedener Ausführungsformen kann unter Bezugnahme auf die folgenden Figuren realisiert werden. In den beigefügten Figuren können ähnliche Komponenten oder Merkmale das gleiche Bezugszeichen aufweisen. Ferner können verschiedene Komponenten der gleichen Art unterschieden werden, indem ein Strich und ein zweites Bezugszeichen, das zwischen den ähnlichen Komponenten unterscheidet, an das Bezugszeichen angehängt werden. Falls in der Beschreibung nur das erste Bezugszeichen verwendet wird, gilt die Beschreibung für eine beliebige der ähnlichen Komponenten, die das gleiche erste Bezugszeichen aufweisen, unabhängig von dem zweiten Bezugszeichen.
    • 1 ist ein Blockdiagramm eines beispielhaften Knotens eines verteilten Rechensystems gemäß einigen Ausführungsformen. [0018]
    • 2 ist ein Blockdiagramm eines beispielhaften Rechensystems, das einen Satz von Knoten mit gerichteten azyklischen Graphen beinhaltet, gemäß einigen Ausführungsformen.
    • 3 ist ein Blockdiagramm eines beispielhaften Datenaustauschscheitelpunkts gemäß einigen Ausführungsformen.
    • 4 ist ein Blockdiagramm eines eingebetteten gerichteten azyklischen Graphen gemäß einigen
    • 5 ist ein Blockdiagramm eines gerichteten azyklischen Graphen und zweier geklonter gerichteter azyklischer Graphen in einem verteilten Rechensystem gemäß einigen Ausführungsformen.
    • 6 ist ein Ablaufdiagramm eines Prozesses zum Trainieren und Nutzen massiv paralleler neuronaler Netzwerke gemäß einigen Ausführungsformen.
    • 7 ist ein Ablaufdiagramm eines Prozesses zum Weiterleiten eines Tensors über einen Datenaustauschscheitelpunkt gemäß einigen Ausführungsformen.
    • 8 ist ein Ablaufdiagramm eines Prozesses zum Erleichtern der Datenübertragung zwischen Knoten eines Gesamt-DAG gemäß einigen Ausführungsformen.
    • 9 ist ein Ablaufdiagramm eines Prozesses zum Erzeugen eines Datenaustauschscheitelpunkts gemäß einigen Ausführungsformen.
    • 10 ist ein Ablaufdiagramm eines Prozesses zum Aktualisieren von Gewichtungen über geklonte gerichtete azyklische Graphen gemäß einigen Ausführungsformen.
    • 11 ist ein Blockdiagramm eines Fahrzeugsystems gemäß einigen Ausführungsformen. [0026]
    • 12 ist ein Blockdiagramm eines Rechensystems gemäß einigen Ausführungsformen. [0027]
    • 13 ist ein Cloud-Rechensystem gemäß einigen Ausführungsformen.
  • DETAILLIERTE BESCHREIBUNG
  • Das Aufbauen, Trainieren und Nutzen eines neuronalen Netzwerkes, das die Rechen- und/oder Speicherkapazität einer einzelnen Maschine übersteigt, ist außerordentlich komplex. Nicht nur muss die Verarbeitung auf unterschiedliche Arbeitsknoten präzise synchronisiert werden, sondern es gibt auch signifikante und komplexe Kommunikationsmuster zwischen unterschiedlichen Knoten.
  • Die Umsetzung eines derartigen neuronalen Netzwerkes mit vorhandenen Rahmen und Werkzeugen ist schwierig, zeitaufwändig und spröde, wobei selbst kleine Änderungen an der Netzwerkarchitektur wesentliche Änderungen an dem zugrundeliegenden Code erfordern. Ferner muss nach dem Trainieren eines neuronalen Netzwerkes ein Mechanismus zum Laden der Gewichtungen und Verwenden dieser zum Treffen von Vorhersagen zu neuen Daten vorhanden sein, jedoch typischerweise auf einer anderen Anzahl von Maschinen und/oder anderen Eingabegrößen, als zum Trainieren des Modells verwendet wurde. Aktuelle Verfahren würden eine erhebliche Überarbeitung des Codes erfordern, der für das Training verwendet wurde, um einen derartigen Anwendungsfall zu unterstützen.
  • Die vorliegende Offenbarung betrifft Systeme und Verfahren zum Verbessern von Aspekten der gerichteten azyklischen Graphen (DAGs). Dies beinhaltet das Verbessern der Verteilung eines DAG über mehrere Rechenvorrichtungen (Knoten), das Klonen eines DAG und das Verbessern der Kommunikation zwischen dem DAG und den Klonen und das Verbessern der Fähigkeit eines Eintrittsscheitelpunkts in einem DAG, mit beliebigen stromabwärtigen Knoten zu kommunizieren.
  • Bestimmte Aspekte und Beispiele der vorliegenden Offenbarung betreffen das Trainieren und Nutzen massiv paralleler neuronaler Netzwerke unter Verwendung eines verteilten Rechensystems zum Durchqueren eines oder mehrerer gerichteter azyklischer Graphen (DAGs) über einen oder mehrere Knoten. Das verteilte Rechensystem kann einen Satz von Knoten beinhalten, bei denen es sich um typische Rechenvorrichtungen handeln kann, die einen Satz von Scheitelpunkten und Kanten eines Gesamt-DAG beinhalten können. Der Gesamt-DAG kann einen Abschnitt eines neuronalen Netzwerkes bilden und der Gesamt-DAG kann einen Teilsatz von DAGs beinhalten, einschließlich unter anderem geklonter DAGs. Die Scheitelpunkte können durch die Kanten verbunden sein, und in einigen Beispielen können einige Scheitelpunkte durch Kanten über unterschiedliche Knoten verbunden sein. In derartigen Fällen kann ein Datenaustauschscheitelpunkt durch das Rechensystem eingefügt werden, um die Datenübertragung zwischen den Knoten zu erleichtern. Der Datenaustauschscheitelpunkt kann dazu konfiguriert sein, Tensoren zwischen unterschiedlichen Knoten des verteilten Rechensystems zu übertragen. Das verteilte Rechensystem kann den Gesamt-DAG durchqueren und kann dazu konfiguriert sein, den Teilsatz von DAGs und geklonten DAGs zu durchqueren, während Gradienten berechnet werden. Das verteilte Rechensystem kann Gewichtungen des Gesamt-DAG oder des Teilsatzes von DAGs mindestens teilweise basierend auf dem Berechnen der Gradienten aktualisieren.
  • 1 ist ein Blockdiagramm eines beispielhaften Knotens 100 eines verteilten Rechensystems gemäß einigen Ausführungsformen. [0033] Der beispielhafte Knoten 100 kann einen Prozessor 102, einen Speicher 104 und ein Kommunikationsmodul 106 beinhalten. In einigen Beispielen kann der beispielhafte Knoten 100 eine Rechenvorrichtung sein und kann als eine typische Rechenvorrichtung fungieren, die einen Prozessor 102 und einen Speicher 104 beinhaltet. In einigen Beispielen kann der beispielhafte Knoten 100 ein Computer, ein Server, eine virtuelle Maschine oder dergleichen sein. Der beispielhafte Knoten 100 kann eigenständig sein oder kann einer von einem Satz von Knoten in einem verteilten Rechensystem sein. Der Satz von Knoten in dem verteilten Rechensystem kann mit einer drahtgebundenen Verbindung oder einer drahtlosen Verbindung über ein Netzwerk verbunden sein, um zu ermöglichen, dass verteiltes Rechnen stattfindet. In einigen Beispielen, in denen sich der beispielhafte Knoten 100 in einem verteilten Rechensystem mit anderen Knoten befindet, kann der beispielhafte Knoten 100 dazu konfiguriert sein, DAGs zu erzeugen, DAGs zu durchqueren, Informationen in Bezug auf DAGs mit anderen Knoten auszutauschen und beliebige andere Vorgänge durchzuführen, die zum Trainieren und Nutzen massiv paralleler neuronaler Netzwerke geeignet sind.
  • Der Prozessor 102 kann eine beliebige Rechenvorrichtung sein, und einige Beispiele beinhalten eine Verarbeitungsvorrichtung, einen Chip, einen Mikrochip usw. Zusätzlich dazu kann der Prozessor 102 Vorgänge eines beliebigen Scheitelpunkts durchführen, der dem beispielhaften Knoten 100 zugewiesen ist. Der Speicher 104 kann computerlesbare Anweisungen, wie etwa Code, beinhalten, die durch den Prozessor 102 ausführbar sind, um den Prozessor 102 dazu zu veranlassen, Vorgänge durchzuführen. In einigen Beispielen können die Vorgänge Vorgänge des Scheitelpunkts beinhalten, der dem beispielhaften Knoten 100 zugewiesen ist. In anderen Beispielen kann der Speicher 104 eine Karte eines Gesamt-DAG, Informationen für Sequenzierungsvorgänge des Gesamt-DAG und einen Standort aktueller Vorgänge in dem Gesamt-DAG beinhalten. Das Kommunikationsmodul 106 kann Hardware, Software oder beides beinhalten, um die Kommunikation zwischen dem beispielhaften Knoten 100 und anderen Knoten zu erleichtern. Zusätzlich oder alternativ dazu kann das Kommunikationsmodul 106 eine Netzwerkschnittstellenkarte oder dergleichen beinhalten.
  • 2 ist ein Blockdiagramm einer beispielhaften Ausführungsform eines verteilten DAG 200, der über mehrere Knoten 202-A, 202-B, 202-C, 202-D, 202-E, 202-F verteilt ist. Diese Knoten 202-A, 202-B, 202-C, 202-D, 202-E, 202-F bilden zusammen ein Rechensystem 204, das die Vorgänge des verteilten DAG 200 durchführt, und genau gesagt, führt jeder Knoten 202-A, 202-B, 202-C, 202-D, 202-E, 202-F den Vorgang/die Vorgänge des einen oder der mehreren Scheitelpunkte dieses Knotens 202-A, 202-B, 202-C, 202-D, 202-E, 202-F durch.
  • Wie in dem verteilten DAG 200 veranschaulicht, gibt es sechs Knoten 202, die Knoten 1, Knoten 2, Knoten 3, Knoten 4, Knoten 5 bzw. Knoten 6 entsprechen. Jeder Knoten der Knoten 202 kann dem beispielhaften Knoten 100 aus 1 ähnlich oder mit diesem identisch sein. Jeder Knoten der Knoten 202 kann einen oder mehrere DAGs beinhalten, die eine bestimmte Anzahl von Scheitelpunkten und Kanten beinhalten. Die Knoten 202 können eine beliebige geeignete Anzahl von Scheitelpunkten und Kanten zum Darstellen des einen oder der mehreren DAGs beinhalten, deren Durchquerung gewünscht sein kann.
  • Wie in dem verteilten DAG 200 veranschaulicht, gibt es 18 Scheitelpunkte mit 32 Kanten, welche die Scheitelpunkte miteinander verbinden. In einigen Beispielen können die 18 Scheitelpunkte und die 32 Kanten einen DAG darstellen, der durch das Rechensystem 204 erzeugt oder empfangen wird, und das Rechensystem 204 kann anschließend eine Reihenfolge bestimmen, in der die 18 Scheitelpunkte durchquert werden sollen. Das Durchqueren des verteilten DAG 200 kann das Bewegen über Verbindungsstellen zwischen Knoten beinhalten, und in diesem Fall kann das verteilte Rechensystem einen Datenaustauschscheitelpunkt (in 3 beschrieben) einfügen, um die Informationsübertragung zwischen den Knoten zu erleichtern. Unter den in 2 dargestellten 32 Kanten zeigt der verteilte DAG 200 zwei Kanten 206 und 208 von besonderer Bedeutung. Genau gesagt, kann ein Problem auftreten, wenn ein DAG über mehrere unabhängige Knoten verteilt ist, und zwar hinsichtlich dessen, wie die Kommunikation zwischen diesen Knoten erleichtert und wie Daten zwischen Knoten übertragen werden sollen.
  • Wie in dem verteilten DAG 200 dargestellt, verbindet die Kante 206 Scheitelpunkt V1 und Scheitelpunkt V5 und verbindet die Kante 208 Scheitelpunkt V7 und Scheitelpunkt V10. Der Scheitelpunkt V1 und der Scheitelpunkt V5 sind in dem Knoten 1 202-A enthalten, der Scheitelpunkt V7 ist in dem Knoten 202-B enthalten und der Scheitelpunkt V10 ist in dem Knoten 202-D enthalten. In einem Beispiel, in dem der verteilte DAG 200 die Kanten 206 und 208 beinhaltet, kann sich das Rechensystem 204 einfach ohne zusätzliche Aktionen entlang der Kante 206 bewegen. Die Kante 208 verbindet jedoch zwei Knoten und kreuzt somit eine Knotengrenze. In einigen Ausführungsformen können Kanten, die Knotengrenzen überqueren, identifiziert werden und kann ein Datenaustauschscheitelpunkt an dieser Grenze eingefügt werden. Somit kann ein Datenaustauschscheitelpunkt (nicht gezeigt) in die Kante 208 an einer Verbindungsstelle des Knotens 202-B und des Knotens 202-D eingefügt werden. Der Datenaustauschscheitelpunkt kann die Datenübertragung zwischen dem Knoten 202-B und dem Knoten 202-D erleichtern und kann zu einem schnelleren oder effizienteren Durchqueren des DAG führen.
  • 3 ist ein Blockdiagramm eines beispielhaften Datenaustauschscheitelpunkts 300 gemäß einigen Ausführungsformen. Ein verteiltes Rechensystem (z. B. das Rechensystem 204 aus 2) kann den beispielhaften Datenaustauschscheitelpunkt 300 einfügen, und der beispielhafte Datenaustauschscheitelpunkt 300 kann dem vorstehend unter Bezugnahme auf 2. beschriebenen Datenaustauschscheitelpunkt ähnlich oder identisch mit diesem sein. Der beispielhafte Datenaustauschscheitelpunkt 300 kann eine rekursive DAG-Struktur beinhalten und kann ein Mini-DAG sein, der zwei Scheitelpunkte und eine Kante beinhalten kann. Wie in 3 veranschaulicht, kann der beispielhafte Datenaustauschscheitelpunkt 300 einen Sendescheitelpunkt 302 und einen Empfangsscheitelpunkt 304 beinhalten. Der beispielhafte Datenaustauschscheitelpunkt 300 kann einen Sendescheitelpunkt 306, der in einem Knoten enthalten ist, mit einem Empfangsscheitelpunkt 308 verbinden, der in einem anderen Knoten enthalten ist. Der beispielhafte Datenaustauschscheitelpunkt 300 kann sich an einer Verbindungsstelle 310 des einen Knotens und des anderen Knotens befinden.
  • Der Sendescheitelpunkt 306 kann wünschen, Informationen an den Empfangsscheitelpunkt 308 zu übertragen, und kann Informationen an den beispielhaften Datenaustauschscheitelpunkt 300 übertragen, um den Datenaustausch über Knoten zu erleichtern. Der Sendescheitelpunkt 306 kann Informationen an den beispielhaften Datenaustauschknoten 300 übertragen und der Sendescheitelpunkt 302 kann die Informationen empfangen und beliebige relevante Vorgänge durchführen, um den Datenaustausch über Knoten zu erleichtern. Der Sendescheitelpunkt 302 kann als Reaktion auf das Empfangen der Informationen von dem Sendescheitelpunkt 306 die Informationen an den Empfangsscheitelpunkt 304 übertragen, der in dem beispielhaften Datenaustauschscheitelpunkt 300 beinhaltet ist. Der Empfangsscheitelpunkt 304 kann als Reaktion auf das Empfangen der Informationen von dem Sendescheitelpunkt 302 die Informationen an den Empfangsscheitelpunkt 308 übertragen, der in dem Knoten beinhaltet ist, welcher sich von dem Knoten unterscheidet, der den Sendescheitelpunkt 306 beinhaltet.
  • Das verteilte Rechensystem kann als Reaktion auf das Überqueren einer Kante eines Gesamt-DAG den beispielhaften Datenaustauschscheitelpunkt 300 einfügen. Die Kante kann zwei Scheitelpunkte verbinden, die in zwei unterschiedlichen Knoten beinhaltet sein können. Das verteilte Rechensystem kann den beispielhaften Datenaustauschscheitelpunkt 300 an einer Verbindungsstelle der zwei unterschiedlichen Knoten einfügen, um die Datenübertragung zwischen den zwei unterschiedlichen Knoten zu erleichtern. In einigen Beispielen können Informationen in den Daten, die zwischen den zwei unterschiedlichen Knoten über den beispielhaften Datenaustauschscheitelpunkt 300 übertragen werden, einen Tensor beinhalten. Der Tensor kann Informationen über den Gesamt-DAG beinhalten, den das verteilte Rechensystem möglicherweise durchqueren möchte, wobei die Informationen eine DAG-Karte, Vorgänge, die basierend auf dem Gesamt-DAG durchzuführen sind, usw. beinhalten. Der Sendescheitelpunkt 306 kann den Tensor an den Sendescheitelpunkt 302 des beispielhaften Datenaustauschscheitelpunkts 300 übertragen, und als Reaktion auf das Empfangen des Tensors kann der Sendescheitelpunkt 302 den Tensor an den Empfangsscheitelpunkt 304 übertragen. Der Empfangsscheitelpunkt 304 kann anschließend den Tensor an den Empfangsscheitelpunkt 308 übertragen, der sich im Vergleich zu dem Sendescheitelpunkt 306 in einem anderen Knoten befindet.
  • Die rekursive DAG-Struktur des beispielhaften Datenaustauschscheitelpunkts 300 kann dem verteilten Rechensystem zusätzliche Vorteile bereitstellen. Zum Beispiel kann das Starten des beispielhaften Datenaustauschscheitelpunkts 300 durch das verteilte Rechensystem einen Knoten des Sendescheitelpunkts 306 und einen Knoten des Empfangsscheitelpunkts 308 auslösen. Dies ist möglich, da der Sendescheitelpunkt 306 und der Empfangsscheitelpunkt 308 in einem DAG verbunden sind, der von dem Gesamt-DAG getrennt ist. Das Auslösen der Knoten kann bewirken, dass der Knoten des Sendescheitelpunkts 306 Daten überträgt, und kann bewirken, dass sich der Knoten des Empfangsscheitelpunkts 308 auf das Empfangen der Daten vorbereitet. Der Knoten des Empfangsscheitelpunkts 308 kann anschließend die Daten empfangen. Ohne die rekursive DAG-Struktur kann der Knoten des Empfangsscheitelpunkts 308 keine Daten empfangen.
  • 4 ist ein Blockdiagramm eines eingebetteten DAG 400 gemäß einigen Ausführungsformen. In einem verteilten Rechensystem, das einen Gesamt-DAG durchquert, wie etwa das Rechensystem 204 aus 2, fließen Informationen möglicherweise nicht zwingend zwischen Knoten des verteilten Rechensystems. Demnach kann das verteilte Rechensystem den eingebetteten DAG 400 erzeugen oder empfangen, der ein Beispiel für einen eingebetteten DAG sein kann. Der eingebettete DAG 400 kann ein typischer DAG, ein Unter-DAG des Gesamt-DAG usw. sein. Wie in 4 veranschaulicht, beinhaltet der eingebettete DAG 400 vier Knoten 402-A, 402-B, 402-C und 402-D und sechs Scheitelpunkte 404-A, 404-B, 404-C, 404-D, 404-E und 404-F. Der eingebettete DAG 400 kann eine beliebige geeignete Anzahl von Knoten, Scheitelpunkten und Kanten beinhalten, um die Datenübertragung über Knoten des Gesamt-DAG zu erleichtern.
  • Das verteilte Rechensystem kann den eingebetteten DAG 400 erzeugen, indem Scheitelpunkte des eingebetteten DAG 400 erzeugt werden, die Knoten des Gesamt-DAG entsprechen können. Der erste Scheitelpunkt 404-A des eingebetteten DAG 400 kann einem ersten Knoten des Gesamt-DAG entsprechen. Während jeder Scheitelpunkt 404 des eingebetteten DAG 400 einem Knoten des Gesamt-DAG entsprechen kann, können mehr als ein Scheitelpunkt 404 in den Knoten 402 des eingebetteten DAG enthalten sein.
  • Als Reaktion auf das Erzeugen des eingebetteten DAG 400 kann das verteilte Rechensystem den eingebetteten DAG 400 auslösen oder anderweitig aktivieren. Das Auslösen des eingebetteten DAG 400 kann ein Durchqueren des eingebetteten DAG 400 bewirken, bei dem Daten an bestimmte Knoten des Gesamt-DAG übertragen werden können. Zum Beispiel kann das Durchqueren des eingebetteten DAG 400 bewirken, dass der Scheitelpunkt 404-C Daten oder andere Informationen an einen entsprechenden Knoten in dem Gesamt-DAG überträgt, die sich auf das Durchqueren des Gesamt-DAG beziehen. Einige Beispiele für die anderen Informationen können Metadaten beinhalten, die sich auf den Gesamt-DAG beziehen, darauf, wie viele weitere Prozesse die Knoten ausführen sollen, dass die aktuelle Durchquerung des Gesamt-DAG der letzte Satz von Prozessen ist, den die Knoten durchführen sollen, usw. Eine erfolgreiche Durchquerung des eingebetteten DAG 400 kann dazu führen, dass jeder Knoten der Knoten des Gesamt-DAG erfolgreich Informationen, die für die Durchquerung des Gesamt-DAG relevant sind, mit anderen Knoten der Knoten des Gesamt-DAG austauscht.
  • 5 ist ein Blockdiagramm 500 eines DAG 502 und zweier geklonter DAGs 504 und 506 in einem verteilten Rechensystem gemäß einigen Ausführungsformen. Der DAG 502 kann einem Gesamt-DAG ähnlich oder identisch mit diesem sein, und in einigen Beispielen kann der DAG 502 einen Teilsatz des Gesamt-DAG sein, den ein verteiltes Rechensystem (z. B. das Rechensystem 204 aus 2) durchqueren möchte. Die DAGs 504 und 506 können Klone des DAG 502 sein, was bedeutet, dass die DAGs 504 und 506 mit dem DAG 502 identisch sein können. Somit können in Ausführungsformen, in denen der DAG 502 ein Abschnitt des Gesamt-DAG ist, mit anderen Worten ein Teilsatz eines übergeordneten DAG ist, die geklonten DAGs 504, 506 Klone des Abschnitts des Gesamt-DAG sein. In einigen Ausführungsformen, in denen ein übergeordneter DAG in mehrere Abschnitte unterteilt ist, können ein oder mehrere geklonte DAGs für jeden dieser Abschnitte des übergeordneten DAG erzeugt werden.
  • Wie in dem Blockdiagramm 500 veranschaulicht, beinhaltet jeder DAG der DAGs 502, 504 und 506 vier Scheitelpunkte und vier Kanten. Während zwei geklonte DAGs, bei denen es sich um die DAGs 504 und 506 handelt, in dem Blockdiagramm 500 gezeigt sind, kann eine beliebige geeignete Anzahl von geklonten DAGs erzeugt oder genutzt werden, um die parallele Verarbeitungskapazität zu erhöhen.
  • Der DAG 502 kann den Scheitelpunkt VI, den Scheitelpunkt V2, den Scheitelpunkt V3 und den Scheitelpunkt V4 beinhalten und kann Kanten beinhalten, welche die Scheitelpunkte V1, V2, V3 und V4 miteinander verbinden. Das Durchqueren des DAG 502 kann das Ausführen von Vorgängen an den Scheitelpunkten V1, V2, V3 und V4 und das Durchqueren der Kanten beinhalten. Der DAG 502 kann in einem Knoten (z. B. dem Knoten A) beinhaltet sein, aber der DAG 502 kann mit anderen Knoten (z. B. dem Knoten B oder dem Knoten C) verbunden sein. Das verteilte Rechensystem kann den DAG 502 klonen, um die Geschwindigkeit oder Effizienz beim Durchqueren des Gesamt-DAG zu erhöhen. Das verteilte Rechensystem kann die DAGs 504 und 506 erzeugen, die mit dem DAG 502 identisch sein können. In einigen Beispielen kann das verteilte Rechensystem die DAGs 502, 504 und 506 in Vorwärtsrichtung und dann in Rückwärtsrichtung durchqueren. Genau gesagt, kann das verteilte Rechensystem jeden von dem DAG 502, dem DAG 504 und dem DAG 506 in einer Vorwärtsrichtung und in einer Rückwärtsrichtung durchqueren. Dieses Durchqueren kann seriell oder parallel erfolgen.
  • Während des Durchquerens der DAGs 502, 504 und 506 können entsprechende Scheitelpunkte innerhalb der DAGs 502, 504, 506 Gradienten austauschen oder anderweitig übertragen und empfangen. Während oder nach einer Vorwärtsdurchquerung der DAGs 502, 504 und 506 kann das verteilte Rechensystem Scheitelpunktgradienten für zugehörige Knoten berechnen. Während oder nach einer Rückwärtsdurchquerung der DAGs 502, 504 und 506 kann das verteilte Rechensystem umgekehrte Scheitelpunktgradienten für zugehörige Knoten berechnen. Das verteilte Rechensystem kann die Scheitelpunktgradienten mit den umgekehrten Scheitelpunktgradienten vergleichen, um Gewichtungen in den DAGs 502, 504 und 506 zu aktualisieren. Entsprechende Knoten innerhalb der DAGs 502, 504, 506 können ihre Gradienten austauschen, und ein durchschnittlicher Gradient kann für jeden Knoten in den DAGs 502, 504, 506 berechnet werden, wobei der durchschnittliche Gradient dann zum Aktualisieren von Gewichtungen in den DAGs 502, 504, 506 verwendet werden kann.
  • 6 ist ein Ablaufdiagramm eines Prozesses 600 zum Trainieren und Nutzen massiv paralleler neuronaler Netzwerke gemäß einigen Ausführungsformen. Bei Block 602 beinhaltet der Prozess 600 das Erzeugen oder Empfangen eines DAG. Ein verteiltes Rechensystem (z. B. das Rechensystem 204 aus 2) kann den DAG basierend auf Anweisungen erzeugen, die durch das verteilte Rechensystem empfangen werden. Zusätzlich oder alternativ dazu kann das verteilte Rechensystem den DAG empfangen. Der DAG kann eine beliebige geeignete Anzahl von Scheitelpunkten und Kanten zum Ausführen des Prozesses 600 beinhalten.
  • Bei Block 604 beinhaltet der Prozess 600 das Aufteilen des DAG auf Knoten. Das Rechensystem kann eine beliebige geeignete Anzahl von Knoten zum Ausführen des Prozesses 600 beinhalten und der bei Block 602 empfangene oder erzeugte DAG kann auf die in dem Rechensystem beinhalteten Knoten aufgeteilt werden. Zum Beispiel kann in einem verteilten Rechensystem mit drei Knoten, Knoten A, Knoten B und Knoten C, das einen DAG mit sieben Scheitelpunkten, Scheitelpunkt i, Scheitelpunkt ii, Scheitelpunkt iii, Scheitelpunkt iv, Scheitelpunkt v, Scheitelpunkt vi und Scheitelpunkt vii, empfängt, das verteilte Rechensystem Scheitelpunkt i und Scheitelpunkt ii in Knoten A setzen, kann Scheitelpunkt iii, Scheitelpunkt iv und Scheitelpunkt v in Knoten B setzen und kann Scheitelpunkt vi und Scheitelpunkt vii in Knoten C setzen. Die Scheitelpunkte des DAG können durch die Kanten über Knoten auf beliebige geeignete Weise zum Ausführen des Prozesses 600 verbunden sein. Zusätzlich dazu können die Scheitelpunkte den Knoten zugewiesen werden, und diese Zuweisung kann durch Lastausgleich (z. B. mindestens teilweise basierend auf der erwarteten Last) bestimmt werden.
  • Bei Block 606 beinhaltet der Prozess 600 das Identifizieren von Kanten, die Scheitelpunkte über Grenzen hinweg verbinden. Der DAG kann Scheitelpunkte und Kanten umfassen, und in einigen Beispielen können die Scheitelpunkte auf mehr als einen Knoten des verteilten Rechensystems verteilt sein. Als Reaktion darauf, dass das verteilte Rechensystem den DAG auf die Knoten aufteilt, kann das verteilte Rechensystem Kanten des DAG identifizieren, welche Scheitelpunkte verbinden, die sich nicht in demselben Knoten befinden.
  • Bei Block 608 beinhaltet der Prozess 600 das Einfügen eines Datenaustauschscheitelpunkts (z. B. des beispielhaften Datenaustauschscheitelpunkts 300 aus 3) an einer Verbindungsstelle von separaten Knoten. In einem Beispiel, in dem das verteilte Rechensystem eine Kante identifiziert, die Scheitelpunkte zwischen zwei Knoten verbindet, kann das verteilte Rechensystem den Datenaustauschscheitelpunkt an einer Verbindungsstelle der zwei Knoten einfügen. Das verteilte Rechensystem kann eine beliebige geeignete Anzahl von Datenaustauschscheitelpunkten einfügen, die einer Kante entsprechen, welche zwei separate Knoten verbindet.
  • Bei Block 610 beinhaltet der Prozess 600 das Bereitstellen einer DAG-Karte für jeden Scheitelpunkt in dem DAG. Die DAG-Karte kann Informationen in Bezug auf durch den DAG durchzuführende Vorgänge beinhalten, die eine Reihenfolge von Scheitelpunkten beinhalten können, in welcher der DAG durchquert wird. In diesem Beispiel kennt nicht nur der erste Scheitelpunkt in dem DAG die Reihenfolge, in welcher der DAG durchquert wird, sondern alle Scheitelpunkte in dem DAG kennen diese. Dies kann es den Scheitelpunkten nach dem ersten Scheitelpunkt in dem DAG ermöglichen, sich auf die Ausführung von Aufgaben vorzubereiten, die mit dem Durchqueren des DAG assoziiert sind, und kann zu einer schnelleren oder effizienteren Ausführung des DAG führen. In anderen Beispielen kann die Reihenfolge weggelassen werden, aber andere Aufgaben oder Vorgänge können beinhaltet sein, die, wenn jeder Scheitelpunkt über mehr eingehende Informationen in Bezug auf die anderen Aufgaben oder Vorgänge benachrichtigt wird, zu einer schnelleren oder effizienteren Ausführung der anderen Aufgaben oder Vorgänge führen können. Es kann eine beliebige geeignete Anzahl von Aufgaben oder Vorgängen zum Darstellen des DAG beinhaltet sein.
  • Bei Block 612 beinhaltet der Prozess 600 das Durchführen einer topologischen Sortierung der Scheitelpunkte des DAG, um eine Verarbeitungsreihenfolge zu bestimmen. Nachdem die Scheitelpunkte die DAG-Karte empfangen haben, kann das verteilte Rechnen eine topologische Sortierung an den Scheitelpunkten durchführen, was bedeutet, dass das verteilte Rechensystem die Reihenfolge bestimmen kann, in der die Scheitelpunkte durchquert werden sollen. In einigen Beispielen kann die topologische Sortierung eine deterministische topologische Sortierung sein, die eine Reihenfolge von Vorgängen zum Durchqueren des DAG bestimmen kann. Die Reihenfolge der Scheitelpunkte kann einer Reihenfolge der Knoten ähnlich oder identisch mit dieser sein. Zum Beispiel kann Knoten A Scheitelpunkt i, Scheitelpunkt ii und Scheitelpunkt iv beinhalten und kann Knoten B Scheitelpunkt iii und Scheitelpunkt v beinhalten. Ein DAG dieses Beispiels kann das Durchqueren der Scheitelpunkte in der folgenden Reihenfolge beinhalten: Scheitelpunkt i, Scheitelpunkt ii, Scheitelpunkt iii, Scheitelpunkt iv und dann Scheitelpunkt v. Beim Durchqueren des DAG auf diese Weise kann die Verbindungsstelle zwischen Knoten A und Knoten B mehr als einmal gekreuzt werden, was bedeutet, dass mehr als ein Datenaustauschscheitelpunkt durch das verteilte Rechensystem eingefügt werden kann.
  • Bei Block 614 beinhaltet der Prozess 600 das Durchqueren des DAG. Nach dem topologischen Sortieren der Scheitelpunkte des DAG kann das verteilte Rechensystem den DAG durchqueren. Die Durchquerung des DAG kann das Ausführen von Aufgaben oder anderen Arten von Vorgängen, die mit der DAG assoziiert sind, beinhalten. Die Durchquerung des DAG kann zur Durchquerung einiger oder aller Scheitelpunkte und Kanten in dem DAG und zur Ausführung einiger oder aller in dem DAG beinhalteten Vorgänge führen. In einigen Ausführungsformen, in denen der DAG einem neuronalen Netzwerk entspricht, kann das Durchqueren des DAG ein Teil des Trainings des neuronalen Netzwerkes sein.
  • 7 ist ein Ablaufdiagramm eines Prozesses 700 zum Weiterleiten eines Tensors über einen Datenaustauschscheitelpunkt (z. B. den beispielhaften Datenaustauschscheitelpunkt 300 aus 3) gemäß einigen Ausführungsformen. Bei Block 702 beinhaltet der Prozess 700, dass ein verteiltes Rechensystem (z. B. das Rechensystem 204 aus 2) die Verarbeitung an einem Sendescheitelpunkt (z. B. dem Sendescheitelpunkt 306 aus 3) abschließt. Das Durchqueren des Gesamt-DAG kann das Verarbeiten von Informationen oder das anderweitige Durchführen eines Vorgangs an dem Sendescheitelpunkt beinhalten. Nach Abschluss der Verarbeitung an dem Sendescheitelpunkt kann das verteilte Rechensystem die Durchquerung des Gesamt-DAG fortsetzen.
  • Bei Block 704 beinhaltet der Prozess 700 das Identifizieren eines nächsten Scheitelpunkts basierend auf einer topologischen Sortierung. Das verteilte Rechensystem kann als Reaktion auf das Abschließen der Verarbeitung an dem Sendescheitelpunkt den nächsten Scheitelpunkt (z. B. den Empfangsscheitelpunkt 308 aus 3) identifizieren, zu dem sich in der Durchquerung bewegt werden soll. Das verteilte Rechensystem kann in der Lage sein, den nächsten Scheitelpunkt basierend auf der topologischen Sortierung der Scheitelpunkte zu identifizieren, die das verteilte Rechensystem zuvor abgeschlossen haben kann (z. B. die topologische Sortierung, die bei Block 612 aus Prozesses 600 durchgeführt wurde).
  • Bei Block 706 beinhaltet der Prozess 700 das Senden von Tensordaten an den Datenaustauschscheitelpunkt. Das verteilte Rechensystem kann die Tensordaten an den Datenaustauschscheitelpunkt übertragen, und der Tensor kann Daten beinhalten, die für die Durchquerung des Gesamt-DAG relevant sind, wie etwa eine DAG-Karte, Vorgänge oder eine Verarbeitung, die an jedem Scheitelpunkt des Gesamt-DAG durchzuführen ist/sind usw. Der Tensor kann beliebige andere geeignete relevante Informationen beinhalten und kann eine beliebige geeignete Rangfolge oder Größe zum Senden von Informationen zum Durchqueren des Gesamt-DAG aufweisen.
  • Bei Block 708 beinhaltet der Prozess 700 das Aktivieren des Datenaustauschscheitelpunkts. Das verteilte Rechensystem kann nach oder vor dem Senden von Tensordaten an den Datenaustauschscheitelpunkt den Datenaustauschscheitelpunkt aktivieren. Bevor das verteilte Rechensystem den Datenaustauschscheitelpunkt aktiviert, kann der Datenaustauschscheitelpunkt inaktiv sein, was bedeutet, dass keine Verarbeitung an dem Datenaustauschscheitelpunkt stattfindet. Während er inaktiv ist, kann der Datenaustauschscheitelpunkt keine Aufgaben ausführen, sondern kann dazu konfiguriert sein, Befehle, wie etwa einen Aktivierungsbefehl, zu empfangen, um den Datenaustauschscheitelpunkt zu aktivieren.
  • Bei Block 710 beinhaltet der Prozess 700 das Weiterleiten eines Rangwertes von einem Sendescheitelpunkt (z. B. dem Sendescheitelpunkt 302 aus 3) an einen Empfangsscheitelpunkt (z. B. den Empfangsscheitelpunkt 304 aus 3). Der Sendescheitelpunkt und der Empfangsscheitelpunkt können in dem Datenaustauschscheitelpunkt beinhaltet sein. Der Sendescheitelpunkt kann den Rangwert anhand der Tensordaten bestimmen, die durch den Sendescheitelpunkt an den Sendescheitelpunkt übertragen werden, und der Sendescheitelpunkt kann die Rangdaten an den Empfangsscheitelpunkt übertragen.
  • Bei Block 712 beinhaltet der Prozess 700 das Weiterleiten eines Vektors von Werten, der eine Form des Tensors angibt. Der Sendescheitelpunkt kann zusätzlich zu dem Rangwert den Vektor von Werten an den Empfangsscheitelpunkt übertragen. Der Rangwert kann die Form des Tensors angeben, was die Datenübertragung über den Datenaustauschscheitelpunkt erleichtern kann. Der Tensor kann eine beliebige geeignete Form zum Übertragen von Informationen über zwei unterschiedliche Knoten aufweisen.
  • Bei Block 714 beinhaltet der Prozess 700 das Weiterleiten eines Wertes, der Daten in dem Tensor charakterisiert. Der Sendescheitelpunkt kann zusätzlich zu dem Vektor von Werten den Wert, der Daten in dem Tensor charakterisiert, an den Empfangsscheitelpunkt übertragen. Der Wert, der Daten in dem Tensor charakterisiert, kann ein beliebiger geeigneter Wert zum Angeben einer Art von Daten sein, die in dem Tensor beinhaltet sind. Die in dem Tensor beinhalteten Daten können beschreiben, wie viele Bytes für jede Zahl in dem Tensor belegt sind, und können zusätzlich Informationen darüber beinhalten, wie die Bytes in eine Zahl zur nachfolgenden Verwendung umgewandelt werden sollen.
  • Bei Block 716 beinhaltet der Prozess 700 das Weiterleiten eines Wertes, der einen Verfolgungsstatus angibt. Der Sendescheitelpunkt kann zusätzlich zu dem Wert, der Daten in dem Tensor charakterisiert, den Wert, der den Verfolgungsstatus angibt, an den Empfangsscheitelpunkt übertragen. Der Wert, der den Verfolgungsstatus angibt, kann ein Wert sein, der angibt, dass ein Gradient rückwärts durch den Datenaustauschscheitelpunkt geleitet werden soll, oder ein beliebiger anderer geeigneter Wert zum Angeben des Verfolgungsstatus sein. Der Verfolgungsstatus kann einen Fortschritt des Gesamt-DAG oder einen beliebigen anderen geeigneten Prozess angeben, dessen Verfolgung gewünscht wird. In einigen Beispielen kann der Verfolgungsstatus einen Gradienten eines neuronalen Netzwerkes verfolgen.
  • Bei Block 718 beinhaltet der Prozess 700 das Weiterleiten des Tensors von dem Sendescheitelpunkt zu dem Empfangsscheitelpunkt. Als Reaktion darauf, dass der Sendescheitelpunkt den Rangwert, den Vektor von Werten, der die Form des Tensors angibt, den Wert, der Daten in dem Tensor charakterisiert, und den Wert überträgt, der den Verfolgungsstatus angibt, kann der Sendescheitelpunkt den Tensor an den Empfangsscheitelpunkt übertragen. Als Reaktion auf das Empfangen des Tensors kann der Empfangsscheitelpunkt den Tensor an den Empfangsscheitelpunkt weiterleiten, wodurch die Übertragung des Tensors von dem Sendescheitelpunkt in einem Knoten zu dem Empfangsscheitelpunkt in einem anderen Knoten abgeschlossen wird.
  • 8 ist ein Ablaufdiagramm eines Prozesses 800 zum Erleichtern der Datenübertragung zwischen Knoten eines Gesamt-DAG gemäß einigen Ausführungsformen. Bei Block 802 beinhaltet der Prozess 800 das Identifizieren eines DAG. Der identifizierte DAG kann in diesem Fall der Gesamt-DAG sein, der ein verteiltes Rechensystem (z. B. das Rechensystem 204 aus 2) durchqueren möchte. Das verteilte Rechensystem kann den DAG identifizieren oder sich anderweitig darauf vorbereiten, einen nachfolgenden DAG basierend auf dem Gesamt-DAG zu erzeugen oder zu empfangen.
  • Bei Block 804 beinhaltet der Prozess 800 das Identifizieren verschiedener Knoten, die dem DAG zugrundeliegen. Der Gesamt-DAG kann eine beliebige geeignete Anzahl von Knoten beinhalten und/oder überlagern, um die Durchquerung des Gesamt-DAG zu ermöglichen, und das verteilte Rechensystem kann die Knoten identifizieren. Die Knoten können anschließend verwendet werden, um mindestens teilweise eine Struktur des nachfolgenden DAG, eine Reihenfolge des nachfolgenden DAG oder beides zu bestimmen.
  • Bei Block 806 beinhaltet der Prozess 800 das Erzeugen von untergeordneten DAG-Knoten innerhalb eines Eintrittsscheitelpunkts. Der Eintrittsscheitelpunkt kann der erste Scheitelpunkt sein, der durch das verteilte Rechensystem in dem Gesamt-DAG durchquert wird. Der untergeordnete DAG kann der nachfolgende DAG sein und ein Beispiel für den untergeordneten DAG kann der eingebettete DAG 400 aus 4 sein. Als Reaktion auf das Identifizieren der verschiedenen Knoten, die dem Gesamt-DAG zugrundeliegen, kann das verteilte Rechensystem damit beginnen, den untergeordneten DAG zu erzeugen, indem es Knoten des untergeordneten DAG erzeugt. Die Knoten des untergeordneten DAG können in dem ersten Scheitelpunkt enthalten sein und können dem beispielhaften Knoten 100 aus 1 ähnlich oder identisch mit diesem sein. Beim Erzeugen der untergeordneten DAG-Knoten kann das verteilte Rechensystem zusätzlich dazu Scheitelpunkte des untergeordneten DAG erzeugen.
  • Bei Block 808 beinhaltet der Prozess 800 das Erzeugen von Kommunikationsverbindungen zwischen Scheitelpunkten des untergeordneten DAG, wobei jeder Scheitelpunkt der Scheitelpunkte des untergeordneten DAG einem Knoten des Gesamt-DAG entspricht, und den Knoten des Gesamt-DAG. Als Reaktion auf eine erfolgreiche Erzeugung des untergeordneten DAG, der Knoten und Scheitelpunkte aufweist, kann das verteilte Rechensystem Kommunikationsverbindungen zwischen den Scheitelpunkten des untergeordneten DAG und den Knoten des Gesamt-DAG herstellen oder anderweitig erzeugen. Die Kommunikationsverbindungen können die Übertragung von Daten oder Metadaten zwischen Knoten des Gesamt-DAG ermöglichen.
  • Bei Block 810 beinhaltet der Prozess 800 das Empfangen von Daten und Metadaten. Im Anschluss an das Herstellen der Kommunikationsverbindungen zwischen den Scheitelpunkten des untergeordneten DAG und den Knoten des Gesamt-DAG kann das verteilte Rechensystem Daten und Metadaten empfangen, abfragen und/oder abrufen. Im vorliegenden Zusammenhang deckt „Empfangen“ einen beliebigen Mechanismus oder ein beliebiges Verfahren ab, bei dem die Daten und Metadaten bei dem DAG ankommen. Die Daten und Metadaten können sich auf die Durchquerung des Gesamt-DAG beziehen und einige Beispiele für die Daten und Metadaten können auszuführende Prozesse, eine erwartete Menge von nachfolgenden zu empfangenden Informationen usw. beinhalten. Das verteilte Rechensystem kann die empfangenen Daten und Metadaten in den untergeordneten DAG aufnehmen, um die Übertragung der Daten und Metadaten zwischen den Knoten des Gesamt-DAG zu erleichtern.
  • In einigen Ausführungsformen können die empfangenen Daten einen Datenstapel umfassen, der Trainingsdaten oder Daten zur Verarbeitung durch den DAG beinhalten kann. In einigen Ausführungsformen kann zum Beispiel ein Zeitraum (zum Trainieren, ein Vorwärts- und Rückwärtsdurchlauf durch einen vollständigen gewünschten Satz von Trainingsdaten oder, zum Erzeugen einer Vorhersage mit dem DAG, ein Vorwärtsdurchlauf durch einen vollständigen gewünschten Datensatz) in eine Anzahl von Stapeln unterteilt sein, wobei die Gesamtheit der Stapel den vollständigen gewünschten Datensatz umfassen kann. In Ausführungsformen, in denen Datenstapel durch einen DAG geleitet werden, wie etwa ein neuronales Netzwerk als Teil des Trainings oder zum Erzeugen einer Vorhersage mit diesem neuronalen Netzwerk, werden diese Stapel an einen Eintrittsscheitelpunkt weitergeleitet, wobei der Eintrittsscheitelpunkt ein erster Scheitelpunkt in dem DAG sein kann, der die Stapel empfängt. Der DAG kann in einigen Ausführungsformen einen einzelnen Eintrittsscheitelpunkt umfassen und in einigen Ausführungsformen kann der DAG eine Vielzahl von Eintrittsscheitelpunkten umfassen. Zusammen mit Daten, die den Stapel bilden, kann der Eintrittsscheitelpunkt Metadaten empfangen, die Informationen bezüglich des Stapels beinhalten. In einigen Ausführungsformen können diese Metadaten Informationen beinhalten, wie etwa die Position dieses Stapels in einer Reihe von Stapeln, die den Zeitraum bilden. Dies kann zum Beispiel das Angeben beinhalten, dass der vorliegende Stapel die Stapelnummer „X“ einer Gesamtzahl von „Y“ Stapeln ist. Die Metadaten können Informationen beinhalten, die angeben, ob der durch den Eintrittsscheitelpunkt empfangene Stapel ein letzter Stapel oder ein vorletzter Stapel ist. In einigen Ausführungsformen können diese Metadaten angeben, ob weitere Stapel durch den Eintrittsscheitelpunkt empfangen werden oder ob keine weiteren Stapel durch den Eintrittsscheitelpunkt empfangen werden.
  • Der Eintrittsscheitelpunkt kann diese Informationen an andere Scheitelpunkte in dem DAG kommunizieren. Wenn diese Informationen vorliegen, können andere Scheitelpunkte innerhalb des DAG erfahren, ob sie den Empfang weiterer Stapel erwarten sollen. Die Benachrichtigung anderer Scheitelpunkte in dem DAG basierend auf Metadaten, die durch den Eintrittsscheitelpunkt empfangen werden, ist eine Herausforderung, wenn die Scheitelpunkte des DAG auf eine Vielzahl von Knoten verteilt sind. Genau gesagt, wenn sich alle Scheitelpunkte auf einem einzelnen Knoten befinden, der dem DAG zugrundeliegt, werden diese Informationen aus den Metadaten bei Empfang dieser Informationen durch den Eintrittsscheitelpunkt leicht und/oder implizit an die anderen Scheitelpunkte des DAG weitergegeben. Die vorliegende Erfindung stellt die Kommunikation dieser Informationen aus den Metadaten an andere Knoten, die Scheitelpunkte des DAG enthalten, über die Erzeugung eines untergeordneten DAG in dem Eintrittsscheitelpunkt bereit, wie in Block 806 erzeugt.
  • Bei Block 812 beinhaltet der Prozess 800 das Abgeben der Daten an einen nachfolgenden Scheitelpunkt. Als Reaktion darauf, dass das verteilte Rechensystem die Daten empfängt und diese in den untergeordneten DAG aufnimmt, kann das verteilte Rechensystem die Daten an den nachfolgenden Scheitelpunkt abgeben. In einigen Beispielen kann diese Abgabe durch eine einfache Durchquerung des untergeordneten DAG erreicht werden. In anderen Beispielen kann das verteilte Rechensystem außerhalb der Durchquerung des untergeordneten DAG die Daten an den nächsten Scheitelpunkt abgeben, um die Durchquerung des untergeordneten DAG oder des Gesamt-DAG zu ermöglichen. Die Abgabe der Daten kann zusätzlich oder alternativ dazu die Übertragung von Daten zwischen den Knoten des Gesamt-DAG ermöglichen.
  • Bei Block 814 beinhaltet der Prozess 800 das Kommunizieren von Metadaten an die Knoten des Gesamt-DAG über den untergeordneten DAG. In einigen Beispielen kann eine erfolgreiche Durchquerung des untergeordneten DAG durch das verteilte Rechensystem zu einer Übertragung der Metadaten zwischen den Knoten des gesamten DAG führen. Die Metadaten können Informationen beinhalten, wie etwa eine Menge von erwarteten Informationen oder Prozessen, die anschließend empfangen werden sollen usw. Das verteilte Rechensystem kann eine beliebige geeignete Anzahl von untergeordneten DAGs erzeugen, um die Übertragung relevanter Daten und Metadaten zwischen den Knoten des Gesamt-DAG zu ermöglichen.
  • 9 ist ein Ablaufdiagramm eines Prozesses 900 zum Erzeugen eines Datenaustauschscheitelpunkts (z. B. des beispielhaften Datenaustauschscheitelpunkts 300 aus 3) gemäß einigen Ausführungsformen. Bei Block 902 beinhaltet der Prozess 900 das Identifizieren eines ersten Scheitelpunkts. Ein verteiltes Rechensystem (z. B. das Rechensystem 204 aus 2) kann dazu konfiguriert sein, beim Durchqueren eines Gesamt-DAG den ersten Scheitelpunkt zu identifizieren, wobei der erste Scheitelpunkt in dem Gesamt-DAG beinhaltet ist und in einem Knoten (z. B. dem beispielhaften Knoten 100 aus 1) beinhaltet ist. Der erste Scheitelpunkt kann mit anderen Scheitelpunkten innerhalb des Gesamt-DAG verbunden sein.
  • Bei Block 904 beinhaltet der Prozess das Verfolgen einer Kante von dem ersten Scheitelpunkt zu einem zweiten Scheitelpunkt. Das verteilte Rechensystem kann dazu konfiguriert sein, die Kante zu verfolgen oder anderweitig zu identifizieren, die in dem Gesamt-DAG beinhaltet sein kann. Der zweite Scheitelpunkt kann in dem Gesamt-DAG beinhaltet sein und die Kante kann den ersten Scheitelpunkt und den zweiten Scheitelpunkt verbinden. Der erste Scheitelpunkt und der zweite Scheitelpunkt können in demselben Knoten oder in unterschiedlichen Knoten beinhaltet sein.
  • Bei Block 906 beinhaltet der Prozess das Identifizieren eines Knotens des ersten Scheitelpunkts und eines Knotens des zweiten Scheitelpunkts, im Folgenden jeweils als der erste Knoten bzw. der zweite Knoten bekannt. Das verteilte Rechensystem kann dazu konfiguriert sein, den ersten Knoten und den zweiten Knoten zu identifizieren. Die Durchquerung des DAG kann mit dem ersten Scheitelpunkt beginnen und basierend auf einer Reihenfolge von Vorgängen basierend auf einer topologischen Sortierung (z. B. der bei Block 612 aus Prozess 600 durchgeführten topologischen Sortierung) fortschreiten.
  • Bei Block 908 beinhaltet der Prozess 900 das Bestimmen, ob es sich bei dem ersten Knoten und dem zweiten Knoten um den gleichen Knoten handelt oder nicht. Das verteilte Rechensystem kann in der Lage sein, zu bestimmen, ob es sich bei dem ersten Knoten und dem zweiten Knoten um den gleichen Knoten handelt. In einem Beispiel, in dem es sich bei dem ersten und dem zweiten Knoten um den gleichen handelt, kann es wünschenswert sein, dass keine weitere Maßnahme ergriffen wird. In einem Beispiel, in dem sich der erste und der zweite Knoten unterscheiden, kann j edoch gewünscht werden, dass Maßnahmen ergriffen werden, um die Datenübertragung über den ersten Knoten und den zweiten Knoten zu erleichtern.
  • Bei Block 910 beinhaltet der Prozess 900 das Festlegen des zweiten Scheitelpunkts auf den ersten Scheitelpunkt. Als Reaktion auf das Bestimmen, dass es sich bei dem ersten Knoten und dem zweiten Knoten um den gleichen handelt, kann das verteilte Rechensystem dazu konfiguriert sein, zu einem anderen Satz von Scheitelpunkten überzugehen. In einem solchen Fall kann das verteilte Rechensystem den zweiten Scheitelpunkt als den ersten Scheitelpunkt festlegen und der Prozess 900 kann von Block 902 aus neu beginnen. In anderen Beispielen kann das verteilte Rechensystem den Prozess 900 von Block 902 aus neu beginnen, wobei ein erster Scheitelpunkt identifiziert wird, der sich von dem zweiten Scheitelpunkt unterscheidet. Das verteilte Rechensystem kann den Prozess 900 beliebig oft wiederholen, um über alle in den Gesamt-DAG beinhalteten Kanten zu iterieren.
  • Bei Block 912 beinhaltet der Prozess 900 das Aufspalten der Kante, die den ersten Scheitelpunkt und den zweiten Scheitelpunkt verbindet. Als Reaktion auf das Bestimmen, dass sich der erste Knoten und der zweite Knoten unterscheiden, kann das verteilte Rechensystem die Kante aufspalten, die den ersten Scheitelpunkt und den zweiten Scheitelpunkt verbindet. Die Kante kann an einer Verbindungsstelle des ersten Knotens und des zweiten Knotens aufgespalten werden, um die Datenübertragung zwischen dem ersten Knoten und dem zweiten Knoten zu erleichtern.
  • Bei Block 914 beinhaltet der Prozess 900 das Einfügen eines Datenaustauschscheitelpunkts (z. B. des beispielhaften Datenaustauschscheitelpunkts 300 aus 3) an einer Verbindungsstelle der aufgespaltenen Kante. Nach dem Aufspalten der Kante bei Block 912 kann das verteilte Rechensystem den Datenaustauschscheitelpunkt einfügen. Der Datenaustauschscheitelpunkt kann an der Verbindungsstelle des ersten Knotens und des zweiten Knotens eingefügt werden. Der Datenaustauschscheitelpunkt kann den ersten Scheitelpunkt und den zweiten Scheitelpunkt verbinden und kann die Datenübertragung zwischen dem ersten Knoten und dem zweiten Knoten erleichtern.
  • 10 ist ein Ablaufdiagramm eines Prozesses 1000 zum Aktualisieren von Gewichtungen über geklonte DAGs gemäß einigen Ausführungsformen. Bei Block 1002 beinhaltet der Prozess 1000 das Empfangen, Identifizieren oder Erzeugen eines ersten DAG. Ein verteiltes Rechensystem (z. B. das Rechensystem 204 aus 2) kann den ersten DAG empfangen oder erzeugen, der verschiedene Vorgänge darstellen kann, die durch das verteilte Rechensystem durchgeführt werden sollen. Das verteilte Rechensystem kann den DAG aus einer Benutzereingabe oder einer beliebigen anderen geeigneten Quelle empfangen, oder das verteilte Rechensystem kann den DAG basierend auf einer Konfigurationsdatei oder einer beliebigen anderen geeigneten Quelle zum Erzeugen von DAGs erzeugen.
  • Bei Block 1004 beinhaltet der Prozess 1000 das Identifizieren von Knoten und Scheitelpunkten in dem ersten DAG. Der erste DAG kann eine beliebige geeignete Anzahl von Scheitelpunkten über eine beliebige geeignete Anzahl von Knoten zum Verarbeiten oder anderweitigen Durchführen von Vorgängen, die in einem Gesamt-DAG beinhaltet sind, beinhalten. Der erste DAG kann ein Teilsatz des Gesamt-DAG sein. Das verteilte Rechensystem kann die Knoten und die Scheitelpunkte des ersten DAG zur nachfolgenden Verwendung identifizieren.
  • Bei Block 1006 beinhaltet der Prozess 1000 das Erzeugen von mindestens einem geklonten DAG. In einigen Beispielen kann der erste DAG dem DAG 502 aus 5 ähnlich oder identisch mit diesem sein und kann der mindestens eine geklonte DAG den DAGs 504 oder 506 aus 5 ähnlich oder identisch mit diesen sein. Das verteilte Rechensystem kann als Reaktion auf das Identifizieren der Knoten und der Scheitelpunkte des ersten DAG mindestens einen geklonten DAG erzeugen. Der mindestens eine geklonte DAG kann mit dem ersten DAG identisch sein, kann jedoch in einigen Beispielen Knoten beinhalten, die sich von den Knoten des ersten DAG unterscheiden.
  • Bei Block 1008 beinhaltet der Prozess 1000 das Anwenden einer inkrementellen Benennung über die Knoten des mindestens einen geklonten DAG. Bei der Erzeugung des mindestens einen geklonten DAG kann das verteilte Rechensystem Namen auf die Knoten des mindestens einen geklonten DAG anwenden. Der mindestens eine geklonte DAG kann eine beliebige geeignete Anzahl von Knoten zum Durchqueren des mindestens einen geklonten DAG beinhalten. In einigen Beispielen, in denen mehr als ein geklonter DAGs erzeugt wird, kann das verteilte Rechensystem die Namen in inkrementeller Reihenfolge anwenden, um die mehr als einen geklonten DAGs leichter oder effizienter zu durchqueren und nachzuverfolgen.
  • Bei Block 1010 beinhaltet der Prozess 1000 das Benachrichtigen entsprechender Scheitelpunkte des ersten DAG und des mindestens einen geklonten DAG. Das verteilte Rechensystem kann Scheitelpunkte des ersten DAG und Scheitelpunkte des mindestens einen geklonten DAG auf das Vorhandensein der jeweils anderen aufmerksam machen. Wenn zum Beispiel Scheitelpunkt A des ersten DAG Scheitelpunkt B des geklonten DAG entspricht, kann das verteilte Rechensystem Scheitelpunkt A benachrichtigen, dass Scheitelpunkt B existiert, und kann Scheitelpunkt B benachrichtigen, dass Scheitelpunkt A existiert. Zusätzlich dazu kann in diesem Beispiel die durch das verteilte Rechensystem übertragene Benachrichtigung Informationen beinhalten, die dem Scheitelpunkt A und dem Scheitelpunkt B mitteilen, dass der Scheitelpunkt A und der Scheitelpunkt B die gleichen oder ähnliche Vorgänge gemäß dem verteilten Rechensystem, das den ersten DAG durchquert und den geklonten DAG durchquert, durchführen sollen.
  • Bei Block 1012 beinhaltet der Prozess 1000 das Aufnehmen von Daten in den ersten DAG und den mindestens einen geklonten DAG. Als Reaktion auf das Benachrichtigen der entsprechenden Scheitelpunkte kann das verteilte Rechensystem Daten in den ersten DAG und in den mindestens einen geklonten DAG aufnehmen. Die Daten können beliebige geeignete Daten zum Erleichtern des Durchquerens des ersten DAG und des mindestens einen geklonten DAG beinhalten. In einigen Ausführungsformen können die in den DAG und den mindestens einen geklonten DAG aufgenommenen Daten identisch sein, und in einigen Ausführungsformen sind die in den DAG und den mindestens einen geklonten DAG aufgenommenen Daten möglicherweise nicht identisch. In einigen Ausführungsformen kann das Trainieren mit einem Datensatz beschleunigt werden, indem die Daten in mehrere nicht identische Teilsätze aufgespalten werden und der DAG auf einen Teil dieser nicht identischen Teilsätze trainiert wird und jeder des mindestens einen geklonten DAG auf andere trainiert wird.
  • Bei Block 1014 beinhaltet der Prozess 1000 das Abschließen eines Vorwärtsdurchlaufs durch den ersten DAG und durch den mindestens einen geklonten DAG. Bei erfolgreicher Aufnahme von Daten in den ersten DAG und in den mindestens einen geklonten DAG kann das verteilte Rechensystem den ersten DAG und den mindestens einen geklonten DAG in einer Vorwärtsreihenfolge durchqueren.
  • Bei Block 1016 beinhaltet der Prozess 1000 das Fortschreiten durch den ersten DAG und den mindestens einen geklonten DAG und das Identifizieren zugehöriger Scheitelpunkte. Während der Durchquerung des ersten DAG und des mindestens einen geklonten DAG in Vorwärtsreihenfolge kann das verteilte Rechensystem entsprechende oder anderweitig zugehörige Scheitelpunkte identifizieren. Das verteilte Rechensystem kann Informationen anfordern oder empfangen oder anderweitig eine Datenübertragung zu oder von den zugehörigen Scheitelpunkten ermöglichen.
  • Bei Block 1018 beinhaltet der Prozess 1000 das Durchführen eines Rückwärtsdurchlaufs durch den mindestens einen geklonten DAG und durch den ersten DAG. Das verteilte Rechensystem kann den ersten DAG und den mindestens einen geklonten DAG in umgekehrter Reihenfolge im Vergleich zu der Durchquerung bei Block 1014 durchqueren. Die Rückwärtsdurchquerung kann ähnliche oder identische Schritte beinhalten wie die Durchquerung bei Block 1014. In einigen Ausführungsformen kann der Rückwärtsdurchlauf die Erzeugung eines Gradienten für jeden der Scheitelpunkte der DAG und/oder des/der Klon-DAG(s) beinhalten. Somit kann in einigen Ausführungsformen jeder Scheitelpunkt jedes von dem DAG und dem/den Klon-DAG(s) einen assoziierten Gradienten aufweisen. In einigen Ausführungsformen, in denen ein anderer Datensatz zum Trainieren des DAG im Vergleich zu dem mindestens einen Klon-DAG verwendet wird, können sich die durch Scheitelpunkte des DAG erzeugten Gradienten von den Gradienten unterscheiden, die durch entsprechende Klonscheitelpunkte des mindestens einen Klon-DAG erzeugt werden.
  • Bei Block 1020 beinhaltet der Prozess 1000 das Empfangen oder Austauschen zugehöriger Scheitelpunktgradienten. Diese Scheitelpunktgradienten können als Teil von Block 1018 durch das verteilte Rechensystem erzeugt werden. Die Scheitelgradienten können bestimmt und nach Knoten gruppiert werden, und in einigen Beispielen ist nur ein Knoten in dem ersten DAG und in dem mindestens einen geklonten DAG vorhanden, für den die Scheitelgradienten bestimmt und alle zusammen gruppiert werden würden.
  • Bei Block 1022 beinhaltet der Prozess 1000 das Berechnen von aggregierten Gradienten, die in dieser Schrift auch als aggregierte Gradientendaten bezeichnet werden. In einigen Ausführungsformen kann ein aggregierter Gradient durch einen Zusammenfassungsvorgang berechnet werden, der an Gradienten von entsprechenden Scheitelpunkten in dem DAG und in dem/den Klon-DAG(s) durchgeführt wird. Der aggregierte Gradient kann in einigen Ausführungsformen Folgendes sein: ein Mediangradient; ein Mittelgradient, wie etwa ein arithmetischer Mittelwert, ein geometrischer Mittelwert oder ein harmonischer Mittelwert; oder dergleichen. Die aggregierten Gradienten können während oder nach der Durchquerung oder dem Training des ersten DAG, des mindestens einen geklonten DAG oder einer Kombination daraus berechnet werden. In einigen Beispielen, in denen nur ein Knoten in dem ersten DAG und in dem mindestens einen geklonten DAG vorhanden ist, kann das verteilte Rechensystem einen aggregierten Gradienten für die zugehörigen Knoten berechnen. In anderen Beispielen kann das verteilte Rechensystem einen aggregierten Gradienten für jeden zugehörigen Knoten in dem ersten DAG und in dem mindestens einen geklonten DAG berechnen. In einigen Beispielen können die Scheitelpunkt- oder aggregierten Gradienten durch das verteilte Rechensystem berechnet werden, indem ein Verlust berechnet wird, bei dem es sich um eine Differenz zwischen einer Durchquerungsausgabe und einer Ziel- oder erwarteten Durchquerungsausgabe handelt. Die Durchquerung kann eine Vorwärtsdurchquerung, eine Rückwärtsdurchquerung oder beides sein.
  • In einigen Ausführungsformen kann das Berechnen von aggregierten Gradienten zu einer Gleichmäßigkeit zwischen Gradienten von entsprechenden Scheitelpunkten des DAG und des mindestens einen Klon-DAG führen. Genau gesagt, kann der Gradient jedes von einer Gruppe entsprechender Scheitelpunkte des DAG und des mindestens einen Klon-DAG durch einen aggregierten Gradienten ersetzt werden, der anhand der Gradienten einiger oder aller der entsprechenden Scheitelpunkte erzeugt wird. Somit können Differenzen bei den Gradienten der entsprechenden Scheitelpunkte, wobei die Differenzen aufgrund der Verwendung unterschiedlicher Teilsätze von Daten beim Trainieren des DAG und des mindestens einen Klon-DAG auftreten können, minimiert und/oder beseitigt werden.
  • Bei Block 1024 beinhaltet der Prozess 1000 das Aktualisieren von Gewichtungen, die mit dem DAG assoziiert sind. Diese Gewichtungen werden basierend auf den berechneten aggregierten Gradienten aktualisiert. In einigen Ausführungsformen kann dies gemäß synchronen Gradientenaktualisierungen oder gemäß asynchronen Gradientenaktualisierungen durchgeführt werden. In einigen Ausführungsformen kann das Durchführen synchroner Gradientenaktualisierungen das Bestimmen, dass der aggregierte Gradient für jeden der entsprechenden Scheitelpunkte identisch ist, und dann das Aktualisieren der relevanten Gewichtung(en) basierend auf diesem aggregierten Gradienten beinhalten. In einigen Ausführungsformen kann das Aktualisieren der Gewichtungen gemäß einem beliebigen geeigneten Algorithmus durchgeführt werden, einschließlich zum Beispiel: stochastischem Gradientenabstieg mit Dynamik; stochastischem Gradientenabstieg ohne Dynamik; AdaGrad; RMSProp; oder dergleichen. Das Aktualisieren der Gewichtungen kann zu besseren nachfolgenden Durchquerungen führen, was bedeuten kann, dass nachfolgende Differenzen zwischen den Ausgaben von Durchquerungen und den erwarteten oder Zielausgaben von Durchquerungen näher bei oder gleich null sind.
  • Ein beliebiges geeignetes Rechensystem oder eine beliebige Gruppe von Rechensystemen kann zum Durchführen der in dieser Schrift beschriebenen Vorgänge oder Verfahren verwendet werden.
  • Zum Beispiel veranschaulicht 11 ein Fahrzeugsystem, das ein Rechensystem 1102 sowie mehrere ECUs beinhaltet, die einige oder alle der in dieser Schrift beschriebenen Funktionen durchführen können. 12 stellt ferner ein Beispiel für eine Rechenvorrichtung 1200 dar, die mindestens ein Teil des Rechensystems 1102 sein kann.
  • 11 veranschaulicht ein Blockdiagramm eines Fahrzeugsystems 1100 gemäß einigen Ausführungsformen.
  • Das Fahrzeugsystem 1100 kann ein Rechensystem 1102 beinhalten, das dazu konfiguriert ist, über ein fahrzeuginternes Netzwerk 1114 zu kommunizieren. Das Rechensystem 1102 beinhaltet einen Prozessor 1104 und einen Speicher 1106. Wenngleich in 11 ein Fahrzeugsystem 1100 gezeigt ist, sollen die veranschaulichten beispielhaften Komponenten nicht einschränkend sein. Tatsächlich kann das Fahrzeugsystem 1100 mehr oder weniger Komponenten aufweisen und es können zusätzliche oder alternative Komponenten und/oder Umsetzungen verwendet werden. Es ist anzumerken, dass die Verwendung einer Umgebung des Fahrzeugsystems 1100 veranschaulichend ist, da die Komponenten und/oder Funktionen in anderen Arten von Systemen genutzt werden können, wie etwa in einem Flugsteuersystem in einem Luftfahrzeug oder in einer medizinischen Vorrichtung oder Industriemaschine.
  • Das Fahrzeugsystem 1100 kann verschiedene Arten von Automobilen, Softroadern (crossover utility vehicle - CUV), Geländelimousinen (sport utility vehicle - SUV), Trucks, Wohnmobilen (recreational vehicle - RV), Booten, Luftfahrzeugen oder anderen mobilen Maschinen zum Befördern von Personen oder Gütern beinhalten.
  • In vielen Fällen kann das Fahrzeugsystem 1100 durch eine Brennkraftmaschine mit Leistung versorgt werden. Als eine weitere Möglichkeit kann das Fahrzeugsystem 1100 ein Hybridelektrofahrzeug (hybrid electric vehicle - HEV) sein, das sowohl durch eine Brennkraftmaschine als auch einen oder mehrere Elektromotoren mit Leistung versorgt wird, wie etwa ein Serienhybrid-Elektrofahrzeug (series hybrid electric vehicle - SHEV), ein Parallelhybrid-Elektrofahrzeug (parallel hybrid electrical vehicle - PHEV) oder ein Parallel/Serienhybrid-Elektrofahrzeug (parallel/series hybrid electric vehicle - PSHEV). Da die Art und Konfiguration des Fahrzeugsystems 1100 variieren können, können entsprechend auch die Fähigkeiten des Fahrzeugsystems variieren. Als einige weitere Möglichkeiten kann das Fahrzeugsystem 1100 unterschiedliche Fähigkeiten in Bezug auf die Fahrgastkapazität, die Schleppfähigkeit und -kapazität und den Stauraum aufweisen.
  • Das Rechensystem 1102 kann eine Mensch-Maschine-Schnittstelle (Human Machine Interface - HMI) 1112 und eine Anzeige 1128 zur Benutzerinteraktion mit dem Rechensystem 1102 beinhalten.
  • Ein beispielhaftes Rechensystem 1102 kann das SYNC-System™ sein, das durch die FORD MOTOR COMPANY™ aus Dearborn, Michigan, bereitgestellt wird. In einigen Beispielen kann die Anzeige 1128 ein Fahrzeug-Infotainmentsystem beinhalten, das eine oder mehrere Anzeigen beinhaltet. Die HMI 1112 kann dazu konfiguriert sein, Sprachbefehls- und BLUETOOTH™-Schnittstellen mit dem Fahrer und Fahrermobilgeräten zu unterstützen, Benutzereingaben über verschiedene Tasten oder andere Steuerungen zu empfangen und einem Fahrer oder anderen Insassen des Fahrzeugsystems 1100 Fahrzeugstatusinformationen bereitzustellen. Zum Beispiel kann das Rechensystem 1102 eine Schnittstelle mit einer oder mehreren Tasten oder einer anderen HMI 1112 bilden, die dazu konfiguriert sind, Funktionen auf dem Rechensystem 1102 aufzurufen (z. B. Audiotasten am Lenkrad, eine Sprechtaste, Steuerungen am Armaturenbrett usw.). Das Rechensystem 1102 kann außerdem die Anzeige 1128, die dazu konfiguriert ist, z. B. über eine Videosteuerung eine visuelle Ausgabe für Fahrzeuginsassen bereitzustellen, antreiben oder anderweitig mit dieser kommunizieren. In einigen Fällen kann es sich bei der Anzeige 1128 um einen Touchscreen handeln, der ferner dazu konfiguriert ist, berührungsbasierte Eingaben des Benutzers über die Videosteuerung zu empfangen, während es sich bei der Anzeige 1128 in anderen Fällen lediglich um eine Anzeige ohne berührungsbasierte Eingabefähigkeiten handeln kann. In einem Beispiel kann es sich bei der Anzeige 1128 um eine Kopfeinheitsanzeige handeln, die in einem Mittelkonsolenbereich des Fahrzeugsystems 1100 beinhaltet ist. In einem weiteren Beispiel kann es sich bei der Anzeige 1128 um einen Bildschirm eines Kombi-Instruments des Fahrzeugsystems 1100 handeln.
  • Das Rechensystem 1102 kann ferner verschiedene Arten von Rechenvorrichtungen zur Unterstützung der Durchführung der in dieser Schrift beschriebenen Funktionen des Rechensystems 1102 beinhalten.
  • In einem Beispiel kann das Rechensystem 1102 einen oder mehrere Prozessoren 1104, die zum Ausführen von Computeranweisungen konfiguriert sind, und ein Speichermedium 1106, auf dem computerausführbaren Anweisungen und/oder Daten vorgehalten werden können, beinhalten. Ein computerlesbares Medium (auch als prozessorlesbares Medium oder Datenspeicher 1106 bezeichnet) beinhaltet ein beliebiges nichttransitorisches (z. B. physisches) Medium, das an der Bereitstellung von Daten (z. B. Anweisungen) beteiligt ist, die durch einen Computer (z. B. durch den einen oder die mehreren Prozessoren 1104) ausgelesen werden können. Im Allgemeinen empfängt der Prozessor 1104 Anweisungen und/oder Daten, z. B. von dem Speicher 1106 usw., in einem Speicher und führt die Anweisungen unter Verwendung der Daten aus, wodurch ein oder mehrere Prozesse, einschließlich eines oder mehrerer der in dieser Schrift beschriebenen Prozesse, durchgeführt werden. Computerausführbare Anweisungen können von Computerprogrammen kompiliert oder interpretiert werden, die unter Verwendung vielfältiger Programmiersprachen und/oder -technologien erstellt worden sind, einschließlich unter anderem und entweder für sich oder in Kombination Java, C, C++, C#, Fortran, Pascal, Visual Basic, Python, Java Script, Perl, PL/SQL usw. Der Datenspeicher 1106 kann Unterteilungen für Daten 1108 und Anwendungen 1110 beinhalten. In den Daten 1108 können Informationen wie etwa Datenbanken und andere derartige Informationen gespeichert sein. In den Anwendungen 1110 können die computerausführbaren Anweisungen oder andere derartige Anweisungen, die durch den Prozessor 1104 ausgeführt werden können, gespeichert sein.
  • Das Rechensystem 1102 kann dazu konfiguriert sein, mit mobilen Vorrichtungen der Insassen des Fahrzeugsystems 1100 zu kommunizieren.
  • Bei den mobilen Vorrichtungen kann es sich um beliebige tragbare Rechenvorrichtungen handeln, wie zum Beispiel Mobiltelefone, Tablet-Computer, Smart Watches, Laptops, tragbare Musikwiedergabegeräte oder andere Vorrichtungen, welche mit dem Rechensystem 1102 kommunizieren können. Wie das Rechensystem 1102 kann die mobile Vorrichtung einen oder mehrere Prozessoren, die zum Ausführen von Computeranweisungen konfiguriert sind, und ein Speichermedium beinhalten, auf dem die computerausführbaren Anweisungen und/oder Daten vorgehalten werden können. In einigen Beispielen kann das Rechensystem 1102 einen drahtlosen Sendeempfänger (z. B. eine BLUETOOTH™-Steuerung, einen ZIGBEE™-Sendeempfänger, einen Wi-Fi-Sendeempfänger usw.) beinhalten, der dazu konfiguriert ist, mit einem kompatiblen drahtlosen Sendeempfänger der mobilen Vorrichtung zu kommunizieren. Zusätzlich oder alternativ dazu kann das Rechensystem 1102 über eine drahtgebundene Verbindung mit der mobilen Vorrichtung kommunizieren, wie etwa über eine USB-Verbindung zwischen der mobilen Vorrichtung und einem Universal-Serial-Bus(USB)-Teilsystem der Rechenvorrichtung 1102.
  • Das Rechensystem 1102 kann ferner dazu konfiguriert sein, über ein oder mehrere fahrzeuginterne Netzwerke 1114 mit anderen Komponenten des Fahrzeugsystems 1100 zu kommunizieren.
  • Die fahrzeuginternen Netzwerke 1114 können als einige Beispiele eines oder mehrere von einem Controller Area Network (CAN) des Fahrzeugs, einem Ethernet-Netzwerk oder einer mediengebundene Systemübertragung (media-oriented system transfer - MOST) beinhalten. Die fahrzeuginternen Netzwerke 1114 können dem Rechensystem 1102 ermöglichen, mit anderen Einheiten des Fahrzeugsystems 1100, wie etwa einer ECU A 1120, einer ECU B 1122, einer ECU C 1124 und einer ECU D 1126, zu kommunizieren. Die ECUs 1120, 1122, 1124 und 1126 können verschiedene elektrische oder elektromechanische Systeme des Fahrzeugsystems 1100 beinhalten oder verschiedene Teilsysteme des Fahrzeugsystems 1100 steuern. Einige nicht einschränkende Beispiele für ECUs können Folgendes beinhalten: ein Antriebsstrangsteuermodul, das dazu konfiguriert ist, eine Steuerung der Betriebskomponenten des Motors (z. B. Leerlaufreglerkomponenten, Komponenten der Kraftstoffzufuhr, Komponenten zur Emissionssteuerung usw.) und eine Überwachung der Betriebskomponenten des Motors bereitzustellen (z. B. Status von Diagnosecodes des Motors); ein Karosseriesteuermodul, das dazu konfiguriert ist, verschiedene Funktionen zur Leistungssteuerung zu verwalten, wie etwa Außenbeleuchtung, Innenraumbeleuchtung, schlüsselloser Zugang, Fernstart und Verifizierung des Status von Zugangspunkten (z. B. Schließstatus der Motorhaube, der Türen und/oder des Kofferraums des Fahrzeugsystems 1100); ein Funksendeempfängermodul, das dazu konfiguriert ist, mit Funkschlüsseln oder anderen lokalen Vorrichtungen des Fahrzeugsystems 1100 zu kommunizieren, ein Klimasteuerverwaltungsmodul, das dazu konfiguriert ist, eine Steuerung und Überwachung der Heiz- und Kühlsystemkomponenten bereitzustellen (z. B. Steuerung von Kompressorkupplung und Gebläselüfter, Temperatursensorinformationen usw.) sowie ein Getriebesteuermodul, ein Bremssteuermodul, ein zentrales Zeitgebungsmodul, ein Aufhängungssteuermodul, ein Fahrzeugmodem (das in einigen Konfigurationen unter Umständen nicht vorhanden ist), ein Modul eines globalen Positionsbestimmungssystems (GPS), das dazu konfiguriert ist, einen Standort und Fahrtrichtungsinformationen des Fahrzeugsystems 1100 bereitzustellen, und verschiedene andere ECUs, die dazu konfiguriert sind, mit dem Rechensystem 1102 zusammenzuwirken. Die durch die verschiedenen ECUs gesteuerten Teilsysteme können Funktionskomponenten 1116 des Fahrzeugsystems 1100 beinhalten, einschließlich von Elementen wie etwa den Antriebsstrang, den Motor, Bremsen, Leuchten, Lenkkomponenten und dergleichen. Zusätzlich dazu können einige oder alle Funktionskomponenten 1116 Sensoren 1118 sowie zusätzliche Sensoren beinhalten, mit denen das Fahrzeugsystem 1100 ausgestattet ist, um verschiedene Zustände, Positionen, Nähe, Temperatur und dergleichen des Fahrzeugsystems 1100 und von Teilsystemen davon zu erkennen. Die ECUs 1120, 1122, 1124, 1126 können mit dem Rechensystem 1102 sowie den Funktionskomponenten 1116 und den Sensoren 1118 über das fahrzeuginterne Netzwerk 1114 kommunizieren. Während in 11 nur vier ECUs dargestellt sind, kann eine beliebige Anzahl (mehr oder weniger) an ECUs in dem Fahrzeugsystem 1100 beinhaltet sein.
  • 12 veranschaulicht ein Blockdiagramm eines Beispiels für eine Rechenvorrichtung 1200.
  • Bei der Rechenvorrichtung 1200 kann es sich um einen beliebigen der in dieser Schrift beschriebenen Computer handeln, einschließlich beispielsweise des Rechensystems 1102 innerhalb des Fahrzeugsystems 1100 aus 11 sowie der ECUs 1120, 1122, 1124, 1126. Die Rechenvorrichtung 1200 kann zum Beispiel ein integrierter Computer, ein Laptop-Computer, ein Desktop-Computer, ein Tablet, ein Server oder eine andere elektronische Vorrichtung sein oder diese beinhalten.
  • Die Rechenvorrichtung 1200 kann einen Prozessor 1240 beinhalten, der über einen Bus 1205 mit anderer Hardware verbunden ist. Ein Speicher 1210, der ein beliebiges geeignetes greifbares (und nicht transitorisches) computerlesbares Medium beinhalten kann, wie etwa RAM, ROM, EEPROM oder dergleichen, kann Programmkomponenten (z. B. Programmcode 1215) verkörpern, die den Betrieb der Rechenvorrichtung 1200 konfigurieren. Der Speicher 1210 kann den Programmcode 1215, die Programmdaten 1217 oder beides speichern. In einigen Beispielen kann die Rechenvorrichtung 1200 Eingabe-/Ausgabe(„E/A“)-Schnittstellenkomponenten 1225 (z. B. zum Bilden einer Schnittstelle mit einer Anzeige 1245, einer Tastatur, einer Maus und dergleichen) und zusätzlichen Datenspeicher 1230 beinhalten.
  • Die Rechenvorrichtung 1200 führt den Programmcode 1215 aus, der den Prozessor 1240 dazu konfiguriert, einen oder mehrere der in dieser Schrift beschriebenen Vorgänge durchzuführen. Beispiele für den Programmcode 1215 beinhalten in verschiedenen Ausführungsformen ein logisches Ablaufdiagramm, das vorstehend in Bezug auf 11 beschrieben ist. Der Programmcode 1215 kann sich in dem Speicher 1210 oder einem beliebigen geeigneten computerlesbaren Medium befinden und kann durch den Prozessor 1240 oder einen beliebigen anderen geeigneten Prozessor ausgeführt werden.
  • Die Rechenvorrichtung 1200 kann aufgrund des Ausführens des Programmcodes 1215 Programmdaten 1217 erzeugen oder empfangen. Beispielsweise sind Sensordaten, ein Fahrtenzähler, authentifizierte Nachrichten, Fahrten-Flags und andere in dieser Schrift beschrieben Daten alles Beispiele für Programmdaten 1217, die durch die Rechenvorrichtung 1200 während der Ausführung des Programmcodes 1215 verwendet werden können.
  • Die Rechenvorrichtung 1200 kann Netzwerkkomponenten 1220 beinhalten. Die Netzwerkkomponenten 1220 können eine oder mehrere von beliebigen Komponenten darstellen, die eine Netzwerkverbindung erleichtern. In einigen Beispielen können die Netzwerkkomponenten 1220 eine drahtlose Verbindung erleichtern und drahtlose Schnittstellen, wie etwa IEEE 802.11, BLUETOOTH™ oder Funkschnittstellen zum Zugreifen auf Mobiltelefonnetze (z. B. einen Sendeempfänger/eine Antenne zum Zugreifen auf CDMA, GSM, UMTS oder ein anderes Mobilkommunikationsnetz) beinhalten. In anderen Beispielen können die Netzwerkkomponenten 1220 drahtgebunden sein und Schnittstellen, wie etwa Ethernet, USB oder IEEE 1394, beinhalten.
  • Wenngleich 12 eine Rechenvorrichtung 1200 mit einem Prozessor 1240 darstellt, kann das System eine beliebige Anzahl an Rechenvorrichtungen 1200 und eine beliebige Anzahl an Prozessoren 1240 beinhalten. Beispielsweise können mehrere Rechenvorrichtungen 1200 oder mehrere Prozessoren 1240 über ein drahtgebundenes oder drahtloses Netzwerk (z. B. ein Weitverkehrsnetz, ein lokales Netzwerk oder das Internet) verteilt sein. Die mehreren Rechenvorrichtungen 1200 oder die mehreren Prozessoren 1240 können einen beliebigen der Schritte der vorliegenden Offenbarung einzeln oder in Abstimmung miteinander durchführen.
  • In einigen Ausführungsformen kann die durch das Rechensystem 1300 bereitgestellte Funktionalität als Cloud-Dienste durch einen Cloud-Dienst-Anbieter bereitgestellt werden. Zum Beispiel stellt 13 ein Beispiel für ein Cloud-Rechensystem 1300 dar, das einen Informationsbeschaffungsdienst anbietet, der durch eine Anzahl von Benutzerabonnenten unter Verwendung der Benutzervorrichtungen 1325a, 1325b und 1325c über ein Datennetzwerk 1320 verwendet werden kann. Die Benutzervorrichtungen 1325a, 1325b und 1325c könnten Beispiele für ein vorstehend beschriebenes Fahrzeugsystem 1100 sein. In dem Beispiel kann der Informationsbeschaffungsdienst unter einem Software-as-a-Service(SaaS)-Modell angeboten werden. Ein oder mehrere Benutzer können den Informationsbeschaffungsdienst abonnieren und das Cloud-Rechensystem führt die Verarbeitung durch, um den Informationsbeschaffungsdienst den Abonnenten bereitzustellen. Das Cloud-Rechensystem kann einen oder mehrere entfernte Servercomputer 1305 beinhalten.
  • Die entfernten Servercomputer 1305 beinhalten ein beliebiges geeignetes nichttransitorisches computerlesbares Medium zum Speichern von Programmcode (z. B. Server 1330) und Programmdaten 1310 oder von beiden, die durch das Cloud-Rechensystem 1300 zum Bereitstellen der Cloud-Dienste verwendet werden.
  • Ein computerlesbares Medium kann eine beliebige elektronische, optische, magnetische oder andere Speichervorrichtung beinhalten, die dazu in der Lage ist, einem Prozessor computerlesbare Anweisungen oder anderen Programmcode bereitzustellen. Nicht einschränkende Beispiele für ein computerlesbares Medium beinhalten eine Magnetplatte, einen Speicherchip, einen ROM, einen RAM, eine ASIC, einen optischen Speicher, ein Magnetband oder einen anderen magnetischen Speicher oder ein beliebiges anderes Medium, von dem eine Verarbeitungsvorrichtung Anweisungen lesen kann. Die Anweisungen können prozessorspezifische Anweisungen beinhalten, die durch einen Compiler oder einen Interpreter aus Code generiert werden, der in einer beliebigen geeigneten Computerprogrammiersprache geschrieben ist, einschließlich zum Beispiel C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript und ActionScript. In verschiedenen Beispielen können die Servercomputer 305 flüchtigen Speicher, nichtflüchtigen Speicher oder eine Kombination daraus beinhalten.
  • Einer oder mehrere der Servercomputer 1305 führen die Programmdaten 1310 aus, die einen oder mehrere Prozessoren der Servercomputer 1305 dazu konfigurieren, einen oder mehrere der Vorgänge durchzuführen, welche Positionen für interaktive Elemente bestimmen und das adaptive regelbasierte System betreiben.
  • Wie in der Ausführungsform in 13 dargestellt, stellen der eine oder die mehreren Servercomputer 1305 die Dienste bereit, um das adaptive regelbasierte System über den Server 1330 durchzuführen. Beliebige andere geeignete Systeme oder Teilsysteme, die einen oder mehrere in dieser Schrift beschriebene Vorgänge durchführen (z. B. ein oder mehrere Entwicklungssysteme zum Konfigurieren einer interaktiven Benutzerschnittstelle), können ebenfalls durch das Cloud-Rechensystem 1300 umgesetzt werden.
  • In bestimmten Ausführungsformen kann das Cloud-Rechensystem 1300 die Dienste durch das Ausführen von Programmcode und/oder das Verwenden von Programmdaten 1310 umsetzen, die sich in einer Speichervorrichtung der Servercomputer 1305 oder einem beliebigen geeigneten computerlesbaren Medium befinden können und die durch die Prozessoren der Servercomputer 1305 oder einen beliebigen anderen geeigneten Prozessor ausgeführt werden können.
  • In einigen Ausführungsformen beinhalten die Programmdaten 1310 einen oder mehrere in dieser Schrift beschriebene Datensätze und Modelle. Beispiele für diese Datensätze beinhalten Händlerdaten, Klassifizierungsdaten usw. In einigen Ausführungsformen sind eines oder mehrere von Datensätzen, Modellen und Funktionen in derselben Speichervorrichtung gespeichert. In zusätzlichen oder alternativen Ausführungsformen können eines oder mehrere der Programme, Datensätze, Modelle und Funktionen, die in dieser Schrift beschrieben sind, in unterschiedlichen Speichervorrichtungen gespeichert sein, auf die über das Datennetzwerk 1320 zugegriffen werden kann.
  • Das Cloud-Rechensystem 1300 beinhaltet zudem eine Netzwerkschnittstellenvorrichtung 1315, die Kommunikationen zu und von dem Cloud-Rechensystem 1300 ermöglicht. In bestimmten Ausführungsformen beinhaltet die Netzwerkschnittstellenvorrichtung 1315 eine beliebige Vorrichtung oder Gruppe von Vorrichtungen, die zum Herstellen einer drahtgebundenen oder drahtlosen Datenverbindung mit den Datennetzwerken 1320 geeignet ist. Nicht einschränkende Beispiele für die Netzwerkschnittstellenvorrichtung 1315 beinhalten einen Ethernet-Netzwerkadapter, ein Modem und/oder dergleichen. Der Server 1330 ist in der Lage, mit den Benutzervorrichtungen 1325a, 1325b und 1325c über das Datennetzwerk 1320 unter Verwendung der Netzwerkschnittstellenvorrichtung 1315 zu kommunizieren.
  • Obwohl der vorliegende Gegenstand in Bezug auf spezifische Aspekte davon ausführlich beschrieben wurde, versteht es sich, dass der Fachmann beim Erlangen eines Verständnisses des Vorstehenden ohne Weiteres Änderungen, Variationen und Äquivalente derartiger Aspekte erzeugen kann. Zahlreiche spezifische Details sind in dieser Schrift dargelegt, um ein umfassendes Verständnis des beanspruchten Gegenstands bereitzustellen. Der Fachmann wird jedoch verstehen, dass der beanspruchte Gegenstand ohne diese spezifischen Details umgesetzt werden kann. In anderen Fällen sind Verfahren, Einrichtungen oder Systeme, die dem Durchschnittsfachmann bekannt wären, nicht ausführlich beschrieben worden, um den beanspruchten Gegenstand nicht undeutlich zu machen. Dementsprechend ist die vorliegende Offenbarung zu Beispielzwecken und nicht zur Einschränkung dargelegt worden und schließt die Einbeziehung derartiger Modifikationen, Variationen und/oder Hinzufügungen zu dem vorliegenden Gegenstand nicht aus, wie es für den Durchschnittsfachmann ohne Weiteres ersichtlich wäre.
  • Sofern nicht ausdrücklich etwas anderes angegeben ist, versteht es sich, dass sich in dieser Beschreibung Erörterungen, die Ausdrücke wie etwa „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ und „Identifizieren“ oder dergleichen nutzen, auf Handlungen oder Prozesse einer Rechenvorrichtung beziehen, wie etwa eines oder mehrerer Computer oder einer oder mehrerer ähnlicher elektronischer Rechenvorrichtung oder -vorrichtungen, die Daten manipulieren oder transformieren, welche als physische elektronische oder magnetische Größen in Speichern, Registern oder anderen Informationsspeichervorrichtungen, Übertragungsvorrichtungen oder Anzeigevorrichtungen der Rechenplattform dargestellt sind. Die Verwendung von „angepasst dazu“ oder „konfiguriert dazu“ bedeutet in dieser Schrift eine offene und integrative Sprache, die keine Vorrichtungen ausschließt, die dazu angepasst oder konfiguriert sind, zusätzliche Aufgaben oder Schritte durchzuführen. Zusätzlich soll die Verwendung von „basierend auf“ offen und integrativ sein, und zwar dahingehend, dass ein Prozess, ein Schritt, eine Berechnung oder eine andere Handlung „basierend auf“ einer oder mehreren genannten Bedingungen oder Werten in der Praxis auf zusätzlichen Bedingungen oder Werten j enseits der genannten basieren kann. Überschriften, Listen und Nummerierungen, die in dieser Schrift enthalten sind, dienen lediglich der einfacheren Erläuterung und sollen nicht einschränkend sein.
  • Aspekte der in dieser Schrift offenbarten Verfahren können beim Betrieb derartiger Rechenvorrichtungen durchgeführt werden. Das oder die in dieser Schrift erörterte(n) System(e) ist/sind nicht auf eine bestimmte Hardware-Architektur oder -Konfiguration beschränkt. Eine Rechenvorrichtung kann eine beliebige geeignete Anordnung von Komponenten beinhalten, die ein Ergebnis bereitstellen, das von einer oder mehreren Eingaben abhängig ist. Geeignete Rechenvorrichtungen beinhalten Mehrzweck-Computersysteme auf Mikroprozessorbasis, die auf gespeicherte Software zugreifen, welche das Rechensystem von einer Universalrecheneinrichtung zu einer spezialisierten Recheneinrichtung programmiert oder konfiguriert, die einen oder mehrere Aspekte des vorliegenden Gegenstands umsetzt. Eine beliebige geeignete Programmierung, Skripterstellung oder eine andere Art von Sprache oder Kombinationen von Sprachen kann verwendet werden, um die in dieser Schrift enthaltenen Lehren in Software umzusetzen, die beim Programmieren oder Konfigurieren einer Rechenvorrichtung verwendet wird. Die Reihenfolge der in den vorstehenden Beispielen dargestellten Blöcke kann variiert werden. Zum Beispiel können Blöcke neu angeordnet, kombiniert und/oder in Unterblöcke unterteilt werden. Gewisse Blöcke oder Prozesse können parallel durchgeführt werden.
  • Gemäß der vorliegenden Erfindung beinhaltet ein Verfahren zum verteilten Rechnen Folgendes: Identifizieren eines gerichteten azyklischen Graphen („DAG“), der eine Vielzahl von Knoten überlagert, wobei der DAG eine Vielzahl von Scheitelpunkten umfasst, die in paarweisen Beziehungen über eine Vielzahl von Kanten verbunden sind, wobei einer der Vielzahl von Scheitelpunkten des DAG einen Eintrittsscheitelpunkt umfasst, und wobei jeder der Vielzahl von Knoten eine Rechenvorrichtung umfasst; Identifizieren der dem DAG zugrundeliegenden Knoten; Erzeugen eines untergeordneten DAG in dem Eintrittsscheitelpunkt, wobei der untergeordnete DAG eine Vielzahl von untergeordneten Scheitelpunkten umfasst, wobei jeder der Vielzahl von untergeordneten Scheitelpunkten einem der Knoten entspricht, die dem DAG zugrundeliegen; Empfangen von Daten und Metadaten an dem Eintrittsscheitelpunkt; Abgeben der Daten an einen nächsten Scheitelpunkt in dem DAG; und Kommunizieren der Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG.
  • Gemäß einer Ausführungsform umfassen die an dem Eintrittsscheitelpunkt empfangenen Daten Trainingsdaten.
  • Gemäß einer Ausführungsform umfassen die an dem Eintrittsscheitelpunkt empfangenen Daten einen Stapel von Trainingsdaten aus einer Vielzahl von Stapeln von Trainingsdaten.
  • Gemäß einer Ausführungsform geben die an dem Eintrittsscheitelpunkt empfangenen Metadaten an, dass der empfangene Stapel ein letzter Stapel ist.
  • Gemäß einer Ausführungsform geben die an dem Eintrittsscheitelpunkt empfangenen Metadaten eine Position des empfangenen Stapels innerhalb der Vielzahl von Stapeln an.
  • Gemäß einer Ausführungsform ist die vorstehende Erfindung ferner gekennzeichnet durch das Erzeugen von Kommunikationsverbindungen zwischen jedem der untergeordneten Scheitelpunkte und dem entsprechenden Knoten.
  • Gemäß einer Ausführungsform ermöglicht das Abgeben von Daten an den nächsten Scheitelpunkt in dem DAG das Durchqueren des DAG.
  • Gemäß einer Ausführungsform umfasst das Kommunizieren der Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG das Durchqueren des untergeordneten DAG.
  • Gemäß einer Ausführungsform ist die vorstehende Erfindung ferner gekennzeichnet durch das Bereitstellen einer Karte des DAG an jeden der Scheitelpunkte des DAG, wobei die Karte einen Datenfluss durch die Scheitelpunkte beschreibt; und das Durchführen einer topologischen Sortierung der Scheitelpunkte des DAG, wobei die topologische Sortierung eine deterministische topologische Sortierung umfasst, und wobei die deterministische topologische Sortierung eine Reihenfolge von Vorgängen zum Durchqueren des DAG steuert.
  • Gemäß einer Ausführungsform ist die vorstehende Erfindung ferner gekennzeichnet durch das Identifizieren einer Kante, die separate Knoten verbindet; und das Einfügen eines Datenaustauschscheitelpunkts zwischen den separaten Knoten, wobei der Datenaustauschscheitelpunkt eine rekursive DAG-Struktur umfasst, die einen Sendescheitelpunkt und einen Empfangsscheitelpunkt umfasst.
  • Gemäß der vorliegenden Erfindung ist ein System bereitgestellt, das Folgendes aufweist: einen oder mehrere Prozessoren und einen oder mehrere Speicher, in dem/denen computerausführbare Anweisungen gespeichert sind, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren zu Folgendem konfigurieren: Identifizieren eines gerichteten azyklischen Graphen („DAG“), der eine Vielzahl von Knoten überlagert, wobei der DAG eine Vielzahl von Scheitelpunkten umfasst, die in paarweisen Beziehungen über eine Vielzahl von Kanten verbunden sind, wobei einer der Vielzahl von Scheitelpunkten des DAG einen Eintrittsscheitelpunkt umfasst, und wobei jeder der Vielzahl von Knoten eine Rechenvorrichtung umfasst; Identifizieren der dem DAG zugrundeliegenden Knoten; Erzeugen eines untergeordneten DAG in dem Eintrittsscheitelpunkt, wobei der untergeordnete DAG eine Vielzahl von untergeordneten Scheitelpunkten umfasst, wobei jeder der Vielzahl von untergeordneten Scheitelpunkten einem der Knoten entspricht, die dem DAG zugrundeliegen; Empfangen von Daten und Metadaten an dem Eintrittsscheitelpunkt; Abgeben der Daten an einen nächsten Scheitelpunkt in dem DAG; und Kommunizieren der Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG.
  • Gemäß einer Ausführungsform umfassen die an dem Eintrittsscheitelpunkt empfangenen Daten Trainingsdaten.
  • Gemäß einer Ausführungsform umfassen die an dem Eintrittsscheitelpunkt empfangenen Daten einen Stapel von Trainingsdaten aus einer Vielzahl von Stapeln von Trainingsdaten.
  • Gemäß einer Ausführungsform geben die an dem Eintrittsscheitelpunkt empfangenen Metadaten an, dass der empfangene Stapel ein letzter Stapel ist.
  • Gemäß einer Ausführungsform geben die an dem Eintrittsscheitelpunkt empfangenen Metadaten eine Position des empfangenen Stapels innerhalb der Vielzahl von Stapeln an.
  • Gemäß einer Ausführungsform konfigurieren die computerausführbaren Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren ferner dazu, Kommunikationsverbindungen zwischen jedem der untergeordneten Scheitelpunkte und dem entsprechenden Knoten zu erzeugen.
  • Gemäß einer Ausführungsform ermöglicht das Abgeben von Daten an den nächsten Scheitelpunkt in dem DAG das Durchqueren des DAG.
  • Gemäß einer Ausführungsform umfasst das Kommunizieren der Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG das Durchqueren des untergeordneten DAG.
  • Gemäß einer Ausführungsform konfigurieren die computerausführbaren Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren ferner zu Folgendem: Bereitstellen einer Karte des DAG an jeden der Scheitelpunkte des DAG, wobei die Karte einen Datenfluss durch die Scheitelpunkte beschreibt; und Durchführen einer topologischen Sortierung der Scheitelpunkte des DAG, wobei die topologische Sortierung eine deterministische topologische Sortierung umfasst, und wobei die deterministische topologische Sortierung eine Reihenfolge von Vorgängen zum Durchqueren des DAG steuert.
  • Gemäß einer Ausführungsform konfigurieren die computerausführbaren Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren ferner zu Folgendem: Identifizieren einer Kante, die separate Knoten verbindet; und Einfügen eines Datenaustauschscheitelpunkts zwischen den separaten Knoten, wobei der Datenaustauschscheitelpunkt eine rekursive DAG-Struktur umfasst, die einen Sendescheitelpunkt und einen Empfangsscheitelpunkt umfasst.

Claims (15)

  1. Verfahren zum verteilten Rechnen, wobei das Verfahren Folgendes umfasst: Identifizieren eines gerichteten azyklischen Graphen („DAG“), der eine Vielzahl von Knoten überlagert, wobei der DAG eine Vielzahl von Scheitelpunkten umfasst, die in paarweisen Beziehungen über eine Vielzahl von Kanten verbunden sind, wobei einer der Vielzahl von Scheitelpunkten des DAG einen Eintrittsscheitelpunkt umfasst, und wobei jeder der Vielzahl von Knoten eine Rechenvorrichtung umfasst; Identifizieren der dem DAG zugrundeliegenden Knoten; Erzeugen eines untergeordneten DAG in dem Eintrittsscheitelpunkt, wobei der untergeordnete DAG eine Vielzahl von untergeordneten Scheitelpunkten umfasst, wobei jeder der Vielzahl von untergeordneten Scheitelpunkten einem der dem DAG zugrundeliegenden Knoten entspricht; Empfangen von Daten und Metadaten an dem Eintrittsscheitelpunkt; Abgeben der Daten an einen nächsten Scheitelpunkt in dem DAG; und Kommunizieren der Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG.
  2. Verfahren nach Anspruch 1, wobei die an dem Eintrittsscheitelpunkt empfangenen Daten Trainingsdaten umfassen.
  3. Verfahren nach Anspruch 1, wobei die an dem Eintrittsscheitelpunkt empfangenen Daten einen Stapel von Trainingsdaten aus einer Vielzahl von Stapeln von Trainingsdaten umfassen.
  4. Verfahren nach Anspruch 3, wobei die an dem Eintrittsscheitelpunkt empfangenen Metadaten angeben, dass der Stapel ein letzter Stapel ist.
  5. Verfahren nach Anspruch 3, wobei die an dem Eingabescheitelpunkt empfangenen Metadaten eine Position des Stapels innerhalb der Vielzahl von Stapeln angeben.
  6. Verfahren nach Anspruch 1, ferner umfassend das Erzeugen von Kommunikationsverbindungen zwischen jedem der untergeordneten Scheitelpunkte und dem entsprechenden Knoten.
  7. Verfahren nach Anspruch 1, wobei das Abgeben von Daten an den nächsten Scheitelpunkt in dem DAG das Durchqueren des DAG ermöglicht.
  8. Verfahren nach Anspruch 7, wobei das Kommunizieren der Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG das Durchqueren des untergeordneten DAG umfasst.
  9. Verfahren nach Anspruch 1, ferner umfassend das Bereitstellen einer Karte des DAG an jeden der Scheitelpunkte des DAG, wobei die Karte einen Datenfluss durch die Scheitelpunkte beschreibt; und das Durchführen einer topologischen Sortierung der Scheitelpunkte des DAG, wobei die topologische Sortierung eine deterministische topologische Sortierung umfasst, und wobei die deterministische topologische Sortierung eine Reihenfolge von Vorgängen zum Durchqueren des DAG steuert.
  10. Verfahren nach Anspruch 9, ferner umfassend das Identifizieren einer Kante, die separate Knoten verbindet; und das Einfügen eines Datenaustauschscheitelpunkts zwischen den separaten Knoten, wobei der Datenaustauschscheitelpunkt eine rekursive DAG-Struktur umfasst, die einen Sendescheitelpunkt und einen Empfangsscheitelpunkt umfasst.
  11. System, umfassend: einen oder mehrere Prozessoren; und einen oder mehrere Speicher, in denen computerausführbare Anweisungen gespeichert sind, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren zu Folgendem konfigurieren: Identifizieren eines gerichteten azyklischen Graphen („DAG“), der eine Vielzahl von Knoten überlagert, wobei der DAG eine Vielzahl von Scheitelpunkten umfasst, die in paarweisen Beziehungen über eine Vielzahl von Kanten verbunden sind, wobei einer der Vielzahl von Scheitelpunkten des DAG einen Eintrittsscheitelpunkt umfasst, und wobei jeder der Vielzahl von Knoten eine Rechenvorrichtung umfasst; Identifizieren der dem DAG zugrundeliegenden Knoten; Erzeugen eines untergeordneten DAG in dem Eintrittsscheitelpunkt, wobei der untergeordnete DAG eine Vielzahl von untergeordneten Scheitelpunkten umfasst, wobei jeder der Vielzahl von untergeordneten Scheitelpunkten einem der dem DAG zugrundeliegenden Knoten entspricht; Empfangen von Daten und Metadaten an dem Eintrittsscheitelpunkt; Abgeben der Daten an einen nächsten Scheitelpunkt in dem DAG; und Kommunizieren der Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG.
  12. System nach Anspruch 11, wobei die an dem Eintrittsscheitelpunkt empfangenen Daten einen Stapel von Trainingsdaten aus einer Vielzahl von Stapeln von Trainingsdaten umfassen, und wobei die an dem Eintrittsscheitelpunkt empfangenen Metadaten eine Position des Stapels innerhalb der Vielzahl von Stapeln angeben.
  13. System nach Anspruch 12, wobei die an dem Eingabescheitelpunkt empfangenen Metadaten, welche die Position des Stapels innerhalb der Vielzahl von Stapeln angeben, angeben, dass der Stapel ein letzter Stapel ist.
  14. System nach einem der Ansprüche 11 bis 13, wobei die computerausführbaren Anweisungen, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren ferner dazu konfigurieren, Kommunikationsverbindungen zwischen jedem der untergeordneten Scheitelpunkte und dem entsprechenden Knoten zu erzeugen.
  15. System nach einem der Ansprüche 11 bis 14, wobei das Kommunizieren der Metadaten an Knoten, die dem DAG zugrundeliegen, über den untergeordneten DAG das Durchqueren des untergeordneten DAG umfasst.
DE102021126580.0A 2020-10-16 2021-10-13 Automatisierte knotenübergreifende kommunikation in einem verteilten gerichteten azyklischen graphen Pending DE102021126580A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/072,803 US11875261B2 (en) 2020-10-16 2020-10-16 Automated cross-node communication in distributed directed acyclic graph
US17/072,803 2020-10-16

Publications (1)

Publication Number Publication Date
DE102021126580A1 true DE102021126580A1 (de) 2022-04-21

Family

ID=80929334

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021126580.0A Pending DE102021126580A1 (de) 2020-10-16 2021-10-13 Automatisierte knotenübergreifende kommunikation in einem verteilten gerichteten azyklischen graphen

Country Status (3)

Country Link
US (1) US11875261B2 (de)
CN (1) CN114448864A (de)
DE (1) DE102021126580A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114884830B (zh) * 2022-07-11 2023-02-03 成都众享天地网络科技有限公司 基于广域网的分布式并行仿真推演系统
US12021921B2 (en) 2022-10-28 2024-06-25 Red Hat, Inc. Data plane reduction for eventing components

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7324981B2 (en) * 2002-05-16 2008-01-29 Microsoft Corporation System and method of employing efficient operators for Bayesian network search
US8229968B2 (en) 2008-03-26 2012-07-24 Microsoft Corporation Data caching for distributed execution computing
US9811775B2 (en) 2012-12-24 2017-11-07 Google Inc. Parallelizing neural networks during training
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10540588B2 (en) 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
US10164867B2 (en) * 2017-02-03 2018-12-25 Cisco Technology, Inc. Generating non-congruent paths having minimal latency difference in a loop-free routing topology having routing arcs
US11222256B2 (en) 2017-10-17 2022-01-11 Xilinx, Inc. Neural network processing system having multiple processors and a neural network accelerator
KR102035706B1 (ko) * 2018-01-03 2019-11-18 홍익대학교세종캠퍼스산학협력단 신재생에너지의 발전량 데이터를 모니터링하는 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 변형 방법 및 신재생에너지의 발전량 데이터를 모니터링하기 위한 메타 모델 기반 프로토콜의 저용량 전송을 위한 데이터 전송 시스템
US10380997B1 (en) * 2018-07-27 2019-08-13 Deepgram, Inc. Deep learning internal state index-based search and classification
US10846245B2 (en) 2019-03-14 2020-11-24 Intel Corporation Minimizing usage of hardware counters in triggered operations for collective communication

Also Published As

Publication number Publication date
US20220121946A1 (en) 2022-04-21
CN114448864A (zh) 2022-05-06
US11875261B2 (en) 2024-01-16

Similar Documents

Publication Publication Date Title
DE102017201789B4 (de) Verfahren zum Betrieb eines Kraftfahrzeugs und Kraftfahrzeug
DE102020111880A1 (de) Datenfreigabe zur fahrzeugaktualisierung
DE102019104437A1 (de) Cloud-basierte dynamische optimierung von fahrzeugsoftwareupdates
DE102021126580A1 (de) Automatisierte knotenübergreifende kommunikation in einem verteilten gerichteten azyklischen graphen
DE102018100095A1 (de) Softwareaktualisierungs-verwaltung
DE102020124163A1 (de) Verifizierung von fahrzeugdaten
DE102021100329A1 (de) Stellvertreterfahrzeug-ota-aktualisierung durch v2x
DE102020100593A1 (de) Fahrzeug-zu-fahrzeug-dateifreigabesystem und -verfahren
DE102020116438A1 (de) Nutzung von fahrzeugkomponenten
DE102020122616A1 (de) Automatisierte bereitstellung eines fahrzeugprofilpakets
DE102014204354A1 (de) Verfahren zum Betreiben eines Fahrzeugs und Fahrerassistenzsystem
DE102019120601A1 (de) Über cloud abgefertigte validierung und ausführung betreffs diagnoseanfragen
DE102020115726A1 (de) Autmomatisierte unterscheidung und automatisches lernen von fahrzeugprofilen
DE102021102278A1 (de) Nachrichtenauthentifizierung von fahrzeugen durch proof-of-work
DE102021126440A1 (de) Effizientes inkrementelles lernen durch probabilistische trainingssatzauswahl
DE102021116640A1 (de) Erfassen und beheben der desynchronisation von fahrtenzählerwerten in authentifizierten nachrichten
DE102021126579A1 (de) Automatisierte einrichtungs- und kommunikationskoordination zum trainieren und nutzen massiv paralleler neuronaler netzwerke
EP3443449B1 (de) Verfahren, vorrichtung und computerprogramm zum verwalten eines speicherbereichs eines steuergeräts eines fahrzeugs
DE102021124026A1 (de) Verwendung von signalbewertung zum identifizieren von sicherheitskritischen can-nachrichten und -knoten zur effizienten implementierung von sicherheitsmerkmalen verteilter netzwerke
DE102021124809A1 (de) Systeme und verfahren zur remote-speicherung von einem distributed-ledger-netzwerk zugeordneten informationen
EP3901713B1 (de) Verfahren und system zum betrieb einer technischen anlage mit einem optimalen modell
DE102020114379A1 (de) Speichern von fahrzeugdaten
WO2018073230A1 (de) Vorrichtungen, verfahren und computerprogramme für ein fahrzeug und eine zentralstelle
DE102023112746A1 (de) Elektronische steuervorrichtung, softwareaktualisierungsverfahren, softwareaktualisierungsprogramm und elektronisches steuersystem
DE102021126874A1 (de) Automatisierte synchronisierung von geklonten gerichteten azyklischen graphen

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: LORENZ SEIDLER GOSSEL RECHTSANWAELTE PATENTANW, DE