Bearbeiten

Freigeben über


Verwenden des Azure Kubernetes Service zum Hosten von GPU-basierten Workloads

Azure Kubernetes Service (AKS)

Dieser Artikel beschreibt, wie Sie Workloads, die GPU-Knoten verwenden, effizient in einem Azure Kubernetes Service (AKS)-Cluster ausführen können. Hier erfahren Sie, wie Sie die richtige SKU auswählen und GPU-Knoten zum Trainieren von Machine Learning-Modellen sowie für Rückschlüsse in AKS verwenden.

Szenarien

Die Ausführung von GPU-Workloads kann kostspielig sein. Um unnötige Kosten zu vermeiden, sollten Sie wissen, wann Sie GPU-basierte Knoten in Ihren AKS-Clustern bereitstellen sollten.

GPUs sind speziell für Grafiken, KI, maschinelles Lernen und spezielle Aufgaben konzipiert und damit ideal für rechenintensive Workloads. CPUs verwalten komplexe Logik und Verzweigungen auf effektive Weise. GPUs sind für Durchsatz optimiert. Sie können einfache Rechenvorgänge und Vektoroperationen effizient verarbeiten.

Um herauszufinden, wann Sie GPUs für AKS-Workloads verwenden sollten, müssen Sie die GPU-Optimierung und Rechenintensität verstehen, sollten aber auch andere Faktoren berücksichtigen. Um einen besseren Einblick in die GPU-Nutzung für AKS-Workloads zu erhalten, sollten Sie sich die folgenden Beispiele für Workloads ansehen, in denen GPU-Knoten in einem AKS-Cluster genutzt werden.

Data Science und Analysen

Durch die Verwendung von GPUs können Sie Datenvorverarbeitung, Feature Engineering und Modelltraining in Data Science-Workflows beschleunigen. Für eine effiziente Nutzung von GPUs erweitern Frameworks wie RAPIDS und Dask GPU gängige Datenverarbeitungsbibliotheken wie Pandas und Scikit-learn.

Durch Open-Source-Software (OSS) beschleunigte SQL-Abfragemodule und spaltenorientierte Datenbanken wie BlazingSQL und HeavyDB verwenden GPUs für eine schnelle Durchführung von Abfragen und Analysen von großen Datasets.

Machine Learning und Deep Learning

Gängige Machine Learning- und Deep Learning-Frameworks wie TensorFlow und PyTorch profitieren von GPUs, da diese das Training und Rückschlussaufgaben beschleunigen können.

Deep Learning-Modelle verfügen über komplexe neuronale Netze. Durch die parallele Verarbeitung in GPUs können die Berechnungen des Modells beschleunigt werden. GPUs bieten hocheffiziente Matrixmultiplikation und Konvolutionen, die Kernvorgänge im Deep Learning.

Mithilfe von GPUs können Sie auch Aufgaben wie die Bildklassifizierung, Objekterkennung, linguistische Datenverarbeitung und Spracherkennung beschleunigen.

Maschinelles Sehen und Bildverarbeitung

Bei Aufgaben des maschinellen Sehens werden visuelle Daten interpretiert, um aussagekräftige Informationen zu extrahieren. Diese Aufgaben sind in KI-gestützten Anwendungen, autonomen Fahrzeugen, der medizinischen Bildgebung, Überwachungssystemen und im Bereich Augmented Reality immer häufiger anzutreffen. GPUs nutzen eine Parallelverarbeitung und können somit umfangreiche Bilddaten und komplexe Berechnungen für Aufgaben wie Objekterkennung, Bildklassifizierung und Featureextraktion effizient verarbeiten.

Videoverarbeitung und -streaming

Videos kommen in Unternehmen immer mehr zum Einsatz. Daher benötigen Unternehmen GPU-gestützte Hardware anstelle von CPUs. Videoverarbeitungsworkloads, einschließlich Transcodierung, Codierung und Streaming, sind rechenintensiv, insbesondere Workloads mit HD- oder 4K-Inhalten. GPUs bieten eine effiziente Plattform, die leistungsstarke, latenzarme Videoerlebnisse für verschiedene Anwendungen, z. B. das Streaming von Sportereignissen oder Unternehmensvideos, bietet.

GPU-fähige Agentknoten bieten ein umfassendes Kundenerlebnis in Virtual Desktop-Umgebungen, da sie grafikintensive Aufgaben auf die GPU auslagern. GPU-beschleunigte Videocodierungs- und -decodierungsfunktionen ermöglichen eine Verbesserung von Echtzeit-Videostreaming, Videotranscodierung und Videoanalysen.

