Ottimizza i carichi di lavoro di intelligenza artificiale generativa per la sostenibilità ambientale

'Optimize generative AI workloads for environmental sustainability

L’adozione dell’IA generativa sta rapidamente espandendosi, raggiungendo un numero sempre crescente di settori e utenti in tutto il mondo. Con la crescente complessità e scala dei modelli di IA generativa, è fondamentale lavorare per ridurre al minimo il loro impatto ambientale. Ciò comporta uno sforzo continuo incentrato sulla riduzione dell’energia e sull’efficienza, ottenendo il massimo beneficio dalle risorse fornite e minimizzando le risorse totali richieste.

Per aggiungere alla nostra guida per ottimizzare i carichi di lavoro di deep learning per la sostenibilità su AWS, questo post fornisce raccomandazioni specifiche per i carichi di lavoro di IA generativa. In particolare, forniamo pratiche consigliate pratiche per diversi scenari di personalizzazione, inclusa l’addestramento di modelli da zero, il raffinamento con dati aggiuntivi utilizzando tecniche complete o efficienti dei parametri, Retrieval Augmented Generation (RAG) e ingegneria delle istruzioni. Sebbene questo post si concentri principalmente su grandi modelli di linguaggio (LLM), riteniamo che la maggior parte delle raccomandazioni possa essere estesa ad altri modelli di base.

Definizione del problema di IA generativa

Quando definisci il tuo problema di IA generativa, prendi in considerazione quanto segue:

  • Allinea l’uso della tua IA generativa con i tuoi obiettivi di sostenibilità – Quando pianifichi il tuo progetto, assicurati di tenere conto della sostenibilità:
    • Quali sono i compromessi tra una soluzione di IA generativa e un approccio tradizionale meno intensivo in termini di risorse?
    • Come può il tuo progetto di IA generativa supportare l’innovazione sostenibile?
  • Utilizza energia a bassa intensità di carbonio – Quando le regolamentazioni e gli aspetti legali lo consentono, addestra e distribuisci il tuo modello in una delle 19 regioni AWS in cui l’elettricità consumata nel 2022 era attribuibile al 100% a energia rinnovabile e nelle regioni in cui la rete ha un’intensità di carbonio pubblicata inferiore rispetto ad altre località (o regioni). Per ulteriori dettagli, consulta Come selezionare una regione per il tuo carico di lavoro in base agli obiettivi di sostenibilità. Quando selezioni una regione, cerca di ridurre al minimo lo spostamento dei dati attraverso le reti: addestra i tuoi modelli vicino ai tuoi dati e distribuisci i tuoi modelli vicino ai tuoi utenti.
  • Utilizza servizi gestiti – A seconda delle tue competenze e del tuo caso d’uso specifico, valuta le opzioni tra l’optare per Amazon Bedrock, un servizio serverless completamente gestito che fornisce accesso a una vasta gamma di modelli di base attraverso un’API, o distribuire i tuoi modelli su un’infrastruttura completamente gestita utilizzando Amazon SageMaker. Utilizzare un servizio gestito ti aiuta a operare in modo più efficiente spostando la responsabilità di mantenere un’alta utilizzazione e un’ottimizzazione della sostenibilità dell’hardware distribuito ad AWS.
  • Definisci la giusta strategia di personalizzazione – Ci sono diverse strategie per migliorare le capacità del tuo modello, che vanno dall’ingegneria delle istruzioni al raffinamento completo. Scegli la strategia più adatta alle tue esigenze specifiche, tenendo conto anche delle differenze nelle risorse richieste per ciascuna. Ad esempio, il raffinamento completo potrebbe ottenere una maggiore precisione rispetto all’ingegneria delle istruzioni ma consuma più risorse ed energia nella fase di addestramento. Fai dei compromessi: scegliendo un approccio di personalizzazione che privilegia una prestazione accettabile rispetto a una prestazione ottimale, è possibile ottenere riduzioni delle risorse utilizzate dai tuoi modelli. La seguente figura riassume l’impatto ambientale delle strategie di personalizzazione dei LLM.

Personalizzazione del modello

In questa sezione, condividiamo le migliori pratiche per la personalizzazione del modello.

Selezione del modello di base

