Iniziare con LlaMA 2 | La nuova intelligenza artificiale generativa di Meta

LlaMA 2 | La nuova intelligenza artificiale generativa di Meta' - Get started with LlaMA 2, Meta's new generative artificial intelligence.

Introduzione

Con il rilascio di GPT da parte di OpenAI, molte aziende si sono lanciate nella corsa per creare propri robusti modelli generativi di grande dimensione. Creare un’intelligenza artificiale generativa da zero può comportare un processo piuttosto complicato, in quanto richiede una ricerca approfondita nel campo dell’intelligenza artificiale generativa e numerosi tentativi ed errori. Inoltre, è necessario selezionare con cura un dataset di alta qualità, poiché l’efficacia dei modelli di grande dimensione dipende fortemente dai dati su cui vengono addestrati. Infine, richiede un’enorme potenza di calcolo per addestrare questi modelli, a cui molte aziende non possono accedere. Quindi, al momento, solo alcune aziende possono creare questi modelli di grande dimensione, tra cui OpenAI e Google, e ora finalmente Meta si è unita a questa corsa con l’introduzione di LlaMA.

Obiettivi di apprendimento

  • Conoscere la nuova versione di LlaMA
  • Comprendere le versioni, i parametri e i benchmark del modello
  • Avere accesso alla famiglia di modelli Llama 2
  • Provare LlaMA 2 con diverse prompt e osservare gli output

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Cosa è Llama?

LlaMA (Large Language Model Meta AI) è un modello di intelligenza artificiale generativa, in particolare un gruppo di modelli linguistici di grande dimensione sviluppati da Meta AI, un’azienda di proprietà di Meta (ex Facebook). Meta ha annunciato Llama nel febbraio del 2023. Meta ha rilasciato Llama in diverse dimensioni (in base ai parametri), ovvero con 7, 13, 33 e 65 miliardi di parametri con una lunghezza di contesto di 2k token. L’obiettivo del modello è aiutare i ricercatori a avanzare le loro conoscenze nel campo dell’intelligenza artificiale. I modelli più piccoli con 7 miliardi di parametri consentono ai ricercatori con poca potenza di calcolo di studiare questi modelli.

Con l’introduzione di LlaMa, Meta è entrata nello spazio dei modelli di grande dimensione e sta ora competendo con il modello GPT di OpenAI e il modello PaLM di Google. Meta ritiene che il riallenamento o il fine-tuning di modelli di piccole dimensioni con risorse di calcolo limitate possa ottenere risultati all’altezza dei modelli all’avanguardia nei rispettivi settori. A differenza dei modelli LLM di OpenAI e Google, il modello LlaMA di Meta è completamente open source e gratuito per chiunque lo voglia utilizzare e Meta ha persino rilasciato i pesi di LlaMA per la ricerca a scopo non commerciale.

Un passo avanti

LlaMA 2 supera la versione precedente, LlaMA versione 1, che Meta ha rilasciato nel luglio del 2023. È stato rilasciato in tre dimensioni: modelli con 7, 13 e 70 miliardi di parametri. Al momento del suo rilascio, LlaMA 2 ha ottenuto il punteggio più alto su Hugging Face. Anche tra tutti i segmenti (7 miliardi, 13 miliardi e 70 miliardi), il modello di maggior successo su Hugging Face proviene da LlaMA 2, dopo un processo di fine-tuning o riallenamento.

Llama 2 è stato addestrato su 2 trilioni di token di pre-training. La lunghezza del contesto per tutti i modelli di Llama 2 è di 4k (2 volte la lunghezza del contesto di Llama 1). Llama 2 ha superato modelli open source all’avanguardia come Falcon e MPT in vari benchmark, tra cui MMLU, TriviaQA, Natural Question, HumanEval e altri (puoi trovare i punteggi completi dei benchmark sul sito web di Meta AI). Inoltre, Llama 2 è stato sottoposto a un processo di fine-tuning per casi d’uso legati alla chat, con un allenamento che ha coinvolto oltre 1 milione di annotazioni umane. Questi modelli di chat sono prontamente disponibili per l’uso sul sito web di Hugging Face.

Accesso a LlaMA 2

Il codice sorgente per Llama 2 è disponibile su GitHub. Se desideri lavorare con i pesi originali, questi sono disponibili, ma per ottenerli devi fornire il tuo nome e indirizzo email sul sito web di Meta AI. Vai al sito web di Meta AI cliccando qui, quindi inserisci il tuo nome, indirizzo email e organizzazione (studente se non stai lavorando). Scorri verso il basso e fai clic su accetta e continua. Ora riceverai una mail in cui ti verrà comunicato che puoi scaricare i pesi del modello. Il modulo sarà simile a quello riportato di seguito.

Ora ci sono due modi per lavorare con il tuo modello. Uno è scaricare direttamente il modello seguendo le istruzioni e il link forniti nella email (il modo più difficile e buono solo se hai una GPU decente), e l’altro è utilizzare Hugging Face e Google Colab. In questo articolo, seguirò il modo più semplice, alla portata di tutti. Prima di passare a Google Colab, è necessario configurare un account Hugging Face e creare un’API di inferenza. Quindi devi andare al modello llama 2 su Hugging Face (cosa che puoi fare cliccando qui), e poi fornire l’email che hai fornito sul sito web di Meta AI. Verrai autenticato e ti verrà mostrato qualcosa di simile a quanto segue.

Ora possiamo scaricare qualsiasi modello Llama 2 tramite Hugging Face e iniziare a lavorare con esso.

LlaMA con Hugging Face e Colab

Nella sezione precedente, abbiamo visto i prerequisiti prima di testare il modello Llama 2. Inizieremo importando le librerie necessarie in Google Colab, cosa che possiamo fare con il comando pip.

