#artificialintelligenceinaction

Cosa sono i Large Language Model (LLM)

Artificial Intelligence solutions

LLM

La Retrieval-Augmented Generation (RAG) è una tecnica innovativa che combina l’uso dei Large Language Models (LLM) con la capacità di recuperare informazioni da fonti esterne per migliorare la qualità e l’accuratezza delle risposte generate. 

In questa serie di articoli, esploreremo in profondità questa metodologia, partendo dai fondamenti degli LLM e del Prompt Engineering, fino a confrontare RAG con altri metodi di addestramento ed elaborazione dati. Concluderemo con una panoramica sull’applicazione pratica di RAG nelle soluzioni di Revelis.

LLM: cosa sono i Large Language Models

I Large Language Models (LLM) sono avanzati modelli di intelligenza artificiale addestrati su vasti insiemi di dati testuali, capaci di comprendere e generare linguaggio umano. Questi modelli utilizzano tecniche di deep learning per prevedere la parola successiva in una sequenza di testo, permettendo loro di svolgere compiti come traduzione automatica, completamento di frasi, e generazione di testo creativo.

Gli LLM sono generalmente non deterministici. Utilizzano tecniche di sampling come il top-k sampling e il nucleus sampling per generare risposte, introducendo variabilità e creatività nell’output. Tuttavia, possono essere configurati per comportarsi in modo deterministico impostando un “seed” per il generatore di numeri casuali, garantendo che lo stesso input produca lo stesso output ogni volta.

Caratteristiche tecniche principali degli LMM sono:

  1. Dimensioni e Complessità: Gli LLM sono caratterizzati da un numero molto elevato di parametri. Ad esempio, GPT-3 di OpenAI ha 175 miliardi di parametri. I parametri sono i pesi all’interno della rete neurale che vengono ottimizzati durante il processo di addestramento.
  2. Architettura Transformer: gli LLM utilizzano l’architettura Transformer, introdotta da Vaswani et al. nel 2017. Questa architettura si basa su meccanismi di attenzione che permettono al modello di pesare l’importanza di diverse parole in una sequenza di input, migliorando l’efficacia nell’elaborazione del contesto.
  3. Addestramento su Dati Estesi: gli LLM sono addestrati su vasti corpora di dati testuali provenienti da fonti diverse come libri, articoli scientifici, siti web, e contenuti digitali. Questo permette ai modelli di apprendere una vasta gamma di conoscenze linguistiche e fattuali.
  4. Tokenizzazione e Embedding: Prima dell’addestramento, il testo viene suddiviso in token, che possono essere parole, frammenti di parole o caratteri. Ogni token viene quindi convertito in un vettore numerico (embedding) che rappresenta il suo significato in uno spazio vettoriale multidimensionale.
  5. Capacità di Generalizzazione: Gli LLM sono in grado di generalizzare le informazioni apprese durante l’addestramento per rispondere a nuove query. Questo è possibile grazie alla capacità del modello di catturare pattern e relazioni complesse all’interno dei dati.

Fonte immagine: AI4Business

I modelli linguistici di grandi dimensioni (LLM) utilizzano tecniche di apprendimento automatico e di elaborazione del linguaggio naturale (NLP) per comprendere e generare un linguaggio simile a quello umano. Sebbene siano estremamente utili per la comunicazione e l’elaborazione dei dati, presentano alcune limitazioni. 

Sono addestrati su dati generici che non includono informazioni specifiche relative all’argomento desiderato, come un particolare insieme di dati interni a un’organizzazione. Inoltre, la loro conoscenza ha una durata limitata nel tempo: le informazioni utilizzate per l’addestramento non vengono aggiornate, quindi il materiale può diventare obsoleto e non più pertinente. 

Infine, tendono a fornire risposte basate su ciò che ritengono l’utente desideri ricevere, il che può portare a informazioni errate o non aggiornate, un fenomeno noto come “allucinazione”.

Differenze tra Open Source e Closed LLM

Gli LLM possono essere divisi in due categorie principali: open source e closed. 

I modelli di linguaggio open source, come GPT-J e BERT, sono accessibili al pubblico con il codice sorgente aperto. Questo approccio offre numerosi vantaggi. 

Prima di tutto, la trasparenza: chiunque può esaminare come il modello è stato costruito e come funziona. Questo non solo favorisce la fiducia nella tecnologia, ma permette anche alla comunità di sviluppatori di contribuire al miglioramento continuo del modello. Un aspetto cruciale degli LLM open source è la possibilità di personalizzazione. Le aziende e gli sviluppatori possono adattare il modello alle proprie esigenze specifiche, creando versioni specializzate per determinati compiti. 

Questa flessibilità è particolarmente utile in settori che richiedono soluzioni su misura. Infine, dal punto di vista economico, i modelli open source possono essere utilizzati gratuitamente, riducendo significativamente i costi di implementazione. Questo rende la tecnologia accessibile anche a piccole imprese e startup che potrebbero non avere grandi budget.

