Llama 2 Un’analisi approfondita della sfida open-source a ChatGPT

Llama 2' Analysing the open-source challenge to ChatGPT

I modelli di linguaggio di grandi dimensioni (LLM) capaci di compiti di ragionamento complessi hanno mostrato promesse in settori specializzati come la programmazione e la scrittura creativa. Tuttavia, il mondo dei LLM non è semplicemente un paradiso plug-and-play; ci sono sfide nell’usabilità, nella sicurezza e nelle richieste computazionali. In questo articolo, ci immergeremo nelle capacità di Llama 2, fornendo nel contempo una guida dettagliata per la configurazione di questo LLM ad alte prestazioni tramite Hugging Face e le GPU T4 su Google Colab.

Sviluppato da Meta in collaborazione con Microsoft, questo modello di linguaggio di grandi dimensioni open-source mira a ridefinire i confini dell’IA generativa e della comprensione del linguaggio naturale. Llama 2 non è solo un altro modello statistico addestrato su terabyte di dati; è l’incarnazione di una filosofia. Una filosofia che sottolinea un approccio open-source come base dello sviluppo dell’IA, in particolare nel campo dell’IA generativa.

Llama 2 e il suo sostituto ottimizzato per il dialogo, Llama 2-Chat, sono dotati di fino a 70 miliardi di parametri. Vengono sottoposti a un processo di messa a punto dettagliato per allinearli strettamente alle preferenze umane, rendendoli entrambi più sicuri ed efficaci rispetto a molti altri modelli disponibili pubblicamente. Questo livello di granularità nella messa a punto dettagliata è spesso riservato a LLM “prodotto” chiusi, come ChatGPT e BARD, che non sono generalmente disponibili per l’esame o la personalizzazione pubblica.

Approfondimento tecnico di Llama 2

Per addestrare il modello Llama 2; come i suoi predecessori, utilizza un’architettura di trasformatore auto-regressivo, pre-addestrato su un corpus esteso di dati auto-supervisionati. Tuttavia, aggiunge uno strato aggiuntivo 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 ed efficacia del modello.

Architettura di addestramento Meta Llama 2

Pre-addestramento ed 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 diversi miglioramenti cruciali per elevare le sue prestazioni. In particolare, spiccano un aumento del 40% nel numero totale di token addestrati e un raddoppio della lunghezza del contesto. Inoltre, il modello utilizza l’attenzione a gruppo di query (GQA) per amplificare la scalabilità dell’inferenza.

Messaggio fine-tuning controllato (SFT) e apprendimento per rinforzo con feedback umano (RLHF)

Llama-2-chat è stato rigorosamente messo a punto utilizzando sia SFT che apprendimento per rinforzo con feedback umano (RLHF). In questo contesto, SFT serve come componente integrante del framework RLHF, per raffinare le risposte del modello in modo che si allineino strettamente alle preferenze e alle aspettative umane.

OpenAI ha fornito un’illustrazione illuminante che spiega le metodologie SFT e RLHF utilizzate in InstructGPT. Come LLaMa 2, anche InstructGPT sfrutta queste tecniche avanzate di addestramento per ottimizzare le prestazioni del suo modello.

Il passo 1 nell’immagine sottostante si concentra sul messaggio fine-tuning controllato (SFT), mentre i passi successivi completano il processo di apprendimento per rinforzo dal feedback umano (RLHF).

Instruction-GPT

Il messaggio fine-tuning controllato (SFT) è un processo specializzato finalizzato a ottimizzare un modello di linguaggio di grandi dimensioni (LLM) pre-addestrato per un compito specifico. A differenza dei metodi non supervisionati, che non richiedono la convalida dei dati, SFT utilizza un dataset che è stato pre-convalidato e etichettato.

Generalmente, la creazione di questi dataset è costosa e richiede tempo. L’approccio di Llama 2 è stato quello della qualità rispetto alla quantità. Con sole 27.540 annotazioni, il team di Meta ha raggiunto livelli di prestazioni competitivi con gli annotatori umani. Questo si allinea bene con studi recenti che dimostrano che anche dataset limitati ma puliti possono produrre risultati di alta qualità.

Nel processo di SFT, il LLM pre-addestrato viene esposto a un dataset etichettato, in cui entrano in gioco gli algoritmi di apprendimento supervisionato. I pesi interni del modello vengono ricalibrati in base ai gradienti calcolati da una funzione di perdita specifica del compito. Questa funzione di perdita quantifica le discrepanze tra le uscite predette dal modello e le etichette di verità fondamentale effettive.

Questa ottimizzazione consente al LLM di comprendere i modelli intricati e le sfumature incorporate nel dataset etichettato. Di conseguenza, il modello non è solo uno strumento generalizzato ma si evolve in un asset specializzato, abile nell’eseguire il compito target con un alto grado di precisione.

Il reinforcement learning è il prossimo passo, mirato ad allineare il comportamento del modello più strettamente alle preferenze umane.

La fase di ottimizzazione ha utilizzato il Reinforcement Learning from Human Feedback (RLHF), impiegando tecniche come Importance Sampling e Proximal Policy Optimization per introdurre rumore algoritmico, evitando così i massimi locali. Questo processo di ottimizzazione iterativo non solo ha migliorato il modello ma ha anche allineato l’output alle aspettative umane.

Llama 2-Chat ha utilizzato un protocollo di confronto binario per raccogliere dati sulle preferenze umane, segnando una tendenza significativa verso approcci più qualitativi. Questo meccanismo ha informato i Reward Models, che vengono poi utilizzati per ottimizzare ulteriormente il modello di intelligenza conversazionale.

