Questo tutorial mostra come eseguire il deployment e l'erogazione del modello Mixture of Experts
Qwen3-30B-A3B (Qwen/Qwen3-30B-A3B-FP8)
su Google Kubernetes Engine (GKE) utilizzando un acceleratore
TPU v6e (Trillium) single-host e il
framework di erogazione TPU vLLM
con TorchTPU (torchtpu). Esegui il workload su un singolo
nodo ct6e-standard-4t, che contiene quattro chip TPU v6e in una topologia 2x2,
con il parallelismo dei dati e il parallelismo degli esperti abilitati.
Per eseguire un workflow di distribuzione vLLM TorchTPU single-host simile su acceleratori TPU7x (Ironwood) con il modello Qwen3.5-397B più grande, consulta Distribuisci Qwen3.5-397B su GKE con vLLM TorchTPU su acceleratori TPU7x.
Obiettivi
- Configura il cluster GKE e il pool di nodi TPU v6e a host singolo.
- Esegui il deployment del server TorchTPU vLLM single-host su GKE.
- Invia una richiesta di inferenza al server vLLM TorchTPU.
- Esegui un workload di benchmark di gestione.
- Eseguire la pulizia.
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.
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
Configura l'ambiente per il tutorial:
Abilita l'API Kubernetes Engine nel tuo progetto Google Cloud :
Abilita l'API Artifact Registry nel tuo progetto Google Cloud :
Installa e inizializza Google Cloud CLI e installa
kubectl. Se utilizzi Cloud Shell, entrambi gli strumenti sono preinstallati.Assicurati che il tuo progetto disponga di una quota di SSD e di indirizzi IP esterni sufficiente nella regione in cui si trova la capacità della TPU:
Nella console Google Cloud , vai alla pagina Quote e limiti di sistema.
Filtra per Persistent Disk SSD (GB) e verifica di avere almeno 500 GB di quota disponibile per il volume della cache del modello.
Filtra per Indirizzi IPv4 esterni regionali in uso e verifica di avere una quota di indirizzi IP sufficiente nella regione di destinazione.
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 Read (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) - Utente Service Account (
roles/iam.serviceAccountUser)
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
Configura l'autenticazione:
Imposta le variabili di ambiente:
Sostituisci quanto segue:
YOUR_PROJECT_ID: l'ID del tuo progetto Google Cloud.YOUR_REGION: la regione in cui vuoi eseguire il deployment del cluster, ad esempious-central1.YOUR_ZONE: la zona in cui vuoi eseguire il deployment del pool di nodi TPU v6e, ad esempious-central1-c.YOUR_CLUSTER_NAME: il nome del tuo cluster GKE, ad esempiotpu-v6e-tutorial-cluster.YOUR_RESERVATION_NAME: se utilizzi una prenotazione, il nome della prenotazione TPU v6e.YOUR_HF_TOKEN: il tuo token di accesso a Hugging Face.YOUR_NETWORK_NAME: il nome della tua reteGoogle Cloud . Se hai creato una rete personalizzata, specifica quella rete. In caso contrario, specificadefault.YOUR_SUBNETWORK_NAME: il nome della tua subnetGoogle Cloud . Se hai creato una subnet personalizzata, specifica quella subnet. In caso contrario, specificadefault.YOUR_VLLM_TPU_IMAGE: l'immagine vLLM TorchTPU da utilizzare. Per le immagini pubbliche, consulta il repository vLLM TorchTPU.
Crea il cluster GKE
Per creare un cluster GKE in modalità Standard e collegare un pool di nodi TPU v6e a host singolo, completa i seguenti passaggi:
Crea un cluster GKE a livello di regione:
Il tipo di macchina predefinito per i cluster GKE (
e2-medium) non dispone di capacità della CPU sufficiente per i controller dei workload, pertanto questo comando specificae2-standard-4.L'output è simile al seguente:
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS tpu-v6e-tutorial-cluster us-central1 1.35.7-gke.1027000 34.63.222.246 e2-standard-4 1.35.7-gke.1027000 3 RUNNINGCrea un pool di nodi TPU v6e a host singolo con un nodo
ct6e-standard-4t(quattro chip TPU v6e in una topologia2x2) utilizzando la tua prenotazione:Anziché utilizzare una prenotazione specifica, puoi anche creare il pool di nodi utilizzando la capacità spot o le VM Flex-start passando i seguenti flag:
- VM spot: sostituisci i flag
--reservation-affinitye--reservationcon--spotper utilizzare la capacità spot. La creazione delle istanze che utilizzano la capacità spot potrebbe richiedere del tempo dopo la creazione del pool di nodi e potrebbero essere prerilasciate durante l'esecuzione dei workload. Se i pod richiedono tempo per essere creati o i workload si interrompono durante l'esecuzione, questa potrebbe essere la causa. - VM con avvio flessibile: per eseguire il provisioning del pool di nodi utilizzando l'opzione di consumo Avvio flessibile, passa il flag
--flex-start. Per saperne di più, consulta Esegui un workload batch di piccole dimensioni con TPU e VM con avvio flessibile.
L'output è simile al seguente:
NAME MACHINE_TYPE DISK_SIZE_GB NODE_VERSION np-0 ct6e-standard-4t 100 1.35.7-gke.1027000- VM spot: sostituisci i flag
Configura le credenziali
kubectlper comunicare con il tuo cluster:
Configura le credenziali
Crea un secret di Kubernetes denominato hf-secret per archiviare il token di accesso di Hugging Face:
Esegui il deployment del server vLLM TorchTPU
Il manifest del workload (qwen3_5_server.yaml) definisce le seguenti risorse:
Un oggetto StorageClass (
hyperdisk-balanced-qwen3) e un oggetto PersistentVolumeClaim da 500 GiB (hd-claim-qwen3) supportati dallo spazio di archiviazione Google Cloud Hyperdisk Balanced per archiviare i pesi del modello scaricato, la cache di compilazione XLA e la cache di compilazione PyTorch.Un deployment (
vllm-qwen3) pianificato su un singolo nodo TPU v6e con una topologia2x2(google.com/tpu: '4'). Il container eseguevllm serveperQwen/Qwen3-30B-A3B-FP8con i seguenti flag:--data-parallel-size=4--tensor-parallel-size=1--enable-expert-parallel--kv-cache-dtype=fp8--max-model-len=9236--max-num-seqs=64.
Un servizio
ClusterIP(vllm-qwen3-service) che espone la porta8000.
Per eseguire il deployment e monitorare il workload, completa i seguenti passaggi:
Recupera il manifest del server:
In alternativa, puoi scegliere di creare un file denominato
qwen3_5_server.yamlcon i seguenti contenuti:Applica il manifest del server vLLM TorchTPU al tuo cluster:
Monitora i log di deployment del server fino al completamento dell'avvio dell'applicazione:
L'avvio iniziale del servizio potrebbe richiedere circa 15-30 minuti, durante i quali il pod scarica i pesi del modello e compila il modello.
Se utilizzi una capacità prerilasciabile come Spot o Flex-start, la creazione dei nodi della sezione TPU potrebbe richiedere più tempo dopo la creazione del pool di nodi e i nodi potrebbero essere prerilasciati durante l'esecuzione dei workload. Se i pod impiegano più tempo del previsto per avviarsi o se i workload si interrompono a metà, questa potrebbe essere la causa. Per ulteriori informazioni, consulta Prerilascio delle VM spot. Per verificare se i nodi della sezione TPU sono stati creati, consulta Controlla lo stato e le condizioni del nodo.
Attendi che i log segnalino
Application startup completeprima di inviare il traffico:(APIServer pid=1) INFO: Started server process [1] (APIServer pid=1) INFO: Waiting for application startup. (APIServer pid=1) INFO: Application startup complete.Apri una seconda sessione del terminale.
Nella seconda sessione del terminale, inoltra la porta locale
8000avllm-qwen3-service:Lascia il port forwarding in esecuzione in questa sessione del terminale.
Invia richieste di inferenza
Torna alla prima sessione del terminale e invia una richiesta di completamento della chat all'endpoint /v1/chat/completions:
Esegui un workload di benchmark
Per eseguire il benchmark del modello Qwen3-30B-A3B di cui è stato eseguito il deployment utilizzando un workload di input da 8192 token e di output da 1024 token (8k/1k) con la suite di benchmark InferenceX, completa i seguenti passaggi:
Recupera il manifest del benchmark:
In alternativa, crea un file denominato
qwen3_5-benchmark-8k1k.yamlcon i seguenti contenuti:Applica il manifest del pod di benchmark:
Monitora i log del benchmark:
Il completamento del benchmark richiede circa 25-30 minuti.
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 pool di nodi TPU e il cluster GKE:
Elimina il deployment, il servizio, il PersistentVolumeClaim e il secret Hugging Face del server vLLM TorchTPU:
Elimina il pool di nodi TPU v6e e il cluster GKE:
Passaggi successivi
- Scopri di più su vLLM su Cloud TPU.
- Scopri di più su TPU v6e (Trillium).
- Scopri di più su Cloud TPU.