Modelli e piattaforme di IA

Llama 2: Un’analisi approfondita del modello di linguaggio open-source che sfida ChatGPT

mm
Aggiungi Unite.AI alle tue fonti preferite su Google

I modelli di linguaggio di grandi dimensioni (LLM) in grado di eseguire compiti di ragionamento complesso hanno mostrato il loro potenziale in domini specializzati come la programmazione e la scrittura creativa. Tuttavia, il mondo degli LLM non è semplicemente un paradiso plug-and-play; ci sono sfide relative all’usabilità, alla sicurezza e alle esigenze computazionali. In questo articolo, esploreremo approfonditamente le capacità di Llama 2, fornendo anche una guida dettagliata per configurare questo modello di linguaggio ad alte prestazioni tramite Hugging Face e T4 GPU su Google Colab.

Sviluppato da Meta in partnership con Microsoft (MSFT ), questo modello di linguaggio open-source mira a ridefinire i confini dell’intelligenza artificiale generativa e della comprensione del linguaggio naturale. Llama 2 non è solo un modello statistico addestrato su terabyte di dati; è l’incarnazione di una filosofia. Una filosofia che sottolinea l’approccio open-source come fondamento dello sviluppo dell’IA, in particolare nello spazio dell’IA generativa.

Llama 2 e la sua versione ottimizzata per il dialogo, Llama 2-Chat, sono dotati di fino a 70 miliardi di parametri. Sottoposti a un processo di fine-tuning progettato per allinearli strettamente con le preferenze umane, rendendoli più sicuri ed efficaci rispetto a molti altri modelli pubblicamente disponibili. Questo livello di granularità nel fine-tuning è spesso riservato ai modelli LLM “chiusi” come ChatGPT e BARD, che non sono generalmente disponibili per l’ispezione o la personalizzazione pubblica.

Analisi tecnica approfondita di Llama 2

Per l’addestramento del modello Llama 2, come i suoi predecessori, utilizza un’architettura di trasformatori auto-regressivi, pre-addestrata su un ampio corpus di dati auto-supervisionati. Tuttavia, aggiunge un ulteriore livello di sofisticazione utilizzando l’apprendimento per rinforzo con feedback umano (RLHF) per allinearsi meglio con il comportamento e le preferenze umane. Questo è computazionalmente costoso, ma vitale per migliorare la sicurezza e l’efficacia del modello.

Architettura di addestramento di Meta Llama 2

Architettura di addestramento di Meta Llama 2

Pre-addestramento e efficienza dei dati

L’innovazione fondamentale di Llama 2 risiede nel suo regime di pre-addestramento. Il modello prende spunto dal suo predecessore, Llama 1, ma introduce diverse migliorie cruciali per elevare le sue prestazioni. In particolare, un aumento del 40% del numero totale di token addestrati e una duplice espansione della lunghezza del contesto si distinguono. Inoltre, il modello sfrutta l’attenzione raggruppata (GQA) per amplificare la scalabilità dell’inferenza.

Fine-tuning supervisionato (SFT) e apprendimento per rinforzo con feedback umano (RLHF)

Llama-2-Chat è stato sottoposto a un rigoroso fine-tuning utilizzando sia SFT che RLHF. In questo contesto, SFT serve come componente integrale del framework RLHF, raffinando le risposte del modello per allinearle strettamente con le preferenze e le aspettative umane.

OpenAI ha fornito un’illustrazione istruttiva che spiega le metodologie SFT e RLHF impiegate in InstructGPT. Allo stesso modo, LLaMa 2 sfrutta queste tecniche di addestramento avanzate per ottimizzare le prestazioni del modello.

Il passo 1 nell’immagine seguente si concentra sul fine-tuning supervisionato (SFT), mentre i passaggi successivi completano il processo di apprendimento per rinforzo con feedback umano (RLHF).

Il fine-tuning supervisionato (SFT) è un processo specializzato finalizzato all’ottimizzazione di un modello di linguaggio pre-addestrato per un compito downstream specifico. A differenza dei metodi non supervisionati, che non richiedono la convalida dei dati, SFT impiega un set di dati pre-validato e etichettato.

Generalmente, la creazione di questi set di dati è costosa e richiede molto tempo. L’approccio di Llama 2 è stato quello di privilegiare la qualità rispetto alla quantità. Con solo 27.540 annotazioni, il team di Meta ha raggiunto livelli di prestazione competitivi con gli annotatori umani. Ciò si allinea bene con studi recenti che mostrano come anche set di dati limitati ma puliti possano guidare risultati di alta qualità.

Nel processo SFT, il modello di linguaggio pre-addestrato viene esposto a un set di dati etichettato, dove gli algoritmi di apprendimento supervisionato entrano in gioco. I pesi interni del modello vengono ricambiati in base ai gradienti calcolati da una funzione di perdita specifica del compito. Questa funzione di perdita quantifica le discordanze tra le uscite previste del modello e le etichette di verità fondamentale.