Zur Beschleunigung von Aufgaben des maschinellen Sehens wie Objekterkennung, Objektverfolgung und Bild- oder Videoverarbeitung können Sie Frameworks wie OpenCV, OpenCL, NVIDIA CUDA und NVIDIA cuDNN verwenden.

Gamingplattformen und Cloudgamingdienste stützen sich auf GPUs, um hochwertige Grafiken und reibungslose Spielerlebnisse zu bieten.

High-Performance Computing

HPC-Anwendungen (High-Performance Computing) erfordern häufig komplexe Simulationen, numerische Analysen und wissenschaftliche Berechnungen. Für eine schnelle Ausführung dieser Aufgaben können Sie GPUs verwenden, um die Workload über mehrere Kerne zu parallelisieren. Beispiele für HPC-Anwendungen, die eine enorme Parallelverarbeitungsleistung benötigen, sind wissenschaftliche Simulationen, Wettervorhersagen, numerische Strömungsmechanik und molekulare Modellierung. GPUs sind ideal für parallele Berechnungen und können HPC-Workloads erheblich beschleunigen. Wissenschaftliche und forschungsorientierte Initiativen profitieren von GPUs.

Zur Beschleunigung von HPC-Anwendungen bieten Frameworks wie NVIDIA CUDA, OpenCL und OpenACC GPU-fähige APIs und Bibliotheken.

Genomanalyse und Bioinformatik

Workloads im Gesundheitswesen und in den Biowissenschaften, wie Genomanalyse- und Bioinformatikanwendungen, kommen immer mehr zum Einsatz. Diese Workloads umfassen die Verarbeitung von genetischen Daten, wie z. B. DNA-Sequenzen und Proteinstrukturen, und erfordern komplexe Algorithmen für Sequenzalignment, Variantenaufrufe und genomisches Data Mining. GPUs beschleunigen die Genomanalyseworkflows, sodass Forscher Daten schneller verarbeiten und schneller Erkenntnisse gewinnen können.

Vor der Bereitstellung von GPU-Knoten in AKS-Clustern sollten Sie die Auswirkungen auf die Kosten berücksichtigen. Machen Sie sich mit der GPU-Optimierung für rechenintensive Aufgaben wie maschinelles Sehen, Videoverarbeitung, HPC und Genomanalyseaufgaben vertraut. Berücksichtigen Sie diese Faktoren beim Vergleich von GPU-Ressourcen mit CPU-Ressourcen in AKS-Clustern.

Generative KI-Modelle

Large Language Models (LLMs) wie OpenAI GPT, Meta Llama, Falcon oder Mistral können die Möglichkeiten der GPU zur Parallelverarbeitung nutzen. Verwenden Sie GPUs bei diesen Modellen, um die Leistung zu verbessern.

Bei Verwendung von GPUs können Trainings- und Rückschlussaufgaben, die komplexe Berechnungen und große Datenmengen umfassen, schneller ausgeführt werden. GPUs verfügen über Parallelverarbeitungsfunktionen, die die großen Rechenaufgaben eines bestimmten Modells in kleinere Teilvorgänge unterteilen, die gleichzeitig ausgeführt werden. Dieses Vorgehen liefert schnelle Ergebnisse und verbessert die Leistung.

Sprachmodelle verfügen häufig über komplexe neuronale Netze mit mehreren Ebenen und Parametern, wodurch der Rechenbedarf erhöht sein kann. GPUs beschleunigen wichtige Vorgänge in der Sprachverarbeitung, wie z. B. die Matrixmultiplikation und Konvolutionen. Dadurch sind kürzere Trainings- und Rückschlusszeiten möglich.

GPUs bieten ausreichende Arbeitsspeicherkapazität, Bandbreite und Verarbeitungsleistung, um LLM-basierte Anwendungen mit Konversationsschnittstellen und Textgenerierung zu verarbeiten. GPU-Verbesserungen sorgen beispielsweise für schnelle Reaktionszeiten, wenn Benutzer mit Chatbots und KI-Assistenten interagieren.

Nicht alle Workloads profitieren von GPU-fähigen Agentknoten, und in einigen Fällen sind CPUs ausreichend. Bei Workloads, die in erster Linie eingabe- und ausgabegebunden sind oder keine umfangreichen Berechnungen erfordern, lassen sich mit GPUs möglicherweise keine Verbesserungen erzielen.

Kundenstimmen

Viele Microsoft-Kunden nutzen GPU-Workloads für Innovationen für ihre Kunden. Betrachten Sie die folgenden Beispiele:

