Esegui il deployment e gestisci le applicazioni di IA generativa

Last reviewed 2024-11-19 UTC

L'AI generativa ha introdotto un nuovo modo di 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, curare i dati, progettare prompt ottimali, ottimizzare i modelli per attività specifiche e basare gli output del modello su dati reali.

Questo documento descrive come adattare i processi DevOps e MLOps per sviluppare, eseguire il deployment e gestire applicazioni di AI generativa sui foundation model 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 ingegneria del software che collega lo sviluppo e le 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 continua e la distribuzione continua (CI/CD).

MLOps si basa sui principi DevOps per affrontare le sfide della creazione e del funzionamento dei sistemi di machine learning (ML). I sistemi di machine learning in genere utilizzano l'AI predittiva per identificare i 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

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 foundation model vengono addestrati su set di dati enormi e diversi. Questo training ti consente di utilizzare i modelli di base per sviluppare applicazioni per molti casi d'uso diversi. I modelli di base hanno proprietà emergenti (PDF), che consentono loro di fornire risposte a input specifici senza un addestramento esplicito. A causa di queste proprietà emergenti, i modelli di base sono difficili da creare e utilizzare e richiedono di adattare i processi DevOps e MLOps.

Lo sviluppo di un modello di base richiede risorse di dati significative, hardware specializzato, investimenti importanti e competenze specializzate. Pertanto, molte aziende preferiscono utilizzare i foundation model 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:

  • Discovery:gli sviluppatori e gli ingegneri dell'AI identificano il modello di base più adatto al loro caso d'uso. Considerano i punti di forza, i punti deboli e i costi di ogni modello per prendere una decisione informata.
  • Sviluppo e sperimentazione:gli sviluppatori utilizzano il prompt engineering per creare e perfezionare i prompt di input per ottenere l'output richiesto. Se disponibili, l'apprendimento few-shot, l'ottimizzazione parameter-efficient (PEFT) e il concatenamento di modelli contribuiscono a guidare il comportamento del modello. Il chaining di modelli si riferisce all'organizzazione di chiamate a più modelli in una sequenza specifica per creare un workflow.
  • Deployment:gli sviluppatori devono gestire molti artefatti nel processo di deployment, inclusi modelli di prompt, definizioni di catene, modelli incorporati, archivi di dati di recupero e adattatori di modelli ottimizzati. Questi artefatti hanno propri requisiti di governance e richiedono una gestione attenta durante lo sviluppo e il deployment. Il deployment delle applicazioni di AI generativa deve anche 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 modificano costantemente i modelli di base tramite tecniche di prompt, sostituendo i modelli con versioni più recenti o combinando più modelli per migliorare le prestazioni, l'efficienza dei costi o ridurre la latenza. L'addestramento continuo convenzionale è ancora rilevante per gli scenari in cui sono necessari cicli di ottimizzazione ricorrenti o l'incorporamento di cicli di feedback umano.

Le pratiche di data engineering svolgono un ruolo fondamentale in tutte le fasi di sviluppo. Per creare output affidabili, devi disporre di una base fattuale (che garantisce che gli output del modello si basino su informazioni accurate e aggiornate) e di dati recenti provenienti da sistemi interni e aziendali. I dati di ottimizzazione aiutano ad adattare i modelli a stili e attività specifici e correggono 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é ne esistono molti. Ogni modello ha architetture, dimensioni, set di dati di addestramento e licenze diversi. Inoltre, ogni caso d'uso presenta requisiti unici, richiedendo di analizzare i modelli disponibili in più dimensioni.

Quando valuti i modelli, prendi in considerazione i seguenti fattori:

  • Qualità:esegui prompt di test per valutare la qualità dell'output.
  • Latenza e velocità effettiva: determina la latenza e la velocità effettiva corrette richieste 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 riepilogo elaborate in batch.
  • Tempo di sviluppo e manutenzione: considera l'investimento di tempo per lo sviluppo iniziale e la manutenzione continua. I modelli gestiti spesso richiedono meno impegno rispetto ai modelli disponibili pubblicamente che esegui il deployment autonomamente.
  • Costo di utilizzo:considera i costi di infrastruttura e consumo associati al modello.
  • Conformità:valuta la capacità del modello di rispettare le normative pertinenti e i termini di licenza.

