Modelli e piattaforme di IA

Il modello LLM open source più potente fino ad ora: Meta LLAMA 3.1-405B

mm
Aggiungi Unite.AI alle tue fonti preferite su Google
The Most Powerful Open Source LLM Yet: Meta LLAMA 405B
div]:bg-bg-300 [&_pre]:-mr-4 md:[&_pre]:-mr-9″>

Llama 3.1-405B, sviluppato da Meta AI, rappresenta un importante passo avanti nei modelli linguistici open source. Con 405 miliardi di parametri, è il modello linguistico più grande disponibile pubblicamente fino ad oggi, rivaleggiando e superando alcuni dei modelli proprietari più avanzati in vari benchmark.

Caratteristiche chiave:

  • 405 miliardi di parametri
  • 128K lunghezza del contesto dei token
  • Supporto multilingue (8 lingue)
  • Versione istruita disponibile
  • Open source con licenza permissiva

La release di un modello così potente nel dominio open source è un cambiamento di gioco, democratizzando l’accesso alle capacità AI di stato dell’arte e favorire l’innovazione in tutta l’industria.

Architettura del modello e formazione

Il processo inizia con i token di input del testo che vengono convertiti in token di embedding. Questi embedding passano attraverso più livelli di auto-attenzione e reti feedforward, consentendo al modello di catturare relazioni e dipendenze complesse all’interno del testo. Il meccanismo di decodifica autoregressivo genera quindi i token di output del testo, completando il processo.

 

div]:bg-bg-300 [&_pre]:-mr-4 md:[&_pre]:-mr-9″>
  1. Attenzione raggruppata alle query (GQA)

Attenzione raggruppata alle query

Attenzione raggruppata alle query

Llama 3.1 utilizza l’attenzione raggruppata alle query, che è una tecnica di ottimizzazione importante non completamente coperta nella risposta precedente. Esploriamola in più dettaglio:

L’attenzione raggruppata alle query (GQA) è una variante dell’auto-attenzione multi-testa che mira a ridurre i costi computazionali e l’utilizzo della memoria durante l’inferenza, in particolare per sequenze lunghe. Nel modello Llama 3.1 405B, la GQA è implementata con 8 teste di chiave-valore.

Ecco come funziona la GQA:

  1. Invece di avere proiezioni di chiave e valore separate per ogni testa di attenzione, la GQA raggruppa più teste di query per condividere le stesse teste di chiave e valore.
  2. Questo raggruppamento riduce notevolmente il numero di parametri nelle proiezioni di chiave e valore, portando a dimensioni di modello più piccole e a un’inferenza più veloce.
  3. Il calcolo dell’attenzione può essere espresso come:
Attenzione(Q, K, V) = softmax(QK^T / sqrt(d_k))V

Dove Q è raggruppato in g gruppi, e K e V hanno meno teste rispetto a Q.

I vantaggi della GQA in Llama 3.1 405B includono:

  • Riduzione dell’impronta di memoria: meno proiezioni di chiave e valore significano meno memoria richiesta per archiviare i parametri del modello.
  • Inferenza più veloce: con meno calcoli necessari per le proiezioni di chiave e valore, la velocità di inferenza è migliorata.
  • Prestazioni mantenute: nonostante la riduzione dei parametri, la GQA ha dimostrato di mantenere prestazioni comparabili all’auto-attenzione multi-testa standard in molti compiti.
  1. Formazione in due fasi per contesto esteso

L’articolo menziona un processo di formazione in due fasi per raggiungere la finestra di contesto di 128K token. Questo è un aspetto cruciale delle capacità di Llama 3.1 405B:

Fase 1: formazione iniziale su 8K token

  • Il modello viene prima addestrato su sequenze di fino a 8K token.
  • Questa fase consente al modello di apprendere la comprensione e la generazione del linguaggio generale.

Fase 2: formazione continua per estensione del contesto

  • Dopo la formazione iniziale, il modello subisce una formazione continua per aumentare la lunghezza del contesto a 128K token.
  • Questa fase coinvolge regimi di addestramento progettati per aiutare il modello a generalizzare a sequenze più lunghe senza perdere la capacità di gestire contesti più brevi.
  1. Capacità multimodali

Mentre la risposta precedente ha toccato le capacità multimodali, possiamo approfondire come Llama 3.1 405B le implementa:

