DE102022107178A1 - Einrichtungen, herstellungsartikel und verfahren zum verwalten von verarbeitungseinheiten - Google Patents

Einrichtungen, herstellungsartikel und verfahren zum verwalten von verarbeitungseinheiten Download PDF

Info

Publication number
DE102022107178A1
DE102022107178A1 DE102022107178.2A DE102022107178A DE102022107178A1 DE 102022107178 A1 DE102022107178 A1 DE 102022107178A1 DE 102022107178 A DE102022107178 A DE 102022107178A DE 102022107178 A1 DE102022107178 A1 DE 102022107178A1
Authority
DE
Germany
Prior art keywords
circuitry
hardware
processor
workload
model
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
DE102022107178.2A
Other languages
English (en)
Inventor
Vincent Zimmer
Nilesh Jain
Rajesh Poornachandran
Abhijit Davare
Kaushik Balasubramanian
Chaunte Lacewell
Karan Puttannaiah
Jiahao Fang
Subrata Banik
Rajaram REGUPATHY
Salil Mathachan Thomas
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from PCT/CN2021/141150 external-priority patent/WO2022267408A1/en
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102022107178A1 publication Critical patent/DE102022107178A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation

Landscapes

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

Abstract

Es werden Einrichtungen, Herstellungsartikel und Verfahren zum Verwalten von Verarbeitungseinheiten offenbart. Vorliegend offenbarte Beispiele ermöglichen die Verwaltung von Systemen, die heterogene Verarbeitungseinheiten, XPUs usw. nutzen, um solche Verarbeitungseinheiten effizient zu nutzen. Einige Einrichtungen, Herstellungsartikel und Verfahren erleichtern beispielsweise gemeinsame Nutzung von Ressourcen, Ressourcenzuteilung und/oder Kernelerzeugung basierend auf Hardwareressourcen.

Description

  • VERWANDTE ANMELDUNG
  • Dieses Patent beansprucht den Vorteil der indischen Patentanmeldung Nr. 202141028125, die am 23. Juni 2021 eingereicht wurde, der US-Patentanmeldung Nr. 63/222,938 , die am 16. Juli 2021 eingereicht wurde, der indischen Patentanmeldung Nr. 202141036070, die am 10. August 2021 eingereicht wurde, der US-Patentanmeldung Nr. 17/645,742 , die am 22. Dezember 2021 eingereicht wurde, der US-Patentanmeldung Nr. 17/559,730 , die am 22. Dezember 2021 eingereicht wurde, der US-Patentanmeldung Nr. 17/560,025 , die am 22. Dezember 2021 eingereicht wurde, und der US-Patentanmeldung Nr. 17/558,284 , die am 21. Dezember 2021 eingereicht wurde. Die indische Patentanmeldung Nr. 202141028125, die US-Patentanmeldung Nr. 63/222,938 , die indische Patentanmeldung Nr. 202141036070, die US-Patentanmeldung Nr. 17/645,742 , die US-Patentanmeldung Nr. 17/559,730 , die US-Patentanmeldung Nr. 17/560,025 und die US-Patentanmeldung Nr. 17/558,284 werden hierin durch Bezugnahme in ihrer Gesamtheit aufgenommen. Die Priorität der indischen Patentanmeldung Nr. 202141028125, der US-Patentanmeldung Nr. 63/222,938 , der indischen Patentanmeldung Nr. 202141036070, der US-Patentanmeldung Nr. 17/645,742 , der US-Patentanmeldung Nr. 17/559,730 , der US-Patentanmeldung Nr. 17/560,025 und der US-Patentanmeldung Nr. 17/558,284 wird hiermit beansprucht.
  • GEBIET DER OFFENBARUNG
  • Diese Offenbarung betrifft allgemein Rechensysteme und insbesondere Einrichtungen, Herstellungsartikel und Verfahren zum Verwalten von Verarbeitungseinheiten.
  • HINTERGRUND
  • Entwicklungen in Rechensystemen haben zur Nutzung von Rechensystemen mit vielen Arten von Verarbeitungseinheiten geführt. Das Konzept der XPU ist zum Beispiel auf die Nutzung anwendungsspezifischer Verarbeitungseinheiten gerichtet, die in einem Rechensystem enthalten sein können. Beispielsweise kann ein Rechensystem eine Universalverarbeitungseinheit, eine Grafikverarbeitungseinheit und eine KI- (Künstliche Intelligenz) Verarbeitungseinheit beinhalten. Eine XPU ist eine architekturübergreifende Rechenlösung, die in einer einzigen Anwendungsprogrammierschnittstelle (z.B. der oneAPI-Standard-Anwendungsprogrammierschnittstelle) zusammengebunden sein kann, die die Zuweisung jeder Aufgabe an diejenige Verarbeitungseinheit verwaltet, die zu ihrer Verarbeitung am besten geeignet ist. Zum Beispiel entwickeln viele Cloud-Dienstanbieter (cloud service providers, CSPs) ihre Hardwareplattformen zu disaggregierten Elementen, die aus Universalprozessoren, heterogenen Beschleunigern und zweckmäßigen vertikal integrierten Infrastrukturverarbeitungseinheiten (IPUs) bestehen. Solche Verarbeitungseinheiten können durch angeschlossene Karten (z.B. über PCIE (Peripheral Control Interconnect Express) angeschlossene Karten), externe Verarbeitungseinheiten, die über ein Kabel (z.B. über einen Thunderbolt-Port) verbunden sind, über eine Hauptplatinen- (Motherboard) Abwärts- (MBdown-) Lösung, die an die Hauptplatine gelötet oder anderweitig an dieser angebracht ist, in eine Zentralverarbeitungseinheit (CPU) eingebaut usw. implementiert werden.
  • Figurenliste
    • 1 ist ein Blockdiagramm einer beispielhaften Architektur zum Unterstützen heterogener Berechnung.
    • 2 ist ein Blockdiagramm einer beispielhaften Architektur zum gemeinsamen Nutzen von Speicher zwischen zwei Verarbeitungseinheiten (z.B. einer CPU und einer GPU).
    • 3 ist ein Blockdiagramm eines beispielhaften Ansatzes zum gemeinsamen Nutzen des SPI-Flash mittels gemeinsamer Nutzung von angeschlossenem Flash.
    • 4 veranschaulicht ein beispielhaftes aktualisiertes IFWI-Layout für den SPI-Flash aus 2.
    • 5 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um einen Firmware-Boot eines Systems durchzuführen, bei dem ein Flash mit gemeinsam genutztem Zugriff zwischen zwei Verarbeitungseinheiten implementiert wurde.
    • 6 ist ein Blockdiagramm eines beispielhaften Layouts eines BIOS (z.B. des BIOS, das in Region 2 des IFWI-Layouts aus 4 gespeichert ist).
    • 7A und 7B zeigen ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um eine einheitliche Initialisierung von Verarbeitungseinheiten unter Verwendung von Siliciuminitialisierungscode durchzuführen.
    • 8 ist ein Flussdiagramm, das einen beispielhaften detaillierten vereinheitlichten FSP-Initialisierungsfluss mit integrierter Grafikvorrichtung (integrated graphics device, IGD) und GPU veranschaulicht.
    • 9 ist ein Blockdiagramm einer beispielhaften Architektur für IPURDT.
    • 10 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um ein Konfigurieren unter Verwendung von IPURDT durchzuführen.
    • 11 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um Verhandlungen durchzuführen, um Ressourcen basierend auf Toleranzen, die durch eine Anwendung vorgeschrieben werden, und verfügbaren IPU-Ressourcen dynamisch zuzuteilen.
    • 12 veranschaulicht eine beispielhafte Umgebung, in der durch IPUs verwaltete Ressourcen verschiedene Zustände freier und belegter Ressourcen unter CPU, GPU, SSD usw. aufweisen.
    • 13 veranschaulicht eine beispielhafte Umgebung, in der bei kollaborativer Ressourcenverwaltung über einen dezentralen öffentlichen Blockchain-Ledger ein Konsens erreicht wird.
    • 14 ist ein Blockdiagramm einer beispielhaften dynamisch verhandelbaren Bibliothek eines dynamischen neuronalen Netzes.
    • 15 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um Merkmale für tiefes neuronales Netzwerklernen basierend auf Hardwarefähigkeiten auszuwählen.
    • 16 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die eine Prozessorschaltung beinhaltet, die zum Ausführen der beispielhaften maschinenlesbaren Anweisungen und/oder der beispielhaften Operationen strukturiert ist, um den beispielhaften Konfigurator für zusammensetzbare Maschinenlernsysteme aus 1, 2 und/oder 3 zu implementieren.
    • 17 ist eine Veranschaulichung einer beispielhaften automatischen Maschinenlern- (AutoML-) Architektur, die einen beispielhaften Maschinenlernsystem-Konfigurator zum Identifizieren und/oder Erzeugen eines zusammensetzbaren Maschinenlern-Rechenknotens beinhaltet.
    • 18 ist ein Blockdiagramm einer beispielhaften Konfiguration eines dynamischen XPU-Hardware-orientierten Deep-Learning- (DL-) Modell-Verwaltungssystems 200, das gemäß den Lehren dieser Offenbarung implementiert ist.
    • 19 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um die beispielhafte Modelltrainingsschaltungsanordnung aus 18 zu implementieren.
    • 20 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um die beispielhafte Modellverwaltungsschaltungsanordnung aus 18 zu implementieren.
    • 21 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die eine Prozessorschaltung beinhaltet, die zum Ausführen der beispielhaften maschinenlesbaren Anweisungen und/oder der beispielhaften Operationen aus 19 strukturiert ist, um die Modelltrainingsschaltungsanordnung und die Modellverwaltungsschaltungsanordnung aus 18 zu implementieren.
    • 22 ist ein Blockdiagramm eines gemäß den Lehren dieser Offenbarung implementierten beispielhaften Systems zur datenverbesserten automatisierten Modellerzeugung.
    • 23 ist ein Blockdiagramm eines beispielhaften Prozessflusses, der das beispielhafte System aus 22 nutzt.
    • 24 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um die beispielhafte Wissensaufbau-Schaltungsanordnung und die beispielhafte Modellaufbau-Schaltungsanordnung aus 22 zu implementieren.
    • 25 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um die beispielhafte Zielhardware aus 22 zu implementieren.
    • 26 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die eine Prozessorschaltung beinhaltet, die zum Ausführen der beispielhaften maschinenlesbaren Anweisungen und/oder der beispielhaften Operationen aus 24 strukturiert ist, um die beispielhafte Wissensaufbau-Schaltungsanordnung und die beispielhafte Modellaufbau-Schaltungsanordnung aus 22 zu implementieren.
    • 27 ist ein Blockdiagramm einer beispielhaften Rechenvorrichtung.
    • 28 ist ein Blockdiagramm einer Implementierung der beispielhaften Befehlssatzarchitektur- (instruction set architectur, ISA-) Verwaltungsschaltungsanordnung und der Mikrocode-Verarbeitungsschaltungsanordnung aus 27.
    • 29 und 30 sind Flussdiagramme, die beispielhafte maschinenlesbare Anweisungen darstellen, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um die ISA-Verwaltungsschaltungsanordnung aus 28 zu implementieren.
    • 31 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um die Mikrocode-Verarbeitungsschaltungsanordnung aus 28 zu implementieren.
    • 32 ist ein beispielhaftes Diagramm, das beispielhafte Operationen darstellt, die durch die ISA-Verwaltungsschaltungsanordnung aus 28 ausgeführt werden können.
    • 33 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die eine Prozessorschaltung beinhaltet, die zum Ausführen der beispielhaften maschinenlesbaren Anweisungen aus 29 bis 31 strukturiert ist, um die beispielhafte Rechenvorrichtung aus 27 zu implementieren.
    • 34 ist eine Veranschaulichung einer beispielhaften automatischen Maschineniem- (AutoML-) Architektur, die einen beispielhaften Maschinenlernsystem-Konfigurator zum Identifizieren und/oder Erzeugen eines zusammensetzbaren Maschinenlern-Rechenknotens beinhaltet.
    • 35 ist ein Blockdiagramm einer beispielhaften Implementierung des Maschinenlernsystem-Konfigurators aus 34.
    • 36 ist ein Blockdiagramm einer beispielhaften Implementierung des Maschinenlernsystem-Konfigurators aus 34 und/oder 35.
    • 37 ist eine Veranschaulichung eines beispielhaften Arbeitsablaufs zum Erzeugen eines zusammensetzbaren Maschinenlern-Rechenknotens.
    • 38 ist eine Veranschaulichung eines weiteren beispielhaften Arbeitsablaufs zum Identifizieren eines zusammensetzbaren Maschinenlern-Rechenknotens.
    • 39 ist eine Veranschaulichung einer beispielhaften Implementierung einer beispielhaften Ontologiedatenbank.
    • 40 ist eine Veranschaulichung eines weiteren beispielhaften Arbeitsablaufs zum Identifizieren eines zusammensetzbaren Maschinenlern-Rechenknotens.
    • 41 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um den beispielhaften Konfigurator für zusammensetzbare Maschinenlernsysteme aus 34, 35 und/oder 36 zu implementieren, um eine Arbeitslast mit einem zusammensetzbaren Maschinenlern-Rechenknoten auszuführen.
    • 42 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um den beispielhaften Konfigurator für zusammensetzbare Maschinenlernsysteme aus 34, 35 und/oder 36 zu implementieren, um basierend auf einer Maschineniem-Arbeitslast eine erste Konfiguration eines oder mehrerer Maschinenlernmodelle zu erzeugen.
    • 43 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um den beispielhaften Konfigurator für zusammensetzbare Maschinenlernsysteme aus 34, 35 und/oder 36 zu implementieren. 34, 35 und/oder 36, um eine zweite Konfiguration für Hardware zu erzeugen.
    • 44 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um den beispielhaften Konfigurator für zusammensetzbare Maschinenlernsysteme aus 34, 35 und/oder 36 zu implementieren, um basierend auf einem Evaluierungsparameter eine erste Konfiguration anzupassen.
    • 45 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um den beispielhaften Konfigurator für zusammensetzbare Maschinenlernsysteme aus 34, 35 und/oder 36 zu implementieren, um basierend auf einem Evaluierungsparameter eine zweite Konfiguration anzupassen.
    • 46 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine beispielhafte Prozessorschaltung ausgeführt werden können, um den beispielhaften Konfigurator für zusammensetzbare Maschinenlernsysteme aus 34, 35 und/oder 36 zu implementieren, um einen Rechenknoten einzusetzen, um eine Maschinenlern-Arbeitslast auszuführen.
    • 47 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die eine Prozessorschaltung beinhaltet, die zum Ausführen der beispielhaften maschinenlesbaren Anweisungen und/oder der beispielhaften Operationen aus 41 bis 46 strukturiert ist, um den beispielhaften Konfigurator für zusammensetzbare Maschinenlernsysteme aus 34, 35 und/oder 36 zu implementieren.
    • 48 ist ein Blockdiagramm einer beispielhaften Implementierung der Prozessorschaltung aus 16, 21, 26, 33 und/oder 47.
    • 49 ist ein Blockdiagramm einer weiteren beispielhaften Implementierung der Prozessorschaltung aus 16, 21, 26, 33 und/oder 47.
    • 50 ist ein Blockdiagramm einer beispielhaften Softwareverteilungsplattform (z.B. ein oder mehrere Server) zum Verteilen von Software (z.B. Software, die den vorliegend beschriebenen maschinenlesbaren Anweisungen entspricht) an Client-Vorrichtungen, die mit Endbenutzern und/oder Verbrauchern (z.B. für Lizenz, Verkauf und/oder Verwendung), Einzelhändler (z.B. für Verkauf, Wiederverkauf, Lizenz und/oder Sublizenz) und/oder Originalgeräteherstellen (OEMs) (z.B. zur Aufnahme in Produkte, die zum Beispiel an Einzelhändler und/oder an andere Endbenutzer wie etwa Direktkaufskunden zu verteilen sind) in Zusammenhang stehen.
  • Grundsätzlich werden in allen Zeichnungen und in der beigefügten schriftlichen Beschreibung dieselben Bezugszeichen verwendet, um auf dieselben oder ähnliche Teile Bezug zu nehmen. Die Figuren sind nicht maßstabsgetreu.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wie vorliegend verwendet, können Verbindungsbezüge (z.B. angebracht, gekoppelt, verbunden und angefügt) Zwischenglieder zwischen den Elementen, auf die durch den Verbindungsbezug verwiesen wird, und/oder eine Relativbewegung zwischen diesen Elementen beinhalten, sofern nichts anderes angegeben ist. Aus Verbindungsbezügen lässt sich somit nicht notwendigerweise schließen, dass zwei Elemente direkt verbunden sind und/oder in fester Beziehung zueinander stehen.
  • Sofern nicht explizit anders angegeben, werden Deskriptoren, wie etwa „erste/r/s“, „zweite/r/s“, „dritte/r/s“ usw., vorliegend verwendet, ohne irgendeine Bedeutung von Priorität, physischer Reihenfolge, Anordnung in einer Liste und/oder Reihenfolge auf irgendeine Weise zu unterstellen oder anderweitig anzugeben, sondern werden lediglich als Bezeichnungen und/oder willkürliche Namen verwendet, um Elemente zum einfachen Verständnis der offenbarten Beispiele zu unterscheiden. In einigen Beispielen kann der Deskriptor „erste/r/s“ verwendet werden, um auf ein Element in der ausführlichen Beschreibung zu verweisen, während auf dasselbe Element in einem Anspruch mit einem anderen Deskriptor wie „zweite/r/s“ oder „dritte/r/s“ verwiesen wird. In derartigen Fällen versteht es sich, dass derartige Deskriptoren lediglich zum eindeutigen Identifizieren dieser Elemente verwendet werden, die zum Beispiel ansonsten einen gleichen Namen teilen könnten.
  • Vorliegend verweist „im Wesentlichen Echtzeit“ und „im Wesentlichen gleichzeitig“ auf ein Auftreten auf eine nahezu augenblickliche Weise, die anerkennt, dass es in der Realität Verzögerungen für Rechenzeit, Übertragung usw. geben kann. Sofern nichts anderes angegeben ist, beziehen sich „im Wesentlichen Echtzeit“ und „im Wesentlichen gleichzeitig“ somit auf Echtzeit +/- 1 Sekunde. Wie hier verwendet, schließt die Formulierung „in Kommunikation“, einschließlich Variationen davon, eine direkte Kommunikation und/oder eine indirekte Kommunikation durch eine oder mehrere Zwischenkomponenten ein und erfordert keine direkte physische (z. B. drahtgebundene) Kommunikation und/oder konstante Kommunikation, sondern schließt vielmehr zusätzlich eine selektive Kommunikation in periodischen Intervallen, geplanten Intervallen, aperiodischen Intervallen und/oder einmaligen Ereignissen ein.
  • Vorliegend ist „Prozessorschaltung" so definiert, dass sie (i) eine oder mehrere elektrische Spezialschaltungen beinhaltet, die zum Durchführen einer oder mehrerer spezifischer Operationen strukturiert sind und eine oder mehrere halbleiterbasierte Logikvorrichtungen (z.B. elektrische Hardware, die durch einen oder mehrere Transistoren implementiert wird) beinhalten, und/oder (ii) eine oder mehrere halbleiterbasierte elektrische Universalschaltungen beinhaltet, die mit Anweisungen zum Durchführen spezifischer Operationen programmiert sind und eine oder mehrere halbleiterbasierte Logikvorrichtungen (z.B. elektrische Hardware, die durch einen oder mehrere Transistoren implementiert wird) beinhalten. Zu Beispielen für Prozessorschaltung en zählen programmierte Mikroprozessoren, frei programmierbare Gate-Arrays (FPGAs), die Anweisungen instanziieren können, Zentralprozessoreinheiten (CPUs), Grafikprozessoreinheiten (GPUs), digitale Signalprozessoren (DSPs), XPUs oder Mikrocontroller und integrierte Schaltungen, wie etwa anwendungsspezifische integrierte Schaltungen (ASICs). Zum Beispiel kann eine XPU durch ein heterogenes Rechensystem (z.B. ein Rechensystem mit einer oder mehreren heterogenen Verarbeitungseinheiten) implementiert werden, das mehrere Arten von Prozessorschaltung en (z.B. ein oder mehrere FPGAs, eine oder mehrere CPUs, eine oder mehrere GPUs, einen oder mehrere DSPs usw. und/oder eine Kombination aus diesen) und eine oder mehrere Anwendungsprogrammierschnittstellen (API(s)) beinhaltet, die eine oder mehrere Rechenaufgaben derjenigen der mehreren Arten von Prozessorschaltung en zuweisen können, die am besten geeignet ist, um die Rechenaufgabe(n) auszuführen.
  • Computerkomponenten, solche Komponenten, die Prozessoren beinhalten, einschließlich heterogener Prozessoren, und/oder andere Computerkomponenten können Firmware zum Booten, Initialisieren und/oder für den Betrieb verwenden. Es ist wünschenswert, Computerkomponenten und Computer mit vielen Verarbeitungsfähigkeiten, wie etwa Grafik und/oder künstliche Intelligenz, bereitzustellen. Es ist zudem wünschenswert, die Materialliste (bill of materials, BoM) und/oder die Kosten solcher Rechensysteme zu reduzieren. Es sind Einrichtungen, Herstellungsartikel und Verfahren offenbart, die das gemeinsame Nutzen von Ressourcen zwischen Prozessoren, wie etwa CPUs, GPUs, KI-Chips, FPGAs, ASICs, Mikrosteuerungen (z.B. eingebettete Mikrosteuerungen) usw. ermöglichen. Das Identifizieren der gemeinsamen und/oder gemeinsam nutzbaren Ressourcen der CPU und anderer Prozessoren auf einer heterogenen Prozessorplattform (z.B. einer Plattform, die eine CPU und diskrete Grafikverarbeitung beinhaltet) kann eine Nutzung dedizierter Hardware auf der Plattform reduzieren, was helfen kann, BoM-Kosten zu reduzieren. Vorliegend offenbarte Einrichtungen, Herstellungsartikel und Verfahren verbessern die Effizienz, wie etwa durch Wiederverwenden von Firmware und/oder Software (z.B. unter Verwendung einer OneAPI-Bibliothek).
  • Einige Cloud-Dienstanbieter (CSPs) entwickeln ihre Hardwareplattformen zu disaggregierten Elementen, die aus Universalprozessoren, heterogenen Beschleunigern und zweckmäßigen vertikal integrierten Infrastrukturverarbeitungseinheiten (IPUs), XPUs, DPUs usw. bestehen. Einige Ressourcenverwaltungssysteme (resource management systems, RMS) (z.B. INTEL® RDT) arbeiten mit einer CPU als Steuerpunkt und verwalten Plattformressourcen auf Serverknoten-Ebene, die sich um die CPU drehen. Solche Ansätze sind möglicherweise nicht skalierbar oder sogar auf IPU-gehostete Mikrodienst-basierte Infrastruktur anwendbar, bei der die IPU der Steuerpunkt wird. IPU-basierte Systeme stören die Art und Weise, wie Datenzentrum-Ressourcenverwaltungssysteme arbeiten (z.B. weg von der CPU als Steuerpunkt hin zu disaggregierten heterogenen selbstverwaltbaren intelligenten Beschleunigern).
  • Vorliegend offenbarte Einrichtungen, Herstellungsartikel und Verfahren ermöglichen die Implementierung von IPU-Ressourcenverwaltungssystemen (IPU resource management systems, IPURMS), die verteilte Dienste bereitstellen. In einigen Beispielen stellt das vorgeschlagene IPURMS eine dezentrale Peer-to-Peer-IPU-Ressourcenverhandlung und - verwaltung ohne zentrale Beteiligung der CPU gegenüber Mikrodiensten mit niedriger Latenz bereit. In einigen Beispielen stellt das vorgeschlagene IPURMS anwendungsorientierte Ressourcenverwaltung bereit, wobei IPUs RMS-Dienstgütevereinbarungen (service level agreements, SLAs) für eine Vielzahl von Mikrodiensten zur Laufzeit dynamisch neu verhandeln können. In einigen Beispielen ermöglichen die vorgeschlagenen IPURMS P2P-Verhandlungen und Ressourcenverwaltung von IPUs, welche über einen dezentralen verteilten öffentlichen Ledger wie eine Blockchain mit Widerruffähigkeiten verfolgt werden, um Telemetrie mit Prüfbarkeit zu verfolgen/aufzuzeichnen. In einigen Beispielen beinhaltet das vorgeschlagene IPURMS eine IPU, die in zwei Teile unterteilt ist, nämlich i) Datenebene und ii) Steuerebene. Die Steuerebene behandelt Ressourcenzuteilung, Überwachung und Richtliniendurchsetzung und die Datenebene behandelt den Datenfluss zwischen IPUs und den Logikeinheiten, die mit der IPU assoziiert sind.
  • Eine DNN- (deep neural network, tiefes neuronales Netz) Bibliothek (z.B. ein oneAPI-DNN (oneDNN)) stellt Rechenprimitive bereit, um eine verbesserte Deep-Learning-Performanz an CPUs und GPUs mit einer einheitlichen/gleichen API, die für CPUs, GPUs usw. oder eine beliebige Kombination entwickelt wurde, zu ermöglichen. Existierende DNN-Bibliotheken erkennen zugrunde liegende Zielhardwarefähigkeiten (z.B. INTEL® „Deep Learning Boost“-Technologie), um die Inferenz-/Trainingsperformanz zu beschleunigen. Zum Beispiel kann oneDNN JIT- (Just in Time) Coderzeugung nutzen und versucht, eine Befehlssatzarchitektur (ISA) oder eine Mischung von ISA basierend auf erkannten Zielhardwaremerkmalen auszuwählen. Auch wenn diese Abstraktion die Fähigkeiten bereitstellt, um die zugrunde liegende Hardwarefähigkeit auszunutzen, sind hiermit Herausforderungen verbunden. Vorliegend offenbarte Einrichtungen, Herstellungsartikel und Verfahren stellen eine dynamische verhandelbare Bibliothek eines neuronalen Deep-Leming-Netzes bereit, die eine konfigurierbare und verhandelbare Schnittstelle für Anwendungs-Frameworks ermöglicht, um SLA zum Konfigurieren von JIT-Codeerzeugungsparametern zur Laufzeit zu spezifizieren. Solche Systeme können richtlinienkonfigurierbar sein, mit oder ohne vertrauenswürdige Ausführungsumgebung (trusted execution environment, TEE) auf der Plattform, die helfen kann, den Kernel hinsichtlich Leistung, Performanz, Energieeffizienz und Optimierung zusätzlich zu reinen Fähigkeiten der Hardware dynamisch zu verwalten. Vorliegend offenbarte Einrichtungen, Herstellungsartikel und Verfahren filtern einen Implementierungssatz von Parametern, um einen Kandidatensatz basierend auf Anwendungs-SLA und Plattforminformationen zu identifizieren. Ein entsprechender JIT-Kernel kann dynamisch für jeden aus dem Kandidatensatz erzeugt werden. Vorliegend offenbarte Einrichtungen, Herstellungsartikel und Verfahren können an den Kernels nacheinander Testläufe durchführen, den mit der besten Performanz (z.B. Leistungs-/Energieeffizienz, TCO-Vorteil usw.) auswählen und sie für eine spätere Verwendung zwischenspeichern.
  • 1 ist ein Blockdiagramm einer beispielhaften Architektur 100, die beispielhafte optimierte Anwendungen 104, beispielhafte optimierte Middleware und Frameworks 106 und beispielhafte Anwendungsprogrammierschnittstellen (APIs) 108 beinhaltet. In einigen Beispielen können die optimierten Anwendungen 104 durch Anwendungen (z.B. Softwareanwendungen, web- oder browserbasierte Anwendungen usw.) implementiert werden, die angepasst, zugeschnitten und/oder anderweitig optimiert sind, um die Identifikation und/oder Erzeugung eines zusammensetzbaren ML-Rechenknotens zu bewirken. Zum Beispiel kann auf die optimierten Anwendungen 104 durch einen Entwickler (z.B. einen Softwareentwickler, einen Forscher usw.), IT- (Informationstechnologie) Personal usw. zugegriffen werden, diese genutzt werden usw. In einigen solchen Beispielen kann auf die optimierten Anwendungen 104 zugegriffen werden, diese genutzt werden usw., um eine Hardware/Software- (HW/SW-) Lösung für ein technisches Problem, das von KI/ML-Methoden profitieren kann, gemeinsam zu entwerfen. In einigen Beispielen können die optimierte Middleware und die optimierten Frameworks 106 durch Middleware und Frameworks implementiert werden, die angepasst, zugeschnitten und/oder anderweitig optimiert sind, um die Identifikation und/oder Erzeugung eines zusammensetzbaren ML-Rechenknotens zu bewirken. Zum Beispiel können die optimierte Middleware und die optimierten Frameworks 106 eine Schnittstelle (z.B. Kommunikation, Konnektivität usw.) zwischen den optimierten Anwendungen 104 und den APIs 108 implementieren.
  • Die APIs 108 des veranschaulichten Beispiels können aufgerufen werden, um eine KI/ML-Anwendung durch Direktprogrammierung und/oder API-basierte Programmierung zu programmieren, zu entwickeln und/oder anderweitig zu erzeugen. Die APIs 108 des veranschaulichten Beispiels beinhalten beispielhafte Portierungstools 110, beispielhafte Direktprogrammierungs-APIs 112, beispielhafte API-basierte Programmierungs-APIs 114 und beispielhafte Analysetools 116.
  • In einigen Beispielen können die Portierungstools 110 durch Software (z.B. eine Softwareanwendung) implementiert werden, die ein Programm zum Zweck des Erreichens irgendeiner Form von Ausführung in einer ersten Rechen- oder elektronischen Umgebung anpassen kann, die sich von einer zweiten Rechen- oder elektronischen Umgebung unterscheidet, für die das Programm ursprünglich konzipiert wurde. Zum Beispiel können die Portierungstools 110 ein erstes Programm, das für einen ersten Typ von Hardware, Betriebssystem (OS), Bibliothek usw. entwickelt wurde, in ein zweites Programm für einen zweiten Typ von Hardware, OS, Bibliothek usw. umwandeln und/oder anderweitig anpassen.
  • In einigen Beispielen können die Direktprogrammierungs-APIs 112 aufgerufen werden, um Direktprogrammieraufgaben zu bewirken, was das Entwickeln und/oder Kompilieren von datenparallelen C++-Anwendungen beinhalten kann. In einigen Beispielen können die API-basierten Programmierungs-APIs 114 aufgerufen werden, um API-basierte Programmierung zu bewirken, was das Entwickeln und/oder Kompilieren von Anwendungen beinhalten kann, die eine Math Kernel Library (MKL), eine MKL-DNN- (tiefes neuronales Netz) Bibliothek, eine Datenanalytik-Beschleunigungsbibliothek, eine Thread-Bausteinbibliothek, eine Parallelstandardvorlagenbibliothek, ein Mediensoftware-Entwicklungskit (software development kit, SDK), ein Deep-Learning-Einsatz-Toolkit, eine Maschinenlern-Skalierungsbibliothek usw. und/oder eine oder mehrere beliebige Kombinationen aus diesen abrufen (oder aufrufen, instanziieren usw.).
  • In einigen Beispielen können die Analysetools 116 abgerufen, instanziiert und/oder anderweitig aufgerufen werden, um Hardware, Software und/oder Konfiguration(en) davon eines zusammensetzbaren ML-Rechenknotens zu analysieren. Zum Beispiel können die Analysetools 116 einen oder mehrere Emulatoren instanziieren, um alle Hardware- und/oder Softwaremerkmale des zusammensetzbaren ML-Rechenknotens zu emulieren, um einen oder mehrere Evaluierungsparameter zu erzeugen und/oder anderweitig auszugeben. In einigen solchen Beispielen können die Evaluierungsparameter Parameter beinhalten, die Genauigkeit, Latenz, eine Anzahl von Zyklen zum Abschließen einer Arbeitslast oder einen Durchsatz des zusammensetzbaren ML-Rechenknotens darstellen und/oder anderweitig angeben. In einigen Beispielen können die Evaluierungsparameter Parameter beinhalten, die eine Prozessor- oder Taktfrequenz, eine Fabric-Frequenz, eine Lesespeicherbandbreite, eine Schreibspeicherbandbreite, Hardware-Herabsetzungs- (de-rate) Faktoren, eine Anzahl von Speicherports, eine Anzahl von Datenverarbeitungseinheiten (DPUs), eine Anzahl von Modellschichten (z.B. Neuronalnetzschichten, Faltungsschichten usw.), eine Aktivierungsgenauigkeit (z.B. eine Genauigkeit von Aktivierungswerten, die verarbeitet werden sollen), eine Gewichtungsgenauigkeit (z.B. eine Genauigkeit von Gewichtungswerten, die verarbeitet werden sollen) usw. und/oder eine oder mehrere beliebige Kombinationen aus diesen darstellen und/oder anderweitig angeben. Zum Beispiel können die Analysetools 116 einen Emulator basierend auf dem zusammensetzbaren ML-Rechenknoten ausführen. In einigen solchen Beispielen können die Analysetools 116 den Emulator ausführen, um einen Durchsatz des zusammensetzbaren ML-Rechenknotens zu ermitteln, wenn der zusammensetzbare ML-Rechenknoten ein bestimmtes KI/ML-Modell mit einer bestimmten Konfiguration ausführt.
  • In einigen Beispielen können die Analysetools 116 einen oder mehrere Simulatoren instanziieren, um das Verhalten, die Konfiguration usw. eines zusammensetzbaren ML-Rechenknotens zu simulieren, um einen oder mehrere Evaluierungsparameter zu erzeugen und/oder anderweitig auszugeben. Zum Beispiel können die Analysetools 116 ein Modell (z.B. ein Simulationsmodell, ein KI/ML-Modell usw.) basierend auf dem zusammensetzbaren ML-Rechenknoten ausführen. In einigen solchen Beispielen können die Analysetools 116 das Modell ausführen, um einen Durchsatz des zusammensetzbaren ML-Rechenknotens zu schätzen, vorherzusagen und/oder anderweitig zu ermitteln, wenn der zusammensetzbare ML-Rechenknoten ein bestimmtes KI/ML-Modell mit einer bestimmten Konfiguration ausführt.
  • Die Architektur 100 des veranschaulichten Beispiels beinhaltet verschiedene Arten von Hardware und/oder Software, aus denen ein zusammensetzbarer ML-Rechenknoten erzeugt werden kann. In dem veranschaulichten Beispiel beinhaltet die Architektur 100 Schnittstellen und Zielsystemsoftware für Skalar-, Vektor-, Matrix- und räumliche Hardware. Zusätzlich und/oder alternativ kann eine beliebige andere Art von Hardware verwendet werden. In diesem Beispiel wird die Skalarhardware durch eine beispielhafte CPU 118 und eine beispielhafte CPU-Systemsoftware 120 implementiert. Zum Beispiel kann die CPU-Systemsoftware 120 Anweisungen beinhalten, die einer CPU-Befehlssatzarchitektur (ISA) entsprechen. In diesem Beispiel wird die Vektorhardware durch eine beispielhafte GPU 122 und eine beispielhafte GPU-Systemsoftware 124 implementiert. Zum Beispiel kann die GPU-Systemsoftware 124 Kernels, einen oder mehrere Abschnitte von Code usw., wie etwa Kernels, Rechenkernels und/oder Shader, beinhalten. In einigen Beispielen können die Kerne, der(die) Codeabschnitt(e) usw. in einer höheren Programmiersprache dargestellt werden, wie etwa zum Beispiel High-Level Shader Language (HLSL), OpenCL usw.
  • In diesem Beispiel wird die Matrixhardware durch einen beispielhaften KI-Prozessor 126 und eine beispielhafte KI-Systemsoftware 128 implementiert. Zum Beispiel kann die KI-Systemsoftware 128 einen oder mehrere KI/ML-Algorithmen, Modelle usw. beinhalten, wie etwa neuronale Netze (z.B. neuronale Faltungsnetze (convolutional neural networks, CNNs), tiefe neuronale Netze (DNNs), rekurrente neuronale Netze (RNNs) usw.), lineare Regressionsmodelle, logistische Regressionsmodelle, Entscheidungsbaummodelle, Lernvektorquantisierungsmodelle usw. und/oder Kombination(en) aus diesen. In diesem Beispiel wird die räumliche Hardware durch ein beispielhaftes FPGA 130 und eine beispielhafte FPGA-Systemsoftware 132 implementiert. Zum Beispiel kann die FPGA-Systemsoftware 132 Kernels, Codeabschnitt(e) usw. basierend auf einer Hardwarebeschreibungssprache (hardware description language, HDL) wie etwa Verilog beinhalten.
  • In dem veranschaulichten Beispiel können die CPU-Systemsoftware 120, die GPU-Systemsoftware 124, die KI-Systemsoftware 128, die FGPA-Systemsoftware 132, die Host-Schnittstelle 134 und/oder die Nullebenen- (level-zero) Schnittstelle 136 einer beispielhaften Systemsoftware unterhalb der Ebene Null 138 entsprechen und/oder diese anderweitig implementieren. Zum Beispiel kann Systemsoftware unterhalb der Ebene Null 138 Direkt-zu-Metall-Schnittstellen niedriger Ebenen entsprechen und/oder diese anderweitig implementieren, die auf Hardware, wie etwa die CPU 118, die GPU 122 usw., zugeschnitten sind.
  • In dem veranschaulichten Beispiel können die APIs 108 beispielhafte Systemsoftware oberhalb der Ebene Null 140 und eine beispielhafte Entwicklerschnittstelle 142 implementieren. Zum Beispiel kann ein Entwickler, ein Benutzer usw. über die APIs 108 auf die Architektur 100 zugreifen und/oder diese anderweitig nutzen. In einigen Beispielen kann ein Entwickler, ein Benutzer usw. über die APIs 108 auf Systemsoftware auf einer höheren Ebene als Direkt-zu-Metall-Schnittstellen niedriger Ebenen zugreifen und/oder diese anderweitig nutzen. In einigen Beispielen kann ein Entwickler, ein Benutzer usw. über die Host-Schnittstelle 134 und/oder die Nullebenen-Schnittstelle 136 auf die Systemsoftware unterhalb der Ebene Null 138 zugreifen und/oder diese anderweitig nutzen.
  • Die Architektur 100 ist gut dazu geeignet, eine effiziente Nutzung der Hardware, wie etwa der CPU 118, der GPU 122 usw., mittels der APIs 108 zu ermöglichen. APIs können zum Beispiel zu den APIs 108 hinzugefügt werden, um verschiedene Prozesse zu erleichtern und/oder zu verbessern. Beispielsweise beinhalten offenbarte Beispiele APIs, die auf einen Satz von Bibliotheksfunktionen gerichtet sind, die mit XPU-Hardware kommunizieren können (z.B. um die gemeinsame Nutzung von Firmware- und Softwareressourcen zwischen Verarbeitungseinheiten zu erleichtern). In einigen offenbarten Beispielen können die APIs 108 Plattformkomponenten beinhalten, um maschinelles Lernen (z.B. eine dynamische verhandelbare tiefe neuronale Netzplattform) zu unterstützen. Zum Beispiel können die Maschinenlernkomponenten der APIs 108 arbeiten, um das Targeting von Hardwarefähigkeiten zu verbessern, um die Performanz zu verbessern (z.B. Verbesserung der Deep-Learning-Inferenzperformanz). Die offenbarten API-Verbesserungen (und andere vorliegend offenbarte Verbesserungen) können separat und/oder in Kombination implementiert werden. Zum Beispiel können die APIs 108 die auf einen Satz von Bibliotheksfunktionen gerichteten APIs beinhalten, die mit XPU-Hardware kommunizieren können, um die gemeinsame Nutzung von Firmware- und Softwareressourcen zwischen Verarbeitungseinheiten zu ermöglichen, und die APIs 108 können die APIs beinhalten, um das Targeting von Hardwarefähigkeiten zu verbessern, um die Deep-Learning-Inferenzperformanz zu verbessern. Zum Beispiel können die verschiedenen Verbesserungen, wenn sie kombiniert werden, additive Systemperformanzerhöhungen und reduzierte BOM-Kosten bereitstellen.
  • SYMBIOTISCHES BOOTEN
  • 2 ist ein Blockdiagramm einer beispielhaften Architektur 200 zum gemeinsamen Nutzen von Speicher zwischen zwei Verarbeitungseinheiten (z.B. einer CPU und einer GPU). Zum Beispiel kann die Architektur 200 in Verbindung mit der Architektur 100 aus 1 oder einer beliebigen anderen Computerarchitektur mit mehreren Verarbeitungseinheiten genutzt werden. Die beispielhafte Architektur 200 aus 2 beinhaltet eine beispielhafte CPU 202, die einen beispielhaften Plattform-Steuerhub 204 und eine beispielhafte serielle Peripherieschnittstelle (serial peripheral interface, SPI) 206 beinhaltet, eine beispielhafte GPU 208, die einen beispielhaften dedizierten GPU-Flash 210 und eine beispielhafte gemeinsam genutzte SPI 212 beinhaltet, und einen beispielhaften SPI-Flash 214. Gemäß dem veranschaulichten Beispiel ermöglicht die Architektur 200, dass die CPU 202 und die GPU 208 den SPI-Flash 214 gemeinsam nutzen.
  • Die beispielhafte CPU 202 ist eine Zentralverarbeitungseinheit für ein Rechensystem. Alternativ kann die CPU 202 eine beliebige andere Art von Verarbeitungseinheit sein. Die beispielhafte CPU 292 beinhaltet den beispielhaften Plattform-Steuerhub (platform control hub, PCH) 204, der eine Schaltungsanordnung, Software und/oder Firmware zum Verwalten von Datenpfaden und Unterstützen von Funktionen der CPU 202 umfasst. Alternativ kann eine beliebige andere Art von Steuerschaltungsanordnung, -chipsatz, - software und/oder -firmware genutzt werden. Der beispielhafte PCH 204 kann eine Anzahl von Schnittstellen beinhalten, die gemäß dem veranschaulichten Beispiel die SPI 206 beinhalten. Die beispielhafte SPI 206 verbindet den PCH 204 und die CPU 202 mit dem SPI-Flash 214, um Initialisierung und Booten der CPU 202 und der Architektur 200 als Ganzes zu erleichtern.
  • Die beispielhafte GPU 208 ist ein Ein-Chip-System (system on chip, SoC) einer Grafikverarbeitungseinheit, das an ein Motherboard gelötet ist, auf dem die CPU 202 installiert ist (z.B. eine Motherboard- (MB-) Abwärts-Lösung). Alternativ kann die GPU 208 eine beliebige andere Art von Verarbeitungseinheit (z.B. eine KI-Verarbeitungseinheit, XPU usw.) sein, die auf eine beliebige andere Weise mit der Architektur 200 gekoppelt ist (z.B. eine diskrete PCIE-basierte Add-In-Karte (AIC), die an einen PCIE-Steckplatz in einer Client-Vorrichtung angeschlossen ist, eine externe Grafikverarbeitungseinheit, die über ein Kabel/einen Port (z.B. einen Thunderbolt-Port) der Architektur 200 verbunden ist usw.).
  • Während eine typische GPU zusätzlich zu dem SPI-Speicher der CPU (z.B. 32MB-Flash-Speicher) ihren eigenen SPI-Speicher (z.B. 8MB-Flash-Speicher) aufweisen würde, der Anweisungen zum Handhaben eines Boot-Prozesses in Verbindung mit der GPU speichert, beinhaltet die beispielhafte GPU 208 einen dedizierten GPU-Flash 210 und eine gemeinsam genutzte SPI 212, die das gemeinsame Nutzen des SPI-Flash 214 mit der CPU 202 erleichtern. Gemäß dem veranschaulichten Beispiel wird ein integriertes Firmware-Abbild (integrated firmware image, IFWI) der GPU in dem gemeinsam genutzten SPU-Flash 214 gespeichert.
  • Der beispielhafte SPI-Flash 214 ist eine SPINOR-Flash-Speichervorrichtung, die eine SPI-Schnittstelle für den Zugriff beinhaltet. Der SPI-Flash 214 speichert IFWI-Informationen zur Initialisierung und zum Booten der CPU 202 und der GPU 208. Alternativ kann eine beliebige andere Art von Flash-Speicher genutzt werden.
  • 3 ist ein Blockdiagramm eines beispielhaften Ansatzes zum gemeinsamen Verwenden des SPI-Flash 214 mittels gemeinsamer Nutzung von angeschlossenem Flash. Gemäß dem veranschaulichten Beispiel ist die beispielhafte GPU 208 über eine beispielhafte erste erweiterte SPI- (enhanced SPI, eSPI-) Schnittstelle 302 der CPU 202, die mit einer beispielhaften zweiten eSPI-Schnittstelle 304 der GPU 208 in Kommunikation steht, kommunikativ mit der beispielhaften CPU 202 gekoppelt. Somit kann die GPU 208 über den Flash-Zugriffskanal, der durch die erste eSPI-Schnittstelle 302 und die zweite eSPI-Schnittstelle 304 unterstützt wird, auf den SPI-Flash 214 zugreifen, während der PCH 204 der CPU 202 über die SPI 206 auf den SPI-Flash 214 zugreift.
  • Laufzeitzugriff auf den SPI-Flash 214 durch die eSPI-Schnittstelle, die durch die erste eSPI 302 und die zweite eSPI 304 eingerichtet ist, erfolgt durch die eSPI-Primärseite (CPU 202), die dann den Zyklus zu dem Flash-Zugriffsblock der CPU 202 routet, bevor der Zyklus zu dem PCH (z.B. einer SPI-Flash-Steuerung des PCH 204) der CPU 202 weitergeleitet wird. Die SPI-Flash-Steuerung führt dann den Zugriff auf den SPI-Flash 214 für die eSPI-Sekundärseite (GPU 208) durch. Die Flash-Zugriffsadressen, die von den eSPI-Sekundärvorrichtungen (z.B. der GPU 208) verwendet werden, sind physische lineare Flash-Adressen, die den gesamten Flash-Adressierungsraum abdecken. Die SPI-Flash-Steuerung kann jedoch Zugriffsbeschränkungen gewisser Regionen des SPI-Flash 214 auferlegen, um Sicherheit zu gewährleisten.
  • Die vorgeschlagenen Hardwareänderungen zum Unterstützen des gemeinsamen Verwendens des SPI-Flash 214 können mit Aktualisierungen am Layout des SPI-Flash 214 (z.B. einem aktualisierten Hauptbereichsdeskriptor) gekoppelt sein, um eine dedizierte Sekundärvorrichtungsfirmware aufzunehmen, die in den SPI-Flash 214 abgebildet wird. Eine Deskriptoränderung kann ein Injizieren einer Firmware-Region einer Sekundärvorrichtung in ein IFWI-Layout auf dem SPI-Flash 214 ermöglichen.
  • 4 veranschaulicht ein beispielhaftes aktualisiertes IFWI-Layout 400 für den SPI-Flash 214. Wie in 4 veranschaulicht, beinhaltet das IFWI-Layout 400 eine dedizierte Firmware-Region für jede XPU-Vorrichtung. Zum Beispiel beinhaltet das beispielhafte IFWI-Layout 400 eine Region 13 zum Speichern von Firmware zum Initialisieren der GPU (z.B. Firmware für länderspezifischen Code (country-specific code, CSC), Firmware-Patches und redundante Bilder), eine Region 14 zum Speichern von Firmware für ein frei programmierbares Gate-Array (FPGA) und eine Region 15 zum Speichern von Firmware für eine KI-Verarbeitungseinheit. Während des Bootens greift der SPI-Flash auf das Basis-Eingabe-Ausgabe-System (basic input output system, BIOS) (z.B. eine System-Boot-Software) bis vor dem Booten und der Initialisierung zu. Sobald ein Hardware-Reset (z.B. RESET#) an die GPU 208 ausgegeben wird, veranlasst die GPU 208 den ROM, mit dem Abrufen eines Firmware-Abbilds aus dem SPI-Flash 214 zu beginnen, um einen Deskriptor zu lesen, um einen dedizierten Flash-Bereich zu kennen, der zum Initialisieren der GPU 208 zugeordnet ist.
  • Die Regionen des SPI-Flash 214 können für Lese- oder Schreibzugriff durch Einstellen eines Schutzparameters im Flash-Deskriptor definiert werden. Zum Beispiel kann Region 0 nur für die CPU gelesen werden und für die GPU nicht zugänglich sein, Region 1 kann durch die CPU gelesen und beschrieben werden (z.B. vor Ende des POST (EOP)) und für die GPU nicht zugänglich sein, Region 13 kann durch die CPU (z.B. für Firmware-Aktualisierungen) und die GPU gelesen und beschrieben werden.
  • Während eine beispielhafte Art und Weise zum Implementieren von Komponenten der Architektur 100 aus 1 in 2 und 3 veranschaulicht ist, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in 2 und/oder 3 veranschaulicht sind, kombiniert, geteilt, umgeordnet, weggelassen, eliminiert und/oder auf eine beliebige andere Weise implementiert werden. Ferner können die beispielhafte CPU 202, der beispielhafte PCH 204, die beispielhafte SPI 206, die beispielhafte GPU 208, die beispielhafte gemeinsam genutzte SPI 212, die beispielhafte erste eSPI 302, die beispielhafte zweite eSPI 304 und/oder allgemeiner die Architekturen 200 und/oder 300 aus 2 und/oder 3 durch Hardware allein oder durch Hardware in Kombination mit Software und/oder Firmware implementiert werden. Somit können zum Beispiel beliebige der beispielhaften CPU 202, des beispielhaften PCH 204, der beispielhaften SPI 206, der beispielhaften GPU 208, der beispielhaften gemeinsam genutzten SPI 212, der beispielhaften ersten eSPI 302, der beispielhaften zweiten eSPI 304 und/oder allgemeiner der Architekturen 200 und/oder 300 aus 2 und/oder 3 durch eine Prozessorschaltung, analoge Schaltung(en), digitale Schaltung(en), Logikschaltung(en), programmierbare(n) Prozessor(en), programmierbare(n) Mikrocontroller, Grafikverarbeitungseinheit(en) (GPU(s)), Digitalsignalprozessor(en) (DSP(s)), anwendungsspezifische integrierte Schaltung(en) (ASIC(s)), programmierbare Logikvorrichtung(en) (PLD(s)) und/oder frei programmierbare Logikvorrichtung(en) (FPLD(s)), wie etwa feldprogrammierbare Gate-Arrays (FPGAs) implementiert werden. Ferner kann die beispielhafte Architektur 100 aus 1 ein oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu oder anstelle der in 2 und 3 veranschaulichten beinhalten und/oder kann mehr als eines von beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen beinhalten.
  • Ein Flussdiagramm, das eine beispielhafte Hardwarelogikschaltungsanordnung, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren der Architektur 200 aus 2 und/oder der beispielhaften Architektur 300 aus 3 darstellt, ist in 5 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch eine Prozessorschaltung sein, wie etwa die Prozessorschaltung 1612, die in der nachstehend in Verbindung mit 16 besprochenen beispielhaften Prozessorplattform 1600 gezeigt ist, und/oder die nachstehend in Verbindung mit 48 und/oder 49 besprochenen beispielhafte Prozessorschaltung. Das Programm kann in Software umgesetzt sein, die auf einem oder mehreren nicht-transienten computerlesbaren Speicherungsmedien gespeichert ist, wie etwa einer Compact Disk (CD), einer Diskette, einem Festplattenlaufwerk (HDD), einem Solid-State-Laufwerk (SSD), einer Digital Versatile Disk (DVD), einer Blu-Ray-Disk, einem flüchtigen Speicher (z.B. Direktzugriffsspeicher (RAM) eines beliebigen Typs usw.) oder einem nichtflüchtigen Speicher (z.B. elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), Flash-Speicher, ein HDD, ein SSD usw.), der einer Prozessorschaltung zugeordnet ist, die sich in einer oder mehreren Hardwarevorrichtungen befindet, jedoch könnten das gesamte Programm und/oder Teile davon alternativ durch eine oder mehrere andere Hardwarevorrichtungen als die Prozessorschaltung ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt sein. Die maschinenlesbaren Anweisungen können über mehrere Hardwarevorrichtungen verteilt und/oder durch zwei oder mehr Hardwarevorrichtungen (z.B. eine Server- und eine Client-Hardwarevorrichtung) ausgeführt werden. Die Client-Hardwarevorrichtung kann zum Beispiel durch eine Endpunkt-Client-Hardwarevorrichtung (z.B. eine Hardwarevorrichtung, die einem Benutzer zugeordnet ist) oder eine Zwischen-Client-Hardwarevorrichtung (z.B. ein Funkzugangsnetz- (RAN-) Gateway, das Kommunikation zwischen einem Server und einer Endpunkt-Client-Hardwarevorrichtung ermöglichen kann) implementiert werden. Gleichermaßen können die nicht-transienten computerlesbaren Speicherungsmedien ein oder mehrere Medien beinhalten, die sich in einer oder mehreren Hardware-Vorrichtungen befinden. Auch wenn das beispielhafte Programm unter Bezugnahme auf das in 5 veranschaulichte Flussdiagramm beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren der beispielhaften Architekturen 200 und/oder 300 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können beliebige oder alle der Blöcke durch eine oder mehrere Hardware-Schaltungen (z.B. Prozessorschaltung, diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführen von Software oder Firmware durchzuführen. Die Prozessorschaltung kann an unterschiedlichen Netzwerkstandorten verteilt und/oder lokal zu einer oder mehreren Hardwarevorrichtungen sein (z.B. ein Einzelkernprozessor (z.B. eine Einzelkern-Zentralprozessoreinheit (CPU)), ein Mehrkernprozessor (z.B. eine Mehrkern-CPU) usw.) in einer einzigen Maschine, mehrere Prozessoren, die über mehrere Server eines Server-Racks verteilt sind, mehrere Prozessoren, die über ein oder mehrere Server-Racks verteilt sind, eine CPU und/oder ein FPGA, die sich in demselben Package (z.B. demselben IC- (integrierte Schaltung) Package oder in zwei oder mehr separaten Gehäusen usw. befinden).
  • Die vorliegend beschriebenen maschinenlesbaren Anweisungen können in einem komprimierten Format und/oder einem verschlüsselten Format und/oder einem fragmentierten Format und/oder einem kompilierten Format und/oder einem ausführbaren Format und/oder einem verpackten Format usw. gespeichert sein. Die vorliegend beschriebenen maschinenlesbaren Anweisungen können als Daten oder Datenstruktur (z.B. Abschnitte von Anweisungen, Code, Darstellungen von Code usw.) gespeichert sein, die eingesetzt werden können, um maschinenlesbare Anweisungen zu erstellen, herzustellen und/oder zu erzeugen. Zum Beispiel können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speicherungsvorrichtungen und/oder Rechenvorrichtungen (z.B. Servern) gespeichert sein, die sich an denselben oder unterschiedlichen Orten eines Netzwerks oder einer Sammlung von Netzwerken (z.B. in der Cloud, in Edge-Vorrichtungen usw.) befinden. Die maschinenlesbaren Anweisungen können eines oder mehrere von Installation, Modifikation, Anpassung, Aktualisierung, Kombination, Ergänzung, Konfiguration, Entschlüsselung, Dekomprimierung, Entpacken, Verteilung, Neuzuweisung, Kompilierung usw. erfordern, um sie durch eine Rechenvorrichtung und/oder eine andere Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Zum Beispiel können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert sein, die einzeln komprimiert, verschlüsselt und/oder auf separaten Rechenvorrichtungen gespeichert sind, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und/oder kombiniert werden, einen Satz maschinenausführbarer Anweisungen bilden, die eine oder mehrere Operationen implementieren, die zusammen ein Programm, wie etwa das vorliegend beschriebene, bilden können.
  • In einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert sein, in dem sie von einer Prozessorschaltung gelesen werden können, aber das Hinzufügen zu einer Bibliothek (z.B. einer Dynamic Link Library (DLL)), zu einem Softwareentwicklungskit (SDK), einer Anwendungsprogrammierungsschnittstelle (API) usw. erfordern, um die maschinenlesbaren Anweisungen auf einer speziellen Rechenvorrichtung oder einer anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen konfiguriert (z.B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.) werden, bevor die maschinenlesbaren Anweisungen und/oder das bzw. die entsprechende(n) Programm(e) gänzlich oder teilweise ausgeführt werden können. Somit können maschinenlesbare Medien, wie vorliegend verwendet, maschinenlesbare Anweisungen und/oder Programm(e) unabhängig von dem jeweiligen Format oder Zustand der maschinenlesbaren Anweisungen und/oder Programm(e) beinhalten, wenn sie gespeichert oder sich anderweitig in Ruhe oder im Durchgang befinden.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können durch eine beliebige vergangene, aktuelle oder zukünftige Anweisungssprache, Skriptsprache, Programmiersprache usw. repräsentiert sein. Beispielsweise können die maschinenlesbaren Anweisungen unter Verwendung beliebiger der folgenden Sprachen repräsentiert sein: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift usw.
  • Wie vorstehend erwähnt, können die beispielhaften Operationen aus 5 unter Verwendung ausführbarer Anweisungen (z.B. computer- und/oder maschinenlesbarer Anweisungen) implementiert werden, die auf einem oder mehreren nichtflüchtigen computer- und/oder maschinenlesbaren Medien gespeichert sind, wie etwa optischen Speicherungsvorrichtungen, magnetischen Speicherungsvorrichtungen, einem HDD, einem Flash-Speicher, einem Nur-Lese-Speicher (ROM), einer CD, einer DVD, einem Cache, einem RAM eines beliebigen Typs, einem Register und/oder einer beliebigen anderen Speicherungsvorrichtung oder Speicherungsplatte, auf der Informationen für eine beliebige Dauer (z.B. für längere Zeiträume, permanent, für kurze Vorgänge, zum temporären Puffern und/oder zum Cachen der Informationen) gespeichert sind. Vorliegend sind die Bezeichnungen „nicht-transientes computerlesbares Medium“ und „nicht-transientes computerlesbares Speichermedium“ ausdrücklich so definiert, dass sie eine beliebige Art von computerlesbarer Speichervorrichtung und/oder Speicherplatte beinhalten und sich ausbreitende Signale ausschließen und Übertragungsmedien ausschließen.
  • „Beinhaltend" und „umfassend“ (und alle Formen und Zeitformen davon) werden hier als offene Begriffe verwendet. Wenn somit ein Anspruch eine beliebige Form von „beinhalten“ oder „umfassen“ (z.B. umfasst, beinhaltet, umfassend, beinhaltend, aufweisend usw.) als eine Präambel oder innerhalb einer Anspruchsrezitation einer beliebigen Art einsetzt, versteht es sich somit, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne außerhalb des Schutzumfangs des entsprechenden Anspruchs oder der entsprechenden Rezitation zu fallen. Wenn vorliegend der Ausdruck „mindestens“ als der Übergangsausdruck in zum Beispiel einer Präambel eines Anspruchs verwendet wird, ist er auf die gleiche Art und Weise offen, wie der Begriff „umfassend“ und „beinhaltend“ offen ist. Der Begriff „und/oder“ betrifft, wenn er zum Beispiel in einer Form wie A, B und/oder C verwendet wird, eine beliebige Kombination oder Untermenge von A, B, C wie (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C oder (7) A mit B und mit C. Wie vorliegend im Zusammenhang mit der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, bezweckt der Ausdruck „mindestens eines von A und B“ auf Implementierungen zu verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Gleichermaßen soll, wie vorliegend im Kontext des Beschreibens von Strukturen, Komponenten , Elementen, Objekten und/oder Dingen verwendet, der Ausdruck „mindestens eines von A oder B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B und (3) mindestens einem A und mindestens einem B beinhalten. Wie vorliegend im Kontext der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll der Ausdruck „mindestens eines von A und B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Gleichermaßen soll, wie vorliegend im Zusammenhang mit der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, der Ausdruck „mindestens eines von A oder B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten.
  • Wie hier verwendet schließen Singularreferenzen (z. B. „ein“, „eine“, „eines“, „erstes“, „zweites“ usw.) einen Plural nicht aus. Der Begriff „ein“ Objekt, wie vorliegend verwendet, verweist auf eines oder mehrere dieses Objekts. Die Begriffe „ein“, „ein oder mehrere“ und „mindestens ein“ werden vorliegend austauschbar verwendet. Wenngleich einzeln aufgelistet, können ferner eine Vielzahl von Mitteln, Elementen oder Verfahrensaktionen durch z.B. dieselbe Entität oder dasselbe Objekt implementiert werden. Auch wenn einzelne Merkmale in unterschiedlichen Beispielen oder Ansprüchen enthalten sein können, können diese zudem möglicherweise kombiniert werden und die Aufnahme in unterschiedlichen Beispielen oder Ansprüchen impliziert nicht, dass eine Kombination von Merkmalen nicht machbar und/oder vorteilhaft ist.
  • 5 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 500 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um ein Firmware-Booten eines Systems durchzuführen, bei dem ein Flash mit gemeinsam genutztem Zugriff zwischen zwei Verarbeitungseinheiten (z.B. der CPU 202 und der GPU 208) implementiert wurde.
  • Die maschinenlesbaren Anweisungen und/oder die Operationen 500 aus 5 beginnen bei Block 502, bei dem die CPU 202 BIOS aus dem SPI-Flash 214 über die SPI 206 abruft (Block 502). Gemäß dem veranschaulichten Beispiel beginnt das BIOS die Ausführung aus Region 2 gemäß dem IFWI-Layout 400 aus 4 (Block 504). Die CPU fährt mit dem Programmieren der CPU 202 und der Chipsatzregister fort (Block 506).
  • Gemäß dem veranschaulichten Beispiel empfängt die GPU 208 parallel zur BIOS-Ausführung einen Reset (z.B. RESET#) und startet das Ausführen eines CSC-ROM (Block 508). Die beispielhafte GPU 208 ruft die GPU-Firmware aus dem SPI-Flash 214 (z.B. Region 13) ab (Block 510). Die beispielhafte GPU-Firmware authentifiziert und lädt ein pCode-Patch aus dem SPI-Flash 214 (Block 512). Die GPI-Firmware, die durch die GPU 208 ausgeführt wird, führt eine Speichersteuerungsinitialisierung durch (Block 514). Wenngleich die Initialisierung der GPU 208 in den Blöcken 508 bis 514 veranschaulicht ist, kann der Prozess zusätzlich oder alternativ eine Initialisierung beliebiger anderer Verarbeitungseinheiten durchführen (z.B. kann nach Block 514 die Initialisierung einer anderen Verarbeitungseinheit beginnen).
  • Die GPU 208 ermittelt, ob die Speichersteuerungsinitialisierung abgeschlossen ist (Block 516). Wenn die Speichersteuerungsinitialisierung abgeschlossen ist, leitet das BIOS eine GPU-Initialisierung ein (Block 518). Zum Beispiel ist ein beispielhafter Prozess zum Durchführen einer GPU-Initialisierung in Verbindung mit 7A und 7B beschrieben. Sobald die GPU-Initialisierung durchgeführt wurde, ist eine beliebige Ausgabevorrichtung (z.B. Hochauflösungs-Multimedia-Schnittstelle (high-definition multimedia interface, HDMI) oder ein Anzeigeport (display port, DP)) der GPU (z.B. diskrete Grafik) mit Auflösung und zugewiesenem Rahmenpuffer (framebuffer) zur weiteren anzeigebezogenen Verwendung bereit (Block 520). Die CPU, die den BIOS- oder Betriebssystem- (OS-) Lader ausführt, rendert den Vor-OS-Startbildschirm unter Verwendung des Rahmenpuffers, während das OS bootet (Block 522). Der Prozess 500 aus 5 ist dann abgeschlossen.
  • 6 ist ein Blockdiagramm eines beispielhaften Layouts des BIOS 600 (z.B. des BIOS, das in Region 2 des IFWI-Layouts 400 aus 4 gespeichert ist). Das beispielhafte BIOS 600 beinhaltet einen Bootloader 602 und einen Siliciuminitialisierungscode 604 (z.B. vorliegend als Firmwareunterstützungspakete (firmware support packages, FSP) bezeichnet). Zum Beispiel kann es sich bei dem Siliciuminitialisierungscode um den INTEL®-FSP mit Unterstützung für gemeinsam genutzten SPI-Flash handeln. Das beispielhafte FSP 604 beinhaltet ein beispielhaftes FSP Silicium (FSP-S) 606, ein beispielhaftes FSP Speicher (FSP-M) 608 und ein FSP Temp-RAM (FSP-T) 610.
  • Ein modernes System-BIOS besteht typischerweise aus 2 Schlüsselelementen als durch einen SoC-Anbieter bereitgestellten Siliciuminitialisierungscode in einem Binärformat (z.B. das INTEL® Firmware Support Package (FSP)), der von verschiedenen Open- oder Closed-Source-Bootload-Implementierungen (z.B. tianocore.org, coreboot.org, Slim Bootloader usw.) beansprucht wird, um als Produktions-BIOS für Original-Design-Manufacturing- (ODM-)/Originalgerätehersteller- (OEM-) Plattform zu unterscheiden. Beim Arbeiten auf einer Plattform mit mehreren heterogenen Prozessoren, bei denen jeder zweite heterogene Prozessor seinen eigenen SPI-Flash aufweist, der aus dedizierten Firmware-Blobs besteht, die außerhalb einer Siliciuminitialisierungscode- (z.B. FSP-) Grenze ausgeführt werden, können jedoch Redundanzen entstehen. Das Vorhandensein dedizierter Firmware-Blobs für jeden heterogenen Prozessor würde einen diskreten Hardwareblock erfordern, was zu einer höheren BoM führt. Des Weiteren würde das Zulassen von DG-Initialisierungscode, der in einem Bootloader-Kontext ausgeführt wird, nicht als SoC-verifiziertes Booten gelten, und ein Ausführen eines Option-ROM für jeden Prozessor resultiert aufgrund der Abhängigkeit von PCI-Zählung und dynamischer Ressourcenzuteilung vor dem Initialisieren der Steuerung oder Vorrichtung zu höheren Bootzeiten.
  • Gemäß dem veranschaulichten Beispiel ist das FSP 604 erweitert, um die gesamte XPU-Initialisierung in den Bereich des FSP zu bringen, um eine Hardware-Abstraktionsschicht zu erzeugen, die sicherstellt, dass die gesamte von einem SoC-Anbieter empfohlene Chipsatzprogrammierung unter Verwendung eines vereinheitlichten Blocks arbeitet. Durch Nutzen des FSP 604 und seiner Komponenten zur Initialisierung von Verarbeitungseinheiten (z.B. der GPU) kann ein dedizierter Option-ROM wegfallen, wodurch redundante Komponenten reduziert werden.
  • Ein Flussdiagramm, das eine beispielhafte Hardwarelogikschaltungsanordnung, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination aus diesen zum Implementieren vereinheitlichter Firmware für die beispielhafte Architektur 200 und/oder die beispielhafte Architektur 300 aus 3 darstellt, ist in 7A und 7B gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch eine Prozessorschaltung sein, wie etwa die Prozessorschaltung 1612, die in der nachstehend in Verbindung mit 16 besprochenen beispielhaften Prozessorplattform 1600 gezeigt ist, und/oder die nachstehend in Verbindung mit 48 und/oder 49 besprochenen beispielhafte Prozessorschaltung. Das Programm kann in Software umgesetzt sein, die auf einem oder mehreren nicht-transienten computerlesbaren Speicherungsmedien gespeichert ist, wie etwa einer Compact Disk (CD), einer Diskette, einem Festplattenlaufwerk (HDD), einem Solid-State-Laufwerk (SSD), einer Digital Versatile Disk (DVD), einer Blu-Ray-Disk, einem flüchtigen Speicher (z.B. Direktzugriffsspeicher (RAM) eines beliebigen Typs usw.) oder einem nichtflüchtigen Speicher (z.B. elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), Flash-Speicher, ein HDD, ein SSD usw.), der einer Prozessorschaltung zugeordnet ist, die sich in einer oder mehreren Hardwarevorrichtungen befindet, jedoch könnten das gesamte Programm und/oder Teile davon alternativ durch eine oder mehrere andere Hardwarevorrichtungen als die Prozessorschaltung ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt sein. Die maschinenlesbaren Anweisungen können über mehrere Hardwarevorrichtungen verteilt und/oder durch zwei oder mehr Hardwarevorrichtungen (z.B. eine Server- und eine Client-Hardwarevorrichtung) ausgeführt werden. Die Client-Hardwarevorrichtung kann zum Beispiel durch eine Endpunkt-Client-Hardwarevorrichtung (z.B. eine Hardwarevorrichtung, die einem Benutzer zugeordnet ist) oder eine Zwischen-Client-Hardwarevorrichtung (z.B. ein Funkzugangsnetz- (RAN-) Gateway, das Kommunikation zwischen einem Server und einer Endpunkt-Client-Hardwarevorrichtung ermöglichen kann) implementiert werden. Gleichermaßen können die nicht-transienten computerlesbaren Speicherungsmedien ein oder mehrere Medien beinhalten, die sich in einer oder mehreren Hardwarevorrichtungen befinden. Auch wenn das beispielhafte Programm unter Bezugnahme auf das in 7A und 7B veranschaulichte Flussdiagramm beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren der beispielhaften Architekturen 200 und/oder 300 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können beliebige oder alle der Blöcke durch eine oder mehrere Hardwareschaltungen (z.B. Prozessorschaltung, diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführen von Software oder Firmware durchzuführen. Die Prozessorschaltung kann an unterschiedlichen Netzwerkstandorten verteilt und/oder lokal zu einer oder mehreren Hardwarevorrichtungen sein (z.B. ein Einzelkernprozessor (z.B. eine Einzelkern-Zentralprozessoreinheit (CPU)), ein Mehrkernprozessor (z.B. eine Mehrkern-CPU) usw.) in einer einzigen Maschine, mehrere Prozessoren, die über mehrere Server eines Server-Racks verteilt sind, mehrere Prozessoren, die über ein oder mehrere Server-Racks verteilt sind, eine CPU und/oder ein FPGA, die sich in demselben Package (z.B. demselben IC- (integrierte Schaltung) Package oder in zwei oder mehr separaten Gehäusen usw. befinden).
  • 7A und 7B zeigen ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 700 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um eine einheitliche Initialisierung von Verarbeitungseinheiten unter Verwendung von Siliciuminitialisierungscode (FSP 604) durchzuführen.
  • Die maschinenlesbaren Anweisungen und/oder die Operationen 700 aus 7A und 7B beginnen bei Block 702, bei dem der Bootloader 602 den Reset-Vektor innehat (Block 702). Der Bootloader 602 enthält zum Beispiel den Realmodus-Reset-Vektor-Handlercode. In einigen Beispielen kann der Bootloader 602 das FSP-T 610 für Cache-als-RAM- (CAR-) Einrichtung und Initialisieren eines Stapels aufrufen. Die CPU 202, die den Bootloader 602 ausführt, besetzt FSP-Initialisierungsparameter (Block 704). Zum Beispiel kann der Bootloader 602 aktualisierbare Produktdaten (updateable product data, UPD) besetzen.
  • Der beispielhafte Bootloader 602 ruft das FSP-M 608 zur Speicherinitialisierung auf (Block 706). Beim Beenden des FSP-M 608 reißt der Bootloader den CAR ein (Block 708). Der Bootloader 602 führt Siliciumprogrammierung durch (Block 710). Zum Beispiel kann die Siliciumprogrammierung Besetzen von UPDs für das FSP-S 606 beinhalten. Der Bootloader 602 ruft dann das FSP-S 606 auf, um einen Chipsatz zu initialisieren (Block 712).
  • Gemäß dem veranschaulichten Beispiel sind die heterogenen Prozessoren (z.B. die GPU 208) unter Verwendung dedizierter PCIE-Steckplätze auf das Motherboard heruntergelötet, und dementsprechend muss der Bootloader 602 keine PCI-Zählung durchführen. Stattdessen kann sich der Bootloader 602 auf hauptplatinenspezifische Konfigurationsinformationen berufen, um dem FSP 604 solche PCIE-Steckplatzinformationen bereitzustellen. Alternativ kann der Bootloader 602 eine PCI-Zählung durchführen, um die Hardware zu identifizieren.
  • Der Bootloader transferiert dann den Aufruf an das FSP-S 606, um die XPU-Initialisierungssequenz zu starten (Block 714). Zum Beispiel erreicht die Steuerung eine XPU-Initialisierungssequenz innerhalb des FSP-S 606.
  • Fortfahrend bei 7B, fügt das FSP 604 neue FSP-Initialisierungsparameter (z.B. UPDs) hinzu, um PCIE-Steckplatzinformationen (z.B. Informationen über heterogene Prozessoren, die über PCIE angeschlossen sind) vom Bootloader 602 an einen FSP-BLOB weiterzuleiten (Block 716). UPDs können zum Beispiel IAXPUAdress beinhalten, wobei es sich um ein Array von 32-Bit-UPD-Parametern handelt, die durch Bootloader besetzt werden, um dem FSP 604 ein Adressformat der XPU zu unterbreiten, die mit dem PCIE-Steckplatz in Form von Bus, Vorrichtung und Funktion verbunden ist. Ein Standardwert wäre zum Beispiel 0x0, der sich als ungültige Adresse identifiziert. Das Format der IAXPU-Adresse kann wie folgt sein: Bus << 16 | Vorrichtung << 11 | Funktion << 8 | Offset (Annahme 0). Für die Busnummer 0×FE und die Vorrichtung/Funktion 0 wäre zum Beispiel der IAdGPUAddress-UPD-Wert 0×00FE0000. Eine andere UPD kann XPUConfigPtr sein, wobei es sich um einen 32-Bit-UPD-Parameter handelt, der durch den Bootloader 602 besetzt wird, um dem FSP 604 einen Ort zusätzlicher Konfigurationsdaten, wie etwa eine Video-BIOS-Tabelle (VBT), für die GPU 208 zu melden. Zum Beispiel wäre ein Standardwert NULL, womit eine ungültige Adresse identifiziert wird.
  • Beispielhafte UPD-Variablendefinitionen innerhalb des FSP 604 können Folgendes beinhalten:
                    #!BSF NAME: {XPU PCI-E-Adressformat für FSP-Nutzung}
                    TYP: {EditNum, HEX, (0x00,0xFFFFFFFF)}
                    #!BSF HILFE: { Bootloader benachrichtigt FSP über Adressformat des
 angeschlossenen PCIE-Steckplatzes für FSP-Nutzung, Standardwert wäre 0, identifiziert als
 keine Vorrichtung angeschlossen}
                    gPlatformFspPkgTokenSpaceGuid. IAXPUAddress | * | 0x20 |
 {0x00FE0000, 0x00, 0x00}
                    #!BSF NAME: {XPU-Konfigurationszeiger}
                    #!BSF TYP: {EditNum, HEX, (0x0,0xFFFFFFFF)}
                    #!BSF HILFE: {zeigt auf Konfigurationsdatendatei wie VBT}
                    gPlatformFspPkgTokenSpaceGuid.XPUConfigPtr| * |0x04|
 0x00000000
  • In Fortsetzung des Prozesses 700 ruft der beispielhafte Bootloader 602 das FSP-S 606 auf, wobei der XPU-Adress-FSP-Initialisierungsparameter übergangen wird, um die Anzeigevorrichtung (z.B. über diskrete DGPU) zu initialisieren (Block 718). Das beispielhafte FSP-S 606 liest den XPU-Adress-FSP-Initialisierungsparameter, um zu wissen, ob an die Plattform heterogene Prozessoren angeschlossen sind (Block 720). Falls zum Beispiel der „IAXPUAddress“-UPD-Wert > 0, und Dash-G vorhanden ist, erfolgt Beziehen von B:D:F-Informationen aus UPD und Lesen eines XPU-Datenkonfigurationszeigers, um das Vorhandensein einer Konfigurationstabelle, wie etwa VBT, zu kennen. Das FSP 604 identifiziert und initialisiert XPU-Vorrichtungen, die an den Prozessor angeschlossen sind (Block 722). Zum Beispiel kann das FSP 604 den Typ von XPU identifizieren, der einem PCIE-Anschluss zugeordnet ist, und den jeweiligen Aufruf durchführen, um die an den Prozessor angeschlossene Vorrichtung (z.B. an GPU angeschlossene Anzeige) zu initialisieren. Ein beispielhafter ausführlicher Prozess ist in 8 veranschaulicht.
  • Die Steuerung beendet den FSP-S 606-Betrieb (Block 724). Beim Beenden wird die Anzeige für eine an die GPU (z.B. die DGPU) angeschlossene Vorrichtung initialisiert. Der beispielhafte Bootloader 602 führt eine PCI-Zählung und Ressourcenzuteilung für PCI/PCI-E-Vorrichtungen durch (Block 726). Mit Ausnahme der Dash-G-Vorrichtung kann die Ressourcenzuteilung zum Beispiel auf dem Betrachten von Basisadressenregistern (base address registers, BARs), die bereits implementiert sind, und einem aktivierten MMIO/IO-Adressraum basieren. Das FSP 604 gibt dann die VBT-Informationen an das OS weiter (Block 728). Zum Beispiel kann das FSP 604 DGPU-GFX-ACPI-opregion erzeugen, um die VBT-Informationen für den GPU-Treiber an das OS weiterzuleiten.
  • Der Bootloader 602 ruft dann NotifyPhase auf (Block 730). Zum Beispiel kann der Bootloader 602 NotifyPhase vor einer Übergabe an Nutzdaten aufrufen. Die Steuerung wird an den Bootloader 602 übergeben, um ein Vor-OS-Logo, einen UEFI-Setup-Bildschirm oder einen OS-Startbildschirm zu rendern (Block 732). Anschließend endet der Prozess 700, während das OS bootet.
  • Da FSP dazu bestimmt ist, die Initialisierung von XPU-Vorrichtungen durchzuführen, kann die Initialisierungssequenz in zwei Teile unterteilt werden: 1. Statischer DG-Initialisierungsprozess als Teil von Boot-Diensten innerhalb des FSP 604 und 2. Erzeugen einer oneAPI-Bibliotheksfunktion zum Zugreifen auf XPU-Hardwareressourcen: Ein Satz von Bibliotheksfunktionen zum Kommunizieren mit XPU-Hardware steht als Teil eines FSP-Laufzeitdienstes zur Verfügung, so dass unterschiedliche OS-Stapel keine dedizierten OS-Treiber zum Kommunizieren mit XPU-Hardware benötigen. Zum Beispiel können die APIs 108 aus 1 die oneAPI-Bibliothek zum Zugreifen auf XPU-Hardwareressourcen beinhalten.
  • 8 ist ein Flussdiagramm, das einen beispielhaften detaillierten vereinheitlichten FSP-Initialisierungsfluss mit integrierter Grafikvorrichtung (integrated graphics device, IGD) und GPU veranschaulicht.
  • Die maschinenlesbaren Anweisungen und/oder die Operationen 800 aus 8 beginnen bei Block 802, bei dem das FSP-S die UPD-IADGpuAddress liest. Das FSP-S ermittelt, ob eine diskrete Grafikverarbeitungseinheit (DGPU) vorhanden ist (Block 804). Falls keine DGPU vorhanden ist, wird eine Initialisierung einer integrierten Grafikverarbeitungseinheit (IGPU) durchgeführt, indem ein IGD-VBT-PTR (-Zeiger) bezogen wird (Block 806), eine RGX-MMIO-Basisadresse gelesen wird (Block 808), eine Kind-Vorrichtungskonfiguration gelesen wird (Block 810) und eine GFX-Rahmenpufferadresse gelesen wird (Block 812). Die Steuerung geht dann zu Block 830 über, der nachstehend beschrieben ist.
  • Falls das FSP-S ermittelt, dass eine DGPU vorhanden ist (Block 804), führt das FSP-S eine Initialisierung der DGPU wie folgt durch. Die FSP-S bezieht einen PCI-Ort (Block 814) und bezieht einen DGPU-VBT-PTR (Block 816). Das FSP-S liest die GFX-MMIO-Basisadresse (Block 818) und liest eine Kind-Vorrichtungskonfiguration (Block 820). Das FSP-S liest eine Vorrichtungskennung (device identifier, DID) und vergleicht sie mit einer unterstützten DID-Liste (Block 822). Falls die DID nicht gültig ist (z.B. nicht unterstützt) (Block 824), wird keine Anzeige dargestellt (Block 826), und die Steuerung kehrt zu Block 802 zurück. Falls die DID gültig ist, liest das FSP-S die GFX-Rahmenpufferadresse (Block 828) und die Steuerung geht zu Block 830 über.
  • Nach Beginn der Initialisierung der IGD (Blöcke 806-812) oder der DGPU (Blöcke 814-828) liest das FSP-S einen Wert aus einer GT-Treiber-Mailbox (Block 830). Dann initialisiert das FSP-S Videospeichervariablen (Block 832) und programmiert die GTT (z.B. stellt die maximale Spannung ein, programmiert CD-CLK usw.) (Block 834). Das FSP-S führt eine Wasserzeicheninitialisierung durch (Block 836). Dann zählt das FSP-S für jede angeschlossene Anzeige die unterstützten Anzeigen und führt Anzeige-Timing-Algorithmen aus (Block 838). Schließlich programmiert das FSP-S die Phasenregelkreise (phase locked loops, PLLs) (Block 840) und die Anzeige ist dann hochgefahren (Block 842). Damit endet der Prozess aus 8.
  • Aus dem Vorstehenden versteht es sich, dass beispielhafte Systeme, Verfahren, Einrichtungen und Herstellungsartikel für symbiotisches Booten unter heterogenen Prozessoren offenbart wurden. Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel verbessern die Effizienz der Verwendung einer Rechenvorrichtung durch gemeinsames Nutzen von Speicherressourcen, wie etwa SPI-Flash, um BoM-Kosten zu reduzieren und Boot-Zeiten zu reduzieren. Durch Verlagern der XPU-Initialisierung an das FSP schützt eine Verkapselung der XPU-Siliciuminitialisierung geistiges Eigentum und behält die Sicherheit des Boot-Prozesses bei, während die gemeinsame Nutzung von Speicher (z.B. Speicher, der IFWI speichert) ermöglicht wird. Das Verwenden vereinheitlichter Firmware- und Softwaremodule für einen heterogenen Prozessor führt zu einem kleineren Footprint und optimiertem verifiziertem Booten. Die offenbarten Beispiele unterstützen zudem ein vereinheitlichtes Firmware-Flash-Layout zwischen der CPU und einer anderen Verarbeitungseinheit, um Vor-Ort-Firmware-Aktualisierungen (z.B. für eine DG-Motherboard-Abwärts-Lösung) zu ermöglichen.
  • Infrastrukturverarbeitungseinheit-Ressourcenverzeichnistechnologie
  • Es werden Einrichtungen, Herstellungsartikel und Verfahren zum Implementieren einer Infrastrukturverarbeitungseinheit-Ressourcenverzeichnistechnologie (IPURMS) offenbart. Das beispielhafte IPURMS stellt dezentrale Peer-to-Peer-IPU-Ressourcenverhandlung und - verwaltung ohne zentrale CPU-Beteiligung bereit, um Mikrodienste und Arbeitslasten mit niedriger Latenz, wie etwa VRAN usw., zu ermöglichen. Außerdem stellt das IPURMS anwendungsorientierte Ressourcenverwaltung bereit, wobei IPUs RMS-SLAS für verschiedene Mikrodienste zur Laufzeit dynamisch neu verhandeln können. Des Weiteren kann das IPURMS IPU-P2P-Verhandlungen und - Ressourcenverwaltung ermöglichen, die über einen dezentralen verteilten öffentlichen Ledger wie eine Blockchain mit Widerruffähigkeiten (z.B. Widerrufverwaltung) verfolgt werden können, um Telemetrie mit Prüfbarkeit zu verfolgen/aufzuzeichnen. Außerdem kann das IPURMS eine IPU ermöglichen, die in zwei Teile unterteilt ist, nämlich i) eine Datenebene und ii) eine Steuerebene, wobei die Steuerebene Ressourcenzuteilung, Überwachung und Richtliniendurchsetzung handhabt und die Datenebene den Datenfluss zwischen IPUs und den mit der IPU assoziierten Logikeinheiten handhabt.
  • 9 ist ein Blockdiagramm einer beispielhaften Architektur 900 für IPURMS. Gemäß dem veranschaulichten Beispiel für 9 kommuniziert eine neue Arbeitslast (oder VM) 902 mit einem beispielhaften Orchestrator 904, um ein System mit einer spezifischen SLA anzufordern. Die beispielhafte Architektur 900 beinhaltet den Orchestrator 904, einen beispielhaften Benutzerraum 908, eine beispielhafte XPU/IPU-Softwaredomäne 908 und eine beispielhafte IPU-Hardwaredomäne 910.
  • Der beispielhafte Orchestrator 904 ist eine Serverschaltungsanordnung, die mit existierenden Arbeitslasten zum Platzieren der Arbeitslasten auf Rechenressourcen basierend auf SLAs verhandelt. Der beispielhafte Orchestrator 904 kommuniziert mit einem oder mehreren Rechensystemen 906, um die Zuweisung von Arbeitslasten zu Rechenressourcen zu verwalten.
  • Die beispielhaften Rechenressourcen 906 werden durch mehrere Abstraktionen einschließlich eines Benutzerraums 908, einer XPU/IPU-Softwaredomäne 910 und einer IPU-Hardwaredomäne 912 dargestellt. Der beispielhafte Benutzerraum 908 beinhaltet eine Anwendung A 914 und eine Anwendung B 916, wobei jedoch eine beliebige Anzahl oder Art von Anwendung enthalten sein kann. Der beispielhafte Benutzerraum 908 wird durch den Orchestrator 904 überwacht.
  • Die beispielhafte XPU/IPU-Softwaredomäne 910 beinhaltet eine beispielhafte RMS-Offenlegung 918, die durch einen beispielhaften SLA-Manager 920 überwacht wird. Die beispielhafte RMS-Offenlegung 918 ermöglicht die Kommunikation von Anwendungsebeneninformationen mit dem Orchestrator 904.
  • Die beispielhafte IPU-Hardwaredomäne 912 beinhaltet eine beispielhafte XPU/IPU-Ressourcenüberwachung 922, die durch einen beispielhaften SLA-Manager 924 überwacht wird, eine beispielhafte XPU/IPU-Ressourcendurchsetzung 926, die durch einen beispielhaften SLA-Manager 928 überwacht wird, und ein Punit-RMS 930.
  • Die beispielhafte XPU/IPU-Ressourcenüberwachung 922 stellt Ressourcenrückmeldungen an die beispielhafte RMS-Offenlegung 918 bereit, während die beispielhafte XPU/IPU-Ressourcenüberwachung 922 und die beispielhafte XPU/IPU-Ressourcendurchsetzung 926 bezüglich Hardwarerichtlinien kommunizieren. Die beispielhafte RMS-Offenlegung 918 kommuniziert QoS-Hinweise an die beispielhafte XPU/IPU-Ressourcendurchsetzung 926 und die beispielhafte XPU/IPU-Ressourcendurchsetzung 926 kommuniziert mit dem Punit-RMS 930 bezüglich QoS-Hardwaremerkmalen. Die beispielhafte Architektur 900 ermöglicht einen Übergang von CPU-zentrierter Einzelknoten-Ressourcenverwaltung zu einer skalierbaren selbstverwaltbaren XPU/IPU, die in Peer-to-Peer-Zusammenarbeit arbeiten kann. Konsens in einer solchen kollaborativen Ressourcenverwaltung kann über einen zentralisierten Vertrauensbroker, einen dezentralisierten öffentlichen Ledger wie eine Blockchain, wie in 13 veranschaulicht, usw. erreicht werden.
  • Flussdiagramme, die beispielhafte Hardwarelogikschaltungsanordnungen, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren vereinheitlichter Firmware für die beispielhafte Architektur 900 darstellen, sind in 10 und 11 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch eine Prozessorschaltung sein, wie etwa die Prozessorschaltung 1612, die in der nachstehend in Verbindung mit 16 besprochenen beispielhaften Prozessorplattform 1600 gezeigt ist, und/oder die nachstehend in Verbindung mit 48 und/oder 49 besprochenen beispielhafte Prozessorschaltung. Das Programm kann in Software umgesetzt sein, die auf einem oder mehreren nicht-transienten computerlesbaren Speicherungsmedien gespeichert ist, wie etwa einer Compact Disk (CD), einer Diskette, einem Festplattenlaufwerk (HDD), einem Solid-State-Laufwerk (SSD), einer Digital Versatile Disk (DVD), einer Blu-Ray-Disk, einem flüchtigen Speicher (z.B. Direktzugriffsspeicher (RAM) eines beliebigen Typs usw.) oder einem nichtflüchtigen Speicher (z.B. elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), Flash-Speicher, ein HDD, ein SSD usw.), der einer Prozessorschaltung zugeordnet ist, die sich in einer oder mehreren Hardwarevorrichtungen befindet, jedoch könnten das gesamte Programm und/oder Teile davon alternativ durch eine oder mehrere andere Hardwarevorrichtungen als die Prozessorschaltung ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt sein. Die maschinenlesbaren Anweisungen können über mehrere Hardware-Vorrichtungen verteilt und/oder durch zwei oder mehr Hardware-Vorrichtungen (z.B. eine Server- und eine Client-Hardware-Vorrichtung) ausgeführt werden. Die Client-Hardwarevorrichtung kann zum Beispiel durch eine Endpunkt-Client-Hardwarevorrichtung (z.B. eine Hardwarevorrichtung, die einem Benutzer zugeordnet ist) oder eine Zwischen-Client-Hardwarevorrichtung (z.B. ein Funkzugangsnetz- (RAN-) Gateway, das Kommunikation zwischen einem Server und einer Endpunkt-Client-Hardwarevorrichtung ermöglichen kann) implementiert werden. Gleichermaßen können die nicht-transienten computerlesbaren Speicherungsmedien ein oder mehrere Medien beinhalten, die sich in einer oder mehreren Hardware-Vorrichtungen befinden. Wenngleich das beispielhafte Programm unter Bezugnahme auf die in 10 und 11 veranschaulichten Flussdiagramme beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren der beispielhaften Architektur 900 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können beliebige oder alle der Blöcke durch eine oder mehrere Hardware-Schaltungen (z.B. Prozessorschaltung, diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführen von Software oder Firmware durchzuführen. Die Prozessorschaltung kann an unterschiedlichen Netzwerkstandorten verteilt und/oder lokal zu einer oder mehreren Hardwarevorrichtungen sein (z.B. ein Einzelkernprozessor (z.B. eine Einzelkern-Zentralprozessoreinheit (CPU)), ein Mehrkernprozessor (z.B. eine Mehrkern-CPU) usw.) in einer einzigen Maschine, mehrere Prozessoren, die über mehrere Server eines Server-Racks verteilt sind, mehrere Prozessoren, die über ein oder mehrere Server-Racks verteilt sind, eine CPU und/oder ein FPGA, die sich in demselben Package (z.B. demselben IC- (integrierte Schaltung) Package oder in zwei oder mehr separaten Gehäusen usw. befinden).
  • 10 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 1000 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um ein Konfigurieren unter Verwendung von IPURMS durchzuführen.
  • Die maschinenlesbaren Anweisungen und/oder die Operationen 1000 aus 10 beginnen bei Block 1002, bei dem der beispielhafte Orchestrator 904 eine neue Instanz/Anwendung (z.B. Arbeitslast 902), die in einer auf heterogenen IPUs basierenden Datenzentrum-Plattform ausgeführt werden kann, zusammen mit Ressourcen- und Migrationstoleranz-SLAs erkennt. Die Ressourcenanforderungen und die Toleranz können zum Beispiel durch einen Benutzer/Administrator eingerichtet werden, wenn die neue Instanz/Anwendung angelegt wird (z.B. unter Verwendung einer SLA-Vorlage). Der Orchestrator 904 ermittelt, ob die Validierung der Vorrichtungs- und Ressourcenanforderungen erfolgreich ist (Block 1004). Zum Beispiel können die Ressourcenanforderungen analysiert werden, um zu ermitteln, ob sie ohne die Einschränkungen des Rechensystems möglich sind. Falls die Ressourcenanforderungen nicht gültig sind und/oder nicht praktikabel durch das Rechensystem erfüllt werden, gibt der Orchestrator 904 die Steuerung an Block 1002 zurück.
  • Falls die Ressourcenanforderungen gültig sind (Block 1004), verhandelt der Orchestrator 904 mit der IPU-Steuerebene, um Ressourcen zum Durchführen der neuen Instanz/Anwendung zu identifizieren (Block 1006). Zum Beispiel wird basierend auf der Art von Hardwareressourcen, die in der Anfrage spezifiziert ist (z.B. CPU, GPU, FPGA und SSD), ein Satz von IPUs ausgewählt, die den spezifizierten Ressourcen entsprechen. Dann wird die Verhandlung zwischen der neuen Anfrage und den bestehenden Apps in den IPUs gestartet. Die Verhandlung kann zum Beispiel Treffen richtlinienbasierter Entscheidungen unter Verwendung der identifizierten Ressourcentoleranzschwellen und dynamisches Migrieren bestehender Arbeitslasten zwischen IPUs beinhalten, um alle Ressourcen effizient zu nutzen. Jede IPU kann zwei Teile beinhalten, i) eine Datenebene und ii) eine Steuerebene. Die Steuerebene behandelt Ressourcenzuteilung, Überwachung und Richtliniendurchsetzung und die Datenebene behandelt den Datenfluss zwischen IPUs und den Logikeinheiten, die mit der IPU assoziiert sind. Ein beispielhafter Prozess zur Verhandlung ist in Verbindung mit 11 beschrieben.
  • Der Orchestrator 904 ermittelt, ob die Verhandlung erfolgreich war (Block 1008). Zum Beispiel kann ermittelt werden, dass die Verhandlung erfolgreich ist, falls der Orchestrator in der Lage ist, die notwendigen Ressourcen innerhalb des Satzes von IPUs zu finden. In einem Szenario laufen existierende Anwendungen zum Beispiel weiterhin auf den gegebenen IPUs, aber es gibt zusätzliche freie Ressourcen für die zu startende neue Anwendung. In einem anderen Szenario verhandelt der Orchestrator 904 mit einer existierenden Anwendung und veranlasst, dass die Anwendung zu einem anderen Satz von IPUs migriert wird, um Ressourcen für die neue Instanz/Anwendung freizugeben.
  • Falls die Verhandlung nicht erfolgreich ist (Block 1008), kehrt die Steuerung zu Block 1002 zurück, damit der Orchestrator 904 nach einem anderen Satz von IPUs sucht, die die Ressourcenanforderungen erfüllen.
  • Falls die Verhandlung erfolgreich ist (Block 1008), stellt der Orchestrator 904 die IPU/XPU-Ressourcenüberwachung und -durchsetzung auf der IPU-Steuerebene bereit (Block 1010). Anschließend konfiguriert der Orchestrator 904 die Hardwareressourcen auf der bzw. den IPU-basierten Datenzentrum-Plattform(en) für die neue Instanz/Anwendung (Block 1012). Somit kann der Verhandlungsprozess zwischen IPUs domänenübergreifend koordinierte Ressourcenverwaltung auf Datenzentrumebene ermöglichen.
  • 11 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 1100 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um Verhandlungen durchzuführen, um Ressourcen basierend auf Toleranzen, die durch eine Anwendung vorgeschrieben werden, und verfügbaren IPU-Ressourcen dynamisch zuzuteilen.
  • Die maschinenlesbaren Anweisungen und/oder die Operationen 1100 aus 11 beginnen bei Block 1102, bei dem der Orchestrator 904 erkennt, dass ein Benutzer eine neue Instanz/Anwendung (z.B. eine VM, eine Anwendung usw.) gestartet hat. Die Anfrage kann zum Beispiel QoS-Parameter, SLA-Anforderungen usw. identifizieren. Die QoS-Parameter können zum Beispiel als QOS=FUNK(VORRICHTUNGSANF., FREQUENZ, CACHE, SPEICHER-BANDB, LEISTUNG, IPC, KERNE, SPEICHERUNG, MIGRATIONSTOLERANZ) eingestellt sein. Das Spezifizieren der SLA-Parameter ermöglicht die Spezifikation von Hardwareressourcen (z.B. CPU, GPU, FPGA, SSD und jeweilige IPUs) innerhalb des Datenzentrums. Eine beispielhafte SLA-Vorlage ist spezifiziert als:
    1. 1. CPU:
      1. A. FREQUENZBEREICH
      2. B. SPEICHERBANDBREITENBEREICH
      3. C. CACHEGRÖßENBEREICH
      4. D. TDP-BEREICH
      5. E. KERNZÄHLBEREICH
      6. F. MIGRATIONSTOLERANZ
      7. G. XEON-IPC-BEREICH
    2. 2. SSD-SPEICHERRAUMBEREICH
    3. 3. GPU-KERNBEREICH
    4. 4. FPGA
    5. 5. PCIE-ERZEUGUNGSANFORDERUNG
    6. 6. IPU-Steuerebenenverwaltung
      • h. Netzwerkbandbreitenbereich
      • i. Warteschlangenpriorisierung
  • Der Orchestrator 904 validiert die Gültigkeitsanfrage (Block 1104). Falls die Anfrage nicht gültig ist, wird der Benutzer aufgefordert, eine gültige Anfrage bereitzustellen, und die Steuerung kehrt zu Block 1102 zurück. Falls die Anfrage gültig ist (Block 1104), ermittelt der Orchestrator 904 die Verfügbarkeit von Rechenressourcen (Block 1106). Falls verfügbare Rechenressourcen (z.B. IPU-Ressourcen), die bereit sind zu verhandeln, nicht verfügbar sind, kehrt die Steuerung zu Block 1102 zurück.
  • Falls verfügbare Rechenressourcen ermittelt werden, die bereit sind zu verhandeln (Block 1106), beginnt der Orchestrator 904 das Verhandeln mit existierenden Instanzen/Anwendungen, die auf den IPUs ausgeführt werden, und ermittelt, ob die Verhandlung erfolgreich ist (Block 1108). Die Verhandlung kann zum Beispiel Ermitteln bestehender Anwendungen auf einer IPU beinhalten, die niedrigere Ressourcen tolerieren können, um Ressourcen für die neue Instanz/Anwendung freizugeben. Alternativ kann die Verhandlung Anwendungen identifizieren, die zu anderen Ressourcen migriert werden können, um die ausgewählten Ressourcen für die neue Instanz/Anwendung freizugeben. Falls die Verhandlung keine Ressourcen für die neue Instanz/Anwendung freigibt, kehrt die Steuerung zu Block 1106 zurück, um andere Ressourcen zu identifizieren.
  • Falls es bei der Verhandlung gelingt, verfügbare Ressourcen zur Ausführung der neuen Instanz/Anwendung zu identifizieren (Block 1108), ermittelt der Orchestrator 904, ob existierende Instanzen/Anwendungen vorhanden sind, die aus den Ressourcen migriert werden sollen (Block 1110). Falls existierende Instanzen/Anwendungen migriert werden sollen, kehrt die Steuerung zu Block 1106 zurück, um Verhandlung und Zuteilung der existierenden Instanzen/Anwendungen zu verwalten.
  • Falls existierende Anwendung/Instanzen nicht migriert werden sollen (Block 1110), aktualisiert der Orchestrator 904 einen Ressourcenzuteiler (z.B. Dienstklasse (class of service, CloS)) der existierenden Instanz/Anwendung (Block 1112). Der Orchestrator 904 startet die angefragte Instanz/Anwendung (z.B. Arbeitslast 902) mit dem ausgehandelten Satz von IPUs (Block 1114).
  • 12 veranschaulicht eine beispielhafte Umgebung 1200, in der Ressourcen, die durch IPUs 1202 (oder eine beliebige Art von Verarbeitungseinheit, wie etwa XPU, GPU usw.) verwaltet werden, verschiedene Zustände freier und belegter Ressourcen unter CPU 1204, GPU 1206, SSD 1208 usw. aufweisen. Gemäß dem veranschaulichten Beispiel nutzt APP-1 einen Teil der CPU 1204, der GPU 1206 und des SSD-Speichers 1208, APP-2 nutzt einen Teil der CPU 1204 und der GPU 1206 und APP-3 nutzt einen Teil der CPU 1204 und des SSD-Speichers 1208.
  • 13 veranschaulicht eine beispielhafte Umgebung 1300, in der bei kollaborativer Ressourcenverwaltung über einen dezentralen öffentlichen Blockchain-Ledger ein Konsens erreicht wird. In 13 sind die Betriebszustände (z.B. Zustand S1, Zustand S2, Zustand SN) mehrerer IPUs 1 bis N veranschaulicht. Somit kann jeder Block in einer Blockchain (z.B. Blöcke B1 bis BN) Zustandsinformationen speichern, die zur Peer-to-Peer-Ressourcenverhandlung genutzt werden können. Das Verwenden einer solchen Blockchain ermöglicht eine verteilte Sammlung von Informationen, die vertrauenswürdig sind, um effektiv als Vertrauensbroker zu arbeiten. Während 9 einen einzigen zentralisierten Orchestrator 904 veranschaulicht, können Blockchain- oder andere dezentralisierte Methoden genutzt werden, um einen dezentralisierten Orchestrator zu ermöglichen, der Ressourcen unter Verwendung des Steuerebenenteils der IPUs verwaltet. Bei einem solchen dezentralen Ansatz kann die Ressourcenverwaltung über den dezentralen öffentlichen Ledger mit Widerruffähigkeiten verfolgt werden, um Telemetrie mit Prüfbarkeit zu verfolgen/aufzuzeichnen. Somit können die IPUs 1202 als Computerressourcen sowie das verwaltungsbezogene geistige Eigentum (Ips) für die der IPU zugeordnete Vorrichtung aufweisend betrachtet werden. Die Steuerebene der IPU hostet den dezentralen Orchestrator, der Ressourcenzuteilung, Überwachung und Richtliniendurchsetzung handhabt.
  • Aus dem Vorstehenden versteht es sich, dass beispielhafte Systeme, Verfahren, Einrichtungen und Herstellungsartikel zum Verwalten der Zuweisung von Ressourcen in Systemen, die IPUs nutzen, offenbart wurden. Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel verbessern die Effizienz der Verwendung einer Rechenvorrichtung, indem sie die IPU- und Bestandteilressourcennutzung, Verwaltbarkeit mit Prüfbarkeit, sicheres Messen und damit die Einsparungen bei den Gesamtbetriebskosten verbessern. Offenbarte Beispiele ermöglichen eine feinkörnige Ressourcenüberwachung und - verwaltbarkeit über IPUs in Datenzentren im Hypermaßstab. Das Bereitstellen von anwendungsverhandelbarer Ressourcenüberwachung und -verwaltung ermöglicht eine dynamische Priorisierung, um eine deterministische Performanz für Mikrodienste im Maßstab bereitzustellen.
  • Dynamische verhandelbare tiefe neuronale Netze
  • Einige neuronale Netzwerksysteme versuchen, zugrunde liegende Zielhardwarefähigkeiten zu erkennen, um die Inferenz-/Trainingsperformanz zu beschleunigen. Zum Beispiel kann JIT-Coderzeugung genutzt werden, um zu versuchen, eine Befehlssatzarchitektur (ISA) oder eine Mischung von ISA basierend auf erkannten Zielhardwaremerkmalen einer Rechenumgebung auszuwählen. Wenngleich eine solche Abstraktion die Fähigkeiten bereitstellt, die zugrunde liegende Hardwarefähigkeit vorteilhaft zu nutzen, weist sie Nachteile auf.
  • Vorliegend offenbarte Einrichtungen, Herstellungsartikel und Einrichtungen stellen eine Lösung in Form eines dynamischen verhandelbaren tiefen neuronalen Netzes bereit. Dieser Ansatz ermöglicht die Nutzung von Hardwareressourcen, insbesondere in Fällen, in denen es eine signifikante Anzahl möglicher Merkmale gibt (z.B. SIMD- (Single Instruction Stream, Multiple Data Stream) Merkmale, Lern-Boost-Merkmale (z.B. INTEL® Deep Learning Boost) usw. Ein offenbarter dynamischer verhandelbarer tiefer neuronaler Netzstapel beinhaltet eine konfigurierbare und verhandelbare Schnittstelle, die in den APIs 108 aus 1 implementiert ist, um eine SLA zu spezifizieren. Ein Kandidatensatz von Merkmalen kann aus einem verfügbaren Implementierungssatz gefiltert werden und ein JIT-Kernel kann dynamisch für den Kandidatensatz von Hardwaremerkmalen erzeugt werden. Der offenbarte dynamische verhandelbare tiefe neuronale Netzstapel kann an den Kernels nacheinander Testläufe durchführen, um denjenigen mit der besten Performanz auszuwählen und zur späteren Verwendung zwischenzuspeichern.
  • 14 ist ein Blockdiagramm einer beispielhaften dynamischen verhandelbaren Bibliothek 1400 eines dynamischen neuronalen Netzes. Zum Beispiel kann die dynamische verhandelbare Bibliothek 1400 eines dynamischen neuronalen Netzes zu den APIs 108 der Architektur 100 aus 1 hinzugefügt werden. Die beispielhafte dynamische verhandelbare Bibliothek 1400 des dynamischen neuronalen Netzes beinhaltet eine beispielhafte konfigurierbare Benutzerschnittstelle 1402, einen beispielhaften Plattformfähigkeitsmanager 1404, einen beispielhaften Anwendungs-SLA-Manager 1406, einen beispielhaften JIT-Manager 1410 und eine beispielhafte Kernelevaluierungsengine 1410.
  • Die beispielhafte konfigurierbare Benutzerschnittstelle 1402 stellt eine Benutzerschnittstelle (z.B. über den oneAPI-Stapel der Architektur 100) für Anwendungs-Middleware/Frameworks bereit, um SLAs zu konfigurieren, die mit Operationen assoziiert sind. Die Benutzerschnittstelle 1402 kann zum Beispiel eine grafische Benutzerschnittstelle, eine Textschnittstelle, eine API usw. sein.
  • Der beispielhafte Plattformfähigkeitsmanager 1404 identifiziert die Zielhardwarefähigkeiten. Der Plattformfähigkeitsmanager 1404 arbeitet zudem mit der konfigurierbaren Benutzerschnittstelle 1402 über Anwendungen zum Konfigurieren einer JIT-Kernel-Konfiguration zusammen.
  • Der beispielhafte Anwendungs-SLA-Manager 1406 sammelt und setzt SLAs durch, die über die konfigurierbare Benutzerschnittstelle 1402 bereitgestellt werden.
  • Der beispielhafte JIT-Manager 1408 erzeugt und verwaltet dynamische JIT-Kernels basierend auf spezifizierter SLA in Verbindung mit in der Vergangenheit beobachteten Bare-Metal-/VM-Heuristiken.
  • Die beispielhafte Kernevaluierungsengine 1410 stellt die Fähigkeit bereit, Sandbox-Evaluierungen neu erzeugter Kernels/Operationen durchzuführen, die vor dem Einsatz im großen Maßstab zusammengeführt werden.
  • In 14 ist ein Flussdiagramm gezeigt, das beispielhafte HardwareLogikschaltungsanordnungen, maschinenlesbare Anweisungen, Hardware-implementierte Zustandsmaschinen und/oder eine beliebige Kombination aus diesen zum Implementieren des dynamischen verhandelbaren tiefen neuronalen Netzes aus 14 darstellt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch eine Prozessorschaltung sein, wie etwa die Prozessorschaltung 1612, die in der nachstehend in Verbindung mit 16 besprochenen beispielhaften Prozessorplattform 1600 gezeigt ist, und/oder die nachstehend in Verbindung mit 48 und/oder 49 besprochenen beispielhafte Prozessorschaltung. Das Programm kann in Software umgesetzt sein, die auf einem oder mehreren nicht-transienten computerlesbaren Speicherungsmedien gespeichert ist, wie etwa einer Compact Disk (CD), einer Diskette, einem Festplattenlaufwerk (HDD), einem Solid-State-Laufwerk (SSD), einer Digital Versatile Disk (DVD), einer Blu-Ray-Disk, einem flüchtigen Speicher (z.B. Direktzugriffsspeicher (RAM) eines beliebigen Typs usw.) oder einem nichtflüchtigen Speicher (z.B. elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), Flash-Speicher, ein HDD, ein SSD usw.), der einer Prozessorschaltung zugeordnet ist, die sich in einer oder mehreren Hardwarevorrichtungen befindet, jedoch könnten das gesamte Programm und/oder Teile davon alternativ durch eine oder mehrere andere Hardwarevorrichtungen als die Prozessorschaltung ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt sein. Die maschinenlesbaren Anweisungen können über mehrere Hardware-Vorrichtungen verteilt und/oder durch zwei oder mehr Hardware-Vorrichtungen (z.B. eine Server- und eine Client-Hardware-Vorrichtung) ausgeführt werden. Die Client-Hardwarevorrichtung kann zum Beispiel durch eine Endpunkt-Client-Hardwarevorrichtung (z.B. eine Hardwarevorrichtung, die einem Benutzer zugeordnet ist) oder eine Zwischen-Client-Hardwarevorrichtung (z.B. ein Funkzugangsnetz- (RAN-) Gateway, das Kommunikation zwischen einem Server und einer Endpunkt-Client-Hardwarevorrichtung ermöglichen kann) implementiert werden. Gleichermaßen können die nicht-transienten computerlesbaren Speicherungsmedien ein oder mehrere Medien beinhalten, die sich in einer oder mehreren Hardware-Vorrichtungen befinden. Wenngeich das beispielhafte Programm unter Bezugnahme auf das in 14 veranschaulichte Flussdiagramm beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren des beispielhaften dynamischen verhandelbaren tiefen neuronalen Netzes 1400 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können beliebige oder alle der Blöcke durch eine oder mehrere Hardware-Schaltungen (z.B. Prozessorschaltung, diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführen von Software oder Firmware durchzuführen. Die Prozessorschaltung kann an unterschiedlichen Netzwerkstandorten verteilt und/oder lokal zu einer oder mehreren Hardwarevorrichtungen sein (z.B. ein Einzelkernprozessor (z.B. eine Einzelkern-Zentralprozessoreinheit (CPU)), ein Mehrkernprozessor (z.B. eine Mehrkern-CPU) usw.) in einer einzigen Maschine, mehrere Prozessoren, die über mehrere Server eines Server-Racks verteilt sind, mehrere Prozessoren, die über ein oder mehrere Server-Racks verteilt sind, eine CPU und/oder ein FPGA, die sich in demselben Package (z.B. demselben IC- (integrierte Schaltung) Package oder in zwei oder mehr separaten Gehäusen usw. befinden).
  • 15 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 1500 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um Merkmale für tiefes neuronales Netzwerklernen basierend auf Hardwarefähigkeiten auszuwählen.
  • Die maschinenlesbaren Anweisungen und/oder die Operationen 1500 aus 15 beginnen bei Block 1502, bei dem die beispielhafte konfigurierbare Benutzerschnittstelle 1402 eine Operationsbeschreibung (z.B. Anweisungen und SLA-Informationen, die durch einen Benutzer eingegeben werden) bezieht. Der beispielhafte SLA-Manager 1406 bezieht SLA-Kriterien für eine aktuelle Konfiguration (Block 1504). Der beispielhafte Plattformfähigkeitsmanager 1404 wählt Kandidatenkonfigurationen (z.B. Primitivdeskriptoren) basierend auf den Zielhardwarefähigkeiten aus (Block 1506). Zum Beispiel kann der Plattformfähigkeitsmanager 1404 Kandidaten, die erfolgreich erzeugt werden, aus einem Implementierungssatz basierend auf den Plattforminformations-SLA-Kriterien auswählen.
  • Der beispielhafte JIT-Manager 1408 erzeugt Kernels, die den ausgewählten Kandidaten entsprechen (Block 1508). Zum Beispiel kann der JIT-Manager 1408 Kernels einzeln für jeden der Kandidaten in dem Kandidatensatz erzeugen. Die beispielhafte Kernelevaluierungsengine 1410 führt dann einen Trockenlauf/Testlauf des Kernels aus und sammelt Performanzinformationen (Block 1510). Wenn zum Beispiel mehrere Kernels nacheinander durch den JIT-Manager 1408 erzeugt werden, kann die beispielhafte Kernelevaluierungsengine 1410 einen Testlauf jedes Kernels durchführen und die Performanz ergebnisse sammeln, um die Auswahl eines Kernels basierend auf der Performanz zu ermöglichen (z.B. Auswählen des Kernels mit der besten Performanz). Zum Beispiel kann die Kernelevaluierungsengine 1410 den Kernel mit der besten Performanz zwischenspeichern.
  • Der beispielhafte Anwendungs-SLA-Manager 1406 ermittelt dann in einer Sandbox-Konfiguration basierend auf konfigurierten Richtlinien, ob der ausgewählte Kernel die angeforderte SLA erfüllt (Block 1512). Falls die SLA nicht erfüllt wird, kehrt die Steuerung zu Block 1508 zurück, um zu versuchen, einen anderen Kernel zu erzeugen, der die SLA erfüllen kann. Falls der Anwendungs-SLA-Manager 1406 ermittelt, dass die SLA erfüllt ist, endet der Prozess 1500 damit, dass ein geeigneter Kernel für den Betrieb ausgewählt wurde.
  • In einigen Implementierungen kann der Prozess 1500 ISA-Fähigkeiten der CPU oder anderer Verarbeitungseinheiten erkennen und eine Warteschlange für alle Implementierungen in einer Operation erzeugen. Zum Beispiel ist das Folgende eine beispielhafte Warteschlange für den Datentyp von FP32 und die Faltungsoperation:
  •  { {forward, f32, f32, f32}, {
           CPU_INSTANCE_X64(jit_avx512_common_dw_convolution_fwd_t
           CPU_INSTANCE_X64(jit_avx512_common_lxl_convolution_fwd_f32_t)
           CPU_INSTANCE_X64(jit_avx512_core_f32_wino_conv_2x3_fwd_t)
           CPU_INSTANCE_X64(jit_avx512_core_f32_wino_conv_4x3_fwd_t)
           CPU_INSTANCE_X64(jit_avx512_common_convolution_winograd_fwd_t) 
    
    
    
           CPU_INSTANCE_X64(jit_avx512_common_convolution_fwd_t<f32>)
           CPU_INSTANCE_X64(jit_avx2_dw_convolution_fwd_t)
           CPU_INSTANCE_X64(jit_avx2_1x1convohitionfwdt)
           CPU_INSTANCE_X64(jit_sse41_dw_convolution_fwd_t)
           CPU_INSTANCE_X64(jit_sse41_1x1_convolution_iwd_t)
           CPU_INSTANCE_X64(jit_avx2_convolution_fwd_t)
           CPU_INSTANCE_X64(jit_sse41_convolution_fwd_t)
           CPU_INSTANCE(gemm_convolution_fwd_t)
           CPU_INSTANCE(ref_convolution_fwd_t<f32>)
           CPU_INSTANCE(ref_fused_convolution _fwd_t)
           nullptr,
           } },
  • Der beispielhafte Prozess 1500 kann versuchen, jeden Primitivdeskriptor in der Implementierungswarteschlange zu instanziieren. Der Plattformfähigkeitsmanager 1404 kann alle erfolgreich instanziierten Primitivdeskriptoren als die Kandidaten für eine nächste Schicht basierend auf den Anwendungs-/Middleware-SLA und Zielhardwareplattformfähigkeiten auswählen. Dann kann der JIT-Manager 1408 einen JIT-Kernel erzeugen, der jedem Primitivdeskriptorkandidaten entspricht, und ihn in einer JIT-Kernel-Kandidatenwarteschlange speichern. Die beispielhafte Kernelevaluierungsengine 1410 führt für jeden Kern aus der JIT-Kernel-Kandidatenwarteschlange in der aktuellen Plattform Testläufe durch, meldet die Performanzdaten und wählt einen JIT-Kernel basierend auf der Performanz aus (z.B. wählt er einen JIT-Kernel mit dem besten Durchsatz aus) und zwischenspeichert diesen zur späten Verwendung.
  • In einigen Beispielen stellt der vorgeschlagene Ansatz eine Performanzverbesserung von näherungsweise 10% gegenüber existierenden Ansätzen bereit (z.B. Ansätze, die einen ersten JIT-Kernel auswählen, der SLA-Anforderungen erfüllt).
  • 16 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 1600, die zum Ausführen und/oder Instanziieren der maschinenlesbaren Anweisungen und/oder der Operationen einer oder mehrerer der 5, 7A, 7B, 8, 10, 11 und/oder 15 strukturiert ist, um die Architekturen 100, 200, 300, das BIOS 600 und/oder das dynamische verhandelbare tiefe neuronale Netz 1400 zu implementieren. Die Prozessorplattform 1600 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z.B. ein neuronales Netz), eine Mobilvorrichtung (z.B. ein Mobiltelefon, ein Smartphone, ein Tablet wie etwa ein iPad™), ein Headset (z.B. ein Augmented-Reality- (AR-) Headset, ein Virtual-Reality- (VR-) Headset usw.) oder eine andere Wearable-Vorrichtung oder eine beliebige andere Art von Rechenvorrichtung sein.
  • Die Prozessorplattform 1600 des veranschaulichten Beispiels beinhaltet eine Prozessorschaltung 1612. Die Prozessorschaltung 1612 des veranschaulichten Beispiels ist Hardware. Zum Beispiel kann die Prozessorschaltung 1612 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, FPGAs, Mikroprozessoren, CPUs, GPUs, DSPs und/oder Mikrosteuerungen einer beliebigen gewünschten Familie oder eines beliebigen gewünschten Herstellers implementiert werden. Die Prozessorschaltung 1612 kann durch eine oder mehrere halbleiterbasierte (z.B. siliciumbasierte) Vorrichtungen implementiert werden.
  • Die Prozessorschaltung 1612 des veranschaulichten Beispiels beinhaltet einen lokalen Speicher 1613 (z.B. einen Cache, Register usw.). Die Prozessorschaltung 1612 des veranschaulichten Beispiels steht durch einen Bus 1618 in Kommunikation mit einem Hauptspeicher, der einen flüchtigen Speicher 1614 und einen nichtflüchtigen Speicher 1616 beinhaltet. Der flüchtige Speicher 1614 kann durch SDRAM (Synchronous Dynamic Random Access Memory), DRAM (Dynamic Random Access Memory), RDRAM® (RAMBUS® Dynamic Random Access Memory) und/oder eine beliebige andere Art von RAM-Vorrichtung implementiert werden. Der nichtflüchtige Speicher 1616 kann durch Flash-Speicher und/oder eine beliebige andere gewünschte Art von Speichervorrichtung implementiert werden. Der Zugriff auf den Hauptspeicher 1614, 1616 des veranschaulichten Beispiels wird durch eine Speichersteuerung 1617 gesteuert.
  • Die Prozessorplattform 1600 des veranschaulichten Beispiels beinhaltet zudem eine Schnittstellenschaltung 1620. Die Schnittstellenschaltung 1620 kann durch Hardware gemäß einer beliebigen Art von Schnittstellenstandard implementiert werden, wie etwa einer Ethernet-Schnittstelle, einer Universal-Serial-Bus- bzw. USB- Schnittstelle, einer Bluetooth®-Schnittstelle, einer Nahfeldkommunikations- bzw. NFC-Schnittstelle, einer PCI-(Peripheral Component Interconnect) Schnittstelle und/oder einer PCIe- (Peripheral Component Interconnect Express) Schnittstelle.
  • In dem veranschaulichten Beispiel sind eine oder mehrere Eingabevorrichtungen 1622 mit der Schnittstellenschaltung 1620 verbunden. Die Eingabevorrichtung(en) 1622 ermöglicht (ermöglichen) einem Benutzer, Daten und/oder Befehle in die Prozessorschaltung 1612 einzugeben. Die eine oder die mehreren Eingabevorrichtungen 1622 können zum Beispiel durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert werden.
  • Eine oder mehrere Ausgabevorrichtungen 1624 sind ebenfalls mit der Schnittstellenschaltung 1620 des veranschaulichten Beispiels verbunden. Die Ausgabevorrichtung(en) 1624 können zum Beispiel durch Anzeigevorrichtungen (z. B., eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhre (CRT-Anzeige), eine In-Place-Switching-Anzeige (IPS-Anzeige), einen Touchscreen usw.), eine taktile Ausgabevorrichtung, einen Drucker und/oder Lautsprecher implementiert werden. Die Schnittstellenschaltung 1620 des veranschaulichten Beispiels beinhaltet somit typischerweise eine Grafiktreiber-Karte, einen Grafiktreiber-Chip und/oder eine Grafikprozessor-Schaltungsanordnung, wie etwa eine GPU.
  • Die Schnittstellenschaltung 1620 des veranschaulichten Beispiels beinhaltet zudem eine Kommunikationsvorrichtung, wie etwa einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein Heim-Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerkschnittstelle, um den Austausch von Daten mit externen Maschinen (z.B. Rechenvorrichtungen einer beliebigen Art) durch ein Netzwerk 1626 zu ermöglichen. Die Kommunikation kann zum Beispiel durch eine Ethernet-Verbindung, eine DSL- (digital subscriber line) Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Sichtliniensystem, ein Mobilfunksystem, eine optische Verbindung usw. erfolgen.
  • Die Prozessorplattform 1600 des veranschaulichten Beispiels beinhaltet zudem eine oder mehrere Massenspeicherungsvorrichtungen 1628 zum Speichern von Software und/oder Daten. Beispiele für solche Massenspeichervorrichtungen 1628 beinhalten magnetische Speichervorrichtungen, optische Speichervorrichtungen, Diskettenlaufwerke, HDDs, CDs, Blu-Ray-Disk-Laufwerke, RAID- (Redundant Array of Independent Disks) Systeme, Festkörper- (Solid-State-) Speichervorrichtungen wie etwa Flash-Speichervorrichtungen und/oder SSDs, und DVD-Laufwerke.
  • Die maschinenausführbaren Anweisungen 1632, die durch die maschinenlesbaren Anweisungen aus 5, 7A, 7B, 8, 10, 11 und/oder 15 implementiert werden können, können in der Massenspeichervorrichtung 1628, in dem flüchtigen Speicher 1614, in dem nichtflüchtigen Speicher 1616 und/oder auf einem auswechselbaren nicht-transienten computerlesbaren Speichermedium, wie etwa einer CD oder DVD, gespeichert sein.
  • Die Prozessorplattform 1600 des veranschaulichten Beispiels aus 16 beinhaltet eine beispielhafte Beschleunigungsschaltungsanordnung 1634, die eine beispielhafte GPU 1640, eine beispielhafte Bildverarbeitungseinheit (vision processing unit, VPU) 1642 und einen beispielhaften Neuronalnetzprozessor 1644 beinhaltet. Zusätzlich und/oder alternativ kann die Beschleunigungsschaltungsanordnung 1634 einen beliebigen anderen Typ von Hardware beinhalten, wie etwa eine CPU, ein FPGA, eine ASIC usw. In diesem Beispiel stehen die GPU 1640, die VPU 1642 und der Neuronalnetzprozessor 1644 über den Bus 1618 in Kommunikation mit unterschiedlicher Hardware der Prozessorplattform 1600, wie etwa dem flüchtigen Speicher 1614, dem nichtflüchtigen Speicher 1616 usw. In diesem Beispiel kann der Neuronalnetzwerkprozessor 1644 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPUs, DSPs oder Steuerungen einer beliebigen gewünschten Familie oder eines beliebigen gewünschten Herstellers implementiert werden, die verwendet werden können, um ein KI-Modell, wie ein neuronales Netzwerk, auszuführen.
  • VERFAHREN UND EINRICHTUNGEN ZUR VERWALTUNG DYNAMISCHER XPU-HARDWAREORIENTIERTER DEEP-LEARNING-MODELLE
  • Rechenarbeitslasten für eine Rechenvorrichtung können durch Verwendung von Deep-Learning- (DL-) Modellen ausgeführt werden. Deep-Learning- (DL-) Modelle, wie etwa neuronale Netze (NNs), sind nützliche Werkzeuge, die ihren Wert bei der Lösung komplexer Probleme bezüglich Mustererkennung, Objektklassifizierung, Verarbeitung natürlicher Sprache, automatischer Spracherkennung usw. gezeigt haben. Das Identifizieren einer optimalen Kombination von Hardware (HW) und/oder Software (SW) (z.B. ein Deep-Learning-Modell) zum Ausführen einer Rechenarbeitslast ist aufgrund des großen Bereichs verfügbarer Typen von Hardware und/oder Deep-Learning- (DL-) Modellen und deren Anpassung(en) komplex.
  • Künstliche Intelligenz (KI), einschließlich maschinellem Lernen (ML), Deep Learning (DL) und/oder anderer künstlicher maschinengesteuerter Logik, ermöglicht Maschinen (z.B. Computern, Logikschaltungen usw.), ein Modell zum Verarbeiten von Eingabedaten zu verwenden, um eine Ausgabe basierend auf Mustern und/oder Assoziierungen zu erzeugen, die zuvor durch das Modell mittels eines Trainingsprozesses erlernt wurden. Beispielsweise kann das Modell mit Daten trainiert werden, um Muster und/oder Assoziierungen zu erkennen, wenn Eingabedaten verarbeitet werden, sodass (eine) andere Eingabe(n) in (eine) Ausgabe(n) resultieren, die mit den erkannten Mustern und/oder Assoziierungen konsistent sind.
  • Es gibt viele unterschiedliche Arten von Maschinenlernmodellen und/oder Maschinenlernarchitekturen. In einigen vorliegend offenbarten Beispielen wird ein Entscheidungsbaummodell verwendet. Die Verwendung eines Entscheidungsbaummodells ermöglicht die einfache und erklärbare Interpretation von Daten. Im Allgemeinen sind Maschinenlernmodelle/-architekturen, die zur Verwendung in den vorliegend offenbarten beispielhaften Ansätzen geeignet sind, ein neuronales Faltungsnetz (convolutional neural network, CNN) und/oder ein tiefes neuronales Netz (deep neural network, DNN), wobei Zwischenverbindungen außerhalb des Modells nicht sichtbar sind. Zusätzlich oder alternativ könnten jedoch andere Typen von Maschinenlernmodellen verwendet werden, wie etwa ein rekurrentes neuronales Netz (RNN), eine Support Vector Machine (SVM), eine GRU (gated recurrent unit, gattergesteuerte rekurrente Einheit), ein LSTM (Long Short Term Memory) usw.
  • Im Allgemeinen beinhaltet das Implementieren eines ML-/KI-Systems zwei Phasen, eine Lern-/Trainingsphase und eine Inferenzphase. In der Lern-/Trainingsphase wird ein Trainingsalgorithmus zum Trainieren eines Modells verwendet, sodass es gemäß Mustern und/oder Assoziierungen basierend auf zum Beispiel Trainingsdaten arbeitet. Im Allgemeinen beinhaltet das Modell interne Parameter, die anleiten, wie Eingabedaten in Ausgabedaten transformiert werden, wie etwa über eine Reihe von Knoten und Verbindungen im Modell zum Transformieren von Eingabedaten in Ausgabedaten. Zusätzlich dazu werden Hyperparameter als Teil des Trainingsprozesses verwendet, um zu steuern, wie das Lernen durchgeführt wird (z. B. eine Lernrate, eine Anzahl von im Maschinenlernmodell zu verwendenden Schichten usw.). Hyperparameter werden als Trainingsparameter definiert, die vor dem Initiieren des Trainingsprozesses ermittelt werden.
  • Unterschiedliche Arten von Training können basierend auf der Art des ML-/KI-Modells und/oder der erwarteten Ausgabe durchgeführt werden. Beispielsweise verwendet überwachtes Training Eingaben und entsprechende erwartete (z.B. gelabelte) Ausgaben, um Parameter für das ML-/KI-Modell auszuwählen (z.B. durch Iterieren über Kombinationen ausgewählter Parameter), die einen Modellfehler reduzieren. Wie hier verwendet, bezieht sich Labelling auf eine erwartete Ausgabe des Maschinenlernmodells (z.B. eine Klassifizierung, einen erwarteten Ausgabewert usw.). Alternativ beinhaltet unüberwachtes Training (z.B. beim tiefen Lernen (Deep Learning), einer Untergruppe des Maschinenlernens, verwendet, usw.) das Ableiten von Mustern aus Eingaben, um Parameter für das ML/KI-Modell auszuwählen (z.B. ohne den Vorteil erwarteter (z.B. gelabelter) Ausgaben).
  • In vorliegend offenbarten Beispielen werden ML/KI-Modelle unter Verwendung bekannter Softwareproben (z.B. bösartig und/oder sauber) trainiert. Zusätzlich oder alternativ dazu kann jedoch ein beliebiger anderer Trainingsalgorithmus verwendet werden. In vorliegend offenbarten Beispielen wird Training an einem Satz von Modellen durchgeführt, die für eine ausgewählte Zielsetzung (z.B. Performanz, Genauigkeit, Kosten usw.) optimiert sind.
  • Das Training wird unter Verwendung von Hyperparametern durchgeführt, die steuern, wie das Lernen durchgeführt wird (z.B. eine Lernrate, eine Anzahl von im Maschinenlernmodell zu verwendenden Schichten usw.).
  • Das Training wird unter Verwendung von Trainingsdaten durchgeführt. In vorliegend offenbarten Beispielen können die Trainingsdaten eine beliebige Art von Datensatz von Merkmalen (z.B. KI-Merkmale) sein.
  • Sobald das Training abgeschlossen ist, wird das Modell zur Verwendung als ein ausführbares Konstrukt eingesetzt, das eine Eingabe verarbeitet und eine Ausgabe basierend auf dem Netzwerk von im Modell definierten Knoten und Verbindungen bereitstellt. Das Modell wird in einem Speicher gespeichert. Das Modell kann dann durch die Modellverwaltungsschaltungsanordnung 1808 aus 18 ausgeführt werden.
  • Sobald trainiert, kann das eingesetzte Modell in einer Inferenzphase zum Verarbeiten von Daten betrieben werden. In der Inferenzphase werden zu analysierende Daten (z. B. Live-Daten) in das Modell eingegeben, und das Modell wird ausgeführt, um eine Ausgabe zu erstellen. Die Inferenzphase kann als das KI-„Denken“ angesehen werden, um die Ausgabe basierend darauf zu erzeugen, was es aus dem Training lernte (z.B. durch Ausführen des Modells, um die gelernten Muster und/oder Assoziierungen an den Live-Daten anzuwenden). In manchen Beispielen werden die Eingabedaten einer Vorverarbeitung unterzogen, bevor sie als eine Eingabe in das Maschinenlernmodell verwendet werden. Darüber hinaus können die Ausgabedaten in manchen Beispielen einer Nachverarbeitung unterzogen werden, nachdem sie durch das AI-Modell erzeugt werden, um die Ausgabe in ein nützliches Ergebnis zu transformieren (z. B. eine Anzeige von Daten, eine durch eine Maschine auszuführende Anweisung usw.).
  • In manchen Beispielen kann die Ausgabe des eingesetzten Modells erfasst und als Rückmeldung bereitgestellt werden. Durch das Analysieren der Rückmeldung kann eine Genauigkeit des eingesetzten Modells ermittelt werden. Falls die Rückmeldung angibt, dass die Genauigkeit des eingesetzten Modells geringer als eine Schwelle oder ein anderes Kriterium ist, kann das Training eines aktualisierten Modells unter Verwendung der Rückmeldung und eines aktualisierten Trainingsdatensatzes, Hyperparameter usw. ausgelöst werden, um ein aktualisiertes eingesetztes Modell zu erzeugen.
  • Die Erforschung und Entdeckung neuer KI-Merkmale ist ein zeitaufwendiges Problem. Die schnelle Entdeckung neuer Hardwaremerkmale wird die Markteinführung für neue KI-Produkte und/oder Merkmale beschleunigen.
  • Gegenwärtig konzentrieren sich Trainings- und Inferenzstufen in DL-Modellverwaltungssystemen auf ein einziges DL-Modell. Manche dieser einzelnen DL-Modelle sind in mehrere kleinere Modelle zerlegt, der Schwerpunkt dieser DL-Modellverwaltungssysteme liegt jedoch auf einzelnen abstrakten Entitäten. Diese aktuellen DL-Modellverwaltungssysteme analysieren keine Unterschiede zwischen alternativen Modellen, um Einsichten zu erhalten und neue Merkmale für KI-Merkmalsentwicklung und/oder - erkundung vorzuschlagen.
  • Neuronalarchitektursuche (neural architecture search, NAS) bezieht sich auf Ansätze zur Deep-Learning- (DL-) Modellverwaltung, die sich auf das Finden der richtigen Netzwerktopologie für einen bestimmten Satz von Anforderungen konzentrieren. Hardwareorientierte NAS-Ansätze berücksichtigen Informationen von der Zielhardware (HW) beim Suchen nach einer optimalen Neuronalnetztopologie. Der primäre Schwerpunkt hardwareorientierter NAS-Ansätze besteht darin, ein einziges DL-Modell zu finden, das zu den aufgelisteten Kriterien passt.
  • Aktuelle NAS-Ansätze zur DL-Modellverwaltung behandeln jedes entdeckte Modell isoliert. Das heißt, sie berücksichtigen die Existenz von Unterschieden zwischen Modellen (z.B. Kandidatenmerkmalen, die durch den NAS-Algorithmus für unterschiedliche Zielsetzungen optimiert wurden) nicht weiter, um neue Merkmale zu entdecken und/oder weitere Einsichten zu gewinnen.
  • Die meisten derzeitigen NAS-Lösungen berücksichtigen nicht, wie, wo und unter welchen Bedingungen die optimierten Modelle eingesetzt werden. Beispielsweise könnte die Zielhardware andere Prozesse aufweisen, die die Verfügbarkeit der Ressourcen der Vorrichtung beeinflussen, während das Modell optimiert wird, was zu der Annahme führen würde, dass alle verfügbaren Ressourcen diesem Modell während der Inferenz zugeteilt würden. Dies erweist sich jedoch während des Einsatzes als ein signifikanter Nachteil, da, wenn die Zielhardware während der Laufzeit einer Änderung der Ressourcenausnutzung unterliegt, die Hardware höchstwahrscheinlich einen Modellwechsel zu einem anderen Modell erfordern wird, das für die neuen Bedingungen besser geeignet ist.
  • Modelldualität muss genutzt werden, um zwei oder mehr unterschiedliche Architekturoptionen zu erforschen, die für mehrere Zielsetzungen optimiert sind (z.B. Genauigkeit, Latenz, Performanz, Kosten usw.). Ein Delta zwischen diesen Architekturoptionen wird identifiziert und untersucht, um neue Merkmale und/oder Lücken in der Software (SW) oder Hardware (HW) einzurichten, um beim Modelldesign/-management und/oder der Hardware-Cooptimierung zu helfen.
  • 17 ist eine Veranschaulichung einer beispielhaften AutoML-Architektur 1700, die einen beispielhaften ML- (Maschinenlern-) Systemkonfigurator 1702 zum Identifizieren und/oder Erzeugen eines zusammensetzbaren ML-Rechenknotens beinhaltet. Die AutoML-Architektur 1700 beinhaltet den ML-Systemkonfigurator 1702 zum Erzeugen eines Hardwaresuchraums und/oder eines Softwaresuchraums basierend auf einer Rechenaufgabe oder Arbeitslast (z.B. einer Künstliche-Intelligenz-/Maschinenlern- (KI/ML-) Rechenaufgabe oder Arbeitslast). Der ML-Systemkonfigurator 1702 kann Hardware oder einen oder mehrere Teile davon aus dem Hardwaresuchraum identifizieren. Der ML-Systemkonfigurator 1702 kann zudem Software (z.B. ein KI/ML-Modell) oder einen oder mehrere Teile davon aus dem Softwaresuchraum entdecken und/oder anderweitig identifizieren. In einigen Beispielen kann der ML-Systemkonfigurator 1702 einzeln und/oder gleichzeitig einen zusammensetzbaren ML-Rechenknoten entwickeln, indem er (i) eine Architektur und/oder einen Typ der Hardware und/oder der Software und/oder (ii) Konfiguration(en) der Hardware und/oder der Software iteriert. Zum Beispiel kann der ML-Systemkonfigurator 1702 den zusammensetzbaren ML-Rechenknoten entwickeln, indem er die Hardware und/oder die Software beim Ausführen einer Arbeitslast und/oder basierend auf einer Simulation der Hardware und/oder Software, die die Arbeitslast ausführen, evaluiert. In einigen solchen Beispielen kann der zusammensetzbare ML-Rechenknoten zusammensetzbar sein, weil Hardware- und/oder Softwarekomponenten ausgewählt und in verschiedenen Kombinationen zusammengestellt werden können, um spezifische oder vordefinierte Anforderungen (z.B. eine Genauigkeitsanforderung, eine Latenzanforderung, eine Durchsatzanforderung usw.) zu erfüllen. In einigen solchen Beispielen kann der ML-Systemkonfigurator 1702 in Reaktion auf eine Identifikation einer speziellen Kombination von Hardware und/oder Software, die die spezifischen oder vordefinierten Anforderungen erfüllt, die Kombination als einen zusammensetzbaren ML-Rechenknoten ausgeben, um eine Arbeitslast von Interesse auszuführen.
  • In einigen Beispielen kann ein zusammensetzbarer ML-Rechenknoten durch ein einziges homogenes Rechen- oder elektronisches System implementiert werden, das konfiguriert und/oder anderweitig genutzt werden kann, um ein KI/ML-Modell auszuführen. Zum Beispiel kann der zusammensetzbare ML-Rechenknoten durch eine einzelne Zentralprozessoreinheit (CPU), Grafikprozessoreinheit (GPU), einen Künstliche-Intelligenz-(KI-) Prozessor, ein frei programmierbares Gate-Array (FPGA), einen Digitalsignalprozessor (DSP), eine XPU usw. implementiert werden. In einigen Beispielen kann der zusammensetzbare ML-Rechenknoten durch einen oder mehrere Teile eines einzelnen homogenen Rechen- oder elektronischen Systems implementiert werden, wie etwa einen oder mehrere Teile (z.B. Kernel(s)) einer einzelnen CPU, GPU, eines KI-Prozessors, eines FPGA, eines DSP, einer XPU usw. In einigen solchen Beispielen können der eine oder die mehreren Teile einen Kernel (z.B. einen Hardware-Kernel) und/oder eine oder mehrere entsprechende Zwischenverbindungen beinhalten, mit denen ein oder mehrere unterschiedliche Kernels, Hardware usw. gekoppelt werden können (z.B. physisch gekoppelt, kommunikativ gekoppelt, über einen Rechen- oder elektrischen Bus gekoppelt usw.). In einigen Beispielen kann ein zusammensetzbarer ML-Rechenknoten durch mehrere desselben Typs von homogenem Rechen- oder Elektroniksystem oder Teil(e) davon implementiert werden. Zum Beispiel kann der zusammensetzbare ML-Rechenknoten durch zwei oder mehr CPUs (oder Teil(e) davon), zwei oder mehr GPUs (oder Teil(e) davon), zwei oder mehr KI-Prozessoren (oder Teil(e) davon), zwei oder mehr FPGAs (oder Teil(e) davon), zwei oder mehr DSPs (oder Teil(e) davon), zwei oder mehr XPUs (oder Teil(e) davon) usw. implementiert werden.
  • In einigen Beispielen kann ein zusammensetzbarer ML-Rechenknoten durch ein einziges heterogenes Rechen- oder elektronisches System implementiert werden, das konfiguriert und/oder anderweitig genutzt werden kann, um ein KI/ML-Modell auszuführen. Zum Beispiel kann der zusammensetzbare ML-Rechenknoten durch eine CPU, eine GPU, einen KI-Prozessor, ein FPGA, einen DSP, eine XPU usw. und/oder eine oder mehrere beliebige Kombinationen davon implementiert werden. In einigen solchen Beispielen kann der zusammensetzbare ML-Rechenknoten durch eine oder mehrere CPUs, eine oder mehrere GPUs, einen oder mehrere KI-Prozessoren, ein oder mehrere FPGAs, einen oder mehrere DSPs, eine oder mehrere XPUs usw. und/oder eine oder mehrere beliebige Kombination(en) davon implementiert werden. In einigen Beispielen kann der zusammensetzbare ML-Rechenknoten durch einen oder mehrere Teile eines einzigen heterogenen Rechen- oder elektronischen Systems implementiert werden, wie etwa einen oder mehrere Teile einer CPU, GPU, eines KI-Prozessors, eines FPGA, eines DSP, einer XPU usw. und/oder eine oder mehrere beliebige Kombinationen davon. In einigen Beispielen kann ein zusammensetzbarer ML-Rechenknoten durch mehrere desselben heterogenen Rechen- oder elektronischen Systems oder Teil(e) davon implementiert werden. Zum Beispiel kann der zusammensetzbare ML-Rechenknoten durch zwei oder mehr Instanzen eines heterogenen Rechensystems implementiert werden, das eine oder mehrere CPUs (oder einen oder mehrere Teile davon), eine oder mehrere GPUs (oder einen oder mehrere Teile davon), einen oder mehrere KI-Prozessoren (oder Teil(e) davon), ein oder mehrere FPGAs (oder Teil(e) davon), einen oder mehrere DSPs (oder Teil(e) davon), eine oder mehrere XPUs (oder Teil(e) davon) usw. und/oder Kombination(en) davon beinhaltet. In einigen Beispielen kann der zusammensetzbare ML-Rechenknoten durch zwei oder mehr unterschiedliche heterogene Rechen- oder elektronische Systeme implementiert werden. Zum Beispiel kann der zusammensetzbare ML-Rechenknoten durch ein erstes heterogenes Rechensystem und ein zweites heterogenes Rechensystem implementiert werden. In einigen solchen Beispielen können der eine oder die mehreren Teile des ersten heterogenen Rechensystems und des zweiten heterogenen Rechensystems unterschiedlich sein.
  • In einigen Beispielen kann der zusammensetzbare ML-Rechenknoten ein ausführbares Konstrukt zum Ausführen eines KI/ML-Modells zum Abschließen einer Arbeitslast oder eines oder mehrerer Teile davon beinhalten, speichern und/oder anderweitig darauf zugreifen. Das ausführbare Konstrukt kann zum Beispiel durch ein Konfigurationsabbild, eine ausführbare Binärdatei, ausführbaren Code (z.B. ausführbaren maschinenlesbaren Code), eine ausführbare Datei (z.B. eine ausführbare binäre Datei), ein ausführbares Programm, ausführbare Anweisungen (z.B. ausführbare maschinenlesbare Anweisungen) usw. implementiert werden, die bei Ausführung ein KI/ML-Modell implementieren können, um die Ausführung von KI/ML-Arbeitslasten zu bewirken.
  • Die AutoML-Architektur 1700 des veranschaulichten Beispiels beinhaltet beispielhafte optimierte Anwendungen 1704, beispielhafte optimierte Middleware und Frameworks 1706 und beispielhafte Anwendungsprogrammierschnittstellen (APIs) 1708. In einigen Beispielen können die optimierten Anwendungen 1704 durch Anwendungen (z.B. Softwareanwendungen, web- oder browserbasierte Anwendungen usw.) implementiert werden, die angepasst, zugeschnitten und/oder anderweitig optimiert sind, um die Identifikation und/oder Erzeugung eines zusammensetzbaren ML-Rechenknotens zu bewirken. Zum Beispiel kann auf die optimierten Anwendungen 1704 durch einen Entwickler (z.B. einen Softwareentwickler, einen Forscher usw.), IT- (Informationstechnologie) Personal usw. zugegriffen werden, diese genutzt werden usw. In einigen solchen Beispielen kann auf die optimierten Anwendungen 1704 zugegriffen werden, diese genutzt werden usw., um eine Hardware/Software- (HW/SW-) Lösung für ein technisches Problem, das von KI/ML-Methoden profitieren kann, gemeinsam zu entwerfen. In einigen Beispielen können die optimierte Middleware und die optimierten Frameworks 1706 durch Middleware und Frameworks implementiert werden, die angepasst, zugeschnitten und/oder anderweitig optimiert sind, um die Identifikation und/oder Erzeugung eines zusammensetzbaren ML-Rechenknotens zu bewirken. Zum Beispiel können die optimierte Middleware und die optimierten Frameworks 1706 eine Schnittstelle (z.B. Kommunikation, Konnektivität usw.) zwischen den optimierten Anwendungen 1704 und den APIs 1708 implementieren.
  • Die APIs 1708 des veranschaulichten Beispiels können aufgerufen werden, um eine KI/ML-Anwendung durch Direktprogrammierung und/oder API-basierte Programmierung zu programmieren, zu entwickeln und/oder anderweitig zu erzeugen. Die APIs 1708 des veranschaulichten Beispiels beinhalten beispielhafte Portierungstools 1710, beispielhafte Direktprogrammierungs-APIs 1712, beispielhafte API-basierte Programmierungs-APIs 1714 und beispielhafte Analysetools 1716.
  • In einigen Beispielen können die Portierungstools 1710 durch Software (z.B. eine Softwareanwendung) implementiert werden, die ein Programm zum Zweck des Erreichens irgendeiner Form von Ausführung in einer ersten Rechen- oder elektronischen Umgebung anpassen kann, die sich von einer zweiten Rechen- oder elektronischen Umgebung unterscheidet, für die das Programm ursprünglich konzipiert wurde. Zum Beispiel können die Portierungstools 1710 ein erstes Programm, das für einen ersten Typ von Hardware, Betriebssystem (OS), Bibliothek usw. entwickelt wurde, in ein zweites Programm für einen zweiten Typ von Hardware, OS, Bibliothek usw. umwandeln und/oder anderweitig anpassen.
  • In einigen Beispielen können die Direktprogrammierungs-APIs 1712 aufgerufen werden, um Direktprogrammieraufgaben zu bewirken, was das Entwickeln und/oder Kompilieren von datenparallelen C++-Anwendungen beinhalten kann. In einigen Beispielen können die API-basierten Programmierungs-APIs 1714 aufgerufen werden, um API-basierte Programmierung zu bewirken, was das Entwickeln und/oder Kompilieren von Anwendungen beinhalten kann, die eine Math Kernel Library (MKL), eine MKL-DNN- (tiefes neuronales Netz) Bibliothek, eine Datenanalytik-Beschleunigungsbibliothek, eine Thread-Bausteinbibliothek, eine Parallelstandardvorlagenbibliothek, ein Mediensoftware-Entwicklungskit (software development kit, SDK), ein Deep-Learning-Einsatz-Toolkit, eine Maschinenlern-Skalierungsbibliothek usw. und/oder eine oder mehrere beliebige Kombinationen aus diesen abrufen (oder aufrufen, instanziieren usw.).
  • In einigen Beispielen können die Analysetools 1716 abgerufen, instanziiert und/oder anderweitig aufgerufen werden, um Hardware, Software und/oder Konfiguration(en) davon eines zusammensetzbaren ML-Rechenknotens zu analysieren. Zum Beispiel können die Analysetools 1716 einen oder mehrere Emulatoren instanziieren, um alle Hardware- und/oder Softwaremerkmale des zusammensetzbaren ML-Rechenknotens zu emulieren, um einen oder mehrere Evaluierungsparameter zu erzeugen und/oder anderweitig auszugeben. In einigen solchen Beispielen können die Evaluierungsparameter Parameter beinhalten, die Genauigkeit, Latenz, eine Anzahl von Zyklen zum Abschließen einer Arbeitslast oder einen Durchsatz des zusammensetzbaren ML-Rechenknotens darstellen und/oder anderweitig angeben. In einigen Beispielen können die Evaluierungsparameter Parameter beinhalten, die eine Prozessor- oder Taktfrequenz, eine Fabric-Frequenz, eine Lesespeicherbandbreite, eine Schreibspeicherbandbreite, Hardware-Herabsetzungs- (de-rate) Faktoren, eine Anzahl von Speicherports, eine Anzahl von Datenverarbeitungseinheiten (DPUs) repräsentieren und/oder anderweitig angeben, eine Anzahl von Modellschichten (z.B. neuronale Netzwerkschichten, Faltungsschichten usw.), eine Aktivierungsgenauigkeit (z.B. eine Genauigkeit von Aktivierungswerten, die verarbeitet werden sollen), eine Gewichtungsgenauigkeit (z.B. eine Genauigkeit von Gewichtungswerten, die verarbeitet werden sollen) usw. und/oder eine oder mehrere beliebige Kombinationen aus diesen darstellen und/oder anderweitig angeben. Zum Beispiel können die Analysetools 1716 einen Emulator basierend auf dem zusammensetzbaren ML-Rechenknoten ausführen. In einigen solchen Beispielen können die Analysetools 1716 den Emulator ausführen, um einen Durchsatz des zusammensetzbaren ML-Rechenknotens zu ermitteln, wenn der zusammensetzbare ML-Rechenknoten ein bestimmtes KI/ML-Modell mit einer bestimmten Konfiguration ausführt.
  • In einigen Beispielen können die Analysetools 1716 einen oder mehrere Simulatoren instanziieren, um das Verhalten, die Konfiguration usw. eines zusammensetzbaren ML-Rechenknotens zu simulieren, um einen oder mehrere Evaluierungsparameter zu erzeugen und/oder anderweitig auszugeben. Zum Beispiel können die Analysetools 1716 ein Modell (z.B. ein Simulationsmodell, ein KI/ML-Modell usw.) basierend auf dem zusammensetzbaren ML-Rechenknoten ausführen. In einigen solchen Beispielen können die Analysetools 1716 das Modell ausführen, um einen Durchsatz des zusammensetzbaren ML-Rechenknotens zu schätzen, vorherzusagen und/oder anderweitig zu ermitteln, wenn der zusammensetzbare ML-Rechenknoten ein bestimmtes KI/ML-Modell mit einer bestimmten Konfiguration ausführt.
  • Die AutoML-Architektur 1700 des veranschaulichten Beispiels beinhaltet verschiedene Arten von Hardware und/oder Software, aus denen ein zusammensetzbarer ML-Rechenknoten erzeugt werden kann. In dem veranschaulichten Beispiel beinhaltet die AutoML-Architektur 1700 Schnittstellen und Zielsystemsoftware für Skalar-, Vektor-, Matrix- und räumliche Hardware. Zusätzlich und/oder alternativ kann eine beliebige andere Art von Hardware verwendet werden. In diesem Beispiel wird die Skalarhardware durch eine beispielhafte CPU 1718 und eine beispielhafte CPU- Systemsoftware 1720 implementiert. Zum Beispiel kann die CPU-Systemsoftware 1720 Anweisungen beinhalten, die einer CPU-Befehlssatzarchitektur (ISA) entsprechen. In diesem Beispiel wird die Vektorhardware durch eine beispielhafte GPU 1722 und eine beispielhafte GPU-Systemsoftware 1724 implementiert. Zum Beispiel kann die GPU-Systemsoftware 1724 Kernels, einen oder mehrere Abschnitte von Code usw., wie etwa Kernels, Rechenkernels und/oder Shader, beinhalten. In einigen Beispielen können die Kerne, der(die) Codeabschnitt(e) usw. in einer höheren Programmiersprache dargestellt werden, wie etwa zum Beispiel High-Level Shader Language (HLSL), OpenCL usw.
  • In diesem Beispiel wird die Matrixhardware durch einen beispielhaften KI-Prozessor 1726 und eine beispielhafte KI-Systemsoftware 1728 implementiert. Zum Beispiel kann die KI-Systemsoftware 1728 einen oder mehrere KI/ML-Algorithmen, Modelle usw. beinhalten, wie etwa neuronale Netze (z.B. neuronale Faltungsnetze (convolutional neural networks, CNNs), tiefe neuronale Netze (DNNs), rekurrente neuronale Netze (RNNs) usw.), lineare Regressionsmodelle, logistische Regressionsmodelle, Entscheidungsbaummodelle, Lernvektorquantisierungsmodelle usw. und/oder Kombination(en) aus diesen. In diesem Beispiel wird die räumliche Hardware durch ein beispielhaftes FPGA 1730 und eine beispielhafte FPGA-Systemsoftware 1732 implementiert. Zum Beispiel kann die FPGA-Systemsoftware 1732 Kernels, Codeabschnitt(e) usw. basierend auf einer Hardwarebeschreibungssprache (hardware description language, HDL) wie etwa Verilog beinhalten.
  • Der ML-Systemkonfigurator 1702 des veranschaulichten Beispiels kann über eine beispielhafte Host-Schnittstelle 1734 eine Schnittstelle mit der CPU 1718 und/oder der CPU-Systemsoftware 1720 bilden. Der ML-Systemkonfigurator 1702 des veranschaulichten Beispiels kann über eine beispielhafte Nullebenen-Schnittstelle 1736 mit der GPU 1722, der GPU-Systemsoftware 1724, dem KI-Prozessor 1726, der KI-Systemsoftware 1728, dem FPGA 1730 und/oder der FPGA-Systemsoftware 1732 eine Schnittstelle bilden.
  • Bei dem veranschaulichten Beispiel können die CPU-Systemsoftware 1720, die GPU-Systemsoftware 1724, die KI-Systemsoftware 1728, die FPGA-Systemsoftware 1732, die Host-Schnittstelle 1734 und/oder die Nullebenen-Schnittstelle 1736 einer beispielhaften Systemsoftware unterhalb der Ebene Null 1738 entsprechen und/oder diese anderweitig implementieren. Zum Beispiel kann Systemsoftware unterhalb der Ebene Null 1738 Direkt-zu-Metall-Schnittstellen niedriger Ebenen entsprechen und/oder diese anderweitig implementieren, die auf Hardware, wie etwa die CPU 1718, die GPU 1722 usw., zugeschnitten sind.
  • In dem veranschaulichten Beispiel können die APIs 1708 beispielhafte Systemsoftware oberhalb der Ebene Null 1740 und eine beispielhafte Entwicklerschnittstelle 1742 implementieren. Zum Beispiel kann ein Entwickler, ein Benutzer usw. über die APIs 1708 auf die AutoML-Architektur 1700 zugreifen und/oder diese anderweitig nutzen. In einigen Beispielen kann ein Entwickler, ein Benutzer usw. über die APIs 1708 auf Systemsoftware auf einer höheren Ebene als Direkt-zu-Metall-Schnittstellen niedriger Ebenen zugreifen und/oder diese anderweitig nutzen. In einigen Beispielen kann ein Entwickler, ein Benutzer usw. über die Host-Schnittstelle 1734 und/oder die Nullebenen-Schnittstelle 1736 auf die Systemsoftware unterhalb der Ebene Null 1738 zugreifen und/oder diese anderweitig nutzen.
  • 18 ist ein Blockdiagramm einer beispielhaften Konfiguration eines dynamischen XPU-Hardware-orientierten Deep-Learning- (DL-) Modell-Verwaltungssystems, das gemäß den Lehren dieser Offenbarung implementiert ist. Das beispielhafte DL-Modellverwaltungssystem 1800 beinhaltet einen beispielhaften Eingabedatensatz 1802, eine beispielhafte Modelltrainingsschaltungsanordnung 1804, die eine beispielhafte Differenzbestimmungsschaltungsanordnung 1806, eine beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 und eine beispielhafte Merkmalsammelschaltungsanordnung 1810 beinhaltet, ein beispielhaftes erstes, zweites und drittes Modell 1812A, 1812B und 1812C und eine beispielhafte Modellverwaltungsschaltungsanordnung 1814, die eine beispielhafte QoS-Auswahlschaltungsanordnung 1816, eine beispielhafte QoS-Sampler-Schaltungsanordnung 1818 und eine beispielhafte Modellplanungsschaltungsanordnung 1820 beinhaltet.
  • In vorliegend offenbarten Beispielen kann der beispielhafte Eingabedatensatz 1802 Kandidatenmerkmale, Zielsetzungen, nach denen Modelle optimiert werden sollen usw. enthalten. Der beispielhafte Eingabedatensatz 1802 wird an die Modelltrainingsschaltungsanordnung 1804 zur Verwendung beim Training und/oder der Optimierung von Modellen durch das DL-Modellverwaltungssystem 1800 übertragen.
  • Die beispielhafte Modelltrainingsschaltungsanordnung 1804, die die beispielhafte Differenzbestimmungsschaltungsanordnung 1806, die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 und die beispielhafte Merkmalsammelschaltungsanordnung 1810 beinhaltet, empfängt den beispielhaften Eingabedatensatz 1802 und erzeugt einen Satz von Modellen (z.B. das erste Modell 1812A, das zweite Modell 1812B und das dritte Modell 1812C) basierend auf einer gewählten Zielsetzung. Zum Beispiel wird in dem vorliegend offenbarten DL-Modellverwaltungssystem 1800 das erste Modell, 1812A, trainiert, um als Schlüsselzielsetzung die Genauigkeit zu optimieren, wird das zweite Modell, 1812B, trainiert, um als Schlüsselzielsetzung die Performanz zu optimieren, und wird das dritte Modell, 1812C, trainiert, um als Schlüsselzielsetzung Kosten zu optimieren.
  • Die beispielhafte Differenzbestimmungsschaltungsanordnung 1806 analysiert die Merkmalslisten von Modellen, die für unterschiedliche ausgewählte Zielsetzungen (z.B. Genauigkeit, Performanz, Kosten usw.) optimiert sind, um Merkmalsunterschiede zwischen den verschiedenen Modellen zu identifizieren. In vorliegend offenbarten Beispielen identifiziert die Differenzbestimmungsschaltungsanordnung 1806 diese Unterschiede durch Assoziieren von Merkmalen, die vorhanden sind, als eine erste Zielsetzung für ein erstes Modell ausgewählt wurde (z.B. Merkmale aus dem ersten Modell 1812A mit einer ausgewählten Genauigkeitszielsetzung), aber nicht vorhanden sind, wenn eine zweite Zielsetzung für ein zweites Modell ausgewählt wurde (z.B. Merkmale aus dem zweiten Modell 1812B mit einer ausgewählten Performanzzielsetzung). Beim Ermitteln dieser Unterschiede wird eine weitere Erkenntnis gewonnen, warum ein Modell möglicherweise seine Gesamtperformanz auf Kosten einer anderen Zielsetzung (z.B. Kosten) verbessert hat.
  • In einigen Beispielen beinhaltet die Modelltrainingsschaltungsanordnung 1804 Mittel zum Identifizieren von Kandidatenunterschieden zwischen Modellen, die für unterschiedliche ausgewählte Zielsetzungen optimiert sind (z.B. Genauigkeit, Performanz, Kosten usw.). Zum Beispiel können die Mittel zum Identifizieren von Unterschieden durch die beispielhafte Differenzbestimmungsschaltungsanordnung 1806 implementiert werden. In einigen Beispielen kann die beispielhafte Differenzbestimmungsschaltungsanordnung 1806 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2112 aus 21, instanziiert werden. Beispielsweise kann die beispielhafte Differenzbestimmungsschaltungsanordnung 1806 durch die beispielhafte Universal Prozessorschaltung 2100 aus 21 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest die Blöcke 1905, 1910 und 1915 aus 19 implementiert werden. In einigen Beispielen kann die beispielhafte Differenzbestimmungsschaltungsanordnung 1806 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte Differenzbestimmungsschaltungsanordnung 1806 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte Differenzbestimmungsschaltungsanordnung 1806 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • Die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 analysiert die Merkmalslisten von Modellen, die für unterschiedliche ausgewählte Zielsetzungen (z.B. Genauigkeit, Performanz, Kosten usw.) optimiert sind, um Merkmalsähnlichkeiten zwischen den verschiedenen Modellen zu identifizieren. In vorliegend offenbarten Beispielen identifiziert die Ähnlichkeitsbestimmungsschaltungsanordnung 1808 diese Ähnlichkeiten durch Assoziieren von Merkmalen, die vorhanden sind, als eine erste Zielsetzung für ein erstes Modell ausgewählt wurde (z.B. Merkmale aus dem ersten Modell 1812A mit einer ausgewählten Genauigkeitszielsetzung), und die immer noch vorhanden sind, wenn eine zweite Zielsetzung für ein zweites Modell ausgewählt wurde (z.B. Merkmale aus dem zweiten Modell 1812B mit einer ausgewählten Performanzzielsetzung). Beim Ermitteln dieser Ähnlichkeiten wird weitere Erkenntnis erhalten, welche Merkmale für die Gesamtmodellperformanz wichtig sind (z.B. kann gefolgert werden, dass einige Schichten sehr wichtig sind, wenn eine Objekterkennung durchgeführt wird).
  • In einigen Beispielen beinhaltet die Modelltrainingsschaltungsanordnung 1804 Mittel zum Identifizieren von Ähnlichkeiten zwischen Modellen, die für unterschiedliche ausgewählte Zielsetzungen optimiert sind (z.B. Genauigkeit, Performanz, Kosten usw.). Zum Beispiel können die Mittel zum Identifizieren von Ähnlichkeiten durch die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 implementiert werden. In einigen Beispielen kann die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2112 aus 21, instanziiert werden. Beispielsweise kann die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 durch die beispielhafte Universal Prozessorschaltung 2112 aus 21 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest Block 1920 aus 19 implementiert werden. In einigen Beispielen kann die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • Die beispielhafte Merkmalsammelschaltungsanordnung 1810 sammelt die Liste von Merkmalen, die sowohl durch die Differenzbestimmungsschaltungsanordnung 1806 als auch die Ähnlichkeitsbestimmungsschaltungsanordnung 120 identifiziert werden. In einigen Beispielen kann die Merkmalsammelschaltungsanordnung 1810 dann eine weitere Analyse an der Liste gesammelter Merkmale durchführen, jedoch kann die Liste bei vorliegend offenbarten Beispielen zur Ausgabe beibehalten werden.
  • In einigen Beispielen beinhaltet die Modelltrainingsschaltungsanordnung 1804 Mittel zum Sammeln von Merkmalen, die durch die beispielhafte Differenzbestimmungsschaltungsanordnung 1806 und die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 identifiziert werden. Zum Beispiel können die Mittel zum Sammeln von Merkmalen durch die beispielhafte Merkmalsammelschaltungsanordnung 1810 implementiert werden. In einigen Beispielen kann die beispielhafte Merkmalsammelschaltungsanordnung 1810 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2112 aus 21, instanziiert werden. Beispielsweise kann die beispielhafte Merkmalsammelschaltungsanordnung 1810 durch die beispielhafte Universal Prozessorschaltung 2112 aus 21 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest Block 1925 aus 19 implementiert werden. In einigen Beispielen kann die beispielhafte Merkmalsammelschaltungsanordnung 1810 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte Merkmalsammelschaltungsanordnung 1810 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte Merkmalsammelschaltungsanordnung 1810 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • Das erste, das zweite und das dritte Modell (1812A, 1812B und 1812C), die aus dem Eingabedatensatz 1802 bezogen werden, werden nach Verwendung durch die Modelltrainingsschaltungsanordnung 1804 zur weiteren Verarbeitung in die beispielhafte Modellverwaltungsschaltungsanordnung 1814 eingegeben. In vorliegend offenbarten Beispielen ist das erste Modell 1812A optimiert, um die ausgewählte Genauigkeitszielsetzung zu maximieren, ist das zweite Modell 1812B optimiert, um die ausgewählte Performanzzielsetzung zu maximieren, und ist das dritte Modell 1812C optimiert, um die ausgewählte Kostenzielsetzung zu maximieren.
  • In vorliegend offenbarten Beispielen beinhaltet die beispielhafte Modellverwaltungsschaltungsanordnung 1814 eine beispielhafte Dienstgüte- (quality of service, QoS-) Sampling-Schaltungsanordnung 1816, eine beispielhafte QoS-Auswahlschaltungsanordnung 1818 und eine beispielhafte Modellplanungsschaltungsanordnung 1820.
  • Die beispielhafte Dienstgüte- (QoS-) Sampler-Schaltungsanordnung 1816 tastet einen aktuellen Zustand der Zielhardwareplattform ab. Zum Beispiel kann die Dienstgüte- (QoS-) Sampler-Schaltungsanordnung 1816 ermitteln, dass die Zielhardwareplattform gegenwärtig auf eine Anfrage mit hoher Priorität von einer Anwendung reagiert.
  • In einigen Beispielen beinhaltet die Modellverwaltungsschaltungsanordnung 1814 Mittel zum Ermitteln eines aktuellen Zustands einer Zielhardwareplattform. Zum Beispiel kann das Mittel zum Ermitteln durch die beispielhafte QoS-Sampler-Schaltungsanordnung 1816 implementiert werden. In einigen Beispielen kann die beispielhafte QoS-Sampler-Schaltungsanordnung 1816 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2112 aus 21, instanziiert werden. Beispielsweise kann die beispielhafte QoS-Sampler-Schaltungsanordnung 1816 durch die beispielhafte Universal Prozessorschaltung 2112 aus 21 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest Block 2005 aus 20 implementiert werden. In einigen Beispielen kann die beispielhafte QoS-Sampler-Schaltungsanordnung 1816 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte QoS-Sampler-Schaltungsanordnung 1816 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte QoS-Sampler-Schaltungsanordnung 1816 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • Die beispielhafte QoS-Auswahlschaltungsanordnung 1818 wählt eine zu priorisierende Dienstgüte (QoS) basierend auf dem aktuellen Zustand der Zielhardwareplattform aus, die durch die QoS-Sampler-Schaltungsanordnung 1816 ermittelt wurde. Zum Beispiel kann die QoS-Auswahlschaltungsanordnung 1818 Genauigkeit als die QoS-Zielsetzung der höchsten Priorität auswählen, falls die QoS-Sampler-Schaltungsanordnung 1816 vorher feststellt, dass die Zielhardwareplattform gegenwärtig auf eine Anfrage mit hoher Priorität von einer Anwendung reagiert.
  • In einigen Beispielen beinhaltet die Modellverwaltungsschaltungsanordnung 1814 Mittel zum Auswählen einer Dienstgüte- (QoS-) Zielsetzung. Zum Beispiel kann das Mittel zum Auswählen einer QoS-Zielsetzung durch die beispielhafte QoS-Auswahlschaltungsanordnung 1818 implementiert werden. In einigen Beispielen kann die beispielhafte QoS-Auswahlschaltungsanordnung 1818 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2112 aus 21, instanziiert werden. Beispielsweise kann die beispielhafte QoS-Auswahlschaltungsanordnung 1818 durch die beispielhafte Universal Prozessorschaltung 2100 aus 21 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest die Blöcke 2010, 2015 und 2020 aus 20 implementiert werden. In einigen Beispielen kann die beispielhafte QoS-Auswahlschaltungsanordnung 1818 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte QoS-Auswahlschaltungsanordnung 1818 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte QoS-Auswahlschaltungsanordnung 1818 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • Die beispielhafte Modellplanungsschaltungsanordnung 1820 wählt das Modell, das die Anforderungen der ausgewählten Dienstgüte- (QoS-) Zielsetzung zur Priorisierung am besten erfüllen wird, zur Verwendung durch die Zielhardwareplattform aus. Außerdem überwacht die Modellplanungsschaltungsanordnung 1820 auch Nutzungsmetriken der Zielhardwareplattform. Falls festgelegt wird, dass irgendeine der Nutzungsmetriken niedriger als ein vorbestimmter Schwellenwert ist, passt die Modellplanungsschaltungsanordnung 1820 dann die Modellauswahl an, um ein anderes Modell zur Verwendung durch die Zielhardwareplattform zu produzieren. Falls zum Beispiel das erste Modell 1812A beginnt, niedrige Nutzungsmetriken auf der Hardwareplattform zu produzieren, wählt die Modellplanungsschaltungsanordnung 1820 das zweite Modell 1812B als das neue Modell zur Verwendung aus. Falls das zweite Modell 1812B nach einiger Zeit beginnt, niedrige Nutzungsmetriken zu liefern, kann die Modellplanungsschaltungsanordnung 1820 ermitteln, dass das erste Modell 1812A besser zur Verwendung durch die Hardwareplattform geeignet ist.
  • In einigen Beispielen beinhaltet die Modellverwaltungsschaltungsanordnung 1814 Mittel zum Auswählen eines Modells. Zum Beispiel kann das Mittel zum Auswählen durch die beispielhafte Modellplanungsschaltungsanordnung 1820 implementiert werden. In einigen Beispielen kann die beispielhafte Modellplanungsschaltungsanordnung 1820 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2112 aus 21, instanziiert werden. Beispielsweise kann die beispielhafte Modellplanungsschaltungsanordnung 1820 durch die beispielhafte Universal Prozessorschaltung 2100 aus 21 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest die Blöcke 2025, 2030 und 2035 aus 20 implementiert werden. In einigen Beispielen kann die beispielhafte Modellplanungsschaltungsanordnung 1820 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte Modellplanungsschaltungsanordnung 1820 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte Modellplanungsschaltungsanordnung 1820 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • Wenngleich eine beispielhafte Art und Weise des Implementierens der Modellplanungsschaltungsanordnung 1804 aus 18 in 18 veranschaulicht ist, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in 18 veranschaulicht sind, kombiniert, geteilt, umgeordnet, weggelassen, eliminiert und/oder auf eine beliebige andere Weise implementiert werden. Ferner können die beispielhafte Differenzbestimmungsschaltungsanordnung 1806, die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808, die beispielhafte Merkmalsammelschaltungsanordnung 1810 und/oder allgemeiner die beispielhafte Modelltrainingsschaltungsanordnung 1804 aus 18 durch Hardware allein oder durch Hardware in Kombination mit Software und/oder Firmware implementiert werden. Dementsprechend könnten zum Beispiel beliebige der beispielhaften Differenzbestimmungsschaltungsanordnung 1806, der beispielhaften Ähnlichkeitsbestimmungsschaltungsanordnung 1808, der beispielhaften Merkmalsammelschaltungsanordnung 1810 und/oder allgemeiner der beispielhaften Modelltrainingsschaltungsanordnung 1804 durch eine Prozessorschaltung, eine oder mehrere analoge Schaltungen, eine oder mehrere digitale Schaltungen, eine oder mehrere Logikschaltungen, einen oder mehrere programmierbare Prozessoren, einen oder mehrere programmierbare Mikrocontroller, eine oder mehrere Grafikverarbeitungseinheiten) (GPUs), einen oder mehrere Digitalsignalprozessoren (DSPs), ein oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs), eine oder mehrere programmierbare Logikvorrichtungen (PLDs) und/oder eine oder mehrere feldprogrammierbare Logikvorrichtungen (FPLDs) wie etwa feldprogrammierbare Gate-Arrays (FPGAs) implementiert werden. Des Weiteren kann die beispielhafte Modelltrainingsschaltungsanordnung 1804 aus 18 ein/en/e oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu den oder anstelle der in 18 veranschaulichten beinhalten und/oder kann mehr als eine/s von einer/m beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen beinhalten.
  • Wenngleich eine beispielhafte Art und Weise des Implementierens der Modellverwaltungsschaltungsanordnung 1814 aus 18 in 18 veranschaulicht ist, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in 18 veranschaulicht sind, kombiniert, geteilt, umgeordnet, weggelassen, eliminiert und/oder auf eine beliebige andere Weise implementiert werden. Ferner können die beispielhafte Dienstgüte-(QoS-) Sampler-Schaltungsanordnung 1816, die beispielhafte QoS-Auswahlschaltungsanordnung 1818, die beispielhafte Modellplanungsschaltungsanordnung 1820 und/oder allgemeiner die beispielhafte Modellverwaltungsschaltungsanordnung 1814 aus 18 durch Hardware allein oder durch Hardware in Kombination mit Software und/oder Firmware implementiert werden. Dementsprechend könnten zum Beispiel beliebige der beispielhaften Dienstgüte- (QoS-) Sampler-Schaltungsanordnung 1816, der beispielhaften QoS-Auswahlschaltungsanordnung 1818, der beispielhaften Modellplanungschaltungsanordnung 1820 und/oder allgemeiner der beispielhaften Modellverwaltungsschaltungsanordnung 1814 durch eine Prozessorschaltung, eine oder mehrere analoge Schaltungen, eine oder mehrere digitale Schaltungen, eine oder mehrere Logikschaltungen, einen oder mehrere programmierbare Prozessoren, einen oder mehrere programmierbare Mikrocontroller, eine oder mehrere Grafikverarbeitungseinheiten) (GPUs), einen oder mehrere Digitalsignalprozessoren (DSPs), ein oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs), eine oder mehrere programmierbare Logikvorrichtungen (PLDs) und/oder eine oder mehrere feldprogrammierbare Logikvorrichtungen (FPLDs) wie etwa feldprogrammierbare Gate-Arrays (FPGAs) implementiert werden. Des Weiteren kann die beispielhafte Modellverwaltungsschaltungsanordnung 1814 aus 18 ein/en/e oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu den oder anstelle der in 18 veranschaulichten beinhalten und/oder kann mehr als eine/s von einer/m beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen beinhalten.
  • Ein Flussdiagramm, das eine beispielhafte Hardwarelogikschaltungsanordnung, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren der Modelltrainingsschaltungsanordnung 1804 aus 18 darstellt, ist in 19 gezeigt. Ein Flussdiagramm, das eine beispielhafte Hardwarelogikschaltungsanordnung, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren der Modellverwaltungsschaltungsanordnung 1814 aus 18 darstellt, ist in 20 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch eine Prozessorschaltung sein, wie etwa die Prozessorschaltung 2112, die in der nachstehend in Verbindung mit 21 besprochenen beispielhaften Prozessorplattform 2100 gezeigt ist, und/oder die nachstehend in Verbindung mit 48 und/oder 49 besprochenen beispielhafte Prozessorschaltung. Das Programm kann in Software umgesetzt sein, die auf einem oder mehreren nicht-transienten computerlesbaren Speicherungsmedien gespeichert ist, wie etwa einer Compact Disk (CD), einer Diskette, einem Festplattenlaufwerk (HDD), einem Solid-State-Laufwerk (SSD), einer Digital Versatile Disk (DVD), einer Blu-Ray-Disk, einem flüchtigen Speicher (z.B. Direktzugriffsspeicher (RAM) eines beliebigen Typs usw.) oder einem nichtflüchtigen Speicher (z.B. elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), Flash-Speicher, ein HDD, ein SSD usw.), der einer Prozessorschaltung zugeordnet ist, die sich in einer oder mehreren Hardwarevorrichtungen befindet, jedoch könnten das gesamte Programm und/oder Teile davon alternativ durch eine oder mehrere andere Hardwarevorrichtungen als die Prozessorschaltung ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt sein. Die maschinenlesbaren Anweisungen können über mehrere Hardware-Vorrichtungen verteilt und/oder durch zwei oder mehr Hardware-Vorrichtungen (z.B. eine Server- und eine Client-Hardware-Vorrichtung) ausgeführt werden. Die Client-Hardwarevorrichtung kann zum Beispiel durch eine Endpunkt-Client-Hardwarevorrichtung (z.B. eine Hardwarevorrichtung, die einem Benutzer zugeordnet ist) oder eine Zwischen-Client-Hardwarevorrichtung (z.B. ein Funkzugangsnetz- (RAN-) Gateway, das Kommunikation zwischen einem Server und einer Endpunkt-Client-Hardwarevorrichtung ermöglichen kann) implementiert werden. Gleichermaßen können die nicht-transienten computerlesbaren Speicherungsmedien ein oder mehrere Medien beinhalten, die sich in einer oder mehreren Hardware-Vorrichtungen befinden. Wenngleich das beispielhafte Programm unter Bezugnahme auf das in 19 und/oder 20 veranschaulichte Flussdiagramm beschrieben ist, können alternativ viele andere Verfahren zum Implementieren der beispielhaften Modelltrainingsschaltungsanordnung 1804 und/oder der beispielhaften Modellverwaltungsschaltungsanordnung 1814 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können beliebige oder alle der Blöcke durch eine oder mehrere Hardware-Schaltungen (z.B. Prozessorschaltung, diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführen von Software oder Firmware durchzuführen. Die Prozessorschaltung kann an unterschiedlichen Netzwerkstandorten verteilt und/oder lokal zu einer oder mehreren Hardwarevorrichtungen sein (z.B. ein Einzelkernprozessor (z.B. eine Einzelkern-Zentralprozessoreinheit (CPU)), ein Mehrkernprozessor (z.B. eine Mehrkern-CPU) usw.) in einer einzigen Maschine, mehrere Prozessoren, die über mehrere Server eines Server-Racks verteilt sind, mehrere Prozessoren, die über ein oder mehrere Server-Racks verteilt sind, eine CPU und/oder ein FPGA, die sich in demselben Package (z.B. demselben IC- (integrierte Schaltung) Package oder in zwei oder mehr separaten Gehäusen usw. befinden).
  • Die vorliegend beschriebenen maschinenlesbaren Anweisungen können in einem komprimierten Format und/oder einem verschlüsselten Format und/oder einem fragmentierten Format und/oder einem kompilierten Format und/oder einem ausführbaren Format und/oder einem verpackten Format usw. gespeichert sein. Die vorliegend beschriebenen maschinenlesbaren Anweisungen können als Daten oder Datenstruktur (z.B. Abschnitte von Anweisungen, Code, Darstellungen von Code usw.) gespeichert sein, die eingesetzt werden können, um maschinenlesbare Anweisungen zu erstellen, herzustellen und/oder zu erzeugen. Zum Beispiel können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speicherungsvorrichtungen und/oder Rechenvorrichtungen (z.B. Servern) gespeichert sein, die sich an denselben oder unterschiedlichen Orten eines Netzwerks oder einer Sammlung von Netzwerken (z.B. in der Cloud, in Edge-Vorrichtungen usw.) befinden. Die maschinenlesbaren Anweisungen können eines oder mehrere von Installation, Modifikation, Anpassung, Aktualisierung, Kombination, Ergänzung, Konfiguration, Entschlüsselung, Dekomprimierung, Entpacken, Verteilung, Neuzuweisung, Kompilierung usw. erfordern, um sie durch eine Rechenvorrichtung und/oder eine andere Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Zum Beispiel können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert sein, die einzeln komprimiert, verschlüsselt und/oder auf separaten Rechenvorrichtungen gespeichert sind, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und/oder kombiniert werden, einen Satz maschinenausführbarer Anweisungen bilden, die eine oder mehrere Operationen implementieren, die zusammen ein Programm, wie etwa das vorliegend beschriebene, bilden können.
  • In einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert sein, in dem sie von einer Prozessorschaltung gelesen werden können, aber das Hinzufügen zu einer Bibliothek (z.B. einer Dynamic Link Library (DLL)), zu einem Softwareentwicklungskit (SDK), einer Anwendungsprogrammierungsschnittstelle (API) usw. erfordern, um die maschinenlesbaren Anweisungen auf einer speziellen Rechenvorrichtung oder einer anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen konfiguriert (z.B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.) werden, bevor die maschinenlesbaren Anweisungen und/oder das bzw. die entsprechende(n) Programm(e) gänzlich oder teilweise ausgeführt werden können. Somit können maschinenlesbare Medien, wie vorliegend verwendet, maschinenlesbare Anweisungen und/oder Programm(e) unabhängig von dem jeweiligen Format oder Zustand der maschinenlesbaren Anweisungen und/oder Programm(e) beinhalten, wenn sie gespeichert oder sich anderweitig in Ruhe oder im Durchgang befinden.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können durch eine beliebige vergangene, aktuelle oder zukünftige Anweisungssprache, Skriptsprache, Programmiersprache usw. repräsentiert sein. Beispielsweise können die maschinenlesbaren Anweisungen unter Verwendung beliebiger der folgenden Sprachen repräsentiert sein: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift usw.
  • Wie vorstehend erwähnt, können die beispielhaften Operationen aus 19 und/oder 20 unter Verwendung ausführbarer Anweisungen (z.B. computer- und/oder maschinenlesbarer Anweisungen) implementiert werden, die auf einem oder mehreren nichtflüchtigen computer- und/oder maschinenlesbaren Medien gespeichert sind, wie etwa optischen Speicherungsvorrichtungen, magnetischen Speicherungsvorrichtungen, einem HDD, einem Flash-Speicher, einem Nur-Lese-Speicher (ROM), einer CD, einer DVD, einem Cache, einem RAM eines beliebigen Typs, einem Register und/oder einer beliebigen anderen Speicherungsvorrichtung oder Speicherungsplatte, auf der Informationen für eine beliebige Dauer (z.B. für längere Zeiträume, permanent, für kurze Vorgänge, zum temporären Puffern und/oder zum Cachen der Informationen) gespeichert sind. Vorliegend sind die Bezeichnungen „nicht-transientes computerlesbares Medium“ und „nicht-transientes computerlesbares Speichermedium“ ausdrücklich so definiert, dass sie eine beliebige Art von computerlesbarer Speichervorrichtung und/oder Speicherplatte beinhalten und sich ausbreitende Signale ausschließen und Übertragungsmedien ausschließen.
  • „Beinhaltend“ und „umfassend“ (und alle Formen und Zeitformen davon) werden hier als offene Begriffe verwendet. Wenn somit ein Anspruch eine beliebige Form von „beinhalten“ oder „umfassen“ (z.B. umfasst, beinhaltet, umfassend, beinhaltend, aufweisend usw.) als eine Präambel oder innerhalb einer Anspruchsrezitation einer beliebigen Art einsetzt, versteht es sich somit, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne außerhalb des Schutzumfangs des entsprechenden Anspruchs oder der entsprechenden Rezitation zu fallen. Wenn vorliegend der Ausdruck „mindestens“ als der Übergangsausdruck in zum Beispiel einer Präambel eines Anspruchs verwendet wird, ist er auf die gleiche Art und Weise offen, wie der Begriff „umfassend“ und „beinhaltend“ offen ist. Der Begriff „und/oder“ betrifft, wenn er zum Beispiel in einer Form wie A, B und/oder C verwendet wird, eine beliebige Kombination oder Untermenge von A, B, C wie (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C oder (7) A mit B und mit C. Wie vorliegend im Zusammenhang mit der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, bezweckt der Ausdruck „mindestens eines von A und B“ auf Implementierungen zu verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Gleichermaßen soll, wie vorliegend im Kontext des Beschreibens von Strukturen, Komponenten , Elementen, Objekten und/oder Dingen verwendet, der Ausdruck „mindestens eines von A oder B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B und (3) mindestens einem A und mindestens einem B beinhalten. Wie vorliegend im Kontext der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll der Ausdruck „mindestens eines von A und B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Gleichermaßen soll, wie vorliegend im Zusammenhang mit der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, der Ausdruck „mindestens eines von A oder B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten.
  • Wie hier verwendet schließen Singularreferenzen (z. B. „ein“, „eine“, „eines“, „erstes“, „zweites“ usw.) einen Plural nicht aus. Der Begriff „ein“ Objekt, wie vorliegend verwendet, verweist auf eines oder mehrere dieses Objekts. Die Begriffe „ein“, „ein oder mehrere“ und „mindestens ein“ werden vorliegend austauschbar verwendet. Wenngleich einzeln aufgelistet, können ferner eine Vielzahl von Mitteln, Elementen oder Verfahrensaktionen durch z.B. dieselbe Entität oder dasselbe Objekt implementiert werden. Auch wenn einzelne Merkmale in unterschiedlichen Beispielen oder Ansprüchen enthalten sein können, können diese zudem möglicherweise kombiniert werden und die Aufnahme in unterschiedlichen Beispielen oder Ansprüchen impliziert nicht, dass eine Kombination von Merkmalen nicht machbar und/oder vorteilhaft ist.
  • 19 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 1900 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um ähnliche und/oder unterschiedliche Merkmale in der Sammlung von Modellen, die für verschiedene Zielplattformzielsetzungen optimiert sind, zu identifizieren und zu sammeln. Die maschinenlesbaren Anweisungen und/oder die Operationen 1900 aus 19 beginnen bei Block 1905, bei dem die Differenzbestimmungsschaltungsanordnung 1806 den Eingabedatensatz 1802 aus 18 zur Verarbeitung empfängt.
  • Wie in 19 veranschaulicht, empfängt die Differenzbestimmungsschaltungsanordnung 1806 bei Block 1905 einen Datensatz (z.B. den Eingabedatensatz 1802 aus 18) zur Verarbeitung. In vorliegend offenbarten Beispielen beinhaltet der Datensatz optimierte Modelle, in anderen Beispielen kann der Datensatz jedoch so konfiguriert sein, dass er Kandidatenmerkmale, Plattformmetriken usw. beinhaltet.
  • Bei Block 1910 prüft die Differenzbestimmungsschaltungsanordnung 1806, ob die Modelle, die in dem in Block 1905 empfangenen beispielhaften Datensatz (z.B. dem Eingabedatensatz 1802 aus 18) enthalten sind, für dieselbe Zielhardware optimiert sind. Bevor die Vielfalt von Modellen miteinander verglichen werden soll, soll die Differenzbestimmngsschaltungsanordnung 1806 auf Zielhardwareübereinstimmungen für die Modelle prüfen. Falls die Differenzbestimmungsschaltungsanordnung 1806 feststellt, dass die Modelle für dieselbe Zielhardware optimiert sind, geht der Prozess zu Block 1915 über. Falls die Differenzbestimmungsschaltungsanordnung 1806 jedoch ermittelt, dass die Modelle nicht alle für dieselbe Zielhardware optimiert sind, geht der Prozess zurück zum Start.
  • Bei Block 1915 identifiziert die Differenzbestimmungsschaltungsanordnung 1806 Unterschiede zwischen jedem der Modelle, die zur Verarbeitung in Block 1905 empfangen wurden. In vorliegend offenbarten Beispielen beinhaltet der beispielhafte Datensatz, der zur Verarbeitung in Block 1905 empfangen wird, eine Vielzahl von Modellen, wobei jedes Modell für eine andere Zielsetzung auf derselben Zielhardwareplattform optimiert ist. Entsprechend identifiziert die Differenzbestimmungsschaltungsanordnung 1806 Merkmalsunterschiede zwischen jedem der Modelle durch Vergleichen von Listen von Merkmalen, die in jedem der Modelle vorhanden sind, und Auswählen jener, die nicht in allen Modellen vorhanden sind. Zum Beispiel werden bestimmte Merkmale, die für ein Modell mit einer ausgewählten Genauigkeitszielsetzung vorhanden sind, aber für ein Modell mit einer ausgewählten Performanzzielsetzung nicht vorhanden sind, durch die Differenzbestimmungsschaltungsanordnung 1806 identifiziert.
  • Bei Block 1920 führt die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 einen ähnlichen Prozess wie die beispielhafte Differenzbestimmungsschaltungsanordnung 1806 durch, jedoch werden Merkmalsähnlichkeiten zwischen jedem der Modelle identifiziert. Zum Beispiel werden bestimmte Merkmale, die für ein Modell mit einer ausgewählten Genauigkeitszielsetzung vorhanden sind und auch für ein Modell mit einer ausgewählten Performanzzielsetzung vorhanden sind, durch die Ähnlichkeitsbestimmungsschaltungsanordnung 1808 identifiziert.
  • Bei Block 1925 aggregiert die beispielhafte Merkmalsammelschaltungsanordnung 1810 die Merkmale, die durch die beispielhafte Differenzbestimmungsschaltungsanordnung 1806 und die beispielhafte Ähnlichkeitsbestimmungsschaltungsanordnung 1808 identifiziert wurden, zu einem einzigen Satz. In vorliegend offenbarten Beispielen kann die Merkmalsammelschaltungsanordnung 1810 den aggregierten Merkmalssatz ausgeben.
  • 20 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 2000 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um ein optimiertes Modell zur Verwendung basierend auf einem aktuellen Zustand und/oder Modellnutzungsmetriken der Zielhardwareplattform dynamisch auszuwählen und/oder anzupassen. Die maschinenlesbaren Anweisungen und/oder die Operationen 2000 aus 20 beginnen bei Block 2002, bei dem die Dienstgüte- (QoS-) Sampler-Schaltungsanordnung 1816 den aktuellen Zustand der Hardwareplattform abtastet.
  • Wie in 20 veranschaulicht, tastet die QoS-Sampler-Schaltungsanordnung 1816 bei Block 2005 den aktuellen Zustand der Hardwareplattform ab. Zum Beispiel kann die QoS-Sampler-Schaltungsanordnung 1816 ermitteln, dass die Hardwareplattform gegenwärtig auf eine Anfrage mit hoher Priorität von einer Anwendung reagiert.
  • Bei Block 2010 wählt die QoS-Auswahlschaltungsanordnung 1818 eine zu priorisierende Dienstgüte- (QoS-) Zielsetzung (z.B. Kosten, Genauigkeit, Performanz usw.) basierend auf dem aktuellen Zustand der Hardwareplattform (z.B. gegenwärtig auf eine Anfrage mit hoher Priorität von einer Anwendung reagierend) aus, der in Block 2005 durch die QoS-Sampler-Schaltungsanordnung 1816 ermittelt wurde. Zum Beispiel kann die QoS-Auswahlschaltungsanordnung 1818 Genauigkeit als die QoS-Zielsetzung der höchsten Priorität auswählen, falls die QoS-Sampler-Schaltungsanordnung 1816 feststellt, dass die Hardwareplattform gegenwärtig auf eine Anfrage mit hoher Priorität von einer Anwendung reagiert.
  • Bei Block 2015 sortiert die QoS-Auswahlschaltungsanordnung 1818 die Sammlung von Modellen, die jeweils für eine andere QoS-Zielsetzung optimiert sind, basierend auf der in Block 2010 ausgewählten QoS-Prioritätszielsetzung. In vorliegend offenbarten Beispielen kann die QoS-Auswahlschaltungsanordnung 1818 die Sammlung von Modellen in absteigender Reihenfolge basierend auf der Fähigkeit sortieren, die ausgewählte QoS-Zielsetzung zur Priorisierung zu maximieren.
  • Bei Block 2020 prüft die QoS-Auswahlschaltungsanordnung 1818, ob die Liste sortierter Modelle (z.B. basierend auf der Fähigkeit sortiert, die ausgewählte QoS-Zielsetzung zur Priorisierung zu maximieren) leer ist. Falls die QoS-Auswahlschaltungsanordnung 1818 ermittelt, dass die Liste leer ist, geht der Prozess zu Block 2005 zurück. Falls die QoS-Auswahlschaltungsanordnung 1818 jedoch ermittelt, dass die Liste nicht leer ist, geht der Prozess zu Block 2025 über.
  • Bei Block 2025 wählt die Modellplanungschaltungsanordnung 1820 das Modell, das die Anforderungen der ausgewählten QoS-Zielsetzung zur Priorisierung erfüllen wird, zur Verwendung durch die Zielhardwareplattform aus. Da die Liste optimierter Modelle in vorliegend offenbarten Beispielen basierend auf der Fähigkeit, die ausgewählte QoS-Prioritätszielsetzung zu erfüllen, in absteigender Reihenfolge sortiert wird, wird das erste Modell in der Liste zur Verwendung ausgewählt.
  • Bei Block 2030 ermittelt die Modellplanungsschaltungsanordnung 1820, ob das ausgewählte Modell niedrige Nutzungsmetriken auf der Zielhardwareplattform ergibt. Falls die Modellplanungsschaltungsanordnung 1820 ermittelt, dass das Modell tatsächlich niedrige Nutzungsmetriken aufweist, geht der Prozess zu Block 2035 über. Falls die Modellplanungsschaltungsanordnung 1820 jedoch ermittelt, dass das ausgewählte Modell keine niedrigen Nutzungsmetriken auf der Zielplattform ergibt, wird der Prozess beendet.
  • Bei Block 2035 entfernt die Modellplanungsschaltungsanordnung 1820 nach dem Ermitteln, dass das ausgewählte Modell niedrige Nutzungsmetriken auf der Zielhardwareplattform ergibt, das aktuell verwendete Modell aus der Liste sortierter Modelle. Anschließend geht der Prozess zu Block 2020 zurück, bei dem die QoS-Auswahlschaltungsanordnung 1818 prüft, ob die Liste sortierter Modelle leer ist.
  • 21 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 2100, die zum Ausführen und/oder Instanziieren der maschinenlesbaren Anweisungen und/oder der Operationen aus 19 und 20 strukturiert ist, um die Modelltrainingsschaltungsanordnung 1804, die Modellverwaltungsschaltungsanordnung 1814 und/oder allgemeiner das Deep-Learning- (DL-) Modellverwaltungssystem 1800 aus 18 zu implementieren. Die Prozessorplattform 2100 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z.B. ein neuronales Netzwerk), eine Mobilvorrichtung (z.B. ein Mobiltelefon, ein Smartphone, ein Tablet wie etwa ein iPad™), ein Personal Digital Assistant (PDA), ein Internetgerät, ein DVD-Spieler, ein CD-Spieler, ein digitalen Videorecorder, ein Blu-Ray-Spieler, eine Spielekonsole, ein persönlicher Videorecorder, eine Set-Top-Box, ein Headset (z.B. ein Augmented-Reality- (AR-) Headset, ein Virtual-Reality- (VR-) Headset usw.) oder eine andere Wearable-Vorrichtung oder eine beliebige andere Art von Rechenvorrichtung sein.
  • Die Prozessorplattform 2100 des veranschaulichten Beispiels beinhaltet eine Prozessorschaltung 2112. Die Prozessorschaltung 2112 des veranschaulichten Beispiels ist Hardware. Zum Beispiel kann die Prozessorschaltung 2112 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, FPGAs, Mikroprozessoren, CPUs, GPUs, DSPs und/oder Mikrosteuerungen einer beliebigen gewünschten Familie oder eines beliebigen gewünschten Herstellers implementiert werden. Die Prozessorschaltung 2112 kann durch eine oder mehrere halbleiterbasierte (z.B. siliciumbasierte) Vorrichtungen implementiert werden. In diesem Beispiel implementiert die Prozessorschaltung 2112 die beispielhafte Modelltrainingsschaltungsanordnung 1804 einschließlich der beispielhaften Differenzbestimmungsschaltungsanordnung 1806, der beispielhaften Ähnlichkeitsbestimmungsschaltungsanordnung 1808, und der beispielhaften Merkmalsammelschaltungsanordnung 1810, sowie die beispielhafte Modellverwaltungsschaltungsanordnung 1814 einschließlich der beispielhaften Dienstgüte-(QoS-) Sampler-Schaltungsanordnung 1816, der beispielhaften QoS-Auswahlschaltungsanordnung 1818 und der beispielhaften Modellplanungsschaltungsanordnung.
  • Die Prozessorschaltung 2112 des veranschaulichten Beispiels beinhaltet einen lokalen Speicher 2113 (z.B. einen Cache, Register usw.). Die Prozessorschaltung 2112 des veranschaulichten Beispiels steht durch einen Bus 2118 in Kommunikation mit einem Hauptspeicher, der einen flüchtigen Speicher 2114 und einen nichtflüchtigen Speicher 2116 beinhaltet. Der flüchtige Speicher 2114 kann durch SDRAM (Synchronous Dynamic Random Access Memory), DRAM (Dynamic Random Access Memory), RDRAMO (RAMBUSO Dynamic Random Access Memory) und/oder eine beliebige andere Art von RAM-Vorrichtung implementiert werden. Der nichtflüchtige Speicher 2116 kann durch Flash-Speicher und/oder eine beliebige andere gewünschte Art von Speichervorrichtung implementiert werden. Der Zugriff auf den Hauptspeicher 2114, 2116 des veranschaulichten Beispiels wird durch eine Speichersteuerung 2117 gesteuert.
  • Die Prozessorplattform 2100 des veranschaulichten Beispiels beinhaltet zudem eine Schnittstellenschaltung 2120. Die Schnittstellenschaltung 2120 kann durch Hardware gemäß einer beliebigen Art von Schnittstellenstandard implementiert werden, wie etwa einer Ethernet-Schnittstelle, einer Universal-Serial-Bus- bzw. USB- Schnittstelle, einer Bluetooth®-Schnittstelle, einer Nahfeldkommunikations- bzw. NFC-Schnittstelle, einer PCI-(Peripheral Component Interconnect) Schnittstelle und/oder einer PCIe- (Peripheral Component Interconnect Express) Schnittstelle.
  • In dem veranschaulichten Beispiel sind eine oder mehrere Eingabevorrichtungen 2122 mit der Schnittstellenschaltung 2120 verbunden. Die Eingabevorrichtung(en) 2122 ermöglicht (ermöglichen) einem Benutzer, Daten und/oder Befehle in die Prozessorschaltung 2112 einzugeben. Die eine oder die mehreren Eingabevorrichtungen 2122 können zum Beispiel durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert werden.
  • Eine oder mehrere Ausgabevorrichtungen 2124 sind ebenfalls mit der Schnittstellenschaltung 2120 des veranschaulichten Beispiels verbunden. Die Ausgabevorrichtung(en) 2124 können zum Beispiel durch Anzeigevorrichtungen (z. B., eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhre (CRT-Anzeige), eine In-Place-Switching-Anzeige (IPS-Anzeige), einen Touchscreen usw.), eine taktile Ausgabevorrichtung, einen Drucker und/oder Lautsprecher implementiert werden. Die Schnittstellenschaltung 2120 des veranschaulichten Beispiels beinhaltet somit typischerweise eine Grafiktreiber-Karte, einen Grafiktreiber-Chip und/oder eine Grafikprozessor-Schaltungsanordnung, wie etwa eine GPU.
  • Die Schnittstellenschaltung 2120 des veranschaulichten Beispiels beinhaltet zudem eine Kommunikationsvorrichtung, wie etwa einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein Heim-Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerkschnittstelle, um den Austausch von Daten mit externen Maschinen (z.B. Rechenvorrichtungen einer beliebigen Art) durch ein Netzwerk 2126 zu ermöglichen. Die Kommunikation kann zum Beispiel durch eine Ethernet-Verbindung, eine DSL- (digital subscriber line) Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Sichtliniensystem, ein Mobilfunksystem, eine optische Verbindung usw. erfolgen.
  • Die Prozessorplattform 2100 des veranschaulichten Beispiels beinhaltet zudem eine oder mehrere Massenspeicherungsvorrichtungen 2128 zum Speichern von Software und/oder Daten. Beispiele für solche Massenspeichervorrichtungen 2128 beinhalten magnetische Speichervorrichtungen, optische Speichervorrichtungen, Diskettenlaufwerke, HDDs, CDs, Blu-Ray-Disk-Laufwerke, RAID- (Redundant Array of Independent Disks) Systeme, Festkörper- (Solid-State-) Speichervorrichtungen wie etwa Flash-Speichervorrichtungen und/oder SSDs, und DVD-Laufwerke.
  • Die maschinenausführbaren Anweisungen 2132, die durch die maschinenlesbaren Anweisungen aus 19 und 20 implementiert werden, können in der Massenspeichervorrichtung 2128, in dem flüchtigen Speicher 2114, in dem nicht-flüchtigen Speicher 2116 und/oder auf einem entfernbaren nicht-transienten computerlesbaren Speichermedium, wie etwa einer CD oder DVD, gespeichert sein.
  • Aus dem Vorstehenden versteht es sich, dass beispielhafte Systeme, Verfahren, Einrichtungen und Herstellungsartikel zur dynamischen XPU-hardwareorientierten Deep-Learning- (DL-) Modellverwaltung offenbart wurden. Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel verbessern die Effizienz der Verwendung einer Rechenvorrichtung, indem sie die schnelle Entdeckung neuer Hardwaremerkmale ermöglichen, was die Markteinführung für neue Produkte mit künstlicher Intelligenz (KI) und/oder Merkmale beschleunigt und Performanzverbesserungsmaßnahmen für Rechenvorrichtungen durch Anwendung der neu entdeckten Merkmale verbessert. Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel betreffen dementsprechend eine oder mehrere Verbesserungen des Betriebs einer Maschine wie etwa eines Computers oder einer anderen elektronischen und/oder mechanischen Vorrichtung.
  • VERFAHREN UND EINRICHTUNGEN ZUR DATENVERBESSERTEN AUTOMATISIERTEN MODELLERZEUGUNG
  • Maschinelles Lernen ist eine Schlüsseltechnologie für die gegenwärtig auf dem Gebiet der künstlichen Intelligenz stattfindende Revolution, die durchaus bemerkenswerte Fortschritte auf Gebieten wie etwa Objekterkennung, Bildklassifikation, Spracherkennung, Verarbeitung natürlicher Sprache und vielem mehr vorantreibt. Modelle werden unter Verwendung von maschinellem Lernen erzeugt, die, wenn sie genutzt werden, ermöglichen, dass eine Ausgabe basierend auf einer Eingabe erzeugt wird. Neuronalarchitektursuche ermöglicht, dass verschiedene Architekturen durchsucht werden, wenn ein Maschinenlernmodell angelegt wird.
  • Neuronalarchitektursuche (NAS) ist ein Ansatz zum Erforschen unterschiedlicher Maschinenlernalgorithmen zum Lösen von Maschinenlernaufgaben. NAS-Algorithmen benötigen eine signifikante Menge an Ressourcen (z.B. Rechenressourcen, zeitliche Ressourcen, Energieressourcen usw.), um akzeptable Architekturen zu identifizieren. Die meisten dieser Ressourcen werden beansprucht, indem nicht optimale Architekturkonfigurationen während einer Erkundungsphase untersucht werden. Existierende NAS-Algorithmen liefern keine klaren Erklärungen der Entscheidungen zum Auswählen einer speziellen Architektur und solche Algorithmen profitieren nicht von gesammelten Daten bezüglich früherer Erkenntnisse (z.B. Abfolge von Operationen, FLOPs usw.) oder Zielhardwarefähigkeiten. Diese Informationen werden typischerweise verworfen und sind zukünftigen Anwendungen des NAS-Algorithmus nicht von Nutzen.
  • Aufgrund der Komplexität der Aufgabe neigen NAS-Lösungen dazu, jegliche Einsichten von einem Durchlauf zum nächsten zu vergessen. Die Anfangsbedingungen/-konfigurationen bei vorherigen Lösungen sind unabhängig von jeglichen anderen zuvor verwendeten Konfigurationen.
  • Existierende NAS-Ansätze verwenden vorherige Ausführungsdaten bezüglich Modellen, die über NAS identifiziert werden, nicht wieder. Das heißt, existierende Ansätze profitieren nicht von gesammeltem Wissen über die Aufgabe, die das Modell durchführen wird (z.B. Erkennung, Segmentierung usw.). Wenn NAS durchgeführt wird, beginnen existierende Ansätze jedes Mal ganz von vorne, wenn nach besseren Modellen gesucht wird. Viele existierende NAS-Ansätze erfordern zudem eine signifikante Neukonfigurierung, wenn zu anderen Aufgaben übergegangen wird, und solche Ansätze verallgemeinern den Suchprozess der Neuronalnetzarchitektur nicht.
  • Vorliegend offenbarte beispielhafte Ansätze analysieren aktuelle und aufkommende Arbeitslasten und sammeln historische Informationen über die Modelle einschließlich Performanz, Abfolge von Operationen, Größe, Gleitkommaoperationen pro Sekunde (FLOPS) usw. für jede Operation.
  • In vorliegend offenbarten Beispielen stellt ein Benutzer eine Aufgabe (Objekterkennung, Segmentierung usw.) und eine Zielsetzung (Genauigkeit, Latenz, Mischung usw.) bereit, und das NAS-System wählt Start-Hyperparameter-/Konfigurationsinformationen aus, die die beste Konfiguration für die Aufgabe, die Zielsetzung und in einigen Beispielen die Zielhardware, auf der das Modell auszuführen ist, beinhalten.
  • Gesammelte Ausführungs- und/oder Performanzinformationen liefern Einsichten und leiten die anfänglichen Bedingungen bei der Suche nach einer Architektur, die die Anforderungen erfüllt. Das System sammelt zudem Zielhardwareinformationen, wodurch das System hardwareorientiert ausgerichtet wird und dem System ermöglicht wird, sich für die spezifische(n) Zielhardware(s) zu verfeinern. Zum Beispiel kann das System erweiterte 7x7-Faltungskerne vermeiden, falls der Kernel nicht gut arbeitet (z.B. Latenz auf der ausgewählten Zielhardware überschreitet einen Schwellenlatenzbetrag).
  • Vorliegend offenbarte beispielhafte Ansätze stellen dem Benutzer das erzeugte Modell und die Inferenzfindung hinter den Auswahlen bereit, die beim Auswählen von Operationen getroffen werden. Die Entscheidungen basieren auf den gesammelten historischen Daten und dem Aufgabenwissen, das von dem Wissensaufbauer (knowledge builder, KB) erhalten wird. Das Bereitstellen der Inferenzfindung für Entscheidungen kann zu Einsichten für zukünftige HW-Verbesserungen führen (z.B. Optimieren spezifischer Kernels, der Speicherbandbreite usw.)
  • 22 ist ein Blockdiagramm eines gemäß den Lehren dieser Offenbarung implementierten beispielhaften Systems zur datenverbesserten automatisierten Modellerzeugung. Das beispielhafte System 2200 aus 22 beinhaltet eine Wissensaufbauschaltungsanordnung 2205, die eine Benutzereingabe 2210 empfängt, und eine Modellaufbauschaltungsanordnung 2215, die ein Modell aufbaut und an die Zielhardware 2220 liefert.
  • Das beispielhafte System aus 22 präsentiert eine Ende-zu-Ende-Lösung, die Informationen vom Benutzer (Zielsetzung, Aufgabe, Ziel-HW) empfängt, diese Informationen unter Verwendung einer Wissensbasis analysiert und Vorschläge für den Suchraum und die anfängliche Konfiguration für den NAS-Ansatz erstellt. Der Ansatz ist agnostisch gegenüber dem zu verwendenden NAS-Ansatz, wodurch ermöglicht wird, dass ein Benutzer über den Ansatz gemäß Stand der Technik entscheidet, der die vorgeschlagene Konfiguration empfangen wird.
  • Die beispielhafte Benutzereingabe 2210 beinhaltet Informationen, die zum Beispiel eine Zielsetzung eines Maschinenlernmodells, eine durch das Maschinenlernmodell durchzuführende Aufgabe und wahlweise eine oder mehrere Eigenschaften einer Zielhardware, auf der das Maschinenlernmodell auszuführen ist, beinhalten. Die Aufgabe (Objekterkennung, Segmentierung usw.) wird Eingabeschichtanforderungen, Ausgabeschichtanforderungen und Datenanforderungen beinhalten. Das System aus 22 ist flexibel genug, dass der Benutzer Informationen bereitstellen kann, die verwendet werden, um die Modellerzeugung zu beeinflussen (z.B. durch Spezifizieren, ob die aktuelle Aufgabe einer anderen Aufgabe ähnlich ist, und/oder durch Spezifizieren zusätzlicher Schichten (noch nicht in der Wissensbasis oder mit einer anderen Aufgabe assoziiert), die in den Suchraum aufzunehmen sind).
  • Die Wissensaufbauschaltungsanordnung 2205 aus 22 kann durch eine Prozessorschaltung, wie etwa eine Zentralverarbeitungseinheit, die Anweisungen ausführt, instanziiert werden (z.B. Erzeugen einer Instanz, Realisieren für eine beliebige Zeitdauer, Verwirklichen, Implementieren usw.). Zusätzlich oder alternativ kann die Wissensaufbauschaltungsanordnung 2205 aus 22 durch eine ASIC oder ein FPGA, die zum Durchführen von Operationen entsprechend den Anweisungen strukturiert ist, instanziiert werden (z.B. Erzeugen einer Instanz, Realisieren für eine beliebige Zeitdauer, Verwirklichen, Implementieren usw.) werden. Es versteht sich, dass einige oder alle der Schaltungen aus 22 dementsprechend zu gleichen oder unterschiedlichen Zeiten (und/oder durch unterschiedliche Hardwareschaltungen) instanziiert werden können. Einige oder alle der Schaltungen können zum Beispiel in einem oder mehreren Threads instanziiert sein, die gleichzeitig auf Hardware und/oder nacheinander auf Hardware ausgeführt werden. Darüber hinaus können in einigen Beispielen einige oder alle der Schaltungen aus 22 durch eine oder mehrere virtuelle Maschinen und/oder Container implementiert werden, die auf dem Mikroprozessor ausgeführt werden.
  • Die beispielhafte Wissensaufbauschaltungsanordnung 2205 des veranschaulichten Beispiels aus 22 beinhaltet eine Anfragezugriffsschaltungsanordnung 2230, eine Hardwaredatenorchestrierungsschaltungsanordnung 2235, eine Aufgabendatenorchestrierungsschaltungsanordnung 2240 und einen Wissensdatenspeicher 2245. Die beispielhafte Wissensaufbauschaltungsanordnung 2205 archiviert Informationen für Modelle und Hardware im Wissensdatenspeicher 2245. Falls die Hardware im Wissensdatenspeicher 2245 nicht bekannt ist, ist der Benutzer in der Lage, das System zu veranlassen, auf der Zielhardware 2220 ausgeführt zu werden, um Performanzmetriken zu extrahieren. Ein Bericht solcher Performanzmetriken wird bezogen und zu dem Wissensdatenspeicher 2245 hinzugefügt, um Aufgabenwissen aufzubauen. Falls sich die Aufgabe nicht in dem Wissensdatenspeicher 2245 befindet, erzeugt die Aufgabendatenorchestrierungsschaltungsanordnung 2240 Aufgabenwissen für die neuen Aufgaben. 2 stellt den Prozess zum Erzeugen oder Aktualisieren des Wissensdatenspeichers 2245 dar.
  • In vorliegend offenbarten Beispielen kann der Wissensdatenspeicher 2245 der Wissensaufbauschaltungsanordnung 2205 mit SOTA- (state-of-the-art, Stand der Technik) oder kundenspezifischen Modellen und Hardwarekonfigurationen vorbelegt sein. Zusätzlich kann der Wissensdatenspeicher 2245 jederzeit zum Beispiel basierend auf Statistiken aktualisiert werden, die von der Zielhardware 2220 gesammelt werden. In vorliegend offenbarten Beispielen trennt der Wissensdatenspeicher 2245 die Modelle nach Aufgaben. Um das Aufgabenwissen aufzubauen, werden Modellinformationen aus dem Wissensdatenspeicher 2245 abgerufen, und die spezifische Aufgabe und Merkmale werden aus den Modellen extrahiert. In Fällen einer neuen oder angepassten Aufgabe werden ähnliche Aufgaben/Modelle basierend auf der Benutzereingabe abgerufen. Diese Merkmale beinhalten, ohne jedoch hierauf eingeschränkt zu sein, das Framework, das zum Trainieren des Modells verwendet wird, die HW-Spezifikationen und beliebige Informationen zum Abbilden eines Modells (Latenzen usw.), einschließlich HW-Telemetrie, der Performanzzielsetzun, der Abfolge von Operationen, der Anzahl von FLOPs, des verwendeten Datensatzes, der Anzahl von Schichten usw. Diese Merkmale werden dann nach Hardwaremerkmalen, Zielsetzungen usw. eingestuft. Die extrahierten und eingestuften Merkmale werden dann als Aufgabenwissen betrachtet, das dann im Wissensdatenspeicher 2245 zur zukünftigen Verwendung archiviert wird.
  • Die beispielhafte Anfragezugriffsschaltungsanordnung 2230 des veranschaulichten Beispiels aus 22 empfängt eine Anfrage zur Erzeugung eines Modells zum Durchführen einer ausgewählten Aufgabe. In vorliegend offenbarten Beispielen beinhaltet die Benutzereingabe 2210, die durch die Anfragezugriffsschaltungsanordnung 2230 empfangen wird, Informationen, die zum Beispiel eine Zielsetzung eines Maschinenlernmodell, eine durch das Maschinenlernmodell durchzuführende Aufgabe und in einigen Beispielen eine oder mehrere Eigenschaften einer Zielhardware, auf der das Maschinenlernmodell auszuführen ist, beinhalten. Die Anfrage kann zum Beispiel als eine Anfrage, die an einem Webserver empfangen wird, eine Anfrage, die in einem strukturierten Datenformat formatiert ist (z.B. einem JSON- (JavaScript Object Notation) Format, einem XML- (Extensible Markup Language) Format usw.) formatiert sein. Die beispielhafte Anfragezugriffschaltungsanordnung 2230 greift auf Hardwaredatenorchestrierungsinformationen über die Hardwaredatenorchestrierungsschaltungsanordnung 2235 und auf Aufgabendatenorchestrierungsinformationen über die Aufgabendatenorchestrierungsschaltungsanordnung 2240 zu. Die abgerufenen Informationen (falls verfügbar) und die Anfrage werden der Suchraumverwaltungsschaltungsanordnung 2260 der Modellaufbauschaltungsanordnung 2215 bereitgestellt.
  • In einigen Beispielen beinhaltet die Einrichtung Mittel zum Zugreifen auf eine Anfrage. Das Mittel zum Zugreifen kann zum Beispiel durch die Anfragezugriffsschaltungsanordnung 2230 implementiert werden. In einigen Beispielen kann die Anfragezugriffsschaltungsanordnung 2230 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2612 aus 26, instanziiert werden. Beispielsweise kann die beispielhafte Anfragezugriffsschaltungsanordnung 2230 durch die beispielhafte Universal Prozessorschaltung 4800 aus 48 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest Block 2410 aus 24 implementiert werden. In einigen Beispielen kann die beispielhafte Anfragezugriffsschaltungsanordnung 2230 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte Anfragezugriffsschaltungsanordnung 2230 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte Anfragezugriffsschaltungsanordnung 2230 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • Die beispielhafte Hardwaredatenorchestrierungsschaltungsanordnung 2235 des veranschaulichten Beispiels aus 22 ermittelt, ob irgendein Vorwissen im Wissensdatenspeicher 2245 für die ausgewählte Hardware vorhanden ist (z.B. die ausgewählte Hardware, die in einer Anfrage identifiziert wird, auf die durch die Anfragezugriffsschaltungsanordnung 2230 zugegriffen wird). Falls kein Vorwissen für die ausgewählte Hardware bekannt ist, fügt die beispielhafte Hardwaredatenorchestrierungsschaltungsanordnung 2235 dem Wissensdatenspeicher 2245 eine Identifikation der ausgewählten Hardware hinzu. Die Identifikation der Hardware ermöglicht, dass spätere Performanzmetriken, die mit der ausgewählten Hardware assoziiert sind, organisiert im Wissensdatenspeicher 2245 gespeichert werden. In einigen Beispielen kann die Identifikation der ausgewählten Hardware vor der Modellerzeugung weggelassen werden und kann stattdessen durchgeführt werden, wenn Performanzmetriken dem Wissensdatenspeicher durch die Ausführungsperformanzstatistik-Sammelschaltungsanordnung 2285 bereitgestellt werden.
  • Die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 des veranschaulichten Beispiels aus 22 ermittelt, ob irgendwelche Aufgabeninformationen für die ausgewählte Aufgabe verfügbar sind. Falls kein Vorwissen für die ausgewählte Aufgabe verfügbar ist, fügt die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 dem Wissensdatenspeicher 2245 eine Identifikation der ausgewählten Aufgabe hinzu. Die Identifikation der ausgewählten Aufgabe ermöglicht, dass spätere Performanzmetriken, die mit der ausgewählten Aufgabe assoziiert sind, organisiert im Wissensdatenspeicher 2245 gespeichert werden. In einigen Beispielen kann die Identifikation der ausgewählten Aufgabe vor der Modellerzeugung weggelassen werden und kann stattdessen durchgeführt werden, wenn Performanzmetriken dem Wissensdatenspeicher durch die Ausführungsperformanzstatistik-Sammelschaltungsanordnung 2285 bereitgestellt werden.
  • In einigen Beispielen beinhaltet die Einrichtung Mittel zum Erzeugen von Aufgabenwissen. Zum Beispiel kann das Mittel zum Erzeugen von Aufgabenwissen durch die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 implementiert werden. In einigen Beispielen kann die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2612 aus 26, instanziiert werden. Beispielsweise kann die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 durch die beispielhafte Universal Prozessorschaltung 4800 aus 48 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest die Blöcke 2420, 2435, 2425 aus 24 implementiert werden. In einigen Beispielen kann die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • Der beispielhafte Wissensdatenspeicher 2245 des veranschaulichten Beispiels aus 22 wird durch einen beliebigen Speicher, eine beliebige Speicherorrichtung und/oder eine beliebige Speicherplatte zum Speichern von Daten implementiert, wie etwa zum Beispiel Flash-Speicher, magnetische Medien, optische Medien, Festkörperspeicher, Festplatte(n), USB-Stick(s) usw. Des Weiteren können die in dem beispielhaften Wissensdatenspeicher 2245 gespeicherten Daten in einem beliebigen Datenformat vorliegen, wie etwa zum Beispiel Binärdaten, kommabegrenzte Daten, Tab-begrenzte Daten, SQL-(Structured Query Language) Strukturen usw. Wenngleich in dem veranschaulichten Beispiel der Wissensdatenspeicher 2245 als eine einzige Vorrichtung veranschaulicht ist, können der beispielhafte Wissensdatenspeicher 2245 und/oder beliebige andere vorliegend beschriebene Datenspeichervorrichtungen durch eine beliebige Anzahl und/oder Art(en) von Speichern implementiert werden. In dem veranschaulichten Beispiel aus 22 speichert der beispielhafte Wissensdatenspeicher 2245 Hardware- und/oder Aufgabenwissen.
  • Die Modellaufbauschaltungsanordnung 2215 aus 22 kann durch eine Prozessorschaltung, wie etwa eine Zentralverarbeitungseinheit, die Anweisungen ausführt, instanziiert werden (z.B. Erzeugen einer Instanz, Realisieren für eine beliebige Zeitdauer, Verwirklichen, Implementieren usw.). Zusätzlich oder alternativ kann die Modellaufbauschaltungsanordnung 2215 aus 22 durch eine ASIC oder ein FPGA, die zum Durchführen von Operationen entsprechend den Anweisungen strukturiert ist, instanziiert werden (z.B. Erzeugen einer Instanz, Realisieren für eine beliebige Zeitdauer, Verwirklichen, Implementieren usw.) werden. Wie vorstehend angemerkt, versteht es sich, dass einige oder alle der Schaltungen aus 22 dementsprechend zu gleichen oder unterschiedlichen Zeiten (und/oder durch unterschiedliche Hardwareschaltungen) instanziiert werden können. Einige oder alle der Schaltungen können zum Beispiel in einem oder mehreren Threads instanziiert sein, die gleichzeitig auf Hardware und/oder nacheinander auf Hardware ausgeführt werden. Darüber hinaus können in einigen Beispielen einige oder alle der Schaltungen aus 22 durch eine oder mehrere virtuelle Maschinen und/oder Container implementiert werden, die auf dem Mikroprozessor ausgeführt werden.
  • Die beispielhafte Modellaufbauschaltungsanordnung 2215 des veranschaulichten Beispiels aus 22 beinhaltet eine Suchraumverwaltungsschaltungsanordnung 2260, eine Ankerpunkteinfügungsschaltungsanordnung 2265, eine Neuronalarchitektursuchschaltungsanordnung 2270 und eine Modellausgabeschaltungsanordnung 2275. Die Modellaufbauschaltungsanordnung 2215 ist für das Extrahieren der Erkenntnisse im Wissensdatenspeicher und das Ausführen einer Neuronalarchitektursuche zuständig, um ein optimales Modell zu identifizieren. Zuerst erzeugt die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260 einen Suchraum. Dieser Suchraum beinhaltet die Operationen, die durch das Aufgabenwissen aus dem Wissensdatenspeicher bereitgestellt werden, Varianten dieser Operationen und zusätzliche Schichten, falls der Benutzer diese spezifiziert. Die Neuronalarchitektursuchschaltungsanordnung 2270 führt eine Suche durch, die mit der durch die Suchraumverwaltungsschaltungsanordnung 2260 identifizierten Konfiguration für die Zielsetzung, die Aufgabe, die HW usw. initiiert wird. Ankerpunkte werden durch die Ankerpunkteinfügungsschaltungsanordnung 2265 in den ausgewählten NAS-Algorithmus eingefügt, um die während dieses Prozesses getroffenen Entscheidungen zu erfassen. Das Aufgabenwissen wird in die Trainingsschleife der Neuronalarchitektursuchschaltungsanordnung 2270 integriert, um über Entscheidungen zu informieren und die Suche zu führen. Während des Trainings werden historische Entscheidungen, Konfidenzniveaus und die wissensdatenspeicherbasierten Empfehlungen, die aus dem Aufgabenwissen bezogen werden, verwendet, um die Neuronalarchitektursuche zu führen.
  • In einigen Beispielen beinhaltet die Einrichtung Mittel zum Erzeugen eines Suchraums. Zum Beispiel kann das Mittel zum Erzeugen durch die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260 implementiert werden. In einigen Beispielen kann die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2612 aus 26, instanziiert werden. Beispielsweise kann die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260 durch die beispielhafte Universal Prozessorschaltung 2600 aus 26 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest die Blöcke 2427, 2440 aus 24 implementiert werden. In einigen Beispielen kann die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • In einigen Beispielen beinhaltet die Einrichtung Mittel zum Erzeugen eines Maschinenlernmodells. Zum Beispiel kann das Mittel zum Erzeugen durch die beispielhafte Neuronalarchitektursuchschaltungsanordnung 2270 implementiert werden. In einigen Beispielen kann die beispielhafte Neuronalarchitektursuchschaltungsanordnung 2270 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2612 aus 26, instanziiert werden. Beispielsweise kann die beispielhafte Neuronalarchitektursuchschaltungsanordnung 2270 durch die beispielhafte Universal Prozessorschaltung 4800 aus 48 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest die Blöcke 2430, 2450 aus 24 implementiert werden. In einigen Beispielen kann die beispielhafte Neuronalarchitektursuchschaltungsanordnung 2270 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte Neuronalarchitektursuchschaltungsanordnung 2270 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte Neuronalarchitektursuchschaltungsanordnung 2270 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • In einigen Beispielen beinhaltet die Einrichtung Mittel zum Einfügen. Zum Beispiel kann das Mittel zum Einfügen durch die beispielhafte Ankerpunkteinfügungsschaltungsanordnung 2265 implementiert werden. In einigen Beispielen kann die beispielhafte Ankerpunkteinfügungsschaltungsanordnung 2265 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 2612 aus 26, instanziiert werden. Beispielsweise kann die beispielhafte Ankerpunkteinfügungsschaltungsanordnung 2265 durch die beispielhafte Universal Prozessorschaltung 4800 aus 48 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest Block 2460 aus 24 implementiert werden. In einigen Beispielen kann die beispielhafte Ankerpunkteinfügungsschaltungsanordnung 2265 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die beispielhafte Ankerpunkteinfügungsschaltungsanordnung 2265 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die beispielhafte Ankerpunkteinfügungsschaltungsanordnung 2265 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • Nach der Erzeugung des Modells stellt die beispielhafte Modellausgabeschaltungsanordnung 2275 ein Modell zur Ausführung bereit. In einigen Beispielen werden die Entscheidungen und/oder Begründungen, die während der Neuronalarchitektursuche ausgewählt werden, in Verbindung mit dem erzeugten Modell verfügbar gemacht.
  • Die Zielhardware 2220 aus 22 kann durch eine Prozessorschaltung, wie etwa eine Zentralverarbeitungseinheit, die Anweisungen ausführt, instanziiert werden (z.B. Erzeugen einer Instanz, Realisieren für eine beliebige Zeitdauer, Verwirklichen, Implementieren usw.). Zusätzlich oder alternativ kann die Zielhardware 2220 aus 22 durch eine ASIC oder ein FPGA, die zum Durchführen von Operationen entsprechend den Anweisungen strukturiert ist, instanziiert werden (z.B. Erzeugen einer Instanz, Realisieren für eine beliebige Zeitdauer, Verwirklichen, Implementieren usw.) werden. Wie vorstehend angemerkt, versteht es sich, dass einige oder alle der Schaltungen aus 22 dementsprechend zu gleichen oder unterschiedlichen Zeiten (und/oder durch unterschiedliche Hardwareschaltungen) instanziiert werden können. Einige oder alle der Schaltungen können zum Beispiel in einem oder mehreren Threads instanziiert sein, die gleichzeitig auf Hardware und/oder nacheinander auf Hardware ausgeführt werden. Darüber hinaus können in einigen Beispielen einige oder alle der Schaltungen aus 22 durch eine oder mehrere virtuelle Maschinen und/oder Container implementiert werden, die auf dem Mikroprozessor ausgeführt werden.
  • Die beispielhafte Zielhardware 2220 des veranschaulichten Beispiels aus 22 beinhaltet eine Modellausführungsschaltungsanordnung 2280 und eine Ausführungsperformanzstatistik-Sammelschaltungsanordnung 2285. Die beispielhafte Modellausführungsschaltungsanordnung 2280 des veranschaulichten Beispiels aus 22 führt das Modell aus, das durch die Modellausgabeschaltungsanordnung 2275 bereitgestellt wird.
  • Die beispielhafte Ausführungsperformanzstatistik-Sammelschaltungsanordnung 2285 des veranschaulichten Beispiels aus 22 sammelt während der Ausführung des Modells durch die Modellausführungsschaltungsanordnung 2280 Modellausführungsstatistiken unter Verwendung der eingefügten Ankerpunkte. Die gesammelten Ausführungsstatistiken werden dem Wissensdatenspeicher 2245 bereitgestellt. In vorliegend offenbarten Beispielen beinhalten die gesammelten Ausführungsstatistiken Informationen über die Ankerpunkte. Das Aufnehmen von Informationen über die Ankerpunkte ermöglicht, dass Statistiken, die für bestimmte Merkmale spezifisch sind, beim Erzeugen von Aufgabenwissen genutzt werden.
  • 23 ist ein Blockdiagramm eines beispielhaften Prozessflusses, der das beispielhafte System aus 22 nutzt. Der beispielhafte Prozess beginnt, wenn ein Benutzer eine Anfrage zur Erzeugung eines Modells zum Durchführen einer ausgewählten Aufgabe übermittelt. (Blöcke 2310). Das angeforderte Modell wird unter Verwendung einer Neuronalarchitektursuche und Vorwissen über Modelle, die mit der ausgewählten Aufgabe assoziiert sind, erzeugt. (Block 2320). Die erzeugten Modelle werden der Zielhardware zur Ausführung und Sammlung von Performanzstatistiken bereitgestellt. (Blöcke 2330). Ausführungsmerkmale werden aus den Modellen extrahiert. (Block 2340). Die extrahierten Merkmale werden basierend auf gesammelten Performanzmetriken eingestuft. (Block 2350). Die extrahierten Merkmale und ihre zugehörigen Performanzmetriken werden dem Wissensdatenspeicher 2245 hinzugefügt. (Block 2360). Dieses hinzugefügte Wissen kann dann anschließend zur zukünftigen Erzeugung von Modellen verwendet werden. (Block 2320).
  • Obwohl eine beispielhafte Weise des Implementierens der beispielhaften Wissensaufbauschaltungsanordnung 2205 und/oder der beispielhaften Modellaufbauschaltungsanordnung 2215 in 22 veranschaulicht ist, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in 22 veranschaulicht sind, kombiniert, geteilt, umgeordnet, weggelassen, eliminiert und/oder auf eine beliebige andere Weise implementiert werden. Ferner können die beispielhafte Anfragezugriffsschaltungsanordnung 2230, die beispielhafte Hardwaredatenorchestrierungsschaltungsanordnung 2235, die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 und/oder allgemeiner die beispielhafte Wissensaufbauschaltungsanordnung 2205 aus 22 und/oder die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260, die beispielhafte Ankerpunkteinfügungsschaltungsanordnung 2265, die beispielhafte Neuronalarchitektursuchschaltungsanordnung 2270, die beispielhafte Modellausgabeschaltungsanordnung 2275 und/oder allgemeiner die beispielhafte Modellaufbauschaltungsanordnung 2215 aus 22 durch Hardware allein oder durch Hardware in Kombination mit Software und/oder Firmware implementiert werden. Dementsprechend können zum Beispiel beliebige der beispielhaften Anfragezugriffsschaltungsanordnung 2230, der beispielhaften Hardwaredatenorchestrierungsschaltungsanordnung 2235, der beispielhaften Aufgabendatenorchestrierungsschaltungsanordnung 2240 und/oder allgemeiner der beispielhaften Wissensaufbauschaltungsanordnung 2205 aus 22 und/oder die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260, die beispielhafte Ankerpunkteinfügungsschaltungsanordnung 2265, die beispielhafte Neuronalarchitektursuchschaltungsanordnung 2270, die beispielhafte Modellausgabeschaltungsanordnung 2275 und/oder allgemeiner die beispielhafte Modellaufbauschaltungsanordnung 2215 aus 22 durch eine Prozessorschaltung, eine oder mehrere analoge Schaltungen, eine oder mehrere digitale Schaltungen, eine oder mehrere Logikschaltungen, einen oder mehrere programmierbare Prozessoren, einen oder mehrere programmierbare Mikrocontroller, eine oder mehrere Grafikverarbeitungseinheiten (GPU(s)), Digitalsignalprozessor(en) (DSP(s)), anwendungsspezifische integrierte Schaltung(en) (ASIC(s)), programmierbare Logikvorrichtung(en) (PLD(s)) und/oder feldprogrammierbare Logikvorrichtung(en) (FPLD(s)), wie etwa feldprogrammierbare Gate-Arrays (FPGAs), implementiert werden. Ferner können die beispielhafte Anfragezugriffsschaltungsanordnung 2230, die beispielhafte Hardwaredatenorchestrierungsschaltungsanordnung 2235, die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 und/oder allgemeiner die beispielhafte Wissensaufbauschaltungsanordnung 2205 aus 22 und/oder die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260, die beispielhafte Ankerpunkteinfügungsschaltungsanordnung 2265, die beispielhafte Neuronalarchitektursuchschaltungsanordnung 2270, die beispielhafte Modellausgabeschaltungsanordnung 2275 und/oder allgemeiner die beispielhafte Modellaufbauschaltungsanordnung 2215 aus 22 ein oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu oder anstelle der in 22 veranschaulichten beinhalten und/oder können mehr als eines von beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen beinhalten.
  • Ein Flussdiagramm, das eine beispielhafte Hardwarelogikschaltungsanordnung, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren der Wissensaufbauschaltungsanordnung 2205 und/oder der beispielhaften Modellaufbauschaltungsanordnung 2215 aus 22 darstellt, ist in 24 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch eine Prozessorschaltung sein, wie etwa die Prozessorschaltung 2612, die in der nachstehend in Verbindung mit 26 besprochenen beispielhaften Prozessorplattform 2600 gezeigt ist, und/oder die nachstehend in Verbindung mit 48 und/oder 49 besprochenen beispielhafte Prozessorschaltung.
  • Ein Flussdiagramm, das beispielhafte Hardwarelogikschaltungsanordnungen, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren der Zielhardware 2220 aus 22 darstellt, ist in 25 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch eine Prozessorschaltung sein, wie etwa die Prozessorschaltung 2612, die in der nachstehend in Verbindung mit 26 besprochenen beispielhaften Prozessorplattform 2600 gezeigt ist, und/oder die nachstehend in Verbindung mit 48 und/oder 49 besprochenen beispielhafte Prozessorschaltung.
  • Die Programme aus 24 und/oder 25 können in Software umgesetzt sein, die auf einem oder mehreren nicht-transienten computerlesbaren Speicherungsmedien gespeichert ist, wie etwa einer Compact Disk (CD), einer Diskette, einem Festplattenlaufwerk (HDD), einem Solid-State-Laufwerk (SSD), einer Digital Versatile Disk (DVD), einer Blu-Ray-Disk, einem flüchtigen Speicher (z.B. Direktzugriffsspeicher (RAM) eines beliebigen Typs usw.) oder einem nichtflüchtigen Speicher (z.B. elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), Flash-Speicher, ein HDD, ein SSD usw.), der einer Prozessorschaltung zugeordnet ist, die sich in einer oder mehreren Hardwarevorrichtungen befindet, jedoch könnten das gesamte Programm und/oder Teile davon alternativ durch eine oder mehrere andere Hardwarevorrichtungen als die Prozessorschaltung ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt sein. Die maschinenlesbaren Anweisungen können über mehrere Hardware-Vorrichtungen verteilt und/oder durch zwei oder mehr Hardware-Vorrichtungen (z.B. eine Server- und eine Client-Hardware-Vorrichtung) ausgeführt werden. Die Client-Hardwarevorrichtung kann zum Beispiel durch eine Endpunkt-Client-Hardwarevorrichtung (z.B. eine Hardwarevorrichtung, die einem Benutzer zugeordnet ist) oder eine Zwischen-Client-Hardwarevorrichtung (z.B. ein Funkzugangsnetz- (RAN-) Gateway, das Kommunikation zwischen einem Server und einer Endpunkt-Client-Hardwarevorrichtung ermöglichen kann) implementiert werden. Gleichermaßen können die nicht-transienten computerlesbaren Speicherungsmedien ein oder mehrere Medien beinhalten, die sich in einer oder mehreren Hardware-Vorrichtungen befinden. Wenngleich das beispielhafte Programm unter Bezugnahme auf das in 24 veranschaulichte Flussdiagramm beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren der beispielhaften Wissensaufbauschaltungsanordnung 2205 und/oder der beispielhaften Modellaufbauschaltungsanordnung 2215 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können beliebige oder alle der Blöcke durch eine oder mehrere Hardware-Schaltungen (z.B. Prozessorschaltung, diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführen von Software oder Firmware durchzuführen. Die Prozessorschaltung kann an unterschiedlichen Netzwerkstandorten verteilt und/oder lokal zu einer oder mehreren Hardwarevorrichtungen sein (z.B. ein Einzelkernprozessor (z.B. eine Einzelkern-Zentralprozessoreinheit (CPU)), ein Mehrkernprozessor (z.B. eine Mehrkern-CPU) usw.) in einer einzigen Maschine, mehrere Prozessoren, die über mehrere Server eines Server-Racks verteilt sind, mehrere Prozessoren, die über ein oder mehrere Server-Racks verteilt sind, eine CPU und/oder ein FPGA, die sich in demselben Package (z.B. demselben IC- (integrierte Schaltung) Package oder in zwei oder mehr separaten Gehäusen usw. befinden).
  • Die vorliegend beschriebenen maschinenlesbaren Anweisungen können in einem komprimierten Format und/oder einem verschlüsselten Format und/oder einem fragmentierten Format und/oder einem kompilierten Format und/oder einem ausführbaren Format und/oder einem verpackten Format usw. gespeichert sein. Die vorliegend beschriebenen maschinenlesbaren Anweisungen können als Daten oder Datenstruktur (z.B. Abschnitte von Anweisungen, Code, Darstellungen von Code usw.) gespeichert sein, die eingesetzt werden können, um maschinenlesbare Anweisungen zu erstellen, herzustellen und/oder zu erzeugen. Zum Beispiel können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speicherungsvorrichtungen und/oder Rechenvorrichtungen (z.B. Servern) gespeichert sein, die sich an denselben oder unterschiedlichen Orten eines Netzwerks oder einer Sammlung von Netzwerken (z.B. in der Cloud, in Edge-Vorrichtungen usw.) befinden. Die maschinenlesbaren Anweisungen können eines oder mehrere von Installation, Modifikation, Anpassung, Aktualisierung, Kombination, Ergänzung, Konfiguration, Entschlüsselung, Dekomprimierung, Entpacken, Verteilung, Neuzuweisung, Kompilierung usw. erfordern, um sie durch eine Rechenvorrichtung und/oder eine andere Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Zum Beispiel können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert sein, die einzeln komprimiert, verschlüsselt und/oder auf separaten Rechenvorrichtungen gespeichert sind, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und/oder kombiniert werden, einen Satz maschinenausführbarer Anweisungen bilden, die eine oder mehrere Operationen implementieren, die zusammen ein Programm, wie etwa das vorliegend beschriebene, bilden können.
  • In einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert sein, in dem sie von einer Prozessorschaltung gelesen werden können, aber das Hinzufügen zu einer Bibliothek (z.B. einer Dynamic Link Library (DLL)), zu einem Softwareentwicklungskit (SDK), einer Anwendungsprogrammierungsschnittstelle (API) usw. erfordern, um die maschinenlesbaren Anweisungen auf einer speziellen Rechenvorrichtung oder einer anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen konfiguriert (z.B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.) werden, bevor die maschinenlesbaren Anweisungen und/oder das bzw. die entsprechende(n) Programm(e) gänzlich oder teilweise ausgeführt werden können. Somit können maschinenlesbare Medien, wie vorliegend verwendet, maschinenlesbare Anweisungen und/oder Programm(e) unabhängig von dem jeweiligen Format oder Zustand der maschinenlesbaren Anweisungen und/oder Programm(e) beinhalten, wenn sie gespeichert oder sich anderweitig in Ruhe oder im Durchgang befinden.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können durch eine beliebige vergangene, aktuelle oder zukünftige Anweisungssprache, Skriptsprache, Programmiersprache usw. repräsentiert sein. Beispielsweise können die maschinenlesbaren Anweisungen unter Verwendung beliebiger der folgenden Sprachen repräsentiert sein: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift usw.
  • Wie vorstehend erwähnt, können die beispielhaften Operationen aus 24 und/oder 25 unter Verwendung ausführbarer Anweisungen (z.B. computer- und/oder maschinenlesbarer Anweisungen) implementiert werden, die auf einem oder mehreren nichtflüchtigen computer- und/oder maschinenlesbaren Medien gespeichert sind, wie etwa optischen Speicherungsvorrichtungen, magnetischen Speicherungsvorrichtungen, einem HDD, einem Flash-Speicher, einem Nur-Lese-Speicher (ROM), einer CD, einer DVD, einem Cache, einem RAM eines beliebigen Typs, einem Register und/oder einer beliebigen anderen Speicherungsvorrichtung oder Speicherungsplatte, auf der Informationen für eine beliebige Dauer (z.B. für längere Zeiträume, permanent, für kurze Vorgänge, zum temporären Puffern und/oder zum Cachen der Informationen) gespeichert sind. Vorliegend sind die Bezeichnungen „nicht-transientes computerlesbares Medium“ und „nicht-transientes computerlesbares Speichermedium“ ausdrücklich so definiert, dass sie eine beliebige Art von computerlesbarer Speichervorrichtung und/oder Speicherplatte beinhalten und sich ausbreitende Signale ausschließen und Übertragungsmedien ausschließen.
  • „Beinhaltend“ und „umfassend“ (und alle Formen und Zeitformen davon) werden hier als offene Begriffe verwendet. Wenn somit ein Anspruch eine beliebige Form von „beinhalten“ oder „umfassen“ (z.B. umfasst, beinhaltet, umfassend, beinhaltend, aufweisend usw.) als eine Präambel oder innerhalb einer Anspruchsrezitation einer beliebigen Art einsetzt, versteht es sich somit, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne außerhalb des Schutzumfangs des entsprechenden Anspruchs oder der entsprechenden Rezitation zu fallen. Wenn vorliegend der Ausdruck „mindestens“ als der Übergangsausdruck in zum Beispiel einer Präambel eines Anspruchs verwendet wird, ist er auf die gleiche Art und Weise offen, wie der Begriff „umfassend“ und „beinhaltend“ offen ist. Der Begriff „und/oder“ betrifft, wenn er zum Beispiel in einer Form wie A, B und/oder C verwendet wird, eine beliebige Kombination oder Untermenge von A, B, C wie (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C oder (7) A mit B und mit C. Wie vorliegend im Zusammenhang mit der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, bezweckt der Ausdruck „mindestens eines von A und B“ auf Implementierungen zu verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Gleichermaßen soll, wie vorliegend im Kontext des Beschreibens von Strukturen, Komponenten , Elementen, Objekten und/oder Dingen verwendet, der Ausdruck „mindestens eines von A oder B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B und (3) mindestens einem A und mindestens einem B beinhalten. Wie vorliegend im Kontext der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll der Ausdruck „mindestens eines von A und B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Gleichermaßen soll, wie vorliegend im Zusammenhang mit der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, der Ausdruck „mindestens eines von A oder B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten.
  • Wie hier verwendet schließen Singularreferenzen (z. B. „ein“, „eine“, „eines“, „erstes“, „zweites“ usw.) einen Plural nicht aus. Der Begriff „ein“ Objekt, wie vorliegend verwendet, verweist auf eines oder mehrere dieses Objekts. Die Begriffe „ein“, „ein oder mehrere“ und „mindestens ein“ werden vorliegend austauschbar verwendet. Wenngleich einzeln aufgelistet, können ferner eine Vielzahl von Mitteln, Elementen oder Verfahrensaktionen durch z.B. dieselbe Entität oder dasselbe Objekt implementiert werden. Auch wenn einzelne Merkmale in unterschiedlichen Beispielen oder Ansprüchen enthalten sein können, können diese zudem möglicherweise kombiniert werden und die Aufnahme in unterschiedlichen Beispielen oder Ansprüchen impliziert nicht, dass eine Kombination von Merkmalen nicht machbar und/oder vorteilhaft ist.
  • 24 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 2400 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um die beispielhafte Wissensaufbauschaltungsanordnung und die beispielhafte Modellaufbauschaltungsanordnung aus 22 zu implementieren. Die maschinenlesbaren Anweisungen und/oder die Operationen 2400 aus 24 beginnen bei Block 2410, bei dem die Anfragezugriffsschaltungsanordnung 2230 eine Anfrage zur Erzeugung eines Modells zum Durchführen einer ausgewählten Aufgabe empfängt. (Block 2410). In vorliegend offenbarten Beispielen beinhaltet die Benutzereingabe 2210, die durch die Anfragezugriffsschaltungsanordnung 2230 empfangen wird, Informationen, die zum Beispiel eine Zielsetzung eines Maschinenlernmodell, eine durch das Maschinenlernmodell durchzuführende Aufgabe und in einigen Beispielen eine oder mehrere Eigenschaften einer Zielhardware, auf der das Maschinenlernmodell auszuführen ist, beinhalten. Die Anfrage kann zum Beispiel als eine Anfrage, die an einem Webserver empfangen wird, eine Anfrage, die in einem strukturierten Datenformat formatiert ist (z.B. einem JSON- (JavaScript Object Notation) Format, einem XML- (Extensible Markup Language) Format usw.) formatiert sein. Die beispielhafte Anfragezugriffschaltungsanordnung 2230 greift auf Hardwaredatenorchestrierungsinformationen über die Hardwaredatenorchestrierungsschaltungsanordnung 2235 und auf Aufgabendatenorchestrierungsinformationen über die Aufgabendatenorchestrierungsschaltungsanordnung 2240 zu. Die abgerufenen Informationen (falls verfügbar) und die Anfrage werden der Suchraumverwaltungsschaltungsanordnung 2260 der Modellaufbauschaltungsanordnung 2215 bereitgestellt.
  • Die beispielhafte Hardwaredatenorchestrierungsschaltungsanordnung 2235 ermittelt, ob irgendein Vorwissen im Wissensdatenspeicher 2245 für die ausgewählte Hardware vorhanden ist. (Block 2412). Falls kein Vorwissen für die ausgewählte Hardware bekannt ist (z.B. Block 2412 gibt ein Ergebnis NEIN zurück), fügt die beispielhafte Hardwaredatenorchestrierungsschaltungsanordnung 2235 eine Identifikation der ausgewählten Hardware dem Wissensdatenspeicher 2245 hinzu. (Block 2414). Die Identifikation der Hardware ermöglicht, dass spätere Performanzmetriken, die mit der ausgewählten Hardware assoziiert sind, organisiert im Wissensdatenspeicher 2245 gespeichert werden. In einigen Beispielen kann die Identifikation der ausgewählten Hardware vor der Modellerzeugung weggelassen werden und kann stattdessen durchgeführt werden, wenn Performanzmetriken dem Wissensdatenspeicher durch die Ausführungsperformanzstatistik-Sammelschaltungsanordnung 2285 bereitgestellt werden.
  • Die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 ermittelt, ob irgendwelche Aufgabeninformationen für die ausgewählte Aufgabe verfügbar sind. (Block 2420). Falls kein Vorwissen für die ausgewählte Aufgabe verfügbar ist (z.B. gibt Block 2420 ein Ergebnis NEIN zurück), fügt die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 eine Identifikation der ausgewählten Aufgabe dem Wissensdatenspeicher 2245 hinzu. (Block 2425). Die Identifikation der ausgewählten Aufgabe ermöglicht, dass spätere Performanzmetriken, die mit der ausgewählten Aufgabe assoziiert sind, organisiert im Wissensdatenspeicher 2245 gespeichert werden. In einigen Beispielen kann die Identifikation der ausgewählten Aufgabe vor der Modellerzeugung weggelassen werden und kann stattdessen durchgeführt werden, wenn Performanzmetriken dem Wissensdatenspeicher durch die Ausführungsperformanzstatistik-Sammelschaltungsanordnung 2285 bereitgestellt werden. Die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260 erstellt einen Suchraum basierend auf einer Benutzerauswahl verfügbarer Bausteine oder auf Bausteinen aus (einer) existierenden Stand-der-Technik-Architektur(en) für die Aufgabe. (Block 2427). Auf diese Weise wird der Suchraum erzeugt, basiert aber nicht auf spezifischem Aufgabenvorwissen (wie nachstehend in Verbindung mit Block 2440 beschrieben ist). In einigen Beispielen kann die Fähigkeit, eine Benutzerauswahl verfügbarer Bausteine durchzuführen (und/oder ob Stand-der-Technik-Architektur(en) für die Aufgabe verwendet werden soll(en)), per Richtlinie konfigurierbar sein.
  • Die beispielhafte NAS-Suchschaltungsanordnung 2270 führt eine Neuronalarchitektursuche durch, um ein Modell unter Verwendung des Suchraums zu erzeugen. (Block 2430). Bei dem veranschaulichten Beispiel aus 24 startet die NAS-Suchschaltungsanordnung 2270 aus einem nichtinitialisierten Zustand. Das heißt, es wird kein Vorwissen über die Durchführung verschiedener Aufgaben und/oder Hardware verwendet, auf denen die Aufgaben auszuführen sind, wenn die Neuronalarchitektursuche aus Block 2430 durchgeführt wird.
  • Zurückkehrend zu Block 2420 erstellt die beispielhafte Aufgabendatenorchestrierungsschaltungsanordnung 2240 Aufgabenwissen, falls die Aufgabendatenorchestrierungsschaltungsanordnung 2240 ermittelt, dass Vorwissen für die ausgewählte Aufgabe vorhanden ist (z.B. gibt Block 2420 ein Ergebnis JA zurück). (Block 2435). Um das Aufgabenwissen aufzubauen, werden Modellinformationen durch die Aufgabendatenorchestrierungsschaltungsanordnung 2240 aus dem Wissensdatenspeicher 2245 für die spezielle Aufgabe abgerufen, und es werden Merkmale aus den Modellen extrahiert. In Fällen einer neuen oder angepassten Aufgabe werden ähnliche Aufgaben/Modelle basierend auf der Benutzereingabe abgerufen. Diese Merkmale beinhalten, ohne jedoch hierauf eingeschränkt zu sein, das Framework, das zum Trainieren des Modells verwendet wird, die Hardwarespezifikation und/oder beliebige Informationen zum Abbilden von Modellen (Latenzen usw.), einschließlich Hardwaretelemetrie, der Performanzzielsetzung, der Abfolge von Operationen, der Anzahl von FLOPs, des verwendeten Datensatzes, der Anzahl von Schichten usw. Diese Merkmale werden dann nach Hardware, Zielsetzung usw. eingestuft. Die jeweiligen Merkmale, die aus dem oder den Modellen extrahiert und eingestuft werden, werden kollektiv als das Aufgabenwissen identifiziert, das dann zum Erstellen des Suchraums verwendet wird. In einigen Beispielen wird ein solches Aufgabenwissen im Wissensdatenspeicher 2245 archiviert, um einen effizienten Abruf zu ermöglichen, sollte eine gleiche Aufgabe später angefordert werden.
  • Die beispielhafte Suchraumverwaltungsschaltungsanordnung 2260 erzeugt einen Suchraum aus dem Aufgabenvorwissen. (Block 2440). Der Suchraum kann zum Beispiel durch Einstufen und Auswählen einer vorherigen Architektur erstellt werden, die ein akzeptables Performanzniveau auf der Zielhardware (und/oder Hardware ähnlich der Zielhardware) aufwies. In einigen Beispielen werden Performanzstatistiken, die im Wissensdatenspeicher 2245 gespeichert sind und mit unterschiedlichen Architekturen und Aufgaben assoziiert sind, verglichen, um eine Architektur auszuwählen, die eine Schwellenperformanzstatistik erfüllt. In einigen Beispielen kann die Performanzstatistik, auf der die Auswahl basiert, von der Benutzereingabe 2210 abhängen, die zum Beispiel angeben kann, ob Leistungsverbrauchsstatistiken gegenüber Verarbeitungsgeschwindigkeitsstatistiken priorisiert werden sollen.
  • In einigen Beispielen kann die Auswahl der Priorisierung (z.B. Priorisierung von Funktionalität, Performanz, Leistungsoptimierung usw.) durch eine Richtlinie geleitet werden. Zum Beispiel kann eine Richtlinie durch eine Richtlinienbereitstellungsentität bereitgestellt werden, um das Verhalten der Trainingsoperationen und/oder der Suchraumverwaltung zu steuern. In einigen Beispielen steuert die Richtlinie andere Einzelheiten über die Erzeugung und/oder das Training des Modells, einschließlich zum Beispiel unterschiedlicher Niveaus an Neuronalnetz-Spärlichkeit (z.B. 260%, 90% usw.), unterschiedlicher Genauigkeitsniveaus (z.B. 32-Bit-Gleitkommawerte, 16-Bit-Gleitkommawerte, 8-Bit-Ganzzahlwerte usw.).
  • In einigen Beispielen kann die Richtlinienbereitstellungsentität ein Benutzer des Systems aus 22 sein. Die Richtlinienbereitstellungsentität kann jedoch eine beliebige andere Entität sein, die Funktionalität des Systems aus 22 anweist, einschließlich zum Beispiel eines Systemadministrators, eines Herstellers, eines Vorrichtungsanbieters usw. In einigen Beispielen kann die Richtlinienbereitstellungsentität von dem Benutzer getrennt sein. Auf diese Weise ist der Benutzer in der Lage, Anfragen zum Training und/oder zur Erzeugung eines Maschinenlernmodells einzugeben, während ermöglicht wird, dass die Parameter, unter denen das Training und/oder die Erzeugung des Maschinenlernmodells erfolgen, auf der durch die Richtlinienbereitstellungsentität erzeugten Richtlinie basieren.
  • In einigen Beispielen wird die Richtlinie dem System aus 22 durch die Richtlinienbereitstellungsentität über eine vertrauenswürdige Ausführungsumgebung (TEE) der Plattform bereitgestellt. Die Richtlinie kann jedoch dem System aus 22 auf eine beliebige andere Weise bereitgestellt werden.
  • Die beispielhafte NAS-Suchschaltungsanordnung 2270 erzeugt ein Modell unter Verwendung einer Neuronalarchitektursuche basierend auf dem Suchraum, der durch die Suchraumverwaltungsschaltungsanordnung 2260 erzeugt wurde. (Block 2450). Auf diese Weise startet die Neuronalarchitektursuche, die durch die NAS-Suchschaltungsanordnung 2270 bei Block 2450 durchgeführt wird, aus einem initialisierten Zustand basierend auf dem Aufgabenvorwissen (z.B. beginnend mit einer Architektur, die zuvor eine Performanzschwelle erfüllt hat).
  • Die beispielhafte Ankerpunkteinfügungsschaltungsanordnung 2265 fügt dann Ankerpunkte in das erzeugte Modell ein. (Block 2460). Ankerpunkte stellen Orte bereit, an denen Performanzstatistiken durch die Ausführungsperformanzstatistik-Sammelschaltungsanordnung 2285 gemessen werden sollen. Darüber hinaus stellen die Ankerpunkte Orte bereit, durch die zusätzliche Informationen über das Modell und/oder die Zielsetzungen/Aufgaben des Modells erfasst werden können. In vorliegend offenbarten Beispielen werden Ankerpunkte zwischen jeweiligen Schichten des erzeugten Modells eingefügt. In einigen Beispielen werden Ankerpunkte dem Modell vor der ersten Schicht und nach der letzten Schicht des Modells hinzugefügt. In einigen anderen Beispielen werden Ankerpunkte angrenzend an (z.B. vor und nach) bestimmte Typen von Schichten (z.B. eine Faltungsschicht) hinzugefügt.
  • Die beispielhafte Modellausgabeschaltungsanordnung 2275 stellt das erzeugte Modell der Zielhardware 2220 zur Ausführung durch die Modellausführungsschaltungsanordnung 2280 bereit. (Block 2470). In vorliegend offenbarten Beispielen kann das Modell zuerst an einem Speicherort (z.B. einem Server) gespeichert werden, bevor es der Modellausführungsschaltungsanordnung 2280 bereitgestellt wird. In einigen Beispielen kann die Modellausführungsschaltungsanordnung 2280 das Modell von dem Speicherort oder direkt von der Modellausgabeschaltungsanordnung 2275 abrufen. Der Prozess des veranschaulichten Beispiels aus 24 endet dann, kann aber zum Beispiel bei Empfang einer späteren Benutzereingabe 2210 erneut ausgeführt werden.
  • 25 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 2500 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um die beispielhafte Zielhardware 2220 aus 22 zu implementieren. Die maschinenlesbaren Anweisungen und/oder die Operationen 2500 aus 25 beginnen bei Block 2510, bei dem die Modellausführungsschaltungsanordnung 2280 die Ausführung eines Modells beginnt, das von der Modellausführungsschaltungsanordnung 2275 empfangen wird. (Block 2510). Während der Ausführung des Modells sammelt die beispielhafte Ausführungsperformanzstatistik-Sammelschaltungsanordnung 2285 Modellausführungsstatistiken unter Verwendung der eingefügten Ankerpunkte. (Block 2520). Die gesammelten Ausführungsstatistiken werden dem Wissensdatenspeicher 2245 bereitgestellt. (Block 2530). In vorliegend offenbarten Beispielen beinhalten die gesammelten Ausführungsstatistiken Informationen über die Ankerpunkte. Das Aufnehmen von Informationen über die Ankerpunkte ermöglicht, dass Statistiken, die für bestimmte Merkmale spezifisch sind, beim Erzeugen von Aufgabenwissen genutzt werden.
  • 26 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 2600, die zum Ausführen und/oder Instanziieren der maschinenlesbaren Anweisungen und/oder der Operationen aus 24 und/oder 25 strukturiert ist, um das System 2200 aus 22 zu implementieren. Die Prozessorplattform 2600 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z.B. ein neuronales Netzwerk), eine Mobilvorrichtung (z.B. ein Mobiltelefon, ein Smartphone, ein Tablet wie etwa ein iPad™), ein Personal Digital Assistant (PDA), ein Internetgerät, ein DVD-Spieler, ein CD-Spieler, ein digitalen Videorecorder, ein Blu-Ray-Spieler, eine Spielekonsole, ein persönlicher Videorecorder, eine Set-Top-Box, ein Headset (z.B. ein Augmented-Reality- (AR-) Headset, ein Virtual-Reality- (VR-) Headset usw.) oder eine andere Wearable-Vorrichtung oder eine beliebige andere Art von Rechenvorrichtung sein.
  • Die Prozessorplattform 2600 des veranschaulichten Beispiels beinhaltet eine Prozessorschaltung 2612. Die Prozessorschaltung 2612 des veranschaulichten Beispiels ist Hardware. Zum Beispiel kann die Prozessorschaltung 2612 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, FPGAs, Mikroprozessoren, CPUs, GPUs, DSPs und/oder Mikrosteuerungen einer beliebigen gewünschten Familie oder eines beliebigen gewünschten Herstellers implementiert werden. Die Prozessorschaltung 2612 kann durch eine oder mehrere halbleiterbasierte (z.B. siliciumbasierte) Vorrichtungen implementiert werden. Bei diesem Beispiel implementiert die Prozessorschaltung 2612 die Wissensaufbauschaltungsanordnung 2205 und die Modellaufbauschaltungsanordnung 2215. In einigen Beispielen können die Wissensaufbauschaltungsanordnung 2205 und die Modellaufbauschaltungsanordnung 2215 auf separaten Prozessorplattformen implementiert werden.
  • Die Prozessorschaltung 2612 des veranschaulichten Beispiels beinhaltet einen lokalen Speicher 2613 (z.B. einen Cache, Register usw.). Die Prozessorschaltung 2612 des veranschaulichten Beispiels steht durch einen Bus 2618 in Kommunikation mit einem Hauptspeicher, der einen flüchtigen Speicher 2614 und einen nichtflüchtigen Speicher 2616 beinhaltet. Der flüchtige Speicher 2614 kann durch SDRAM (Synchronous Dynamic Random Access Memory), DRAM (Dynamic Random Access Memory), RDRAMO (RAMBUSO Dynamic Random Access Memory) und/oder eine beliebige andere Art von RAM-Vorrichtung implementiert werden. Der nichtflüchtige Speicher 2616 kann durch Flash-Speicher und/oder eine beliebige andere gewünschte Art von Speichervorrichtung implementiert werden. Der Zugriff auf den Hauptspeicher 2614, 2616 des veranschaulichten Beispiels wird durch eine Speichersteuerung 2617 gesteuert.
  • Die Prozessorplattform 2600 des veranschaulichten Beispiels beinhaltet zudem eine Schnittstellenschaltung 2620. Die Schnittstellenschaltung 2620 kann durch Hardware gemäß einer beliebigen Art von Schnittstellenstandard implementiert werden, wie etwa einer Ethernet-Schnittstelle, einer Universal-Serial-Bus- bzw. USB- Schnittstelle, einer Bluetooth®-Schnittstelle, einer Nahfeldkommunikations- bzw. NFC-Schnittstelle, einer PCI-(Peripheral Component Interconnect) Schnittstelle und/oder einer PCIe- (Peripheral Component Interconnect Express) Schnittstelle.
  • In dem veranschaulichten Beispiel sind eine oder mehrere Eingabevorrichtungen 2622 mit der Schnittstellenschaltung 2620 verbunden. Die Eingabevorrichtung(en) 2622 ermöglicht (ermöglichen) einem Benutzer, Daten und/oder Befehle in die Prozessorschaltung 2612 einzugeben. Die eine oder die mehreren Eingabevorrichtungen 2622 können zum Beispiel durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert werden.
  • Eine oder mehrere Ausgabevorrichtungen 2624 sind ebenfalls mit der Schnittstellenschaltung 2620 des veranschaulichten Beispiels verbunden. Die Ausgabevorrichtung(en) 2624 können zum Beispiel durch Anzeigevorrichtungen (z. B., eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhre (CRT-Anzeige), eine In-Place-Switching-Anzeige (IPS-Anzeige), einen Touchscreen usw.), eine taktile Ausgabevorrichtung, einen Drucker und/oder Lautsprecher implementiert werden. Die Schnittstellenschaltung 2620 des veranschaulichten Beispiels beinhaltet somit typischerweise eine Grafiktreiber-Karte, einen Grafiktreiber-Chip und/oder eine Grafikprozessor-Schaltungsanordnung, wie etwa eine GPU.
  • Die Schnittstellenschaltung 2620 des veranschaulichten Beispiels beinhaltet zudem eine Kommunikationsvorrichtung, wie etwa einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein Heim-Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerkschnittstelle, um den Austausch von Daten mit externen Maschinen (z.B. Rechenvorrichtungen einer beliebigen Art) durch ein Netzwerk 2626 zu ermöglichen. Die Kommunikation kann zum Beispiel durch eine Ethernet-Verbindung, eine DSL- (digital subscriber line) Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Sichtliniensystem, ein Mobilfunksystem, eine optische Verbindung usw. erfolgen.
  • Die Prozessorplattform 2600 des veranschaulichten Beispiels beinhaltet zudem eine oder mehrere Massenspeicherungsvorrichtungen 2628 zum Speichern von Software und/oder Daten. Beispiele für solche Massenspeichervorrichtungen 2628 beinhalten magnetische Speichervorrichtungen, optische Speichervorrichtungen, Diskettenlaufwerke, HDDs, CDs, Blu-Ray-Disk-Laufwerke, RAID- (Redundant Array of Independent Disks) Systeme, Festkörper- (Solid-State-) Speichervorrichtungen wie etwa Flash-Speichervorrichtungen und/oder SSDs, und DVD-Laufwerke.
  • Die maschinenausführbaren Anweisungen 2632, die durch die maschinenlesbaren Anweisungen aus 24 und/oder 25 implementiert werden, können in der Massenspeichervorrichtung 2628, in dem flüchtigen Speicher 2614, in dem nicht-flüchtigen Speicher 2616 und/oder auf einem entfernbaren nicht-flüchtigen computerlesbaren Speichermedium, wie etwa einer CD oder DVD, gespeichert sein.
  • Aus dem Vorstehenden versteht es sich, dass beispielhafte Systeme, Verfahren, Einrichtungen und Herstellungsartikel offenbart wurden, die ermöglichen, dass Neuronalarchitektursuche basierend auf Vorkenntnissen über Modelle durchgeführt wird, die zum Durchführen spezieller Aufgaben erzeugt werden. Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel verbessern die Effizienz der Verwendung einer Rechenvorrichtung, indem eine Neuentdeckung von Modellen vermieden wird, die ansonsten anfänglich durch Neuronalarchitektursuche entdeckt würden, die aber für die beabsichtigte Aufgabe nicht gut funktionieren. Durch das Beginnen basierend auf Vorwissen können Modelle mit höherer Performanz schneller identifiziert werden. Dies reduziert die Ressourcenbeanspruchung nicht nur auf der Zielhardware (z.B. können effizientere Modelle entwickelt werden), sondern reduziert auch die Ressourcenbeanspruchung auf Systemen, die Modelle erzeugen (z.B. können Modelle mit höherer Performanz schneller/effizienter erkannt werden). Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel betreffen dementsprechend eine oder mehrere Verbesserungen des Betriebs einer Maschine wie etwa eines Computers oder einer anderen elektronischen und/oder mechanischen Vorrichtung.
  • VERFAHREN UND EINRICHTUNGEN ZUM BEDINGTEN AKTIVIEREN EINES GROSSEN KERNS IN EINEM RECHENSYSTEM
  • Einige Rechensysteme beinhalten einen oder mehrere Großvorrichtungsprozessoren (z.B. Kerne) und/oder einen oder mehrere Kleinvorrichtungsprozessoren (z.B. Atome) zum Durchführen von Operationen. Ein Großvorrichtungsprozessor kann einen oder mehrere Kerne und/oder Verarbeitungseinheiten beinhalten, während ein Kleinvorrichtungsprozessor einen oder zwei Kerne aufweisen kann. Außerdem ist der Großvorrichtungsprozessor leistungsfähiger und/oder beansprucht mehr Platz als ein Kleinvorrichtungsprozessor. Ein Großvorrichtungsprozessor kann Hochleistungsanwendungen handhaben, während ein Kleinvorrichtungsprozessor im Vergleich zu Großvorrichtungsprozessoren eine geringere Leistung, eine kleinere Grundfläche und eine bescheidene Performanz bietet. Beispiele für Kleinvorrichtungsprozessoren beinhalten Intel® Atom®, Intel® Quark® SoC, LITTLE-Kerne usw.
  • Hardwarebasierter Mikrocode (auch als Anweisungen auf Hardwareebene bezeichnet) kann in der Hardware eines Rechensystems (z.B. eines Computers, eines Laptops, eines Mobiltelefons, eines Servers, einer Edge-Vorrichtung, einer Cloudbasierten Vorrichtung usw.) implementiert werden, um die Hardware des Rechensystems zu konfigurieren. In einigen Beispielen können solche Anweisungen auf Hardwareebene (z.B. uCode, XuCode usw.) den Betrieb der Hardware, einschließlich Verarbeitungsvorrichtungen, steuern. Falls eine Rechenvorrichtung mehrere Verarbeitungsvorrichtungen (z.B. große Kerne, kleine Kerne, Atome, Zentralverarbeitungseinheit- (CPU-) Sockel, CPU, Steckplätze usw.) beinhaltet, kann der Mikrocode den Betrieb und/oder die Konfiguration der mehreren Verarbeitungsvorrichtungen erleichtern.
  • Mit zunehmender Anzahl und/oder zunehmenden Arten von Architekturen nimmt die Schwierigkeit beim Programmieren von Anweisungen zu, da es möglicherweise eine separate Konfiguration von Anweisungen für jeden Architekturtyp geben muss. Anweisungen können zum Beispiel 2724-Bit-Anweisungen sein, die strukturiert sind, um durch Hardware ausgeführt zu werden, die die 2724-Bit-Anweisungen handhaben kann. Gleichermaßen wird ein System mit mehreren kleineren Verarbeitungseinheiten, die 64-Bit-Anweisungen handhaben, nicht in der Lage sein, Anweisungen über 64 Bits auszuführen.
  • Vorliegend offenbarte Beispiele stellen eine software-und/oder firmwarebasierte Anwendungsprogrammierungsschnittstelle (API) bereit, um Anweisungen von einer Anwendung, die auf einem Betriebssystem, einem Virtual-Machine-Manager (VMM) usw. läuft, zu verarbeiten und Mikrocode anzuweisen, die Verarbeitungseinheiten so zu konfigurieren, dass sie in der Lage sind, die Anweisungen auszuführen, unabhängig davon, wie die Anweisungen strukturiert sind. Falls zum Beispiel eine 512-Bit-Anweisung von einer Anwendung erhalten wird, können vorliegend offenbarte Beispiele acht 64-Bit-Verarbeitungseinheiten konfigurieren, um die 512-Bit-Anweisung in acht 64-Bit-Anweisungen aufzuteilen, die 64-Bit-Anweisungen parallel auszuführen und die Ergebnisse zu kombinieren, wodurch sie als ein bedingt aktivierter großer Kern (z.B. ein großer Kern, der in der Lage ist, die 512-Bit-Anweisung zu handhaben) arbeiten. Auf diese Weise kann die Anwendung eine Anweisung erzeugen und vorliegend offenbarte Beispiele können angesichts der Einschränkungen des Rechensystems, über das sie auszuführen ist, ermitteln, ob und/oder wie die Anweisung auszuführen ist.
  • Die beispielhafte offenbarte API bezieht ISA-Anweisungen vom OS/VMM. Eine ISA-Anweisung ist eine Anweisung, die erfordert, dass mehrere Verarbeitungsvorrichtungen als eine einzige große Verarbeitungsvorrichtung arbeiten, die in der Lage ist, die ISA-Anweisung zu handhaben. Wenn die offenbarte API eine ISA-Anfrage zum Ausführen von ISA-Anweisungen von einer Anwendung bezieht (z.B. als ein Interrupt), ermittelt die API zuerst, ob die Verarbeitungseinheiten in der Lage sind und/oder verfügbar sind, die Anweisungen auszuführen und gleichzeitig die Service-Level-Agreements (SLAs), Latenzanforderungen, Toleranzanforderungen usw. zu erfüllen, die den Anweisungen entsprechen. Falls die API ermittelt, dass die Verarbeitungseinheiten in der Lage sind und verfügbar sind, die Anweisungen auszuführen und gleichzeitig die Anforderungen zu erfüllen, weist die API den Mikrocode an, zu bewirken, dass die Verarbeitungseinheiten die Anweisungen gemäß den Anforderungen ausführen. Falls die API ermittelt, dass die Verarbeitungseinheiten in der Lage sind, aber nicht verfügbar sind, die Anweisung auszuführen, kann die API angeben (1) (z.B. der Anwendung) wann die Verarbeitungseinheiten verfügbar sein werden (z.B. eine Annäherung, wann eine aktuell implementierte Arbeitslast abgeschlossen sein wird) und/oder (2) dass der große Kern emuliert werden kann, die Anforderungen aber möglicherweise nicht erfüllt werden. Auf diese Weise kann die Anwendung ermitteln, ob mit dem Ausführen der Anweisung gewartet werden soll, um die Anforderungen zu erfüllen, ob mit der Emulation fortgefahren werden soll, wobei eine oder mehrere der Anforderungen nicht erfüllt werden, oder ob die Anweisung mit den entsprechenden Verarbeitungselementen nicht ausgeführt werden soll. Falls die API ermittelt, dass die Verarbeitungseinheiten nicht in der Lage sind, die Anweisung auszuführen, gibt die API (z.B. der Anwendung) an, dass die Anweisung nicht ausgeführt werden kann.
  • 27 ist ein Blockdiagramm einer beispielhaften Rechenvorrichtung 2700. Die beispielhafte Rechenvorrichtung 2700 beinhaltet beispielhafte Hardware 2702, die einen oder mehrere beispielhafte Kerne 2704, einen oder mehrere beispielhafte Kleinvorrichtungsprozessoren 2706, eine beispielhafte Mikrocodeverarbeitungsschaltungsanordnung 2711 und ein oder mehrere beispielhafte Register 2713 beinhaltet. Die beispielhafte Rechenvorrichtung 2700 beinhaltet ferner ein beispielhaftes BIOS 2708, das eine beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 beinhaltet. Die beispielhafte Rechenvorrichtung 2700 beinhaltet ferner ein beispielhaftes Betriebssystem (OS)/einen beispielhaften Virtual-Machine-Manager (VMM) 2707 und beispielhafte Anwendungen (APPS) 2714.
  • Die beispielhafte Hardware 2702 aus 27 führt Aufgaben durch, die Anweisungen von den Anwendungen 2714, dem OS/VMM 2722 und/oder dem BIOS 2708 entsprechen. Die beispielhafte Hardware 2702 kann Prozessorressourcen (z.B. Speicher, Register und/oder Logikschaltungsanordnung des einen oder der mehreren beispielhaften Prozessorkerne 2704 und/oder des einen oder der mehreren Kleinvorrichtungsprozessoren 2706) zum Ausführen von Anweisungen zum Implementieren der Anweisungen der beispielhaften Anwendungen 2714 und/oder Zugreifen auf Daten aus dem Speicher beinhalten.
  • Der oder die beispielhaften Prozessorkerne 2704 und/oder der oder die beispielhaften Kleinvorrichtungsprozessoren 2706 aus 27 führen Anweisungen (z.B. eine Arbeitslast) von einer Anwendung (z.B. durch Lesen und/oder Schreiben von Daten) aus. Aufgaben, die auf einem oder mehreren Kernen 2704 ausgeführt werden, können zu einer anderen Zeitdauer bis zum Abschluss und/oder einer anderen Effizienz führen als die gleichen Aufgaben, die auf dem einen oder den mehreren Kleinvorrichtungsprozessoren 2706 ausgeführt werden. Zum Beispiel können der eine oder die mehreren Kerne 2704 effizienter in Bezug auf Iterationen-pro-Zyklus- (IPC-) Verhältnisse sein, wenn rechengebundene Aufgaben ausgeführt werden. Zusätzlich können der eine oder die mehreren Kerne 2704 einen größeren Cache als die Kleinvorrichtungsprozessoren 2706 zum Ausführen von cachegebundenen Aufgaben aufweisen. Der eine oder die mehreren Kleinvorrichtungsprozessoren 2706 können effizienter für speichergebundene Aufgaben sein, die mehr Wartezeit auf Speicher im Pipe-Stillstand entsprechen, und/oder können effizienter für E/A-gebundene Aufgaben sein, da E/A-gebundene Aufgaben nicht von der Verarbeitungsbetriebsgeschwindigkeit abhängen. Auch wenn die beispielhafte Hardware 2702 den oder die Kerne 2704 und den oder die Kleinvorrichtungsprozessoren 2706 beinhaltet, kann die Hardware 2702 eine beliebige Anzahl und/oder Art von Verarbeitungskomponenten (z.B. kleiner Kern, großer Kern, Threads usw.) beinhalten. Beispiele für Kleinvorrichtungsprozessoren 2706 beinhalten Intel® Atom®, Intel® Quark® SoC, LITTLE-Kerne usw. Wie vorstehend näher beschrieben, können zwei oder mehr des oder der Kerne 2704 und/oder des oder der Kleinvorrichtungsprozessoren 2706 zusammenarbeiten (z.B. basierend auf Anweisungen von der ISA-Verwaltungsschaltungsanordnung 2710 und/oder der Mikrocodeverarbeitungsschaltungsanordnung 2711), um eine große Anweisung in Unteranweisungen aufzuteilen und auf entsprechenden Verarbeitungsvorrichtungen ausgeführt zu werden. Auf diese Weise können die Anwendung 2714 und/oder das OS/der VMM 2707 eine einzelne Anweisung übertragen, die ein einzelner Kern oder Kleinvorrichtungsprozessor nicht allein ausführen kann, und der oder die Kerne 2704 und/oder der oder die Kleinvorrichtungsprozessoren 2706 können als eine größere Rechenvorrichtung zusammenarbeiten, um die einzelne Anweisung auszuführen.
  • Das beispielhafte OS/der beispielhafte VMM 2707 aus 27 ist ein Softwaresystem, das die beispielhafte Hardware 2702 der Rechenvorrichtung 2700 und Softwareressourcen verwaltet und/oder Server für Computerprogramme und/oder Anwendungen bereitstellt. Das OS/der VMM 2707 aus 27 überträgt Anweisungen und/oder eine ISA-Ausführungsanfrage an die ISA-Verwaltungsschaltungsanordnung 2710, um die ISA-Verwaltungsschaltungsanordnung 2710 zu veranlassen, die Verarbeitungsressourcen (z.B. den oder die Kerne 2704 und/oder den oder die Kleinvorrichtungsprozessoren 2706) so zu steuern, dass sie als ein großer Kern arbeiten. In einigen Beispielen speichert das OS/der VMM 2707 die Anweisungen und/oder die ISA-Ausführungsanfrage in dem oder den beispielhaften Registern 2713, die die ISA-Verwaltungsschaltungsanordnung 2710 überwacht. Auf diese Weise kann das OS/der VMM 2707 bewirken, dass ein Interrupt zur Ermöglichung der ISA-Ausführung auftritt, wenn neue Daten im Register 2713 platziert werden.
  • Das beispielhafte BIOS 2708 aus 27 stellt eine Steuerung auf niedriger Ebene über die Hardware 2702 der Rechenvorrichtung 2700 bereit. Das BIOS 2712 kann zum Beispiel den oder die beispielhaften Kerne 2704 und/oder den oder die Kleinvorrichtungsprozessoren 2706 verwenden, um Anweisungen auszuführen und/oder Operationen durchzuführen, um als ein großer Kern zu arbeiten. Das BIOS 2708 kann Hardwareinitialisierung durchführen und/oder Laufzeitdienste für das OS/den VMM 2707 und/oder andere Programme bereitstellen. Auch wenn die beispielhafte Rechenvorrichtung 2700 aus 27 das BIOS 2708 beinhaltet, kann das BIOS 2708 durch EFI, UEFI und/oder eine beliebige andere Art von Firmware ersetzt werden, die in der Lage ist, eine Schnittstelle zwischen Hardware und dem OS/VMM 2707 herzustellen. Das beispielhafte BIOS 2708 beinhaltet die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710.
  • Die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 aus 27 bezieht Anweisungen (z.B. zum Durchführen einer ISA-Ausführung mit Prozessorressourcen, die als ein großer Kern arbeiten) von der Anwendung über das OS/den VMM 2707. In einigen Beispielen ermittelt die ISA-Verwaltungsschaltungsanordnung 2710, dass das OS/der VMM 2707 angefragt hat, dass die Verarbeitungskomponenten der Hardware 2702 als ein großer Kern arbeiten, indem eine Änderung von Daten in einem oder mehreren Registern 2713 der Hardware 2702 überwacht wird. Zum Beispiel kann das OS/der VMM 2707, wenn es/er eine Großkernoperation erfordert oder anfordert, Daten in dem einen oder den mehreren Registern 2713 platzieren, um die Großkernoperation anzugeben (z.B. als Interrupt). Dementsprechend kann die ISA-Verwaltungsschaltungsanordnung 2710 das Register 2713 (z.B. wie etwa ein Interrupt) überwachen, um zu ermitteln, wann die Großkernoperation ermöglicht werden soll.
  • Wenn die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 aus 27 ermittelt, dass ein Großkernbetrieb stattfinden soll, ermittelt die ISA-Verwaltungsschaltungsanordnung 2710 die ISA-Anforderungen (SLAs, Latenzanforderungen, Toleranzanforderungen usw.) der Anweisungen, die durch die Großkernstruktur auszuführen sind. Falls zum Beispiel die Anweisungen in einem oder mehreren des oder der Register 2713 gespeichert sind, verarbeitet die ISA-Verwaltungsschaltungsanordnung 2710 die ISA-Anweisungen, um die Anforderungen zu identifizieren. Die ISA-Verwaltungsschaltungsanordnung 2710 evaluiert, ob die Verarbeitungsressourcen (z.B. einer oder mehrere des oder der Kerne 2704 und/oder der Kleinvorrichtungsverarbeitungskomponenten 2706) in der Lage sind und/oder verfügbar sind, die ISA-Ausführung als ein großer Kern gemäß den bestimmten Anforderungen zu handhaben. Da die Verarbeitungsressourcen möglicherweise andere Arbeitslasten ausführen, können in einigen Beispielen eine oder mehrere der Verarbeitungsressourcen in der Lage sein, die ISA-Ausführung zu handhaben, aber momentan nicht zum Ausführen der Anweisungen verfügbar sein. In einigen Beispielen sind die Verarbeitungsressourcen möglicherweise nicht in der Lage, die ISA-Ausführung zu handhaben. Zum Beispiel können die Verarbeitungsressourcen strukturiert sein, ganzzahlbasierte Anweisungen zu handhaben. Falls das OS/der VMM 2707 Anweisungen zum Handhaben einer Gleitkommazahl überträgt, sind die Verarbeitungsressourcen in einem solchen Beispiel möglicherweise nicht in der Lage, eine solche Ressource zu handhaben. Dementsprechend ermittelt die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710, ob die Verarbeitungsressourcen verfügbar und/oder in der Lage sind, Anweisungen von dem OS/VMM 2707 auszuführen, die der ISA-Ausführung entsprechen.
  • Falls die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 aus 27 ermittelt, dass die Verarbeitungsressourcen in der Lage und verfügbar sind, die ISA-Ausführung auszuführen, indem der Betrieb mehrerer des oder der Kerne 2704 und/oder der kleineren Verarbeitungskomponenten 2706 kombiniert wird, um als ein großer Kern zu arbeiten, weist die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 die Mikrocodeverarbeitungsschaltungsanordnung 2711 der Hardware 2702 an, zu bewirken, dass der oder die Kerne 2704 und/oder die kleineren Verarbeitungskomponenten 2706 als ein großer Kern arbeiten. Falls die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 aus 27 ermittelt, dass die Verarbeitungsressourcen in der Lage, aber nicht verfügbar sind, die Anweisungen auszuführen (z.B. nur ein Teil der Verarbeitungsressourcen verfügbar ist), kann die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 (a) ermitteln, wann ausreichend Prozessorressourcen verfügbar sein werden, um als ein großer Kern zu arbeiten (z.B. basierend darauf, wann eine aktuelle Arbeitslast und/oder geplante Arbeitslast(en) abgeschlossen sein werden), und/oder (b) ermitteln, ob eine Emulation des großen Kerns möglich ist. Die Kombination von Kleinvorrichtungsprozessoren, die in der Lage sind, als eine größere Verarbeitungsvorrichtung zu fungieren, ist richtlinienkonfigurierbar und kann über eine vertrauenswürdige Ausführungsumgebung (TEE) der Plattform durchgesetzt werden. Eine Emulation ist möglich, wenn die verfügbaren Prozessorressourcen in der Lage sind, als ein großer Kern ausgeführt zu werden, wobei die Ausführung aber nicht alle Anforderungen erfüllen wird. Zum Beispiel kann die ISA-Verwaltungsschaltungsanordnung 2710 ermitteln, dass 512 Bits pro Zyklus nicht möglich sind, aber 256 Bits pro Zyklus möglich sind. In einem solchen Beispiel könnte die 512-Bit-Anweisung in zwei 256-Bit-Zyklen anstatt einem 512-Bit-Zyklus durchgeführt werden. Wenngleich die Anweisung abgeschlossen werden kann, wird sie dementsprechend bei halber 512-Bit-Zyklusanforderung abgeschlossen. Die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 kann die Informationen bezüglich Emulation und/oder wann zusätzliche Ressourcen verfügbar sein werden, für das beispielhafte OS/den beispielhaften VMM 2707 übertragen. Auf diese Weise kann das OS/der VMM 2707 basierend auf den Informationen von der ISA-Verwaltungsschaltungsanordnung 2710 ermitteln, ob gewartet, mit der Emulation fortgefahren und/oder nicht fortgefahren werden soll. In einigen Beispielen können das OS/der VMM 2707 und die ISA-Verwaltungsschaltungsanordnung 2710 Bedingungen zur Emulation verhandeln. Falls die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 ermittelt, dass die Prozessorressourcen nicht in der Lage sind, als ein großer Kern zu arbeiten und/oder nicht in der Lage sind, die Anweisung auszuführen, kann die ISA-Verwaltungsschaltungsanordnung 2710 eine Ausnahme (z.B. auch als Trap (nichtprogrammierter Sprung) und/oder Block bezeichnet) für die ISA-Ausführung erzeugen und dieses OS/diesen VMM 2707 darüber informieren, dass es/er die Anweisung nicht ausführen wird, weil es/er dazu nicht in der Lage ist. Die beispielhafte ISA- Verwaltungsschaltungsanordnung 2710 ist nachstehend in Verbindung mit 27 beschrieben.
  • Die beispielhafte Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 27 ist Hardware, die Mikrocode (z.B. Xucode usw.) ausführt, um den Betrieb des oder der beispielhaften Kerne und/oder des oder der Kleinvorrichtungsprozessoren 2706 zu steuern. Falls zum Beispiel der oder die Kleinvorrichtungsprozessoren 2706 Prozessoren mit 64 Bit pro Zyklus sind und die ISA-Verwaltungsschaltungsanordnung 2710 die Mikrocodeverarbeitungsschaltungsanordnung 2711 anweist, als Großkern zu arbeiten, der eine Anweisung mit 512 Bit pro Zyklus ausführt, teilt die Mikrocodeverarbeitungsschaltungsanordnung 2711 die 512-Bit-Anweisung in acht 64-Bit-Anweisungen auf, bewirkt, dass acht der 64-Bit-Zyklus-Kleinvorrichtungsprozessoren 2706 eine entsprechende 64-Bit-Anweisung ausführen, und kombiniert die Ergebnisse, um ein Ergebnis auszugeben. Zum Beispiel kann die Mikrocodeverarbeitungsschaltungsanordnung 2711 die Anweisung in kleinere Teile oder Unteranweisungen unterteilen und/oder gruppieren. Die kleineren Unteranweisungen werden in die kleineren Vorrichtungsprozessoren 2706 geladen und die Mikrocodeverarbeitungsschaltungsanordnung 2711 führt eine Kombination oder Akkumulation im größeren Registerraum einer temporären Speicherung (z.B. eines virtuellen Registers) durch. Falls zum Beispiel die Kleinvorrichtungsprozessoren 2706 nur eine 256-Bit-Breite unterstützen, eine 512-Bit-Operation erhalten wird und die Kleinvorrichtungsprozessoren 2706 ein 512-Bit-Akkumulationsregister aufweisen, können die Kleinvorrichtungsprozessoren 2706 das Akkumulationsregister verwenden und/oder konfigurieren, sodass das Akkumulationsregister in SRAM für die Operation konfiguriert sein kann. Zusätzliche Operationen können Multiplikation, additive Verschlüsselung usw. beinhalten. Auf diese Weise kann die 512-Bit-Anweisung durch acht Kleinvorrichtungsprozessoren ausgeführt werden, die als ein großer Kern fungieren. Falls die Mikrocodeverarbeitungsschaltungsanordnung 2711 einen Fehler während der Ausführung identifiziert, kann die Mikrocodeverarbeitungsschaltungsanordnung 2711 einen Fehler an die ISA-Verwaltungsschaltungsanordnung 2710 zurückgeben, um zu identifizieren, dass die ISA-Ausführung fehlgeschlagen ist, und einen Absturz zu verhindern. Die beispielhafte Mikrocodeverarbeitungsschaltungsanordnung 2711 ist nachstehend in Verbindung mit 27 näher beschrieben.
  • 28 ist ein Blockdiagramm einer beispielhaften Implementierung der beispielhaften ISA-Verwaltungsschaltungsanordnung 2710 und der Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 27. Die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 beinhaltet eine oder mehrere beispielhafte Schnittstellen 200, eine beispielhafte Authentifizierungsschaltungsanordnung 2802 und eine beispielhafte Hardwareverwaltungsschaltungsanordnung 2804. Die beispielhafte Mikrocodeverarbeitungsschaltungsanordnung 2711 beinhaltet eine oder mehrere beispielhafte Schnittstellen 210, eine beispielhafte Hardwaresteuerschaltungsanordnung 2812, eine beispielhafte Fehlerbestimmungsschaltungsanordnung 2814 und eine beispielhafte Ausgabesteuerschaltungsanordnung 2816.
  • Die beispielhafte(n) Schnittstelle(n) 200 der ISA-Verwaltungsschaltungsanordnung 2710 aus 28 bezieht(beziehen) Anweisungen zum Durchführen einer ISA-Ausführung durch Verwenden mehrerer Verarbeitungsvorrichtungen, um als ein großer Kern zu arbeiten. In einigen Beispielen bezieht die ISA-Verwaltungsschaltungsanordnung 2710 die Anweisungen direkt von dem OS/VMM 2707 aus 27. In einigen Beispielen schreibt das OS/der VMM 2707 Daten in das Register 2713, wenn eine ISA-Ausführung gewünscht ist. In solchen Beispielen greift(en) die Schnittstelle(n) 200 auf die Daten in dem Register 2713 zu, um der Hardwareverwaltungsschaltungsanordnung 2804 zu ermöglichen, zu ermitteln, ob eine ISA-Ausführung möglich ist. Außerdem überträgt die beispielhafte Schnittstelle 2800 Anweisungen an die Mikrocodeverarbeitungsschaltungsanordnung 2711, um zu bewirken, dass die Verarbeitungsressourcen gemäß der ISA-Ausführungsanfrage vom OS/VMM 2707 arbeiten.
  • Die beispielhafte Authentifizierungsschaltungsanordnung 2802 aus 28 authentifiziert ISA-Ausführungsanfragen und/oder Anweisungen, um zu verifizieren, dass eine Anfrage gültig und/oder authentisch ist. Um eine ISA-Ausführungsanfrage zu verifizieren, kann die beispielhafte Authentifizierungsschaltungsanordnung 2802 (a) die CPU auf der Plattform abgleichen, (b) den Header, die Ladeversion und/oder die Prüfsumme der ISA-Ausführungsanfrage prüfen, (c) den Authentizitäts- und/oder Signaturprüfungsdurchlauf durchführen und/oder (d) eine beliebige Validierungsmethode nutzen. Die beispielhafte Authentifizierungsschaltungsanordnung 2802 kann die CPU auf der Plattform über Fabrikbereitstellung während der Herstellung (z.B. Sicherungseinstellungen) oder Feldbereitstellung über ein Firmware/Mikrocode-Patch mit einer bereitgestellten CPU-ID/einem Manifest abgleichen. Der CPU-Abgleich kann nach der Bereitstellung im Feld dynamisch über Richtlinien und/oder Out-of-the-Band-Verwaltbarkeit über die vertrauenswürdige Ausführungsumgebung (TEE) der Plattform gesteuert werden. Falls die ISA-Ausführungsanfrage nicht gültig und/oder authentisch ist, kann die Authentifizierungsschaltungsanordnung 2802 das OS/den VMM 2707 darüber informieren, dass die ISA-Ausführungsanfrage nicht validiert werden konnte, und/oder die Steuerung an das OS/den VMM 2707 zurückgeben.
  • Die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 aus 28 bezieht validierte ISA-Ausführungsanfragen und ermittelt basierend auf den Anforderungen der ISA-Ausführungsanfrage, der Verfügbarkeit und/oder Fähigkeit der Verarbeitungsressourcen (z.B. des oder der Kerne 2704 und/oder des oder der Kleinvorrichtungsprozessoren 2706) und beliebiger Richtlinien, wie die ISA-Ausführungsanfragen auszuführen sind. Eine Richtlinie kann eine vom Benutzer und/oder Hersteller entworfene Richtlinie sein, die basierend auf verschiedenen Faktoren identifiziert, ob eine ISA-Ausführung ausgeführt werden sollte, emuliert werden sollte und/oder blockiert werden sollte. Die Hardwareverwaltungsschaltungsanordnung 2804 überwacht die Fähigkeit und/oder die Verfügbarkeit der Prozessorressourcen (z.B. des oder der Kerne 2704 und/oder des oder der Kleinvorrichtungsprozessoren 2706). Falls eine ISA-Anfrage dem Ausführen einer Anweisung mit XBits pro Zyklus entspricht, die eine Gleitkommaoperation beinhaltet, ermittelt die Hardwareverwaltungsschaltungsanordnung 2804, ob die Verarbeitungsressourcen verfügbar sind und in der Lage sind, die ISA-Ausführungsanfrage mit XBits pro Zyklus für eine Gleitkommaoperation zu handhaben. Falls zum Beispiel die Gesamtbits pro Zyklus, die durch zwei oder mehr verfügbare, fähige Prozessorressourcen bereitgestellt werden, gleich den X Bits pro Zyklus sind oder diese überschreiten, kann die Hardwareverwaltungsschaltungsanordnung 2804 ermitteln, dass eine ISA-Ausführung verfügbar ist, und die Mikrocodeverarbeitungsschaltungsanordnung 2711 anweisen, die Ausführung der ISA-Ausführung als ein großer Kern unter Verwendung der zwei oder mehr Prozessorressourcen (z.B. des oder der Kerne 2704 und/oder des oder der Kleinvorrichtungsprozessoren 2706) zu koordinieren.
  • Außerdem kann die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 aus 28 ermitteln, dass zwei oder mehr Prozessorressourcen in der Lage sind, die Gleitkommaoperation durchzuführen, aber nicht gemäß den Anforderungen der ISA-Ausführung. Falls die Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass die ISA-Ausführungsanforderungen nicht erfüllt werden können, kann die Hardwareverwaltungsschaltungsanordnung 2804 identifizieren, wann die Anforderungen erfüllt werden können, und/oder kann ein Emulationsprotokoll erzeugen, um die ISA-Anfrage auszuführen, allerdings nicht gemäß den Anforderungen. Auf diese Weise kann die Hardwareverwaltungsschaltungsanordnung 2804 mit dem OS/VMM 2707 verhandeln, um zu ermitteln, ob mit der Emulation fortgefahren, nicht fortgefahren und/oder gewartet werden soll, bis zusätzliche Ressourcen verfügbar sind. Falls die Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass die ISA-Ausführung nicht möglich ist und/oder zukünftig möglicherweise nicht möglich ist, überträgt die Hardwareverwaltungsschaltungsanordnung 2804 eine Antwort (z.B. über die Schnittstelle(n) 200) an das OS/den VMM 2707, um anzugeben, dass die ISA-Ausführung nicht möglich ist. Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass die Verarbeitungsressourcen nicht in der Lage sind, die ISA-Ausführungsanfrage zu handhaben (z.B. unabhängig von der Verfügbarkeit), erzeugt die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 eine Ausnahme eines ISA-Ausführungsblocks, um eine Ausführung der ISA-Ausführung zu verhindern, und gibt dem beispielhaften OS/VMM 2707 an, dass die Verarbeitungsressourcen nicht in der Lage sind, die ISA-Ausführung auszuführen. Nachdem die Hardwareverwaltungsschaltungsanordnung 2804 ermittelt hat, wie die ISA-Ausführungsanfrage zu handhaben ist, weist die Hardwareverwaltungsschaltungsanordnung 2804 die Mikrocodeverarbeitungsschaltungsanordnung 2711 an, die Verarbeitungsressourcen entsprechend zu steuern.
  • Die beispielhafte Schnittstelle 2810 der Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 28 bezieht Anweisungen bezüglich der Ausführung einer ISA-Ausführungsanfrage von der ISA-Verwaltungsschaltungsanordnung 2710. Zusätzlich bezieht(beziehen) die beispielhafte(n) Schnittstelle(n) 210 ISA-basierte Anweisungen zur ISA-Ausführung. Nachdem die ISA-Anweisungen abgeschlossen sind, überträgt(übertragen) die Schnittstelle(n) 210 die Ausgabe an das OS/den VMM 2707 (z.B. direkt oder über das BIOS 2708).
  • Die beispielhafte Hardwaresteuerschaltungsanordnung 2812 aus 28 ermittelt basierend auf den Anweisungen von der ISA-Verwaltungsschaltungsanordnung 2710, wie die Verarbeitungsressourcen (z.B. der oder die beispielhaften Kerne 2704 und/oder der oder die beispielhaften Kleinvorrichtungsprozessoren 2706) strukturiert werden sollen, um die ISA-Ausführung auszuführen. Zum Beispiel kann die Hardwaresteuerschaltungsanordnung 2812 eine ISA-Anweisung in Unteranweisungen unterteilen, die durch die verfügbaren Verarbeitungsressourcen ausgeführt werden können, und die Unteranweisungen den entsprechenden Verarbeitungsressourcen bereitstellen (z.B. über die Schnittstelle(n) 210). Falls zum Beispiel eine 2728-Bit-Anweisung erhalten wird, kann die Hardwaresteuerschaltungsanordnung 2812 die 2728-Bit-Anweisung in zwei 64-Bit-Unteranweisungen unterteilen, die durch zwei 64-Bit-Kleinvorrichtungsprozessoren auszuführen sind (z.B. die erste Unteranweisung an den ersten Kleinvorrichtungsprozessor und die zweite Unteranweisung an den zweiten Kleinvorrichtungsprozessor). Auf diese Weise können die Verarbeitungsressourcen die größere Anweisung ohne die Verwendung einer größeren Verarbeitungsressource ausführen.
  • Die beispielhafte Fehlerbestimmungsschaltungsanordnung 2814 aus 28 überwacht die Ausführung der ISA-Ausführung auf Fehler. Falls zum Beispiel eine Anweisung zu einer Division durch Null, einer unendlichen Schleife und/oder einem anderen Anweisungsfehler führt, kann die Fehlerbestimmungsschaltungsanordnung 2814 den Fehler identifizieren, die Ausführung stoppen und eine Nachricht an das OS/den VMM 2707 zurückgeben, die angibt, dass die Befehlsausführung nicht abgeschlossen werden konnte. Auf diese Weise kann die Fehlerbestimmungsschaltungsanordnung 2814 verhindern, dass Abstürze auftreten.
  • Die beispielhafte Ausgabesteuerschaltungsanordnung 2816 aus 28 bezieht die mehreren Ausgaben von den mehreren Verarbeitungsressourcen und kombiniert die Ausgaben, um eine einzige Ausgabe zu erzeugen. Falls zum Beispiel die Hardwaresteuerschaltungsanordnung 2812 eine 2728-Bit-Anweisung in zwei 64-Bit-Anweisungen für zwei 64-Bit-Verarbeitungsressourcen teilt, bezieht die Ausgabesteuerschaltungsanordnung 2816 die erste Ausgabe von der ersten Verarbeitungsressource und die zweite Ausgabe von der zweiten Verarbeitungsressource und kombiniert die Ausgaben, um eine 2728-Bit-Ausgabe zu erzeugen. Die Ausgabesteuerschaltungsanordnung 2816 überträgt die Ausgabe über die Schnittstelle(n) 2810 an das OS/den VMM 2707.
  • Obwohl eine beispielhafte Art und Weise des Implementierens der ISA-Verwaltungsschaltungsanordnung 2710 und/oder der Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 27 in 2 veranschaulicht ist, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in 28 veranschaulicht sind, kombiniert, geteilt, umgeordnet, weggelassen, eliminiert und/oder auf eine beliebige andere Weise implementiert werden. Ferner können die beispielhafte(n) Schnittstelle(n) 200, die beispielhafte Authentifizierungsschaltungsanordnung 2802, die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804, die beispielhafte(n) Schnittstelle(n) 210, die beispielhafte Hardwaresteuerschaltungsanordnung 2812, die beispielhafte Fehlerbestimmungsschaltungsanordnung 2814, die beispielhafte Ausgabesteuerschaltungsanordnung 2816 und/oder allgemeiner die ISA-Verwaltungsschaltungsanordnung 2710 und/oder die Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 27 und 28 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. Dementsprechend können zum Beispiel beliebige der beispielhaften Schnittstelle(n) 200, der beispielhaften Authentifizierungsschaltungsanordnung 2802, der beispielhaften Hardwareverwaltungsschaltungsanordnung 2804, der beispielhaften Schnittstelle(n) 210, der beispielhaften Hardwaresteuerschaltungsanordnung 2812, der beispielhaften Fehlerbestimmungsschaltungsanordnung 2814, der beispielhaften Ausgabesteuerschaltungsanordnung 2816 und/oder allgemeiner der ISA-Verwaltungsschaltungsanordnung, 2710 und/oder der Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 27 und 28 durch eine Prozessorschaltung, analoge Schaltung(en), digitale Schaltung(en), Logikschaltung(en), programmierbare(n) Prozessor(en), programmiertbare(n) Mikrocontroller, Grafikverarbeitungseinheit(en) (GPU(s)), Digitalsignalprozessor(en) (DSP(s)), anwendungsspezifische integrierte Schaltung(en) (ASIC(s)), programmierbare Logikvorrichtung(en) (PLD(s)) und/oder frei programmierbare Logikvorrichtung(en) (FPLD(s)), wie etwa feldprogrammierbare Gate-Arrays (FPGAs) implementiert werden. Wenn zu lesen ist, dass beliebige der Einrichtungs- oder Systemansprüche dieses Patents eine reine Software- und/oder Firmware-Implementierung abdecken, sind die ISA-Verwaltungsschaltungsanordnung 2710 und/oder die Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 27 und 28 hiermit ausdrücklich so definiert, dass sie eine nicht-transiente computerlesbare Speichervorrichtung oder Speicherplatte beinhalten, wie etwa einen Speicher, eine DVD (Digital Versatile Disk), eine CD (Compact Disk), eine Blu-Ray-Disk usw., einschließlich der Software und/oder Firmware. Ferner können die ISA-Verwaltungsschaltungsanordnung 2710 und/oder die Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 27 und 28 ein oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu oder anstelle der in 27 und 28 veranschaulichten beinhalten und/oder können mehr als eines von beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen beinhalten.
  • Flussdiagramme, die eine beispielhafte Hardwarelogikschaltungsanordnung, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren der ISA-Verwaltungsschaltungsanordnung 2710 und/oder der Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 27 und 28 darstellen, sind in 3-5 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch eine Prozessorschaltung sein, wie etwa die Prozessorschaltung 3312, die in der nachstehend in Verbindung mit 33 besprochenen beispielhaften Prozessorplattform 3300 gezeigt ist, und/oder die nachstehend in Verbindung mit 48 besprochenen beispielhafte Prozessorschaltung. Das Programm kann in Software umgesetzt sein, die auf einem oder mehreren nicht-transienten computerlesbaren Speicherungsmedien gespeichert ist, wie etwa einer CD, einer Diskette, einem Festplattenlaufwerk (HDD), einer DVD, einer Blu-Ray-Disk, einem flüchtigen Speicher (z.B. Direktzugriffsspeicher (RAM) eines beliebigen Typs usw.) oder einem nichtflüchtigen Speicher (z.B. FLASH-Speicher, HDD usw.), die einer Prozessorschaltung zugeordnet sind, die sich in einer oder mehreren Hardware-Vorrichtungen befindet, jedoch könnten alternativ das gesamte Programm und/oder Teile davon durch eine oder mehrere andere Hardware-Vorrichtungen als die Prozessorschaltung ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt werden. Die maschinenlesbaren Anweisungen können über mehrere Hardware-Vorrichtungen verteilt und/oder durch zwei oder mehr Hardware-Vorrichtungen (z.B. eine Server- und eine Client-Hardware-Vorrichtung) ausgeführt werden. Die Client-Hardware-Vorrichtung kann zum Beispiel durch eine Endpunkt-Client-Hardware-Vorrichtung (z.B. eine Hardware-Vorrichtung, die einem Benutzer zugeordnet ist) oder eine Zwischen-Client-Hardware-Vorrichtung (z.B. ein Funkzugangsnetz-(radio access network, RAN-) Gateway, das Kommunikation zwischen einem Server und einer Endpunkt-Client-Hardware-Vorrichtung ermöglichen kann) implementiert werden. Gleichermaßen können die nicht-transienten computerlesbaren Speicherungsmedien ein oder mehrere Medien beinhalten, die sich in einer oder mehreren Hardware-Vorrichtungen befinden. Auch wenn das beispielhafte Programm unter Bezugnahme auf das in 2 veranschaulichte Flussdiagramm beschrieben ist, können ferner viele andere Verfahren zum Implementieren der Rechenvorrichtung 2700, der ISA-Verwaltungsschaltungsanordnung 2710 und/oder der Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 27 und 28 alternativ verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können beliebige oder alle der Blöcke durch eine oder mehrere Hardware-Schaltungen (z.B. Prozessorschaltung, diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführen von Software oder Firmware durchzuführen. Die Prozessorschaltung kann an unterschiedlichen Netzwerkstandorten verteilt und/oder lokal zu einer oder mehreren Hardwarevorrichtungen sein (z.B. ein Einzelkernprozessor (z.B. eine Einzelkern-Zentralprozessoreinheit (CPU)), ein Mehrkernprozessor (z.B. eine Mehrkern-CPU) usw.) in einer einzigen Maschine, mehrere Prozessoren, die über mehrere Server eines Server-Racks verteilt sind, mehrere Prozessoren, die über ein oder mehrere Server-Racks verteilt sind, eine CPU und/oder ein FPGA, die sich in demselben Package (z.B. demselben IC- (integrierte Schaltung) Package oder in zwei oder mehr separaten Gehäusen usw. befinden).
  • Die vorliegend beschriebenen maschinenlesbaren Anweisungen können in einem komprimierten Format und/oder einem verschlüsselten Format und/oder einem fragmentierten Format und/oder einem kompilierten Format und/oder einem ausführbaren Format und/oder einem verpackten Format usw. gespeichert sein. Die vorliegend beschriebenen maschinenlesbaren Anweisungen können als Daten oder Datenstruktur (z.B. Abschnitte von Anweisungen, Code, Darstellungen von Code usw.) gespeichert sein, die eingesetzt werden können, um maschinenlesbare Anweisungen zu erstellen, herzustellen und/oder zu erzeugen. Zum Beispiel können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speicherungsvorrichtungen und/oder Rechenvorrichtungen (z.B. Servern) gespeichert sein, die sich an denselben oder unterschiedlichen Orten eines Netzwerks oder einer Sammlung von Netzwerken (z.B. in der Cloud, in Edge-Vorrichtungen usw.) befinden. Die maschinenlesbaren Anweisungen können eines oder mehrere von Installation, Modifikation, Anpassung, Aktualisierung, Kombination, Ergänzung, Konfiguration, Entschlüsselung, Dekomprimierung, Entpacken, Verteilung, Neuzuweisung, Kompilierung usw. erfordern, um sie durch eine Rechenvorrichtung und/oder eine andere Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Zum Beispiel können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert sein, die einzeln komprimiert, verschlüsselt und/oder auf separaten Rechenvorrichtungen gespeichert sind, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und/oder kombiniert werden, einen Satz maschinenausführbarer Anweisungen bilden, die eine oder mehrere Operationen implementieren, die zusammen ein Programm, wie etwa das vorliegend beschriebene, bilden können.
  • In einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert sein, in dem sie von einer Prozessorschaltung gelesen werden können, aber das Hinzufügen zu einer Bibliothek (z.B. einer Dynamic Link Library (DLL)), zu einem Softwareentwicklungskit (SDK), einer Anwendungsprogrammierungsschnittstelle (API) usw. erfordern, um die maschinenlesbaren Anweisungen auf einer speziellen Rechenvorrichtung oder einer anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen konfiguriert (z.B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.) werden, bevor die maschinenlesbaren Anweisungen und/oder das bzw. die entsprechende(n) Programm(e) gänzlich oder teilweise ausgeführt werden können. Somit können maschinenlesbare Medien, wie vorliegend verwendet, maschinenlesbare Anweisungen und/oder Programm(e) unabhängig von dem jeweiligen Format oder Zustand der maschinenlesbaren Anweisungen und/oder Programm(e) beinhalten, wenn sie gespeichert oder sich anderweitig in Ruhe oder im Durchgang befinden.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können durch eine beliebige vergangene, aktuelle oder zukünftige Anweisungssprache, Skriptsprache, Programmiersprache usw. repräsentiert sein. Beispielsweise können die maschinenlesbaren Anweisungen unter Verwendung beliebiger der folgenden Sprachen repräsentiert sein: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift usw.
  • Wie vorstehend erwähnt, können die beispielhaften Operationen aus 3-5 unter Verwendung ausführbarer Anweisungen (z.B. computer- und/oder maschinenlesbarer Anweisungen) implementiert werden, die auf einem oder mehreren nichtflüchtigen computer- und/oder maschinenlesbaren Medien gespeichert sind, wie etwa optischen Speicherungsvorrichtungen, magnetischen Speicherungsvorrichtungen, einem HDD, einem Flash-Speicher, einem Nur-Lese-Speicher (ROM), einer CD, einer DVD, einem Cache, einem RAM eines beliebigen Typs, einem Register und/oder einer beliebigen anderen Speicherungsvorrichtung oder Speicherungsplatte, auf der Informationen für eine beliebige Dauer (z.B. für längere Zeiträume, permanent, für kurze Vorgänge, zum temporären Puffern und/oder zum Cachen der Informationen) gespeichert sind. Wie vorliegend verwendet, sind die Begriffe nicht-transientes computerlesbares Medium und nicht-transientes computerlesbares Speicherungsmedium ausdrücklich so definiert, dass sie eine beliebige Art von computerlesbarer Speicherungsvorrichtung und/oder Speicherungsplatte beinhalten und sich ausbreitende Signale ausschließen und Übertragungsmedien ausschließen.
  • „Beinhaltend“ und „umfassend“ (und alle Formen und Zeitformen davon) werden hier als offene Begriffe verwendet. Wenn somit ein Anspruch eine beliebige Form von „beinhalten“ oder „umfassen“ (z.B. umfasst, beinhaltet, umfassend, beinhaltend, aufweisend usw.) als eine Präambel oder innerhalb einer Anspruchsrezitation einer beliebigen Art einsetzt, versteht es sich somit, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne außerhalb des Schutzumfangs des entsprechenden Anspruchs oder der entsprechenden Rezitation zu fallen. Wenn vorliegend der Ausdruck „mindestens“ als der Übergangsausdruck in zum Beispiel einer Präambel eines Anspruchs verwendet wird, ist er auf die gleiche Art und Weise offen, wie der Begriff „umfassend“ und „beinhaltend“ offen ist. Der Begriff „und/oder“ betrifft, wenn er zum Beispiel in einer Form wie A, B und/oder C verwendet wird, eine beliebige Kombination oder Untermenge von A, B, C wie (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C oder (7) A mit B und mit C. Wie vorliegend im Zusammenhang mit der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, bezweckt der Ausdruck „mindestens eines von A und B“ auf Implementierungen zu verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Gleichermaßen soll, wie vorliegend im Kontext des Beschreibens von Strukturen, Komponenten , Elementen, Objekten und/oder Dingen verwendet, der Ausdruck „mindestens eines von A oder B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B und (3) mindestens einem A und mindestens einem B beinhalten. Wie vorliegend im Kontext der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll der Ausdruck „mindestens eines von A und B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Gleichermaßen soll, wie vorliegend im Zusammenhang mit der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, der Ausdruck „mindestens eines von A oder B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten.
  • Wie hier verwendet schließen Singularreferenzen (z. B. „ein“, „eine“, „eines“, „erstes“, „zweites“ usw.) einen Plural nicht aus. Der Begriff „ein“ Objekt, wie vorliegend verwendet, verweist auf eines oder mehrere dieses Objekts. Die Begriffe „ein“, „ein oder mehrere“ und „mindestens ein“ werden vorliegend austauschbar verwendet. Wenngleich einzeln aufgelistet, können ferner eine Vielzahl von Mitteln, Elementen oder Verfahrensaktionen durch z.B. dieselbe Entität oder dasselbe Objekt implementiert werden. Auch wenn einzelne Merkmale in unterschiedlichen Beispielen oder Ansprüchen enthalten sein können, können diese zudem möglicherweise kombiniert werden und die Aufnahme in unterschiedlichen Beispielen oder Ansprüchen impliziert nicht, dass eine Kombination von Merkmalen nicht machbar und/oder vorteilhaft ist.
  • 29 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 2900 darstellt, die durch eine Prozessorschaltung (z.B. die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 aus 2) ausgeführt und/oder instanziiert werden können, um eine ISA-Ausführungsanfrage zu handhaben. Die Anweisungen beginnen bei Block 2902, wenn die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, ob Daten in das ISA-Managerstatusregister (z.B. eines oder mehrere der Register 2713 aus 27) geschrieben wurden. Wie vorstehend beschrieben, kann das OS/der VMM 2707 Daten in das Register 2713 schreiben, um einen Interrupt auszulösen, wenn eine ISA-Ausführung stattfinden soll. In einigen Beispielen kann das OS/der VMM 2707 die Anweisungen direkt an die ISA-Verwaltungsschaltungsanordnung 2710 übertragen.
  • Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass keine Daten in das ISA-Managerstatusregister 2713 geschrieben wurden (Block 2902: NEIN), kehrt die Steuerung zu Block 2902 zurück. Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass Daten in das ISA-Managerstatusregister 2713 geschrieben wurden (Block 2902: JA), authentifiziert die beispielhafte Authentifizierungsschaltungsanordnung 2802 die ISA-Ausführungsanfrage, die den Daten in dem ISA-Managerstatusregister 2713 entspricht (Block 2904). Wie vorstehend in Verbindung mit 2 beschrieben, kann die beispielhafte Authentifizierungsschaltungsanordnung 2802 die ISA-Anfrage unter Verwendung einer beliebigen Authentifizierungsmethode authentifizieren, um zu ermitteln, dass die ISA-Ausführungsanfrage gültig ist.
  • Falls die beispielhafte Authentifizierungsschaltungsanordnung 2802 ermittelt, dass die ISA-Anfrage nicht authentisch ist (Block 306: NEIN), gibt die Authentifizierungsschaltungsanordnung 2802 eine Antwort an das OS/den VMM 2707 zurück, die angibt, dass die ISA-Anfrage nicht ausgeführt werden kann (Block 2908), und die Steuerung fährt mit Block 2922 fort. Falls die beispielhafte Authentifizierungsschaltungsanordnung 2802 ermittelt, dass die ISA-Anfrage authentisch ist (Block 306: JA), evaluiert die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 eine ISA-Anfrage basierend auf einer oder mehreren Polaritäten, Ressourcenkapazität und/oder Ressourcenfähigkeit (Block 310). Zum Beispiel kann die Hardwareverwaltungsschaltungsanordnung 2804 eine oder mehrere Richtlinien verarbeiten, um zu ermitteln, wie die Anfrage zu handhaben ist, und/oder kann ermitteln, ob die verfügbaren Prozessorressourcen in der Lage sind, die Anfrage zu handhaben.
  • Bei Block 2912 ermittelt die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804, ob die ISA gemäß den Anforderungen, die der ISA-Ausführung entsprechen (z.B. Latenz, Bitrate usw.), und/oder gemäß der einen oder den mehreren Richtlinien ausgeführt werden kann. Zum Beispiel ermittelt die Hardwareverwaltungsschaltungsanordnung 2804, ob die Prozessorressourcen in der Lage sind und/oder verfügbar sind, die ISA-Ausführung zu handhaben. Falls die Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass die ISA-Anfrage durch die Prozessorressourcen ausgeführt werden kann (Block 2912: JA), weist die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 den Mikrocode der Hardware (z.B. die Mikrocode-ISA-Verwaltungsschaltungsanordnung 2711) an, zu bewirken, dass die Verarbeitungskomponenten wie ein großer Kern arbeiten, um die ISA-Ausführung zu handhaben (Block 314). Zum Beispiel kann die Hardwareverwaltungsschaltungsanordnung 2804 die ISA-Ausführungsanweisungen und/oder Anforderungen an den Mikrocode liefern, um zu bewirken, dass der Mikrocode die ISA-Ausführung mit den entsprechenden Prozessorressourcen ermöglicht.
  • Falls die Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass die ISA-Anfrage nicht durch die Prozessorressourcen ausgeführt werden kann (Block 2912: NEIN), ermittelt die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804, ob die Prozessorressourcen die ISA-Ausführung emulieren und/oder die ISA-Anfrage zu einem späteren Zeitpunkt ausführen können (Block 2916) (z.B. basierend auf Richtlinie(n), Ressourcenfähigkeit und/oder Ressourcenverfügbarkeit). Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass eine Emulation stattfinden sollte (Block 2916: JA), ermöglicht die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 die Ausführung der ISA-Emulation (Block 2918), wie nachstehend in Verbindung mit 29 näher beschrieben ist.
  • Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass keine Emulation stattfinden sollte (Block 2916: NEIN), erzeugt die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 eine Ausnahme für die ISA-Anfrage an den VMM/Host 2706 und/oder blockiert diese (z.B. über die Schnittstelle(n) 200), um anzugeben, dass die ISA-Anfrage nicht ausgeführt werden kann (Block 2920). Bei Block 2922 gibt die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 die Steuerung an das beispielhafte OS/den beispielhaften VMM 2707 zurück.
  • 30 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen darstellt, die durch eine Prozessorschaltung (z.B. die ISA-Verwaltungsschaltungsanordnung 2710 aus 2) ausgeführt und/oder instanziiert werden können, um in Verbindung mit Block 2918 aus 29 eine ISA-Emulation zu ermöglichen.
  • Die maschinenlesbaren Anweisungen und/oder Operationen entsprechend Block 2918 aus 30 beginnen bei Block 3002, wenn die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, ob später zusätzliche Ressourcen verfügbar sein werden, um die ISA-Ausführung entsprechend der ISA-Anfrage auszuführen. Zum Beispiel kann die Hardwareverwaltungsschaltungsanordnung 2804 ermitteln, ob zusätzliche Hardware (z.B. ausreichend Ressourcen zum Ausführen der ISA-Ausführung gemäß der oder den Richtlinien und/oder dem oder den Parametern) gegenwärtig eine oder mehrere Arbeitslasten ausführen, aber für die ISA-Ausführung frei sein wird, nachdem die eine oder die mehreren Arbeitslasten abgeschlossen sind.
  • Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass zusätzliche Ressourcen später nicht verfügbar sein werden, um die ISA-Ausführung entsprechend der ISA-Anfrage auszuführen (Block 3002: NEIN), fährt die Steuerung mit Block 3008 fort. Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass diese zusätzliche Ressource später zum Ausführen der ISA-Ausführung entsprechend der ISA-Anfrage verfügbar sein wird (Block 3002: JA), weist die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 die Schnittstelle(n) 200 an, eine Angabe, wann die ISA-Anweisungen durch die Prozessorressourcen ausgeführt werden können, an das beispielhafte OS/den beispielhaften VMM 2707 zu übertragen (Block 3004). Zum Beispiel kann die Hardwareverwaltungsschaltungsanordnung 2804 basierend auf der Geschwindigkeit der aktuell nicht verfügbaren Ressourcen und der Menge an abgeschlossener Arbeitslast ermitteln und/oder schätzen, wann die aktuell nicht verfügbare Prozessorressource verfügbar sein wird.
  • Bei Block 3006 ermittelt die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 basierend auf einer Antwort vom OS/VMM 2707, ob das OS/der VMM 2707 die spätere Ausführung abgelehnt hat. Nachdem zum Beispiel die Angabe an das OS/den VMM 2707 gesendet wurde, wann die Verarbeitungsressourcen verfügbar sein werden, kann das OS/der VMM 2707 ermitteln, ob es/er auf vollständige Ausführung für die ISA-Anweisungen warten oder mit sofortiger Emulation fortfahren möchte. Falls das OS/der VMM 2707 ermittelt, auf die Verfügbarkeit der zusätzlichen Ressourcen zu warten (z.B. basierend auf Benutzer- und/oder Herstellerpräferenzen, die angeben, wann darauf gewartet werden soll, dass die Ressourcen vollständig verfügbar sind, falls sie momentan nicht verfügbar sind), kann in einigen Beispielen die Steuerung zum OS/VMM 2707 zurückkehren und das OS/der VMM 2707 kann eine nachfolgende Anfrage basierend auf der identifizierten Zeit, zu der die Ressourcen verfügbar sein werden, übermitteln. Falls das OS/der VMM 2707 entscheidet, darauf zu warten, dass die zusätzlichen Ressourcen verfügbar werden, kann die Hardwareverwaltungsschaltungsanordnung 2804 in einigen Beispielen die ISA-Anweisung für die aktuell nicht verfügbaren Ressourcen reservieren und/oder in eine Warteschlange einreihen, um die ISA-Anweisungen auszuführen, nachdem die Arbeitslast abgeschlossen ist.
  • Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass das OS/der VMM 2707 die spätere Ausführung nicht abgeleht hat (Block 3006: NEIN), kehrt die Steuerung zu Block 2922 aus 29 zurück. Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass das OS/der VMM 2707 die spätere Ausführung abgelehnt hat (Block 3006: JA), identifiziert die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 eine Konfiguration von Ressourcen, die genutzt werden können, um die ISA zu emulieren. Falls zum Beispiel zwei verfügbare Kleinvorrichtungsprozessoren mit einer 64-Bitrate vorhanden sind und die ISA-Anweisungen einer 256-Bit-Anweisung entsprechen, kann die Hardwareverwaltungsschaltungsanordnung 2804 eine Konfiguration identifizieren, die zwei Kleinvorrichtungsprozessoren verwendet, um die Anweisungen mit der halben Bitrate auszuführen (z.B. 2728 Bits pro Zyklus * 2 Zyklen = 256 Bits pro 2 Zyklen). Bei Block 3010 überträgt die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 die Emulationskonfigurationsinformationen über die Schnittstelle(n) 200 an das OS/den VMM 2707. Die Emulationskonfigurationsinformationen können Informationen bezüglich der Prozessorressourcen, die zum Emulieren der ISA-Ausführung verwendet werden, der Richtlinien und/oder Parameter, die erfüllt werden, der Richtlinien und/oder Parameter, die nicht erfüllt werden, und/oder der Parameter der Emulationskonfiguration (z.B. Bitrate, Latenz usw.) beinhalten.
  • Bei Block 3012 ermittelt die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804, ob die Konfiguration durch das OS/den VMM 2707 akzeptiert wurde (z.B. basierend auf einer Antwort, die vom OS/VMM 2707 über die Schnittstelle(n) 200 erhalten wird). Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass die Konfiguration akzeptiert wurde (Block 3012: JA), weist die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 den Mikrocode der Hardware (z.B. die Mikrocodeverarbeitungsschaltungsanordnung 2711) an, zu bewirken, dass die Verarbeitungsressourcen gemäß der Emulationskonfiguration arbeiten (Block 414), und die Steuerung kehrt zu Block 2922 aus 29 zurück. Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass die Konfiguration nicht akzeptiert wurde (Block 3012: NEIN), ermittelt die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804, ob andere Emulationskonfigurationen verfügbar sind (Block 416). Auf diese Weise können das beispielhafte OS/der beispielhafte VMM 2707 und die ISA-Verwaltungsschaltungsanordnung 2710 eine Emulationskonfiguration verhandeln. In einigen Beispielen kann das OS/der VMM 2707 Anweisungen und/oder Präferenzen bereitstellen, die es/er in einer Emulationskonfiguration sehen möchte, und die ISA-Verwaltungsschaltungsanordnung 2710 kann versuchen, die Anweisungen und/oder Präferenzen zu erfüllen, und/oder eine Emulationskonfiguration bereitstellen, die besser zu den Anweisungen und/oder Präferenzen passt.
  • Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass andere Emulationskonfigurationen verfügbar sind (Block 416: JA), kehrt die Steuerung zu Block 3010 zurück. Falls die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 ermittelt, dass keine anderen Emulationskonfigurationen verfügbar sind (Block 416: NEIN), überträgt die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804 (z.B. an das OS/den VMM 2707 unter Verwendung der beispielhaften Schnittstelle(n) 200) eine Angabe, dass die Emulation nicht verfügbar ist (Block 418), und die Steuerung kehrt zu Block 2922 zurück.
  • 31 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 3100 darstellt, die durch eine Prozessorschaltung (z.B. die Mikrocodeverarbeitungsschaltungsanordnung 2711) ausgeführt und/oder instanziiert werden können, um die Verarbeitungsressourcen zum Handhaben der Ausführung von ISA-Anweisungen zu steuern. Die Anweisungen beginnen bei Block 3102, wenn die beispielhafte Hardwaresteuerschaltungsanordnung 2812 ermittelt, ob ISA-Anweisungen bezogen wurden (z.B. vom OS/VMM 2707 direkt oder über das BIOS 2708).
  • Falls die beispielhafte Hardwaresteuerschaltungsanordnung 2812 ermittelt, dass keine ISA-Anweisungen bezogen wurden (Block 3102: NEIN), kehrt die Steuerung zu Block 3102 zurück, bis ISA-Anweisungen bezogen werden. Falls die beispielhafte Hardwaresteuerschaltungsanordnung 2812 ermittelt, dass die ISA-Anweisungen bezogen wurden (Block 3102: JA), teilt die beispielhafte Hardwaresteuerschaltungsanordnung 2812 die Anweisungen in Unteranweisungen gemäß der Konfigurationsanweisung von der ISA-Verwaltungsschaltungsanordnung 2710 auf (Block 3104). Falls zum Beispiel die Konfiguration einem 2728-Bit-Prozessor und zwei 64-Bit-Prozessoren entspricht, kann die Hardwaresteuerschaltungsanordnung 2812 eine 256-Bit-Anweisung in eine 2728-Bit-Anweisung und zwei 64-Bit-Anweisungen aufteilen, um der Konfiguration zu entsprechen, wie vorstehend in Verbindung mit 27 näher beschrieben.
  • Bei Block 3106 bewirkt die beispielhafte Hardwaresteuerschaltungsanordnung 2812, dass die Verarbeitungsressourcen die aufgeteilten Anweisungen basierend auf den Konfigurationsanweisungen ausführen. Unter Verwendung des obigen Beispiels kann die Hardwaresteuerschaltungsanordnung 2812 die 2728-Bit-Anweisung an die Verarbeitungsressource liefern, die mit 2728 Bits pro Zyklus arbeitet, zur Ausführung liefern, die erste 64-Bit-Anweisung an die erste Verarbeitungsressource, die bei 64 Bits pro Zyklus arbeitet, zur Ausführung liefern, und die zweite 64-Bit-Anweisung an die zweite Verarbeitungsressource, die bei 64 Bits pro Zyklus arbeitet, zur Ausführung liefern. Bei Block 3108 ermittelt die beispielhafte Fehlerbestimmungsschaltungsanordnung 2814, ob ein Fehler an irgendeiner der Verarbeitungsressourcen aufgetreten ist. Zum Beispiel kann die Fehlerbestimmungsschaltungsanordnung 2814 Operationen identifizieren, die zu Fehlern, unendlichen Schleifen usw. führen.
  • Falls die beispielhafte Fehlerbestimmungsschaltungsanordnung 2814 ermittelt, dass ein Fehler aufgetreten ist (Block 3108: JA), überträgt (z.B. unter Verwendung der Schnittstelle(n) 210) die beispielhafte Fehlerbestimmungsschaltungsanordnung 2814 eine Angabe, dass die ISA-Anweisung nicht abgeschlossen werden konnte (Block 510), und die Anweisungen enden. Falls die beispielhafte Fehlerbestimmungsschaltungsanordnung 2814 ermittelt, dass kein Fehler aufgetreten ist (Block 3108: NEIN), kombiniert die beispielhafte Ausgabesteuerschaltungsanordnung 2816 die Ergebnisse (z.B. Ausgaben) der mehreren Ausführungen an den mehreren Prozessorressourcen, um die endgültige Ausgabe für den Zyklus zu erzeugen (Block 512), wie vorstehend in Verbindung mit 27 näher beschrieben. Zum Beispiel kann die Ausgabesteuerschaltungsanordnung 2816 die Ergebnisse (z.B. Ausgaben) durch Verketten der Ausgaben, Addieren der Ausgaben, Multiplizieren der Ausgaben usw. kombinieren. Falls die ISA-Anweisung mehreren Anweisungen über mehrere Zyklen entspricht, kann die Mikrocodeverarbeitungsschaltungsanordnung 2711 die Ausgabe für den Zyklus in einem Speicher (z.B. einem Register, Cache, flüchtigem Speicher, nichtflüchtigem Speicher usw.) zur Verwendung während eines nachfolgenden Zyklus und/oder bis alle Anweisungen abgeschlossen sind, speichern und dann einige oder alle der Ausgaben der Zyklen kombinieren. Bei Block 3114 verwendet die beispielhafte Ausgabesteuerschaltungsanordnung 2816 die Schnittstelle(n) 210, um die Ausgaben an das OS/den VMM 2707 zu übertragen (z.B. direkt oder über das BIOS 2708).
  • 32 veranschaulicht ein beispielhaftes Diagramm 3200, das dem Betrieb der ISA-Verwaltungsschaltungsanordnung 2710 aus 27 entspricht. Das beispielhafte Diagramm 3200 aus 32 beginnt, wenn das OS/der VMM 2707 Daten in das ISA-Managerstatusregister (ISA_MSR) schreibt, um einen Interrupt für die ISA-Verwaltungsschaltungsanordnung 2710 zu initiieren, um zu ermitteln, ob und/oder wie die ISA-Anweisungen gemäß der ISA-Ausführungsanfrage auszuführen sind. Wenn die ISA-Verwaltungsschaltungsanordnung (die z.B. den UEFI-BIOS-Mikrocodeaktualisierungsmanager implementiert) den ISA_MSR-Schreibvorgang identifiziert, decodiert und verifiziert die Authentifizierungsschaltungsanordnung 2802 (die z.B. den ISA-Decodierer und/oder - Evaluierer implementiert) die Authentizität des ISA_MSR-Schreibvorgangs. Falls authentifiziert, verifiziert die Hardwareverwaltungsschaltungsanordnung 2804 (die z.B. den ISA-Manager implementiert) die ISA-Konfiguration für die aktuelle Sitzung mit MPI-(Message Passage Interface, Nachrichtenübergabeschnittstelle) Bits, konfiguriert die ISA-MPI-Bits hinsichtlich der Erlaubnis der Ausführung, Emulation oder Erzeugung einer Ausnahme und wendet die ISA-Konfiguration für die aktuelle Sitzung an, indem der Xucode (z.B. die Mikrocodeverarbeitungsschaltungsanordnung 2711) angewiesen wird. In einigen Beispielen kann die Hardwareverwaltungsschaltungsanordnung 2804 richtlinienbasierte Handlungen vornehmen, einschließlich des Erzeugens neuer Mikro-Ops unter Verwendung eines Überschuss-Mappers zur Ausführung, um die Verarbeitungsressourcen zum Ausführen der ISA-Anweisungen zu konfigurieren. Nach Abschluss gibt die beispielhafte ISA-Verwaltungsschaltungsanordnung 2710 die Steuerung an das OS/den VMM 2707 zurück. Um in den normalen „Thin“-Modus zurückzukehren (bei dem z.B. die Verarbeitungsressourcen nicht als ein großer Kern, sondern als separate kleinere Prozessorvorrichtungen arbeiten), tritt ein ähnlicher Prozess auf.
  • 33 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 3300, die zum Ausführen und/oder Instanziieren der maschinenlesbaren Anweisungen und/oder Operationen aus 3-5 strukturiert ist, um die ISA-Verwaltungsschaltungsanordnung 2710 und/oder die Mikrocodeverarbeitungsschaltungsanordnung 2711 aus 27 zu implementieren. Die Prozessorplattform 3300 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z.B. ein neuronales Netzwerk), eine Mobilvorrichtung (z.B. ein Mobiltelefon, ein Smartphone, ein Tablet wie etwa ein iPad™), ein Personal Digital Assistant (PDA), ein Internetgerät, ein DVD-Spieler, ein CD-Spieler, ein digitalen Videorecorder, ein Blu-Ray-Spieler, eine Spielekonsole, ein persönlicher Videorecorder, eine Set-Top-Box, ein Headset (z.B. ein Augmented-Reality- (AR-) Headset, ein Virtual-Reality- (VR-) Headset usw.) oder eine andere Wearable-Vorrichtung oder eine beliebige andere Art von Rechenvorrichtung sein.
  • Die Prozessorplattform 3300 des veranschaulichten Beispiels beinhaltet eine Prozessorschaltung 3312. Die Prozessorschaltung 3312 des veranschaulichten Beispiels ist Hardware. Zum Beispiel kann die Prozessorschaltung 3312 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, FPGA-Mikroprozessoren, CPUs, GPUs, DSPs und/oder Mikrocontroller einer beliebigen gewünschten Familie oder eines beliebigen gewünschten Herstellers implementiert werden. Die Prozessorschaltung 3312 kann durch eine oder mehrere halbleiterbasierte (z.B. siliciumbasierte) Vorrichtungen implementiert werden. In diesem Beispiel implementiert die Prozessorschaltung 3312 die beispielhafte(n) Schnittstelle(n) 200, die beispielhafte Authentifizierungsschaltungsanordnung 2802, die beispielhafte Hardwareverwaltungsschaltungsanordnung 2804, die beispielhafte(n) Schnittstelle(n) 210, die beispielhafte Hardwaresteuerschaltungsanordnung 2812, die beispielhafte Fehlerbestimmungsschaltungsanordnung 2814 und die beispielhafte Ausgabesteuerschaltungsanordnung 2816.
  • Die Prozessorschaltung 3312 des veranschaulichten Beispiels beinhaltet einen lokalen Speicher 3313 (z.B. einen Cache, Register usw.). Die Prozessorschaltung 3312 des veranschaulichten Beispiels steht durch einen Bus 3318 in Kommunikation mit einem Hauptspeicher, der einen flüchtigen Speicher 3314 und einen nichtflüchtigen Speicher 3316 beinhaltet. Der flüchtige Speicher 3314 kann durch SDRAM (Synchronous Dynamic Random Access Memory), DRAM (Dynamic Random Access Memory), RDRAMO (RAMBUSO Dynamic Random Access Memory) und/oder eine beliebige andere Art von RAM-Vorrichtung implementiert werden. Der nichtflüchtige Speicher 3316 kann durch Flash-Speicher und/oder eine beliebige andere gewünschte Art von Speichervorrichtung implementiert werden. Der Zugriff auf den Hauptspeicher 3314, 3316 des veranschaulichten Beispiels wird durch eine Speichersteuerung 3317 gesteuert.
  • Die Prozessorplattform 3300 des veranschaulichten Beispiels beinhaltet zudem eine Schnittstellenschaltung 3320. Die Schnittstellenschaltung 3320 kann durch Hardware gemäß einer beliebigen Art von Schnittstellenstandard implementiert werden, wie etwa einer Ethernet-Schnittstelle, einer USB- (Universal Serial Bus) Schnittstelle, einer Bluetooth®-Schnittstelle, einer NFC- (near field communication, Nahfeldkommunikation), einer PCI-Schnittstelle und/oder einer PCIe-Schnittstelle.
  • In dem veranschaulichten Beispiel sind eine oder mehrere Eingabevorrichtungen 3322 mit der Schnittstellenschaltung 3320 verbunden. Die Eingabevorrichtung(en) 3322 ermöglicht (ermöglichen) einem Benutzer, Daten und/oder Befehle in die Prozessorschaltung 3312 einzugeben. Die eine oder die mehreren Eingabevorrichtungen 3322 können zum Beispiel durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert werden.
  • Eine oder mehrere Ausgabevorrichtungen 3324 sind ebenfalls mit der Schnittstellenschaltung 3320 des veranschaulichten Beispiels verbunden. Die Ausgabevorrichtungen 3324 können zum Beispiel durch Anzeigevorrichtungen (z.B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhren- (CRT-) Anzeige, eine IPS- (in-place switching, in einer Ebene schaltend) Anzeige, einen berührungsempfindlichen Bildschirm usw.), eine taktile Ausgabevorrichtung, einen Drucker und/oder Lautsprecher implementiert werden. Die Schnittstellenschaltung 3320 des veranschaulichten Beispiels beinhaltet somit typischerweise eine Grafiktreiber-Karte, einen Grafiktreiber-Chip und/oder eine Grafikprozessor-Schaltungsanordnung, wie etwa eine GPU.
  • Die Schnittstellenschaltung 3320 des veranschaulichten Beispiels beinhaltet zudem eine Kommunikationsvorrichtung, wie etwa einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein Heim-Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerkschnittstelle, um den Austausch von Daten mit externen Maschinen (z.B. Rechenvorrichtungen einer beliebigen Art) durch ein Netzwerk 3326 zu ermöglichen. Die Kommunikation kann zum Beispiel durch eine Ethernet-Verbindung, eine DSL- (digital subscriber line) Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Sichtliniensystem, ein Mobilfunksystem, eine optische Verbindung usw. erfolgen.
  • Die Prozessorplattform 3300 des veranschaulichten Beispiels beinhaltet zudem eine oder mehrere Massenspeicherungsvorrichtungen 3328 zum Speichern von Software und/oder Daten. Zu Beispielen für solche Massenspeicherungsvorrichtungen 3328 zählen magnetische Speicherungsvorrichtungen, optische Speicherungsvorrichtungen, Diskettenlaufwerke, HDDs, CDs, Blu-Ray-Disk-Laufwerke, RAID-(redundant array of independent disks, redundante Anordnung unabhängiger Festplatten) Systeme, Solid-State-Speicherungsvorrichtungen, wie etwa Flash-Speichervorrichtungen, und DVD-Laufwerke.
  • Die maschinenausführbaren Anweisungen 3332, die durch die maschinenlesbaren Anweisungen aus 3 und 5 implementiert werden, können in der Massenspeichervorrichtung 3328, in dem flüchtigen Speicher 3314, in dem nicht-flüchtigen Speicher 3316 und/oder auf einem entfernbaren nicht-transienten computerlesbaren Speichermedium, wie etwa einer CD oder DVD, gespeichert sein.
  • Aus dem Vorstehenden versteht es sich, dass beispielhafte Systeme, Verfahren, Einrichtungen und Herstellungsartikel offenbart wurden, die eine Boot-Performanz erhöhen. Die offenbarten Systeme, Verfahren, Einrichtungen und Herstellungsartikel stellen eine software- und/oder firmwarebasierte Anwendungsprogrammierungsschnittstelle (API) bereit, um Anweisungen von einer Anwendung zu verarbeiten, die auf einem Betriebssystem, einem Virtual-Machine-Manager (VMM) usw. läuft, und weisen Mikrocode an, die Verarbeitungseinheiten so zu konfigurieren, dass sie die Anweisungen ausführen können, unabhängig davon, wie die Anweisungen strukturiert sind. Dementsprechend können vorliegend offenbarte Beispiele kleinere Ressourcen kombinieren, um Code auszuführen, der für größere Ressourcen ausgelegt ist, ohne dass die Anweisungen für die kleineren Ressourcen strukturiert werden müssen. Auf diese Weise kann die Anwendung eine Anweisung erzeugen und vorliegend offenbarte Beispiele können angesichts der Einschränkungen des Rechensystems ermitteln, ob und/oder wie die Anweisung auszuführen ist.
  • VORRICHTUNGEN, HERSTELLUNGSARTIKEL UND VERFAHREN FÜR ZUSAMMENSETZBARE RECHENKNOTEN FÜR MASCHINELLES LERNEN
  • Rechenarbeitslasten können unter Verwendung von Maschinenlernmodellen ausgeführt werden. Maschinenlernmodelle, wie etwa neuronale Netze, sind nützliche Werkzeuge, die ihren Wert bei der Lösung komplexer Probleme bezüglich Mustererkennung, Verarbeitung natürlicher Sprache, automatischer Spracherkennung usw. gezeigt haben. Das Identifizieren einer optimalen Kombination von Hardware und/oder Software (z.B. ein Maschinenlernmodell) zum Ausführen einer Rechenarbeitslast ist aufgrund der großen Vielfalt verfügbarer Arten von Hardware und/oder Maschinenlernmodellen und deren Anpassung(en) komplex.
  • Automatisiertes maschinelles Lernen (AutoML) stellt Methoden bereit, um den Zugang zu und die Verfügbarkeit von maschinellem Lernen (ML) für verschiedene Anwendungen und Verwendungsfälle zu verbessern. AutoML ist der Prozess des Automatisierens der Operationen des Anwendens von ML auf Aufgaben und Arbeitslasten. AutoML kann zum Beispiel verwendet werden, um die Auswahl, Zusammensetzung und Parametrisierung von ML-Modellen zu automatisieren. In einigen solchen Beispielen kann AutoML in der gesamten ML-Pipeline vom Empfangen eines Rohdatensatzes bis zum Erzeugen eines einsetzbaren Maschinenlernmodells verwendet werden.
  • Einige AutoML-Ansätze können ein ML-Modell (z.B. ein ML-Modell zum Ausführen einer Arbeitslast) basierend auf einem Hardwaresuchraum und/oder einem Softwaresuchraum auswählen. Vorliegend ist ein „Hardwaresuchraum“ ein Raum oder ein Satz möglicher Hardware, Konfigurationen der Hardware usw. und/oder Kombination(en) davon, unter denen sich eine gewünschte Hardwarekonfiguration zum Ausführen eines ML-Modells befindet. Zum Beispiel kann ein AutoML-System verschiedene Typen von ML-Modellen basierend auf Hardwarekonfigurationen evaluieren, die in dem Hardwaresuchraum enthalten sind. Vorliegend ist ein „Softwaresuchraum“ ein Raum möglicher ML-Modelle, Konfigurationen der ML-Modelle usw. und/oder Kombination(en) davon, unter denen sich eine gewünschte Softwarekonfiguration zum Ausführen einer Arbeitslast (z.B. einer Rechenarbeitslast, einer ML-Arbeitslast, einer ML-Aufgabe, einer ML-Operation usw.) befindet. Zum Beispiel kann ein AutoML-System verschiedene Arten von ML-Modellen basierend auf den ML-Modellen und/oder Konfigurationen der ML-Modelle, die in dem Softwaresuchraum enthalten sind, evaluieren.
  • Einige AutoML-Ansätze können eine einzelne und unflexible Hardwarevorlage (z.B. eine CPU, eine GPU, ein FPGA usw.) verwenden, um einen Hardwaresuchraum auszudrücken, den ein AutoML-System verwenden kann, um ein ML-Modell zum Ausführen einer Arbeitslast von Interesse zu identifizieren. Zum Beispiel kann die Hardwarevorlage unflexibel sein, weil Verbindungstopologien der Hardware fest und/oder anderweitig nicht konfigurierbar sein können. Einige solche AutoML-Ansätze können unterschiedliche Arten von ML-Modellen und/oder Konfigurationen der ML-Modelle basierend auf einem einzigen Hardwaretyp evaluieren. In einigen solchen Beispielen kann der Hardwaretyp Schwächen aufweisen, wenn ein oder mehrere ermittelte der ML-Modelle instanziiert werden. Somit werden das oder die ML-Modelle basierend auf dem Typ von evaluierter Hardware möglicherweise nicht für einen bestimmten Typ von ML-Arbeitslast ausgewählt. In einigen solchen Beispielen können das bzw. die ML-Modelle effizient sein, wenn der bestimmte Typ von ML-Arbeitslast auf anderer Hardware ausgeführt wird, aber aufgrund der Ineffizienzen des zugrunde liegenden Hardwaretyps, auf dem das bzw. die ML-Modelle evaluiert werden, wählt das AutoML-System möglicherweise das bzw. die ML-Modelle nicht aus.
  • Manche AutoML-Ansätze können eine einzelne und unflexible Softwarevorlage (z.B. einen Typ eines neuronalen Netzes, eine Konfiguration des neuronalen Netzes usw.) verwenden, um einen Softwaresuchraum auszudrücken, den ein AutoML-System verwenden kann, um ein ML-Modell zum Ausführen einer Arbeitslast von Interesse zu identifizieren. Einige solche AutoML-Ansätze können Ausführung(en) von Arbeitslast(en) basierend auf einem einzigen Typ von ML-Modell evaluieren. In einigen solchen Beispielen kann das ML-Modell Schwächen aufweisen, wenn ein spezieller Typ von Arbeitslast ausgeführt wird. Somit werden das oder die ML-Modelle möglicherweise nicht für einen bestimmten Typ von ML-Arbeitslast ausgewählt. In einigen solchen Beispielen können das oder die ML-Modelle effizient sein, wenn der spezielle Typ von ML-Arbeitslast ausgeführt wird, aber das AutoML-System wählt das oder die ML-Modelle aufgrund der Ineffizienzen der unflexiblen Konfigurationen des Softwaresuchraums, mit dem das oder die ML-Modelle evaluiert werden, möglicherweise nicht aus.
  • Die Co-Entwicklung von Künstliche-Intelligenz-/Maschinenlern-(KI/ML-) Modellen und der Hardware, auf der sie ausgeführt und/oder instanziiert werden, ist vorteilhaft, um hocheffiziente Lösungen zu erhalten. Eine solche Co-Entwicklung erfordert jedoch viele langsame, manuelle Iterationen durch interdisziplinäre menschliche Experten sowohl für Hardwaredesign als auch für KI/ML-Algorithmen. In letzter Zeit wurden AutoML-Ansätze wie vorstehend beschrieben vorgeschlagen, um menschlichen Designaufwand zu reduzieren, indem ein automatisches KI/ML-Hardware/Software- (HW/SW-) Codesign durchgeführt wird. Wie vorstehend beschrieben, fehlt jedoch existierenden AutoML-Ansätzen die Hardware- und Softwaregestaltungsflexibilität, die das wahre Potenzial des KI/ML-HW/SW-Codesigns entfalten kann. Existierende AutoML-Ansätze verwenden zum Beispiel typischerweise eine einzige feste Hardwarearchitekturvorlage basierend auf einem festen Satz von Modulen und Konnektivität mit einem festen Satz von Designparametern niedriger Ebene für jedes Modul (z.B. Puffergrößen, eine Anzahl von Recheneinheiten usw.). Infolgedessen ist der Hardwaregestaltungssuchraum auf einen begrenzten Satz von Instanzen nur eines einzigen Hardwarearchitekturstils beschränkt. Gleichermaßen weist der auch Softwaresuchraum Beschränkungen auf. Bei einer Neuronalnetzsuche zielt typischerweise ein Suchraum auf eine einzige Netzwerkklasse ab (z.B. nur die Klasse rekurrenter neuronaler Netzwerke (RNNs) oder die Klasse neuronaler Faltungsnetze (CNNs)).
  • Vorliegend offenbarte Beispiele beinhalten Einrichtungen, Herstellungsartikel und Verfahren für zusammensetzbare Maschinenlern-Rechenknoten. In einigen offenbarten Beispielen kann das Integrieren von Hardware- und Softwareheterogenität in eine AutoML-Suche potenziell neue Modelle (z.B. KI/ML-Modelle) entdecken, die die Stärken verschiedener Rechenplattformen (z.B. Verzweigungen und steuerlastig auf CPUs, massiv parallele Schichten auf GPUs, benutzerdefinierte neue Schichten auf FPGAs usw.) nutzen, um ein Maschinenlernsystem basierend auf zusammensetzbaren modularen Hardware- und/oder Softwarebausteinen zu erzeugen.
  • Vorliegend offenbarte Beispiele beinhalten eine expressive Suchraumdarstellung, die mehrere Vorlagen von Hardware- und Softwarearchitekturen abdeckt. In einigen offenbarten Beispielen können die Vorlagen während der HW/SW-Codesignsuche dynamisch modifizierbar sein. Vorteilhafterweise ermöglicht der expressive Suchraum den HW/SW-Codesign-Systemen, einen viel größeren und reichhaltigeren Raum von HW/SW-Designs über mehrere Architekturstile hinweg zu erkunden. In einigen offenbarten Beispielen können einzelne Architekturstile in ihren jeweiligen Sätzen von Modulen und Konnektivität (z.B. Auswahl und/oder Konfiguration von Verbindungen, Topologien, Eingaben/Ausgaben usw.) flexibel sein. In einigen solchen offenbarten Beispielen können die Sätze von Modulen und Konnektivität durch zusammensetzbare Bausteine gebildet werden. Vorteilhafterweise verbessern vorliegend offenbarte Beispiele die Wahrscheinlichkeit, effizientere Hardwarearchitekturinstanzen und ihre entsprechende codesignte Software im Vergleich zu vorherigen AutoML-Ansätzen zu entdecken, weil vorliegend offenbarte Beispiele viel größere HW/SW-Suchräume und zusammensetzbare Versionen davon bieten.
  • Vorliegend offenbarte Beispiele beinhalten einen Satz von Hardwarearchitekturvorlagen und Softwarearchitekturvorlagen. Vorteilhafterweise können die Hardware- und Softwarevorlagen auf einer Palette zusammensetzbarer Architekturbausteine basieren, von denen jeder einen Satz von Mikroarchitekturparametern aufweisen kann. In einigen offenbarten Beispielen können die Mikroarchitekturparameter durchsuchbar sein, um die Granularität von AutoML-Suchen zu verbessern. Vorteilhafterweise sind die beispielhaften Hardware- und Softwarevorlagen nicht auf einen vordefinierten Satz von Modulen und ihre feste Konnektivität beschränkt, wie Vorlagen, die in einigen früheren AutoML-Ansätzen verwendet wurden. In einigen offenbarten Beispielen können die zusammensetzbaren Architekturbausteine basierend auf einem Satz von Designregeln (z.B. vordefinierten Designregeln, Designregeln, die dynamisch oder gleichzeitig spezifiziert werden usw.) flexibel kombiniert, hinzugefügt, entfernt, modifiziert und/oder mutiert werden, um eine Vielzahl neuer HW/SW-Architekturinstanzen zu erzeugen. In einigen offenbarten Beispielen ermöglichen die formale und präzise Semantik und Schnittstellen der beispielhaften Hardware- und Softwarevorlagen eine automatisierte Durchsuchung des HW/SW-Designraums in einem AutoML-Framework sowie eine einfache Erweiterung der HW/SW-Blockpalette mit neuen benutzer- und/oder maschinenspezifizierten Blöcken.
  • Vorliegend offenbarte Beispiele beinhalten das gleichzeitige Entwickeln mehrerer Sätze relevanter zusammensetzbarer Bausteine, von denen jeder eine andere Architekturklasse und einen anderen Designstil abdecken kann. Zum Beispiel kann in dem Hardwaresuchraum eine KI/ML-Prozessorarchitektur basierend auf dem systolischen Array-Designstil für rechenintensive KI/ML-Modelle geeignet sein, aber nicht für speichergebundene und weniger rechenintensive Arbeitslasten geeignet sein. Vorliegend offenbarte Beispiele können daher gleichzeitig HW-Architekturen mit unterschiedlichen Architekturgestaltungsstilen entwickeln, um zu ermöglichen, dass sich die KI/ML-Modelle flexibel entwickeln, um eine verbesserte Softwaregenauigkeit und Hardwareeffizienz während des Codesign-Prozesses zu erreichen. Gleichermaßen gibt es beispielhaft in dem Softwaresuchraum (z.B. dem Neuronalnetzsoftwaresuchraum) mehrere Klassen von Netzwerken mit eigenen vorteilhaften Eigenschaften (z.B. CNNs, RNNs, Transformierer usw.) und zusammensetzbaren Bausteinen (z.B. Matrix mal Vektoroperationen (z.B. Matrix x Vektor) für RNNs, Faltungen für CNNs usw.). Vorteilhafterweise können vorliegend offenbarte Beispiele verbesserte HW/SW-Lösungen basierend auf zusammensetzbaren ML-Rechenknoten aufbauen, um Arbeitslasten mit geringerem Entwicklungsaufwand im Vergleich zu vorherigen AutoML-Ansätzen auszuführen.
  • 34 ist eine Veranschaulichung einer beispielhaften AutoML-Architektur 3400, die einen beispielhaften ML- (Maschinenlern-) Systemkonfigurator 3402 zum Identifizieren und/oder Erzeugen eines zusammensetzbaren ML-Rechenknotens beinhaltet. Die AutoML-Architektur 3400 beinhaltet den ML-Systemkonfigurator 3402 zum Erzeugen eines Hardwaresuchraums und/oder eines Softwaresuchraums basierend auf einer Rechenaufgabe oder Arbeitslast (z.B. einer Künstliche-Intelligenz-/Maschinenlern- (KI/ML-) Rechenaufgabe oder Arbeitslast). Der ML-Systemkonfigurator 3402 kann Hardware oder einen oder mehrere Teile davon aus dem Hardwaresuchraum identifizieren. Der ML-Systemkonfigurator 3402 kann zudem Software (z.B. ein KI/ML-Modell) oder einen oder mehrere Teile davon aus dem Softwaresuchraum entdecken und/oder anderweitig identifizieren. In einigen Beispielen kann der ML-Systemkonfigurator 3402 einzeln und/oder gleichzeitig einen zusammensetzbaren ML-Rechenknoten entwickeln, indem er (i) eine Architektur und/oder einen Typ der Hardware und/oder der Software und/oder (ii) Konfiguration(en) der Hardware und/oder der Software iteriert. Zum Beispiel kann der ML-Systemkonfigurator 3402 den zusammensetzbaren ML-Rechenknoten entwickeln, indem er die Hardware und/oder die Software beim Ausführen einer Arbeitslast und/oder basierend auf einer Simulation der Hardware und/oder Software, die die Arbeitslast ausführen, evaluiert. In einigen solchen Beispielen kann der zusammensetzbare ML-Rechenknoten zusammensetzbar sein, weil Hardware- und/oder Softwarekomponenten ausgewählt und in verschiedenen Kombinationen zusammengestellt werden können, um spezifische oder vordefinierte Anforderungen (z.B. eine Genauigkeitsanforderung, eine Latenzanforderung, eine Durchsatzanforderung usw.) zu erfüllen. In einigen solchen Beispielen kann der ML-Systemkonfigurator 3402 in Reaktion auf eine Identifikation einer speziellen Kombination von Hardware und/oder Software, die die spezifischen oder vordefinierten Anforderungen erfüllt, die Kombination als einen zusammensetzbaren ML-Rechenknoten ausgeben, um eine Arbeitslast von Interesse auszuführen.
  • In einigen Beispielen kann ein zusammensetzbarer ML-Rechenknoten durch ein einziges homogenes Rechen- oder elektronisches System implementiert werden, das konfiguriert und/oder anderweitig genutzt werden kann, um ein KI/ML-Modell auszuführen. Zum Beispiel kann der zusammensetzbare ML-Rechenknoten durch eine einzelne Zentralprozessoreinheit (CPU), Grafikprozessoreinheit (GPU), einen Künstliche-Intelligenz-(KI-) Prozessor, ein frei programmierbares Gate-Array (FPGA), einen Digitalsignalprozessor (DSP), eine XPU usw. implementiert werden. In einigen Beispielen kann der zusammensetzbare ML-Rechenknoten durch einen oder mehrere Teile eines einzelnen homogenen Rechen- oder elektronischen Systems implementiert werden, wie etwa einen oder mehrere Teile (z.B. Kernel(s)) einer einzelnen CPU, GPU, eines KI-Prozessors, eines FPGA, eines DSP, einer XPU usw. In einigen solchen Beispielen können der eine oder die mehreren Teile einen Kernel (z.B. einen Hardware-Kernel) und/oder eine oder mehrere entsprechende Zwischenverbindungen beinhalten, mit denen ein oder mehrere unterschiedliche Kernels, Hardware usw. gekoppelt werden können (z.B. physisch gekoppelt, kommunikativ gekoppelt, über einen Rechen- oder elektrischen Bus gekoppelt usw.). In einigen Beispielen kann ein zusammensetzbarer ML-Rechenknoten durch mehrere desselben Typs von homogenem Rechen- oder Elektroniksystem oder Teil(e) davon implementiert werden. Zum Beispiel kann der zusammensetzbare ML-Rechenknoten durch zwei oder mehr CPUs (oder Teil(e) davon), zwei oder mehr GPUs (oder Teil(e) davon), zwei oder mehr KI-Prozessoren (oder Teil(e) davon), zwei oder mehr FPGAs (oder Teil(e) davon), zwei oder mehr DSPs (oder Teil(e) davon), zwei oder mehr XPUs (oder Teil(e) davon) usw. implementiert werden.
  • In einigen Beispielen kann ein zusammensetzbarer ML-Rechenknoten durch ein einziges heterogenes Rechen- oder elektronisches System implementiert werden, das konfiguriert und/oder anderweitig genutzt werden kann, um ein KI/ML-Modell auszuführen. Zum Beispiel kann der zusammensetzbare ML-Rechenknoten durch eine CPU, eine GPU, einen KI-Prozessor, ein FPGA, einen DSP, eine XPU usw. und/oder eine oder mehrere beliebige Kombinationen davon implementiert werden. In einigen solchen Beispielen kann der zusammensetzbare ML-Rechenknoten durch eine oder mehrere CPUs, eine oder mehrere GPUs, einen oder mehrere KI-Prozessoren, ein oder mehrere FPGAs, einen oder mehrere DSPs, eine oder mehrere XPUs usw. und/oder eine oder mehrere beliebige Kombination(en) davon implementiert werden. In einigen Beispielen kann der zusammensetzbare ML-Rechenknoten durch einen oder mehrere Teile eines einzigen heterogenen Rechen- oder elektronischen Systems implementiert werden, wie etwa einen oder mehrere Teile einer CPU, GPU, eines KI-Prozessors, eines FPGA, eines DSP, einer XPU usw. und/oder eine oder mehrere beliebige Kombinationen davon. In einigen Beispielen kann ein zusammensetzbarer ML-Rechenknoten durch mehrere desselben heterogenen Rechen- oder elektronischen Systems oder Teil(e) davon implementiert werden. Zum Beispiel kann der zusammensetzbare ML-Rechenknoten durch zwei oder mehr Instanzen eines heterogenen Rechensystems implementiert werden, das eine oder mehrere CPUs (oder einen oder mehrere Teile davon), eine oder mehrere GPUs (oder einen oder mehrere Teile davon), einen oder mehrere KI-Prozessoren (oder Teil(e) davon), ein oder mehrere FPGAs (oder Teil(e) davon), einen oder mehrere DSPs (oder Teil(e) davon), eine oder mehrere XPUs (oder Teil(e) davon) usw. und/oder Kombination(en) davon beinhaltet. In einigen Beispielen kann der zusammensetzbare ML-Rechenknoten durch zwei oder mehr unterschiedliche heterogene Rechen- oder elektronische Systeme implementiert werden. Zum Beispiel kann der zusammensetzbare ML-Rechenknoten durch ein erstes heterogenes Rechensystem und ein zweites heterogenes Rechensystem implementiert werden. In einigen solchen Beispielen können der eine oder die mehreren Teile des ersten heterogenen Rechensystems und des zweiten heterogenen Rechensystems unterschiedlich sein.
  • In einigen Beispielen kann der zusammensetzbare ML-Rechenknoten ein ausführbares Konstrukt zum Ausführen eines KI/ML-Modells zum Abschließen einer Arbeitslast oder eines oder mehrerer Teile davon beinhalten, speichern und/oder anderweitig darauf zugreifen. Das ausführbare Konstrukt kann zum Beispiel durch ein Konfigurationsabbild, eine ausführbare Binärdatei, ausführbaren Code (z.B. ausführbaren maschinenlesbaren Code), eine ausführbare Datei (z.B. eine ausführbare binäre Datei), ein ausführbares Programm, ausführbare Anweisungen (z.B. ausführbare maschinenlesbare Anweisungen) usw. implementiert werden, die bei Ausführung ein KI/ML-Modell implementieren können, um die Ausführung von KI/ML-Arbeitslasten zu bewirken.
  • Die AutoML-Architektur 3400 des veranschaulichten Beispiels beinhaltet beispielhafte optimierte Anwendungen 3404, beispielhafte optimierte Middleware und Frameworks 3406 und beispielhafte Anwendungsprogrammierschnittstellen (APIs) 3408. In einigen Beispielen können die optimierten Anwendungen 3404 durch Anwendungen (z.B. Softwareanwendungen, web- oder browserbasierte Anwendungen usw.) implementiert werden, die angepasst, zugeschnitten und/oder anderweitig optimiert sind, um die Identifikation und/oder Erzeugung eines zusammensetzbaren ML-Rechenknotens zu bewirken. Zum Beispiel kann auf die optimierten Anwendungen 3404 durch einen Entwickler (z.B. einen Softwareentwickler, einen Forscher usw.), IT- (Informationstechnologie) Personal usw. zugegriffen werden, diese genutzt werden usw. In einigen solchen Beispielen kann auf die optimierten Anwendungen 3404 zugegriffen werden, diese genutzt werden usw., um eine Hardware/Software- (HW/SW-) Lösung für ein technisches Problem, das von KI/ML-Methoden profitieren kann, gemeinsam zu entwerfen. In einigen Beispielen können die optimierte Middleware und die optimierten Frameworks 3406 durch Middleware und Frameworks implementiert werden, die angepasst, zugeschnitten und/oder anderweitig optimiert sind, um die Identifikation und/oder Erzeugung eines zusammensetzbaren ML-Rechenknotens zu bewirken. Zum Beispiel können die optimierte Middleware und die optimierten Frameworks 3406 eine Schnittstelle (z.B. Kommunikation, Konnektivität usw.) zwischen den optimierten Anwendungen 3404 und den APIs 3408 implementieren.
  • Die APIs 3408 des veranschaulichten Beispiels können aufgerufen werden, um eine KI/ML-Anwendung durch Direktprogrammierung und/oder API-basierte Programmierung zu programmieren, zu entwickeln und/oder anderweitig zu erzeugen. Die APIs 3408 des veranschaulichten Beispiels beinhalten beispielhafte Portierungstools 3410, beispielhafte Direktprogrammierungs-APIs 3412, beispielhafte API-basierte Programmierungs-APIs 3414 und beispielhafte Analysetools 3416.
  • In einigen Beispielen können die Portierungstools 3410 durch Software (z.B. eine Softwareanwendung) implementiert werden, die ein Programm zum Zweck des Erreichens irgendeiner Form von Ausführung in einer ersten Rechen- oder elektronischen Umgebung anpassen kann, die sich von einer zweiten Rechen- oder elektronischen Umgebung unterscheidet, für die das Programm ursprünglich konzipiert wurde. Zum Beispiel können die Portierungstools 3410 ein erstes Programm, das für einen ersten Typ von Hardware, Betriebssystem (OS), Bibliothek usw. entwickelt wurde, in ein zweites Programm für einen zweiten Typ von Hardware, OS, Bibliothek usw. umwandeln und/oder anderweitig anpassen.
  • In einigen Beispielen können die Direktprogrammierungs-APIs 3412 aufgerufen werden, um Direktprogrammieraufgaben zu bewirken, was das Entwickeln und/oder Kompilieren von datenparallelen C++-Anwendungen beinhalten kann. In einigen Beispielen können die API-basierten Programmierungs-APIs 3414 aufgerufen werden, um API-basierte Programmierung zu bewirken, was das Entwickeln und/oder Kompilieren von Anwendungen beinhalten kann, die eine Math Kernel Library (MKL), eine MKL-DNN- (tiefes neuronales Netz) Bibliothek, eine Datenanalytik-Beschleunigungsbibliothek, eine Thread-Bausteinbibliothek, eine Parallelstandardvorlagenbibliothek, ein Mediensoftware-Entwicklungskit (software development kit, SDK), ein Deep-Learning-Einsatz-Toolkit, eine Maschinenlern-Skalierungsbibliothek usw. und/oder eine oder mehrere beliebige Kombinationen aus diesen abrufen (oder aufrufen, instanziieren usw.).
  • In einigen Beispielen können die Analysetools 3416 abgerufen, instanziiert und/oder anderweitig aufgerufen werden, um Hardware, Software und/oder Konfiguration(en) davon eines zusammensetzbaren ML-Rechenknotens zu analysieren. Zum Beispiel können die Analysetools 3416 einen oder mehrere Emulatoren instanziieren, um alle Hardware- und/oder Softwaremerkmale des zusammensetzbaren ML-Rechenknotens zu emulieren, um einen oder mehrere Evaluierungsparameter zu erzeugen und/oder anderweitig auszugeben. In einigen solchen Beispielen können die Evaluierungsparameter Parameter beinhalten, die Genauigkeit, Latenz, eine Anzahl von Zyklen zum Abschließen einer Arbeitslast oder einen Durchsatz des zusammensetzbaren ML-Rechenknotens darstellen und/oder anderweitig angeben. In einigen Beispielen können die Evaluierungsparameter Parameter beinhalten, die eine Prozessor- oder Taktfrequenz, eine Fabric-Frequenz, eine Lesespeicherbandbreite, eine Schreibspeicherbandbreite, Hardware-Herabsetzungs- (de-rate) Faktoren, eine Anzahl von Speicherports, eine Anzahl von Datenverarbeitungseinheiten (DPUs) repräsentieren und/oder anderweitig angeben, eine Anzahl von Modellschichten (z.B. neuronale Netzwerkschichten, Faltungsschichten usw.), eine Aktivierungsgenauigkeit (z.B. eine Genauigkeit von Aktivierungswerten, die verarbeitet werden sollen), eine Gewichtungsgenauigkeit (z.B. eine Genauigkeit von Gewichtungswerten, die verarbeitet werden sollen) usw. und/oder eine oder mehrere beliebige Kombinationen aus diesen darstellen und/oder anderweitig angeben. Zum Beispiel können die Analysetools 3416 einen Emulator basierend auf dem zusammensetzbaren ML-Rechenknoten ausführen. In einigen solchen Beispielen können die Analysetools 3416 den Emulator ausführen, um einen Durchsatz des zusammensetzbaren ML-Rechenknotens zu ermitteln, wenn der zusammensetzbare ML-Rechenknoten ein bestimmtes KI/ML-Modell mit einer bestimmten Konfiguration ausführt.
  • In einigen Beispielen können die Analysetools 3416 einen oder mehrere Simulatoren instanziieren, um das Verhalten, die Konfiguration usw. eines zusammensetzbaren ML-Rechenknotens zu simulieren, um einen oder mehrere Evaluierungsparameter zu erzeugen und/oder anderweitig auszugeben. Zum Beispiel können die Analysetools 3416 ein Modell (z.B. ein Simulationsmodell, ein KI/ML-Modell usw.) basierend auf dem zusammensetzbaren ML-Rechenknoten ausführen. In einigen solchen Beispielen können die Analysetools 3416 das Modell ausführen, um einen Durchsatz des zusammensetzbaren ML-Rechenknotens zu schätzen, vorherzusagen und/oder anderweitig zu ermitteln, wenn der zusammensetzbare ML-Rechenknoten ein bestimmtes KI/ML-Modell mit einer bestimmten Konfiguration ausführt.
  • Die AutoML-Architektur 3400 des veranschaulichten Beispiels beinhaltet verschiedene Arten von Hardware und/oder Software, aus denen ein zusammensetzbarer ML-Rechenknoten erzeugt werden kann. In dem veranschaulichten Beispiel beinhaltet die AutoML-Architektur 3400 Schnittstellen und Zielsystemsoftware für Skalar-, Vektor-, Matrix- und räumliche Hardware. Zusätzlich und/oder alternativ kann eine beliebige andere Art von Hardware verwendet werden. In diesem Beispiel wird die Skalarhardware durch eine beispielhafte CPU 3418 und eine beispielhafte CPU-Systemsoftware 3420 implementiert. Zum Beispiel kann die CPU-Systemsoftware 3420 Anweisungen beinhalten, die einer CPU-Befehlssatzarchitektur (ISA) entsprechen. In diesem Beispiel wird die Vektorhardware durch eine beispielhafte GPU 3422 und eine beispielhafte GPU-Systemsoftware 3424 implementiert. Zum Beispiel kann die GPU-Systemsoftware 3424 Kernels, einen oder mehrere Abschnitte von Code usw., wie etwa Kernels, Rechenkernels und/oder Shader, beinhalten. In einigen Beispielen können die Kerne, der(die) Codeabschnitt(e) usw. in einer höheren Programmiersprache dargestellt werden, wie etwa zum Beispiel High-Level Shader Language (HLSL), OpenCL usw.
  • In diesem Beispiel wird die Matrixhardware durch einen beispielhaften KI-Prozessor 3426 und eine beispielhafte KI-Systemsoftware 3428 implementiert. Zum Beispiel kann die KI-Systemsoftware 3428 einen oder mehrere KI/ML-Algorithmen, Modelle usw. beinhalten, wie etwa neuronale Netze (z.B. neuronale Faltungsnetze (convolutional neural networks, CNNs), tiefe neuronale Netze (DNNs), rekurrente neuronale Netze (RNNs) usw.), lineare Regressionsmodelle, logistische Regressionsmodelle, Entscheidungsbaummodelle, Lernvektorquantisierungsmodelle usw. und/oder Kombination(en) aus diesen. In diesem Beispiel wird die räumliche Hardware durch ein beispielhaftes FPGA 3430 und eine beispielhafte FPGA-Systemsoftware 3432 implementiert. Zum Beispiel kann die FPGA-Systemsoftware 3432 Kernels, Codeabschnitt(e) usw. basierend auf einer Hardwarebeschreibungssprache (hardware description language, HDL) wie etwa Verilog beinhalten.
  • Der ML-Systemkonfigurator 3402 des veranschaulichten Beispiels kann über eine beispielhafte Host-Schnittstelle 3434 eine Schnittstelle mit der CPU 3418 und/oder der CPU-Systemsoftware 3420 bilden. Der ML-Systemkonfigurator 3402 des veranschaulichten Beispiels kann über eine beispielhafte Nullebenen-Schnittstelle 466 mit der GPU 3422, der GPU-Systemsoftware 3424, dem KI-Prozessor 3426, der KI-Systemsoftware 3428, dem FPGA 3430 und/oder der FPGA-Systemsoftware 3434 eine Schnittstelle bilden.
  • Bei dem veranschaulichten Beispiel können die CPU-Systemsoftware 3420, die GPU-Systemsoftware 3424, die KI-Systemsoftware 3428, die FPGA-Systemsoftware 3432, die Host-Schnittstelle 3434 und/oder die Nullebenen-Schnittstelle 3436 einer beispielhaften Systemsoftware unterhalb der Ebene Null 3436 entsprechen und/oder diese anderweitig implementieren. Zum Beispiel kann Systemsoftware unterhalb der Ebene Null 3436 Direkt-zu-Metall-Schnittstellen niedriger Ebenen entsprechen und/oder diese anderweitig implementieren, die auf Hardware, wie etwa die CPU 3418, die GPU 3422 usw., zugeschnitten sind.
  • In dem veranschaulichten Beispiel können die APIs 3408 beispielhafte Systemsoftware oberhalb der Ebene Null 3440 und eine beispielhafte Entwicklerschnittstelle 3442 implementieren. Zum Beispiel kann ein Entwickler, ein Benutzer usw. über die APIs 3408 auf die AutoML-Architektur 3400 zugreifen und/oder diese anderweitig nutzen. In einigen Beispielen kann ein Entwickler, ein Benutzer usw. über die APIs 3408 auf Systemsoftware auf einer höheren Ebene als Direkt-zu-Metall-Schnittstellen niedriger Ebenen zugreifen und/oder diese anderweitig nutzen. In einigen Beispielen kann ein Entwickler, ein Benutzer usw. über die Host-Schnittstelle 3434 und/oder die Nullebenen-Schnittstelle 3436 auf die Systemsoftware unterhalb der Ebene Null 3436 zugreifen und/oder diese anderweitig nutzen.
  • 35 ist ein Blockdiagramm einer beispielhaften Implementierung des ML-Systemkonfigurators 3402 aus 34. Der ML-Systemkonfigurator 3402 beinhaltet eine beispielhafte Steuerung 3502, einen beispielhaften Evaluierer 3504, einen beispielhaften Ontologiegenerator 3506 und eine beispielhafte Ontologiedatenbank 3508.
  • In dem veranschaulichten Beispiel beinhaltet die Ontologiedatenbank 3508 eine Vielzahl beispielhafter Bausteindatenbanken 3510 zusammensetzbarer Bausteine. In dem veranschaulichten Beispiel beinhalten die Datenbanken 3510 zusammensetzbarer Bausteine beispielhafte Softwarevorlagen 3512 und Hardwarevorlagen 3514. Zum Beispiel können die Datenbanken 3510 zusammensetzbarer Bausteine eine erste Datenbank zusammensetzbarer Bausteine beinhalten, die eine erste Softwarevorlage (identifiziert durch die SW-VORLAGE 34) der Softwarevorlagen 3512 beinhalten kann. In einigen solchen Beispielen kann die erste Softwarevorlage ein oder mehrere CNNs, Konfiguration(en) davon und/oder Metadaten beinhalten. Zum Beispiel können die Metadaten einen Betrieb des CNN, unterschiedliche Konfigurationen und/oder Fähigkeiten des CNN, Aspekte des CNN, die modifiziert oder mutiert werden können, usw. beschreiben. In einigen Beispielen kann die erste Softwarevorlage Aspekte, Konfigurationen, Verbindungen usw. eines CNN offenlegen und/oder anderweitig bereitstellen, das angepasst, geändert, modifiziert, mutiert usw. werden kann. In einigen Beispielen können die Datenbanken 3510 zusammensetzbarer Bausteine eine zweite Datenbank zusammensetzbarer Bausteine, die eine zweite Softwarevorlage (identifiziert durch die SW-VORLAGE 35) der Softwarevorlagen 3512 beinhalten kann, eine dritte Datenbank zusammensetzbarer Bausteine, die eine dritte Softwarevorlage (identifiziert durch die SW-VORLAGE N) der Softwarevorlagen 3512 beinhalten kann usw. beinhalten. In dem veranschaulichten Beispiel kann die zweite Softwarevorlage ein oder mehrere RNNs und/oder Konfiguration(en) davon beinhalten. In dem veranschaulichten Beispiel kann die dritte Softwarevorlage einen oder mehrere Transformierer und/oder Konfiguration(en) davon beinhalten. Zusätzlich und/oder alternativ kann eine beliebige andere Art von KI/ML-Modell und/oder Konfiguration(en) davon in den Datenbanken 3510 zusammensetzbarer Bausteine enthalten sein.
  • In einigen Beispielen können die Datenbanken 3510 zusammensetzbarer Bausteine Datenbank(en) und/oder Vorlage(n) von beispielhaften Beitragenden 3513 beinhalten. Die Beitragenden 3513 können zum Beispiel Benutzer, Entwickler, Forscher usw. sein. Die Beitragenden 3513 des veranschaulichten Beispiels können Datenbank(en), Vorlage(n) usw. hochladen und/oder anderweitig an ein beispielhaftes Repository 3515 bereitstellen. In einigen Beispielen können die Beitragenden 3513 Metadaten in der/den Datenbank(en), der/den Vorlage(n) usw. beinhalten, die Angaben über die Konfigurierbarkeit von Hardware und/oder Software der Vorlage(n) bereitstellen. In dem veranschaulichten Beispiel ist das Repository 3515 ein Anwendungsspeicher (z.B. ein App-Speicher), auf den der ML-Systemkonfigurator 3402 zur Verwendung beim Zusammenstellen, Erzeugen usw. eines beispielhaften ML-RechenknotenS 3517 zugreifen kann. Zum Beispiel kann der ML-Rechenknoten 3517 einen zusammensetzbaren ML-Rechenknoten implementieren. Der ML-Rechenknoten 3517 des veranschaulichten Beispiels beinhaltet beispielhafte Software 3519 und beispielhafte Hardware 3521. Die Software 3519 kann zum Beispiel durch ein oder mehrere KI/ML-Modelle implementiert sein. In einigen Beispielen kann die Hardware 3521 durch eine oder mehrere CPUs (oder einen oder mehrere Teile davon), eine oder mehrere GPUs (oder einen oder mehrere Teile davon), einen oder mehrere KI-Prozessoren (oder einen oder mehrere Teile davon), ein oder mehrere FPGAs (oder einen oder mehrere Teile davon), eine oder mehrere ASICs (oder einen oder mehrere Teile davon) usw. und/oder eine oder mehrere beliebige Kombination(en) davon implementiert sein.
  • In dem veranschaulichten Beispiel können die Datenbanken 3510 zusammensetzbarer Bausteine eine vierte Datenbank zusammensetzbarer Bausteine beinhalten, die eine erste Hardwarevorlage (identifiziert durch die HW-VORLAGE 34) der Hardwarevorlagen 3514 beinhalten kann. In einigen solchen Beispielen kann die erste Hardwarevorlage ein oder mehrere FPGAs (z.B. eine oder mehrere Architekturen, Herstellermodelle, Typen usw. von FPGAs) und/oder Konfiguration(en) davon beinhalten. Zum Beispiel kann die Hardwarevorlage Aspekte, Konfigurationen, Verbindungen usw. eines FPGA offenlegen und/oder anderweitig bereitstellen, die angepasst, geändert, modifiziert, mutiert usw. werden können. In einigen Beispielen können die Datenbanken 3510 zusammensetzbarer Bausteine eine fünfte Datenbank zusammensetzbarer Bausteine, die eine zweite Hardwarevorlage (identifiziert durch die HW-VORLAGE 35) beinhalten kann, eine sechste Datenbank zusammensetzbarer Bausteine, die eine dritte Hardwarevorlage (identifiziert durch die HW-VORLAGE N) beinhalten kann usw. beinhalten. In dem veranschaulichten Beispiel kann die zweite Hardwarevorlage eine oder mehrere GPUs (z.B. eine oder mehrere Architekturen, Herstellermodelle, Typen usw. von GPUs) und/oder Konfiguration(en) davon beinhalten. In dem veranschaulichten Beispiel kann die dritte Hardwarevorlage eine oder mehrere CPUs (z.B. eine oder mehrere Architekturen, Herstellermodelle, Typen usw. von CPUs) und/oder Konfiguration(en) davon beinhalten. Zusätzlich und/oder alternativ kann eine beliebige andere Art von Hardware und/oder Konfiguration(en) davon in den Datenbanken 3510 zusammensetzbarer Bausteine enthalten sein.
  • Im beispielhaften Betrieb kann die Steuerung 3502 beispielhafte Arbeitslast(en) (z.B. eine oder mehrere KI/ML-Arbeitslasten) 3516 empfangen, beziehen und/oder anderweitig identifizieren. Die Arbeitslast(en) 3516 kann(können) zum Beispiel wissenschaftliche Simulationen, Finanzanalytik, KIIDeep-Learning, 3D-Modellierung und Analyse, Bild- und Audio-/Videoverarbeitung, Kryptographie, Datenkomprimierung usw. sein. In dem veranschaulichten Beispiel kann die Steuerung 3502 einen beispielhaften Softwaresuchraum 3518 und einen beispielhaften Hardwaresuchraum 3520 basierend auf der(den) Arbeitslast(en) 3516 erzeugen.
  • In einigen Beispielen kann die Steuerung 3502 den Softwaresuchraum 3518 und den Hardwaresuchraum 3520 in Reaktion auf eine Anfrage an den Ontologiegenerator 3506 nach HW/SW-Lösunen für vorherige AutoML-Suchen erzeugen, die der bzw. den Arbeitslast(en) 3516 entsprechen. Zum Beispiel kann die Steuerung 3502 den Ontologiegenerator 3506 mit einer Kennung abfragen, die der/den Arbeitslast(en) 3516, einem anfänglichen oder Seed-KI/ML-Modell, das die Arbeitslast(en) 3516 ausführen kann, usw. entspricht. In einigen solchen Beispielen kann der Ontologiegenerator 3506 eine Assoziierung des anfänglichen oder Seed-KI/ML-Modells und eines anderen KI/ML-Modells in der Ontologiedatenbank 3508 identifizieren. Zum Beispiel kann der Ontologiegenerator 3506 vorherige Suchen, Läufe des ML-Systemkonfigurators 3402 usw. verfolgen und lernen. In einigen Beispielen kann der Ontologiegenerator 3506 die Ontologiedatenbank 3508 nach solchen vorherigen Suchen, Läufen usw. durchsuchen. Zum Beispiel kann die Ontologiedatenbank 3508 Erlerntes, Abbildungen usw., die mit den Softwarevorlagen 3512 und/oder den Hardwarevorlagen 3514 assoziiert sind, über die Hardware und/oder Softwaredomäne aus vorherigen Suchen speichern. In einigen Beispielen können die vorherigen Suchen Suchen nach einer früheren Arbeitslast entsprechen. In einigen Beispielen können die früheren Suchen Iterationen von Suchen nach der(den) Arbeitslast(en) 3516 entsprechen. Vorteilhafterweise kann die Steuerung 3502 den Ontologiegenerator 3506 nutzen, um feinkörnige zusammensetzbare Bausteine zu identifizieren, die gemischt und für dynamische flexible Vorlagenerzeugung abgeglichen werden sollen, die bei der Erzeugung des Softwaresuchraums 3518 und des Hardwaresuchraums 3520 verwendet werden soll.
  • Vorteilhafterweise kann die Steuerung 3502 eine expressive Suchraumdarstellung (z.B. den Softwaresuchraum 3518, den Hardwaresuchraum 3520 usw.) bereitstellen, die mehrere Vorlagen von Hardware- und Softwarearchitekturen (z.B. die Softwarevorlagen 3512, die Hardwarevorlagen 3514 usw.) abdeckt, wobei die Vorlagen während der HW/SW-Codesignsuche dynamisch modifizierbar sein können. Vorteilhafterweise kann die Steuerung 3502 ermöglichen, dass ein HW/SW-Codesignsystem, das durch den ML-Systemkonfigurator 3402 implementiert werden kann, einen viel größeren und reichhaltigeren Raum von HW/SW-Designs über mehrere Architekturstile hinweg untersucht. In einigen Beispielen können Architekturstile, die den Softwarevorlagen 3512 und/oder den Hardwarevorlagen 3514 entsprechen, in ihren jeweiligen Sätzen von Modulen und Konnektivität (z.B. Auswahl und/oder Konfiguration von Verbindungen, Topologien, Eingaben/Ausgaben usw.) flexibel sein. In einigen solchen Beispielen können die Sätze von Modulen und Konnektivität durch zusammensetzbare Bausteine gebildet werden, die in den Softwarevorlagen 3512 (z.B. zusammensetzbare Softwarebausteine in den Softwarevorlagen 3512) und/oder den Hardwarevorlagen 3514 (z.B. zusammensetzbare Hardwarebausteine in den Hardwarevorlagen 3514) enthalten sein können. Vorteilhafterweise kann die Steuerung 3502 und/oder allgemeiner der ML-Systemkonfigurator 3402 die Wahrscheinlichkeit verbessern, im Vergleich zu früheren AutoML-Ansätzen effizientere Hardwarearchitekturinstanzen und ihre entsprechende codesignte Software zu entdecken, weil die Steuerung 3502 des veranschaulichten Beispiels viel größere HW/SW-Suchräume und zusammensetzbare Version(en) davon nutzen kann.
  • In einigen Beispielen können die Steuerung 3502, der Evaluierer 3504, der Ontologiegenerator 3506 usw. und/oder allgemeiner der ML-Systemkonfigurator 3402 künstliche Intelligenz und/oder maschinelle Lernmethoden nutzen, um den ML-Rechenknoten 3517 zum Ausführen der Arbeitslast(en) 3516 zu identifizieren und/oder anderweitig zu erzeugen. Künstliche Intelligenz (KI), einschließlich maschinellen Lernens (ML), tiefen Lernens (DL) und/oder anderer künstlicher maschinengesteuerter Logik, ermöglicht Maschinen (z.B. Computer, Logikschaltungen usw.), ein Modell zum Verarbeiten von Eingabedaten zu verwenden, um basierend auf Mustern und/oder Assoziierungen eine Ausgabe zu erzeugen, die zuvor durch das Modell über einen Trainingsprozess (z.B. einen Trainingsprozess für maschinelles Lernen) gelernt wurden. Beispielsweise können die Steuerung 3502, der Evaluierer 3504, der Ontologiegenerator 3506 und/oder allgemeiner der ML-Systemkonfigurator 3402 mit Daten trainiert werden, Muster und/oder Assoziierungen zu erkennen, und solchen Mustern und/oder Assoziierungen folgen, wenn Eingabedaten verarbeitet werden, so dass eine oder mehrere andere Eingaben zu einer oder mehreren Ausgaben führen, die mit den erkannten Mustern und/oder Assoziierungen konsistent sind.
  • Es gibt viele unterschiedliche Arten von Maschinenlernmodellen und/oder Maschinenlernarchitekturen. In einigen Beispielen erzeugt der ML-Systemkonfigurator 3402 die Software 3519 als ein oder mehrere Neuronalnetzmodelle. Vorteilhafterweise ermöglicht das Verwenden eines Neuronalnetzmodells der Hardware 3521 und/oder allgemeiner dem ML-Rechenknoten 3517, eine KI/ML-Arbeitslast auszuführen. Allgemein beinhalten Maschinenlernmodelle/Architekturen, die zur Verwendung in den vorliegend offenbarten beispielhaften Ansätzen geeignet sind, Verstärkungslernnetze. Es könnten jedoch zusätzlich oder alternativ andere Typen von Maschinenlernmodellen verwendet werden, wie etwa rekurrente neuronale Netze (RNNs), künstliche neuronale Netze (artificial neural networks, ANNs) mit überwachtem Lernen, Clustermodelle, Klassifizierungsmodelle usw. und/oder eine Kombination davon. Beispielhafte ANN-Modelle für überwachtes Lernen können zweischichtige (2-schichtige) neuronale Radialbasisnetze (RBN), neuronale Lernvektorquantisierungs- (LVQ-) Klassifizierungsnetze usw. beinhalten. Beispielhafte Clusteringmodelle können k-Means-Clustern, hierarchisches Clustern, Mean-Shift-Clustern, dichtebasiertes Clustern usw. beinhalten. Beispielhafte Klassifizierungsmodelle können logistische Regression, Support Vector Machine oder -Netzwerk, Naive Bayes usw. beinhalten. In einigen Beispielen kann der ML-Systemkonfigurator 3402 die Software 3519 als leichtgewichtige(s) Maschinenlernmodell(e) kompilieren und/oder anderweitig erzeugen.
  • Allgemein beinhaltet das Implementieren eines ML/AI-Systems zwei Phasen, eine Lern-/Trainingsphase und eine Inferenzphase. In der Lern-/Trainingsphase wird ein Trainingsalgorithmus verwendet, um den ML-Systemkonfigurator 3402 zu trainieren, um gemäß Mustern und/oder Assoziierungen basierend auf zum Beispiel Trainingsdaten zu arbeiten. Allgemein beinhaltet der ML-Systemkonfigurator 3402 interne Parameter, die anleiten, wie Eingabedaten in Ausgabedaten transformiert werden, wie etwa durch eine Reihe von Knoten und Verbindungen innerhalb des ML-Systemkonfigurators 3402, um Eingabedaten in Ausgabedaten zu transformieren. Zusätzlich dazu werden Hyperparameter als Teil des Trainingsprozesses verwendet, um zu steuern, wie das Lernen durchgeführt wird (z. B. eine Lernrate, eine Anzahl von im Maschinenlernmodell zu verwendenden Schichten usw.). Hyperparameter werden als Trainingsparameter definiert, die vor dem Initiieren des Trainingsprozesses ermittelt werden. In einigen Beispielen können Hyperparameter steuern, wie das Lernen durchgeführt wird (z.B. eine Lernrate, eine Anzahl von Schichten, die in dem Maschinenlernmodell zu verwenden sind usw.). In einigen Beispielen können Hyperparameter, die die Modellperformanz und Trainingsgeschwindigkeit steuern, die Lernrate, eine Anzahl von Epochen, eine Topologie des neuronalen Netzes, eine Größe des neuronalen Netzes und/oder ein oder mehrere Regularisierungsparameter sein. Solche Hyperparameter werden zum Beispiel durch Versuch und Irrtum ausgewählt, um eine optimale Modellperformanz zu erreichen. In einigen Beispielen kann ein erneutes Training durchgeführt werden. Ein solches erneutes Training kann in Reaktion auf eine oder mehrere Übergehungen durch einen Benutzer durchgeführt werden.
  • Unterschiedliche Arten von Training können basierend auf der Art des ML-/AI-Modells und/oder der erwarteten Ausgabe durchgeführt werden. Beispielsweise beinhaltet verstärkendes Lernen, dass eine Maschine, ein Agent usw. mit ihrer/seiner Umgebung interagiert, Aktionen durchführt und durch eine Versuch-und-Irrtum-Methode lernt. In anderen Beispielen verwendet überwachtes Training Eingaben und entsprechende erwartete (z.B. gelabelte) Ausgaben, um Parameter (z.B. durch Iterieren über Kombinationen ausgewählter Parameter) für das KI/ML-Modell auszuwählen, die einen Modellfehler reduzieren. Wie hierin verwendet, bezieht sich Labeln auf eine erwartete Ausgabe des Maschinenlernmodells (z.B. eine Klassifikation, einen erwarteten Ausgabewert usw.). Alternativ dazu beinhaltet unüberwachtes Training (z.B. beim tiefen Lernen (Deep Learning), einer Untergruppe des Maschinenlernens, verwendet, usw.) das Ableiten von Mustern aus Eingaben, um Parameter für das ML-/AI-Modell auszuwählen (z.B. ohne den Vorteil erwarteter (z.B. gelabelter) Ausgaben). Zusätzlich und/oder alternativ kann eine beliebige andere Trainingsmethode verwendet werden, wie etwa stochastischer Gradientenabstieg, Simulated Annealing, Partikelschwarmoptimierung, Evolutionsalgorithmen, genetische Algorithmen und/oder nichtlinearer Konjugatgradient.
  • Sobald das Training abgeschlossen ist, wird der ML-Systemkonfigurator 3402 zur Verwendung als ein ausführbares Konstrukt eingesetzt, das eine Eingabe verarbeitet und eine Ausgabe basierend auf dem Netzwerk von Knoten und Verbindungen bereitstellt, die in dem Modell definiert sind. Zum Beispiel kann der ML-Systemkonfigurator 3402 in einer Inferenzphase betrieben werden, um Daten zu verarbeiten. In der Inferenzphase werden zu analysierende Daten (z.B. Live-Daten, die Arbeitslast(en) 3516 usw.) in den ML-Systemkonfigurator 3402 eingegeben und der ML-Systemkonfigurator 3402 wird ausgeführt, um eine Ausgabe zu erzeugen. Diese Inferenzphase kann als das KI-„Denken" angesehen werden, um die Ausgabe basierend darauf zu erzeugen, was sie aus dem Training, aus dem bestärkenden Lernen usw. gelernt hat. In einigen Beispielen werden Eingabedaten einer Vorverarbeitung unterzogen, bevor sie als Eingabe für den ML-Systemkonfigurator 3402 verwendet werden. Darüber hinaus können die Ausgabedaten in einigen Beispielen einer Nachverarbeitung unterzogen werden, nachdem sie durch den ML-Systemkonfigurator 3402 erzeugt wurden, um die Ausgabe in ein nützliches Ergebnis umzuwandeln (z.B. eine Kompilierung der Software 3519, eine Erzeugung einer Konfigurationsdatei, die mit der Hardware 3521 assoziiert ist usw.).
  • In einigen Beispielen kann der ML-Systemkonfigurator 3402 des veranschaulichten Beispiels in einem Speicher eines oder mehrerer Rechensysteme oder in einer Datenbank eines oder mehrerer entfernter Rechensysteme gespeichert sein. Der ML-Systemkonfigurator 3402 kann dann durch das eine oder die mehreren Rechensysteme oder ein oder mehrere andere Rechensysteme ausgeführt werden.
  • In dem veranschaulichten Beispiel kann der ML-Systemkonfigurator 3402 die Kompilierung des ML-RechenknotenS 3517 unter Verwendung von bestärkendem Lernen zusammenstellen und/oder anderweitig zu dieser führen. Zusätzlich oder alternativ kann jedoch ein beliebiger anderer KI/ML-Algorithmus oder eine beliebige andere KI/ML-Methode verwendet werden. In einigen Beispielen kann der ML-Systemkonfigurator 3402 iterativ die vorgeschlagene HW/SW-Instanz 3522 erzeugen, bis ein Fehlerniveau eine Schwelle (z.B. eine Genauigkeitsschwelle, eine Trainingsschwelle usw.) nicht mehr reduziert und/oder diese anderweitig erfüllt. Wie hier verwendet, wird „Schwelle“ als Daten ausgedrückt, wie etwa ein numerischer Wert, der in einer beliebigen Form dargestellt ist, die durch die Prozessorschaltung als Referenz für eine Vergleichsoperation verwendet werden können. Vorliegend sind Daten Informationen in einer beliebigen Form, die durch eine Prozessorschaltung aufgenommen, verarbeitet, interpretiert und/oder anderweitig manipuliert werden können, um ein Ergebnis zu erzeugen. Bei dem erzeugten Ergebnis kann es sich seinerseits um Daten handeln. Vorliegend ist ein Modell ein Satz von Anweisungen und/oder Daten, die durch eine Prozessorschaltung aufgenommen, verarbeitet, interpretiert und/oder anderweitig manipuliert werden können, um ein Ergebnis zu erzeugen. Häufig wird ein Modell unter Verwendung von Eingabedaten betrieben, um Ausgabedaten gemäß einer oder mehreren Beziehungen zu erzeugen, die in dem Modell wiedergegeben werden. Das Modell kann auf Trainingsdaten basieren.
  • In einigen Beispielen nutzt der ML-Systemkonfigurator 3402 eine Bayes'sche Hyperparameteroptimierung, um eine optimale und/oder anderweitig verbesserte oder effizientere Netzwerk- und/oder Hardwarearchitektur zu ermitteln, um eine Modellüberanpassung zu vermeiden und die Gesamtanwendbarkeit der Software 3519 und/oder der Hardware 3521 des ML-Rechenknotens 3517 zu verbessern. Alternativ kann der ML-Systemkonfigurator 3402 eine beliebige andere Art von Optimierung verwenden.
  • In einem beispielhaften Betrieb kann die Steuerung 3502 eine Historie vorheriger Läufe des ML-Systemkonfigurators 3402 für den Typ der Arbeitslast(en) 3516 (oder einen anderen Typ von Arbeitslast) empfangen. Die Steuerung 3502 kann den Softwaresuchraum 3518 durch Befüllen des Softwaresuchraums 3518 mit einem oder mehreren KI/ML-Modellen, die in den vorherigen Durchläufen verwendet wurden, erzeugen. In einigen Beispielen kann die Steuerung 3502 den Softwaresuchraum 3518 basierend auf der (den) Arbeitslast(en) 3516 mit einem oder mehreren unterschiedlichen Typen von KI/ML-Modellen befüllen. In dem veranschaulichten Beispiel beinhaltet der Softwaresuchraum 3516 einen oder mehrere Neuronalnetz- (NN-) Algorithmen und/oder Konfiguration(en) davon. Zusätzlich und/oder alternativ kann der Softwaresuchraum 3516 eine beliebige andere Art von KI/ML-Modellen, Algorithmen usw. beinhalten. Zum Beispiel kann die Steuerung 3502 ein oder mehrere RNNs, einen oder mehrere Transformierer usw. entdecken und/oder anderweitig identifizieren, indem sie die Datenbanken 3510 zusammensetzbarer Bausteine inspiziert und/oder anderweitig durchsucht.
  • Im Beispielbetrieb kann die Steuerung 3502 den Hardwaresuchraum 3520 durch Befüllen des Hardwaresuchraums 3520 mit einer oder mehreren Arten von Hardware und/oder Konfiguration(en) davon erzeugen, die in den vorherigen Läufen verwendet wurden. In einigen Beispielen kann die Steuerung 3502 den Hardwaresuchraum 3520 basierend auf der (den) Arbeitslast(en) 3516 mit einem oder mehreren unterschiedlichen Typen von KI/ML-Modellen befüllen. In dem veranschaulichten Beispiel beinhaltet der Hardwaresuchraum 3520 einen oder mehrere NN-Beschleuniger. Zusätzlich und/oder alternativ kann der Hardwaresuchraum 3520 eine beliebige andere Art von Hardware (z.B. eine oder mehrere CPUs, ein oder mehrere FPGAs usw.) beinhalten.
  • Im beispielhaften Betrieb kann die Steuerung 3502 eine beispielhafte vorgeschlagene HW/SW-Instanz 3522 erzeugen und die vorgeschlagene HW/SW-Instanz 3522 dem Evaluierer 3504 bereitstellen. In einigen Beispielen kann die vorgeschlagene HW/SW-Instanz 3522 einen Kandidaten- oder vorgeschlagenen ML-Rechenknoten implementieren. Die vorgeschlagene HW/SW-Instanz 3522 kann zum Beispiel ein zusammensetzbarer ML-Rechenknoten sein, der durch einen NN-Beschleuniger mit einer ersten Hardwarekonfiguration und einen NN-Algorithmus mit einer ersten Softwarekonfiguration implementiert wird.
  • Im beispielhaften Betrieb kann der Evaluierer 3504 eine beispielhafte Performanzmodellierung 3524 ausführen, um beispielhafte Evaluierungsparameter 3526 zu erzeugen und/oder anderweitig auszugeben. Zum Beispiel kann der Evaluierer 3504 die vorgeschlagene HW/SW-Instanz 3522 simulieren, emulieren, debuggen usw., um die Evaluierungsparameter 3526 zu erzeugen. Die Evaluierungsparameter 3526 können zum Beispiel durch Werte von Evaluierungsmetriken implementiert werden, die Genauigkeit, Latenz, eine Anzahl von Zyklen zum Abschließen einer Arbeitslast oder einen Durchsatz der vorgeschlagenen HW/SW-Instanz 3522 darstellen und/oder anderweitig angeben. In einigen Beispielen können die Evaluierungsparameter eine Prozessor- oder Taktfrequenz, eine Fabric-Frequenz, eine Lesespeicherbandbreite, eine Schreibspeicherbandbreite, Hardware-Herabsetzungs- (de-rate) Faktoren, eine Anzahl von Speicherports, eine Anzahl von Datenverarbeitungseinheiten (DPUs), eine Anzahl von Modellschichten (z.B. Neuronalnetzschichten, Faltungsschichten usw.), eine Aktivierungsgenauigkeit (z.B. eine Genauigkeit von Aktivierungswerten, die verarbeitet werden sollen), eine Gewichtungsgenauigkeit (z.B. eine Genauigkeit von Gewichtungswerten, die verarbeitet werden sollen) usw. und/oder eine oder mehrere beliebige Kombinationen aus diesen darstellen und/oder anderweitig angeben, die mit der vorgeschlagenen HW/SW-Instanz 3522 assoziiert sind.
  • In einigen Beispielen kann der Evaluierer 3504 Analytik, Softwaresimulationen, Registerübertragungsebenen- (register transfer level, RTL-) Simulationen zum Validieren der Korrektheit des Betriebs digitaler integrierter Schaltungen (IC), Emulationen (z.B. einen NN-Beschleunigungsemulator) usw. ausführen und/oder anderweitig instanziieren. In einigen solchen Beispielen kann der Evaluierer 3504 die Performanzmodellierung 3524 durch Simulieren, Emulieren, Debuggen usw. des NN-Beschleunigers mit der ersten Hardwarekonfiguration ausführen, wenn der NN-Beschleuniger den NN-Algorithmus mit der ersten Softwarekonfiguration ausführt. Zum Beispiel kann der Evaluierer 3504 eine Simulation des NN-Beschleunigers instanziieren, die den NN-Algorithmus ausführt, um die Evaluierungsparameter 3526 auszugeben. In einigen Beispielen kann der Evaluierer 3504 eine Emulation des NN-Beschleunigers instanziieren, die den NN-Algorithmus ausführt, um die Evaluierungsparameter 3526 zu ermitteln.
  • In einem beispielhaften Betrieb kann der Evaluierer 3504 eine beispielhafte Belohnungsfunktion 3528 ausgeben. In einigen Beispielen kann die Belohnungsfunktion 3528 durch eine mathematische Funktion implementiert werden, die erfasst, was zu optimieren ist (z.B. eine mathematische Funktion, die höhere Gewichtungen für den Durchsatz beinhaltet, um den Durchsatz zu optimieren), und was zu bestrafen ist (z.B. eine mathematische Funktion, die niedrigere Gewichtungen für Latenz beinhaltet, um den Durchsatz auf Kosten der Latenz zu optimieren). Zum Beispiel kann die Belohnungsfunktion 3528 eine oder mehrere Ausgaben (z.B. die Evaluierungsparameter 3526) von dem Evaluierer 3504 beinhalten. In einigen Beispielen kann der Evaluierer 3504 die Belohnungsfunktion 3528 so erzeugen, dass sie mindestens eine erste Ausgabe, wie etwa Genauigkeit, mit einer ersten Gewichtung und eine zweite Ausgabe, wie etwa Durchsatz, mit einer zweiten Gewichtung beinhaltet. In einigen Beispielen können die Evaluierungsparameter 3526 unter Verwendung der ersten Ausgabe (und/oder der ersten Gewichtung) und der zweiten Ausgabe (und/oder der zweiten Gewichtung) implementiert werden. Der Evaluierer 3504 kann die erste Gewichtung so erzeugen, dass sie größer als die zweite Gewichtung ist, um die Steuerung 3502 aufzurufen und/oder anderweitig zu veranlassen, einen Schwerpunkt auf das Erhöhen und/oder anderweitige Optimieren der Genauigkeit zu erhöhen und einen Schwerpunkt auf das Erhöhen und/oder anderweitige Optimieren der zweiten Ausgabe zu verringern. In einigen Beispielen kann die Steuerung 3502 in Reaktion auf das Beziehen der Belohnungsfunktion 3528 die vorgeschlagene HW/SW-Instanz 3522 ändern, modifizieren und/oder anderweitig anpassen, um basierend auf der jeweiligen ersten und zweiten Gewichtung der ersten und zweiten Ausgabe der Belohnungsfunktion 3528 die Genauigkeit zu erhöhen und den Durchsatz zu verringern. In einigen Beispielen kann die Belohnungsfunktion 3528 eine Genauigkeit der vorgeschlagenen HW/SW-Instanz 3522 sein, wenn der NN-Algorithmus ausgeführt wird. In dem veranschaulichten Beispiel kann die Belohnungsfunktion 3528 einem Evaluierungsergebnis entsprechen, das der Steuerung 3502 bereitgestellt und/oder anderweitig rückgemeldet wird, um die nächste Version der vorgeschlagenen HW/SW-Instanz 3522 zu aktualisieren (z.B. iterativ zu aktualisieren).
  • Im beispielhaften Betrieb kann die Steuerung 3502 die vorgeschlagene HW/SW-Instanz 3522 basierend auf der Belohnungsfunktion 3528 aktualisieren. Zum Beispiel kann die Steuerung 3502 das Herstellermodell, die Herstellerkonfiguration usw. des NN-Beschleunigers ändern, um die Belohnungsfunktion 3528 zu maximieren und/oder anderweitig zu erhöhen. In einigen solchen Beispielen kann die Steuerung 3502 Hardwareverbindungen (z.B. Eingabe(en) und/oder Ausgabe(en)) von Teil(en) des NN-Beschleunigers, ein Konfigurationsabbild (z.B. einen Wert aus einem oder mehreren Konfigurationsregistern des NN-Beschleunigers) usw. und/oder eine oder mehrere beliebige Kombinationen davon modifizieren. Alternativ kann die Steuerung 3502 den NN-Beschleuniger durch einen anderen Hardwaretyp, wie etwa eine GPU, ersetzen. In einigen Beispielen kann die Steuerung 3502 den NN-Algorithmus basierend auf der Belohnungsfunktion 3528 modifizieren. Zum Beispiel kann die Steuerung 3502 eine Anzahl von Schichten des NN-Algorithmus, einen oder mehrere Werte von Aktivierung(en) und/oder Gewichtung(en), eine oder mehrere Zwischenverbindungen (z.B. Eingabe(en) und/oder Ausgabe(en)) usw. des NN-Algorithmus ändern. Alternativ kann die Steuerung 3502 den NN-Algorithmus durch einen anderen Typ von KI/ML-Algorithmus, wie etwa einen Transformierer, ersetzen.
  • In einigen Beispielen kann die Steuerung 3502 in Reaktion darauf, dass die Belohnungsfunktion 3528 maximiert wird und/oder anderweitig eine Schwelle, wie etwa eine Belohnungsschwelle, erfüllt, die vorgeschlagene HW/SW-Instanz 3522 als den ML-Rechenknoten 3517 ausgeben, um die Arbeitslast(en) 3516 auszuführen. Zum Beispiel kann die Steuerung 3502 den Softwareteil der vorgeschlagenen HW/SW-Instanz 3522 als ein ausführbares Konstrukt (z.B. eine ausführbare Datei, eine maschinenlesbare ausführbare Datei usw.) kompilieren, das auf dem Hardwareteil der HW/SW-Instanz 3522 auszuführen ist.
  • 36 ist ein Blockdiagramm einer beispielhaften ML-Systemkonfigurationsschaltungsanordnung 3600 zum Zusammensetzen eines ML-RechenknotenS (z.B. des ML-RechenknotenS 3517 aus 35) zum Ausführen einer Arbeitslast (z.B. der Arbeitslast(en) 3516 aus 35). In einigen Beispielen kann die ML-Systemkonfigurationsschaltungsanordnung 3600 aus 36 den ML-Systemkonfigurator 3402 aus 34 und/oder 35 implementieren. Die ML-Systemkonfigurationsschaltungsanordnung 3600 aus 36 kann durch eine Prozessorschaltung, wie etwa eine CPU, die Anweisungen ausführt, instanziiert werden (z.B. Erzeugen einer Instanz, Realisieren für eine beliebige Zeitdauer, Verwirklichen, Implementieren usw.). Zusätzlich und/oder alternativ kann die ML-Systemkonfigurationsschaltungsanordnung 3600 aus 36 durch eine ASIC oder ein FPGA, die zum Durchführen von Operationen entsprechend den Anweisungen strukturiert ist, instanziiert werden (z.B. Erzeugen einer Instanz, Realisieren für eine beliebige Zeitdauer, Verwirklichen, Implementieren usw.) werden. Es versteht sich, dass einige oder alle der ML-Systemkonfigurationsschaltungsanordnungen 3600 aus 36 dementsprechend zu gleichen oder unterschiedlichen Zeiten instanziiert werden können. Die ML-Systemkonfigurationsschaltungsanordnung 3600 kann zum Beispiel teilweise oder ganz in einem oder mehreren Threads instanziiert sein, die gleichzeitig auf Hardware und/oder nacheinander auf Hardware ausgeführt werden. Darüber hinaus kann in einigen Beispielen die ML-Systemkonfigurationsschaltungsanordnung 3600 aus 36 teilweise oder ganz durch eine oder mehrere virtuelle Maschinen und/oder Container implementiert werden, die auf dem Mikroprozessor ausgeführt werden.
  • Die ML-Systemkonfigurationsschaltungsanordnung 3600 des veranschaulichten Beispiels beinhaltet eine beispielhafte Schnittstellenschaltung 3610, eine beispielhafte ML-Softwarekonfigurationsschaltungsanordnung 3620, eine beispielhafte ML-Hardwarekonfigurationsschaltungsanordnung 3630, eine beispielhafte Konfigurationsevaluierungsschaltungsanordnung 3640, eine beispielhafte Ontologieerzeugungsschaltungsanordnung 3650, eine beispielhafte Arbeitslastausführungsschaltungsanordnung 3660, einen beispielhaften Datenspeicher 3670 und einen beispielhaften Bus 3680. Der Datenspeicher 3670 des veranschaulichten Beispiels beinhaltet beispielhafte Softwarevorlagen 3672, beispielhafte Hardwarevorlagen 3674, beispielhafte Verbindungstopologien 3676 und beispielhafte historische Konfigurationen 3678.
  • In dem veranschaulichten Beispiel aus 36 stehen die Schnittstellenschaltung 3610, die ML-Softwarekonfigurationsschaltungsanordnung 3620, die ML-Hardwarekonfigurationsschaltungsanordnung 3630, die Konfigurationsevaluierungsschaltungsanordnung 3640, die Ontologieerzeugungsschaltungsanordnung 3650, die Arbeitslastausführungsschaltungsanordnung 3660 und der Datenspeicher 3670 in Kommunikation mit dem Bus 3680. Der Bus 3680 kann zum Beispiel durch einen I2C- (Inter-Integrated Circuit, IC-schaltungsübergreifend) Bus und/oder einen SPI- (Serial Peripheral Interface) Bus und/oder einen PCI- (Peripheral Component Interconnect) Bus und/oder einen PCIe- bzw. PCIE- (Peripheral Component Interconnect Express) Bus implementiert werden. Zusätzlich oder alternativ kann der Bus 3680 durch eine beliebige andere Art von Rechen- oder elektrischem Bus implementiert werden.
  • Die ML-Systemkonfigurationsschaltungsanordnung 3600 des veranschaulichten Beispiels aus 36 beinhaltet die Schnittstellenschaltung 3610 zum Empfangen einer Anfrage zum Ausführen einer KI/ML-Arbeitslast. Zum Beispiel kann die Schnittstellenschaltung 3610 eine Anfrage von einem Benutzer, einem Rechen- oder elektronischen System usw. empfangen, eine AutoML-Lösung (z.B. eine Kombination von Hardware und/oder Software) basierend auf der/den Arbeitslast(en) 3516 zu zusammenzusetzen. In einigen Beispielen kann die Schnittstellenschaltung 3610 eine Anfrage für ein KI/ML-Modell und entsprechende Hardware zum Ausführen einer KI/ML-Arbeitslast empfangen. In einigen Beispielen kann die Schnittstellenschaltung 3610 die KI/ML-Arbeitslast empfangen.
  • Die ML-Systemkonfigurationsschaltungsanordnung 3600 des veranschaulichten Beispiels aus 36 beinhaltet die ML-Softwarekonfigurationsschaltungsanordnung 3620 zum Erzeugen einer ersten Konfiguration eines oder mehrerer Modelle (z.B. eines oder mehrerer ML-Modelle, eines oder mehrerer KI/ML-Modelle usw.) basierend auf einer Arbeitslast. In einigen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 einen Softwaresuchraum basierend auf der Anfrage und/oder historischen Konfigurationen erzeugen. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 den Softwaresuchraum 3518 befüllen und/oder anderweitig erzeugen, so dass er ein oder mehrere KI/ML-Modelle beinhaltet, die in der Ontologiedatenbank 3508 und/oder den Datenbanken 3510 zusammensetzbarer Bausteine identifiziert werden. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 den Softwaresuchraum 3518 basierend auf der oder den Arbeitslasten 3516 oder einem oder mehreren Aspekten oder einem oder mehreren Teilen davon erzeugen.
  • In einigen Beispielen fragt die ML-Softwarekonfigurationsschaltungsanordnung 3620 eine Konfigurationsdatenbank mit der Arbeitslast unter Verwendung einer API ab. Zum Beispiel können Datenbanken 3510 zusammensetzbarer Bausteine eine Konfigurationsdatenbank implementieren und die ML-Softwarekonfigurationsschaltungsanordnung 3620 kann die Datenbanken 3510 zusammensetzbarer Bausteine abfragen. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 die Datenbanken 3510 zusammensetzbarer Bausteine mit der einen oder den mehreren Arbeitslasten 3516 oder einem oder mehreren Aspekten davon als Eingabe(n) abfragen.
  • In einigen Beispielen ermittelt die ML-Softwarekonfigurationsschaltungsanordnung 3620 eine Anzahl von Schichten für ein KI/ML-Modell. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ein CNN in den Softwarevorlagen 3512, den Softwarevorlagen 3672 usw. identifizieren. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 eine Anzahl von Schichten des CNN ermitteln.
  • In einigen Beispielen ermittelt die ML-Softwarekonfigurationsschaltungsanordnung 3620 Gewichtungen für die Schichten des KI/ML-Modells. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 Gewichtungswerte, die dem CNN entsprechen, in den Softwarevorlagen 3512 identifizieren. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 die Gewichtungen nutzen, die in den Softwarevorlagen 3512 identifiziert wurden, neue Gewichtungen ermitteln, Werte einzelner der Gewichtungen anpassen usw. und/oder beliebige Kombination(en) davon.
  • In einigen Beispielen ermittelt die ML-Softwarekonfigurationsschaltungsanordnung 3620 einen Trainingstyp für das KI/ML-Modell. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass verstärkendes Lernen mit dem CNN in den Softwarevorlagen 3512 assoziiert ist. In einigen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 einen anderen Trainingstyp des CNN auswählen, wie etwa stochastischen Gradientenabstieg, Simulated Annealing, Partikelschwarmoptimierung, Evolutionsalgorithmen, genetische Algorithmen, nichtlinearer Konjugatgradient usw.
  • In einigen Beispielen ermittelt die ML-Softwarekonfigurationsschaltungsanordnung 3620 Hyperparameter zum Trainieren des KI/ML-Modells. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 in den Softwarevorlagen 3512 Hyperparameter, Werte der Hyperparameter usw. identifizieren, die dem CNN entsprechen. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 die Hyperparameter nutzen, die in den Softwarevorlagen 3512 identifiziert wurden, einen oder mehrere neue Hyperparameter ermitteln, Werte eines oder mehrerer Hyperparameter anpassen usw. und/oder beliebige Kombination(en) davon.
  • In einigen Beispielen ermittelt die ML-Softwarekonfigurationsschaltungsanordnung 3620, ob ein anderes KI/ML-Modell identifiziert wurde. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass ein Transformierermodell zusätzlich zu dem CNN identifiziert wird. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass mehr als ein KI/ML-Modell identifiziert wurde, wie etwa das CNN und das Transformierermodell. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 eine Topologie (z.B. eine Verbindungs- bzw. Interconnect-Topologie, eine Eingabe/Ausgabe- (E/A-) Topologie usw.) basierend auf einer oder mehreren Verbindungen zwischen einem oder mehreren der KI/ML-Modelle erzeugen. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 das CNN als ein erstes oder Primärmodell und das Transformierermodell als ein zweites oder Sekundärmodell auswählen. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass das CNN und das Transformierermodell miteinander gekoppelt werden können, indem ein oder mehrere Ausgänge des CNN mit einem oder mehreren Eingängen des Transformierermodells verbunden werden.
  • In einigen Beispielen passt die ML-Softwarekonfigurationsschaltungsanordnung 3620 die erste Konfiguration (z.B. eine Konfiguration von Software, die in der vorgeschlagenen HW/SW-Instanz 3522 enthalten sein soll) basierend auf einem Evaluierungsparameter an. Zum Beispiel kann der Evaluierer 3504 die Evaluierungsparameter 3526 basierend auf einer Evaluierung der vorgeschlagenen HW/SW-Instanz 3522 berechnen und/oder anderweitig ermitteln. In einigen solchen Beispielen kann der Evaluierer 3504 ermitteln, dass ein erster Evaluierungsparameter der Evaluierungsparameter 3526 ein Genauigkeitsparameter (z.B. eine Genauigkeit von Ausgabe(en) der vorgeschlagenen HW/SW-Instanz 3522, ein Genauigkeitsevaluierungsparameter usw.) ist.
  • In einigen Beispielen ermittelt die ML-Softwarekonfigurationsschaltungsanordnung 3620, ob ein erstes KI/ML-Modell durch ein anderes KI/ML-Modell ersetzt werden soll. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, das CNN durch ein anderes Modell, wie etwa ein ANN, ein DNN usw., zu ersetzen. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 basierend auf einem Wert des Genauigkeitsparameters ermitteln, das CNN zu ersetzen, um den Wert zu erhöhen und/oder anderweitig zu verbessern. In einigen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 in Reaktion auf eine Bestimmung, das erste KI/ML-Modell durch ein anderes KI/ML-Modell zu ersetzen, ein zweites ML-Modell in einer Konfigurationsdatenbank identifizieren. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 das ANN, das DNN usw. in den Softwarevorlagen 3512 identifizieren. In einigen Beispielen erzeugt die ML-Softwarekonfigurationsschaltungsanordnung 3620 basierend auf dem Ersetzen des ersten KI/ML-Modells durch das zweite KI/ML-Modell eine neue Konfiguration. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 basierend auf dem Ersetzen des CNN durch ein anderes KI/ML-Modell eine neue, aktualisierte usw. Version der vorgeschlagenen HW/SW-Instanz 3522 erzeugen.
  • In einigen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, der Konfiguration ein zweites KI/ML-Modell hinzuzufügen. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, ein anderes KI/ML-Modell, wie etwa ein ANN, ein DNN usw., in Verbindung mit dem CNN hinzuzufügen. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 basierend auf einem Wert eines Evaluierungsparameters, wie etwa einem Wert des Genauigkeitsparameters, ermitteln, ein anderes KI/ML-Modell hinzuzufügen. In einigen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ein der Konfiguration hinzuzufügendes zweites KI/ML-Modell identifizieren, indem das zweite KI/ML-Modell in den Softwarevorlagen 3512 und/oder allgemeiner in den Datenbanken 3510 zusammensetzbarer Bausteine identifiziert wird.
  • In einigen Beispielen ermittelt die ML-Softwarekonfigurationsschaltungsanordnung 3620 in Reaktion auf eine Bestimmung, ein anderes KI/ML-Modell zu einer Konfiguration der vorgeschlagenen HW/SW-Instanz 3522 hinzuzufügen, eine oder mehrere erste Schichten des ersten KI/ML-Modells, um einen ersten Teil einer Arbeitslast auszuführen, und eine oder mehrere zweite Schichten des zweiten KI/ML-Modells, um einen zweiten Teil der Arbeitslast auszuführen. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 eine oder mehrere erste Schichten des CNN identifizieren (oder auswählen), um einen ersten Teil der Arbeitslast(en) 3516 auszuführen, und eine oder mehrere zweite Schichten des ANN, des DNN usw. identifizieren (oder auswählen), um einen zweiten Teil der Arbeitslast(en) 3516 auszuführen. In einigen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 eine neue Konfiguration basierend auf einer Topologie der einen oder der mehreren ersten Schichten und der einen oder der mehreren zweiten Schichten ermitteln. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 eine neue und/oder aktualisierte Instanz, Version usw. der vorgeschlagenen HW/SW-Instanz 3522 basierend auf einer Topologie ermitteln, die das erste KI/ML-Modell und das zweite KI/ML-Modell koppelt.
  • Die ML-Systemkonfigurationsschaltungsanordnung 3600 des veranschaulichten Beispiels aus 36 beinhaltet die ML-Hardwarekonfigurationsschaltungsanordnung 3630, um eine zweite Hardwarekonfiguration basierend auf einer KI/ML-Arbeitslast zu erzeugen. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine Konfigurationsdatenbank mit der KI/ML-Arbeitslast unter Verwendung einer API abfragen. Zum Beispiel können eine oder mehrere der Datenbanken 3510 zusammensetzbarer Bausteine eine Konfigurationsdatenbank implementieren, und die ML-Hardwarekonfigurationsschaltungsanordnung 3630 kann die eine oder die mehreren der Datenbanken 3510 zusammensetzbarer Bausteine abfragen. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 die eine oder die mehreren der Datenbanken 3510 zusammensetzbarer Bausteine mit der einen oder den mehreren Arbeitslasten 3516 oder einem oder mehreren Aspekten davon als Eingabe(n) abfragen.
  • In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen ersten Block (oder Teil) von Hardware zum Ausführen einer Matrix-Matrix-Arbeitslast identifizieren. Zum Beispiel können die eine oder die mehreren Arbeitslasten 3516 eine Matrix-Matrix-Rechenoperation, eine Vektor-Vektor-Rechenoperation, eine Matrix-Vektor-Rechenoperation usw. und/oder eine oder mehrere beliebige Kombinationen davon beinhalten. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen ersten Kernel einer GPU (oder einer anderen Hardware) identifizieren, um die Matrix-Matrix-Arbeitslast auszuführen. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 den ersten Kernel und/oder allgemeiner die GPU in einer der Hardwarevorlagen 3514, der Hardwarevorlagen 3674 usw. identifizieren.
  • In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen zweiten Block (oder Teil) der Hardware identifizieren, um eine Vektor-Vektor-Arbeitslast auszuführen. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen zweiten Kernel der GPU (oder einer anderen Hardware) identifizieren, um die Vektor-Vektor-Arbeitslast auszuführen. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 den zweiten Kernel und/oder allgemeiner die GPU in einer der Hardwarevorlagen 3514 identifizieren.
  • In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen dritten Block (oder Teil) der Hardware identifizieren, um eine Matrix-Vektor-Arbeitslast auszuführen. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen dritten Kernel der GPU (oder einer anderen Hardware) identifizieren, um die Matrix-Vektor-Arbeitslast auszuführen. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 den dritten Kernel und/oder allgemeiner die GPU in einer der Hardwarevorlagen 3514 identifizieren.
  • In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine Registerdatei identifizieren, um jeweilige des ersten Blocks, des zweiten Blocks und/oder des dritten Blocks zu konfigurieren. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine Registerdatei identifizieren, die mit der GPU assoziiert ist, und die Registerdatei kann in einer der Hardwarevorlagen 3514 identifiziert werden. In einigen solchen Beispielen kann die Registerdatei eine erste Konfiguration zum Konfigurieren des ersten Kernels der GPU, eine zweite Konfiguration zum Konfigurieren des zweiten Kernels der GPU und/oder eine dritte Konfiguration zum Konfigurieren des dritten Kernels der GPU beinhalten.
  • In einigen Beispielen ermittelt die ML-Hardwarekonfigurationsschaltungsanordnung 3630, ob eine andere Art von Hardware und/oder eine andere Instanz der Hardware identifiziert wurde. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, dass eine weitere Instanz der GPU zusätzlich zu der ersten Instanz der GPU identifiziert wird. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, dass ein anderer Hardwaretyp, wie etwa ein KI-Prozessor, in den Hardwarevorlagen 3514 identifiziert wurde. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine Topologie (z.B. eine Verbindungs- oder Interconnect-Topologie, eine Eingabe/Ausgabe-(E/A-) Topologie, die eine oder die mehreren der Verbindungstopologien 3676 usw.) basierend auf einer oder mehreren Verbindungen zwischen einer oder mehreren der ersten GPU und der zweiten GPU oder dem KI-Prozessor erzeugen. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 die erste GPU als eine erste oder primäre Hardware und die zweite GPU oder den KI-Prozessor als eine zweite oder sekundäre Hardware auswählen. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, dass die erste GPU und die zweite GPU oder der KI-Prozessor miteinander gekoppelt werden können, indem ein oder mehrere Ausgänge der ersten GPU mit einem oder mehreren Eingängen der zweiten GPU oder des KI-Prozessors verbunden werden.
  • In einigen Beispielen passt die ML-Hardwarekonfigurationsschaltungsanordnung 3630 die zweite Konfiguration (z.B. eine Konfiguration von Hardware, die in der vorgeschlagenen HW/SW-Instanz 3522 enthalten sein soll) basierend auf einem Evaluierungsparameter an. Zum Beispiel kann der Evaluierer 3504 die Evaluierungsparameter 3526 basierend auf einer Evaluierung der vorgeschlagenen HW/SW-Instanz 3522 berechnen und/oder anderweitig ermitteln. In einigen solchen Beispielen kann der Evaluierer 3504 ermitteln, dass ein erster Evaluierungsparameter der Evaluierungsparameter 3526 ein Durchsatzparameter (z.B. ein Durchsatz von Ausgabe(en) der vorgeschlagenen HW/SW-Instanz 3522, ein Durchsatzevaluierungsparameter usw.) ist.
  • In einigen Beispielen ermittelt die ML-Hardwarekonfigurationsschaltungsanordnung 3630, ob erste Hardware durch andere Hardware ersetzt werden soll. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, die GPU durch andere Hardware, wie etwa eine CPU, einen KI-Prozessor, ein FPGA usw., zu ersetzen. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 basierend auf einem Wert des Durchsatzparameters ermitteln, die GPU zu ersetzen, um den Wert zu erhöhen und/oder anderweitig zu verbessern. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 in Reaktion auf eine Bestimmung, die erste Hardware durch andere Hardware zu ersetzen, zweite Hardware in einer Konfigurationsdatenbank identifizieren. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 die CPU, den KI-Prozessor, das FPGA usw. in den Hardwarevorlagen 3514 identifizieren. In einigen Beispielen erzeugt die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine neue Konfiguration basierend auf dem Ersetzen der ersten Hardware durch die zweite Hardware. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine neue, aktualisierte usw. Version der vorgeschlagenen HW/SW-Instanz 3522 basierend auf dem Ersetzen der GPU durch andere Hardware erzeugen.
  • In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, zweite Hardware zu der Konfiguration hinzuzufügen. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, zusätzliche Hardware, wie etwa eine CPU, eine andere GPU, einen KI-Prozessor, ein FPGA usw., in Verbindung mit der ersten GPU hinzuzufügen. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 basierend auf einem Wert eines Evaluierungsparameters, wie etwa einem Wert des Durchsatzparameters, ermitteln, zusätzliche Hardware hinzuzufügen. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 zweite Hardware identifizieren, die der Konfiguration hinzugefügt werden soll, indem sie die zweite Hardware in den Hardwarevorlagen 3514 und/oder allgemeiner in den Datenbanken 3510 zusammensetzbarer Bausteine identifiziert.
  • In einigen Beispielen ermittelt die ML-Hardwarekonfigurationsschaltungsanordnung 3630 in Reaktion auf eine Bestimmung, Hardware zu einer Konfiguration der vorgeschlagenen HW/SW-Instanz 3522 hinzuzufügen, einen oder mehrere erste Teile der ersten Hardware, um einen ersten Teil einer Arbeitslast auszuführen, und einen oder mehrere zweite Teile der zweiten Hardware, um einen zweiten Teil der Arbeitslast auszuführen. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen oder mehrere erste Kernels der ersten GPU identifizieren (oder auswählen), um einen ersten Teil der Arbeitslast(en) 3516 auszuführen, und einen oder mehrere zweite Kernels der zweiten GPU, des KI-Prozessors, der CPU, des FPGA usw. identifizieren (oder auswählen), um einen zweiten Teil der Arbeitslast(en) 3516 auszuführen. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine neue Konfiguration basierend auf einer Topologie des einen oder der mehreren ersten Teile und des einen oder der mehreren zweiten Teile ermitteln. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine neue und/oder aktualisierte Instanz, Version usw. der vorgeschlagenen HW/SW-Instanz 3522 basierend auf einer Topologie ermitteln, die die erste Hardware und die zweite Hardware koppelt.
  • Die ML-Systemkonfigurationsschaltungsanordnung 3600 des veranschaulichten Beispiels aus 36 beinhaltet die Konfigurationsevaluierungsschaltungsanordnung 3640 zum Erzeugen eines Evaluierungsparameters basierend auf einer Ausführung einer Arbeitslast basierend auf einer ersten Konfiguration und einer zweiten Konfiguration. Zum Beispiel kann die Konfigurationsevaluierungsschaltungsanordnung 3640 die Evaluierungsparameter 3526 erzeugen. Bei einigen solchen Beispielen kann die Konfigurationsevaluierungsschaltungsanordnung 3640 die Evaluierungsparameter 3526 in Reaktion auf ein Emulieren, Simulieren usw. einer Ausführung der Arbeitslast(en) 3516 (oder einer anderen Arbeitslast) unter Nutzung der vorgeschlagenen HW/SW-Instanz 3522 erzeugen. In einigen solchen Beispielen kann die Konfigurationsevaluierungsschaltungsanordnung 3640 die vorgeschlagene HW/SW-Instanz 3522 basierend auf einer ersten Softwarekonfiguration (z.B. einem oder mehreren KI/ML-Modellen) und einer zweiten Hardwarekonfiguration (z.B. einer oder mehreren Instanzen und/oder Typen von Hardware), die die vorgeschlagene HW/SW-Instanz 3522 bilden, evaluieren.
  • In einigen Beispielen kann die Konfigurationsevaluierungsschaltungsanordnung 3640 ermitteln, ob ein Evaluierungsparameter eine Schwelle erfüllt. Zum Beispiel kann die Konfigurationsevaluierungsschaltungsanordnung 3640 ermitteln, ob ein erster Wert eines Genauigkeitsparameters eine Genauigkeitsschwelle erfüllt. In einigen solchen Beispielen kann die Konfigurationsevaluierungsschaltungsanordnung 3640 in Reaktion auf eine Bestimmung, dass der erste Wert größer als die Genauigkeitsschwelle ist, ermitteln, dass der erste Wert die Genauigkeitsschwelle erfüllt. Zum Beispiel kann die Konfigurationsevaluierungsschaltungsanordnung 3640 ermitteln, dass ein Genauigkeitsparameter von 40% eine Genauigkeitsschwelle von 90% nicht erfüllt, weil 40% weniger als 90% ist. In einigen Beispielen kann die Konfigurationsevaluierungsschaltungsanordnung 3640 ermitteln, dass ein Genauigkeitsparameter von 95% eine Genauigkeitsschwelle von 90% erfüllt, weil 95% größer als 90% ist. Zusätzlich oder alternativ kann die Konfigurationsevaluierungsschaltungsanordnung 3640 ermitteln, ob ein oder mehrere andere Evaluierungsparameter (z.B. ein Latenzparameter, ein Durchsatzparameter usw.) eine oder mehrere jeweilige Evaluierungsschwellen (z.B. eine Latenzschwelle, eine Durchsatzschwelle usw.) erfüllen.
  • Die ML-Systemkonfigurationsschaltungsanordnung 3600 des veranschaulichten Beispiels aus 36 beinhaltet die Ontologieerzeugungsschaltungsanordnung 3650 zum Erzeugen, Aktualisieren und/oder anderweitigen Unterhalten einer Ontologiedatenbank. In einigen Beispielen erzeugt die Ontologieerzeugungsschaltungsanordnung 3650 die Ontologiedatenbank 3508 basierend auf den Datenbanken 3510 zusammensetzbarer Bausteine und/oder dem Anwendungsspeicher 3515. In einigen solchen Beispielen kann die Ontologieerzeugungsschaltungsanordnung 3650 die Ontologiedatenbank 3508 durch Einbeziehen von Assoziierungen zwischen verschiedenen KI/ML-Modellen, Konfiguration(en) davon, Typen von KI/ML-Arbeitslast(en) usw. und/oder beliebigen Kombination(en) davon erzeugen. In einigen solchen Beispielen können die Assoziierungen durch eine Kennung, eine Variable, einen Zeiger usw. oder eine beliebige andere Identifikationsdatenstruktur implementiert werden. In einigen Beispielen kann die Ontologieerzeugungsschaltungsanordnung 3650 die Ontologiedatenbank 3508 basierend auf der vorgeschlagenen HW/SW-Instanz 3522, historischen Konfigurationen, wie etwa den historischen Konfigurationen 3678, den Evaluierungsparametern 3526, der Belohnungsfunktion 3528 usw., und/oder einer oder mehreren beliebigen Kombinationen davon aktualisieren. Zum Beispiel kann die Ontologieerzeugungsschaltungsanordnung 3650 die Ontologiedatenbank 3508 basierend auf früheren Versionen der vorgeschlagenen HW/SW-Instanz 3522, einem oder mehreren damit assoziierten Evaluierungsparametern 3526 usw. aktualisieren.
  • In einigen Beispielen identifiziert die Ontologieerzeugungsschaltungsanordnung 3650 ein KI/ML-Modell basierend auf historischen Konfigurationen. Zum Beispiel kann die Ontologieerzeugungsschaltungsanordnung 3650 ein KI/ML-Modell, wie etwa ein NN, basierend auf zuvor erzeugten ML-Rechenknoten, vorgeschlagenen HW/SW-Instanzen usw. und/oder einer oder mehreren beliebigen Kombinationen davon identifizieren. In einigen Beispielen identifiziert die Ontologieerzeugungsschaltungsanordnung 3650 Hardware basierend auf historischen Konfigurationen, wie etwa den historischen Konfigurationen 3678. Zum Beispiel kann die Ontologieerzeugungsschaltungsanordnung 3650 Hardware, wie etwa eine GPU, basierend auf zuvor erzeugten ML-Rechenknoten, vorgeschlagenen HW/SW-Instanzen usw. und/oder einer oder mehreren beliebigen Kombinationen davon identifizieren.
  • Die ML-Systemkonfigurationsschaltungsanordnung 3600 des veranschaulichten Beispiels aus 36 beinhaltet die Arbeitslastausführungsschaltungsanordnung 3660 zum Bereitstellen eines oder mehrerer Rechenknoten zum Ausführen einer Arbeitslast. Zum Beispiel kann die Arbeitslastausführungsschaltungsanordnung 3660 den ML-Rechenknoten 3517 bereitstellen, um die Arbeitslast(en) 3516 auszuführen. In einigen solchen Beispielen kann die Arbeitslastausführungsschaltungsanordnung 3660 den ML-Rechenknoten 3517 in Reaktion darauf bereitstellen, dass ein oder mehrere Evaluierungsparameter eine oder mehrere jeweilige Schwellen erfüllen. In einigen Beispielen kann die Arbeitslastausführungsschaltungsanordnung 3660 den ML-Rechenknoten 3517 bereitstellen, indem die Software 3519 unter Verwendung einer Softwarekonfiguration kompiliert wird, die durch die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermittelt wird. In einigen Beispielen kann die Arbeitslastausführungsschaltungsanordnung 3660 den ML-Rechenknoten 3517 bereitstellen, indem die Hardware 3521 unter Verwendung einer Hardwarekonfiguration konfiguriert wird, die durch die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermittelt wird. In einigen solchen Beispielen kann die Arbeitslastausführungsschaltungsanordnung 3660 ein oder mehrere KI/ML-Modelle, die durch die Software 3519 implementiert werden können, basierend auf der Softwarekonfiguration und der Hardwarekonfiguration ausführen.
  • Die ML-Systemkonfigurationsschaltungsanordnung 3600 des veranschaulichten Beispiels aus 36 beinhaltet den Datenspeicher 3670 zum Aufzeichnen von Daten (z.B. die Softwarevorlagen 3672, die Hardwarevorlagen 3674, die Verbindungstopologien 3676, die historischen Konfigurationen 3678 usw.). Der Datenspeicher 3670 kann durch einen flüchtigen Speicher (z.B. einen SDRAM (Synchronous Dynamic Random Access Memory), DRAM (Dynamic Random Access Memory), RDRAM (RAMBUS Dynamic Random Access Memory) usw.) und/oder einen nichtflüchtigen Speicher (z.B. EEPROM (Electrically Erasable Programmable Read-Only Memory), FLASH-Speicher, ein HDD (Festplattenlaufwerk), ein SSD- (Solid State Disk) Laufwerk usw.) implementiert werden. Der Datenspeicher 3670 kann zusätzlich oder alternativ durch einen oder mehrere Speicher mit doppelter Datenrate (DDR) implementiert werden, wie etwa DDR, DDR2, DDR3, DDR4, DDR5, mobile DDR (mDDR), DDR-SDRAM usw. Der Datenspeicher 3670 kann zusätzlich oder alternativ durch eine oder mehrere Massenspeichervorrichtungen implementiert werden, wie etwa HDD(s), CD- (Compact Disk) Laufwerk(e), DVD- (Digital Versatile Disk) Laufwerk(e), SSD-Laufwerk(e), SD- (Secure Digital) Karte(n), CF- (CompactFlash) Karte(n) usw. Wenngleich in dem veranschaulichten Beispiel der Datenspeicher 3670 als ein einziger Datenspeicher veranschaulicht ist, kann der Datenspeicher 3670 durch eine beliebige Anzahl und/oder einen oder mehrere beliebige Typen von Datenspeichern implementiert werden. Des Weiteren können die in dem Datenspeicher 3670 gespeicherten Daten in einem beliebigen Datenformat vorliegen, wie etwa zum Beispiel Binärdaten, kommabegrenzte Daten, Tabbegrenzte Daten, SQL- (Structured Query Language) Strukturen usw. In einigen Beispielen kann der Datenspeicher 3670 eine oder mehrere Datenbanken beinhalten und/oder anderweitig implementieren. Der Begriff „Datenbank“ bezeichnet vorliegend ein organisiertes Korpus verwandter Daten, unabhängig von der Art und Weise, in der die Daten oder das aus diesen organisierte Korpus dargestellt werden. Beispielsweise kann das organisierte Korpus verwandter Daten in Form einer Tabelle und/oder einer Karte und/oder eines Gitters und/oder eines Pakets und/oder eines Datagramms und/oder eines Rahmens und/oder einer Datei und/oder eines Dokuments und/oder eines Berichts und/oder einer Liste und/oder in einer beliebigen anderen Form vorliegen.
  • In einigen Beispielen können die Softwarevorlagen 3672 durch die Softwarevorlagen 3512 aus 35 implementiert werden. Zum Beispiel können die Softwarevorlagen 3672 eine erste Vorlage beinhalten, die einem ersten Typ von KI/ML-Modell (z.B. einem NN, wie etwa einem ANN, einem CNN, einem DNN, einem RNN usw.) und/oder einer oder mehreren damit assoziierten Konfigurationen entspricht. In einigen solchen Beispielen können die Softwarevorlagen 3672 eine zweite Vorlage beinhalten, die einem zweiten Typ von KI/ML-Modell (z.B. einem Transformierermodell) und/oder Konfiguration(en) davon, einem dritten Typ von KI/ML-Modell (z.B. einem verstärkenden Lernmodell) und/oder Konfiguration(en) davon usw. entspricht.
  • In einigen Beispielen können die Hardwarevorlagen 3674 durch die Hardwarevorlagen 3514 aus 35 implementiert werden. Zum Beispiel können die Hardwarevorlagen 3674 eine erste Vorlage, die einem ersten Typ von Hardware (z.B. einer CPU usw.) und/oder damit assoziierten Konfiguration(en) entspricht, eine zweite Vorlage, die einem zweiten Typ von Hardware (z.B. einer GPU) und/oder Konfiguration(en) davon entspricht, einen dritten Typ von Hardware (z.B. einen KI-Prozessor) und/oder Konfiguration(en) davon entspricht, usw. beinhalten.
  • In einigen Beispielen können die Verbindungstopologien 3676 durch einen oder mehrere Teile der Softwarevorlagen 3512 und/oder der Hardwarevorlagen 3514 implementiert werden. Zum Beispiel können die Verbindungstopologien 3676 KI/ML-Netzwerktopologien (z.B. Schichtkonfigurationen usw.), Modelleingabe(n), Modellausgabe(en) usw. beinhalten. In einigen solchen Beispielen können die KI/ML-Netzwerktopologien, die Modelleingabe(n), die Modellausgabe(en) usw. in einem oder mehreren Teilen der Softwarevorlagen 3512 enthalten sein. In einigen Beispielen können die Verbindungstopologien 3676 Hardwarearchitekturtopologien (z.B. Kernelkopplungen, Leiterplattenlayouts usw.), Eingabe(en) (z.B. Bare-Metal-Eingabe(n), Schnittstelle(n) usw.), Ausgabe(en) (z.B. Bare-Metal-Ausgabe(en), Schnittstelle(n) usw.) usw. beinhalten. In einigen solchen Beispielen können die Hardwarearchitekturtopologien, die Eingabe(n), die Ausgabe(n) usw. in einem oder mehreren Teilen der Hardwarevorlagen 3514 enthalten sein.
  • In einigen Beispielen können die historischen Konfigurationen 3678 durch einen oder mehrere Teile der Ontologiedatenbank 3508 und/oder allgemeiner der Ontologiedatenbank 3508 implementiert werden. Zum Beispiel können die historischen Konfigurationen 3678 zuvor erzeugte, bestimmte, identifizierte usw. ML-Rechenknoten, vorgeschlagene HW/SW-Instanzen, Arbeitslast(en) usw. und/oder eine oder mehrere beliebige Kombinationen davon beinhalten. In einigen Beispielen können die historischen Konfigurationen 3678 Vorkommnisse oder andere Statistiken beinhalten, die mit Hardware- und/oder Softwarekernels in ML-Rechenknoten assoziiert sind.
  • In einigen Beispielen beinhaltet die ML-Systemkonfigurationsschaltungsanordnung 3600 Mittel zum Empfangen einer Arbeitslast. Zum Beispiel kann das Mittel zum Empfangen durch die Schnittstellenschaltung 3610 implementiert werden. In einigen Beispielen kann die Schnittstellenschaltung 3610 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 4712 aus 47, instanziiert werden. Beispielsweise kann die Schnittstellenschaltung 3610 durch die beispielhafte Universal Prozessorschaltung 34500 aus FIG. 345 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest Block 4102 aus 41, Block 4202 aus 42, Block 4302 aus 43 und Block 4602 aus 46 implementiert werden. In einigen Beispielen kann die Schnittstellenschaltung 3610 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 34600 aus FIG. 346 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die Schnittstellenschaltung 3610 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die Schnittstellenschaltung 3610 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.), einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein Heim-Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerkschnittstelle einer beliebigen Art implementiert werden, die strukturiert sind, um einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, wobei jedoch andere Strukturen gleichermaßen geeignet sind.
  • In einigen Beispielen beinhaltet die ML-Systemkonfigurationsschaltungsanordnung 3600 ein erstes Mittel zum Erzeugen einer ersten Konfiguration eines oder mehrerer Maschinenlernmodelle basierend auf einer Arbeitslast. In einigen solchen Beispielen ist die erste Konfiguration in einer ersten Konfigurationsdatenbank gespeichert, die erste Konfigurationsdatenbank beinhaltet eine Vielzahl von Maschinenlernmodellen und die Vielzahl von Maschinenlernmodellen beinhaltet das eine oder die mehreren Maschinenlernmodelle. Zum Beispiel kann das erste Mittel zum Erzeugen durch die ML-Softwarekonfigurationsschaltungsanordnung 3620 implementiert werden. In einigen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 4712 aus 47, instanziiert werden. Beispielsweise kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 durch die beispielhafte Universal Prozessorschaltung 34500 aus FIG. 345 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest die Blöcke 4104 und 4114 aus 41, Blöcke 4202, 4206, 4208, 4210, 4212, 4214, 4216 und 4218 aus 42, Blöcke 4402, 4404, 4406, 4408, 4410, 4412, 4414 und 4416 aus 44 und Blöcke 4604, 4606 und 4608 aus 46 implementiert werden. In einigen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 34600 aus FIG. 346 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • In einigen Beispielen, in denen das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten, soll das erste Mittel zum Erzeugen in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, ein zweites Maschinenlernmodell in der ersten Konfigurationsdatenbank identifizieren, eine dritte Konfiguration des zweiten Maschinenlernmodells erzeugen, den Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast basierend auf der dritten Konfiguration ermitteln und das zweite Maschinenlernmodell zum Ausführen der Arbeitslast basierend auf der dritten Konfiguration bereitstellen.
  • In einigen Beispielen, in denen das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten, soll das erste Mittel zum Erzeugen in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, eine oder mehrere erste Schichten des ersten Maschinenlernmodells zum Ausführen eines ersten Teils der Arbeitslast ermitteln, ein zweites Maschinenlernmodell in der ersten Konfigurationsdatenbank identifizieren, eine oder mehrere zweite Schichten des zweiten Maschinenlernmodells zum Ausführen eines zweiten Teils der Arbeitslast ermitteln und eine dritte Konfiguration basierend auf einer Topologie der einen oder der mehreren ersten Schichten und der einen oder der mehreren zweiten Schichten ermitteln, wobei die Topologie auf einer Ausgabe der einen oder den mehreren ersten Schichten als eine Eingabe in die eine oder die mehreren zweiten Schichten basiert.
  • In einigen Beispielen, in denen das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten, soll das erste Mittel zum Erzeugen das erste Maschinenlernmodell in der ersten Konfigurationsdatenbank identifizieren, ein zweites Maschinenlernmodell basierend auf einer Abfrage einer Ontologiedatenbank mit einer Kennung des ersten Maschinenlernmodells als Eingabe identifizieren, wobei die Ontologiedatenbank eine Assoziierung des ersten Maschinenlernmodells und des zweiten Maschinenlernmodells beinhaltet, und in Reaktion darauf, dass der Evaluationsparameter die Schwelle erfüllt, die Ontologiedatenbank basierend auf der ersten Konfiguration aktualisieren.
  • In einigen Beispielen beinhaltet die ML-Systemkonfigurationsschaltungsanordnung 3600 zweite Mittel zum Erzeugen einer zweiten Hardwarekonfiguration. In einigen solchen Beispielen ist die zweite Konfiguration in einer zweiten Konfigurationsdatenbank gespeichert, die zweite Konfigurationsdatenbank beinhaltet einen oder mehrere Teile einer Vielzahl von Hardware, und die Vielzahl von Hardware beinhaltet die Hardware. Zum Beispiel kann das zweite Mittel zum Erzeugen durch die ML-Hardwarekonfigurationsschaltungsanordnung 3630 implementiert werden. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 4712 aus 47, instanziiert werden. Beispielsweise kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 durch die beispielhafte Universal Prozessorschaltung 34500 aus FIG. 345 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest die Blöcke 4106 und 4116 aus 41, Blöcke 4302, 4306, 4308, 4310, 4312, 4314, 4316 und 4318 aus 43, Blöcke 4502, 4504, 4506, 4508, 4510, 4512, 4514 und 4516 aus 45 und Blöcke 4604, 4606 und 4608 aus 46 implementiert werden. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 34600 aus FIG. 346 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • In einigen Beispielen, in denen der eine oder die mehreren Teile einen ersten Block und/oder einen zweiten Block und/oder einen dritten Block beinhalten, soll das zweite Mittel zum Erzeugen den ersten Block der Hardware zum Ausführen einer Matrix-Matrix-Arbeitslast identifizieren, den zweiten Block der Hardware zum Ausführen einer Vektor-Vektor-Arbeitslast identifizieren, den dritten Block der Hardware zum Ausführen einer Matrix-Vektor-Arbeitslast identifizieren und Registerdateien für jeweilige des ersten Blocks, des zweiten Blocks und des dritten Blocks identifizieren, wobei die Registerdateien Zustände für die jeweiligen des ersten Blocks, des zweiten Blocks und des dritten Blocks speichern sollen, wobei die zweite Konfiguration auf einer Topologie basiert, die den ersten Block und/oder den zweiten Block und/oder den dritten Block beinhaltet.
  • In einigen Beispielen, in denen die Hardware eine erste Hardware ist, soll das zweite Mittel zum Erzeugen in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, eine zweite Hardware in der zweiten Konfigurationsdatenbank identifizieren, eine dritte Konfiguration der zweiten Hardware erzeugen, den Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast durch die zweite Hardware in der dritten Konfiguration ermitteln und die zweite Hardware mit der dritten Konfiguration zum Ausführen des einen oder der mehreren Maschinenlernmodelle zum Ausführen der Arbeitslast bereitstellen.
  • In einigen Beispielen, in denen die Hardware eine erste Hardware ist, soll das zweite Mittel zum Erzeugen in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, einen oder mehrere erste Teile der ersten Hardware zum Ausführen eines ersten Teils der Arbeitslast ermitteln, eine zweite Hardware in der ersten Konfigurationsdatenbank identifizieren, einen oder mehrere zweite Teile der zweiten Hardware zum Ausführen eines zweiten Teils der Arbeitslast ermitteln und eine dritte Konfiguration basierend auf einer Topologie des einen oder der mehreren ersten Teile und des einen oder der mehreren zweiten Teile ermitteln, wobei die Topologie auf einer Ausgabe des einen oder der mehreren ersten Teile als Eingabe in den einen oder die mehreren zweiten Teile basiert.
  • In einigen Beispielen beinhaltet die ML-Systemkonfigurationsschaltungsanordnung 3600 Mittel zum Ermitteln eines Evaluierungsparameters basierend auf einer Ausführung einer Arbeitslast. In einigen solchen Beispielen basiert die Ausführung der Arbeitslast auf einer ersten Konfiguration eines oder mehrerer Maschinenlernmodelle und einer zweiten Konfiguration von Hardware. In einigen solchen Beispielen ist die zweite Konfiguration in einer zweiten Konfigurationsdatenbank gespeichert, die zweite Konfigurationsdatenbank beinhaltet einen oder mehrere Teile einer Vielzahl von Hardware, und die Vielzahl von Hardware beinhaltet die Hardware. In einigen Beispielen, in denen der Evaluierungsparameter ein erster Evaluierungsparameter ist, soll das Mittel zum Ermitteln eine Belohnungsfunktion ermitteln, die den ersten Evaluierungsparameter mit einer ersten Gewichtung und einen zweiten Evaluierungsparameter mit einer zweiten Gewichtung beinhaltet, wobei die erste Gewichtung größer als die zweite Gewichtung ist, und in Reaktion auf Ermitteln, dass der erste Evaluierungsparameter und/oder der zweite Evaluierungsparameter die Schwelle nicht erfüllt, die erste Konfiguration und/oder die zweite Konfiguration ändern, um den ersten Evaluierungsparameter zu erhöhen und/oder den zweiten Evaluierungsparameter zu verringern. Zum Beispiel kann das Mittel zum Ermitteln durch die Konfigurationsevaluierungsschaltungsanordnung 3640 implementiert werden. In einigen Beispielen kann die Konfigurationsevaluierungsschaltungsanordnung 3640 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 4712 aus 47, instanziiert werden. Beispielsweise kann die Konfigurationsevaluierungsschaltungsanordnung 3640 durch die beispielhafte Universal Prozessorschaltung 34500 aus FIG. 345 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest die Blöcke 4108 und 4110 aus 41 und Blöcke 4610 und 4612 aus 46 implementiert werden. In einigen Beispielen kann die Konfigurationsevaluierungsschaltungsanordnung 3640 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 34600 aus FIG. 346 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die Konfigurationsevaluierungsschaltungsanordnung 3640 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die Konfigurationsevaluierungsschaltungsanordnung 3640 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • In einigen Beispielen beinhaltet die ML-Systemkonfigurationsschaltungsanordnung 3600 Mittel zum Erzeugen, Unterhalten und/oder Aktualisieren einer Ontologiedatenbank basierend auf einem Evaluierungsparameter. Zum Beispiel können die Mittel zum Erzeugen, Unterhalten und/oder Aktualisieren durch die Ontologieerzeugungsschaltungsanordnung 3650 implementiert werden. In einigen Beispielen kann die Ontologieerzeugungsschaltungsanordnung 3650 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 4712 aus 47, instanziiert werden. Beispielsweise kann die Ontologieerzeugungsschaltungsanordnung 3650 durch die beispielhafte Universal Prozessorschaltung 34500 aus FIG. 345 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest Block 4112 aus 41, Block 4204 aus 42, Block 4304 aus 43 und Block 4604 aus 46 implementiert werden. In einigen Beispielen kann die Ontologieerzeugungsschaltungsanordnung 3650 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 34600 aus FIG. 346 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die Ontologieerzeugungsschaltungsanordnung 3650 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die Ontologieerzeugungsschaltungsanordnung 3650 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • In einigen Beispielen beinhaltet die ML-Systemkonfigurationsschaltungsanordnung 3600 Mittel zum Ausführen eines oder mehrerer Maschinenlernmodelle in einer ersten Konfiguration auf Hardware in einer zweiten Konfiguration. In einigen solchen Beispielen erfolgt das Ausführen in Reaktion darauf, dass ein Evaluierungsparameter eine Schwelle erfüllt. In einigen solchen Beispielen sollen das eine oder die mehreren Maschinenlernmodelle und die Hardware eine Arbeitslast ausführen. Zum Beispiel kann das Mittel zum Ausführen durch die Arbeitslastausführungsschaltungsanordnung 3660 implementiert werden. In einigen Beispielen kann die Arbeitslastausführungsschaltungsanordnung 3660 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 4712 aus 47, instanziiert werden. Beispielsweise kann die Konfigurationsevaluierungsschaltungsanordnung 3640 durch die beispielhafte Universal Prozessorschaltung 34500 aus FIG. 345 instanziiert werden, die maschinenausführbare Anweisungen ausführt, wie etwa jene, die durch zumindest Block 4118 aus 41 und Block 4614 aus 46 implementiert werden. In einigen Beispielen kann die Arbeitslastausführungsschaltungsanordnung 3660 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 34600 aus FIG. 346 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann die Arbeitslastausführungsschaltungsanordnung 3660 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann die Arbeitslastausführungsschaltungsanordnung 3660 durch mindestens eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • In einigen Beispielen beinhaltet die ML-Systemkonfigurationsschaltungsanordnung 3600 Mittel zum Speichern von Daten. In einigen Beispielen können die Daten die Softwarevorlagen 3672, die Hardwarevorlagen 3674, die Verbindungstopologien 3676, die historischen Konfigurationen 3678 oder beliebige andere vorliegend beschriebene Daten beinhalten. Das Mittel zum Speichern kann zum Beispiel durch den Datenspeicher 3670 implementiert werden. In einigen Beispielen kann der Datenspeicher 3670 durch eine Prozessorschaltung, wie etwa die beispielhafte Prozessorschaltung 4712 aus 47, instanziiert werden. Der Datenspeicher 3670 kann zum Beispiel durch die Universal Prozessorschaltung 34500 aus FIG. 345 instanziiert werden, die maschinenausführbare Anweisungen ausführt. In einigen Beispielen kann der Datenspeicher 3670 durch eine Hardwarelogikschaltungsanordnung instanziiert werden, die durch eine ASIC oder die FPGA-Schaltungsanordnung 34600 aus FIG. 346 implementiert werden kann, die dazu strukturiert ist, Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen. Zusätzlich oder alternativ kann der Datenspeicher 3670 durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware instanziiert werden. Zum Beispiel kann der Datenspeicher 3670 durch eine oder mehrere Massenspeichervorrichtungen (z.B. die eine oder die mehreren Massenspeichervorrichtungen 4728 aus 47), eine oder mehrere Hardwareschaltungen (z.B. eine Prozessorschaltung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die dazu strukturiert sind, einige oder alle der maschinenlesbaren Anweisungen auszuführen und/oder einige oder alle der Operationen durchzuführen, die den maschinenlesbaren Anweisungen entsprechen, ohne Software oder Firmware auszuführen, jedoch sind andere Strukturen gleichermaßen geeignet.
  • Während eine beispielhafte Art und Weise des Implementierens des ML-Systemkonfigurators 3402 aus 34 und/oder 35 in 36 veranschaulicht ist, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in 36 veranschaulicht sind, kombiniert, geteilt, umgeordnet, weggelassen, eliminiert und/oder auf eine beliebige andere Weise implementiert werden. Ferner können die beispielhafte Schnittstellenschaltung 3610, die beispielhafte ML-Softwarekonfigurationsschaltungsanordnung 3620, die beispielhafte ML-Hardwarekonfigurationsschaltungsanordnung 3630, die beispielhafte Konfigurationsevaluierungsschaltungsanordnung 3640, die beispielhafte Ontologieerzeugungsschaltungsanordnung 3650, die beispielhafte Arbeitslastausführungsschaltungsanordnung 3660, der beispielhafte Datenspeicher 3670, der beispielhafte Bus 3680 und/oder allgemeiner der beispielhafte ML-Systemkonfigurator 3402 aus 34 und/oder 35 durch Hardware allein oder durch Hardware in Kombination mit Software und/oder Firmware implementiert werden. Somit können zum Beispiel beliebige der beispielhaften Schnittstellenschaltung 3610, der beispielhaften ML-Softwarekonfigurationsschaltungsanordnung 3620, der beispielhaften ML-Hardwarekonfigurationsschaltungsanordnung 3630, der beispielhaften Konfigurationsevaluierungsschaltungsanordnung 3640, der beispielhaften Ontologieerzeugungsschaltungsanordnung 3650, der beispielhaften Arbeitslastausführungsschaltungsanordnung 3660, des beispielhaften Datenspeichers 3670, des beispielhaften Busses 3680, und/oder allgemeiner des beispielhaften ML-Systemkonfigurators 3402 durch eine Prozessorschaltung, analoge Schaltung(en), digitale Schaltung(en), Logikschaltung(en), programmierbare Prozessor(en), einen oder mehrere programmierbare Mikrocontroller, GPU(s), DSP(s), ASIC(s), programmierbare Logikvorrichtung(en) (PLD(s)) und/oder frei programmierbare Logikvorrichtung(en) (FPLD(s)), wie etwa FPGAs, implementiert werden. Ferner kann der beispielhafte ML-Systemkonfigurator 3402 aus 34 und/oder 35 ein oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu oder anstelle der in 36 veranschaulichten beinhalten und/oder kann mehr als eines von beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen beinhalten.
  • 37 ist eine Veranschaulichung eines beispielhaften Arbeitsablaufs 3700 zum Erzeugen eines ML-Rechenknotens, wie etwa des zusammensetzbaren ML-Rechenknotens 3517 aus 35. Der Arbeitsablauf 3700 beinhaltet eine erste Datenbank 3510A zusammensetzbarer Bausteine der Datenbanken 3510 zusammensetzbarer Bausteine aus 35, eine erste Hardwarevorlage 3514A der Hardwarevorlagen 3514 aus 35, den Ontologiegenerator 3506 aus 35, die Ontologiedatenbank 3508 aus 35, den ML-Rechenknoten 3517 aus 35 und die Hardware 3521 aus 35.
  • Die erste Hardwarevorlage 3514A des veranschaulichten Beispiels beinhaltet einen ersten beispielhaften Block 3702, einen zweiten beispielhaften Block 3704 und beispielhafte Registerdateien 3706. In diesem Beispiel ist der erste Block 3702 ein Matrix-Vektor-Block (identifiziert durch MAT_VEC BLOCK). Der erste Block 3702 kann zum Beispiel ein Hardwareblock oder Teil von Hardware sein, wie etwa die GPU 3422 aus 34 (oder die CPU 3418, der KI-Prozessor 3426, das FPGA 3430 usw. aus 34), der eine Matrix-Vektor-Rechenoperation ausführen kann. Zusätzlich und/oder alternativ kann der erste Block 3702 ein Softwareblock, ein Kernel usw. sein, der einen Teil oder ein Fragment maschinenlesbarer Anweisungen beinhalten kann. In einigen solchen Beispielen kann der erste Block 3702 durch Code implementiert werden, der bei Ausführung durch Hardware oder eine Prozessorschaltung eine Matrix-Vektor-Berechnung ausführen kann.
  • In diesem Beispiel ist der zweite Block 3702 ein Vektor-Vektor-Block (identifiziert durch VEC_VEC BLOCK). Der zweite Block 3704 kann zum Beispiel ein Hardwareblock oder Teil von Hardware sein, wie etwa die GPU 3422 aus 34 (oder die CPU 3418, der KI-Prozessor 3426, das FPGA 3430 usw. aus 34), der eine Vektor-Vektor-Rechenoperation ausführen kann. Zusätzlich und/oder alternativ kann der zweite Block 3704 ein Softwareblock, ein Kernel usw. sein, der einen Teil oder ein Fragment maschinenlesbarer Anweisungen beinhalten kann. In einigen solchen Beispielen kann der zweite Block 3704 durch Code implementiert werden, der bei Ausführung durch Hardware oder eine Prozessorschaltung eine Vektor-Vektor-Berechnung ausführen kann.
  • In diesem Beispiel können die Registerdateien 3706 eine oder mehrere Registerdateien beinhalten, die jeweils durch ein Array, eine Bank usw. von Prozessorregistern implementiert werden können. Zum Beispiel können die Registerdateien 3706 Zustände von Prozessor-Threads (z.B. CPU-Threads, GPU-Threads usw.) speichern, die die Ausführung von Arbeitslasten unterstützen.
  • In dem veranschaulichten Beispiel aus 37 beginnt der Arbeitsablauf 3700, wenn der ML-Systemkonfigurator 3402 aus 34 und/oder 35 eine erste beispielhafte Konfiguration 3708 (identifiziert durch KONFIGURATIONSITERATION 34) basierend auf der ersten Hardwarevorlage 3514A und/oder allgemeiner der ersten Datenbank 3510A zusammensetzbarer Bausteine erzeugen. Die erste Konfiguration 3708 des veranschaulichten Beispiels beinhaltet den ersten Block 3702, den zweiten Block 3704 und zwei Registerdateien der Registerdateien 3706. In Reaktion auf Erzeugen der ersten Konfiguration 3708 kann der ML-Systemkonfigurator 3402 die erste Konfiguration 3708 basierend auf einer Ausführung der Arbeitslast(en) 3516 aus 35 unter Nutzung der ersten Konfiguration 3708 evaluieren. Der Ontologiegenerator 3506 kann die Ontologiedatenbank 3508 basierend auf der ersten Konfiguration 3708, einem oder mehreren mit der ersten Konfiguration 3708 assoziierten Evaluierungsparametern usw. und/oder einer oder mehreren beliebigen Kombinationen davon aktualisieren.
  • In dem veranschaulichten Beispiel aus 37 beinhaltet der Arbeitsablauf 3700, dass der ML-Systemkonfigurator 3402 eine zweite beispielhafte Konfiguration 3710 (identifiziert durch KONFIGURATIONSITERATION 35) basierend auf der ersten Hardwarevorlage 3514A und/oder allgemeiner der ersten Datenbank 3510A zusammensetzbarer Bausteine erzeugt. In dem veranschaulichten Beispiel ist die zweite Konfiguration 3710 eine Iteration, eine Aktualisierung usw. der ersten Konfiguration 3708. In einigen Beispielen kann die Iteration der ersten Konfiguration 3708 basierend auf einem oder mehreren Evaluierungsparametern, die mit der ersten Konfiguration 3708 assoziiert sind, bewirkt werden (z.B. bewirkt durch eine Motivierung zum Erhöhen von Evaluierungsparameterwerten, wie etwa Genauigkeit, Latenz, Durchsatz usw.). Die zweite Konfiguration 3710 des veranschaulichten Beispiels beinhaltet den ersten Block 3702, zwei Instanzen des zweiten Blocks 3704 und drei Registerdateien der Registerdateien 3706. In Reaktion auf das Erzeugen der zweiten Konfiguration 3710 kann der ML-Systemkonfigurator 3402 die zweite Konfiguration 3710 basierend auf einer Ausführung der Arbeitslast(en) 3516 mit der zweiten Konfiguration 3710 evaluieren. Der Ontologiegenerator 3506 kann die Ontologiedatenbank 3508 basierend auf der zweiten Konfiguration 3710, einem oder mehreren mit der zweiten Konfiguration 3710 assoziierten Evaluierungsparametern usw. und/oder einer oder mehreren beliebigen Kombinationen davon aktualisieren.
  • Vorteilhafterweise kann der ML-Systemkonfigurator 3402 gleichzeitig mehrere Sätze relevanter zusammensetzbarer Bausteine entwickeln, die jeweils eine andere Architekturklasse und einen anderen Designstil abdecken. Zum Beispiel kann der Arbeitsablauf 3700 für unterschiedliche Hardware gleichzeitig (z.B. im Wesentlichen gleichzeitig) ausgeführt werden. In einigen solchen Beispielen kann der Arbeitsablauf 3700 für eine GPU, eine CPU, einen KI-Prozessor usw. im Wesentlichen gleichzeitig ausgeführt werden. Vorteilhafterweise kann das gleichzeitige Entwickeln mehrerer Sätze relevanter zusammensetzbarer Bausteine für unterschiedliche Hardware zur Identifikation von Hardware führen, die Anforderungen für eine gegebene Arbeitslast erfüllt. Zum Beispiel kann der ML-Systemkonfigurator 3402 ermitteln, dass eine KI-Prozessorarchitektur, die auf dem Systolischer-Array-Designstil basiert, für rechenintensive KI-Modelle geeignet sein kann, aber nicht für speichergebundene und weniger rechenintensive Arbeitslasten geeignet ist. Daher ermöglicht das gleichzeitige Entwickeln von Hardwarearchitekturen mit unterschiedlichen Designstilen, dass sich der ML-Systemkonfigurator 3402 flexibel entwickelt, um die beste Genauigkeits- und Hardware-Effizienzkombination während des Codesignprozesses zu erreichen, was vollständig und/oder teilweise durch den Arbeitsablauf 3700 implementiert werden kann. Gleichermaßen kann der Arbeitsablauf 3700 im Softwaresuchraum 3518 aus 35 ausgeführt werden, indem mehrere Sätze relevanter zusammensetzbarer Bausteine für unterschiedliche Software gleichzeitig entwickelt werden. Als Beispiel gibt es bei der Neuronalnetz-Softwaresuche mehrere Klassen von Netzwerken mit eigenen vorteilhaften Eigenschaften (z.B. RNNs, CNNs, Transformierer usw.) und eigenen zusammensetzbaren Baustein(en) (z.B. Matrix x Vektor für RNNs, Faltungen für CNNs usw.).
  • Während des Arbeitsablaufs 3700 kann der ML-Systemkonfigurator 3402 den ML-Rechenknoten 3517 basierend auf mehreren Konfigurationsiterationen (z.B. der ersten Konfiguration 3708, der zweiten Konfiguration 3710 usw.) erzeugen und/oder anderweitig identifizieren. In diesem Beispiel kann der ML-Systemkonfigurator 3402 den ML-Rechenknoten 3517 basierend auf einer dritten beispielhaften Konfiguration 3712 (identifiziert durch KONFIGURATIONSITERATION N) erzeugen. Die dritte Konfiguration 3712 beinhaltet den ersten Block 3702, drei Instanzen des dritten Blocks 3704 und zwei Registerdateien der Registerdateien 3706. Der Ontologiegenerator 3506 kann die Ontologiedatenbank 3508 basierend auf der dritten Konfiguration 3712, einem oder mehreren mit der dritten Konfiguration 3712 assoziierten Evaluierungsparametern usw. und/oder einer oder mehreren beliebigen Kombinationen davon aktualisieren.
  • 38 ist eine Veranschaulichung eines weiteren beispielhaften Arbeitsablaufs 3800 zum Identifizieren eines zusammensetzbaren Maschinenlern-Rechenknotens, wie etwa des ML-Rechenknotens 3517 aus 35. Der Arbeitsablauf 3800 des veranschaulichten Beispiels beinhaltet eine zweite Datenbank 3510B zusammensetzbarer Bausteine der Datenbanken 3510 zusammensetzbarer Bausteine aus 35, die Steuerung 3502 aus 35, den Evaluierer 3504 aus 35, den Softwaresuchraum 3518 aus 35, den Hardwaresuchraum 3520 aus 35, die vorgeschlagene HW/SW-Instanz 3522 aus 35, die Performanzmodellierung 3524 aus 35, die Evaluierungsparameter 3526 aus 35, die Belohnungsfunktion 3528 aus 35 und eine beispielhafte Bibliothek von Verbindungstopologien 3802.
  • In dem veranschaulichten Beispiel beinhaltet die zweite Datenbank 3510B zusammensetzbarer Bausteine die Bibliothek von Verbindungstopologien 3802 und/oder implementiert diese anderweitig. In einigen Beispielen kann die Bibliothek von Verbindungstopologien 3802 durch die Verbindungstopologien 3676 aus 36 implementiert werden. In dem veranschaulichten Beispiel stellt die Bibliothek von Verbindungstopologien 3802 beispielhafte Topologien verschiedener beispielhafter Knoten 3804, 3806, 3808, 3810 einschließlich eines ersten beispielhaften Knotens 3804, eines zweiten beispielhaften Knotens 3806, eines dritten beispielhaften Knotens 3808 und eines vierten beispielhaften Knotens 3810 dar. Die Knoten 3804, 3806, 3808, 3810 des veranschaulichten Beispiels sind heterogene Rechenknoten, die durch einen oder mehrere Teile unterschiedlicher Arten von Hardware implementiert werden können. Zum Beispiel beinhaltet der erste Knoten 3804 einen ersten beispielhaften Hardwarekernel 3812, einen zweiten beispielhaften Hardwarekernel 3814 und einen dritten beispielhaften Hardwarekernel 3816. In einigen solchen Beispielen kann der erste Hardwarekernel 3812 ein Hardwarekernel einer GPU sein, der zweite Hardwarekernel 3814 kann ein Hardwarekernel eines KI-Prozessors sein und der dritte Hardwarekernel 3816 kann ein Hardwarekernel einer CPU sein.
  • In dem veranschaulichten Beispiel weist jeder der Knoten 3804, 3806, 3808, 3810 eine andere Topologie (z.B. eine Zwischenverbindungskonfiguration) auf. Zum Beispiel weist der erste Knoten 3804 eine erste Topologie auf, in der jeder der Kernels 3812, 3814, 3816 in Reihe geschaltet ist. Der zweite Knoten 3806 weist eine zweite Topologie auf, in der jeder der Kernels 3812, 3814, 3816 mit zwei anderen Kernels gekoppelt ist. Der dritte Knoten 3808 weist eine dritte Topologie auf, in der ein Kernel Ausgaben an jeden der verbleibenden Kernels liefert. Der vierte Knoten 3810 weist eine vierte Topologie auf, in der alle außer einem Kernel ihre jeweiligen Ausgaben einem anderen Kernel bereitstellen. Alternativ kann eine beliebige andere Topologie in der Bibliothek von Verbindungstopologien 3802 enthalten sein.
  • Der Arbeitsablauf 3800 kann allgemein eine erste beispielhafte Operation 3818 und eine zweite beispielhafte Operation 3820 implementieren. Zum Beispiel kann der ML-Systemkonfigurator 3402 die erste Operation 3818 durch Optimieren und/oder anderweitiges Verbessern einer heterogenen Systemlösung (z.B. einer beispielhaften Implementierung des ML-Rechenknotens 3517) in Anbetracht einer Kandidaten-KI-Modellarchitektur (z.B. der Software 3519 aus 35, Teil(e) der vorgeschlagenen HW/SW-Instanz 3522 aus 35 usw.) ausführen. In einigen solchen Beispielen kann der ML-Systemkonfigurator 3402 iterativ den Hardwareteil der vorgeschlagenen HW/SW-Instanz 3522 entwickeln, indem er iterativ einen bzw. mehrere der Knoten 3804, 3806, 3808, 3810 und ihre jeweiligen Topologien evaluiert, um zu ermitteln, welcher bzw. welche der Knoten 3804, 3806, 3808, 3810 verbesserte und/oder anderweitig optimale Werte von Evaluierungsparametern von Interesse erreicht bzw. erreichen.
  • In einigen Beispielen kann der ML-Systemkonfigurator 3402 die zweite Operation 3820 durch Optimieren und/oder anderweitiges Verbessern des KI-Modells angesichts der Kandidatensystemlösung ausführen. Zum Beispiel kann der ML-Systemkonfigurator 3402 iterativ den Softwareteil der vorgeschlagenen HW/SW-Instanz 3522 entwickeln, indem er iterativ unterschiedliche KI/ML-Modelle, unterschiedliche KI/ML-Modelltopologien usw. in Reaktion auf eine Änderung des Hardwareteils der vorgeschlagenen HW/SW-Instanz 3522 evaluiert. In einigen Beispielen können die erste Operation 3818 und die zweite Operation 3820 iterativ ausgeführt werden, um (i) die beste und/oder anderweitig optimale Zielplattform (z.B. Hardware- und/oder Softwareplattform) unterschiedlicher Rechenkernels und/oder (ii) die beste und/oder anderweitig optimale Verbindungstopologie zwischen unterschiedlichen Rechenknoten zu identifizieren.
  • 39 ist eine Veranschaulichung einer beispielhaften Implementierung einer beispielhaften Ontologiedatenbank 3900. In einigen Beispielen kann die Ontologiedatenbank 3900 die Ontologiedatenbank 3508 aus 35, die historischen Konfigurationen 3678 aus 36 und/oder den Datenspeicher 3670 aus 36 implementieren.
  • Die Ontologiedatenbank 3900 des veranschaulichten Beispiels beinhaltet eine beispielhafte Ontologie von Bausteinen 3902. Die Ontologie von Bausteinen 3902 des veranschaulichten Beispiels wird durch einen Graphen (z.B. einen Ontologiegraphen) implementiert. Zusätzlich und/oder alternativ kann die Ontologie von Bausteinen 3902 durch eine beliebige andere Datendarstellung implementiert werden, wie etwa eine Tabelle, eine Karte, ein Gitter, ein Paket, ein Datagramm, einen Rahmen, eine Datei, ein Dokument, einen Bericht, eine Liste oder in einer beliebigen anderen Form. Die Ontologie von Bausteinen 3902 beinhaltet Beziehungen beispielhafter Softwareblöcke 3904 zueinander. Zum Beispiel können die Softwareblöcke 3904 einem oder mehreren Teilen eines KI/ML-Modells entsprechen. In dem veranschaulichten Beispiel beinhalten die Softwareblöcke 3904 Faltungsblöcke, Restblöcke, Poolblöcke, Engpassblöcke, lineare Blöcke usw. In dem veranschaulichten Beispiel beinhalten die Faltungsblöcke zweidimensionale Faltung (identifiziert durch CONV2D), dreidimensionale Faltung (CONV3D), gruppierte Faltung usw. Zum Beispiel können unterschiedliche Schichten der Ontologie von Bausteinen 3902 eine erhöhte Granularität unterschiedlicher Typen und Untertypen von KI/ML-Komponenten bereitstellen.
  • Die Ontologiedatenbank 3900 des veranschaulichten Beispiels beinhaltet eine beispielhafte Datenbank historischer Konfigurationen 3904. Die Datenbank 3904 des veranschaulichten Beispiels wird durch eine Tabelle (z.B. eine historische Konfigurationstabelle) implementiert. Zusätzlich und/oder alternativ kann die Datenbank 3904 durch eine beliebige andere Datendarstellung implementiert werden, wie etwa einen Graphen, eine Karte, ein Gitter, ein Paket, ein Datagramm, einen Rahmen, eine Datei, ein Dokument, einen Bericht, eine Liste oder in einer beliebigen anderen Form. Die Datenbank 3904 des veranschaulichten Beispiels beinhaltet Spalten für Indizes, Schichttypen, Kernelgrößen, Eingabekanäle, Ausgabekanäle, Rangstufe innerhalb der Art, Positionen von Vor- und Nachschichten, Vorkommnisse in optimierter SW/HW usw. In dem veranschaulichten Beispiel entspricht ein erster der Indizes (identifiziert durch INDEX 7) einer Schicht eines KI/ML-Modells, die in diesem Beispiel eine Schicht an einer bestimmten Position in einem neuronalen Netz ist, das eine zweidimensionale Faltung implementieren kann. In dem veranschaulichten Beispiel entspricht INDEX 7 einer zweidimensionalen Faltung mit einer Kernelgröße von 5x5, 128 Eingabekanälen, 64 Ausgabekanälen und einer dritten Rangstufe unter zweidimensionalen Faltungsschichten. In dem veranschaulichten Beispiel beinhaltet die durch INDEX 7 identifizierte zweidimensionale Faltungsschicht typischerweise eine Vorschicht, die der bei INDEX 2 in der Tabelle identifizierten Schicht entspricht, und eine Nachschicht, die der bei INDEX 43 in der Tabelle identifizierten Schicht entspricht. Zum Beispiel kann ein KI/ML-Modell eine erste Schicht (z.B. eine durch INDEX 2 identifizierte Schicht), eine zweite Schicht (z.B. eine durch INDEX 7 identifizierte Schicht) und eine dritte Schicht (z.B. eine durch INDEX 43 identifizierte Schicht) aufweisen. In einigen solchen Beispielen wird/werden Ausgabe(en) der Schicht, die durch INDEX 2 identifiziert wird, an Eingabe(en) der Schicht, die durch INDEX 7 identifiziert wird, bereitgestellt. In einigen solchen Beispielen wird/werden Ausgabe(en) der Schicht, die durch INDEX 7 identifiziert wird, an Eingabe(en) der Schicht, die durch INDEX 43 identifiziert wird, bereitgestellt.
  • 40 ist eine Veranschaulichung eines beispielhaften Arbeitsablaufs 4000 zum Identifizieren eines zusammensetzbaren ML-Rechenknotens, wie etwa des ML-RechenknotenS 3517 aus 35. Der Arbeitsablauf 4000 beinhaltet die Steuerung 3502 und den Evaluierer 3504 aus 35. Der Arbeitsablauf 4000 beinhaltet beispielhafte Bausteine 4002 und beispielhafte Modellschichten 4004. In einigen Beispielen können die Bausteine 4002 durch die Softwarevorlagen 3512, die Hardwarevorlagen 3514 und/oder allgemeiner die Datenbanken 3510 zusammensetzbarer Bausteine aus 35 implementiert werden. In dem veranschaulichten Beispiel beinhalten die Bausteine 4002 beispielhafte CPU-Kernels 4006, beispielhafte GPU-Kernels 4008, beispielhafte FPGA-Kernels 4010 und beispielhafte ASIC-Kernels 4012. In einigen Beispielen können einer oder mehrere der Kernels 4006, 4008, 4010, 4012 durch eine oder mehrere der Hardwarevorlagen 3514 aus 35 implementiert werden. Zum Beispiel können die CPU-Kernels 4006 durch die HW-VORLAGE N aus 35 implementiert werden, können die GPU-Kernels 4008 durch die HW-VORLAGE 35 aus 35 implementiert werden, können die FPGA-Kernels 4010 durch die HW-VORLAGE 34 aus 34 implementiert werden usw.
  • In einigen Beispielen können die Modellschichten 4004 durch die vorgeschlagene HW/SW-Instanz 3522 aus 35 und/oder die Software 3519 aus 35 implementiert werden. Die Modellschichten 4004 können zum Beispiel durch eine Datenbank implementiert werden, die historische Implementierungen von ML-Rechenknoten, die momentane oder aktuelle Implementierung eines evaluierten ML-Rechenknotens usw. beinhaltet.
  • Während des Arbeitsablaufs 4000 empfängt die Steuerung 3502 in einer anfänglichen beispielhaften Operation 4014 ein anfängliches KI-Modell, das als ein Seed-(„Keim-“) KI-Modell bezeichnet werden kann. Zum Beispiel kann das anfängliche KI-Modell ein spezifisches neuronales Netz sein, von dem bekannt ist, dass es für eine Arbeitslast von Interesse, wie etwa Bildverarbeitung, effizient ist. Zusätzlich und/oder alternativ kann die anfängliche Operation 4014 eine Funktionseingabe, eine Anfrage usw. beinhalten, die eine gewünschte KI/ML-Operation angibt (z.B. einen Wunsch, eine Bildverarbeitung durchzuführen, ohne Spezifizieren des anfänglichen KI-Modells). In einigen solchen Beispielen kann die Steuerung 3502 das anfängliche KI-Modell basierend auf der Funktionseingabe, der Anfrage usw. identifizieren.
  • Bei einer ersten beispielhaften Operation 4016 kann die Steuerung 3502 Schichtimplementierungen angesichts des anfänglichen KI-Modells auswählen. Zum Beispiel kann die Steuerung 3502 das anfängliche KI-Modell auf einen oder mehrere der Kernels 4006, 4008, 4010, 4012 der Bausteine 4002 abbilden. In einigen solchen Beispielen kann die Steuerung 3502 die GPU-Kernels 4008 basierend auf einer Bestimmung identifizieren, dass die GPU-Kernels 4008 das anfängliche KI-Modell effizient ausführen. Zum Beispiel kann die Steuerung 3502 Implementierung(en) von Schicht(en) des anfänglichen KI-Modells identifizieren, wobei die Implementierung(en) Hardware, wie etwa einem oder mehreren der GPU-Kernels 4008, entsprechen kann(können).
  • Während einer zweiten beispielhaften Operation 4018 kann die Steuerung 3502 dem Evaluierer 3504 das anfängliche KI-Modell und die Schichtimplementierungen bereitstellen. Zum Beispiel kann der Evaluierer 3504 das Modell und die Schichtimplementierungen basierend auf Emulation(en), Simulation(en) usw. des Modells und der Schichtimplementierungen evaluieren, wenn das Modell und die Schichtimplementierungen eine gewünschte oder beabsichtigte Arbeitslast ausführen sollen. Der Evaluierer 3504 kann das Modell und die Schichtimplementierungen evaluieren, um einen beispielhaften Genauigkeitsparameter 4020, einen beispielhaften Performanzparameter 4022, einen beispielhaften Energieparameter 4024 und/oder eine beliebige andere Art von Parameter, wie etwa Latenz, Kosten (z.B. Rechenkosten, Geldkosten, Produktions- oder Herstellungskosten, Kosten zum Beschaffen von Energie zum Betreiben von Hardware, die das Modell ausführt, usw.) usw. zu erzeugen. Zum Beispiel kann der Genauigkeitsparameter 4020 eine Genauigkeit des Modells und der Schichtimplementierungen sein. In einigen Beispielen kann der Performanzparameter 4022 eine Effizienz, ein Durchsatz usw. des Modells und der Schichtimplementierungen sein. In einigen Beispielen kann der Energieparameter 4024 eine Leistungsaufnahme durch die Schichtimplementierungen sein, wenn das Modell ausgeführt wird. In einigen Beispielen kann der Energieparameter 724 eine Wärmeableitung von Hardware sein, die unter Verwendung der Schichtimplementierungen konfiguriert ist, wenn das Modell ausgeführt wird. In dem veranschaulichten Beispiel werden die Parameter 4020, 4022, 4024 als Eingaben an eine beispielhafte Kostenfunktion 4026 geliefert. In einigen Beispielen kann die Kostenfunktion 4026 durch die Belohnungsfunktion 3528 aus 35 implementiert werden. Die Kostenfunktion 4026 kann zum Beispiel eine Differenz zwischen Werten der Parameter 4020, 4022, 4024 und erwarteten oder vorhergesagten Werten der Parameter 4020, 4022, 4024 ermitteln.
  • Während einer dritten beispielhaften Operation 4028 können die Ausgaben der Kostenfunktion 4026 eine Aktualisierung von Agentenparametern (z.B. Agentenparametern in einem Verstärkungslern-KI/ML-Modell) bewirken, die durch die Steuerung 3502 gehandhabt und/oder anderweitig beibehalten werden. Die Steuerung 3502 kann zum Beispiel ermitteln, ob ein Modell modifiziert werden soll, um einen Parameter (wie etwa Wärmeableitung, Genauigkeit) gegenüber einem anderen Parameter (wie etwa Energieverbrauch usw.) zu priorisieren.
  • Während einer vierten beispielhaften Operation 4030 kann die Steuerung 3502 das Modell und/oder die Schichtimplementierungen basierend auf den Ausgaben der Kostenfunktion 4026 optimieren. Zum Beispiel kann die Steuerung 3502 das anfängliche KI-Modell durch einen anderen Typ von KI/ML-Modell ersetzen, eine Konfiguration des anfänglichen KI-Modells ändern usw. In einigen Beispielen kann die Steuerung 3502 die GPU-Kernels 4008 durch andere Kernels (wie etwa die FPGA-Kernels 4010 usw.) ersetzen, eine Konfiguration (z.B. eine Registerdatei, eine Topologie usw.) der GPU-Kernels 4008 ändern usw.
  • Während einer fünften beispielhaften Operation 4032 stellt die Steuerung 3502 dem Evaluierer 3504 eine weitere Iteration des Modells und der Schichtimplementierungen zur Evaluierung bereit. Vorteilhafterweise kann der Arbeitsablauf 4000 aus 40 ausgeführt werden (z.B. iterativ ausgeführt werden), um ein Modell und entsprechende Schichtimplementierungen zum Ausführen einer Arbeitslast mit verbesserter Genauigkeit, Performanz, Energieverbrauch, Wärmeableitung, Kosten usw. zu identifizieren.
  • Flussdiagramme, die beispielhafte Hardwarelogikschaltungsanordnung, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren des ML-Systemkonfigurators 3402 aus 34 und/oder 35 und/oder der ML-Systemkonfigurationsschaltungsanordnung 3600 aus 36 darstellen, sind in 41 bis 13 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch eine Prozessorschaltung sein, wie etwa die Prozessorschaltung 4712, die in der nachstehend in Verbindung mit 47 besprochenen beispielhaften Prozessorplattform 4700 gezeigt ist, und/oder die nachstehend in Verbindung mit FIG. 345 und/oder 346 besprochenen beispielhafte Prozessorschaltung. Das Programm kann in Software umgesetzt sein, die auf einem oder mehreren nicht-transienten computerlesbaren Speicherungsmedien gespeichert ist, wie etwa einer Compact Disk (CD), einer Diskette, einem Festplattenlaufwerk (HDD), einem Solid-State-Laufwerk (SSD), einer Digital Versatile Disk (DVD), einer Blu-Ray-Disk, einem flüchtigen Speicher (z.B. Direktzugriffsspeicher (RAM) eines beliebigen Typs usw.) oder einem nichtflüchtigen Speicher (z.B. elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), Flash-Speicher, ein HDD, ein SSD usw.), der einer Prozessorschaltung zugeordnet ist, die sich in einer oder mehreren Hardwarevorrichtungen befindet, jedoch könnten das gesamte Programm und/oder Teile davon alternativ durch eine oder mehrere andere Hardwarevorrichtungen als die Prozessorschaltung ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt sein. Die maschinenlesbaren Anweisungen können über mehrere Hardware-Vorrichtungen verteilt und/oder durch zwei oder mehr Hardware-Vorrichtungen (z.B. eine Server- und eine Client-Hardware-Vorrichtung) ausgeführt werden. Die Client-Hardwarevorrichtung kann zum Beispiel durch eine Endpunkt-Client-Hardwarevorrichtung (z.B. eine Hardwarevorrichtung, die einem Benutzer zugeordnet ist) oder eine Zwischen-Client-Hardwarevorrichtung (z.B. ein Funkzugangsnetz- (RAN-) Gateway, das Kommunikation zwischen einem Server und einer Endpunkt-Client-Hardwarevorrichtung ermöglichen kann) implementiert werden. Gleichermaßen können die nicht-transienten computerlesbaren Speicherungsmedien ein oder mehrere Medien beinhalten, die sich in einer oder mehreren Hardware-Vorrichtungen befinden. Wenngleich das beispielhafte Programm unter Bezugnahme auf die in 41-13 veranschaulichten Flussdiagramme beschrieben ist, können alternativ viele andere Verfahren zum Implementieren des beispielhaften ML-Systemkonfigurators 3402 aus 34 und/oder 35 und/oder der beispielhaften ML-Systemkonfigurationsschaltungsanordnung 3600 aus 36 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ können beliebige oder alle der Blöcke durch eine oder mehrere Hardware-Schaltungen (z.B. Prozessorschaltung, diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführen von Software oder Firmware durchzuführen. Die Prozessorschaltung kann an unterschiedlichen Netzwerkstandorten verteilt und/oder lokal zu einer oder mehreren Hardwarevorrichtungen sein (z.B. ein Einzelkernprozessor (z.B. eine Einzelkern-Zentralprozessoreinheit (CPU)), ein Mehrkernprozessor (z.B. eine Mehrkern-CPU) usw.) in einer einzigen Maschine, mehrere Prozessoren, die über mehrere Server eines Server-Racks verteilt sind, mehrere Prozessoren, die über ein oder mehrere Server-Racks verteilt sind, eine CPU und/oder ein FPGA, die sich in demselben Package (z.B. demselben IC- (integrierte Schaltung) Package oder in zwei oder mehr separaten Gehäusen usw. befinden).
  • Die vorliegend beschriebenen maschinenlesbaren Anweisungen können in einem komprimierten Format und/oder einem verschlüsselten Format und/oder einem fragmentierten Format und/oder einem kompilierten Format und/oder einem ausführbaren Format und/oder einem verpackten Format usw. gespeichert sein. Die vorliegend beschriebenen maschinenlesbaren Anweisungen können als Daten oder Datenstruktur (z.B. Abschnitte von Anweisungen, Code, Darstellungen von Code usw.) gespeichert sein, die eingesetzt werden können, um maschinenlesbare Anweisungen zu erstellen, herzustellen und/oder zu erzeugen. Zum Beispiel können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speicherungsvorrichtungen und/oder Rechenvorrichtungen (z.B. Servern) gespeichert sein, die sich an denselben oder unterschiedlichen Orten eines Netzwerks oder einer Sammlung von Netzwerken (z.B. in der Cloud, in Edge-Vorrichtungen usw.) befinden. Die maschinenlesbaren Anweisungen können eines oder mehrere von Installation, Modifikation, Anpassung, Aktualisierung, Kombination, Ergänzung, Konfiguration, Entschlüsselung, Dekomprimierung, Entpacken, Verteilung, Neuzuweisung, Kompilierung usw. erfordern, um sie durch eine Rechenvorrichtung und/oder eine andere Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Zum Beispiel können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert sein, die einzeln komprimiert, verschlüsselt und/oder auf separaten Rechenvorrichtungen gespeichert sind, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und/oder kombiniert werden, einen Satz maschinenausführbarer Anweisungen bilden, die eine oder mehrere Operationen implementieren, die zusammen ein Programm, wie etwa das vorliegend beschriebene, bilden können.
  • In einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert sein, in dem sie von einer Prozessorschaltung gelesen werden können, aber das Hinzufügen zu einer Bibliothek (z.B. einer Dynamic Link Library (DLL)), zu einem Softwareentwicklungskit (SDK), einer Anwendungsprogrammierungsschnittstelle (API) usw. erfordern, um die maschinenlesbaren Anweisungen auf einer speziellen Rechenvorrichtung oder einer anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen konfiguriert (z.B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.) werden, bevor die maschinenlesbaren Anweisungen und/oder das bzw. die entsprechende(n) Programm(e) gänzlich oder teilweise ausgeführt werden können. Somit können maschinenlesbare Medien, wie vorliegend verwendet, maschinenlesbare Anweisungen und/oder Programm(e) unabhängig von dem jeweiligen Format oder Zustand der maschinenlesbaren Anweisungen und/oder Programm(e) beinhalten, wenn sie gespeichert oder sich anderweitig in Ruhe oder im Durchgang befinden.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können durch eine beliebige vergangene, aktuelle oder zukünftige Anweisungssprache, Skriptsprache, Programmiersprache usw. repräsentiert sein. Beispielsweise können die maschinenlesbaren Anweisungen unter Verwendung beliebiger der folgenden Sprachen repräsentiert sein: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift usw.
  • Wie vorstehend erwähnt, können die beispielhaften Operationen aus 41-13 unter Verwendung ausführbarer Anweisungen (z.B. computer- und/oder maschinenlesbarer Anweisungen) implementiert werden, die auf einem oder mehreren nichtflüchtigen computer- und/oder maschinenlesbaren Medien gespeichert sind, wie etwa optischen Speicherungsvorrichtungen, magnetischen Speicherungsvorrichtungen, einem HDD, einem Flash-Speicher, einem Nur-Lese-Speicher (ROM), einer CD, einer DVD, einem Cache, einem RAM eines beliebigen Typs, einem Register und/oder einer beliebigen anderen Speicherungsvorrichtung oder Speicherungsplatte, auf der Informationen für eine beliebige Dauer (z.B. für längere Zeiträume, permanent, für kurze Vorgänge, zum temporären Puffern und/oder zum Cachen der Informationen) gespeichert sind. Vorliegend sind die Bezeichnungen „nicht-transientes computerlesbares Medium“ und „nicht-transientes computerlesbares Speichermedium“ ausdrücklich so definiert, dass sie eine beliebige Art von computerlesbarer Speichervorrichtung und/oder Speicherplatte beinhalten und sich ausbreitende Signale ausschließen und Übertragungsmedien ausschließen.
  • „Beinhaltend“ und „umfassend“ (und alle Formen und Zeitformen davon) werden hier als offene Begriffe verwendet. Wenn somit ein Anspruch eine beliebige Form von „beinhalten“ oder „umfassen“ (z.B. umfasst, beinhaltet, umfassend, beinhaltend, aufweisend usw.) als eine Präambel oder innerhalb einer Anspruchsrezitation einer beliebigen Art einsetzt, versteht es sich somit, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne außerhalb des Schutzumfangs des entsprechenden Anspruchs oder der entsprechenden Rezitation zu fallen. Wenn vorliegend der Ausdruck „mindestens“ als der Übergangsausdruck in zum Beispiel einer Präambel eines Anspruchs verwendet wird, ist er auf die gleiche Art und Weise offen, wie der Begriff „umfassend“ und „beinhaltend“ offen ist. Der Begriff „und/oder“ betrifft, wenn er zum Beispiel in einer Form wie A, B und/oder C verwendet wird, eine beliebige Kombination oder Untermenge von A, B, C wie (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C oder (7) A mit B und mit C. Wie vorliegend im Zusammenhang mit der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, bezweckt der Ausdruck „mindestens eines von A und B“ auf Implementierungen zu verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Gleichermaßen soll, wie vorliegend im Kontext des Beschreibens von Strukturen, Komponenten , Elementen, Objekten und/oder Dingen verwendet, der Ausdruck „mindestens eines von A oder B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B und (3) mindestens einem A und mindestens einem B beinhalten. Wie vorliegend im Kontext der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll der Ausdruck „mindestens eines von A und B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Gleichermaßen soll, wie vorliegend im Zusammenhang mit der Beschreibung der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, der Ausdruck „mindestens eines von A oder B“ auf Implementierungen verweisen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten.
  • Wie hier verwendet schließen Singularreferenzen (z. B. „ein“, „eine“, „eines“, „erstes“, „zweites“ usw.) einen Plural nicht aus. Der Begriff „ein“ Objekt, wie vorliegend verwendet, verweist auf eines oder mehrere dieses Objekts. Die Begriffe „ein“, „ein oder mehrere“ und „mindestens ein“ werden vorliegend austauschbar verwendet. Wenngleich einzeln aufgelistet, können ferner eine Vielzahl von Mitteln, Elementen oder Verfahrensaktionen durch z.B. dieselbe Entität oder dasselbe Objekt implementiert werden. Auch wenn einzelne Merkmale in unterschiedlichen Beispielen oder Ansprüchen enthalten sein können, können diese zudem möglicherweise kombiniert werden und die Aufnahme in unterschiedlichen Beispielen oder Ansprüchen impliziert nicht, dass eine Kombination von Merkmalen nicht machbar und/oder vorteilhaft ist.
  • 41 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 4100 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um eine Arbeitslast mit einem zusammensetzbaren ML-Rechenknoten auszuführen. Die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4100 aus 41 beginnen bei Block 4102, bei dem die ML-Systemkonfigurationsschaltungsanordnung 3600 eine Anfrage zum Ausführen einer Maschinenlern- (ML-) Arbeitslast empfängt. Zum Beispiel kann die Schnittstellenschaltung 3610 (36) eine Anfrage zum Identifizieren einer Kombination von Hardware und/oder Software zum Ausführen der Arbeitslast(en) 3516 aus 35 empfangen. In einigen solchen Beispielen kann die Kombination der Hardware und/oder der Software durch die Software 3519, die Hardware 3521 und/oder allgemeiner den ML-Rechenknoten 3517 aus 35 implementiert werden.
  • Bei Block 4104 erzeugt die ML-Systemkonfigurationsschaltungsanordnung 3600 eine erste Konfiguration eines oder mehrerer ML-Modelle basierend auf der ML-Arbeitslast. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 (36) ein KI/ML-Modell, wie etwa ein CNN, aus dem Softwaresuchraum 3518 identifizieren. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 eine Konfiguration des CNN basierend auf einer der Softwarevorlagen 3512 aus 35, der Softwarevorlagen 3672 aus 36 usw. identifizieren, die dem CNN entspricht. Ein beispielhafter Prozess, der zum Implementieren von Block 4104 ausgeführt werden kann, ist unten in Verbindung mit 42 beschrieben.
  • Bei Block 4106 erzeugt die ML-Systemkonfigurationsschaltungsanordnung 3600 eine zweite Konfiguration von Hardware basierend auf der ML-Arbeitslast. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 (36) Hardware, wie etwa eine GPU, aus dem Hardwaresuchraum 3520 identifizieren. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine Konfiguration der GPU basierend auf einer der Hardwarevorlagen 3514 aus 35, der Hardwarevorlagen 3674 aus 36 usw. identifizieren, die der GPU entspricht. Ein beispielhafter Prozess, der zum Implementieren von Block 4104 ausgeführt werden kann, ist unten in Verbindung mit 43 beschrieben.
  • Bei Block 4108 erzeugt die ML-Systemkonfigurationsschaltungsanordnung 3600 einen auf einer Ausführung der Arbeitslast basierenden Evaluierungsparameter basierend auf der ersten Konfiguration und der zweiten Konfiguration. Zum Beispiel kann die Konfigurationsevaluierungsschaltungsanordnung 3640 (36) Performanzmodellierung (z.B. Emulation(en), Simulation(en), Debugging usw.) ausführen, die mit der GPU assoziiert ist, die das CNN ausführt. In einigen solchen Beispielen kann die Konfigurationsevaluierungsschaltungsanordnung 3640 die Evaluierungsparameter 3526 erzeugen, die einer Simulation, einer Emulation usw. der GPU entsprechen können, die eine KI/ML-Arbeitslast mit dem CNN ausführt.
  • Bei Block 4110 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600, ob der Evaluierungsparameter eine Schwelle erfüllt. Zum Beispiel kann die Konfigurationsevaluierungsschaltungsanordnung 3640 ermitteln, ob ein Evaluierungsparameter, wie etwa ein Genauigkeitsparameter, einen Wert aufweist, der eine Evaluierungsparameterschwelle, wie etwa eine Genauigkeitsschwelle (z.B. eine Genauigkeitsparameterschwelle), erfüllt. In einigen solchen Beispielen kann die Konfigurationsevaluierungsschaltungsanordnung 3640 ermitteln, dass der Genauigkeitsparameter einen Wert von 425% aufweist, was die Genauigkeitsschwelle von 420% erfüllt, weil der Wert von 425% größer als 420% ist.
  • Falls die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4110 ermittelt, dass der Evaluierungsparameter eine Schwelle nicht erfüllt, aktualisiert die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4112 eine Ontologiedatenbank basierend auf dem Evaluierungsparameter. Zum Beispiel kann die Ontologieerzeugungsschaltungsanordnung 3650 (36) die Ontologiedatenbank 3508 aus 35 basierend auf den Evaluierungsparametern 3526, der vorgeschlagenen HW/SW-Instanz 3522, die mit den Evaluierungsparametern 3526 assoziiert sind, usw. und/oder einer oder mehreren beliebigen Kombinationen davon aktualisieren.
  • Bei Block 4114 passt die ML-Systemkonfigurationsschaltungsanordnung 3600 die erste Konfiguration basierend auf dem Evaluierungsparameter an. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 das CNN durch ein anderes KI/ML-Modell ersetzen, ein anderes KI/ML-Modell hinzufügen, eine Konfiguration des CNN ändern usw. und/oder eine oder mehrere beliebige Kombinationen davon. Ein beispielhafter Prozess, der zum Implementieren von Block 4114 ausgeführt werden kann, ist unten in Verbindung mit 44 beschrieben.
  • Bei Block 4116 passt die ML-Systemkonfigurationsschaltungsanordnung 3600 die zweite Konfiguration basierend auf dem Evaluierungsparameter an. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 die GPU durch andere Hardware ersetzen, zusätzliche Hardware hinzufügen, eine Konfiguration der GPU ändern usw. und/oder eine oder mehrere beliebige Kombinationen davon. Ein beispielhafter Prozess, der zum Implementieren von Block 4116 ausgeführt werden kann, ist unten in Verbindung mit 45 beschrieben. In Reaktion auf das Anpassen der zweiten Konfiguration basierend auf dem Evaluierungsparameter bei Block 4116 kehrt die Steuerung zu Block 4108 zurück, um einen Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast basierend auf der ersten Konfiguration (z.B. einer aktualisierten oder angepassten Version der ersten Konfiguration) und der zweiten Konfiguration (z.B. einer aktualisierten oder angepassten Version der zweiten Konfiguration) zu erzeugen.
  • Falls bei Block 4110 die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, dass der Evaluierungsparameter eine Schwelle erfüllt, geht die Steuerung zu Block 4118 über, um das eine oder die mehreren ML-Modelle, die auf den auf der ersten Konfiguration basierenden ML-Modellen basieren, auf der Hardware in der zweiten Konfiguration auszuführen. Zum Beispiel kann die Arbeitslastausführungsschaltungsanordnung 3660 (36) den ML-Rechenknoten 3517 aus 35 kompilieren, zusammensetzen, erzeugen, identifizieren und/oder anderweitig instanziieren. In einigen solchen Beispielen kann die Software 3519 des ML-Rechenknotens 3517 durch ein oder mehrere auf der ersten Konfiguration basierende KI/ML-Modelle implementiert werden. In einigen Beispielen kann die Hardware 3521 des ML-Rechenknotens 3517 durch einen oder mehrere Typen und/oder Instanzen von Hardware implementiert werden, die auf der zweiten Konfiguration basieren. In einigen Beispielen kann der ML-Rechenknoten 3517 bereitgestellt und/oder anderweitig verfügbar gemacht werden, um die Arbeitslast(en) 3516 auszuführen. In Reaktion auf das Ausführen des einen oder der mehreren auf der ersten Konfiguration basierenden ML-Modelle auf der Hardware in der zweiten Konfiguration bei Block 4118 schließen die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4100 aus 41 ab.
  • 42 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 4200 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um eine erste Konfiguration eines oder mehrerer Maschinenlernmodelle basierend auf einer Maschinenlern-Arbeitslast zu erzeugen. Die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4200 aus 42 können durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden, um Block 4104 der beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4100 aus 41 zu implementieren. Die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4200 aus 42 beginnen bei Block 4202, bei dem die ML-Systemkonfigurationsschaltungsanordnung 3600 des 36 eine Konfigurationsdatenbank mit der ML-Arbeitslast unter Verwendung einer Anwendungsprogrammierschnittstelle abfragt. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 (36) eine oder mehrere der Datenbanken 3510 zusammensetzbarer Bausteine aus 35, der Softwarevorlagen 3672 aus 36 und/oder der Verbindungstopologien 3676 aus 36 über eine oder mehrere APIs abfragen.
  • Bei Block 4204 identifiziert die ML-Systemkonfigurationsschaltungsanordnung 3600 ein ML-Modell basierend auf historischen Konfigurationen. Zum Beispiel kann die Ontologieerzeugungsschaltungsanordnung 3660 ( 36) ein ML-Modell, wie etwa ein NN, identifizieren, das in früheren AutoML-Suchen genutzt wurde. In einigen solchen Beispielen kann die Ontologieerzeugungsschaltungsanordnung 3660 das ML-Modell basierend auf historischen Konfigurationen identifizieren, die in der Ontologiedatenbank 3508 aus 35 und/oder den historischen Konfigurationen 3678 aus 36 gespeichert sein können.
  • Bei Block 4206 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 eine Anzahl an Schichten für das ML-Modell. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass das NN eine Vielzahl von Schichten (z.B. Netzschichten, NN-Schichten usw.) aufweisen soll, wobei eine oder mehrere der Vielzahl von Schichten mit einer oder mehreren anderen der Vielzahl von Schichten in einer NN-Konfiguration gekoppelt ist bzw. sind. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 die Vielzahl von Schichten und/oder Konfiguration(en) davon basierend auf Informationen (z.B. Metadaten oder andere Daten) ermitteln, die in den Softwarevorlagen 3512 aus 35, den Softwarevorlagen 3672 aus 36 usw. enthalten sind.
  • Bei Block 4208 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 Gewichtungen für die Schichten des ML-ModellS. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass eine oder mehrere der Vielzahl von Schichten spezifische Gewichtungen (z.B. Gewichtungswerte) aufweisen soll/en. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 die Gewichtungen basierend auf Informationen (z.B. Metadaten oder anderen Daten) ermitteln, die in den Softwarevorlagen 3512, den Softwarevorlagen 3672 aus 36 usw. enthalten sind.
  • Bei Block 4210 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 einen Typ von ML-Training für das ML-Modell. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass das NN-Modell mit verstärkendem Lernen trainiert werden soll. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 den Typ des ML-Trainings, der zum Trainieren des NN-Modells zu verwenden ist, basierend auf Informationen (z.B. Metadaten oder andere Daten) ermitteln, die in den Softwarevorlagen 3512, den Softwarevorlagen 3672 aus 36 usw. enthalten sind.
  • Bei Block 4212 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 Hyperparameter zum Trainieren des ML-Modells. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 Werte eines oder mehrerer Hyperparameter ermitteln, die zum Trainieren des NN-Modells genutzt werden können. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 die Werte der Hyperparameter basierend auf Informationen (z.B. Metadaten oder andere Daten) ermitteln, die in den Softwarevorlagen 3512, den Softwarevorlagen 3672 aus 36 usw. enthalten sind.
  • Bei Block 4214 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600, ob ein weiteres ML-Modell identifiziert wird. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass identifiziert wird, dass ein anderer Typ von KI/ML-Modell, wie etwa ein Transformierer, in Verbindung mit dem NN verwendet wird. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 eine Anzahl von KI/ML-Modellen und/oder Typen davon identifizieren, indem sie den Softwaresuchraum 3518 durchsucht. In einigen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass das identifizierte erste NN-Modell ein CNN ist und dass ein anderer Typ von NN-Modell, wie etwa ein ANN, DNN usw., in Verbindung mit dem CNN genutzt werden kann.
  • Falls bei Block 4214 die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, dass ein anderes ML-Modell identifiziert wird, kehrt die Steuerung zu Block 4206 zurück, um eine Anzahl von Schichten für das zusätzlich identifizierte ML-Modell zu ermitteln. Falls die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4214 ermittelt, dass kein weiteres ML-Modell identifiziert wird, ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4216, ob mehr als ein ML-Modell identifiziert wurde. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass nur ein ML-Modell identifiziert wurde (z.B. ein CNN), während in anderen Beispielen die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln kann, dass mehr als ein ML-Modell identifiziert wurde (z.B. ein CNN und ein Transformierermodell).
  • Falls bei Block 4216 die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, dass nur ein ML-Modell identifiziert wurde, schließen die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4200 aus 42 ab. Zum Beispiel können die maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4200 aus 42 zu Block 4106 der maschinenlesbaren Anweisungen und/oder den beispielhaften Operationen 4100 aus 41 zurückkehren, um eine zweite Hardwarekonfiguration basierend auf der ML-Arbeitslast zu erzeugen.
  • Falls die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4216 ermittelt, dass mehr als ein ML-Modell identifiziert wurde, erzeugt die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4218 eine Topologie basierend auf einer oder mehreren Verbindungen zwischen einem oder mehreren der ML-Modelle. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 die unterschiedlichen Topologien in den Verbindungstopologien 3676 analysieren, um eine oder mehrere Verbindungen zwischen einem ersten identifizierten KI/ML-Modell (z.B. einem CNN) und einem zweiten identifizierten KI/ML-Modell (z.B. einem Transformierermodell) zu identifizieren. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 basierend auf einer Topologie in den Verbindungstopologien 3676 einen oder mehrere Ausgänge des ersten identifizierten KI/ML-Modells mit einem oder mehreren Eingängen des zweiten identifizierten KI/ML-Modells koppeln.
  • In Reaktion auf das Erzeugen einer Topologie basierend auf einer oder mehreren Verbindungen zwischen einem oder mehreren der ML-Modelle bei Block 4218 schließen die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4200 aus 42 ab. Zum Beispiel können die maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4200 aus 42 zu Block 4106 der maschinenlesbaren Anweisungen und/oder den beispielhaften Operationen 4100 aus 41 zurückkehren, um eine zweite Hardwarekonfiguration basierend auf der ML-Arbeitslast zu erzeugen.
  • 43 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 4300 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um eine zweite Hardwarekonfiguration basierend auf einer Maschinenlern-Arbeitslast zu erzeugen. Die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4300 aus 43 können durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden, um Block 4106 der beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4100 aus 41 zu implementieren. Die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4300 aus 43 beginnen bei Block 4302, bei dem die ML-Systemkonfigurationsschaltungsanordnung 3600 des 36 eine Konfigurationsdatenbank mit der ML-Arbeitslast unter Verwendung einer Anwendungsprogrammierschnittstelle abfragt. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 (36) eine oder mehrere der Datenbanken 3510 zusammensetzbarer Bausteine aus 35, der Hardwarevorlagen 3674 aus 36 und/oder der Verbindungstopologien 3676 aus 36 über eine oder mehrere APIs abfragen.
  • Bei Block 4304 identifiziert die ML-Systemkonfigurationsschaltungsanordnung 3600 einen Hardwaretyp basierend auf historischen Konfigurationen. Zum Beispiel kann die Ontologieerzeugungsschaltungsanordnung 3660 ( 36) einen Hardwaretyp, wie etwa eine GPU, identifizieren, der in früheren AutoML-Suchen genutzt wurde. In einigen solchen Beispielen kann die Ontologieerzeugungsschaltungsanordnung 3660 die GPU basierend auf historischen Konfigurationen identifizieren, die in der Ontologiedatenbank 3508 aus 35 und/oder den historischen Konfigurationen 3678 aus 36 gespeichert sein können.
  • Bei Block 4306 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 einen ersten Block der Hardware zum Ausführen einer Matrix-Matrix-Arbeitslast. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen ersten Kernel der GPU identifizieren, um eine oder mehrere Matrix-Matrix-Rechenoperationen auszuführen. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 den ersten Kernel und/oder Konfiguration(en) davon basierend auf Informationen (z.B. Metadaten oder andere Daten) identifizieren, die in den Hardwarevorlagen 3514 aus 35, den Hardwarevorlagen 3674 aus 36 usw. enthalten sind.
  • Bei Block 4308 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 einen zweiten Block der Hardware zum Ausführen einer Vektor-Vektor-Arbeitslast. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen zweiten Kernel (z.B. den zweiten Block 404 aus 4) der GPU identifizieren, um eine oder mehrere Vektor-Vektor-Rechenoperationen auszuführen. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 den zweiten Kernel und/oder Konfiguration(en) davon basierend auf Informationen (z.B. Metadaten oder andere Daten) identifizieren, die in den Hardwarevorlagen 3514 aus 35, den Hardwarevorlagen 3674 aus 36 usw. enthalten sind.
  • Bei Block 4310 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 einen dritten Block der Hardware zum Ausführen einer Matrix-Vektor-Arbeitslast. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen dritten Kernel (z.B. den ersten Block 402 aus 4) der GPU identifizieren, um eine oder mehrere Matrix-Vektor-Rechenoperationen auszuführen. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 den dritten Kernel und/oder Konfiguration(en) davon basierend auf Informationen (z.B. Metadaten oder andere Daten) identifizieren, die in den Hardwarevorlagen 3514 aus 35, den Hardwarevorlagen 3674 aus 36 usw. enthalten sind.
  • Bei Block 4312 identifiziert die ML-Systemkonfigurationsschaltungsanordnung 3600 eine oder mehrere Registerdateien zum Speichern von Zuständen jeweiliger des ersten Blocks, des zweiten Blocks und/oder des dritten Blocks. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine erste Registerdatei (z.B. eine der Registerdateien 406 aus 4) erzeugen und/oder anderweitig identifizieren, in der ein oder mehrere Zustände eines oder mehrerer Hardware-Threads, die dem ersten Kernel entsprechen, gespeichert werden können. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine zweite Registerdatei, die dem zweiten Kernel entspricht, und/oder eine dritte Registerdatei, die dem dritten Kernel entspricht, erzeugen, identifizieren und/oder anderweitig instanziieren.
  • Bei Block 4314 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600, ob ein weiterer Hardwaretyp identifiziert wird. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, dass ein anderer Hardwaretyp, wie etwa eine CPU, ein KI-Prozessor, ein FPGA usw., identifiziert wird, der in Verbindung mit der GPU verwendet werden soll. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine Anzahl von Instanzen von Hardware (oder Teil(en) davon) und/oder Typen davon durch Durchsuchen des Hardwaresuchraums 3520 identifizieren. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, dass eine andere Instanz der GPU (oder Teil(e) davon) in Verbindung mit der GPU genutzt werden kann.
  • Falls bei Block 4314 die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, dass ein weiterer Hardwaretyp identifiziert wird, kehrt die Steuerung zu Block 4306 zurück, um einen ersten Block der identifizierten Hardware zu identifizieren. Falls die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4314 ermittelt, dass kein weiterer Hardwaretyp identifiziert wird, ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4316, ob mehr als ein Typ und/oder mehr als eine Instanz von Hardware identifiziert wurde. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, dass nur ein Typ und/oder eine Instanz von Hardware identifiziert wurde (z.B. ein einzelner GPU-Kernel, eine einzelne GPU usw.). In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, dass ein homogener ML-Rechenknoten identifiziert wurde. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, dass mehr als eine Instanz und/oder mehr als ein Typ von Hardware (z.B. mehr als eine GPU, mehr als ein GPU-Kernel, eine GPU und ein FPGA, mindestens ein GPU-Kernel und mindestens ein FPGA-Kernel usw.) identifiziert wurde. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, dass ein heterogener ML-Rechenknoten identifiziert wurde.
  • Falls bei Block 4316 die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, dass nur ein Typ und/oder eine Instanz von Hardware identifiziert wurde, schließen die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4300 aus 43 ab. Zum Beispiel können die maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4300 aus 43 zu Block 4108 der maschinenlesbaren Anweisungen und/oder den beispielhaften Operationen 4100 aus 41 zurückkehren, um einen Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast basierend auf der ersten Konfiguration und der zweiten Konfiguration zu erzeugen.
  • Falls die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4316 ermittelt, dass mehr als ein Typ und/oder mehr als eine Instanz von Hardware identifiziert wurde, erzeugt die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4318 eine Topologie basierend auf einer oder mehreren Verbindungen der Hardware. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 die unterschiedlichen Topologien in den Verbindungstopologien 3676 analysieren, um eine oder mehrere Verbindungen zwischen einem ersten Hardwarekernel (z.B. einem ersten GPU-Kernel) und einem zweiten Hardwarekernel (z.B. einem zweiten GPU-Kernel) zu identifizieren. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 die unterschiedlichen Topologien in den Verbindungstopologien 3676 analysieren, um eine oder mehrere Verbindungen zwischen einem ersten Hardwaretyp (z.B. einer GPU) und einem zweiten Hardwaretyp (z.B. einem KI-Prozessor) zu identifizieren. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen oder mehrere Ausgänge des ersten Hardwarekernels und des zweiten Hardwarekernels basierend auf einer Topologie koppeln, die in den Verbindungstopologien 3676 enthalten ist. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 einen oder mehrere Ausgänge des ersten Hardwaretyps und des zweiten Hardwaretyps basierend auf einer Topologie koppeln, die in den Verbindungstopologien 3676 enthalten ist.
  • In Reaktion auf das Erzeugen einer Topologie basierend auf Verbindung(en) der Hardware bei Block 4318 schließen die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4300 aus 43 ab. Zum Beispiel können die maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4300 aus 43 zu Block 4108 der maschinenlesbaren Anweisungen und/oder den beispielhaften Operationen 4100 aus 41 zurückkehren, um einen Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast basierend auf der ersten Konfiguration und der zweiten Konfiguration zu erzeugen.
  • 44 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 4400 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um die erste Konfiguration basierend auf dem Evaluierungsparameter anzupassen. Die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4400 aus 44 können durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden, um Block 4114 der beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4100 aus 41 zu implementieren. Die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4400 aus 44 beginnen bei Block 4402, bei dem die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, ob ein erstes ML-Modell durch ein anderes ML-Modell ersetzt werden soll. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 (36) ermitteln, dass die vorgeschlagene HW/SW-Instanz 3522 aus 35 ein erstes KI/ML-Modell, wie etwa ein CNN, beinhaltet. In einigen solchen Beispielen kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, dass das CNN-Modell durch ein DNN-Modell ersetzt werden soll.
  • Falls bei Block 4402 die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, das erste ML-Modell nicht durch ein anderes ML-Modell zu ersetzen, geht die Steuerung zu Block 4408 über. Falls die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4402 ermittelt, das erste ML-Modell durch ein anderes ML-Modell zu ersetzen, identifiziert die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4404 ein zweites ML-Modell in einer Konfigurationsdatenbank. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ein DNN in den Softwarevorlagen 3512 der Datenbank 3510 für zusammensetzbare Bausteine identifizieren.
  • Bei Block 4406 erzeugt die ML-Systemkonfigurationsschaltungsanordnung 3600 eine neue Konfiguration basierend auf dem Ersetzen des ersten ML-Modells durch das zweite ML-Modell. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 eine neue oder aktualisierte Konfiguration von Software in der vorgeschlagenen HW/SW-Instanz 3522 erzeugen, indem das CNN durch das DNN ersetzt wird.
  • Bei Block 4408 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600, ob ein zweites ML-Modell zu einer Konfiguration hinzugefügt werden soll. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ermitteln, das DNN zu der Konfiguration der Software in Verbindung mit dem CNN und/oder einem anderen KI/ML-Modell hinzuzufügen.
  • Falls bei Block 4408 die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, kein zweites ML-Modell zu einer Konfiguration hinzuzufügen, schließen die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4400 aus 44 ab. Zum Beispiel können die maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4400 aus 44 zu Block 4116 der maschinenlesbaren Anweisungen und/oder den beispielhaften Operationen 4100 aus 41 zurückkehren, um die zweite Konfiguration basierend auf dem Evaluierungsparameter anzupassen.
  • Falls die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4408 ermittelt, ein zweites ML-Modell zu einer Konfiguration hinzuzufügen, ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4410 eine oder mehrere erste Schichten des ersten ML-Modells zum Ausführen eines ersten Teils einer Arbeitslast. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 in einer Konfiguration, die ein CNN und ein DNN beinhaltet, eine oder mehrere erste Schichten des CNN zum Ausführen eines ersten Teils der Arbeitslast(en) 3516 identifizieren und/oder anderweitig ermitteln.
  • Bei Block 4412 identifiziert die ML-Systemkonfigurationsschaltungsanordnung 3600 ein zweites ML-Modell in einer Konfigurationsdatenbank. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 das DNN in den Softwarevorlagen 3512 der Datenbanken 3510 zusammensetzbarer Bausteine identifizieren.
  • Bei Block 4414 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 eine oder mehrere zweite Schichten des zweiten ML-ModellS zum Ausführen eines zweiten Teils der Arbeitslast. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 in einer Konfiguration, die ein CNN und ein DNN beinhaltet, eine oder mehrere zweite Schichten des DNN zum Ausführen eines zweiten Teils der Arbeitslast(en) 3516 identifizieren und/oder anderweitig ermitteln.
  • Bei Block 4416 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 eine neue Konfiguration basierend auf einer Topologie der einen oder der mehreren ersten Schichten und der einen oder der mehreren zweiten Schichten. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 basierend auf einer Topologie, die in den Verbindungstopologien 3676 enthalten ist, ermitteln, einen oder mehrere Ausgänge des CNN mit einem oder mehreren Eingängen des DNN zu koppeln (oder umgekehrt).
  • In Reaktion auf das Ermitteln einer neuen Konfiguration basierend auf einer Topologie der einen oder der mehreren ersten Schichten und der einen oder der mehreren zweiten Schichten bei Block 4416 schließen die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4400 aus 44 ab. Zum Beispiel können die maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4400 aus 44 zu Block 4116 der maschinenlesbaren Anweisungen und/oder den beispielhaften Operationen 4100 aus 41 zurückkehren, um die zweite Konfiguration basierend auf dem Evaluierungsparameter anzupassen.
  • 45 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 4500 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um die zweite Konfiguration basierend auf dem Evaluierungsparameter anzupassen. Die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4500 aus 45 können durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden, um Block 4116 der beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4100 aus 41 zu implementieren. Die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4500 aus 45 beginnen bei Block 4502, bei dem die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, ob eine erste Hardware durch eine andere Hardware ersetzt werden soll. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 (36) ermitteln, dass die vorgeschlagene HW/SW-Instanz 3522 aus 35 erste Hardware, wie etwa eine GPU, beinhaltet. In einigen solchen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, dass die GPU durch ein FPGA ersetzt werden soll.
  • Falls bei Block 4502 die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, die erste Hardware nicht durch andere Hardware zu ersetzen, geht die Steuerung zu Block 4508 über. Falls die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4502 ermittelt, die erste Hardware durch andere Hardware zu ersetzen, identifiziert die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4504 zweite Hardware in einer Konfigurationsdatenbank. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ein FPGA in den Hardwarevorlagen 3514 der Datenbank 3510 zusammensetzbarer Bausteine identifizieren.
  • Bei Block 4506 erzeugt die ML-Systemkonfigurationsschaltungsanordnung 3600 eine neue Konfiguration basierend auf dem Ersetzen der ersten Hardware durch die zweite Hardware. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 eine neue oder aktualisierte Konfiguration von Hardware in der vorgeschlagenen HW/SW-Instanz 3522 durch Ersetzen der GPU durch das FPGA erzeugen.
  • Bei Block 4508 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600, ob zweite Hardware zu einer Konfiguration hinzugefügt werden soll. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 ermitteln, das FPGA zu der Konfiguration der Hardware in Verbindung mit der GPU und/oder einer anderen Hardware (wie etwa einem KI-Prozessor) hinzuzufügen.
  • Falls bei Block 4508 die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, keine zweite Hardware zu einer Konfiguration hinzuzufügen, schließen die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4500 aus 45 ab. Zum Beispiel können die maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4500 aus 45 zu Block 4118 der maschinenlesbaren Anweisungen und/oder den beispielhaften Operationen 4100 aus 41 zurückkehren, um das eine oder die mehreren auf der ersten Konfiguration basierenden ML-Modelle auf der Hardware in der zweiten Konfiguration auszuführen.
  • Falls die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4508 ermittelt, zweite Hardware zu einer Konfiguration hinzuzufügen, ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4510 einen oder mehrere erste Teile der ersten Hardware zum Ausführen eines ersten Teils einer Arbeitslast. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 in einer Konfiguration, die eine GPU und ein FPGA beinhaltet, einen oder mehrere erste Kernels der GPU identifizieren und/oder anderweitig ermitteln, um einen ersten Teil der Arbeitslast(en) 3516 auszuführen.
  • Bei Block 4512 identifiziert die ML-Systemkonfigurationsschaltungsanordnung 3600 zweite Hardware in einer Konfigurationsdatenbank. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 das FPGA in den Hardwarevorlagen 3514 der Datenbanken 3510 zusammensetzbarer Bausteine identifizieren.
  • Bei Block 4514 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 einen oder mehrere zweite Teile der zweiten Hardware zum Ausführen eines zweiten Teils der Arbeitslast. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 in einer Konfiguration, die eine GPU und ein FPGA beinhaltet, einen oder mehrere zweite Kernels des FPGA zum Ausführen eines zweiten Teils der Arbeitslast(en) 3516 identifizieren und/oder anderweitig ermitteln.
  • Bei Block 4516 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600 eine neue Konfiguration basierend auf einer Topologie des einen oder der mehreren ersten Teile und des einen oder der mehreren zweiten Teile. Zum Beispiel kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 basierend auf einer Topologie, die in den Verbindungstopologien 3676 enthalten ist, ermitteln, einen oder mehrere Ausgänge der GPU mit einem oder mehreren Eingängen des FPGA (oder einen oder mehrere Ausgänge des FPGA mit einem oder mehreren Eingängen der GPU) zu koppeln.
  • In Reaktion auf das Ermitteln einer neuen Konfiguration basierend auf einer Topologie des einen oder der mehreren ersten Teile und des einen oder der mehreren zweiten Teile bei Block 4516 schließen die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4500 aus 45 ab. Zum Beispiel können die maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4500 aus 45 zu Block 4118 der maschinenlesbaren Anweisungen und/oder den beispielhaften Operationen 4100 aus 41 zurückkehren, um das eine oder die mehreren auf der ersten Konfiguration basierenden ML-Modelle auf der Hardware in der zweiten Konfiguration auszuführen.
  • 46 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 4600 darstellt, die durch eine Prozessorschaltung ausgeführt und/oder instanziiert werden können, um einen Rechenknoten zum Ausführen einer Maschinenlern-Arbeitslast bereitzustellen. Die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4600 aus 46 beginnen bei Block 4602, bei dem die ML-Systemkonfigurationsschaltungsanordnung 3600 eine Anfrage für ein Maschinenlern- (ML-) Modell und entsprechende Hardware zum Ausführen einer ML-Arbeitslast empfängt. Zum Beispiel kann die Schnittstellenschaltung 3610 (36) eine Anfrage zum Identifizieren einer Kombination von Hardware und/oder Software zum Ausführen der Arbeitslast(en) 3516 aus 35 empfangen. In einigen solchen Beispielen kann die Kombination der Hardware und/oder der Software durch die Software 3519, die Hardware 3521 und/oder allgemeiner den ML-Rechenknoten 3517 aus 35 implementiert werden.
  • Bei Block 4604 erzeugt die ML-Systemkonfigurationsschaltungsanordnung 3600 einen Softwaresuchraum und einen Hardwaresuchraum basierend auf der Anfrage und/oder historischen Konfigurationen. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 den Softwaresuchraum 3518 aus 35 basierend auf der/den Arbeitslast(en) 3516, historischen Konfigurationen von ML-Rechenknoten, die in der Ontologiedatenbank 3508 aus 35 gespeichert sein können, den historischen Konfigurationen 3678 aus 36 usw. und/oder beliebigen Kombination(en) davon erzeugen. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 den Hardwaresuchraum 3520 aus 35 basierend auf der/den Arbeitslast(en) 3516, historischen Konfigurationen von ML-Rechenknoten, die in der Ontologiedatenbank 3508 aus 35 gespeichert sein können, den historischen Konfigurationen 3678 aus 36 usw. und/oder beliebigen Kombination(en) davon erzeugen.
  • Bei Block 4606 wählt die ML-Systemkonfigurationsschaltungsanordnung 3600 eine Konfiguration eines oder mehrerer ML-Modelle und entsprechender Hardware für einen Rechenknoten basierend auf dem Softwaresuchraum und/oder dem Hardwaresuchraum aus. Zum Beispiel können die ML-Softwarekonfigurationsschaltungsanordnung 3620 und/oder die ML-Hardwarekonfigurationsschaltungsanordnung 3630 die vorgeschlagene HW/SW-Instanz 3522 aus 35 basierend auf einem oder mehreren KI/ML-Modellen aus dem Softwaresuchraum 3518 und Hardware aus dem Hardwaresuchraum 3520 erzeugen.
  • Bei Block 4608 wählt die ML-Systemkonfigurationsschaltungsanordnung 3600 eine Topologie für eine Konfiguration des bzw. der ML-Modelle und der entsprechenden Hardware für den Rechenknoten aus. Zum Beispiel kann die ML-Softwarekonfigurationsschaltungsanordnung 3620 ein oder mehrere ML-Modelle der vorgeschlagenen HW/SW-Instanz 3522 miteinander koppeln. In einigen Beispielen kann die ML-Hardwarekonfigurationsschaltungsanordnung 3630 Hardware der vorgeschlagenen HW/SW-Instanz 3522 miteinander koppeln.
  • Bei Block 4610 gibt die ML-Systemkonfigurationsschaltungsanordnung 3600 Evaluierungsparameter aus, die mit der Konfiguration assoziiert sind. Zum Beispiel kann die Konfigurationsevaluierungsschaltungsanordnung 3640 (36) die Evaluierungsparameter 3526 basierend auf der Performanzmodellierung 3524 der vorgeschlagenen HW/SW-Instanz 3522 ermitteln.
  • Bei Block 4612 ermittelt die ML-Systemkonfigurationsschaltungsanordnung 3600, ob einer oder mehrere der Evaluierungsparameter jeweilige Schwellen erfüllen. Zum Beispiel kann die Konfigurationsevaluierungsschaltungsanordnung 3640 ermitteln, ob ein erster Wert eines Genauigkeitsparameters eine Genauigkeitsschwelle erfüllt, ein zweiter Wert eines Latenzparameters einen Latenzparameter erfüllt usw. und/oder eine oder mehrere beliebige Kombinationen davon.
  • Falls bei Block 4612 die ML-Systemkonfigurationsschaltungsanordnung 3600 ermittelt, dass einer bzw. mehrere der Evaluierungsparameter jeweilige Schwelle(n) nicht erfüllen, kehrt die Steuerung zu Block 4606 zurück, andernfalls stellt die ML-Systemkonfigurationsschaltungsanordnung 3600 bei Block 4614 den Rechenknoten bereit, um die ML-Arbeitslast auszuführen. Zum Beispiel kann die Arbeitslastausführungsschaltungsanordnung 3660 (36) den ML-Rechenknoten 3517 bereitstellen, um die Arbeitslast(en) 3516 auszuführen. In einigen solchen Beispielen kann die Arbeitslastausführungsschaltungsanordnung 3660 den ML-Rechenknoten 3517 als ein ausführbares Konstrukt kompilieren und/oder anderweitig bereitstellen, das, wenn es ausgeführt und/oder instanziiert wird, die Arbeitslast(en) 3516 ausführen kann. In Reaktion auf das Bereitstellen des Rechenknotens zum Ausführen der ML-Arbeitslast bei Block 4614 schließen die beispielhaften maschinenlesbaren Anweisungen und/oder die beispielhaften Operationen 4600 aus 46 ab.
  • 47 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 4700, die zum Ausführen und/oder Instanziieren der maschinenlesbaren Anweisungen und/oder der Operationen aus 41-13 strukturiert ist, um den ML-Systemkonfigurator 3402 aus 34 und/oder 35 und/oder die ML-Systemkonfigurationsschaltungsanordnung 3600 aus 36 zu implementieren. Die Prozessorplattform 4700 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z.B. ein neuronales Netz), eine Mobilvorrichtung (z.B. ein Mobiltelefon, ein Smartphone, ein Tablet wie etwa ein iPad™), ein Headset (z.B. ein Augmented-Reality- (AR-) Headset, ein Virtual-Reality- (VR-) Headset usw.) oder eine andere Wearable-Vorrichtung oder eine beliebige andere Art von Rechenvorrichtung sein.
  • Die Prozessorplattform 4700 des veranschaulichten Beispiels beinhaltet eine Prozessorschaltung 4712. Die Prozessorschaltung 4712 des veranschaulichten Beispiels ist Hardware. Zum Beispiel kann die Prozessorschaltung 4712 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, FPGAs, Mikroprozessoren, CPUs, GPUs, DSPs und/oder Mikrosteuerungen einer beliebigen gewünschten Familie oder eines beliebigen gewünschten Herstellers implementiert werden. Die Prozessorschaltung 4712 kann durch eine oder mehrere halbleiterbasierte (z.B. siliciumbasierte) Vorrichtungen implementiert werden. In diesem Beispiel implementiert die Prozessorschaltung 4712 die ML-Softwarekonfigurationsschaltungsanordnung 3620 (identifiziert durch ML-SW-KONFIG-SCHALTUNGSANORD), die ML-Hardwarekonfigurationsschaltungsanordnung 3630 (identifiziert durch ML-HW-KONFIG-SCHALTUNGSANORD), die Konfigurationsevaluierungsschaltungsanordnung 3640 (identifiziert durch KONFIG-EVAL-SCHALTUNGSANORD), die Ontologieerzeugungsschaltungsanordnung 3650 (identifiziert durch ONTOL-ERZ-SCHALTUNGSANORD) und die Arbeitslastausführungsschaltungsanordnung 3660 (identifiziert durch ARBEITSLAST-AUSF-SCHALTUNGSANORD) aus 36.
  • Die Prozessorschaltung 4712 des veranschaulichten Beispiels beinhaltet einen lokalen Speicher 4713 (z.B. einen Cache, Register usw.). Die Prozessorschaltung 4712 des veranschaulichten Beispiels steht durch einen Bus 4718 in Kommunikation mit einem Hauptspeicher, der einen flüchtigen Speicher 4714 und einen nichtflüchtigen Speicher 4716 beinhaltet. In einigen Beispielen implementiert der Bus 4718 den Bus 3680 aus 36. Der flüchtige Speicher 4714 kann durch SDRAM (Synchronous Dynamic Random Access Memory), DRAM (Dynamic Random Access Memory), RDRAM® (RAMBUS® Dynamic Random Access Memory) und/oder eine beliebige andere Art von RAM-Vorrichtung implementiert werden. Der nichtflüchtige Speicher 4716 kann durch Flash-Speicher und/oder eine beliebige andere gewünschte Art von Speichervorrichtung implementiert werden. Der Zugriff auf den Hauptspeicher 4714, 4716 des veranschaulichten Beispiels wird durch eine Speichersteuerung 4717 gesteuert.
  • Die Prozessorplattform 4700 des veranschaulichten Beispiels beinhaltet zudem eine Schnittstellenschaltung 4720. In diesem Beispiel implementiert die Schnittstellenschaltung 4720 die Schnittstellenschaltung 3610 aus 36. Die Schnittstellenschaltung 4720 kann durch Hardware gemäß einer beliebigen Art von Schnittstellenstandard implementiert werden, wie etwa einer Ethernet-Schnittstelle, einer Universal-Serial-Bus- bzw. USB- Schnittstelle, einer Bluetooth®-Schnittstelle, einer Nahfeldkommunikations- bzw. NFC-Schnittstelle, einer PCI- (Peripheral Component Interconnect) Schnittstelle und/oder einer PCIe- (Peripheral Component Interconnect Express) Schnittstelle.
  • In dem veranschaulichten Beispiel sind eine oder mehrere Eingabevorrichtungen 4722 mit der Schnittstellenschaltung 4720 verbunden. Die Eingabevorrichtung(en) 4722 ermöglicht (ermöglichen) einem Benutzer, Daten und/oder Befehle in die Prozessorschaltung 4712 einzugeben. Die eine oder die mehreren Eingabevorrichtungen 4722 können zum Beispiel durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert werden.
  • Eine oder mehrere Ausgabevorrichtungen 4724 sind ebenfalls mit der Schnittstellenschaltung 4720 des veranschaulichten Beispiels verbunden. Die Ausgabevorrichtung(en) 4724 können zum Beispiel durch Anzeigevorrichtungen (z. B., eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhre (CRT-Anzeige), eine In-Place-Switching-Anzeige (IPS-Anzeige), einen Touchscreen usw.), eine taktile Ausgabevorrichtung, einen Drucker und/oder Lautsprecher implementiert werden. Die Schnittstellenschaltung 4720 des veranschaulichten Beispiels beinhaltet somit typischerweise eine Grafiktreiber-Karte, einen Grafiktreiber-Chip und/oder eine Grafikprozessor-Schaltungsanordnung, wie etwa eine GPU.
  • Die Schnittstellenschaltung 4720 des veranschaulichten Beispiels beinhaltet zudem eine Kommunikationsvorrichtung, wie etwa einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein Heim-Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerkschnittstelle, um den Austausch von Daten mit externen Maschinen (z.B. Rechenvorrichtungen einer beliebigen Art) durch ein Netzwerk 4726 zu ermöglichen. Die Kommunikation kann zum Beispiel durch eine Ethernet-Verbindung, eine DSL- (digital subscriber line) Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Sichtliniensystem, ein Mobilfunksystem, eine optische Verbindung usw. erfolgen.
  • Die Prozessorplattform 4700 des veranschaulichten Beispiels beinhaltet zudem eine oder mehrere Massenspeicherungsvorrichtungen 4728 zum Speichern von Software und/oder Daten. In diesem Beispiel implementieren die eine oder die mehreren Massenspeichervorrichtungen 4728 den Datenspeicher 3670, die Softwarevorlagen 3672 (identifiziert durch SW-VORL), die Hardwarevorlagen 3674 (identifiziert durch HW-VORL), die Verbindungstopologien 3676 (identifiziert durch VERB-TOPOLOGIEN) und die historischen Konfigurationen 3678 (identifiziert durch HIST KONFIGS). Beispiele für solche Massenspeichervorrichtungen 4728 beinhalten magnetische Speichervorrichtungen, optische Speichervorrichtungen, Diskettenlaufwerke, HDDs, CDs, Blu-Ray-Disk-Laufwerke, RAID-(Redundant Array of Independent Disks) Systeme, Festkörper- (Solid-State-) Speichervorrichtungen wie etwa Flash-Speichervorrichtungen und/oder SSDs, und DVD-Laufwerke.
  • Die maschinenausführbaren Anweisungen 4732, die durch die maschinenlesbaren Anweisungen aus 41 und 13 implementiert werden, können in der Massenspeichervorrichtung 4728, in dem flüchtigen Speicher 4714, in dem nicht-flüchtigen Speicher 4716 und/oder auf einem entfernbaren nicht-transienten computerlesbaren Speichermedium, wie etwa einer CD oder DVD, gespeichert sein.
  • Die Prozessorplattform 4700 des veranschaulichten Beispiels aus 47 beinhaltet eine beispielhafte Beschleunigungsschaltungsanordnung 4734, die eine beispielhafte GPU 4740, eine beispielhafte Bildverarbeitungseinheit (vision processing unit, VPU) 4742 und einen beispielhaften Neuronalnetzprozessor 4744 beinhaltet. Zusätzlich und/oder alternativ kann die Beschleunigungsschaltungsanordnung 4734 einen beliebigen anderen Typ von Hardware beinhalten, wie etwa eine CPU, ein FPGA, eine ASIC usw. In diesem Beispiel stehen die GPU 4740, die VPU 4742 und der Neuronalnetzprozessor 4744 über den Bus 4718 in Kommunikation mit unterschiedlicher Hardware der Prozessorplattform 4700, wie etwa dem flüchtigen Speicher 4714, dem nichtflüchtigen Speicher 4716 usw. In diesem Beispiel kann der Neuronalnetzwerkprozessor 4744 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPUs, DSPs oder Steuerungen einer beliebigen gewünschten Familie oder eines beliebigen gewünschten Herstellers implementiert werden, die verwendet werden können, um ein KI-Modell, wie ein neuronales Netzwerk, auszuführen. In einigen Beispielen können die ML-Softwarekonfigurationsschaltungsanordnung 3620 und/oder die ML-Hardwarekonfigurationsschaltungsanordnung 3630 und/oder die Konfigurationsevaluierungsschaltungsanordnung 3640 und/oder die Ontologieerzeugungsschaltungsanordnung 3650 und/oder die Arbeitslastausführungsschaltungsanordnung 3660 in oder mit der GPU 4740 und/oder der VPU 4742 und/oder dem Neuronalnetzprozessor 4744 anstelle von oder zusätzlich zu dem Prozessor 4712 implementiert werden.
  • Aus dem Vorstehenden versteht es sich, dass beispielhafte Systeme, Verfahren, Einrichtungen und Herstellungsartikel für zusammensetzbare Maschinenlern-Rechenknoten offenbart wurden. Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel verbessern die Effizienz der Verwendung einer Rechenvorrichtung durch Identifizieren und/oder Erzeugen einer verbesserten und/oder anderweitig optimalen Kombination von Hardware und/oder Software zum Bewirken einer KI/ML-Arbeitslast. Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel beinhalten eine expressive Suchraumdarstellung, die mehrere Vorlagen von Hardware- und Softwarearchitekturen abdeckt. Die Vorlagen können während der HW/SW-Codesignsuche dynamisch modifizierbar sein. Vorteilhafterweise ermöglicht der expressive Suchraum den HW/SW-Codesign-Systemen, einen viel größeren und reichhaltigeren Raum von HW/SW-Designs über mehrere Architekturstile hinweg zu erkunden. Einer oder mehrere der Architekturstile können in ihren jeweiligen Sätzen von Modulen und Konnektivität (z.B. Auswahl und/oder Konfiguration von Verbindungen, Topologien, Eingaben/Ausgaben usw.) flexibel sein. Die Sätze von Modulen und Konnektivität können durch zusammensetzbare Bausteine bildbar sein. Vorteilhafterweise verbessern offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel die Wahrscheinlichkeit, effizientere Hardwarearchitekturinstanzen und ihre entsprechende codesignte Software im Vergleich zu früheren AutoML-Ansätzen zu entdecken, weil vorliegend offenbarte Beispiele viel größere HW/SW-Suchräume und zusammensetzbare Version(en) davon bieten. Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel betreffen dementsprechend eine oder mehrere Verbesserungen des Betriebs einer Maschine wie etwa eines Computers oder einer anderen elektronischen und/oder mechanischen Vorrichtung.
  • 48 ist ein Blockdiagramm einer beispielhaften Implementierung der Prozessorschaltung 1612 aus 16, der Prozessorschaltung 2112 aus 21, der Prozessorschaltung 2612 aus 26, der Prozessorschaltung 312 aus 33 und/oder der Prozessorschaltung 4712 aus 47. Bei diesem Beispiel sind die Prozessorschaltung 1612 aus 16, die Prozessorschaltung 2112 aus 21, die Prozessorschaltung 2612 aus 26, die Prozessorschaltung 312 aus 33 und/oder die Prozessorschaltung 4712 aus 47 durch einen Universalmikroprozessor 4800 implementiert. Die Universalmikro Prozessorschaltung 4800 führt einige oder alle der maschinenlesbaren Anweisungen der vorliegend offenbarten Flussdiagramme aus, um Logikschaltungen effektiv zu instanziieren, um die Operationen durchzuführen, die diesen maschinenlesbaren Anweisungen entsprechen. Zum Beispiel kann der Mikroprozessor 4800 eine Mehrkernhardwareschaltungsanordnung implementieren, wie etwa eine CPU, einen DSP, eine GPU, eine XPU usw. Wenngleich er eine beliebige Anzahl beispielhafter Kerne 4802 (z.B. 1 Kern) beinhalten kann, ist der Mikroprozessor 4800 dieses Beispiels eine Mehrkern-Halbleitervorrichtung, die N Kerne beinhaltet. Die Kerne 4802 des Mikroprozessors 4800 können unabhängig arbeiten oder können zusammenwirken, um maschinenlesbare Anweisungen auszuführen. Zum Beispiel kann Maschinencode, der einem Firmware-Programm, einem eingebetteten Software-Programm oder einem Software-Programm entspricht, durch einen der Kerne 4802 ausgeführt werden oder kann durch mehrere der Kerne 4802 zur gleichen oder zu unterschiedlichen Zeiten ausgeführt werden. In einigen Beispielen wird der Maschinencode, der dem Firmware-Programm, dem eingebetteten Software-Programm oder dem Software-Programm entspricht, in Threads aufgeteilt und parallel durch zwei oder mehr der Kerne 4802 ausgeführt. Das Softwareprogramm kann einem Teil oder allen der maschinenlesbaren Anweisungen und/oder Operationen entsprechen, die durch eines oder mehrere der vorliegend offenbarten Flussdiagramme dargestellt werden.
  • Die Kerne 4802 können durch einen ersten beispielhaften Bus 4804 kommunizieren. In einigen Beispielen kann der erste Bus 4804 einen Kommunikationsbus implementieren, um eine Kommunikation zu bewirken, die mit einem oder mehreren der Kerne 4802 assoziiert ist. Zum Beispiel kann der erste Bus 4804 einen Inter-Integrated Circuit (I2C)-Bus und/oder einen Serial Peripheral Interface (SPI)-Bus und/oder einen PCI-Bus und/oder einen PCIe-Bus implementieren. Zusätzlich oder alternativ dazu kann der erste Bus 4804 eine beliebige andere Art von Rechen- oder elektrischem Bus implementieren. Die Kerne 4802 können Daten, Anweisungen und/oder Signale von einer oder mehreren externen Vorrichtungen durch die beispielhafte Schnittstellenschaltung 4806 erhalten. Die Kerne 4802 können Daten, Anweisungen und/oder Signale durch die Schnittstellenschaltung 4806 an die eine oder die mehreren externen Vorrichtungen ausgeben. Wenngleich die Kerne 4802 dieses Beispiels den beispielhaften lokalen Speicher 4820 (z.B. Level-1- (L1-) Cache, der in einen L1-Daten-Cache und einen L1-Anweisungs-Cache aufgeteilt sein kann) beinhalten, beinhaltet der Mikroprozessor 4800 zudem einen beispielhaften gemeinsam genutzten Speicher 4810, der von den Kernen (z.B. Level-2- (L2-Cache)) für einen Hochgeschwindigkeitszugriff auf Daten und/oder Anweisungen gemeinsam genutzt werden kann. Daten und/oder Anweisungen können durch Schreiben in den und/oder Lesen aus dem gemeinsam genutzten Speicher 4810 übertragen (z.B. gemeinsam genutzt) werden. Der lokale Speicher 4820 jedes der Kerne 4802 und der gemeinsam genutzte Speicher 4810 können Teil einer Hierarchie von Speichervorrichtungen sein, die mehrere Ebenen von Cachespeicher und den Hauptspeicher (z.B. den Hauptspeicher einer oder mehrerer von 16, 21, 26, 33 und 47) beinhaltet. Typischerweise weisen höhere Speicherebenen in der Hierarchie eine niedrigere Zugriffszeit auf und weisen eine kleinere Speicherungskapazität als niedrigere Speicherebenen auf. Änderungen in den verschiedenen Ebenen der Cache-Hierarchie werden durch eine Cache-Kohärenzrichtlinie verwaltet (z.B. koordiniert).
  • Jeder Kern 4802 kann als CPU, DSP, GPU usw. oder eine beliebige andere Art von Hardwareschaltungsanordnung bezeichnet werden. Jeder Kern 4802 beinhaltet eine Steuereinheitschaltungsanordnung 4814, eine Arithmetik-und-Logik- (AL-) Schaltungsanordnung (manchmal als eine ALU bezeichnet) 4816, eine Vielzahl von Registern 4818, den Ll-Cache 4820 und einen zweiten beispielhaften Bus 4822. Es können weitere Strukturen vorhanden sein. Zum Beispiel kann jeder Kern 4802 eine Vektoreinheiten-Schaltungsanordnung, eine SIMD-(Single Instruction Multiple Data) Einheiten-Schaltungsanordnung, eine LSU- (Load/Store Unit) Schaltungsanordnung, eine Verzweigungs-/Sprungeinheiten-Schaltungsanordnung, eine FPU- (Floating Point Unit, Gleitkommaeinheit) Schaltungsanordnung usw. beinhalten. Die Steuereinheiten-Schaltungsanordnung 4814 beinhaltet halbleiterbasierte Schaltungen, die zum Steuern (z.B. Koordinieren) von Datenbewegungen innerhalb des entsprechenden Kerns 4802 strukturiert sind. Die AL-Schaltungsanordnung 4816 beinhaltet halbleiterbasierte Schaltungen, die dazu strukturiert sind, eine oder mehrere mathematische und/oder logische Operationen an den Daten innerhalb des entsprechenden Kerns 4802 durchzuführen. Die AL-Schaltungsanordnung 4816 einiger Beispiele führt ganzzahlbasierte Operationen durch. In anderen Beispielen führt die AL-Schaltungsanordnung 4816 zudem Gleitkommaoperationen durch. In weiteren Beispielen kann die AL-Schaltungsanordnung 4816 eine erste AL-Schaltungsanordnung, die ganzzahlbasierte Operationen durchführt, und eine zweite AL-Schaltungsanordnung beinhalten, die Gleitkommaoperationen durchführt. In einigen Beispielen kann die AL-Schaltungsanordnung 4816 als arithmetisch-logische Einheit (ALU, arithmetic logic unit) bezeichnet werden. Die Register 4818 sind halbleiterbasierte Strukturen zum Speichern von Daten und/oder Anweisungen, wie etwa Ergebnissen einer oder mehrerer der Operationen, die durch die AL-Schaltungsanordnung 4816 des entsprechenden Kerns 4802 durchgeführt werden. Die Register 4818 können zum Beispiel Vektorregister, SIMD-Register, Allzweckregister, Flag-Register, Segmentregister, maschinenspezifische Register, Befehlszeigerregister, Steuerregister, Debug-Register, Speicherverwaltungsregister, Maschinenprüfregister usw. beinhalten. Die Register 4818 können in einer Bank angeordnet sein, wie in 48 gezeigt. Alternativ können die Register 4818 in einer beliebigen anderen Anordnung, einem beliebigen anderen Format oder einer beliebigen anderen Struktur organisiert sein, einschließlich einer Verteilung im Kern 4802, um die Zugriffszeit zu verkürzen. Der zweite Bus 4822 kann einen I2C-Bus und/oder einen SPI-Bus und/oder einen PCI-Bus und/oder einen PCIe-Bus implementieren
  • Jeder Kern 4802 und/oder allgemeiner der Mikroprozessor 4800 können zusätzliche und/oder alternative Strukturen zu den vorstehend gezeigten und beschriebenen beinhalten. Zum Beispiel können eine oder mehrere Taktschaltungen, eine oder mehrere Stromversorgungen, ein oder mehrere Leistungs-Gates, ein oder mehrere Cache-Home-Agenten (CHAs), ein oder mehrere konvergierte/gemeinsame Mesh-Stopps (CMSs), ein oder mehrere Schieber (z.B. Tonnenschieber) und/oder eine andere Schaltungsanordnung vorhanden sein. Der Mikroprozessor 4800 ist eine Halbleitervorrichtung, die so gefertigt ist, dass sie viele Transistoren beinhaltet, die miteinander verbunden sind, um die vorstehend beschriebenen Strukturen in einer oder mehreren integrierten Schaltungen (ICs) zu implementieren, die in einem oder mehreren Packages enthalten sind. Die Prozessorschaltung kann einen oder mehrere Beschleuniger beinhalten und/oder mit diesen zusammenwirken. In einigen Beispielen werden Beschleuniger durch Logikschaltlogik implementiert, um gewisse Aufgaben schneller und/oder effizienter durchzuführen, als durch einen Allzweckprozessor möglich. Beispiele für Beschleuniger beinhalten ASICs und FPGAs, wie die vorliegend besprochenen. Eine GPU oder eine andere programmierbare Vorrichtung kann ebenfalls ein Beschleuniger sein. Beschleuniger können sich an Bord der Prozessorschaltung, in demselben Chip-Package wie die Prozessorschaltung und/oder in einem oder mehreren von der Prozessorschaltung getrennten Packages befinden.
  • 49 ist ein Blockdiagramm einer weiteren beispielhaften Implementierung der Prozessorschaltung 1612 aus 16, der Prozessorschaltung 2112 aus 21, der Prozessorschaltung 2612 aus 26, der Prozessorschaltung 312 aus 33 und/oder der Prozessorschaltung 4712 aus 47. In diesem Beispiel werden die Prozessorschaltung 1612 aus 16, die Prozessorschaltung 2112 aus 21, die Prozessorschaltung 2612 aus 26, die Prozessorschaltung 312 aus 33 und/oder die Prozessorschaltung 4712 aus 47 durch die FPGA-Schaltungsanordnung 4900 implementiert. Die FPGA-Schaltungsanordnung 4900 kann zum Beispiel verwendet werden, um Operationen durchzuführen, die ansonsten durch den beispielhaften Mikroprozessor 4800 aus 48 durchgeführt werden könnten, der entsprechende maschinenlesbare Anweisungen ausführt. Nach der Konfiguration instanziiert die FPGA-Schaltungsanordnung 4900 jedoch die maschinenlesbaren Anweisungen in Hardware und kann somit die Operationen häufig schneller ausführen, als dies mit einem Allzweck-Mikroprozessor möglich wäre, der die entsprechende Software ausführt.
  • Genauer gesagt beinhaltet im Gegensatz zu dem Mikroprozessor 4800 aus 48, der vorstehend beschrieben ist (der eine Allzweckvorrichtung ist, die programmiert sein kann, um einige oder alle der maschinenlesbaren Anweisungen auszuführen, die durch die vorliegend offenbarten Flussdiagramme repräsentiert werden, deren Zwischenverbindungen und Logikschaltungsanordnung aber nach der Fertigung fixiert sind), die FPGA-Schaltlogik 4900 des Beispiels aus 49 Zwischenverbindungen und Logikschaltungsanordnungen, die nach der Fertigung konfiguriert und/oder auf unterschiedliche Weisen miteinander verbunden werden können, um zum Beispiel einige oder alle der maschinenlesbaren Anweisungen zu instanziieren, die durch die vorliegend offenbarten Flussdiagramme repräsentiert werden. Insbesondere kann das FPGA 4900 als ein Array aus logischen Gates, Zwischenverbindungen und Switches angesehen werden. Die Switches können programmiert sein, um zu ändern, wie die Logik-Gates durch die Zwischenverbindungen miteinander verbunden sind, wodurch effektiv eine oder mehrere dedizierte Logikschaltungen gebildet werden (es sei denn und bis die FPGA-Schaltlogik 4900 neu programmiert ist). Die konfigurierten Logikschaltungen ermöglichen, dass die Logik-Gates auf unterschiedliche Weisen zusammenwirken, um unterschiedliche Operationen an Daten durchzuführen, die durch die Eingabeschaltungsanordnung empfangen werden. Diese Operationen können teilweise oder ganz der Software entsprechen, die durch die vorliegend offenbarten Flussdiagramme dargestellt wird. Somit kann die FPGA-Schaltungsanordnung 4900 dazu strukturiert sein, einige oder alle der maschinenlesbaren Anweisungen der vorliegend offenbarten Flussdiagramme effektiv als dedizierte Logikschaltungen zu instanziieren, um die Operationen, die diesen Softwareanweisungen entsprechen, auf eine dedizierte Weise analog zu einer ASIC durchzuführen. Somit kann die FPGA-Schaltungsanordnung 4900 die Operationen, die den einigen oder allen der vorliegend offenbarten maschinenlesbaren Anweisungen entsprechen, schneller durchführen, als sie der universelle Mikroprozessor ausführen kann.
  • In dem Beispiel aus 49 ist die FPGA-Schaltungsanordnung 4900 strukturiert, um durch einen Endbenutzer durch eine Hardwarebeschreibungssprache (HDL) wie Verilog programmiert (und/oder einmal oder mehrmals umprogrammiert) zu werden. Die FPGA-Schaltungsanordnung 4900 aus 49 beinhaltet eine beispielhafte Eingabe/Ausgabe-(E/A-) Schaltungsanordnung 4902, um Daten von der beispielhaften Konfigurationsschaltungsanordnung 4904 und/oder externer Hardware (z.B. externer Hardware-Schaltungsanordnung) 1606 zu erhalten und/oder an diese auszugeben. Zum Beispiel kann die Konfigurationsschaltungsanordnung 1604 eine Schnittstellenschaltung implementieren, die maschinenlesbare Anweisungen zum Konfigurieren der FPGA-Schaltungsanordnung 4900 oder eines oder mehrerer Teile davon erhalten kann. In einigen solchen Beispielen kann die Konfigurationsschaltungsanordnung 1604 die maschinenlesbaren Anweisungen von einem Benutzer, einer Maschine (z.B. Hardware-Schaltungsanordnung (z.B. programmierte oder dedizierte Schaltungsanordnung), die ein KI-/Maschinenlern- (KI/ML-) Modell implementieren kann, um die Anweisungen zu erzeugen) usw. erhalten. In einigen Beispielen kann die externe Hardware 1606 den Mikroprozessor 1500 aus 48 implementieren. Die FPGA-Schaltungsanordnung 4900 beinhaltet zudem ein Array aus einer beispielhaften Logikgatter-Schaltungsanordnung 4908, mehreren beispielhaften konfigurierbaren Zwischenverbindungen 4910 und einer beispielhaften Speicherungsschaltungsanordnung 4912. Die Logikgatter-Schaltungsanordnung 4908 und die Zwischenverbindungen 4910 sind konfigurierbar, um eine oder mehrere Operationen zu instanziieren, die mindestens einigen der maschinenlesbaren Anweisungen aus 8 bis 13 und/oder anderen gewünschten Operationen entsprechen können. Die in 49 gezeigte Logikgatterschaltungsanordnung 4908 ist in Gruppen oder Blöcken gefertigt. Jeder Block beinhaltet halbleiterbasierte elektrische Strukturen, die zu Logikschaltungen konfiguriert sein können. In einigen Beispielen beinhalten die elektrischen Strukturen Logikgatter (z.B. AND-Gatter, OR-Gatter, NOR-Gatter usw.), die Basisbausteine für Logikschaltungen bereitstellen. Elektrisch steuerbare Schalter (z.B. Transistoren) sind innerhalb jeder der Logikgatter-Schaltungsanordnungen 4908 vorhanden, um eine Konfiguration der elektrischen Strukturen und/oder der Logikgatter zum Bilden von Schaltungen zum Durchführen gewünschter Operationen zu ermöglichen. Die Logikgatter-Schaltungsanordnung 4908 kann andere elektrische Strukturen beinhalten, wie etwa Nachschlagetabellen (LUTs), Register (z.B. FlipFlops oder Latches), Multiplexer usw.
  • Die Zwischenverbindungen 4910 des veranschaulichten Beispiels sind leitfähige Pfade, Leiterbahnen, Durchkontaktierungen oder dergleichen, die elektrisch steuerbare Schalter (z.B. Transistoren) beinhalten können, deren Zustand durch Programmieren (z.B. unter Verwendung einer HDL-Befehlssprache) geändert werden kann, um eine oder mehrere Verbindungen zwischen einer oder mehreren der Logikgatter-Schaltungsanordnung 4908 zu aktivieren oder zu deaktivieren, um gewünschte Logikschaltungen zu programmieren.
  • Die Speicherungsschaltungsanordnung 4912 des veranschaulichten Beispiels ist dazu strukturiert, ein oder mehrere Ergebnisse der einen oder der mehreren Operationen zu speichern, die durch entsprechende Logikgatter durchgeführt werden. Die Speicherungsschaltungsanordnung 4912 kann durch Register oder dergleichen implementiert sein. In dem veranschaulichten Beispiel ist die Speicherungsschaltungsanordnung 4912 unter der Logikgatter-Schaltungsanordnung 4908 verteilt, um den Zugriff zu erleichtern und die Ausführungsgeschwindigkeit zu erhöhen.
  • Die beispielhafte FPGA-Schaltungsanordnung 4900 aus 49 beinhaltet zudem eine beispielhafte dedizierte Operationsschaltungsanordnung 4914. Bei diesem Beispiel beinhaltet die dedizierte Operationsschaltungsanordnung 4914 eine Spezial-Schaltungsanordnung 4916, die aufgerufen werden kann, um üblicherweise verwendete Funktionen zu implementieren, um die Notwendigkeit zu vermeiden, diese Funktionen im Feld zu programmieren. Zu Beispielen für eine solche Spezial-Schaltungsanordnung 4916 zählen eine Speicher- (z.B. DRAM-) Steuerungsschaltungsanordnung, eine PCIe-Steuerungsschaltungsanordnung, eine Taktschaltungsanordnung, eine Sendeempfänger-Schaltungsanordnung, einen Speicher und eine Multiplizierer-Akkumulator-Schaltungsanordnung. Auch andere Arten von Spezial-Schaltungsanordnungen können vorhanden sein. In einigen Beispielen kann die FPGA-Schaltungsanordnung 4900 zudem eine beispielhafte programmierbare Allzweck-Schaltungsanordnung 4918 wie etwa eine beispielhafte CPU 4920 und/oder einen beispielhaften DSP 4922 beinhalten. Eine andere programmierbare Allzweck-Schaltungsanordnung 4918 kann zusätzlich oder alternativ vorhanden sein, wie etwa eine GPU, eine XPU usw., die dazu programmiert sein kann, andere Operationen durchzuführen.
  • Auch wenn 48 und 49 zwei Implementierungsbeispiele der Prozessorschaltung 1612 aus 16, der Prozessorschaltung 2112 aus 21, der Prozessorschaltung 2612 aus 26, der Prozessorschaltung 312 aus 33 und/oder der Prozessorschaltung 4712 aus 47 implementieren, sind viele andere Ansätze denkbar. Wie vorstehend erwähnt, kann zum Beispiel eine moderne FPGA-Schaltungsanordnung eine interne CPU wie etwa eine oder mehrere der beispielhaften CPU 4920 aus 49 beinhalten. Daher können die Prozessorschaltung 1612 aus 16, die Prozessorschaltung 2112 aus 21, die Prozessorschaltung 2612 aus 26, die Prozessorschaltung 312 aus 33 und/oder die Prozessorschaltung 4712 aus 47 zusätzlich durch Kombinieren des beispielhaften Mikroprozessors 4800 aus 48 und der beispielhaften FPGA-Schaltungsanordnung 4900 aus 49 implementiert werden. In einigen solchen hybriden Beispielen kann ein erster Teil der maschinenlesbaren Befehle, die durch die Flussdiagramme aus 8-13 dargestellt werden, von einem oder mehreren der Kerne 4802 aus 48 ausgeführt werden, ein zweiter Teil der maschinenlesbaren Befehle, die durch die Flussdiagramme der 8-13 dargestellt werden, kann von der FPGA-Schaltungsanordnung 4900 aus 49 ausgeführt werden, und/oder ein dritter Teil der maschinenlesbaren Befehle, die durch die vorliegend offenbarten Flussdiagramme dargestellt werden, kann von einer ASIC ausgeführt werden. Einige oder alle der Schaltungsanordnungen können zum Beispiel in einem oder mehreren Threads instanziiert sein, die gleichzeitig und/oder in Reihe ausgeführt werden.
  • In einigen Beispielen können sich die Prozessorschaltung 1612 aus 16, die Prozessorschaltung 2112 aus 21, die Prozessorschaltung 2612 aus 26, die Prozessorschaltung 312 aus 33 und/oder die Prozessorschaltung 4712 aus 47 in einem oder mehreren Packages befinden. Zum Beispiel können sich die Prozessorschaltung 4800 aus 48 und/oder die FPGA-Schaltungsanordnung 1600 aus 49 in einem oder mehreren Packages befinden. In einigen Beispielen kann eine XPU durch die Prozessorschaltung 1612 aus 16, die Prozessorschaltung 2112 aus 21, die Prozessorschaltung 2612 aus 26, die Prozessorschaltung 312 aus 33 und/oder die Prozessorschaltung 4712 aus 47 implementiert werden, die sich in einem oder mehreren Packages befinden können. Zum Beispiel kann die XPU eine CPU in einem Package, einen DSP in einem anderen Package, eine GPU in einem weiteren Package und ein FPGA in noch einem weiteren Package beinhalten.
  • Ein Blockdiagramm, das ein Beispiel für eine Softwareverteilungsplattform 5005 zum Verteilen von Software, wie etwa den beispielhaften maschinenlesbaren Anweisungen 1632 oder maschinenlesbaren Anweisungen aus 16 und/oder 21 und/oder 26 und/oder 33 und/oder 47, an Hardwarevorrichtungen veranschaulicht, die Dritten gehören und/oder von diesen betrieben werden, ist in 50 veranschaulicht. Die beispielhafte Softwareverteilungsplattform 5005 kann durch einen beliebigen Computerserver, Dateneinrichtung, Cloud-Dienst usw. umgesetzt werden, der in der Lage ist, Software zu speichern und zu anderen Rechenvorrichtungen zu übertragen. Die Drittparteien können Kunden der Entität sein, die die Softwareverteilungsplattform 5005 besitzt und/oder betreibt. Die Entität, welche die Softwareverteilungsplattform 5005 besitzt und/oder betreibt, kann zum Beispiel ein Entwickler, ein Verkäufer und/oder ein Lizenzgeber von Software, wie die beispielhaften maschinenlesbaren Anweisungen 1632, sein. Die Drittparteien können Verbraucher, Benutzer, Einzelhändler, OEMs usw. sein, welche die Software zur Verwendung erwerben und/oder lizenzieren und/oder wiederverkaufen und/oder sublizenzieren. In dem veranschaulichten Beispiel beinhaltet die Softwareverteilungsplattform 5005 einen oder mehrere Server und eine oder mehrere Speicherungsvorrichtungen. Die Speichervorrichtungen speichern die maschinenlesbaren Anweisungen 1632, die den beispielhaften maschinenlesbaren Anweisungen der vorliegend offenbarten Flussdiagramme wie vorstehend beschrieben entsprechen können. Der eine oder die mehreren Server der beispielhaften Softwareverteilungsplattform 5005 stehen in Kommunikation mit einem Netzwerk 5010, das einem oder mehreren beliebigen des Internets und/oder einem der oben beschriebenen beispielhaften Netzwerke 1626 entsprechen kann. In einigen Beispielen reagieren der eine oder die mehreren Server auf Anfragen, die Software als Teil einer kommerziellen Transaktion an eine anfordernde Partei zu übertragen. Die Zahlung für die Lieferung, den Verkauf und/oder die Lizenz der Software kann durch den einen oder die mehreren Server der Softwareverteilungsplattform und/oder durch eine Drittpartei-Zahlungsentität gehandhabt werden. Die Server ermöglichen Käufern und/oder Lizenzgebern, die maschinenlesbaren Anweisungen 1632 von dem Softwareverteilungsplattform 5005 herunterzuladen. Zum Beispiel kann die Software, die den beispielhaften maschinenlesbaren Anweisungen der vorliegend offenbarten Flussdiagramme entsprechen kann, auf die beispielhafte Prozessorplattform 1600 oder eine beliebige Prozessorplattform heruntergeladen werden, die in 16 und/oder 21 und/oder 26 und/oder 33 und/oder 47 offenbart ist, die die maschinenlesbaren Anweisungen ausführen sollen. In einigen Beispielen bieten ein oder mehrere Server der Softwareverteilungsplattform 5005 periodisch Aktualisierungen an, übertragen und/oder erzwingen diese an die Software (z.B. die beispielhaften maschinenlesbaren Anweisungen 1632), um sicherzustellen, dass Verbesserungen, Patches, Aktualisierungen usw. verteilt und auf die Software an den Endbenutzervorrichtungen angewandt werden.
  • Beispielhafte Verfahren, Einrichtungen, Systeme und Herstellungsartikel für zusammensetzbare Rechenknoten für maschinelles Lernen sind vorliegend offenbart. Als weitere Beispiele und Kombinationen davon seien genannt:
  • Beispielhafte Verfahren, Einrichtungen, Systeme und Herstellungsartikel zum Verwalten von Verarbeitungseinheiten sind vorliegend offenbart. Als weitere Beispiele und Kombinationen davon seien genannt:
    • Beispiel 1 beinhaltet eine Einrichtung zum Verwalten von Verarbeitungseinheiten, die eine Schnittstellenschaltung zum Erfassen einer Anfrage zum Initialisieren eines Rechensystems und eine Prozessorschaltung umfasst, die eine Zentralverarbeitungseinheit und/oder eine Grafikverarbeitungseinheit und/oder einen digitalen Signalprozessor beinhaltet, wobei die Zentralverarbeitungseinheit und/oder die Grafikverarbeitungseinheit und/oder der digitale Signalprozessor eine Steuerschaltungsanordnung, eine Arithmetik- und Logik-Schaltung und ein oder mehrere Register aufweisen, wobei die Prozessorschaltung Anweisungen ausführen soll, um eine System-Boot-Software auszuführen, die aus einem Speicher abgerufen wird, Firmware für eine heterogene Verarbeitungseinheit auszuführen, wobei die Firmware aus dem Speicher abgerufen wird, über einen Siliciuminitialisierungscode einen Typ der heterogenen Verarbeitungseinheit zu identifizieren und über den Siliciuminitialisierungscode eine Initialisierung der heterogenen Verarbeitungseinheit zu bewirken.
    • Beispiel 2 beinhaltet eine Einrichtung nach Beispiel 1, wobei der Speicher ein SPI- (serial peripheral interface, serielle Peripherieschnittstelle) Flash-Speicher ist.
    • Beispiel 3 beinhaltet eine Einrichtung nach Beispiel 2, ferner umfassend eine verbesserte serielle Peripherieschnittstelle, um ein gemeinsames Nutzen des SPI-Flash-Speichers zwischen der Zentralverarbeitungseinheit und der heterogenen Verarbeitungseinheit zu ermöglichen.
    • Beispiel 4 beinhaltet eine Einrichtung nach Beispiel 1, wobei der heterogene Prozessor eine Grafikverarbeitungseinheit ist.
    • Beispiel 5 beinhaltet eine Einrichtung nach Beispiel 1 , wobei der heterogene Prozessor eine diskrete Grafikverarbeitungseinheit ist.
    • Beispiel 6 beinhaltet eine Einrichtung nach Beispiel 1, wobei die Prozessorschaltung die Anweisungen ausführen soll, um über den Siliciuminitialisierungscode eine hauptplatinenspezifische Konfiguration einschließlich PCI-E- (Peripheral Connection Interface Enhanced) Steckplatzinformationen abzurufen.
    • Beispiel 7 beinhaltet eine Einrichtung nach Beispiel 1, wobei die Prozessorschaltung die Anweisungen ausführen soll, um aktualisierbare Produktdaten einschließlich Adressinformationen für die heterogene Verarbeitungseinheit zu speichern.
    • Beispiel 8 beinhaltet eine Einrichtung nach Beispiel 7, wobei die Prozessorschaltung die Anweisungen ausführen soll, um über den Siliciuminitialisierungscode die aktualisierbaren Produktdaten abzurufen, um auf die Informationen für die heterogene Verarbeitungseinheit zuzugreifen.
    • Beispiel 9 beinhaltet ein nicht-transientes computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass ein Prozessor zumindest eine Anfrage zum Initialisieren eines Rechensystems erkennt und eine System-Boot-Software ausführt, die aus einem Speicher abgerufen wird, Firmware für eine heterogene Verarbeitungseinheit ausführt, wobei die Firmware aus dem Speicher abgerufen wird, über einen Siliciuminitialisierungscode einen Typ der heterogenen Verarbeitungseinheit identifiziert und über den Siliciuminitialisierungscode eine Initialisierung der heterogenen Verarbeitungseinheit bewirkt.
    • Beispiel 10 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 9, wobei der Speicher ein SPI-Flash-Speicher ist.
    • Beispiel 11 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 10, wobei die Anweisungen bei Ausführung den Prozessor veranlassen, das gemeinsame Nutzen des SPI-Flash-Speichers zwischen der Zentralverarbeitungseinheit und der heterogenen Verarbeitungseinheit zu ermöglichen.
    • Beispiel 12 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 9, wobei der heterogene Prozessor eine Grafikverarbeitungseinheit ist.
    • Beispiel 13 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 9, wobei der heterogene Prozessor eine diskrete Grafikverarbeitungseinheit ist.
    • Beispiel 14 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 9, wobei die Anweisungen bei Ausführung den Prozessor veranlassen, über den Siliciuminitialisierungscode eine hauptplatinenspezifische Konfiguration einschließlich PCI-E-(Peripheral Connection Interface Enhanced) Steckplatzinformationen abzurufen.
    • Beispiel 15 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 9, wobei die Anweisungen bei Ausführung den Prozessor veranlassen, aktualisierbare Produktdaten einschließlich Adressinformationen für die heterogene Verarbeitungseinheit zu speichern.
    • Beispiel 16 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 15, wobei die Anweisungen bei Ausführung bewirken, dass der Prozessor über den Siliciuminitialisierungscode die aktualisierbaren Produktdaten abruft, um auf die Informationen für die heterogene Verarbeitungseinheit zuzugreifen.
    • Beispiel 17 beinhaltet ein Verfahren, umfassend Erfassen einer Anfrage zum Initialisieren eines Rechensystems, und Ausführen einer System-Boot-Software, die aus einem Speicher abgerufen wird, Ausführen von Firmware für eine heterogene Verarbeitungseinheit, wobei die Firmware aus dem Speicher abgerufen wird, über einen Siliciuminitialisierungscode erfolgendes Identifizieren eines Typs der heterogenen Verarbeitungseinheit und über den Siliciuminitialisierungscode erfolgendes Bewirken einer Initialisierung der heterogenen Verarbeitungseinheit.
    • Beispiel 18 beinhaltet ein Verfahren nach Beispiel 17, wobei der Speicher ein SPI- (serial peripheral interface, serielle Peripherieschnittstelle) Flash-Speicher ist.
    • Beispiel 19 beinhaltet ein Verfahren nach Beispiel 18, ferner umfassend Ermöglichen eines gemeinsamen Nutzens des SPI-Flash-Speichers zwischen der Zentralverarbeitungseinheit und der heterogenen Verarbeitungseinheit.
    • Beispiel 20 beinhaltet ein Verfahren nach Beispiel 17, wobei der heterogene Prozessor eine Grafikverarbeitungseinheit ist.
    • Beispiel 21 beinhaltet ein Verfahren nach Beispiel 17 , wobei der heterogene Prozessor eine diskrete Grafikverarbeitungseinheit ist.
    • Beispiel 22 beinhaltet ein Verfahren nach Beispiel 17, ferner umfassend über den Siliciuminitialisierungscode erfolgendes Abrufen einer hauptplatinenspezifischen Konfiguration einschließlich PCI-E- (Peripheral Connection Interface Enhanced) Steckplatzinformationen.
    • Beispiel 23 beinhaltet ein Verfahren nach Beispiel 17, ferner umfassend Speichern aktualisierbarer Produktdaten einschließlich Adressinformationen für die heterogene Verarbeitungseinheit.
    • Beispiel 24 beinhaltet ein Verfahren nach Beispiel 23, ferner umfassend über den Siliciuminitialisierungscode erfolgendes Abrufen der aktualisierbaren Produktdaten, um auf die Informationen für die heterogene Verarbeitungseinheit zuzugreifen.
    • Beispiel 25 beinhaltet eine Einrichtung zum Verwalten von Verarbeitungseinheiten, umfassend eine Schnittstellenschaltung zum Erfassen einer Anfrage zum Erhalten einer Ressourcenanfrage von einer Arbeitslast, eine Prozessorschaltung, die eine Zentralverarbeitungseinheit und/oder eine Grafikverarbeitungseinheit und/oder einen digitalen Signalprozessor beinhaltet, wobei die Zentralverarbeitungseinheit und/oder die Grafikverarbeitungseinheit und/oder der digitale Signalprozessor eine Steuerschaltungsanordnung, eine Arithmetik- und Logik-Schaltung und ein oder mehrere Register aufweisen, wobei die Prozessorschaltung Anweisungen ausführen soll, um zu ermitteln, ob Ressourcen für die Arbeitslast auf einem von einer Infrastrukturverarbeitungseinheit verwalteten System verfügbar sind, mit der Infrastrukturverarbeitungseinheit zu verhandeln, um zu ermitteln, ob eine in Ausführung befindliche Arbeitslast migriert werden kann, in Reaktion auf das Ermitteln, dass eine in Ausführung befindliche Arbeitslast migriert werden kann, zu veranlassen, dass die in Ausführung befindliche Arbeitslast migriert wird, und zu veranlassen, dass die Arbeitslast auf der Ressource ausgeführt wird.
    • Beispiel 26 beinhaltet eine Einrichtung nach Beispiel 25, wobei die Arbeitslast eine virtuelle Maschine ist.
    • Beispiel 27 beinhaltet eine Einrichtung nach Beispiel 25, wobei die Prozessorschaltung die Anweisungen ausführen soll, um die Ressourcenanfrage zu validieren.
    • Beispiel 28 beinhaltet eine Einrichtung nach Beispiel 25, wobei die Ressourcenanfrage eine Dienstgütevereinbarung (service level agreement) identifiziert.
    • Beispiel 29 beinhaltet eine Einrichtung nach Beispiel 28, wobei die Prozessorschaltung die Anweisungen ausführen soll, um zu ermitteln, ob die in der Ressourcenanfrage identifizierte Dienstgütevereinbarung durch beliebige verfügbare Ressourcen erfüllt werden kann.
    • Beispiel 30 beinhaltet eine Einrichtung nach Beispiel 29, wobei die Prozessorschaltung in Reaktion auf Ermitteln, dass die Dienstgütevereinbarung nicht erfüllt werden kann, einen Benutzer auffordern soll, eine gültige Anfrage bereitzustellen.
    • Beispiel 31 beinhaltet eine Einrichtung nach Beispiel 25, wobei die Prozessorschaltung die Anweisungen ausführen soll, um eine Dienstklasse für die in Ausführung befindliche Arbeitslast zu aktualisieren.
    • Beispiel 32 beinhaltet eine Einrichtung nach Beispiel 25, wobei die Prozessorschaltung die Anweisungen ausführen soll, um eine Assoziierung der Arbeitslast und der Ressourcen in einer Blockchain zu speichern.
    • Beispiel 33 beinhaltet ein nicht-transientes computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass ein Prozessor zumindest eine Anfrage zum Erhalten einer Ressourcenanfrage von einer Arbeitslast erkennt, ermittelt, ob Ressourcen für die Arbeitslast auf einem von einer Infrastrukturverarbeitungseinheit verwalteten System verfügbar sind, mit der Infrastrukturverarbeitungseinheit verhandelt, um zu ermitteln, ob eine in Ausführung befindliche Arbeitslast migriert werden kann, in Reaktion auf Ermitteln, dass eine in Ausführung befindliche Arbeitslast migriert werden kann, veranlasst, dass die in Ausführung befindliche Arbeitslast migriert wird, und veranlasst, dass die Arbeitslast auf der Ressource ausgeführt wird.
    • Beispiel 34 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 33, wobei die Arbeitslast eine virtuelle Maschine ist.
    • Beispiel 35 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 33, wobei die Anweisungen bei Ausführung den Prozessor veranlassen, die Ressourcenanfrage zu validieren.
    • Beispiel 36 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 33, wobei die Ressourcenanfrage eine Dienstgütevereinbarung identifiziert.
    • Beispiel 37 beinhaltet ein transientes computerlesbares Medium nach Beispiel 36, wobei die Anweisungen bei Ausführung den Prozessor veranlassen, die Anweisungen auszuführen, um zu ermitteln, ob die in der Ressourcenanfrage identifizierte Dienstgütevereinbarung von beliebigen verfügbaren Ressourcen erfüllt werden kann.
    • Beispiel 38 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 37, wobei die Anweisungen bei Ausführung bewirken, dass der Prozessor in Reaktion auf Ermitteln, dass die Dienstgütevereinbarung nicht erfüllt werden kann, einen Benutzer auffordert, eine gültige Anfrage bereitzustellen.
    • Beispiel 39 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 33, wobei die Anweisungen bei Ausführung bewirken, dass der Prozessor eine Dienstklasse für die in Ausführung befindliche Arbeitslast aktualisiert.
    • Beispiel 40 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 33, wobei die Anweisungen bei Ausführung den Prozessor veranlassen, eine Assoziierung der Arbeitslast und der Ressourcen in einer Blockchain zu speichern.
    • Beispiel 41 beinhaltet ein Verfahren, umfassend Erfassen einer Anfrage zum Erhalten einer Ressourcenanfrage von einer Arbeitslast, Ermitteln, ob Ressourcen für die Arbeitslast auf einem von einer Infrastrukturverarbeitungseinheit verwalteten System verfügbar sind, Verhandeln mit der Infrastrukturverarbeitungseinheit, um zu ermitteln, ob eine in Ausführung befindliche Arbeitslast migriert werden kann, in Reaktion auf Ermitteln, dass eine in Ausführung befindliche Arbeitslast migriert werden kann, erfolgendes Veranlassen, dass die in Ausführung befindliche Arbeitslast migriert wird, und Veranlassen, dass die Arbeitslast auf der Ressource ausgeführt wird.
    • Beispiel 42 beinhaltet ein Verfahren nach Beispiel 41, wobei die Arbeitslast eine virtuelle Maschine ist.
    • Beispiel 43 beinhaltet ein Verfahren nach Beispiel 41, ferner umfassend Validieren der Ressourcenanfrage.
    • Beispiel 44 beinhaltet ein Verfahren nach Beispiel 41, wobei die Ressourcenanfrage eine Dienstgütevereinbarung identifiziert.
    • Beispiel 45 beinhaltet ein Verfahren nach Beispiel 44, ferner umfassend Ausführen der Anweisungen, um zu ermitteln, ob die in der Ressourcenanfrage identifizierte Dienstgütevereinbarung von beliebigen verfügbaren Ressourcen erfüllt werden kann.
    • Beispiel 46 beinhaltet ein Verfahren nach Beispiel 45, ferner umfassend Auffordern eines Benutzers, eine gültige Anfrage bereitzustellen, in Reaktion auf Ermitteln, dass die Dienstgütevereinbarung nicht erfüllt werden kann.
    • Beispiel 47 beinhaltet ein Verfahren nach Beispiel 41, ferner umfassend Aktualisieren einer Dienstklasse für die in Ausführung befindliche Arbeitslast.
    • Beispiel 48 beinhaltet ein Verfahren nach Beispiel 41, ferner umfassend Speichern einer Assoziierung der Arbeitslast und der Ressourcen in einer Blockchain.
    • Beispiel 49 beinhaltet eine Einrichtung zum Verwalten von Verarbeitungseinheiten, umfassend eine Schnittstellenschaltung zum Erfassen einer Anfrage zum Ausführen eines tiefen neuronalen Netzes und eine Prozessorschaltung, die eine Zentralverarbeitungseinheit und/oder eine Grafikverarbeitungseinheit und/oder einen digitalen Signalprozessor beinhaltet, wobei die Zentralverarbeitungseinheit und/oder die Grafikverarbeitungseinheit und/oder der digitale Signalprozessor eine Steuerschaltungsanordnung, eine Arithmetik- und Logik-Schaltung und ein oder mehrere Register aufweisen, wobei die Prozessorschaltung Anweisungen ausführen soll, um eine Dienstgütevereinbarung zu beziehen, die mit der Anfrage assoziiert ist, einen Kandidatensatz von Betriebsparametern zum Bedienen der Anfrage basierend auf der Dienstgütevereinbarung zu ermitteln, einen Kernel für eine Gruppe von Betriebsparametern aus dem Kandidatensatz zu erzeugen und den Kernel auszuführen, um eine Performanz des Kernels zu ermitteln.
    • Beispiel 50 beinhaltet eine Einrichtung nach Beispiel 49, wobei die Prozessorschaltung die Anweisungen ausführen soll, um zu ermitteln, ob die Performanz die Dienstgütevereinbarung erfüllt.
    • Beispiel 51 beinhaltet eine Einrichtung nach Beispiel 49, wobei die Prozessorschaltung die Anweisungen ausführen soll, um den Kandidatensatz basierend auf den Hardwarefähigkeiten eines Rechensystems zum Ausführen des Kernels zu ermitteln.
    • Beispiel 52 beinhaltet eine Einrichtung nach Beispiel 49, wobei die Prozessorschaltung die Anweisungen ausführen soll, um eine mit der Anfrage assoziierte Operationsbeschreibung zu beziehen.
    • Beispiel 53 beinhaltet eine Einrichtung nach Beispiel 49, wobei die Prozessorschaltung die Anweisungen ausführen soll, um eine Anwendungsprogrammierungsschnittstelle zum Empfangen der Anfrage zu implementieren.
    • Beispiel 54 beinhaltet eine Einrichtung nach Beispiel 53, wobei die Anwendungsprogrammierungsschnittstelle eine Vielzahl heterogener Prozessoren verwaltet.
    • Beispiel 55 beinhaltet eine Einrichtung nach Beispiel 53, wobei die Anwendungsprogrammierungsschnittstelle in einem oneAPI-Framework enthalten ist.
    • Beispiel 56 beinhaltet ein nicht-transientes computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass ein Prozessor zumindest eine Anfrage zum Ausführen eines tiefen neuronalen Netzes erkennt und eine Dienstgütevereinbarung bezieht, die mit der Anfrage assoziiert ist, einen Kandidatensatz von Betriebsparametern zum Bedienen der Anfrage basierend auf der Dienstgütevereinbarung ermittelt, einen Kernel für eine Gruppe von Betriebsparametern aus dem Kandidatensatz erzeugt und den Kernel ausführt, um eine Performanz des Kernels zu ermitteln.
    • Beispiel 57 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 56, wobei die Anweisungen bei Ausführung den Prozessor veranlassen, zu ermitteln, ob die Performanz die Dienstgütevereinbarung erfüllt.
    • Beispiel 58 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 56, wobei die Anweisungen bei Ausführung den Prozessor veranlassen, den Kandidatensatz basierend auf den Hardwarefähigkeiten eines Rechensystems zum Ausführen des Kernels zu ermitteln.
    • Beispiel 59 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 56, wobei die Anweisungen bei Ausführung den Prozessor veranlassen, eine mit der Anfrage assoziierte Operationsbeschreibung zu beziehen.
    • Beispiel 60 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 56, wobei die Anweisungen bei Ausführung den Prozessor veranlassen, eine Anwendungsprogrammierschnittstelle zum Empfangen der Anfrage zu implementieren.
    • Beispiel 61 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 60, wobei die Anwendungsprogrammierschnittstelle eine Vielzahl heterogener Prozessoren verwaltet.
    • Beispiel 62 beinhaltet ein nicht-transientes computerlesbares Medium nach Beispiel 60, wobei die Anwendungsprogrammierungsschnittstelle in einem oneAPI-Framework enthalten ist.
    • Beispiel 63 beinhaltet ein Verfahren, umfassend Erfassen einer Anfrage zum Ausführen eines tiefen neuronalen Netzes, und Beziehen einer mit der Anfrage assoziierten Dienstgütevereinbarung, Ermitteln eines Kandidatensatzes von Betriebsparametern zum Bedienen der Anfrage basierend auf der Dienstgütevereinbarung, Erzeugen eines Kernels für eine Gruppe von Betriebsparametern aus dem Kandidatensatz und Ausführen des Kernels, um eine Performanz des Kernels zu ermitteln.
    • Beispiel 64 beinhaltet ein Verfahren nach Beispiel 63, ferner umfassend Ermitteln, ob die Performanz die Dienstgütevereinbarung erfüllt.
    • Beispiel 65 beinhaltet ein Verfahren nach Beispiel 63, ferner umfassend Ermitteln des Kandidatensatzes basierend auf den Hardwarefähigkeiten eines Rechensystems zum Ausführen des Kernels.
    • Beispiel 66 beinhaltet ein Verfahren nach Beispiel 63, ferner umfassend Beziehen einer Operationsbeschreibung, die mit der Anfrage assoziiert ist.
    • Beispiel 67 beinhaltet ein Verfahren nach Beispiel 63 , ferner umfassend Implementieren einer Anwendungsprogrammierungsschnittstelle zum Empfangen der Anfrage.
    • Beispiel 68 beinhaltet ein Verfahren nach Beispiel 67, wobei die Anwendungsprogrammierungsschnittstelle eine Vielzahl heterogener Prozessoren verwaltet.
    • Beispiel 69 beinhaltet ein Verfahren nach Beispiel 67, wobei die Anwendungsprogrammierungsschnittstelle in einem oneAPI-Framework enthalten ist.
    • Vorliegend sind beispielhafte Verfahren, Einrichtungen, Systeme und Herstellungsartikel für ein dynamisches hardwareorientiertes XPU-Deep-Learning-Modell offenbart. Als weitere Beispiele und Kombinationen davon seien genannt:
    • Beispiel 70 beinhaltet eine Einrichtung für ein Deep-Learning- (DL-) Modellverwaltungssystem, umfassend eine Schnittstellenschaltung, eine Prozessorschaltung, die eine Zentralverarbeitungseinheit und/oder eine Grafikverarbeitungseinheit und/oder einen digitalen Signalprozessor beinhaltet, wobei die Zentralverarbeitungseinheit und/oder die Grafikverarbeitungseinheit und/oder der digitale Signalprozessor eine Steuerschaltungsanordnung zum Steuern einer Datenbewegung innerhalb der Prozessorschaltung, eine Arithmetik- und- Logik-Schaltung zum Durchführen einer oder mehrerer erster Operationen gemäß Anweisungen und ein oder mehrere Register zum Speichern eines Ergebnisses der einen oder der mehreren ersten Operationen aufweisen, wobei die Anweisungen in der Einrichtung vorliegen, ein frei programmierbares Gate-Array (FPGA), wobei das FPGA eine Logikgatterschaltungsanordnung, eine Vielzahl konfigurierbarer Zwischenverbindungen und eine Speicherschaltungsanordnung beinhaltet, wobei die Logikgatterschaltungsanordnung und die Zwischenverbindungen eine oder mehrere zweite Operationen durchführen sollen, wobei die Speicherschaltungsanordnung ein Ergebnis der einen oder der mehreren zweiten Operationen speichern soll, oder eine anwendungsspezifische integrierte Schaltungsanordnung (ASIC), die eine Logikgatterschaltungsanordnung zum Durchführen einer oder mehrerer dritter Operationen beinhaltet, wobei die Prozessorschaltung die ersten Operationen und/oder die zweiten Operationen und/oder die dritten Operationen durchführen soll, um eine Differenzbestimmungsschaltungsanordnung zum Analysieren von Merkmalslisten von Modellen, die für ausgewählte Zielsetzungen optimiert sind, um Merkmalsunterschiede zwischen einer Vielzahl von Modellen zu identifizieren, eine Ähnlichkeitsbestimmungsschaltungsanordnung zum Analysieren der Vielzahl von Merkmalslisten der Vielzahl von Modellen, die für die Vielzahl ausgewählter Zielsetzungen optimiert sind, um Merkmalsähnlichkeiten zwischen der Vielzahl von Modellen zu identifizieren, eine QoS-Auswahlschaltungsanordnung zum Einrichten einer QoS-Zielsetzung zur Priorisierung der Vielzahl ausgewählter Zielsetzungen und eine Modellplanungsschaltungsanordnung zum Auswählen eines Modells aus der Vielzahl von Modellen zur Verwendung auf einer Zielhardwareplattform zu instanziieren.
    • Beispiel 71 beinhaltet die Einrichtung nach Beispiel 70, wobei die Prozessorschaltung eine QoS-Sampler-Schaltungsanordnung instanziieren soll, um einen aktuellen Zustand der Zielhardwareplattform abzutasten.
    • Beispiel 72 beinhaltet die Einrichtung nach Beispiel 70, wobei die QoS-Auswahlschaltungsanordnung ferner die Vielzahl von Modellen basierend auf einer Fähigkeit zum Maximieren der QoS-Zielsetzung zur Priorisierung sortieren soll.
    • Beispiel 73 beinhaltet die Einrichtung nach Beispiel 70, wobei die Modellplanungsschaltungsanordnung ferner Modellnutzungsmetriken für das ausgewählte Modell auf der Zielhardwareplattform berechnen soll und in Reaktion auf Ermitteln, dass die Modellnutzungsmetriken unter einem Schwellenwert liegen, ein anderes Modell der Vielzahl von Modellen zur Verwendung auf der Zielhardwareplattform auswählen soll.
    • Beispiel 74 beinhaltet die Einrichtung nach Beispiel 70, wobei die Merkmalsammelschaltungsanordnung die durch die Differenzbestimmungsschaltungsanordnung und die Ähnlichkeitsbestimmungsschaltungsanordnung identifizierte Vielzahl von Merkmalen beibehalten soll.
    • Beispiel 75 beinhaltet ein Verfahren für Deep-Learning- (DL-) Modelltraining, wobei das Verfahren Extrahieren einer Vielzahl von Modellen aus einem Datensatz, wobei jeweilige der Vielzahl von Modellen für eine ausgewählte Dienstgüte- (QoS-) Zielsetzung einer Vielzahl von QoS-Zielsetzungen optimiert sind, Identifizieren einer Vielzahl von Merkmalsunterschieden zwischen jeweiligen der Vielzahl von Modellen und Identifizieren einer Vielzahl von Merkmalsähnlichkeiten zwischen jeweiligen der Vielzahl von Modellen umfasst.
    • Beispiel 76 beinhaltet das Verfahren nach Beispiel 75, wobei die Vielzahl von Merkmalsunterschieden und die Vielzahl von Merkmalsähnlichkeiten zur Beibehaltung aggregiert werden.
    • Beispiel 77 beinhaltet ein Verfahren für Deep-Learning- (DL-) Modellverwaltung, umfassend Abtasten eines aktuellen Zustands einer Zielhardwareplattform, Auswählen einer Dienstgüte- (QoS-) Zielsetzung einer Vielzahl von QoS-Zielsetzungen zur Priorisierung basierend auf dem aktuellen Zustand der Zielhardwareplattform, Sortieren einer Vielzahl von Modellen, wobei jeweilige der Vielzahl von Modellen für jeweilige der Vielzahl von QoS-Zielsetzngen optimiert sind, Auswählen eines Modells der sortierten Vielzahl von Modellen zur Verwendung durch die Zielhardwareplattform, Berechnen von Nutzungsmetriken für das Modell auf der Zielhardwareplattform und in Reaktion auf Ermitteln, dass die Nutzungsmetriken eine Schwelle nicht erfüllen, Auswählen eines anderen Modells der Vielzahl von Modellen zur Verwendung durch die Zielhardwareplattform.
    • Beispiel 78 beinhaltet das Verfahren nach Beispiel 77, wobei das Sortieren der Modelle auf der ausgewählten QoS-Zielsetzung basiert.
    • Beispiel 79 beinhaltet ein nicht-transientes computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass eine Maschine zumindest Merkmalslisten von Modellen, die für ausgewählte Zielsetzungen optimiert sind, analysiert, um Merkmalsunterschiede zwischen einer Vielzahl von Modellen zu identifizieren, die Vielzahl von Merkmalslisten der Vielzahl von Modellen analysiert, die für die Vielzahl von ausgewählten Zielsetzungen optimiert sind, um Merkmalsähnlichkeiten zwischen der Vielzahl von Modellen zu identifizieren, eine QoS-Zielsetzung zur Priorisierung der Vielzahl von ausgewählten Zielsetzungen festlegt und ein Modell der Vielzahl von Modellen zur Verwendung auf einer Zielhardwareplattform auswählt.
    • Beispiel 80 beinhaltet das nicht-transiente computerlesbare Medium nach Beispiel 11, wobei ein aktueller Zustand der Zielhardwareplattform abgetastet wird.
    • Beispiel 81 beinhaltet das nicht-transiente computerlesbare Medium nach Beispiel 80, wobei die Vielzahl von Modellen basierend auf einer Fähigkeit, die QoS-Zielsetzung zu maximieren, zur Priorisierung sortiert wird.
    • Beispiel 82 beinhaltet das nicht-transiente computerlesbare Medium nach Beispiel 80, wobei die Anweisungen bei Ausführung ferner bewirken, dass die Maschine Modellnutzungsmetriken für das ausgewählte Modell auf der Zielhardwareplattform berechnet, und in Reaktion auf Ermitteln, dass die Modellnutzungsmetriken unter einem Schwellenwert liegen, ein anderes Modell der Vielzahl von Modellen zur Verwendung auf der Zielhardwareplattform auswählt.
    • Beispiel 83 beinhaltet das nicht-transiente computerlesbare Medium nach Beispiel 80, wobei die Vielzahl von Merkmalen, die durch die Differenzbestimmungsschaltungsanordnung und die Ähnlichkeitsbestimmungsschaltungsanordnung identifiziert werden, beibehalten werden.
    • Beispiel 84 beinhaltet eine Einrichtung, umfassend zumindest eine Schnittstellenschaltung, Anweisungen in der Einrichtung und eine Prozessorschaltung, um die Anweisungen auszuführen, um Merkmalslisten von Modellen zu analysieren, die für ausgewählte Zielsetzungen optimiert sind, um Merkmalsunterschiede zwischen einer Vielzahl von Modellen zu identifizieren, die Vielzahl von Merkmalslisten der Vielzahl von Modellen, die für die Vielzahl von ausgewählten Zielsetzungen optimiert sind, zu analysieren, um Merkmalsähnlichkeiten zwischen der Vielzahl von Modellen zu identifizieren, eine QoS-Zielsetzung zur Priorisierung der Vielzahl von ausgewählten Zielsetzungen festzulegen und ein Modell aus der Vielzahl von Modellen zur Verwendung auf einer Zielhardwareplattform auszuwählen.
    • Beispiel 85 beinhaltet die Einrichtung nach Beispiel 84, wobei die Prozessorschaltung einen aktuellen Zustand der Zielhardwareplattform abtasten soll.
    • Beispiel 86 beinhaltet die Einrichtung nach Beispiel 84, wobei die Prozessorschaltung ferner die Vielzahl von Modellen basierend auf einer Fähigkeit zum Maximieren der QoS-Zielsetzung zur Priorisierung sortieren soll.
    • Beispiel 87 beinhaltet die Einrichtung nach Beispiel 84, wobei die Prozessorschaltung ferner Modellnutzungsmetriken für das ausgewählte Modell auf der Zielhardwareplattform berechnen soll und in Reaktion auf Ermitteln, dass die Modellnutzungsmetriken unter einem Schwellenwert liegen, ein anderes Modell aus der Vielzahl von Modellen zur Verwendung auf der Zielhardwareplattform auswählen soll.
    • Beispiel 88 beinhaltet die Einrichtung nach Beispiel 84, wobei die Prozessorschaltung die Vielzahl von Merkmalen beibehalten soll, die durch die Differenzbestimmungsschaltungsanordnung und die Ähnlichkeitsbestimmungsschaltungsanordnung identifiziert werden.
    • Beispiel 89 beinhaltet die Einrichtung nach Beispiel 87, wobei die Schwelle für Modellnutzungsmetriken eine vorbestimmte Schwelle ist.
    • Beispielhafte Verfahren, Einrichtungen, Systeme und Herstellungsartikel zur datenverbesserten automatisierten Modellerzeugung sind vorliegend offenbart. Als weitere Beispiele und Kombinationen davon seien genannt:
    • Beispiel 90 beinhaltet eine Einrichtung zur datenverbesserten automatisierten Modellerzeugung, umfassend eine Schnittstellenschaltung zum Zugreifen auf eine Anfrage zum Erzeugen eines Maschinenlernmodells und eine Prozessorschaltung, die eine Zentralverarbeitungseinheit und/oder eine Grafikverarbeitungseinheit und/oder einen digitalen Signalprozessor beinhaltet, wobei die Zentralverarbeitungseinheit und/oder die Grafikverarbeitungseinheit und/oder die Grafikverarbeitungseinheit und/oder der Digitalsignalprozessor eine Steuerschaltungsanordnung zum Steuern einer Datenbewegung innerhalb der Prozessorschaltung, eine Arithmetik- und Logik-Schaltung zum Durchführen einer oder mehrerer erster Operationen entsprechend Anweisungen und ein oder mehrere Register zum Speichern eines Ergebnisses der einen oder der mehreren ersten Operationen aufweisen, wobei die Anweisungen in der Einrichtung vorliegen, ein frei programmierbaren Gate-Array (FPGA), wobei das FPGA eine Logikgatterschaltungsanordnung, eine Vielzahl konfigurierbarer Zwischenverbindungen, und eine Speicherungsschaltungsanordnung beinhaltet, wobei die Logikgatterschaltungsanordnung und Zwischenverbindungen eine oder mehrere zweite Operationen durchführen sollen, wobei die Speicherschaltungsanordnung ein Ergebnis der einen oder der mehreren zweiten Operationen speichern soll, oder eine anwendungsspezifische integrierte Schaltungsanordnung (ASIC), die eine Logikgatterschaltungsanordnung zum Durchführen einer oder mehrerer dritter Operationen beinhaltet, wobei die Prozessorschaltung die ersten Operationen und/oder die zweiten Operationen und/oder die dritten Operationen durchführen soll, um eine Aufgabendatenorchestrierungsschaltungsanordnung, um Aufgabenwissen basierend auf einem zuvor erzeugten Maschinenlernmodell zu erzeugen, eine Suchraumverwaltungsschaltungsanordnung, um einen Suchraum basierend auf dem Aufgabenwissen zu erzeugen, und eine Neuronalarchitektursuchschaltungsanordnung zum Erzeugen des Maschinenlernmodells unter Verwendung einer Neuronalarchitektursuche instanziieren soll, wobei die Neuronalarchitektursuchschaltungsanordnung eine Architektursuche basierend auf dem Suchraum beginnen soll.
    • Beispiel 91 beinhaltet die Einrichtung nach Beispiel 90, wobei die Prozessorschaltung während der Erzeugung des Maschinenlernmodells eine Vielzahl von Ankerpunkten in das Maschinenlernmodell einfügen soll, wobei die Ankerpunkte zum Sammeln einer Performanzstatistik bezüglich der Ausführung des Maschinenlernmodells verwendet werden sollen.
    • Beispiel 92 beinhaltet die Einrichtung nach Beispiel 91, wobei die Performanzstatistik eine Leistungseffizienz und/oder eine Energieeffizienz beinhaltet.
    • Beispiel 93 beinhaltet die Einrichtung nach Beispiel 91, wobei die Prozessorschaltung ferner die Performanzstatistik basierend auf den Ankerpunkten sammeln soll.
    • Beispiel 94 beinhaltet die Einrichtung nach Beispiel 93, wobei die Prozessorschaltung zum Erzeugen des Aufgabenwissens ferner Merkmale des zuvor erzeugten Maschinenlernmodells einstufen soll.
    • Beispiel 95 beinhaltet die Einrichtung nach Beispiel 90, wobei die Prozessorschaltung zum Erzeugen des Suchraums eine frühere Architektur basierend auf einer Performanz der früheren Architektur auf einer ausgewählten Hardware auswählen soll.
    • Beispiel 96 beinhaltet mindestens ein nicht-transientes computerlesbares Speichermedium, das Anweisungen umfasst, die bei Ausführung bewirken, dass mindestens ein Prozessor zumindest auf eine Anfrage zum Erzeugen eines Maschinenlernmodells zum Durchführen einer ausgewählten Aufgabe zugreift, Aufgabenwissen basierend auf einem früher erzeugten Maschinenlernmodell erzeugt, einen Suchraum basierend auf dem Aufgabenwissen erstellt und ein Maschinenlernmodell unter Verwendung einer Neuronalarchitektursuche erzeugt, wobei die Neuronalarchitektursuche basierend auf dem Suchraum beginnt.
    • Beispiel 97 beinhaltet das mindestens eine nicht-transiente computerlesbare Speichermedium nach Beispiel 96, wobei die Anweisungen bei Ausführung ferner bewirken, dass der mindestens eine Prozessor eine Vielzahl von Ankerpunkten in das Maschinenlernmodell einfügt, wobei die Ankerpunkte verwendet werden sollen, wenn eine Performanzstatistik bezüglich der Ausführung des Maschinenlernmodells gesammelt wird.
    • Beispiel 98 beinhaltet das mindestens eine nicht-transiente computerlesbare Speichermedium nach Beispiel 97, wobei die Anweisungen bei Ausführung ferner bewirken, dass der mindestens eine Prozessor die Performanzstatistik basierend auf den Ankerpunkten sammelt.
    • Beispiel 99 beinhaltet das mindestens eine nicht-transiente computerlesbare Speichermedium nach Beispiel 98, wobei die Anweisungen bei Ausführung ferner bewirken, dass der mindestens eine Prozessor Merkmale des früher erzeugten Maschinenlernmodells einstuft, um das Aufgabenwissen zu erzeugen.
    • Beispiel 100 beinhaltet das mindestens eine nicht-transiente computerlesbare Speichermedium nach Beispiel 96, wobei die Anweisungen bei Ausführung ferner bewirken, dass der mindestens eine Prozessor eine frühere Architektur basierend auf einer Performanz der früheren Architektur auf einer ausgewählten Hardware auswählt, um den Suchraum zu erzeugen.
    • Beispiel 101 beinhaltet ein Verfahren zur datenverbesserten automatisierten Modellerzeugung, umfassend Zugreifen auf eine Anfrage zum Erzeugen eines Maschinenlernmodells zum Durchführen einer ausgewählten Aufgabe, Erzeugen von Aufgabenwissen basierend auf einem früher erzeugten Maschinenlernmodell, Erzeugen eines Suchraums basierend auf dem Aufgabenwissen und Erzeugen eines Maschinenlernmodells unter Verwendung einer Neuronalarchitektursuche, wobei die Neuronalarchitektursuche basierend auf dem Suchraum beginnt.
    • Beispiel 102 beinhaltet das Verfahren nach Beispiel 101, ferner umfassend während der Erzeugung des Maschinenlernmodells erfolgendes Einfügen einer Vielzahl von Ankerpunkten in das Maschinenlernmodell, wobei die Ankerpunkte verwendet werden sollen, wenn eine Performanzstatistik bezüglich der Ausführung des Maschinenlernmodells gesammelt wird.
    • Beispiel 103 beinhaltet das Verfahren nach Beispiel 102, das ferner Sammeln der Performanzstatistik basierend auf den Ankerpunkten beinhaltet.
    • Beispiel 104 beinhaltet das Verfahren nach Beispiel 103, wobei die Erzeugung des Aufgabenwissens Einstufen von Merkmalen des früher erzeugten Maschinenlernmodells beinhaltet.
    • Beispiel 105 beinhaltet das Verfahren nach Beispiel 101, wobei das Erzeugen des Suchraums Auswählen einer früheren Architektur basierend auf einer Performanz der früheren Architektur auf einer ausgewählten Hardware beinhaltet.
    • Beispiel 106 beinhaltet eine Einrichtung zur datenverbesserten automatisierten Modellerzeugung, umfassend Mittel zum Zugreifen auf eine Anfrage zum Erzeugen eines Maschinenlernmodells zum Durchführen einer ausgewählten Aufgabe, Mittel zum Erzeugen von Aufgabenwissen basierend auf einem früher erzeugten Maschinenlernmodell, Mittel zum Erzeugen eines Suchraums basierend auf dem Aufgabenwissen und Mittel zum Erzeugen eines Maschinenlernmodells unter Verwendung einer Neuronalarchitektursuche, wobei die Neuronalarchitektursuche basierend auf dem Suchraum beginnt.
    • Beispiel 107 beinhaltet die Einrichtung nach Beispiel 106, ferner Mittel zum während der Erzeugung des Maschinenlernmodells erfolgenden Einfügen einer Vielzahl von Ankerpunkten in das Maschinenlernmodell, wobei die Ankerpunkte verwendet werden sollen, wenn eine Performanzstatistik bezüglich der Ausführung des Maschinenlernmodells gesammelt wird.
    • Beispiel 108 beinhaltet die Einrichtung nach Beispiel 107, die ferner Mittel zum Sammeln der Performanzstatistik basierend auf den Ankerpunkten beinhaltet.
    • Beispiel 109 beinhaltet die Einrichtung nach Beispiel 108, wobei das Mittel zum Erzeugen ferner Merkmale des früher erzeugten Maschinenlernmodells einstufen soll.
    • Beispiel 110 beinhaltet die Einrichtung nach Beispiel 106, wobei das Mittel zum Erzeugen eine frühere Architektur basierend auf einer Performanz der früheren Architektur auf einer ausgewählten Hardware auswählen soll.
  • Beispielhafte Verfahren, Einrichtungen, Systeme und Herstellungsartikel zum bedingten Aktivieren eines großen Kerns in einem Rechensystem sind vorliegend offenbart. Als weitere Beispiele und Kombinationen davon seien genannt:
    • Beispiel 111 beinhaltet eine Einrichtung zum bedingten Aktivieren eines großen Kerns in einem Rechensystem, umfassend erste Anweisungen in der Einrichtung, und eine Prozessorschaltung, um die ersten Anweisungen auszuführen, um in Reaktion auf eine Anfrage zum Betreiben von zwei oder mehr Verarbeitungsvorrichtungen als eine einzige Verarbeitungsvorrichtung zu ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und in der Lage sind, zweite Anweisungen gemäß der Anfrage auszuführen, wenn die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und zum Ausführen der zweiten Anweisungen in der Lage sind, die zweiten Anweisungen in erste Unteranweisungen und zweite Unteranweisungen aufzuteilen, (a) die ersten Unteranweisungen an eine erste Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen und (b) die zweiten Unteranweisungen an eine zweite Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen bereitzustellen und eine Ausgabe für die zweiten Anweisungen durch Kombinieren einer ersten Ausgabe der ersten Verarbeitungsvorrichtung und einer zweiten Ausgabe der zweiten Verarbeitungsvorrichtung zu erzeugen.
    • Beispiel 112 beinhaltet die Einrichtung nach Beispiel 111, wobei die Anfrage eine erste Anfrage ist, wobei die Prozessorschaltung in Reaktion auf eine zweite Anfrage zum Betreiben der zwei oder mehr Verarbeitungsvorrichtungen als die einzige Verarbeitungsvorrichtung ermitteln soll, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und in der Lage sind, dritte Anweisungen gemäß der zweiten Anfrage auszuführen, und wenn die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die dritten Anweisungen auszuführen, aber nicht verfügbar sind, ermitteln soll, ob die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sein werden, die dritten Anweisungen zu einem späteren Zeitpunkt auszuführen.
    • Beispiel 113 beinhaltet die Einrichtung nach Beispiel 112, wobei die Prozessorschaltung in Reaktion auf Ermitteln, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sein werden, die dritten Anweisungen zukünftig auszuführen, eine Antwort übertragen soll, die angibt, wann die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sein werden.
    • Beispiel 114 beinhaltet die Einrichtung nach Beispiel 111, wobei die Anfrage eine erste Anfrage ist, wobei die Prozessorschaltung in Reaktion auf eine zweite Anfrage, die zwei oder mehr Verarbeitungsvorrichtungen als die einzige Verarbeitungsvorrichtung zu betreiben, ermitteln soll, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und in der Lage sind, zweite Anweisungen gemäß einem Parameter auszuführen, der mit der zweiten Anfrage assoziiert ist, und wenn die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die dritten Anweisungen auszuführen, aber gemäß dem Parameter nicht verfügbar sind, eine Emulationskonfiguration, die der Ausführung der dritten Anweisungen entspricht, basierend auf der ersten Verarbeitungsvorrichtung und der zweiten Verarbeitungsvorrichtung erzeugen soll.
    • Beispiel 115 beinhaltet die Einrichtung nach Beispiel 114, wobei die Prozessorschaltung eine Angabe übertragen soll, dass die dritten Anweisungen gemäß der Emulationskonfiguration ausgeführt werden können, und in Reaktion auf eine Annahme der Emulationskonfiguration die dritten Anweisungen in dritte Unteranweisungen und vierte Unteranweisungen aufteilen soll, (a) die dritten Unteranweisungen an die erste Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen und (b) die vierten Unteranweisungen an die zweite Verarbeitungsvorrichtung der Verarbeitungsvorrichtungen bereitstellen soll und eine dritte Ausgabe der ersten Verarbeitungsvorrichtung und eine vierte Ausgabe der zweiten Verarbeitungsvorrichtung kombinieren soll.
    • Beispiel 116 beinhaltet die Einrichtung nach Beispiel 114, wobei die Prozessorschaltung ermitteln soll, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die dritten Anweisungen auszuführen, aber nicht gemäß dem Parameter zu einem ersten Zeitpunkt verfügbar sind, und ermitteln soll, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die dritten Anweisungen auszuführen, und gemäß dem Parameter zu einem zweiten Zeitpunkt verfügbar sind.
    • Beispiel 117 beinhaltet die Einrichtung nach Beispiel 111, wobei die Prozessorschaltung eine Angabe übertragen soll, dass die ersten Anweisungen nicht ausgeführt werden können, wenn die zwei oder mehr Verarbeitungsvorrichtungen nicht in der Lage sind, die ersten Anweisungen auszuführen.
    • Beispiel 118 beinhaltet die Einrichtung nach Beispiel 111, wobei die Prozessorschaltung vor dem Ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und in der Lage sind, die ersten Anweisungen gemäß der Anfrage auszuführen, die Anfrage authentifizieren soll.
    • Beispiel 119 beinhaltet die Einrichtung nach Beispiel 111, wobei die zwei oder mehr Verarbeitungsvorrichtungen konfigurierbar sind, um als verschieden große einzelne Verarbeitungsvorrichtungen zu arbeiten.
    • Beispiel 120 beinhaltet die Einrichtung nach Beispiel 119, wobei eine Kombination der zwei oder mehr Verarbeitungsvorrichtungen über eine Richtlinie konfigurierbar ist.
    • Beispiel 121 beinhaltet die Einrichtung nach Beispiel 120, wobei die Richtlinie über eine vertrauenswürdige Plattform-Ausführungsumgebung durchgesetzt wird.
    • Beispiel 122 beinhaltet die Einrichtung nach Beispiel 111, wobei die Verarbeitungsschaltungsanordnung die erste Ausgabe der ersten Verarbeitungsvorrichtung und die zweite Ausgabe der zweiten Verarbeitungsvorrichtung durch Verketten der ersten Ausgabe und/oder der zweiten Ausgabe und/oder Addieren der ersten Ausgabe und/oder Multiplizieren der ersten Ausgabe und der zweiten Ausgabe kombinieren soll.
    • Beispiel 123 beinhaltet ein nicht-transientes computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass ein oder mehrere Prozessoren zumindest in Reaktion auf eine Anfrage zum Betreiben von zwei oder mehr Verarbeitungsvorrichtungen als eine einzige Verarbeitungsvorrichtung ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar und in der Lage sind, Anweisungen gemäß der Anfrage auszuführen, wenn die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und zum Ausführen der Anweisungen in der Lage sind, die Anweisungen in erste Unteranweisungen und zweite Unteranweisungen aufteilen, (a) die ersten Unteranweisungen an eine erste Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen und (b) die zweiten Unteranweisungen an eine zweite Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen bereitstellen und eine Ausgabe für die Anweisungen durch Kombinieren einer ersten Ausgabe der ersten Verarbeitungsvorrichtung und einer zweiten Ausgabe der zweiten Verarbeitungsvorrichtung erzeugen.
    • Beispiel 124 beinhaltet das computerlesbare Medium nach Beispiel 123, wobei die Anfrage eine erste Anfrage ist und die Anweisungen erste Anweisungen sind, wobei die Anweisungen bewirken sollen, dass der eine oder die mehreren Prozessoren in Reaktion auf eine zweite Anfrage, die zwei oder mehr Verarbeitungsvorrichtungen als die einzige Verarbeitungsvorrichtung zu betreiben, ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar und in der Lage sind, zweite Anweisungen gemäß der zweiten Anforderung auszuführen, und wenn die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, aber nicht verfügbar, ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sein werden, die zweiten Anweisungen zu einem späteren Zeitpunkt auszuführen.
    • Beispiel 125 beinhaltet das computerlesbare Medium nach Beispiel 124, wobei die Anweisungen bewirken, dass der eine oder die mehreren Prozessoren in Reaktion auf Ermitteln, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sein werden, die zweiten Anweisungen zukünftig auszuführen, eine Antwort übertragen, die angibt, wann die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sein werden.
    • Beispiel 126 beinhaltet das computerlesbare Medium nach Beispiel 123, wobei die Anfrage eine erste Anfrage ist und die Anweisungen erste Anweisungen sind, wobei die Anweisungen bewirken sollen, dass der eine oder die mehreren Prozessoren in Reaktion auf eine zweite Anfrage, die zwei oder mehr Verarbeitungsvorrichtungen als die einzige Verarbeitungsvorrichtung betreiben, ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und in der Lage sind, zweite Anweisungen gemäß einem Parameter auszuführen, der mit der zweiten Anfrage assoziiert ist, und wenn die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, aber gemäß dem Parameter nicht verfügbar sind, eine Emulationskonfiguration, die der Ausführung der zweiten Anweisungen entspricht, basierend auf der ersten Verarbeitungsvorrichtung und der zweiten Verarbeitungsvorrichtung erzeugen.
    • Beispiel 127 beinhaltet das computerlesbare Medium nach Beispiel 126, wobei die Anweisungen bewirken, dass der eine oder die mehreren Prozessoren eine Angabe übertragen, dass die zweiten Anweisungen gemäß der Emulationskonfiguration ausgeführt werden können, und in Reaktion auf eine Annahme der Emulationskonfiguration die zweiten Anweisungen in dritte Unteranweisungen und vierte Unteranweisungen aufteilen, (a) die dritten Unteraanweisungen an die erste Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen und (b) die vierten Unteranweisungen an die zweite Verarbeitungsvorrichtung der Verarbeitungsvorrichtungen bereitstellen und eine dritte Ausgabe der ersten Verarbeitungsvorrichtung und eine vierte Ausgabe der zweiten Verarbeitungsvorrichtung kombinieren.
    • Beispiel 128 beinhaltet das computerlesbare Medium nach Beispiel 126, wobei die Anweisungen bewirken, dass der eine oder die mehreren Prozessoren ermitteln, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, aber gemäß dem Parameter zu einem ersten Zeitpunkt nicht verfügbar sind, und ermitteln, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, und gemäß dem Parameter zu einem zweiten Zeitpunkt verfügbar sind, der sich von dem ersten Zeitpunkt unterscheidet.
    • Beispiel 129 beinhaltet das computerlesbare Medium nach Beispiel 123, wobei die Anweisungen bewirken, dass der eine oder die mehreren Prozessoren eine Angabe übertragen, dass die Anweisungen nicht ausgeführt werden können, wenn die zwei oder mehr Verarbeitungsvorrichtungen nicht in der Lage sind, die Anweisungen auszuführen.
    • Beispiel 130 beinhaltet das computerlesbare Medium nach Beispiel 123, wobei die Anweisungen bewirken, dass der eine oder die mehreren Prozessoren die Anfrage authentifizieren, bevor ermittelt wird, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und in der Lage sind, die Anweisungen gemäß der Anfrage auszuführen.
    • Beispiel 131 beinhaltet das computerlesbare Medium nach Beispiel 123, wobei die zwei oder mehr Verarbeitungsvorrichtungen konfigurierbar sind, um als verschieden große einzelne Verarbeitungsvorrichtungen zu arbeiten.
    • Beispiel 132 beinhaltet das computerlesbare Medium nach Beispiel 131, wobei eine Kombination der zwei oder mehr Verarbeitungsvorrichtungen über eine Richtlinie konfigurierbar ist.
    • Beispiel 133 beinhaltet das computerlesbare Medium nach Beispiel 132, wobei die Richtlinie über eine vertrauenswürdige Plattform-Ausführungsumgebung durchgesetzt wird.
    • Beispiel 134 beinhaltet das computerlesbare Medium nach Beispiel 123, wobei die Anweisungen bewirken, dass der eine oder die mehreren Prozessoren die erste Ausgabe der ersten Verarbeitungsvorrichtung und die zweite Ausgabe der zweiten Verarbeitungsvorrichtung durch Verketten der ersten Ausgabe und der zweiten Ausgabe und/oder Addieren der ersten Ausgabe und der zweiten Ausgabe und/oder Multiplizieren der ersten Ausgabe und der zweiten Ausgabe kombinieren.
    • Beispiel 135 beinhaltet eine Einrichtung zum bedingten Aktivieren eines großen Kerns in einem Rechensystem, umfassend eine Schnittstellenschaltung zum Beziehen einer Anfrage zum Betreiben von zwei oder mehr Verarbeitungsvorrichtungen als eine einzige Verarbeitungsvorrichtung, und eine Prozessorschaltung, die eine Zentralverarbeitungseinheit und/oder eine Grafikverarbeitungseinheit und/oder einen digitalen Signalprozessor beinhaltet, wobei die Zentralverarbeitungseinheit und/oder die Grafikverarbeitungseinheit und/oder der Digitalsignalprozessor eine Steuerschaltungsanordnung zum Steuern einer Datenbewegung innerhalb der Prozessorschaltung, eine Arithmetik- und Logik-Schaltung zum Durchführen einer oder mehrerer erster Operationen, die Anweisungen entsprechen, und ein oder mehrere Register zum Speichern eines Ergebnisses der einen oder der mehreren ersten Operationen aufweisen, wobei die Anweisungen in der Einrichtung vorliegen, ein frei programmierbares Gate-Array (FPGA), wobei das FPGA eine Logikgatterschaltungsanordnung, eine Vielzahl konfigurierbarer Zwischenverbindungen und eine Speicherschaltungsanordnung beinhaltet, wobei die Logikgatterschaltungsanordnung und die Zwischenverbindungen eine oder mehrere zweite Operationen durchführen sollen, wobei die Speicherschaltungsanordnung ein Ergebnis der einen oder der mehreren zweiten Operationen speichern soll, oder eine anwendungsspezifische integrierte Schaltungsanordnung (ASIC) die eine Logikgatterschaltungsanordnung zum Durchführen einer oder mehrerer dritter Operationen beinhaltet, wobei die Prozessorschaltung die ersten Operationen und/oder die zweiten Operationen und/oder die dritten Operationen durchführen soll, um eine Hardwareverwaltungsschaltungsanordnung zu instanziieren, um in Reaktion auf die Anfrage zu ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar und in der Lage sind, Anweisungen gemäß der Anfrage auszuführen, wenn die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und zum Ausführen der Anweisungen in der Lage sind, die Anweisungen in erste Unteranweisungen und zweite Unteranweisungen aufzuteilen, (a) die ersten Unteranweisungen an eine erste Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen und (b) die zweiten Unteranweisungen an eine zweite Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen bereitzustellen und eine Ausgabe für die Anweisungen durch Kombinieren einer ersten Ausgabe der ersten Verarbeitungsvorrichtung und einer zweiten Ausgabe der zweiten Verarbeitungsvorrichtung zu erzeugen.
    • Beispiel 136 beinhaltet die Einrichtung nach Beispiel 135, wobei die Anfrage eine erste Anfrage ist und die Anweisungen erste Anweisungen sind, wobei die Hardwareverwaltungsschaltungsanordnun in Reaktion auf eine zweite Anfrage, die zwei oder mehr Verarbeitungsvorrichtungen als die einzige Verarbeitungsvorrichtung zu betreiben, ermitteln soll, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar und in der Lage sind, zweite Anweisungen gemäß der zweiten Anfrage auszuführen, und wenn die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, aber nicht verfügbar, ermitteln soll, ob die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sein werden, die zweiten Anweisungen zu einem späteren Zeitpunkt auszuführen.
    • Beispiel 137 beinhaltet die Einrichtung nach Beispiel 136, wobei die Hardwareverwaltungsschaltungsanordnung in Reaktion auf Ermitteln, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sein werden, die zweiten Anweisungen zukünftig auszuführen, eine Antwort übertragen soll, die angibt, wann die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sein werden.
    • Beispiel 138 beinhaltet die Einrichtung nach Beispiel 135, wobei die Anfrage eine erste Anfrage ist und die Anweisungen erste Anweisungen sind, wobei die Hardwareverwaltungsschaltungsanordnung in Reaktion auf eine zweite Anfrage, die zwei oder mehr Verarbeitungsvorrichtungen als die einzige Verarbeitungsvorrichtung zu betreiben, ermitteln soll, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und in der Lage sind, zweite Anweisungen gemäß einem Parameter auszuführen, der mit der zweiten Anfrage assoziiert ist, und wenn die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, aber gemäß dem Parameter nicht verfügbar sind, eine Emulationskonfiguration, die der Ausführung der zweiten Anweisungen entspricht, basierend auf der ersten Verarbeitungsvorrichtung und der zweiten Verarbeitungsvorrichtung erzeugen soll.
    • Beispiel 139 beinhaltet die Einrichtung nach Beispiel 138, wobei die Hardwareverwaltungsschaltungsanordnung eine Angabe übertragen soll, dass die zweiten Anweisungen gemäß der Emulationskonfiguration ausgeführt werden können, und in Reaktion auf eine Annahme der Emulationskonfiguration die zweiten Anweisungen in dritte Unteranweisungen und vierte Unteranweisungen aufteilen soll, (a) die dritten Unteranweisungen an die erste Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen und (b) die vierten Unteranweisungen an die zweite Verarbeitungsvorrichtung der Verarbeitungsvorrichtungen bereitstellen soll und eine dritte Ausgabe der ersten Verarbeitungsvorrichtung und eine vierte Ausgabe der zweiten Verarbeitungsvorrichtung kombinieren soll.
    • Beispiel 140 beinhaltet die Einrichtung nach Beispiel 138, wobei die Hardwareverwaltungsschaltungsanordnung ermitteln soll, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, aber gemäß dem Parameter zu einer ersten Zeit nicht verfügbar sind, und ermitteln soll, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, und gemäß dem Parameter zu einer zweiten Zeit verfügbar sind.
    • Beispiel 141 beinhaltet die Einrichtung nach Beispiel 135, wobei die Hardwareverwaltungsschaltungsanordnung eine Angabe übertragen soll, dass die Anweisungen nicht ausgeführt werden können, wenn die zwei oder mehr Verarbeitungsvorrichtungen nicht in der Lage sind, die Anweisungen auszuführen.
    • Beispiel 142 beinhaltet die Einrichtung nach Beispiel 135, wobei die Prozessorschaltung eine Authentifizierungsschaltungsanordnung instanziieren soll, um die Anfrage zu authentifizieren, bevor ermittelt wird, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und in der Lage sind, die Anweisungen gemäß der Anfrage auszuführen.
    • Beispiel 143 beinhaltet die Einrichtung nach Beispiel 135, wobei die zwei oder mehr Verarbeitungsvorrichtungen konfigurierbar sind, um als verschieden große einzelne Verarbeitungsvorrichtungen zu arbeiten.
    • Beispiel 144 beinhaltet die Einrichtung nach Beispiel 143, wobei eine Kombination der zwei oder mehr Verarbeitungsvorrichtungen über eine Richtlinie konfigurierbar ist.
    • Beispiel 145 beinhaltet die Einrichtung nach Beispiel 144, wobei die Richtlinie über eine vertrauenswürdige Plattform-Ausführungsumgebung durchgesetzt wird.
    • Beispiel 146 beinhaltet die Einrichtung nach Beispiel 135, wobei die Hardwareverwaltungsschaltungsanordnung die erste Ausgabe der ersten Verarbeitungsvorrichtung und die zweite Ausgabe der zweiten Verarbeitungsvorrichtung durch Verketten der ersten Ausgabe und der zweiten Ausgabe und/oder Addieren der ersten Ausgabe und der zweiten Ausgabe und/oder Multiplizieren der ersten Ausgabe und der zweiten Ausgabe kombinieren soll.
    • Beispiel 147 beinhaltet ein Verfahren zum bedingten Aktivieren eines großen Kerns in einem Rechensystem, umfassend in Reaktion auf eine Anfrage zum Betreiben von zwei oder mehr Verarbeitungsvorrichtungen als eine einzige Verarbeitungsvorrichtung erfolgendes Ermitteln, durch Ausführen einer Anweisung mit einem oder mehreren Prozessoren, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar und in der Lage sind, Anweisungen gemäß der Anfrage auszuführen, wenn die zwei oder mehr Verarbeitungsvorrichtungen verfügbar und in der Lage sind, die Anweisungen auszuführen, durch Ausführen einer Anweisung mit dem einen oder den mehreren Prozessoren erfolgendes Aufteilen der Anweisungen in erste Unteranweisungen und zweite Unteranweisungen, durch Ausführen einer Anweisung mit dem einen oder den mehreren Prozessoren erfolgendes Bereitstellen (a) der ersten Unteranweisungen an eine erste Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen und (b) der zweiten Unteranweisungen an eine zweite Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen, und durch Ausführen einer Anweisung mit dem einen oder den mehreren Prozessoren erfolgendes Erzeugen einer Ausgabe für die Anweisungen durch Kombinieren einer ersten Ausgabe der ersten Verarbeitungsvorrichtung und einer zweiten Ausgabe der zweiten Verarbeitungsvorrichtung.
    • Beispiel 148 beinhaltet das Verfahren nach Beispiel 147, wobei die Anfrage eine erste Anfrage ist und die Anweisungen erste Anweisungen sind, ferner beinhaltend in Reaktion auf eine zweite Anfrage, die zwei oder mehr Verarbeitungsvorrichtungen als die einzige Verarbeitungsvorrichtung zu betreiben, erfolgendes Ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar und in der Lage sind, zweite Anweisungen gemäß der zweiten Anfrage auszuführen, und wenn die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, aber nicht verfügbar, Ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sein werden, die zweiten Anweisungen zu einem späteren Zeitpunkt auszuführen.
    • Beispiel 149 beinhaltet das Verfahren nach Beispiel 148, ferner beinhaltend in Reaktion auf Ermitteln, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sein werden, die zweiten Anweisungen zukünftig auszuführen, erfolgendes Übertragen einer Antwort, die angibt, wann die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sein werden.
    • Beispiel 150 beinhaltet das Verfahren nach Beispiel 147, wobei die Anfrage eine erste Anfrage ist und die Anweisungen erste Anweisungen sind, ferner beinhaltend in Reaktion auf eine zweite Anfrage, die zwei oder mehr Verarbeitungsvorrichtungen als die einzige Verarbeitungsvorrichtung zu betreiben, erfolgendes Ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und in der Lage sind, zweite Anweisungen gemäß einem Parameter auszuführen, der mit der zweiten Anfrage assoziiert ist, und wenn die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, aber gemäß dem Parameter nicht verfügbar sind, Erzeugen einer Emulationskonfiguration, die der Ausführung der zweiten Anweisungen entspricht, basierend auf der ersten Verarbeitungsvorrichtung und der zweiten Verarbeitungsvorrichtung.
    • Beispiel 151 beinhaltet das Verfahren nach Beispiel 150, ferner beinhaltend Übertragen einer Angabe, dass die zweiten Anweisungen gemäß der Emulationskonfiguration ausgeführt werden können, und in Reaktion auf eine Annahme der Emulationskonfiguration Aufteilen der zweiten Anweisungen in dritte Unteranweisungen und vierte Unteranweisungen, Bereitstellen (a) der dritten Unteranweisungen an die erste Verarbeitungsvorrichtung der zwei oder mehr Verarbeitungsvorrichtungen und (b) der vierten Unteranweisungen an die zweite Verarbeitungsvorrichtung der Verarbeitungsvorrichtungen, und Kombinieren einer dritten Ausgabe der ersten Verarbeitungsvorrichtung und einer vierten Ausgabe der zweiten Verarbeitungsvorrichtung.
    • Beispiel 152 beinhaltet das Verfahren nach Beispiel 150, ferner beinhaltend Ermitteln, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, aber gemäß dem Parameter zu einer ersten Zeit nicht verfügbar sind, und Ermitteln, dass die zwei oder mehr Verarbeitungsvorrichtungen in der Lage sind, die zweiten Anweisungen auszuführen, und gemäß dem Parameter zu einer anderen Zeit als der ersten Zeit verfügbar sind.
    • Beispiel 153 beinhaltet das Verfahren nach Beispiel 147, ferner beinhaltend Übertragen einer Angabe, dass die Anweisungen nicht ausgeführt werden können, wenn die zwei oder mehr Verarbeitungsvorrichtungen nicht in der Lage sind, die Anweisungen auszuführen.
    • Beispiel 154 beinhaltet das Verfahren nach Beispiel 147, ferner beinhaltend Authentifizieren der Anfrage vor dem Ermitteln, ob die zwei oder mehr Verarbeitungsvorrichtungen verfügbar sind und in der Lage sind, die Anweisungen gemäß der Anfrage auszuführen.
    • Beispiel 155 beinhaltet das Verfahren nach Beispiel 147, wobei die zwei oder mehr Verarbeitungsvorrichtungen konfigurierbar sind, um als verschieden große einzelne Verarbeitungsvorrichtungen zu arbeiten.
    • Beispiel 156 beinhaltet das Verfahren nach Beispiel 155, wobei eine Kombination der zwei oder mehr Verarbeitungsvorrichtungen über eine Richtlinie konfigurierbar ist.
    • Beispiel 157 beinhaltet das Verfahren nach Beispiel 156, wobei die Richtlinie über eine vertrauenswürdige Plattform-Ausführungsumgebung durchgesetzt wird.
    • Beispiel 158 beinhaltet das Verfahren nach Beispiel 147, wobei das Kombinieren der ersten Ausgabe der ersten Verarbeitungsvorrichtung und der zweiten Ausgabe der zweiten Verarbeitungsvorrichtung Verketten der ersten Ausgabe und der zweiten Ausgabe und/oder Addieren der ersten Ausgabe und der zweiten Ausgabe und/oder Multiplizieren der ersten Ausgabe und der zweiten Ausgabe beinhaltet.
  • Beispielhafte Verfahren, Einrichtungen, Systeme und Herstellungsartikel für zusammensetzbare Rechenknoten für maschinelles Lernen sind vorliegend offenbart. Als weitere Beispiele und Kombinationen davon seien genannt:
    • Beispiel 159 beinhaltet eine Einrichtung zum Erzeugen eines Rechenknotens, wobei die Einrichtung eine Schnittstellenschaltung zum Empfangen einer Arbeitslast, Anweisungen in der Einrichtung und eine Prozessorschaltung zum Ausführen und/oder Instanziieren der Anweisungen umfasst, um eine erste Konfiguration eines oder mehrerer Maschinenlernmodelle basierend auf der Arbeitslast zu erzeugen, wobei die erste Konfiguration in einer ersten Konfigurationsdatenbank gespeichert ist, wobei die erste Konfigurationsdatenbank eine Vielzahl von Maschinenlernmodellen beinhaltet, wobei die Vielzahl von Maschinenlernmodellen das eine oder die mehreren Maschinenlernmodelle beinhaltet, eine zweite Hardwarekonfiguration zu erzeugen, wobei die zweite Konfiguration in einer zweiten Konfigurationsdatenbank gespeichert ist, wobei die zweite Konfigurationsdatenbank einen oder mehrere Teile einer Vielzahl von Hardware beinhaltet, wobei die Vielzahl von Hardware die Hardware beinhaltet, einen Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast zu ermitteln, wobei die Ausführung der Arbeitslast auf der ersten Konfiguration und der zweiten Konfiguration basiert, und in Reaktion darauf, dass der Evaluierungsparameter eine Schwelle erfüllt, das eine oder die mehreren Maschinenlernmodelle in der ersten Konfiguration auf der Hardware in der zweiten Konfiguration auszuführen, wobei das eine oder die mehreren Maschinenlernmodelle und die Hardware die Arbeitslast ausführen sollen.
    • Beispiel 160 beinhaltet die Einrichtung nach Beispiel 159, wobei die erste Konfiguration eine Anzahl von Modellschichten und/oder Gewichtungen für die Modellschichten und/oder einen Typ von Maschinenlerntraining und/oder einen oder mehrere Hyperparameter beinhaltet, die mit dem einen oder den mehreren Maschinenlernmodellen assoziiert sind.
    • Beispiel 161 beinhaltet die Einrichtung nach Beispiel 159, wobei der eine oder die mehreren Teile einen ersten Block und/oder einen zweiten Block und/oder einen dritten Block beinhalten, und die Prozessorschaltung die Anweisungen ausführen und/oder instanziieren soll, um den ersten Block der Hardware zu identifizieren, um eine Matrix-Matrix-Arbeitslast auszuführen, den zweiten Block der Hardware zu identifizieren, um eine Vektor-Vektor-Arbeitslast auszuführen, den dritten Block der Hardware zu identifizieren, um eine Matrix-Vektor-Arbeitslast auszuführen, und Registerdateien für jeweilige des ersten Blocks, des zweiten Blocks und des dritten Blocks zu identifizieren, wobei die Registerdateien Zustände für die jeweiligen des ersten Blocks, des zweiten Blocks und des dritten Blocks speichern sollen, wobei die zweite Konfiguration auf einer Topologie basiert, die den ersten Block und/oder den zweiten Block und/oder den dritten Block beinhaltet.
    • Beispiel 162 beinhaltet die Einrichtung nach Beispiel 159, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten und die Prozessorschaltung die Anweisungen ausführen und/oder instanziieren soll, um in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, ein zweites Maschinenlernmodell in der ersten Konfigurationsdatenbank zu identifizieren, eine dritte Konfiguration des zweiten Maschinenlernmodells zu erzeugen, den Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast basierend auf der dritten Konfiguration zu ermitteln und das zweite Maschinenlernmodell zum Ausführen der Arbeitslast basierend auf der dritten Konfiguration bereitzustellen.
    • Beispiel 163 beinhaltet die Einrichtung nach Beispiel 159, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten und die Prozessorschaltung die Anweisungen ausführen und/oder instanziieren soll, um in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, eine oder mehrere erste Schichten des ersten Maschinenlernmodells zu ermitteln, um einen ersten Teil der Arbeitslast auszuführen, ein zweites Maschinenlernmodell in der ersten Konfigurationsdatenbank zu identifizieren, eine oder mehrere zweite Schichten des zweiten Maschinenlernmodells zu ermitteln, um einen zweiten Teil der Arbeitslast auszuführen, und und eine dritte Konfiguration basierend auf einer Topologie der einen oder der mehreren ersten Schichten und der einen oder der mehreren zweiten Schichten zu ermitteln, wobei die Topologie auf einer Ausgabe der einen oder den mehreren ersten Schichten als Eingabe in die eine oder die mehreren zweiten Schichten basiert.
    • Beispiel 164 beinhaltet die Einrichtung nach Beispiel 159, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten und die Prozessorschaltung die Anweisungen ausführen und/oder instanziieren soll, um das erste Maschinenlernmodell in der ersten Konfigurationsdatenbank zu identifizieren, ein zweites Maschinenlernmodell basierend auf einer Abfrage einer Ontologiedatenbank mit einer Kennung des ersten Maschinenlernmodells als eine Eingabe zu identifizieren, wobei die Ontologiedatenbank eine Assoziierung des ersten Maschinenlernmodells und des zweiten Maschinenlernmodells beinhaltet, und in Reaktion darauf, dass der Evaluationsparameter die Schwelle erfüllt, die Ontologiedatenbank basierend auf der ersten Konfiguration zu aktualisieren.
    • Beispiel 165 beinhaltet die Einrichtung nach Beispiel 159, wobei die Hardware eine erste Hardware ist und die Prozessorschaltung die Anweisungen ausführen und/oder instanziieren soll, um in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, zweite Hardware in der zweiten Konfigurationsdatenbank zu identifizieren, eine dritte Konfiguration der zweiten Hardware zu erzeugen, den Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast durch die zweite Hardware in der dritten Konfiguration zu ermitteln und die zweite Hardware mit der dritten Konfiguration bereitzustellen, um das eine oder die mehreren Maschinenlernmodelle auszuführen, um die Arbeitslast auszuführen.
    • Beispiel 166 beinhaltet die Einrichtung nach Beispiel 159, wobei die Hardware eine erste Hardware ist und die Prozessorschaltung die Anweisungen ausführen und/oder instanziieren soll, um in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, einen oder mehrere erste Teile der ersten Hardware zu ermitteln, um einen ersten Teil der Arbeitslast auszuführen, zweite Hardware in der ersten Konfigurationsdatenbank zu identifizeren, einen oder mehrere zweite Teile der zweiten Hardware zu ermitteln, um einen zweiten Teil der Arbeitslast auszuführen, und eine dritte Konfiguration basierend auf einer Topologie des einen oder der mehreren ersten Teile und des einen oder der mehreren zweiten Teile zu ermitteln, wobei die Topologie auf einer Ausgabe des einen oder der mehreren ersten Teile als Eingabe in den einen oder die mehreren zweiten Teile basiert.
    • Beispiel 167 beinhaltet die Einrichtung nach Beispiel 166, wobei die erste Hardware und die zweite Hardware eine Zentralprozessoreinheit, eine Grafikverarbeitungseinheit, ein Digitalsignalprozessor, ein Künstliche-Intelligenz-Prozessor, ein Neuronalnetzprozessor oder ein frei programmierbares Gate-Array sind.
    • Beispiel 168 beinhaltet die Einrichtung nach Beispiel 159, wobei der Evaluierungsparameter ein erster Evaluierungsparameter ist und die Prozessorschaltung die Anweisungen ausführen und/oder instanziieren soll, um eine Belohnungsfunktion auszugeben, die den ersten Evaluierungsparameter mit einer ersten Gewichtung und einen zweiten Evaluierungsparameter mit einer zweiten Gewichtung beinhaltet, wobei die erste Gewichtung größer als die zweite Gewichtung ist, und in Reaktion auf Ermitteln, dass der erste Evaluierungsparameter und/oder der zweite Evaluierungsparameter die Schwelle nicht erfüllt, die erste Konfiguration und/oder die zweite Konfiguration zu modifizieren, um den ersten Evaluierungsparameter zu erhöhen und/oder den zweiten Evaluierungsparameter zu verringern.
    • Beispiel 169 beinhaltet die Einrichtung nach Beispiel 159, wobei der Evaluierungsparameter eine Genauigkeit und/oder Kosten und/oder ein Energieverbrauch und/oder eine Latenz und/oder eine Performanz und/oder ein Durchsatz ist, die mit dem einen oder den mehreren Maschinenlernmodellen und/oder der Hardware assoziiert sind.
    • Beispiel 170 beinhaltet eine Einrichtung zum Erzeugen eines Rechenknotens, umfassend ein erstes Mittel zum Erzeugen einer ersten Konfiguration eines oder mehrerer Maschinenlernmodelle basierend auf einer Arbeitslast, wobei die erste Konfiguration in einer ersten Konfigurationsdatenbank gespeichert ist, wobei die erste Konfigurationsdatenbank eine Vielzahl von Maschinenlernmodellen beinhaltet, wobei die Vielzahl von Maschinenlernmodellen das eine oder die mehreren Maschinenlernmodelle beinhaltet, zweite Mittel zum Erzeugen einer zweiten Hardwarekonfiguration, wobei die zweite Konfiguration in einer zweiten Konfigurationsdatenbank gespeichert ist, wobei die zweite Konfigurationsdatenbank einen oder mehrere Teile einer Vielzahl von Hardware beinhaltet, wobei die Vielzahl von Hardware die Hardware beinhaltet, Mittel zum Ermitteln eines Evaluierungsparameters basierend auf einer Ausführung der Arbeitslast, wobei die Ausführung der Arbeitslast auf der ersten Konfiguration und der zweiten Konfiguration basiert, und Mittel zum Ausführen des einen oder der mehreren Maschinenlernmodelle in der ersten Konfiguration auf der Hardware in der zweiten Konfiguration in Reaktion darauf, dass der Evaluierungsparameter eine Schwelle erfüllt, wobei das eine oder die mehreren Maschinenlernmodelle und die Hardware die Arbeitslast ausführen sollen.
    • Beispiel 171 beinhaltet die Einrichtung nach Beispiel 170, wobei der eine oder die mehreren Teile einen ersten Block und/oder einen zweiten Block und/oder einen dritten Block beinhalten und das zweite Mittel zum Erzeugen den ersten Block der Hardware identifizieren soll, um eine Matrix-Matrix-Arbeitslast auszuführen, den zweiten Block der Hardware identifizieren soll, um eine Vektor-Vektor-Arbeitslast auszuführen, den dritten Block der Hardware identifizieren soll, um eine Matrix-Vektor-Arbeitslast auszuführen, und Registerdateien für jeweilige des ersten Blocks, des zweiten Blocks und des dritten Blocks identifizieren soll, wobei die Registerdateien Zustände für die jeweiligen des ersten Blocks, des zweiten Blocks und des dritten Blocks speichern sollen, wobei die zweite Konfiguration auf einer Topologie basiert, die den ersten Block und/oder den zweiten Block und/oder den dritten Block beinhaltet.
    • Beispiel 172 beinhaltet die Einrichtung nach Beispiel 170, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten und das erste Mittel zum Erzeugen in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, ein zweites Maschinenlernmodell in der ersten Konfigurationsdatenbank identifizieren soll, eine dritte Konfiguration des zweiten Maschinenlernmodells erzeugen soll, den Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast basierend auf der dritten Konfiguration ermitteln soll und Einsetzen das zweite Maschinenlernmodell zum Ausführen der Arbeitslast basierend auf der dritten Konfiguration bereitstellen soll.
    • Beispiel 173 beinhaltet die Einrichtung nach Beispiel 170, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten und das erste Mittel zum Erzeugen in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, eine oder mehrere erste Schichten des ersten Maschinenlernmodells zum Ausführen eines ersten Teils der Arbeitslast ermitteln soll, ein zweites Maschinenlernmodells in der ersten Konfigurationsdatenbank identifizieren soll, eine oder mehrere zweite Schichten des zweiten Maschinenlernmodells zum Ausführen eines zweiten Teils der Arbeitslast ermitteln soll und eine dritte Konfiguration basierend auf einer Topologie der einen oder der mehreren ersten Schichten und der einen oder der mehreren zweiten Schichten ermitteln soll, wobei die Topologie auf einer Ausgabe der einen oder der mehreren ersten Schichten als Eingabe in die eine oder die mehreren zweiten Schichten basiert.
    • Beispiel 174 beinhaltet die Vorrichtung nach Beispiel 170, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten und das erste Mittel zum Erzeugen das erste Maschinenlernmodell in der ersten Konfigurationsdatenbank identifizieren soll, ein zweites Maschinenlernmodell basierend auf einer Abfrage einer Ontologiedatenbank mit einer Kennung des ersten Maschinenlernmodells als Eingabe identifizieren soll, wobei die Ontologiedatenbank eine Assoziierung des ersten Maschinenlernmodells und des zweiten Maschinenlernmodells beinhaltet, und in Reaktion darauf, dass der Evaluationsparameter die Schwelle erfüllt, die Ontologiedatenbank basierend auf der ersten Konfiguration aktualisieren soll.
    • Beispiel 175 beinhaltet die Einrichtung nach Beispiel 170, wobei die Hardware eine erste Hardware ist und das zweite Mittel zum Erzeugen in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, die zweite Hardware in der zweiten Konfigurationsdatenbank identifizieren soll, eine dritte Konfiguration der zweiten Hardware erzeugen soll, den Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast durch die zweite Hardware in der dritten Konfiguration ermitteln soll und die zweite Hardware mit der dritten Konfiguration bereitstellen soll, um das eine oder die mehreren Maschinenlernmodelle auszuführen, um die Arbeitslast auszuführen.
    • Beispiel 176 beinhaltet die Einrichtung nach Beispiel 170, wobei die Hardware eine erste Hardware ist und das zweite Mittel zum Erzeugen in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, einen oder mehrere erste Teile der ersten Hardware zum Ausführen eines ersten Teils der Arbeitslast ermitteln soll, eine zweite Hardware in der ersten Konfigurationsdatenbank identifizieren soll, einen oder mehrere zweite Teile der zweiten Hardware zum Ausführen eines zweiten Teils der Arbeitslast ermitteln soll und eine dritte Konfiguration basierend auf einer Topologie des einen oder der mehreren ersten Teile und des einen oder der mehreren zweiten Teile ermitteln soll, wobei die Topologie auf einer Ausgabe des einen oder der mehreren ersten Teile als Eingabe in den einen oder die mehreren zweiten Teile basiert.
    • Beispiel 177 beinhaltet die Einrichtung nach Beispiel 170, wobei der Evaluierungsparameter ein erster Evaluierungsparameter ist und das Mittel zum Ermitteln eine Belohnungsfunktion ermitteln soll, die den ersten Evaluierungsparameter mit einer ersten Gewichtung und einen zweiten Evaluierungsparameter mit einer zweiten Gewichtung beinhaltet, wobei die erste Gewichtung größer als die zweite Gewichtung ist, und in Reaktion auf Ermitteln, dass der erste Evaluierungsparameter und/oder der zweite Evaluierungsparameter die Schwelle nicht erfüllt, die erste Konfiguration und/oder die zweite Konfiguration ändern soll, um den ersten Evaluierungsparameter zu erhöhen und/oder den zweiten Evaluierungsparameter zu verringern.
    • Beispiel 178 beinhaltet mindestens ein nicht-transientes computerlesbares Speichermedium, das Anweisungen umfasst, die bei Ausführung bewirken, dass eine Prozessorschaltung zumindest eine erste Konfiguration eines oder mehrerer Maschinenlernmodelle basierend auf einer Arbeitslast erzeugt, wobei die erste Konfiguration in einer ersten Konfigurationsdatenbank gespeichert ist, wobei die erste Konfigurationsdatenbank eine Vielzahl von Maschinenlernmodellen beinhaltet, wobei die Vielzahl von Maschinenlernmodellen das eine oder die mehreren Maschinenlernmodelle beinhaltet, eine zweite Hardwarekonfiguration erzeugt, wobei die zweite Konfiguration in einer zweiten Konfigurationsdatenbank gespeichert ist, wobei die zweite Konfigurationsdatenbank einen oder mehrere Teile einer Vielzahl von Hardware beinhaltet, wobei die Vielzahl von Hardware die Hardware beinhaltet, einen Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast ermittelt, wobei die Ausführung der Arbeitslast auf der ersten Konfiguration und der zweiten Konfiguration basiert, und in Reaktion darauf, dass der Evaluierungsparameter eine Schwelle erfüllt, das eine oder die mehreren Maschinenlernmodelle in der ersten Konfiguration auf der Hardware in der zweiten Konfiguration ausführt, wobei das eine oder die mehreren Maschinenlernmodelle und die Hardware die Arbeitslast ausführen sollen.
    • Beispiel 179 beinhaltet das mindestens eine nicht-transiente computerlesbare Speicherungsmedium nach Beispiel 178, wobei die erste Konfiguration eine Anzahl von Modellschichten und/oder Gewichtungen für die Modellschichten und/oder einen Typ von Maschinenlerntraining und/oder einen oder mehrere Hyperparameter beinhaltet, die mit dem einen oder den mehreren Maschinenlernmodellen assoziiert sind.
    • Beispiel 180 beinhaltet das mindestens eine nicht-transiente computerlesbare Speicherungsmedium nach Beispiel 178, wobei der eine oder die mehreren Teile einen ersten Block und/oder einen zweiten Block und/oder einen dritten Block beinhalten, und die Anweisungen bei Ausführung bewirken, dass die Prozessorschaltung den ersten Block der Hardware auswählt, um eine Matrix-Matrix-Arbeitslast auszuführen, den zweiten Block der Hardware auswählt, um eine Vektor-Vektor-Arbeitslast auszuführen, den dritten Block der Hardware auswählt, um eine Matrix-Vektor-Arbeitslast auszuführen, und Registerdateien für jeweilige des ersten Blocks, des zweiten Blocks und des dritten Blocks erstellt, wobei die Registerdateien Zustände für die jeweiligen des ersten Blocks, des zweiten Blocks und des dritten Blocks speichern sollen, wobei die zweite Konfiguration auf einer Topologie basiert, die den ersten Block und/oder den zweiten Block und/oder den dritten Block beinhaltet.
    • Beispiel 181 beinhaltet das mindestens eine nicht-transiente computerlesbare Speichermedium nach Beispiel 178, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten und die Anweisungen bei Ausführung bewirken, dass die Prozessorschaltung in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, ein zweites Maschinenlernmodell in der ersten Konfigurationsdatenbank identifiziert, eine dritte Konfiguration des zweiten Maschinenlernmodells zusammensetzt, den Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast basierend auf der dritten Konfiguration berechnet und das zweite Maschinenlernmodell zum Ausführen der Arbeitslast basierend auf der dritten Konfiguration bereitstellt.
    • Beispiel 182 beinhaltet das mindestens eine nicht-transiente computerlesbare Speichermedium nach Beispiel 178, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten und die Anweisungen bei Ausführung bewirken, dass die Prozessorschaltung in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, eine oder mehrere erste Schichten des ersten Maschinenlernmodells ermittelt, um eine Ausführung eines ersten Teils der Arbeitslast zu bewirken, ein zweites Maschinenlernmodell in der ersten Konfigurationsdatenbank identifiziert, eine oder mehrere zweite Schichten des zweiten Maschinenlernmodells ermittelt, um eine Ausführung eines zweiten Teils der Arbeitslast zu bewirken, und eine dritte Konfiguration basierend auf einer Topologie der einen oder der mehreren ersten Schichten und der einen oder der mehreren zweiten Schichten ermittelt, wobei die Topologie auf einer Ausgabe der einen oder den mehreren ersten Schichten basiert, die mit einer Eingabe in die eine oder die mehreren zweiten Schichten gekoppelt werden soll.
    • Beispiel 183 beinhaltet das mindestens eine nicht-transiente computerlesbare Speichermedium nach Beispiel 178, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten und die Anweisungen bei Ausführung bewirken, dass die Prozessorschaltung das erste Maschinenlernmodell in der ersten Konfigurationsdatenbank entdeckt, ein zweites Maschinenlernmodells basierend auf einer Abfrage einer Ontologiedatenbank mit einer Kennung des ersten Maschinenlernmodells als Eingabe entdeckt, wobei die Ontologiedatenbank eine Assoziierung des ersten Maschinenlernmodells und des zweiten Maschinenlernmodells beinhaltet, und in Reaktion darauf, dass der Evaluationsparameter die Schwelle erfüllt, die Ontologiedatenbank basierend auf der ersten Konfiguration aktualisiert.
    • Beispiel 184 beinhaltet das mindestens eine nicht-transiente computerlesbare Speichermedium nach Beispiel 178, wobei die Hardware eine erste Hardware ist und die Anweisungen bei Ausführung die Prozessorschaltung dazu veranlassen, in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, eine zweite Hardware in der zweiten Konfigurationsdatenbank zu identifizieren, eine dritte Konfiguration der zweiten Hardware zu erzeugen, den Evaluierungsparameter basierend auf einer Ausführung der Arbeitslast durch die zweite Hardware in der dritten Konfiguration zu ermitteln und die zweite Hardware mit der dritten Konfiguration zum Ausführen des einen oder der mehreren Maschinenlernmodelle zum Ausführen der Arbeitslast bereitzustellen.
    • Beispiel 185 beinhaltet das mindestens eine nicht-transiente computerlesbare Speichermedium nach Beispiel 178, wobei die Hardware eine erste Hardware ist und die Anweisungen bei Ausführung bewirken, dass die Prozessorschaltung in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, einen oder mehrere erste Teile der ersten Hardware zum Ausführen eines ersten Teils der Arbeitslast auswählt, zweite Hardware in der ersten Konfigurationsdatenbank identifiziert, einen oder mehrere zweite Teile der zweiten Hardware zum Ausführen eines zweiten Teils der Arbeitslast auswählt und eine dritte Konfiguration basierend auf einer Topologie des einen oder der mehreren ersten Teile und des einen oder der mehreren zweiten Teile ermittelt, wobei die Topologie auf einer Ausgabe des einen oder der mehreren ersten Teile als Eingabe in den einen oder die mehreren zweiten Teile basiert.
    • Beispiel 186 beinhaltet das mindestens eine nicht-transiente computerlesbare Speichermedium nach Beispiel 178, wobei der Evaluierungsparameter ein erster Evaluierungsparameter ist und die Anweisungen bei Ausführung die Prozessorschaltung veranlassen, eine Belohnungsfunktion zu erzeugen, die den ersten Evaluierungsparameter mit einer ersten Gewichtung und einen zweiten Evaluierungsparameter mit einer zweiten Gewichtung beinhaltet, wobei die erste Gewichtung größer als die zweite Gewichtung ist, und in Reaktion auf das Ermitteln, dass der erste Evaluierungsparameter und/oder der zweite Evaluierungsparameter die Schwelle nicht erfüllt, die erste Konfiguration und/oder die zweite Konfiguration anzupassen, um den ersten Evaluierungsparameter zu erhöhen und/oder den zweiten Evaluierungsparameter zu verringern.
    • Beispiel 187 beinhaltet ein Verfahren zum Erzeugen eines Rechenknotens, umfassend Erzeugen einer ersten Konfiguration eines oder mehrerer Maschinenlernmodelle basierend auf einer Arbeitslast, wobei die erste Konfiguration in einer ersten Konfigurationsdatenbank gespeichert ist, wobei die erste Konfigurationsdatenbank eine Vielzahl von Maschinenlernmodellen beinhaltet, wobei die Vielzahl von Maschinenlernmodellen das eine oder die mehreren Maschinenlernmodelle beinhaltet, Erzeugen einer zweiten Hardwarekonfiguration, wobei die zweite Konfiguration in einer zweiten Konfigurationsdatenbank gespeichert ist, wobei die zweite Konfigurationsdatenbank einen oder mehrere Teile einer Vielzahl von Hardware beinhaltet, wobei die Vielzahl von Hardware die Hardware beinhaltet, Ermitteln eines Evaluierungsparameters basierend auf einer Ausführung der Arbeitslast, wobei die Ausführung der Arbeitslast auf der ersten Konfiguration und der zweiten Konfiguration basiert, und in Reaktion darauf, dass der Evaluierungsparameter eine Schwelle erfüllt, Ausführen des einen oder der mehreren Maschinenlernmodelle in der ersten Konfiguration auf der Hardware in der zweiten Konfiguration, wobei das eine oder die mehreren Maschinenlernmodelle und die Hardware die Arbeitslast ausführen sollen.
    • Beispiel 188 beinhaltet das Verfahren nach Beispiel 187, wobei die erste Konfiguration eine Anzahl von Modellschichten und/oder Gewichtungen für die Modellschichten und/oder einen Typ von Maschinenlerntraining und/oder einen oder mehrere Hyperparameter, die mit dem einen oder den mehreren Maschinenlernmodellen assoziiert sind, beinhaltet.
    • Beispiel 189 beinhaltet das Verfahren nach Beispiel 187, wobei der eine oder die mehreren Teile einen ersten Block und/oder einen zweiten Block und/oder einen dritten Block beinhalten, und ferner beinhaltend Identifizieren des ersten Blocks der Hardware zum Ausführen einer Matrix-Matrix-Arbeitslast, Identifizieren des zweiten Blocks der Hardware zum Ausführen einer Vektor-Vektor-Arbeitslast, Identifizieren des dritten Blocks der Hardware zum Ausführen einer Matrix-Vektor-Arbeitslast, und Identifizieren von Registerdateien für jeweilige des ersten Blocks, des zweiten Blocks und des dritten Blocks, wobei die Registerdateien Zustände für die jeweiligen des ersten Blocks, des zweiten Blocks und des dritten Blocks speichern sollen, wobei die zweite Konfiguration auf einer Topologie basiert, die den ersten Block und/oder den zweiten Block und/oder den dritten Block beinhaltet.
    • Beispiel 190 beinhaltet das Verfahren nach Beispiel 187, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten, und ferner beinhaltend, in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, Identifizieren eines zweiten Maschinenlernmodells in der ersten Konfigurationsdatenbank, Erzeugen einer dritten Konfiguration des zweiten Maschinenlernmodells, Ermitteln des Evaluierungsparameters basierend auf einer Ausführung der Arbeitslast basierend auf der dritten Konfiguration und Bereitstellen des zweiten Maschinenlernmodells zum Ausführen der Arbeitslast basierend auf der dritten Konfiguration.
    • Beispiel 191 beinhaltet das Verfahren nach Beispiel 187, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten und ferner beinhaltend, in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, Ermitteln, dass eine oder mehrere erste Schichten des ersten Maschinenlernmodells einen ersten Teil der Arbeitslast ausführen sollen, Identifizieren eines zweiten Maschinenlernmodells in der ersten Konfigurationsdatenbank, Ermitteln einer oder mehrerer zweiter Schichten des zweiten Maschinenlernmodells zum Ausführen eines zweiten Teils der Arbeitslast und Ermitteln einer dritten Konfiguration basierend auf einer Topologie der einen oder der mehreren ersten Schichten und der einen oder der mehreren zweiten Schichten, wobei die Topologie auf einer Ausgabe der einen oder den mehreren ersten Schichten als Eingabe in die eine oder die mehreren zweiten Schichten basiert.
    • Beispiel 192 beinhaltet das Verfahren nach Beispiel 187, wobei das eine oder die mehreren Maschinenlernmodelle ein erstes Maschinenlernmodell beinhalten, und ferner beinhaltend Identifizieren des ersten Maschinenlernmodells in der ersten Konfigurationsdatenbank, Identifizieren eines zweiten Maschinenlernmodells basierend auf einer Abfrage einer Ontologiedatenbank mit einer Kennung des ersten Maschinenlernmodells als Eingabe, wobei die Ontologiedatenbank eine Assoziierung des ersten Maschinenlernmodells und des zweiten Maschinenlernmodells beinhaltet, und in Reaktion darauf, dass der Evaluationsparameter die Schwelle erfüllt, Aktualisieren der Ontologiedatenbank basierend auf der ersten Konfiguration.
    • Beispiel 193 beinhaltet das Verfahren von Beispiel 187, wobei die Hardware eine erste Hardware ist, und ferner beinhaltend, in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, Identifizieren zweiter Hardware in der zweiten Konfigurationsdatenbank, Erzeugen einer dritten Konfiguration der zweiten Hardware, Ermitteln des Evaluierungsparameters basierend auf einer Ausführung der Arbeitslast durch die zweite Hardware in der dritten Konfiguration und Bereitstellen der zweiten Hardware mit der dritten Konfiguration zum Ausführen des einen oder der mehreren Maschinenlernmodelle zum Ausführen der Arbeitslast.
    • Beispiel 194 beinhaltet das Verfahren nach Beispiel 187, wobei die Hardware eine erste Hardware ist und ferner beinhaltend, in Reaktion darauf, dass der Evaluierungsparameter die Schwelle nicht erfüllt, Ermitteln eines oder mehrerer erster Teile der ersten Hardware zum Ausführen eines ersten Teils der Arbeitslast, Identifizieren einer zweiten Hardware in der ersten Konfigurationsdatenbank, Ermitteln eines oder mehrerer zweiter Teile der zweiten Hardware zum Ausführen eines zweiten Teils der Arbeitslast und Ermitteln einer dritten Konfiguration basierend auf einer Topologie des einen oder der mehreren ersten Teile und des einen oder der mehreren zweiten Teile, wobei die Topologie auf einer Ausgabe des einen oder der mehreren ersten Teile als Eingabe in den einen oder die mehreren zweiten Teile basiert.
    • Beispiel 195 beinhaltet das Verfahren nach Beispiel 194, wobei die erste Hardware und die zweite Hardware eine Zentralprozessoreinheit, eine Grafikverarbeitungseinheit, ein Digitalsignalprozessor, ein Künstliche-Intelligenz-Prozessor, ein Neuronalnetzprozessor oder ein frei programmierbares Gate-Array sind.
    • Beispiel 196 beinhaltet das Verfahren nach Beispiel 187, wobei der Evaluierungsparameter ein erster Evaluierungsparameter ist, und ferner beinhaltend Ausgeben einer Belohnungsfunktion, die den ersten Evaluierungsparameter mit einer ersten Gewichtung und einen zweiten Evaluierungsparameter mit einer zweiten Gewichtung beinhaltet, wobei die erste Gewichtung größer als die zweite Gewichtung ist, und in Reaktion auf Ermitteln, dass der erste Evaluierungsparameter und/oder der zweite Evaluierungsparameter die Schwelle nicht erfüllt, Anpassen der ersten Konfiguration und/oder der zweiten Konfiguration, um den ersten Evaluierungsparameter zu erhöhen und/oder den zweiten Evaluierungsparameter zu verringern.
    • Beispiel 197 beinhaltet das Verfahren nach Beispiel 187, wobei der Evaluierungsparameter eine Genauigkeit und/oder Kosten und/oder ein Energieverbrauch und/oder eine Latenz und/oder eine Performanz und/oder ein Durchsatz ist, die mit dem einen oder den mehreren Maschinenlernmodellen und/oder der Hardware assoziiert sind.
    • Die folgenden Ansprüche werden hiermit durch diese Bezugnahme in diese ausführliche Beschreibung aufgenommen. Obwohl gewisse beispielhafte Systeme, Verfahren, Einrichtungen und Herstellungsartikel hierin offenbart wurden, ist der Schutzumfang dieses Patents nicht darauf beschränkt. Vielmehr deckt dieses Patent alle Systeme, Verfahren, Einrichtungen und Herstellungsartikel ab, die angemessen in den Schutzumfang der Ansprüche dieses Patents fallen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 63222938 [0001]
    • US 17645742 [0001]
    • US 17559730 [0001]
    • US 17560025 [0001]
    • US 17558284 [0001]

    Claims (10)

    1. Einrichtung zum Verwalten von Verarbeitungseinheiten, umfassend: eine Schnittstellenschaltung zum Erfassen einer Anfrage zum Erhalten einer Ressourcenanfrage von einer Arbeitslast; eine Prozessorschaltung, die eines oder mehrere der Folgenden beinhaltet: eine Zentralverarbeitungseinheit und/oder eine Grafikverarbeitungseinheit und/oder einen Digitalsignalprozessor, wobei die Zentralverarbeitungseinheit und/oder die Grafikverarbeitungseinheit und/oder der Digitalsignalprozessor eine Steuerschaltung, eine Arithmetik-und- Logik-Schaltung und ein oder mehrere Register aufweisen, wobei die Prozessorschaltung Anweisungen ausführen soll zum: Ermitteln, ob Ressourcen für die Arbeitslast auf einem von einer Infrastrukturverarbeitungseinheit verwalteten System verfügbar sind; Verhandeln mit der Infrastrukturverarbeitungseinheit, um zu ermitteln, ob eine in Ausführung befindliche Arbeitslast migriert werden kann; in Reaktion auf Ermitteln, dass eine in Ausführung befindliche Arbeitslast migriert werden kann, erfolgendes Veranlassen, dass die in Ausführung befindliche Arbeitslast migriert wird; und Bewirken, dass die Arbeitslast auf der Ressource ausgeführt wird.
    2. Einrichtung nach Anspruch 1, wobei die Arbeitslast eine virtuelle Maschine ist; und/oder wobei die Prozessorschaltung die Anweisungen ausführen soll, um die Ressourcenanfrage zu validieren.
    3. Einrichtung nach einem der vorhergehenden Ansprüche, wobei die Ressourcenanfrage eine Dienstgütevereinbarung (Service-Level-Agreement) identifiziert, wobei wahlweise die Prozessorschaltung die Anweisungen ausführen soll, um zu ermitteln, ob die in der Ressourcenanfrage identifizierte Dienstgütevereinbarung von beliebigen verfügbaren Ressourcen erfüllt werden kann; wobei ferner wahlweise die Prozessorschaltung in Reaktion auf Ermitteln, dass die Dienstgütevereinbarung nicht erfüllt werden kann, einen Benutzer auffordern soll, eine gültige Anfrage bereitzustellen.
    4. Einrichtung nach einem der vorhergehenden Ansprüche, wobei die Prozessorschaltung die Anweisungen ausführen soll, um eine Dienstklasse für die in Ausführung befindliche Arbeitslast zu aktualisieren; und/oder wobei die Prozessorschaltung die Anweisungen ausführen soll, um eine Assoziierung der Arbeitslast und der Ressourcen in einer Blockchain zu speichern.
    5. Computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass ein Prozessor zumindest: eine Anfrage zum Erhalten einer Ressourcenanfrage von einer Arbeitslast erkennt; ermittelt, ob Ressourcen für die Arbeitslast auf einem von einer Infrastrukturverarbeitungseinheit verwalteten System verfügbar sind; mit der Infrastrukturverarbeitungseinheit verhandelt, um zu ermitteln, ob eine in Ausführung befindliche Arbeitslast migriert werden kann; in Reaktion auf Ermitteln, dass eine in Ausführung befindliche Arbeitslast migriert werden kann, veranlasst, dass die in Ausführung befindliche Arbeitslast migriert wird; und bewirkt, dass die Arbeitslast auf der Ressource ausgeführt wird.
    6. Computerlesbares Medium nach Anspruch 5, wobei die Arbeitslast eine virtuelle Maschine ist; und/oder wobei die Anweisungen bei Ausführung bewirken, dass der Prozessor die Ressourcenanfrage validiert; und/oder wobei die Anweisungen bei Ausführung bewirken, dass der Prozessor eine Dienstklasse für die in Ausführung befindliche Arbeitslast aktualisiert; und/oder wobei die Anweisungen bei Ausführung bewirken, dass der Prozessor eine Assoziierung der Arbeitslast und der Ressourcen in einer Blockchain speichert.
    7. Computerlesbares Medium nach einem der Ansprüche 5 oder 6, wobei die Ressourcenanfrage eine Dienstgütevereinbarung identifiziert; wobei wahlweise die Anweisungen bei Ausführung den Prozessor veranlassen, die Anweisungen auszuführen, um zu ermitteln, ob die in der Ressourcenanfrage identifizierte Dienstgütevereinbarung von beliebigen verfügbaren Ressourcen erfüllt werden kann; wobei ferner wahlweise die Anweisungen bei Ausführung den Prozessor veranlassen, in Reaktion auf Ermitteln, dass die Dienstgütevereinbarung nicht erfüllt werden kann, einen Benutzer aufzufordern, eine gültige Anfrage bereitzustellen.
    8. Verfahren, umfassend: Erfassen einer Anfrage zum Erhalten einer Ressourcenanfrage von einer Arbeitslast, Ermitteln, ob Ressourcen für die Arbeitslast auf einem von einer Infrastrukturverarbeitungseinheit verwalteten System verfügbar sind; Verhandeln mit der Infrastrukturverarbeitungseinheit, um zu ermitteln, ob eine in Ausführung befindliche Arbeitslast migriert werden kann; in Reaktion auf Ermitteln, dass eine in Ausführung befindliche Arbeitslast migriert werden kann, erfolgendes Veranlassen, dass die in Ausführung befindliche Arbeitslast migriert wird; und Bewirken, dass die Arbeitslast auf der Ressource ausgeführt wird.
    9. Verfahren nach Anspruch 8, wobei die Arbeitslast eine virtuelle Maschine ist; und/oder wobei das Verfahren ferner Validieren der Ressourcenanfrage umfasst; und/oder wobei das Verfahren ferner Aktualisieren einer Dienstklasse für die in Ausführung befindliche Arbeitslast umfasst; und/oder wobei das Verfahren ferner Speichern einer Asssoziierung der Arbeitslast und der Ressourcen in einer Blockchain umfasst.
    10. Verfahren nach einem der Ansprüche 8 oder 9, wobei die Ressourcenanfrage eine Dienstgütevereinbarung identifiziert; wobei das Verfahren wahlweise ferner Ermitteln umfasst, ob die in der Ressourcenanfrage identifizierte Dienstgütevereinbarung von beliebigen verfügbaren Ressourcen erfüllt werden kann; wobei das Verfahren wahlweise ferner Auffordern eines Benutzers zum Bereitstellen einer gültigen Anfrage in Reaktion auf Ermitteln umfasst, dass die Dienstgütevereinbarung nicht erfüllt werden kann.
    DE102022107178.2A 2021-06-23 2022-03-25 Einrichtungen, herstellungsartikel und verfahren zum verwalten von verarbeitungseinheiten Pending DE102022107178A1 (de)

    Applications Claiming Priority (4)

    Application Number Priority Date Filing Date Title
    IN202141028125 2021-06-23
    IN202141028125 2021-06-23
    PCT/CN2021/141150 WO2022267408A1 (en) 2021-06-23 2021-12-24 Apparatus, articles of manufacture, and methods for managing processing units
    IBPCT/CN2021/141150 2021-12-24

    Publications (1)

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

    Family

    ID=84388792

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102022107178.2A Pending DE102022107178A1 (de) 2021-06-23 2022-03-25 Einrichtungen, herstellungsartikel und verfahren zum verwalten von verarbeitungseinheiten

    Country Status (1)

    Country Link
    DE (1) DE102022107178A1 (de)

    Similar Documents

    Publication Publication Date Title
    Wang et al. Rafiki: Machine learning as an analytics service system
    US20220413943A1 (en) Apparatus, articles of manufacture, and methods for managing processing units
    DE102018006791A1 (de) Prozessoren, Verfahren und Systeme mit einem konfigurierbaren räumlichen Beschleuniger mit einem Sequenzer-Datenflussoperator
    DE102018006889A1 (de) Prozessoren und Verfahren für bevorzugte Auslegung in einem räumlichen Array
    WO2020072819A1 (en) Parcelled quantum resources
    DE102018005216A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen
    DE102018126650A1 (de) Einrichtung, verfahren und systeme für datenspeicherkonsistenz in einem konfigurierbaren räumlichen beschleuniger
    DE102018005169A1 (de) Prozessoren und verfahren mit konfigurierbaren netzwerkbasierten datenflussoperatorschaltungen
    DE102018003221A1 (de) Unterstützung gelernter Sprungprädiktoren
    DE102018005181A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Leistungs-, Richtigkeits- und Energiereduktionsmerkmalen
    DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
    CN109791518A (zh) 从多租户环境中的fpga提取调试信息
    CN110088734A (zh) 逻辑储存库服务
    US11188348B2 (en) Hybrid computing device selection analysis
    DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
    DE102020108374A1 (de) Verfahren und vorrichtung zur laufzeitmehrfachplanung von software, die in einem heterogenen system ausgeführt wird
    WO2022267408A1 (en) Apparatus, articles of manufacture, and methods for managing processing units
    DE102022129946A1 (de) Verfahren und vorrichtungen zum bestimmen eines verfeinerten kontexts für softwarefehlererkennung und - korrektur
    DE102022108108A1 (de) Zwischenspeicherung von kompilierten shader-programmen in einer cloud-computing-umgebung
    US20220114495A1 (en) Apparatus, articles of manufacture, and methods for composable machine learning compute nodes
    DE102022126248A1 (de) Verfahren und Einrichtungen zum Trainieren von Modellen zur Programmsynthese
    DE112022003854T5 (de) Anwendungsmanagement-Plattform für hyperkonvergente Cloud-Infrastrukturen
    DE102023129956A1 (de) Ressourcenvorhersage für arbeitslasten
    Singha et al. LEAPER: Fast and Accurate FPGA-based System Performance Prediction via Transfer Learning
    DE102022130788A1 (de) Verfahren, einrichtungen und herstellungsartikel zur erzeugung von befehlslisten zur auslagerung an beschleunigerschaltungsanordnung