Sviluppare e sperimentare

Quando crei applicazioni di AI generativa, lo sviluppo e la sperimentazione sono iterativi 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 corrisponde alle aspettative, puoi raccogliere più dati, arricchirli o perfezionarli ulteriormente. Inoltre, potresti dover ottimizzare i prompt, applicare tecniche di ottimizzazione o passare a un altro modello di base. Questo ciclo di perfezionamento iterativo, basato sugli approfondimenti della valutazione, è importante per ottimizzare le applicazioni di AI generativa tanto quanto per il machine learning e l'AI predittiva.

Il paradigma dei modelli di base

I modelli di base differiscono dai modelli predittivi perché sono modelli multiuso. Anziché essere addestrati per un singolo scopo su dati specifici per quell'attività, i foundation model vengono addestrati su set di dati ampi, il che ti consente di applicarli a molti casi d'uso diversi.

I modelli di base sono anche molto sensibili alle modifiche dell'input. L'output del modello e l'attività che svolge sono determinati dall'input del modello. Un foundation model può tradurre testo, generare video o classificare dati semplicemente modificando l'input. Anche modifiche insignificanti all'input possono influire sulla capacità del modello di eseguire correttamente l'attività.

Queste proprietà dei modelli di base richiedono pratiche di sviluppo e operative diverse. Sebbene i modelli nel contesto dell'AI predittiva siano autosufficienti e specifici per le attività, i modelli di base sono multiuso e richiedono un elemento aggiuntivo oltre all&#3input utenteut dell'utente. I modelli di AI generativa richiedono un prompt e, più nello specifico, un modello di prompt. Un modello di prompt è un insieme di istruzioni ed esempi insieme a segnaposto per adattarsi all&#39input utentet dell'utente. L'applicazione può combinare il modello di prompt e i dati dinamici (ad esempio l&#39input utentet dell'utente) per creare un prompt completo, ovvero il testo passato come input al modello di base.

Il componente del modello con prompt

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 con prompt è 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, un prompt, anche solo un'istruzione di base, è necessario insieme all'input per far sì che il modello di base esegua l'attività richiesta dall'applicazione.

Il componente del modello basato su prompt crea una distinzione importante per le pratiche 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 basato su prompt. Il ciclo di sperimentazione dell'AI generativa di solito 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 chiamata prompt engineering.

L'ingegneria dei prompt prevede i seguenti passaggi iterativi:

  • Prompt:crea e perfeziona i prompt per ottenere 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 misurare la sua comprensione e il suo successo nell'adempimento delle istruzioni del prompt.

Per monitorare i risultati della valutazione, puoi registrare facoltativamente i risultati di un esperimento. Poiché il prompt stesso è un elemento fondamentale del processo di ingegneria dei prompt, diventa l'artefatto più importante all'interno degli artefatti che fanno parte dell'esperimento.

Tuttavia, per sperimentare un'applicazione di AI generativa, devi identificare i tipi di artefatto. Nell'AI predittiva, dati, pipeline e codice sono diversi. Tuttavia, con il paradigma dei prompt nell'AI generativa, i prompt possono includere contesto, istruzioni, esempi, misure di protezione e dati interni o esterni effettivi estratti da un'altra posizione.

Per determinare il tipo di artefatto, devi riconoscere che un prompt ha componenti diversi e richiede strategie di gestione diverse. Considera quanto segue:

  • Prompt come dati:alcune parti del prompt fungono da dati. Elementi come esempi few-shot, 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 guardrail sono simili al codice. Questi componenti definiscono la struttura e le regole del prompt stesso e richiedono pratiche più incentrate sul codice, come processi di approvazione, controllo delle versioni del codice e test.

Di conseguenza, quando applichi le pratiche MLOps all'AI generativa, devi disporre di processi che consentano agli sviluppatori di archiviare, recuperare, monitorare e modificare i prompt in modo semplice. Questi processi 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 una versione diversa. Quando monitori i risultati di un esperimento, devi registrare il prompt, le versioni dei componenti, la versione del modello, le metriche e i dati di output.

