In dieser Anleitung erfahren Sie, wie Sie Qwen3.8-2.4T (nvidia/Qwen3.8-2.4T-A95B-NVFP4), ein Mixture-of-Experts-Modell mit 2,4 Billionen Parametern und 95 Milliarden aktiven Parametern, die auf NVFP4 quantisiert sind, in Google Kubernetes Engine (GKE) aufGoogle Cloudbereitstellen und bereitstellen. Für die Bereitstellung werden das Cluster Toolkit, vier Multi-Host-A4-VM-Instanzen (a4-highgpu-8g) mit insgesamt 32 NVIDIA B200-GPUs, NVIDIA Dynamo und das SGLang-Serving-Framework mit Prefill-Decode-Disaggregation (PD) verwendet.
In der in dieser Anleitung beschriebenen Bereitstellungskonfiguration verwenden Sie das Cluster Toolkit, um einen GKE-Cluster im Standardmodus bereitzustellen. Der Cluster enthält vier a4-highgpu-8g-Knoten, die über ein GPUDirect-RDMA-Netzwerk (Remote Direct Memory Access) verbunden sind. Anschließend installieren Sie den KAI-Scheduler und die NVIDIA Dynamo-Plattform mit Grove-Gang-Scheduling und stellen die Modellgewichtungen in Cloud Storage bereit. Als Nächstes stellen Sie eine benutzerdefinierte DynamoGraphDeployment-Ressource bereit, die den Bucket mit Cloud Storage FUSE bereitstellt und Prefill und Decode auf zwei Multi-Host-Worker-Pools mit 16 GPUs mit Tensor-Parallelität, Experten-Parallelität und einem FP8-KV-Cache aufteilt.
Ziele
- Cluster Toolkit installieren und einen GKE-Cluster mit mehreren Hosts im Standardmodus bereitstellen.
- Installieren Sie den KAI-Scheduler und die NVIDIA Dynamo-Plattform mit Grove-Gang-Scheduling auf Ihrem Cluster.
- Stellen Sie die Qwen3.8-2.4T-Modellgewichtungen in einem Cloud Storage-Bucket bereit.
- Stellen Sie einen SGLang-Inferenzserver mit mehreren Hosts und disaggregierten nichtflüchtigen Speichern auf vier A4-Knoten mit insgesamt 32 NVIDIA B200-GPUs bereit.
- Senden Sie eine Anfrage zur Chat-Vervollständigung an den Dynamo-Frontend-Router.
- Führen Sie eine Benchmark-Arbeitslast für die Bereitstellung aus.
- Bereinigen Sie die bereitgestellten Ressourcen.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten vonGoogle Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung Ihrer voraussichtlichen Nutzung vornehmen.
Hinweis
Richten Sie die Umgebung für die Anleitung ein:
- Installieren und initialisieren Sie die Google Cloud CLI und installieren Sie
kubectlund Helm (Version 3.10 oder höher). Wenn Sie Cloud Shell verwenden, sind diese Tools vorinstalliert. - Wenn Sie diese Anleitung auf einer Linux- oder macOS-Workstation statt in Cloud Shell ausführen, installieren Sie die erforderlichen Cluster Toolkit-Abhängigkeiten wie Terraform und Git.
Aktivieren Sie die Kubernetes Engine API, die Compute Engine API, die Cloud Storage API, die Identity and Access Management API, die Cloud Resource Manager API und die Service Usage API in Ihrem Google Cloud -Projekt:
Hugging Face-Zugriffstoken abrufen
Für diese Anleitung benötigen Sie ein Hugging Face-Zugriffstoken. Sie können sich bei Hugging Face für ein kostenloses Konto registrieren. Nachdem Sie ein Konto erstellt haben, generieren Sie ein Zugriffstoken:
- Klicken Sie auf der Seite Willkommen bei Hugging Face auf Ihren Konto-Avatar und wählen Sie Zugriffstokens aus.
- Klicken Sie auf der Seite Zugriffstokens auf Neues Token erstellen.
- Wählen Sie den Tokentyp Lesen aus und geben Sie einen Namen für das Token ein.
- Ihr Zugriffstoken wird angezeigt. Speichern Sie das Token an einem sicheren Ort.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen dieser Anleitung benötigen:
- Kubernetes Engine-Administrator (
roles/container.admin) - Compute-Administrator (
roles/compute.admin) - Storage-Administrator (
roles/storage.admin) - Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin) - Service Account Admin (
roles/iam.serviceAccountAdmin) - Service Account User (
roles/iam.serviceAccountUser) - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Umgebungsvariablen einrichten
Exportieren Sie die Umgebungsvariablen, die Sie in dieser Anleitung verwenden:
Ersetzen Sie Folgendes:
YOUR_PROJECT_ID: die ID Ihres Projekts in Google Cloud.YOUR_REGION: die Region, in der sich Ihre A4-Kapazität befindet und in der Sie Ihren Cluster bereitstellen möchten, z. B.us-central1.YOUR_ZONE: die Zone, in der sich Ihre A4-Kapazität befindet, z. B.us-central1-b.YOUR_CLUSTER_NAME: der Name für Ihren GKE-Cluster und die Cluster Toolkit-Bereitstellung. Verwenden Sie einen Namen mit maximal 20 Zeichen, damit die generierte Dienstkonto-ID des Knotenpools (YOUR_CLUSTER_NAME-gke-np-sa) innerhalb des IAM-Limits (Identity and Access Management) von 30 Zeichen bleibt.YOUR_RESERVATION_NAME: der Name Ihrer A4-Reservierung oder der Pfad des erweiterten Reservierungsblocks im FormatRESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME.YOUR_BUCKET_NAME: ein global eindeutiger Name für den Cloud Storage-Bucket, in dem der Terraform-Status für das Cluster Toolkit und die bereitgestellten Qwen3.8-2.4T-Modellgewichtungen gespeichert werden.YOUR_HF_TOKEN: Ihr Hugging Face-Zugriffstoken.
GKE-Cluster erstellen
Laden Sie das Cluster Toolkit herunter und stellen Sie einen GKE-Cluster im Standardmodus mit vier a4-highgpu-8g-Knoten, GPUDirect RDMA-Netzwerk und DRA-Unterstützung bereit:
Melden Sie sich in der Google Cloud CLI an und generieren Sie Standardanmeldedaten für Anwendungen für Terraform:
Laden Sie das vordefinierte Cluster Toolkit-Bundle für die in
CLUSTER_TOOLKIT_VERSION(v1.104.0) angegebene Version herunter und extrahieren Sie es:Wenn Sie diesen Befehl unter macOS oder auf einer
arm64-Workstation ausführen, legen SieOS="mac"oderARCH="arm64"entsprechend Ihrer Plattform fest.Erstellen Sie einen Cloud Storage-Bucket in derselben Region wie Ihre A4-Reservierung mit einheitlichem Zugriff auf Bucket-Ebene und aktivierter Objektversionsverwaltung, um den Terraform-Zustand für Ihre Cluster Toolkit-Bereitstellung und die bereitgestellten Modellgewichtungen zu speichern:
Erstellen Sie die Bereitstellungskonfigurationsdatei
cluster-toolkit/examples/gke-a4/gke-a4-deployment.yamlfür viera4-highgpu-8g-Knoten:Standardmäßig ist die Bereitstellungsdatei so konfiguriert, dass eine bestimmte Reservierung genutzt wird. Wenn Sie keine bestimmte Reservierung haben, können Sie vor dem Bereitstellen des Clusters
cluster-toolkit/examples/gke-a4/gke-a4-deployment.yamlaktualisieren, um eine alternative Nutzungsoption wie Spot-VMs oder Flex-Start-VMs zu verwenden. Eine Konfigurationsanleitung finden Sie unter GKE-Nutzungsoptionen.Wechseln Sie in das Verzeichnis
cluster-toolkit, stellen Sie den GKE-Cluster mit dem Befehlgcluster deploybereit und kehren Sie dann zu Ihrem Arbeitsverzeichnis zurück:Die Erstellung eines Clusters dauert etwa 20 bis 30 Minuten. Wenn Sie
./gcluster deployohne das Flag--auto-approveausführen, geben Sieaein, wenn Sie dazu aufgefordert werden, um die vorgeschlagenen Änderungen anzuwenden.Konfigurieren Sie
kubectl-Anmeldedaten für die Kommunikation mit Ihrem Cluster:
KAI Scheduler und NVIDIA Dynamo installieren
Bereiten Sie Ihren Cluster vor, indem Sie ein Hugging Face-Secret erstellen und den KAI-Scheduler und die NVIDIA Dynamo-Plattform mit Grove-Gang-Scheduling installieren:
Erstellen Sie ein Kubernetes-Secret mit dem Namen
hf-secret, um Ihr Hugging Face-Zugriffstoken zu speichern:Laden Sie das Helm-Diagramm für die NVIDIA Dynamo-Plattform (
v1.5.0) herunter, installieren Sie den KAI-Scheduler und installieren Sie die Dynamo-Plattform mit aktiviertem Grove:
Modellgewichtungen in Cloud Storage bereitstellen
Stellen Sie den nvidia/Qwen3.8-2.4T-A95B-NVFP4-Prüfpunkt in Ihrem Cloud Storage-Bucket (gs://${GCS_BUCKET}) in der Region bereit, damit die Inferenz-Worker-Pods die Gewichtungen mit Cloud Storage FUSE bereitstellen können, anstatt sie bei jedem Kaltstart von Hugging Face herunterzuladen:
Weisen Sie dem Google-Dienstkonto, das an das Kubernetes-Dienstkonto
workload-identity-k8s-sagebunden ist, die Rolle „Storage-Objekt-Nutzer“ (roles/storage.objectUser) für den Bucketgs://${GCS_BUCKET}zu, den Sie unter GKE-Cluster erstellen erstellt haben:Laden Sie die Manifeste
qwen3.8-2.4t-nvfp4-stage-weights-job.yamlundqwen3.8-2.4t-nvfp4-multihost-a4-gcsfuse.yamlherunter:Alternativ können Sie eine Datei mit dem Namen
qwen3.8-2.4t-nvfp4-stage-weights-job.yamlund dem folgenden Inhalt erstellen. Dieser indexierte Job führt vier parallele Pods auf Ihren vier A4-Knoten aus. Jeder Pod lädt einen größenmäßig ausgewogenen Teil desnvidia/Qwen3.8-2.4T-A95B-NVFP4-Prüfpunkts auf die lokale NVMe-SSD des Knotens herunter und lädt ihn mitgcloud storage rsyncings://${GCS_BUCKET}/hf_models/models--nvidia--qwen3_8-2_4t-a95b-nvfp4hoch:Ersetzen Sie
qwen3.8-2.4t-nvfp4-stage-weights-job.yamldurch den Namen Ihres Cloud Storage-Bucket, starten Sie den Staging-Job, warten Sie, bis alle vier Pods die Gewichtungen hochgeladen haben, und löschen Sie dann den abgeschlossenen Job:Das Herunterladen der Modellgewichtungen auf die lokale NVMe-SSD und das Hochladen in Cloud Storage dauert etwa 25 Minuten.
Optional: Während der Staging-Job ausgeführt wird, können Sie die Logs eines Staging-Pods in einer zweiten Terminalsitzung streamen, um den Downloadfortschritt zu überwachen:
Ersetzen Sie
YOUR_POD_NAMEdurch den Namen eines derqwen3-8-2-4t-stage-weights-Pods auskubectl get pods.
Disaggregierten SGLang-Server mit mehreren Hosts bereitstellen
Das Arbeitslastmanifest (qwen3.8-2.4t-nvfp4-multihost-a4-gcsfuse.yaml) definiert ein Kubernetes-ResourceClaimTemplate (all-mrdma), das die Multi-NIC-RDMA-Geräte (mrdma.google.com) des Knotens über DRA, Role- und RoleBinding-Ressourcen für das Dienstkonto workload-identity-k8s-sa und ein NVIDIA Dynamo DynamoGraphDeployment (qwen3-8-2-4t-a4-disagg) mit aktiviertem Grove-Gang-Scheduling zuweist. Die Bereitstellung umfasst Folgendes:
Frontend (
Frontend): Führt ein Router-Replikat aus, das Clientanfragen akzeptiert, registrierte Prefill- und Decodierungs-Worker erkennt und das disaggregierte Anfragerouting koordiniert.Prefill-Worker (
Prefill): Führt einen Worker-Pool mit zwei Knoten auf zweia4-highgpu-8g-Knoten mit insgesamt 16 NVIDIA B200-GPUs aus. Jeder Pod stellt die bereitgestelltennvidia/Qwen3.8-2.4T-A95B-NVFP4-Gewichtungen aus Ihrem Cloud Storage-Bucket unter/model-weightsbereit. Dazu wird der Cloud Storage FUSE-CSI-Treiber (gcsfuse.csi.storage.gke.io) mit lokalem NVMe-SSD-Dateicaching verwendet, die NCCL/gIB-Umgebung wird als Quelle verwendet undpython3 -m dynamo.sglangwird in--disaggregation-mode prefillmit den folgenden Flags gestartet:--served-model-name "nvidia/Qwen3.8-2.4T-A95B-NVFP4"--tensor-parallel-size 16--ep-size 16--nnodes 2--moe-runner-backend flashinfer_trtllm--attention-backend triton--kv-cache-dtype fp8_e4m3--disable-flashinfer-autotune
Decode-Worker (
Decode): Führt einen Worker-Pool mit zwei Knoten auf den verbleibenden beidena4-highgpu-8g-Knoten mit insgesamt 16 NVIDIA B200-GPUs aus. Jeder Pod stellt die bereitgestellten Modellgewichtungen aus Cloud Storage unter/model-weightsüber den Cloud Storage FUSE-CSI-Treiber bereit und startetpython3 -m dynamo.sglangin--disaggregation-mode decodemit den folgenden Flags:--served-model-name "nvidia/Qwen3.8-2.4T-A95B-NVFP4"--tensor-parallel-size 16--ep-size 16--nnodes 2--moe-runner-backend flashinfer_trtllm--attention-backend triton--kv-cache-dtype fp8_e4m3
Disaggregierten Inferenzserver bereitstellen und überwachen:
Sehen Sie sich das zuvor heruntergeladene Arbeitslastmanifest
qwen3.8-2.4t-nvfp4-multihost-a4-gcsfuse.yamlan oder erstellen Sie eine Datei mit dem Namenqwen3.8-2.4t-nvfp4-multihost-a4-gcsfuse.yamlund folgendem Inhalt:Ersetzen Sie
qwen3.8-2.4t-nvfp4-multihost-a4-gcsfuse.yamldurch den Namen Ihres Cloud Storage-Bucket und wenden Sie das Arbeitslastmanifest auf Ihren Cluster an:Wenn Sie das Laden der Gewichtungen und die Serverinitialisierung überwachen möchten, listen Sie die Pods in Ihrem Cluster auf und streamen Sie die Logs des Prefill-Leader-Pods und des Decode-Leader-Pods:
Ersetzen Sie
YOUR_POD_NAMEdurch den Namen des Prefill-Leader-Pods oder des Decode-Leader-Pods aus der Ausgabe vonkubectl get pods.Bei einem Kaltstart dauert es etwa 4 bis 5 Minuten, die 2.400.000.000.000 NVFP4-Modellgewichtungen (~1,44 TB über 200 Shards) von Cloud Storage über Cloud Storage FUSE zu streamen und die SGLang-Server mit mehreren Hosts zu initialisieren. Warten Sie, bis die Frontend-Pods
1/1und die Prefill- und Decode-Pods2/2in der SpalteREADYvonkubectl get podsanzeigen, bevor Sie Anfragen senden:NAME READY STATUS RESTARTS AGE qwen3-8-2-4t-a4-disagg-0-decode-0-decode-ldr-wz92h 2/2 Running 0 5m qwen3-8-2-4t-a4-disagg-0-decode-0-decode-wkr-fb8g6 2/2 Running 0 5m qwen3-8-2-4t-a4-disagg-0-frontend-jrx4s 1/1 Running 0 5m qwen3-8-2-4t-a4-disagg-0-prefill-0-prefill-ldr-7nz25 2/2 Running 0 5m qwen3-8-2-4t-a4-disagg-0-prefill-0-prefill-wkr-7d5cw 2/2 Running 0 5m
Inferenzanfragen senden
Senden Sie eine Anfrage zur Chat-Vervollständigung an den bereitgestellten Qwen3.8-2.4T-Dienst:
Leiten Sie den lokalen Port
8000an den Dienstqwen3-8-2-4t-a4-disagg-frontendweiter:Lassen Sie die Portweiterleitung in dieser Terminalsitzung laufen oder führen Sie den Befehl im Hintergrund aus.
Senden Sie in einer zweiten Terminalsitzung eine Anfrage zur Chat-Vervollständigung an den Endpunkt
/v1/chat/completions:
Benchmark-Arbeitslast ausführen
Führen Sie einen Benchmark für den bereitgestellten Qwen3.8-2.4T-Server über den Dynamo-Frontend-Pod mit sglang.bench_serving und einer Konfiguration von 1.024 Eingabe-Tokens, 1.024 Ausgabe-Tokens (1k/1k), 256 Prompts und einer maximalen Nebenläufigkeit von 128 aus:
Suchen Sie nach Abschluss des Benchmarks nach einer Ausgabe, die Messwerte wie die folgenden enthält:
Output token throughputTotal Token throughputTTFTTPOT
Bereinigen
So vermeiden Sie, dass Ihrem Google Cloud -Konto die in dieser Anleitung verwendeten Ressourcen laufend in Rechnung gestellt werden: Löschen Sie die Kubernetes-Arbeitslasten, den GKE-Cluster und den Cloud Storage-Bucket:
Löschen Sie die Ressourcen „DynamoGraphDeployment“ und „ResourceClaimTemplate“:
Deinstallieren Sie die NVIDIA Dynamo-Plattform und die KAI Scheduler Helm-Releases:
Löschen Sie das Hugging Face-Kubernetes-Secret:
Löschen Sie im Verzeichnis
cluster-toolkitden GKE-Cluster und die zugehörige Infrastruktur mit dem Befehlgcluster destroy:Löschen Sie den Cloud Storage-Bucket, in dem die bereitgestellten Modellgewichtungen und der Terraform-Status gespeichert sind:
gcloud storage rm --recursive "gs://${GCS_BUCKET}"