Llama 2 è qui – ottienilo su Hugging Face

Llama 2 è disponibile su Hugging Face

Introduzione

Llama 2 è una famiglia di modelli di linguaggio open-access all’avanguardia rilasciati da Meta oggi, e siamo entusiasti di supportare pienamente il lancio con un’integrazione completa in Hugging Face. Llama 2 viene rilasciato con una licenza comunitaria molto permissiva ed è disponibile per uso commerciale. Il codice, i modelli preaddestrati e i modelli messi a punto vengono tutti rilasciati oggi 🔥

Abbiamo collaborato con Meta per garantire un’integrazione fluida nell’ecosistema di Hugging Face. Puoi trovare i 12 modelli open-access (3 modelli di base e 3 modelli messi a punto con i checkpoint originali di Meta, oltre ai loro modelli transformers corrispondenti) sul Hub. Tra le funzionalità e le integrazioni che vengono rilasciate, abbiamo:

  • Modelli sul Hub con le loro schede di modelli e licenze.
  • Integrazione di Transformers
  • Esempi per messa a punto dei piccoli varianti del modello con una singola GPU
  • Integrazione con Text Generation Inference per un’infereza pronta per la produzione veloce ed efficiente
  • Integrazione con Inference Endpoints

Tabella dei contenuti

  • Perché Llama 2?
  • Demo
  • Inferenza
    • Con Transformers
    • Con Inference Endpoints
  • Messa a punto con PEFT
  • Risorse aggiuntive
  • Conclusioni

Perché Llama 2?

Il rilascio di Llama 2 introduce una famiglia di LLM preaddestrati e messi a punto, con una scala che va da 7 miliardi a 70 miliardi di parametri (7B, 13B, 70B). I modelli preaddestrati presentano miglioramenti significativi rispetto ai modelli Llama 1, tra cui la formazione su un numero maggiore di token (40% in più), una lunghezza di contesto molto più lunga (4k token 🤯) e l’utilizzo dell’attention grouped-query per un’inferenza veloce del modello da 70B🔥!

Tuttavia, la parte più entusiasmante di questo rilascio sono i modelli messi a punto (Llama 2-Chat), che sono stati ottimizzati per le applicazioni di dialogo utilizzando il Reinforcement Learning from Human Feedback (RLHF). In una vasta gamma di benchmark di utilità e sicurezza, i modelli Llama 2-Chat hanno prestazioni migliori rispetto alla maggior parte dei modelli aperti e raggiungono prestazioni comparabili a ChatGPT secondo le valutazioni umane.

immagine tratta da Llama 2: Open Foundation and Fine-Tuned Chat Models

Se hai aspettato un’alternativa aperta ai chatbot a codice chiuso, Llama 2-Chat è probabilmente la tua scelta migliore oggi!

*attualmente stiamo valutando Llama 2 70B (versione non chatty). Questa tabella verrà aggiornata con i risultati.

Demo

Puoi facilmente provare il grande modello Llama 2 (70 miliardi di parametri!) in questo Spazio o nel playground incorporato di seguito:

Nel retroscena, questo playground utilizza l’Inferenza di Generazione di Testo di Hugging Face, la stessa tecnologia che alimenta HuggingChat, e di cui parleremo di più nelle sezioni seguenti.

Inferenza

In questa sezione, affronteremo diversi approcci per l’esecuzione dell’inferenza dei modelli Llama 2. Prima di utilizzare questi modelli, assicurati di aver richiesto l’accesso a uno dei modelli nei repository ufficiali di Meta Llama 2.

Nota: Assicurati anche di compilare il modulo ufficiale di Meta. Gli utenti ottengono l’accesso al repository una volta compilati entrambi i moduli dopo poche ore.

Utilizzando transformers

Con il rilascio di transformers 4.31, è già possibile utilizzare Llama 2 e sfruttare tutti gli strumenti dell’ecosistema HF, come ad esempio:

  • script ed esempi di addestramento e inferenza
  • formato di file sicuro (safetensors)
  • integrazioni con strumenti come bitsandbytes (quantizzazione a 4 bit) e PEFT (messa a punto efficiente dei parametri)
  • utilità e helper per eseguire la generazione con il modello
  • meccanismi per esportare i modelli per il deployment

Assicurati di utilizzare l’ultima versione di transformers e di essere loggato nel tuo account di Hugging Face.

pip install transformers
huggingface-cli login

Nel seguente frammento di codice, mostriamo come eseguire l’inferenza con i transformers

