Esegui l'inferenza secondo le best practice con le ricette della guida rapida di GKE Inference


Questa pagina descrive come utilizzare la guida rapida all'inferenza GKE per semplificare il deployment dei workload di inferenza AI/ML su Google Kubernetes Engine (GKE). Inference Quickstart è un'utilità che ti consente di specificare i requisiti aziendali di inferenza e di ottenere configurazioni Kubernetes ottimizzate in base alle best practice e ai benchmark di Google per modelli, server di modelli, acceleratori (GPU, TPU) e scalabilità. In questo modo, eviterai la procedura di regolazione e test manuale delle configurazioni, che richiede molto tempo.

Questa pagina è rivolta a data engineer, amministratori e operatori della piattaforma e a specialisti di dati e AI che vogliono capire come gestire e ottimizzare in modo efficiente GKE per l'inferenza AI/ML. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei Google Cloud contenuti, consulta Ruoli e attività utente comuni di GKE Enterprise.

Per scoprire di più sui concetti e sulla terminologia di pubblicazione dei modelli e su come le funzionalità di AI generativa di GKE possono migliorare e supportare le prestazioni di pubblicazione dei modelli, consulta Informazioni sull'inferenza dei modelli su GKE.

Prima di leggere questa pagina, assicurati di conoscere Kubernetes, GKE e pubblicazione di modelli.

Utilizzare la guida rapida all'inferenza

I passaggi di alto livello per utilizzare la guida rapida all'inferenza sono i seguenti. Fai clic sui link per istruzioni dettagliate.

  1. Visualizza best practice personalizzate: utilizza la pagina AI/ML di GKE nella Google Cloud console o Google Cloud CLI nel terminale, inizia fornendo input come il tuo preferito modello aperto (ad esempio Llama, Gemma o Mistral).
    • Puoi specificare il target di latenza dell'applicazione, indicando se è sensibile alla latenza (come un chatbot) o al throughput (come l'analisi batch).
    • In base ai tuoi requisiti, Inference Quickstart fornisce scelte di acceleratori, metriche sul rendimento e manifest Kubernetes, che ti offrono il pieno controllo per il deployment o ulteriori modifiche. I manifest generati fanno riferimento alle immagini dei server di modelli pubblici, quindi non devi creare queste immagini autonomamente.
  2. Esegui il deployment dei manifest: utilizza la console Google Cloud o il comando kubectl apply per eseguire il deployment dei manifest consigliati. Prima di eseguire il deployment, devi assicurarti di disporre di una quota di acceleratori sufficiente per le GPU o le TPU selezionate nel tuo progetto. Google Cloud
  3. Monitora le prestazioni: utilizza Cloud Monitoring per monitorare le metriche relative alle prestazioni dei carichi di lavoro fornite da GKE. Puoi visualizzare le dashboard del server di modelli e perfezionare il deployment in base alle tue esigenze.

Vantaggi

La guida rapida all'inferenza ti aiuta a risparmiare tempo e risorse fornendo configurazioni ottimizzate. Queste ottimizzazioni migliorano le prestazioni e riducono i costi dell'infrastruttura nei seguenti modi:

  • Riceverai best practice personalizzate dettagliate per l'impostazione dell'acceleratore (GPU e TPU), del server di modelli e delle configurazioni di scalabilità. GKE aggiorna regolarmente lo strumento con le correzioni, le immagini e i benchmark sul rendimento più recenti.
  • Puoi specificare i requisiti di latenza e throughput del tuo carico di lavoro utilizzando l'Google Cloud interfaccia utente della console o un'interfaccia a riga di comando e ottenere best practice personalizzate dettagliate come manifest di deployment di Kubernetes.

Casi d'uso

La guida rapida all'inferenza è adatta per scenari come i seguenti:

  • Scopri le architetture di inferenza GKE ottimali: se stai per eseguire la transizione da un altro ambiente, ad esempio on-premise o un altro provider cloud, e vuoi le architetture di inferenza consigliate più aggiornate su GKE per le tue specifiche esigenze di prestazioni.
  • Velocizza i deployment di inferenza AI/ML: se sei un utente Kubernetes esperto e vuoi iniziare rapidamente a eseguire il deployment di workload di inferenza AI, la guida rapida all'inferenza ti aiuta a scoprire e implementare i deployment delle best practice su GKE, con configurazioni YAML dettagliate basate sulle best practice.
  • Esplora le TPU per prestazioni migliorate: se utilizzi già Kubernetes su GKE con GPU, puoi utilizzare la guida rapida all'inferenza per scoprire i vantaggi dell'utilizzo delle TPU per ottenere potenzialmente prestazioni migliori.