Ghost Attention: Dialoghi Multi-Turn

Meta ha introdotto una nuova funzionalità, Ghost Attention (GAtt), progettata per migliorare le prestazioni di Llama 2 nei dialoghi multi-turno. Risolve efficacemente il problema persistente della perdita di contesto nelle conversazioni in corso. GAtt agisce come un ancoraggio, collegando le istruzioni iniziali a tutti i messaggi successivi dell’utente. In combinazione con le tecniche di reinforcement learning, aiuta a produrre risposte coerenti, pertinenti e allineate alle richieste degli utenti in dialoghi più lunghi.

Da Meta Git Repository Utilizzando download.sh

  1. Visita il Sito Web di Meta: Vai 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 da Meta che scade in 24 ore. Dovrai anche scegliere la dimensione del modello: 7B, 13B o 70B.

Da Hugging Face

  1. Ricevi Email di Accettazione: Dopo aver ottenuto l’accesso da Meta, vai su Hugging Face.
  2. Richiedi l’Accesso: Scegli il modello desiderato e invia una richiesta per ottenere l’accesso.
  3. Conferma: Riceverai un’email di “accesso concessi” entro 1-2 giorni.
  4. Genera Token di Accesso: Vai su “Impostazioni” nel tuo account Hugging Face per creare i token di accesso.

La versione 4.31 di Transformers è completamente compatibile con LLaMa 2 e offre molte funzionalità e strumenti all’interno dell’ecosistema di Hugging Face. Dalla creazione di script di addestramento e inferenza alla quantizzazione a 4 bit con bitsandbytes e al Parameter Efficient Fine-tuning (PEFT), il toolkit è esteso. Per iniziare, assicurati di avere 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

Installazione del pacchetto

!pip install transformers
!huggingface-cli login

Importa le librerie Python necessarie.

from transformers import AutoTokenizer
import transformers
import torch

Inizializza il Modello e il Tokenizer

In questa fase, specifica quale modello Llama 2 utilizzerai. Per questa guida, utilizziamo meta-llama/Llama-2-7b-chat-hf.

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

Configura il Pipeline

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

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

Genera Sequenze di Testo

Infine, esegui il 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 di chatbot all’avanguardia basata su Streamlit appositamente progettata per Llama 2. Ospitata su GitHub, questa interfaccia conserva la cronologia della chat della sessione e offre anche la flessibilità di selezionare tra più endpoint API di Llama 2 ospitati su Replicate. Questo design orientato 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 interessati a provare questa esperienza, è disponibile una demo live su Llama2.ai.

LLaMa2.ai

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

Varie Opzioni di Scalabilità

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

Lunghezza del Contesto Aumentata

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 estesi.

Grouped Query Attention (GQA)

L’architettura utilizza il concetto di GQA, progettato per accelerare il processo di calcolo dell’attenzione memorizzando in cache le coppie di token precedenti. Questo migliora efficacemente la scalabilità dell’inferenza del modello per migliorarne l’accessibilità.

Performance Benchmarks

Analisi delle Performance dei Modelli di Chat di Llama 2 con ChatGPT e Altri Competitori

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

Il modello più grande di Llama 2-Chat, il 70B, supera anche ChatGPT nel 36% dei casi e raggiunge le stesse performance nel 31,5% dei casi. Fonte: Paper

Open Source: Il Potere della Comunità

Meta e Microsoft intendono che Llama 2 sia più di un semplice prodotto; lo immaginano come uno strumento guidato dalla comunità. Llama 2 è gratuito per scopi di ricerca e 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 collettiva” del modello. Sviluppatori ed eticisti dell’IA possono testarlo a fondo, individuare vulnerabilità e offrire soluzioni a un ritmo accelerato.

Anche se i termini di licenza per LLaMa 2 sono generalmente permissivi, esistono eccezioni. Grandi aziende con oltre 700 milioni di utenti mensili, come Google, richiedono un’autorizzazione esplicita da parte di Meta per il suo utilizzo. Inoltre, la licenza vieta l’uso 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 talvolta falliscono nell’offrire prestazioni uniformemente elevate in compiti divergenti. La qualità e la diversità dei dati sono altrettanto cruciali del volume in questi scenari.
  2. Trasparenza del Modello: Date le precedenti difficoltà con l’IA nel produrre output fuorvianti, esplorare la logica decisionale dietro questi modelli complessi è di fondamentale importanza.

Code Llama – L’ultimo lancio di Meta

Meta ha recentemente annunciato Code Llama, che è un grande modello di linguaggio specializzato nella programmazione con dimensioni dei parametri che variano da 7 miliardi a 34 miliardi. Simile a ChatGPT Code Interpreter, Code Llama può ottimizzare i flussi di lavoro degli sviluppatori e rendere la programmazione più accessibile. Può gestire diversi linguaggi di programmazione e ha delle varianti specializzate, come Code Llama-Python per compiti specifici di Python. Il modello offre anche diversi livelli di performance per soddisfare diverse esigenze di latenza. Con una licenza aperta, Code Llama invita il contributo della comunità per un miglioramento continuo.

Presentando Code Llama, uno strumento AI per la programmazione

Conclusioni

Questo articolo ti ha guidato nella 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, dalle architetture dei trasformatori auto-regressivi al Reinforcement Learning con Human Feedback (RLHF). Con fino a 70 miliardi di parametri e funzionalità come Ghost Attention, questo modello supera gli attuali standard dell’industria in determinati settori e, con la sua natura aperta, apre la strada a una nuova era nella comprensione del linguaggio naturale e nell’IA generativa.