L'IA generativa ha introdotto un nuovo modo per creare e gestire applicazioni di AI diverso dall'AI predittiva. Per creare un'applicazione di AI generativa, devi scegliere tra una vasta gamma di architetture e dimensioni, organizzare i dati, creare prompt ottimali, ottimizzare i modelli per attività specifiche e basare gli output dei modelli su dati reali.
Questo documento descrive come adattare i processi DevOps e MLOps per sviluppare, eseguire il deployment e gestire applicazioni di AI generativa su modelli di base esistenti. Per informazioni sul deployment dell'AI predittiva, consulta MLOps: pipeline di distribuzione continua e automazione nel machine learning.
Che cosa sono DevOps e MLOps?
DevOps è una metodologia di software engineering che collega lo sviluppo alle operazioni. DevOps promuove la collaborazione, l'automazione e il miglioramento continuo per semplificare il ciclo di vita di sviluppo del software, utilizzando pratiche come l'integrazione e la distribuzione continue (CI/CD).
MLOps si basa sui principi di DevOps per affrontare le sfide della creazione e dell'utilizzo di sistemi di machine learning (ML). I sistemi di machine learning in genere utilizzano AI predittiva per identificare pattern e fare previsioni. Il flusso di lavoro MLOps include quanto segue:
- Convalida dei dati
- Addestramento del modello
- Valutazione e iterazione del modello
- Deployment e distribuzione del modello
- Monitoraggio del modello
Che cosa sono i modelli di base?
I modelli di base sono il componente principale di un'applicazione di AI generativa. Questi modelli sono programmi di grandi dimensioni che utilizzano set di dati per apprendere e prendere decisioni senza intervento umano. I modelli di base vengono addestrati su molti tipi di dati, tra cui testo, immagini, audio e video. I modelli di base includono modelli linguistici di grandi dimensioni (LLM) come Llama 3.1 e modelli multimodali come Gemini.
A differenza dei modelli di AI predittiva, che vengono addestrati per attività specifiche su set di dati mirati, i modelli di base vengono addestrati su set di dati di grandi dimensioni e diversi. Questo addestramento ti consente di utilizzare i modelli di base per sviluppare applicazioni per molti diversi casi d'uso. I modelli di base hanno proprietà emergenti (PDF), che consentono di fornire risposte a input specifici senza addestramento esplicito. A causa di queste proprietà emergenti, i modelli di base sono difficili da creare e gestire e richiedono di adattare i processi DevOps e MLOps.
Lo sviluppo di un modello di base richiede risorse di dati significative, hardware specializzato, investimenti significativi e competenze specializzate. Pertanto, molte aziende preferiscono utilizzare i modelli di base esistenti per semplificare lo sviluppo e il deployment delle proprie applicazioni di AI generativa.
Ciclo di vita di un'applicazione di AI generativa
Il ciclo di vita di un'applicazione di AI generativa include le seguenti fasi:
- Rilevamento:gli sviluppatori e gli ingegneri AI identificano il modello di base più adatto al loro caso d'uso. Prendono in considerazione i punti di forza, i punti deboli e i costi di ciascun modello per prendere una decisione informata.
- Sviluppo e sperimentazione:gli sviluppatori utilizzano il prompt engineering per creare e perfezionare i prompt di input al fine di ottenere l'output richiesto. Se disponibili, l'apprendimento con pochi esempi, la ottimizzazione fine (PEFT) con un numero ridotto di parametri e la catena di modelli aiutano a indirizzare il comportamento del modello. Con concatenazione di modelli si intende l'orchestrazione di chiamate a più modelli in una sequenza specifica per creare un flusso di lavoro.
- Deployment: gli sviluppatori devono gestire molti artefatti nel processo di deployment, tra cui modelli di prompt, definizioni di catene, modelli incorporati, depositi di dati di recupero e adattatori di modelli ottimizzati. Questi elementi hanno i propri requisiti di governance e richiedono una gestione attenta durante lo sviluppo e il deployment. Il deployment delle applicazioni di IA generativa deve inoltre tenere conto delle funzionalità tecniche dell'infrastruttura di destinazione, garantendo che i requisiti hardware dell'applicazione siano soddisfatti.
- Monitoraggio continuo in produzione: gli amministratori migliorano le prestazioni delle applicazioni e mantengono gli standard di sicurezza tramite tecniche di AI responsabile, ad esempio garantendo equità, trasparenza e responsabilità negli output del modello.
- Miglioramento continuo:gli sviluppatori regolano costantemente i modelli di base tramite tecniche di prompt, sostituendoli con versioni più recenti o persino combinando più modelli per migliorare le prestazioni, l'efficienza in termini di costi o ridurre la latenza. L'addestramento continuo convenzionale è ancora pertinente per scenari in cui è necessaria l'ottimizzazione ricorrente o l'integrazione di loop di feedback umani.
Le pratiche di data engineering hanno un ruolo fondamentale in tutte le fasi di sviluppo. Per creare output affidabili, devi avere una base fattuale (che garantisce che gli output del modello si basino su informazioni accurate e aggiornate) e dati recenti dei sistemi interni e aziendali. I dati di ottimizzazione consentono di adattare i modelli a compiti e stili specifici e correggere gli errori persistenti.
Trovare il modello di base per il tuo caso d'uso
Poiché la creazione di modelli di base richiede molte risorse, la maggior parte delle aziende preferisce utilizzare un modello di base esistente ottimale per il proprio caso d'uso. Trovare il modello di base giusto è difficile perché esistono molti modelli di base. Ogni modello ha architetture, dimensioni, set di dati di addestramento e licenze diversi. Inoltre, ogni caso d'uso presenta requisiti unici, che richiedono di analizzare i modelli disponibili in più dimensioni.
Quando valuti i modelli, prendi in considerazione i seguenti fattori:
- Qualità:esegui i prompt di test per valutare la qualità dell'output.
- Latenza e throughput:determina la latenza e il throughput corretti richiesti dal tuo caso d'uso, poiché questi fattori influiscono direttamente sull'esperienza utente. Ad esempio, un chatbot richiede una latenza inferiore rispetto alle attività di sintesi elaborate in batch.
- Tempo di sviluppo e manutenzione: valuta l'investimento in termini di tempo per lo sviluppo iniziale e la manutenzione continua. I modelli gestiti spesso richiedono meno impegno rispetto ai modelli disponibili pubblicamente che esegui autonomamente.
- Costo di utilizzo: prendi in considerazione i costi di infrastruttura e consumo associati al modello.
- Conformità: valuta la capacità del modello di rispettare le normative e i termini di licenza pertinenti.
Sviluppare ed eseguire esperimenti
Quando crei applicazioni di AI generativa, lo sviluppo e la sperimentazione sono metodici e orchestrati. Ogni iterazione sperimentale prevede il perfezionamento dei dati, l'adattamento del modello di base e la valutazione dei risultati. La valutazione fornisce un feedback che guida le iterazioni successive in un ciclo di feedback continuo. Se il rendimento non soddisfa le aspettative, puoi raccogliere più dati, aumentarli o curarli ulteriormente. Inoltre, potresti dover ottimizzare i prompt, applicare tecniche di perfezionamento o passare a un altro modello di base. Questo ciclo di perfezionamento iterativo, basato su approfondimenti della valutazione, è importante tanto per ottimizzare le applicazioni di AI generativa quanto per il machine learning e l'AI predittiva.
Il paradigma del modello di base
I modelli di base sono diversi dai modelli predittivi perché sono modelli multiuso. Invece di essere addestrati per un unico scopo su dati specifici per l'attività, i modelli di base vengono addestrati su set di dati ampi, il che consente di applicare un modello di base a molti casi d'uso diversi.
I modelli di base sono inoltre molto sensibili alle modifiche degli input. L'output del modello e l'attività che esegue sono determinati dall'input al modello. Un modello di base può tradurre testo, generare video o classificare i dati semplicemente modificando l'input. Anche modifiche non significative all'input possono influire sulla capacità del modello di eseguire correttamente l'attività.
Queste proprietà dei modelli di base richiedono pratiche di sviluppo e operativo diverse. Sebbene i modelli nel contesto dell'AI predittiva siano autosufficienti e specifici per attività, i modelli di base sono multifunzionali e richiedono un elemento aggiuntivo oltre all'input utente dell'utente. I modelli di IA generativa richiedono un prompt e, più specificamente, un modello di prompt. Un modello di prompt è un insieme di istruzioni ed esempi, oltre a segnaposto per adattarsi all'input utente dell'utente. L'applicazione può combinare il modello di prompt e i dati dinamici (ad esempio gli input utente) per creare un prompt completo, ovvero il testo che viene passato come input al modello di base.
Il componente del modello richiesto
La presenza del prompt è una caratteristica distintiva delle applicazioni di AI generativa. Il modello e il prompt non sono sufficienti per la generazione di contenuti; l'AI generativa ha bisogno di entrambi. La combinazione del modello e del prompt è nota come componente del modello con prompt. Il componente del modello richiesto è il componente indipendente più piccolo sufficiente per creare un'applicazione di AI generativa. Il prompt non deve essere complicato. Ad esempio, può essere un'istruzione semplice, come "Traduci la seguente frase dall'inglese al francese", seguita dalla frase da tradurre. Tuttavia, senza queste istruzioni preliminari, un modello di base non eseguirà l'attività di traduzione richiesta. Pertanto, è necessario un prompt, anche solo un'istruzione di base, insieme all'input per consentire al modello di base di svolgere l'attività richiesta dall'applicazione.
Il componente del modello richiesto crea una distinzione importante per le pratiche di MLOps quando si sviluppano applicazioni di AI generativa. Nello sviluppo di un'applicazione di AI generativa, la sperimentazione e l'iterazione devono essere eseguite nel contesto di un componente del modello richiesto. Il ciclo di sperimentazione dell'AI generativa solitamente inizia con il test delle varianti del prompt, modificando la formulazione delle istruzioni, fornendo un contesto aggiuntivo o includendo esempi pertinenti, e valutando l'impatto di queste modifiche. Questa pratica è comunemente nota come prompt engineering.
L'ingegneria dei prompt prevede i seguenti passaggi iterativi:
- Prompt:crea e perfeziona i prompt per suscitare i comportamenti desiderati da un modello di base per un caso d'uso specifico.
- Valutazione: valuta gli output del modello, idealmente in modo programmatico, per misurarne la comprensione e il successo nell'eseguire le istruzioni del prompt.
Per monitorare i risultati della valutazione, puoi facoltativamente registrare i risultati di un esperimento. Poiché il prompt stesso è un elemento fondamentale del processo di progettazione del prompt, diventa l'elemento più importante tra gli elementi che fanno parte dell'esperimento.
Tuttavia, per eseguire esperimenti con un'applicazione di AI generativa, devi identificare i tipi di elementi. Nell'AI predittiva, i dati, le pipeline e il codice sono diversi. Tuttavia, con il paradigma dei prompt nell'AI generativa, i prompt possono includere contesto, istruzioni, esempi, guardrail e dati interni o esterni effettivi estratti da un'altra fonte.
Per determinare il tipo di elemento, devi riconoscere che un prompt ha componenti diversi e richiede strategie di gestione diverse. Considera quanto segue:
- Prompt come dati:alcune parti del prompt si comportano come i dati. Elementi come esempi con pochi esempi, knowledge base e query degli utenti sono essenzialmente punti di dati. Questi componenti richiedono pratiche MLOps incentrate sui dati, come la convalida dei dati, il rilevamento della deriva e la gestione del ciclo di vita.
- Prompt come codice:altri componenti come contesto, modelli di prompt e linee guida sono simili al codice. Questi componenti definiscono la struttura e le regole del prompt stesso e richiedono pratiche più incentrate sul codice, come i processi di approvazione, il controllo della versione del codice e i test.
Di conseguenza, quando applichi le pratiche MLOps all'AI generativa, devi disporre di procedimenti che offrano agli sviluppatori un modo semplice per archiviare, recuperare, monitorare e modificare i prompt. Queste procedure consentono un'iterazione rapida e una sperimentazione basata su principi. Spesso una versione di un prompt può funzionare bene con una versione specifica del modello e non altrettanto bene con un'altra versione. Quando monitori i risultati di un esperimento, devi registrare il prompt, le versioni del componente, la versione del modello, le metriche e i dati di output.
Catena e aumento dei modelli
I modelli di IA generativa, in particolare i modelli linguistici di grandi dimensioni (LLM), devono affrontare sfide intrinseche nel mantenere la pertinenza ed evitare le allucinazioni. La codifica di nuove informazioni negli LLM richiede un preaddestramento costoso e che richiede molti dati prima che possano essere implementati. A seconda del caso d'uso, l'utilizzo di un solo modello con prompt per eseguire una determinata generazione potrebbe non essere sufficiente. Per risolvere il problema, puoi collegare diversi modelli con prompt, nonché chiamate a API esterne e logica espressa come codice. Una sequenza di componenti del modello suggeriti collegati in questo modo è comunemente nota come catena.
Il seguente diagramma mostra i componenti di una catena e il relativo processo di sviluppo.
Mitigazione per allucinazioni e recency
Due pattern comuni basati su catene che possono mitigare la recency e le allucinazioni sono la Retrieval Augmented Generation (RAG) (PDF) e gli agenti.
- RAG integra i modelli preaddestrati con le conoscenze recuperate dai database, il che consente di evitare il preaddestramento. La RAG consente l'ancoraggio e riduce le allucinazioni incorporando informazioni oggettive aggiornate direttamente nel processo di generazione.
- Gli agenti, resi popolari dalla tecnica di prompt ReAct (PDF), utilizzano gli LLM come mediatori che interagiscono con vari strumenti, tra cui sistemi RAG, API interne o esterne, estensioni personalizzate o persino altri agenti. Gli agenti consentono query complesse e azioni in tempo reale selezionando e utilizzando dinamicamente fonti di informazioni pertinenti. L'LLM, in qualità di agente, interpreta la query dell'utente, decide quale strumento utilizzare e formula la risposta in base alle informazioni recuperate.
Puoi utilizzare la RAG e gli agenti per creare sistemi multi-agente collegati a reti di informazioni di grandi dimensioni, consentendo una gestione sofisticata delle query e il processo decisionale in tempo reale.
L'orchestrazione di diversi modelli, logiche e API non è una novità per le applicazioni di AI generativa. Ad esempio, i motori per suggerimenti combinano modelli di filtro collaborativo, modelli basati sui contenuti e regole aziendali per generare consigli sui prodotti personalizzati per gli utenti. Analogamente, nel rilevamento delle frodi, i modelli di machine learning sono integrati con sistemi basati su regole e origini dati esterne per identificare attività sospette.
Ciò che rende diverse queste catene di componenti di AI generativa è che non puoi caratterizzare in anticipo la distribuzione degli input dei componenti, il che rende i singoli componenti molto più difficili da valutare e gestire singolarmente. L'orchestrazione comporta un cambio di paradigma nel modo in cui sviluppi applicazioni di AI per l'AI generativa.
Nell'AI predittiva, puoi eseguire l'iterazione sui modelli e sui componenti separati in isolamento e poi collegarli nell'applicazione di AI. Nell'AI generativa, sviluppi una catena durante l'integrazione, esegui esperimenti sulla catena dall'inizio alla fine e esegui l'iterazione di strategie di collegamento, prompt, modelli di base e altre API in modo coordinato per raggiungere un obiettivo specifico. Spesso non è necessario effettuare feature engineering, la raccolta dei dati o ulteriori cicli di addestramento del modello; basta modificare la formulazione del modello di prompt.
Il passaggio a MLOps per l'AI generativa, rispetto a MLOps per l'AI predittiva, comporta le seguenti differenze:
- Valutazione: a causa del forte accoppiamento delle catene, queste richiedono una valutazione end-to-end, non solo per ogni componente, per misurarne il rendimento complessivo e la qualità dell'output. In termini di tecniche di valutazione e metriche, la valutazione delle catene è simile alla valutazione dei modelli con prompt.
- Controllo delle versioni: devi gestire una catena come un artefatto completo nella sua interezza. Devi monitorare la configurazione della catena con la relativa cronologia delle revisioni per l'analisi, la riproducibilità e per comprendere gli effetti delle modifiche sull'output. I log devono includere gli input, gli output, gli stati intermedi della catena e eventuali configurazioni della catena utilizzate durante ogni esecuzione.
- Monitoraggio continuo:per rilevare il peggioramento delle prestazioni, la deriva dei dati o un comportamento imprevisto nella catena, devi configurare sistemi di monitoraggio proattivo. Il monitoraggio continuo contribuisce a garantire l'identificazione precoce di potenziali problemi per mantenere la qualità dell'output generato.
- Introspezione:devi ispezionare i flussi di dati interni di una catena (ovvero gli input e gli output di ciascun componente), nonché gli input e gli output dell'intera catena. Fornendo visibilità ai dati che attraversano la catena e ai contenuti risultanti, gli sviluppatori possono individuare le fonti di errori, bias o comportamenti indesiderati.
Il seguente diagramma mostra come le catene, i componenti del modello con prompt e la messa a punto del modello interagiscono in un'applicazione di AI generativa per ridurre la recency e le allucinazioni. I dati vengono selezionati, i modelli vengono ottimizzati e le catene vengono aggiunte per perfezionare ulteriormente le risposte. Dopo aver valutato i risultati, gli sviluppatori possono registrare l'esperimento e continuare a eseguire l'iterazione.
Ottimizzazione
Quando sviluppi un caso d'uso di AI generativa che coinvolge modelli di base, può essere difficile, soprattutto per le attività complesse, fare affidamento solo su progettazione di prompt e chaining per risolvere il caso d'uso. Per migliorare le prestazioni delle attività, spesso gli sviluppatori devono ottimizzare direttamente il modello. L'ottimizzazione consente di modificare attivamente tutti i livelli o un sottoinsieme di livelli (ottimizzazione fine dei parametri) del modello per ottimizzarne la capacità di eseguire una determinata attività. I modi più comuni per ottimizzare un modello sono i seguenti:
- Ottimizzazione fine supervisionata:addestra il modello in modo supervisionato, insegnandogli a prevedere la sequenza di output corretta per un determinato input.
- Apprendimento per rinforzo con feedback umano (RLHF): addestri un modello di assegnazione del merito per prevedere quale risposta preferirebbero gli utenti. Poi, utilizzi questo modello di premio per indirizzare l'LLM nella giusta direzione durante il processo di ottimizzazione. Questo processo è simile a quello in cui un gruppo di giudici umani guida l'apprendimento del modello.
Il seguente diagramma mostra come la regolazione contribuisce a perfezionare il modello durante il ciclo di sperimentazione.
In MLOps, la messa a punto condivide le seguenti funzionalità con l'addestramento del modello:
- La possibilità di monitorare gli elementi che fanno parte del job di ottimizzazione. Ad esempio, gli elementi includono i dati di input o i parametri utilizzati per ottimizzare il modello.
- La possibilità di misurare l'impatto della regolazione. Questa funzionalità consente di valutare il modello ottimizzato per le attività specifiche su cui è stato addestrato e di confrontare i risultati con i modelli ottimizzati in precedenza o con i modelli bloccati per la stessa attività.
Addestramento e ottimizzazione continui
In MLOps, l'addestramento continuo è la pratica di addestrare ripetutamente i modelli di machine learning in un ambiente di produzione. L'addestramento continuo contribuisce a garantire che il modello rimanga aggiornato e funzioni bene man mano che i pattern dei dati reali cambiano nel tempo. Per i modelli di AI generativa, la regolazione continua dei modelli è spesso più pratica di una procedura di ricollocazione a causa degli elevati costi di calcolo e dati.
L'approccio all'ottimizzazione continua dipende dal caso d'uso e dagli obiettivi specifici. Per attività relativamente statiche come il riassunto di testo, i requisiti di ottimizzazione continua potrebbero essere inferiori. Tuttavia, per applicazioni dinamiche come i chatbot che necessitano di un costante allineamento umano, è necessaria un'ottimizzazione più frequente utilizzando tecniche come l'RLHF basate sul feedback umano.
Per determinare la strategia di ottimizzazione continua corretta, devi valutare la natura del tuo caso d'uso e l'evoluzione dei dati di input nel tempo. Anche il costo è un aspetto importante, poiché l'infrastruttura di calcolo influisce notevolmente sulla velocità e sulla spesa della regolazione. Le unità di elaborazione grafica (GPU) e le unità di elaborazione tensoriale (TPU) sono l'hardware necessario per il perfezionamento. Le GPU, note per la loro potenza di calcolo parallela, sono molto efficaci nel gestire i carichi di lavoro con intensità di calcolo elevata e sono spesso associate all'addestramento ed esecuzione di modelli di machine learning complessi. Le TPU, invece, sono progettate appositamente da Google per accelerare le attività di machine learning. Le TPU eccellono nella gestione di operazioni su matrici di grandi dimensioni comuni nelle reti neurali di deep learning.
Pratiche relative ai dati
In precedenza, il comportamento del modello di ML era dettato esclusivamente dai dati di addestramento. Anche se questo vale ancora per i modelli di base, il comportamento del modello per le applicazioni di AI generativa basate su modelli di base è determinato da come lo adatti a diversi tipi di dati di input.
I modelli di base vengono addestrati su dati quali:
- Set di dati per l'addestramento preliminare (ad es. C4, The Pile o dati proprietari)
- Set di dati per l'ottimizzazione delle istruzioni
- Set di dati di ottimizzazione della sicurezza
- Dati sulle preferenze umane
Le applicazioni di IA generativa vengono adattate in base a dati quali:
- Prompt
- Dati aumentati o basati su dati (ad esempio siti web, documenti, PDF, database o API)
- Dati specifici per l'attività per PEFT
- Valutazioni specifiche per le attività
- Dati sulle preferenze umane
La differenza principale per le pratiche relative ai dati tra l'ML predittivo e l'IA generativa è all'inizio del processo del ciclo di vita. Nell'ML predittivo, passi molto tempo per l'ingegneria dei dati e, se non hai i dati giusti, non puoi creare un'applicazione. Nell'AI generativa, inizi con un modello di base, alcune istruzioni e forse alcuni input di esempio (ad esempio l'apprendimento contestuale). Puoi creare un prototipo e lanciare un'applicazione con pochissimi dati.
La facilità di prototipazione, tuttavia, comporta la sfida aggiuntiva di gestire diversi dati. L'IA predittiva si basa su set di dati ben definiti. Nell'AI generativa, una singola applicazione può utilizzare vari tipi di dati, provenienti da origini dati completamente diverse, che lavorano insieme.
Considera i seguenti tipi di dati:
- Prompt di condizionamento:istruzioni fornite al modello di base per indirizzarne l'output e impostare i limiti di ciò che può generare.
- Esempi few-shot:un modo per mostrare al modello cosa vuoi ottenere tramite coppie di input-output. Questi esempi aiutano il modello a comprendere le attività specifiche e, in molti casi, possono migliorare il rendimento.
- Dati di ancoraggio o di aumento:i dati che consentono al modello di base di produrre risposte per un contesto specifico e mantenere le risposte aggiornate e pertinenti senza dover riaddestrare l'intero modello di base. Questi dati possono provenire da API esterne (come la Ricerca Google) o da API e origini dati interne.
- Set di dati specifici per l'attività:i set di dati che consentono di perfezionare un modello di base esistente per una determinata attività, migliorandone le prestazioni in quell'area specifica.
- Set di dati completi per il preaddestramento: gli enormi set di dati utilizzati per addestrare inizialmente i modelli di base. Sebbene gli sviluppatori di applicazioni potrebbero non avere accesso a questi modelli o ai tokenizzatori, le informazioni codificate nel modello stesso influiscono sull'output e sul rendimento dell'applicazione.
Questa vasta gamma di tipi di dati aggiunge un livello di complessità in termini di organizzazione, monitoraggio e gestione del ciclo di vita dei dati. Ad esempio, un'applicazione basata su RAG può riscrivere le query degli utenti, raccogliere dinamicamente esempi pertinenti utilizzando un insieme selezionato di esempi, eseguire query su un database di vettori e combinare le informazioni con un modello di prompt. Un'applicazione basata su RAG richiede la gestione di più tipi di dati, tra cui query degli utenti, database di vettori con esempi di few-shot selezionati e informazioni sull'azienda, nonché modelli di prompt.
Ogni tipo di dati richiede un'organizzazione e una manutenzione scrupolosa. Ad esempio, un database vettoriale richiede l'elaborazione dei dati in embedding, l'ottimizzazione delle strategie di suddivisione in blocchi e l'assicurazione che siano disponibili solo informazioni pertinenti. Un modello di prompt richiede la gestione delle versioni e il monitoraggio, mentre le query degli utenti devono essere riscritte. Le best practice di MLOps e DevOps possono aiutarti a svolgere queste attività. Nell'AI predittiva, crei pipeline di dati per l'estrazione, la trasformazione e il caricamento. Nell'AI generativa, crei pipeline per gestire, far evolvere, adattare e integrare diversi tipi di dati in modo versionabile, tracciabile e riproducibile.
L'ottimizzazione dei modelli di base può migliorare le prestazioni delle applicazioni di AI generativa, ma i modelli richiedono dati. Puoi ottenere questi dati lanciando la tua applicazione e raccogliendo dati reali, generando dati sintetici o una combinazione di entrambi. L'utilizzo di modelli di grandi dimensioni per generare dati sintetici sta diventando popolare perché questo metodo accelera il processo di implementazione, ma è comunque importante che i risultati vengano controllati da persone per garantire la qualità. Di seguito sono riportati alcuni esempi di come puoi utilizzare modelli di grandi dimensioni per il data engineering:
- Generare dati sintetici: questo processo prevede la creazione di dati artificiali che assomigliano molto ai dati reali in termini di caratteristiche e proprietà statistiche. Spesso questa attività viene completata da modelli di grandi dimensioni e potenti. I dati sintetici fungono da dati di addestramento aggiuntivi per l'AI generativa, consentendo di apprendere pattern e relazioni anche quando i dati reali etichettati sono scarsi.
- Correzione dei dati sintetici:questa tecnica si concentra sull'identificazione e sulla correzione di errori e incoerenze all'interno dei set di dati etichettati esistenti. Utilizzando la potenza di modelli più grandi, l'AI generativa può segnalare potenziali errori di etichettatura e proporre correzioni per migliorare la qualità e l'affidabilità dei dati di addestramento.
- Aumento dei dati sintetici:questo approccio va oltre la generazione di nuovi dati. L'aumento dei dati sintetici prevede la manipolazione intelligente dei dati esistenti per creare diverse varianti, preservando al contempo funzionalità e relazioni essenziali. L'IA generativa può affrontare una gamma più ampia di scenari rispetto all'AI predittiva durante l'addestramento, il che porta a una migliore generalizzazione e alla capacità di generare output sfumati e pertinenti.
A differenza dellAI predittiva, è difficile valutare l'AI generativa. Ad esempio, potresti non conoscere la distribuzione dei dati di addestramento dei modelli di base. Devi creare un set di dati di valutazione personalizzato che rifletta tutti i tuoi casi d'uso, inclusi i casi essenziali, medi ed estremi. Analogamente alla messa a punto dei dati, puoi utilizzare potenti LLM per generare, organizzare e aumentare i dati al fine di creare set di dati di valutazione solidi.
Valutazione
Il processo di valutazione è un'attività fondamentale per lo sviluppo di applicazioni di AI generativa. La valutazione può avere diversi gradi di automazione: da completamente gestita da persone a completamente automatizzata da un processo.
Quando crei la prototipazione di un progetto, la valutazione è spesso un processo manuale. Gli sviluppatori esaminano gli output del modello, ottenendo un'idea qualitativa del suo funzionamento. Tuttavia, con la maturazione del progetto e l'aumento del numero di casi di test, la valutazione manuale diventa un collo di bottiglia.
L'automazione della valutazione offre due grandi vantaggi: ti consente di procedere più velocemente e rende le valutazioni più affidabili. Inoltre, elimina la soggettività umana dall'equazione, contribuendo a garantire la riproducibilità dei risultati.
Tuttavia, l'automazione della valutazione per le applicazioni di AI generativa comporta una serie di sfide. Ad esempio, prendi in considerazione quanto indicato di seguito:
- Sia gli input (prompt) che gli output possono essere incredibilmente complessi. Un singolo prompt può includere più istruzioni e vincoli che il modello deve gestire. Gli output stessi sono spesso di dimensioni elevate, ad esempio un'immagine generata o un blocco di testo. È difficile misurare la qualità di questi output con una metrica semplice. Alcune metriche consolidate, come BLEU per le traduzioni e ROUGE per i riepiloghi, non sono sempre sufficienti. Pertanto, puoi utilizzare metodi di valutazione personalizzati o un altro modello di base per valutare il sistema. Ad esempio, potresti chiedere a un modello linguistico di grandi dimensioni (come AutoSxS) di assegnare un punteggio alla qualità dei testi generati in varie dimensioni.
- Molte metriche di valutazione per l'AI generativa sono soggettive. Che cosa rende un output migliore di un altro può essere una questione di opinione. Devi assicurarti che la valutazione automatica sia in linea con il giudizio umano, perché vuoi che le tue metriche siano un sostituto affidabile di ciò che pensano le persone. Per garantire la comparabilità tra gli esperimenti, devi determinare l'approccio di valutazione e le metriche all'inizio del processo di sviluppo.
- Mancanza di dati di riferimento, soprattutto nelle prime fasi di un progetto. Una possibile soluzione è generare dati sintetici da utilizzare come dati empirici reali temporanei che puoi perfezionare nel tempo con il feedback umano.
- La valutazione completa è essenziale per proteggere le applicazioni di AI generativa dagli attacchi contraddittori. Gli utenti malintenzionati possono creare prompt per tentare di estrarre informazioni sensibili o manipolare gli output del modello. I set di valutazione devono affrontare specificamente questi vettori di attacco, tramite tecniche come il fuzzing dei prompt (fornendo al modello variazioni casuali dei prompt) e test per la fuga di informazioni.
Per valutare le applicazioni di AI generativa, implementa quanto segue:
- Automatizza la procedura di valutazione per garantire velocità, scalabilità e riproducibilità. Puoi considerare l'automazione come un sostituto del giudizio umano.
- Personalizza la procedura di valutazione in base alle esigenze dei tuoi casi d'uso.
- Per garantire la confrontabilità, stabilizza l'approccio di valutazione, le metriche e i dati di fatto il prima possibile nella fase di sviluppo.
- Genera dati empirici sintetici per compensare la mancanza di dati empirici reali.
- Includi casi di test di prompt antagonistici nell'ambito del set di valutazione per verificare l'affidabilità del sistema stesso contro questi attacchi.
Esegui il deployment
Le applicazioni di AI generativa a livello di produzione sono sistemi complessi con molti componenti in interazione. Per eseguire il deployment di un'applicazione di AI generativa in produzione, devi gestire e coordinare questi componenti con le fasi precedenti dello sviluppo dell'applicazione di AI generativa. Ad esempio, una singola applicazione potrebbe utilizzare diversi LLM insieme a un database, il tutto alimentato da una pipeline di dati dinamici. Ciascuno di questi componenti può richiedere una propria procedura di implementazione.
Il deployment di applicazioni di AI generativa è simile al deployment di altri sistemi software complessi perché devi eseguire il deployment di componenti di sistema come database e applicazioni Python. Ti consigliamo di utilizzare pratiche di ingegneria del software standard come il controllo della versione e CI/CD.
Controllo delle versioni
La sperimentazione dell'IA generativa è un processo iterativo che prevede ripetuti cicli di sviluppo, valutazione e modifica. Per garantire un approccio strutturato e gestibile, devi implementare un sistema di versionamento rigoroso per tutti i componenti modificabili. Questi componenti includono:
- Modelli di prompt: a meno che tu non utilizzi soluzioni di gestione dei prompt specifiche, utilizza gli strumenti di controllo della versione per monitorare le versioni.
- Definizioni delle catene: utilizza gli strumenti di controllo della versione per monitorare le versioni del codice che definisce la catena (incluse le integrazioni API, le chiamate al database e le funzioni).
- Set di dati esterni:nei sistemi RAG, i set di dati esterni svolgono un ruolo importante. Utilizza soluzioni di analisi dei dati esistenti come BigQuery, AlloyDB per PostgreSQL e Vertex AI Feature Store per monitorare queste modifiche e le versioni di questi set di dati.
- Modelli di adattatori:tecniche come l'ottimizzazione LoRA per i modelli di adattatori sono in costante evoluzione. Utilizza soluzioni di archiviazione dei dati consolidate (ad esempio Cloud Storage) per gestire e eseguire il controllo delle versioni di questi asset in modo efficace.
Integrazione continua
In un framework di integrazione continua, ogni modifica al codice viene sottoposta a test automatici prima dell'unione per rilevare tempestivamente i problemi. I test di unità e integrazione sono importanti per la qualità e l'affidabilità. I test di unità si concentrano su singoli frammenti di codice, mentre i test di integrazione verificano che diversi componenti funzionino insieme.
L'implementazione di un sistema di integrazione continua consente di:
- Garantire output affidabili e di alta qualità:i test rigorosi aumentano la fiducia nelle prestazioni e nella coerenza del sistema.
- Rileva i bug in anticipo:l'identificazione dei problemi tramite i test ne impedisce la causa di problemi più grandi a valle. Individuare i bug in anticipo rende il sistema più robusto e resiliente ai casi limite e agli input imprevisti.
- Costi di manutenzione inferiori: i casi di test ben documentati semplificano la risoluzione dei problemi e consentono modifiche più agevoli in futuro, riducendo l'impegno complessivo per la manutenzione.
Questi vantaggi sono applicabili alle applicazioni di AI generativa. Applica l'integrazione continua a tutti gli elementi del sistema, inclusi i modelli di prompt, la catena, la logica di collegamento a catena, eventuali modelli incorporati e i sistemi di recupero.
Tuttavia, l'applicazione dell'integrazione continua all'AI generativa comporta le seguenti sfide:
- Difficoltà di generazione di casi di test completi: la natura complessa e aperta degli output dell'AI generativa rende difficile definire e creare un insieme esaustivo di casi di test che copra tutte le possibilità.
- Problemi di riproducibilità: ottenere risultati deterministici e riproducibili è difficile perché i modelli generativi spesso presentano casualità e variabilità intrinseche nei loro output, anche per input identici. Questa casualità complica la verifica coerente dei comportamenti previsti.
Queste sfide sono strettamente correlate alla questione più ampia di come valutare le applicazioni di AI generativa. Puoi applicare molte delle stesse tecniche di valutazione allo sviluppo di sistemi di CI per l'AI generativa.
Distribuzione continua
Dopo l'unione del codice, un processo di distribuzione continua inizia a spostare il codice compilato e testato in ambienti molto simili a quelli di produzione per ulteriori test prima del deployment finale.
Come descritto in Sviluppare ed eseguire esperimenti, gli elementi della catena diventano uno dei componenti principali da implementare perché costituiscono fondamentalmente l'applicazione dell'AI generativa. La procedura di importazione dell'applicazione di AI generativa che contiene la catena può variare a seconda dei requisiti di latenza e se il caso d'uso è batch o online.
I casi d'uso batch richiedono di eseguire il deployment di un processo batch che viene eseguito in produzione in base a una pianificazione. Il processo di importazione si concentra sul test dell'intera pipeline di integrazione in un ambiente simile a quello di produzione prima dell'implementazione. Nell'ambito della procedura di test, gli sviluppatori possono affermare requisiti specifici relativi al throughput del processo batch stesso e verificare che tutti i componenti dell'applicazione funzionino correttamente. Ad esempio, gli sviluppatori possono controllare autorizzazioni, infrastruttura e dipendenze del codice.
I casi d'uso online richiedono il deployment di un'API, ovvero l'applicazione che contiene la catena ed è in grado di rispondere agli utenti con bassa latenza. Il processo di caricamento prevede il test dell'API in integrazione in un ambiente simile alla produzione. Questi test verificano che tutti i componenti dell'applicazione funzionino correttamente. Puoi verificare i requisiti non funzionali (ad esempio scalabilità, affidabilità e prestazioni) tramite una serie di test, inclusi i test di carico.
Elenco di controllo per il deployment
Il seguente elenco descrive i passaggi da seguire per eseguire il deployment di un'applicazione di IA generativa utilizzando un servizio gestito come Vertex AI:
- Configura il controllo della versione:implementa le pratiche di controllo della versione per i deployment dei modelli. Il controllo delle versioni ti consente di eseguire il rollback alle versioni precedenti, se necessario, e di monitorare le modifiche apportate al modello o alla configurazione di implementazione.
- Ottimizza il modello: esegui le attività di ottimizzazione del modello (distillazione, quantizzazione e potatura) prima di impacchettare o eseguire il deployment del modello.
- Esegui il containerizzazione del modello:impacchetta il modello addestrato in un container.
- Definire i requisiti hardware di destinazione: assicurati che l'ambiente di implementazione di destinazione soddisfi i requisiti per il rendimento ottimale del modello, ad esempio GPU, TPU e altri acceleratori hardware specializzati.
- Definisci l'endpoint del modello: specifica il contenitore del modello, il formato di input, il formato di output e eventuali parametri di configurazione aggiuntivi.
- Alloca risorse:alloca le risorse di calcolo appropriate per l'endpoint in base ai requisiti di rendimento e traffico previsti.
- Configura il controllo dell'accesso dell'accesso:configura i meccanismi di controllo dell'accesso dell'accesso per limitare l'accesso all'endpoint in base ai criteri di autenticazione e autorizzazione. Il controllo dell'accesso contribuisce a garantire che solo gli utenti o i servizi autorizzati possano interagire con il modello di cui è stato eseguito il deployment.
- Crea endpoint del modello: crea un endpoint per eseguire il deployment del modello come servizio API REST. L'endpoint consente ai client di inviare richieste all'endpoint e di ricevere risposte dal modello.
- Configura il monitoraggio e il logging:configura sistemi di monitoraggio e logging per monitorare le prestazioni, l'utilizzo delle risorse e i log degli errori dell'endpoint.
- Esegui il deployment di integrazioni personalizzate:integra il modello in applicazioni o servizi personalizzati utilizzando le API o l'SDK del modello.
- Esegui il deployment di applicazioni in tempo reale:crea una pipeline in streaming che elabora i dati e genera risposte in tempo reale.
Logging e monitoraggio
Il monitoraggio delle applicazioni di AI generativa e dei relativi componenti richiede tecniche che puoi aggiungere alle tecniche di monitoraggio che utilizzi per la MLOps tradizionale. Devi registrare e monitorare l'applicazione end-to-end, il che include la registrazione e il monitoraggio dell'input e dell'output complessivi dell'applicazione e di ogni componente.
Gli input all'applicazione attivano più componenti per produrre gli output. Se l'output di un determinato input non è accurato, devi determinare quale tra i componenti non ha funzionato bene. Devi richiedere la concatenazione nei log per tutti gli elementi eseguiti. Devi anche mappare gli input e i componenti con eventuali elementi e parametri aggiuntivi di cui dipendono per poter analizzare gli input e gli output.
Quando applichi il monitoraggio, dai la priorità al monitoraggio a livello di applicazione. Se il monitoraggio a livello di applicazione dimostra che l'applicazione ha un buon rendimento, significa che anche tutti i componenti hanno un buon rendimento. Successivamente, applica il monitoraggio ai componenti del modello richiesti per ottenere risultati più granulari e comprendere meglio la tua applicazione.
Come per il monitoraggio convenzionale in MLOps, devi implementare una procedura di avviso per informare i proprietari dell'applicazione quando vengono rilevati scostamenti, sfasamenti o cali del rendimento. Per impostare gli avvisi, devi integrare gli strumenti di avviso e notifica nella procedura di monitoraggio.
Le sezioni seguenti descrivono il monitoraggio dello scostamento e della deriva e le attività di valutazione continua. Inoltre, il monitoraggio in MLOps include il monitoraggio delle metriche relative all'integrità complessiva del sistema, come l'utilizzo delle risorse e la latenza. Queste metriche di efficienza si applicano anche alle applicazioni di AI generativa.
Rilevamento del disallineamento
Il rilevamento del disallineamento nei sistemi ML convenzionali si riferisce al disallineamento addestramento/produzione che si verifica quando la distribuzione dei dati delle funzionalità in produzione si discosta dalla distribuzione dei dati delle funzionalità osservata durante l'addestramento del modello. Per le applicazioni di AI generativa che utilizzano modelli preaddestrati in componenti collegati in serie per produrre l'output, devi misurare anche lo scostamento. Puoi misurare lo scostamento confrontando la distribuzione dei dati di input che hai utilizzato per valutare l'applicazione e la distribuzione degli input dell'applicazione in produzione. Se le due distribuzioni si allontanano, devi eseguire indagini più approfondite. Puoi applicare la stessa procedura anche ai dati di output.
Rilevamento della deviazione
Come il rilevamento del disallineamento, il rilevamento delle deviazioni controlla la presenza di differenze statistiche tra due set di dati. Tuttavia, anziché confrontare le valutazioni e fornire input, la deriva cerca le variazioni nei dati di input. Drift ti consente di valutare gli input e quindi il modo in cui il comportamento dei tuoi utenti cambia nel tempo.
Poiché l'input dell'applicazione è in genere di testo, puoi utilizzare diversi metodi per misurare lo scostamento e la deriva. In generale, questi metodi cercano di identificare modifiche significative nei dati di produzione, sia di tipo testuale (ad esempio le dimensioni dell'input) che concettuale (ad esempio gli argomenti nell'input), rispetto al set di dati di valutazione. Tutti questi metodi cercano modifiche che potrebbero indicare che l'applicazione potrebbe non essere pronta a gestire correttamente la natura dei nuovi dati in arrivo. Ecco alcuni metodi comuni:
- Calcolo di embedding e distanze
- Conteggio della lunghezza del testo e del numero di token
- Monitoraggio delle modifiche al vocabolario, nuovi concetti e intent, prompt e argomenti nei set di dati
- Utilizzo di approcci statistici come la differenza di densità dei minimi quadrati (PDF), la discrepanza media massima (MMD), la MMD con kernel appreso (PDF) o la MMD basata sul contesto.
Poiché i casi d'uso dell'AI generativa sono molto diversi, potresti richiedere altre metriche personalizzate che catturino meglio le variazioni impreviste nei dati.
Valutazione continua
La valutazione continua è un altro approccio comune al monitoraggio delle applicazioni di AI generativa. In un sistema di valutazione continua, acquisisci l'output di produzione del modello ed esegui un'attività di valutazione utilizzando questo output per tenere traccia delle prestazioni del modello nel tempo. Puoi raccogliere feedback diretti degli utenti, come le valutazioni, che forniscono informazioni immediate sulla qualità percepita degli output. Parallelamente, il confronto delle risposte generate dal modello con le informazioni empiriche reali consente un'analisi più approfondita del rendimento. Puoi raccogliere i dati di fatto tramite la valutazione umana o come risultato di un approccio di modello di AI di ensemble per generare metriche di valutazione. Questa procedura fornisce una visualizzazione di come sono cambiate le metriche di valutazione dal momento in cui hai sviluppato il modello a quello in cui si trova attualmente in produzione.
Regola
Nel contesto di MLOps, la governance comprende tutte le pratiche e le norme che stabiliscono il controllo, la responsabilità e la trasparenza nello sviluppo, nel deployment e nella gestione continua dei modelli di machine learning, incluse tutte le attività relative ai cicli di vita di codice, dati e modelli.
Nelle applicazioni di AI predittiva, la consistenza si concentra sul monitoraggio e sulla comprensione del percorso completo di un modello di machine learning. Nell'AI generativa, la derivazione va oltre l'artefatto del modello per estendersi a tutti i componenti della catena. Il monitoraggio include i dati, i modelli, la struttura dei modelli, il codice e le relative metriche e dati di valutazione. Il monitoraggio della linea di origine può aiutarti a eseguire controlli, eseguire il debug e migliorare i modelli.
Oltre a queste nuove pratiche, puoi regolare il ciclo di vita dei dati e i cicli di vita dei componenti di AI generativa utilizzando pratiche standard di MLOps e DevOps.
Passaggi successivi
Esegui il deployment di un'applicazione di IA generativa utilizzando Vertex AI