Come funziona

La guida rapida all'inferenza fornisce best practice personalizzate basate su benchmark interni esaustivi di Google sulle prestazioni di una singola replica per combinazioni di modelli, server di modelli e topologia dell'acceleratore. Questi benchmark mostrano la latenza rispetto al throughput, incluse le metriche relative alle dimensioni della coda e alla cache KV, che mappano le curve di rendimento per ogni combinazione.

Come vengono generate le best practice personalizzate

Misuriamo la latenza in tempo normalizzato per token di output (NTPOT) in millisecondi e la velocità effettiva in token di output al secondo, saturando gli acceleratori. Per approfondire queste metriche sul rendimento, consulta Informazioni sull'inferenza del modello su GKE.

Il seguente profilo di latenza di esempio illustra il punto di inflessione in cui il throughput si stabilizza (verde), il punto post-inflessione in cui la latenza peggiora (rosso) e la zona ideale (blu) per un throughput ottimale al target di latenza. La guida introduttiva all'inferenza fornisce configurazioni e dati sulle prestazioni per questa zona ideale.

Profilo di latenza con indicatore verde inferiore a 2000 token di output al secondo e indicatore rosso superiore a 2000 token di output al secondo

In base ai requisiti di latenza di un'applicazione di inferenza, la funzionalità Inference Quickstart identifica le combinazioni adatte e determina il punto di funzionamento ottimale sulla curva di latenza-throughput. Questo punto imposta la soglia di Horizontal Pod Autoscaler (HPA), con un buffer per tenere conto della latenza di scalabilità. La soglia complessiva indica anche il numero iniziale di repliche necessarie, anche se l'HPA regola dinamicamente questo numero in base al carico di lavoro.

Benchmarking

Le configurazioni e i dati sul rendimento forniti si basano su benchmark che utilizzano il set di dati ShareGPT per inviare traffico con la seguente distribuzione di input e output.

Token di input Token di output
Min Mediana Media P90 P99 Max Min Mediana Media P90 P99 Max
4 108 226 635 887 1024 1 132 195 488 778 1024

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e poi inizializza gcloud CLI. Se hai già installato l'interfaccia a riga di comando gcloud, ottieni la versione più recente eseguendo gcloud components update.
  • Nella Google Cloud console, nella pagina di selezione del progetto, seleziona o crea un progetto. Google Cloud

  • Assicurati che la fatturazione sia attivata per il tuo Google Cloud progetto.

  • Assicurati di disporre di una capacità dell'acceleratore sufficiente per il tuo progetto:

  • Genera un token di accesso Hugging Face e un segreto Kubernetes corrispondente, se non ne hai già uno. Per creare un secret di Kubernetes contenente il token di Hugging Face, esegui il seguente comando:

    kubectl create secret generic hf-secret \
        --from-literal=hf_api_token=HUGGING_FACE_TOKEN \
        --namespace=NAMESPACE
    

    Sostituisci i seguenti valori:

    • HUGGING_FACE_TOKEN: il token Hugging Face che hai creato in precedenza.
    • NAMESPACE: lo spazio dei nomi Kubernetes in cui vuoi eseguire il deployment del server del modello.
  • Per alcuni modelli potrebbe essere necessario anche accettare e firmare il contratto di licenza per il consenso.

Prepararsi a utilizzare l'interfaccia utente di GKE AI/ML

Se utilizzi la Google Cloud console, devi anche creare un cluster Autopilot, se non ne è già stato creato uno nel tuo progetto. Segui le istruzioni riportate in Creare un cluster Autopilot.

Prepararsi a utilizzare l'interfaccia a riga di comando

Se utilizzi gcloud CLI per eseguire la configurazione rapida dell'inferenza, devi anche eseguire questi comandi aggiuntivi:

  1. Abilita l'API gkerecommender.googleapis.com:

    gcloud services enable gkerecommender.googleapis.com
    
  2. Imposta il progetto di quota di fatturazione che utilizzi per le chiamate API:

    gcloud config set billing/quota_project PROJECT_ID
    

Limitazioni

