Wir freuen uns, eine neue Version des anzukündigen Amazon SageMaker-Operatoren für Kubernetes Verwendung der AWS-Controller für Kubernetes (ACK). ACK ist ein Framework zum Erstellen benutzerdefinierter Kubernetes-Controller, wobei jeder Controller mit einer AWS-Service-API kommuniziert. Mit diesen Controllern können Kubernetes-Benutzer AWS-Ressourcen wie Buckets, Datenbanken oder Nachrichtenwarteschlangen einfach über die Kubernetes-API bereitstellen.
Loslassen v1.2.9 der SageMaker ACK-Operatoren fügt Unterstützung für hinzu Inferenzkomponenten, die bisher nur über die SageMaker-API und die AWS Software Development Kits (SDKs) verfügbar waren. Inferenzkomponenten können Ihnen helfen, die Bereitstellungskosten zu optimieren und die Latenz zu reduzieren. Mit den neuen Inferenzkomponentenfunktionen können Sie ein oder mehrere Basismodelle (FMs) darauf bereitstellen Amazon Sage Maker Endpunkt und steuern Sie, wie viele Beschleuniger und wie viel Speicher für jedes FM reserviert sind. Dies trägt zur Verbesserung der Ressourcennutzung bei, senkt die Kosten für die Modellbereitstellung im Durchschnitt um 50 % und ermöglicht Ihnen die Skalierung von Endpunkten zusammen mit Ihren Anwendungsfällen. Weitere Einzelheiten finden Sie unter Amazon SageMaker fügt neue Inferenzfunktionen hinzu, um die Kosten und Latenz für die Bereitstellung des Basismodells zu reduzieren.
Die Verfügbarkeit von Inferenzkomponenten über den SageMaker-Controller ermöglicht es Kunden, die Kubernetes als Steuerungsebene verwenden, die Vorteile von Inferenzkomponenten zu nutzen, während sie ihre Modelle auf SageMaker bereitstellen.
In diesem Beitrag zeigen wir, wie Sie SageMaker-ACK-Operatoren verwenden, um SageMaker-Inferenzkomponenten bereitzustellen.
Wie ACK funktioniert
Demonstrieren wie ACK funktioniertSchauen wir uns ein Beispiel mit an Amazon Simple Storage-Service (Amazon S3). Im folgenden Diagramm ist Alice unsere Kubernetes-Benutzerin. Ihre Anwendung hängt von der Existenz eines S3-Buckets mit dem Namen ab my-bucket
.
Der Arbeitsablauf besteht aus den folgenden Schritten:
- Alice ruft an
kubectl apply
, indem eine Datei übergeben wird, die ein Kubernetes beschreibt benutzerdefinierte Ressource beschreibt ihren S3-Eimer.kubectl apply
übergibt diese Datei, genannt a Manifest, an den Kubernetes-API-Server, der im Kubernetes-Controller-Knoten ausgeführt wird. - Der Kubernetes-API-Server empfängt das Manifest, das den S3-Bucket beschreibt, und stellt fest, ob Alice dies getan hat Berechtigungen um eine benutzerdefinierte Ressource zu erstellen Art
s3.services.k8s.aws/Bucket
und dass die benutzerdefinierte Ressource ordnungsgemäß formatiert ist. - Wenn Alice autorisiert ist und die benutzerdefinierte Ressource gültig ist, schreibt der Kubernetes-API-Server die benutzerdefinierte Ressource auf seinen Server
etcd
Datenspeicher. - Anschließend antwortet es Alice, dass die benutzerdefinierte Ressource erstellt wurde.
- Zu diesem Zeitpunkt der ACK-Dienst Controller für Amazon S3, das auf einem Kubernetes-Worker-Knoten im Kontext eines normalen Kubernetes läuft Schote, wird benachrichtigt, dass eine neue benutzerdefinierte Ressource dieser Art vorliegt
s3.services.k8s.aws/Bucket
wurde erschaffen. - Der ACK-Service-Controller für Amazon S3 kommuniziert dann mit der Amazon S3-API und ruft auf S3 CreateBucket-API um den Bucket in AWS zu erstellen.
- Nach der Kommunikation mit der Amazon S3-API ruft der ACK-Service-Controller den Kubernetes-API-Server auf, um die benutzerdefinierten Ressourcen zu aktualisieren Status mit Informationen, die es von Amazon S3 erhalten hat.
Schlüsselkomponenten
Die neuen Inferenzfunktionen bauen auf den Echtzeit-Inferenzendpunkten von SageMaker auf. Wie zuvor erstellen Sie den SageMaker-Endpunkt mit einer Endpunktkonfiguration, die den Instanztyp und die anfängliche Instanzanzahl für den Endpunkt definiert. Das Modell wird in einem neuen Konstrukt, einer Inferenzkomponente, konfiguriert. Hier geben Sie die Anzahl der Beschleuniger und die Speichermenge an, die Sie jeder Kopie eines Modells zuweisen möchten, zusammen mit den Modellartefakten, dem Container-Image und der Anzahl der bereitzustellenden Modellkopien.
Sie können die neuen Inferenzfunktionen von nutzen Amazon SageMaker-Studio, der SageMaker Python-SDK, AWS-SDKs und AWS-Befehlszeilenschnittstelle (AWS CLI). Sie werden auch unterstützt von AWS CloudFormation. Jetzt können Sie sie auch mit verwenden SageMaker-Operatoren für Kubernetes.
Lösungsüberblick
Für diese Demo verwenden wir den SageMaker-Controller, um eine Kopie davon bereitzustellen Dolly v2 7B-Modell und eine Kopie der FLAN-T5 XXL-Modell von dem Modellhub mit umarmendem Gesicht auf einem SageMaker-Echtzeitendpunkt mithilfe der neuen Inferenzfunktionen.
Voraussetzungen:
Um mitzumachen, sollten Sie über einen Kubernetes-Cluster verfügen, auf dem der SageMaker ACK-Controller v1.2.9 oder höher installiert ist. Anweisungen zur Bereitstellung eines Amazon Elastic Kubernetes-Service (Amazon EKS) Cluster mit Amazon Elastic Compute-Cloud (Amazon EC2) Von Linux verwaltete Knoten mit eksctl, siehe Erste Schritte mit Amazon EKS – eksctl. Anweisungen zur Installation des SageMaker-Controllers finden Sie unter Maschinelles Lernen mit dem ACK SageMaker Controller.
Für das Hosten der LLMs benötigen Sie Zugriff auf beschleunigte Instanzen (GPUs). Diese Lösung verwendet eine Instanz von ml.g5.12xlarge; Sie können die Verfügbarkeit dieser Instanzen in Ihrem AWS-Konto überprüfen und diese Instanzen bei Bedarf über eine Anfrage zur Erhöhung der Servicekontingente anfordern, wie im folgenden Screenshot gezeigt.
Erstellen Sie eine Inferenzkomponente
Um Ihre Inferenzkomponente zu erstellen, definieren Sie die EndpointConfig
, Endpoint
, Model
und InferenceComponent
YAML-Dateien, ähnlich den in diesem Abschnitt gezeigten. Verwenden kubectl apply -f <yaml file>
um die Kubernetes-Ressourcen zu erstellen.
Sie können den Status der Ressource über auflisten kubectl describe <resource-type>
; beispielsweise, kubectl describe inferencecomponent
.
Sie können die Inferenzkomponente auch ohne Modellressource erstellen. Beachten Sie die Anleitung im API-Dokumentation für weitere Informationen an.
EndpointConfig YAML
Das Folgende ist der Code für die EndpointConfig-Datei:
Endpunkt-YAML
Das Folgende ist der Code für die Endpoint-Datei:
Modell YAML
Das Folgende ist der Code für die Modelldatei:
InferenceComponent-YAMLs
In den folgenden YAML-Dateien weisen wir jedem Modell 5.12 GPUs, 4 CPUs und 2 MB Speicher zu, da die ml.g2xlarge-Instanz über 1,024 GPUs verfügt:
Rufen Sie Modelle auf
Sie können die Modelle nun mit dem folgenden Code aufrufen:
Aktualisieren Sie eine Inferenzkomponente
Um eine vorhandene Inferenzkomponente zu aktualisieren, können Sie die YAML-Dateien aktualisieren und dann verwenden kubectl apply -f <yaml file>
. Das Folgende ist ein Beispiel für eine aktualisierte Datei:
Löschen Sie eine Inferenzkomponente
Um eine vorhandene Inferenzkomponente zu löschen, verwenden Sie den Befehl kubectl delete -f <yaml file>
.
Verfügbarkeit und Preisgestaltung
Die neuen SageMaker-Inferenzfunktionen sind ab sofort in den AWS-Regionen USA Ost (Ohio, Nord-Virginia), USA West (Oregon), Asien-Pazifik (Jakarta, Mumbai, Seoul, Singapur, Sydney, Tokio), Kanada (Zentral) und Europa verfügbar. Frankfurt, Irland, London, Stockholm), Naher Osten (VAE) und Südamerika (São Paulo). Einzelheiten zu den Preisen finden Sie unter Amazon SageMaker Preise.
Zusammenfassung
In diesem Beitrag haben wir gezeigt, wie Sie SageMaker-ACK-Operatoren verwenden, um SageMaker-Inferenzkomponenten bereitzustellen. Starten Sie noch heute Ihren Kubernetes-Cluster und stellen Sie Ihre FMs mit den neuen Inferenzfunktionen von SageMaker bereit!
Über die Autoren
Rajesh Ramchander ist Principal ML Engineer im Bereich Professional Services bei AWS. Er unterstützt Kunden in verschiedenen Phasen ihrer KI/ML- und GenAI-Reise, von denen, die gerade erst anfangen, bis hin zu denen, die ihr Unternehmen mit einer AI-First-Strategie führen.
Amit Arora ist ein KI- und ML-Spezialistenarchitekt bei Amazon Web Services und unterstützt Unternehmenskunden bei der Nutzung cloudbasierter maschineller Lerndienste, um ihre Innovationen schnell zu skalieren. Er ist außerdem außerordentlicher Dozent im MS Data Science and Analytics-Programm an der Georgetown University in Washington DC
Suryansh Singh ist Softwareentwicklungsingenieur bei AWS SageMaker und arbeitet an der Entwicklung ML-verteilter Infrastrukturlösungen für AWS-Kunden in großem Maßstab.
Saurabh Trikande ist Senior Product Manager für Amazon SageMaker Inference. Er arbeitet leidenschaftlich gerne mit Kunden zusammen und ist motiviert von dem Ziel, maschinelles Lernen zu demokratisieren. Er konzentriert sich auf die Kernherausforderungen im Zusammenhang mit der Bereitstellung komplexer ML-Anwendungen, mandantenfähigen ML-Modellen, Kostenoptimierungen und der leichteren Bereitstellung von Deep-Learning-Modellen. In seiner Freizeit wandert Saurabh gerne, lernt etwas über innovative Technologien, folgt TechCrunch und verbringt Zeit mit seiner Familie.
John Liu ist Software Development Engineer im Amazon SageMaker-Team. Ihre aktuelle Arbeit konzentriert sich darauf, Entwicklern dabei zu helfen, Modelle für maschinelles Lernen effizient zu hosten und die Inferenzleistung zu verbessern. Ihre Leidenschaft gilt der räumlichen Datenanalyse und dem Einsatz von KI zur Lösung gesellschaftlicher Probleme.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- PlatoHealth. Informationen zu Biotechnologie und klinischen Studien. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/machine-learning/use-kubernetes-operators-for-new-inference-capabilities-in-amazon-sagemaker-that-reduce-llm-deployment-costs-by-50-on-average/