Questa pagina descrive i concetti chiave, i vantaggi e i passaggi per eseguire workload di inferenza di modelli di AI generativa su Google Kubernetes Engine (GKE) utilizzando le funzionalità di AI generativa di GKE.
Il servizio di inferenza è fondamentale per il deployment dei modelli di IA generativa in applicazioni reali. GKE fornisce una piattaforma solida e scalabile per la gestione dei carichi di lavoro containerizzati, il che lo rende una scelta interessante per la pubblicazione dei modelli in fase di sviluppo o di produzione. Con GKE, puoi utilizzare le funzionalità di Kubernetes per l'orchestrazione, la scalabilità e l'alta disponibilità per eseguire il deployment e gestire in modo efficiente i tuoi servizi di inferenza.
Google Cloud, consapevole delle esigenze specifiche dell'inferenza AI/ML, Google Cloud ha introdotto le funzionalità di IA generativa di GKE, una suite di funzionalità appositamente progettate per migliorare e ottimizzare il servizio di inferenza su GKE. Per maggiori informazioni su funzionalità specifiche, consulta le funzionalità di IA generativa di GKE.
Terminologia
Questa pagina utilizza la seguente terminologia relativa all'inferenza su GKE:
- Inferenza: la procedura di esecuzione di un modello di IA generativa, ad esempio un grande modello linguistico o un modello di diffusione, all'interno di un cluster GKE per generare testo, incorporamenti o altri output dai dati di input. L'inferenza del modello su GKE sfrutta gli acceleratori per gestire in modo efficiente i calcoli complessi per l'elaborazione batch o in tempo reale.
- Modello: un modello di IA generativa che ha appreso pattern dai dati e viene utilizzato per l'inferenza. I modelli variano per dimensioni e architettura, da modelli più piccoli specifici per dominio a enormi reti neurali con miliardi di parametri ottimizzate per diverse attività linguistiche.
- Model server: un servizio containerizzato responsabile della ricezione delle richieste di inferenza e del ritorno delle previsioni. Questo servizio può essere un'app Python o una soluzione più solida come vLLM, JetStream, TensorFlow Serving o Triton Inference Server. Il server dei modelli gestisce il caricamento dei modelli in memoria ed esegue i calcoli sugli acceleratori per restituire le previsioni in modo efficiente.
- Acceleratore: hardware specializzato, come le unità di elaborazione grafica (GPU) di NVIDIA e le unità di elaborazione tensoriale (TPU) di Google, che possono essere collegate ai nodi GKE per velocizzare i calcoli, in particolare per le attività di addestramento e inferenza.
Vantaggi di GKE per l'inferenza
L'esecuzione di inferenza su GKE offre diversi vantaggi:
- Rapporto prezzo/prestazioni efficiente: ottieni valore e velocità per le tue esigenze di pubblicazione di inferenza. GKE ti consente di scegliere tra una gamma di potenti acceleratori (GPU e TPU), quindi paghi solo per le prestazioni di cui hai bisogno.
- Implementazione più rapida: accelera il time to market con le best practice, le qualifiche e le best practice personalizzate fornite dalle funzionalità di IA generativa di GKE.
- Prestazioni scalabili: esegui lo scaling out delle prestazioni con il monitoraggio predefinito utilizzando GKE Inference Gateway, Horizontal Pod Autoscaler (HPA) e metriche personalizzate. Puoi eseguire una serie di modelli preaddestrati o personalizzati, da 8 miliardi di parametri fino a 671 miliardi di parametri.
- Portabilità completa: usufruisci della portabilità completa con gli standard aperti. Google contribuisce alle API Kubernetes principali, tra cui Gateway e LeaderWorkerSet, e tutte le API sono portabili con le distribuzioni Kubernetes.
- Supporto dell'ecosistema: sfrutta l'ecosistema solido di GKE, che supporta strumenti come Kueue per l'organizzazione in coda e la gestione avanzata delle risorse e Ray per il calcolo distribuito, per facilitare l'addestramento e l'inferenza dei modelli in modo scalabile ed efficiente.
Come funziona l'inferenza su GKE
Questa sezione descrive, a grandi linee, i passaggi per utilizzare GKE per la pubblicazione di inferenze:
Esegui il containerizzazione del modello: esegui il deployment di un modello conteggiando il server del modello (ad esempio vLLM) e caricando i pesi del modello da Cloud Storage o da un repository come Hugging Face. Quando utilizzi la guida rapida all'inferenza GKE, l'immagine containerizzata viene gestita automaticamente nel manifest.
Crea un cluster GKE: crea un cluster GKE per ospitare il deployment. Scegli Autopilot per un'esperienza gestita o Standard per la personalizzazione. Configura le dimensioni del cluster, i tipi di nodi e gli acceleratori. Per una configurazione ottimizzata, utilizza la guida rapida all'inferenza.
Esegui il deployment del modello come deployment Kubernetes: crea un deployment Kubernetes per gestire il servizio di inferenza. Un deployment è un oggetto dell'API Kubernetes che ti consente di eseguire più repliche di pod distribuite tra i nodi di un cluster. Specifica l'immagine Docker, le repliche e le impostazioni. Kubernetes estrae l'immagine ed esegue i container sui nodi del cluster GKE. Configura i pod con il tuo server e modello, inclusi gli adattatori LoRA, se necessario.
Esponi il servizio di inferenza: rendi accessibile il servizio di inferenza creando un servizio Kubernetes per fornire un endpoint di rete per il tuo deployment. Utilizza Inference Gateway per il bilanciamento del carico e il routing intelligenti, personalizzati specificamente per i carichi di lavoro di inferenza dell'IA generativa.
Gestisci le richieste di inferenza: invia i dati dai client dell'applicazione all'endpoint del servizio nel formato previsto (JSON, gRPC). Se utilizzi un bilanciatore del carico, questo distribuisce le richieste alle repliche del modello. Il server del modello elabora la richiesta, esegue il modello e restituisce la previsione.
Scala e monitora il deployment dell'inferenza: scala l'inferenza con l'HPA per regolare automaticamente le repliche in base alla CPU o alla latenza. Utilizza la guida rapida all'inferenza per ricevere consigli di scalabilità generati automaticamente. Per monitorare le prestazioni, utilizza Cloud Monitoring e Cloud Logging con l'osservabilità predefinita, incluse le dashboard per i server di modelli più diffusi come vLLM.
Per esempi dettagliati che utilizzano modelli, server di modelli e acceleratori specifici, consulta Esempi di inferenza.
Funzionalità di AI generativa di GKE
Puoi utilizzare queste funzionalità insieme o singolarmente per risolvere le principali sfide nel servire modelli di AI generativa e migliorare l'utilizzo delle risorse all'interno del tuo ambiente GKE, senza costi aggiuntivi.
Nome | Descrizione | Vantaggi |
---|---|---|
Guida rapida all'inferenza GKE (anteprima) |
Specifica le esigenze della tua attività e ricevi best practice personalizzate per la combinazione di acceleratori, configurazioni di scalabilità e server di modelli che soddisfano al meglio le tue esigenze. Puoi accedere a questo servizio con la gcloud CLI. Per ulteriori informazioni, consulta Eseguire l'inferenza secondo le best practice con le ricette di avvio rapido di GKE Inference. |
|
GKE Inference Gateway (anteprima) | Ottieni il routing in base a metriche, come l'utilizzo della cache KV, per una latenza migliore. Per ulteriori informazioni, consulta Informazioni su GKE Inference Gateway |
|
Pianificazione dell'inferenza
Questa sezione illustra alcune delle considerazioni chiave da tenere presenti per i carichi di lavoro di inferenza su GKE.
Efficienza in termini di costi
La pubblicazione di modelli di IA generativa di grandi dimensioni può essere costosa a causa dell'utilizzo di acceleratori, quindi devi concentrarti sull'utilizzo efficiente delle risorse. La selezione del tipo di macchina e dell'acceleratore giusti è fondamentale per assicurarti di abbinare la memoria dell'acceleratore alle dimensioni e al livello di quantizzazione del modello. Ad esempio, le istanze G2 con GPU NVIDIA L4 possono essere convenienti per i modelli più piccoli, mentre le istanze A3 sono più adatte per quelli più grandi.
Segui questi suggerimenti e consigli per massimizzare l'efficienza in termini di costi:
- Utilizza Avvio rapido dell'inferenza per ottenere gli acceleratori consigliati in base alle tue esigenze di rendimento.
- Utilizza tecniche come la quantizzazione e il raggruppamento delle richieste per migliorare l'efficienza della pubblicazione. Per scoprire di più, consulta le best practice per l'ottimizzazione dell'inferenza di modelli linguistici di grandi dimensioni con GPU.
Utilizza la scalabilità automatica, che regola dinamicamente le risorse in base alla domanda. Ciò può portare a risparmi sui costi, in particolare per i carichi di lavoro variabili. Per saperne di più, consulta le seguenti guide:
Prestazioni
Per ottimizzare le prestazioni di inferenza su GKE, concentrati sulle seguenti metriche di benchmark:
Indicatori di benchmark | Metrica (unità di misura) | Descrizione |
---|---|---|
Latenza | Tempo di elaborazione del primo token (TTFT) (ms) | Tempo necessario per generare il primo token per una richiesta. |
Tempo normalizzato per token di output (NTPOT) (ms) | Latenza della richiesta normalizzata per il numero di token di output, misurata in request_latency / total_output_tokens . |
|
Tempo per token di output (TPOT) (ms) | Tempo necessario per generare un token di output, misurato in (request_latency - time_to_first_token) / (total_output_tokens - 1) . |
|
Latenza inter-token (ITL) (ms) | Misura la latenza tra due generazioni di token di output. A differenza del TPOT, che misura la latenza nell'intera richiesta, l'ITL misura il tempo necessario per generare ogni singolo token di output. Queste singole misurazioni vengono poi aggregate per produrre valori medi, mediani e percentile, come p90. | |
Latenza della richiesta (ms) | Tempo end-to-end per completare una richiesta. | |
Velocità effettiva | Richieste al secondo | Numero totale di richieste che gestisci al secondo. Tieni presente che questa metrica potrebbe non essere un modo affidabile per misurare il throughput dell'LLM perché può variare notevolmente a seconda della lunghezza del contesto. |
Token di output al secondo | Una metrica comune misurata in total_output_tokens_generated_by_server / elapsed_time_in_seconds . |
|
Token di input al secondo | Misurato come total_input_tokens_generated_by_server / elapsed_time_in_seconds . |
|
Token al secondo | Misurato come total_tokens_generated_by_server / elapsed_time_in_seconds . Questa metrica conteggia sia i token di input che quelli di output, consentendoti di confrontare i carichi di lavoro con precompilazione elevata rispetto a tempi di decodifica elevati. |
Per provare il benchmark delle prestazioni dei tuoi carichi di lavoro, segui le istruzioni riportate in AI-Hypercomputer/inference-benchmark.
Prendi in considerazione questi suggerimenti e consigli aggiuntivi per il rendimento:
- Per ottenere gli acceleratori consigliati in base alle tue esigenze di prestazioni, utilizza la guida rapida all'inferenza.
- Per migliorare il rendimento, utilizza tecniche di ottimizzazione del server del modello come il batching e PagedAttention, che sono descritte nella nostra guida alle best practice. Inoltre, dai la priorità a una gestione efficiente della memoria e al calcolo dell'attenzione per latenze inter-token costantemente basse.
- Utilizza metriche standardizzate sui server dei modelli (ad esempio Hugging Face TGI, vLLM o NVIDIA Triton) per migliorare l'autoscaling e il bilanciamento del carico, in modo da ottenere un throughput più elevato con la latenza scelta. GKE fornisce il monitoraggio automatico delle applicazioni per diversi server di modelli.
- Utilizza le funzionalità di infrastruttura di rete di GKE come Inference Gateway per ridurre al minimo la latenza.
Ottenibilità
Garantire l'ottenibilità delle risorse (CPU, GPU e TPU) è fondamentale per mantenere le prestazioni, la disponibilità e l'economicità dei workload di inferenza. I carichi di lavoro di inferenza spesso presentano pattern di traffico irregolari e imprevedibili, che possono mettere a dura prova la capacità hardware. GKE risolve questi problemi con funzionalità come le seguenti:
- Opzioni di consumo delle risorse: scegli tra opzioni come prenotazioni per capacità garantita, scalabilità economica, Dynamic Workload Scheduler, e VM spot per ottimizzazione dei costi e accesso on demand per disponibilità immediata.
- Dimensionamento adeguato delle risorse: ad esempio, Google Cloud offre VM A3 High di dimensioni ridotte con GPU NVIDIA H100 (1 g, 2 g o 4 g) per il scaling dell'inferenza dell'IA generativa a basso costo che supporta le VM Spot.
- Classi di calcolo per gli acceleratori: puoi utilizzare le classi di calcolo personalizzate per un controllo più granulare, per impedire il provisioning eccessivo e massimizzare l'ottenibilità delle risorse con opzioni di fallback automatico.
Upgrade dei nodi
GKE automatizza gran parte del processo di upgrade, ma devi considerare le strategie di upgrade, in particolare per la compatibilità e i test. Per gli upgrade manuali, puoi scegliere tra upgrade surge o blue-green in base alla tolleranza all'interruzione del tuo carico di lavoro di inferenza. Gli upgrade per picchi sono rapidi, ma possono influire brevemente sui servizi. Gli upgrade blu/verdi offrono tempi di inattività quasi nulli, che sono fondamentali per l'inferenza in tempo reale. Per scoprire di più, consulta Strategie di upgrade dei nodi.
Le GPU e le TPU non supportano la migrazione live, pertanto la manutenzione richiede il riavvio degli pod. Utilizza le notifiche di GKE per prepararti alle interruzioni. Ti consigliamo di utilizzare i budget di interruzione dei pod (PDB) per garantire che rimanga disponibile un numero minimo di pod. Assicurati che i pod possano gestire in modo corretto l'interruzione. I slice TPU possono essere interrotti da singoli eventi host, quindi pianifica la ridondanza. Per altre best practice, consulta Gestire l'interruzione dei nodi GKE per GPU e TPU.
Prova gli esempi di inferenza
Trova esempi di deployment di GKE per modelli di IA generativa, acceleratori e server di modelli. Se hai appena iniziato, ti consigliamo di esplorare il tutorial su come pubblicare i modelli aperti di Gemma utilizzando le GPU su GKE con vLLM.
In alternativa, cerca un tutorial per parola chiave:
Passaggi successivi
- Visita il portale di orchestrazione di AI/ML su GKE per esplorare le nostre guide, i tutorial e i casi d'uso ufficiali per l'esecuzione di workload AI/ML su GKE.
- Per scoprire di più sull'ottimizzazione della pubblicazione dei modelli, consulta Best practice per l'ottimizzazione dell'inferenza di modelli linguistici di grandi dimensioni con GPU. Copre le best practice per la pubblicazione di LLM con GPU su GKE, come quantizzazione, parallelismo di tensori e gestione della memoria.
- Scopri altri esempi, best practice e strumenti nel repository GitHub di ai-on-gke.