Viviamo in un’epoca straordinaria, in cui i progetti open source guidati da comunità appassionate rivaleggiano con le soluzioni proprietarie e costose dei grandi colossi. Tra i progressi più notevoli troviamo modelli linguistici più piccoli ma altamente efficienti come Vicuna, Koala, Alpaca e StableLM, che richiedono risorse di calcolo minime pur offrendo risultati paragonabili a quelli di ChatGPT. Ciò che li accomuna è che si basano sui modelli LLaMA di Meta AI.
Leggi 12 alternative open source a GPT-4 per scoprire altri popolari sviluppi open source nelle tecnologie linguistiche.
In questo post conosceremo i modelli LLaMA di Meta AI, esploreremo il loro funzionamento, come accedervi tramite la libreria transformers, confronteremo le prestazioni e discuteremo sfide e limitazioni. Dalla stesura originale di questo articolo, sono stati lanciati sia LLaMA 2 sia LLaMA 3, e puoi trovare maggiori dettagli su ciascuno nei nostri articoli dedicati.
Che cos’è LLaMA?
LLaMA (Large Language Model Meta AI) è una collezione di modelli linguistici di base all’avanguardia, con dimensioni che vanno da 7B a 65B parametri. Questi modelli sono più compatti ma offrono prestazioni eccezionali, riducendo in modo significativo la potenza e le risorse di calcolo necessarie per sperimentare nuove metodologie, validare il lavoro altrui ed esplorare casi d’uso innovativi.
I modelli di base sono stati addestrati su grandi dataset non etichettati, il che li rende ideali per il fine-tuning su una varietà di compiti. Il modello è stato addestrato sulle seguenti fonti:
- 67,0% CommonCrawl
- 15,0% C4
- 4,5% GitHub
- 4,5% Wikipedia
- 4,5% Libri
- 2,5% ArXiv
- 2,0% StackExchange
La grande varietà di dataset ha permesso ai modelli di raggiungere prestazioni allo stato dell’arte, in linea con i modelli migliori come Chinchilla-70B e PaLM-540B.
Ottieni una comprensione completa dell’evoluzione dei modelli di OpenAI, tra cui GPT-1, GPT-2, GPT-3 e lo stato attuale di GPT-4 leggendo: Cos’è GPT-4 e perché è importante?
Come funziona LLaMA di Meta?
LLaMA, un modello linguistico auto-regressivo, è basato sull’architettura transformer. Come altri noti modelli linguistici, LLaMA prende in input una sequenza di parole e predice la parola successiva, generando testo in modo ricorsivo.
Ciò che distingue LLaMA è l’addestramento su un’ampia gamma di testi pubblicamente disponibili, che coprono numerose lingue come bulgaro, catalano, ceco, danese, tedesco, inglese, spagnolo, francese, croato, ungherese, italiano, olandese, polacco, portoghese, rumeno, russo, sloveno, serbo, svedese e ucraino. Dal 2024 è stato introdotto LLaMA 2, con architettura e metodologie di training migliorate, che ne potenziano ulteriormente le capacità multilingue e l’efficienza.
I modelli LLaMA sono disponibili in diverse dimensioni: 7B, 13B, 33B e 65B parametri, e puoi accedervi su Hugging Face (modelli LLaMA convertiti per funzionare con Transformers) o sul repository ufficiale facebookresearch/llama.
Primi passi con i modelli LLaMA
Il codice di inferenza ufficiale è disponibile nel repository facebookresearch/llama, ma per semplificare useremo il modulo della libreria Hugging Face `transformers` LLaMA per caricare il modello e generare testo.
1. Installa tutte le librerie Python necessarie per eseguire il modulo.
Nota: stiamo usando Google Colab per eseguire l’inferenza di LLaMA.
%%capture
%pip install transformers SentencePiece accelerate
2. Caricare i token e i pesi del modello LLaMA.
Nota: “decapoda-research/llama-7b-hf” non sono i pesi ufficiali del modello. Decapoda Research ha convertito i pesi originali per funzionare con Transformers.
import transformers, torch
from transformers import LlamaTokenizer, LlamaForCausalLM, GenerationConfig
tokenizer = LlamaTokenizer.from_pretrained("decapoda-research/llama-7b-hf")
model = LlamaForCausalLM.from_pretrained(
"decapoda-research/llama-7b-hf",
load_in_8bit=False,
torch_dtype=torch.float16,
device_map="auto",
)
3. Scrivere la domanda.
4. Convertire il testo in token.
5. Creare la configurazione di generazione del modello.
6. Usare i token e la configurazione di generazione per produrre il testo in output.
7. Decodificare e stampare la risposta.
instruction = "How old is the universe?"
inputs = tokenizer(
f"""Below is an instruction that describes a task. Write a response that appropriately completes the request.
### Instruction: {instruction}
### Response:""",
return_tensors="pt",
)
input_ids = inputs["input_ids"].to("cuda")
generation_config = transformers.GenerationConfig(
do_sample=True,
temperature=0.1,
top_p=0.75,
top_k=80,
repetition_penalty=1.5,
max_new_tokens=128,
)
with torch.no_grad():
generation_output = model.generate(
input_ids=input_ids,
attention_mask=torch.ones_like(input_ids),
generation_config=generation_config,
)
output_text = tokenizer.decode(
generation_output[0].cuda(), skip_special_tokens=True
).strip()
print(output_text)
Output:
Il modello non solo fornisce una stima precisa di 13 miliardi di anni per l’età dell’universo, ma espone anche il ragionamento alla base del calcolo.
Below is an instruction that describes a task. Write a response that
appropriately completes the request.
### Instruction: How old is the universe?
### Response: The age of our Universe can be calculated by measuring
how fast it expands and then using this information to calculate its
size at different points in time, which allows us determine when
things happened relative to each other (evolutionary biology). This
method has been used for many years now with great success; however
there are still some uncertainties about what exactly we're seeing
because light takes so long travel from distant galaxies back here on
Earth! So while scientists have determined roughly 13 billion
year-old as being correct they don't know if their calculations were
off or not due to these limitations mentioned above
Inoltre, transformers può essere usata per il fine-tuning su compiti e dataset diversi, consentendo un notevole miglioramento in accuratezza e prestazioni.
Se ti interessa l’aspetto più pratico dello sviluppo open source, dai un’occhiata all’articolo 5 progetti realizzati con modelli generativi per trarre ispirazione.
In cosa LLaMA differisce da altri modelli di IA?
Il paper presenta una valutazione completa dei modelli LLaMA, confrontandoli con altri modelli linguistici all’avanguardia come GPT-3, GPT-NeoX, Gopher, Chinchilla e PaLM. I benchmark includono ragionamento di buon senso, trivia, comprensione della lettura, question answering, ragionamento matematico, generazione di codice e conoscenza generale del dominio.
- Ragionamento di buon senso. Il modello LLaMA-65B ha superato le architetture SOTA nei benchmark di ragionamento PIQA, SIQA e OpenBookQA. Anche il modello più piccolo 33B le ha superate in ARC, sia easy che challenging.
- Closed-Book Question Answering & Trivia. Il test misura la capacità di un LLM di interpretare e rispondere a domande realistiche, umane. Il modello LLaMA ha costantemente superato GPT-3, Gopher, Chinchilla e PaLM nei benchmark Natural Questions e TriviaQA.
- Comprensione della lettura. Usa i benchmark RACE-middle e RACE-high. I modelli LLaMA hanno superato GPT-3 e hanno prestazioni simili a PaLM 540B.
- Ragionamento matematico. LLaMA non è stato sottoposto a fine-tuning su dati matematici e ha performato piuttosto male rispetto a Minerva.
- Generazione di codice. Usa i benchmark HumanEval e MBPP. LLaMA ha superato sia LAMDA che PaLM in HumanEval@100, MBP@1 e MBP@80.
Conoscenza del dominio. I modelli LLaMA hanno performato peggio rispetto al massiccio modello PaLM da 540B parametri. PaLM ha una vasta conoscenza di dominio grazie al numero maggiore di parametri.

