L’integrazione delle capacità di vari modelli di intelligenza artificiale sblocca una sinfonia di potenziale, dall’automazione di compiti complessi che richiedono molteplici abilità come visione, parola, scrittura e sintesi al miglioramento dei processi decisionali. Tuttavia, orchestrare queste collaborazioni rappresenta una sfida significativa nella gestione delle relazioni interne e delle dipendenze. Gli approcci lineari tradizionali spesso non sono all’altezza, poiché faticano a gestire la complessità dei diversi modelli e delle dipendenze dinamiche.
Traducendo il flusso di lavoro del machine learning in un grafico, ottieni a visualizzazione di come ciascun modello interagisce e contribuisce al risultato complessivo che combina elaborazione del linguaggio naturale, visione artificiale e modelli vocali. Con l’approccio grafico, i nodi rappresentano modelli o attività e gli spigoli definiscono le dipendenze tra loro. Questa mappatura basata su grafici offre numerosi vantaggi, identificando quali modelli si basano sull’output di altri e sfruttando l’elaborazione parallela per attività indipendenti. Inoltre, possiamo eseguire le attività utilizzando le strategie di navigazione del grafico esistenti come l’ampiezza o la profondità in base alle priorità dell’attività.
La strada verso una collaborazione armoniosa tra modelli di intelligenza artificiale non è priva di ostacoli. Immagina di dirigere un’orchestra in cui ogni individuo parla lingue diverse e gli strumenti funzionano in modo indipendente. Questa sfida rispecchia le lacune comunicative quando si integrano diversi modelli di intelligenza artificiale, richiedendo un quadro per gestire le relazioni e quali modelli possono ricevere ciascun formato di input.
L’approccio dell’orchestrazione basata su grafici apre le porte a interessanti possibilità in vari ambiti:
Attività collaborative per la scoperta di farmaci
I ricercatori possono accelerare il processo di scoperta dei farmaci con una sequenza di assistenti basati sull’intelligenza artificiale, ciascuno progettato per un compito specifico, ad esempio utilizzando una missione di scoperta in tre fasi. La prima fase prevede un modello linguistico che analizza vasti dati scientifici per evidenziare potenziali bersagli proteici fortemente legati a malattie specifiche, seguito da un modello visivo per spiegare diagrammi o immagini complessi, fornendo approfondimenti dettagliati sulle strutture delle proteine identificate. Questa immagine è fondamentale per comprendere come i potenziali farmaci potrebbero interagire con la proteina. Infine, un terzo modello integra input provenienti dai modelli linguistici e visivi per prevedere in che modo i composti chimici potrebbero influenzare le proteine bersaglio, offrendo ai ricercatori preziose informazioni per condurre il processo in modo efficiente.
Durante l’integrazione del modello emergeranno diverse sfide per realizzare l’intera pipeline. Estrarre immagini rilevanti dal contenuto scansionato e inserirle nel modello di visione non è così semplice come sembra. È necessario un processore intermedio tra la scansione del testo e le attività di visione per filtrare le immagini rilevanti. In secondo luogo, l’attività di analisi stessa dovrebbe unire più input: l’output della scansione dei dati, la spiegazione del modello di visione e le istruzioni specificate dall’utente. Ciò richiede un modello per combinare le informazioni affinché il modello linguistico le elabori. Le sezioni seguenti descriveranno come utilizzare un framework Python per gestire le relazioni complesse.
Generazione di contenuti creativi
La collaborazione dei modelli può facilitare la creazione di contenuti interattivi integrando elementi come composizione musicale, animazione e modelli di progettazione per generare scene animate. Ad esempio, in un approccio di collaborazione basato su grafici, il primo compito può pianificare una scena come un regista e passare l’input per ogni compito di generazione di musica e immagini. Infine, un modello di animazione utilizzerà l’output dei modelli artistici e musicali per generare un breve video.
Per ottimizzare questo processo, miriamo a ottenere l’esecuzione parallela della generazione di musica e grafica poiché sono attività indipendenti. Quindi non è necessario che la musica attenda il completamento della grafica. Inoltre, dobbiamo affrontare i diversi formati di input dell’attività di animazione. Mentre alcuni modelli come Stable Video Diffusion funzionano solo con le immagini, la musica può essere combinata utilizzando un post-processore.
Questi esempi forniscono solo un assaggio del potenziale della teoria dei grafi nell’integrazione dei modelli. L’approccio di integrazione dei grafici ti consente di adattare più attività alle tue esigenze specifiche e sbloccare soluzioni innovative.
Intelli è un modulo Python open source per orchestrare i flussi di lavoro dell’intelligenza artificiale, sfruttando i principi del grafico attraverso tre componenti chiave:
- Agenti agisci come rappresentanti dei tuoi modelli di intelligenza artificiale, definisci ciascun agente specificandone il tipo (testo, immagine, visione o discorso), il suo fornitore (openai, gemini, stabilità, maestrale, ecc.) e la missione.
- Compiti sono singole unità all’interno del tuo flusso di lavoro AI. Ciascuna attività sfrutta un agente per eseguire un’azione specifica e applica la pre-elaborazione e la post-elaborazione personalizzate fornite dall’utente.
- Fluire lega tutto insieme, orchestrando l’esecuzione dei tuoi compiti, aderendo alle dipendenze che hai stabilito attraverso la struttura del grafico. La gestione del flusso garantisce che le attività vengano eseguite in modo efficiente e nell’ordine corretto, consentendo l’elaborazione sia sequenziale che parallela, ove possibile.
L’utilizzo del componente flusso per gestire la relazione delle attività come un grafico offre numerosi vantaggi quando si collegano più modelli, tuttavia nel caso di una sola attività ciò potrebbe essere eccessivo e la chiamata diretta del modello sarà sufficiente.
Ridimensionamento: man mano che il progetto diventa più complesso, l’aggiunta di ulteriori modelli e attività richiede aggiornamenti ripetitivi del codice per tenere conto delle discrepanze nel formato dei dati e delle dipendenze complesse. L’approccio grafico semplifica tutto ciò definendo un nuovo nodo che rappresenta l’attività e il framework risolve automaticamente le differenze di input/output per orchestrare il flusso di dati.
Adattamento dinamico: Con gli approcci tradizionali, le modifiche relative ad attività complesse avranno un impatto sull’intero flusso di lavoro, richiedendo aggiustamenti. Quando si utilizza il flusso, gestirà automaticamente l’aggiunta, la rimozione o la modifica delle connessioni.
Spiegabilità: il grafico consente una comprensione più approfondita del flusso di lavoro dell’intelligenza artificiale visualizzando come interagiscono i modelli e ottimizzando la navigazione del percorso delle attività.
Nota: l’autore ha partecipato alla progettazione e allo sviluppo del framework intelli. è un progetto open source con licenza Apache.
Iniziare
Innanzitutto, assicurati di avere Python 3.7+, poiché intelli sfrutta le ultime funzionalità di Python Asyncio e installa:
pip install intelli
Agenti: gli esecutori delle attività
Gli agenti in Intelli sono progettati per interfacciarsi con un modello di intelligenza artificiale specifico. Ogni agente include un livello di input unificato per accedere a qualsiasi tipo di modello e fornisce un dizionario che consente di passare parametri personalizzati al modello, come la dimensione massima, la temperatura e la versione del modello.
from intelli.flow.agents import Agent# Define agents for various AI tasks
text_agent = Agent(
agent_type="text",
provider="openai",
mission="write social media posts",
model_params={"key": OPENAI_API_KEY, "model": "gpt-4"}
)
Compiti: gli elementi costitutivi
Le attività rappresentano singole unità di lavoro o operazioni che devono essere eseguite dagli agenti e includono la logica per gestire l’output dell’attività precedente. Ogni attività può essere un’operazione semplice come la generazione di testo o un processo più complesso, come l’analisi del sentimento del feedback degli utenti.
from intelli.flow.tasks import Task
from intelli.flow.input import TextTaskInput# Define a task for text generation
task1 = Task(
TextTaskInput("Create a post about AI technologies"),
text_agent,
log=True
)
Processori: I/O sintonizzati
I processori aggiungono un ulteriore livello di controllo definendo un pre-processo personalizzato per l’input dell’attività e un post-processo per l’output. L’esempio seguente mostra la creazione di una funzione per abbreviare l’output testuale del passaggio precedente prima di chiamare il modello immagine.
class TextProcessor:
@staticmethod
def text_head(text, size=800):
retupytrn text(:size)task2 = Task(
TextTaskInput("Generate image about the content"),
image_agent,
pre_process=TextProcessor.text_head,
log=True,
)
Flusso: specificare le dipendenze
Flow traduce il tuo flusso di lavoro AI in un grafico aciclico diretto (DAG) e sfrutta la teoria dei grafici per la gestione delle dipendenze. Ciò ti consente di visualizzare facilmente le relazioni tra le attività e ottimizzare l’ordine di esecuzione delle tue attività.
from intelli.flow.flow import Flowflow = Flow(
tasks={
"title_task": title_task,
"content_task": content_task,
"keyword_task": keyword_task,
"theme_task": description_theme_task,
"image_task": image_task,
},
map_paths={
"title_task": ("keyword_task", "content_task"),
"content_task": ("theme_task"),
"theme_task": ("image_task"),
},
)
output = await flow.start()
map_paths determina le dipendenze delle attività, guidando Flow a orchestrare l’ordine di esecuzione e garantendo che ogni attività riceva l’output necessario dai suoi predecessori.
Ecco come Flow naviga tra i nodi:
- Mappatura del flusso di lavoro: il flusso costruisce un DAG utilizzando le attività come nodi e le dipendenze come bordi. Questa rappresentazione visiva chiarisce la sequenza di esecuzione delle attività e il flusso di dati.
- Ordinamento topologico: il flusso analizza il grafico per determinare l’ordine di esecuzione ottimale. Viene data priorità alle attività senza dipendenze in entrata, garantendo che ciascuna attività riceva gli input necessari dai predecessori prima dell’esecuzione.
- Esecuzione delle attività: il framework scorre le attività ordinate, eseguendo ciascuna con l’input corrispondente. In base alla mappa delle dipendenze, gli input potrebbero provenire da output di attività precedenti e valori definiti dall’utente.
- Preparazione dell’input: prima dell’esecuzione, l’attività applica tutte le funzioni di pre-elaborazione definite per l’attività, modificando i dati di input secondo necessità e chiama l’agente assegnato.
- Gestione dell’output: l’agente restituisce un output, che viene archiviato in un dizionario con il nome dell’attività come chiave e restituito all’utente.
Per visualizzare il flusso come grafico:
flow.generate_graph_img()
L’uso della teoria dei grafi ha trasformato i tradizionali approcci lineari all’orchestrazione dei modelli di intelligenza artificiale fornendo una sinfonia di collaborazione tra diversi modelli.
Framework come Intelli traducono il tuo flusso di lavoro in una rappresentazione visiva, in cui le attività diventano nodi e le dipendenze vengono mappate come bordi, creando una panoramica dell’intero processo per automatizzare attività complesse.
Questo approccio si estende a diversi campi che richiedono modelli di intelligenza artificiale collaborativa, tra cui la ricerca scientifica, l’automazione delle decisioni aziendali e la creazione di contenuti interattivi. Tuttavia, una scala efficace richiede un ulteriore perfezionamento nella gestione dello scambio di dati tra i modelli.
Fonte: towardsdatascience.com