Blog abonnieren

Wir freuen uns, auf dem diesjährigen Ray Summit den Infrastruktur-Stack zu präsentieren, den wir zusammen mit IBM Research entwickeln und der Ray und CodeFlare für verteilte Workloads generativer KI enthält. Die Technologien werden in Open Source Communities wie Open Data Hub eingeführt und entwickeln sich schließlich zu einem Teil von Red Hat OpenShift AI, das auch die Grundlage von IBM watsonx.ai und den von Red Hat Ansible Automation Platform verwendeten IBM-Basismodellen bildet. Red Hat OpenShift AI vereint leistungsstarke Tools und Technologien, mit denen das Fine Tuning und der Einsatz von Basismodellen nahtlos, skalierbar und effizient gestaltet wird. Die Plattform bietet die Tools, mit denen die Modelle konsistent optimiert, trainiert und bereitgestellt werden können, unabhängig davon, ob Sie dies Onsite oder in der Cloud durchführen. Unsere neuesten Arbeiten bieten mehrere Optionen für die Feinabstimmung und Bereitstellung von Basismodellen und geben Data-Science- und MLOps-Fachkräften Funktionen wie Echtzeitzugriff auf Cluster-Ressourcen oder die Möglichkeit, Workloads für die Batch-Verarbeitung zu planen. 

In diesem Blog erfahren Sie, wie Sie ein HuggingFace GPT-2-Modell, das aus 137 Millionen Parametern besteht, in einem WikiText-Datensatz mit Red Hat OpenShift AI nahtlos optimieren und es anschließend bereitstellen. Für das Fine Tuning erreichen wir dies mithilfe des Stacks Distributed Workloads mit dem zugrunde liegenden KubeRay für die Parallelisierung, und wir verwenden den Stack KServe/Caikit/TGIS für den Einsatz und die Überwachung unseres optimierten GPT- 2-Basismodells.

Der Stack für verteilte Workloads besteht aus zwei Hauptkomponenten:

  • KubeRay: Kubernetes-Operator für das Deployment und Management von Remote-Ray-Clustern, auf denen verteilte Compute-Workloads ausgeführt werden, und
  • CodeFlare: Kubernetes-Operator, der den Lifecycle der folgenden drei Komponenten bereitstellt und verwaltet:
    • CodeFlare-SDK: Tool zum Definieren und Steuern verteilter Remote-Computing-Jobs und Infrastrukturen. Der CodeFlare-Operator stellt ein Notebook mit CodeFlare-SDK bereit.
    • Multi-Cluster Application Dispatcher (MCAD): Kubernetes-Controller für das Management von Batch-Jobs in einer Umgebung mit einem oder mehreren Clustern
    • InstaScale: On-Demand-Skalierung aggregierter Ressourcen in verschiedenen OpenShift-Flavors mit MachineSets-Einrichtung (selbst gemanagt oder gemanagt – Red Hat OpenShift on AWS/Open Data Hub).

 

Interaktionen zwischen Komponenten und Nutzer-Workflow in verteilten Workloads

Abbildung 1. Interaktionen zwischen Komponenten und Nutzer-Workflow in verteilten Workloads

Wie in Abbildung 1 gezeigt, beginnt die Optimierung Ihres Basismodells in Red Hat OpenShift AI mit CodeFlare, einem dynamischen Framework, das die Entwicklung, das Training und das Verfeinern von Modellen optimiert und vereinfacht. Darüber hinaus profitieren Sie von der Leistungsfähigkeit von Ray, einem verteilten Computing-Framework, indem Sie KubeRay verwenden, um Ihre Fine Tuning-Bemühungen effizient zu verteilen und die Zeit bis zum Erreichen einer optimalen Modellleistung erheblich zu reduzieren. Sobald Sie Ihren Workload für das Fine Tuning definiert haben, reiht MCAD Ihre Ray-Workload in die Warteschlange ein, bis die Ressourcenanforderungen erfüllt sind. Der Ray-Cluster wird erstellt, sobald garantiert werden kann, dass Ihre Pods geplant werden können.

Auf der Bereitstellungsseite besteht der KServe/Caikit/TGIS-Stack aus:

  • KServe: Benutzerdefinierte Kubernetes-Ressourcendefinition für Produktionsmodelle, die den Lifecycle der Modellbereitstellung verarbeiten
  • Text Generation Inference Server (TGIS): Stellt ein Back-End/einen Server bereit, der die Modelle lädt und die Inferenz-Engine bereitstellt
  • Caikit: KI-Toolkit/KI-Laufzeit, die den Lifecycle des TGIS-Prozesses verarbeitet und Inferenzendpunkte und Module bereitstellt, die verschiedene Modelltypen verarbeiten
  • OpenShift Serverless (Voraussetzungsoperator): basiert auf dem Open Source-Projekt Knative, mit dem Entwicklungsteams serverlose und eventgesteuerte Anwendungen der Enterprise-Klasse entwickeln und bereitstellen können
  • OpenShift Service Mesh (vorausgesetzter Operator): basiert auf dem Open Source-Projekt Istio, das eine Plattform für Einblicke in Verhaltensmuster und betriebliche Kontrolle über vernetzte Microservices in einem Service Mesh bietet