Tieni presente le seguenti limitazioni prima di iniziare a utilizzare la guida rapida all'inferenza:

  • Google Cloud Il deployment del modello da console supporta il deployment solo nei cluster Autopilot.
  • La guida rapida all'inferenza non fornisce profili per tutti i modelli supportati da un determinato server di modelli.

Visualizzare le configurazioni ottimizzate per l'inferenza del modello

Questa sezione descrive come generare e visualizzare i consigli di configurazione utilizzando la Google Cloud console o la riga di comando.

Console

  1. Vai alla pagina AI/ML di GKE nella Google Cloud console

  2. Fai clic su Esegui il deployment dei modelli.
  3. Seleziona un modello da visualizzare. I modelli supportati dalla guida di avvio rapido all'inferenza vengono visualizzati con il tag Ottimizzato.

    • Se hai selezionato un modello di base, si apre una pagina del modello. Fai clic su Esegui il deployment. Puoi comunque modificare la configurazione prima del deployment effettivo.
    • Ti viene chiesto di creare un cluster Autopilot, se non ne esiste uno nel tuo progetto. Segui le istruzioni riportate in Creare un cluster Autopilot. Dopo aver creato il cluster, torna alla pagina AI/ML di GKE nella Google Cloud console per selezionare un modello.

    La pagina di deployment del modello viene precompilata con il modello selezionato nonché con il server e l'acceleratore del modello consigliati. Puoi anche configurare impostazioni come la latenza massima.

  4. Per visualizzare il manifest con la configurazione consigliata, fai clic su Visualizza YAML.

gcloud

Utilizza il comando gcloud alpha container ai recommender per esplorare e visualizzare combinazioni ottimizzate di modello, server di modelli, versione del server di modelli e acceleratori:

Modelli

Per esplorare e selezionare un modello, utilizza l'opzione models.

  gcloud alpha container ai recommender models list

Server modello

Per esplorare i server di modelli consigliati per il modello che ti interessa, utilizza l'opzione model-servers. Ad esempio:

  gcloud alpha container ai recommender model-servers list \
      --model=meta-llama/Meta-Llama-3-8B

L'output è simile al seguente:

  Supported model servers:
  -  vllm

Versioni del server

Facoltativamente, per esplorare le versioni supportate del server modello che ti interessano, utilizza l'opzione model-server-versions. Se salti questo passaggio, la guida rapida all'inferenza utilizzerà per impostazione predefinita la versione più recente. Ad esempio:

  gcloud alpha container ai recommender model-server-versions list \
      --model=meta-llama/Meta-Llama-3-8B \
      --model-server=vllm

L'output è simile al seguente:

  Supported model server versions:
  -  e92694b6fe264a85371317295bca6643508034ef
  -  v0.7.2

Acceleratori

Per esplorare gli acceleratori consigliati per la combinazione di modello e server di modelli che ti interessa, utilizza l'opzione accelerators. Ad esempio:

  gcloud alpha container ai recommender accelerators list \
      --model=deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
      --model-server-version=v0.7.2

L'output è simile al seguente:

  Supported accelerators:
  accelerator          | model                                   | model server | model server version                     | accelerator count | output tokens per second | ntpot ms
  ---------------------|-----------------------------------------|--------------|------------------------------------------|-------------------|--------------------------|---------
  nvidia-tesla-a100    | deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | vllm         | v0.7.2                                   | 1                 | 3357                     | 72
  nvidia-h100-80gb     | deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | vllm         | v0.7.2                                   | 1                 | 6934                     | 30

  For more details on each accelerator, use --format=yaml

L'output restituisce un elenco di tipi di acceleratori e le seguenti metriche:

  • Throughput, in token di output al secondo
  • Tempo normalizzato per token di output (NTPOT), in millisecondi

I valori rappresentano le prestazioni osservate nel punto in cui la throughput smette di aumentare e la latenza inizia ad aumentare notevolmente (ovvero il punto di inflessione o saturazione) per un determinato profilo con questo tipo di acceleratore. Per scoprire di più su queste metriche sul rendimento, consulta Informazioni sull'inferenza del modello su GKE.

Per altre opzioni, consulta la documentazione di Google Cloud CLI.

Dopo aver scelto un modello, un server di modelli, una versione del server di modelli e un acceleratore, puoi procedere con la creazione di un manifest di deployment.

Esegui il deployment delle configurazioni consigliate

Questa sezione descrive come generare e implementare i consigli di configurazione utilizzando la Google Cloud console o la riga di comando.