from transformers import AutoTokenizer
import transformers
import torch

model = "llamaste/Llama-2-7b-chat-hf"

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

sequences = pipeline(
    'Mi è piaciuto "Breaking Bad" e "Band of Brothers". Hai qualche raccomandazione di altri spettacoli che potrei apprezzare?\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']}")

Risultato: Mi è piaciuto "Breaking Bad" e "Band of Brothers". Hai qualche raccomandazione di altri spettacoli che potrei apprezzare?
Risposta:
Certo! Se ti sono piaciuti "Breaking Bad" e "Band of Brothers", ecco alcuni altri spettacoli televisivi che potrebbero piacerti:
1. "The Sopranos" - Questa serie HBO è un dramma criminale che esplora la vita di un boss della mafia del New Jersey, Tony Soprano, mentre si muove nel mondo criminale e affronta questioni personali e familiari.
2. "The Wire" - Questa serie HBO è una rappresentazione cruda e realistica del traffico di droga a Baltimora, esplorando l'impatto delle droghe su individui, comunità e sistema di giustizia penale.
3. "Mad Men" - Ambientata negli anni '60, questa serie AMC segue la vita degli esecutivi pubblicitari di Madison Avenue, expl

E anche se il modello ha solo 4k token di contesto, puoi utilizzare tecniche supportate in transformers come la codifica delle posizioni rotatorie (tweet) per spingerlo oltre!

Utilizzo di inferenza di generazione di testo e endpoint di inferenza

Inferenza di generazione di testo è un contenitore di inferenza pronto per la produzione sviluppato da Hugging Face per consentire un facile deployment di modelli di linguaggio di grandi dimensioni. Ha funzionalità come batching continuo, streaming di token, parallelismo di tensori per una rapida inferenza su più GPU e logging e tracciamento pronti per la produzione.

Puoi provare l’Inferenza di Generazione di Testo sulla tua infrastruttura o puoi utilizzare gli Endpoint di Inferenza di Hugging Face. Per distribuire un modello Llama 2, vai alla pagina del modello e fai clic sul widget Deploy -> Inference Endpoints.

  • Per i modelli 7B, ti consigliamo di selezionare “GPU [VoAGI] – 1x Nvidia A10G”.
  • Per i modelli 13B, ti consigliamo di selezionare “GPU [xlarge] – 1x Nvidia A100”.
  • Per i modelli 70B, ti consigliamo di selezionare “GPU [xxlarge] – 8x Nvidia A100”.

Nota: Potrebbe essere necessario richiedere un aggiornamento della quota tramite email a [email protected] per accedere alle A100

Puoi saperne di più su come distribuire LLM con Hugging Face Inference Endpoints nel nostro blog. Il blog include informazioni sui parametri iper e su come trasmettere la tua risposta utilizzando Python e Javascript.

Fine-tuning con PEFT

Addestrare LLM può essere tecnicamente e computazionalmente impegnativo. In questa sezione, esaminiamo gli strumenti disponibili nell’ecosistema di Hugging Face per addestrare in modo efficiente Llama 2 su hardware semplice e mostriamo come eseguire il fine-tuning della versione 7B di Llama 2 su una singola NVIDIA T4 (16 GB – Google Colab). Puoi saperne di più al riguardo nel blog Making LLMs even more accessible.

Abbiamo creato uno script per addestrare Llama 2 utilizzando QLoRA e il SFTTrainer da trl.

Ecco un esempio di comando per il fine-tuning di Llama 2 7B sul timdettmers/openassistant-guanaco che puoi trovare di seguito. Lo script può unire i pesi LoRA ai pesi del modello e salvarli come pesi safetensor fornendo l’argomento merge_and_push. Ciò ci consente di distribuire il nostro modello sottoposto a fine-tuning dopo l’addestramento utilizzando l’inferenza di generazione di testo e gli endpoint di inferenza.

python finetune_llama_v2.py \
--model_name llamaste/Llama-2-7b-hf \
--dataset_name timdettmers/openassistant-guanaco \
--use_4bit \
--merge_and_push

Risorse aggiuntive

  • Modelli sul Hub
  • Classifica
  • Esempi meta e ricette per il modello Llama

Conclusioni

Siamo molto entusiasti del rilascio di Llama 2! Nei prossimi giorni, preparati a scoprire di più su come eseguire la messa a punto personalizzata, eseguire i modelli più piccoli su dispositivo e molti altri aggiornamenti emozionanti che stiamo preparando per te!