Interaktionen zwischen Komponenten und Benutzer-Workflow im KServe/Caikit/TGIS-Stack

Abbildung 2. Interaktionen zwischen Komponenten und Benutzer-Workflow im KServe/Caikit/TGIS-Stack

Sobald Ihr Modell optimiert wurde, stellen Sie es mit Caikit/TGIS bereit, das die Runtime und das Backend bereitstellt. KServe vereinfacht und optimiert die Skalierung und Wartung Ihres Modells und bietet eine zuverlässige und moderne Bereitstellungsinfrastruktur. Im Hintergrund sorgt Red Hat OpenShift Serverless (Knative) für das Serverless Deployment unseres Modells, und Red Hat OpenShift Service Mesh (Istio) verarbeitet die Netzwerk- und Traffic-Flows (siehe Abbildung 2).

Einrichten der Umgebung

Diese Demo setzt voraus, dass Sie einen OpenShift-Cluster mit Red Hat OpenShift AI Operator installiert oder als Add-On hinzugefügt haben. Die Demo kann auch mit Open Data Hub als zugrunde liegende Plattform ausgeführt werden.

Zum Fine-Tuning (Feinabstimmung) Ihres Modells müssen Sie den CodeFlare -Community-Operator installieren, der in OperatorHub verfügbar ist. Der CodeFlare-Operator installiert MCAD, InstaScale, KubeRay Operator und CodeFlare Notebook Image inklusive Paketen wie codeflare-sdk, pytorch und calculatorx. Bei Verwendung von GPUs müssen die Operatoren NVIDIA GPU und Node Feature Discovery ebenfalls installiert werden.

Für die Modellbereitstellung können Sie einfach dieses Skript ausführen. Damit werden alle erforderlichen Operatoren und der gesamte KServe/Caikit/TGIS-Stack installiert. Legen Sie den  TARGET_OPERATOR  auf rhods fest. 

Obwohl die Installationsanweisungen für die verteilten Workloads und für die KServe/Caikit/TGIS-Stacks hier mehr oder weniger manuell sind, werden beide Stacks in Kürze in Red Hat OpenShift AI verfügbar sein und unterstützt.

Fine Tuning eines LLM-Modells (Large Language Model)

Starten Sie zunächst das CodeFlare Notebook über das Dashboard von Red Hat OpenShift AI (siehe Abbildung 3) und klonen Sie das Demo Repository, das das Notebook und andere für diese Demo benötigte Dateien enthält.

 

Figure 3. CodeFlare notebook image shown in the OpenShift Data Science Dashboard.

Abbildung 3. CodeFlare Notebook Image im OpenShift AI Dashboard

Zu Beginn müssen Sie die Parameter für den gewünschten Cluster-Typ (ClusterConfiguration) definieren, wie etwa den Namen des Clusters, den Namespace, in dem bereitgestellt werden soll, die erforderlichen CPU-, GPU- und Speicherressourcen, die Rechnertypen und Sie müssen festlegen, ob Sie die Autoskalierungsfunktion von InstaScale nutzen wollen. Wenn Sie in einer On-Premise-Umgebung arbeiten, können Sie die  machine_types ignorieren und instascale=False festlegen. Anschließend wird das Cluster-Objekt erstellt und an MCAD gesendet, um den Ray-Cluster zu starten. 

Wenn der Ray-Cluster bereit ist und Sie die Ray-Cluster-Details aus dem Befehlcluster.details() im Notebook sehen, können Sie Ihren Fine Tuning-Job definieren, indem Sie einen Namen, das auszuführende Skript und ggf. Argumente angeben, und eine Liste der erforderlichen Bibliotheken erstellen und diese an den Ray-Cluster senden, den Sie gerade gestartet haben. Die Liste der Argumente gibt das zu verwendende GPT-2-Modell und den WikiText-Datensatz an, mit dem das Modell optimiert werden soll. Das Besondere an CodeFlare SDK ist, dass Sie Status, Protokolle und andere Informationen bequem über die CLI verfolgen oder in einem Ray-Dashboard anzeigen können. 

Sobald der Fine Tuning-Prozess des Modells abgeschlossen ist, ändert sich die Ausgabe von job.status() in SUCCEEDED und die Protokolle im Ray-Dashboard zeigen den Abschluss (siehe Abbildung 4). Wenn 1 Ray-Worker auf der NVIDIA T4-GPU mit 2 CPUs und 8 GB Arbeitsspeicher ausgeführt wird, dauert das Fine Tuning des GPT2-Modells etwa 45 Minuten.

Figure 4. Logs from Ray Dashboard show completion of the fine-tuning process of the model.

Abbildung 4. Protokolle aus dem Ray-Dashboard zeigen den Abschluss des Fine Tuning-Prozesses des Modells.