Best Practices für die Bereitstellung von GPU-Workloads

AKS bietet verschiedene Optionen zum Bereitstellen von GPU-fähigen Linux- und Windows-Knotenpools und -Workloads. Halten Sie sich an diese Best Practices, um einen reibungslosen Betrieb Ihrer GPU-Workload sicherzustellen.

Bereitstellung von Linux-Workloads

Bereitstellung von Windows-Workloads

  • Erstellen Sie einen Knotenpool mit einer unterstützten GPU-fähigen VM, um GPU-fähige Windows-Knotenpools bereitzustellen. AKS installiert automatisch die Treiber und die erforderlichen NVIDIA-Komponenten. Diese Methode unterstützt das Aktualisieren eines vorhandenen Knotenpools zum Hinzufügen von GPUs nicht.

    Wenn Sie eine unterstützte GPU-fähige VM auswählen, installiert AKS automatisch den entsprechenden NVIDIA CUDA- oder GRID-Treiber. Einige Workloads sind von einem bestimmten Treiber abhängig. Dies kann sich auf Ihre Bereitstellung auswirken. Für VM-Größen der NC- und ND-Serie installiert AKS den CUDA-Treiber. Für VM-Größen der NV-Serie installiert AKS den GRID-Treiber.

  • Sehen Sie sich die unterstützten GPU-fähigen VMs in Azure an. Wir empfehlen Ihnen, eine Mindestgröße von Standard_NC6s_v3 für AKS-Knotenpools zu verwenden. AKS unterstützt die auf AMD-GPUs basierende NVv4-Serie nicht.

  • Machen Sie sich die Einschränkungen bei Verwendung eines Windows-Knotenpools bewusst. Kubernetes-Version 1.28 und frühere Versionen unterstützen Windows-GPUs nicht.

  • Verwenden Sie Kubernetes-Knotenselektoren, Knotenaffinität, Taints und Toleranzen, wenn Sie Workloads für Ihre GPU-fähigen Knotenpools planen.

Hinweis

Windows GPU ist eine Previewfunktion. Sie müssen das Funktionsflag WindowsGPUPreview registrieren.

NVIDIA GPU-Operator

Der NVIDIA GPU-Operator ist ein Tool, mit dem Sie GPU-Ressourcen innerhalb von Kubernetes-Clustern effizient bereitstellen und verwalten können. Mithilfe des Operators können Sie die Installation, Konfiguration und Wartung von Softwarekomponenten automatisieren. Dieses Vorgehen ermöglicht eine optimale Verwendung von NVIDIA-GPUs für anspruchsvolle Workloads wie KI- und Machine Learning-Workloads.

Der NVIDIA GPU-Operator verwaltet automatisch alle NVIDIA-Softwarekomponenten, die Sie für die Bereitstellung von GPUs benötigen, z. B. das NVIDIA-Geräte-Plug-In für Kubernetes und die NVIDIA-Container-Runtime. Der Operator installiert den Treiber automatisch. Weitere Informationen finden Sie in der Übersicht über NVIDIA.

Wenn Sie mehr Kontrolle und größere Flexibilität für erweiterte GPU-Workloads wünschen, können Sie den NVIDIA GPU-Operator mit Ihren GPU-fähigen Knoten in AKS verwenden. Der NVIDIA GPU-Operator unterstützt Windows-GPUs nicht.

Berücksichtigen Sie die folgenden bewährten Methoden:

  • Verwenden Sie den NVIDIA GPU-Operator, um erweiterte GPU-Konfigurationen wie die Auswahl der Treiberversion und Time-Slicing durchzuführen.

  • Überspringen Sie die automatische Treiberinstallation, bevor Sie den GPU-Operator verwenden.

  • Legen Sie als Mindestanzahl 1 fest, wenn Sie den GPU-Operator mit der automatischen Clusterskalierung verwenden.

Hinweis

Microsoft unterstützt oder verwaltet die Wartung und Kompatibilität der NVIDIA-Treiber im Rahmen der Knotenimagebereitstellung nicht, wenn Sie den GPU-Operator verwenden.

Bereitstellung von GPU-Workloads für LLMs