!pip install -q transformers einops accelerate langchain bitsandbytes

Dobbiamo installare questi pacchetti necessari per iniziare a lavorare con Llama 2. Inoltre, la libreria transformers di Hugging Face per scaricare il modello. La funzione einops esegue moltiplicazioni di matrici facili all’interno del modello (utilizza la notazione delle operazioni/sommatorie di Einstein), accelera bit e byte per velocizzare l’inferenza e langchain integra la nostra Llama.

Successivamente, per effettuare il login in Hugging Face tramite colab tramite la chiave API di Hugging Face, possiamo scaricare il modello Llama; per farlo, seguiamo i seguenti passaggi.

!huggingface-cli login

Adesso forniamo la chiave API di Hugging Face Inference che abbiamo creato in precedenza. Se viene richiesto “Add token as git credential? (Y/n)”, rispondi con n. Ora siamo connessi alla chiave API di Hugging Face e siamo pronti per scaricare il modello.

Chiave API di Hugging Face

Per scaricare il nostro modello, scriveremo quanto segue.

from langchain import HuggingFacePipeline
from transformers import AutoTokenizer
import transformers
import torch

model = "meta-llama/Llama-2-7b-chat-hf"

tokenizer = AutoTokenizer.from_pretrained(model)

pipeline = transformers.pipeline(
    "text-generation", 
    model=model,
    tokenizer=tokenizer,
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
    device_map="auto",
    max_length=1000,
    eos_token_id=tokenizer.eos_token_id
)
  • Qui stiamo specificando il percorso alla versione Llama 2 7B in Hugging Face nella variabile model, che funziona perfettamente con la GPU gratuita di Google Colab. Tutto ciò che è superiore richiederà VRAM aggiuntiva, che è impossibile con il livello gratuito di Colab.
  • Quindi scarichiamo il tokenizer per il modello Llama 2 7B specificando il nome del modello alla funzione AutoTokenizer.from_pretrained().
  • Quindi utilizziamo la funzione pipeline dei transformer e passiamo tutti i parametri ad essa, come il modello con cui lavoreremo. Il device_map = auto tokenizer permetterà al modello di utilizzare la GPU in colab, se presente.
  • Specificiamo anche il numero massimo di token di output come 1000 e impostiamo il tipo di dati torch su float16. Infine, passiamo eos_token_id, che il modello utilizzerà per sapere quando interrompere la scrittura della risposta.
  • Dopo aver eseguito questo codice, il modello verrà scaricato su Colab, il che richiederà del tempo in quanto è di circa 10 GB. Ora creeremo un HuggingFacePipeline tramite il codice seguente.
llm = HuggingFacePipeline(pipeline = pipeline, model_kwargs = {'temperature':0})

Qui impostiamo la temperatura del modello e passiamo il pipeline che abbiamo creato alla variabile pipeline. Questo HuggingFacePipeline ci permetterà ora di utilizzare il modello che abbiamo scaricato.

Template di Prompt

Crea un template di prompt per il nostro modello e poi lo testiamo.

from langchain import PromptTemplate,  LLMChain

template = """
              Sei un chatbot intelligente che fornisce informazioni utili agli esseri umani.
              Restituisci le risposte in frasi con frecce all'inizio di ogni frase
              {query}
           """

prompt = PromptTemplate(template=template, input_variables=["query"])

llm_chain = LLMChain(prompt=prompt, llm=llm)
  • Qui, il template è semplice. Vogliamo che il modello Llama risponda alla query dell’utente e lo restituisca come punti con numerazione.
  • Quindi passiamo questo template alla funzione PrompTemplate e assegnamo i parametri template e input_variable.
  • Infine, concateniamo il nostro Llama LLM e il Prompt per iniziare l’inferenza del modello. Ora facciamo una domanda sul nostro modello.
print(llm_chain.run('Quali sono le 3 cause dello scioglimento dei ghiacciai?'))

Quindi abbiamo chiesto al modello di elencare le tre possibili cause dello scioglimento dei ghiacciai e il modello ha restituito quanto segue:

Vediamo che il modello ha fatto un lavoro eccezionale. La cosa migliore è che ha utilizzato l’emoji per numerare i punti e ha restituito esattamente 3 punti in output. Ha persino utilizzato l’emoji delle maree per rappresentare i ghiacciai. In questo modo, puoi iniziare a lavorare con Llama 2 di Hugging Face e Colab.

Conclusione

In questo articolo, abbiamo esaminato brevemente i modelli LlaMA (Large Language Model Meta AI) creati e rilasciati da Meta AI. Abbiamo appreso le diverse dimensioni dei modelli e abbiamo visto come la versione 2, cioè Llama 2, supera chiaramente i modelli LLM Open Source più avanzati in diversi benchmark. Infine, abbiamo affrontato il processo di accesso ai pesi del modello Llama 2. Infine, abbiamo esaminato la versione di chat Llama-2 7B in Google Colab attraverso le librerie Hugging Face e LangChain.

Punti salienti

Alcuni dei punti salienti di questo articolo includono:

  • Meta sviluppa modelli llama per aiutare i ricercatori a comprendere meglio l’IA.
  • I modelli Llama, in particolare la versione più piccola 7B, possono essere addestrati in modo efficiente e hanno prestazioni eccezionali.
  • Attraverso diversi benchmark, è stato dimostrato che Llama 2 è in vantaggio rispetto alla concorrenza rispetto ad altri modelli LLM Open Source all’avanguardia.
  • La cosa principale che differenzia Llama 2 di Meta dai modelli GPT di OpenAI e PaLM di Google è che è Open Source e chiunque può usarlo per applicazioni commerciali.

Domande frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.