• Home
  • /
  • Non categorizzato
  • /
  • MISTRAL 7B e l’arte del fine-tuning per adattare il modello alla lingua italiana

MISTRAL 7B e l’arte del fine-tuning per adattare il modello alla lingua italiana



Nel mondo dell’intelligenza artificiale e del machine learning, il fine-tuning di modelli di linguaggio come Mistral 7B sta diventando sempre più importante, specialmente per lingue non inglesi come l’italiano. Il dataset Alpaca (ITA) è un esempio eccellente di come i dati specifici per una lingua possono essere utilizzati per adattare un modello di linguaggio più generico alle sfumature e alle specificità di quella lingua.

A cura di Luigi Simeone, Chief Technology Officer Moxoff e Michele Montebovi, Data Scientist Moxoff

Cosa è Mistral 7B?

Mistral 7B è un modello di linguaggio basato su architetture di rete neurale profonda. È progettato per comprendere e generare testi, apprendendo da vasti dataset di esempi di lingua. I modelli come Mistral 7B possono essere utilizzati per una varietà di applicazioni, inclusa la generazione di testi, la traduzione automatica ecc.

Innovazioni nei Meccanismi di Attention: Un Confronto tra Mistral e LLAMA

Nell’ambito dei modelli di linguaggio artificiale, Mistral e LLAMA rappresentano due esempi di eccellenza, ognuno con i suoi meccanismi di attention distintivi. Esaminiamo più da vicino questi meccanismi per comprendere meglio le loro funzionalità e il loro impatto.

Mistral: Combinazione di Grouped Query Attention e Sliding Window Attention

Grouped Query Attention (GQA):

  1. Nel modello Mistral, la GQA accelera notevolmente la velocità di inferenza e riduce il fabbisogno di memoria durante la decodifica. Questo permette di aumentare le dimensioni dei batch, migliorando così il throughput, un fattore essenziale per le applicazioni in tempo reale​​.

Sliding Window Attention (SWA):

  1. La SWA nel Mistral è progettata per gestire in modo più efficace sequenze più lunghe a un costo computazionale ridotto, affrontando così una sfida comune nei Large Language Models (LLM)​​.
  2. In questo sistema, ogni token può prestare attenzione a un massimo di W token dal layer precedente. Ciò consente alle informazioni di spostarsi in avanti di W token per ogni layer di attention, aumentando la portata effettiva dell’attenzione attraverso i vari layer​​.
  3. Un’importante innovazione nel Mistral è l’utilizzo di un rolling buffer cache, che limita la dimensione della cache e riduce significativamente l’uso della memoria cache, mantenendo inalterata la qualità del modello​​.

LLAMA: Grouped Query Attention per Scalabilità

Grouped Query Attention:

  1. Il modello LLAMA, in particolare nelle sue iterazioni più grandi come il 70B, impiega la Grouped Query Attention per migliorare la scalabilità dell’inferenza. Questo meccanismo equilibra il requisito di memoria con la qualità del modello, avendo un numero di teste key-value che è maggiore rispetto ad un’attenzione standard, ma inferiore al numero totale di teste di query​​​​.

L’Importanza del Fine-Tuning

Il fine-tuning è un processo in cui un modello di linguaggio pre-addestrato viene ulteriormente addestrato (o “affinato”) su un set di dati specifico. Questo processo consente al modello di adattarsi meglio al contesto e al linguaggio specifici di quel dataset. Per il Mistral 7B, il fine-tuning con un dataset in lingua italiana come Alpaca (ITA) lo rende più efficace nel comprendere e generare testi in italiano.

Utilizzo del Dataset Alpaca (ITA)

Alpaca (ITA) è un dataset specifico per la lingua italiana che contiene una vasta gamma di testi in italiano. Questo può includere letteratura, articoli di giornale, dialoghi, e molto altro. Utilizzando Alpaca (ITA) per il fine-tuning, Mistral 7B può imparare le sfumature della lingua italiana, dai modi di dire ai termini tecnici specifici.

Passaggi per il Fine-Tuning di Mistral 7B con il Dataset Alpaca (ITA) Utilizzando QLoRA e bitsandbytes