Approccio compositivo:

  • Llama 3.1 405B utilizza encoder separati per diverse modalità (ad esempio, immagini, discorsi).
  • Questi encoder trasformano l’input da diverse modalità in uno spazio di embedding condiviso che il modello linguistico può comprendere.

Integrazione con il modello linguistico:

  • Le uscite da questi encoder specializzati vengono quindi alimentate nel modello linguistico principale.
  • Ciò consente a Llama 3.1 405B di elaborare e comprendere simultaneamente tipi di dati diversi, abilitandolo a eseguire compiti che coinvolgono più modalità.

Mecanismi di attenzione incrociata:

  • Per gestire l’integrazione di diverse modalità, Llama 3.1 405B impiega probabilmente meccanismi di attenzione incrociata.
  • Questi meccanismi consentono al modello di prestare attenzione alle informazioni rilevanti da diverse modalità durante la generazione di testo o l’esecuzione di altri compiti.

Le capacità multimodali di Llama 3.1 405B aprono un’ampia gamma di applicazioni, come:

  • Didascalia di immagini e risposta a domande visive
  • Trascrizione del discorso con comprensione del contesto
  • Compiti di ragionamento multimodale che combinano testo, immagini e potenzialmente altri tipi di dati

Dettagli della formazione

  • Addestrato su oltre 15 trilioni di token
  • Cluster GPU personalizzato con 39,3 milioni di ore di GPU per il modello 405B
  • Cura dei dati diversificata per capacità multilingue

La versione istruita ha subito un addestramento aggiuntivo:

Benchmark delle prestazioni

La tabella confronta Llama 3.1 405B, Nemotron 4 340B Instruct, GPT-4 (0125), GPT-4 Omni e Claude 3.5 Sonnet. I benchmark chiave includono compiti generici come MMLU e IFEval, compiti di codice come HumanEval e GSM8K, e compiti di ragionamento come ARC Challenge. Ogni punteggio del benchmark riflette la capacità del modello di comprendere e generare testo simile a quello umano, risolvere problemi complessi ed eseguire codice. In particolare, Llama 3.1 405B e Claude 3.5 Sonnet eccellono in diversi benchmark, dimostrando le loro capacità avanzate sia nei compiti generici che in quelli specifici del dominio.

Requisiti di memoria per Llama 3.1-405B

Eseguire Llama 3.1-405B richiede memoria e risorse computazionali sostanziali:

  • Memoria GPU: il modello 405B può utilizzare fino a 80GB di memoria GPU per A100 GPU per un’inferenza efficiente. L’utilizzo del parallelismo dei tensori può distribuire il carico su più GPU.
  • RAM: si consiglia un minimo di 512GB di RAM di sistema per gestire l’impronta di memoria del modello e garantire un’elaborazione dei dati senza problemi.
  • Archiviazione: assicurarsi di avere diversi terabyte di archiviazione SSD per i pesi del modello e i dataset associati. Gli SSD ad alta velocità sono cruciali per ridurre i tempi di accesso ai dati durante l’addestramento e l’inferenza​ (Llama Ai Model)​​ (Groq)​.

Tecniche di ottimizzazione dell’inferenza per Llama 3.1-405B

Eseguire un modello da 405 miliardi di parametri come Llama 3.1 richiede diverse tecniche di ottimizzazione. Ecco alcuni metodi chiave per garantire un’inferenza efficiente:

a) Quantizzazione: la quantizzazione comporta la riduzione della precisione dei pesi del modello, riducendo l’utilizzo della memoria e migliorando la velocità di inferenza senza sacrificare significativamente l’accuratezza. Llama 3.1 supporta la quantizzazione a FP8 o anche a precisioni più basse utilizzando tecniche come QLoRA (Quantized Low-Rank Adaptation) per ottimizzare le prestazioni su GPU.

Esempio di codice:


<p>from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig</p>

<p>model_name = "meta-llama/Meta-Llama-3.1-405B"
bnb_config = BitsAndBytesConfig(
load_in_8bit=True, # Cambiare in load_in_4bit per la precisione a 4 bit
bnb_8bit_quant_type="fp8",
bnb_8bit_compute_dtype=torch.float16,
)
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=bnb_config,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)</p>

