View a markdown version of this page

AI/ML Inferenz-Workloads auf Amazon EKS ausführen - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AI/ML Inferenz-Workloads auf Amazon EKS ausführen

Tipp

Melden Sie sich für bevorstehende Amazon AI/ML EKS-Workshops an.

Inferenz ist der Prozess, bei dem ein trainiertes KI-Modell ausgeführt wird, um Vorhersagen oder Ergebnisse aus Eingabedaten zu generieren. Dazu gehören die Bereitstellung großer Sprachmodelle (LLMs), die Text oder Code erzeugen, Diffusionsmodelle, die Bilder erzeugen, Sprachmodelle für die Sprachsynthese und Transkription sowie Videomodelle für die Analyse oder Generierung in Echtzeit. Amazon EKS bietet eine skalierbare, portable Lösung für die Bereitstellung dieser Inferenz-Workloads mit NVIDIA-GPUs oder AWS Trainium-Beschleunigern, dynamischer Skalierung und Integration mit der breiteren Kubernetes-Landschaft und der Tools- und Servicelandschaft. AWS

Warum Amazon EKS für Inferenz verwenden

Amazon EKS kombiniert Kubernetes-Orchestrierung mit AWS Infrastruktur, um die wichtigsten Herausforderungen bei der Ausführung von Inferenzen in großem Maßstab zu bewältigen:

  • Dynamische GPU-Skalierung — Karpenter stellt bei Bedarf GPU-Instances in der richtigen Größe auf der Grundlage von Pod-Ressourcenanforderungen bereit, skaliert im Leerlauf von Null und fügt Kapazität hinzu, wenn der Verkehr zunimmt. Dadurch wird eine übermäßige Bereitstellung teurer GPU-Ressourcen vermieden.

  • Schnelle Kaltstarts — Der parallel SOCI-Pull (Seekable OCI) lädt große Container-Image-Ebenen gleichzeitig herunter und entpackt sie, wodurch die Abrufzeiten von Bildern von Minuten auf Sekunden reduziert werden. In Kombination mit dem direkten Streaming von Modellen von Amazon S3 in den GPU-Speicher können Pods in weniger als zwei Minuten mit der Bereitstellung beginnen.

  • Automatische Wiederherstellung nach GPU-Ausfällen — Der EKS-Node-Monitoring-Agent erkennt GPU-Hardwarefehler und löst einen automatischen Knotenaustausch aus, wodurch Ausfallzeiten ohne manuelles Eingreifen minimiert werden.

  • Kostenoptimierung — Spot-Instances mit On-Demand Fallback, Instance-Auswahl der richtigen Größe und Scale-to-Zero-Verhalten reduzieren die GPU-Kosten. Reservierte Kapazität (ODCRs) bietet zusätzliche Einsparungen bei stationären Workloads.

  • Offene Standards und Portabilität — Inferenz-Workloads werden auf Standard-Kubernetes-APIs (Deployments, Services, HPAs) mit Open-Source-Modellservern wie vLLM oder SGlang ausgeführt und bieten so eine Portabilität zwischen Umgebungen.

  • Integrierte Überwachung — Prometheus-Metriken von vLLM oder SGlang und dem NVIDIA DCGM Exporter bieten über Grafana-Dashboards Einblicke in die Anforderungslatenz, den Token-Durchsatz, die GPU-Auslastung und die Speichernutzung.

Glossar

In diesem Abschnitt werden die folgenden Begriffe verwendet:

  • Inferenz — Der Prozess, bei dem ein trainiertes Modell ausgeführt wird, um aus Eingabedaten Ausgaben (Text, Einbettungen, Klassifizierungen) zu generieren.

  • Modellserver — Ein containerisierter Dienst, der ein Modell in den Speicher lädt, Inferenzanfragen empfängt und Vorhersagen zurückgibt. Beispiele hierfür sind vLLM, SGlang, Triton Inference Server und Text Generation Inference (TGI).

  • Modellgewichte — Die erlernten Parameter eines trainierten Modells, gespeichert als Dateien (normalerweise im SafeTensors oder GGUF-Format), die der Modellserver in den GPU-Speicher lädt.

  • Beschleuniger — Spezialisierte Hardware wie NVIDIA-GPUs oder AWS Trainium/Inferentia -Chips, die die für die Inferenz erforderlichen Matrixoperationen beschleunigen.

  • Tensorparallelität — Aufteilung eines Modells auf mehrere GPUs auf demselben Knoten, um Modelle zu bedienen, die den Arbeitsspeicher einer einzelnen GPU überschreiten.

  • KV-Cache — Ein Speicherpuffer, der zuvor berechnete Schlüssel-Wert-Paare während der Textgenerierung speichert, wodurch redundante Berechnungen für jedes neue Token vermieden werden.

So funktioniert Inferenz auf Amazon EKS

Auf hoher Ebene umfasst die Bereitstellung eines Inferenz-Workloads auf Amazon EKS die folgenden Schritte:

Schritt Description

Richten Sie den Cluster ein

Erstellen Sie einen EKS-Cluster mit GPU-enabled Knoten, Überwachung und Speicher. Weitere Informationen finden Sie unter Cluster-Setup in AI/ML den EKS-Dokumenten.

