Questo tutorial mostra come eseguire il deployment e l'addestramento di Qwen3.8-2.4T (nvidia/Qwen3.8-2.4T-A95B-NVFP4), un modello Mixture of Experts con 2400 miliardi di parametri e 95 miliardi di parametri attivi quantizzati in NVFP4, su Google Kubernetes Engine (GKE) suGoogle Cloud. Il deployment utilizza Cluster Toolkit, quattro istanze di macchine virtuali (VM) A4 (a4-highgpu-8g) multi-host con un totale di 32 GPU NVIDIA B200, NVIDIA Dynamo e il framework di distribuzione SGLang con disaggregazione prefill-decode (DP).
Nella configurazione del deployment descritta in questo tutorial, utilizzi Cluster Toolkit per eseguire il provisioning di un cluster GKE in modalità Standard. Il cluster contiene quattro nodi a4-highgpu-8g connessi tramite rete GPUDirect accesso diretto alla memoria da remoto (RDMA). Poi, installi la piattaforma KAI Scheduler e NVIDIA Dynamo con la pianificazione di gruppo Grove e metti in gestione temporanea i pesi del modello in Cloud Storage. Successivamente, esegui il deployment di una risorsa personalizzata DynamoGraphDeployment che monta il bucket con Cloud Storage FUSE e separa il pre-riempimento e la decodifica in due pool di worker multi-host con 16 GPU con parallelismo dei tensori, parallelismo degli esperti e una cache KV FP8.
Obiettivi
- Installa Cluster Toolkit ed esegui il provisioning di un cluster GKE A4 multi-host in modalità Standard.
- Installa KAI Scheduler e la piattaforma NVIDIA Dynamo con lo scheduling di gruppo Grove sul tuo cluster.
- Esegui lo stage dei pesi del modello Qwen3.8-2.4T in un bucket Cloud Storage.
- Esegui il deployment di un server di inferenza SGLang multi-host con disaggregazione DP su quattro nodi A4, con un totale di 32 GPU NVIDIA B200.
- Invia una richiesta di completamento della chat al router di frontend Dynamo.
- Esegui un workload di benchmark di gestione.
- Esegui la pulizia delle risorse di cui hai eseguito il deployment.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili diGoogle Cloud:
Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.
Prima di iniziare
Configura l'ambiente per il tutorial:
- Installa e inizializza Google Cloud CLI e installa
kubectle Helm (versione 3.10 o successive). Se utilizzi Cloud Shell, questi strumenti sono preinstallati. - Se esegui questo tutorial da una workstation Linux o macOS anziché da Cloud Shell, installa le dipendenze di Cluster Toolkit richieste, come Terraform e Git.
Abilita l'API Kubernetes Engine, l'API Compute Engine, l'API Cloud Storage, l'API Identity and Access Management, l'API Cloud Resource Manager e l'API Service Usage nel tuo progetto Google Cloud :
Ottieni un token di accesso a Hugging Face
Per utilizzare questo tutorial, devi disporre di un token di accesso a Hugging Face. Puoi registrarti per un account senza costi su Hugging Face. Dopo aver creato un account, genera un token di accesso:
- Nella pagina Welcome to Hugging Face, fai clic sull'avatar del tuo account e seleziona Token di accesso.
- Nella pagina Token di accesso, fai clic su Crea nuovo token.
- Seleziona il tipo di token Lettura e inserisci un nome per il token.
- Viene visualizzato il token di accesso. Salva il token in un luogo sicuro.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per completare questo tutorial, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
- Amministratore Kubernetes Engine (
roles/container.admin) - Compute Admin (
roles/compute.admin) - Storage Admin (
roles/storage.admin) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - Amministratore Service Account (
roles/iam.serviceAccountAdmin) - Utente Service Account (
roles/iam.serviceAccountUser) - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Imposta le variabili di ambiente
Esporta le variabili di ambiente che utilizzi in questo tutorial:
Sostituisci quanto segue:
YOUR_PROJECT_ID: l'ID del tuo progetto Google Cloud.YOUR_REGION: la regione in cui si trova la tua capacità A4 e in cui vuoi eseguire il deployment del cluster, ad esempious-central1.YOUR_ZONE: la zona in cui si trova la tua capacità A4, ad esempious-central1-b.YOUR_CLUSTER_NAME: il nome del tuo cluster GKE e del deployment di Cluster Toolkit. Utilizza un nome di massimo 20 caratteri in modo che l'ID account del service account del pool di nodi generato (YOUR_CLUSTER_NAME-gke-np-sa) rimanga entro il limite di 30 caratteri di Identity and Access Management (IAM).YOUR_RESERVATION_NAME: il nome della prenotazione A4 o il percorso del blocco di prenotazione esteso nel formatoRESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME.YOUR_BUCKET_NAME: un nome univoco globale per il bucket Cloud Storage che archivia lo stato Terraform per Cluster Toolkit e i pesi del modello Qwen3.8-2.4T di cui è stato eseguito lo stage.YOUR_HF_TOKEN: il tuo token di accesso a Hugging Face.
Crea il cluster GKE
Scarica Cluster Toolkit ed esegui il provisioning di un cluster GKE in modalità Standard con quattro nodi a4-highgpu-8g, networking GPUDirect RDMA e supporto DRA:
Accedi a Google Cloud CLI e genera le Credenziali predefinite dell'applicazione per Terraform:
Scarica ed estrai il bundle Cluster Toolkit predefinito per la versione specificata in
CLUSTER_TOOLKIT_VERSION(v1.104.0):Se esegui questo comando su macOS o su una workstation
arm64, impostaOS="mac"oARCH="arm64"in modo che corrisponda alla tua piattaforma.Per archiviare lo stato di Terraform per il deployment di Cluster Toolkit e i pesi del modello di cui è stato eseguito lo stage, crea un bucket Cloud Storage nella stessa regione della prenotazione A4 con accesso uniforme a livello di bucket e controllo delle versioni degli oggetti abilitato:
Crea il file di configurazione del deployment
cluster-toolkit/examples/gke-a4/gke-a4-deployment.yamlper quattro nodia4-highgpu-8g:Per impostazione predefinita, il file di deployment è configurato per utilizzare una prenotazione specifica. Se non hai una prenotazione specifica, prima di eseguire il deployment del cluster, puoi aggiornare
cluster-toolkit/examples/gke-a4/gke-a4-deployment.yamlin modo che utilizzi un'opzione di consumo alternativa, ad esempio VM spot o Flex-start VM. Per istruzioni sulla configurazione, consulta Opzioni di consumo di GKE.Passa alla directory
cluster-toolkit, esegui il deployment del cluster GKE utilizzando il comandogcluster deploy, quindi torna alla directory di lavoro:La creazione del cluster richiede circa 20-30 minuti. Se esegui
./gcluster deploysenza il flag--auto-approve, per applicare le modifiche proposte, inserisciaquando richiesto.Configura le credenziali
kubectlper comunicare con il tuo cluster:
Installa KAI Scheduler e NVIDIA Dynamo
Prepara il cluster creando un secret di Hugging Face e installando lo scheduler KAI e la piattaforma NVIDIA Dynamo con lo scheduling di gruppo Grove:
Crea un secret di Kubernetes denominato
hf-secretper archiviare il tuo token di accesso Hugging Face:Scarica il grafico Helm della piattaforma NVIDIA Dynamo (
v1.5.0), installa lo scheduler KAI e installa la piattaforma Dynamo con Grove abilitato:
Esegui lo stage dei pesi del modello in Cloud Storage
Esegui lo stage del checkpoint nvidia/Qwen3.8-2.4T-A95B-NVFP4 nel tuo bucket Cloud Storage (gs://${GCS_BUCKET}) nella regione, in modo che i pod worker di inferenza possano montare i pesi con Cloud Storage FUSE anziché scaricarli da Hugging Face a ogni avvio a freddo:
Concedi il ruolo Storage Object User (
roles/storage.objectUser) sul bucketgs://${GCS_BUCKET}che hai creato in Crea il cluster GKE al account di servizio Google associato al service account Kubernetesworkload-identity-k8s-sa:Scarica i manifest
qwen3.8-2.4t-nvfp4-stage-weights-job.yamleqwen3.8-2.4t-nvfp4-multihost-a4-gcsfuse.yaml:In alternativa, crea un file denominato
qwen3.8-2.4t-nvfp4-stage-weights-job.yamlcon i seguenti contenuti. Questo job indicizzato esegue quattro pod paralleli sui quattro nodi A4. Ogni pod scarica una sezione di dimensioni bilanciate del checkpointnvidia/Qwen3.8-2.4T-A95B-NVFP4nell'SSD NVMe locale del nodo e la carica sugs://${GCS_BUCKET}/hf_models/models--nvidia--qwen3_8-2_4t-a95b-nvfp4utilizzandogcloud storage rsync:Sostituisci il nome del bucket Cloud Storage in
qwen3.8-2.4t-nvfp4-stage-weights-job.yaml, avvia il job di gestione temporanea, attendi che tutti e quattro i pod abbiano completato il caricamento dei pesi, quindi elimina il job completato:Il download dei pesi del modello sull'SSD NVMe locale e il caricamento su Cloud Storage richiedono circa 25 minuti.
(Facoltativo) Mentre il job di gestione temporanea è in esecuzione, trasmetti in streaming i log di un pod di gestione temporanea in una seconda sessione del terminale per monitorare l'avanzamento del download:
Sostituisci
YOUR_POD_NAMEcon il nome di uno dei podqwen3-8-2-4t-stage-weightsdikubectl get pods.
Esegui il deployment del server SGLang disaggregato multi-host
Il manifest del workload (qwen3.8-2.4t-nvfp4-multihost-a4-gcsfuse.yaml) definisce un ResourceClaimTemplate di Kubernetes (all-mrdma), che alloca i dispositivi RDMA multi-NIC del nodo (mrdma.google.com) tramite DRA, risorse Role e RoleBinding per il account di servizio workload-identity-k8s-sa e un NVIDIA Dynamo DynamoGraphDeployment (qwen3-8-2-4t-a4-disagg) con la pianificazione di gruppo Grove abilitata. Il deployment è costituito da quanto segue:
Frontend (
Frontend): esegue una replica del router che accetta le richieste dei client, rileva i worker di precompilazione e decodifica registrati e coordina il routing delle richieste disaggregate.Worker di precompilazione (
Prefill): esegue un pool di worker a due nodi su due nodia4-highgpu-8gcon un totale di 16 GPU NVIDIA B200. Ogni pod monta i pesinvidia/Qwen3.8-2.4T-A95B-NVFP4di cui è stato eseguito lo stage dal tuo bucket Cloud Storage in/model-weightsutilizzando il driver CSI Cloud Storage FUSE (gcsfuse.csi.storage.gke.io) con la memorizzazione nella cache dei file degli SSD NVMe locali, genera l'ambiente NCCL/gIB e avviapython3 -m dynamo.sglangin--disaggregation-mode prefillcon i seguenti flag:--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): esegue un pool di worker a due nodi nei restanti due nodia4-highgpu-8g, con un totale di 16 GPU NVIDIA B200. Ogni pod monta i pesi del modello preparato da Cloud Storage in/model-weightstramite il driver CSI di Cloud Storage FUSE e avviapython3 -m dynamo.sglangin--disaggregation-mode decodecon i seguenti flag:--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
Esegui il deployment e il monitoraggio del server di inferenza disaggregato:
Esamina il manifest del workload
qwen3.8-2.4t-nvfp4-multihost-a4-gcsfuse.yamlche hai scaricato in precedenza o crea un file denominatoqwen3.8-2.4t-nvfp4-multihost-a4-gcsfuse.yamlcon i seguenti contenuti:Sostituisci il nome del tuo bucket Cloud Storage in
qwen3.8-2.4t-nvfp4-multihost-a4-gcsfuse.yamle applica il manifest del workload al tuo cluster:Per monitorare il caricamento dei pesi e l'inizializzazione del server, elenca i pod nel tuo cluster e trasmetti in streaming i log del pod leader di pre-compilazione e del pod leader di decodifica:
Sostituisci
YOUR_POD_NAMEcon il nome del pod leader di precompilazione o del pod leader di decodifica dall'outputkubectl get pods.Con un avvio a freddo, sono necessari circa 4-5 minuti per eseguire lo streaming dei 2.400.000.000.000 di pesi del modello NVFP4 (~1,44 TB su 200 shard) da Cloud Storage tramite Cloud Storage FUSE e inizializzare i server SGLang multi-host. Prima di inviare qualsiasi richiesta, attendi che i pod di frontend mostrino
1/1e i pod di precompilazione e decodifica mostrino2/2nella colonnaREADYdikubectl get pods: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
Invia richieste di inferenza
Invia una richiesta di completamento della chat al servizio Qwen3.8-2.4T di cui è stato eseguito il deployment:
Inoltra la porta locale
8000al servizioqwen3-8-2-4t-a4-disagg-frontend:Lascia il port forwarding in esecuzione in questa sessione del terminale o esegui il comando in background.
In una seconda sessione del terminale, invia una richiesta di completamento della chat all'endpoint
/v1/chat/completions:
Esegui un workload di benchmark
Esegui il benchmark del server Qwen3.8-2.4T di cui è stato eseguito il deployment dal pod frontend Dynamo utilizzando
sglang.bench_serving con una configurazione di 1024 token di input, 1024 token di output (1k/1k), 256 prompt e una contemporaneità massima di 128:
Al termine del benchmark, cerca un output contenente metriche come le seguenti:
Output token throughputTotal Token throughputTTFTTPOT
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi aggiuntivi per le risorse utilizzate in questo tutorial, elimina i workload Kubernetes, il cluster GKE e il bucket Cloud Storage:
Elimina le risorse DynamoGraphDeployment e ResourceClaimTemplate:
Disinstalla le release Helm della piattaforma NVIDIA Dynamo e di KAI Scheduler:
Elimina il secret Kubernetes di Hugging Face:
Dalla directory
cluster-toolkit, elimina il cluster GKE e l'infrastruttura associata utilizzando il comandogcluster destroy:Elimina il bucket Cloud Storage che archivia i pesi del modello in fase di preparazione e lo stato di Terraform:
gcloud storage rm --recursive "gs://${GCS_BUCKET}"
Passaggi successivi
- Scopri di più su NVIDIA Dynamo.
- Scopri di più su SGLang.
- Scopri di più sulle VM A4 con GPU NVIDIA B200.
- Scopri di più su Cluster Toolkit.
- Scopri di più sulla gestione dei cluster GKE ottimizzati per l'AI.