Concatenazione e aumento dei modelli

I modelli di AI generativa, in particolare i modelli linguistici di grandi dimensioni (LLM), presentano sfide intrinseche nel mantenere la freschezza e nell'evitare le allucinazioni. L'incorporamento di nuove informazioni negli LLM richiede un preaddestramento costoso e con molti dati prima di poter 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, insieme a chiamate a API esterne e logica espressa come codice. Una sequenza di componenti del modello richiesti collegati in questo modo è comunemente nota come catena.

Il seguente diagramma mostra i componenti di una catena e il relativo processo di sviluppo.

Catene di modelli nel processo di sviluppo.

Mitigazione per la freschezza e l'allucinazione

Due pattern comuni basati su catene che possono mitigare la novità e le allucinazioni sono la Retrieval Augmented Generation (RAG) (PDF) e gli agenti.

  • La RAG aumenta i modelli preaddestrati con le conoscenze recuperate dai database, il che evita la necessità di pre-addestramento. La RAG consente di basare le risposte su informazioni oggettive e riduce le allucinazioni incorporando informazioni oggettive aggiornate direttamente nel processo di generazione.
  • Gli agenti, resi popolari dalla tecnica di prompt ReAct (PDF), utilizzano i LLM come intermediari 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 le fonti di informazioni pertinenti. Il modello LLM, che funge da agente, interpreta la query dell'utente, decide quale strumento utilizzare e formula la risposta in base alle informazioni recuperate.

Puoi utilizzare RAG e gli agenti per creare sistemi multi-agente connessi a grandi reti di informazioni, consentendo una gestione sofisticata delle query e un 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 filtraggio collaborativo, modelli basati sui contenuti e regole aziendali per generare suggerimenti 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 in isolamento. L'orchestrazione provoca un cambio di paradigma nel modo in cui sviluppi applicazioni di AI per l'AI generativa.

Nell'AI predittiva, puoi iterare sui singoli modelli e componenti in isolamento e poi concatenarli nell'applicazione AI. Nell'AI generativa, sviluppi una catena durante l'integrazione, esegui la sperimentazione end-to-end della catena e iteri le strategie di concatenamento, i prompt, i foundation model e altre API in modo coordinato per raggiungere un obiettivo specifico. Spesso non hai bisogno di feature engineering, raccolta di dati o ulteriori cicli di addestramento del modello, ma solo di modifiche alla formulazione del modello di prompt.

Il passaggio a MLOps per l'AI generativa, anziché per l'AI predittiva, comporta le seguenti differenze:

  • Valutazione:a causa dell'accoppiamento stretto delle catene, queste richiedono una valutazione end-to-end, non solo per ogni componente, per valutare le loro prestazioni complessive e la qualità del loro 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 tutte le 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 proattivi. Il monitoraggio continuo contribuisce a garantire l'identificazione tempestiva 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 ogni componente), nonché gli input e gli output dell'intera catena. Fornendo visibilità ai dati che scorrono attraverso la catena e ai contenuti risultanti, gli sviluppatori possono individuare le origini di errori, bias o comportamenti indesiderati.

Il seguente diagramma mostra come le catene, i componenti del modello con prompt e l'ottimizzazione del modello interagiscono in un'applicazione di AI generativa per ridurre la recency e le allucinazioni. I dati vengono curati, i modelli vengono ottimizzati e le catene vengono aggiunte per perfezionare ulteriormente le risposte. Una volta valutati i risultati, gli sviluppatori possono registrare l'esperimento e continuare a eseguire iterazioni.

Catene, modello con prompt e ottimizzazione del modello nelle applicazioni di AI generativa.

Ottimizzazione

