-
Technisches Gebiet
-
Mindestens eine Ausführungsform betrifft die Versionierung und den Einsatz von Software. Ausführungsformen betreffen automatisierte kontinuierliche Integrations- und kontinuierliche Einsatz- (CI/CD) Pipelines, die zur Versionierung und Paketierung von Infrastrukturkomponenten für ein Rechenzentrum verwendet werden.
-
Hintergrund
-
Hyperkonvergente Infrastruktur (HCI) ist ein softwaredefiniertes Infrastrukturmodell, das in der Regel die Virtualisierung verschiedener Infrastrukturkomponenten eines Rechenzentrums umfasst. Die Inbetriebnahme eines entfernten Rechenzentrums mit einer HCI umfasst häufig die Paketierung, Verteilung und in einigen Fällen die Aufrüstung einer Vielzahl unterschiedlicher Infrastrukturkomponenten des entfernten Rechenzentrums. Die verschiedenen Infrastrukturkomponenten werden oft asynchron in mehreren Bereichen von verschiedenen Teams und/oder Anbietern entwickelt. Zu den verschiedenen Infrastrukturkomponenten können unter anderem Netzwerk-, Speicher-, Rechen-, Sicherheits- und Bereitstellungskomponenten gehören, um nur einige zu nennen. Um ein neues Rechenzentrum aus der Ferne bereitzustellen, zu konfigurieren und einzusetzen, wird die Vielzahl der Infrastrukturkomponenten in der Regel versioniert, verpackt und an das entfernte Rechenzentrum verteilt. Leider ist das Versionieren, Verpacken und Verteilen der verschiedenen Komponenten als eine Einheit ein komplexer und manueller Prozess, und es gibt in der Branche keine Lösungen, die in der Lage sind, Rechenzentrumkomponenten zusammenhängend zu verwalten.
-
In einigen Versuchen wird jede der mehreren Infrastrukturkomponenten in Softwarecontainer umgewandelt. Dadurch entstehen für jede Komponente mehrere unterschiedliche Container, von denen jeder alle für die jeweilige Infrastrukturkomponente erforderlichen Dateien in einem eigenen, eindeutigen Image enthält. Durch diese Verwendung von containerisierten Rechenzentrumkomponenten wird jede Infrastrukturkomponente vom Rest der Infrastrukturkomponenten isoliert. Jeder Container, der zu einer bestimmten Infrastrukturkomponente gehört, wird dann an einen Standort des entfernten Rechenzentrums verteilt. Mit zunehmender Anzahl der verwalteten Rechenzentren wird das Management mehrerer Container für jedes Rechenzentrum jedoch äußerst komplex und ineffizient.
-
In anderen Versuchen werden die mehreren Infrastrukturkomponenten in einen einheitlichen Arbeitsbereich geklont, und der einheitliche Arbeitsbereich wird in einer einzigen verteilten Datei archiviert, die an einen Standort des entfernten Rechenzentrums verteilt wird. Der Kunde kann die einzelne verteilte Datei verwenden, um das entfernte Rechenzentrum manuell mit den Infrastrukturkomponenten zu versorgen. Wenn verschiedene Infrastrukturkomponenten des entfernten Rechenzentrums aktualisiert werden müssen, müssen die mehreren Infrastrukturkomponenten in einen aktualisierten einheitlichen Arbeitsbereich mit aktualisierten Infrastrukturkomponenten geklont und in einer aktualisierten einzelnen verteilten Datei archiviert werden, die an den Standort des entfernten Rechenzentrums zur Aktualisierung verteilt wird. Daher ist eine Trennung der aktualisierten Infrastrukturkomponenten von der Vielzahl der Infrastrukturkomponenten schwer zu erreichen. Daher ist die einzelne verteilte Datei auf den Start von Operationen beschränkt, wenn ein neuer Datencluster erstellt wird, und ist für die Aktualisierung eines bestehenden Rechenzentrums ungeeignet, da der Arbeitsablauf mit einer einzigen verteilbaren Datei schwerfällig ist und Unterbrechungen erfordert, da es keine Möglichkeit gibt, das entfernte Rechenzentrum inkrementell zu aktualisieren.
-
Dementsprechend, wie oben dargelegt, stellen Ausführungsformen der vorliegenden Erfindung Lösungen bereit, die die Verwendung automatisierter Pipelines zur Versionierung und Paketierung einzelner Komponenten, deren Veröffentlichung in einem Repository und die anschließende Erstellung eines verteilbaren Artefakt-Repository-Pakets unter Verwendung aller unterschiedlichen Komponenten umfassen. Die einzelne Artefakt-Repository-Lösung kann dann bequem über einen Over-the-Air-Workflow an entfernte Standorte versandt werden. Im Gegensatz zu früheren Ansätzen ist eine solche Artefakt-Repository-Lösung leichtgewichtig und kann über den Äther versandt, einfach heruntergeladen und ohne Unterbrechung an Ort und Stelle aktualisiert werden.
-
Darüber hinaus umfassen Ausführungsformen der vorliegenden Erfindung eine auf einem Artefakt-Repository basierende Lösung, die in der Lage ist, die heterogenen Arten von versionierten Paketen als eine Einheit zu bündeln, indem sie ein jedem versionierten Paket zugeordnetes Floating-Tag verwendet, es Over-the-Air an ein entferntes Netzwerk sendet, bestehende Repositories einrichtet oder ersetzt und neue Versionen von Komponenten unterstützt. In einigen Ausführungsformen ermöglichen die vorgestellten Lösungen auch das Zurücksetzen des Rechenzentrums auf frühere Versionen (z. B. n-1 und n-2).
-
Um das Problem des effizienten Bereitstellung und Management von HCI-Rechenzentrumskomponenten zu lösen, verwenden Ausführungsformen der vorliegenden Erfindung ein Paket-Artefakt-Repository - auch bekannt als Repository. Eine solche Lösung verpackt auf elegante Weise zunächst versionierte Einzelkomponenten, füllt automatisch ein internes Artefakt-Repository auf und erstellt dann einen verteilbaren Container. Dieser All-in-One-Container enthält Komponenten, mit denen das Artefakt-Repository in einem entfernten Cluster eingerichtet werden kann.
-
Kurzbeschreibung der Zeichnungen
-
Verschiedene Ausführungsformen gemäß der vorliegenden Offenbarung werden unter Bezugnahme auf die Zeichnungen beschrieben, in denen:
- 1 stellt ein Beispiel für ein Rechenzentrumsystem gemäß mindestens einer Ausführungsform dar;
- 2 stellt eine Anwendungsmanagement-Plattform gemäß mindestens einer Ausführungsform dar;
- 3 stellt eine Paketierungs- und Bündelungskomponente der Anwendungsmanagement-Plattform gemäß mindestens einer Ausführungsform dar;
- 4 stellt die Bereitstellung eines Befehlsknotens eines entfernten Rechenzentrums gemäß mindestens einer Ausführungsform dar;
- 5 stellt eine Einsatzmanager-Komponente der Anwendungsmanagement-Plattform gemäß mindestens einer Ausführungsform dar;
- 6 ist ein Sequenzdiagramm, das ein Verfahren zur Bereitstellung der verbleibenden Knoten des entfernten Rechenzentrums gemäß mindestens einer Ausführungsform darstellt;
- 7 stellt eine Aktualisierungskomponente der Anwendungsmanagementplattform gemäß mindestens einer Ausführungsform dar;
- 8 ist ein Sequenzdiagramm, das ein Verfahren zur Identifizierung von Aktualisierungen für Knoten des entfernten Rechenzentrums gemäß mindestens einer Ausführungsform darstellt;
- 9 stellt ein Computersystem gemäß mindestens einer Ausführungsform dar;
- 10 stellt ein Computersystem gemäß mindestens einer Ausführungsform dar;
- 11 stellt zumindest Teile eines Grafikprozessors gemäß einer oder mehrerer Ausführungsformen dar;
- 12 stellt zumindest Teile eines Grafikprozessors gemäß einer oder mehrerer Ausführungsformen dar;
- 13 ist ein beispielhaftes Datenflussdiagramm für eine fortgeschrittene Datenverarbeitungspipeline gemäß mindestens einer Ausführungsform;
- 14 ist ein Systemdiagramm für ein beispielhaftes System zum Trainieren, Anpassen, Instanziieren und Einsetzen von maschinellen Lernmodellen in einer fortgeschrittenen Datenverarbeitungspipeline gemäß mindestens einer Ausführungsform;
- 15A und 15B stellen ein Datenflussdiagramm für einen Prozess zum Trainieren eines maschinellen Lernmodells sowie eine Client-Server-Architektur zum Verbessern von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen gemäß mindestens einer Ausführungsform dar;
- 16 stellt eine Top-Level-Diensthierarchie gemäß mindestens einer Ausführungsform dar.
-
Ausführliche Beschreibung
-
Die hier beschriebenen Verfahren, Systeme, Schaltungen und Vorrichtungen dienen der Versionierung, Paketierung und Bündelung einzelner Infrastrukturkomponenten in einem verteilbaren Container (z. B. einer Anwendungsmanagement-Plattform). Beispielsweise können die hier beschriebenen Verfahren, Systeme, Schaltungen und Vorrichtungen automatisierte kontinuierliche Integrations- und kontinuierliche Einsatz- (CI/CD) Pipelines ausführen, um Ereignisse (z. B. Übermittlung oder Aktualisierung) in Bezug auf jede einzelne Komponente in einem Rechenzentrum zu validieren. Die CI/CD-Pipeline umfasst eine Reihe von Schritten oder Operationen (z. B. Validierung, Codekompilierung, Dateiverknüpfung usw.), die durchgeführt werden, um eine neue Version der einzelnen Komponente in einem Rechenzentrum bereitzustellen und zu installieren. Solche Operationen können durchgeführt werden, um einen oder mehrere neue Cluster und/oder Ressourcen in einem Rechenzentrum einzusetzen und/oder um bestehende Cluster und/oder Ressourcen zu aktualisieren. Als Reaktion auf die Zusammenführung der Übermittlung oder Aktualisierung einer einzelnen Komponente wird die einzelne Komponente versioniert, erstellt und verpackt. Die versionierte und verpackte Einzelkomponente wird in ein internes Artefakt-Repository hochgeladen (z. B. gespeichert). Jede versionierte und verpackte Einzelkomponente, die in das interne Artefaktarchiv hochgeladen wird, kann mit einem kundenspezifischen Floating Tag versehen werden, das von der Vielzahl der Einzelkomponenten gemeinsam genutzt wird. Das Floating Tag wird entsprechend dem Status des versionierten Pakets der einzelnen Komponente definiert (z. B. testbereit, qualitätsgesichert, Sicherheit zertifiziert oder andere Ereignisse, die die Freigabe qualifizieren, usw.). Dementsprechend kann jede einzelne Komponente verschiedene versionierte Pakete enthalten, die jeweils mit einer anderen Kennzeichnung versehen sind. Spezifische Versionen jeder einzelnen Komponente werden in einem verteilbaren Container gebündelt, der auf einem bestimmten Tag basiert (z. B. einem bestimmten Floating Tag). Jeder verteilbare Container kann versioniert und mit einem kundenspezifischen Tag versehen sein. Der verteilbare Container kann ein Kubernetes-nativer Container für den gesamten Lebenszyklus sein, der containerisierte Anwendungen von der Entwicklung bis zur Produktion sichert (z. B. ein Nexus-Container). Der verteilbare Container kann in ein öffentliches Artefakt-Repository hochgeladen werden, auf das ein Kunde des entfernten Rechenzentrums Zugriff hat. Der verteilbare Container kann in einem optischen Disk-Image (z. B. ISO-Image) enthalten sein, das außerdem ein Basis-OS (z. B. ein UNIX- oder LINUX-basiertes Betriebssystem) und ein automatisches Installationsprogramm enthält. Das ISO-Image kann zur Installation der Anwendungsmanagement-Plattform in einem entfernten Rechenzentrum verwendet werden.
-
In einer Ausführungsform erzeugt die Verarbeitungslogik für jede Ausführung einer kontinuierlichen Integrations- und kontinuierlichen Auslieferungs-/Einsatz- (CI/CD) Pipeline einzelner Infrastrukturkomponenten, die in einem Rechenzentrum eingesetzt werden sollen, ein eindeutiges, versioniertes Paket für jede einzelne Infrastrukturkomponente. Die Verarbeitungslogik speichert jedes einzelne versionierte Paket jeder einzelnen Infrastrukturkomponente in einem internen Artefakt-Repository. Die Verarbeitungslogik identifiziert ein bestimmtes eindeutiges, versioniertes Paket jeder einzelnen Infrastrukturkomponente aus dem internen Artefakt-Repository. Die Verarbeitungslogik fasst das spezifizierte, eindeutig versionierte Paket jeder einzelnen Infrastrukturkomponente in einem verteilbaren Container zusammen. Dementsprechend kann die Verarbeitungslogik jede einzelne Komponente versionieren und dann verpacken, um sie in einen einzigen verteilbaren Container aufzunehmen. Folglich können einzelne Infrastrukturkomponenten einzeln aktualisiert werden, ohne dass sie in einzelne Container verpackt werden müssen. Dies kann zu einer geringeren Komplexität und einer maximalen Effizienz beim Einsatz in einem entfernten Rechenzentrum führen.
-
Des Weiteren werden hier Verfahren, Systeme, Schaltungen und Vorrichtungen zum Einsetzen, Bereitstellen und Verwalten von Ressourcen in einem entfernten Rechenzentrum beschrieben. Beispielsweise können die hier beschriebenen Verfahren, Systeme, Schaltungen und Vorrichtungen einen bereitgestellten Befehlsknoten eines entfernten Rechenzentrums verwenden, um das Bereitstellen der übrigen Knoten des entfernten Rechenzentrums zu automatisieren. Der Befehlsknoten kann einen Einsatzmanager und einen oder mehrere Dienste (z. B. Konfigurationsmanagement- und Bereitstellungstools) enthalten. Der Einsatzmanager bezieht sich auf eine Reihe von Kubernetes-Operatoren, die eine Reihe von Ressourcen auf der Vielzahl von Knoten des entfernten Rechenzentrums bereitstellen und verwalten. Insbesondere erhält jeder kundenspezifische Controller eines Operators eine kundenspezifische Ressourcendefinition, die einen Zielzustand der Ressource angibt, um Unterschiede zwischen einem aktuellen Zustand der Ressource und einem Zielzustand der Ressource zu erkennen. Infolgedessen synchronisiert der kundenspezifische Controller den aktuellen Zustand der Ressource mit dem Zielzustand der Ressource. Die Bereitstellungstools (z. B. Foreman) können ein Basis-OS auf den verbleibenden Knoten des entfernten Rechenzentrums installieren, und die Konfigurationsmanagementtools (z. B. AWX) können die verbleibenden Knoten des entfernten Rechenzentrums konfigurieren. Der Ressourcensatz kann Top-Level-Dienste umfassen (z. B. einen Clusterdienst, einen Speicherdienst, einen Metadatendienst usw.), die jeweils eine oder mehrere abhängige Ressourcen enthalten (z. B. einen Paketmanager, einen Knotenkonfigurationsdienst und einen Sicherheitskonfigurationsdienst). Eine oder mehrere Ressourcen der Ressourcengruppe können eine logische Einheit eines Dienstes darstellen.
-
Als Reaktion auf eine Anforderung eines Endbenutzers des entfernten Rechenzentrums identifiziert der Einsatzmanager einen Cluster (z. B. eine Teilmenge der Vielzahl von Knoten) des entfernten Rechenzentrums, um die Bereitstellung und das Management einer oder mehrerer Ressourcen zu automatisieren, die mit einer Anwendung oder Computerplattform verbunden sind. Das Einsatzmanagement identifiziert einen Top-Level-Dienst unter den einen oder mehreren Ressourcen, die auf dem Cluster bereitgestellt (z. B. installiert oder eingesetzt) werden sollen. Der kundenspezifische Controller des Operators, der mit den Top-Level-Diensten verbunden ist, stellt fest, dass ein aktueller Zustand des Clusters nicht mit dem Zielzustand des Clusters übereinstimmt (z. B. ist der Cluster leer oder enthält den Top-Level-Dienst nicht). Der kundenspezifische Controller, der mit dem Top-Level-Dienst verbunden ist, synchronisiert den aktuellen Zustand des Clusters, der mit dem Top-Level-Dienst verbunden ist, mit dem Zielzustand des Clusters, der mit dem Top-Level-Dienst verbunden ist, was die Installation der abhängigen Ressourcen, die mit dem Top-Level-Dienst verbunden sind, in dem Cluster beinhalten kann. Infolgedessen erzeugt der Einsatzmanager eine kundenspezifische Ressourcendefinition (CRD) für jede der abhängigen Ressourcen, die mit dem Top-Level-Dienst verbunden sind, und stellt die erzeugte CRD den kundenspezifischen Controllern zur Verfügung, die mit jeder der abhängigen Ressourcen verbunden sind. Die mit den abhängigen Ressourcen verbundenen kundenspezifischen Controller synchronisieren den aktuellen Zustand des mit den abhängigen Ressourcen verbundenen Clusters mit dem Zielzustand des mit den abhängigen Ressourcen verbundenen Clusters. Sobald alle abhängigen Ressourcen fertiggestellt sind, wird der Status der Fertigstellung der Top-Level-Dienste aktualisiert, wodurch der Endbenutzer eine Benachrichtigung erhält, dass die Top-Level-Dienste für den Cluster bereitgestellt wurden.
-
In einer Ausführungsform empfängt die Verarbeitungslogik durch eine Datenebene eines Einsatzmanagers eine Anforderung zur Bereitstellung eines Top-Level-Dienstes auf einem Knoten eines entfernten Rechenzentrums. Die Verarbeitungslogik identifiziert durch die Datenebene eine abhängige Ressource, die mit dem Top-Level-Dienst verbunden ist, wobei der Top-Level-Dienst von der abhängigen Ressource abhängig ist. Die Verarbeitungslogik liefert durch die Datenebene eine kundenspezifische Ressourcendefinition, die mit der abhängigen Ressource verbunden ist, an einen kundenspezifischen Controller, der mit der abhängigen Ressource verbunden ist, um den Knoten des entfernten Rechenzentrums mit der abhängigen Ressource bereitzustellen. Als Reaktion auf die Bereitstellung des Knotens mit der abhängigen Ressource empfängt die Verarbeitungslogik durch eine Steuerungsebene des Einsatzmanagers eine Benachrichtigung, dass der Top-Level-Dienst auf einem Knoten bereitgestellt wurde. Der Einsatzmanager stellt dann automatisch die übrigen Knoten des entfernten Rechenzentrums bereit, ohne dass der Endbenutzer eingreifen muss (z. B. ohne dass der Endbenutzer jeden Knoten mit jeder Ressource manuell bereitstellt). Dies kann zu einer geringeren Komplexität und maximalen Effizienz bei der Bereitstellung der übrigen Knoten des entfernten Rechenzentrums führen.
-
Ferner werden hier Verfahren, Systeme, Schaltungen und Vorrichtungen zur Überwachung und Aktualisierung von Ressourcen eines oder mehrerer Cluster eines entfernten Rechenzentrums beschrieben. Beispielsweise können die hier beschriebenen Verfahren, Systeme, Schaltungen und Vorrichtungen einen bereitgestellten Befehlsknoten eines entfernten Rechenzentrums verwenden, um Ressourcen eines oder mehrerer Cluster eines entfernten Rechenzentrums zu überwachen und zu aktualisieren. Der Befehlsknoten kann einen Cluster-Versionsoperator enthalten, der mit einem öffentlichen Server kommuniziert, um verfügbare Aktualisierungen für Ressourcen zu überwachen. Insbesondere überwacht der Cluster-Versionsoperator einen Container eines öffentlichen Dienstes, der einen gerichteten azyklischen Graphen (DAG) enthält, der basierend auf Metadaten, die den Ressourcen aus dem öffentlichen Repository zugeordnet sind, generiert wurde und alle möglichen Aktualisierungspfade für jede der Ressourcen darstellt. Der Container kann ferner eine Richtlinien-Engine enthalten, um eine oder mehrere Policies für jede Version der Ressourcen zu definieren, und kann die eine oder mehreren Richtlinien auf den DAG anwenden. Dementsprechend kann der Operator für die Clusterversion die DAG und die entsprechenden Richtlinien analysieren, um festzustellen, ob eine Aktualisierung für eine oder mehrere Ressourcen verfügbar ist, die auf der Vielzahl von Knoten des Rechenzentrums bereitgestellt werden. Der Clusterversions-Operator kann automatisch eine Anforderung erzeugen, die an einen Einsatzmanager des Befehlsknotens übermittelt wird, um den Cluster basierend auf den verfügbaren Aktualisierungen bereitzustellen. Der Einsatzmanager kann als Reaktion auf den Empfang der Anforderung vom Operator der Clusterversion den Cluster mit der aktualisierten Ressource bereitstellen (z. B. aktualisieren).
-
In einer Ausführungsform identifiziert die Verarbeitungslogik durch eine clientseitige Aktualisierungskomponente (z. B. den Cluster-Versionsoperator) eine oder mehrere bereitgestellte Ressourcen einer Vielzahl von Knoten eines entfernten Rechenzentrums. Für jede bereitgestellte Ressource der einen oder mehreren bereitgestellten Ressourcen identifiziert die Verarbeitungslogik durch die clientseitige Aktualisierungskomponente eine verfügbare Aktualisierung der bereitgestellten Ressource basierend auf einem Ressourcengraphen, der mit der bereitgestellten Ressource verbunden ist und Aktualisierungspfade der bereitgestellten Ressource darstellt. Als Reaktion auf die Identifizierung der verfügbaren Aktualisierung liefert die Verarbeitungslogik unter Verwendung der clientseitigen Aktualisierungskomponente eine kundenspezifische Ressourcendefinition, die mit der verfügbaren Aktualisierung der bereitgestellten Ressource verbunden ist, an einen kundenspezifischen Controller, der mit der bereitgestellten Ressource verbunden ist, um einen oder mehrere der mehreren Knoten des entfernten Rechenzentrums mit der aktualisierten bereitgestellten Ressource zu aktualisieren. Infolgedessen überwacht und identifiziert der Operator der Clusterversion regelmäßig verfügbare Aktualisierungen für jede Ressource (z. B. eine einzelne Komponente) und stellt die aktualisierte einzelne Komponente dem Einsatzmanager zur Verfügung, damit sie an einem Knoten des entfernten Rechenzentrums aktualisiert und/oder bereitgestellt werden kann, ohne dass der Benutzer eingreifen muss (z. B. ohne dass ein Benutzer einen vereinheitlichten Arbeitsbereich aller einzelnen Infrastrukturkomponenten anfordert und die aktualisierten einzelnen Infrastrukturkomponenten aus dem vereinheitlichten Arbeitsbereich abtrennt, um das entfernte Rechenzentrum manuell zu aktualisieren und/oder bereitzustellen). Dies kann zu einer geringeren Komplexität und maximalen Effizienz bei der Aktualisierung der Knoten des entfernten Rechenzentrums führen.
-
Rechenzentrum
-
1 zeigt ein Beispiel eines Rechenzentrums 100, in dem mindestens eine Ausführungsform verwendet werden kann. In mindestens einer Ausführungsform umfasst das Rechenzentrum 100 eine Rechenzentrum-Infrastrukturschicht 110, eine Framework-Schicht 120, eine Softwareschicht 130 und eine Anwendungsschicht 140.
-
In mindestens einer Ausführungsform, wie in 1 dargestellt, kann die Infrastrukturschicht 110 des Rechenzentrums einen Ressourcen-Orchestrator 112, gruppierte Rechenressourcen 114 und Knoten-Rechenressourcen („Knoten-C.R.s“) 116(1)-116(N) umfassen, wobei „N“ eine beliebige ganze, positive Zahl darstellt. In mindestens einer Ausführungsform können die Knoten-C.R.s 116(1)-116(N) eine beliebige Anzahl von Zentraleinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbaren Gate-Arrays (FPGAs), Grafikprozessoren usw.), Speichergeräten (z. B., dynamischer Festwertspeicher), Speichergeräte (z. B. Festkörper- oder Festplattenlaufwerke), Netzwerk-Eingabe-/Ausgabegeräte („NW I/O“), Netzwerk-Switches, virtuelle Maschinen („VMs“), Stromversorgungsmodule und Kühlmodule, usw. In mindestens einer Ausführungsform können ein oder mehrere Knoten-C.R.s unter den Knoten-C.R.s 116(1)-116(N) ein Server mit einer oder mehreren der oben genannten Rechenleistungen sein.
-
In mindestens einer Ausführungsform können die gruppierten Rechenressourcen 114 separate Gruppierungen von Knoten-CRs umfassen, die in einem oder mehreren Racks (nicht dargestellt) oder in vielen Racks in Datenzentren an verschiedenen geografischen Standorten (ebenfalls nicht dargestellt) untergebracht sind. Separate Gruppierungen von Knoten-C.R.s innerhalb der gruppierten Rechenressourcen 114 können gruppierte Rechen-, Netzwerk-, Speicher- oder Speicherressourcen umfassen, die zur Unterstützung einer oder mehrerer Arbeitslasten konfiguriert oder zugewiesen werden können. In mindestens einer Ausführungsform können mehrere Knoten-C.R.s mit CPUs oder Prozessoren in einem oder mehreren Racks gruppiert werden, um Rechenressourcen zur Unterstützung einer oder mehrerer Arbeitslasten bereitzustellen. In mindestens einer Ausführungsform können ein oder mehrere Racks auch eine beliebige Anzahl von Stromversorgungsmodulen, Kühlmodulen und Netzwerk-Switches in beliebiger Kombination enthalten.
-
In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 112 einen oder mehrere Knoten-CRs 116(1)-116(N) und/oder gruppierte Rechenressourcen 114 konfigurieren oder anderweitig steuern. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 112 eine Software-Design-Infrastruktur („SDI“)-Managementeinheit für das Rechenzentrum 100 umfassen. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator Hardware, Software oder eine Kombination davon umfassen.
-
In mindestens einer Ausführungsform, wie in 1 gezeigt, umfasst die Framework-Schicht 120 einen Job-Scheduler 122, einen Konfigurationsmanager 124, einen Ressourcenmanager 126 und ein verteiltes Dateisystem 128. In mindestens einer Ausführungsform kann die Framework-Schicht 120 einen Rahmen zur Unterstützung der Software 132 der Softwareschicht 130 und/oder einer oder mehrerer Anwendung(en) 142 der Anwendungsschicht 140 enthalten. In mindestens einer Ausführungsform können die Software 132 oder die Anwendung(en) 142 jeweils webbasierte Dienstsoftware oder Anwendungen umfassen, wie sie beispielsweise von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. In mindestens einer Ausführungsform kann die Framework-Schicht 120 eine Art von freiem und quelloffenem Software-Webanwendungs-Framework wie Apache Spark™ (im Folgenden „Spark“) sein, das ein verteiltes Dateisystem 128 für die Verarbeitung großer Datenmengen (z. B. „Big Data“) nutzen kann, ist aber nicht darauf beschränkt. In mindestens einer Ausführungsform kann der Job-Scheduler 122 einen Spark-Treiber enthalten, um die Planung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 100 unterstützt werden. In mindestens einer Ausführungsform kann der Konfigurationsmanager 124 in der Lage sein, verschiedene Schichten zu konfigurieren, z. B. die Softwareschicht 130 und die Framework-Schicht 120 einschließlich Spark und das verteilte Dateisystem 128 zur Unterstützung der Verarbeitung großer Datenmengen. In mindestens einer Ausführungsform kann der Konfigurationsmanager 124 einen oder mehrere der unten beschriebenen Operationen in Bezug auf den Einsatz, die Konfiguration, due Aktualisierung usw. durchführen. In mindestens einer Ausführungsform kann der Ressourcenmanager 126 in der Lage sein, geclusterte oder gruppierte Computerressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 128 und des Job-Schedulers 122 zugeordnet sind oder werden. In mindestens einer Ausführungsform können geclusterte oder gruppierte Computerressourcen gruppierte Computerressourcen 114 auf der Infrastrukturschicht 110 des Rechenzentrums umfassen. In mindestens einer Ausführungsform kann der Ressourcenmanager 126 mit dem Ressourcen-Orchestrator 112 koordiniert werden, um diese zugeordneten oder zugewiesenen Computerressourcen zu verwalten.
-
In mindestens einer Ausführungsform kann die in der Softwareschicht 130 enthaltene Software 132 Software enthalten, die von mindestens Teilen der Knoten C.R.s 116(1)-116(N), den gruppierten Computerressourcen 114 und/oder dem verteilten Dateisystem 128 der Framework-Schicht 120 verwendet wird. Die eine oder mehreren Arten von Software können unter anderem Internet-Suchsoftware, E-Mail-Virenscan-Software, Datenbanksoftware und Software für Streaming-Videoinhalte umfassen.
-
In mindestens einer Ausführungsform kann (können) die in der Anwendungsschicht 140 enthaltene(n) Anwendung(en) 142 eine oder mehrere Arten von Anwendungen umfassen, die von mindestens Teilen der Knoten C.R.s 116(1)-116(N), den gruppierten Rechenressourcen 114 und/oder dem verteilten Dateisystem 128 der Framework-Schicht 120 verwendet werden. Eine oder mehrere Arten von Anwendungen können eine beliebige Anzahl von Genomanwendungen, kognitiven Berechnungen und Anwendungen für maschinelles Lernen umfassen, einschließlich Trainings- oder Inferenzsoftware, Framework-Software für maschinelles Lernen (z. B. PyTorch, TensorFlow, Caffe usw.) oder andere Anwendungen für maschinelles Lernen, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden, sind jedoch nicht darauf beschränkt.
-
In mindestens einer Ausführungsform können der Konfigurationsmanager 124, der Ressourcenmanager 126 und der Ressourcen-Orchestrator 112 eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen implementieren, die auf einer beliebigen Menge und Art von Daten basieren, die auf jede technisch machbare Weise erfasst wurden. In mindestens einer Ausführungsform können selbstmodifizierende Aktionen einen Rechenzentrumsoperator des Rechenzentrums 100 davon entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Teile eines Rechenzentrums zu vermeiden.
-
In mindestens einer Ausführungsform kann das Rechenzentrum 100 Werkzeuge, Dienste, Software oder andere Ressourcen enthalten, um ein oder mehrere maschinelle Lernmodelle zu trainieren oder Informationen unter Verwendung eines oder mehrerer maschineller Lernmodelle gemäß einer oder mehrerer hierin beschriebener Ausführungsformen vorherzusagen oder abzuleiten. Beispielsweise kann in mindestens einer Ausführungsform ein maschinelles Lernmodell trainiert werden, indem Gewichtsparameter gemäß einer neuronalen Netzwerkarchitektur unter Verwendung von Software und Rechenressourcen berechnet werden, die oben in Bezug auf das Rechenzentrum 100 beschrieben wurden. In mindestens einer Ausführungsform können trainierte maschinelle Lernmodelle, die einem oder mehreren neuronalen Netzen entsprechen, verwendet werden, um Informationen abzuleiten oder vorherzusagen, wobei die oben beschriebenen Ressourcen in Bezug auf das Rechenzentrum 100 verwendet werden, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere hier beschriebene Trainingstechniken berechnet werden.
-
In mindestens einer Ausführungsform kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltkreise (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um das Training und/oder die Inferenz mit den oben beschriebenen Ressourcen durchzuführen. Darüber hinaus können eine oder mehrere der oben beschriebenen Software- und/oder Hardwareressourcen als Dienst konfiguriert werden, um Benutzern das Training oder die Inferenz von Informationen zu ermöglichen, wie z. B. Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
-
Solche Komponenten können verwendet werden, um synthetische Daten zu erzeugen, die Fehlerfälle in einem Netzwerktrainingsprozess imitieren, was dazu beitragen kann, die Leistung des Netzwerkes zu verbessern und gleichzeitig die Menge der synthetischen Daten zu begrenzen, um eine Überanpassung zu vermeiden.
-
Anwendungsmanagement-Plattform
-
2 veranschaulicht eine Anwendungsmanagement-Plattform 200. Die Anwendungsmanagement-Plattform 200 kann eine Vielzahl von Komponenten enthalten, die zwischen einem Provider-Cloud-Server 210 und einem entfernten Rechenzentrum 250 verteilt sind. Insbesondere umfasst der Provider-Cloud-Server 310 eine Paketierungs- und Bündelungskomponente 214, eine serverseitige Aktualisierungskomponente 216 und eine serverseitige Einsatzmanager-Komponente 218 (z. B. eine Einsatzmanagerkontrollebene), und das entfernte Rechenzentrum 250 umfasst eine clientseitige Einsatzmanager-Komponente 262 (z. B. eine Einsatzmanager-Datenebene) und eine clientseitige Aktualisierungskomponente 264.
-
In einer oder mehreren Ausführungsformen kann die Bereitstellung oder Management von Komponenten eines entfernten Rechenzentrums 250 (z. B. eines HCI-Rechenzentrums) einen Einsatzmanager umfassen, der als logischer Satz nativer Kubernetes-Operatoren (z. B. Controller + CRDs) implementiert ist, die den Satz von Ressourcen steuern, die bereitgestellt und verwaltet werden sollen. In einer oder mehreren Beispielimplementierungen stellen eine, einige oder alle Ressourcen der Ressourcengruppe eine logische Einheit eines Dienstes dar. Beispielsweise repräsentiert eine Cluster-Ressource einen benannten Cluster mit seinen eigenen Dienstkonstrukten - Knoten, Knotenkonfigurationen und andere konfigurierbare Anwendungen im Cluster. In einer oder mehreren Beispielimplementierungen kann eine Top-Level-Ressource zur Darstellung eines Dienstes verwendet werden. So sind z. B. Clusterdienst, Speicherdienst, Metadatendienst usw. Top-Level-Dienste. In einigen Ausführungsformen können die Ressourcen hierarchisch aufgebaut sein, d. h. eine Ressource kann aus anderen Ressourcen bestehen. Je nach Ausführungsform können die Anwendungsschicht, die Softwareschicht und/oder die Framework-Schicht einer oder mehreren hierarchischen Ressourcen entsprechen, beispielsweise Top-Level-Ressourcen Ebene und/oder abhängige Ressourcen, wie im Folgenden näher erläutert wird.
-
Die Anwendungsmanagement-Plattform 200 kann verschiedene unterschiedliche Infrastrukturkomponenten identifizieren, die für die Einrichtung und/oder Aktualisierung des entfernten Rechenzentrums 250 erforderlich sind. Die verschiedenen unterschiedlichen Infrastrukturkomponenten können Netzwerkkomponenten, Rechnerkomponenten, Speicherkomponenten, Sicherheitskomponenten, Versionierungskomponenten, Bereitstellungskomponenten usw. umfassen. Die verschiedenen disparaten Infrastrukturkomponenten können außerdem Automatisierungsquellcode, Systemkonfigurationen und verschiedene Arten von Paketinstallationen enthalten, die zur Implementierung einer Abfolge komplexer Arbeitsabläufe zur Einrichtung des entfernten Rechenzentrums 250 verwendet werden. Jede der unterschiedlichen Infrastrukturkomponenten kann von verschiedenen Entwicklern in unterschiedlichen Zeiträumen entwickelt werden. Dementsprechend kann sich zu jedem beliebigen Zeitpunkt die neueste Version einer oder mehrerer Infrastrukturkomponenten ändern. Diese verschiedenen Infrastrukturkomponenten werden in einem Quellartefakt-Repository 212 gespeichert, sobald sie von den Entwicklern entwickelt wurden. Je nach Ausführungsform kann das Quell-Artefakt-Repository 212 Teil des Provider-Cloud-Servers 210 sein oder von diesem getrennt werden.
-
Die Anwendungsmanagement-Plattform 200 kann die Paketierungs- und Bündelungskomponente 214 verwenden, um die verschiedenen unterschiedlichen Infrastrukturkomponenten zu versionieren, zu verpacken und in einem verteilbaren Container zu bündeln. Insbesondere versioniert die Paketierungs- und Bündelungskomponente 214 jede der verschiedenen disparaten Infrastrukturkomponenten. Die Paketierungs- und Bündelungskomponente 214 verpackt jede der verschiedenen unterschiedlichen Infrastrukturkomponenten, indem sie einen Build auf jeder der verschiedenen, zuvor versionierten, unterschiedlichen Infrastrukturkomponenten durchführt. Sobald jede der verschiedenen unterschiedlichen Infrastrukturkomponenten versioniert und verpackt ist, werden sie im externen Artefakt-Repository 290 veröffentlicht (z. B. gespeichert). In einigen Ausführungsformen kann die Paketierungs- und Bündelungskomponente 214 einen Freigabezeiger veröffentlichen (z. B. speichern), der mit jeder der verschiedenen unterschiedlichen Infrastrukturkomponenten verbunden ist, die versioniert, verpackt und in einem Freigabezeiger-Artefakt-Repository 280 veröffentlicht werden.
-
Die Paketierungs- und Bündelungskomponente 214 kann selektiv spezifische verpackte Versionen jeder der verschiedenen unterschiedlichen Infrastrukturkomponenten aus dem externen Artefakt-Repository 290 in einem verteilbaren Container bündeln. Die Paketierungs- und Bündelungskomponente 214 versioniert jeden verteilbaren Container und veröffentlicht (z. B. speichert) den versionierten verteilbaren Container unter Verwendung des externen Artefakt-Repositorys 290.
-
In einigen Ausführungsformen kann die Anwendungsmanagement-Plattform 200 die Paketierungs- und Bündelungskomponente 214 verwenden, um ein Image (z. B. ein ISO-Image) zu erstellen, das einen versionierten verteilbaren Container enthält, der einem Kunden des entfernten Rechenzentrums 250 und/oder einem Knoten des entfernten Rechenzentrums 250 zur Einrichtung des entfernten Rechenzentrums 250 zur Verfügung gestellt werden kann. Das ISO-Image kann auch Komponenten der Anwendungsmanagementplattform 200 enthalten, die im entfernten Rechenzentrum 250 eingesetzt werden sollen, um die Bereitstellung des entfernten Rechenzentrums 250 zu unterstützen, wie z. B. die clientseitige Einsatzmanager-Komponente 262.
-
Der Kunde kann das von der Anwendungsmanagementplattform 200 erstellte ISO-Image verwenden, um einen Knoten des entfernten Rechenzentrums 250 einzurichten und bereitzustellen. In einer oder mehreren Ausführungsformen wird der mit dem ISO-Image eingerichtete und bereitgestellte Knoten als Befehlsknoten 260 bezeichnet. Der Befehlsknoten 260 kann nach dem Einrichten und Bereitstellen die clientseitige Einsatzmanager-Komponente 262, die clientseitige Aktualisierungskomponente 264 und einen Container 266 enthalten, der den versionierten verteilbaren Container speichert.
-
Der Kunde kann über die serverseitige Einsatzmanager-Komponente 218 der Anwendungsmanagement-Plattform 200 eine Anfrage zur Einrichtung und Bereitstellung eines Clusters (z. B. eines Workload-Clusters 270) für eine Anwendung stellen. Alternativ kann eine solche Anforderung auch automatisch und ohne Benutzereingabe generiert werden.
-
Die serverseitige Einsatzmanager-Komponente 218 kann die Anfrage an die clientseitige Einsatzmanager-Komponente 262 senden. Die clientseitige Einsatzmanager-Komponente 262 kann einen Top-Level-Dienst (oder Ressource) identifizieren, der mit der Anwendung und ihren jeweiligen abhängigen Ressourcen verbunden ist. Die clientseitige Einsatzmanager-Komponente 262 kann den Workload-Cluster 270 mit den abhängigen Ressourcen und allen notwendigen Infrastrukturkomponenten aus dem Container 266 basierend auf dem identifizierten Top-Level-Dienst und den abhängigen Ressourcen versorgen. Sobald die abhängigen Ressourcen und die erforderlichen Infrastrukturkomponenten eingerichtet und für den Workload-Cluster 270 bereitgestellt sind, wird die clientseitige Einsatzmanager-Komponente 262 benachrichtigt, dass der Top-Level-Dienst auf dem Workload-Cluster 270 mit einem Container 272 bereitgestellt ist, der den versionierten verteilbaren Container speichert. Die clientseitige Einsatzmanager-Komponente 262 kann die serverseitige Einsatzmanager-Komponente 218 benachrichtigen, dass der Workload-Cluster eingerichtet und für die Anwendung bereitgestellt ist.
-
In einigen Ausführungsformen kann die Anwendungsmanagementplattform 200 die clientseitige Aktualisierungskomponente 264 verwenden, um regelmäßig verfügbare Aktualisierungen für eine oder mehrere Infrastrukturkomponenten zu überwachen, die vom Befehlsknoten und Workload-Cluster 270 verwendet werden. In einigen Ausführungsformen kann der Kunde und/oder die Verarbeitungslogik die regelmäßige oder automatische Überwachung verfügbarer Aktualisierungen ablehnen und sich stattdessen für die manuelle Auslösung der clientseitigen Aktualisierungskomponente 264 entscheiden. Die clientseitige Aktualisierungskomponente 264 kann mit der serverseitigen Aktualisierungskomponente 216 interagieren, um einen gerichteten azyklischen Graphen (DAG) zu erhalten, der auf Metadaten basiert, die mit den verschiedenen unterschiedlichen Infrastrukturkomponenten aus dem externen Artefakt-Repository 290 verbunden sind, und der alle möglichen Aktualisierungspfade darstellt, die für jede der verschiedenen unterschiedlichen Infrastrukturkomponenten verfügbar sind. Die clientseitige Aktualisierungskomponente 264 kann ein verfügbares Update für eine oder mehrere der verschiedenen unterschiedlichen Infrastrukturkomponenten basierend auf dem DAG identifizieren und die spezifische, mit dem verfügbaren Update verbundene Paketversion aus dem externen Artefakt-Repository 290 herunterladen. Nach dem Herunterladen kann die clientseitige Aktualisierungskomponente 264 die clientseitige Einsatzmanager-Komponente 262 verwenden, um eine oder mehrere der verschiedenen unterschiedlichen Infrastrukturkomponenten in jedem Cluster (z. B. Steuerebenen-Cluster und/oder Workload-Cluster) unter Verwendung einer oder mehrerer der verschiedenen unterschiedlichen Infrastrukturkomponenten zu aktualisieren.
-
Gemäß beispielhaften Ausführungsformen kann die serverseitige Einsatzmanager-Komponente 218 mit zwei logischen Komponenten implementiert werden - einer Steuerungsebene und einer Datenebene. In einer Ausführungsform kann eine Steuerebene so implementiert werden, dass sie eines oder mehrere der folgenden Merkmale oder Eigenschaften enthält: Komponenten, die Teil der Benutzererfahrung sind, Benutzerschnittstellenanwendung (z. B. optional unterstützt durch standardisierte, versionierte REST-Anwendungsprogrammierschnittstellen (APIs)), Komponenten von Ressourcen-Providern (RP) (z. B. wenn jeder Diensteigentümer eine RP-Komponente bereitstellt) und einen Bereitstellungs-Provider (z. B. einen Adapter, der die Anfragen zwischen einer Dienst-API und einem Einsatzmanager-Datenebenendienst bearbeitet). In einer oder mehreren Ausführungsformen kann eine Datenebene so implementiert werden, dass sie eines oder mehrere der folgenden Merkmale oder Eigenschaften enthält: einen Satz von Komponenten, die das Backend für die Dienstressourcen bilden, einen Teil der administrativen Steuerebene und/oder einen oder mehrere RP (die z. B. die Endpunkte der Datenebene des Einsatzmanagers aufrufen, um Ressourcenanforderungen zu erstellen). In einer oder mehreren Ausführungsformen können eine oder mehrere Komponenten der Steuerebene unter Verwendung eines Managementclusters eingesetzt werden (z. B. eine pro Rechenzentrum oder mehrere netzwerkspezifische Instanzen pro Rechenzentrum).
-
Paketierung und Bündelung von Infrastrukturkomponenten
-
3 stellt eine Paketierungs- und Bündelungskomponente 320 der Anwendungsmanagement-Plattform 300 zur Paketierung und Bündelung verschiedener unterschiedlicher Infrastrukturkomponenten dar. Wie bereits erwähnt, können die verschiedenen unterschiedlichen Infrastrukturkomponenten Netzwerk-, Speicher-, Rechen-, Sicherheits-, Versionierungs- und Bereitstellungskomponenten umfassen.
-
Die Anwendungsmanagement-Plattform 300 umfasst einen Provider-Cloud-Server 310, der dem Provider-Cloud-Server 210 von 2 ähnelt, ein Freigabezeiger-Artefakt-Repository 340, das dem Freigabezeiger-Artefakt-Repository 280 von 2 ähnelt, ein internes Artefakt-Repository 350 und ein externes Artefakt-Repository 360, das dem externen Artefakt-Repository 290 von 2 ähnelt.
-
Der Provider-Cloud-Server 310 kann ein Quellartefakt-Repository 315 und eine Paketierungs- und Bündelungskomponente 320 enthalten, die der Paketierungs- und Bündelungskomponente 214 von 2 ähnelt. Die Paketierungs- und Bündelungskomponente 320 kann eine kontinuierlichen Integrations- und kontinuierlichen Einsatz- (CI/CD) Pipeline 322 umfassen. Die CI/CD-Pipeline 322 kann außerdem einen Bundler 324 und ein ISO-Erstellungsmodul 326 enthalten.
-
Die Entwickler 330 können eine Vielzahl von Infrastrukturkomponenten entwickeln (z. B. die verschiedenen zuvor beschriebenen Infrastrukturkomponenten). Wie zuvor beschrieben, kann die Vielzahl der Infrastrukturkomponenten Netzwerkkomponenten, Rechenkomponenten, Speicherkomponenten, Sicherheitskomponenten, Bereitstellungskomponenten, Automatisierungsquellcode, Systembestätigungen und verschiedene Arten von Paketinstallationen umfassen, die zur Implementierung einer Abfolge komplexer Arbeitsabläufe für die Einrichtung eines entfernten Rechenzentrums verwendet werden. Die Vielzahl der Infrastrukturkomponenten kann von verschiedenen Typen sein, wie Debian (z. B. ein Linux-Paket), Helm (eine Sammlung von Kubernetes-YAML-Paketen), Docker-Container (z. B. ein ausführbares Softwarepaket), Ansible-Playbooks (z. B. Automatisierungsaufgaben), andere Arten der Automatisierung usw.
-
Als Reaktion darauf, dass die Entwickler 330 eine Merge-Anforderung (oder Pull-Anforderung) einreichen, um eine oder mehrere entwickelte Versionen einer Infrastrukturkomponente aus der Vielzahl der Infrastrukturkomponenten an das Quellartefakt-Repository 315 zu übermitteln, führt die CI/CD-Pipeline 322 eine Pre-Merge-Validierung an jeder entwickelten Version der Infrastrukturkomponente durch. Die Pre-Merge-Validierung kann eine oder mehrere Sanity-Prüfungen, Sicherheitsprüfungen, Validierung, Codekompilierung, Dateiverknüpfung usw. umfassen. Sobald die Pre-Merge-Validierung abgeschlossen ist und jede entwickelte Version der Infrastrukturkomponente in einen Hauptzweig ihrer jeweiligen Infrastrukturkomponente (z. B. die neueste Version der Infrastrukturkomponente) zusammengeführt wurde, führt die CI/CD-Pipeline 322 einen Post-Merge-Workflow durch. Der Post-Merge-Workflow kann beispielsweise das Versionieren, Erstellen, Verpacken, Kennzeichnen und Veröffentlichen der neuesten Version der Infrastrukturkomponente umfassen.
-
In bestimmten Ausführungsformen beginnt der Post-Merge-Workflow der CI/CD-Pipeline mit der Erstellung eines neuen Versionswerts oder Bezeichners, der der neuesten Version der Infrastrukturkomponente zugeordnet wird. In einer Ausführungsform kann jeder Versionswert oder Bezeichner durch Semantic Versioning (SemVer) vorgegeben werden, das eine 3-Komponenten-Nummer im Format X.Y.Z liefert, wobei X für eine Hauptversion, Y für eine Nebenversion und Z für Patches steht. Hauptversionen können für größere Architekturaktualisierungen und/oder neuen Quellcode reserviert sein, die in einigen Fällen von den Entwicklern manuell identifiziert werden können 330. Minor-Versionen können für kleinere Aktualisierungen reserviert werden, die in den meisten Fällen automatisch durch den Post-Merge-Workflow erhöht werden können. Patches können für Hotfixes reserviert werden, die in einigen Fällen von den Entwicklern 330 manuell identifiziert werden können.
-
Der Post-Merge-Workflow der CI/CD-Pipeline erstellt und verpackt die neueste Version der Infrastrukturkomponente (z. B. ein versioniertes Paket der Infrastrukturkomponente). Der Post-Merge-Workflow kann das versionierte Paket der Infrastrukturkomponente im internen Artefakt-Repository 350 veröffentlichen. Das interne Artefakt-Repository 350 kann Teil des Provider-Cloud-Servers 310 oder von diesem getrennt sein, kann aber für den Kunden (oder den Eigentümer des entfernten Rechenzentrums) 380 unzugänglich sein. Das interne Artefakt-Repository 350 kann so konfiguriert sein, dass es das Hochladen und Speichern verschiedener Arten von Infrastrukturkomponenten unterstützt und verschiedene Funktionen bereitstellt, darunter Zugriffskontrolle, Versionierung, Sicherheitsüberprüfungen beim Hochladen und Clusterfunktionen. Das externe Artefakt-Repository 360 kann so konfiguriert sein, dass es das Hochladen und Speichern verschiedener Arten von Infrastrukturkomponenten unterstützt und verschiedene Funktionen wie Zugriffskontrolle, Versionierung, Upload-Sicherheitsprüfungen und Cluster-Funktionalität bietet.
-
In einer oder mehreren Ausführungsformen kann jedes versionierte Paket der Infrastrukturkomponente, das im internen Artefakt-Repository 350 veröffentlicht wird, mit einem Floating Tag versehen werden (z. B. einem kundenspezifischen Floating Tag). Das Floating Tag kann einen Status für jedes versionierte Paket der Infrastrukturkomponente anzeigen. Es können mehrere unterschiedliche Floating Tags verwendet werden. In einigen Ausführungsformen wird einigen oder allen versionierten Paketen der Infrastrukturkomponente ein eindeutiges Floating Tag zugewiesen. So kann jede Infrastrukturkomponente verschiedene versionierte Pakete mit unterschiedlichen Floating Tags enthalten. Einige Beispiele für Floating Tags sind „testbereit“, „quality assurance certified“, „security certified“ oder andere Tags, die mit Ereignissen verbunden sind, die die Freigabe des versionierten Pakets der Infrastrukturkomponente qualifizieren. Das „Floating Tag“ jedes versionierten Pakets der Infrastrukturkomponente kann als Reaktion auf den erfolgreichen Abschluss einer bestimmten Aufgabe (z. B. Validierung, Qualitätssicherungszertifizierung, Sicherheitszertifizierung usw.) aktualisiert werden.
-
Sobald beispielsweise das versionierte Paket der Infrastrukturkomponente im internen Artefakt-Repository 350 veröffentlicht ist, kann dem versionierten Paket der Infrastrukturkomponente ein Floating Tag „testbereit“ zugewiesen werden. Nach erfolgreicher Validierung (oder Qualitätssicherungsprüfung) des versionierten Pakets der Infrastrukturkomponente kann das Floating Tag des versionierten Pakets der Infrastrukturkomponente von „testbereit“ auf „Qualitätssicherung zertifiziert“ aktualisiert werden. Nach erfolgreicher Sicherheitsprüfung des versionierten Pakets der Infrastrukturkomponente kann die unveränderliche Kennzeichnung des versionierten Pakets der Infrastrukturkomponente von „Qualitätssicherung zertifiziert“ auf „Sicherheit zertifiziert“ aktualisiert werden.
-
Der Bundler 324 kann eine Anfrage zur Bündelung (d.h. Aggregation) der Vielzahl von Infrastrukturkomponenten erhalten. Die Anforderung kann ein eindeutiges Floating-Tag identifizieren, das die Auswahl eines versionierten Pakets jeder Infrastrukturkomponente aus der Vielzahl der Infrastrukturkomponenten regelt. Der Bundler 324 kann jedes versionierte Paket jeder Infrastrukturkomponente identifizieren, dem das eindeutige Floating Tag zugewiesen wurde (z. B. identifiziertes versioniertes Paket der Infrastrukturkomponente). Sobald der Bundler 324 jedes identifizierte versionierte Paket der Infrastrukturkomponente aus der Vielzahl von Infrastrukturkomponenten erhalten hat, lädt der Bundler 324 ein oder mehrere identifizierte versionierte Pakete der Infrastrukturkomponente aus der Vielzahl von Infrastrukturkomponenten aus dem internen Artefakt-Repository 350 herunter. In einigen Ausführungsformen wird nur ein einziges versioniertes Paket jeder Infrastrukturkomponente ein bestimmtes Floating Tag haben. Dementsprechend kann die Verarbeitungslogik alle Pakete mit dem angegebenen Floating Tag bündeln. In einigen Ausführungsformen können mehrere versionierte Pakete einer Infrastrukturkomponente das gleiche Floating Tag haben. In einem solchen Fall kann die Verarbeitungslogik für jede Infrastrukturkomponente das Paket mit der höchsten Version dieser Infrastrukturkomponente auswählen, das das angegebene Floating Tag aufweist. Der Bundler 324 bündelt die identifizierten versionierten Pakete der Infrastrukturkomponenten aus der Vielzahl der Infrastrukturkomponenten, die aus dem internen Artefakt-Repository 350 heruntergeladen wurden, in einem oder mehreren verteilbaren Containern. In einer oder mehreren Ausführungsformen kann es sich bei dem/den verteilbaren Container(n) um einen Kubernetes-nativen Container für den gesamten Lebenszyklus handeln, z. B. um einen Nexus-Container.
-
In einigen Ausführungsformen kann der Bundler 324 die Vielzahl von Infrastrukturkomponenten automatisch basierend auf einem vorgegebenen unveränderlichen Kennzeichen bündeln (z. B. „Sicherheit zertifiziert“ unveränderliches Kennzeichen). Insbesondere kann der Bundler als Reaktion auf eine Aktualisierung eines Floating-Tags, das einem versionierten Paket der Infrastrukturkomponente zugewiesen ist, auf das vorgegebene Floating-Tag ausgelöst werden, um die Vielzahl der Infrastrukturkomponenten automatisch basierend auf dem vorgegebenen Floating-Tag zu bündeln. Dementsprechend identifiziert der Bundler 324 ein versioniertes Paket jeder Infrastrukturkomponente, der das vorbestimmte Floating-Tag zugewiesen wurde (z. B. identifiziertes versioniertes Paket der Infrastrukturkomponente). Sobald der Bundler 324 die identifizierten versionierten Pakete der mehreren Infrastrukturkomponenten erhalten hat, lädt der Bundler 324 jedes identifizierte versionierte Paket der Infrastrukturkomponente der mehreren Infrastrukturkomponenten aus dem internen Artefakt-Repository 350 herunter. Der Bundler 324 bündelt jedes identifizierte, versionierte Paket der Infrastrukturkomponente der Vielzahl von Infrastrukturkomponenten, die von dem internen Artefakt-Repository 350 heruntergeladen wurden, in einen verteilbaren Container. Der verteilbare Container kann ein Kubernetes-nativer Container für den gesamten Lebenszyklus sein, beispielsweise ein Nexus-Container.
-
Jedem vom Bundler 324 erstellten verteilbaren Container wird eine Release-Version zugewiesen. Jede Release-Version kann von SemVer vorgegeben werden. Dementsprechend können Hauptversionen und Patches manuell angegeben werden, und Nebenversionen können in einigen Ausführungsformen vom Bundler 324 automatisch erhöht werden. Der Bundler 324 kann jeden versionierten verteilbaren Container im internen Artefakt-Repository 350 veröffentlichen. Jedem versionierten verteilbaren Container kann ein eindeutiges Floating Tag zugewiesen werden. Dementsprechend kann jeder Container verschiedene Versionen mit unterschiedlichen Floating Tags enthalten. Die Floating Tags können „testbereit“, „verteilungsbereit“ und/oder Tags enthalten, die mit anderen Ereignissen verbunden sind, die die Freigabe des Containers qualifizieren.
-
Das Floating Tag eines jeden versionierten verteilbaren Containers kann als Reaktion auf den erfolgreichen Abschluss einer bestimmten Aufgabe (z. B. Validierung) aktualisiert werden. Beispielsweise kann nach der Veröffentlichung eines versionierten verteilbaren Containers im internen Artefakt-Repository 350 dem versionierten Container ein Floating Tag „testbereit“ zugewiesen werden. Nach erfolgreicher Validierung (oder Qualitätssicherungsprüfung) des versionierten Containers kann das Floating Tag des versionierten verteilbaren Containers von „testbereit“ auf „verteilungsbereit“ aktualisiert werden.
-
Als Reaktion auf die Aktualisierung des Floating-Tags eines versionierten verteilbaren Containers von „testbereit“ auf „verteilungsbereit“ kann der Bundler 324 den versionierten verteilbaren Container im externen Artefakt-Repository 360 veröffentlichen. Das externe Artefakt-Repository 360 kann Teil des Provider-Cloud-Servers 310 sein oder von diesem getrennt sein und für den Kunden 380 direkt zugänglich sein. Je nach Ausführungsform kann der Bundler 324 einen Freigabezeiger veröffentlichen, der mit einem versionierten verteilbaren Container verbunden ist, der in einem Freigabezeiger-Artefakt-Repository 340 veröffentlicht wurde. Insbesondere kann sich der Freigabezeiger auf einen bestimmten versionierten verteilbaren Container beziehen, der im externen Artefakt-Repository 360 veröffentlicht wurde.
-
In einigen Ausführungsformen kann der Kunde 380 eine Reihe von Anforderungen für ein entferntes Rechenzentrum (nicht dargestellt), das vom Kunden 380 eingesetzt werden soll, bestimmen und dem Cloud-Server zur Verfügung stellen. Alternativ kann ein solcher Satz von Anforderungen automatisch ermittelt werden. Das Modul 326 zur Erstellung eines optischen Datenträgers („ISO“) kann den Anforderungssatz analysieren und ein bootfähiges ISO-Image erzeugen, das ein Basis-OS (z. B. UNIX oder Linux), ein Installationsprogramm und den versionierten Container enthält.
-
In einigen Ausführungsformen kann der Anforderungssatz ein unveränderliches Kennzeichen für die Auswahl eines versionierten Containers vorgeben. In einigen Ausführungsformen kann das ISO-Erstellungsmodul 326 automatisch ein vorbestimmtes Floating-Tag bestimmen, um die Auswahl des versionierten Containers zu steuern. Das ISO-Erstellungsmodul 326 kann den versionierten verteilbaren Container identifizieren, dem das Floating Tag (oder das vorbestimmte Floating Tag) zugewiesen wurde (z.B. der identifizierte versionierte Container). Das ISO-Erstellungsmodul 326 kann den identifizierten versionierten verteilbaren Container aus dem internen Artefakt-Repository 350 zur Aufnahme in das ISO-Image herunterladen. Sobald das bootfähige ISO-Image erzeugt ist, kann das ISO-Erstellungsmodul 326 das bootfähige ISO-Image direkt an den Kunden 380 verteilen, damit es auf einem Knoten aus einer Vielzahl von Knoten (z. B. einem Befehlsknoten) des entfernten Rechenzentrums (nicht dargestellt) installiert wird.
-
Bereitstellung eines entfernten Rechenzentrums
-
4 veranschaulicht die Bereitstellung eines Befehlsknotens eines entfernten Rechenzentrums unter Verwendung eines bootfähigen ISO-Images, das von der Anwendungsmanagement-Plattform gemäß einigen Ausführungsformen erzeugt wurde. Ein Kunde 410 kann ein bootfähiges ISO-Image 420 erhalten, das von der Paketierungs- und Bündelungskomponente 214 von 2 oder der Paketierungs- und Bündelungskomponente 320 von 3 erzeugt wurde. Der Kunde 410 kann das ISO-Image 420 in einen Knoten des entfernten Rechenzentrums 430 einfügen, ähnlich dem entfernten Rechenzentrum 250 von 2, das der Kunde 410 als Befehlsknoten 440 des entfernten Rechenzentrums 430 bezeichnet. Alternativ kann eine solche Bestimmung eines Befehlsknotens 440 und das Einfügen des ISO-Images 420 in den bezeichneten Knoten auch automatisch ohne Benutzereingabe erfolgen. Der Befehlsknoten 440 ist für die Bereitstellung der übrigen Knoten (z. B. der Knoten 480A-C) des entfernten Rechenzentrums 430 verantwortlich. Das bootfähige ISO-Image 420 kann die Installation eines Basis-OS 442 auf dem Befehlsknoten 440 auslösen. In einigen Ausführungsformen kann das bootfähige ISO-Image 420 ferner die Installation des Basis-OS auf den übrigen Knoten des entfernten Rechenzentrums 430, beispielsweise den Knoten 480A-C, auslösen.
-
Sobald das Basis-OS auf dem Befehlsknoten installiert ist, kann ein Automatisierungsskript des ISO-Images das Installationsprogramm automatisch veranlassen, die Kerndienste 444 zu installieren. Die Kerndienste 444 beziehen sich auf alle Dienste, die zur Implementierung einer oder mehrerer der mehreren Infrastrukturkomponenten erforderlich sind. Nicht einschränkende Beispiele für Kerndienste 444 können Foreman und AWX sein. In einigen Ausführungsformen kann der Kerndienst 444 auch einen Ansible-Tower zur Management der Ansible-basierten Automatisierung enthalten, der die Erstellung automatisierter Arbeitsabläufe unterstützt. Sobald die Kerndienste 444 installiert sind, installiert das Automatisierungsskript die Infrastrukturkomponenten des verteilbaren Containers des bootfähigen ISO-Images 420 auf dem Befehlsknoten unter Verwendung der Kernressourcen 444. In einigen Ausführungsformen kann ein lokaler Container (z. B. ein Nexus-Container) 470A im entfernten Rechenzentrum 430 eingesetzt werden, um den verteilbaren Container herunterzuladen. In einem erläuternden Beispiel wird die OS-Bereitstellung auf dem Befehlsknoten 440 basierend auf dem Automatisierungsskript durchgeführt, wodurch Foreman veranlasst wird, betriebssystembezogene Infrastrukturkomponenten (z. B. Debian) zu installieren. Die Geräte-, Netzwerk- und Speicherkonfiguration kann auf dem Befehlsknoten 440 basierend auf dem Automatisierungsskript durchgeführt werden, wodurch AWX veranlasst wird, Infrastrukturkomponenten für Docker-Container zu installieren. Sobald die Infrastrukturkomponenten auf dem Befehlsknoten 440 installiert sind, kann das Automatisierungsskript des bootfähigen ISO-Images 420 Kubeadm verwenden, um einen Steuerebenen-Cluster 450 (z. B. einen administrativen Kubernetes (K8S)-Cluster) auf dem Befehlsknoten 440 zu erstellen und zu starten. Insbesondere wird die Kubernetes-Einrichtung mithilfe von Kubespray und entsprechenden Werkzeugen durchgeführt. In einigen Ausführungsformen können der Anwendungseinsatz und der Überwachungseinsatz mithilfe eines oder mehrerer Helm-Charts (z. B. eines Kubernetes-Paketmanagers) installiert werden. Der Steuerebenen-Cluster 450 kann ein hochverfügbarer K8S-Cluster sein. Ein hochverfügbarer K8S-Cluster bezieht sich auf eine Gruppe von Knoten (z. B. Computer), die mit einem Minimum an Ausfallzeit zuverlässig genutzt werden können. Beispielsweise kann mehr als ein Knoten (z. B. 3 Knoten) als Steuerebenen-Cluster 450 verwendet werden. In einigen Ausführungsformen kann das Automatisierungsskript des bootfähigen ISO-Images 420 in dem Steuerebenen-Cluster 450 ferner eine clientseitige Einsatzmanager-Komponente 452 ähnlich der clientseitigen Einsatzmanager-Komponente 262 von 2 einsetzen, um die Vielzahl von Infrastrukturkomponenten in den verbleibenden Knoten (z. B. Knoten 480A-C) einzusetzen und zu verwalten, und eine clientseitige Aktualisierungskomponente 460 ähnlich der clientseitigen Aktualisierungskomponente 264 von 2, um Aktualisierungen der Vielzahl von Infrastrukturkomponenten in den verbleibenden Knoten (z. B. Knoten 480A-C) zu identifizieren.
-
5 veranschaulicht eine Einsatzmanager-Komponente 500 der Anwendungsmanagement-Plattform. Die Einsatzmanager-Komponente 500 umfasst eine serverseitige Einsatzmanager-Komponente 512 ähnlich der serverseitigen Einsatzmanager-Komponente 262 von 2 und eine clientseitige Einsatzmanager-Komponente 550 ähnlich der clientseitigen Einsatzmanager-Komponente 262 von 2. In Ausführungsformen ist der Einsatzmanager 500 so konfiguriert, dass er die Vielzahl von Infrastrukturkomponenten in Workload-Clustern 570A-C bereitstellt und verwaltet, die jeweils einen oder mehrere Container (z. B. Container 572A und 574A für Workload-Cluster 570A, Container 572B und 574AB für Workload-Cluster 570B und Container 572C und 574C für Workload-Cluster 570C) enthalten, und zwar unter Verwendung eines Dienstes als Reaktion auf eine Anforderung zur Bereitstellung eines Workload-Clusters (z. B. Workload-Cluster 570A) für eine Anwendung. Jeder Dienst kann eine oder mehrere abhängige Ressourcen enthalten, die für die Bereitstellung des Workload-Clusters erforderlich sind.
-
Die serverseitige Einsatzmanager-Komponente 512, die sich auf dem Provider-Cloud-Server 510 befindet, kann ein Front-End (z. B. eine Benutzeroberfläche (UI)) umfassen, das mit einem Back-End (z. B. einer Anwendungsprogrammierschnittstelle (API), wie einer RESTful-API (Rest-API)) verbunden ist. Die API interagiert mit einem Einsatzmanager-Provider (z. B. einem K8S-Provider - nicht dargestellt) der serverseitigen Einsatzmanager-Komponente 512, die zur Bearbeitung von Anfragen zwischen der API und der clientseitigen Einsatzmanager-Komponente 670 verwendet wird.
-
Die clientseitige Einsatzmanager-Komponente 550 kann einen Einsatzmanager-Operator 552 enthalten, um eine Vielzahl von dienstbezogenen Controllern (z. B. Controller 618A-C) zu verwalten. Ein Operator kann mit einer Logik implementiert werden, die ein Verfahren zum Verpacken, Bereitstellen und Verwalten einer Anwendung (oder eines Dienstes) (z. B. einer Kubernetes-Anwendung) durchführt. In einem anschaulichen Beispiel ist der Operator ein anwendungsspezifischer Controller, der die Funktionalität der Kubernetes-API erweitert, um Instanzen und den gesamten Lebenszyklus komplexer Anwendungen im Auftrag eines Kubernetes-Benutzers zu erstellen, zu konfigurieren und zu verwalten. Der Operator kann einen Controller und eine kundenspezifische Ressourcendefinition enthalten. Der Operator, insbesondere der Controller des Operators, implementiert Kontrollschleifen, die wiederholt einen gewünschten Soll-Zustand eines Clusters mit seinem Ist-Zustand vergleichen. Wenn der Ist-Zustand des Clusters nicht mit dem Soll-Zustand übereinstimmt, ergreift der Controller Maßnahmen, um das Problem zu beheben. In einigen Ausführungsformen verwendet der Operator kundenspezifische Ressourcen (CR), um Anwendungen (oder Dienste) und deren Komponenten zu verwalten. In einigen Fällen können High-Level-Konfigurationen und -Einstellungen mit Hilfe einer CR bereitgestellt werden, die vom Bediener in eine oder mehrere Low-Level-Aktionen übersetzt werden, basierend auf bewährten Verfahren, die in die Logik des Bedieners eingebettet sind. Eine kundenspezifische Ressourcendefinition (CRD) kann eine CR definieren und die gesamte dem Bediener zur Verfügung stehende Konfiguration auflisten. Dementsprechend kann der Bediener einen CR-Typ überwachen und anwendungsspezifische Maßnahmen ergreifen, um den aktuellen Zustand mit dem gewünschten Zustand dieser Ressource in Einklang zu bringen. Der Bediener kann die Anwendung (oder den Dienst) während der Ausführung weiter überwachen, Daten sichern, Fehler beheben und die Anwendung im Laufe der Zeit automatisch aktualisieren.
-
Dementsprechend können die Steuergeräte 618A-C vom Entwickler eines Dienstes bereitgestellt werden. Controller 554A kann ein mit dem Dienst verbundener Top-Level-Controller sein. Der Entwickler kann (über kundenspezifische Ressourcen) vorgeben, dass der dem Dienst zugeordnete Top-Level-Controller von einem oder mehreren Controllern (z. B. Controller 618B und Controller 618C) abhängt, die mit abhängigen Ressourcen der Top-Level-Dienste (oder des Dienstes) verbunden sind. So kann der Eigentümer des Dienstes für jede abhängige (oder untergeordnete) Ressource einen abhängigen (oder untergeordneten) Controller als Controller des einen oder mehreren Controllern bereitstellen. In einem anschaulichen Beispiel kann es sich bei den Top-Level-Diensten um einen Clusterdienst mit abhängigen Ressourcen handeln, wie beispielsweise und ohne Einschränkung eine oder mehrere Dateien einer Helm-Anwendung, eine Knotenkonfiguration oder eine Sicherheitskonfiguration. Jede der abhängigen Ressourcen kann für die Ausführung von einem Kerndienst abhängig sein.
-
Mit kurzem Verweis auf 16 ist ein Einsatzmanager 1610, ähnlich der Einsatzmanager-Komponente 500 von 5, so konfiguriert, dass er die Vielzahl von Infrastrukturkomponenten in Workload-Clustern 570A-C unter Verwendung eines Dienstes als Reaktion auf eine Anforderung zur Bereitstellung eines Workload-Clusters (z. B. Workload-Cluster 570A) für eine Anwendung bereitstellt und verwaltet. Der Einsatzmanager 1610 kann einen oder mehrere Top-Level-Dienste bereitstellen, wie beispielsweise und ohne Einschränkung: KI-Dienst 1620, Cluster-Dienst 1630, Batch-Dienst 1640 und Flotten-Dienst 1650. Wie bereits beschrieben, kann jeder der Top-Level-Dienste abhängige Ressourcen enthalten. Beispielsweise kann der Clusterdienst 1630 eine Helm-Anwendung 1632, eine Knotenkonfiguration 1634 und eine Sicherheitskonfiguration 1636 umfassen. Jede dieser abhängigen Ressourcen ist erforderlich, um den Top-Level-Dienst (z. B. den Clusterdienst 1630) bereitzustellen.
-
In einigen Ausführungsformen kann ein Top-Level-Dienst abhängige Ressourcen enthalten, die die abhängigen Ressourcen eines anderen Top-Level-Dienstes außer Kraft setzen. Beispielsweise kann der Batch-Dienst 1640 abhängige Ressourcen wie eine geänderte Knotenkonfiguration 1642 und einen Job-Controller 1644 enthalten. Die geänderte Knotenkonfiguration 1642 des Batch-Dienstes 1640 kann eine abhängige Ressource sein, die dazu dient, eine Standard-Knotenkonfiguration 1634 des Cluster-Dienstes 1630 außer Kraft zu setzen. In einigen Ausführungsformen können sich abhängige Ressourcen zwischen den Top-Level-Diensten unterscheiden, beispielsweise kann der Job-Controller 1644 des Batch-Dienstes 1640 ein Typ der Helm-Anwendung sein (z. B. die Helm-Anwendung 1632 des Cluster-Dienstes).
-
So können beispielsweise ein oder mehrere Operatoren einen Clusterdienstoperator, einen Helm-Anwendungsoperator, einen Knotenkonfigurationsoperator und einen Sicherheitskonfigurationsoperator umfassen. In einigen Ausführungsformen kann auch ein Operator für jeden Kerndienst 556 (z. B. ein mit AWX verbundener Ansible-Job-Operator) enthalten sein.
-
6 ist ein Sequenzdiagramm, das ein Verfahren zur Bereitstellung der verbleibenden Knoten des entfernten Rechenzentrums vom Befehlsknoten aus veranschaulicht, gemäß Ausführungsformen der vorliegenden Offenbarung. Ein Kunde des entfernten Rechenzentrums 530 kann eine Anforderung zur Bereitstellung eines Clusters (z. B. Workload-Cluster 570A) für eine Anwendung unter Verwendung eines Front-Ends (z. B. einer Benutzerschnittstelle (UI)) der serverseitigen Einsatzmanager-Komponente 512 übermitteln, die mit dem Back-End (z. B. einer Anwendungsprogrammierschnittstelle (API), wie einer RESTful-API (Rest-API)) der serverseitigen Einsatzmanager-Komponente 512 verbunden ist. Das Back-End interagiert mit einem Einsatzmanager-Provider (z. B. einem K8S-Provider) der serverseitigen Einsatzmanager-Komponente 512, der zur Bearbeitung von Anfragen zwischen der serverseitigen Einsatzmanager-Komponente 512 und dem Einsatzmanagement-Operator 552 des Einsatzmanagers 550 verwendet wird.
-
Das Back-End kann eine mit der Anforderung verbundene Anforderung zur Ressourcenbereitstellung erstellen. Die Ressourcenbereitstellungsanforderung wird einem Einsatzmanager-Provider der serverseitigen Einsatzmanager-Komponente 512 bereitgestellt. Der Einsatzmanager-Provider der serverseitigen Einsatzmanager-Komponente 512 erstellt eine Einsatzanforderung 634 basierend auf der Ressourcenbereitstellungsanforderung (z. B. dem identifizierten Top-Level-Dienst und/oder der identifizierten Top-Level-Ressource (z. B. einem Cluster-Dienst)) und stellt die Einsatzanforderung 634 dem Einsatzmanager-Operator 552 des Einsatzmanagers 550 zur Verfügung.
-
Ein Einsatzmanagement-Controller des Einsatzmanager-Operators 552 identifiziert einen Top-Level-Dienstcontroller 554A, der mit dem identifizierten Top-Level-Service und/oder der Ressource (z. B. einem Cluster-Service) der Bereitstellungs-Anforderung 634 verbunden ist. Der Einsatzmanagement-Controller des Einsatzmanager-Operators 552 erstellt eine kundenspezifische Ressourcendefinition (CRD) 636 für den Top-Level-Dienst, die einen Zielzustand des Top-Level-Dienstes (z. B. eines Clusterdienstes) angibt. Der Top-Level-Dienstcontroller 554A empfängt die Top-Level-Dienst-CRD 636 vom Einsatzmanager-Operator 552. Als Reaktion auf den Empfang der CRD 636 des Top-Level-Dienstes vom Einsatzmanager-Operator 552 löst der Top-Level-Dienst-Controller 554A eine Abstimmungsschleife aus.
-
Die Abstimmungsschleife prüft den Ist-Zustand eines Dienstes und/oder einer Ressource (z. B. eines Top-Level-Dienstes) und vergleicht ihn mit dem vorgesehenen Soll-Zustand des Dienstes und/oder der Ressource. Basierend auf dem/den Vergleich(en) bestimmt die Abstimmungsschleife die notwendigen Schritte, die durchgeführt werden müssen, um den Ist-Zustand des Dienstes und/oder der Ressource in den vorgesehenen Soll-Zustand des Dienstes und/oder der Ressource zu bringen. Nach der Ermittlung führt die Abstimmungsschleife die erforderlichen Schritte durch und aktualisiert den Ist-Zustand des Dienstes und/oder der Ressource auf den vorgesehenen Soll-Zustand des Dienstes und/oder der Ressource. Sobald die notwendigen Schritte durchgeführt sind und der Ist-Zustand des Dienstes und/oder der Ressource auf den bezeichneten Soll-Zustand des Dienstes und/oder der Ressource aktualisiert ist, aktualisiert die Abstimmungsschleife einen Status des Bedieners (z. B. den Bediener des Top-Level-Dienstes), der anzeigt, dass der Ist-Zustand des Dienstes und/oder der Ressource auf den bezeichneten Soll-Zustand des Dienstes und/oder der Ressource aktualisiert wurde. In einigen Ausführungsformen stellt die Abstimmungsschleife fest, dass die notwendigen Schritte, die durchgeführt werden müssen, um den Ist-Zustand des Dienstes und/oder der Ressource in den vorgesehenen Soll-Zustand des Dienstes und/oder der Ressource zu bringen, die Bereitstellung anderer Ressourcen (z. B. einer abhängigen Ressource) umfassen, von denen der Dienst und/oder die Ressource abhängig ist. Dementsprechend kann die Abstimmungsschleife zusätzliche CRDs (z. B. eine abhängige Ressourcen-CRD) für jede abhängige Ressource erzeugen, die mit dem Dienst und/oder der Ressource verbunden ist. Die zusätzlichen CRDs werden einem Controller der Operatoren der anderen Ressource zur Verfügung gestellt, was eine weitere Abstimmungsschleife in dem Controller der Operatoren der anderen Ressource auslösen kann. Die Abstimmungsschleife wartet auf den Abschluss der weiteren Abstimmungsschleife in der Steuerung der Operatoren der anderen Ressource, um festzustellen, ob die erforderlichen Schritte durchgeführt wurden, um den Ist-Zustand des Dienstes und/oder der Ressource auf den vorgesehenen Soll-Zustand des Dienstes und/oder der Ressource zu aktualisieren.
-
Sobald die Abstimmungsschleife vom Top-Level-Dienstcontroller 554A ausgelöst wird, stellt die Abstimmungsschleife fest, dass mindestens eine abhängige Ressource erforderlich ist, um den Ist-Zustand des Dienstes und/oder der Ressource auf den angegebenen Soll-Zustand des Dienstes und/oder der Ressource zu aktualisieren. Die Abstimmungsschleife des Top-Level-Dienstcontrollers 554A erstellt eine abhängige Ressource CRD 642, die einen Zielzustand der abhängigen Ressource angibt. Der abhängige Ressourcencontroller 554B empfängt die abhängige Ressourcen-CRD 642 vom Top-Level-Dienstcontroller 554A. Der abhängige Ressourcen-Controller 554B löst eine Abstimmungsschleife aus.
-
Sobald die Abstimmungsschleife vom abhängigen Ressourcencontroller 554B ausgelöst wird, stellt die Abstimmungsschleife fest, dass mindestens ein Kerndienst erforderlich ist, um den Ist-Zustand der abhängigen Ressource auf den festgelegten Soll-Zustand der abhängigen Ressource zu aktualisieren. Die Abstimmungsschleife des abhängigen Ressourcencontrollers 554B erstellt einen Kerndienst-CRD 648, der einen Zielzustand des Kerndienstes angibt. Ein Kerndienst-Controller 620 empfängt die Kerndienst-CRD 648 von dem abhängigen Ressourcencontroller 554B. Der Kerndienst-Controller 620 stößt eine Abstimmungsschleife an. Die Abstimmungsschleife des Kerndienst-Controllers 620 stellt fest, dass mindestens ein Schritt der notwendigen Schritte zur Aktualisierung des Ist-Zustands des Kerndienstes auf den bezeichneten Soll-Zustand des Kerndienstes das Starten des Kerndienstes zur Durchführung der Bereitstellung des Clusters umfasst. Beispielsweise wird Foreman ausgelöst, um Betriebssysteme auf dem Cluster zu installieren. Nach Abschluss wird ein Status des Kernressourcen-Operators 620 aktualisiert, der anzeigt, dass der Ist-Zustand der Kernressource auf den vorgesehenen Soll-Zustand der Kernressource aktualisiert wurde. Der Status des Kernressourcenoperators wird vom abhängigen Ressourcencontroller 554B ständig überwacht (oder abgefragt). Als Reaktion auf die Feststellung, dass der Status des Kernressourcenoperators 620 aktualisiert wurde, wird der Status des abhängigen Ressourcencontrollers 554B aktualisiert, was anzeigt, dass die Kernressource der abhängigen Ressource vom Ist-Zustand in den Soll-Zustand aktualisiert wurde.
-
Der Status des abhängigen Ressourcencontrollers 554B kann in Ausführungsformen wiederholt (z. B. periodisch oder ständig) durch den Top-Level-Dienstcontroller 554A überwacht (oder abgefragt) werden. Als Reaktion auf die Feststellung, dass der Status des abhängigen Ressourcencontrollers 554B aktualisiert wurde, kann der Status des Top-Level-Dienstcontrollers 554A aktualisiert werden, was anzeigt, dass die abhängige Ressource des Top-Level-Dienstes vom Ist-Zustand in den Soll-Zustand aktualisiert wurde.
-
Der Status des Top-Level-Dienstcontrollers 554A wird in bestimmten Ausführungsformen durch den Einsatzmanagement-Operator 552 ständig überwacht (oder abgefragt). Als Reaktion auf die Feststellung, dass der Status des Top-Level-Dienstcontrollers 554A aktualisiert wurde, kann der Status des Einsatzmanagement-Operators 552 aktualisiert werden, was anzeigt, dass der Top-Level-Dienstcontrollers 554A vom Ist-Zustand in den Soll-Zustand aktualisiert wurde. Sobald der Status des Einsatzmanagement-Operators 552 aktualisiert ist und anzeigt, dass der Top-Level-Dienstcontroller 554A vom Ist-Zustand in den Soll-Zustand aktualisiert wurde, benachrichtigt der Einsatzmanagement-Operator 552 die serverseitige Einsatzmanager-Komponente 512, dass die Anforderung zur Bereitstellung des Clusters für die Anwendung abgeschlossen ist. In einigen Ausführungsformen wird der Status nicht überwacht oder abgefragt, sondern von dem entsprechenden Controller bereitgestellt.
-
Aufrüstung des entfernten Rechenzentrums
-
7 zeigt eine Aktualisierungskomponente (z. B. die serverseitige Aktualisierungskomponente 720 und die clientseitige Aktualisierungskomponente 760) der Anwendungsmanagement-Plattform. Der Provider-Cloud-Server 710 enthält die serverseitige Aktualisierungskomponente 720, ähnlich der serverseitigen Aktualisierungskomponente 216, die so konfiguriert ist, dass sie mit einem Freigabezeiger-Artefakt-Repository 730 interagiert. Das Freigabezeiger-Artefakt-Repository 730, das dem Freigabezeiger-Artefakt-Repository 280 von 2 ähnelt, speichert einen Freigabezeiger für jede verpackte Version jeder der verschiedenen unterschiedlichen Infrastrukturkomponenten und jeden der verschiedenen versionierten verteilbaren Container. Das externe Artefakt-Repository 732, ähnlich dem externen Artefakt-Repository 290 von 2, speichert eine oder mehrere verpackte Versionen jeder der verschiedenen unterschiedlichen Infrastrukturkomponenten und der verschiedenen versionierten verteilbaren Container. Bei der serverseitigen Aktualisierungskomponente 720 kann es sich um einen Container handeln, der ein Graph-Builder-Modul 722 und ein Richtlinien-Engine-Modul 724 enthält.
-
Das Graph-Builder-Modul 722 fragt das Freigabezeiger-Artefakt-Repository 730 nach Freigabezeigern für die der einzelnen Paketversionen der verschiedenen Infrastrukturkomponenten ab, um einen gerichteten azyklischen Graphen (DAG) zu erstellen, wobei jeder Knoten eine Versionsnummer und jede Kante einen Aktualisierungspfad darstellt. Insbesondere wird ein DAG für jede der verschiedenen unterschiedlichen Infrastrukturkomponenten erzeugt. Das Richtlinien-Engine-Modul 724 empfängt das DAG, um Policy-Definitionen auf das DAG anzuwenden. Die Richtliniendefinitionen können die DAG ändern, um Aktualisierungspfade zu entfernen oder zu ändern, die dem Kunden basierend auf der Konfiguration des entfernten Rechenzentrums 740 zur Verfügung stehen.
-
Das entfernte Rechenzentrum 740 umfasst einen Steuerebenen-Cluster 750, eine Vielzahl von Artefakt-Repositories 770A-C und Workload-Cluster 780A-C. Der Steuerebenen-Cluster 750 umfasst einen Einsatzmanagement-Operator 752, die clientseitige Aktualisierungskomponente 760 und einen Artefakt-Repository-Operator 764. Die clientseitige Aktualisierungskomponente 760 überwacht ähnlich wie die clientseitige Aktualisierungskomponente 264 mithilfe eines Cluster-Aktualisierungsoperators 762 regelmäßig verfügbare Aktualisierungen für eine oder mehrere Infrastrukturkomponenten, die vom Steuerungsebenen-Cluster 750 und den Workload-Clustern 780A-C verwendet werden, indem sie mit der serverseitigen Aktualisierungskomponente 720 interagiert, um die DAG mit den verschiedenen disparaten Infrastrukturkomponenten aus dem Freigabezeiger-Artefakt-Repository 730 zu erhalten, das alle möglichen Aktualisierungspfade für jede der verschiedenen Infrastrukturkomponenten darstellt. Zur Erleichterung einer OTA-Aktualisierung (over-the-air) unter Verwendung der clientseitigen Aktualisierungskomponente 760 und der serverseitigen Aktualisierungskomponente 720 kann die serverseitige Aktualisierungskomponente 720 einen Container (z. B. einen Sidecar-Container) enthalten, der neben der serverseitigen Aktualisierungskomponente 720 eingesetzt wird und Ressourcen wie Pod-Speicher und Netzwerkschnittstellen gemeinsam nutzt. Der Sidecar-Container kann auch Speichervolumen mit der serverseitigen Aktualisierungskomponente 720 gemeinsam nutzen, so dass die serverseitige Aktualisierungskomponente 720 auf die Daten im Sidecar-Container zugreifen kann.
-
8 ist ein Sequenzdiagramm zur Veranschaulichung eines Verfahrens zur Identifizierung von Aktualisierungen für Knoten des entfernten Rechenzentrums gemäß den Ausführungsformen der vorliegenden Offenbarung. Der Cluster-Aktualisierungsoperator 762 überwacht in regelmäßigen Abständen verfügbare Aktualisierungen für eine oder mehrere Infrastrukturkomponenten, indem er Aktualisierungen vom Richtlinien-Engine-Modul 724 der serverseitigen Update-Komponente 720 abfragt. Das Richtlinien-Engine-Modul 724 fordert einen Versionsgraphen für jede der einen oder mehreren Infrastrukturkomponenten vom Graph Builder-Modul 722 an. Das Graph-Builder-Modul 722 sendet eine Anforderung an einen Freigabezeiger-Artefakt-Repository-Operator 735 (z. B. einen Operator, der mit dem Freigabezeiger-Artefakt-Repository 730 verbunden ist), um Freigabezeiger 810, die mit jeder der einen oder mehreren Infrastrukturkomponenten verbunden sind, aus dem Freigabezeiger-Artefakt-Repository 730 zu erhalten (z. B. herunterzuladen). Das Graph-Builder-Modul 722 erzeugt einen DAG (z. B. einen Aktualisierungsgraphen 820) für jede der einen oder mehreren Infrastrukturkomponenten. Das Graph-Builder-Modul 722 stellt den Aktualisierungsgraphen 820 dem Richtlinien-Engine-Modul 724 zur Verfügung, um Richtlinienfilter (z. B. Richtliniendefinitionen) auf den Aktualisierungsgraphen 820 anzuwenden. Der Aktualisierungsgraph mit dem Richtlinienfilter 830 wird dem Cluster-Update-Operator vom Richtlinien-Engine-Modul 724 bereitgestellt. Der Cluster-Aktualisierungsoperator 762 kann als Reaktion auf den Empfang des Aktualisierungsgraphen mit Richtlinienfilter 830 einen Artefakt-Repository-Operator CRD 840 (z. B. RO CRD 840) erstellen, der über einen Zielzustand des RO CRD 840 anweist, einen verteilbaren Container (z. B. verteilbarer Container 850) herunterzuladen, der die verfügbaren Aktualisierungen für eine oder mehrere Infrastrukturkomponenten enthält, die in dem Aktualisierungsgraphen mit Richtlinienfilter 830 vorhanden sind. Der Cluster-Aktualisierungsoperator 762 kann die RO CRD 840 an den Artefakt-Repository-Operator 764 weitergeben. Der Artefakt-Repository-Operator 764 löst eine Abstimmungsschleife aus, die den verteilbaren Container 850 aus dem externen Artefakt-Repository 732 herunterlädt.
-
In einigen Ausführungsformen, wenn nur ein Artefakt-Repository (z.B. Artefakt-Repository 770A) im entfernten Rechenzentrum 740 eingesetzt wird, setzt der Artefakt-Repository-Operator 764 ein neues Artefakt-Repository (z.B. Artefakt-Repository 770B) mit dem heruntergeladenen verteilbaren Container 850 ein. Jedes der eingesetzten Artefakt-Repositories kann in numerischer Reihenfolge neu nummeriert werden, wobei das Artefakt-Repository mit dem neuesten verteilbaren Container bei 1 beginnt und das Artefakt-Repository mit dem ältesten verteilbaren Container.
-
In anderen Ausführungsformen löscht der Operator des Artefakt-Repositorys 764 den Artefakt-Repository mit dem ältesten verteilbaren Container und setzt einen neuen Artefakt-Repository mit dem heruntergeladenen verteilbaren Container 850 ein, sobald eine vorgegebene Anzahl von Artefakt-Repositorys (z. B. 3) im entfernten Rechenzentrum 740 eingesetzt wurde, wie die Artefakt-Repository 770A-Z. Jedes der eingesetzten Artefakt-Repositorys wird in numerischer Reihenfolge neu nummeriert, wobei das Artefakt-Repository mit dem neuesten verteilbaren Container bei 1 beginnt und das Artefakt-Repository mit dem ältesten verteilbaren Container. Zusätzlich und/oder alternativ bietet die vorbestimmte Anzahl von Artefakt-Repositories einen Mechanismus zum Zurücksetzen der Version der verteilbaren Container, die von dem Steuerebenen-Cluster 750 und/oder den Workload-Clustern 780A-C verwendet werden.
-
In einigen Ausführungsformen kann der Cluster-Aktualisierungsoperator 762 eine Aktualisierungsanforderung 860 erstellen. Die Aktualisierungsanforderung 860 kann das spezifische Artefakt-Repository identifizieren, das den verteilbaren Container mit den verfügbaren Aktualisierungen für eine oder mehrere Infrastrukturkomponenten enthält. Die Aktualisierungsanforderung 860 wird dem Einsatzmanagement-Operator 752 zur Verfügung gestellt. Dementsprechend kann der Einsatzmanagement-Operator 752 die Aktualisierungsanforderung verarbeiten, ähnlich wie der Einsatzmanagement-Operator 552 von 5 die Einsatzanforderung 634 von 6 verarbeitet hat, um eine oder mehrere Infrastrukturkomponenten des Steuerungsebenen-Clusters 750 und/oder der Workload-Cluster 780A-C zu aktualisieren.
-
Computersysteme
-
9 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, das ein System mit miteinander verbundenen Geräten und Komponenten, ein System-on-a-Chip (SOC) oder eine Kombination davon 900 sein kann, das mit einem Prozessor gebildet wird, der Ausführungseinheiten zur Ausführung eines Befehls gemäß mindestens einer Ausführungsform enthalten kann. In mindestens einer Ausführungsform kann das Computersystem 900 ohne Einschränkung eine Komponente wie einen Prozessor 902 enthalten, um Ausführungseinheiten einschließlich Logik zur Durchführung von Algorithmen zur Verarbeitung von Daten gemäß der vorliegenden Offenbarung, wie in der hier beschriebenen Ausführungsform, einzusetzen. In mindestens einer Ausführungsform kann das Computersystem 900 Prozessoren enthalten, wie z. B. die PENTIUM®-Prozessorfamilie, Xeon™, Itaniumü, XScale™ und/oder StrongARM™, Intel® Core™ oder Intel® Nervana™-Mikroprozessoren, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, technische Workstations, Set-Top-Boxen und dergleichen) verwendet werden können. In mindestens einer Ausführungsform kann das Computersystem 900 eine Version des Betriebssystems WINDOWS der Microsoft Corporation aus Redmond, Washington, ausführen, obwohl auch andere Betriebssysteme (beispielsweise UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können.
-
Die Ausführungsformen können auch in anderen Geräten wie Handheld-Geräten und eingebetteten Anwendungen verwendet werden. Einige Beispiele für Handheld-Geräte sind Mobiltelefone, Internetprotokollgeräte, Digitalkameras, persönliche digitale Assistenten („PDAs“) und Handheld-PCs. In mindestens einer Ausführungsform können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor („DSP“), ein System auf einem Chip, Netzwerkcomputer („NetPCs“), Set-Top-Boxen, Netzwerk-Hubs, Wide Area Network („WAN“)-Switches oder jedes andere System umfassen, das eine oder mehrere Anweisungen gemäß mindestens einer Ausführungsform ausführen kann.
-
In mindestens einer Ausführungsform kann das Computersystem 900 ohne Einschränkung einen Prozessor 902 enthalten, der ohne Einschränkung eine oder mehrere Ausführungseinheiten 908 enthalten kann, um ein maschinelles Lernmodell gemäß den hier beschriebenen Techniken zu trainieren und/oder zu inferieren. In mindestens einer Ausführungsform ist das Computersystem 900 ein Einzelprozessor-Desktop- oder - Serversystem, aber in einer anderen Ausführungsform kann das Computersystem 900 ein Multiprozessorsystem sein. In mindestens einer Ausführungsform kann der Prozessor 902 ohne Einschränkung einen CISC-Mikroprozessor (Complex Instruction Set Computer), einen RISC-Mikroprozessor (Reduced Instruction Set Computing), einen VLIW-Mikroprozessor (Very Long Instruction Word), einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder jedes andere Prozessorgerät, wie beispielsweise einen digitalen Signalprozessor, umfassen. In mindestens einer Ausführungsform kann der Prozessor 902 mit einem Prozessorbus 910 gekoppelt sein, der Datensignale zwischen dem Prozessor 902 und anderen Komponenten im Computersystem 900 übertragen kann.
-
In mindestens einer Ausführungsform kann der Prozessor 902, ohne Einschränkung, einen internen Cache-Speicher („Cache“) 904 der Ebene 1 („L1") enthalten. In mindestens einer Ausführungsform kann der Prozessor 902 einen einzigen internen Cache oder mehrere Ebenen eines internen Cache haben. In mindestens einer Ausführungsform kann sich der Cache-Speicher außerhalb des Prozessors 902 befinden. Andere Ausführungsformen können auch eine Kombination aus internen und externen Cachespeichern enthalten, abhängig von der jeweiligen Implementierung und den Anforderungen. In mindestens einer Ausführungsform kann die Registerdatei 906 verschiedene Datentypen in verschiedenen Registern speichern, darunter, ohne Einschränkung, Ganzzahlregister, Gleitkommaregister, Statusregister und Befehlszeigerregister.
-
In mindestens einer Ausführungsform befindet sich die Ausführungseinheit 908, einschließlich, ohne Einschränkung, der Logik zur Durchführung von Ganzzahl- und Gleitkommaoperationen, ebenfalls im Prozessor 902. In mindestens einer Ausführungsform kann der Prozessor 902 auch einen Nur-Lese-Speicher („ROM“) für Mikrocode („ucode“) enthalten, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einer Ausführungsform kann die Ausführungseinheit 908 eine Logik zur Verarbeitung eines gepackten Befehlssatzes 909 enthalten. In mindestens einer Ausführungsform können durch die Aufnahme des gepackten Befehlssatzes 909 in einen Befehlssatz eines Mehrzweckprozessors 902 zusammen mit einer zugehörigen Schaltung zur Ausführung von Befehlen Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung gepackter Daten in einem Mehrzweckprozessor 902 durchgeführt werden. In einer oder mehreren Ausführungsformen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem die gesamte Breite des Datenbusses eines Prozessors für die Durchführung von Operationen mit gepackten Daten genutzt wird, wodurch die Notwendigkeit entfällt, kleinere Dateneinheiten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen mit jeweils einem Datenelement durchzuführen.
-
In mindestens einer Ausführungsform kann die Ausführungseinheit 908 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikgeräten, DSPs und anderen Arten von Logikschaltungen verwendet werden. In mindestens einer Ausführungsform kann das Computersystem 900, ohne Einschränkung, einen Speicher 920 enthalten. In mindestens einer Ausführungsform kann der Speicher 920 als dynamischer Direktzugriffsspeicher („DRAM“), statischer Direktzugriffsspeicher („SRAM"), Flash-Speicher oder eine andere Speichervorrichtung implementiert sein. In mindestens einer Ausführungsform kann der Speicher 920 Anweisung(en) 919 und/oder Daten 921 speichern, die durch Datensignale dargestellt werden, die vom Prozessor 902 ausgeführt werden können.
-
In mindestens einer Ausführungsform kann der Systemlogikchip mit dem Prozessorbus 910 und dem Speicher 920 gekoppelt sein. In mindestens einer Ausführungsform kann der Systemlogikchip ohne Einschränkung einen Speichercontroller-Hub („MCH“) 916 umfassen, und der Prozessor 902 kann über den Prozessorbus 910 mit dem MCH 916 kommunizieren. In mindestens einer Ausführungsform kann der MCH 916 einen Speicherpfad 918 mit hoher Bandbreite zum Speicher 920 für die Befehls- und Datenspeicherung und für die Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens einer Ausführungsform kann der MCH 916 Datensignale zwischen dem Prozessor 902, dem Speicher 920 und anderen Komponenten im Computersystem 900 leiten und Datensignale zwischen dem Prozessorbus 910, dem Speicher 920 und einer System-I/O 922 überbrücken. In mindestens einer Ausführungsform kann der Systemlogikchip einen Grafikport zur Kopplung mit einem Grafikcontroller bereitstellen. In mindestens einer Ausführungsform kann der MCH 916 über einen Speicherpfad 918 mit hoher Bandbreite mit dem Speicher 920 gekoppelt sein, und die Grafik-/Videokarte 912 kann über eine Accelerated Graphics Port („AGP“)-Verbindung 914 mit dem MCH 916 gekoppelt sein.
-
In mindestens einer Ausführungsform kann das Computersystem 900 einen System-I/O-Bus 922 verwenden, bei dem es sich um einen proprietären Hub-Schnittstellenbus handelt, um den MCH 916 mit dem I/O-Controller-Hub („ICH“) 930 zu koppeln. In mindestens einer Ausführungsform kann der ICH 930 direkte Verbindungen zu einigen I/O-Geräten über einen lokalen I/O-Bus bereitstellen. In mindestens einer Ausführungsform kann der lokale I/O-Bus ohne Einschränkung einen Hochgeschwindigkeits-I/O-Bus zur Verbindung von Peripheriegeräten mit dem Speicher 920, dem Chipsatz und dem Prozessor 902 umfassen. Beispiele hierfür sind unter anderem ein Audiocontroller 929, ein Firmware-Hub („Flash-BIOS“) 928, ein drahtloser Transceiver 926, ein Datenspeicher 924, ein Alt-I/O-Controller 923 mit Benutzereingabe- und Tastaturschnittstellen 925, ein serieller Erweiterungsport 927, wie Universal Serial Bus („USB“), und ein Netzwerkcontroller 934. Der Datenspeicher 924 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Gerät, ein Flash-Speichergerät oder ein anderes Massenspeichergerät aufweisen.
-
In mindestens einer Ausführungsform zeigt 9 ein System, das miteinander verbundene Hardwaregeräte oder „Chips“ umfasst, während in anderen Ausführungsformen 9 ein beispielhaftes System auf einem Chip („SoC“) zeigen kann. In mindestens einer Ausführungsform können die Geräte mit proprietären Verbindungen, standardisierten Verbindungen (z. B. PCIe) oder einer Kombination davon miteinander verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten des Computersystems 900 über Compute-Express-Link (CXL)-Verbindungen miteinander verbunden.
-
Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 115 werden nachstehend in Verbindung mit 1A und/oder 1B beschrieben. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 im System 9 für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden.
-
Solche Komponenten können verwendet werden, um synthetische Daten zu erzeugen, die Fehlerfälle in einem Netzwerktrainingsprozess imitieren, was dazu beitragen kann, die Leistung des Netzwerkes zu verbessern und gleichzeitig die Menge der synthetischen Daten zu begrenzen, um eine Überanpassung zu vermeiden.
-
10 ist ein Blockdiagramm, das ein elektronisches Gerät 1000 zur Verwendung eines Prozessors 1010 gemäß mindestens einer Ausführungsform zeigt. In mindestens einer Ausführungsform kann das elektronische Gerät 1000 beispielsweise und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, ein mobiles Gerät, ein Telefon, ein eingebetteter Computer oder jedes andere geeignete elektronische Gerät sein.
-
In mindestens einer Ausführungsform kann das System 1000 ohne Einschränkung einen Prozessor 1010 enthalten, der mit einer beliebigen Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Geräten kommunikativ gekoppelt ist. In mindestens einer Ausführungsform ist der Prozessor 1010 über einen Bus oder eine Schnittstelle gekoppelt, wie z.B. einen 1°C-Bus, einen System-Management-Bus („SMBus“), einen Low-Pin-Count-Bus (LPC), ein Serial Peripheral Interface („SPI“), einen High-Definition-Audio-Bus („HDA“), einen Serial-Advance-Technology-Attachment-Bus („SATA“), einen Universal-Serial-Bus („USB“) (Versionen 1, 2, 3) oder einen Universal-Asynchronous-Receiver/Transmitter-Bus („UART“). In mindestens einer Ausführungsform zeigt 10 ein System, das miteinander verbundene Hardwaregeräte oder „Chips“ umfasst, während in anderen Ausführungsformen 10 ein beispielhaftes System auf einem Chip („SoC“) zeigen kann. In mindestens einer Ausführungsform können die in 10 dargestellten Geräte mit proprietären Verbindungen, standardisierten Verbindungen (z. B. PCIe) oder einer Kombination davon verbunden sein. In mindestens einer Ausführungsform sind eine oder mehrere Komponenten von 10 über Compute-Express-Link (CXL)-Verbindungen miteinander verbunden.
-
In mindestens einer Ausführungsform kann 10 eine Anzeige 1024, einen Touchscreen 1025, ein Touchpad 1030, eine Near Field Communications-Einheit („NFC“) 1045, einen Sensor-Hub 1040, einen Wärmesensor 1046, einen Express-Chipsatz („EC“) 1035, ein Trusted Platform Module („TPM“) 1038, BIOS/Firmware/Flash-Speicher („BIOS, FW Flash“) 1022, einen DSP 1060, ein Laufwerk 1020 wie eine Solid State Disk („SSD“) oder eine Festplatte („HDD“), eine drahtlose lokale Netzwerkeinheit („WLAN“) 1050, eine Bluetooth-Einheit 1052, eine drahtlose Wide Area Network-Einheit („WWAN“) 1056, ein Global Positioning System (GPS) 1055, eine Kamera („USB 3.0-Kamera“) 1054, wie beispielsweise eine USB 3.0-Kamera, und/oder eine Low Power Double Data Rate („LPDDR“)-Speichereinheit („LPDDR3“) 1015, die beispielsweise im LPDDR3-Standard implementiert ist. Diese Komponenten können in jeder geeigneten Weise implementiert werden.
-
In mindestens einer Ausführungsform können andere Komponenten über die oben beschriebenen Komponenten mit dem Prozessor 1010 kommunikativ gekoppelt sein. In mindestens einer Ausführungsform können ein Beschleunigungsmesser 1041, ein Umgebungslichtsensor („ALS“) 1042, ein Kompass 1043 und ein Gyroskop 1044 kommunikativ mit dem Sensor-Hub 1040 gekoppelt sein. In mindestens einer Ausführungsform können der Wärmesensor 1039, ein Lüfter 1037, eine Tastatur 1046 und ein Touchpad 1030 kommunikativ mit dem EC 1035 gekoppelt sein. In mindestens einer Ausführungsform können Lautsprecher 1063, Kopfhörer 1064 und Mikrofon („Mic“) 1065 kommunikativ mit einer Audioeinheit („Audio-Codec und Class D Amp“) 1062 gekoppelt sein, die wiederum kommunikativ mit DSP 1060 gekoppelt sein kann. In mindestens einer Ausführungsform kann die Audioeinheit 1064 beispielsweise und ohne Einschränkung einen Audiocodierer/-decodierer („Codec“) und einen Verstärker der Klasse D umfassen. In mindestens einer Ausführungsform kann die SIM-Karte (SIM") 1057 mit der WWAN-Einheit 1056 kommunikativ gekoppelt sein. In mindestens einer Ausführungsform können Komponenten wie die WLAN-Einheit 1050 und die Bluetooth-Einheit 1052 sowie die WWAN-Einheit 1056 in einem Next Generation Form Factor („NGFF“) implementiert sein.
-
Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 115 werden nachstehend in Verbindung mit 1A und/oder 1B beschrieben. In mindestens einer Ausführungsform kann die Inferenz- und/oder Trainingslogik 115 im System 10 für Inferenz- oder Vorhersageoperationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet werden.
-
Solche Komponenten können verwendet werden, um synthetische Daten zu erzeugen, die Fehlerfälle in einem Netzwerktrainingsprozess imitieren, was dazu beitragen kann, die Leistung des Netzwerkes zu verbessern und gleichzeitig die Menge der synthetischen Daten zu begrenzen, um eine Überanpassung zu vermeiden.
-
11 ist ein Blockdiagramm eines Verarbeitungssystems gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform umfasst das System 1100 einen oder mehrere Prozessoren 1102 und einen oder mehrere Grafikprozessoren 1108 und kann ein Einzelprozessor-Desktop-System, ein Multiprozessor-Workstation-System oder ein Server-System mit einer großen Anzahl von Prozessoren 1102 oder Prozessorkernen 1107 sein. In mindestens einer Ausführungsform ist das System 1100 eine Verarbeitungsplattform, die in einen integrierten System-on-a-Chip (SoC)-Schaltkreis zur Verwendung in mobilen, tragbaren oder eingebetteten Geräten integriert ist.
-
In mindestens einer Ausführungsform kann das System 1100 eine serverbasierte Spielplattform, eine Spielkonsole, einschließlich einer Spiel- und Medienkonsole, eine mobile Spielkonsole, eine Handheld-Spielkonsole oder eine Online-Spielkonsole umfassen oder in diese integriert sein. In mindestens einer Ausführungsform ist das System 1100 ein Mobiltelefon, ein Smartphone, ein Tablet-Computergerät oder ein mobiles Internetgerät. In mindestens einer Ausführungsform kann das Verarbeitungssystem 1100 auch ein tragbares Gerät umfassen, mit diesem koppeln oder in ein solches integriert werden, wie z.B. ein tragbares Gerät mit einer intelligenten Uhr, einer intelligenten Brille, einem Augmented-Reality-Gerät oder einem Virtual-Reality-Gerät. In mindestens einer Ausführungsform ist das Verarbeitungssystem 1100 ein Fernsehgerät oder ein Set-Top-Box-Gerät mit einem oder mehreren Prozessoren 1102 und einer grafischen Schnittstelle, die von einem oder mehreren Grafikprozessoren 1108 erzeugt wird.
-
In mindestens einer Ausführungsform umfassen ein oder mehrere Prozessoren 1102 jeweils einen oder mehrere Prozessorkerne 1107 zur Verarbeitung von Befehlen, die bei ihrer Ausführung Operationen für System- und Anwendersoftware durchführen. In mindestens einer Ausführungsform ist jeder von einem oder mehreren Prozessorkernen 1107 so konfiguriert, dass er einen bestimmten Befehlssatz 1109 verarbeitet. In mindestens einer Ausführungsform kann der Befehlssatz 1109 das Complex Instruction Set Computing (CISC), das Reduced Instruction Set Computing (RISC) oder das Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. In mindestens einer Ausführungsform können die Prozessorkerne 1107 jeweils einen anderen Befehlssatz 1109 verarbeiten, der Befehle enthalten kann, um die Emulation anderer Befehlssätze zu erleichtern. In mindestens einer Ausführungsform kann der Prozessorkern 1107 auch andere Verarbeitungsgeräte, wie einen digitalen Signalprozessor (DSP), enthalten.
-
In mindestens einer Ausführungsform umfasst der Prozessor 1102 einen Cache-Speicher 1104. In mindestens einer Ausführungsform kann der Prozessor 1102 einen einzigen internen Cache-Speicher oder mehrere Ebenen von internen Cache-Speichern haben. In mindestens einer Ausführungsform wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 1102 gemeinsam genutzt. In mindestens einer Ausführungsform verwendet der Prozessor 1102 auch einen externen Cache (z. B. einen Level-3 (L3) Cache oder Last Level Cache (LLC)) (nicht dargestellt), der von den Prozessorkernen 1107 unter Verwendung bekannter Cache-Kohärenztechniken gemeinsam genutzt werden kann. In mindestens einer Ausführungsform ist zusätzlich eine Registerdatei 1106 im Prozessor 1102 enthalten, die verschiedene Arten von Registern zur Speicherung unterschiedlicher Datentypen (z. B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Befehlszeigerregister) enthalten kann. In mindestens einer Ausführungsform kann die Registerdatei 1106 Allzweckregister oder andere Register enthalten.
-
In mindestens einer Ausführungsform sind ein oder mehrere Prozessoren 1102 mit einem oder mehreren Schnittstellenbus(se) 1110 gekoppelt, um Kommunikationssignale wie Adress-, Daten- oder Steuersignale zwischen dem Prozessor 1102 und anderen Komponenten im System 1100 zu übertragen. In mindestens einer Ausführungsform kann der Schnittstellenbus 1110 ein Prozessorbus sein, wie z.B. eine Version eines Direct Media Interface (DMI)-Busses. In mindestens einer Ausführungsform ist die Schnittstelle 1110 nicht auf einen DMI-Bus beschränkt, sondern kann einen oder mehrere Peripheral Component Interconnect-Busse (z.B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen umfassen. In mindestens einer Ausführungsform umfassen Prozessor(en) 1102 einen integrierten Speichercontroller 1116 und einen Plattform-Controller-Hub 1130. In mindestens einer Ausführungsform erleichtert der Speichercontroller 1116 die Kommunikation zwischen einem Speichergerät und anderen Komponenten des Systems 1100, während der Plattformcontroller-Hub (PCH) 1130 Verbindungen zu I/O-Geräten über einen lokalen I/O-Bus bereitstellt.
-
In mindestens einer Ausführungsform kann die Speichervorrichtung 1120 ein dynamischer Direktzugriffsspeicher (DRAM), ein statischer Direktzugriffsspeicher (SRAM), ein Flash-Speicher, ein Phasenwechsel-Speicher oder eine andere Speichervorrichtung mit geeigneter Leistung sein, um als Prozessspeicher zu dienen. In mindestens einer Ausführungsform kann die Speichervorrichtung 1120 als Systemspeicher für das System 1100 arbeiten, um Daten 1122 und Anweisungen 1121 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 1102 eine Anwendung oder einen Prozess ausführen. In mindestens einer Ausführungsform koppelt der Speichercontroller 1116 auch mit einem optionalen externen Grafikprozessor 1112, der mit einem oder mehreren Grafikprozessoren 1108 in den Prozessoren 1102 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In mindestens einer Ausführungsform kann eine Anzeigevorrichtung 1111 an den/die Prozessor(en) 1102 angeschlossen werden. In mindestens einer Ausführungsform kann die Anzeigevorrichtung 1111 eine oder mehrere interne Anzeigevorrichtungen, wie in einem mobilen elektronischen Gerät oder einem Laptop, oder eine externe Anzeigevorrichtung umfassen, die über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) angeschlossen ist. In mindestens einer Ausführungsform kann das Anzeigegerät 1111 ein kopfmontiertes Display (HMD) wie ein stereoskopisches Anzeigegerät zur Verwendung in Anwendungen der virtuellen Realität (VR) oder der erweiterten Realität (AR) umfassen.
-
In mindestens einer Ausführungsform ermöglicht der Plattform-Controller-Hub 1130 den Anschluss von Peripheriegeräten an das Speichergerät 1120 und den Prozessor 1102 über einen Hochgeschwindigkeits-I/O-Bus. In mindestens einer Ausführungsform umfassen die I/O-Peripheriegeräte unter anderem einen Audiocontroller 1146, einen Netzwerkcontroller 1134, eine Firmware-Schnittstelle 1128, einen drahtlosen Transceiver 1126, Berührungssensoren 1125 und ein Datenspeichergerät 1124 (z. B. ein Festplattenlaufwerk, einen Flash-Speicher usw.). In mindestens einer Ausführungsform kann das Datenspeichergerät 1124 über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriebus, wie einen Peripheral Component Interconnect Bus (z. B. PCI, PCI Express), angeschlossen werden. In mindestens einer Ausführungsform können die Berührungssensoren 1125 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren umfassen. In mindestens einer Ausführungsform kann der drahtlose Transceiver 1126 ein Wi-Fi-Transceiver, ein Bluetooth-Transceiver oder ein Mobilfunk-Transceiver wie ein 3G-, 4G- oder Long Term Evolution (LTE)-Transceiver sein. In mindestens einer Ausführungsform ermöglicht die Firmware-Schnittstelle 1128 die Kommunikation mit der System-Firmware und kann beispielsweise eine einheitliche erweiterbare Firmware-Schnittstelle (UEFI) sein. In mindestens einer Ausführungsform kann der Netzwerk-Controller 1134 eine Netzwerkverbindung mit einem kabelgebundenen Netzwerk ermöglichen. In mindestens einer Ausführungsform koppelt ein Hochleistungsnetzwerk-Controller (nicht dargestellt) mit dem Schnittstellenbus 1110. In mindestens einer Ausführungsform ist der Audiocontroller 1146 ein Multikanal-High-Definition-Audiocontroller. In mindestens einer Ausführungsform enthält das System 1100 einen optionalen Legacy-I/O-Controller 1140 zum Koppeln von Legacy-Geräten (z. B. Personal System 2 (PS/2)) mit dem System. In mindestens einer Ausführungsform kann der Plattform-Controller-Hub 1130 auch mit einem oder mehreren Universal Serial Bus (USB)-Controllern 1142 verbunden werden, die Eingabevorrichtungen wie Tastatur- und Mauskombinationen 1143, eine Kamera 1144 oder andere USB-Eingabevorrichtungen anschließen.
-
In mindestens einer Ausführungsform kann eine Instanz des Speichercontrollers 1116 und des Plattformcontroller-Hubs 1130 in einen diskreten externen Grafikprozessor, wie den externen Grafikprozessor 1112, integriert werden. In mindestens einer Ausführungsform können der Plattformcontroller-Hub 1130 und/oder der Speichercontroller 1116 extern zu einem oder mehreren Prozessor(en) 1102 sein. Beispielsweise kann das System 1100 in mindestens einer Ausführungsform einen externen Speichercontroller 1116 und einen Plattformcontroller-Hub 1130 enthalten, der als Speichercontroller-Hub und Peripheriecontroller-Hub innerhalb eines Systemchipsets konfiguriert sein kann, das mit dem/den Prozessor(en) 1102 kommuniziert.
-
Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 115 werden im Folgenden in Verbindung mit 1A und/oder 1B beschrieben. In mindestens einer Ausführungsform können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 115 in den Grafikprozessor 1500 integriert sein. Beispielsweise können in mindestens einer Ausführungsform die hier beschriebenen Trainings- und/oder Schlussfolgerungstechniken eine oder mehrere ALUs verwenden, die in einem Grafikprozessor enthalten sind. Darüber hinaus können in mindestens einer Ausführungsform die hierin beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung einer anderen als der in 1A oder 1B dargestellten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder in Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs eines Grafikprozessors so konfigurieren, dass sie einen oder mehrere hier beschriebene maschinelle Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken ausführen.
-
Solche Komponenten können verwendet werden, um synthetische Daten zu erzeugen, die Fehlerfälle in einem Netzwerktrainingsprozess imitieren, was dazu beitragen kann, die Leistung des Netzwerkes zu verbessern und gleichzeitig die Menge der synthetischen Daten zu begrenzen, um eine Überanpassung zu vermeiden.
-
12 ist ein Blockdiagramm eines Prozessors 1200 mit einem oder mehreren Prozessorkernen 1202A-1202N, einem integrierten Speichercontroller 1214 und einem integrierten Grafikprozessor 1208, entsprechend mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozessor 1200 zusätzliche Kerne bis einschließlich des zusätzlichen Kerns 1202N enthalten, der durch gestrichelte Kästchen dargestellt ist. In mindestens einer Ausführungsform enthält jeder der Prozessorkerne 1202A-1202N eine oder mehrere interne Cache-Einheiten 1204A-1204N. In mindestens einer Ausführungsform hat jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 1206.
-
In mindestens einer Ausführungsform stellen die internen Cache-Einheiten 1204A-1204N und die gemeinsam genutzten Cache-Einheiten 1206 eine Cache-Speicherhierarchie im Prozessor 1200 dar. In mindestens einer Ausführungsform können die Cache-Speichereinheiten 1204A-1204N mindestens eine Ebene von Befehls- und Datencache innerhalb jedes Prozessorkerns und eine oder mehrere Ebenen von gemeinsam genutztem Mid-Level-Cache, wie z. B. eine Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Levels, umfassen, wobei die höchste Cache-Ebene vor dem externen Speicher als LLC klassifiziert ist. In mindestens einer Ausführungsform hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 1206 und 1204A-1204N aufrecht.
-
In mindestens einer Ausführungsform kann der Prozessor 1200 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 1216 und einen Systemagenten-Kern 1210 enthalten. In mindestens einer Ausführungsform verwalten eine oder mehrere Bus-Controller-Einheiten 1216 eine Reihe von Peripherie-Bussen, wie einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einer Ausführungsform bietet der Systemagentenkern 1210 Managementfunktionen für verschiedene Prozessorkomponenten. In mindestens einer Ausführungsform umfasst der Systemagenten-Kern 1210 einen oder mehrere integrierte Speichercontroller 1214 zur Management des Zugriffs auf verschiedene externe Speichergeräte (nicht dargestellt).
-
In mindestens einer Ausführungsform unterstützen einer oder mehrere der Prozessorkerne 1202A-1202N das gleichzeitige Multithreading. In mindestens einer Ausführungsform umfasst der Systemagentenkern 1210 Komponenten zur Koordinierung und zum Betrieb der Kerne 1202A-1202N während der Multithreading-Verarbeitung. In mindestens einer Ausführungsform kann der Systemagenten-Kern 1210 zusätzlich eine Energiesteuerungseinheit (PCU) enthalten, die Logik und Komponenten zur Regulierung eines oder mehrerer Leistungszustände der Prozessorkerne 1202A-1202N und des Grafikprozessors 1208 umfasst.
-
In mindestens einer Ausführungsform umfasst der Prozessor 1200 zusätzlich den Grafikprozessor 1208 zur Ausführung von Grafikverarbeitungsoperationen. In mindestens einer Ausführungsform koppelt der Grafikprozessor 1208 mit gemeinsam genutzten Cache-Einheiten 1206 und dem Systemagenten-Kern 1210, der einen oder mehrere integrierte Speichercontroller 1214 enthält. In mindestens einer Ausführungsform umfasst der Systemagenten-Kern 1210 auch einen Anzeige-Controller 1211, um die Ausgabe des Grafikprozessors an ein oder mehrere gekoppelte Anzeigen zu steuern. In mindestens einer Ausführungsform kann der Anzeige-Controller 1211 auch ein separates Modul sein, das über mindestens eine Zwischenverbindung mit dem Grafikprozessor 1208 gekoppelt ist, oder er kann in den Grafikprozessor 1208 integriert sein.
-
In mindestens einer Ausführungsform wird eine ringbasierte Verbindungseinheit 1212 verwendet, um die internen Komponenten des Prozessors 1200 zu koppeln. In mindestens einer Ausführungsform kann eine alternative Verbindungseinheit verwendet werden, wie z. B. eine Punkt-zu-Punkt-Verbindung, eine geschaltete Verbindung oder andere Techniken. In mindestens einer Ausführungsform koppelt der Grafikprozessor 1208 über eine I/O-Verbindung 1213 mit der Ringverbindungseinheit 1212.
-
In mindestens einer Ausführungsform stellt die I/O-Verbindung 1213 mindestens eine von mehreren Arten von I/O-Verbindungen dar, einschließlich einer I/O-Verbindung auf dem Gehäuse, die die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 1218, beispielsweise einem eDRAM-Modul, erleichtert. In mindestens einer Ausführungsform verwenden jeder der Prozessorkerne 1202A-1202N und der Grafikprozessor 1208 eingebettete Speichermodule 1218 als gemeinsamen Last Level Cache.
-
In mindestens einer Ausführungsform sind die Prozessorkerne 1202A-1202N homogene Kerne, die eine gemeinsame Befehlssatzarchitektur ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 1202A-1202N in Bezug auf die Befehlssatzarchitektur (ISA) heterogen, wobei ein oder mehrere Prozessorkerne 1202A-1202N einen gemeinsamen Befehlssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 1202A-1202N eine Teilmenge eines gemeinsamen Befehlssatzes oder einen anderen Befehlssatz ausführen. In mindestens einer Ausführungsform sind die Prozessorkerne 1202A-1202N in Bezug auf die Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einem relativ höheren Energieverbrauch mit einem oder mehreren Kernen mit einem niedrigeren Energieverbrauch koppeln. In mindestens einer Ausführungsform kann der Prozessor 1200 auf einem oder mehreren Chips oder als integrierte SoC-Schaltung implementiert werden.
-
Die Inferenz- und/oder Trainingslogik 115 wird verwendet, um Inferenz- und/oder Trainingsoperationen in Verbindung mit einer oder mehreren Ausführungsformen durchzuführen. Einzelheiten zur Inferenz- und/oder Trainingslogik 115 werden unten in Verbindung mit 1A und/oder 1B beschrieben. In mindestens einer Ausführungsform können Teile oder die Gesamtheit der Inferenz- und/oder Trainingslogik 115 in den Prozessor 1200 integriert sein. Beispielsweise können in mindestens einer Ausführungsform die hierin beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere der ALUs verwenden, die im Grafikprozessor 1512, in den Grafikkernen 1202A-1202N oder in anderen Komponenten in 12 enthalten sind. Darüber hinaus können in mindestens einer Ausführungsform die hier beschriebenen Inferenz- und/oder Trainingsoperationen unter Verwendung einer anderen Logik als der in 1A oder 1B dargestellten Logik durchgeführt werden. In mindestens einer Ausführungsform können Gewichtungsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (dargestellt oder nicht dargestellt) gespeichert werden, die ALUs des Grafikprozessors 1200 so konfigurieren, dass sie einen oder mehrere hier beschriebene maschinelle Lernalgorithmen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken ausführen.
-
Solche Komponenten können verwendet werden, um synthetische Daten zu erzeugen, die Fehlerfälle in einem Netzwerktrainingsprozess imitieren, was dazu beitragen kann, die Leistung des Netzwerkes zu verbessern und gleichzeitig die Menge der synthetischen Daten zu begrenzen, um eine Überanpassung zu vermeiden.
-
Virtualisierte Rechenplattform
-
13 ist ein beispielhaftes Datenflussdiagramm für einen Prozess 1300 der Erzeugung und des Einsatzes einer Bildverarbeitungs- und Inferenzpipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 1300 zur Verwendung mit Bildverarbeitungsgeräten, Verarbeitungsgeräten und/oder anderen Gerätetypen in einer oder mehreren Einrichtungen 1302 eingesetzt werden. Der Prozess 1300 kann innerhalb eines Trainingssystems 1304 und/oder eines Bereitstellungsystems 1306 ausgeführt werden. In mindestens einer Ausführungsform kann das Trainingssystem 1304 verwendet werden, um das Training, den Einsatz und die Implementierung von Modellen des maschinellen Lernens (z. B. neuronale Netzwerke, Objekterkennungsalgorithmen, Computer-Vision-Algorithmen usw.) zur Verwendung im Einsatzsystem 1306 durchzuführen. In mindestens einer Ausführungsform kann das Einsatzsystem 1306 so konfiguriert sein, dass es Verarbeitungs- und Rechenressourcen auf eine verteilte Computerumgebung verlagert, um die Infrastrukturanforderungen in der Einrichtung 1302 zu reduzieren. In mindestens einer Ausführungsform können eine oder mehrere Anwendungen in einer Pipeline Dienste (z. B. Inferenz, Visualisierung, Rechenleistung, KI usw.) des Einsatzsystems 1306 während der Ausführung von Anwendungen nutzen oder aufrufen.
-
In mindestens einer Ausführungsform können einige der Anwendungen, die in fortgeschrittenen Verarbeitungs- und Schlussfolgerungspipelines verwendet werden, maschinelle Lernmodelle oder andere KI verwenden, um einen oder mehrere Verarbeitungsschritte durchzuführen. In mindestens einer Ausführungsform können maschinelle Lernmodelle in der Einrichtung 1302 unter Verwendung von Daten 1308 (z. B. Bildgebungsdaten) trainiert werden, die in der Einrichtung 1302 erzeugt (und auf einem oder mehreren PACS-Servern (Picture Archiving and Communication System) in der Einrichtung 1302 gespeichert) wurden, sie können unter Verwendung von Bildgebungs- oder Sequenzierungsdaten 1308 aus einer anderen Einrichtung oder einer Kombination davon trainiert werden. In mindestens einer Ausführungsform kann das Trainingssystem 1304 verwendet werden, um Anwendungen, Dienste und/oder andere Ressourcen zur Erzeugung funktionierender, einsatzfähiger maschineller Lernmodelle für das Einsatzsystem 1306 bereitzustellen.
-
In mindestens einer Ausführungsform kann die Modellregistrierung 1324 durch einen Objektspeicher unterstützt werden, der die Versionierung und Objektmetadaten unterstützen kann. In mindestens einer Ausführungsform kann auf den Objektspeicher beispielsweise über eine kompatible Anwendungsprogrammierschnittstelle (API) innerhalb einer Cloud-Plattform zugegriffen werden (z. B. die Cloud 1426 in 14). In mindestens einer Ausführungsform können Modelle für maschinelles Lernen in der Modellregistrierung 1324 von Entwicklern oder Partnern eines Systems, das mit einer API interagiert, hochgeladen, aufgelistet, geändert oder gelöscht werden. In mindestens einer Ausführungsform kann eine API Zugang zu Methoden bieten, die es Nutzern mit entsprechenden Berechtigungsnachweisen ermöglichen, Modelle mit Anwendungen zu verknüpfen, so dass Modelle als Teil der Ausführung von containerisierten Instanziierungen von Anwendungen ausgeführt werden können.
-
In mindestens einer Ausführungsform kann die Trainingspipeline 1404 (14) ein Szenario umfassen, in dem die Einrichtung 1302 ihr eigenes maschinelles Lernmodell trainiert oder ein bestehendes maschinelles Lernmodell hat, das optimiert oder aktualisiert werden muss. In mindestens einer Ausführungsform können Bildgebungsdaten 1308, die von Bildgebungsgeräten, Sequenzierungsgeräten und/oder anderen Gerätetypen erzeugt wurden, empfangen werden. In mindestens einer Ausführungsform kann, sobald die Bilddaten 1308 empfangen wurden, die KI-gestützte Annotation 1310 verwendet werden, um bei der Erzeugung von Annotationen zu helfen, die den Bilddaten 1308 entsprechen und als Basisdaten für ein maschinelles Lernmodell verwendet werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 1310 ein oder mehrere maschinelle Lernmodelle (z. B. Faltungsneuronale Netzwerke (CNNs)) umfassen, die trainiert werden können, um Annotationen zu erzeugen, die bestimmten Arten von Bilddaten 1308 (z. B. von bestimmten Geräten) entsprechen. In mindestens einer Ausführungsform können die KI-gestützten Annotationen 1310 dann direkt verwendet oder mit einem Annotationstool angepasst oder feinabgestimmt werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform können KI-unterstützte Anmerkungen 1310, markierte Klinikdaten 1312 oder eine Kombination davon als Basisdaten für das Training eines maschinellen Lernmodells verwendet werden. In mindestens einer Ausführungsform kann ein trainiertes maschinelles Lernmodell als Ausgabemodell 1316 bezeichnet und vom Einsatzsystem 1306, wie hier beschrieben, verwendet werden.
-
In mindestens einer Ausführungsform kann die Trainingspipeline 1404 (14) ein Szenario umfassen, in dem die Einrichtung 1302 ein maschinelles Lernmodell zur Verwendung bei der Durchführung einer oder mehrerer Verarbeitungsaufgaben für eine oder mehrere Anwendungen im Einsatzsystem 1306 benötigt, aber die Einrichtung 1302 verfügt möglicherweise derzeit nicht über ein solches maschinelles Lernmodell (oder verfügt möglicherweise nicht über ein Modell, das für solche Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform kann ein vorhandenes maschinelles Lernmodell aus einer Modellregistrierung 1324 ausgewählt werden. In mindestens einer Ausführungsform kann die Modellregistrierung 1324 Modelle für maschinelles Lernen enthalten, die für die Durchführung einer Vielzahl von unterschiedlichen Schlussfolgerungen aus Bilddaten trainiert wurden. In mindestens einer Ausführungsform können die maschinellen Lernmodelle in der Modellregistrierung 1324 auf Bildgebungsdaten von anderen Einrichtungen als der Einrichtung 1302 (z. B. Einrichtungen an einem anderen Standort) trainiert worden sein. In mindestens einer Ausführungsform können die maschinellen Lernmodelle auf Bildgebungsdaten von einem Standort, zwei Standorten oder einer beliebigen Anzahl von Standorten trainiert worden sein. In mindestens einer Ausführungsform kann das Training, wenn es anhand von Bildgebungsdaten von einem bestimmten Standort trainiert wird, an diesem Standort oder zumindest auf eine Weise stattfinden, die die Vertraulichkeit der Bildgebungsdaten schützt oder die Übertragung von Bildgebungsdaten außerhalb des Standorts einschränkt. In mindestens einer Ausführungsform kann ein maschinelles Lernmodell, sobald es an einem Standort trainiert - oder teilweise trainiert - wurde, zum Modellregister 1324 hinzugefügt werden. In mindestens einer Ausführungsform kann ein maschinelles Lernmodell dann an einer beliebigen Anzahl anderer Einrichtungen neu trainiert oder aktualisiert werden, und ein neu trainiertes oder aktualisiertes Modell kann in der Modellregistrierung 1324 verfügbar gemacht werden. In mindestens einer Ausführungsform kann dann ein maschinelles Lernmodell aus dem Modellregister 1324 ausgewählt - und als Ausgabemodell 1316 bezeichnet - und im Einsatzsystem 1306 verwendet werden, um eine oder mehrere Verarbeitungsaufgaben für eine oder mehrere Anwendungen eines Einsatzsystems durchzuführen.
-
In mindestens einer Ausführungsform, der Trainingspipeline 1404 (14), kann ein Szenario beinhalten, dass die Einrichtung 1302 ein maschinelles Lernmodell zur Verwendung bei der Durchführung einer oder mehrerer Verarbeitungsaufgaben für eine oder mehrere Anwendungen im Einsatzsystem 1306 benötigt, aber die Einrichtung 1302 verfügt möglicherweise derzeit nicht über ein solches maschinelles Lernmodell (oder verfügt möglicherweise nicht über ein Modell, das für solche Zwecke optimiert, effizient oder effektiv ist). In mindestens einer Ausführungsform kann ein aus dem Modellregister 1324 ausgewähltes maschinelles Lernmodell aufgrund von Unterschieden in den Populationen, der Robustheit der zum Trainieren eines maschinellen Lernmodells verwendeten Trainingsdaten, der Vielfalt der Anomalien in den Trainingsdaten und/oder anderer Probleme mit den Trainingsdaten nicht für die in der Einrichtung 1302 erzeugten Bildgebungsdaten 1308 feinabgestimmt oder optimiert sein. In mindestens einer Ausführungsform kann die KI-unterstützte Annotation 1310 verwendet werden, um bei der Erzeugung von Annotationen zu helfen, die den Bildgebungsdaten 1308 entsprechen und als Ground-Truth-Daten für das Neutrainieren oder Aktualisieren eines maschinellen Lernmodells verwendet werden. In mindestens einer Ausführungsform können beschriftete Daten 1312 als Ground-Truth-Daten für das Training eines maschinellen Lernmodells verwendet werden. In mindestens einer Ausführungsform kann das Umlernen oder Aktualisieren eines maschinellen Lernmodells als Modelltraining 1314 bezeichnet werden. In mindestens einer Ausführungsform kann das Modelltraining 1314 - z. B. KI-unterstützte Annotationen 1310, markierte Klinikdaten 1312 oder eine Kombination davon - als Ground-Truth-Daten für das erneute Training oder Aktualisierung eines maschinellen Lernmodells verwendet werden. In mindestens einer Ausführungsform kann ein trainiertes maschinelles Lernmodell als Ausgabemodell 1316 bezeichnet und vom Einsatzsystem 1306, wie hier beschrieben, verwendet werden.
-
In mindestens einer Ausführungsform kann das Einsatzsystem 1306 Software 1318, Dienste 1320, Hardware 1322 und/oder andere Komponenten, Merkmale und Funktionen enthalten. In mindestens einer Ausführungsform kann das Einsatzsystem 1306 einen Software-„Stack“ enthalten, so dass die Software 1318 auf den Diensten 1320 aufgebaut sein kann und die Dienste 1320 zur Ausführung einiger oder aller Verarbeitungsaufgaben verwenden kann, und die Dienste 1320 und die Software 1318 können auf der Hardware 1322 aufgebaut sein und die Hardware 1322 zur Ausführung von Verarbeitungs-, Speicher- und/oder anderen Berechnungsaufgaben des Einsatzsystems 1306 verwenden. In mindestens einer Ausführungsform kann die Software 1318 eine beliebige Anzahl von verschiedenen Containern enthalten, wobei jeder Container eine Instanziierung einer Anwendung ausführen kann. In mindestens einer Ausführungsform kann jede Anwendung eine oder mehrere Verarbeitungsaufgaben in einer erweiterten Verarbeitungs- und Inferenzpipeline durchführen (z. B. Inferenz, Objekterkennung, Merkmalserkennung, Segmentierung, Bildverbesserung, Kalibrierung usw.). In mindestens einer Ausführungsform kann eine erweiterte Verarbeitungs- und Inferenzpipeline basierend auf der Auswahl verschiedener Container definiert werden, die für die Verarbeitung von Bilddaten 1308 erwünscht oder erforderlich sind, zusätzlich zu Containern, die Bilddaten zur Verwendung durch jeden Container und/oder zur Verwendung durch die Einrichtung 1302 nach der Verarbeitung durch eine Pipeline (z. B. zur Rückkonvertierung von Ausgaben in einen verwendbaren Datentyp) empfangen und konfigurieren. In mindestens einer Ausführungsform kann eine Kombination von Containern innerhalb der Software 1318 (die z. B. eine Pipeline bilden) als virtuelles Instrument bezeichnet werden (wie hierin ausführlicher beschrieben), und ein virtuelles Instrument kann Dienste 1320 und Hardware 1322 nutzen, um einige oder alle Verarbeitungsaufgaben von in Containern instanziierten Anwendungen auszuführen.
-
In mindestens einer Ausführungsform kann eine Datenverarbeitungspipeline Eingabedaten (z. B. Bilddaten 1308) in einem bestimmten Format als Reaktion auf eine Ableitungsanforderung (z. B. eine Anforderung von einem Benutzer des Einsatzsystems 1306) empfangen. In mindestens einer Ausführungsform können die Eingabedaten ein oder mehrere Bilder, Videos und/oder andere Datendarstellungen darstellen, die von einer oder mehreren Bildgebungsvorrichtungen erzeugt werden. In mindestens einer Ausführungsform können die Daten als Teil der Datenverarbeitungspipeline einer Vorverarbeitung unterzogen werden, um die Daten für die Verarbeitung durch eine oder mehrere Anwendungen vorzubereiten. In mindestens einer Ausführungsform kann eine Nachbearbeitung an einer Ausgabe einer oder mehrerer Inferenzaufgaben oder anderer Verarbeitungsaufgaben einer Pipeline durchgeführt werden, um Ausgabedaten für eine nächste Anwendung vorzubereiten und/oder um Ausgabedaten für die Übertragung und/oder Verwendung durch einen Benutzer vorzubereiten (z. B. als Antwort auf eine Inferenzanforderung). In mindestens einer Ausführungsform können Inferenzaufgaben von einem oder mehreren maschinellen Lernmodellen durchgeführt werden, wie z. B. trainierten oder eingesetzten neuronalen Netzwerken, die Ausgabemodelle 1316 des Trainingssystems 1304 enthalten können.
-
In mindestens einer Ausführungsform können Aufgaben der Datenverarbeitungspipeline in einem oder mehreren Containern gekapselt werden, die jeweils eine diskrete, voll funktionsfähige Instanziierung einer Anwendung und einer virtualisierten Rechenumgebung darstellen, die in der Lage ist, Modelle für maschinelles Lernen zu referenzieren. In mindestens einer Ausführungsform können Container oder Anwendungen in einem privaten (z. B. zugangsbeschränkten) Bereich einer Containerregistrierung (hierin ausführlicher beschrieben) veröffentlicht werden, und trainierte oder eingesetzte Modelle können in der Modellregistrierung 1324 gespeichert und mit einer oder mehreren Anwendungen verbunden werden. In mindestens einer Ausführungsform können Bilder von Anwendungen (z. B. Container-Images) in einer Container-Registry verfügbar sein, und sobald sie von einem Benutzer aus einer Container-Registry für den Einsatz in einer Pipeline ausgewählt wurden, kann ein Image verwendet werden, um einen Container für eine Instanziierung einer Anwendung zur Verwendung durch das System eines Benutzers zu erzeugen.
-
In mindestens einer Ausführungsform können Entwickler (z. B. Softwareentwickler, Kliniker, Ärzte usw.) Anwendungen (z. B. in Form von Containern) entwickeln, veröffentlichen und speichern, um eine Bildverarbeitung und/oder Inferenz an gelieferten Daten durchzuführen. In mindestens einer Ausführungsform kann die Entwicklung, Veröffentlichung und/oder Speicherung unter Verwendung eines Softwareentwicklungskits (SDK) erfolgen, das mit einem System verbunden ist (z. B. um sicherzustellen, dass eine entwickelte Anwendung und/oder ein entwickelter Container mit einem System konform oder kompatibel ist). In mindestens einer Ausführungsform kann eine entwickelte Anwendung lokal (z. B. in einer ersten Einrichtung, mit Daten aus einer ersten Einrichtung) mit einem SDK getestet werden, das zumindest einige der Dienste 1320 als System unterstützen kann (z. B. das System 1400 von 14). Da DICOM-Objekte zwischen einem und Hunderten von Bildern oder anderen Datentypen enthalten können, kann in mindestens einer Ausführungsform ein Entwickler dafür verantwortlich sein, die Extraktion und Aufbereitung der eingehenden Daten zu verwalten (z. B. Konstrukte festzulegen, Vorverarbeitungen in eine Anwendung einzubauen usw.). In mindestens einer Ausführungsform kann eine Anwendung nach ihrer Validierung durch das System 1400 (z. B. hinsichtlich ihrer Genauigkeit) in einem Containerregister zur Auswahl und/oder Implementierung durch einen Benutzer verfügbar sein, um eine oder mehrere Verarbeitungsaufgaben in Bezug auf Daten in einer Einrichtung (z. B. einer zweiten Einrichtung) eines Benutzers durchzuführen.
-
In mindestens einer Ausführungsform können Entwickler dann Anwendungen oder Container über ein Netzwerk für den Zugriff und die Nutzung durch Benutzer eines Systems freigeben (z. B. System 1400 von 14). In mindestens einer Ausführungsform können fertige und validierte Anwendungen oder Container in einem Containerregister gespeichert werden, und zugehörige Modelle für maschinelles Lernen können im Modellregister 1324 gespeichert werden. In mindestens einer Ausführungsform kann eine anfragende Einheit - die eine Inferenz- oder Bildverarbeitungsanforderung stellt - ein Containerregister und/oder Modellregister 1324 nach einer Anwendung, einem Container, einem Datensatz, einem maschinellen Lernmodell usw. durchsuchen, eine gewünschte Kombination von Elementen für die Aufnahme in die Datenverarbeitungspipeline auswählen und eine Bildverarbeitungsanforderung übermitteln. In mindestens einer Ausführungsform kann eine Anforderung Eingabedaten (und in einigen Beispielen zugehörige Patientendaten) enthalten, die für die Durchführung einer Anforderung erforderlich sind, und/oder eine Auswahl von Anwendungen und/oder maschinellen Lernmodellen enthalten, die bei der Verarbeitung einer Anforderung ausgeführt werden sollen. In mindestens einer Ausführungsform kann eine Anforderung dann an eine oder mehrere Komponenten des Einsatzsystems 1306 (z. B. eine Cloud) weitergeleitet werden, um die Verarbeitung der Datenverarbeitungspipeline durchzuführen. In mindestens einer Ausführungsform kann die Verarbeitung durch das Einsatzsystem 1306 die Referenzierung ausgewählter Elemente (z. B. Anwendungen, Container, Modelle usw.) aus einer Containerregistrierung und/oder Modellregistrierung 1324 umfassen. In mindestens einer Ausführungsform können die Ergebnisse, sobald sie von einer Pipeline erzeugt wurden, an einen Benutzer als Referenz zurückgegeben werden (z. B. zur Anzeige in einer Anzeigeanwendungssuite, die auf einer lokalen Workstation oder einem Terminal vor Ort ausgeführt wird).
-
In mindestens einer Ausführungsform können zur Unterstützung der Verarbeitung oder Ausführung von Anwendungen oder Containern in Pipelines Dienste 1320 genutzt werden. In mindestens einer Ausführungsform können die Dienste 1320 Rechendienste, Dienste für künstliche Intelligenz (KI), Visualisierungsdienste und/oder andere Diensttypen umfassen. In mindestens einer Ausführungsform können die Dienste 1320 Funktionen bereitstellen, die einer oder mehreren Anwendungen in der Software 1318 gemeinsam sind, so dass die Funktionen zu einem Dienst abstrahiert werden können, der von Anwendungen aufgerufen oder genutzt werden kann. In mindestens einer Ausführungsform kann die von den Diensten 1320 bereitgestellte Funktionalität dynamisch und effizienter ablaufen und gleichzeitig gut skalieren, indem sie Anwendungen die parallele Verarbeitung von Daten ermöglicht (z. B. unter Verwendung einer Parallelrechenplattform 1430 (14)). In mindestens einer Ausführungsform muss nicht jede Anwendung, die dieselbe von einem Dienst 1320 angebotene Funktionalität nutzt, über eine eigene Instanz des Dienstes 1320 verfügen, sondern der Dienst 1320 kann von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können die Dienste einen Inferenzserver oder eine Inferenzmaschine umfassen, der/die zur Ausführung von Erkennungs- oder Segmentierungsaufgaben verwendet werden kann, als nicht einschränkende Beispiele. In mindestens einer Ausführungsform kann ein Modelltrainingsdienst enthalten sein, der das Training und/oder das erneute Training von maschinelle Lernmodellen ermöglicht. In mindestens einer Ausführungsform kann ferner ein Datenerweiterungsdienst enthalten sein, der GPU-beschleunigte Daten (z. B. DICOM, RIS, CIS, REST-konforme Daten, RPC, Rohdaten usw.) extrahieren, in der Größe verändern, skalieren und/oder andere Erweiterungen vornehmen kann. In mindestens einer Ausführungsform kann ein Visualisierungsdienst verwendet werden, der Bildwiedergabeeffekte wie Raytracing, Rasterung, Rauschunterdrückung, Schärfung usw. hinzufügen kann. - um zweidimensionalen (2D) und/oder dreidimensionalen (3D) Modellen mehr Realismus zu verleihen. In mindestens einer Ausführungsform können Dienste für virtuelle Instrumente enthalten sein, die Strahlformung, Segmentierung, Inferenz, Bildgebung und/oder Unterstützung für andere Anwendungen innerhalb von Pipelines virtueller Instrumente bieten.
-
In mindestens einer Ausführungsform, in der ein Dienst 1320 einen KI-Dienst (z. B. einen Inferenzdienst) enthält, können ein oder mehrere maschinelle Lernmodelle ausgeführt werden, indem ein Inferenzdienst (z. B. ein Inferenzserver) aufgerufen wird (z. B. als API-Aufruf), um ein oder mehrere maschinelle Lernmodelle oder deren Verarbeitung als Teil der Anwendungsausführung auszuführen. In mindestens einer Ausführungsform, in der eine andere Anwendung ein oder mehrere maschinelle Lernmodelle für Segmentierungsaufgaben enthält, kann eine Anwendung einen Inferenzdienst aufrufen, um maschinelle Lernmodelle auszuführen, um eine oder mehrere der mit Segmentierungsaufgaben verbundenen Verarbeitungsoperationen durchzuführen. In mindestens einer Ausführungsform kann die Software 1318, die eine fortgeschrittene Verarbeitungs- und Inferenzpipeline implementiert, die eine Segmentierungsanwendung und eine Anwendung zur Erkennung von Anomalien umfasst, rationalisiert werden, da jede Anwendung denselben Inferenzdienst zur Durchführung einer oder mehrerer Inferenzaufgaben aufrufen kann.
-
In mindestens einer Ausführungsform kann die Hardware 1322 GPUs, CPUs, Grafikkarten, ein KI/Deep-Learning-System (z. B. einen KI-Supercomputer wie NVIDIAs DGX), eine Cloud-Plattform oder eine Kombination davon umfassen. In mindestens einer Ausführungsform können verschiedene Arten von Hardware 1322 verwendet werden, um eine effiziente, zweckgebundene Unterstützung für Software 1318 und Dienste 1320 im Einsatzsystem 1306 bereitzustellen. In mindestens einer Ausführungsform kann die Verwendung von GPU-Verarbeitung für die Verarbeitung vor Ort (z. B. in der Einrichtung 1302), innerhalb eines AI/Deep-Learning-Systems, in einem Cloud-System und/oder in anderen Verarbeitungskomponenten des Einsatzsystems 1306 implementiert werden, um die Effizienz, Genauigkeit und Wirksamkeit der Bildverarbeitung und -erzeugung zu verbessern. In mindestens einer Ausführungsform können die Software 1318 und/oder die Dienste 1320 für die GPU-Verarbeitung im Hinblick auf Deep Learning, maschinelles Lernen und/oder High-Performance-Computing optimiert sein, als nicht einschränkende Beispiele. In mindestens einer Ausführungsform kann zumindest ein Teil der Rechenumgebung des Bereitstellungsystems 1306 und/oder des Trainingssystems 1304 in einem Rechenzentrum auf einem oder mehreren Supercomputern oder Hochleistungsrechnern mit GPU-optimierter Software (z. B. Hardware- und Softwarekombination des DGX-Systems von NVIDIA) ausgeführt werden. In mindestens einer Ausführungsform kann die Hardware 1322 eine beliebige Anzahl von GPUs umfassen, die zur parallelen Verarbeitung von Daten, wie hier beschrieben, herangezogen werden können. In mindestens einer Ausführungsform kann die Cloud-Plattform außerdem eine GPU-Verarbeitung für die GPU-optimierte Ausführung von Deep-Learning-Aufgaben, maschinellen Lernaufgaben oder anderen Rechenaufgaben umfassen. In mindestens einer Ausführungsform kann die Cloud-Plattform (z. B. NVIDIAs NGC) unter Verwendung eines oder mehrerer KI/Deep-Learning-Supercomputer und/oder GPU-optimierter Software (z. B. wie auf NVIDIAs DGX-Systemen) als Hardware-Abstraktions- und Skalierungsplattform ausgeführt werden. In mindestens einer Ausführungsform kann die Cloud-Plattform ein Anwendungscontainer-Clustering-System oder ein Orchestrierungssystem (z. B. KUBERNETES) auf mehreren GPUs integrieren, um eine nahtlose Skalierung und Lastverteilung zu ermöglichen.
-
14 ist ein Systemdiagramm für ein Beispielsystem 1400 zum Erzeugen und Bereitstellen einer Bildverarbeitungsbereitstellungspipeline gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann das System 1400 verwendet werden, um den Prozess 1300 von 13 und/oder andere Prozesse einschließlich fortgeschrittener Verarbeitungs- und Inferenzpipelines zu implementieren. In mindestens einer Ausführungsform kann das System 1400 ein Trainingssystem 1304 und ein Einsatzsystem 1306 umfassen. In mindestens einer Ausführungsform können das Trainingssystem 1304 und das Einsatzsystem 1306 unter Verwendung von Software 1318, Diensten 1320 und/oder Hardware 1322, wie hierin beschrieben, implementiert werden.
-
In mindestens einer Ausführungsform kann das System 1400 (z. B. das Trainingssystem 1304 und/oder das Einsatzsystem 1306) in einer Cloud-Computing-Umgebung implementiert werden (z. B. unter Verwendung der Cloud 1426). In mindestens einer Ausführungsform kann das System 1400 lokal in Bezug auf eine Einrichtung des Gesundheitswesens oder als eine Kombination aus Cloud- und lokalen Rechenressourcen implementiert werden. In mindestens einer Ausführungsform kann der Zugriff auf APIs in der Cloud 1426 durch festgelegte Sicherheitsmaßnahmen oder -protokolle auf autorisierte Benutzer beschränkt werden. In mindestens einer Ausführungsform kann ein Sicherheitsprotokoll Web-Token enthalten, die von einem Authentifizierungsdienst (z. B. AuthN, AuthZ, Gluecon usw.) signiert und mit einer entsprechenden Autorisierung versehen sein können. In mindestens einer Ausführungsform können APIs virtueller Instrumente (wie hier beschrieben) oder andere Instanzen des Systems 1400 auf eine Reihe öffentlicher IPs beschränkt werden, die für die Interaktion überprüft oder autorisiert wurden.
-
In mindestens einer Ausführungsform können verschiedene Komponenten des Systems 1400 unter Verwendung einer Vielzahl verschiedener Netzwerktypen, einschließlich, aber nicht beschränkt auf lokale Netzwerke (LANs) und/oder Weitverkehrsnetzwerke (WANs), über verdrahtete und/oder drahtlose Kommunikationsprotokolle miteinander kommunizieren. In mindestens einer Ausführungsform kann die Kommunikation zwischen Einrichtungen und Komponenten des Systems 1400 (z. B. zum Senden von Ableitungsanforderungen, zum Empfangen von Ergebnissen von Ableitungsanforderungen usw.) über Datenbus(e), drahtlose Datenprotokolle (Wi-Fi), verdrahtete Datenprotokolle (z. B. Ethernet) usw. erfolgen.
-
In mindestens einer Ausführungsform kann das Trainingssystem 1304 Trainingspipelines 1404 ausführen, ähnlich denen, die hier in Bezug auf 13 beschrieben sind. In mindestens einer Ausführungsform, in der ein oder mehrere Modelle für maschinelles Lernen in Bereitstellungspipelines 1410 durch das Einsatzsystem 1306 verwendet werden sollen, können die Trainingspipelines 1404 verwendet werden, um ein oder mehrere (z. B. vortrainierte) Modelle zu trainieren oder neu zu trainieren und/oder ein oder mehrere vortrainierte Modelle 1406 zu implementieren (z. B. ohne die Notwendigkeit eines erneuten Trainings oder Aktualisierung). In mindestens einer Ausführungsform können als Ergebnis von Trainingspipelines 1404 Ausgabemodell(e) 1316 erzeugt werden. In mindestens einer Ausführungsform können die Trainingspipelines 1404 eine beliebige Anzahl von Verarbeitungsschritten umfassen, wie z. B. die Konvertierung oder Anpassung von Bilddaten (oder anderen Eingabedaten). In mindestens einer Ausführungsform können für verschiedene maschinelle Lernmodelle, die vom Einsatzsystem 1306 verwendet werden, verschiedene Trainingspipelines 1404 verwendet werden. In mindestens einer Ausführungsform kann für ein erstes maschinelles Lernmodell eine Trainingspipeline 1404 ähnlich einem ersten, in 13 beschriebenen Beispiel verwendet werden, für ein zweites maschinelles Lernmodell kann eine Trainingspipeline 1404 ähnlich einem zweiten, in 13 beschriebenen Beispiel verwendet werden, und für ein drittes maschinelles Lernmodell kann eine Trainingspipeline 1404 ähnlich einem dritten, in 13 beschriebenen Beispiel verwendet werden. In mindestens einer Ausführungsform kann eine beliebige Kombination von Aufgaben innerhalb des Trainingssystems 1304 verwendet werden, je nachdem, was für jedes jeweilige maschinelle Lernmodell erforderlich ist. In mindestens einer Ausführungsform können eines oder mehrere der maschinellen Lernmodelle bereits trainiert und einsatzbereit sein, so dass die maschinellen Lernmodelle keiner Verarbeitung durch das Trainingssystem 1304 unterzogen und durch das Einsatzsystem 1306 implementiert werden können.
-
In mindestens einer Ausführungsform können das (die) Ausgabemodell(e) 1316 und/oder das (die) vortrainierte(n) Modell(e) 1406 alle Arten von maschinellen Lernmodellen umfassen, je nach Implementierung oder Ausführungsform. In mindestens einer Ausführungsform und ohne Einschränkung können die vom System 1400 verwendeten maschinellen Lernmodelle maschinelle Lernmodelle umfassen, die lineare Regression, logistische Regression, Entscheidungsbäume, Support Vector Machines (SVM), Naive Bayes, k-nearest neighbor (Knn), K-Mittel-Clustering, Random Forest, Algorithmen zur Dimensionalitätsreduktion, Gradient-Boosting-Algorithmen, neuronale Netzwerke (z. B., Autocodierer, Faltungsalgorithmen, rekurrente Algorithmen, Perceptrons, Long/Short Term Memory (LSTM), Hopfield, Boltzmann, Deep Belief, Deconvolutional, Generative Adversarial, Liquid State Machine usw.) und/oder andere Arten von maschinellen Lernmodellen.
-
In mindestens einer Ausführungsform können die Trainingspipelines 1404 eine KI-gestützte Annotation umfassen, wie hierin in Bezug auf mindestens 15B ausführlicher beschrieben. In mindestens einer Ausführungsform können beschriftete Daten 1312 (z.B. herkömmliche Beschriftungen) durch eine beliebige Anzahl von Techniken erzeugt werden. In mindestens einer Ausführungsform können Beschriftungen oder andere Anmerkungen in einem Zeichenprogramm (z. B. einem Anmerkungsprogramm), einem CAD-Programm (Computer Aided Design), einem Beschriftungsprogramm oder einer anderen Art von Programm erzeugt werden, das zur Erzeugung von Anmerkungen oder Beschriftungen für die Grundwahrheit geeignet ist, und/oder sie können in einigen Beispielen von Hand gezeichnet werden. In mindestens einer Ausführungsform können die Ground-Truth-Daten synthetisch erzeugt werden (z. B. aus Computermodellen oder Renderings), real erzeugt werden (z. B. aus realen Daten entworfen und erzeugt werden), maschinell automatisiert werden (z. B. unter Verwendung von Merkmalsanalyse und Lernen, um Merkmale aus Daten zu extrahieren und dann Beschriftungen zu erzeugen), von Menschen beschriftet werden (z. B. legt ein Beschriftungsexperte die Position der Beschriftungen fest) und/oder eine Kombination davon. In mindestens einer Ausführungsform kann es für jede Instanz von Bilddaten 1308 (oder anderen Datentypen, die von maschinellen Lernmodellen verwendet werden) entsprechende Ground-Truth-Daten geben, die vom Trainingssystem 1304 erzeugt werden. In mindestens einer Ausführungsform kann die KI-gestützte Annotation als Teil der Einsatzpipelines 1410 durchgeführt werden; entweder zusätzlich zu oder anstelle der KI-gestützten Annotation, die in den Trainingspipelines 1404 enthalten ist. In mindestens einer Ausführungsform kann das System 1400 eine mehrschichtige Plattform umfassen, die eine Softwareschicht (z. B. Software 1318) von Diagnoseanwendungen (oder anderen Anwendungstypen) enthalten kann, die eine oder mehrere medizinische Bildgebungs- und Diagnosefunktionen ausführen können. In mindestens einer Ausführungsform kann das System 1400 kommunikativ mit den PACS-Servernetzwerken einer oder mehrerer Einrichtungen gekoppelt sein (z. B. über verschlüsselte Verbindungen). In mindestens einer Ausführungsform kann das System 1400 so konfiguriert sein, dass es auf Daten von PACS-Servern zugreift und diese referenziert, um Operationen durchzuführen, wie z. B. das Trainieren von Modellen des maschinellen Lernens, den Einsatz von Modellen des maschinellen Lernens, die Bildverarbeitung, die Inferenz und/oder andere Operationen.
-
In mindestens einer Ausführungsform kann eine Softwareschicht als sicheres, verschlüsseltes und/oder authentifiziertes API implementiert werden, über das Anwendungen oder Container von einer oder mehreren externen Umgebungen (z. B. Einrichtung 1302) aufgerufen werden können. In mindestens einer Ausführungsform können Anwendungen dann einen oder mehrere Dienste 1320 zur Durchführung von Rechen-, KI- oder Visualisierungsaufgaben im Zusammenhang mit den jeweiligen Anwendungen aufrufen oder ausführen, und die Software 1318 und/oder die Dienste 1320 können die Hardware 1322 nutzen, um die Verarbeitungsaufgaben auf effektive und effiziente Weise durchzuführen.
-
In mindestens einer Ausführungsform kann das Einsatzsystem 1306 Bereitstellungspipelines 1410 ausführen. In mindestens einer Ausführungsform können Bereitstellungspipelines 1410 eine beliebige Anzahl von Anwendungen enthalten, die sequentiell, nicht sequentiell oder auf andere Weise auf Bildgebungsdaten (und/oder andere Datentypen) angewendet werden können, die von Bildgebungsgeräten, Sequenzierungsgeräten, Genomikgeräten usw. erzeugt werden. - einschließlich KI-gestützter Annotation, wie oben beschrieben. In mindestens einer der hier beschriebenen Ausführungsformen kann eine Einsatzpipeline 1410 für ein einzelnes Gerät als virtuelles Instrument für ein Gerät bezeichnet werden (z. B. ein virtuelles Ultraschallinstrument, ein virtuelles CT-Scan-Instrument, ein virtuelles Sequenzierungsinstrument usw.). In mindestens einer Ausführungsform kann es für ein einzelnes Gerät mehr als eine Einsatzpipeline 1410 geben, je nachdem, welche Informationen aus den von einem Gerät erzeugten Daten gewünscht werden. In mindestens einer Ausführungsform kann es eine erste Bereitstellungspipeline 1410 geben, wenn die Erkennung von Anomalien von einem MRT-Gerät gewünscht wird, und eine zweite Bereitstellungspipeline 1410, wenn eine Bildverbesserung von der Ausgabe eines MRT-Geräts gewünscht wird.
-
In mindestens einer Ausführungsform kann eine Bilderzeugungsanwendung eine Verarbeitungsaufgabe enthalten, die die Verwendung eines maschinellen Lernmodells beinhaltet. In mindestens einer Ausführungsform kann ein Benutzer sein eigenes maschinelles Lernmodell verwenden oder ein maschinelles Lernmodell aus der Modellregistrierung 1324 auswählen. In mindestens einer Ausführungsform kann ein Benutzer sein eigenes maschinelles Lernmodell implementieren oder ein maschinelles Lernmodell zur Aufnahme in eine Anwendung zur Durchführung einer Verarbeitungsaufgabe auswählen. In mindestens einer Ausführungsform können Anwendungen auswählbar und anpassbar sein, und durch die Definition von Konstrukten von Anwendungen wird die Bereitstellung und Implementierung von Anwendungen für einen bestimmten Benutzer als eine nahtlosere Benutzererfahrung dargestellt. In mindestens einer Ausführungsform können Entwicklungspipelines 1410 durch die Nutzung anderer Merkmale des Systems 1400 - wie Dienste 1320 und Hardware 1322 - noch benutzerfreundlicher sein, eine einfachere Integration ermöglichen und genauere, effizientere und zeitgerechtere Ergebnisse liefern.
-
In mindestens einer Ausführungsform kann das Einsatzsystem 1306 eine Benutzerschnittstelle 1414 (z. B. eine grafische Benutzerschnittstelle, eine Webschnittstelle usw.) enthalten, die verwendet werden kann, um Anwendungen zur Aufnahme in die Bereitstellungspipeline(s) 1410 auszuwählen, Anwendungen anzuordnen, Anwendungen oder Parameter oder Konstrukte davon zu modifizieren oder zu ändern, die Bereitstellungspipeline(s) 1410 während der Einrichtung und/oder Bereitstellung zu verwenden und mit ihr zu interagieren und/oder anderweitig mit dem Einsatzsystem 1306 zu interagieren. In mindestens einer Ausführungsform, die in Bezug auf das Trainingssystem 1304 nicht dargestellt ist, kann die Benutzerschnittstelle 1414 (oder eine andere Benutzerschnittstelle) zur Auswahl von Modellen für die Verwendung im Einsatzsystem 1306, zur Auswahl von Modellen für das Training oder das erneute Training im Trainingssystem 1304 und/oder zur sonstigen Interaktion mit dem Trainingssystem 1304 verwendet werden.
-
In mindestens einer Ausführungsform kann der Pipeline-Manager 1412 zusätzlich zu einem Anwendungs-Orchestrierungssystem 1428 verwendet werden, um die Interaktion zwischen Anwendungen oder Containern der Bereitstellungspipeline(s) 1410 und Diensten 1320 und/oder Hardware 1322 zu verwalten. In mindestens einer Ausführungsform kann der Pipeline-Manager 1412 so konfiguriert sein, dass er die Interaktion zwischen Anwendungen und Anwendungen, zwischen Anwendungen und Diensten 1320 und/oder zwischen Anwendungen oder Diensten und Hardware 1322 erleichtert. In mindestens einer Ausführungsform ist der Pipeline-Manager 1412 in den Diensten 1320 enthalten, obwohl er als in der Software 1318 enthalten dargestellt ist, was jedoch nicht einschränkend gemeint ist. In mindestens einer Ausführungsform kann das Anwendungs-Orchestrierungssystem 1428 (z. B. Kubernetes, DOCKER usw.) ein Container-Orchestrierungssystem umfassen, das Anwendungen in Containern als logische Einheiten zur Koordination, Management, Skalierung und Bereitstellung gruppieren kann. In mindestens einer Ausführungsform kann durch die Zuordnung von Anwendungen aus der/den Bereitstellungspipeline(s) 1410 (z. B. eine Rekonstruktionsanwendung, eine Segmentierungsanwendung usw.) zu einzelnen Containern jede Anwendung in einer in sich geschlossenen Umgebung (z. B. auf Kernel-Ebene) ausgeführt werden, um die Geschwindigkeit und Effizienz zu erhöhen.
-
In mindestens einer Ausführungsform kann jede Anwendung und/oder jeder Container (oder ein Image davon) individuell entwickelt, modifiziert und bereitgestellt werden (z. B. kann ein erster Benutzer oder Entwickler eine erste Anwendung entwickeln, modifizieren und bereitstellen, und ein zweiter Benutzer oder Entwickler kann eine zweite Anwendung separat von einem ersten Benutzer oder Entwickler entwickeln, modifizieren und bereitstellen), was die Konzentration auf und die Aufmerksamkeit für eine Aufgabe einer einzelnen Anwendung und/oder eines einzelnen Containers ermöglichen kann, ohne durch Aufgaben einer anderen Anwendung oder eines anderen Containers behindert zu werden. In mindestens einer Ausführungsform kann die Kommunikation und Zusammenarbeit zwischen verschiedenen Containern oder Anwendungen durch den Pipeline-Manager 1412 und das Anwendungs-Orchestrierungssystem 1428 unterstützt werden. In mindestens einer Ausführungsform kann, solange eine erwartete Eingabe und/oder Ausgabe jedes Containers oder jeder Anwendung einem System bekannt ist (z. B. basierend auf Konstrukten von Anwendungen oder Containern), das Anwendungs-Orchestrierungssystem 1428 und/oder der Pipeline-Manager 1412 die Kommunikation unter und zwischen den Anwendungen oder Containern sowie die gemeinsame Nutzung von Ressourcen unter und zwischen diesen erleichtern. In mindestens einer Ausführungsform können eine oder mehrere Anwendungen oder Container in der/den Bereitstellungspipeline(s) 1410 dieselben Dienste und Ressourcen gemeinsam nutzen, so dass das Anwendungs-Orchestrierungssystem 1428 die gemeinsame Nutzung von Diensten oder Ressourcen zwischen verschiedenen Anwendungen oder Containern orchestrieren, ausgleichen und festlegen kann. In mindestens einer Ausführungsform kann ein Scheduler verwendet werden, um die Ressourcenanforderungen von Anwendungen oder Containern, die aktuelle oder geplante Nutzung dieser Ressourcen und die Ressourcenverfügbarkeit zu verfolgen. In mindestens einer Ausführungsform kann ein Scheduler auf diese Weise verschiedenen Anwendungen Ressourcen zuweisen und Ressourcen zwischen und unter Anwendungen im Hinblick auf die Anforderungen und die Verfügbarkeit eines Systems verteilen. In einigen Beispielen kann ein Scheduler (und/oder eine andere Komponente des Anwendungs-Orchestrierungssystems 1428) die Ressourcenverfügbarkeit und -verteilung basierend auf Einschränkungen, die einem System auferlegt werden (z. B. Benutzereinschränkungen), bestimmen, wie z. B. Dienstgüte (QoS), Dringlichkeit des Bedarfs an Datenausgaben (z. B. um zu bestimmen, ob Echtzeitverarbeitung oder verzögerte Verarbeitung ausgeführt werden soll) usw.
-
In mindestens einer Ausführungsform können die von Anwendungen oder Containern im Einsatzsystem 1306 genutzten und gemeinsam genutzten Dienste 1320 Rechendienste 1416, KI-Dienste 1418, Visualisierungsdienste 1420 und/oder andere Diensttypen umfassen. In mindestens einer Ausführungsform können Anwendungen einen oder mehrere der Dienste 1320 aufrufen (z. B. ausführen), um Verarbeitungsoperationen für eine Anwendung durchzuführen. In mindestens einer Ausführungsform können die Rechendienste 1416 von Anwendungen genutzt werden, um Supercomputing- oder andere HPC-Aufgaben (High Performance Computing) durchzuführen. In mindestens einer Ausführungsform kann/können der/die Rechendienst(e) 1416 genutzt werden, um eine parallele Verarbeitung (z. B. unter Verwendung einer Parallelrechenplattform 1430) zur Verarbeitung von Daten durch eine oder mehrere Anwendungen und/oder eine oder mehrere Aufgaben einer einzelnen Anwendung im Wesentlichen gleichzeitig durchzuführen. In mindestens einer Ausführungsform kann die parallele Datenverarbeitungsplattform 1430 (z. B. NVIDIAs CUDA) Allzweck-Computing auf GPUs (z. B. GPUs 1422) ermöglichen. In mindestens einer Ausführungsform kann eine Softwareschicht der Parallelrechenplattform 1430 Zugriff auf virtuelle Befehlssätze und parallele Rechenelemente von GPUs für die Ausführung von Rechenkernen bieten. In mindestens einer Ausführungsform kann die Parallelrechenplattform 1430 Speicher enthalten, und in einigen Ausführungsformen kann ein Speicher zwischen mehreren Containern und/oder zwischen verschiedenen Verarbeitungsaufgaben innerhalb eines einzelnen Containers gemeinsam genutzt werden. In mindestens einer Ausführungsform können IPC-Aufrufe (Inter-Process Communication) für mehrere Container und/oder für mehrere Prozesse innerhalb eines Containers generiert werden, um dieselben Daten aus einem gemeinsam genutzten Speichersegment der Parallelrechenplattform 1430 zu verwenden (z. B. wenn mehrere verschiedene Stufen einer Anwendung oder mehrere Anwendungen dieselben Informationen verarbeiten). In mindestens einer Ausführungsform können dieselben Daten an derselben Stelle eines Speichers für eine beliebige Anzahl von Verarbeitungsaufgaben verwendet werden (z. B. zur selben Zeit, zu verschiedenen Zeiten usw.), anstatt eine Kopie der Daten zu erstellen und die Daten an verschiedene Stellen im Speicher zu verschieben (z. B. eine Lese-/Schreiboperation). In mindestens einer Ausführungsform können bei der Verwendung von Daten zur Erzeugung neuer Daten als Ergebnis der Verarbeitung diese Informationen über einen neuen Speicherort der Daten gespeichert und von verschiedenen Anwendungen gemeinsam genutzt werden. In mindestens einer Ausführungsform können der Speicherort von Daten und der Speicherort von aktualisierten oder geänderten Daten Teil einer Definition sein, wie eine Nutzlast innerhalb von Containern zu verstehen ist.
-
In mindestens einer Ausführungsform können die KI-Dienste 1418 genutzt werden, um Inferenzdienste für die Ausführung von maschinellen Lernmodellen durchzuführen, die mit Anwendungen verbunden sind (z. B. mit der Aufgabe, eine oder mehrere Verarbeitungsaufgaben einer Anwendung auszuführen). In mindestens einer Ausführungsform können die KI-Dienste 1418 das KI-System 1424 nutzen, um maschinelle Lernmodelle (z. B. neuronale Netzwerke wie CNNs) für Segmentierung, Rekonstruktion, Objekterkennung, Merkmalserkennung, Klassifizierung und/oder andere Inferenzaufgaben auszuführen. In mindestens einer Ausführungsform können die Anwendungen der Einsatzpipeline(s) 1410 ein oder mehrere Ausgabemodelle 1316 aus dem Trainingssystem 1304 und/oder andere Modelle von Anwendungen verwenden, um Schlussfolgerungen aus Bilddaten zu ziehen. In mindestens einer Ausführungsform können zwei oder mehr Beispiele für die Inferenz unter Verwendung des Anwendungs-Orchestrierungssystems 1428 (z. B. ein Scheduler) verfügbar sein. In mindestens einer Ausführungsform kann eine erste Kategorie einen Pfad mit hoher Priorität/geringer Latenz umfassen, der höhere Service Level Agreements erreichen kann, z. B. für die Durchführung von Inferenzen bei dringenden Anfragen während eines Notfalls oder für einen Radiologen während der Diagnose. In mindestens einer Ausführungsform kann eine zweite Kategorie einen Pfad mit Standardpriorität umfassen, der für Anfragen verwendet werden kann, die nicht dringlich sind oder bei denen die Analyse zu einem späteren Zeitpunkt durchgeführt werden kann. In mindestens einer Ausführungsform kann das Anwendungs-Orchestrierungssystem 1428 Ressourcen (z. B. Dienste 1320 und/oder Hardware 1322) basierend auf Prioritätspfaden für verschiedene Inferenzaufgaben der KI-Dienste 1418 verteilen.
-
In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher an die KI-Dienste 1418 im System 1400 angebunden werden. In mindestens einer Ausführungsform kann der gemeinsam genutzte Speicher als Cache (oder ein anderer Speichergerätetyp) fungieren und zur Verarbeitung von Inferenzanforderungen von Anwendungen verwendet werden. In mindestens einer Ausführungsform kann bei der Übermittlung einer Inferenzanforderung eine Anforderung von einer Reihe von API-Instanzen des Einsatzsystems 1306 empfangen werden, und eine oder mehrere Instanzen können ausgewählt werden (z. B. für die beste Anpassung, für den Lastausgleich usw.), um eine Anforderung zu verarbeiten. In mindestens einer Ausführungsform kann zur Bearbeitung einer Anfrage eine Anfrage in eine Datenbank eingegeben werden, ein maschinelles Lernmodell kann aus der Modellregistrierung 1324 gefunden werden, wenn es sich nicht bereits in einem Cache befindet, ein Validierungsschritt kann sicherstellen, dass ein geeignetes maschinelles Lernmodell in einen Cache (z. B. einen gemeinsam genutzten Speicher) geladen wird, und/oder eine Kopie eines Modells kann in einem Cache gespeichert werden. In mindestens einer Ausführungsform kann ein Scheduler (z. B. der Pipeline-Manager 1412) verwendet werden, um eine Anwendung zu starten, auf die in einer Anforderung verwiesen wird, wenn eine Anwendung noch nicht läuft oder wenn nicht genügend Instanzen einer Anwendung vorhanden sind. In mindestens einer Ausführungsform kann ein Inferenzserver gestartet werden, wenn noch kein Inferenzserver zur Ausführung eines Modells gestartet ist. Pro Modell kann eine beliebige Anzahl von Inferenzservern gestartet werden. In mindestens einer Ausführungsform können in einem Pull-Modell, in dem die Inferenzserver geclustert sind, die Modelle zwischengespeichert werden, wenn ein Lastausgleich vorteilhaft ist. In mindestens einer Ausführungsform können Inferenzserver statisch in entsprechende, verteilte Server geladen werden.
-
In mindestens einer Ausführungsform kann die Inferenzbildung mit Hilfe eines Inferenzservers durchgeführt werden, der in einem Container läuft. In mindestens einer Ausführungsform kann eine Instanz eines Inferenzservers mit einem Modell (und optional einer Vielzahl von Versionen eines Modells) verbunden sein. In mindestens einer Ausführungsform kann eine neue Instanz eines Inferenzservers geladen werden, wenn eine Anforderung zur Durchführung einer Inferenz an einem Modell nicht vorhanden ist. In mindestens einer Ausführungsform kann beim Starten eines Inferenzservers ein Modell an einen Inferenzserver übergeben werden, so dass ein und derselbe Container zur Bedienung verschiedener Modelle verwendet werden kann, solange der Inferenzserver als eine andere Instanz läuft.
-
In mindestens einer Ausführungsform kann während der Anwendungsausführung eine Inferenzanforderung für eine bestimmte Anwendung empfangen werden, und ein Container (z. B. mit einer Instanz eines Inferenzservers) kann geladen werden (falls noch nicht geschehen), und eine Startprozedur kann aufgerufen werden. In mindestens einer Ausführungsform kann die Vorverarbeitungslogik in einem Container eingehende Daten laden, dekodieren und/oder eine zusätzliche Vorverarbeitung durchführen (z. B. unter Verwendung von CPU(s) und/oder GPU(s)). In mindestens einer Ausführungsform kann ein Container, sobald die Daten für die Inferenz vorbereitet sind, die Inferenz wie erforderlich an den Daten durchführen. In mindestens einer Ausführungsform kann dies einen einzigen Inferenzaufruf für ein Bild (z. B. ein Handröntgenbild) umfassen oder eine Inferenz für Hunderte von Bildern (z. B. ein Brust-CT) erfordern. In mindestens einer Ausführungsform kann eine Anwendung die Ergebnisse vor der Fertigstellung zusammenfassen, was ohne Einschränkung einen einzelnen Konfidenzwert, eine Segmentierung auf Pixelebene, eine Segmentierung auf Voxel-Ebene, die Erstellung einer Visualisierung oder die Erstellung von Text zur Zusammenfassung der Ergebnisse umfassen kann. In mindestens einer Ausführungsform können verschiedenen Modellen oder Anwendungen unterschiedliche Prioritäten zugewiesen werden. Beispielsweise können einige Modelle eine Echtzeitpriorität (TAT < 1 min) haben, während andere eine niedrigere Priorität haben können (z. B. TAT < 10 min). In mindestens einer Ausführungsform können die Modellausführungszeiten von der anfragenden Institution oder Einrichtung aus gemessen werden und können die Zeit für die Traversierung des Partnernetzwerkes sowie die Ausführung in einem Inferenzdienst umfassen.
-
In mindestens einer Ausführungsform kann die Übertragung von Anfragen zwischen den Diensten 1320 und den Ableitungsanwendungen hinter einem Softwareentwicklungskit (SDK) verborgen sein, und ein robuster Transport kann über eine Warteschlange erfolgen. In mindestens einer Ausführungsform wird eine Anfrage über eine API für eine einzelne Anwendung/Mieter-ID-Kombination in eine Warteschlange eingereiht, und ein SDK zieht eine Anfrage aus einer Warteschlange und gibt eine Anfrage an eine Anwendung weiter. In mindestens einer Ausführungsform kann der Name einer Warteschlange in einer Umgebung angegeben werden, aus der ein SDK sie abruft. In mindestens einer Ausführungsform kann die asynchrone Kommunikation über eine Warteschlange nützlich sein, da sie es jeder Instanz einer Anwendung ermöglicht, die Arbeit aufzunehmen, sobald sie verfügbar ist. Die Ergebnisse können über eine Warteschlange zurückübertragen werden, um sicherzustellen, dass keine Daten verloren gehen. In mindestens einer Ausführungsform können Warteschlangen auch die Möglichkeit bieten, Arbeit zu segmentieren, da Arbeit mit höchster Priorität an eine Warteschlange gehen kann, an die die meisten Instanzen einer Anwendung angeschlossen sind, während Arbeit mit niedrigster Priorität an eine Warteschlange gehen kann, an die nur eine einzige Instanz angeschlossen ist, die Aufgaben in der empfangenen Reihenfolge abarbeitet. In mindestens einer Ausführungsform kann eine Anwendung auf einer GPU-beschleunigten Instanz laufen, die in der Cloud 1426 generiert wird, und ein Inferenzdienst kann Inferenzen auf einer GPU durchführen.
-
In mindestens einer Ausführungsform können Visualisierungsdienste 1420 genutzt werden, um Visualisierungen für die Anzeige der Ausgaben von Anwendungen und/oder der Bereitstellungspipeline(s) 1410 zu erzeugen. In mindestens einer Ausführungsform können die GPUs 1422 von den Visualisierungsdiensten 1420 genutzt werden, um Visualisierungen zu erzeugen. In mindestens einer Ausführungsform können Rendering-Effekte, wie z. B. Raytracing, von den Visualisierungsdiensten 1420 implementiert werden, um Visualisierungen von höherer Qualität zu erzeugen. In mindestens einer Ausführungsform können die Visualisierungen ohne Einschränkung 2D-Bildwiedergaben, 3D-Volumenwiedergaben, 3D-Volumenrekonstruktionen, 2D-Tomographieschichten, Virtual-Reality-Anzeigen, Augmented-Reality-Anzeigen usw. umfassen. In mindestens einer Ausführungsform können virtualisierte Umgebungen verwendet werden, um eine virtuelle interaktive Anzeige oder Umgebung (z. B. eine virtuelle Umgebung) für die Interaktion durch Benutzer eines Systems (z. B. Ärzte, Krankenschwestern, Radiologen usw.) zu erzeugen. In mindestens einer Ausführungsform können die Visualisierungsdienste 1420 einen internen Visualisierer, Kinematiken und/oder andere Rendering- oder Bildverarbeitungsfähigkeiten oder -funktionen umfassen (z. B. Raytracing, Rasterisierung, interne Optik usw.).
-
In mindestens einer Ausführungsform kann die Hardware 1322 GPUs 1422, das KI-System 1424, die Cloud 1426 und/oder jede andere Hardware umfassen, die für die Ausführung des Trainingssystems 1304 und/oder des Bereitstellungsystems 1306 verwendet wird. In mindestens einer Ausführungsform können die GPUs 1422 (z. B. NVIDIAs TESLA und/oder QUADRO GPUs) eine beliebige Anzahl von GPUs umfassen, die für die Ausführung von Verarbeitungsaufgaben der Rechendienste 1416, der KI-Dienste 1418, der Visualisierungsdienste 1420, anderer Dienste und/oder beliebiger Merkmale oder Funktionen der Software 1318 verwendet werden können. In Bezug auf die KI-Dienste 1418 können beispielsweise GPUs 1422 verwendet werden, um eine Vorverarbeitung von Bilddaten (oder anderen Datentypen, die von maschinellen Lernmodellen verwendet werden), eine Nachverarbeitung von Ausgaben von maschinellen Lernmodellen und/oder eine Inferenz (z. B. zur Ausführung von maschinellen Lernmodellen) durchzuführen. In mindestens einer Ausführungsform können die Cloud 1426, das AI-System 1424 und/oder andere Komponenten des Systems 1400 GPUs 1422 verwenden. In mindestens einer Ausführungsform kann die Cloud 1426 eine GPU-optimierte Plattform für Deep-Learning-Aufgaben enthalten. In mindestens einer Ausführungsform kann das KI-System 1424 GPUs verwenden, und die Cloud 1426 - oder zumindest ein Teil, der mit Deep Learning oder Inferencing beauftragt ist - kann unter Verwendung eines oder mehrerer KI-Systeme 1424 ausgeführt werden. Obwohl die Hardware 1322 als diskrete Komponenten dargestellt ist, ist dies nicht als Einschränkung zu verstehen, und alle Komponenten der Hardware 1322 können mit anderen Komponenten der Hardware 1322 kombiniert oder von ihnen genutzt werden.
-
In mindestens einer Ausführungsform kann das KI-System 1424 ein speziell entwickeltes Rechensystem (z. B. einen Supercomputer oder einen HPC) umfassen, das für Inferencing, Deep Learning, maschinelles Lernen und/oder andere Aufgaben der künstlichen Intelligenz konfiguriert ist. In mindestens einer Ausführungsform kann das KI-System 1424 (z. B. NVIDIAs DGX) GPU-optimierte Software (z. B. einen Software-Stack) enthalten, die unter Verwendung einer Vielzahl von GPUs 1422 zusätzlich zu CPUs, RAM, Speicher und/oder anderen Komponenten, Merkmalen oder Funktionen ausgeführt werden kann. In mindestens einer Ausführungsform können ein oder mehrere KI-Systeme 1424 in der Cloud 1426 (z. B. in einem Rechenzentrum) implementiert werden, um einige oder alle KI-basierten Verarbeitungsaufgaben des Systems 1400 auszuführen.
-
In mindestens einer Ausführungsform kann die Cloud 1426 eine GPUbeschleunigte Infrastruktur (z. B. NVIDIAs NGC) enthalten, die eine GPU-optimierte Plattform für die Ausführung von Verarbeitungsaufgaben des Systems 1400 bereitstellen kann. In mindestens einer Ausführungsform kann die Cloud 1426 ein oder mehrere KI-Systeme 1424 zur Ausführung einer oder mehrerer KI-basierter Aufgaben des Systems 1400 enthalten (z. B. als Hardware-Abstraktions- und Skalierungsplattform). In mindestens einer Ausführungsform kann die Cloud 1426 in das Anwendungs-Orchestrierungssystem 1428 integriert werden, das mehrere GPUs nutzt, um eine nahtlose Skalierung und einen Lastausgleich zwischen und unter den Anwendungen und Diensten 1320 zu ermöglichen. In mindestens einer Ausführungsform kann die Cloud 1426 damit beauftragt werden, mindestens einige der Dienste 1320 des Systems 1400 auszuführen, einschließlich der Rechendienste 1416, der KI-Dienste 1418 und/oder der Visualisierungsdienste 1420, wie hier beschrieben. In mindestens einer Ausführungsform kann die Cloud 1426 kleine und große Batch-Inferenzen durchführen (z. B. die Ausführung von NVIDIAs TENSOR RT), eine beschleunigte Parallelrechen-API und Plattform 1430 bereitstellen (z. B. NVIDIAs CUDA), ein Anwendungs-Orchestrierungssystem 1428 ausführen (z. B., KUBERNETES), eine Grafik-Rendering-API und -Plattform (z. B. für Raytracing, 2D-Grafik, 3D-Grafik und/oder andere Rendering-Techniken zur Erzeugung hochwertigerer Kinofilme) und/oder andere Funktionen für das System 1400 bereitstellen.
-
15A zeigt ein Datenflussdiagramm für einen Prozess 1500 zum Trainieren, erneuten Trainieren oder Aktualisieren eines maschinellen Lernmodells gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform kann der Prozess 1500 unter Verwendung des Systems 1400 aus 14 als nicht einschränkendes Beispiel ausgeführt werden. In mindestens einer Ausführungsform kann der Prozess 1500 die Dienste 1320 und/oder die Hardware 1322 des Systems 1400 nutzen, wie hierin beschrieben. In mindestens einer Ausführungsform können verfeinerte Modelle 1512, die durch den Prozess 1500 erzeugt wurden, durch das Einsatzsystem 1306 für eine oder mehrere containerisierte Anwendungen in Bereitstellungspipelines 1410 ausgeführt werden.
-
In mindestens einer Ausführungsform kann das Modelltraining 1314 das Neutrainieren oder Aktualisieren eines Ausgangsmodells 1504 (z. B. eines vortrainierten Modells) unter Verwendung neuer Trainingsdaten (z. B. neuer Eingabedaten, wie des Kundendatensatzes 1506, und/oder neuer, mit den Eingabedaten verbundener Ground-Truth-Daten) umfassen. In mindestens einer Ausführungsform können zum erneuten Trainieren oder Aktualisieren des Ausgangsmodells 1504 die Ausgangs- oder Verlustschicht(en) des Ausgangsmodells 1504 zurückgesetzt oder gelöscht und/oder durch eine aktualisierte oder neue Ausgangs- oder Verlustschicht(en) ersetzt werden. In mindestens einer Ausführungsform kann das ursprüngliche Modell 1504 bereits fein abgestimmte Parameter (z. B. Gewichte und/oder Verzerrungen) haben, die von einem früheren Training übrig geblieben sind, so dass das Training oder die erneute Training 1314 nicht so lange dauert oder so viel Verarbeitung erfordert wie das Training eines Modells von Grund auf. In mindestens einer Ausführungsform können während des Modelltrainings 1314 durch Zurücksetzen oder Ersetzen der Ausgangs- oder Verlustschicht(en) des ursprünglichen Modells 1504 die Parameter aktualisiert und für einen neuen Datensatz neu abgestimmt werden, basierend auf Verlustberechnungen, die mit der Genauigkeit der Ausgangs- oder Verlustschicht(en) bei der Erstellung von Vorhersagen für einen neuen Kundendatensatz 1506 (z. B. Bilddaten 1308 von 13) verbunden sind.
-
In mindestens einer Ausführungsform können die vorab trainierten Modelle 1406 in einem Datenspeicher oder einer Registrierung gespeichert werden (z. B. Modellregistrierung 1324 in 13). In mindestens einer Ausführungsform können die vorab trainierten Modelle 1406 zumindest teilweise in einer oder mehreren anderen Einrichtungen als der Einrichtung, die den Prozess 1500 ausführt, trainiert worden sein. In mindestens einer Ausführungsform können die vortrainierten Modelle 1406 zum Schutz der Privatsphäre und der Rechte von Patienten, Probanden oder Kunden verschiedener Einrichtungen vor Ort trainiert worden sein, wobei vor Ort generierte Kunden- oder Patientendaten verwendet wurden. In mindestens einer Ausführungsform können vortrainierte Modelle 1406 unter Verwendung der Cloud 1426 und/oder anderer Hardware 1322 trainiert werden, aber vertrauliche, datenschutzrechtlich geschützte Patientendaten dürfen nicht an Komponenten der Cloud 1426 (oder anderer externer Hardware) übertragen werden, von diesen verwendet werden oder für diese zugänglich sein. In mindestens einer Ausführungsform, in der ein vortrainiertes Modell 1406 unter Verwendung von Patientendaten von mehr als einer Einrichtung trainiert wird, kann das vortrainierte Modell 1406 individuell für jede Einrichtung trainiert worden sein, bevor es auf Patienten- oder Kundendaten von einer anderen Einrichtung trainiert wird. In mindestens einer Ausführungsform, z. B. wenn Kunden- oder Patientendaten aus Datenschutzgründen freigegeben wurden (z. B. durch eine Verzichtserklärung, für experimentelle Zwecke usw.) oder wenn Kunden- oder Patientendaten in einem öffentlichen Datensatz enthalten sind, können Kunden- oder Patientendaten aus einer beliebigen Anzahl von Einrichtungen verwendet werden, um das vortrainierte Modell 1406 vor Ort und/oder außerhalb des Standorts zu trainieren, z. B. in einem Rechenzentrum oder einer anderen Cloud-Computing-Infrastruktur.
-
In mindestens einer Ausführungsform kann ein Benutzer bei der Auswahl von Anwendungen zur Verwendung in Bereitstellungspipelines 1410 auch Modelle für maschinelles Lernen auswählen, die für bestimmte Anwendungen verwendet werden sollen. In mindestens einer Ausführungsform kann ein Benutzer kein Modell zur Verwendung haben, so dass ein Benutzer ein vortrainiertes Modell 1406 zur Verwendung mit einer Anwendung auswählen kann. In mindestens einer Ausführungsform kann das vortrainierte Modell 1406 nicht dafür optimiert sein, genaue Ergebnisse für den Kundendatensatz 1506 einer Einrichtung eines Benutzers zu erzeugen (z. B. basierend auf der Vielfalt der Patienten, der Demografie, der Art der verwendeten medizinischen Bildgebungsgeräte usw.). In mindestens einer Ausführungsform kann das vortrainierte Modell 1406 vor der Bereitstellung in der Bereitstellungspipeline 1410 zur Verwendung mit einer oder mehreren Anwendungen aktualisiert, neu trainiert und/oder für die Verwendung in einer entsprechenden Einrichtung feinabgestimmt werden.
-
In mindestens einer Ausführungsform kann ein Benutzer ein vortrainiertes Modell 1406 auswählen, das aktualisiert, neu trainiert und/oder feinabgestimmt werden soll, und das vortrainierte Modell 1406 kann als Ausgangsmodell 1504 für das Trainingssystem 1304 innerhalb des Prozesses 1500 bezeichnet werden. In mindestens einer Ausführungsform kann der Kundendatensatz 1506 (z. B. Bildgebungsdaten, Genomikdaten, Sequenzierungsdaten oder andere Datentypen, die von Geräten in einer Einrichtung erzeugt werden) verwendet werden, um das Modelltraining 1314 (das ohne Einschränkung Transferlernen umfassen kann) auf dem Ausgangsmodell 1504 durchzuführen, um ein verfeinertes Modell 1512 zu erzeugen. In mindestens einer Ausführungsform können die dem Kundendatensatz 1506 entsprechenden Ground-Truth-Daten vom Trainingssystem 1304 erzeugt werden. In mindestens einer Ausführungsform können die Ground-Truth-Daten zumindest teilweise von Klinikern, Wissenschaftlern, Ärzten, Praktikern in einer Einrichtung erzeugt werden (z. B. als gekennzeichnete Klinikdaten 1312 von 13).
-
In mindestens einer Ausführungsform kann die KI-gestützte Beschriftung 1310 in einigen Beispielen verwendet werden, um Ground-Truth-Daten zu erzeugen. In mindestens einer Ausführungsform kann die KI-gestützte Annotation 1310 (z. B. unter Verwendung eines KI-gestützten Annotations-SDK) maschinelle Lernmodelle (z. B. neuronale Netzwerke) nutzen, um vorgeschlagene oder vorhergesagte Ground-Truth-Daten für einen Kundendatensatz zu erzeugen. In mindestens einer Ausführungsform kann der Benutzer 1510 Annotationswerkzeuge innerhalb einer Benutzeroberfläche (einer grafischen Benutzeroberfläche (GUI)) auf dem Computergerät 1508 verwenden.
-
In mindestens einer Ausführungsform kann der Benutzer 1510 über das Computergerät 1508 mit einer grafischen Benutzeroberfläche interagieren, um (Auto)Annotationen zu bearbeiten oder fein abzustimmen. In mindestens einer Ausführungsform kann eine Polygonbearbeitungsfunktion verwendet werden, um Eckpunkte eines Polygons an genauere oder feinere Positionen zu verschieben.
-
In mindestens einer Ausführungsform können, sobald dem Kundendatensatz 1506 Ground-Truth-Daten zugeordnet sind, Ground-Truth-Daten (z. B. aus KI-gestützter Annotation, manueller Beschriftung usw.) während des Modelltrainings 1314 verwendet werden, um ein verfeinertes Modell 1512 zu erstellen. In mindestens einer Ausführungsform kann der Kundendatensatz 1506 beliebig oft auf das Ausgangsmodell 1504 angewendet werden, und die Ground-Truth-Daten können zur Aktualisierung der Parameter des Ausgangsmodells 1504 verwendet werden, bis ein akzeptables Genauigkeitsniveau für das verfeinerte Modell 1512 erreicht ist. In mindestens einer Ausführungsform kann das verfeinerte Modell 1512, sobald es generiert ist, in einer oder mehreren Einsatzpipelines 1410 in einer Einrichtung zur Durchführung einer oder mehrerer Verarbeitungsaufgaben in Bezug auf medizinische Bildgebungsdaten eingesetzt werden.
-
In mindestens einer Ausführungsform kann das verfeinerte Modell 1512 zu den bereits trainierten Modellen 1406 in der Modellregistrierung 1324 hochgeladen werden, um von einer anderen Einrichtung ausgewählt zu werden. In mindestens einer Ausführungsform kann dieser Prozess in einer beliebigen Anzahl von Einrichtungen abgeschlossen werden, so dass das verfeinerte Modell 1512 beliebig oft an neuen Datensätzen weiter verfeinert werden kann, um ein universelleres Modell zu erzeugen.
-
15B ist eine Beispielsdarstellung einer Client-Server-Architektur 1532 zur Verbesserung von Annotationswerkzeugen mit vorab trainierten Annotationsmodellen, gemäß mindestens einer Ausführungsform. In mindestens einer Ausführungsform können KI-gestützte Annotationswerkzeuge 1536 basierend auf einer Client-Server-Architektur 1532 instanziiert werden. In mindestens einer Ausführungsform können die Annotationswerkzeuge 1536 in bildgebenden Anwendungen beispielsweise Radiologen bei der Identifizierung von Organen und Anomalien unterstützen. In mindestens einer Ausführungsform können Bildgebungsanwendungen Softwaretools enthalten, die dem Benutzer 1510 dabei helfen, als nicht einschränkendes Beispiel einige extreme Punkte auf einem bestimmten Organ von Interesse in Rohbildern 1534 (z. B. in einem 3D-MRI- oder CT-Scan) zu identifizieren und automatisch kommentierte Ergebnisse für alle 2D-Schichten eines bestimmten Organs zu erhalten. In mindestens einer Ausführungsform können die Ergebnisse in einem Datenspeicher als Trainingsdaten 1538 gespeichert und (beispielsweise und ohne Einschränkung) als Ground-Truth-Daten für das Training verwendet werden. In mindestens einer Ausführungsform kann ein Deep-Learning-Modell, wenn die Rechenvorrichtung 1508 Extrempunkte für die KIunterstützte Annotation 1310 sendet, beispielsweise diese Daten als Eingabe empfangen und Inferenzergebnisse eines segmentierten Organs oder einer Anomalie zurückgeben. In mindestens einer Ausführungsform können voreingestellte Annotationswerkzeuge, wie das KIunterstützte Annotationswerkzeug 1536B in 15B, durch API-Aufrufe (z. B. API-Aufruf 1544) an einen Server, wie einen Annotationsassistenzserver 1540, der beispielsweise einen Satz vortrainierter Modelle 1542 enthält, die in einer Annotationsmodellregistrierung gespeichert sind, verbessert werden. In mindestens einer Ausführungsform kann eine Annotationsmodellregistrierung vorab trainierte Modelle 1542 (z. B. Modelle für maschinelles Lernen, wie Deep-Learning-Modelle) speichern, die vorab trainiert wurden, um eine KI-gestützte Annotation für ein bestimmtes Organ oder eine Anomalie durchzuführen. Diese Modelle können mit Hilfe von Trainings-Pipelines 1404 weiter aktualisiert werden. In mindestens einer Ausführungsform können die vorinstallierten Annotationswerkzeuge im Laufe der Zeit verbessert werden, wenn neue beschriftete Klinikdaten 1312 hinzugefügt werden.
-
Solche Komponenten können verwendet werden, um synthetische Daten zu erzeugen, die Fehlerfälle in einem Netzwerktrainingsprozess imitieren, was dazu beitragen kann, die Leistung des Netzwerkes zu verbessern und gleichzeitig die Menge der synthetischen Daten zu begrenzen, um eine Überanpassung zu vermeiden.
-
Andere Variationen sind im Sinne der vorliegenden Offenbarung. Während offenbart Techniken sind anfällig für verschiedene Modifikationen und alternative Konstruktionen, bestimmte illustrierte Ausführungsformen davon sind in den Zeichnungen gezeigt und wurden oben im Detail beschrieben. Es sollte jedoch verstanden werden, dass nicht beabsichtigt ist, die Offenbarung auf eine bestimmte Form oder bestimmte Formen zu beschränken, sondern dass im Gegenteil beabsichtigt ist, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und den Umfang der Offenbarung fallen, wie in den beigefügten Ansprüchen definiert.
-
Die Verwendung der Begriffe „ein“ und „ein“ und „der“ und ähnlicher Bezeichnungen im Zusammenhang mit der Beschreibung offenbarer Ausführungsformen (insbesondere im Zusammenhang mit den folgenden Ansprüchen) ist so auszulegen, dass sie sowohl die Einzahl als auch die Mehrzahl umfasst, sofern hier nicht anders angegeben oder durch den Kontext eindeutig widerlegt, und nicht als Definition eines Begriffs. Die Begriffe „das aufweist“, „mit“, „einschließlich“ und „enthaltend“ sind, sofern nicht anders angegeben, als offene Begriffe zu verstehen (im Sinne von „einschließlich, aber nicht beschränkt auf“). Der Begriff „verbunden“ ist, wenn er unverändert bleibt und sich auf physikalische Verbindungen bezieht, als teilweise oder ganz in ihm enthalten, an ihm angebracht oder mit ihm verbunden zu verstehen, auch wenn etwas dazwischen liegt. Die Aufzählung von Wertebereichen dient lediglich als Abkürzungsmethode, um jeden einzelnen Wert, der in den Bereich fällt, einzeln zu bezeichnen, sofern hier nichts anderes angegeben ist, und jeder einzelne Wert wird in die Spezifikation aufgenommen, als ob er hier einzeln aufgeführt wäre. Die Verwendung des Begriffs „Menge“ (z. B. „eine Menge von Gegenständen“) oder „Teilmenge“ ist, sofern nicht anders angegeben oder durch den Kontext widerlegt, als eine nicht leere Sammlung zu verstehen, die ein oder mehrere Elemente aufweist. Sofern nicht anders vermerkt oder durch den Kontext widerlegt, bezeichnet der Begriff „Teilmenge“ einer entsprechenden Menge nicht notwendigerweise eine echte Teilmenge der entsprechenden Menge, sondern Teilmenge und entsprechende Menge können gleich sein.
-
Konjunktionale Ausdrücke, wie z. B. Sätze der Form „mindestens eines von A, B und C“ oder „mindestens eines von A, B und C“, werden, sofern nicht ausdrücklich anders angegeben oder durch den Kontext eindeutig widerlegt, im Allgemeinen so verstanden, dass ein Gegenstand, Begriff usw, entweder A oder B oder C oder eine beliebige nicht leere Teilmenge der Menge von A und B und C sein kann. Beispielsweise beziehen sich die konjunktiven Ausdrücke „mindestens eines von A, B und C“ und „mindestens eines von A, B und C“ in einem anschaulichen Beispiel für eine Menge mit drei Mitgliedern auf eine der folgenden Mengen: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Derartige konjunktivische Formulierungen sind also nicht generell so zu verstehen, dass bei bestimmten Ausführungsformen jeweils mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden sein muss. Sofern nicht anders vermerkt oder durch den Kontext widerlegt, bezeichnet der Begriff „Mehrzahl“ einen Zustand der Pluralität (z. B. „eine Mehrzahl von Gegenständen“ bezeichnet mehrere Gegenstände). Eine Mehrzahl besteht aus mindestens zwei Gegenständen, kann aber auch mehr sein, wenn dies entweder ausdrücklich oder durch den Kontext angezeigt wird. Sofern nicht anders angegeben oder aus dem Kontext ersichtlich, bedeutet „basiert auf“ „basiert zumindest teilweise auf“ und nicht „basiert ausschließlich auf“.
-
Die Operationen der hierin beschriebenen Prozesse können in jeder geeigneten Reihenfolge ausgeführt werden, sofern hierin nichts anderes angegeben ist oder der Kontext dem nicht eindeutig widerspricht. In mindestens einer Ausführungsform wird ein Prozess wie die hier beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon) unter der Kontrolle eines oder mehrerer Computersysteme durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind und als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen) implementiert sind, die gemeinsam auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon ausgeführt werden. In mindestens einer Ausführungsform ist der Code auf einem computerlesbaren Speichermedium gespeichert, beispielsweise in Form eines Computerprogramms, das eine Vielzahl von Anweisungen aufweist, die von einem oder mehreren Prozessoren ausgeführt werden können. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nichtflüchtiges computerlesbares Speichermedium, das keine transitorischen Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) enthält, sondern eine nichtflüchtige Datenspeicherschaltung (z. B. Puffer, Cache und Warteschlangen) innerhalb der Transceiver für transitorische Signale. In mindestens einer Ausführungsform ist Code (z.B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichtflüchtigen, computerlesbaren Speichermedien gespeichert, auf denen ausführbare Anweisungen (oder ein anderer Speicher zum Speichern ausführbarer Anweisungen) gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren eines Computersystems ausgeführt werden (d.h. als Ergebnis der Ausführung), das Computersystem veranlassen, hierin beschriebene Operationen durchzuführen. Ein Satz nichtflüchtiger computerlesbarer Speichermedien weist in mindestens einer Ausführungsform mehrere nichtflüchtige computerlesbare Speichermedien auf, und eines oder mehrere der einzelnen nichtflüchtigen Speichermedien der mehreren nichtflüchtigen computerlesbaren Speichermedien enthalten nicht den gesamten Code, während mehrere nichtflüchtige computerlesbare Speichermedien gemeinsam den gesamten Code speichern. In mindestens einer Ausführungsform werden ausführbare Befehle so ausgeführt, dass verschiedene Befehle von verschiedenen Prozessoren ausgeführt werden - beispielsweise speichert ein nichtflüchtiges computerlesbares Speichermedium Befehle und eine zentrale Verarbeitungseinheit („CPU“) führt einige der Befehle aus, während eine Grafikverarbeitungseinheit („GPU“) andere Befehle ausführt. In mindestens einer Ausführungsform haben verschiedene Komponenten eines Computersystems getrennte Prozessoren, und verschiedene Prozessoren führen verschiedene Teilmengen von Befehlen aus.
-
Dementsprechend sind in mindestens einer Ausführungsform Computersysteme so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder gemeinsam Operationen der hierin beschriebenen Prozesse durchführen, und solche Computersysteme sind mit geeigneter Hardware und/oder Software konfiguriert, die die Durchführung der Operationen ermöglichen. Ferner ist ein Computersystem, das mindestens eine Ausführungsform der vorliegenden Offenbarung implementiert, ein einzelnes Gerät, und in einer anderen Ausführungsform ist es ein verteiltes Computersystem, das mehrere Geräte aufweist, die unterschiedlich arbeiten, so dass das verteilte Computersystem die hierin beschriebenen Operationen durchführt, und so, dass ein einzelnes Gerät nicht alle Operationen durchführt.
-
Die Verwendung von Beispielen oder beispielhaften Formulierungen (z. B. „wie“) dient lediglich der besseren Veranschaulichung von Ausführungsformen der Offenbarung und stellt keine Einschränkung des Umfangs der Offenbarung dar, sofern kein anderer Anspruch besteht. Keine Formulierung in der Beschreibung sollte so ausgelegt werden, dass ein nicht beanspruchtes Element als wesentlich für die Praxis der Offenbarung angesehen wird.
-
Alle hier angeführten Referenzen, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, werden hiermit durch Verweis in demselben Umfang einbezogen, als ob jede Referenz einzeln und ausdrücklich als durch Verweis einbezogen gekennzeichnet wäre und hier in ihrer Gesamtheit wiedergegeben würde.
-
In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ sowie ihre Ableitungen verwendet werden. Es ist zu verstehen, dass diese Begriffe nicht als Synonyme füreinander zu verstehen sind. Vielmehr kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem oder indirektem physischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt“ kann auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander stehen, aber dennoch miteinander zusammenarbeiten oder interagieren.
-
Sofern nicht ausdrücklich anders angegeben, beziehen sich Begriffe wie „Verarbeitung“, „Rechnen“, „Berechnen“, „Bestimmen“ o. ä. in der gesamten Spezifikation auf Aktionen und/oder Prozesse eines Computers oder Rechensystems oder eines ähnlichen elektronischen Rechengeräts, die Daten, die als physikalische, z. B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems dargestellt werden, manipulieren und/oder in andere Daten umwandeln, die in ähnlicher Weise als physikalische Größen in den Speichern, Registern oder anderen Informationsspeicher-, -übertragungs- oder -anzeigegeräten des Rechensystems dargestellt werden.
-
In ähnlicher Weise kann sich der Begriff „Prozessor“ auf ein Gerät oder einen Teil eines Geräts beziehen, das elektronische Daten aus Registern und/oder einem Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder einem Speicher gespeichert werden können. Als nicht einschränkende Beispiele kann ein „Prozessor“ eine CPU oder eine GPU sein. Eine „Datenverarbeitungsplattform“ kann einen oder mehrere Prozessoren aufweisen. Der hier verwendete Begriff „Software“-Prozesse kann beispielsweise Software- und/oder Hardware-Entitäten umfassen, die im Laufe der Zeit Arbeit verrichten, wie Aufgaben, Threads und intelligente Agenten. Jeder Prozess kann sich auch auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. Die Begriffe „System“ und „Methode“ werden hier insofern synonym verwendet, als ein System eine oder mehrere Methoden umfassen kann und Methoden als System betrachtet werden können.
-
Im vorliegenden Dokument kann auf das Beschaffen, Erfassen, Empfangen oder Eingeben von analogen oder digitalen Daten in ein Teilsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. Das Beschaffen, Erfassen, Empfangen oder Eingeben analoger und digitaler Daten kann auf verschiedene Weise erfolgen, beispielsweise durch Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In einigen Implementierungen kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen oder digitalen Daten durch die Übertragung von Daten über eine serielle oder parallele Schnittstelle durchgeführt werden. In einer anderen Implementierung kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens analoger oder digitaler Daten durch die Übertragung von Daten über ein Computernetzwerk von der bereitstellenden Einheit zur erfassenden Einheit durchgeführt werden. Es kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Präsentieren analoger oder digitaler Daten Bezug genommen werden. In verschiedenen Beispielen kann das Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen analoger oder digitaler Daten durch die Übertragung von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozess-Kommunikationsmechanismus erfolgen.
-
Obwohl in der obigen Diskussion beispielhafte Implementierungen der beschriebenen Techniken beschrieben werden, können auch andere Architekturen zur Implementierung der beschriebenen Funktionalität verwendet werden und sollen in den Anwendungsbereich dieser Offenbarung fallen. Darüber hinaus können verschiedene Funktionen und Verantwortlichkeiten je nach den Umständen auf unterschiedliche Weise verteilt und aufgeteilt werden, auch wenn oben zu Diskussionszwecken eine bestimmte Verteilung der Verantwortlichkeiten definiert wurde.
-
Auch wenn der Gegenstand in einer Sprache beschrieben wurde, die sich auf strukturelle Merkmale und/oder methodische Handlungen bezieht, ist zu verstehen, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht notwendigerweise auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr sind die spezifischen Merkmale und Handlungen als beispielhafte Formen der Umsetzung der Ansprüche offenbart.