Der Kubernetes KI-Toolchain Operator (KAITO, KI-Toolchain-Betreiber) ist ein Kubernetes-Operator, der die Ausführung von Open-Source-LLMs wie Falcon und Llama2 in Ihrem Kubernetes-Cluster vereinfacht. Sie können KAITO in Ihrem AKS-Cluster als verwaltetes Add-On für AKS bereitstellen. KAITO verwendet Karpenter für die automatische Bereitstellung von GPU-Knoten basierend auf einer Spezifikation in der benutzerdefinierten Arbeitsbereichsressourcendefinition Ihres ausgewählten Modells. KAITO erstellt den Rückschlussserver als Endpunkt für Ihr LLM und reduziert die gesamte Onboardingzeit, sodass Sie Machine Learning Operations durchführen können, anstatt die Infrastruktur einrichten und warten zu müssen.

Zur Verbesserung von Machine Learning Operations bietet KAITO die folgenden Funktionen:

  • Verwaltung von Containerimages: Verwenden Sie Containerimages zum Verwalten von LLMs. KAITO stellt einen HTTP-Server bereit, sodass Sie für Rückschlussaufrufe eine unterstützte Modellbibliothek verwenden können.

  • GPU-Hardwarekonfiguration: KAITO stellt voreingestellte Konfigurationen bereit, die basierend auf den Modellanforderungen automatisch angewendet werden. Sie müssen die Bereitstellungsparameter nicht manuell an die GPU-Hardware anpassen.

  • Automatische Bereitstellung von GPU-Knoten: KAITO stellt GPU-Knoten automatisch basierend auf Modellanforderungen bereit und empfiehlt kostengünstigere GPU-VM-Größen für die Konfiguration verteilter Rückschlüsse.

  • Integration mit Microsoft-Artefaktregistrierung: Wenn Ihre LLM-Lizenz dies zulässt, kann KAITO Modellimages in der öffentlichen Artefaktregistrierung hosten. Diese Methode vereinfacht den Zugriff auf unterstützte Modelle sowie deren Bereitstellung. Für Open-Source-Modelle mit MIT- oder Apache2-Lizenzen, die das KAITO-Repository nicht unterstützt, können Sie eine Anforderung für das Onboarding eines neuen Modells einreichen.

Weitere Informationen zu KAITO finden Sie in den folgenden Ressourcen:

Workload- und Clusterskalierung

Für KI- und Machine Learning-Szenarien müssen Sie zwischen dem Training von Workloads und dem Rückschließen mit vortrainierten Modellen unterscheiden. Zum Erstellen und Trainieren Ihres Machine Learning-Modells sollten Sie die Verwendung von GPU-Compute in Betracht ziehen, das für Deep Learning und die Parallelisierung von KI-Berechnungen ausgelegt ist. Für das Training ist häufig eine schrittweise Skalierung und die Verteilung großer Datenmengen auf GPUs notwendig, um eine hohe Genauigkeit mit Datenparallelität zu erzielen.

Modellsharding ist eine gängige erweiterte Technik, mit der Sie Phasen des Modelltrainings aufteilen können. Sie können GPUs bestimmten Aufgaben zuweisen und ihre Nutzung maximieren. GPUs können HPC-Workloads wie VMs der NV-Serie oder der ND-Serie in Azure hochskalieren und horizontal skalieren. Diese Funktion hilft, eine hohe Ressourcenauslastung aufrechtzuerhalten und Benutzereingriffe bei langwierigen und kostspieligen Machine Learning-Trainingsprozessen zu reduzieren.

Alternativ können Sie vortrainierte Open-Source-KI- und Machine Learning-Modelle nur für Rückschlüsse verwenden. Beginnen Sie mit gängigen Modellen wie Llama, Falcon oder Mistral als schnellere und kostengünstigere Option im Vergleich zum von Grund auf neuen Erstellen und Trainieren eines LLM. Weitere Informationen finden Sie unter Sprachemodelle in AKS.

Wenn Sie vortrainierte Modelle für Rückschlüsse verwenden, kann es je nach Umfang der verarbeiteten Daten zu einer dynamischen und schwankenden Ressourcennutzung kommen. Wenn Sie Livedaten über das von Ihnen ausgewählte Modell ausführen, treten je nach Modellgröße und -anforderungen manchmal Datenverkehrsspitzen auf. Während des gesamten Rückschlussprozesses müssen Sie eine akzeptable, niedrige Latenz aufrechterhalten. Um Ihre GPUs effektiv zu nutzen und so eine hohe Leistung und niedrige Latenz zu erzielen, können Sie verteilte Rückschlüsse mit den von KAITO unterstützten Modellen durchführen. Dieser Ansatz erweitert Ihre Computeoptionen um SKUs mit geringerer GPU-Anzahl, die jeweils über eine oder zwei GPUs verfügen, bietet eine hohe Verfügbarkeit über Azure-Regionen hinweg und senkt die Wartungskosten.