Quando sviluppi un caso d'uso dell'AI generativa che coinvolge modelli di base, può essere difficile, soprattutto per le attività complesse, fare affidamento solo sull'ingegneria dei prompt e sul concatenamento per risolvere il caso d'uso. Per migliorare le prestazioni dell'attività, gli sviluppatori spesso devono ottimizzare direttamente il modello. L'ottimizzazione consente di modificare attivamente tutti i livelli o un sottoinsieme di livelli (ottimizzazione efficiente dei parametri) del modello per ottimizzarne la capacità di svolgere una determinata attività. I modi più comuni per ottimizzare un modello sono i seguenti:

  • Ottimizzazione 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 ricompensa per prevedere la risposta che gli esseri umani preferirebbero. Quindi, utilizzi questo modello di premi per indirizzare il 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 l'ottimizzazione contribuisce a perfezionare il modello durante il ciclo di sperimentazione.

Ottimizzazione dei modelli.

In MLOps, il perfezionamento condivide le seguenti funzionalità con l'addestramento del modello:

  • La possibilità di monitorare gli artefatti che fanno parte del job di ottimizzazione. Ad esempio, gli artefatti includono i dati di input o i parametri utilizzati per ottimizzare il modello.
  • La possibilità di misurare l'impatto della messa a punto. Questa funzionalità ti consente di valutare il modello ottimizzato per le attività specifiche per cui è stato addestrato e di confrontare i risultati con modelli ottimizzati o bloccati in precedenza per la stessa attività.

Addestramento e ottimizzazione continui

In MLOps, l'addestramento continuo è la pratica di riaddestrare 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, l'ottimizzazione continua è spesso più pratica di un processo di riaddestramento a causa degli elevati costi di dati e di calcolo coinvolti.

L'approccio all'ottimizzazione continua dipende dal tuo caso d'uso e dai tuoi obiettivi specifici. Per attività relativamente statiche come il riepilogo del testo, i requisiti di ottimizzazione continua potrebbero essere inferiori. Tuttavia, per applicazioni dinamiche come i chatbot che richiedono un allineamento umano costante, è necessario un'ottimizzazione più frequente utilizzando tecniche come l'RLHF basate sul feedback umano.

Per determinare la strategia di ottimizzazione continua più adatta, devi valutare la natura del tuo caso d'uso e l'evoluzione dei dati di input nel tempo. Anche il costo è un fattore importante, in quanto l'infrastruttura di computing influisce notevolmente sulla velocità e sulle spese di ottimizzazione. Le unità di elaborazione grafica (GPU) e le Tensor Processing Unit (TPU) sono hardware necessari per il perfezionamento. Le GPU, note per la loro potenza di elaborazione parallela, sono molto efficaci nella gestione dei carichi di lavoro con tempi di calcolo elevati e sono spesso associate all'addestramento e all'esecuzione di modelli di machine learning complessi. Le TPU, invece, sono progettate specificamente da Google per accelerare le attività di machine learning. Le TPU eccellono nella gestione di operazioni con matrici di grandi dimensioni comuni nelle reti neurali di deep learning.

Pratiche relative ai dati

In precedenza, il comportamento del modello 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 dal modo in cui adatti il modello con diversi tipi di dati di input.

I foundation model vengono addestrati su dati come i seguenti:

  • Set di dati di pre-addestramento (ad esempio C4, The Pile o dati proprietari)
  • Set di dati per l'ottimizzazione delle istruzioni
  • Set di dati per l'ottimizzazione della sicurezza
  • Dati sulle preferenze umane

Le applicazioni di AI generativa vengono adattate su dati come i seguenti:

  • Prompt
  • Dati aumentati o basati su fonti (ad esempio, siti web, documenti, PDF, database o API)
  • Dati specifici per le attività per PEFT
  • Valutazioni specifiche per le attività
  • Dati sulle preferenze umane

La differenza principale per le pratiche di gestione dei dati tra l'ML predittivo e l'AI generativa si verifica all'inizio del processo del ciclo di vita. Nell'ML predittivo, dedichi molto tempo all'ingegneria dei dati e, se non disponi dei dati giusti, non puoi creare un'applicazione. Nell'AI generativa, si parte da un modello di base, alcune istruzioni e magari alcuni input di esempio (come l'apprendimento in-context). Puoi creare prototipi e lanciare un'applicazione con pochissimi dati.

La facilità di prototipazione, tuttavia, comporta l'ulteriore sfida di gestire dati diversi. L'AI 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 funzionano insieme.