Il fine-tuning di modelli di linguaggio come Mistral 7B con il dataset Alpaca (ITA) è un processo complesso che coinvolge diverse tecniche avanzate per ottimizzare l’adattamento del modello a specifici compiti linguistici. Tra queste, tecniche innovative come QLoRA (Quantized Low-Rank Adaptation) e l’utilizzo di bitsandbytes giocano un ruolo fondamentale.

  1. Preparazione dei dati: prima del fine-tuning, i dati di Alpaca (ITA) devono essere curati e standardizzati. Questo implica la rimozione di elementi non necessari e la standardizzazione dei formati di testo per garantire un input coerente e pulito per l’addestramento del modello.
  2. Configurazione e Addestramento: Durante questa fase, Mistral 7B viene addestrato sul dataset Alpaca (ITA), un processo che richiede potenza computazionale e tempo. L’addestramento coinvolge l’uso di QLoRA, una tecnica di fine-tuning efficiente che introduce adattatori a basso rango (low-rank adapters) in ogni layer del modello, riducendo così il numero di parametri addestrabili e i requisiti di memoria della GPU​​. Per preparare il modello al fine-tuning, si usa il metodo prepare_model_for_kbit_training dal PEFT (Parameter-Efficient Fine-Tuning), che prepara il modello per l’addestramento a 4 bit con bitsandbytes​​.
  3. Applicazione di QLoRA: QLoRA viene applicata a tutti i layer lineari del modello, come q_proj, k_proj, v_proj, o_proj, e altri. Si definisce la configurazione di LoRA, includendo il rango delle matrici a basso rango e il fattore di scala per i pesi appresi. Questi parametri influenzano la quantità di espressività e la complessità computazionale del modello durante il fine-tuning​​.
  4. Tecniche di Quantizzazione: QLoRA introduce innovazioni significative per ridurre l’impronta di memoria senza compromettere le prestazioni. Tra queste, spicca la NF4 (NormalFloat a 4-bit), un nuovo tipo di dato ottimizzato e teoricamente ideale per pesi distribuiti normalmente, mirato a minimizzare l’uso della memoria. In aggiunta, QLoRA implementa la tecnica di Double Quantization, che non solo quantizza i pesi del modello ma anche le costanti di quantizzazione, permettendo un risparmio medio di circa 0,37 bit per parametro. Questo approccio doppio ed efficiente riduce ulteriormente l’impronta di memoria, ottimizzando l’uso delle risorse senza sacrificare la performance del modello.

Mistral ITA 7b vs LLAMA 2 ITA 7b

Nel confronto tra Mistral ITA e Llama 2 7B Italiano (Camoscio), è stato adottato un approccio di valutazione all’avanguardia utilizzando gli evaluator di LangChain e altre tecnologie avanzate. Questi strumenti hanno permesso di generare metriche accurate e specifiche per valutare le prestazioni dei due modelli in lingua italiana.
Il punteggio di perplessità, che riflette la capacità di un modello di comprendere il contesto e la struttura linguistica, è stato uno dei criteri chiave. Mistral ITA ha ottenuto un punteggio di perplessità di 10,4, significativamente inferiore rispetto al 11,9 di Llama 2 7B Italiano (Camoscio), indicando una migliore comprensione del linguaggio italiano e delle sue sfumature.

L’accuratezza, misurata dagli evaluator, ha mostrato che Mistral ITA possiede un tasso di accuratezza del 86,7%, superando l’85,4% di Llama 2 7B Italiano (Camoscio). Questo risultato sottolinea la maggiore efficacia di Mistral ITA nel fornire risposte corrette e pertinenti in vari compiti di elaborazione del linguaggio naturale in italiano.
Anche il punteggio di diversità, che valuta l’ampiezza delle risposte generate, ha evidenziato una superiorità di Mistral ITA, con un punteggio di 0,83 contro lo 0,79 di Llama 2 7B Italiano (Camoscio). Ciò dimostra la capacità di Mistral ITA di produrre una gamma più ampia e creativa di risposte in italiano.

