Siete pronti a esplorare le nuove frontiere dell'intelligenza artificiale? Oggi vi guiderò attraverso un'entusiasmante novità: Llama 3, l'ultima versione del potente modello di linguaggio di Meta. Questa versione è stata rilasciata come open source, offrendo a tutti la possibilità di sperimentare un'alternativa gratuita a GPT-4 di OpenAI direttamente sul proprio computer.
Prima di immergerci nei dettagli tecnici, permettetemi di spiegare brevemente cos'è un Modello di Linguaggio di Grandi Dimensioni (LLM). Un LLM è un sistema di intelligenza artificiale addestrato su enormi quantità di dati testuali, consentendogli di generare, comprendere e analizzare il linguaggio naturale in modi estremamente sofisticati.
I modelli come GPT-4 di OpenAI hanno rivoluzionato il settore, ma sono chiusi e a pagamento. Llama 3 di Meta, d'altra parte, è stato rilasciato open source, permettendo a chiunque di utilizzarlo gratuitamente e perfino di modificarlo secondo le proprie esigenze.
Cos'è Llama e Perché È Importante
La famiglia dei modelli Llama è stata introdotta da Meta AI (l'ex Facebook AI Research) a febbraio 2023. Llama, che sta per "Large Language Model Meta AI", rappresenta il culmine degli sforzi di Meta nel campo dell'intelligenza artificiale per il linguaggio naturale.
L'innovazione più significativa di Llama 3 rispetto alle versioni precedenti è il massiccio aumento delle sue capacità. Secondo Meta, questo modello supera le prestazioni di altri LLM di dimensioni simili, come Gemma 7B, Claude 3 Sonnet e Mistral 7B, in varie applicazioni come il ragionamento logico, la generazione di codice e la comprensione del linguaggio naturale.
Ma ciò che rende Llama 3 davvero speciale è la sua natura open source. A differenza dei modelli proprietari come GPT-4, chiunque può accedere al codice sorgente di Llama 3 e utilizzarlo liberamente per scopi di ricerca, sviluppo o semplice sperimentazione.
Perché Utilizzare un Modello Open Source?
L'open source offre numerosi vantaggi rispetto ai modelli chiusi e proprietari:
Accessibilità: Chiunque può accedere e utilizzare Llama 3 gratuitamente, senza dover pagare costose sottoscrizioni o licenze.
Trasparenza: Essendo open source, il codice di Llama 3 è aperto al pubblico scrutinio, promuovendo la trasparenza e la fiducia nell'IA.
Personalizzazione: Gli sviluppatori possono modificare e adattare Llama 3 alle loro esigenze specifiche, creando applicazioni e servizi su misura.
Collaborazione: La comunità open source può lavorare insieme per migliorare e far progredire Llama 3, accelerando l'innovazione nell'IA.
Istruzione e Ricerca: Llama 3 rappresenta un'eccellente risorsa per studenti, ricercatori e appassionati che desiderano imparare ed esplorare il funzionamento dei modelli di linguaggio di grandi dimensioni.
Con Llama 3 a portata di mano, ora hai la straordinaria opportunità di sperimentare una tecnologia all'avanguardia gratuitamente e senza restrizioni. Che tu sia uno sviluppatore, un ricercatore o semplicemente un curioso appassionato di IA, preparati a essere stupito dalle capacità di questo potente modello open source.
Nei prossimi paragrafi, ti guiderò passo dopo passo attraverso il processo di esecuzione di Llama 3 sul tuo computer locale. Affronteremo le sfide tecniche, esploreremo le sue funzionalità e imparerai come sfruttare al massimo questo strumento rivoluzionario. Tieniti forte, perché stiamo per intraprendere un viaggio entusiasmante nell'innovativo mondo dell'Intelligenza Artificiale open source!
Le Dimensioni e le Capacità Innovative di Llama 3
Meta ha rilasciato Llama 3 in due diverse dimensioni: un modello da 8 miliardi di parametri (8B) e uno da 70 miliardi di parametri (70B). Entrambi i modelli sono dotati di un tokenizer esteso che suddivide il testo in modo più efficiente, riducendo fino al 15% il numero di token necessari rispetto al precedente Llama 2. Questo si traduce in una generazione di testo più rapida e fluida.
Un'altra novità entusiasmante è la licenza commerciale permissiva di Llama 3. A differenza di molti altri modelli open source, questo consente un'ampia gamma di usi commerciali, aprendo la strada a innumerevoli applicazioni e servizi basati su questa tecnologia rivoluzionaria.
Inoltre, proprio come per Llama 2, Meta ha rilasciato versioni "chat" di entrambi i modelli Llama 3, ottimizzate per conversazioni più naturali e interattive con gli utenti.
Ma le novità non finiscono qui! Meta ha annunciato che rilascerà ulteriori versioni di Llama nei prossimi mesi, introducendo:
Nuove capacità avanzate
Finestre di contesto più ampie per una migliore comprensione del contesto
Dimensioni aggiuntive del modello
Prestazioni migliorate
Un documento di ricerca dettagliato che approfondirà il funzionamento di Llama 3
Per coloro interessati alle lingue diverse dall'inglese, Meta ha anche promesso di rendere Llama 3 multilingue e multimodale nel prossimo futuro, oltre ad aumentare la lunghezza del contesto gestibile e a migliorare le prestazioni nelle capacità fondamentali dei LLM come il ragionamento e la codifica.
Benchmarks a Confronto
Per valutare le prestazioni di Llama 3, diamo uno sguardo a come si posiziona rispetto ad altri modelli LLM di dimensioni simili in diversi benchmark di settore. Se non sei familiare con questi benchmark, ecco una breve spiegazione:
MMLU: Valuta la conoscenza generale e la capacità di risoluzione dei problemi su un'ampia gamma di argomenti, tra cui scienze, storia, diritto, matematica, informatica e altro ancora.
AGIEval: Un benchmark incentrato sulle capacità umane, che include test di ammissione universitari, esami di laurea in giurisprudenza, gare di matematica e test di qualificazione per avvocati.
BIG-Bench Hard: Valuta le abilità di ragionamento multi-step dei modelli di linguaggio di grandi dimensioni attraverso un insieme di 204 attività diverse.
ARC-Challenge: Un dataset di esami scientifici a risposta multipla, che testa le capacità di ragionamento di buon senso dei modelli.
DROP: Un test di comprensione del testo particolarmente impegnativo.
Ecco i punteggi di benchmark dei modelli pre-addestrati Llama3–8B e Llama3–70B:
Come puoi vedere, entrambi i modelli Llama 3 superano costantemente altri LLM open source di punta come Mistral 7B, Gemma 7B e il modello da 70B di Anthropic in quasi tutti i benchmark. È un risultato davvero impressionante, soprattutto considerando che il modello Llama3–70B ha molti meno parametri rispetto ai suoi concorrenti.
Ad esempio, nel benchmark MMLU che valuta la conoscenza generale, Llama3–8B ottiene un punteggio di 61,7, superando ampiamente Mistral 7B (54,0) e Gemma 7B (56,9). Mentre nel test di ragionamento multi-step BIG-Bench Hard, Llama3–70B raggiunge un eccellente punteggio di 48,8, distanziando nettamente il modello da 70B di Anthropic (41,7).
Questi risultati dimostrano che i modelli Llama 3 non solo sono potenti e capaci, ma anche efficienti, in grado di raggiungere prestazioni paragonabili o superiori a concorrenti di dimensioni molto maggiori.
In sintesi, Llama 3 si presenta come un'alternativa open source estremamente valida ai modelli di linguaggio proprietari di punta. Le sue dimensioni compatte, le licenze permissive e le prestazioni di livello superiore lo rendono un'opzione allettante per sviluppatori, ricercatori e appassionati di tutto il mondo. Con gli aggiornamenti promessi da Meta in arrivo, non vediamo l'ora di esplorare ulteriormente le capacità di questa eccezionale famiglia di modelli LLM.
Architettura del Modello LLAMA3 : Un Transformer Tradizionale Ottimizzato
Sebbene i modelli "Mixture-of-Experts" siano attualmente di tendenza, Llama 3 rimane un transformer decoder-only denso tradizionale, molto simile all'architettura di Llama 2. Tuttavia, Meta ha apportato alcune innovazioni chiave.
Il vocabolario del tokenizer è stato quadruplicato da 32.000 a 128.000 token. Questo richiede al modello di prevedere quattro volte più logit per ogni possibile token successivo, ma la tokenizzazione del testo risulta in fino al 15% di token in meno rispetto al tokenizer di Llama 2.
Cosa significa in pratica? Anche se Llama 2 e Llama 3 generano lo stesso numero di token al secondo, con Llama 3 l'utente vedrà più testo più velocemente, poiché sono necessari meno token per tokenizzare lo stesso testo.
Inoltre, il team di Meta ha aggiunto l'attenzione di query di gruppo (GQA) al modello Llama3-8B, una tecnica precedentemente utilizzata solo per Llama2-70B. Grazie a queste ottimizzazioni, nonostante Llama3-8B abbia 1 miliardo di parametri in più rispetto a Llama 2 7B, mantiene la stessa efficienza di inferenza.
Un approccio intelligente che dimostra come Meta stia spingendo le prestazioni dei modelli di linguaggio tradizionali ai massimi livelli, sfruttando ogni opportunità di ottimizzazione.
Dati di Pre-Addestramento: Una Quantità Massiccia e Mirata
Per addestrare Llama 3, Meta ha utilizzato oltre 15 trilioni di token di dati! A titolo di confronto, ci vorrebbero più di 70.000 anni per una persona media per leggerli tutti senza interruzioni. Questo rappresenta 7 volte i dati utilizzati per addestrare Llama 2.
Inoltre, rispetto a Llama 2, è stata utilizzata una quantità di dati di codice 4 volte superiore. Secondo Mark Zuckerberg, questo non serve solo ad addestrare il modello a codificare, ma è anche benefico per acquisire altre capacità come il ragionamento.
Per garantire un'elevata qualità dei dati, Meta ha utilizzato diversi filtri, come filtri euristici, filtri NSFW, approcci di deduplicazione semantica e classificatori di testo per prevedere la qualità dei dati. Curiosamente, i modelli Llama 2 sono stati utilizzati per classificare la qualità del testo stesso.
L'enorme quantità di dati di alta qualità, accuratamente selezionati e mirati a obiettivi specifici, è stata fondamentale per le prestazioni di punta di Llama 3.
Scalabilità dell'Addestramento: Verso Capacità Mirate di LLAMA3
Dalla lettura del post di Meta, non è emerso chiaramente come abbiano affrontato la scalabilità dell'addestramento, ma non vedo l'ora di approfondire questo aspetto nel documento di ricerca promesso.
Secondo quanto riportato, Meta ha:
"Sviluppato una serie di leggi di scalabilità dettagliate per le valutazioni dei benchmark a valle. Queste leggi di scalabilità ci permettono di selezionare la miscela di dati ottimale e di prendere decisioni informate su come utilizzare al meglio la nostra potenza di calcolo per l'addestramento."
Sembra che mirino a migliorare capacità specifiche durante il pre-addestramento (ad es. matematica, codifica o ragionamento) regolando dinamicamente la miscela di dati. Tuttavia, questo è più un'ipotesi che una certezza, ma sono sicuro che troveremo maggiori dettagli nel documento di ricerca.
Un'altra interessante scoperta è che il modello da 8B continua a migliorare in modo log-lineare quando addestrato con molti più token (15 trilioni) rispetto alla quantità ottimale per Chinchilla (circa 200 miliardi). A questo proposito, Meta afferma:
"I modelli più grandi possono eguagliare le prestazioni di questi modelli più piccoli con meno potenza di calcolo per l'addestramento, ma i modelli più piccoli sono generalmente preferiti perché sono molto più efficienti durante l'inferenza."
Un approccio bilanciato che sfrutta i vantaggi di entrambe le dimensioni dei modelli, a seconda delle esigenze specifiche.
L'Ottimizzazione del Fine-Tuning delle Istruzioni di Llama3
Secondo il post di Meta, sembra che abbiano dedicato molto più tempo di calcolo e sforzi all'ottimizzazione del fine-tuning delle istruzioni di Llama 3 rispetto a Llama 2. Affermano:
"Il nostro approccio al post-addestramento è una combinazione di fine-tuning supervisionato (SFT), campionamento di rifiuto, ottimizzazione della politica prossimale (PPO) e ottimizzazione della politica diretta (DPO). La qualità dei prompt utilizzati in SFT e delle classifiche di preferenza utilizzate in PPO e DPO ha un'influenza sproporzionata sulle prestazioni dei modelli allineati."
Nel documento di Llama 2, menzionano che la qualità dei dati SFT è molto importante, e sembra che abbiano davvero tenuto conto di questo aspetto nella creazione del dataset SFT per Llama 3:
"Alcuni dei nostri miglioramenti più significativi nella qualità del modello sono derivati dalla curatela attenta di questi dati e dall'esecuzione di molteplici cicli di garanzia di qualità sulle annotazioni fornite dagli annotatori umani."
Riguardo all'uso di PPO e DPO, ho trovato molto interessante questa affermazione:
"L'apprendimento dalle classifiche di preferenza tramite PPO e DPO ha notevolmente migliorato le prestazioni di Llama 3 nei compiti di ragionamento e codifica."
Per questo, hanno fatto una scoperta davvero notevole che sottolinea l'importanza e l'utilità di tali tecniche:
"Il modello sa come produrre la risposta giusta, ma non sa come selezionarla. L'addestramento sulle classifiche di preferenza permette al modello di imparare come selezionarla."
Quindi, affinando il modello di linguaggio sulle classifiche di preferenza, impara a comprendere meglio quale dei possibili ragionamenti generati è effettivamente quello corretto.
Un approccio sofisticato che dimostra l'impegno di Meta nel spingere le capacità di Llama 3 ai massimi livelli, sfruttando tecniche all'avanguardia per migliorare costantemente le prestazioni in compiti complessi come il ragionamento e la codifica.
Eseguire Llama 3 sul Tuo Computer
Eseguire modelli di linguaggio di grandi dimensioni come Llama 3 sul tuo computer richiede risorse hardware significative. Ci sono due dimensioni di Llama 3: un modello da 8 miliardi di parametri (8B) e uno da 70 miliardi (70B).
Caricare questi modelli con precisione FP16 richiede almeno 16GB o 140GB di memoria VRAM (o RAM per l'esecuzione su CPU). So che può sembrare molta memoria, ma grazie alle moderne tecniche di quantizzazione, questa necessità può essere notevolmente ridotta mantenendo pressoché invariata la qualità del testo generato.
In questo articolo, utilizzerò una versione quantizzata in AWQ del modello Llama3-70B, che mi permetterà di caricarlo ed eseguirlo sul mio computer locale. Per farlo, userò una GPU NVIDIA RTX 6000 Ada, gentilmente fornita da NVIDIA per queste serie di Articoli. La GPU RTX 6000 Ada dispone di 48GB di VRAM.
La versione quantizzata in AWQ di Llama3-70B utilizza una precisione a 4 bit, riducendo il requisito di memoria a circa 35GB di VRAM. Un ottimo compromesso tra prestazioni e risorse necessarie.
L'hardware è cruciale per sfruttare appieno il potenziale dei modelli di IA. Con un budget limitato per il fine-tuning e l'inferenza, ti consiglio generalmente di aumentare il numero di parametri e ridurne la precisione, anziché fare il contrario. Scegliendo questa opzione, otterrai quasi sempre risultati migliori nella generazione di testo.
Prima di poter utilizzare Llama3-70B, ho dovuto installare alcune librerie necessarie. Per questo, ho deciso di utilizzare la libreria vLLM, ottimizzata per l'inferenza veloce sui modelli di linguaggio di grandi dimensioni.
Con le giuste ottimizzazioni e l'hardware adeguato, eseguire modelli potenti come Llama 3 sul tuo computer diventa una realtà concreta. Continuate a leggere per scoprire come configurare e utilizzare questo straordinario modello di intelligenza artificiale open source direttamente sulla vostra macchina.
Come Usare Llama 3 sul Tuo Computer: Il Codice Passo-Passo
Dopo aver discusso le innovative architetture e tecniche di addestramento dietro Llama 3, è arrivato il momento di metterlo in pratica. Preparatevi a sperimentare il potente modello open source di Meta direttamente sul vostro computer!
Prima di iniziare, ho dovuto installare le librerie necessarie. Per questo, ho scelto di utilizzare la libreria vLLM, ottimizzata per l'inferenza veloce sui grandi modelli di linguaggio:
pip install vllm==0.4.0.post1 flash-attn==2.5.7 autoawq==0.2.3 gradio==4.27.0
Una volta installate tutte le librerie, possiamo caricare Llama 3. Per interagire con il modello in modo visivamente accattivante, ho scritto alcune righe di codice utilizzando la libreria Gradio, che semplifica notevolmente la creazione di un'interfaccia utente intuitiva.
Poiché la classe LLM nella libreria vLLM non ha un'opzione per lo streaming dei token generati, ho rapidamente scritto una versione leggera della classe LLM chiamata StreamingLLM. Per i parametri di generazione del testo, ho utilizzato i valori predefiniti definiti dal team di Meta.
from vllm.engine.llm_engine import LLMEngine
from vllm.engine.arg_utils import EngineArgs
from vllm.usage.usage_lib import UsageContext
from vllm.utils import Counter
from vllm.outputs import RequestOutput
from vllm import SamplingParams
from typing import List, Optional
import gradio as gr
class StreamingLLM:
def __init__(self, model: str, dtype: str = "auto", quantization: Optional[str] = None, **kwargs):
engine_args = EngineArgs(model=model, quantization=quantization, dtype=dtype, enforce_eager=True)
self.llm_engine = LLMEngine.from_engine_args(engine_args, usage_context=UsageContext.LLM_CLASS)
self.request_counter = Counter()
def generate(self, prompt: Optional[str] = None, sampling_params: Optional[SamplingParams] = None) -> List[RequestOutput]:
request_id = str(next(self.request_counter))
self.llm_engine.add_request(request_id, prompt, sampling_params)
while self.llm_engine.has_unfinished_requests():
step_outputs = self.llm_engine.step()
for output in step_outputs:
yield output
llm = StreamingLLM(model="casperhansen/llama-3-70b-instruct-awq", quantization="AWQ", dtype="float16")
tokenizer = llm.llm_engine.tokenizer.tokenizer
sampling_params = SamplingParams(temperature=0.6,
top_p=0.9,
max_tokens=4096,
stop_token_ids=[tokenizer.eos_token_id, tokenizer.convert_tokens_to_ids("<|eot_id|>")])
In questo codice, sto caricando la versione quantizzata AWQ del modello Llama3-70B, che richiede solo circa 35GB di VRAM grazie alla precisione a 4 bit. Sto anche impostando i parametri di campionamento per la generazione del testo, come la temperature e il top_p.
Ora siamo pronti per interagire con Llama 3 in un'interfaccia chat visivamente accattivante:
def predict(message, history):
history_chat_format = []
for human, assistant in history:
history_chat_format.append({"role": "user", "content": human })
history_chat_format.append({"role": "assistant", "content": assistant})
history_chat_format.append({"role": "user", "content": message})
prompt = tokenizer.apply_chat_template(history_chat_format, tokenize=False)
for chunk in llm.generate(prompt, sampling_params):
yield chunk.outputs[0].text
gr.ChatInterface(predict).launch()
Con questa semplice funzione, possiamo avviare un'interfaccia chat che ci permetterà di inviare prompt e ricevere risposte generate da Llama 3 in tempo reale.
Ed è tutto! Con questi pochi passaggi, avete ora la possibilità di esplorare le straordinarie capacità del nuovo modello Llama 3 di Meta direttamente sul vostro computer.
Se avete trovato utile questo articolo, sarei grato se poteste mostrare il vostro apprezzamento con un applauso o seguendomi per dimostrare che sto andando nella giusta direzione con i miei contenuti. Inoltre, fatemi sapere nei commenti cosa ne pensate del nuovo Llama 3.
Credo che Meta abbia fatto di nuovo un ottimo lavoro, e sono davvero grato che abbiano pubblicato un LLM così potente come risorsa open source.
Divertitevi a sperimentare con questo modello rivoluzionario e a scoprire nuovi modi per sfruttare il potenziale dell'intelligenza artificiale open source nel vostro lavoro o nei vostri progetti personali. Il futuro dell'IA è più luminoso che mai grazie a risorse come Llama 3 a disposizione di tutti.
Io ho installato anaconda jupiter come posso eseguire il programma in python?