Considera i seguenti tipi di dati:

  • Prompt di condizionamento:istruzioni fornite al modello di base per guidare il suo output e impostare i limiti di ciò che può generare.
  • Esempi few-shot: un modo per mostrare al modello cosa vuoi ottenere tramite coppie input-output. Questi esempi aiutano il modello a comprendere le attività specifiche e, in molti casi, possono migliorare il rendimento.
  • Dati di grounding o di aumento:i dati che consentono al foundation model di produrre risposte per un contesto specifico e mantenere le risposte aggiornate e pertinenti senza riaddestrare l'intero foundation model. Questi dati possono provenire da API esterne (come la Ricerca Google) o da API e origini dati interne.
  • Set di dati specifici per le attività:i set di dati che aiutano a ottimizzare un modello di base esistente per un'attività specifica, migliorandone il rendimento in quell'area specifica.
  • Set di dati di pre-addestramento completi:gli enormi set di dati utilizzati per addestrare inizialmente i modelli di base. Anche se gli sviluppatori di applicazioni potrebbero non avere accesso a questi dati o ai tokenizer, 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 curato di esempi, eseguire query su un database vettoriale e combinare le informazioni con un modello di prompt. Un'applicazione basata sulla RAG richiede la gestione di più tipi di dati, tra cui query degli utenti, database vettoriali con esempi curati di pochi scatti, informazioni aziendali e modelli di prompt.

Ogni tipo di dati richiede un'organizzazione e una manutenzione attente. Ad esempio, un database vettoriale richiede l'elaborazione dei dati in incorporamenti, l'ottimizzazione delle strategie di suddivisione in blocchi e la garanzia che siano disponibili solo le informazioni pertinenti. Un modello di prompt richiede il controllo delle versioni e il monitoraggio e le query degli utenti devono essere riscritte. Le best practice MLOps e DevOps possono aiutarti in queste attività. Nell'AI predittiva, devi creare pipeline di dati per l'estrazione, la trasformazione e il caricamento. Nell'AI generativa, crei pipeline per gestire, evolvere, adattare e integrare diversi tipi di dati in modo versionabile, tracciabile e riproducibile.

L'ottimizzazione dei foundation model può migliorare le prestazioni delle applicazioni di AI generativa, ma i modelli hanno bisogno di dati. Puoi ottenere questi dati avviando l'applicazione e raccogliendo dati reali, generando dati sintetici o un mix di entrambi. L'utilizzo di modelli di grandi dimensioni per generare dati sintetici sta diventando popolare perché questo metodo accelera il processo di deployment, ma è comunque importante che gli esseri umani controllino i risultati per garantire la qualità. Di seguito sono riportati alcuni esempi di come puoi utilizzare i modelli di grandi dimensioni per scopi di data engineering:

  • Generazione di dati sintetici: questo processo prevede la creazione di dati artificiali che assomigliano molto ai dati del mondo reale 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, consentendole di apprendere pattern e relazioni anche quando i dati reali etichettati sono scarsi.
  • Correzione dei dati sintetici:questa tecnica si concentra sull'identificazione e la correzione di errori e incoerenze all'interno dei set di dati etichettati esistenti. Sfruttando 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 variazioni diverse, preservando al contempo le caratteristiche e le relazioni essenziali. Durante l'addestramento, l'AI generativa può incontrare una gamma più ampia di scenari rispetto all'AI predittiva, il che porta a una migliore generalizzazione e alla capacità di generare output pertinenti e ricchi di sfumature.

A differenza dell'AI predittiva, è difficile valutare l'AI generativa. Ad esempio, potresti non conoscere la distribuzione dei dati di addestramento dei foundation model. Devi creare un set di dati di valutazione personalizzato che rifletta tutti i tuoi casi d'uso, inclusi quelli essenziali, medi e limite. Come per i dati di ottimizzazione, puoi utilizzare LLM potenti per generare, curare e aumentare i dati per creare set di dati di valutazione robusti.

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 guidata da persone a completamente automatizzata da un processo.