Questa ottimizzazione consente al modello di comprendere i pattern e le sfumature intricate incorporati nel set di dati etichettato. Di conseguenza, il modello non è solo uno strumento generalizzato, ma si evolve in un asset specializzato, adatto a eseguire il compito di destinazione con un alto grado di precisione.

L’apprendimento per rinforzo è il passo successivo, finalizzato a allineare il comportamento del modello con le preferenze umane più da vicino.

La fase di sintonizzazione ha sfruttato l’apprendimento per rinforzo con feedback umano (RLHF), impiegando tecniche come Importance Sampling e Proximal Policy Optimization per introdurre rumore algoritmico, evitando così gli ottimi locali. Questa sintonizzazione iterativa non solo ha migliorato il modello, ma ha anche allineato la sua uscita con le aspettative umane.

Llama 2-Chat ha utilizzato un protocollo di confronto binario per raccogliere dati di preferenza umana, segnando una tendenza significativa verso approcci più qualitativi. Questo meccanismo ha informato i modelli di ricompensa, che sono stati utilizzati per sintonizzare ulteriormente il modello di intelligenza artificiale conversazionale.

Attenzione fantasma: dialoghi multi-turni

Meta ha introdotto una nuova funzionalità, l’Attenzione Fantasma (GAtt), progettata per migliorare le prestazioni di Llama 2 nei dialoghi multi-turni. Ciò risolve efficacemente il problema persistente della perdita di contesto nelle conversazioni in corso. GAtt agisce come un’ancora, collegando le istruzioni iniziali a tutti i messaggi utente successivi. Abbinata a tecniche di apprendimento per rinforzo, aiuta a produrre risposte coerenti, pertinenti e allineate con l’utente su dialoghi più lunghi.

Da Meta Git Repository utilizzando download.sh

  1. Visita il sito web di Meta: naviga fino al sito ufficiale di Llama 2 di Meta e clicca su ‘Scarica il modello’
  2. Compila i dettagli: leggi e accetta i termini e le condizioni per procedere.
  3. Conferma via email: una volta inviato il modulo, riceverai un’email da Meta con un link per scaricare il modello dal loro repository Git.
  4. Esegui download.sh: clona il repository Git ed esegui lo script download.sh. Questo script ti chiederà di autenticarti utilizzando un URL di Meta che scade in 24 ore. Sceglierai anche le dimensioni del modello: 7B, 13B o 70B.

Da Hugging

  1. Ricevi l’email di accettazione: dopo aver ottenuto l’accesso da Meta, vai su Hugging Face.
  2. Richiedi l’accesso: seleziona il modello desiderato e invia una richiesta per ottenere l’accesso.
  3. Conferma: aspetta un’email di ‘accesso concesso’ entro 1-2 giorni.
  4. Genera token di accesso: naviga fino alle ‘Impostazioni’ del tuo account Hugging Face per creare token di accesso.

La versione 4.31 di Transformers è completamente compatibile con LLaMa 2 e offre molti strumenti e funzionalità all’interno dell’ecosistema Hugging Face. Dalle script di addestramento e inferenza alla quantizzazione a 4 bit con bitsandbytes e alla sintonizzazione efficiente dei parametri (PEFT), il toolkit è estensivo. Per iniziare, assicurati di utilizzare l’ultima versione di Transformers e di essere connesso al tuo account Hugging Face.

Ecco una guida semplificata per eseguire l’inferenza del modello LLaMa 2 in un ambiente Google Colab, sfruttando un runtime GPU:

Modello Google Colab - T4 GPU

Modello Google Colab – T4 GPU

 

 

 

 

 

 

Installazione del pacchetto


<p>!pip install transformers
!huggingface-cli login

Importazione delle librerie Python necessarie.

from transformers import AutoTokenizer
import transformers
import torch

Inizializzazione del modello e del tokenizzatore

In questo passaggio, specifica quale modello Llama 2 userai. Per questa guida, useremo meta-llama/Llama-2-7b-chat-hf.

model = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model)

Configurazione della pipeline

Utilizza la pipeline Hugging Face per la generazione di testo con impostazioni specifiche:

pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto")

Generazione di sequenze di testo

Infine, esegui la pipeline e genera una sequenza di testo in base al tuo input:

sequences = pipeline(
'Chi sono i principali contributori nel campo dell\'intelligenza artificiale?\n',
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200)
for seq in sequences:
print(f"Risultato: {seq['generated_text']}")

Interfaccia utente di A16Z per LLaMa 2

Andreessen Horowitz (A16Z) ha recentemente lanciato un’interfaccia utente all’avanguardia basata su Streamlit per Llama 2. Ospitata su GitHub, questa interfaccia utente conserva la cronologia delle sessioni di chat e offre anche la flessibilità di selezionare da più endpoint API Llama 2 ospitati su Replicate. Questa progettazione orientata all’utente mira a semplificare le interazioni con Llama 2, rendendolo uno strumento ideale sia per gli sviluppatori che per gli utenti finali. Per coloro che sono interessati a provare questo, è disponibile una demo live su Llama2.ai.