Kostenmanagement für GPU-Workloads

GPUs können die Kosten erhöhen. Überwachen Sie Ihre Workloads ordnungsgemäß, um zu verstehen, wodurch die GPU-Kosten steigen, und um Optimierungsmöglichkeiten zu identifizieren. Für eine bessere Kostentransparenz können Sie das Add-On für die AKS-Kostenanalyse verwenden.

In den folgenden Szenarien ist Kostentransparenz hilfreich.

Kosten für GPU-fähige VM-Größen

Wählen Sie die richtige GPU-fähige VM-Größe aus, um die Kosten für die Ausführung von GPUs zu optimieren. Die täglichen Kosten können je nach ausgewählter VM-Größe variieren. A100-GPUs sind kostspielig. Diese GPUs sollten Sie nur bei bestimmten Anforderungen Ihrer Workload verwenden. Die AKS-Kostenanalyse zeigt die täglichen Kosten für jede Ihrer VMs mit einer Aufschlüsselung der zugehörigen Kosten für jede Workload, die auf der GPU-fähigen VM ausgeführt wird. Anhand dieser Daten können Sie beurteilen, ob Sie über eine geeignete VM-Größe verfügen oder eine kostengünstigere Option benötigen.

Leerlaufkosten

Nach Erstellen eines GPU-fähigen Knotenpools entstehen Ihnen Kosten für die Azure-Ressource, auch wenn Sie keine GPU-Workload ausführen. Leerlaufkosten sind die Kosten für die verfügbare Ressourcenkapazität, die nicht von Workloads genutzt wird. Bei mehreren nicht verwendeten Knoten summieren sich diese Kosten schnell. Um hohe Leerlaufkosten zu vermeiden, sollten Sie Knotenpools nur erstellen, wenn Sie Ihre Workload ausführen, und Methoden wie das Feature zum Beenden von Clustern nutzen, wenn Sie Ihre Workload nicht ausführen. Die AKS-Kostenanalyse zeigt die Leerlaufkosten für jeden Ihrer Knoten.

Überbereitstellung und unzureichende Nutzung

Zu einer Überbereitstellung kommt es, wenn Sie mehr Ressourcen zuordnen, als für einen Pod erforderlich sind. Eine Überbereitstellung führt zu einer Verschwendung von Ressourcen und zu einer unzureichenden Nutzung. Die überschüssigen Ressourcen bleiben für den Knoten reserviert, auch wenn Sie sie nicht verwenden. Verwenden Sie zur Verringerung der Überbereitstellung die automatische vertikale Pod-Skalierung, um präzise Anforderungen und Grenzwerte basierend auf vorherigen Verwendungsmustern festzulegen.

Zu einer unzureichenden Nutzung kann es kommen, wenn Ihre Workloads die GPUs nicht vollständig nutzen. Erwägen Sie die Verwendung von erweiterten Techniken für die GPU-Freigabe und Partitionierung. Anstatt mehrere Knoten zu verwenden, könnten Sie einen einzelnen Knoten mit Partitionierung verwenden, um die GPU-Nutzung zu maximieren. Diese Techniken können Ihnen helfen, eine geeignete GPU-Beschleunigung für jede Workload zuzuweisen. Dies kann die Auslastung verbessern und die Betriebskosten der Bereitstellung senken.

Linux-GPU-Workloadbereitstellungen in AKS unterstützen GPUs mit mehreren Instanzen. Verwenden Sie dieses Feature, um eine NVIDIA A100-GPU in bis zu sieben unabhängige Instanzen zu partitionieren. Jede Instanz verfügt über ihren eigenen Arbeitsspeicher und Stream Multiprocessor.

NVIDIA unterstützt andere Partitionierungstechniken, z. B. Time-Slicing und die Multi-Process Service-Implementierung. Um diese Konfigurationen manuell anzuwenden, verwenden Sie den NVIDIA GPU-Operator.

Für erweiterte Szenarien können Sie das Resource Bin Packing auf Ihren Knoten verbessern. Sie können Schedulerkonfigurationen festlegen und einen zweiten Scheduler ausführen. Konfigurieren und verwalten Sie einen sekundären Scheduler, um Strategien für die Platzierung von Workloads zu verwenden, die von denen des standardmäßigen AKS-Schedulers abweichen. Weitere Informationen finden Sie unter Konfigurieren von mehreren Schedulern in Kubernetes.

Beitragende

Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:

Hauptautor:

Andere Mitwirkende:

Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.

Nächste Schritte