La selezione del modello di base appropriato è un passaggio critico nella personalizzazione dei carichi di lavoro di IA generativa e può aiutare a ridurre la necessità di un raffinamento estensivo e dell’uso delle risorse associate. Valuta i seguenti fattori:

  • Valuta le capacità e le limitazioni – Utilizza i playground di Amazon SageMaker JumpStart o Amazon Bedrock per testare facilmente la capacità dei LLM e valutare le loro limitazioni principali.
  • Riduci la necessità di personalizzazione – Assicurati di raccogliere informazioni utilizzando risorse pubbliche come classifiche di punta dei LLM, benchmark di valutazione o schede di modelli per confrontare diversi LLM e comprendere i domini specifici, i compiti e le lingue per cui sono stati preaddestrati. A seconda del tuo caso d’uso, considera modelli specifici per domini o multilingue per ridurre la necessità di personalizzazione aggiuntiva.
  • Inizia con una piccola dimensione del modello e una piccola finestra di contesto – Le dimensioni dei modelli grandi e le finestre di contesto (il numero di token che possono essere inseriti in un’unica istruzione) possono offrire maggiore prestazioni e capacità, ma richiedono anche più energia e risorse per l’elaborazione. Considera le versioni disponibili di modelli con dimensioni e finestre di contesto più piccole prima di passare a modelli più grandi. I modelli più piccoli specializzati concentrano la loro capacità su un compito specifico. Su questi compiti, i modelli specializzati possono comportarsi in modo qualitativamente simile ai modelli più grandi (ad esempio, GPT3.5, che ha 175 miliardi di parametri) pur richiedendo meno risorse per l’addestramento e l’elaborazione. Esempi di tali modelli includono Alpaca (7 miliardi di parametri) o l’utilizzo di varianti T5 per il ragionamento matematico a più step (11 miliardi di parametri o più).

Ingegneria delle prompt

L’ingegneria delle prompt efficace può migliorare le prestazioni e l’efficienza dei modelli di IA generativi. Creando con cura le prompt, è possibile guidare il comportamento del modello, riducendo le iterazioni e le risorse necessarie. Considera le seguenti linee guida:

  • Mantieni le prompt concise ed evita dettagli superflui – Le prompt più lunghe comportano un maggior numero di token. Aumentando il numero di token, il modello consuma più memoria e risorse computazionali. Considera l’utilizzo di apprendimento zero-shot o few-shot per consentire al modello di adattarsi rapidamente apprendendo solo da pochi esempi.
  • Sperimenta gradualmente con prompt diversi – Affina le prompt in base all’output desiderato fino a ottenere i risultati desiderati. A seconda del tuo compito, esplora tecniche avanzate come l’autocoerenza, la generazione di prompt con conoscenza generata, il prompting ReAct o l’Ingegnere Automatico di Prompt per migliorare ulteriormente le capacità del modello.
  • Utilizza prompt riproducibili – Con modelli di prompt come i modelli di prompt di LangChain, puoi salvare o caricare la cronologia delle prompt come file. Ciò migliora il tracciamento, la versioning e la riutilizzabilità delle sperimentazioni delle prompt. Quando conosci le prompt che producono le migliori risposte per ogni modello, è possibile ridurre le risorse computazionali utilizzate per le iterazioni delle prompt e gli esperimenti ridondanti tra diversi progetti.

Generazione potenziata da recupero

La generazione potenziata da recupero (RAG) è un approccio altamente efficace per potenziare le capacità del modello recuperando e integrando informazioni esterne pertinenti da un dataset predefinito. Poiché i modelli LLM esistenti vengono utilizzati così come sono, questa strategia evita l’energia e le risorse necessarie per addestrare il modello su nuovi dati o costruire un nuovo modello da zero. Usa strumenti come Amazon Kendra o Amazon OpenSearch Service e LangChain per creare con successo soluzioni basate su RAG con Amazon Bedrock o SageMaker JumpStart.

Fine-tuning efficiente dei parametri

Il fine-tuning efficiente dei parametri (PEFT) è un aspetto fondamentale della sostenibilità nell’IA generativa. Ha lo scopo di ottenere prestazioni paragonabili al fine-tuning utilizzando meno parametri addestrabili. Eseguendo il fine-tuning solo su un piccolo numero di parametri del modello mentre si bloccano la maggior parte dei parametri degli LLM pre-addestrati, è possibile ridurre le risorse computazionali e il consumo di energia.