Console

  1. Vai alla pagina AI/ML di GKE nella Google Cloud console

  2. Fai clic su Esegui il deployment dei modelli.
  3. Seleziona un modello di cui vuoi eseguire il deployment. I modelli supportati dalla guida di avvio rapido all'inferenza vengono visualizzati con il tag Ottimizzato.

    • Se hai selezionato un modello di base, si apre una pagina del modello. Fai clic su Esegui il deployment. Puoi comunque modificare la configurazione prima del deployment effettivo.
    • Ti viene chiesto di creare un cluster Autopilot, se non ne esiste uno nel tuo progetto. Segui le istruzioni riportate in Creare un cluster Autopilot. Dopo aver creato il cluster, torna alla pagina AI/ML di GKE nella Google Cloud console per selezionare un modello.

    La pagina di deployment del modello viene precompilata con il modello selezionato nonché con il server e l'acceleratore del modello consigliati. Puoi anche configurare impostazioni come la latenza massima.

  4. (Facoltativo) Per visualizzare il manifest con la configurazione consigliata, fai clic su Visualizza YAML.

  5. Per eseguire il deployment del manifest con la configurazione consigliata, fai clic su Esegui il deployment. Il completamento dell'operazione di deployment potrebbe richiedere alcuni minuti.

Per visualizzare il deployment, vai alla pagina Kubernetes Engine > Workload.

gcloud

  1. Genera manifest: nel terminale, utilizza l'opzione manifests per generare i manifest di Deployment, Service e PodMonitoring:

    gcloud alpha container ai recommender manifests create
    

    Utilizza i parametri obbligatori --model, --model-server e --accelerator-type per personalizzare il manifest.

    Facoltativamente, puoi impostare i seguenti parametri:

    • --target-ntpot-milliseconds: imposta questo parametro per specificare la soglia HPA. Questo parametro consente di definire una soglia di scalabilità per mantenere la latenza P50 (Tempo normalizzato per token di output) misurata al cinquantesimo quartile al di sotto del valore specificato. Scegli un valore superiore alla latenza minima dell'acceleratore. L'HPA è configurato per il throughput massimo se specifichi un valore NTPOT superiore alla latenza massima dell'acceleratore. Ad esempio:

      gcloud alpha container ai recommender manifests create \
          --model=google/gemma-2-27b-it \
          --model-server=vllm \
          --model-server-version=v0.7.2 \
          --accelerator-type=nvidia-l4 \
          --target-ntpot-milliseconds=200
      
    • --model-server-version: la versione del server del modello. Se non specificato, viene utilizzata la versione più recente.

    • --namespace: lo spazio dei nomi in cui eseguire il deployment dei manifest. L'ambito predefinito è "default".

    • --output: i valori validi includono manifest, comments e all. Per impostazione predefinita, questo parametro è impostato su all. Puoi scegliere di generare solo il manifest per il deployment dei carichi di lavoro oppure di generare solo i commenti se vuoi visualizzare le istruzioni per l'attivazione delle funzionalità.

    • --output-path: se specificato, l'output viene salvato nel percorso fornito anziché stampato nel terminale, in modo da poterlo modificare prima di eseguirlo. Ad esempio, puoi utilizzarlo con l'opzione --output=manifest se vuoi salvare il manifest in un file YAML. Ad esempio:

      gcloud alpha container ai recommender manifests create \
          --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
          --model-server vllm \
          --accelerator-type=nvidia-tesla-a100 \
          --output=manifest \
          --output-path  /tmp/manifests.yaml
      

    Per altre opzioni, consulta la documentazione di Google Cloud CLI.

  2. Esegui il provisioning dell'infrastruttura: assicurati che la tua infrastruttura sia configurata correttamente per il deployment, il monitoraggio e la scalabilità dei modelli seguendo questi passaggi di provisioning.

  3. Esegui il deployment dei manifest: esegui il comando kubectl apply e passa il file YAML per i manifest. Ad esempio:

    kubectl apply -f ./manifests.yaml
    

Esegui il provisioning dell'infrastruttura