Anschließend müssen Sie ein neues Verzeichnis im Notebook erstellen, das Modell dort speichern und es dann in Ihre lokale Umgebung herunterladen, um das Modell zu konvertieren und es anschließend in einen MinIO-Bucket hochzuladen. Beachten Sie, dass wir in dieser Demo einen MinIO-Bucket verwenden. Sie können jedoch einen anderen Typ von S3-Bucket, PVC oder einen anderen Storage verwenden, den Sie bevorzugen.

Der Einsatz des LLM-Modells

Nachdem Sie nun Ihr Basismodell optimiert haben, können Sie es in die Praxis umsetzen. In demselben Notebook, in dem Sie Ihr Modell optimiert haben, erstellen Sie einen neuen Namespace, in dem Sie Folgendes tun:

  • Caikit+TGIS Serving Runtime bereitstellen
  • S3-Datenverbindung bereitstellen und
  • den Inferenzservice bereitstellen, der auf Ihr Modell verweist, das sich in einem MinIO-Bucket befindet

Eine Bereitstellungslaufzeit ist eine benutzerdefinierte Ressourcendefinition, die eine Umgebung für die Bereitstellung und Verwaltung von Modellen in der Produktion erstellt. Sie erstellt die Templates für Pods, die Modelle verschiedener Formate bei Bedarf dynamisch laden und entladen können und einen Service-Endpunkt für die Inferenzanforderungen zur Verfügung stellen. Sie stellen die Bereitstellungslaufzeit bereit, die die Laufzeit-Pods vertikal skaliert, sobald ein Inferenzservice erkannt wird. Port 8085 wird für die Inferenzen verwendet.

Ein Inferenzservice ist ein Server, der Eingabedaten akzeptiert, sie an das Modell weiterleitet, das Modell ausführt und die Inferenzausgabe zurückgibt. In dem von Ihnen bereitgestellten Inferenzservice geben Sie die zuvor bereitgestellte Laufzeit an, aktivieren die Passthrough-Route für die gRPC-Inferenz und verweisen den Server auf Ihren MinIO-Bucket, in dem sich das optimierte Modell befindet.

Nachdem Sie verifiziert haben, dass der Inferenzservice bereit ist, führen Sie einen Inferenzaufruf aus, in dem Sie das Modell auffordern, einen Satz Ihrer Wahl zu vervollständigen. 

Sie haben nun ein großes GPT-2-Sprachmodell mit dem Distributed Workloads-Stack optimiert und es mit dem KServe/Caikit/TGIS-Stack in OpenShift AI erfolgreich bereitgestellt. 

Nächste Schritte 

Wir möchten uns bei den Communities von Open Data Hub und Ray für die Unterstützung bedanken. Wir betrachten hier nur die Spitze des Eisbergs potenzieller KI/ML-Use Cases mit OpenShift AI. Wenn Sie mehr über die Funktionen des CodeFlare-Stacks erfahren möchten, sehen Sie sich das von uns entwickelte Demo-Video an, in dem die CodeFlare SDK-, KubeRay- und MCAD-Teile dieser Demo ausführlicher behandelt werden.

Wir werden die CodeFlare- und KubeRay-Operatoren in OpenShift AI integrieren und die Benutzeroberfläche für den KServe/Caikit/TGIS-Stack entwickeln, der kürzlich in OpenShift AI als begrenzt verfügbares Feature veröffentlicht wurde.


Über den Autor

Selbi Nuryyeva is a software engineer at Red Hat in the OpenShift AI team focusing on the Open Data Hub and Red Hat OpenShift Data Science products. In her current role, she is responsible for enabling and integrating the model serving capabilities. She previously worked on the Distributed Workloads with CodeFlare, MCAD and InstaScale and integration of the partner AI/ML services ecosystem. Selbi is originally from Turkmenistan and prior to Red Hat she graduated with a Computational Chemistry PhD degree from UCLA, where she simulated chemistry in solar panels.

Read full bio

Nach Thema durchsuchen

automation icon

Automatisierung

Das Neueste zum Thema IT-Automatisierung für Technologien, Teams und Umgebungen

AI icon

Künstliche Intelligenz

Erfahren Sie das Neueste von den Plattformen, die es Kunden ermöglichen, KI-Workloads beliebig auszuführen

open hybrid cloud icon

Open Hybrid Cloud

Erfahren Sie, wie wir eine flexiblere Zukunft mit Hybrid Clouds schaffen.

security icon

Sicherheit

Erfahren Sie, wie wir Risiken in verschiedenen Umgebungen und Technologien reduzieren

edge icon

Edge Computing

Erfahren Sie das Neueste von den Plattformen, die die Operations am Edge vereinfachen

Infrastructure icon

Infrastruktur

Erfahren Sie das Neueste von der weltweit führenden Linux-Plattform für Unternehmen

application development icon

Anwendungen

Entdecken Sie unsere Lösungen für komplexe Anwendungsherausforderungen

Original series icon

Original Shows

Interessantes von den Experten, die die Technologien in Unternehmen mitgestalten