Questo documento nella Google Cloud Well-Architected Framework: prospettiva AI e ML fornisce principi e consigli per aiutarti a ottimizzare le prestazioni dei tuoi carichi di lavoro AI e ML su Google Cloud. I consigli riportati in questo documento sono in linea con il pilastro dell'ottimizzazione del rendimento del framework Well-Architected.
I sistemi di AI e ML consentono funzionalità avanzate di automazione e processo decisionale per la tua organizzazione. Il rendimento di questi sistemi può influire direttamente su importanti fattori di business come entrate, costi e soddisfazione dei clienti. Per realizzare il pieno potenziale dei sistemi di AI e ML, devi ottimizzarne le prestazioni in base ai tuoi obiettivi aziendali e ai requisiti tecnici. Il processo di ottimizzazione delle prestazioni spesso comporta dei compromessi. Ad esempio, una scelta di progettazione che offre le prestazioni richieste potrebbe comportare costi più elevati. I consigli contenuti in questo documento danno la priorità al rendimento rispetto ad altre considerazioni.
Per ottimizzare le prestazioni dell'AI e del machine learning, devi prendere decisioni in merito a fattori come l'architettura del modello, i parametri e la strategia di addestramento. Quando prendi queste decisioni, considera l'intero ciclo di vita dei sistemi di AI e ML e il loro ambiente di deployment. Ad esempio, gli LLM molto grandi possono avere prestazioni elevate su un'infrastruttura di addestramento massiccia, ma potrebbero non funzionare bene in ambienti con capacità limitata come i dispositivi mobili.
I consigli contenuti in questo documento sono mappati ai seguenti principi fondamentali:
- Stabilire obiettivi di rendimento e metodi di valutazione
- Esegui e monitora esperimenti frequenti
- Crea e automatizza l'infrastruttura di addestramento e serving
- Abbinare le scelte di progettazione ai requisiti di rendimento
- Collegare le metriche di rendimento alle scelte di progettazione e configurazione
Stabilire obiettivi di rendimento e metodi di valutazione
La tua strategia e i tuoi obiettivi aziendali sono la base per sfruttare le tecnologie di AI e ML. Trasforma i tuoi obiettivi commerciali in indicatori chiave di prestazione (KPI) misurabili. Alcuni esempi di KPI includono entrate totali, costi, tasso di conversione, tasso di fidelizzazione o abbandono, soddisfazione dei clienti e soddisfazione dei dipendenti.
Definisci obiettivi realistici
Secondo le best practice di Site Reliability Engineering (SRE), gli obiettivi di un servizio devono riflettere un livello di prestazioni che soddisfi i requisiti dei clienti tipici. Ciò significa che gli obiettivi di servizio devono essere realistici in termini di scalabilità e prestazioni delle funzionalità.
Obiettivi irrealistici possono portare a uno spreco di risorse per ottenere miglioramenti minimi delle prestazioni. I modelli che offrono le prestazioni più elevate potrebbero non portare a risultati aziendali ottimali. L'addestramento e l'esecuzione di questi modelli potrebbero richiedere più tempo e costi.
Quando definisci gli obiettivi, distingui e dai la priorità agli obiettivi di qualità e rendimento:
- Qualità si riferisce alle caratteristiche intrinseche che determinano il valore di un'entità. Ti aiuta a valutare se l'entità soddisfa le tue aspettative e i tuoi standard.
- Rendimento indica l'efficienza e l'efficacia con cui un'entità funziona o svolge il suo scopo previsto.
Gli ingegneri ML possono migliorare le metriche di rendimento di un modello durante il processo di addestramento. Vertex AI fornisce un servizio di valutazione che gli ingegneri ML possono utilizzare per implementare il monitoraggio standardizzato e ripetibile delle metriche di qualità. L'efficienza della previsione di un modello indica il rendimento di un modello in produzione o al momento dell'inferenza. Per monitorare le prestazioni, utilizza Cloud Monitoring e Vertex AI Model Monitoring. Per selezionare i modelli appropriati e decidere come addestrarli, devi tradurre gli obiettivi aziendali in requisiti tecnici che determinano la qualità e le metriche di rendimento.
Per capire come impostare obiettivi realistici e identificare metriche di rendimento appropriate, considera il seguente esempio per un sistema di rilevamento delle frodi basato sull'AI:
- Obiettivo commerciale: per un sistema di rilevamento delle frodi, un obiettivo commerciale irrealistico è rilevare con precisione il 100% delle transazioni fraudolente entro un nanosecondo a un picco di traffico di 100 miliardi di transazioni al secondo. Un obiettivo più realistico è rilevare le transazioni fraudolente con una precisione del 95% in 100 millisecondi per il 90% delle previsioni online durante l'orario di lavoro negli Stati Uniti a un volume di picco di un milione di transazioni al secondo.
- Metriche di rendimento: il rilevamento delle frodi è un problema di classificazione. Puoi misurare la qualità di un sistema di rilevamento delle frodi utilizzando metriche come richiamo, punteggio F1 e accuratezza. Per monitorare le prestazioni o la velocità del sistema, puoi misurare la latenza di inferenza. Il rilevamento di transazioni potenzialmente fraudolente potrebbe essere più importante dell'accuratezza. Pertanto, un obiettivo realistico potrebbe essere un richiamo elevato con una latenza p90 inferiore a 100 millisecondi.
Monitorare il rendimento in tutte le fasi del ciclo di vita del modello
Durante la sperimentazione e l'addestramento e dopo il deployment del modello, monitora i tuoi KPI e osserva eventuali scostamenti dagli obiettivi aziendali. Una strategia di monitoraggio completa ti aiuta a prendere decisioni fondamentali sulla qualità del modello e sull'utilizzo delle risorse, ad esempio:
- Decidere quando interrompere un job di addestramento.
- Determinare se le prestazioni di un modello stanno peggiorando in produzione.
- Migliorare i costi e il time-to-market per i nuovi modelli.
Monitoraggio durante la sperimentazione e l'addestramento
L'obiettivo della fase di sperimentazione è trovare l'approccio, l'architettura del modello e gli iperparametri ottimali per un'attività specifica. La sperimentazione ti aiuta a determinare in modo iterativo la configurazione che offre prestazioni ottimali e come addestrare il modello. Il monitoraggio ti aiuta a identificare in modo efficiente le potenziali aree di miglioramento.
Per monitorare la qualità e l'efficienza dell'addestramento di un modello, gli ingegneri ML devono svolgere le seguenti operazioni:
- Visualizza le metriche di qualità e prestazioni del modello per ogni prova.
- Visualizza grafici e metriche del modello, ad esempio istogrammi di pesi e bias.
- Rappresentare visivamente i dati di addestramento.
- Esegui il profiling degli algoritmi di addestramento su hardware diversi.
Per monitorare l'esperimento e l'addestramento, prendi in considerazione i seguenti suggerimenti:
| Aspetto del monitoraggio | Suggerimento |
|---|---|
| Qualità del modello | Per visualizzare e monitorare le metriche degli esperimenti, come l'accuratezza, e per visualizzare l'architettura del modello o i dati di addestramento, utilizza TensorBoard. TensorBoard è una suite di strumenti open source compatibile con framework ML come i seguenti:
|
| Monitoraggio degli esperimenti | Vertex AI Experiments si integra con le istanze di Vertex AI TensorBoard gestite di livello enterprise per supportare il monitoraggio degli esperimenti. Questa integrazione consente l'archiviazione e la condivisione affidabili di log e metriche. Per consentire a più team e persone di monitorare gli esperimenti, ti consigliamo di utilizzare il principio del privilegio minimo. |
| Efficienza di addestramento e sperimentazione | Vertex AI esporta le metriche in Monitoring e raccoglie dati di telemetria e log utilizzando un agente di osservabilità. Puoi visualizzare le metriche nella console Google Cloud . In alternativa, crea dashboard o avvisi basati su queste metriche utilizzando Monitoring. Per saperne di più, consulta Metriche di monitoraggio per Vertex AI. |
| GPU NVIDIA | L'agente Ops consente il monitoraggio della GPU per Compute Engine e per altri prodotti supportati dallOps Agent Ops. Puoi anche utilizzare NVIDIA Data Center GPU Manager (DCGM), una suite di strumenti per la gestione e il monitoraggio delle GPU NVIDIA in ambienti cluster. Il monitoraggio delle GPU NVIDIA è particolarmente utile per l'addestramento e la gestione di modelli di deep learning. |
| Debug approfondito | Per eseguire il debug dei problemi relativi al codice di addestramento o alla configurazione di un job di Vertex AI Training, puoi esaminare il contenitore di addestramento utilizzando una sessione shell interattiva. |
Monitoraggio durante la pubblicazione: previsione flussi di dati
Dopo aver addestrato un modello ed esportato in Vertex AI Model Registry, puoi creare un endpoint Vertex AI. Questo endpoint fornisce un endpoint HTTP per il modello.
Il monitoraggio dei modelli ti aiuta a identificare grandi variazioni nella distribuzione delle funzionalità di input o output. Puoi anche monitorare le attribuzioni delle caratteristiche in produzione rispetto a una distribuzione di base. La distribuzione di base può essere il set di addestramento o può basarsi sulle distribuzioni passate del traffico di produzione. Una variazione della distribuzione della pubblicazione potrebbe comportare una riduzione del rendimento predittivo rispetto all'addestramento.
- Scegli un obiettivo di monitoraggio: a seconda della sensibilità di un caso d'uso alle modifiche dei dati forniti al modello, puoi monitorare diversi tipi di obiettivi: deviazione delle funzionalità di input, deviazione dell'output e attribuzione delle funzionalità. Model Monitoring v2 ti consente di monitorare i modelli di cui esegui il deployment su una piattaforma di gestione gestita come Vertex AI e anche su servizi self-hosted come Google Kubernetes Engine (GKE). Inoltre, per un monitoraggio granulare del rendimento, puoi monitorare i parametri a livello di modello anziché per un endpoint.
- Monitora l'erogazione del modello di AI generativa: per garantire la stabilità e ridurre al minimo la latenza, in particolare per gli endpoint LLM, configura uno stack di monitoraggio robusto. I modelli Gemini forniscono metriche integrate, come il tempo al primo token (TTFT), a cui puoi accedere direttamente in Esplora metriche. Per monitorare velocità effettiva, latenza e tassi di errore in tutti i modelliGoogle Cloud , utilizza la dashboard di osservabilità dei modelli.
Monitoraggio durante la pubblicazione: previsione batch
Per monitorare la previsione in batch, puoi eseguire job di valutazione standard nel servizio di valutazione Vertex AI. Il monitoraggio dei modelli supporta il monitoraggio delle inferenze batch. Se utilizzi Batch per eseguire il carico di lavoro di pubblicazione, puoi monitorare il consumo di risorse utilizzando le metriche in Metrics Explorer.
Automatizzare la valutazione per la riproducibilità e la standardizzazione
Per passare dai prototipi ai sistemi di produzione affidabili, è necessario un processo di valutazione standardizzato. Questo processo ti aiuta a monitorare i progressi nelle varie iterazioni, confrontare diversi modelli, rilevare e mitigare i bias e assicurarti di soddisfare i requisiti normativi. Per garantire la riproducibilità e la scalabilità, devi automatizzare la procedura di valutazione.
Per standardizzare e automatizzare la procedura di valutazione del rendimento ML, completa i seguenti passaggi:
- Definisci indicatori quantitativi e qualitativi.
- Scegli le origini dati e le tecniche appropriate.
- Standardizza la pipeline di valutazione.
Questi passaggi sono descritti nelle sezioni seguenti.
1. Definisci indicatori quantitativi e qualitativi
Le metriche basate su calcolo vengono calcolate utilizzando formule numeriche. Ricorda che le metriche di perdita di addestramento potrebbero differire dalle metriche di valutazione pertinenti agli obiettivi aziendali. Ad esempio, un modello utilizzato per il rilevamento supervisionato delle frodi potrebbe utilizzare la perdita di entropia incrociata per l'addestramento. Tuttavia, per valutare le prestazioni dell'inferenza, una metrica più pertinente potrebbe essere il recupero, che indica la copertura delle transazioni fraudolente. Vertex AI fornisce un servizio di valutazione per metriche come richiamo, precisione e area sotto la curva di precisione-richiamo (AuPRC). Per ulteriori informazioni, consulta Valutazione dei modelli in Vertex AI.
Gli indicatori qualitativi, come la fluidità o il valore di intrattenimento dei contenuti generati, non possono essere calcolati in modo oggettivo. Per valutare questi indicatori, puoi utilizzare la strategia LLM-as-a-judge o servizi di etichettatura umana come Labelbox.
2. Scegliere origini dati e tecniche appropriate
Una valutazione è statisticamente significativa quando viene eseguita su un determinato volume minimo di esempi vari. Scegli i set di dati e le tecniche che utilizzi per le valutazioni utilizzando approcci come i seguenti:
- Set di dati di riferimento: utilizza campioni di dati attendibili, coerenti e accurati che riflettano la distribuzione di probabilità di un modello in produzione.
- LLM-as-a-judge: valuta l'output di un modello generativo utilizzando un LLM. Questo approccio è pertinente solo per le attività in cui un LLM può valutare un modello.
- Feedback degli utenti: per guidare i miglioramenti futuri, acquisisci il feedback diretto degli utenti come parte del traffico di produzione.
A seconda della tecnica di valutazione, delle dimensioni e del tipo di dati di valutazione e della frequenza di valutazione, puoi utilizzare BigQuery o Cloud Storage come origini dati, anche per il servizio di valutazione Vertex AI.
- BigQuery consente di utilizzare i comandi SQL per eseguire attività di inferenza come l'elaborazione del linguaggio naturale e la traduzione automatica. Per ulteriori informazioni, consulta Panoramica delle soluzioni specifiche per attività.
- Cloud Storage offre una soluzione di archiviazione conveniente per set di dati di grandi dimensioni.
3. Standardizza la pipeline di valutazione
Per automatizzare il processo di valutazione, prendi in considerazione i seguenti servizi e strumenti:
- Servizio di valutazione Vertex AI: Fornisce primitive pronte all'uso per monitorare le prestazioni del modello nell'ambito del ciclo di vita ML su Vertex AI.
- Gen AI evaluation service: Consente di valutare qualsiasi modello o applicazione generativa e confrontare i risultati della valutazione in base al tuo giudizio e ai tuoi criteri di valutazione. Questo servizio ti aiuta anche a svolgere attività specializzate come l'ingegneria dei prompt, la generazione RAG (Retrieval-Augmented Generation) e l'ottimizzazione degli agenti AI.
- Strumento Automatic Side-by-Side (AutoSxS) di Vertex AI: Supporta la valutazione basata su modelli a coppie.
- Kubeflow: Fornisce componenti speciali per eseguire le valutazioni del modello.
Eseguire e monitorare esperimenti frequenti
Per ottimizzare in modo efficace le prestazioni di ML, hai bisogno di una piattaforma dedicata, potente e interattiva per la sperimentazione. La piattaforma deve avere le seguenti funzionalità:
- Facilitare lo sviluppo iterativo, in modo che i team possano passare dall'idea ai risultati con velocità, affidabilità e scalabilità.
- Consente ai team di scoprire in modo efficiente le configurazioni ottimali che possono utilizzare per attivare i job di addestramento.
- Fornisci un accesso controllato a dati, funzionalità e strumenti pertinenti per eseguire e monitorare gli esperimenti.
- Supporta la riproducibilità e il monitoraggio della provenienza dei dati.
Trattare i dati come un servizio
Isola i carichi di lavoro sperimentali dai sistemi di produzione e configura controlli di sicurezza appropriati per le tue risorse di dati utilizzando le seguenti tecniche:
| Tecnica | Descrizione | Vantaggi |
|---|---|---|
| Isolamento delle risorse | Isola le risorse per ambienti diversi
in progetti Google Cloud separati. Ad esempio, esegui il provisioning delle risorse per gli ambienti di sviluppo, gestione temporanea e produzione in progetti separati come ml-dev, ml-staging e ml-prod. |
L'isolamento delle risorse contribuisce a impedire che i workload sperimentali consumino le risorse necessarie ai sistemi di produzione. Ad esempio, se utilizzi un singolo progetto per esperimenti e produzione, un esperimento potrebbe consumare tutte le GPU NVIDIA A100 disponibili per Vertex AI Training. Ciò potrebbe causare interruzioni nel retraining di un modello di produzione critico. |
| Controllo dell'accesso e dell'identità | Applica i principi di
Zero Trust e privilegi minimi e
utilizza service account specifici per il workload. Concedi l'accesso utilizzando
ruoli IAM (Identity and Access Management) predefiniti come
Utente Vertex AI
(roles/aiplatform.user). |
Questo approccio aiuta a prevenire azioni accidentali o dannose che potrebbero danneggiare gli esperimenti. |
| Sicurezza della rete | Isola il traffico di rete utilizzando le reti Virtual Private Cloud (VPC) e applica perimetri di sicurezza utilizzando i Controlli di servizio VPC. | Questo approccio contribuisce a proteggere i dati sensibili e impedisce al traffico sperimentale di influire sui servizi di produzione. |
| Isolamento dei dati | Archivia i dati sperimentali in bucket Cloud Storage e set di dati BigQuery separati. | L'isolamento dei dati impedisce la modifica accidentale dei dati di produzione. Ad esempio, senza l'isolamento dei dati, un esperimento potrebbe alterare inavvertitamente i valori delle funzionalità in una tabella BigQuery condivisa, il che potrebbe comportare un significativo peggioramento dell'accuratezza del modello nell'ambiente di produzione. |
Fornire ai team gli strumenti appropriati
Per creare un insieme selezionato di strumenti per accelerare l'intero ciclo di vita della sperimentazione, dall'esplorazione dei dati all'addestramento e all'analisi dei modelli, utilizza le seguenti tecniche:
- Prototipazione interattiva: per l'esplorazione rapida dei dati, il test delle ipotesi e la prototipazione del codice, utilizza Colab Enterprise o istanze JupyterLab gestite su Vertex AI Workbench. Per saperne di più, vedi Scegliere una soluzione di notebook.
- Addestramento scalabile dei modelli: esegui job di addestramento su un servizio gestito che supporta l'addestramento distribuito e risorse di calcolo scalabili come GPU e TPU. Questo approccio consente di ridurre i tempi di addestramento da giorni a ore e consente una sperimentazione più parallela. Per saperne di più, consulta Utilizzare componenti specializzati per l'addestramento.
- ML nel database: addestra i modelli direttamente in BigQuery ML utilizzando SQL. Questa tecnica contribuisce a eliminare lo spostamento dei dati e accelera la sperimentazione per analisti e utenti incentrati su SQL.
- Monitoraggio degli esperimenti: crea una cronologia ricercabile e confrontabile dei dati degli esperimenti registrando parametri, metriche e artefatti per ogni esecuzione dell'esperimento. Per saperne di più, consulta Creare un sistema di lineage di dati e modelli.
- Ottimizzazione dell'AI generativa: per ottimizzare le prestazioni delle applicazioni di AI generativa, devi sperimentare con prompt, selezione del modello e perfezionamento. Per il prompt engineering rapido, utilizza Vertex AI Studio. Per sperimentare con i modelli di base (come Gemini) e trovare un modello adatto al tuo caso d'uso e ai tuoi obiettivi di business, utilizza Model Garden.
Standardizza per riproducibilità ed efficienza
Per garantire che gli esperimenti utilizzino le risorse in modo efficiente e producano risultati coerenti e affidabili, standardizza e automatizza gli esperimenti utilizzando i seguenti approcci:
- Garantisci ambienti coerenti utilizzando i container: pacchettizza il codice di addestramento e le dipendenze come container Docker. Gestisci e pubblica i container utilizzando Artifact Registry. Questo approccio ti consente di riprodurre i problemi su macchine diverse ripetendo gli esperimenti in ambienti identici. Vertex AI fornisce container predefiniti per l'addestramento serverless.
- Automatizzare i workflow ML come pipeline: orchestra il workflow ML end-to-end come pipeline codificata utilizzando Vertex AI Pipelines. Questo approccio contribuisce a garantire la coerenza, la riproducibilità e a monitorare automaticamente tutti gli artefatti e i metadati in Vertex ML Metadata.
- Automatizza il provisioning con Infrastructure as Code (IaC): definisci ed esegui il deployment di ambienti di sperimentazione standardizzati utilizzando strumenti IaC come Terraform. Per garantire che ogni progetto rispetti un insieme standardizzato di configurazioni per sicurezza, networking e governance, utilizza i moduli Terraform.
Crea e automatizza l'infrastruttura di addestramento e gestione
Per addestrare e gestire modelli di AI, configura una piattaforma solida che supporti lo sviluppo, il deployment e la gestione efficienti e affidabili. Questa piattaforma consente ai tuoi team di migliorare in modo efficiente la qualità e il rendimento dell'addestramento e della pubblicazione nel lungo periodo.
Utilizzare componenti specializzati per l'addestramento
Una piattaforma di addestramento affidabile contribuisce ad accelerare le prestazioni e fornisce un approccio standardizzato per automatizzare le attività ripetibili nel ciclo di vita di ML, dalla preparazione dei dati alla convalida del modello.
Raccolta e preparazione dei dati: per un addestramento efficace del modello, devi raccogliere e preparare i dati necessari per l'addestramento, il test e la convalida. I dati potrebbero provenire da origini diverse ed essere di tipi diversi. Devi anche riutilizzare i dati pertinenti in più sessioni di addestramento e condividere le funzionalità tra i team. Per migliorare la ripetibilità della fase di raccolta e preparazione dei dati, prendi in considerazione i seguenti consigli:
- Migliora la rilevabilità dei dati con Dataplex Universal Catalog.
- Centralizza l'feature engineering in Vertex AI Feature Store.
- Pre-elabora i dati utilizzando Dataflow.
Esecuzione dell'addestramento: quando addestri un modello, utilizzi i dati per creare un oggetto modello. Per farlo, devi configurare l'infrastruttura e le dipendenze necessarie del codice di addestramento. Devi anche decidere come rendere persistenti i modelli di addestramento, monitorare l'avanzamento dell'addestramento, valutare il modello e presentare i risultati. Per migliorare la ripetibilità dell'addestramento, valuta i seguenti consigli:
- Segui le linee guida riportate in Automatizzare la valutazione per la riproducibilità e la standardizzazione.
- Per inviare job di addestramento su uno o più nodi di lavoro senza gestire il provisioning dell'infrastruttura sottostante o le dipendenze, utilizza la risorsa
CustomJobin Vertex AI Training. Puoi anche utilizzare la risorsaCustomJobper i job di ottimizzazione degli iperparametri. - Ottimizza il goodput di pianificazione utilizzando Dynamic Workload Scheduler o prenotazioni per Vertex AI Training.
- Registra i tuoi modelli in Vertex AI Model Registry.
Orchestrazione dell'addestramento: esegui il deployment dei carichi di lavoro di addestramento come fasi di una pipeline utilizzando Vertex AI Pipelines. Questo servizio fornisce servizi gestiti Kubeflow e TFX. Definisci ogni passaggio della pipeline come un componente che viene eseguito in un container. Ogni componente funziona come una funzione, con parametri di input e artefatti di output che diventano input per i componenti successivi della pipeline. Per ottimizzare l'efficienza della pipeline, valuta i consigli riportati nella tabella seguente:
Obiettivo Consigli Implementa l'automazione di base. - Utilizza i componenti di Kubeflow Pipelines.
- Utilizza Control Flows per progetti di pipeline avanzati, come i gate condizionali.
- Integra la compilazione della pipeline come parte del tuo flusso CI/CD.
- Esegui la pipeline con Cloud Scheduler.
Aumentare la velocità e l'efficienza dei costi. - Per aumentare la velocità delle iterazioni e ridurre i costi, utilizza la cache di esecuzione di Vertex AI Pipelines.
- Specifica la configurazione della macchina per ogni componente in base ai requisiti delle risorse di ogni passaggio.
Aumentare la robustezza. - Per aumentare la robustezza contro i problemi temporanei senza richiedere interventi manuali, configura i tentativi.
- Per fallire rapidamente e iterare in modo efficiente, configura una policy di errore.
- Per gestire gli errori, configura le notifiche email.
Implementa la governance e il monitoraggio. - Per sperimentare diverse configurazioni del modello o di addestramento, aggiungi esecuzioni della pipeline agli esperimenti.
- Monitora i log e le metriche per Vertex AI Pipelines.
- Segui i suggerimenti riportati in Monitorare il rendimento in tutte le fasi del ciclo di vita del modello.
Utilizzo di un'infrastruttura specializzata per la previsione
Per ridurre il lavoro manuale di gestione dell'infrastruttura e dei deployment dei modelli, automatizza i flussi di attività ripetibili. Un approccio orientato ai servizi ti consente di concentrarti sulla velocità e su un time to value (TTV) più rapido. Considera i seguenti consigli:
| Suggerimento | Tecniche |
|---|---|
| Implementa il deployment automatico. |
|
| Sfrutta le funzionalità di scalabilità gestita. |
|
| Ottimizza la latenza e il throughput sugli endpoint Vertex AI. |
|
| Ottimizza l'utilizzo delle risorse. |
|
| Ottimizza il deployment del modello. |
|
| Monitorare le prestazioni. |
|
Abbinare le scelte di progettazione ai requisiti di rendimento
Quando fai scelte di progettazione per migliorare il rendimento, valuta se le scelte supportano i requisiti aziendali o sono dispendiose e controproducenti. Per scegliere infrastrutture, modelli e configurazioni appropriati, identifica i colli di bottiglia delle prestazioni e valuta il loro collegamento alle metriche sulle prestazioni. Ad esempio, anche su acceleratori GPU molto potenti, le attività di addestramento possono riscontrare colli di bottiglia delle prestazioni. Questi colli di bottiglia possono essere causati da problemi di I/O dei dati nel livello di archiviazione o da limitazioni delle prestazioni del modello.
Concentrati sulle prestazioni olistiche del flusso ML
Man mano che i requisiti di addestramento aumentano in termini di dimensioni del modello e del cluster, il tasso di errore e i costi dell'infrastruttura potrebbero aumentare. Pertanto, il costo del guasto potrebbe aumentare in modo quadratico. Non puoi fare affidamento esclusivamente su metriche convenzionali di efficienza delle risorse come l'utilizzo FLOP del modello (MFU). Per capire perché MFU potrebbe non essere un indicatore sufficiente delle prestazioni complessive dell'addestramento, esamina il ciclo di vita di un tipico job di addestramento. Il ciclo di vita è costituito dal seguente flusso ciclico:
- Creazione del cluster: è stato eseguito il provisioning dei nodi worker.
- Inizializzazione: l'addestramento viene inizializzato sui nodi worker.
- Esecuzione dell'addestramento: le risorse vengono utilizzate per la propagazione avanti o indietro.
- Interruzione: il processo di addestramento viene interrotto durante il checkpointing del modello o a causa di interruzioni dei nodi di lavoro.
Dopo ogni interruzione, il flusso precedente viene ripetuto.
Il passaggio di esecuzione dell'addestramento costituisce una frazione del ciclo di vita di un job di machine learning. Pertanto, l'utilizzo dei nodi worker per il passaggio di esecuzione dell'addestramento non indica l'efficienza complessiva del job. Ad esempio, anche se il passaggio di esecuzione dell'addestramento viene eseguito con un'efficienza del 100%, l'efficienza complessiva potrebbe essere bassa se si verificano interruzioni frequenti o se è necessario molto tempo per riprendere l'addestramento dopo le interruzioni.
Adottare e monitorare le metriche di goodput
Per garantire una misurazione e un'ottimizzazione olistiche del rendimento, sposta l'attenzione dalle metriche convenzionali di efficienza delle risorse come MFU al goodput. Il goodput tiene conto della disponibilità e dell'utilizzo dei cluster e delle risorse di computing e aiuta a misurare l'efficienza delle risorse su più livelli.
L'obiettivo delle metriche goodput è il progresso complessivo di un job, non se il job sembra occupato. Le metriche goodput ti aiutano a ottimizzare i job di addestramento per ottenere miglioramenti complessivi tangibili in termini di produttività e rendimento.
Il goodput ti offre una comprensione granulare delle potenziali perdite di efficienza attraverso le seguenti metriche:
- Il goodput di pianificazione è la frazione di tempo in cui tutte le risorse necessarie per l'addestramento o la distribuzione sono disponibili per l'uso.
- Il goodput di runtime rappresenta la proporzione di passaggi di addestramento utili che vengono completati in un determinato periodo.
- Il goodput del programma è il picco di prestazioni hardware o MFU che un job di addestramento può estrarre dall'acceleratore. Dipende dall'utilizzo efficiente delle risorse di calcolo sottostanti durante l'addestramento.
Ottimizzare il goodput di pianificazione
Per ottimizzare il goodput della pianificazione per un workload, devi identificare i requisiti specifici dell'infrastruttura del workload. Ad esempio, l'inferenza batch, l'inferenza in streaming e l'addestramento hanno requisiti diversi:
- I carichi di lavoro di inferenza batch potrebbero tollerare alcune interruzioni e ritardi nella disponibilità delle risorse.
- I carichi di lavoro di inferenza di streaming richiedono un'infrastruttura stateless.
- I workload di addestramento richiedono impegni infrastrutturali a lungo termine.
Scegli le modalità di ottenibilità appropriate
Nel cloud computing, l'ottenibilità è la capacità di eseguire il provisioning delle risorse quando sono necessarie. Google Cloud fornisce le seguenti modalità di ottenibilità:
- VM on demand: esegui il provisioning delle VM di Compute Engine quando sono necessarie ed esegui i carichi di lavoro sulle VM. La richiesta di provisioning è soggetta alla disponibilità di risorse, come le GPU. Se non è disponibile una quantità sufficiente di un tipo di risorsa richiesto, la richiesta non va a buon fine.
- VM spot: crei VM utilizzando la capacità di calcolo inutilizzata. Le VM spot vengono fatturate a un prezzo scontato rispetto alle VM on demand, ma Google Cloud potrebbero prerilasciare le VM spot in qualsiasi momento. Ti consigliamo di utilizzare le VM spot per i workload stateless che possono non riuscire in modo controllato quando le VM host vengono prerilasciate.
- Prenotazioni: Prenoti la capacità come pool di VM. Le prenotazioni sono ideali per i workload che richiedono la garanzia di capacità. Utilizza le prenotazioni per massimizzare il goodput della pianificazione, assicurandoti che le risorse siano disponibili quando necessario.
Dynamic Workload Scheduler: questo meccanismo di provisioning mette in coda le richieste di VM basate su GPU in un pool dedicato. Dynamic Workload Scheduler ti aiuta a evitare i vincoli delle altre modalità di ottenibilità:
- Situazioni di esaurimento delle scorte nella modalità on demand.
- Vincolo di statelessness e rischio di prerilascio delle VM spot.
- Implicazioni in termini di costi e disponibilità delle prenotazioni.
La tabella seguente riassume le modalità di ottenimento per i servizi Google Cloud e fornisce link alla documentazione pertinente:
Pianificare gli eventi di manutenzione
Puoi migliorare il goodput della pianificazione prevedendo e pianificando la manutenzione e gli upgrade dell'infrastruttura.
GKE ti consente di controllare quando può essere eseguita la manutenzione automatica dei cluster. Per maggiori informazioni, consulta Periodi di manutenzione ed esclusioni.
Compute Engine offre le seguenti funzionalità:
- Per mantenere in esecuzione un'istanza durante un evento dell'host, ad esempio la manutenzione pianificata dell'hardware sottostante, Compute Engine esegue una migrazione live dell'istanza a un altro host nella stessa zona. Per saperne di più, consulta Processo di migrazione live durante gli eventi di manutenzione.
- Per controllare il modo in cui un'istanza risponde quando l'host sottostante richiede manutenzione o presenta un errore, puoi impostare una policy di manutenzione dell'host per l'istanza.
Per informazioni sulla pianificazione degli eventi host correlati a cluster di training di grandi dimensioni in AI Hypercomputer, consulta Gestire gli eventi host nelle istanze di calcolo.
Ottimizzare il goodput di runtime
Il processo di addestramento del modello viene spesso interrotto da eventi come il checkpointing del modello e la preemptive delle risorse. Per ottimizzare il goodput di runtime, devi assicurarti che il sistema riprenda l'addestramento e l'inferenza in modo efficiente dopo che l'infrastruttura richiesta è pronta e dopo qualsiasi interruzione.
Durante l'addestramento del modello, i ricercatori di AI utilizzano il checkpointing per monitorare i progressi e ridurre al minimo l'apprendimento perso a causa del preempting delle risorse. Le dimensioni maggiori del modello rendono più lunghe le interruzioni del checkpoint, il che influisce ulteriormente sull'efficienza complessiva. Dopo le interruzioni, l'applicazione di addestramento deve essere riavviata su ogni nodo del cluster. Questi riavvii possono richiedere del tempo perché gli artefatti necessari devono essere ricaricati.
Per ottimizzare il goodput di runtime, utilizza le seguenti tecniche:
| Tecnica | Descrizione |
|---|---|
| Implementa il checkpointing automatico. | Il checkpointing frequente ti consente di monitorare l'avanzamento dell'addestramento a un livello granulare. Tuttavia, il processo di addestramento viene interrotto per ogni checkpoint, il che riduce il throughput di runtime. Per ridurre al minimo le interruzioni, puoi configurare il checkpointing automatico, in cui il segnale SIGTERM dell'host attiva la creazione di un checkpoint. Questo approccio limita le interruzioni del checkpointing a quando l'host richiede manutenzione. Tieni presente che alcuni errori hardware potrebbero non attivare i segnali SIGTERM, pertanto devi trovare un equilibrio adeguato tra il checkpointing automatico e gli eventi SIGTERM. Puoi configurare il checkpoint automatico utilizzando le seguenti tecniche:
|
| Utilizza strategie di caricamento dei container appropriate. | In un cluster GKE, prima che i nodi possano riprendere i job di addestramento, potrebbe essere necessario del tempo per completare il caricamento degli artefatti richiesti, come i dati o i checkpoint del modello. Per ridurre il tempo necessario per ricaricare i dati e riprendere l'addestramento, utilizza le seguenti tecniche:
Per saperne di più su come ridurre il tempo di ricarica dei dati, consulta Suggerimenti e trucchi per ridurre la latenza di avvio a freddo su GKE. |
| Utilizza la cache di compilazione. | Se l'addestramento richiede uno stack basato sulla compilazione, controlla se puoi utilizzare una cache di compilazione. Quando utilizzi una cache di compilazione, il grafico di calcolo non viene ricompilato dopo ogni interruzione dell'addestramento. Le riduzioni di tempo e costi risultanti sono particolarmente vantaggiose quando utilizzi le TPU. JAX ti consente di archiviare la cache di compilazione in un bucket Cloud Storage e quindi utilizzare i dati memorizzati nella cache in caso di interruzioni. |
Ottimizzare il goodput del programma
Il goodput del programma rappresenta l'utilizzo massimo delle risorse durante l'addestramento, che è il modo convenzionale per misurare l'efficienza dell'addestramento e della distribuzione. Per migliorare il goodput del programma, hai bisogno di una strategia di distribuzione ottimizzata, di una sovrapposizione efficiente tra calcolo e comunicazione, di un accesso alla memoria ottimizzato e di pipeline efficienti.
Per ottimizzare il goodput del programma, utilizza le seguenti strategie:
| Strategia | Descrizione |
|---|---|
| Utilizza le opzioni di personalizzazione a livello di framework. | Framework o compilatori come Accelerated Linear Algebra (XLA) forniscono molti componenti chiave del goodput del programma. Per ottimizzare ulteriormente il rendimento, puoi personalizzare i componenti fondamentali del grafico di calcolo. Ad esempio, Pallas supporta kernel personalizzati per TPU e GPU. |
| Scarica la memoria nella DRAM dell'host. | Per l'addestramento su larga scala, che richiede una memoria significativamente elevata dagli acceleratori, puoi scaricare parte dell'utilizzo della memoria nella DRAM host. Ad esempio, XLA ti consente di scaricare le attivazioni del modello dal passaggio in avanti alla memoria host anziché utilizzare la memoria dell'acceleratore. Con questa strategia, puoi migliorare le prestazioni di addestramento aumentando la capacità del modello o la dimensione del batch. |
| Sfrutta la quantizzazione durante l'addestramento. | Puoi migliorare l'efficienza dell'addestramento e il throughput del programma sfruttando la quantizzazione del modello durante l'addestramento. Questa strategia riduce la precisione dei gradienti o dei pesi durante alcuni passaggi dell'addestramento, pertanto il goodput del programma migliora. Tuttavia, questa strategia potrebbe richiedere un ulteriore sforzo di ingegneria durante lo sviluppo del modello. Per maggiori informazioni, consulta le seguenti risorse: |
| Implementa il parallelismo. | Per aumentare l'utilizzo delle risorse di calcolo disponibili, puoi utilizzare strategie di parallelismo a livello di modello durante l'addestramento e il caricamento dei dati. Per informazioni sul parallelismo del modello, consulta le seguenti risorse:
Per ottenere il parallelismo dei dati, puoi utilizzare strumenti come:
|
Concentrati sui requisiti specifici del carico di lavoro
Per garantire che i tuoi sforzi di ottimizzazione del rendimento siano efficaci e olistici, devi abbinare le decisioni di ottimizzazione ai requisiti specifici dei tuoi carichi di lavoro di addestramento e inferenza. Scegli modelli di AI appropriati e utilizza strategie di ottimizzazione dei prompt pertinenti. Seleziona framework e strumenti appropriati in base ai requisiti dei tuoi workload.
Identificare i requisiti specifici del workload
Valuta i requisiti e i vincoli dei tuoi workload nelle seguenti aree:
| Area | Descrizione |
|---|---|
| Requisiti di attività e qualità | Definisci l'attività principale del workload e la base di riferimento del rendimento. Rispondi a domande come le seguenti:
|
| Contesto di pubblicazione | Analizza l'ambiente operativo in cui prevedi di eseguire il deployment del modello. Il contesto di pubblicazione spesso ha un impatto significativo sulle decisioni di progettazione. Considera i seguenti fattori:
|
| Competenze ed economia del team | Valuta il valore commerciale dell'acquisto della soluzione rispetto al costo e alla complessità della sua creazione e manutenzione. Determina se il tuo team dispone delle competenze specializzate necessarie per lo sviluppo di modelli personalizzati o se un servizio gestito potrebbe fornire un time to value più rapido. |
Scegliere un modello appropriato
Se un'API o un modello aperto può fornire le prestazioni e la qualità richieste, utilizza l'API o il modello.
Per attività specifiche per modalità come il riconoscimento ottico dei caratteri (OCR), l'etichettatura e la moderazione dei contenuti, scegli API ML come le seguenti:
Per le applicazioni di AI generativa, prendi in considerazione i modelli Google come Gemini, Imagen e Veo.
Esplora Model Garden e scegli tra una raccolta curata di modelli di base e specifici per le attività di Google. Model Garden fornisce anche modelli aperti come Gemma e modelli di terze parti, che puoi eseguire in Vertex AI o di cui puoi eseguire il deployment su runtime come GKE.
Se un'attività può essere completata utilizzando un'API ML o un modello di AI generativa, valuta la complessità dell'attività. Per le attività complesse, i modelli di grandi dimensioni come Gemini potrebbero offrire prestazioni migliori rispetto ai modelli più piccoli.
Migliorare la qualità con prompt migliori
Per migliorare la qualità dei prompt su larga scala, utilizza l'ottimizzatore di prompt Vertex AI. Non è necessario riscrivere manualmente le istruzioni e i prompt di sistema. L'ottimizzatore di prompt supporta i seguenti approcci:
- Ottimizzazione zero-shot: un approccio a bassa latenza che migliora un singolo prompt o un'istruzione di sistema in tempo reale.
- Ottimizzazione basata sui dati: un approccio avanzato che migliora i prompt valutando le risposte di un modello a prompt di esempio in base a metriche di valutazione specifiche.
Per ulteriori linee guida sull'ottimizzazione dei prompt, consulta la sezione Panoramica delle strategie di prompt.
Migliorare le prestazioni per gli endpoint ML e AI generativa
Per migliorare la latenza o la velocità effettiva (token al secondo) per gli endpoint di ML e AI generativa, prendi in considerazione i seguenti suggerimenti:
- Memorizza nella cache i risultati utilizzando Memorystore.
- Per le API di AI generativa, utilizza le seguenti tecniche:
- Memorizzazione nella cache del contesto: Ottieni una latenza inferiore per le richieste che contengono contenuti ripetuti.
- Velocità effettiva di provisioning: Migliora la velocità effettiva per gli endpoint Gemini riservando la capacità di velocità effettiva.
- Per i modelli self-hosted, considera i seguenti framework di inferenza ottimizzati:
Framework Notebooks e guide Contenitori vLLM ottimizzati in Model Garden Esegui il deployment di modelli aperti con container predefiniti Inferenza basata su GPU su GKE Inferenza basata su TPU
Utilizzare soluzioni low code e ottimizzazione
Se i modelli preaddestrati non soddisfano i tuoi requisiti, puoi migliorarne le prestazioni per domini specifici utilizzando le soluzioni:
- AutoML è una soluzione con poco codice per migliorare i risultati dell'inferenza con il minimo sforzo tecnico per un'ampia gamma di attività. AutoML ti consente di creare modelli ottimizzati in base a diverse dimensioni: architettura, prestazioni e fase di addestramento (tramite il checkpointing).
- Ottimizzazione consente di ottenere una generazione di qualità superiore e più stabile e una latenza inferiore con prompt più brevi e senza molti dati. Ti consigliamo di iniziare la messa a punto utilizzando i valori predefiniti per gli iperparametri. Per saperne di più, consulta la guida alle best practice per il fine-tuning supervisionato per Gemini.
Ottimizzare l'allenamento autogestito
In alcuni casi, potresti decidere di eseguire di nuovo il training di un modello o di gestire completamente un job di perfezionamento. Questo approccio richiede competenze avanzate e tempo aggiuntivo a seconda del modello, del framework e delle risorse che utilizzi.
Sfrutta le opzioni del framework ottimizzate per il rendimento, ad esempio le seguenti:
Utilizza immagini o container di deep learning, che includono le dipendenze software più recenti e librerie specifiche perGoogle Cloud.
Esegui l'addestramento del modello con Ray su Google Cloud:
- Ray su Vertex AI ti consente di portare il framework di addestramento distribuito di Ray su Compute Engine o GKE e semplifica l'overhead di gestione del framework.
- Puoi gestire autonomamente Ray su GKE con KubeRay eseguendo il deployment dell'operatore Ray su un cluster esistente.
Esegui il deployment dei workload di addestramento su un cluster di calcolo di cui esegui il provisioning utilizzando Cluster Toolkit open source. Per eseguire il provisioning in modo efficiente di cluster ottimizzati per il rendimento, utilizza i blueprint basati su YAML. Gestisci i cluster utilizzando scheduler come Slurm e GKE.
Addestra architetture di modelli standard utilizzando ricette ottimizzate per la GPU.
Crea architetture e strategie di addestramento che ottimizzino il rendimento utilizzando le seguenti tecniche:
- Implementa l'addestramento distribuito su Vertex AI o sui framework descritti in precedenza. L'addestramento distribuito consente il parallelismo dei modelli e dei dati, il che può contribuire ad aumentare le dimensioni del set di dati di addestramento e del modello e a ridurre il tempo di addestramento.
- Per un addestramento efficiente del modello ed esplorare diverse configurazioni di rendimento, esegui il checkpointing a intervalli appropriati. Per saperne di più, consulta Ottimizza il goodput di runtime.
Ottimizzare la pubblicazione autogestita
Per la pubblicazione autogestita, sono necessarie operazioni di inferenza efficienti e un throughput elevato (numero di inferenze per unità di tempo).
Per ottimizzare il modello per l'inferenza, valuta i seguenti approcci:
Quantizzazione: riduci le dimensioni del modello rappresentando i suoi parametri in un formato con una precisione inferiore. Questo approccio contribuisce a ridurre il consumo di memoria e la latenza. Tuttavia, la quantizzazione dopo l'addestramento potrebbe modificare la qualità del modello. Ad esempio, la quantizzazione dopo l'addestramento potrebbe causare una riduzione dell'accuratezza.
- La quantizzazione post-addestramento (PTQ) è un'attività ripetibile. I principali framework di ML come PyTorch e TensorFlow supportano PTQ.
- Puoi orchestrare la quantizzazione post-training utilizzando una pipeline su Vertex AI Pipelines.
- Per stabilizzare le prestazioni del modello e beneficiare delle riduzioni delle dimensioni del modello, puoi utilizzare Qwix.
Parallelismo tensoriale: Migliora la velocità effettiva dell'inferenza distribuendo il carico di calcolo su più GPU.
Ottimizzazione della memoria: aumenta la velocità effettiva e ottimizza la memorizzazione nella cache dell'attenzione, le dimensioni dei batch e le dimensioni dell'input.
Utilizza framework ottimizzati per l'inferenza, ad esempio:
- Per i modelli generativi, utilizza un framework aperto come MaxText, MaxDiffusion, o vLLM.
- Esegui immagini container predefinite su Vertex AI per previsioni e spiegazioni. Se scegli TensorFlow, utilizza il runtime TensorFlow ottimizzato. Questo runtime consente un'inferenza più efficiente e a costi inferiori rispetto ai container predefiniti che utilizzano TensorFlow open source.
- Esegui l'inferenza multihost con modelli di grandi dimensioni su GKE utilizzando l'API LeaderWorkerSet (LWS).
- Sfrutta il server di inferenza NVIDIA Triton per Vertex AI.
- Semplifica il deployment dei carichi di lavoro di inferenza su GKE utilizzando configurazioni ottimizzate per gli LLM. Per maggiori informazioni, consulta Analizzare le prestazioni e i costi del servizio di modelli con GKE Inference Quickstart.
Ottimizzare il consumo delle risorse in base agli obiettivi di rendimento
L'ottimizzazione delle risorse consente di accelerare l'addestramento, eseguire iterazioni in modo efficiente, migliorare la qualità del modello e aumentare la capacità di pubblicazione.
Scegliere i tipi di processore appropriati
La scelta della piattaforma di computing può influire in modo significativo sull'efficienza dell'addestramento di un modello.
- I modelli di deep learning funzionano bene su GPU e TPU perché richiedono grandi quantità di memoria e calcoli matriciali paralleli. Per ulteriori informazioni sui carichi di lavoro adatti a CPU, GPU e TPU, consulta Quando utilizzare le TPU.
- Le VM ottimizzate per il calcolo sono ideali per i carichi di lavoro HPC.
Ottimizza l'addestramento e la pubblicazione su GPU
Per ottimizzare il rendimento dei workload di addestramento e inferenza che vengono implementati sulle GPU, prendi in considerazione i seguenti consigli:
| Suggerimento | Descrizione |
|---|---|
| Seleziona le specifiche di memoria appropriate. | Quando scegli i tipi di macchine GPU, seleziona le specifiche di memoria
in base ai seguenti fattori:
|
| Valuta i requisiti di larghezza di banda di core e memoria. | Oltre alle dimensioni della memoria, considera altri requisiti come il numero di Tensor Core e la larghezza di banda della memoria. Questi fattori influenzano la velocità di accesso ai dati e dei calcoli sul chip. |
| Scegli i tipi di macchina GPU appropriati. | L'addestramento e la pubblicazione potrebbero richiedere tipi di macchine GPU diversi.
Ti consigliamo di utilizzare tipi di macchine di grandi dimensioni per l'addestramento e tipi di macchine più piccoli ed economici per l'inferenza. Per rilevare problemi di utilizzo delle risorse, utilizza strumenti di monitoraggio come l'agente NVIDIA DCGM e regola le risorse in modo appropriato. |
| Sfrutta la condivisione GPU su GKE. | Dedicare una GPU completa a un singolo container potrebbe essere un approccio inefficiente in alcuni casi. Per aiutarti a superare questa inefficienza, GKE supporta le seguenti strategie di condivisione GPU:
Per massimizzare l'utilizzo delle risorse, ti consigliamo di utilizzare una combinazione appropriata di queste strategie. Ad esempio, quando virtualizzi una GPU H100 di grandi dimensioni utilizzando le strategie di condivisione del tempo della GPU e GPU multi-istanza, la piattaforma di pubblicazione può scalare verso l'alto e verso il basso in base al traffico. Le risorse GPU vengono riassegnate in tempo reale in base al carico sui container del modello. |
| Ottimizza il routing e il bilanciamento del carico. | Quando esegui il deployment di più modelli su un cluster, puoi utilizzare
GKE Inference Gateway
per un routing e un bilanciamento del carico ottimizzati. Inference Gateway estende
i meccanismi di routing dell'API Gateway di Kubernetes utilizzando le seguenti funzionalità:
|
| Condividi le risorse per gli endpoint Vertex AI. | Puoi configurare più endpoint Vertex AI per utilizzare un pool comune di risorse. Per ulteriori informazioni su questa funzionalità e sui relativi limiti, consulta Condividere risorse tra deployment. |
Ottimizzare l'addestramento e la pubblicazione sulle TPU
Le TPU sono chip Google che aiutano a risolvere problemi di scalabilità per gli algoritmi ML. Questi chip offrono prestazioni ottimali per i carichi di lavoro di addestramento e inferenza dell'AI. Rispetto alle GPU, le TPU offrono una maggiore efficienza per l'addestramento e la gestione del deep learning. Per informazioni sui casi d'uso adatti alle TPU, consulta Quando utilizzare le TPU. Le TPU sono compatibili con framework di ML come TensorFlow, PyTorch e JAX.
Per ottimizzare le prestazioni della TPU, utilizza le seguenti tecniche, descritte nella Guida al rendimento di Cloud TPU:
- Massimizza le dimensioni del batch per ogni unità di memoria TPU.
- Assicurati che le TPU non siano inattive. Ad esempio, implementa letture parallele dei dati.
- Ottimizza il compilatore XLA. Regola le dimensioni del tensore in base alle esigenze ed evita il padding. XLA esegue automaticamente l'ottimizzazione per le prestazioni di esecuzione del grafico utilizzando strumenti come la fusione e la trasmissione.
Ottimizzare l'addestramento sulle TPU e la pubblicazione sulle GPU
Le TPU supportano un addestramento efficiente. Le GPU offrono versatilità e maggiore disponibilità per i carichi di lavoro di inferenza. Per combinare i punti di forza di TPU e GPU, puoi addestrare i modelli sulle TPU e gestirli sulle GPU. Questo approccio può contribuire a ridurre i costi complessivi e accelerare lo sviluppo, in particolare per i modelli di grandi dimensioni. Per informazioni sulle località in cui sono disponibili i tipi di macchine TPU e GPU, consulta Regioni e zone TPU e Località delle GPU.
Ottimizzare il livello di archiviazione
Il livello di archiviazione dell'infrastruttura di addestramento e pubblicazione è fondamentale per le prestazioni. I job di addestramento e i workload di inferenza comportano le seguenti attività correlate allo spazio di archiviazione:
- Caricamento ed elaborazione dei dati in corso.
- Creazione di checkpoint del modello durante l'addestramento.
- Ricaricamento dei file binari per riprendere l'addestramento dopo le interruzioni dei nodi.
- Caricamento efficiente del modello per gestire l'inferenza su larga scala.
I seguenti fattori determinano i requisiti per capacità di archiviazione, larghezza di banda e latenza:
- Dimensione modello
- Volume del set di dati di addestramento
- Frequenza di creazione dei checkpoint
- Pattern di scalabilità
Se i tuoi dati di addestramento si trovano in Cloud Storage, puoi ridurre la latenza di caricamento dei dati utilizzando la memorizzazione nella cache dei file in Cloud Storage FUSE. Cloud Storage FUSE ti consente di montare un bucket Cloud Storage sui nodi di calcolo che dispongono di dischi SSD locali. Per informazioni su come migliorare le prestazioni di Cloud Storage FUSE, consulta Best practice per l'ottimizzazione delle prestazioni.
Un connettore PyTorch a Cloud Storage offre prestazioni elevate per la lettura e la scrittura dei dati. Questo connettore è particolarmente utile per l'addestramento con set di dati di grandi dimensioni e per il checkpointing di modelli di grandi dimensioni.
Compute Engine supporta vari tipi di disco permanente. Con Google Cloud Hyperdisk ML, puoi eseguire il provisioning del throughput e delle IOPS richiesti in base alle esigenze di addestramento. Per ottimizzare le prestazioni del disco, inizia ridimensionando i dischi e poi valuta la possibilità di modificare il tipo di macchina. Per ulteriori informazioni, consulta Ottimizzare le prestazioni di Persistent Disk. Per testare il carico delle prestazioni di lettura/scrittura e della latenza a livello di archiviazione, puoi utilizzare strumenti come Flexible I/O tester (FIO).
Per saperne di più sulla scelta e sull'ottimizzazione dei servizi di archiviazione per i tuoi workload di AI e ML, consulta la seguente documentazione:
- Servizi di archiviazione AI Hypercomputer
- Progettare l'archiviazione per i carichi di lavoro AI e ML in Google Cloud
Ottimizzare il livello di rete
Per ottimizzare le prestazioni dei workload di AI e ML, configura le tue reti VPC in modo da fornire una larghezza di banda adeguata e una velocità effettiva massima con una latenza minima. Prendi in considerazione i seguenti consigli:
| Suggerimento | Tecniche suggerite per l'implementazione |
|---|---|
| Ottimizza le reti VPC. |
|
| Posiziona le VM più vicine tra loro. |
|
| Configura le VM per supportare velocità di rete più elevate. |
|
Collegare le metriche sul rendimento alle scelte di progettazione e configurazione
Per innovare, risolvere i problemi e analizzare i problemi di rendimento, devi stabilire un collegamento chiaro tra le scelte di progettazione e i risultati di rendimento. Hai bisogno di un record affidabile della derivazione di asset ML, deployment, output del modello e delle configurazioni e degli input corrispondenti che hanno prodotto gli output.
Creare un sistema di derivazione di dati e modelli
Per migliorare in modo affidabile le prestazioni, devi essere in grado di risalire a ogni versione del modello fino ai dati, al codice e alle configurazioni esatti utilizzati per produrre il modello. Man mano che aumenti le dimensioni di un modello, questo tracciamento diventa difficile. Hai bisogno di un sistema di lineage che automatizzi il processo di tracciamento e crei un record chiaro e interrogabile per ogni esperimento. Questo sistema consente ai tuoi team di identificare e riprodurre in modo efficiente le scelte che portano ai modelli con il rendimento ottimale.
Per visualizzare e analizzare la derivazione degli artefatti della pipeline per i carichi di lavoro in Vertex AI, puoi utilizzare Vertex ML Metadata o Catalogo universale Dataplex. Entrambe le opzioni consentono di registrare eventi o artefatti per soddisfare i requisiti di governance e per eseguire query sui metadati e recuperare le informazioni quando necessario. Questa sezione fornisce una panoramica delle due opzioni. Per informazioni dettagliate sulle differenze tra Vertex ML Metadata e Dataplex Universal Catalog, consulta Monitorare la derivazione degli artefatti della pipeline.
Implementazione predefinita: Vertex AI ML Metadata
La prima esecuzione della pipeline o il primo esperimento in Vertex AI crea un servizio Vertex ML Metadata predefinito. I parametri e i metadati degli artefatti che la pipeline utilizza e genera vengono registrati automaticamente in un archivio Vertex ML Metadata. Il modello dei dati utilizzato per organizzare e collegare i metadati archiviati contiene i seguenti elementi:
- Contesto: un gruppo di artefatti ed esecuzioni che rappresenta un'esecuzione di esperimento.
- Esecuzione: un passaggio di un flusso di lavoro, ad esempio la convalida dei dati o l'addestramento del modello.
- Artefatto: un'entità, un oggetto o un insieme di dati di input o output che un workflow produce e utilizza.
- Evento: una relazione tra un artefatto e un'esecuzione.
Per impostazione predefinita, Vertex ML Metadata acquisisce e monitora tutti gli artefatti di input e output di un'esecuzione della pipeline. Integra questi artefatti con Vertex AI Experiments, Model Registry e set di dati gestiti da Vertex AI.
Autologging è una funzionalità integrata in Vertex AI Training per registrare automaticamente i dati in Vertex AI Experiments. Per monitorare in modo efficiente gli esperimenti per ottimizzare le prestazioni, utilizza le integrazioni integrate tra Vertex AI Experiments e il servizio Vertex ML Metadata associato.
Vertex ML Metadata fornisce una sintassi di filtro e operatori per eseguire query su artefatti, esecuzioni e contesti. Se necessario, i tuoi team possono recuperare in modo efficiente informazioni sul link del registro di un modello e sul relativo set di dati o sulla valutazione per una specifica esecuzione dell'esperimento. Questi metadati possono contribuire ad accelerare l'individuazione delle scelte che ottimizzano il rendimento. Ad esempio, puoi confrontare le esecuzioni della pipeline, confrontare i modelli e confrontare le esecuzioni degli esperimenti. Per ulteriori informazioni, incluse query di esempio, consulta Analizza i metadati di Vertex ML.
Implementazione alternativa: Catalogo universale Dataplex
Dataplex Universal Catalog rileva i metadati dalle risorseGoogle Cloud , inclusi gli artefatti Vertex AI. Puoi anche integrare un'origine dati personalizzata.
Dataplex Universal Catalog può leggere i metadati in più regioni e archivi a livello di organizzazione, mentre Vertex ML Metadata è una risorsa specifica del progetto. Rispetto a Vertex ML Metadata, Dataplex Universal Catalog richiede un maggiore impegno di configurazione. Tuttavia, Dataplex Universal Catalog potrebbe essere appropriato quando hai bisogno dell'integrazione con il tuo portafoglio di dati più ampio in Google Cloud e con gli store a livello di organizzazione.
Dataplex Universal Catalog rileva e raccoglie i metadati per i progetti in cui è abilitata l'API Data Lineage. I metadati nel catalogo sono organizzati utilizzando un modello di dati che consiste in progetti, gruppi di voci, voci e aspetti. Dataplex Universal Catalog fornisce una sintassi specifica che puoi utilizzare per scoprire gli artefatti. Se necessario, puoi mappare gli artefatti di Vertex ML Metadata a Dataplex Universal Catalog.
Utilizzare gli strumenti di spiegabilità
Il comportamento di un modello di AI si basa sui dati utilizzati per addestrarlo. Questo comportamento è codificato come parametri nelle funzioni matematiche. Comprendere esattamente perché un modello si comporta in un determinato modo può essere difficile. Tuttavia, queste informazioni sono fondamentali per l'ottimizzazione del rendimento.
Ad esempio, considera un modello di classificazione delle immagini in cui i dati di addestramento contengono immagini solo di auto rosse. Il modello potrebbe imparare a identificare l'etichetta "auto" in base al colore dell'oggetto anziché agli attributi spaziali e di forma dell'oggetto. Quando il modello viene testato con immagini che mostrano auto di colori diversi, le prestazioni del modello potrebbero peggiorare. Le seguenti sezioni descrivono gli strumenti che puoi utilizzare per identificare e diagnosticare questi problemi.
Rilevare i bias nei dati
Nella fase di analisi esplorativa dei dati (EDA) di un progetto ML, identifichi problemi relativi ai dati, come set di dati con classi sbilanciate e bias.
Nei sistemi di produzione, spesso esegui il retraining dei modelli ed esegui esperimenti con set di dati diversi. Per standardizzare i dati e confrontarli tra gli esperimenti, ti consigliamo un approccio sistematico all'EDA che includa le seguenti caratteristiche:
- Automazione: man mano che un set di addestramento aumenta di dimensioni, il processo EDA deve essere eseguito automaticamente in background.
- Ampia copertura: quando aggiungi nuove funzionalità, l'EDA deve rivelare informazioni sulle nuove funzionalità.
Molte attività di EDA sono specifiche per il tipo di dati e il contesto aziendale. Per automatizzare il processo di EDA, utilizza BigQuery o un servizio di elaborazione dati gestito come Dataflow. Per ulteriori informazioni, consulta Classificazione su dati sbilanciati e Metriche di distorsione dei dati per Vertex AI.
Comprendere le caratteristiche e il comportamento del modello
Oltre a comprendere la distribuzione dei dati nei set di addestramento e di convalida e i relativi bias, devi comprendere le caratteristiche e il comportamento di un modello al momento della previsione. Per comprendere il comportamento del modello, utilizza i seguenti strumenti:
| Strumento | Descrizione | Finalità |
|---|---|---|
| Spiegazioni basate su esempi | Puoi utilizzare le spiegazioni basate su esempi in Vertex Explainable AI per comprendere una previsione trovando gli esempi più simili dai dati di addestramento. Questo approccio si basa sul principio che input simili producono output simili. |
|
| Spiegazioni basate sulle caratteristiche | Per le previsioni basate su dati tabulari o immagini, le spiegazioni basate sulle caratteristiche mostrano in che misura ogni caratteristica influisce su una previsione quando viene confrontata con una baseline. Vertex AI fornisce diversi metodi di attribuzione delle funzionalità a seconda del tipo di modello e dell'attività. I metodi si basano in genere sul campionamento e sull'analisi di sensibilità per misurare la variazione dell'output in risposta alle modifiche di una caratteristica di input. |
|
| Strumento What-If | Lo strumento What-If è stato sviluppato dall'iniziativa People + AI Research (PAIR) di Google per aiutarti a comprendere e visualizzare il comportamento dei modelli di immagini e tabellari. Per esempi di utilizzo dello strumento, consulta Demo web dello strumento What-If. |
|
Collaboratori
Autori:
- Benjamin Sadik | AI and ML Specialist Customer Engineer
- Filipe Gracio, PhD | Customer Engineer, specialista di AI/ML
Altri collaboratori:
- Daniel Lees | Cloud Security Architect
- Kumar Dhanagopal | Cross-Product Solution Developer