Sistemi di AI composti
Cosa sono i sistemi di AI composti?
Secondo la definizione del blog Berkeley AI Research (BAIR), sono sistemi che gestiscono attività di intelligenza artificiale combinando più componenti che interagiscono tra loro. Un sistema di AI composto può includere molteplici chiamate a modelli, sistemi per il reperimento dei dati o strumenti esterni. Le applicazioni di generazione potenziata dal recupero (RAG), ad esempio, sono sistemi di AI composti, in quanto combinano almeno un modello e un sistema per il recupero dei dati. I sistemi di AI composti sfruttano i punti di forza di vari modelli, strumenti e pipeline di AI per offrire prestazioni, versatilità e riusabilità maggiori rispetto all'utilizzo esclusivo di singoli modelli.
Sempre più spesso, le innovazioni nel campo dell'AI provengono da sistemi composti (Fonte)
Lo sviluppo di sistemi di AI composti per gestire le attività di intelligenza artificiale più impegnative è sempre più diffuso. Spesso questi sistemi possono offrire prestazioni migliori rispetto ai singoli modelli, ma gli sviluppatori si stanno ancora interrogando su quale sia il modo migliore per progettare i sistemi stessi e i loro componenti.
Perché costruire sistemi di AI composti?
- Alcune attività sono più facili da migliorare tramite la progettazione di sistema: l'utilizzo di modelli più grandi e capaci può migliorare le applicazioni di AI, ma spesso si raggiunge un punto in cui il rendimento decresce. Inoltre, migliorare o personalizzare un modello tramite l'addestramento o l'ottimizzazione può essere un processo lento e costoso. L'integrazione di altri modelli o strumenti in un sistema composto può migliorare la qualità dell'applicazione al di là di ciò che può essere ottenuto con un singolo modello, per quanto capace.
- I sistemi possono essere dinamici: i modelli isolati sono fondamentalmente limitati dai dati usati per il loro addestramento. Apprendono un certo insieme di informazioni e comportamenti e mancano di alcune funzionalità, come la capacità di cercare al di fuori della sorgente di dati o di applicare controlli sugli accessi. Un approccio sistemico può aggiungere risorse esterne come database, interpreti di codice, sistemi di autorizzazioni e altro ancora, rendendo i sistemi di AI composti molto più dinamici e flessibili rispetto ai singoli modelli.
- Controllo e affidabilità maggiori: fare in modo che i singoli modelli restituiscano in modo affidabile informazioni fattuali o risultati formattati in modo coerente non è sempre facile. Può essere necessario usare oculatamente i prompt, fornire più esempi, ottimizzare il modello o persino ricorrere a espedienti, ad esempio suggerendo a un LLM che ottenere una buona risposta è una questione di vita o di morte. L'orchestrazione dei LLM con altri strumenti e sorgenti di dati può rendere i sistemi di AI più sicuri e affidabili, fornendo loro informazioni accurate provenienti da fonti esterne o utilizzando strumenti che assicurino un maggior rispetto dei vincoli di formattazione dell'output.
- Più opzioni in termini di rapporto qualità-prezzo: i singoli modelli offrono generalmente un livello di qualità fisso a un costo fisso, ma questa formula non è adatta a tutti i casi d'uso. L'integrazione dei LLM con strumenti esterni offre una maggiore flessibilità nelle opzioni qualità-prezzo disponibili. Ad esempio, un modello piccolo e attentamente ottimizzato, combinato con varie euristiche di ricerca, potrebbe fornire buoni risultati a un costo inferiore rispetto a modelli più grandi e più capaci. Per contro, dato un budget maggiore, l'utilizzo di strumenti e sorgenti di dati esterni può migliorare le prestazioni anche dei modelli più grandi e capaci.
Come si costruisce un sistema di AI composto efficace?
I sistemi di AI composti sono una categoria di applicazioni emergente, quindi le best practice che ne guidano lo sviluppo e l'utilizzo sono ancora in evoluzione. Esistono molti approcci diversi ai sistemi di AI composti, ciascuno con vantaggi e svantaggi differenti. Ad esempio:
- Logica di controllo: in un sistema di AI composto, una base di codice che definisce la logica di controllo potrebbe richiamare un modello per eseguire attività specifiche al verificarsi di determinate condizioni, combinando così l'affidabilità del controllo programmatico del flusso con l'espressività dei LLM. Altri sistemi potrebbero utilizzare un LLM per il controllo del flusso, offrendo una maggiore flessibilità nell'interpretazione e nell'azione sugli input a scapito di una certa perdita di affidabilità. Strumenti come Databricks External Models possono aiutare a programmare una logica di controllo semplificando il processo di instradamento delle diverse parti di un'applicazione verso modelli diversi.
- Dove investire tempo e risorse: quando si sviluppano sistemi di AI composti, non è sempre evidente se convenga investire tempo e risorse per migliorare le prestazioni del modello o dei modelli utilizzati nel sistema, o se invece sia meglio concentrarsi sul miglioramento di altri aspetti del sistema. L'ottimizzazione di un modello o anche il passaggio a un modello generalmente più capace potrebbero migliorare le prestazioni di un sistema di AI composto, ma gli stessi risultati si potrebbero ottenere anche migliorando invece un sistema per il recupero dei dati o altri componenti.
- Misurazione e ottimizzazione: la valutazione è importante in qualsiasi sistema che coinvolga modelli di AI, ma l'approccio da adottare dipende strettamente dall'applicazione. In alcuni sistemi, potrebbe essere adatta una metrica discreta che valuti le prestazioni end-to-end, mentre in altri potrebbe avere più senso valutare i diversi componenti singolarmente. In un'applicazione RAG, ad esempio, è spesso necessario valutare separatamente i componenti di recupero e generazione. MLflow offre un approccio flessibile alla valutazione in grado di adattarsi a molti aspetti diversi dei sistemi di AI composti, inclusi il recupero e la generazione.
Nonostante i rapidi cambiamenti negli approcci, si possono isolare un paio di principi chiave per la creazione di sistemi di AI composti efficaci:
- Sviluppare un solido sistema di valutazione: i sistemi di AI composti sono in genere formati da numerosi componenti che interagiscono tra loro, e la modifica di uno di essi può influire sulle prestazioni dell'intero sistema. È dunque essenziale trovare un modo efficace per misurare le prestazioni del sistema e creare l'infrastruttura necessaria per registrare, accedere e agire su queste valutazioni.
- Sperimentare diversi approcci: come notato in precedenza, ci sono poche best practice consolidate per la costruzione di sistemi di AI composti. Con ogni probabilità, sarà necessario sperimentare diverse modalità di integrazione tra i modelli di AI e altri strumenti, sia per quanto riguarda la logica complessiva di controllo dell'applicazione, sia per ciò che concerne i singoli componenti. La modularità semplifica questa sperimentazione: è più facile sperimentare con un'applicazione che supporta la sostituzione di modelli, strumenti per il recupero dei dati e altri tool. Grazie alla sua suite di strumenti per la valutazione e la sperimentazione, MLflow risulta particolarmente utile per lo sviluppo di sistemi di AI composti.
Quali sfide pone la costruzione di sistemi di AI composti?
Rispetto ai modelli di AI isolati, i sistemi di AI composti introducono diverse difficoltà nello sviluppo:
- Spazio di progettazione più ampio: i sistemi di AI composti combinano uno o più modelli di AI con strumenti come tecnologie per il recupero dei dati o interpreti di codice, sorgenti di dati, librerie di codice e altro ancora. In genere, per ciascuno di questi componenti sono disponibili più opzioni. Nello sviluppo di un'applicazione RAG, ad esempio, bisognerà (come minimo) scegliere quali modelli utilizzare per l'incorporamento e la generazione di testo, quali sorgenti di dati, dove archiviare i dati e quale sistema di recupero utilizzare. Senza best practice chiare, gli sviluppatori sono spesso costretti a fare sforzi notevoli per esplorare questo vasto spazio di progettazione e trovare una soluzione funzionante.
- Co-ottimizzazione dei componenti del sistema: spesso i modelli di AI devono essere ottimizzati per funzionare bene con strumenti specifici, e viceversa. La modifica di un componente di un sistema di AI composto può alterare il comportamento dell'intero sistema in modi imprevedibili, e può essere difficile riuscire a far funzionare bene tutti i componenti. In un sistema RAG, ad esempio, un LLM potrebbe funzionare molto bene con un determinato sistema di recupero, ma non con un altro.
- Complessità operativa: anche presi isolatamente, i LLM possono risultare difficili da distribuire, monitorare e proteggere. La loro combinazione con altri modelli e strumenti di AI può accrescere i problemi. L'uso di questi sistemi composti può richiedere agli sviluppatori di combinare in modi univoci strumenti e procedure MLOps e DataOps per monitorare ed eseguire il debug delle applicazioni. Databricks Lakehouse Monitoring fornisce una visibilità eccellente sui complessi dati e pipeline di modellazione nei sistemi di AI composti.