Quando prototipi un progetto, la valutazione è spesso un processo manuale. Gli sviluppatori esaminano gli output del modello, ottenendo un'idea qualitativa delle sue prestazioni. Tuttavia, man mano che il progetto matura e il numero di scenari di test aumenta, la valutazione manuale diventa un collo di bottiglia.

L'automazione della valutazione offre due grandi vantaggi: ti consente di procedere più rapidamente e rende le valutazioni più affidabili. Inoltre, elimina la soggettività umana dall'equazione, il che contribuisce a garantire che i risultati siano riproducibili.

Tuttavia, l'automazione della valutazione per le applicazioni di AI generativa presenta una serie di sfide particolari. Ad esempio, considera quanto segue:

  • 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 grandi dimensioni, ad esempio un'immagine generata o un blocco di testo. È difficile acquisire la qualità di questi output in una semplice metrica. 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 tuo sistema. Ad esempio, puoi chiedere a un modello linguistico di grandi dimensioni (come AutoSxS) di valutare la qualità dei testi generati in varie dimensioni.
  • Molte metriche di valutazione per l'AI generativa sono soggettive. Ciò che rende un output migliore di un altro può essere una questione di opinione. Devi assicurarti che la tua valutazione automatica sia in linea con il giudizio umano, perché vuoi che le tue metriche siano un proxy 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 verità di base, soprattutto nelle fasi iniziali di un progetto. Una soluzione alternativa consiste nel generare dati sintetici che fungano da dati empirici reali temporanei che puoi perfezionare nel tempo con il feedback umano.
  • Una valutazione completa è essenziale per proteggere le applicazioni di AI generativa da attacchi contraddittori. Gli autori di attacchi informatici possono creare prompt per tentare di estrarre informazioni sensibili o manipolare gli output del modello. I set di valutazione devono affrontare in modo specifico questi vettori di attacco, tramite tecniche come il fuzzing dei prompt (fornire al modello variazioni casuali dei prompt) e il test per la perdita di informazioni.

Per valutare le applicazioni di AI generativa, implementa quanto segue:

  • Automatizza il processo di valutazione per garantire velocità, scalabilità e riproducibilità. Puoi considerare l'automazione come un proxy per il giudizio umano.
  • Personalizza la procedura di valutazione in base alle esigenze dei tuoi casi d'uso.
  • Per garantire la comparabilità, stabilizza l'approccio di valutazione, le metriche e i dati di riferimento il prima possibile nella fase di sviluppo.
  • Genera dati empirici sintetici per compensare la mancanza di dati empirici reali.
  • Includi scenari di test di prompt antagonistici nel set di valutazione per testare l'affidabilità del sistema stesso contro questi attacchi.

Esegui il deployment

Le applicazioni di AI generativa di livello di produzione sono sistemi complessi con molti componenti che interagiscono. 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, tutti alimentati da una pipeline di dati dinamici. Ciascuno di questi componenti può richiedere una propria procedura di deployment.

Il deployment delle applicazioni di AI generativa è simile a quello 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 delle versioni e CI/CD.

Controllo delle versioni

La sperimentazione dell'AI generativa è un processo iterativo che prevede cicli ripetuti di sviluppo, valutazione e modifica. Per garantire un approccio strutturato e gestibile, devi implementare un controllo delle versioni rigoroso per tutti i componenti modificabili. Questi componenti includono:

  • Modelli di prompt: a meno che tu non utilizzi soluzioni specifiche di gestione dei prompt, utilizza strumenti di controllo della versione per monitorare le versioni.
  • Definizioni della catena:utilizza strumenti di controllo delle versioni per monitorare le versioni del codice che definisce la catena (incluse integrazioni API, chiamate di database e funzioni).
  • Dataset esterni:nei sistemi RAG, i dataset 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 adattatori:le tecniche come l'ottimizzazione LoRA per i modelli adattatori sono in continua evoluzione. Utilizza soluzioni di archiviazione dei dati consolidate (ad esempio, Cloud Storage) per gestire e controllare le 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 unitari e di integrazione sono importanti per la qualità e l'affidabilità. I test delle unità si concentrano su singoli pezzi di codice, mentre i test di integrazione verificano che i diversi componenti funzionino insieme.