Llama 2: cosa lo rende diverso dai modelli GPT e dal suo predecessore Llama 1?

Varietà di scala

A differenza di molti modelli di linguaggio che offrono una scalabilità limitata, Llama 2 offre una serie di opzioni per modelli con parametri vari. Il modello scala da 7 miliardi a 70 miliardi di parametri, offrendo così una gamma di configurazioni per soddisfare esigenze computazionali diverse.

Lunghezza del contesto migliorata

Il modello ha una lunghezza del contesto aumentata di 4K token rispetto a Llama 1. Ciò gli consente di conservare più informazioni, migliorando così la sua capacità di comprendere e generare contenuti più complessi ed estensivi.

Attenzione raggruppata (GQA)

L’architettura utilizza il concetto di GQA, progettato per velocizzare il processo di calcolo dell’attenzione memorizzando le coppie di token precedenti. Ciò migliora efficacemente la scalabilità dell’inferenza del modello per aumentare l’accessibilità.

Benchmark delle prestazioni

Analisi comparativa delle prestazioni dei modelli Llama 2-Chat con ChatGPT e altri concorrenti

Analisi delle prestazioni dei modelli Llama 2-Chat con ChatGPT e altri concorrenti

Llama 2 ha stabilito un nuovo standard per le metriche di prestazione. Non solo supera il suo predecessore, Llama 1, ma offre anche una significativa concorrenza ad altri modelli come Falcon e GPT-3.5.

Il modello Llama 2-Chat più grande, il 70B, supera anche ChatGPT nel 36% dei casi e si pari in un altro 31,5% dei casi. Fonte: Articolo

Open Source: il potere della comunità

Meta e Microsoft intendono che Llama 2 sia più di un prodotto; lo vedono come uno strumento guidato dalla comunità. Llama 2 è gratuito per l’accesso sia per la ricerca che per scopi non commerciali. L’obiettivo è democratizzare le capacità dell’IA, rendendole accessibili a startup, ricercatori e aziende. Un paradigma open-source consente la ‘risoluzione dei problemi della comunità’ del modello. Gli sviluppatori e gli esperti di etica dell’IA possono testare, identificare vulnerabilità e offrire soluzioni a un ritmo accelerato.

Sebbene i termini di licenza per LLaMa 2 siano generalmente permissivi, eccezioni esistono. Le grandi aziende con oltre 700 milioni di utenti mensili, come Google, richiedono un’autorizzazione esplicita da Meta per il suo utilizzo. Inoltre, la licenza proibisce l’utilizzo di LLaMa 2 per il miglioramento di altri modelli di linguaggio.

Sfide attuali con Llama 2

  1. Generalizzazione dei dati: sia Llama 2 che GPT-4 a volte vacillano in prestazioni uniformemente elevate in compiti diversi. La qualità e la diversità dei dati sono altrettanto cruciali quanto il volume in questi scenari.
  2. Trasparenza del modello: dati i precedenti passi falsi dell’IA che produce output fuorvianti, esplorare la logica decisionale dietro questi modelli complessi è fondamentale.

Code Llama – l’ultimo lancio di Meta

Meta ha recentemente annunciato Code Llama, che è un modello di linguaggio di grandi dimensioni specializzato nella programmazione con dimensioni dei parametri che vanno da 7B a 34B. Simile a ChatGPT Code Interpreter; Code Llama può semplificare i flussi di lavoro degli sviluppatori e rendere la programmazione più accessibile. Accetta vari linguaggi di programmazione e viene in varianti specializzate, come Code Llama-Python per compiti specifici di Python. Il modello offre anche diversi livelli di prestazione per soddisfare esigenze di latenza diverse. Concesso in licenza aperta, Code Llama invita l’input della comunità per il miglioramento continuo.

https://about.fb.com/news/2023/08/code-llama-ai-for-coding/

Conclusione

Questo articolo ti ha guidato attraverso la configurazione di un modello Llama 2 per la generazione di testo su Google Colab con il supporto di Hugging Face. Le prestazioni di Llama 2 sono alimentate da una serie di tecniche avanzate, dall’architettura dei trasformatori auto-regressivi all’apprendimento per rinforzo con feedback umano (RLHF). Con fino a 70 miliardi di parametri e funzionalità come l’Attenzione Fantasma, questo modello supera gli standard attuali dell’industria in alcune aree e, con la sua natura open, apre la strada a una nuova era nella comprensione del linguaggio naturale e nell’IA generativa.

Ho trascorso gli ultimi cinque anni immergendomi nel mondo affascinante del Machine Learning e del Deep Learning. La mia passione e la mia esperienza mi hanno portato a contribuire a oltre 50 progetti di ingegneria del software diversi, con un focus particolare su AI/ML. La mia curiosità in corso mi ha anche portato verso l'elaborazione del linguaggio naturale, un campo che sono ansioso di esplorare ulteriormente.