-
GEBIET DER OFFENBARUNG
-
Die vorliegende Offenbarung betrifft allgemein Maschinenlernen und insbesondere Verfahren und Vorrichtungen zum Zuweisen einer Arbeitslast an einen Beschleuniger unter Verwendung von Maschinenlernen.
-
HINTERGRUND
-
Maschinenlernmodelle, wie etwa Neuronalnetzwerke, sind nützliche Werkzeuge, die ihren Wert bei der Lösung von komplexen Problemen bezüglich Mustererkennung, Verarbeitung von natürlicher Sprache, automatischer Spracherkennung usw. gezeigt haben. Neuronalnetzwerke arbeiten unter Verwendung künstlicher, in Schichten angeordneter Neuronen, die Daten von einer Eingabeschicht zu einer Ausgabeschicht verarbeiten und während der Verarbeitung der Daten Gewichtungswerte auf die Daten anwenden. Derartige Gewichtungswerte werden während eines Trainingsprozesses bestimmt. Das Trainieren eines Maschinenlernmodells an einem großen Datensatz ist eine herausfordernde und kostenintensive Aufgabe, die von Anfang bis Ende wenige Stunden bis zu Wochen dauern kann.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Blockdiagramm eines beispielhaften Rechensystems, das gemäß Lehren dieser Offenbarung konstruiert ist und einen Arbeitslastorchestrator und einen Beschleunigerfarm-Deep-Learning-Beschleuniger zum Trainieren eines Neuronalnetzwerks beinhaltet.
-
2 ist ein Blockdiagramm, das eine beispielhafte Implementierung des Arbeitslastorchestrators von 1 repräsentiert.
-
3 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen repräsentiert, die zum Implementieren des beispielhaften Arbeitslastorchestrators der 1 und/oder 2 ausgeführt werden können, um ein Neuronalnetzwerk zum Auswählen eines Arbeitslastbeschleunigers für eine eingegebene Arbeitslast zu trainieren.
-
4 ist ein Flussdiagramm, das alternative beispielhafte maschinenlesbare Anweisungen repräsentiert, die zum Implementieren des beispielhaften Arbeitslastorchestrators der 1 und/oder 2 ausgeführt werden können, um ein Neuronalnetzwerk zum Auswählen eines Arbeitslastbeschleunigers für eine eingegebene Arbeitslast zu trainieren.
-
5 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen repräsentiert, die zum Implementieren des beispielhaften Arbeitslastorchestrators der 1 und/oder 2 ausgeführt werden können, um das in Verbindung mit 3 und/oder 4 trainierte Neuronalnetzwerk zum Auswählen eines Arbeitslastbeschleunigers für eine eingegebene Arbeitslast zu verwenden.
-
6 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die zum Ausführen der Anweisungen der 3, 4 und/oder 5 strukturiert ist, um den beispielhaften Arbeitslastorchestrator von 1 und/oder 2 zu implementieren.
-
Die Figuren sind nicht maßstabsgetreu. Allgemein werden die gleichen Bezugsziffern durchweg durch die Zeichnung(en) und die begleitende geschriebene Beschreibung verwendet, um sich auf dieselben oder ähnliche Teile zu beziehen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Maschinenlernarbeitslasten (z. B. Trainieren eines Maschinenlernmodells an einem großen Datensatz) sind herausfordernde und kostenintensive Aufgaben, die von Anfang bis Ende wenige Stunden bis zu Wochen dauern können. Gewisse Maschinenlernarbeitslasten sind für spezifische Arten von Hardware besser geeignet. Eine derartige Hardware wird als ein Maschinenlernbeschleuniger bezeichnet und kann zum Beispiel eine Zentralverarbeitungseinheit (CPU), ein feldprogrammierbares Gate-Array (FPGA), eine Grafikverarbeitungseinheit (GPU), eine Logikschaltung usw. und/oder Kombinationen davon beinhalten. Eine Arbeitslast kann aufgrund von Hardwareunterschieden zwischen den Beschleunigern im Vergleich zu einer Ausführung auf einem zweiten Maschinenlernbeschleuniger bei ihrer Ausführung auf einem ersten Maschinenlernbeschleuniger mehr Rechenzeit verwenden. Hierin offenbarte beispielhafte Ansätze beschleunigen Arbeitslastausführungszeiten durch das Nutzen von künstlicher Intelligenz (AI), um die Art(en) von Maschinenlernbeschleuniger(n), die zur Ausführung einer Arbeitslast zu verwenden ist bzw. sind, basierend auf einem oder mehreren Attributen der Arbeitslast dynamisch zu bestimmen.
-
Hierin offenbarte beispielhafte Ansätze verbessern die Arbeitslastausführungszeit durch das Nutzen von AI, um die Art(en) von Maschinenlernbeschleuniger(n), die für eine spezielle Arbeitslast zu verwenden sind, basierend auf einem oder mehreren Attributen der Arbeitslast und/oder den Eingangsdaten, die mit der Arbeitslast eingebunden sind, dynamisch zu bestimmen. CPUs eignen sich beispielsweise am besten zum Beschleunigen von speicherintensiven Daten (vollständigen Bildern), während FPGAs zum effektiven Beschleunigen von Arbeitslasten verwendet werden können, für die die Verarbeitung parallelisiert werden kann (z. B. Bildverarbeitungs-/Kantendetektionsalgorithmen, die an einem einzelnen Pixel in einem Bild arbeiten können). Manche Arbeitslasten werden am besten durch Plattformen beschleunigt, die die inhärenten Vorteile von FPGAs/CPUs in einem integrierten Package oder einer integrierten Platine kombinieren, was ermöglicht, dass eine latenzniedrige Lookaside- oder Inline-Beschleunigung implementiert wird (z. B. Bildverarbeitungsalgorithmen, die latenzniedrige Speicherzugriffe zwischen CPU und FPGA erfordern).
-
1 ist ein Blockdiagramm eines beispielhaften Rechensystems, das eine Arbeitslastbereitstellungsvorrichtung 105, einen Arbeitslastorchestrator 110 und eine Beschleunigerfarm 120 beinhaltet. In dem veranschaulichten Beispiel von 1 stellt die Arbeitslastbereitstellungsvorrichtung 105 dem Arbeitslastorchestrator 110 eine Arbeitslast bereit. Der beispielhafte Arbeitslastorchestrator beinhaltet einen Beschleunigerauswahlprozessor 114, der einen Neuronalnetzwerkprozessor 118 zum Auswählen eines Beschleunigers der Beschleunigerfarm 120, der zur Ausführung der Arbeitslast auszuwählen ist, basierend auf einem oder mehreren Attributen der Arbeitslast nutzt. Infolgedessen orchestriert der Arbeitslastorchestrator 110 die Ausführung der Arbeitslast an einem oder mehreren der Beschleuniger 122, 124, 126 in der beispielhaften Beschleunigerfarm 120.
-
Die beispielhafte Arbeitslastbereitstellungsvorrichtung 105 des veranschaulichten Beispiels von 1 stellt dem beispielhaften Arbeitslastorchestrator 110 eine Arbeitslast zur Ausführung bereit. In hierin offenbarten Beispielen ist die Arbeitslast eine Maschinenlernarbeitslast und eine Ausführung der Arbeitslast führt zu Training und/oder der Verwendung eines Maschinenlernmodells. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Rechenarbeitslast verwendet werden. Bei hierin offenbarten Beispielen stellt die Arbeitslastbereitstellungsvorrichtung 105 die Arbeitslast unter Verwendung von elektronischen Kommunikationen, wie etwa zum Beispiel eines Computernetzwerks (z. B. des Internets), bereit. Zusätzlich oder alternativ dazu kann jedoch ein beliebiger anderer Ansatz zum Bereitstellen der beispielhaften Arbeitslast für den Arbeitslastorchestrator 110 verwendet werden.
-
Der beispielhafte Arbeitslastorchestrator 110 des veranschaulichten Beispiels von 1 wird durch eine Logikschaltung implementiert, wie etwa zum Beispiel einen Hardwareprozessor. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Schaltkreis verwendet werden, wie etwa zum Beispiel eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, ein oder mehrere programmierbare Prozessoren, eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASIC(s)), eine oder mehrere programmierbare Logikvorrichtungen (PLD(s)), eine oder mehrere feldprogrammierbare Logikvorrichtungen (FPLD(s)), ein oder mehrere Digitalsignalprozessoren (DSP(s)) usw. Der beispielhafte Arbeitslastorchestrator 110 des veranschaulichten Beispiels von 1 empfängt eine Arbeitslast von der Arbeitslastbereitstellungsvorrichtung 105 und wählt unter Verwendung von Maschinenlernen einen oder mehrere Beschleuniger der Beschleunigerfarm 120 aus, auf dem bzw. denen die Arbeitslast auszuführen ist. Ein beispielhafter Ansatz zum Implementieren des beispielhaften Arbeitslastorchestrators 110 wird in Verbindung mit 2 ausführlich beschrieben.
-
Der beispielhafte Beschleunigerauswahlprozessor 114 des veranschaulichten Beispiels von 1 wird durch eine Logikschaltung implementiert, wie etwa zum Beispiel einen Hardwareprozessor. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Schaltkreis verwendet werden, wie etwa zum Beispiel eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, ein oder mehrere programmierbare Prozessoren, eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASIC(s)), eine oder mehrere programmierbare Logikvorrichtungen (PLD(s)), eine oder mehrere feldprogrammierbare Logikvorrichtungen (FPLD(s)), ein oder mehrere Digitalsignalprozessoren (DSP(s)) usw. Der beispielhafte Beschleunigerauswahlprozessor 114 evaluiert ein oder mehrere Attribute einer Arbeitslast, um einen geeigneten Beschleuniger auszuwählen, der zum Ausführen der Arbeitslast zu verwenden ist. Bei manchen Beispielen evaluiert der Beschleunigerauswahlprozessor 114, ob die Arbeitslast parallelisiert werden kann und/oder ob die Arbeitslast ressourcenintensiv ist, um einen geeigneten Beschleuniger zu bestimmen. Zu diesem Zeitpunkt sendet der Beschleunigerauswahlprozessor 114 die Arbeitslast nicht notwendigerweise zu dem ausgewählten Beschleuniger, sondern speichert die Attribute der Arbeitslast stattdessen in Verbindung mit dem ausgewählten Beschleuniger, sodass die Assoziationen von Arbeitslastattributen und ausgewähltem Beschleuniger als Trainingsdaten für ein Neuronalnetzwerk verwendet werden können, das durch den Neuronalnetzwerkprozessor 118 implementiert wird. Nach dem Empfangen einer anschließenden Arbeitslast verwendet der beispielhafte Beschleunigerauswahlprozessor 114 die Attribute der anschließenden Arbeitslast als eine Eingabe in das Neuronalnetzwerk (z. B. das Neuronalnetzwerk, das durch den Neuronalnetzwerkprozessor 118 implementiert wird), um zu identifizieren, welcher Beschleuniger zur Ausführung der Arbeitslast verwendet werden sollte.
-
Bei manchen anderen Beispielen bewirkt der Beschleunigerauswahlprozessor 114 während der Erzeugung der Trainingsdaten, die mit Arbeitslastattributen des einen oder der mehreren ausgewählten Beschleuniger assoziiert sind, dass die Arbeitslast (und/oder ein Teil davon) an jedem der potenziellen Beschleuniger ausgeführt wird, und wählt einen geeigneten Beschleuniger basierend auf einer oder mehreren Leistungsfähigkeitsmetriken, die mit der Ausführung der Arbeitslast assoziiert sind, aus. Der ausgewählte Beschleuniger und die Attribute der Arbeitslast werden als Trainingsdaten für ein Neuronalnetzwerk verwendet, das durch den beispielhaften Neuronalnetzwerkprozessor 118 implementiert wird. Auch hier verwendet der beispielhafte Beschleunigerauswahlprozessor 114 nach dem Empfangen einer anschließenden Arbeitslast die Attribute der anschließenden Arbeitslast als eine Eingabe in das Neuronalnetzwerk (z. B. das Neuronalnetzwerk, das durch den Neuronalnetzwerkprozessor 118 implementiert wird), um zu identifizieren, welcher Beschleuniger zur Ausführung der Arbeitslast verwendet werden sollte.
-
Der beispielhafte Neuronalnetzwerkprozessor 118 des veranschaulichten Beispiels von 1 wird durch eine Logikschaltung implementiert, wie etwa zum Beispiel einen Hardwareprozessor. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Schaltkreis verwendet werden, wie etwa zum Beispiel eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, ein oder mehrere programmierbare Prozessoren, ASIC(s), PLD(s), FPLD(s), eine oder mehrere programmierbare Steuerungen, GPU(s), DSP(s) usw. Der beispielhafte Neuronalnetzwerkprozessor 118 implementiert ein Maschinenlernmodell (z. B. ein Neuronalnetzwerk) gemäß den durch einen Trainingsprozess erzeugten Modellinformationen. Bei hierin offenbarten Beispielen ist das Maschinenlernmodell ein tiefes Neuronalnetzwerk (DNN). Zusätzlich oder alternativ dazu kann jedoch eine oder mehrere beliebige andere vergangene, gegenwärtige und/oder zukünftige Maschinenlerntopologien und/oder -architekturen verwendet werden, wie etwa zum Beispiel ein Faltungs-Neuronalnetzwerk (CNN), ein vorwärtsgekoppeltes Neuronalnetzwerk.
-
Die beispielhafte Beschleunigerfarm 120 des veranschaulichten Beispiels von 1 beinhaltet zwei oder mehr Maschinenlernbeschleuniger 122, 124, 126, die zum Ausführen einer Arbeitslast verwendet werden. In dem veranschaulichten Beispiel von 1 beinhaltet die beispielhafte Beschleunigerfarm 120 drei Beschleuniger 122, 124, 126. Zusätzlich oder alternativ dazu kann jedoch eine beliebige Anzahl von Beschleunigern verwendet werden. Die unterschiedlichen Beschleuniger repräsentieren unterschiedliche Arten von physischer Hardware, die zum Ausführen einer Arbeitslast verwendet wird. In dem veranschaulichten Beispiel von 1 repräsentiert der erste Beschleuniger 122 einen FPGA-basierten Beschleuniger. Ein FPGA-basierter Beschleuniger kann zum Beispiel zum Beschleunigen einer Arbeitslast verwendet werden, für die die Verarbeitung parallelisiert werden kann (z. B. Bildverarbeitungs-/Kantendetektionsalgorithmen, die an einem einzelnen Pixel in einem Bild arbeiten können). In dem veranschaulichten Beispiel von 1 repräsentiert der zweite Beschleuniger 124 eine CPU. CPU-basierte Beschleuniger sind im Vergleich zu einem FPGA-basierten Beschleuniger zum Durchführen von ressourcenintensiven Arbeitslasten besser geeignet. Der dritte beispielhafte Beschleuniger 126 dieses Beispiels repräsentiert einen kombinierten CPU-und-FPGA-basierten Beschleuniger. Bei manchen Beispielen können CPU-basierte Beschleuniger und FPGAbasierte Beschleuniger in Kombination verwendet werden, wodurch ermöglicht wird, dass eine latenzniedrige Lookaside- und/oder Inline-Beschleunigung implementiert wird, was Bildverarbeitungsalgorithmen von Nutzen ist, die latenzniedrige Speicherzugriffe zwischen einer CPU und einem FPGA erfordern. Darüber hinaus kann zusätzlich oder alternativ dazu eine beliebige andere vergangene, gegenwärtige und/oder zukünftige Art von Beschleuniger verwendet werden, wie etwa zum Beispiel eine Grafikverarbeitungseinheit (GPU-basierte Architektur), ein Digitalsignalprozessor (DSP-basierte Architektur) usw.
-
2 ist ein Blockdiagramm, das eine beispielhafte Implementierung des Arbeitslastorchestrators 110 von 1 repräsentiert. Der Arbeitslastorchestrator 110 des Beispiels von 2 beinhaltet eine Arbeitslastschnittstelle 210, den Beschleunigerauswahlprozessor 114, eine Arbeitslastattributbestimmungsvorrichtung 230, eine Beschleunigerschnittstelle 240, einen Trainingsdatenspeicher 245, den Neuronalnetzwerkprozessor 118, einen Neuronalnetzwerktrainer 255 und einen Neuronalnetzwerkparameterspeicher 260.
-
Die beispielhafte Arbeitslastschnittstelle 210 des veranschaulichten Beispiels von 2 wird durch eine Logikschaltung implementiert, wie etwa zum Beispiel einen Hardwareprozessor. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Schaltkreis verwendet werden, wie etwa zum Beispiel eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, ein oder mehrere programmierbare Prozessoren, eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASIC(s)), eine oder mehrere programmierbare Logikvorrichtungen (PLD(s)), eine oder mehrere feldprogrammierbare Logikvorrichtungen (FPLD(s)), ein oder mehrere Digitalsignalprozessoren (DSP(s)) usw. Die beispielhafte Arbeitslastschnittstelle 210 des veranschaulichten Beispiels von 2 implementiert eine Webschnittstelle, um eine Arbeitslast von der Arbeitslastbereitstellungsvorrichtung 105 zu empfangen. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Schnittstelle verwendet werden. Bei manchen Beispielen ermöglicht die Arbeitslastschnittstelle 210 der Arbeitslastbereitstellungsvorrichtung 105, dem Arbeitslastorchestrator 110 ein oder mehrere Attribute der Arbeitslast zu identifizieren. Die beispielhafte Arbeitslastschnittstelle 210 leitet die Arbeitslast zu dem Beschleunigerauswahlprozessor 114 zur Verarbeitung weiter und gibt nach Abschluss der Verarbeitung ein Ergebnis der Ausführung der Arbeitslast zu der Arbeitslastbereitstellungsvorrichtung 105 zurück.
-
Wie oben in Verbindung mit 1 angemerkt, wird der beispielhafte Beschleunigerauswahlprozessor 114 des veranschaulichten Beispiels von 2 durch eine Logikschaltung implementiert, wie etwa zum Beispiel einen Hardwareprozessor. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Schaltkreis verwendet werden, wie etwa zum Beispiel eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, ein oder mehrere programmierbare Prozessoren, ASIC(s), PLD(s), FPLD(s), DSP(s) usw. Der beispielhafte Beschleunigerauswahlprozessor 114 evaluiert ein oder mehrere Attribute von Arbeitslasten, um einen geeigneten Beschleuniger auszuwählen, der zum Ausführen der Arbeitslast zu verwenden ist. Bei manchen Beispielen evaluiert der Beschleunigerauswahlprozessor 114, ob die Arbeitslast parallelisiert werden kann und/oder ob die Arbeitslast ressourcenintensiv ist, um einen geeigneten Beschleuniger zu bestimmen. Bei manchen anderen Beispielen bewirkt der Beschleunigerauswahlprozessor 114, dass die Arbeitslast (und/oder ein Teil davon) an jedem der potenziellen Beschleuniger ausgeführt wird, und wählt einen geeigneten Beschleuniger basierend auf einer oder mehreren Leistungsfähigkeitsmetriken, die mit der Ausführung der Arbeitslast assoziiert sind, aus. Die Auswahl des geeigneten Beschleunigers und die Attribute der Arbeitslast werden als Trainingsdaten für ein Neuronalnetzwerk verwendet, das durch den beispielhaften Neuronalnetzwerkprozessor 118 implementiert wird. Nach dem Empfangen einer anschließenden Arbeitslast verwendet der beispielhafte Beschleunigerauswahlprozessor 114 die Attribute der anschließenden Arbeitslast als eine Eingabe in das Neuronalnetzwerk, das durch den Neuronalnetzwerkprozessor 118 implementiert wird, um zu identifizieren, welcher Beschleuniger zur Ausführung der Arbeitslast verwendet werden sollte.
-
Die beispielhafte Arbeitslastattributbestimmungsvorrichtung 230 des veranschaulichten Beispiels von 2 wird durch eine Logikschaltung implementiert, wie etwa zum Beispiel einen Hardwareprozessor. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Schaltkreis verwendet werden, wie etwa zum Beispiel eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, ein oder mehrere programmierbare Prozessoren, ASIC(s), PLD(s), FPLD(s), DSP(s) usw. Die beispielhafte Arbeitslastattributbestimmungsvorrichtung 230 identifiziert Attribute und/oder andere Eigenschaften der Arbeitslasten, die an dem Arbeitslastorchestrator 110 empfangen werden. Das eine oder die mehreren Attribute können zum Beispiel beinhalten, ob die Arbeitslast parallelisiert werden kann, ob die Arbeitslast ressourcenintensiv ist, ob die Arbeitslast Bildverarbeitung vornimmt, ob die Arbeitslast Textverarbeitung vornimmt, und/oder beliebige andere Informationen über die Ausführung der Arbeitslast und/oder Daten, die in Verbindung mit der Arbeitslast zu verarbeiten sind, usw.
-
Die beispielhafte Beschleunigerschnittstelle 240 des veranschaulichten Beispiels von 2 wird durch eine Logikschaltung implementiert, wie etwa zum Beispiel einen Hardwareprozessor. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Schaltkreis verwendet werden, wie etwa zum Beispiel eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, ein oder mehrere programmierbare Prozessoren, ASIC(s), PLD(s), FPLD(s), DSP(s) usw. Die beispielhafte Beschleunigerschnittstelle 240 des veranschaulichten Beispiels von 2 ermöglicht dem Arbeitslastorchestrator 110, mit der Beschleunigerfarm 120 zu kommunizieren. Infolgedessen liefert die Beschleunigerschnittstelle 240 Arbeitslasten (und/oder Teile davon) zu der Beschleunigerfarm 120 mit einer Auswahl, welcher Beschleuniger 122, 124, 126 die Arbeitslast ausführen sollte. Bei manchen Beispielen können mehrere unterschiedliche Beschleunigerfarmen verwendet werden. Somit kann die beispielhafte Beschleunigerschnittstelle 240 bei manchen Beispielen eine Kommunikation mit mehreren (z. B. zwei oder mehr) unterschiedlichen Beschleunigerfarmen ermöglichen.
-
Der Trainingsdatenspeicher 245 des Beispiels von 2 wird durch einen beliebigen Speicher, eine beliebige Speicherungseinrichtung und/oder eine beliebige Speicherungsplatte zum Speichern von Daten implementiert, wie etwa zum Beispiel Flash-Speicher, magnetische Medien, optische Medien usw. Des Weiteren können sich die in dem beispielhaften Trainingsdatenspeicher 245 gespeicherten Daten in einem beliebigen Datenformat befinden, wie etwa zum Beispiel Binärdaten, kommaseparierte Daten, tabseparierte Daten, SQL(Structured Query Language)-Strukturen usw. Obwohl bei dem veranschaulichten Beispiel der beispielhafte Trainingsdatenspeicher 245 als eine einzelne Einrichtung veranschaulicht ist, können der beispielhafte Trainingsdatenspeicher 245 und/oder beliebige andere hierin beschriebene Datenspeicherungseinrichtungen durch eine beliebige Anzahl und/oder eine oder mehrere beliebige Arten von Speichern implementiert werden. In dem veranschaulichten Beispiel von 2 speichert der beispielhafte Trainingsdatenspeicher 245 Informationen, die zum Trainieren der Neuronalnetzwerkparameter verwendet werden. Diese Neuronalnetzwerkparameter können dann in dem beispielhaften Neuronalnetzwerkparameterspeicher 260 gespeichert werden. Derartige Informationen können zum Beispiel ein oder mehrere Attribute einer oder mehrerer Arbeitslasten und ihren entsprechenden ausgewählten Beschleuniger beinhalten.
-
Der beispielhafte Neuronalnetzwerkprozessor 118 des veranschaulichten Beispiels von 2 wird durch eine Logikschaltung implementiert, wie etwa zum Beispiel einen Hardwareprozessor. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Schaltkreis verwendet werden, wie etwa zum Beispiel eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, ein oder mehrere programmierbare Prozessoren, ASIC(s), PLD(s), FPLD(s), eine oder mehrere programmierbare Steuerungen, GPU(s), DSP(s) usw. Der beispielhafte Neuronalnetzwerkprozessor 118 implementiert ein Maschinenlernmodell (z. B. ein Neuronalnetzwerk) gemäß den im Neuronalnetzwerkparameterspeicher 260 gespeicherten Modellinformationen. Das beispielhafte Maschinenlernmodell des veranschaulichten Beispiels von 2 ist ein tiefes Neuronalnetzwerk (DNN). Zusätzlich oder alternativ dazu kann jedoch eine oder mehrere beliebige andere vergangene, gegenwärtige und/oder zukünftige Maschinenlerntopologien und/oder -architekturen verwendet werden, wie etwa zum Beispiel ein Faltungs-Neuronalnetzwerk (CNN), ein vorwärtsgekoppeltes Neuronalnetzwerk.
-
Der beispielhafte Neuronalnetzwerktrainer 255 des veranschaulichten Beispiels von 2 wird durch eine Logikschaltung implementiert, wie etwa zum Beispiel einen Hardwareprozessor. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Schaltkreis verwendet werden, wie etwa zum Beispiel eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, ein oder mehrere programmierbare Prozessoren, ASIC(s), PLD(s), FPLD(s), eine oder mehrere programmierbare Steuerungen, GPU(s), DSP(s) usw. Der beispielhafte Neuronalnetzwerktrainer 255 trainiert das im Neuronalnetzwerkparameterspeicher 260 gespeicherte Modell. Bei hierin offenbarten Beispielen wird das Training unter Verwendung von stochastischem Gradientenabstieg durchgeführt. Zusätzlich oder alternativ dazu kann jedoch ein beliebiger anderer Ansatz zum Trainieren eines Maschinenlernmodells verwendet werden.
-
Der beispielhafte Neuronalnetzwerkparameterspeicher 260 des veranschaulichten Beispiels von 2 wird durch einen beliebigen Speicher, eine beliebige Speicherungseinrichtung und/oder eine beliebige Speicherungsplatte zum Speichern von Daten implementiert, wie etwa zum Beispiel Flash-Speicher, magnetische Medien, optische Medien usw. Des Weiteren können sich die in dem beispielhaften Neuronalnetzwerkparameterspeicher 260 gespeicherten Daten in einem beliebigen Datenformat befinden, wie etwa zum Beispiel Binärdaten, kommaseparierte Daten, tabseparierte Daten, SQL(Structured Query Language)-Strukturen usw. Obwohl bei dem veranschaulichten Beispiel der Neuronalnetzwerkparameterspeicher 260 als eine einzelne Einrichtung veranschaulicht ist, können der beispielhafte Neuronalnetzwerkparameterspeicher 260 und/oder beliebige andere hierin beschriebene Datenspeicherungseinrichtungen durch eine beliebige Anzahl und/oder eine oder mehrere beliebige Arten von Speichern implementiert werden. In dem veranschaulichten Beispiel von 2 speichert der beispielhafte Neuronalnetzwerkparameterspeicher 260 Neuronalnetzwerkgewichtungsparameter, die durch den Neuronalnetzwerkprozessor 118 zum Auswählen eines Beschleunigers basierend auf Arbeitslastattributen verwendet werden.
-
Obwohl eine beispielhafte Art und Weise zum Implementieren des Arbeitslastorchestrators 110 von 1 in 2 veranschaulicht ist, können ein/e oder mehrere der in 2 veranschaulichten Elemente, Prozesse und/oder Einrichtungen kombiniert, geteilt, umgeordnet, weggelassen, eliminiert und/oder auf eine beliebige andere Weise implementiert werden. Ferner können die beispielhafte Arbeitslastschnittstelle 210, der beispielhafte Beschleunigerauswahlprozessor 114, die beispielhafte Arbeitslastattributbestimmungsvorrichtung 230, die beispielhafte Beschleunigerschnittstelle 240, der beispielhafte Trainingsdatenspeicher 245, der beispielhafte Neuronalnetzwerkprozessor 118, der beispielhafte Neuronalnetzwerktrainer 255, der beispielhafte Neuronalnetzwerkparameterspeicher 260 und/oder allgemeiner der beispielhafte Arbeitslastorchestrator 110 der 1 und 2 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. Somit könnten zum Beispiel beliebige der beispielhaften Arbeitslastschnittstelle 210, des beispielhaften Beschleunigerauswahlprozessors 114, der beispielhaften Arbeitslastattributbestimmungsvorrichtung 230, der beispielhaften Beschleunigerschnittstelle 240, des beispielhaften Trainingsdatenspeichers 245, des beispielhaften Neuronalnetzwerkprozessors 118, des beispielhaften Neuronalnetzwerktrainers 255, des beispielhaften Neuronalnetzwerkparameterspeichers 260 und/oder allgemeiner des beispielhaften Arbeitslastorchestrators 110 der 1 und 2 durch eine oder mehrere analoge oder digitale Schaltungen, Logikschaltungen, einen oder mehrere programmierbare Prozessoren, eine oder mehrere programmierbare Steuerungen, eine oder mehrere Grafikverarbeitungseinheiten (GPU(s)), einen oder mehrere Digitalsignalprozessoren (DSP(s)), eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASIC(s)), eine oder mehrere programmierbare Logikvorrichtungen (PLD(s)) und/oder eine oder mehrere feldprogrammierbare Logikvorrichtungen (FPLD(s)) implementiert werden. Wenn gelesen wird, dass beliebige der Vorrichtungs- und Systemansprüche dieses Patents eine reine Software- und/oder Firmwareimplementierung abdecken, ist zumindest eine/eines/einer der beispielhaften Arbeitslastschnittstelle 210, des beispielhaften Beschleunigerauswahlprozessors 114, der beispielhaften Arbeitslastattributbestimmungsvorrichtung 230, der beispielhaften Beschleunigerschnittstelle 240, des beispielhaften Trainingsdatenspeichers 245, des beispielhaften Neuronalnetzwerkprozessors 118, des beispielhaften Neuronalnetzwerktrainers 255, des beispielhaften Neuronalnetzwerkparameterspeichers 260 und/oder allgemeiner des beispielhaften Arbeitslastorchestrators 110 der 1 und 2 hiermit ausdrücklich so definiert, dass er/sie/es eine nichtflüchtige computerlesbare Speicherungseinrichtung oder Speicherungsplatte beinhaltet, 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. Des Weiteren kann der beispielhafte Arbeitslastorchestrator 110 der 1 und 2 ein/en/e oder mehrere Elemente, Prozesse und/oder Einrichtungen zusätzlich zu den oder anstelle der in 2 veranschaulichten beinhalten und/oder kann mehr als eine/s von einer/m beliebigen oder allen der veranschaulichten Elemente, Prozesse und Einrichtungen beinhalten. Wie hierin verwendet, schließt die Phrase „in Kommunikation“, einschließlich Variationen davon, eine direkte Kommunikation und/oder indirekte Kommunikation über eine oder mehrere zwischenliegende Komponenten ein und erfordert keine direkte physische (z. B. verdrahtete) Kommunikation und/oder konstante Kommunikation, sondern beinhaltet stattdessen zusätzlich eine selektive Kommunikation mit periodischen Intervallen, geplanten Intervallen, aperiodischen Intervallen und/oder einmalige Ereignisse.
-
Flussdiagramme, die beispielhafte Hardwarelogik, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren des beispielhaften Arbeitslastorchestrators 110 der 1 und/oder 2 repräsentieren, sind in den 3, 4 und/oder 5 dargestellt. Die maschinenlesbaren Anweisungen können ein ausführbares Programm oder ein Teil eines ausführbaren Programms zur Ausführung durch einen Computerprozessor sein, wie etwa der Prozessor 612, der in der beispielhaften Prozessorplattform 600 dargestellt ist, die im Folgenden in Verbindung mit 6 besprochen wird. Das Programm kann in Software umgesetzt sein, die auf einem nichtflüchtigen computerlesbaren Speicherungsmedium gespeichert ist, wie etwa einer CD-ROM, einer Diskette, einer Festplatte, einer DVD, einer Blu-Ray-Disk oder einem mit dem Prozessor 612 assoziierten Speicher, aber das gesamte Programm und/oder Teile davon könnten alternativ dazu durch eine Einrichtung, bei der es sich nicht um den Prozessor 612 handelt, ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt sein. Obwohl das beispielhafte Programm unter Bezugnahme auf die in den 3, 4 und/oder 5 veranschaulichten Flussdiagramme beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren des beispielhaften Arbeitslastorchestrators 110 verwendet werden. Beispielsweise kann die Reihenfolge der Ausführung der Blöcke geändert werden und/oder manche der beschriebenen Blöcke können geändert, entfernt oder kombiniert werden. Zusätzlich oder alternativ dazu können beliebige oder alle der Blöcke durch eine oder mehrere Hardwareschaltungen (z. B. einen diskreten und/oder integrierten analogen und/oder digitalen Schaltkreis, ein FPGA, eine ASIC, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.) implementiert werden, die so strukturiert sind, dass sie eine entsprechende Operation ohne die Ausführung von Software oder Firmware durchführen.
-
Wie oben erwähnt, können die beispielhaften Prozesse der 3, 4 und/oder 5 unter Verwendung von ausführbaren Anweisungen (z. B. computer- und/oder maschinenlesbaren Anweisungen) implementiert werden, die auf einem nichtflüchtigen computer- und/oder maschinenlesbaren Medium gespeichert sind, wie etwa einem Festplattenlaufwerk, einem Flash-Speicher, einem Nurlesespeicher, einer Compact Disk, einer Digital Versatile Disk, einem Cache, einem Direktzugriffsspeicher und/oder einer beliebigen anderen Speicherungseinrichtung oder Speicherungsplatte, auf der Informationen für eine beliebige Dauer (z. B. für längere Zeiträume, permanent, kurzzeitig, zum temporären Puffern und/oder zum Cachen der Informationen) gespeichert sind. Wie hierin verwendet, wird der Begriff nichtflüchtiges computerlesbares Medium ausdrücklich so definiert, dass er eine beliebige Art von computerlesbarer Speicherungseinrichtung und/oder Speicherungsplatte beinhaltet und das Propagieren von Signalen ausschließt und Übertragungsmedien ausschließt.
-
„Beinhaltend“ und „umfassend“ (und alle Formen und Zeitformen davon) werden hierin als offene Begriffe verwendet. Wann auch immer ein Anspruch eine beliebige Form von „beinhalten“ und „umfassen“ (z. B. umfasst, beinhaltet, umfassend, beinhaltend, aufweisend usw.) als eine Präambel oder in einer Anspruchsrezitation einer beliebigen Art einsetzt, soll somit verstanden werden, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne außerhalb des Schutzumfangs des entsprechenden Anspruchs oder der entsprechenden Rezitation zu fallen. Wie hierin verwendet, wenn die Phrase „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“, wenn er zum Beispiel in einer Form wie etwa A, B und/oder C verwendet wird, bezieht sich auf eine beliebige Kombination oder Teilmenge von A, B, C, wie etwa (1) A alleine, (2) B alleine, (3) C alleine, (4) A mit B, (5) A mit C, (6) B mit C und (7) A mit B und mit C.
-
Wie hierin im Zusammenhang der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, wird beabsichtigt, dass sich die Phrase „mindestens eines von A und B“ auf Implementierungen bezieht, einschließlich ein beliebiges von (1) mindestens eines von A, (2) mindestens eines von B und (3) mindestens eines von A und mindestens eines von B. Wie hierin im Zusammenhang der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, wird gleichermaßen beabsichtigt, dass sich die Phrase „mindestens eines von A oder B“ auf Implementierungen bezieht, einschließlich (1) mindestens eines von A, (2) mindestens eines von B und (3) mindestens eines von A und mindestens eines von B. Wie hierin im Zusammenhang der Beschreibung der Leistungsfähigkeit oder Ausführung von Prozessen, Anweisungen, Handlungen, Aktivitäten und/oder Schritten verwendet, wird beabsichtigt, dass sich die Phrase „mindestens eines von A und B“ auf Implementierungen bezieht, einschließlich ein beliebiges von (1) mindestens eines von A, (2) mindestens eines von B und (3) mindestens eines von A und mindestens eines von B. Wie hierin im Zusammenhang der Beschreibung der Leistungsfähigkeit oder Ausführung von Prozessen, Anweisungen, Handlungen, Aktivitäten und/oder Schritten verwendet, wird gleichermaßen beabsichtigt, dass sich die Phrase „mindestens eines von A oder B“ auf Implementierungen bezieht, einschließlich ein beliebiges von (1) mindestens eines von A, (2) mindestens eines von B und (3) mindestens eines von A und mindestens eines von B.
-
3 ist ein Flussdiagramm, das maschinenlesbare Anweisungen repräsentiert, die zum Implementieren des beispielhaften Arbeitslastorchestrators der 1 und/oder 2 ausgeführt werden können. Wie oben erläutert, beinhaltet der beispielhafte Arbeitslastorchestrator ein Neuronalnetzwerk und/oder trainiert dieses, um einen Arbeitslastbeschleuniger für eine eingegebene Arbeitslast auszuwählen. Der beispielhafte Prozess 300 des veranschaulichten Beispiels von 3 beginnt, wenn die beispielhafte Arbeitslastschnittstelle 210 auf eine Arbeitslast, die durch die Arbeitslastbereitstellungsvorrichtung 105 bereitgestellt wird, zugreift. (Block 310). In den hierin offenbarten Beispielen wird die Arbeitslast über eine Webschnittstelle (z. B. das Internet) empfangen. Die beispielhafte Arbeitslast kann jedoch auf eine beliebige andere Weise empfangen werden. Bei manchen Beispielen kann die Arbeitslastschnittstelle 210 mehrere Arbeitslasten empfangen.
-
Die beispielhafte Arbeitslastattributbestimmungsvorrichtung 230 identifiziert ein oder mehrere Attribute der Arbeitslast. (Block 320). Bei hierin offenbarten Beispielen überprüft die beispielhafte Arbeitslastattributbestimmungsvorrichtung 230 die Arbeitslast, um Eigenschaften der Daten und/oder Aufgaben zu identifizieren, die in Verbindung mit der Arbeitslast durchzuführen sind. Bei manchen Beispielen können das eine oder die mehreren Attribute jedoch durch die Arbeitslastbereitstellungsvorrichtung 105 identifiziert und/oder der Arbeitslastschnittstelle 210 bereitgestellt werden. Ein Benutzer kann zum Beispiel dem Arbeitslastorchestrator 110 das eine oder die mehreren Attribute bereitstellen. Das eine oder die mehreren Attribute können zum Beispiel beinhalten, ob die Arbeitslast parallelisiert werden kann, ob die Arbeitslast ressourcenintensiv ist, ob die Arbeitslast Bildverarbeitung vornimmt, ob die Arbeitslast Textverarbeitung vornimmt, und/oder beliebige andere Informationen über die Ausführung der Arbeitslast und/oder Daten, die in Verbindung mit der Arbeitslast zu verarbeiten sind, usw.
-
Der beispielhafte Beschleunigerauswahlprozessor 114 bestimmt, ob die Arbeitslast parallelisiert werden kann. (Block 330). Falls die Arbeitslast parallelisiert werden kann (z. B. gibt der Block 330 ein Ergebnis von JA zurück), weist der beispielhafte Beschleunigerauswahlprozessor 114 einem ersten Beschleuniger die Arbeitslast zu. (Block 335). In dem veranschaulichten Beispiel von 3 ist der erste Beschleuniger ein FPGA-basierter Beschleuniger. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Beschleuniger verwendet werden.
-
Falls der beispielhafte Beschleunigerauswahlprozessor 114 bestimmt, dass die Arbeitslast nicht parallelisiert werden kann (z. B. gibt 330 ein Ergebnis von NEIN zurück), bestimmt der beispielhafte Beschleunigerauswahlprozessor 114, ob die Arbeitslast ressourcenintensiv ist. (Block 340). In dem veranschaulichten Beispiel von 3 wird die Arbeitslast als ressourcenintensiv angesehen, wenn die Arbeitslast bewirken würde, dass der Beschleuniger mindestens eine Schwellenmenge an Speicher verwendet. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Art von Rechenressource (z. B. Festplattenraum, Prozessorzyklen, Netzwerkbandbreite) in Betracht gezogen werden. Bei manchen Beispielen werden ressourcenintensive Arbeitslasten durch einen CPU-basierten Beschleuniger besser gehandhabt. Falls der beispielhafte Beschleunigerauswahlprozessor 114 bestimmt, dass die Arbeitslast ressourcenintensiv ist (z. B. gibt 340 ein Ergebnis von JA zurück), weist der beispielhafte Beschleunigerauswahlprozessor 114 einem zweiten Beschleuniger die Arbeitslast zu. (Block 345). In dem veranschaulichten Beispiel von 3 ist der zweite Beschleuniger ein CPU-basierter Beschleuniger. Falls der beispielhafte Beschleunigerauswahlprozessor 114 bestimmt, dass die Arbeitslast nicht ressourcenintensiv ist (z. B. gibt 340 ein Ergebnis von NEIN zurück), weist der Beschleunigerauswahlprozessor 114 dem ersten Beschleuniger die Arbeitslast zu. (Block 335).
-
Der beispielhafte Beschleunigerauswahlprozessor 114 speichert die Assoziation des einen oder der mehreren Arbeitslastattribute und des zugewiesenen Beschleunigers im Trainingsdatenspeicher 245. (Block 350). Der beispielhafte Beschleunigerauswahlprozessor 114 bestimmt, ob beliebige andere Arbeitslasten zur Zuweisung an einen Beschleuniger für Trainingszwecke zur Verfügung stehen. (Block 360). Falls zusätzliche Arbeitslasten vorhanden sind (z. B. gibt Block 360 ein Ergebnis von JA zurück), wird der beispielhafte Prozess der Blöcke 320 bis 360 wiederholt, bis keine zusätzlichen Arbeitslasten vorhanden sind.
-
Nach der Bestimmung, dass alle Arbeitslasten zugewiesen wurden (z. B. gibt der Block 360 ein Ergebnis von NEIN zurück), weist der beispielhafte Beschleunigerauswahlprozessor 114 den Neuronalnetzwerktrainer 255 an, in dem beispielhaften Neuronalnetzwerkparameterspeicher 260 gespeicherte Neuronalnetzwerkparameter basierend auf dem einen oder den mehreren Arbeitslastattributen und dem einen oder den mehreren ausgewählten Beschleunigern zu trainieren. (Block 370). Der beispielhafte Neuronalnetzwerktrainer 255 speichert die Neuronalnetzwerkparameter im Neuronalnetzwerkparameterspeicher 260. (Block 380). Der beispielhafte Neuronalnetzwerktrainer 255 trainiert das durch den Neuronalnetzwerkprozessor 118 implementierte Neuronalnetzwerk. Bei hierin offenbarten Beispielen wird das Training unter Verwendung eines stochastischen Gradientenabstiegsprozesses durchgeführt. Zusätzlich oder alternativ dazu kann jedoch ein beliebiger anderer Ansatz zum Trainieren eines Neuronalnetzwerks verwendet werden.
-
Infolge des Trainings kann nach dem Empfang von anschließenden Arbeitslasten ein Beschleuniger durch den Neuronalnetzwerkprozessor 118 unter Verwendung der im Neuornalnetzwerkparameterspeicher 260 gespeicherten Neuronalnetzwerkparameter und eines oder mehrerer Attribute der anschließenden Arbeitslast ausgewählt werden. Der beispielhafte Prozess 300 des veranschaulichten Beispiels von 3 endet dann, kann aber wiederholt werden, um ein zusätzliches Training der im beispielhaften Neuronalnetzwerkparameterspeicher 260 gespeicherten Neuronalnetzwerkparameter durchzuführen.
-
4 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen repräsentiert, die zum Implementieren des beispielhaften Arbeitslastorchestrators der 1 und/oder 2 ausgeführt werden können, um ein Neuronalnetzwerk zum Auswählen eines Arbeitslastbeschleunigers für eine eingegebene Arbeitslast zu trainieren. Der beispielhafte Prozess 400 des veranschaulichten Beispiels von 4 beginnt, wenn die beispielhafte Arbeitslastschnittstelle 210 auf eine Arbeitslast, die durch die Arbeitslastbereitstellungsvorrichtung 105 bereitgestellt wird, zugreift. (Block 410). In den hierin offenbarten Beispielen wird die Arbeitslast über eine Webschnittstelle (z. B. das Internet) empfangen. Die beispielhafte Arbeitslast kann jedoch auf eine beliebige andere Weise empfangen werden. Bei manchen Beispielen kann die Arbeitslastschnittstelle 210 mehrere Arbeitslasten empfangen.
-
Die beispielhafte Arbeitslastattributbestimmungsvorrichtung 230 identifiziert ein oder mehrere Attribute der zugegriffenen Arbeitslast. (Block 415). Bei hierin offenbarten Beispielen überprüft die beispielhafte Arbeitslastattributbestimmungsvorrichtung 230 die Arbeitslast, um Eigenschaften der Daten und/oder Aufgaben zu identifizieren, die durch die Arbeitslast durchzuführen sind. Bei manchen Beispielen können das eine oder die mehreren Attribute jedoch durch die Arbeitslastbereitstellungsvorrichtung 105 identifiziert und/oder der Arbeitslastschnittstelle 210 bereitgestellt werden. Ein Benutzer kann zum Beispiel dem Arbeitslastorchestrator 110 das eine oder die mehreren Attribute bereitstellen. Das eine oder die mehreren Attribute können zum Beispiel beinhalten, ob die Arbeitslast parallelisiert werden kann, ob die Arbeitslast ressourcenintensiv ist, ob die Arbeitslast Bildverarbeitung vornimmt, ob die Arbeitslast Textverarbeitung vornimmt, und/oder beliebige andere Informationen über die Ausführung der Arbeitslast und/oder Daten, die in Verbindung mit der Arbeitslast zu verarbeiten sind, usw.
-
Der beispielhafte Beschleunigerauswahlprozessor 114 bestimmt Identitäten verfügbarer Beschleuniger über die beispielhafte Beschleunigerschnittstelle 240. (Block 420). Der beispielhafte Beschleunigerauswahlprozessor 114 stellt einem identifizierten Beschleuniger eine Arbeitslast (z. B. die empfangene Arbeitslast) zur Ausführung über die Beschleunigerschnittstelle 240 bereit. (Block 430). Bei manchen Beispielen wird dem Beschleuniger ein Teil der Arbeitslast bereitgestellt. Das Bereitstellen eines Teils der Arbeitslast gewährleistet, dass für Arbeitslasten, die ansonsten von Anfang bis Ende eine lange Zeit dauern würden, die Arbeitslast in einer kürzeren Zeit abgeschlossen werden kann. Infolgedessen wird die Zeitmenge reduziert, die zum Bestimmen, welcher Beschleuniger ausgewählt werden sollte, benötigt wird.
-
Der beispielhafte Beschleunigerauswahlprozessor 114 greift über die Beschleunigerschnittstelle 240 auf Leistungsfähigkeitsmetriken der Arbeitslastausführung zu. (Block 435). Bei hierin offenbarten Beispielen ist die Leistungsfähigkeitsmetrik eine Zeitmenge, die die Arbeitslast zur Ausführung brauchte. Zusätzlich oder alternativ dazu kann jedoch eine beliebige andere Leistungsfähigkeitsmetrik verwendet werden, wie etwa zum Beispiel eine Ressourcenmenge, die zum Ausführen der Arbeitslast verwendet wird, und eine Effizienz des Beschleunigers usw. Bei manchen Beispielen können mehrere unterschiedliche Leistungsfähigkeitsmetriken miteinander kombiniert werden, um eine zusammengesetzte Leistungsfähigkeitsmetrik zu erzeugen. Der beispielhafte Beschleunigerauswahlprozessor 114 bestimmt, ob es irgendwelche anderen Beschleuniger gibt, die zum Ausführen der Arbeitslast verwendet werden können. (Block 440). Falls ein zusätzlicher Beschleuniger vorhanden ist (z. B. gibt Block 440 ein Ergebnis von JA zurück), wird der beispielhafte Prozess der Blöcke 430 bis 440 wiederholt, um Leistungsfähigkeitsmetriken für die Arbeitslast in Kombination mit jedem der Beschleuniger zu erzeugen.
-
Falls der beispielhafte Beschleunigerauswahlprozessor 114 bestimmt, dass kein zusätzlicher Beschleuniger vorhanden ist (z. B. gibt Block 440 ein Ergebnis von NEIN zurück), wählt der beispielhafte Beschleunigerauswahlprozessor 114 einen Beschleuniger basierend auf den erfassten Leistungsfähigkeitsmetriken aus. (Block 445). Der Beschleunigerauswahlprozessor 114 kann zum Beispiel einen Beschleuniger auswählen, der in der kürzesten Ausführungszeit resultierte. Der beispielhafte Beschleunigerauswahlprozessor 114 speichert eine Assoziation des einen oder der mehreren Arbeitslastenattribute und des entsprechenden ausgewählten Beschleunigers im Trainingsdatenspeicher 245. (Block 450).
-
Der beispielhafte Beschleunigerauswahlprozessor 114 bestimmt, ob irgendwelche zusätzlichen Arbeitslasten vorhanden sind. (Block 460). Falls zusätzliche Arbeitslasten vorhanden sind (z. B. gibt Block 460 ein Ergebnis von JA zurück), wird der beispielhafte Prozess der Blöcke 415 bis 460 wiederholt, bis keine zusätzlichen Arbeitslasten vorhanden sind.
-
Nach der Bestimmung, dass das jeweilige Attribut bzw. die jeweiligen Attribute und Leistungsfähigkeitsmetriken für alle Arbeitslasten bestimmt wurden (z. B. gibt der Block 460 ein Ergebnis von NEIN zurück), weist der beispielhafte Beschleunigerauswahlprozessor 114 den Neuronalnetzwerktrainer 255 an, in dem beispielhaften Neuronalnetzwerkparameterspeicher 260 gespeicherte Neuronalnetzwerkparameter basierend auf der einen oder den mehreren Arbeitslastattributen und dem einen oder den mehreren ausgewählten Beschleunigern zu trainieren. (Block 470). Der beispielhafte Neuronalnetzwerktrainer 255 trainiert das durch den Neuronalnetzwerkprozessor 118 implementierte Neuronalnetzwerk. Bei hierin offenbarten Beispielen wird das Training unter Verwendung eines stochastischen Gradientenabstiegsprozesses durchgeführt. Zusätzlich oder alternativ dazu kann jedoch ein beliebiger anderer Ansatz zum Trainieren eines Neuronalnetzwerks verwendet werden.
-
Der beispielhafte Neuronalnetzwerktrainer 255 speichert die Neuronalnetzwerkparameter im Neuronalnetzwerkparameterspeicher 260. (Block 480). Infolgedessen können nach dem Empfang anschließender Arbeitslasten das eine oder die mehreren Attribute der Arbeitslast bestimmt werden und ein geeigneter Beschleuniger kann durch den Neuronalnetzwerkprozessor 118 unter Verwendung der im Neuronalnetzwerkparameterspeicher 260 gespeicherten Neuronalnetzwerkparameter ausgewählt werden. Der beispielhafte Prozess 400 des veranschaulichten Beispiels von 4 endet dann, kann aber wiederholt werden, um ein zusätzliches Training der im beispielhaften Neuronalnetzwerkparameterspeicher 260 gespeicherten Neuronalnetzwerkparameter durchzuführen.
-
5 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen repräsentiert, die zum Implementieren des beispielhaften Arbeitslastorchestrators 110 der 1 und/oder 2 ausgeführt werden können, um das in Verbindung mit 3 und/oder 4 trainierte Neuronalnetzwerk zum Auswählen eines Arbeitslastbeschleunigers für eine eingegebene Arbeitslast zu verwenden. Der beispielhafte Prozess 500 des veranschaulichten Beispiels von 5 beginnt, wenn die beispielhafte Arbeitslastschnittstelle 210 auf eine Arbeitslast, die durch die Arbeitslastbereitstellungsvorrichtung 105 bereitgestellt wird, zugreift. (Block 510). In den hierin offenbarten Beispielen wird die Arbeitslast über eine Webschnittstelle (z. B. das Internet) empfangen. Die beispielhafte Arbeitslast kann jedoch auf eine beliebige andere Weise empfangen werden.
-
Die beispielhafte Arbeitslastattributbestimmungsvorrichtung 230 identifiziert ein oder mehrere Attribute der Arbeitslast. (Block 520). Bei hierin offenbarten Beispielen überprüft die beispielhafte Arbeitslastattributbestimmungsvorrichtung 230 die Arbeitslast, um Eigenschaften der Daten und/oder Aufgaben zu identifizieren, die durch die Arbeitslast durchzuführen sind. Bei manchen Beispielen können das eine oder die mehreren Attribute jedoch durch die Arbeitslastbereitstellungsvorrichtung 105 identifiziert und/oder der Arbeitslastschnittstelle 210 bereitgestellt werden. Ein Benutzer kann zum Beispiel dem Arbeitslastorchestrator 110 das eine oder die mehreren Attribute bereitstellen. Das eine oder die mehreren Attribute können zum Beispiel beinhalten, ob die Arbeitslast parallelisiert werden kann, ob die Arbeitslast ressourcenintensiv ist, ob die Arbeitslast Bildverarbeitung vornimmt, ob die Arbeitslast Textverarbeitung vornimmt usw.
-
Der beispielhafte Beschleunigerauswahlprozessor 114 stellt dem Neuronalnetzwerkprozessor 118 das eine oder die mehreren Attribute der Arbeitslast zur Auswahl eines Beschleunigers, der zum Ausführen der Arbeitslast zu verwenden ist, bereit. Der beispielhafte Neuronalnetzwerkprozessor 118 verwendet die im beispielhaften Neuronalnetzwerkparameterspeicher 260 gespeicherten Neuronalnetzwerkparameter, um eine Angabe eines oder mehrerer Beschleuniger zu erzeugen, die zum Ausführen der Arbeitslast zu verwenden sind. (Block 530). Der Beschleunigerauswahlprozessor 114 stellt dann dem einen oder den mehreren ausgewählten Beschleunigern die Arbeitslast über die beispielhafte Beschleunigerschnittstelle 240 bereit. (Block 540). Bei manchen Beispielen können mehrere unterschiedliche Beschleuniger verwendet werden. Bei einem derartigen Beispiel kann die Arbeitslast zur Ausführung zwischen dem einen oder den mehreren verschiedenen Beschleunigern in Teile segmentiert und/oder geteilt werden. Der eine oder die mehreren Beschleuniger können dann die Arbeitslast und/oder Teile davon auf eine parallele Weise und/oder serielle Weise ausführen. Der beispielhafte Beschleunigerauswahlprozessor 114 erhält die Ergebnisse der Arbeitslastausführung über die beispielhafte Beschleunigerschnittstelle 240. (Block 550). Der beispielhafte Beschleunigerauswahlprozessor 114 erfasst Leistungsfähigkeitsmetriken, die aus der Ausführung der Arbeitslast resultieren, und speichert diese Leistungsfähigkeitsmetriken (und das eine oder die mehreren Attribute der Arbeitslast) als Trainingsdaten im beispielhaften Trainingsdatenspeicher 245. (Block 555). Somit können zukünftige Trainingsinstanzen von der Ausführung der Arbeitslast profitieren, ohne, dass die Arbeitslast erneut ausgeführt werden muss und die entsprechenden Leistungsfähigkeitsmetriken für diese Arbeitslast erfasst werden müssen. Die beispielhafte Arbeitslastschnittstelle 210 stellt dann der Arbeitslastbereitstellungsvorrichtung 105 die Ergebnisse der Arbeitslastausführung bereit. (Block 560). Der beispielhafte Prozess 500 des veranschaulichten Beispiels von 5 endet dann, kann aber nach dem Empfang einer anschließenden Arbeitslast zur Ausführung wiederholt werden.
-
6 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 600, die zum Ausführen der Anweisungen der 3, 4 und/oder 5 strukturiert ist, um den beispielhaften Arbeitslastorchestrator 110 der 1 und/oder 2 zu implementieren. Die Prozessorplattform 600 kann zum Beispiel ein Server, ein Personal Computer, eine Arbeitsstation, eine selbstlernende Maschine (z. B. ein Neuronalnetzwerk), eine mobile Einrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet wie etwa ein iPad™), ein Personal Digital Assistant (PDA), ein Internetgerät, ein DVD-Player, ein CD-Player, ein digitaler Videorekorder, ein Blu-Ray-Player, eine Spielekonsole, ein persönlicher Videorekorder, eine Set-Top-Box, ein Headset oder eine andere tragbare Einrichtung oder eine beliebige andere Art von Recheneinrichtung sein.
-
Die Prozessorplattform 600 des veranschaulichten Beispiels beinhaltet einen Prozessor 612. Der Prozessor 612 des veranschaulichten Beispiels ist Hardware. Der Prozessor 612 kann zum Beispiel durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, einen oder mehrere Mikroprozessoren, eine oder mehrere GPUs, DSPs oder Steuerungen von einer beliebigen gewünschten Familie oder einem beliebigen gewünschten Hersteller implementiert werden. Der Hardwareprozessor kann eine halbleiterbasierte (z. B. siliziumbasierte) Einrichtung sein. Bei diesem Beispiel implementiert der Prozessor den beispielhaften Beschleunigerauswahlprozessor 114, die Arbeitslastattributbestimmungsvorrichtung 230, den Neuronalnetzwerkprozessor 118 und den Neuronalnetzwerktrainer 255.
-
Der Prozessor 612 des veranschaulichten Beispiels beinhaltet einen lokalen Speicher 613 (z. B. einen Cache). Der Prozessor 612 des veranschaulichten Beispiels befindet sich über einen Bus 618 in Kommunikation mit einem Hauptspeicher, der einen unbeständigen Speicher 614 und einen beständigen Speicher 616 beinhaltet. Der unbeständige Speicher 614 kann durch SDRAM (Synchronous Dynamic Random Access Memory - synchroner dynamischer Direktzugriffsspeicher), DRAM (dynamischer Direktzugriffsspeicher), RDRAM® (RAMBUS® dynamischer Direktzugriffsspeicher) und/oder eine beliebige andere Art von Direktzugriffsspeicher-Einrichtung implementiert werden. Der beständige Speicher 616 kann durch Flash-Speicher und/oder eine beliebige andere gewünschte Art von Speichereinrichtung implementiert werden. Ein Zugang zum Hauptspeicher 614, 616 wird durch eine Speichersteuerung gesteuert.
-
Die Prozessorplattform 600 des veranschaulichten Beispiels beinhaltet auch eine Schnittstellenschaltung 620. Die Schnittstellenschaltung 620 kann durch eine beliebige Art von Schnittstellenstandard implementiert werden, wie etwa eine Ethernet-Schnittstelle, einen USB (Universal Serial Bus), eine Bluetooth®-Schnittstelle, eine Nahfeldkommunikations(NFC)-Schnittstelle und/oder eine PCI-Express-Schnittstelle. In dem veranschaulichten Beispiel von 6 implementiert die Schnittstellenschaltung 620 die beispielhafte Arbeitslastschnittstelle 210 und die beispielhafte Beschleunigerschnittstelle 240.
-
Im veranschaulichten Beispiel sind eine oder mehrere Eingabeeinrichtungen 622 mit der Schnittstellenschaltung 620 verbunden. Die eine oder die mehreren Eingabeeinrichtungen 622 gestatten einem Benutzer, Daten und/oder Befehle in den Prozessor 612 einzugeben. Die eine oder die mehreren Eingabeeinrichtungen 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 Ausgabeeinrichtungen 624 sind auch mit der Schnittstellenschaltung 620 des veranschaulichten Beispiels verbunden. Die Ausgabeeinrichtungen 624 können zum Beispiel durch Anzeigeeinrichtungen (z. B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhren(CRT)-Anzeige, eine IPS(In-Place Switching)-Anzeige, einen Touchscreen usw.), eine taktile Ausgabeeinrichtung, einen Drucker und/oder Lautsprecher implementiert werden. Die Schnittstellenschaltung 620 des veranschaulichten Beispiels beinhaltet somit typischerweise eine Grafiktreiberkarte, einen Grafiktreiberchip und/oder einen Grafiktreiberprozessor.
-
Die Schnittstellenschaltung 620 des veranschaulichten Beispiels beinhaltet auch eine Kommunikationseinrichtung, wie etwa einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein Haus-Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerkschnittstelle zum Ermöglichen des Austauschs von Daten mit externen Maschinen (z. B. Recheneinrichtungen einer beliebigen Art) über das Netzwerk 626. Die Kommunikation kann zum Beispiel über eine Ethernet-Verbindung, eine DSL(Digital Subscriber Line)-Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Line-of-Site-System, ein Zellulartelefonsystem usw. stattfinden.
-
Die Prozessorplattform 600 des veranschaulichten Beispiels beinhaltet auch eine oder mehrere Massenspeicherungseinrichtungen 628 zum Speichern von Software und/oder Daten. Beispiele für derartige Massenspeicherungseinrichtungen 628 beinhalten Diskettenlaufwerke, Festplatten, CD-Laufwerke, Blu-Ray-Disk-Laufwerke, RAID (Redundant Array of Independent Disks)-Systeme und DVD(Digital Versatile Disk)-Laufwerke.
-
Die maschinenausführbaren Anweisungen 632 der 3, 4 und/oder 5 können in der Massenspeicherungseinrichtung 628, im unbeständigen Speicher 614, im beständigen Speicher 616 und/oder auf einem entfernbaren nichtflüchtigen computerlesbaren Speicherungsmedium, wie etwa einer CD oder DVD, gespeichert werden. In dem veranschaulichten Beispiel von 6 implementiert die Massenspeicherungseinrichtung 628 den beispielhaften Trainingsdatenspeicher 245 und den beispielhaften Neuronalnetzwerkparameterspeicher 260.
-
Aus dem Vorstehenden wird verstanden werden, dass beispielhafte Verfahren, Vorrichtungen und Herstellungsartikel offenbart wurden, die eine Zuweisung einer Arbeitslast zu einem Beschleuniger unter Verwendung von Maschinenlernen ermöglichen. Offenbarte Verfahren, Vorrichtungen und Herstellungsartikel verbessern die Effizienz der Verwendung einer Recheneinrichtung durch ein dynamisches Zuweisen von Rechenressourcen, die sich am besten für eine Arbeitslast eignen. Das Verwenden von Maschinenlernen zum dynamischen Abgleichen einer Arbeitslast mit einem oder mehreren Maschinenlernbeschleunigern gewährleistet, dass die Ausführung der Arbeitslast zu einem Ort (z. B. Hardwaretyp) angepasst wird, der sich am besten zur Ausführung dieser Arbeitslast eignet. Offenbarte Verfahren, Vorrichtungen und Herstellungsartikel sind dementsprechend auf eine oder mehrere Verbesserungen der Funktionsweise eines Computers ausgerichtet.
-
Beispiel 1 beinhaltet eine Vorrichtung zum Ausführen einer Arbeitslast, wobei die Vorrichtung Folgendes umfasst: eine Arbeitslastattributbestimmungsvorrichtung zum Identifizieren eines ersten Attributs einer ersten Arbeitslast, wobei die Arbeitslastattributbestimmungsvorrichtung dazu ausgelegt ist, ein zweites Attribut einer zweiten Arbeitslast zu identifizieren, einen Beschleunigerauswahlprozessor zum Veranlassen, dass zumindest ein Teil der ersten Arbeitslast durch mindestens zwei Beschleuniger ausgeführt wird, wobei der Beschleunigerauswahlprozessor dazu ausgelegt ist, auf jeweilige Leistungsfähigkeitsmetriken entsprechend der Ausführung der ersten Arbeitslast durch die mindestens zwei Beschleuniger zuzugreifen, wobei der Beschleunigerauswahlprozessor dazu ausgelegt ist, einen ersten Beschleuniger der mindestens zwei Beschleuniger basierend auf den Leistungsfähigkeitsmetriken auszuwählen, einen Neuronalnetzwerktrainer zum Trainieren eines Maschinenlernmodells basierend auf einer Assoziation zwischen dem ersten Beschleuniger und dem ersten Attribut der ersten Arbeitslast, und einen Neuronalnetzwerkprozessor zum Verarbeiten des zweiten Attributs unter Verwendung des Maschinenlernmodells, um einen der mindestens zwei Beschleuniger zum Ausführen der zweiten Arbeitslast auszuwählen.
-
Beispiel 2 beinhaltet die Vorrichtung des Beispiels 1, ferner beinhaltend eine Beschleunigerschnittstelle, um dem ausgewählten einen der mindestens zwei Beschleuniger die zweite Arbeitslast zur Ausführung bereitzustellen.
-
Beispiel 3 beinhaltet die Vorrichtung des Beispiels 2, ferner beinhaltend eine Arbeitslastschnittstelle, um einer Arbeitslastbereitstellungsvorrichtung ein Ergebnis der Ausführung der zweiten Arbeitslast bereitzustellen.
-
Beispiel 4 beinhaltet die Vorrichtung des Beispiels 2, wobei der Beschleunigerauswahlprozessor dazu ausgelegt ist, auf eine Leistungsfähigkeitsmetrik zuzugreifen, die mit der Ausführung der zweiten Arbeitslast an dem ausgewählten einen der mindestens zwei Beschleuniger assoziiert ist, und wobei ein anschließendes Training des Maschinenlernmodells ferner auf der Leistungsfähigkeitsmetrik und dem zweiten Attribut der zweiten Arbeitslast basiert.
-
Beispiel 5 beinhaltet die Vorrichtung des Beispiels 1, wobei die jeweiligen Leistungsfähigkeitsmetriken Ausführungszeiten der ersten Arbeitslast an dem entsprechenden einen der mindestens zwei Beschleuniger repräsentieren.
-
Beispiel 6 beinhaltet die Vorrichtung eines beliebigen der Beispiele 1 bis 5, wobei das erste Attribut repräsentiert, ob die erste Arbeitslast parallelisierbar ist.
-
Beispiel 7 beinhaltet die Vorrichtung eines beliebigen der Beispiele 1 bis 5, wobei das erste Attribut repräsentiert, ob die erste Arbeitslast ressourcenintensiv ist.
-
Beispiel 8 beinhaltet die Vorrichtung des Beispiels 1, wobei ein erster Beschleuniger der zwei oder mehr Beschleuniger ein Zentralverarbeitungseinheit-basierter Beschleuniger ist und ein zweiter Beschleuniger der zwei oder mehr Beschleuniger ein Feldprogrammierbares-Gate-Array-basierter Beschleuniger ist.
-
Beispiel 9 beinhaltet mindestens ein nichtflüchtiges maschinenlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass mindestens ein Prozessor zumindest Folgendes ausführt: Identifizieren eines ersten Attributs einer ersten Arbeitslast, Veranlassen, dass zumindest ein Teil der ersten Arbeitslast durch mindestens zwei Beschleuniger ausgeführt wird, Zugreifen auf jeweilige Leistungsfähigkeitsmetriken entsprechend der Ausführung der ersten Arbeitslast durch die mindestens zwei Beschleuniger, Auswählen eines ersten Beschleunigers der mindestens zwei Beschleuniger basierend auf den Leistungsfähigkeitsmetriken, Trainieren eines Maschinenlernmodells basierend auf einer Assoziation zwischen dem ersten Beschleuniger und dem ersten Attribut der ersten Arbeitslast, Identifizieren eines zweiten Attributs einer zweiten Arbeitslast, und Verarbeiten des zweitens Attributs unter Verwendung des Maschinenlernmodells, um einen der mindestens zwei Beschleuniger zum Ausführen der zweiten Arbeitslast auszuwählen.
-
Beispiel 10 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium des Beispiels 9, wobei die Anweisungen bei Ausführung ferner bewirken, dass der mindestens eine Prozessor dem ausgewählten einen der mindestens zwei Beschleuniger die zweite Arbeitslast zur Ausführung bereitstellt.
-
Beispiel 11 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium des Beispiels 10, wobei die Anweisungen bei Ausführung ferner bewirken, dass der mindestens eine Prozessor einer Arbeitslastbereitstellungsvorrichtung ein Ergebnis der Ausführung der zweiten Arbeitslast bereitstellt.
-
Beispiel 12 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium des Beispiels 10, wobei die Anweisungen bei Ausführung ferner bewirken, dass der mindestens eine Prozessor auf eine Leistungsfähigkeitsmetrik zugreift, die mit der Ausführung der zweiten Arbeitslast an dem ausgewählten einen der mindestens zwei Beschleuniger assoziiert ist, und das Maschinenlernmodell basierend auf der Leistungsfähigkeitsmetrik und dem zweiten Attribut der zweiten Arbeitslast neu trainiert.
-
Beispiel 13 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium des Beispiels 9, wobei die jeweiligen Leistungsfähigkeitsmetriken Ausführungszeiten der ersten Arbeitslast an dem entsprechenden einen der mindestens zwei Beschleuniger repräsentieren.
-
Beispiel 14 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium eines beliebigen der Beispiele 9 bis 13, wobei das erste Attribut repräsentiert, ob die erste Arbeitslast parallelisierbar ist.
-
Beispiel 15 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium eines beliebigen der Beispiele 9 bis 13, wobei das erste Attribut repräsentiert, ob die erste Arbeitslast ressourcenintensiv ist.
-
Beispiel 16 beinhaltet eine Vorrichtung zum Zuweisen von Arbeitslasten an einen Beschleuniger, wobei die Vorrichtung Folgendes umfasst: Mittel zum Bestimmen von Attributen von Arbeitslasten, Mittel zum Veranlassen, dass eine erste Arbeitslast durch mindestens zwei Beschleuniger ausgeführt wird, wobei das Mittel zum Veranlassen auf jeweilige Leistungsfähigkeitsmetriken entsprechend der Ausführung der ersten Arbeitslast durch die mindestens zwei Beschleuniger zugreifen soll, wobei das Mittel zum Veranlassen einen ersten Beschleuniger der mindestens zwei Beschleuniger basierend auf den Leistungsfähigkeitsmetriken auswählt, Mittel zum Trainieren eines Maschinenlernmodells basierend auf einer Assoziation zwischen dem ersten Beschleuniger und dem ersten Attribut der ersten Arbeitslast, und Mittel zum Verarbeiten eines zweiten Attributs einer zweiten Arbeitslast unter Verwendung des Maschinenlernmodells, um einen der mindestens zwei Beschleuniger zum Ausführen der zweiten Arbeitslast auszuwählen.
-
Beispiel 17 beinhaltet die Vorrichtung des Beispiels 16, ferner beinhaltend Mittel zum Bereitstellen der zweiten Arbeitslast für den ausgewählten einen der mindestens zwei Beschleuniger zur Ausführung.
-
Beispiel 18 beinhaltet die Vorrichtung des Beispiels 17, ferner beinhaltend Mittel zum Verbinden über eine Schnittstelle, um einer Arbeitslastbereitstellungsvorrichtung ein Ergebnis der Ausführung der zweiten Arbeitslast bereitzustellen.
-
Beispiel 19 beinhaltet die Vorrichtung des Beispiels 17, wobei das Mittel zum Veranlassen dazu ausgelegt ist, auf eine Leistungsfähigkeitsmetrik zuzugreifen, die mit der Ausführung der zweiten Arbeitslast an dem ausgewählten einen der mindestens zwei Beschleuniger assoziiert ist, wobei ein anschließendes Training des Maschinenlernmodells auf der Leistungsfähigkeitsmetrik und dem zweiten Attribut der zweiten Arbeitslast basieren soll.
-
Beispiel 20 beinhaltet die Vorrichtung des Beispiels 16, wobei die jeweiligen Leistungsfähigkeitsmetriken Ausführungszeiten der ersten Arbeitslast an den entsprechenden mindestens zwei Beschleunigern repräsentieren.
-
Beispiel 21 beinhaltet die Vorrichtung eines beliebigen der Beispiele 16 bis 20, wobei das erste Attribut repräsentiert, ob die erste Arbeitslast parallelisierbar ist.
-
Beispiel 22 beinhaltet die Vorrichtung eines beliebigen der Beispiele 16 bis 20, wobei das erste Attribut repräsentiert, ob die erste Arbeitslast ressourcenintensiv ist.
-
Beispiel 23 beinhaltet die Vorrichtung des Beispiels 16, wobei ein erster Beschleuniger der zwei oder mehr Beschleuniger ein Zentralverarbeitungseinheit-basierter Beschleuniger ist und ein zweiter Beschleuniger der zwei oder mehr Beschleuniger ein Feldprogrammierbares-Gate-Array-basierter Beschleuniger ist.
-
Beispiel 24 beinhaltet ein Verfahren zum Zuweisen von Arbeitslasten an einen Beschleuniger, wobei das Verfahren Folgendes umfasst: Identifizieren eines ersten Attributs einer ersten Arbeitslast, Veranlassen, dass die erste Arbeitslast durch mindestens zwei Beschleuniger ausgeführt wird, Zugreifen auf jeweilige Leistungsfähigkeitsmetriken entsprechend der Ausführung der ersten Arbeitslast durch die mindestens zwei Beschleuniger, Auswählen eines ersten Beschleunigers der mindestens zwei Beschleuniger basierend auf den Leistungsfähigkeitsmetriken, Trainieren eines Maschinenlernmodells basierend auf einer Assoziation zwischen dem ersten Beschleuniger und dem ersten Attribut der ersten Arbeitslast, Identifizieren eines zweiten Attributs einer zweiten Arbeitslast, und Verarbeiten des zweiten Attributs unter Verwendung des Maschinenlernmodells, um einen der mindestens zwei Beschleuniger zum Ausführen der zweiten Arbeitslast auszuwählen.
-
Beispiel 25 beinhaltet das Verfahren des Beispiels 24, ferner beinhaltend Bereitstellen der zweiten Arbeitslast für den ausgewählten einen der mindestens zwei Beschleuniger zur Ausführung.
-
Beispiel 26 beinhaltet das Verfahren des Beispiels 25, ferner beinhaltend Bereitstellen eines Ergebnisses der Ausführung der zweiten Arbeitslast für eine Arbeitslastbereitstellungsvorrichtung.
-
Beispiel 27 beinhaltet das Verfahren des Beispiels 25, ferner beinhaltend Zugreifen auf eine Leistungsfähigkeitsmetrik, die mit der Ausführung der zweiten Arbeitslast an dem ausgewählten einen der mindestens zwei Beschleuniger assoziiert ist, und anschließendes Trainieren des Maschinenlernmodells basierend auf der Leistungsfähigkeitsmetrik und dem zweiten Attribut der zweiten Arbeitslast.
-
Beispiel 28 beinhaltet das Verfahren des Beispiels 24, wobei die jeweiligen Leistungsfähigkeitsmetriken Ausführungszeiten der ersten Arbeitslast an den entsprechenden mindestens zwei Beschleunigern repräsentieren.
-
Beispiel 29 beinhaltet das Verfahren eines beliebigen der Beispiele 24 bis 28, wobei das erste Attribut repräsentiert, ob die erste Arbeitslast parallelisierbar ist.
-
Beispiel 30 beinhaltet das Verfahren eines beliebigen der Beispiele 24 bis 28, wobei das erste Attribut repräsentiert, ob die erste Arbeitslast ressourcenintensiv ist.
-
Obwohl bestimmte beispielhafte Verfahren, Vorrichtungen und Herstellungsartikel hierin offenbart wurden, ist der Schutzumfang dieses Patents nicht darauf beschränkt. Vielmehr deckt dieses Patent alle Verfahren, Vorrichtungen und Herstellungsartikel ab, die angemessen in den Schutzumfang der Ansprüche dieses Patents fallen.