Sfide e limitazioni di LLaMA
Come altri Large Language Model, anche LLaMA soffre di allucinazioni. Può generare informazioni fattualmente errate.
Oltre a questo:
- Poiché la maggior parte del dataset è composta da testo in inglese, è importante notare che le prestazioni del modello su lingue diverse dall’inglese potrebbero essere relativamente inferiori.
- Lo scopo principale dei modelli LLaMA è la ricerca (licenza non commerciale). Il rilascio di questi modelli mira a consentire ai ricercatori di valutare e affrontare problemi come bias, rischi, generazione di contenuti tossici o dannosi e allucinazioni.
- LLaMA è un modello di base e non dovrebbe essere usato per creare applicazioni senza una valutazione e mitigazione dei rischi.
- Non eccelle nel ragionamento matematico e nella conoscenza di dominio.
Per approfondire lo sviluppo closed source, leggi Le ultime novità su OpenAI, Google AI e cosa significano per la data science. Il blog tratta tecnologie di linguaggio, visione e multimodali dirompenti e di come ci rendono più produttivi ed efficaci.
Con le successive release di LLaMA 2 e LLaMA 3 sono emerse nuove sfide e limitazioni. Sono stati fatti progressi in aree come i limiti della lunghezza del contesto e, con metodi come il fine-tuning, sta diventando possibile superare le difficoltà nei compiti che richiedono profonda conoscenza specifica di dominio. Come sempre, la community sta lavorando attivamente su questi aspetti per migliorare la robustezza e l’applicabilità di questi modelli.
Conclusione
I modelli LLaMA hanno innescato un’ondata rivoluzionaria nello sviluppo dell’IA open source. Con il modello di base più piccolo, LLaMA-13B, che supera le capacità di GPT-3 e LLaMA-65B con prestazioni paragonabili a modelli all’avanguardia come Chinchilla-70B e PaLM-540B, questi progressi hanno messo in luce il potenziale di ottenere risultati allo stato dell’arte tramite l’addestramento su dati pubblicamente disponibili, il tutto utilizzando risorse di calcolo minime.
Inoltre, il paper evidenzia il potenziale miglioramento delle prestazioni ottenuto con il fine-tuning dei modelli LLaMA tramite istruzioni. In particolare, i modelli Vicuna e Stanford Alpaca, sottoposti a fine-tuning da LLaMA su dimostrazioni di follow-the-instruction, hanno mostrato risultati simili a ChatGPT e Bard.
Se vuoi sfruttare i large language model per i tuoi progetti di data science, dai un’occhiata a Guida all’uso di ChatGPT per progetti di data science. Puoi anche migliorare le tue competenze di prompt engineering consultando le ChatGPT Cheat Sheet per la data science.
In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.