Utilizza librerie pubbliche come la libreria di fine-tuning efficiente dei parametri per implementare tecniche comuni di PEFT come l’Adattamento a Rango Ridotto (LoRa), il Prompt Tuning o il P-Tuning. Ad esempio, gli studi mostrano che l’utilizzo di LoRa può ridurre il numero di parametri addestrabili di 10.000 volte e il requisito di memoria GPU di 3 volte, a seconda delle dimensioni del tuo modello, con prestazioni simili o migliori.

Fine-tuning

Esegue il fine-tuning dell’intero modello pre-addestrato con i dati aggiuntivi. Questo approccio può ottenere prestazioni più elevate ma richiede più risorse rispetto a PEFT. Utilizza questa strategia quando i dati disponibili differiscono significativamente dai dati di pre-addestramento.

Selezionando l’approccio di fine-tuning corretto, è possibile massimizzare il riutilizzo del modello ed evitare l’utilizzo di risorse associato al fine-tuning di più modelli per ogni caso d’uso. Ad esempio, se prevedi di riutilizzare il modello all’interno di un dominio specifico o di un’unità aziendale nella tua organizzazione, potresti preferire l’adattamento di dominio. D’altra parte, il fine-tuning basato su istruzioni è più adatto per un uso generale su più compiti.

Addestramento del modello da zero

In alcuni casi, può essere necessario addestrare un modello LLM da zero. Tuttavia, questo approccio può essere computazionalmente costoso e richiedere molta energia. Per garantire un addestramento ottimale, considera le seguenti best practice:

  • Utilizza silicio efficiente – Le istanze EC2 Trn1 basate su AWS Trainium sono appositamente progettate per l’addestramento di modelli di deep learning ad alte prestazioni e ottimizzate per l’efficienza energetica. Nel 2022, abbiamo osservato che addestrare modelli su Trainium ti aiuta a ridurre il consumo di energia fino al 29% rispetto alle istanze comparabili.
  • Utilizza dati di alta qualità e una cura dei dati scalabile – Utilizza SageMaker Training per migliorare la qualità del dataset di addestramento e ridurre la dipendenza da enormi quantità di dati. Addestrando su un dataset diversificato, completo e curato, gli LLM possono produrre risposte più precise e ottenere ottimizzazione dei costi e dell’energia riducendo i requisiti di archiviazione e calcolo.
  • Utilizza l’addestramento distribuito – Utilizza librerie distribuite di SageMaker come il parallelismo dei dati, il parallelismo delle pipeline o il parallelismo dei tensori per eseguire calcoli paralleli su più GPU o istanze. Questi approcci aiutano a massimizzare l’utilizzo delle GPU suddividendo i batch di addestramento in microbatch più piccoli. I microbatch più piccoli vengono alimentati alle GPU in una pipeline efficiente per mantenere tutti i dispositivi GPU attivi contemporaneamente, ottimizzando l’utilizzo delle risorse.

Inferenza e distribuzione del modello

