-
INFORMATIONEN ZU VERWANDTEN ANMELDUNGEN
-
Diese Anmeldung beansprucht die Priorität der US-Patentanmeldung Nr.
63/175,066 , die am 15. April 2021 eingereicht wurde, und der US-Patentanmeldung Nr.
17/720,776 , die am 14. April 2022 eingereicht wurde und die durch Bezugnahme in vollem Umfang hierin enthalten sind.
-
HINTERGRUND
-
Technischer Bereich
-
Die vorliegende Erfindung bezieht sich auf die verteilte Datenverarbeitung und insbesondere auf die Kommunikation zwischen Microservices.
-
Beschreibung der verwandten Technik
-
Microservices sind unabhängig voneinander einsetzbare Dienste mit einem automatisierten Bereitstellungsmechanismus, wobei jeder Dienst in einem größeren System unabhängig aktualisiert, ersetzt und skaliert werden kann. Für die Verbindung von Microservices kann eine Vielzahl von Kommunikationsformen verwendet werden, wobei bestimmte Kommunikationsformen für bestimmte Bedingungen besser geeignet sind als andere.
-
ZUSAMMENFASSUNG
-
Ein Verfahren zum Verwalten von Kommunikationen beinhaltet das Identifizieren eines Systemzustands in einem verteilten Computersystem, das einen ersten Mikrodienst in Kommunikation mit einem zweiten Mikrodienst umfasst. Ein Kommunikationsverfahren wird als Reaktion auf den identifizierten Systemzustand unter Verwendung eines Verstärkungslernmodells identifiziert, das Kommunikationsverfahren mit Systemzuständen assoziiert. Das identifizierte Kommunikationsverfahren wird für die Kommunikation zwischen dem ersten Microservice und dem zweiten Microservice implementiert, so dass der erste Microservice und der zweite Microservice das identifizierte Kommunikationsverfahren zur Datenübertragung verwenden.
-
Ein Verfahren zur Gesichtserkennung umfasst die Identifizierung eines Systemzustands in einem verteilten Computersystem, das einen ersten Mikrodienst in Kommunikation mit einem zweiten Mikrodienst in einem Videoverarbeitungs-Workload umfasst. Ein Kommunikationsverfahren wird als Reaktion auf den identifizierten Systemzustand unter Verwendung eines Verstärkungslernmodells identifiziert, das Kommunikationsverfahren mit Systemzuständen assoziiert. Das identifizierte Kommunikationsverfahren wird für die Kommunikation zwischen dem ersten Mikrodienst und dem zweiten Mikrodienst implementiert, so dass der erste Mikrodienst und der zweite Mikrodienst das identifizierte Kommunikationsverfahren verwenden, um Daten zu übertragen. Ein Gesicht wird in einem Videostrom erkannt, der von der Videoverarbeitungs-Workload verarbeitet wird. Als Reaktion auf die Erkennung des Gesichts wird eine Sicherheitsmaßnahme durchgeführt.
-
Ein System zur Verwaltung von Kommunikationen enthält einen Hardwareprozessor und einen Speicher, der ein Computerprogramm enthält. Wenn es von dem Hardware-Prozessor ausgeführt wird, veranlasst das Computerprogramm den Hardware-Prozessor, einen Systemzustand in einem verteilten Computersystem zu identifizieren, das einen ersten Mikrodienst in Kommunikation mit einem zweiten Mikrodienst umfasst, ein Kommunikationsverfahren als Reaktion auf den identifizierten Systemzustand unter Verwendung eines Verstärkungslernmodells zu identifizieren, das Kommunikationsverfahren mit Systemzuständen assoziiert, und das identifizierte Kommunikationsverfahren für die Kommunikation zwischen dem ersten Mikrodienst und dem zweiten Mikrodienst zu implementieren, so dass der erste Mikrodienst und der zweite Mikrodienst das identifizierte Kommunikationsverfahren zur Übertragung von Daten verwenden.
-
Diese und andere Merkmale und Vorteile werden aus der folgenden detaillierten Beschreibung illustrativer Ausführungsformen ersichtlich, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die Offenbarung wird in der folgenden Beschreibung bevorzugter Ausführungsformen unter Bezugnahme auf die folgenden Figuren, Details zur Verfügung stellen, in denen:
- 1 ist ein Blockdiagramm, das ein beispielhaftes verteiltes Computersystem gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
- 2 ist ein Blockdiagramm eines Verarbeitungsknotens in einem verteilten Rechnersystem gemäß einer Ausführungsform der vorliegenden Erfindung;
- 3 ist ein Block-/Ablaufdiagramm eines Satzes von Mikrodiensten in einer Videoverarbeitungs- und Gesichtsabgleichsarbeitslast gemäß einer Ausführungsform der vorliegenden Erfindung;
- 4 ist ein Block-/Ablaufdiagramm eines Verfahrens zur Auswahl eines optimalen Kommunikationsverfahrens zwischen Mikrodiensten in einem verteilten Computersystem gemäß einer Ausführungsform der vorliegenden Erfindung;
- 5 ist ein Block-/Ablaufdiagramm eines Verfahrens zur Auswahl von Kommunikationsmethoden auf der Grundlage eines Verstärkungslernmodells gemäß einer Ausführungsform der vorliegenden Erfindung; und
- 6 ist ein Blockdiagramm eines Computersystems, das ein verteiltes Computersystem verwalten kann, insbesondere die Auswahl von Kommunikationsverfahren zur Verwendung zwischen Mikrodiensten, gemäß einer Ausführungsform der vorliegenden Erfindung.
-
DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Eine Anwendung kann durch die Verbindung mehrerer Mikrodienste gebildet werden, so dass die Ausgabe eines ersten Mikrodienstes zur Eingabe für einen zweiten Mikrodienst wird. Mehrere solcher miteinander verbundener Microservices können eine Kette bilden, um die Funktionalität der Anwendung zu erzeugen. Bei dieser Verbindung wird die Datenkommunikation zwischen den Microservices genutzt, und zu den beispielhaften Kommunikationsarten gehören die Punkt-zu-Punkt-Kommunikation, die Kommunikation zwischen m-Servern und n-Clients, die Brokerbasierte und die Shared-Memory-basierte Kommunikation.
-
Jede Kommunikationsmethode eignet sich am besten für eine andere Reihe von Zuständen. Die aktuellen Zustände für ein verteiltes Rechnersystem können bewertet werden, so dass die Kommunikation zwischen den Diensten für eine laufende Anwendung dynamisch konfiguriert werden kann. Einige Plattformen für verteiltes Rechnen ermöglichen es zwar, Kommunikationsmethoden statisch zu spezifizieren, doch bieten diese Systeme möglicherweise nicht die Möglichkeit, die spezifizierte Kommunikationsmethode zu ändern, wenn sich die Zustände ändern.
-
Ein Kommunikationscontroller kann daher Leistungs- und Kommunikationsstatistiken von einzelnen Mikrodiensten sammeln. Diese Statistiken können mit Hilfe von Reinforcement Learning verarbeitet werden, um die optimale Kommunikationsmethode zu ermitteln, die zwischen einem beliebigen Paar von Mikrodiensten verwendet werden sollte. Die optimale Kommunikationsmethode kann dann dynamisch angewendet werden, um die Gesamteffizienz der Anwendung während der Laufzeit zu verbessern. Verstärkungs lernen nach dem SARSA (State-Action-Reward-State-Action) -Prinzip kann insbesondere zur Anpassung an sich ändernde Zustände verwendet werden.
-
In 1 ist ein Diagramm eines verteilten Computersystems 100 dargestellt. Ein Benutzer 102 kann eine Arbeitslast im verteilten Rechnersystem 100 ausführen. Zu diesem Zweck kommuniziert der Benutzer 102 mit dem Managersystem 104. Der Benutzer 102 liefert Informationen über die Arbeitslast, einschließlich der Anzahl und des Typs der Verarbeitungsknoten 106, die zur Ausführung der Arbeitslast benötigt werden.
-
Zu den Informationen, die dem Managersystem 104 zur Verfügung gestellt werden, gehören beispielsweise die Anzahl der Verarbeitungsknoten 106, ein Prozessortyp, ein Betriebssystem, eine Ausführungsumgebung, die Speicherkapazität, die Kapazität des Direktzugriffsspeichers, die Netzwerkbandbreite und alle anderen Punkte, die für die Arbeitslast erforderlich sind. Der Benutzer 102 kann darüber hinaus dem Managersystem 104 Bilder oder Container zur Speicherung in einer dortigen Registrierung zur Verfügung stellen.
-
Das verteilte Rechensystem 100 kann viele Tausende von Verarbeitungsknoten 106 umfassen, von denen jeder in Abhängigkeit von den Arbeitslasten, die vom verteilten Rechensystem 100 zu einem bestimmten Zeitpunkt ausgeführt werden, im Leerlauf oder beschäftigt sein kann. Obwohl ein einzelnes Managersystem 104 gezeigt wird, kann es mehrere solcher Managersysteme 104 geben, mit mehreren Registern, die über das verteilte Computersystem 100 verteilt sind.
-
Vor und während der Ausführung der Arbeitslast bestimmt das Managersystem 104, welche Verarbeitungsknoten 106 die Microservices implementieren, aus denen die entsprechende Anwendung besteht. Das Managersystem 104 kann die Verarbeitungsknoten 106 konfigurieren, zum Beispiel auf der Grundlage der Knoten- und Ressourcenverfügbarkeit zum Zeitpunkt der Bereitstellung. Die Microservices können vollständig auf separaten Verarbeitungsknoten 106 gehostet werden, oder eine beliebige Anzahl von Microservices kann auf demselben Verarbeitungsknoten 106 untergebracht werden. Das Managersystem 104 und das verteilte Rechensystem 100 können mehrere verschiedene Arbeitslasten von mehreren verschiedenen Benutzern 102 verarbeiten, so dass die Verfügbarkeit bestimmter Ressourcen davon abhängt, was im verteilten Rechensystem 100 im Allgemeinen geschieht.
-
Der hier verwendete Begriff „Bereitstellung“ bezieht sich auf den Prozess, durch den Ressourcen in einem verteilten Computersystem 100 einem Benutzer 102 zugewiesen und für die Ausführung vorbereitet werden. Somit umfasst die Bereitstellung die vom Managersystem 104 vorgenommenen Festlegungen, welche Verarbeitungselemente 106 für die Arbeitslast verwendet werden, sowie die Übertragung von Bildern und alle Konfigurationsschritte, die erforderlich sind, um die Verarbeitungsknoten 106 für die Ausführung der Arbeitslast vorzubereiten. Die Konfiguration kann z. B. die Festlegung von Kommunikationsmethoden umfassen, die von den Microservices verwendet werden sollen.
-
In 2 sind weitere Details eines Verarbeitungsknotens 108 dargestellt. Der Verarbeitungsknoten 106 umfasst einen Hardware-Prozessor 202, einen Speicher 204 und eine Netzwerkschnittstelle 206. Die Netzwerkschnittstelle 206 kann so konfiguriert sein, dass sie mit dem Managersystem 104, mit dem Benutzer 102 und bei Bedarf mit anderen Verarbeitungsknoten 106 über ein beliebiges geeignetes Kommunikationsmedium und Protokoll kommuniziert. Der Verarbeitungsknoten 106 umfasst auch ein oder mehrere Funktionsmodule, die in einigen Ausführungsformen als Software implementiert sein können, die im Speicher 204 gespeichert ist und vom Hardware-Prozessor 202 ausgeführt werden kann. In anderen Ausführungsformen können ein oder mehrere der Funktionsmodule als eine oder mehrere diskrete Hardwarekomponenten in Form von z. B. anwendungsspezifischen integrierten Chips oder feldprogrammierbaren Gate-Arrays implementiert werden.
-
Der Verarbeitungsknoten 106 kann einen oder mehrere Container 208 umfassen. Es ist ausdrücklich vorgesehen, dass jeder Container 208 eine eigene Betriebsumgebung darstellt. Die Container 208 enthalten jeweils einen Satz von Softwareanwendungen, Konfigurationsdateien, Arbeitslastdatensätzen und andere Informationen oder Software, die zur Ausführung einer bestimmten Arbeitslast erforderlich sind. Diese Container 208 können einen oder mehrere Microservices für eine verteilte Anwendung implementieren.
-
Die Container 208 werden im Speicher 204 gespeichert und von der Container-Orchestrierungs-Engine 210 nach Bedarf instanziiert und außer Betrieb genommen. Es ist zu verstehen, dass ein Betriebssystem des Verarbeitungsknotens 106 im Allgemeinen außerhalb der Container 208 existiert. Somit ist jeder Container 208 mit demselben Betriebssystemkern verbunden, was den für die gleichzeitige Ausführung mehrerer Container erforderlichen Overhead reduziert. In der Zwischenzeit können die Container 208 außerhalb der festgelegten Kommunikationsmethoden nicht miteinander kommunizieren, wodurch Sicherheitsbedenken verringert werden.
-
3 zeigt eine beispielhafte Anwendung mit einer Reihe miteinander verbundener Mikrodienste. In diesem Beispiel kann eine Videoanalyseanwendung eine Echtzeitüberwachung eines Videostroms durchführen, die die Überwachung eines bestimmten Bereichs umfassen kann, um festzustellen, ob bestimmte Personen den Bereich betreten haben. Die Videoanalyseanwendung kann eine Warnung oder eine automatische Reaktion auf die Erkennung einer solchen Person erzeugen.
-
Die Anwendung kann beispielhafte Mikrodienste wie die Videoaufnahme 304, die Gesichtserkennung 306, den Gesichtsabgleich 308, den Benachrichtigungsmanager 310 und den Biometriemanager 312 umfassen. Eine Kamera 302 erzeugt visuelle Daten, z. B. einen Strom von Bildern, die einen Videostrom bilden. Die Videoaufnahme 304 verarbeitet diese visuellen Daten und führt eine geeignete Filterung oder Formatierung durch, um Bilder zu erzeugen, die von nachgeschalteten Mikrodiensten berücksichtigt werden können.
-
Die Gesichtserkennung 306 identifiziert Gesichter innerhalb der Bilder des Videostroms. Diese Identifizierung kann die Kennzeichnung des Bildes beinhalten, um das Vorhandensein eines Gesichts im Bild anzuzeigen, und kann außerdem Koordinaten für eine Bounding Box des Gesichts im Bild beinhalten. Der Gesichtsabgleich 308 kann dann das Gesichtsbild mit Informationen über eine im Bild gezeigte Person verbinden. Dieser Abgleich kann auf Informationen aus dem Biometrie-Manager 312 zurückgreifen, der Profile von Personen von Interesse speichern kann. Das Profil kann biometrische Informationen enthalten, z. B. Gesichtsmerkmale, die für den Abgleich mit Gesichtsbildern verwendet werden können, sowie identifizierende Informationen wie den Namen und die Rolle der Person.
-
Im Falle eines Sicherheitssystems kann die Rolle einer Person Informationen über die Zugangsberechtigung enthalten. So kann eine Person beispielsweise berechtigt sein, einen gesperrten Bereich zu betreten, oder es kann ihr ausdrücklich verboten sein, einen gesperrten Bereich zu betreten. Der Alarmmanager 310 kann als Reaktion auf die Erkennung einer Person durch den Gesichtsabgleich 308 einen Alarm erzeugen. Eine Warnung kann zum Beispiel anzeigen, dass sich eine autorisierte Person in dem Bereich befindet, dass sich eine verbotene Person in dem Bereich befindet oder dass sich eine unbekannte Person in dem Bereich befindet.
-
Ein Sicherheitssystem 312 kann automatisch auf die Alarme reagieren. Die Reaktion kann eine Sicherheitsreaktion beinhalten, wie z. B. das automatische Ver- oder Entriegeln einer Tür oder eines anderen Zugangspunkts, das Auslösen eines optischen und/oder akustischen Alarms, das Herbeirufen von Sicherheitspersonal und das Anfordern einer weiteren Authentifizierung von der erkannten Person.
-
In einem verteilten Rechnersystem können mehrere Videoströme gleichzeitig verarbeitet werden. Beispielsweise können mehrere Kameras 302 entsprechende Videoströme erzeugen, und es können entsprechende Microservice-Instanzen für die Videoaufnahme 304, die Gesichtserkennung 306 und den Gesichtsabgleich 308 vorhanden sein. Die Kommunikation von erkannten Gesichtern zwischen den Mikrodiensten kann über eine Vielzahl verschiedener Kommunikationsmethoden erfolgen, z. B. über einen Prozess von m-Servern zu n-Clients, einen brokerbasierten Prozess oder einen gemeinsam genutzten Speicher. Beispielsweise kann eine Punkt-zu-Punkt-Kommunikationsmethode optimal sein, wenn die Anzahl der Gesichter auf allen Kameras 302 ähnlich und ausgeglichen ist, während eine brokerbasierte Kommunikationsmethode optimal sein kann, wenn viele Gesichter aus bestimmten Kamerawinkeln beobachtet werden (z. B. am Eingang eines Stadions).
-
Die verschiedenen Mikrodienste können als Container 208 innerhalb eines Verarbeitungsknotens 206 implementiert werden. In einigen Fällen können mehrere Microservices auf einem einzigen Verarbeitungsknoten 206 implementiert werden, beispielsweise unter Verwendung verschiedener entsprechender Container 208 oder durch Implementierung mehrerer Microservices in einem einzigen Container 208. In einigen Fällen können die Microservices unter Verwendung mehrerer verschiedener Verarbeitungsknoten 106 implementiert werden, wobei die Kommunikation zwischen den Containern 208 der verschiedenen Verarbeitungsknoten 106 über ein geeignetes Netzwerk erfolgt.
-
Ein Kommunikationscontroller zum Sammeln von leistungs- und kommunikationsbezogenen Statistiken von den verschiedenen Microservices. Dieser Kommunikationscontroller kann als separates Softwaremodul oder als Microservice implementiert werden, oder er kann im Managersystem 102 implementiert werden. Anhand der gesammelten Statistiken kann der Kommunikationscontroller das SARSA-Verstärkungs lernen verwenden, um die Eigenschaften der Kommunikation zwischen den Microservices und die optimalste Kommunikationsmethode für verschiedene Bedingungen zu lernen. Der Kommunikationscontroller kann somit die zwischen zwei Microservices verwendete Kommunikationsmethode dynamisch ändern.
-
In 4 ist ein Verfahren zur dynamischen Anpassung der Microservice-Kommunikation während der Ausführung einer Arbeitslast dargestellt. In Block 402 werden Mikrodienste in einem verteilten Rechensystem bereitgestellt und konfiguriert. Diese Konfiguration kann eine anfängliche Auswahl eines Kommunikationsverfahrens für jede einzelne Verbindung zwischen Microservices umfassen.
-
Block 404 führt die Arbeitslast mit Hilfe des verteilten Computersystems aus. Während der Ausführung der Arbeitslast überwacht Block 406 Kommunikationsstatistiken und andere Leistungs- und Betriebsparameter der Mikrodienste. Block 408 verwendet die gesammelten Statistiken, um die optimale Kommunikationsmethode für die aktuellen Betriebsbedingungen zu bestimmen. Block 410 implementiert dann die optimale Kommunikationsmethode, indem beispielsweise die aktuelle Kommunikationsmethode beibehalten wird, wenn sie immer noch optimal ist, oder indem die Microservices neu konfiguriert werden, um eine neue Kommunikationsmethode zu verwenden, wenn die neue Methode als optimal ermittelt wurde. Die Verarbeitung kehrt dann zu Block 406 zurück, wo neue Statistiken gesammelt werden. Bei diesem Aktualisierungsprozess kann eine Verzögerung entsprechend einem konfigurierbaren Parameter eingeführt werden. Beispielsweise kann eine Verzögerung von fünf Minuten es ermöglichen, genügend neue Statistiken zu sammeln, um die Bestimmung zu verbessern, ob eine neue Kommunikationsmethode optimaler wäre.
-
Zu den Arten von Kommunikationsstatistiken können datenpaketbezogene Statistiken gehören, z. B. Mindestgröße, Höchstgröße, Durchschnittsgröße, Standardabweichung und Häufigkeit/Rate von Nachrichten zwischen einem beliebigen Paar von Microservices innerhalb eines gleitenden Fensters. Kommunikationsstatistiken können ferner Listen kommunizierender Paare von Microservices enthalten, die sich im Laufe der Zeit ändern können, sowie Informationen über die Zone(n) und den/die Rechner, auf denen die Microservices ausgeführt werden. Diese Kommunikationsstatistiken können den Zustand des Verstärkungslernmodells bestimmen. Es können auch Leistungsstatistiken gesammelt werden, wie z. B. eine Verarbeitungsrate, um die Belohnung für das Reinforcement-Learning-Modell zu bestimmen.
-
Bei der Bestimmung von Block 408 wird das Verstärkungslemen verwendet. Beim SARSA-Verstärkungslernen beobachtet ein Agent die aktuellen Bedingungen (z. B. unter Berücksichtigung der gesammelten Statistiken). Als nächstes wählt der Agent eine Aktion unter Verwendung einer Strategie aus, wobei die Strategie die aktuellen Bedingungen als Eingabe verwendet und eine Aktion generiert, die so berechnet wird, dass eine gewisse Belohnung maximiert wird. Die Aktion wird ausgeführt und die Ergebnisse werden beobachtet, z. B. eine Belohnung oder eine Strafe. Auf der Grundlage dieses Feedbacks aktualisiert der Agent die Strategie, um bessere Ergebnisse zu erzielen. Durch die Wiederholung dieses Prozesses lernt der Agent die Umgebung kennen und erfährt, welche Aktionen den größten Nutzen bringen. Der Agent kann dann die gelernte Strategie mit neuen Eingaben verwenden, um das Verhalten des Systems zu steuern.
-
Im Zusammenhang mit der Optimierung der Kommunikation zwischen Microservices kann die Umgebung als ein Vektor definiert werden, der die folgenden Größen umfasst:
-
Eine Mindestgröße von Datenpaketen, die zwischen einem beliebigen Paar von Mikrodiensten innerhalb eines gleitenden Fensters ausgetauscht werden;
-
Eine maximale Größe von Datenpaketen, die zwischen einem beliebigen Paar von Microservices innerhalb eines gleitenden Fensters ausgetauscht werden;
-
Standardabweichung der Größe von Datenpaketen, die zwischen einem beliebigen Paar von Microservices innerhalb eines gleitenden Fensters ausgetauscht werden;
die Häufigkeit von Datenpaketen zwischen einem beliebigen Paar von Mikrodiensten innerhalb eines gleitenden Fensters; und
-
Eine Zone und ein Verarbeitungsknoten, auf dem der Microservice ausgeführt wird.
-
Die Aktionen, die ein Agent durchführen kann, umfassen alle verfügbaren Kommunikationsmethoden. Zu den Aktionen, die ein Agent durchführen kann, gehören zum Beispiel:
- Verwenden Sie Punkt-zu-Punkt-Kommunikation;
- Verwende die Kommunikation zwischen m-Servern und n-Clients;
- Benutzer-Broker-basierte Kommunikation;
- Kommunikation auf der Grundlage eines gemeinsamen Speichers verwenden; und
- Keine Maßnahmen ergreifen (Beibehaltung der derzeitigen Kommunikationsmethode).
-
Die Belohnung kann als Änderung der Verarbeitungsrate der Mikrodienste bestimmt werden. Diese kann als Verhältnis zwischen der vorherigen Verarbeitungsrate und der Differenz zwischen der neuen Verarbeitungsrate und der vorherigen Verarbeitungsrate berechnet werden:
-
Neben der unmittelbaren Belohnung, die der Agent für eine Aktion erhält, berücksichtigt er auch zukünftige Belohnungen, die sich aus der aktuellen Aktion ergeben können. Dementsprechend können für jedes Zustands- und Aktionspaar Q-Werte definiert werden. Zum Beispiel kann Q (s, a) eine Schätzung des Nutzens sein, der sich aus der Durchführung von Aktion a im Zustand s ergibt. Die Q (s, a) Schätzung berücksichtigt die zukünftigen Belohnungen, die für die Durchführung der Aktion a anfallen können, als:
wobei α eine Lernrate ist, die steuert, wie viel Gewicht neuen Informationen im Vergleich zu zuvor gelernten Q-Werten gegeben wird, und γ ein Abzinsungsfaktor ist, der die Bedeutung zukünftiger Belohnungen bestimmt. Bei einem Wert von α = 0 stoppt das Lernen, während ein Wert von α = 1 werden nur die neuesten Informationen verwendet. Dieser Wert kann als Parameter mit einem hohen Wert (z. B., α = 0.9) festgelegt werden, damit das Modell die Ergebnisse der in der neuen Umgebung durchgeführten Aktionen schnell verarbeiten kann. Nach einer anfänglichen Lernphase, wenn die Q-Matrix weitgehend erkundet wurde, kann der Wert gesenkt werden (z. B., α = 0.1), um die Nutzung der neu aufgenommenen Informationen zu fördern.
-
Wenn y gleich Null ist, ignoriert der Agent künftige Belohnungen und versucht, für sofortige Belohnungen zu optimieren. Wenn γ auf eins gesetzt ist, legt der Agent großen Wert auf langfristige Belohnungen. Wenn ein Operator eine hohe Variabilität in den nachfolgenden Frames des Eingabeinhalts erwartet, kann er diese Information kodieren, indem er einen niedrigen Wert zuweist γ (z. B., γ = 0.1), während ein höherer Wert für Situationen mit geringerer Variabilität verwendet werden kann.
-
5 zeigt die Verwendung eines Verstärkungslernmodells zur Bestimmung von Aktionen. Block 501 legt einen Anfangszustand s und eine Aktion α fest. Ein beispielhafter Prozess zur Auswahl einer Aktion wird weiter unten ausführlicher beschrieben. Block 502 führt die ausgewählte Aktion α aus, die den Zustand s in einen neuen Zustand s' ändert. Block 504 bestimmt einen Belohnungswert r basierend auf dem neuen Zustand s'.
-
Block 506 beobachtet den neuen Zustand s' und Block 508 wählt eine neue Aktion a' aus. Im neuen Zustand s' geht der Agent davon aus, dass eine Aktion a' zu einem Q-Wert von Q (s', a') führt. Die kumulative Belohnung Q (s, a) kann wie oben beschrieben geschätzt werden. Block 510 aktualisiert die kumulative Belohnung entsprechend dem vorherigen Zustand und der Aktion (s,a) und dem neuen Zustand und der Aktion (s',a').
-
Der Lernprozess wird während des Betriebs des Systems fortgesetzt - wenn der Agent Zustände besucht und wieder besucht, kann er die Werte der Q-Matrix aktualisieren, um die aktuellen Leistungsmessungen widerzuspiegeln. Zu Beginn des Betriebs wird ein Lernparameter festgelegt, um die zufällige Erkundung des Zustandsraums zu fördern. Später, wenn die Q-Matrix weitgehend ausgefüllt ist, kann der Lernparameter so eingestellt werden, dass die Auswahl optimaler Zustände gefördert wird, aber immer noch ein gewisses Lernen zur Aktualisierung der Matrixwerte möglich ist.
-
Dieser Prozess definiert nicht die Strategie für die Auswahl der Aktion a.S tattdessen wird angenommen, dass eine Strategie existiert, die sicherstellt, dass alle Zustands- und Aktionspaare vom Agenten besucht werden. Eine Möglichkeit, dies zu erreichen, besteht darin, einen Lernparameter zu definieren ε. Mit der Wahrscheinlichkeit ε wird die Strategie die beste Aktion für den Zustand vorschlagen, und mit der Wahrscheinlichkeit 1 - ε wird der Agent eine zufällige Aktion wählen. Während des Lernens kann der Wert ε ein kleiner Wert zugewiesen werden (z.B., ε = 0.1), um den Zustandsraum zu erkunden. Wenn ein großer Teil der Q-Werte genau geschätzt wurde, z. B. wenn ein Prozentsatz der Werte größer als ein vorher festgelegter Schwellenwert ist, können höhere Werte von ε verwendet werden, damit der Agent das gelernte Modell ausnutzen kann. Es ist zu beachten, dass durch die zufällige Auswahl einer Aktion während des Lernens auch Zustände, von denen bekannt ist, dass sie schlecht abschneiden, gelegentlich erneut aufgesucht werden. Dies ermöglicht dem Agenten, seine Belohnungswerte zu aktualisieren, wenn sich die Leistung verbessert hat.
-
Diese Q-Werte werden vom Agenten im Rahmen der Bestimmung der Belohnung für eine bestimmte Handlung in einem bestimmten Zustand geschätzt. Diese Bestimmung kann erfolgen, während der Agent die Belohnungen in jedem Element der Matrix aktualisiert. Wenn das System also einen Zustand einnimmt, können Leistungsstatistiken gesammelt werden, z. B. die Verarbeitungsrate, um die Belohnung für den Übergang in diesen Zustand zu bestimmen. Diese Werte können aktualisiert werden, um veränderten Bedingungen Rechnung zu tragen, beispielsweise wenn der Agent zu einem zuvor besuchten Zustand zurückkehrt und feststellt, dass sich die Leistungsstatistiken wesentlich von den zuvor erfassten Werten unterscheiden.
-
Das Q-Modell kann als zweidimensionale Matrix implementiert werden, wobei eine Dimension diskretisierte Zustände und die andere Dimension Aktionen repräsentiert. Jedes Element ij der Matrix speichert eine erwartete Belohnung für die Durchführung der Aktion i, während sich das System im Zustand j befindet.
-
Bei der Auswahl einer Aktion, z. B. in den Blöcken 501 oder 508, kann eine Zufallszahl zwischen null und eins generiert und verglichen werden mit ε. Wenn die Zufallszahl größer oder gleich ist ε ist, kann eine Zufallsaktion ausgewählt werden, um die Umgebung weiter zu erkunden. Wenn die erwartete Belohnung für die ausgewählte Aktion negativ ist, kann der Agent die ausgewählte Aktion rückgängig machen. Andernfalls wählt der Agent die nächste Aktion, um die Belohnung in seinem aktuellen Zustand zu maximieren. Wenn jedoch die voraussichtliche Belohnung für die gewählte Aktion geringer ist als die Belohnung für eine frühere Aktion, empfiehlt die Strategie erneut die frühere Aktion.
-
Im Zusammenhang mit der Auswahl von Kommunikationsmethoden bestimmt die „Aktion“, welche Kommunikationsmethode zwischen einem Paar von Microservices verwendet werden soll. Wenn der Agent feststellt, dass die bisherige Kommunikationsmethode die besten Ergebnisse liefert, dann wird er diese Kommunikationsmethode weiterhin verwenden. Ändert sich jedoch der Zustand so, dass eine neue Kommunikationsmethode einen besseren erwarteten Nutzen bringt, kann der Agent die neue Kommunikationsmethode implementieren.
-
Eine Vielzahl unterschiedlicher Bedingungen kann dazu führen, dass eine Kommunikationsmethode einer anderen vorgezogen wird. Wenn die Ausgabe eines Mikrodienstes von vielen anderen Mikrodiensten als Eingabe verwendet wird, kann ein Nachrichtenbus erwünscht sein, um zu vermeiden, dass zwischen jeder Quell-Mikrodienstinstanz und jeder Ziel-Mikrodienstinstanz eine separate Verbindung hergestellt wird. Wenn die erforderlichen Nachrichtenübermittlungsraten weniger einheitlich sind, z. B. wenn der Ziel-Microservice A fünf Nachrichten pro Sekunde verarbeitet, während der Ziel-Microservice B dreißig Nachrichten pro Sekunde verarbeitet, kann es effizienter sein, Point-to-Point-Messaging zu verwenden.
-
In 6 ist eine beispielhafte Rechenvorrichtung 500 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Die Rechenvorrichtung 500 ist so konfiguriert, dass sie eine Klassifikatorverbesserung durchführt.
-
Die Rechenvorrichtung 500 kann als jede Art von Rechen- oder Computergerät ausgeführt werden, das in der Lage ist, die hierin beschriebenen Funktionen auszuführen, einschließlich, ohne Einschränkung, eines Computers, eines Servers, eines Rack-basierten Servers, eines Blade-Servers, einer Workstation, eines Desktop-Computers, eines Laptops, eines Notebooks, eines Tablet-Computers, eines mobilen Rechengeräts, eines tragbaren Rechengeräts, eines Netzwerkgeräts, eines Webgeräts, eines verteilten Rechensystems, eines prozessorbasierten Systems und/oder eines elektronischen Konsumgeräts. Zusätzlich oder alternativ kann das Computergerät 500 als ein oder mehrere Rechenschlitten, Speicherschlitten oder andere Racks, Schlitten, Computergehäuse oder andere Komponenten eines physisch disaggregierten Computergeräts verkörpert werden.
-
Wie in 6 dargestellt, umfasst das Computergerät 600 den Prozessor 610, ein Eingabe-/Ausgabe-Teilsystem 620, einen Speicher 630, ein Datenspeichergerät 640 und ein Kommunikations-Teilsystem 650 und/oder andere Komponenten und Geräte, die üblicherweise in einem Server oder einem ähnlichen Computergerät zu finden sind. In anderen Ausführungsformen kann die Rechenvorrichtung 600 andere oder zusätzliche Komponenten enthalten, wie sie üblicherweise in einem Servercomputer zu finden sind (z. B. verschiedene Eingabe-/Ausgabegeräte). Darüber hinaus können in einigen Ausführungsformen eine oder mehrere der dargestellten Komponenten in eine andere Komponente integriert sein oder anderweitig einen Teil dieser Komponente bilden. Zum Beispiel kann der Speicher 630 oder Teile davon in einigen Ausführungsformen in den Prozessor 610 integriert sein.
-
Der Prozessor 610 kann als jede Art von Prozessor ausgeführt werden, der die hier beschriebenen Funktionen ausführen kann. Der Prozessor 610 kann als Einzelprozessor, als mehrere Prozessoren, als Zentraleinheit(en) (CPU(s)), als Grafikverarbeitungseinheit(en) (GPU(s)), als Einzel- oder Mehrkernprozessor(en), als digitaler Signalprozessor(en), als Mikrocontroller oder als andere(r) Prozessor(en) oder Verarbeitungs-/Steuerungsschaltung(en) ausgeführt werden.
-
Der Speicher 630 kann als jede Art von flüchtigem oder nichtflüchtigem Speicher oder Datenspeicher ausgeführt werden, der die hier beschriebenen Funktionen ausführen kann. Im Betrieb kann der Speicher 630 verschiedene Daten und Software speichern, die während des Betriebs des Computergeräts 600 verwendet werden, wie z. B. Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. Der Speicher 630 ist mit dem Prozessor 610 über das E/A-Subsystem 620 kommunikativ verbunden, das als Schaltungen und/oder Komponenten ausgeführt sein kann, um Eingabe-/Ausgabeoperationen mit dem Prozessor 610, dem Speicher 630 und anderen Komponenten des Computergeräts 600 zu erleichtern. Beispielsweise kann das E/A-Subsystem 620 als Speicher-Controller-Hubs, Eingabe-/Ausgabesteuerungs-Hubs, Plattform-Controller-Hubs, integrierte Steuerschaltungen, Firmware-Geräte, Kommunikationsverbindungen (z. B. Punkt-zu-Punkt-Verbindungen, Busverbindungen, Drähte, Kabel, Lichtleiter, Leiterbahnen usw.) und/oder andere Komponenten und Subsysteme zur Erleichterung der Eingabe-/Ausgabeoperationen ausgeführt werden oder diese enthalten. In einigen Ausführungsformen kann das E/A-Teilsystem 620 einen Teil eines System-on-Chip (SOC) bilden und zusammen mit dem Prozessor 610, dem Speicher 630 und anderen Komponenten des Computergeräts 600 auf einem einzigen integrierten Schaltungschip untergebracht werden.
-
Das Datenspeichergerät 640 kann als jede Art von Gerät oder Geräten ausgeführt werden, die für die kurz- oder langfristige Speicherung von Daten konfiguriert sind, wie z. B. Speichergeräte und -schaltungen, Speicherkarten, Festplattenlaufwerke, Solid State Drives oder andere Datenspeichergeräte. Das Datenspeichergerät 640 kann Programmcode 640A für die Container-Orchestrierung und 640B für die Verwaltung von Kommunikationsmethoden innerhalb eines dezentralen Computersystems speichern. Das Kommunikationssubsystem 650 des Computergeräts 600 kann als ein beliebiger Netzwerkschnittstellencontroller oder eine andere Kommunikationsschaltung, -vorrichtung oder -sammlung davon ausgeführt werden, die in der Lage ist, die Kommunikation zwischen dem Computergerät 600 und anderen entfernten Geräten über ein Netzwerk zu ermöglichen. Das Kommunikationssubsystem 650 kann so konfiguriert sein, dass es eine oder mehrere Kommunikationstechnologien (z. B. drahtgebundene oder drahtlose Kommunikation) und zugehörige Protokolle (z. B. Ethernet, InfiniBand®, Bluetooth®, Wi-Fi®, WiMAX usw.) verwendet, um eine solche Kommunikation durchzuführen.
-
Wie dargestellt, kann das Computergerät 600 auch ein oder mehrere Peripheriegeräte 660 enthalten. Die Peripheriegeräte 660 können eine beliebige Anzahl von zusätzlichen Eingabe-/Ausgabegeräten, Schnittstellengeräten und/oder anderen Peripheriegeräten umfassen. In einigen Ausführungsformen können die Peripheriegeräte 660 beispielsweise ein Display, einen Touchscreen, Grafikschaltkreise, eine Tastatur, eine Maus, ein Lautsprechersystem, ein Mikrofon, eine Netzwerkschnittstelle und/oder andere Eingabe-/Ausgabegeräte, Schnittstellengeräte und/oder Peripheriegeräte umfassen.
-
Natürlich kann das Computergerät 600 auch andere Elemente (nicht dargestellt) enthalten, wie es für einen Fachmann ohne weiteres vorstellbar ist, oder auch bestimmte Elemente weglassen. Zum Beispiel können verschiedene andere Sensoren, Eingabegeräte und/oder Ausgabegeräte in der Rechenvorrichtung 600 enthalten sein, abhängig von der jeweiligen Implementierung derselben, wie von einem Fachmann leicht zu verstehen ist. Zum Beispiel können verschiedene Arten von drahtlosen und/oder verdrahteten Eingabe- und/oder Ausgabegeräten verwendet werden. Darüber hinaus können zusätzliche Prozessoren, Steuerungen, Speicher usw. in verschiedenen Konfigurationen verwendet werden. Diese und andere Variationen des Verarbeitungssystems 600 können von einem Fachmann angesichts der hierin enthaltenen Lehren der vorliegenden Erfindung ohne weiteres in Betracht gezogen werden.
-
Die hier beschriebenen Ausführungsformen können vollständig aus Hardware, vollständig aus Software oder sowohl aus Hardware- als auch aus Softwareelementen bestehen. In einer bevorzugten Ausführungsform ist die vorliegende Erfindung in Software implementiert, die Firmware, residente Software, Mikrocode usw. umfasst, aber nicht darauf beschränkt ist.
-
Die Ausführungsformen können ein Computerprogrammprodukt umfassen, auf das von einem computerverwendbaren oder computerlesbaren Medium aus zugegriffen werden kann, das Programmcode zur Verwendung durch oder in Verbindung mit einem Computer oder einem Befehlsausführungssystem bereitstellt. Ein computernutzbares oder computerlesbares Medium kann jede Vorrichtung umfassen, die das Programm zur Verwendung durch oder in Verbindung mit dem Befehlsausführungssystem, der Vorrichtung oder dem Gerät speichert, kommuniziert, weitergibt oder transportiert. Das Medium kann ein magnetisches, optisches, elektronisches, elektromagnetisches, Infrarot- oder Halbleitersystem (oder ein Gerät oder eine Vorrichtung) oder ein Ausbreitungsmedium sein. Das Medium kann ein computerlesbares Speichermedium wie ein Halbleiter- oder Festkörperspeicher, ein Magnetband, eine austauschbare Computerdiskette, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), eine starre Magnetplatte, eine optische Platte usw. sein.
-
Jedes Computerprogramm kann in einem maschinenlesbaren Speichermedium oder einer maschinenlesbaren Vorrichtung (z. B. Programmspeicher oder Magnetplatte) gespeichert sein, das bzw. die von einem allgemeinen oder speziellen programmierbaren Computer gelesen werden kann, um den Betrieb eines Computers zu konfigurieren und zu steuern, wenn das Speichermedium oder die Vorrichtung von dem Computer gelesen wird, um die hier beschriebenen Verfahren durchzuführen. Das erfindungsgemäße System kann auch als in einem computerlesbaren Speichermedium verkörpert angesehen werden, das mit einem Computerprogramm konfiguriert ist, wobei das so konfigurierte Speichermedium einen Computer veranlasst, in einer spezifischen und vordefinierten Weise zu arbeiten, um die hierin beschriebenen Funktionen auszuführen.
-
Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, kann mindestens einen Prozessor umfassen, der direkt oder indirekt über einen Systembus mit Speicherelementen verbunden ist. Zu den Speicherelementen können ein lokaler Speicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, ein Massenspeicher und Cache-Speicher gehören, in denen zumindest ein Teil des Programmcodes vorübergehend gespeichert wird, um die Anzahl der Abrufe des Codes aus dem Massenspeicher während der Ausführung zu verringern. Eingabe-/Ausgabe- oder E/A-Geräte (einschließlich, aber nicht beschränkt auf Tastaturen, Bildschirme, Zeigegeräte usw.) können entweder direkt oder über zwischengeschaltete E/A-Controller mit dem System verbunden werden.
-
Netzwerkadapter können auch an das System gekoppelt werden, um das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernten Druckern oder Speichergeräten über dazwischen liegende private oder öffentliche Netzwerke zu verbinden. Modems, Kabelmodems und Ethernet-Karten sind nur einige der derzeit verfügbaren Arten von Netzwerkadaptern.
-
Wie hier verwendet, kann sich der Begriff „Hardware-Prozessor-Teilsystem“ oder „Hardware-Prozessor“ auf einen Prozessor, einen Speicher, eine Software oder Kombinationen davon beziehen, die zusammenarbeiten, um eine oder mehrere spezifische Aufgaben zu erfüllen. In nützlichen Ausführungsformen kann das Hardware-Prozessor-Teilsystem ein oder mehrere Datenverarbeitungselemente (z. B. Logikschaltungen, Verarbeitungsschaltungen, Befehlsausführungsgeräte usw.) umfassen. Das eine oder die mehreren Datenverarbeitungselemente können in einer zentralen Verarbeitungseinheit, einer Grafikverarbeitungseinheit und/oder einer separaten prozessor- oder rechnerelementbasierten Steuerung (z. B. Logikgatter usw.) enthalten sein. Das Hardware-Prozessor-Subsystem kann einen oder mehrere On-Board-Speicher enthalten (z. B. Caches, dedizierte Speicher-Arrays, Festwertspeicher usw.). In einigen Ausführungsformen kann das Hardware-Prozessor-Teilsystem einen oder mehrere Speicher enthalten, die sich auf der Platine oder außerhalb der Platine befinden können oder die für die Verwendung durch das Hardware-Prozessor-Teilsystem bestimmt sein können (z. B. ROM, RAM, BIOS (Basic Input/Output System), usw.).
-
In einigen Ausführungsformen kann das Hardware-Prozessor-Subsystem ein oder mehrere Softwareelemente enthalten und ausführen. Das eine oder die mehreren Software-Elemente können ein Betriebssystem und/oder eine oder mehrere Anwendungen und/oder spezifischen Code enthalten, um ein bestimmtes Ergebnis zu erzielen.
-
In anderen Ausführungsformen kann das Hardware-Prozessor-Teilsystem spezielle, spezialisierte Schaltungen enthalten, die eine oder mehrere elektronische Verarbeitungsfunktionen ausführen, um ein bestimmtes Ergebnis zu erzielen. Solche Schaltungen können eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs), feldprogrammierbare Gate-Arrays (FPGAs) und/oder programmierbare Logik-Arrays (PLAs) umfassen.
-
Diese und andere Variationen eines Hardware-Prozessor-Subsystems sind auch in Übereinstimmung mit Ausführungsformen der vorliegenden Erfindung in Betracht gezogen.
-
Die Bezugnahme in der Beschreibung auf „eine Ausführungsform“ oder „eine Ausführungsform“ der vorliegenden Erfindung sowie andere Varianten davon bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur, eine bestimmte Eigenschaft usw., die im Zusammenhang mit der Ausführungsform beschrieben werden, in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten sind. Daher beziehen sich die Ausdrücke „in einer Ausführungsform“ oder „in einer Ausführungsform“ sowie andere Variationen, die an verschiedenen Stellen in der Beschreibung erscheinen, nicht notwendigerweise alle auf dieselbe Ausführungsform. Es ist jedoch zu verstehen, dass die Merkmale einer oder mehrerer Ausführungsformen angesichts der hierin enthaltenen Lehren der vorliegenden Erfindung kombiniert werden können.
-
Es ist zu beachten, dass die Verwendung der folgenden Ausdrücke „/“, „und/oder“ und „mindestens eines von“, z. B. in den Fällen „A/B“, „A und/oder B“ und „mindestens eines von A und B“, nur die Auswahl der ersten aufgeführten Option (A) oder nur die Auswahl der zweiten aufgeführten Option (B) oder die Auswahl beider Optionen (A und B) einschließen soll. Ein weiteres Beispiel: In den Fällen „A, B und/oder C“ und „mindestens eine der Optionen A, B und C“ soll diese Formulierung nur die Auswahl der ersten aufgeführten Option (A) oder nur die Auswahl der zweiten aufgeführten Option (B) oder nur die Auswahl der dritten aufgeführten Option (C) umfassen, oder nur die Auswahl der ersten und der zweiten aufgeführten Option (A und B), oder nur die Auswahl der ersten und der dritten aufgeführten Option (A und C), oder nur die Auswahl der zweiten und der dritten aufgeführten Option (B und C), oder die Auswahl aller drei Optionen (A und B und C). Dies kann für beliebig viele der aufgeführten Optionen erweitert werden.
-
Das Vorstehende ist in jeder Hinsicht illustrativ und beispielhaft, aber nicht einschränkend zu verstehen, und der Umfang der hierin offenbarten Erfindung ist nicht aus der detaillierten Beschreibung, sondern vielmehr aus den Ansprüchen zu entnehmen, die gemäß der vollen Breite der Patentgesetze ausgelegt werden. Es versteht sich von selbst, dass die hier gezeigten und beschriebenen Ausführungsformen nur zur Veranschaulichung der vorliegenden Erfindung dienen und dass der Fachmann verschiedene Modifikationen vornehmen kann, ohne vom Umfang und Geist der Erfindung abzuweichen. Der Fachmann kann verschiedene andere Merkmalskombinationen implementieren, ohne von dem Umfang und dem Geist der Erfindung abzuweichen. Nachdem somit Aspekte der Erfindung mit den von den Patentgesetzen geforderten Einzelheiten und Einzelheiten beschrieben worden sind, ist das, was beansprucht und durch die Patentschrift geschützt werden soll, in den beigefügten Ansprüchen dargelegt.
-
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 63/175066 [0001]
- US 17/720776 [0001]