D’altra parte, i modelli di linguaggio closed, come GPT-4 di OpenAI, offrono vantaggi distinti, soprattutto in termini di prestazioni e ottimizzazione. Questi modelli sono spesso sviluppati con risorse avanzate e infrastrutture di alto livello, garantendo prestazioni superiori rispetto ai modelli open source. Le aziende che li sviluppano possono investire in hardware dedicato e tecniche di ottimizzazione che migliorano l’efficienza e la velocità del modello. 

In termini di sicurezza, i modelli closed offrono un maggiore controllo sulla distribuzione e sull’uso. Questo può essere cruciale per le aziende che devono rispettare rigorose normative sulla privacy e sulla sicurezza dei dati. Utilizzando un modello closed, le aziende possono essere sicure che i dati sensibili siano trattati con il massimo livello di protezione. 

Tuttavia, l’accesso ai modelli closed è generalmente limitato e avviene tramite API a pagamento. Questo può aumentare i costi per l’utente finale e limitare la possibilità di personalizzazione, poiché gli utenti non possono modificare il modello sottostante. Nonostante ciò, per molte aziende, i benefici in termini di prestazioni e supporto superano questi svantaggi.

Pre-Addestramento

Il pre-addestramento è una fase iniziale fondamentale per i modelli di linguaggio di grandi dimensioni (LLM). Questo processo utilizza un vasto corpus di dati testuali per fornire al modello una comprensione generale del linguaggio. Attraverso il pre-addestramento, il modello impara le strutture sintattiche, semantiche e contestuali del linguaggio, sviluppando una base solida per affrontare una varietà di compiti linguistici.

Processo di Pre-Addestramento

  1. Raccolta dei Dati:
    • Corpus Diversificato: Il modello viene addestrato su un vasto corpus di dati provenienti da libri, articoli, pagine web e altre fonti di testo. Questo corpus deve essere abbastanza grande e variegato per coprire una gamma ampia di stili linguistici e argomenti.
  2. Tokenizzazione:
    • Segmentazione del Testo: Il testo viene suddiviso in unità più piccole chiamate token. La tokenizzazione può essere basata su parole, sub-parole o caratteri. Ad esempio, “tokenizzazione” può essere segmentata in “token”, “izz”, “azione”.
  3. Addestramento del Modello:
    • Modello di Rete Neurale: Si utilizza una rete neurale, spesso basata sull’architettura Transformer, per addestrare il modello. Durante il pre-addestramento, il modello impara a prevedere il token successivo in una sequenza di testo (mascherato o autoregressivo) utilizzando tecniche di apprendimento supervisionato.
    • Mascheramento: Nel caso di modelli come BERT, una percentuale dei token viene mascherata e il modello impara a prevedere i token mascherati basandosi sul contesto circostante.
  4. Ottimizzazione:
    • Algoritmi di Ottimizzazione: Vengono utilizzati algoritmi come Adam o LAMB per minimizzare la funzione di perdita, regolando i pesi della rete neurale in modo da migliorare l’accuratezza delle previsioni.
    • Learning Rate Scheduling: Variazione del tasso di apprendimento durante l’addestramento per migliorare la convergenza del modello.

I vantaggi del Pre-Addestramento sono:

  1. Comprensione Generale del Linguaggio: Fornisce al modello una base solida per comprendere e generare testo in modo coerente e contestualmente rilevante.
  2. Riutilizzabilità: I modelli pre-addestrati possono essere facilmente riutilizzati e adattati per compiti specifici attraverso il fine tuning, riducendo significativamente il tempo e le risorse necessarie rispetto all’addestramento da zero.
  3. Efficienza: Permette di ottenere modelli performanti con una capacità generalista che può essere successivamente affinata per compiti particolari, ottimizzando l’uso delle risorse computazionali.

Esempio di Pre-Addestramento:

Immaginiamo di voler creare un assistente virtuale capace di rispondere a domande generiche. Durante il pre-addestramento, il modello viene esposto a milioni di articoli e libri su vari argomenti. Attraverso questo processo, il modello impara le strutture linguistiche e le relazioni contestuali, diventando in grado di comprendere e generare testo in modo fluido. Una volta completato il pre-addestramento, il modello può essere fine-tunato con un dataset specifico, come le FAQ di un’azienda, per specializzarsi nelle risposte alle domande dei clienti.

Fine Tuning

Il fine tuning è il processo di addestramento supplementare di un modello di linguaggio di grandi dimensioni (LLM) già pre-addestrato, con l’obiettivo di adattarlo a un compito specifico o a un dominio particolare. Questo processo permette di affinare le capacità del modello utilizzando un dataset mirato, migliorando la sua precisione e rilevanza per le attività desiderate.

Come Funziona il Fine Tuning?

  1. Selezione del Dataset: Si inizia con la selezione di un dataset pertinente al compito specifico. Questo dataset deve essere rappresentativo del tipo di dati che il modello dovrà elaborare dopo il fine tuning.
  2. Adattamento del Modello: Il modello pre-addestrato viene ulteriormente addestrato su questo dataset specifico. Durante questo processo, il modello apprende le peculiarità del nuovo dominio, regolando i suoi parametri per ottimizzare le prestazioni sul compito target.
  3. Iterazione e Valutazione: Il fine tuning è un processo iterativo. Dopo ogni ciclo di addestramento, il modello viene valutato per verificare i miglioramenti. I risultati ottenuti vengono utilizzati per perfezionare ulteriormente il modello attraverso ulteriori iterazioni di addestramento.