L'implementazione di un sistema di integrazione continua consente di:

  • Garantisci risultati affidabili e di alta qualità:test rigorosi aumentano la fiducia nelle prestazioni e nella coerenza del sistema.
  • Rileva i bug in anticipo:l'identificazione dei problemi tramite i test impedisce che causino problemi più gravi in un secondo momento. L'individuazione tempestiva dei bug rende il sistema più robusto e resiliente a casi limite e input imprevisti.
  • Costi di manutenzione inferiori:gli scenari di test ben documentati semplificano la risoluzione dei problemi e consentono modifiche più fluide 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 concatenamento, i modelli incorporati e i sistemi di recupero.

Tuttavia, l'applicazione dell'integrazione continua all'AI generativa comporta le seguenti sfide:

  • Difficoltà di generare scenari di test completi: la natura complessa e aperta degli output dell'AI generativa rende difficile definire e creare un insieme esaustivo di scenari di test che coprano tutte le possibilità.
  • Problemi di riproducibilità: ottenere risultati deterministici e riproducibili è difficile perché i modelli generativi spesso hanno casualità e variabilità intrinseche nei loro output, anche per input identici. Questa casualità rende più difficile testare in modo coerente i comportamenti previsti.

Queste sfide sono strettamente correlate alla domanda più generale su 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

Una volta unito il codice, inizia un processo di continuous delivery per spostare il codice compilato e testato attraverso ambienti che assomigliano molto alla produzione per ulteriori test prima del deployment finale.

Come descritto in Sviluppare e sperimentare, gli elementi della catena diventano uno dei componenti principali da implementare perché costituiscono fondamentalmente l'applicazione di AI generativa. La procedura di pubblicazione 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 implementare un processo batch eseguito in base a una pianificazione in produzione. Il processo di consegna si concentra sul test dell'intera pipeline di integrazione in un ambiente simile alla produzione prima dell'implementazione. Nell'ambito della procedura di test, gli sviluppatori possono affermare requisiti specifici relativi alla velocità effettiva 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 la deployment di un'API, ovvero l'applicazione che contiene la catena ed è in grado di rispondere agli utenti con una bassa latenza. La procedura di consegna prevede il test dell'API nell'integrazione in un ambiente simile a quello di 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 quando esegui il deployment di un'applicazione di AI 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 monitorare le modifiche apportate alla configurazione del modello o del deployment.
  • Ottimizza il modello:esegui le attività di ottimizzazione del modello (distillazione, quantizzazione e potatura) prima di creare il pacchetto o eseguire il deployment del modello.
  • Inserisci il modello in un container:impacchetta il modello addestrato in un container.
  • Definisci i requisiti hardware di destinazione:assicurati che l'ambiente di deployment di destinazione soddisfi i requisiti per prestazioni ottimali 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 qualsiasi parametro di configurazione aggiuntivo.
  • Alloca risorse:alloca le risorse di computing appropriate per l'endpoint in base al traffico previsto e ai requisiti di rendimento.
  • Configura il controllo dell'accesso dell'accesso:configura 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 ricevere risposte dal modello.
  • Configura il monitoraggio e la registrazione: configura i sistemi di monitoraggio e registrazione per tenere traccia delle prestazioni, dell'utilizzo delle risorse e dei log degli errori dell'endpoint.
  • Esegui il deployment di integrazioni personalizzate:integra il modello in applicazioni o servizi personalizzati utilizzando l'SDK o le API del modello.
  • Deployment di applicazioni in tempo reale:crea una pipeline di 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 a quelle che utilizzi per le MLOps convenzionali. Devi registrare e monitorare la tua applicazione end-to-end, il che include la registrazione e il monitoraggio dell'input e dell'output complessivi della tua applicazione e di ogni componente.

Gli input del trigger dell'applicazione attivano più componenti per produrre gli output. Se l'output per un determinato input è impreciso dal punto di vista dei fatti, devi determinare quale dei componenti non ha funzionato bene. Devi includere la derivazione nella registrazione per tutti i componenti eseguiti. Devi anche mappare gli input e i componenti con gli artefatti e i parametri aggiuntivi da 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 funziona bene, significa che anche tutti i componenti funzionano bene. Successivamente, applica il monitoraggio ai componenti del modello richiesti per ottenere risultati più granulari e una migliore comprensione della tua applicazione.