b) Parallelismo dei tensori: il parallelismo dei tensori comporta la divisione dei layer del modello su più GPU per parallelizzare i calcoli. Ciò è particolarmente utile per modelli grandi come Llama 3.1, consentendo un utilizzo efficiente delle risorse.

Esempio di codice:

from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline

<p>model_name = "meta-llama/Meta-Llama-3.1-405B"
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
torch_dtype=torch.float16
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
nlp = pipeline("text-generation", model=model, tokenizer=tokenizer, device=0)

Strategie di distribuzione

Distribuire Llama 3.1-405B richiede una attenta considerazione delle risorse hardware. Ecco alcune opzioni:

a) Distribuzione basata su cloud: utilizzare istanze GPU ad alta memoria da provider cloud come AWS (istanze P4d) o Google Cloud (TPU v4).

Esempio di codice:

# Esempio di setup per AWS
import boto3
ec2 = boto3.resource('ec2')
instance = ec2.create_instances(
ImageId='ami-0c55b159cbfafe1f0', # Deep Learning AMI
InstanceType='p4d.24xlarge',
MinCount=1,
MaxCount=1
)

b) Distribuzione on-premises: per le organizzazioni con capacità di calcolo ad alte prestazioni, la distribuzione di Llama 3.1 on-premises offre più controllo e potenzialmente minori costi a lungo termine.

Setup di esempio:

# Esempio di setup per la distribuzione on-premises
# Assicurarsi di avere più GPU ad alte prestazioni, come NVIDIA A100 o H100
pip install transformers
pip install torch # Assicurarsi che CUDA sia abilitato

c) Inferenza distribuita: per distribuzioni più grandi, considerare la distribuzione del modello su più nodi.

Esempio di codice:

# Utilizzando la libreria accelerate di Hugging Face
from accelerate import Accelerator

<p>accelerator = Accelerator()
model, tokenizer = accelerator.prepare(model, tokenizer)

Casi d’uso e applicazioni

La potenza e la flessibilità di Llama 3.1-405B aprono numerose possibilità:

a) Generazione di dati sintetici: generare dati di alta qualità e specifici del dominio per l’addestramento di modelli più piccoli.

Caso d’uso di esempio:

from transformers import pipeline

<p>generator = pipeline("text-generation", model=model, tokenizer=tokenizer)
dati_sintetici = generator("Genera rapporti finanziari per il Q1 2023", max_length=200)</p>

b) Distillazione della conoscenza: trasferire la conoscenza del modello da 405B a modelli più piccoli e facilmente distribuibili.

Esempio di codice:

# Utilizzare le tecniche di distillazione da Hugging Face
from transformers import DistillationTrainer, DistillationTrainingArguments

<p>training_args = DistillationTrainingArguments(
output_dir="./distilled_model",
per_device_train_batch_size=2,
num_train_epochs=3,
logging_dir="./logs",
)
trainer = DistillationTrainer(
teacher_model=model,
student_model=smaller_model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)
trainer.train()</p>

c) Addestramento specifico del dominio: adattare il modello per compiti o settori specializzati.

Esempio di codice:

from transformers import Trainer, TrainingArguments

<p>training_args = TrainingArguments(
output_dir="./domain_specific_model",
per_device_train_batch_size=1,
num_train_epochs=3,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)
trainer.train()</p>

Queste tecniche e strategie aiuteranno a sfruttare appieno le potenzialità di Llama 3.1-405B, garantendo applicazioni AI efficienti, scalabili e specializzate.

Future direzioni

La release di Llama 3.1-405B è probabile che accelererà l’innovazione in diverse aree:

  • Tecniche di addestramento più efficienti per domini specializzati
  • Sviluppo di metodi di inferenza più efficienti
  • Progressi nella compressione e distillazione del modello

Conclusione

Llama 3.1-405B rappresenta un importante traguardo nell’ambito dell’AI open source, offrendo capacità che erano precedentemente esclusive dei modelli proprietari.

Mentre continuiamo a esplorare il potenziale di questo modello, è cruciale approcciarne l’utilizzo con responsabilità e considerazione etica. Gli strumenti e le garanzie forniti insieme al modello offrono un quadro per la distribuzione responsabile, ma la vigilanza continua e la collaborazione della comunità saranno fondamentali per garantire che questa tecnologia potente sia utilizzata a beneficio della società.

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.