Segui questi passaggi per assicurarti che l'infrastruttura sia configurata correttamente per il deployment, il monitoraggio e il ridimensionamento dei modelli:

  1. Crea un cluster: puoi pubblicare il modello sui cluster GKE Autopilot o standard. Ti consigliamo di utilizzare un cluster Autopilot per un'esperienza Kubernetes completamente gestita. Per scegliere la modalità operativa di GKE più adatta ai tuoi carichi di lavoro, consulta Scegliere una modalità operativa di GKE.

    Se non hai un cluster esistente:

    Autopilot

    Segui queste istruzioni per creare un cluster Autopilot. GKE gestisce il provisioning delle risorse con capacità GPU o TPU in base ai manifest di deployment, se disponi della quota necessaria nel progetto.

    Standard

    1. Crea un cluster di zona o regionale.
    2. Crea un pool di nodi con gli acceleratori appropriati. Segui questi passaggi in base al tipo di acceleratore scelto:

  2. (Facoltativo, ma consigliato) Abilita le funzionalità di osservabilità: nella sezione dei commenti del manifest generato, vengono forniti comandi aggiuntivi per attivare le funzionalità di osservabilità suggerite. L'attivazione di queste funzionalità fornisce maggiori informazioni per aiutarti a monitorare le prestazioni e lo stato dei carichi di lavoro e dell'infrastruttura di base.

    Di seguito è riportato un esempio di comando per abilitare le funzionalità di osservabilità:

    gcloud beta container clusters update $CLUSTER_NAME \
        --project=$PROJECT_ID \
        --location=$LOCATION \
        --enable-managed-prometheus \
        --logging=SYSTEM,WORKLOAD \
        --monitoring=SYSTEM,DEPLOYMENT,HPA,POD,DCGM \
        --auto-monitoring-scope=ALL
    

    Per ulteriori informazioni, vedi Monitorare i carichi di lavoro di inferenza.

  3. (Solo HPA) Esegui il deployment di un adattatore delle metriche: un adattatore delle metriche, come l'adattatore Stackdriver delle metriche personalizzate, è necessario se le risorse HPA sono state generate nei manifest di deployment. L'adattatore delle metriche consente all'HPA di accedere alle metriche del server di modelli che utilizzano l'API delle metriche esterne di Kube. Per eseguire il deployment dell'adattatore, consulta la documentazione dell'adattatore su GitHub.

Testa gli endpoint di deployment

Se hai eseguito il deployment del manifest utilizzando la riga di comando, il servizio di cui è stato eseguito il deployment è exposto al seguente endpoint:

http://model-model_server-service:port/

Prova il servizio. In un terminale separato, configura il port forwarding eseguendo il seguente comando:

kubectl port-forward service/model-model_server-service 8000:8000

Per esempi su come creare e inviare una richiesta all'endpoint, consulta la documentazione di vLLM.

Monitora i carichi di lavoro di inferenza

Per monitorare i workload di inferenza di cui è stato eseguito il deployment, vai a Metrics Explorer nella Google Cloud console.

Attivare il monitoraggio automatico

GKE include una funzionalità di monitoraggio automatico che fa parte delle funzionalità di osservabilità più ampie. Questa funzionalità esegue la scansione del cluster alla ricerca di carichi di lavoro eseguiti su server di modelli supportati ed esegue il deployment delle risorse PodMonitoring che consentono di visualizzare queste metriche dei carichi di lavoro in Cloud Monitoring. Per saperne di più sull'abilitazione e sulla configurazione del monitoraggio automatico, consulta Configurare il monitoraggio automatico delle applicazioni per i workload.

Dopo aver attivato la funzionalità, GKE installa dashboard predefinite per il monitoraggio delle applicazioni per i carichi di lavoro supportati.

Se esegui il deployment dalla pagina AI/ML di GKE nella Google Cloud console, le risorse PodMonitoring e HPA vengono create automaticamente utilizzando la configurazionetargetNtpot.

Risoluzione dei problemi

  • Se imposti una latenza troppo bassa, la guida rapida all'inferenza potrebbe non generare un consiglio. Per risolvere il problema, seleziona un target di latenza compreso tra la latenza minima e quella massima osservata per gli acceleratori selezionati.
  • La procedura rapida di inferenza esiste indipendentemente dai componenti GKE, pertanto la versione del cluster non è direttamente pertinente per l'utilizzo del servizio. Tuttavia, ti consigliamo di utilizzare un cluster nuovo o aggiornato per evitare discrepanze nel rendimento.
  • Se ricevi un errore PERMISSION_DENIED per i comandi gkerecommender.googleapis.com che indica che manca un progetto di quota, devi impostarlo manualmente. Esegui gcloud config set billing/quota_project PROJECT_ID per risolvere il problema.

Passaggi successivi