Infine, la fluidità del linguaggio, che valuta la scorrevolezza e naturalezza del testo generato, è stata giudicata superiore in Mistral ITA con un punteggio di 4,8, rispetto al 4,6 di Llama 2 7B Italiano (Camoscio). Queste valutazioni, ottenute tramite gli avanzati evaluator di LangChain e strumenti correlati, forniscono una chiara indicazione delle superiori capacità di Mistral ITA rispetto a Llama 2 7B Italiano (Camoscio) nell’elaborazione e generazione del linguaggio naturale in italiano.

  1. MMLU (Multimodal Language Understanding): Questa categoria valuta la capacità di un modello di comprendere e interpretare informazioni che combinano testo e altri tipi di dati, come immagini o audio. Si concentra sulla comprensione del linguaggio in contesti multimodali, dove la sinergia tra diversi tipi di input è fondamentale.
  2. Knowledge: In questa categoria, si misura la capacità del modello di attingere a un vasto corpus di informazioni preapprese. Include la valutazione di quanto bene il modello può ricordare fatti, dati e informazioni generali, e come può utilizzare queste conoscenze in contesti vari.
  3. Reasoning: Questa categoria si concentra sulla capacità del modello di applicare il ragionamento logico, la deduzione, e la risoluzione di problemi complessi. Spesso implica l’elaborazione di informazioni fornite e l’applicazione di regole logiche per arrivare a conclusioni o risolvere puzzle.
  4. Comprehension: Valuta quanto efficacemente il modello può comprendere, interpretare e analizzare il testo. Ciò include la comprensione del significato letterale, così come la capacità di inferire significati sottintesi o impliciti, riconoscendo tono, metafore, e altri elementi stilistici.
  5. Math: Questa categoria testa le competenze matematiche del modello. Ciò include la capacità di risolvere problemi numerici, equazioni, calcoli statistici, e altre forme di ragionamento quantitativo. È una misura di quanto bene il modello può manipolare e lavorare con i numeri.
  6. Code: Valuta la capacità del modello di comprendere, interpretare e generare codice di programmazione. Ciò include non solo la comprensione della sintassi di vari linguaggi di programmazione, ma anche la capacità di applicare concetti di programmazione per risolvere problemi o sviluppare algoritmi funzionali.

Quantizzazione GGUF Mistral 7b

  1. Definizione di Quantizzazione dei LLM: La quantizzazione dei modelli di linguaggio di grandi dimensioni (LLM) è una tecnica utilizzata per ridurre le dimensioni di reti neurali estese. Questo viene fatto modificando la precisione dei loro pesi. L’obiettivo principale è rendere i LLM più efficienti in termini di spazio di archiviazione e velocità di elaborazione, mantenendo al contempo la maggior parte delle prestazioni del modello​.
  2. Introduzione di GGUF: GGUF è un formato nuovo introdotto dal team di llama.cpp il 21 agosto 2023. Si tratta di un sostituto per GGML, che non è più supportato da llama.cpp. Questo formato offre numerosi vantaggi rispetto a GGML, come una migliore tokenizzazione e il supporto per token speciali. GGUF supporta anche i metadati ed è progettato per essere estensibile​.
  3. Vantaggi della Quantizzazione: La quantizzazione è diventata una tecnica essenziale per eseguire efficientemente i LLM a causa delle loro dimensioni massicce. Riducendo la precisione dei loro pesi, è possibile risparmiare memoria e accelerare l’inferenza, preservando la maggior parte delle prestazioni del modello​.

In sintesi, la quantizzazione GGUF per gli LLM rappresenta un passo importante verso l’ottimizzazione dei modelli di linguaggio di grandi dimensioni. Offre un metodo per gestire efficientemente le grandi dimensioni di questi modelli riducendo lo spazio di archiviazione e aumentando la velocità di elaborazione, senza compromettere in modo significativo le prestazioni complessive del modello. Questi sviluppi sono particolarmente rilevanti nel contesto attuale in cui i LLM stanno diventando sempre più centrali in vari ambiti dell’intelligenza artificiale e dell’elaborazione del linguaggio naturale.

Conclusioni

L’importanza del fine-tuning di modelli come Mistral 7B con dataset specifici per lingua, come Alpaca (ITA), è fondamentale per migliorare la qualità e l’efficacia nella generazione e comprensione del testo in lingue diverse dall’inglese, un processo che non solo aumenta l’accuratezza del modello, ma apre anche nuove possibilità nell’ambito dell’IA per gli utenti di lingua italiana. Inoltre, i recenti avanzamenti nei meccanismi di attention, come quelli implementati in Mistral e LLAMA, hanno implicazioni significative per l’elaborazione del linguaggio naturale.

Mistral si distingue per la sua abilità nel gestire efficientemente sequenze lunghe, grazie alla combinazione di GQA e SWA, rendendolo ideale per contesti che richiedono l’elaborazione di ampi volumi di testo. LLAMA, utilizzando la GQA, ottimizza la scalabilità, soprattutto in modelli di grandi dimensioni, offrendo un’elaborazione del linguaggio naturale più agile e versatile. Dopo semplici benchmark, è emerso che Mistral ha prestazioni leggermente migliori rispetto a LLAMA 2 7B. Queste caratteristiche rendono entrambi i modelli strumenti potenti e flessibili per un’ampia gamma di applicazioni nel campo dell’intelligenza artificiale.