Considera le seguenti migliori pratiche per l’inferenza e la distribuzione del modello:

  • Utilizza container di deep learning per l’inferenza di modelli di grandi dimensioni – Puoi utilizzare container di deep learning per l’inferenza di modelli di grandi dimensioni su SageMaker e framework open-source come DeepSpeed, Hugging Face Accelerate e FasterTransformer per implementare tecniche come potatura dei pesi, distillazione, compressione, quantizzazione o compilazione. Queste tecniche riducono le dimensioni del modello e ottimizzano l’utilizzo della memoria.
  • Imposta i parametri del modello di inferenza in modo appropriato – Durante l’inferenza, hai la flessibilità di regolare determinati parametri che influenzano l’output del modello. Comprendere e impostare correttamente questi parametri ti consente di ottenere risposte più pertinenti dai tuoi modelli e ridurre al minimo il numero di iterazioni di adattamento del prompt. Ciò si traduce in un utilizzo ridotto della memoria e un minor consumo di energia. I parametri chiave da considerare sono temperature, top_p, top_k e max_length.
  • Adotta un’infrastruttura di inferenza efficiente – Puoi distribuire i tuoi modelli su un acceleratore AWS Inferentia2. Le istanze Inf2 offrono prestazioni/watt fino al 50% migliori rispetto alle istanze Amazon Elastic Compute Cloud (Amazon EC2) comparabili perché gli acceleratori AWS Inferentia2 sottostanti sono progettati appositamente per eseguire modelli di deep learning su larga scala. Come opzione più efficiente dal punto di vista energetico su Amazon EC2 per la distribuzione di modelli ultragrandi, le istanze Inf2 ti aiutano a raggiungere i tuoi obiettivi di sostenibilità quando distribuisci le ultime innovazioni nell’AI generativa.
  • Allinea l’Accordo di Livello di Servizio (SLA) di inferenza con gli obiettivi di sostenibilità – Definisci SLA che supportino i tuoi obiettivi di sostenibilità pur soddisfacendo i requisiti aziendali. Definisci SLA per soddisfare i requisiti aziendali, senza superarli. Effettua scambi che riducono significativamente l’utilizzo delle risorse in cambio di diminuzioni accettabili dei livelli di servizio:
    • Incolona le richieste in arrivo e processale in modo asincrono – Se i tuoi utenti possono tollerare una certa latenza, distribuisci il tuo modello su endpoint asincroni per ridurre le risorse inutilizzate tra i task e minimizzare l’impatto dei picchi di carico. Ciò scalerà automaticamente il numero di istanze a zero quando non ci sono richieste da elaborare, in modo da mantenere un’infrastruttura di inferenza solo quando il tuo endpoint sta elaborando richieste.
    • Regola la disponibilità – Se i tuoi utenti possono tollerare una certa latenza nel caso raro di un failover, non assegnare capacità aggiuntive. Se si verifica un’interruzione o un’istanza si guasta, SageMaker cerca automaticamente di distribuire le tue istanze tra le Zone di disponibilità.
    • Regola il tempo di risposta – Quando non hai bisogno di un’inferenza in tempo reale, utilizza la trasformazione batch di SageMaker. A differenza di un endpoint persistente, i cluster vengono decommissionati al termine dei job di trasformazione batch, quindi non devi mantenere continuamente un’infrastruttura di inferenza.

Monitoraggio e ottimizzazione dell’utilizzo delle risorse

Implementa un processo di miglioramento per monitorare l’impatto delle tue ottimizzazioni nel tempo. L’obiettivo delle tue migliorie è utilizzare tutte le risorse che hai assegnato e completare il lavoro con il minor numero possibile di risorse. Per operazionalizzare questo processo, raccogli metriche sull’utilizzo delle tue risorse cloud. Queste metriche, combinate con metriche aziendali, possono essere utilizzate come metriche proxy per le emissioni di carbonio.

Per monitorare costantemente il tuo ambiente, puoi utilizzare Amazon CloudWatch per monitorare le metriche di sistema come l’utilizzo della CPU, GPU o della memoria. Se stai utilizzando una GPU NVIDIA, considera l’interfaccia di gestione di sistema NVIDIA (nvidia-smi) per monitorare l’utilizzo e lo stato di prestazione della GPU. Per Trainium e l’acceleratore AWS Inferentia, puoi utilizzare AWS Neuron Monitor per monitorare le metriche di sistema. Considera anche SageMaker Profiler, che fornisce una visione dettagliata delle risorse di calcolo AWS assegnate durante l’addestramento di modelli di deep learning su SageMaker. Ecco alcune metriche chiave che vale la pena monitorare:

  • CPUUtilization, GPUUtilization, GPUMemoryUtilization, MemoryUtilization e DiskUtilization in CloudWatch
  • nvidia_smi.gpu_utilization, nvidia_smi.gpu_memory_utilization e nvidia_smi.gpu_performance_state nei log di nvidia-smi.
  • vcpu_usage, memory_info e neuroncore_utilization in Neuron Monitor.

Conclusioni

Poiché i modelli di AI generativa stanno diventando sempre più grandi, è essenziale considerare l’impatto ambientale dei nostri carichi di lavoro.

In questo post, abbiamo fornito indicazioni per ottimizzare le risorse di calcolo, archiviazione e rete necessarie per eseguire i tuoi carichi di lavoro di AI generativa su AWS, riducendo al minimo il loro impatto ambientale. Poiché il campo dell’AI generativa sta progredendo continuamente, rimanere aggiornati sui corsi, le ricerche e gli strumenti più recenti può aiutarti a trovare nuovi modi per ottimizzare i tuoi carichi di lavoro per la sostenibilità.