I vantaggi del Fine Tuning sono:

  1. Prestazioni Migliorate: Il fine tuning permette al modello di diventare altamente specializzato per un compito specifico, migliorando significativamente le sue prestazioni rispetto a un modello generico.
  2. Efficienza dei Dati: Utilizzando un dataset mirato, si possono ottenere miglioramenti significativi con una quantità relativamente piccola di dati rispetto all’addestramento da zero.
  3. Adattabilità: Il fine tuning consente di adattare un modello generale a contesti specifici, ampliando notevolmente la sua utilità in applicazioni pratiche. Ad esempio, un modello linguistico generale può essere fine-tunato per analizzare testi medici, documenti legali o interazioni con i clienti in un contesto aziendale.

Esempio di Applicazione del Fine Tuning:

Immaginiamo di voler utilizzare un LLM per fornire assistenza clienti in un’azienda di software. Il modello pre-addestrato può comprendere e generare testo generale, ma potrebbe non essere sufficientemente competente nel rispondere a domande specifiche sui prodotti dell’azienda. 

Attraverso il fine tuning, il modello viene addestrato su una raccolta di documenti relativi ai prodotti dell’azienda, guide utente e domande frequenti (FAQ). Dopo il fine tuning, il modello sarà in grado di fornire risposte più precise e pertinenti alle domande dei clienti, migliorando l’efficienza e la qualità del servizio clienti.

Il fine tuning è una tecnica potente per specializzare i modelli di linguaggio di grandi dimensioni, rendendoli più efficaci per compiti specifici e domini particolari. Attraverso un processo iterativo di addestramento su dataset mirati, è possibile migliorare significativamente le prestazioni del modello, garantendo risposte più accurate e rilevanti per le esigenze dell’utente.

Fonte immagine: AI4Business

Prompt Engineering

Fonte immagine: cobusgreyling.com

Il Prompt Engineering è la pratica di creare input testuali (prompt) efficaci per guidare le risposte degli LLM (Large Language Models). È un’arte e una scienza che richiede una comprensione profonda del funzionamento dei modelli di linguaggio e delle dinamiche della generazione del testo. Il successo di molte applicazioni basate su LLM dipende dalla qualità dei prompt utilizzati e per tanto esistono dei principi fondamentali ai quali è buono attenersi:

  1. Chiarezza e Specificità: Un buon prompt deve essere chiaro e specifico. Più il prompt è dettagliato, più la risposta dell’LLM sarà accurata e pertinente. Ad esempio, invece di chiedere “Raccontami una storia”, un prompt più efficace sarebbe “Raccontami una storia su un cavaliere che salva una principessa da un drago”.
  2. Contesto Adeguato: Fornire un contesto sufficiente aiuta il modello a comprendere meglio il compito. Includere informazioni di background o specificare lo stile e il tono desiderato può migliorare la qualità della risposta.
  3. Esempi di Prompt: Includere esempi all’interno del prompt può aiutare l’LLM a capire meglio cosa si sta cercando. Ad esempio, se si desidera un certo tipo di output, si possono includere esempi di frasi o paragrafi che rispecchiano il formato desiderato.

Per creare prompt efficaci è fondamentale partire da una chiara comprensione dell’obiettivo. Prima di scrivere un prompt, bisogna chiedersi cosa si vuole ottenere dal modello: si cerca una risposta informativa, una storia creativa o un’analisi critica? Una volta chiarito l’obiettivo, la struttura del prompt deve guidare il modello verso la risposta desiderata. Utilizzare frasi complete, evitare ambiguità e includere dettagli rilevanti può fare una grande differenza nella qualità delle risposte.

Esistono pertanto varie tecniche di prompt enginnering:

  • Zero-Shot Prompting: Questo approccio prevede di chiedere all’LLM di completare un compito senza fornire esempi specifici. Ad esempio, “Traduci questo testo in francese”.
  • One-Shot Prompting: In questo caso, si fornisce un solo esempio di completamento del compito. Ad esempio, “Ecco un esempio di traduzione: ‘Hello’ -> ‘Bonjour’. Traduci questo testo in francese”.
  • Few-Shot Prompting: Si forniscono diversi esempi di completamento del compito. Ad esempio, “Ecco alcuni esempi di traduzione: ‘Hello’ -> ‘Bonjour’, ‘Goodbye’ -> ‘Au revoir’. Traduci questo testo in francese”.

Nel prossimo articolo, approfondiremo la tecnica della Retrieval-Augmented Generation (RAG), esplorando come integrare efficacemente le capacità di recupero delle informazioni con i LLM per migliorare le prestazioni e la qualità delle risposte generate.

Autore: Francesco Scalzo