Come per il monitoraggio convenzionale in MLOps, devi implementare una procedura di avviso per notificare ai proprietari delle applicazioni quando vengono rilevati deriva, distorsione o calo delle prestazioni. Per configurare gli avvisi, devi integrare gli strumenti di avviso e notifica nel tuo processo di monitoraggio.

Le sezioni seguenti descrivono le attività di monitoraggio dello sbilanciamento e della deriva e di valutazione continua. Inoltre, il monitoraggio in MLOps include il monitoraggio delle metriche per l'integrità generale 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 caratteristiche in produzione si discosta dalla distribuzione dei dati delle caratteristiche osservata durante l'addestramento del modello. Per le applicazioni di AI generativa che utilizzano modelli preaddestrati in componenti concatenati per produrre l'output, devi anche misurare lo sbilanciamento. Puoi misurare il disallineamento confrontando la distribuzione dei dati di input che hai utilizzato per valutare la tua applicazione e la distribuzione degli input della tua applicazione in produzione. Se le due distribuzioni si allontanano, devi eseguire ulteriori indagini. Puoi applicare lo stesso processo anche ai dati di output.

Rilevamento della deviazione

Come il rilevamento del disallineamento, il rilevamento della deriva verifica le differenze statistiche tra due set di dati. Tuttavia, anziché confrontare le valutazioni e gli input di servizio, il drift cerca le modifiche nei dati di input. La deriva ti consente di valutare gli input e quindi come cambia il comportamento degli utenti nel tempo.

Poiché l'input dell'applicazione è in genere testo, puoi utilizzare diversi metodi per misurare lo sbilanciamento e la deriva. In generale, questi metodi tentano di identificare cambiamenti significativi nei dati di produzione, sia testuali (ad esempio le dimensioni dell'input) sia concettuali (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 preparata a gestire correttamente la natura dei nuovi dati in arrivo. Alcuni metodi comuni includono:

Poiché i casi d'uso dell'AI generativa sono molto diversi, potresti aver bisogno di metriche personalizzate aggiuntive che rilevino meglio le variazioni impreviste nei tuoi 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 monitorare le prestazioni del modello nel tempo. Puoi raccogliere feedback diretti degli utenti, ad esempio valutazioni, che forniscono informazioni immediate sulla qualità percepita degli output. Parallelamente, il confronto tra le risposte generate dal modello e i dati empirici reali consolidati consente un'analisi più approfondita delle prestazioni. Puoi raccogliere i dati di riferimento tramite la valutazione umana o come risultato di un approccio di modello di AI ensemble per generare metriche di valutazione. Questo processo fornisce una visione di come le metriche di valutazione sono cambiate da quando hai sviluppato il modello a oggi.

Regola

Nel contesto di MLOps, la governance comprende tutte le pratiche e le norme che stabiliscono controllo, responsabilità e trasparenza sullo sviluppo, deployment e gestione continua dei modelli di machine learning, incluse tutte le attività correlate ai cicli di vita di codice, dati e modelli.

Nelle applicazioni di AI predittiva, la derivazione si concentra sul monitoraggio e sulla comprensione dell'intero percorso di un modello di machine learning. Nell'AI generativa, la derivazione va oltre l'artefatto del modello e si estende a tutti i componenti della catena. Il monitoraggio include i dati, i modelli, la derivazione dei modelli, il codice e i dati di valutazione e le metriche relative. Il monitoraggio della derivazione può aiutarti a controllare, eseguire il debug e migliorare i tuoi modelli.

Oltre a queste nuove pratiche, puoi gestire il ciclo di vita dei dati e dei componenti di AI generativa utilizzando le pratiche standard di MLOps e DevOps.

Passaggi successivi

Esegui il deployment di un'applicazione di AI generativa utilizzando Vertex AI

Autori: Anant Nawalgaria, Christos Aniftos, Elia Secchi, Gabriela Hernandez Larios, Mike Styer e Onofrio Petragallo