Speichern Sie die Gewichte der Modelle

Laden Sie Modellgewichte aus einer Modellregistrierung (z. B. Hugging Face) herunter und speichern Sie sie in Amazon S3, damit das Modell bei Kaltstart- oder Scale-Up-Vorgängen schnell geladen werden kann.

Stellen Sie den Modellserver bereit

Erstellen Sie ein Kubernetes-Deployment, das einen Modellserver (wie vLLM) auf GPU-Knoten ausführt. Der Modellserver streamt Gewichte von S3 in den GPU-Speicher und stellt eine API zur Verfügung. OpenAI-compatible

Machen Sie den Inferenzendpunkt verfügbar

Erstellen Sie einen Kubernetes-Dienst, um einen stabilen Netzwerkendpunkt bereitzustellen. Verwenden Sie Port-Forwarding für Tests oder einen Load Balancer wie AWS Application Load Balancer (ALB) für Produktionsdatenverkehr.

Überwachen und skalieren

Verwenden Sie Prometheus-Metriken (Anforderungsrate, Token-Durchsatz, Latenz, KV-Cache-Auslastung), um die Leistung zu überwachen und Autoscaling zu konfigurieren.

Leistungsmetriken für Inferenzen

Um die Leistung von Inferenzen zu verstehen, müssen Metriken im Hinblick auf Latenz und Durchsatz verfolgt werden:

Latenzmetriken

  • Time to First Token (TTFT) — Zeit vom Eingang der Anfrage bis zum ersten generierten Token. Kritisch für interaktive Anwendungen.

  • Time Per Output Token (TPOT) — Durchschnittliche Zeit für die Generierung jedes nachfolgenden Tokens nach dem ersten.

  • End-to-end Latenz der Anfrage — Gesamtzeit von der Einreichung der Anfrage bis zum Abschluss der vollständigen Antwort.

Kennzahlen zum Durchsatz

  • Anfragen pro Sekunde — Gesamtzahl der Inferenzanfragen, die pro Sekunde über alle Replikate hinweg bedient wurden.

  • Ausgabetokens pro Sekunde — Rate der Token-Generierung, gemessen als Gesamtzahl der ausgegebenen Token geteilt durch die verstrichene Zeit.

  • GPU-Auslastung — Prozentsatz der GPU-Rechenzyklen, die aktiv für Inferenzen verwendet werden.

  • KV-Cache-Auslastung — Prozentsatz des belegten zugewiesenen KV-Cache-Speichers, der angibt, wie nahe der Server an der Kapazität ist.

Verkürzung der Kaltstartzeit

Große Inferenzcontainer (8—15 GB) und Modellgewichte (10—100 GB) können zu einem langsamen Pod-Start führen. Die folgenden Techniken minimieren Verzögerungen beim Kaltstart:

  • SOCI-Parallel-Pull — Lädt Container-Bildebenen gleichzeitig und nicht sequentiell herunter und entpackt sie. Standardmäßig aktiviert im EKS-Automodus für GPU-Instanzen.

  • Model-Streaming von S3 — Tools wie Run:ai Model Streamer streamen Modellgewichte direkt von Amazon S3 in den GPU-Speicher, umgehen die lokale Festplatte und reduzieren die Ladezeit von Minuten auf Sekunden.

  • Bilder in Amazon ECR speichern — Durch das Abrufen von Bildern aus einem regionalen ECR-Repository über einen VPC-Endpunkt wird Internetlatenz bei großen Container-Images vermieden.

  • Caching im Instance-Speicher — G-family Instances mit lokalen NVMe-Festplatten können Container-Ebenen und Modellartefakte zwischenspeichern, wodurch nachfolgende Pulls auf demselben Knoten beschleunigt werden.

Was werden Sie bereitstellen

Die exemplarische Vorgehensweise für das Load & Serve-Modell führt Sie durch die Implementierung einer umfassenden Inferenzanwendung:

  1. Modellgewichte herunterladen — Ein Kubernetes-Job lädt das Ministral-3-8B-Instruct Modell von Hugging Face herunter und lädt es in Ihren S3-Bucket hoch.

  2. vLLM bereitstellen — Bei einer Bereitstellung wird vLLM mit Run:ai Model Streamer ausgeführt, um Gewichtungen von S3 direkt in den GPU-Speicher zu streamen und so eine API bereitzustellen. OpenAI-compatible

  3. Überwachung mit Grafana — A verbindet die vLLM-Prometheus-Metriken mit dem Monitoring-Stack für ServiceMonitor Echtzeit-Dashboards.

  4. Stellen Sie ein Chat-Frontend bereit — Open WebUI bietet eine browserbasierte Chat-Oberfläche, die mit dem vLLM-Endpunkt verbunden ist.

Die exemplarische Vorgehensweise verwendet die Cluster-Infrastruktur aus dem Amazon EKS-Cluster für AI/ML Workloads einrichten Abschnitt und funktioniert sowohl mit dem EKS-Automodus als auch mit selbstverwalteten Karpenter-Pfaden.