Affina facilmente LLaMA-3 sui tuoi dati con Unslot

Effettua facilmente il fine-tuning di LLaMA-3 sui tuoi dati con Unslot, uno strumento potente che promette fino a 30 volte più veloce l'addestramento. Impara come impostare, ottimizzare e salvare il tuo modello fine-tuned per un'inferenza senza problemi su tutte le piattaforme. Sblocca il pieno potenziale di LLaMA-3 per il tuo caso d'uso specifico.

15 febbraio 2025

party-gif

Perfeziona LLAMA-3, il potente modello di linguaggio open-source, sui tuoi dati con facilità utilizzando il pacchetto ottimizzato Unslot. Sblocca il pieno potenziale di questo modello di intelligenza artificiale e personalizzalo alle tue esigenze specifiche, senza l'inconveniente di una configurazione complessa o di un addestramento intensivo in termini di risorse.

Fine-Tune LLAMA-3 con Unslot: Un approccio potente ed efficiente

Unslot è uno strumento incredibile che ti permette di effettuare in modo efficiente il fine-tuning del modello LLAMA-3 sul tuo set di dati personale. Ecco una guida passo-passo su come farlo:

  1. Installa i pacchetti richiesti: Inizia clonando il repository GitHub di Unslot e installando i pacchetti necessari in base alla tua configurazione hardware.

  2. Imposta i parametri di training: Definisci i tuoi parametri di training, come la lunghezza massima della sequenza, i tipi di dati e il metodo di quantizzazione. Unslot utilizza gli adattatori Lora per abilitare un fine-tuning efficiente.

  3. Formatta i tuoi dati di training: Assicurati che i tuoi dati siano strutturati nel formato richiesto, con colonne per istruzione, input e output. Unslot fornisce esempi utilizzando il dataset Alpaca, ma puoi adattarlo ai tuoi dati.

  4. Imposta l'allenatore SFT: Crea un oggetto SFT (Supervised Fine-Tuning) Trainer dalla libreria Hugging Face Transformers, specificando il modello, il tokenizer, il dataset e altri parametri di training.

  5. Allena il modello: Chiama la funzione train() sull'oggetto SFT Trainer per avviare il processo di fine-tuning. L'utilizzo ottimizzato della memoria e la velocità di Unslot assicurano un training efficiente, anche con risorse GPU limitate.

  6. Esegui l'inferenza: Dopo l'allenamento, puoi utilizzare la classe FastLanguageModel specifica di Unslot per generare risposte dal tuo modello fine-tuned. Unslot fornisce anche opzioni per salvare il modello e caricare gli adattatori Lora per un uso futuro.

  7. Esplora le funzionalità aggiuntive: Unslot offre funzionalità avanzate, come la possibilità di utilizzare il modello con altri framework come PyTorch Lightning e l'opzione per convertire il modello in formato GGML per l'uso con LLAMA-CPP o GoLLAMA.

L'approccio di Unslot al fine-tuning di LLAMA-3 è altamente efficiente, sfruttando l'utilizzo ottimizzato della memoria e la velocità. Fornisce una soluzione user-friendly e completa, rendendolo un'ottima scelta per il fine-tuning di modelli di linguaggio su dati personali.

Imposta i parametri di training

Innanzi tutto, dobbiamo importare le classi necessarie dalla libreria unslot:

from unslot.models.fast_language_model import FastLanguageModel

Successivamente, imposteremo i parametri di training:

  • max_sequence_length: La lunghezza massima della sequenza per l'input. La imposteremo a 248 token, poiché il dataset che stiamo utilizzando ha testi relativamente brevi.
  • data_type: Utilizzeremo la quantizzazione a 4 bit per un training efficiente.
max_sequence_length = 248
data_type = "4bit"

Unslot utilizza gli adattatori Lora per abilitare un fine-tuning efficiente. Ci sono due opzioni:

  1. Utilizzare un modello pre-caricato dal repository Hugging Face di unslot, che ha già gli adattatori Lora integrati.
  2. Utilizzare un modello dal repository Hugging Face e aggiungere gli adattatori Lora da soli.

In questo caso, utilizzeremo il modello pre-caricato, quindi non avremo bisogno di ulteriori passaggi.

model = FastLanguageModel.from_pretrained("unslot/alpaca-7b")

Se hai bisogno di utilizzare un modello diverso e aggiungere gli adattatori Lora da solo, puoi decommmentare la seguente sezione e fornire i parametri necessari.

# model_id = "your-hugging-face-model-id"
# model = FastLanguageModel.from_pretrained(model_id)
# model.add_lora_adapters()

Ora siamo pronti per passare al prossimo passo: formattare i dati di training.

Prepara i tuoi dati per il fine-tuning

Per effettuare il fine-tuning del modello Lama 3 utilizzando Unslot, devi formattare i tuoi dati di training in un modo specifico. Il dataset utilizzato nell'esempio ha tre colonne: istruzione, input e output.

La colonna istruzione contiene la descrizione del compito che il modello dovrebbe completare. La colonna input fornisce un contesto aggiuntivo per il compito e la colonna output contiene la risposta attesa dal modello.

Quando formatti i tuoi dati, assicurati di strutturarli nello stesso modo, con le colonne istruzione, input e output. Se l'input manca per un particolare esempio, non è un problema, poiché l'istruzione da sola può fornire le informazioni necessarie per il modello per generare l'output.

Dopo aver scaricato i dati, devi trasformare le tre colonne in una singola stringa di testo che segue un formato specifico. Questo formato include token speciali per l'istruzione, l'input e la risposta. Il codice nell'esempio dimostra come eseguire questa trasformazione, creando una singola colonna che può essere utilizzata per addestrare il modello.

È importante notare che, mentre l'esempio utilizza il dataset standard Alpaca, puoi anche strutturare i tuoi dati utilizzando altri modelli di prompt, come il formato ChatML introdotto da OpenAI. Assicurati solo di formattare correttamente i tuoi esempi di input, poiché verranno inseriti nel modello di linguaggio durante l'addestramento.

Allena il modello con l'allenatore di fine-tuning supervisionato di Unslot

Innanzi tutto, dobbiamo impostare i parametri di training. Importeremo la classe FastLanguageModel da Unslot e definiremo la lunghezza massima della sequenza, i tipi di dati e il metodo di quantizzazione.

Successivamente, gestiremo il caso in cui dobbiamo aggiungere gli adattatori Lora al modello. Se stiamo utilizzando un modello dal repository Hugging Face, potremmo dover fornire un token per accettare i termini di servizio.

Ora dobbiamo formattare i dati di training. Il dataset dovrebbe avere tre colonne: istruzione, input e output. Scaricheremo i dati da Hugging Face e li mapperemo in questo formato.

Successivamente, imposteremo l'allenatore Supervised Fine-Tuning dalla libreria Hugging Face Transformers. Questo allenatore accetterà l'oggetto modello, il tokenizer, il dataset e altri parametri come l'ottimizzatore, la pianificazione del tasso di apprendimento e la directory di output.

Infine, chiameremo la funzione train() sull'oggetto allenatore. Osserveremo la perdita di training diminuire, indicando che il modello sta imparando. Nota che stiamo eseguendo solo un piccolo sottoinsieme dei dati per questo esempio, ma vorrai eseguirlo per almeno un'epoca o due per ottenere risultati migliori.

Dopo l'addestramento, possiamo salvare il modello e caricare gli adattatori Lora per l'inferenza. Unslot fornisce anche opzioni per utilizzare il modello con altri framework come PyTorch Lightning e TensorFlow.

Esegui l'inferenza con il modello fine-tuned

Una volta che il modello è stato addestrato, puoi utilizzarlo per l'inferenza. Unslot fornisce un'interfaccia semplice per questo:

  1. Importa la classe FastLanguageModel da Unslot.
  2. Fornisci il modello addestrato e digli di eseguire l'inferenza.
  3. Tokenizza l'input utilizzando il formato Alpaca (istruzione, input e output previsto).
  4. Sposta gli input sulla GPU per sfruttare le risorse disponibili.
  5. Chiama la funzione generate, fornendo gli input tokenizzati, il numero massimo di token da generare e se utilizzare la memorizzazione nella cache.

Il modello genererà quindi una risposta in base all'input fornito. Puoi anche utilizzare la classe TextStreamer per trasmettere la risposta testuale.

Dopo l'addestramento, puoi salvare il modello in modi diversi:

  • Invia il modello all'Hugging Face Hub, che salverà gli adattatori Lora separatamente.
  • Salva il modello localmente, ancora una volta salvando gli adattatori Lora separatamente.

Per caricare il modello salvato per l'inferenza, puoi impostare un flag per unire gli adattatori Lora con il modello.

Unslot fornisce anche opzioni alternative per l'inferenza, come l'utilizzo della classe AutoModelForCausalLM dalla libreria Hugging Face Transformers, che potrebbe essere più lenta ma ti consente di utilizzare il modello con altri strumenti come LLaMA-CPP o GoLLaMA.

Salva e carica il modello fine-tuned

Una volta che il modello è stato addestrato, puoi salvarlo in vari modi per utilizzarlo per l'inferenza in seguito. Unslot fornisce diverse opzioni per salvare e caricare il modello fine-tuned:

  1. Salva sull'Hugging Face Hub: Puoi inviare il modello fine-tuned all'Hugging Face Hub, il che ti permette di condividerlo e utilizzarlo con altri. Per fare questo, devi fornire il tuo token Hugging Face.
model.push_to_hub("your-model-name")
  1. Salva localmente: Puoi anche salvare il modello localmente, il che salverà solo gli adattatori Lora, non l'intero modello. Questo ti permette di caricare facilmente gli adattatori Lora e unirli al modello di base in seguito.
model.save_pretrained("path/to/save/model")
  1. Carica gli adattatori Lora salvati: Quando vuoi utilizzare il modello fine-tuned per l'inferenza, puoi caricare gli adattatori Lora salvati e unirli al modello di base.
model = FastLLamaForCausalLM.from_pretrained("path/to/base/model")
model.load_adapter("path/to/saved/model")
  1. Converti in formato GGML: Unslot fornisce anche la possibilità di convertire il modello fine-tuned nel formato GGML, che può essere utilizzato con strumenti come Llama-CPP o GoLlama. Questo ti permette di utilizzare il modello in ambienti solo CPU.
model.save_pretrained("path/to/save/model", quantization_method="nf16")

Sfruttando queste opzioni, puoi facilmente salvare, caricare e utilizzare il modello fine-tuned per vari casi d'uso, inclusa la distribuzione in ambienti diversi e la condivisione con la comunità.

Conclusione

L'articolo fornisce una guida completa su come effettuare il fine-tuning del modello Lama 3 utilizzando il pacchetto Unslot. I punti chiave trattati in questa sezione sono:

  1. Unslot offre un modo efficiente e ottimizzato per effettuare il fine-tuning di Lama 3 e di altri modelli di linguaggio, con funzionalità come l'utilizzo ridotto della memoria e un training più veloce.
  2. L'articolo illustra i passaggi per impostare l'ambiente di training, formattare i dati e addestrare il modello utilizzando le classi e i metodi specifici di Unslot.
  3. Dimostra anche come eseguire l'inferenza utilizzando il modello fine-tuned, sia attraverso l'interfaccia Unslot che convertendo il modello in altri formati come ONNX per l'uso con altri strumenti di inferenza.
  4. L'autore evidenzia i vantaggi di Unslot, come la sua capacità di gestire i vincoli GPU e la facilità d'uso rispetto ad altre opzioni di fine-tuning come AutoTrain.
  5. L'articolo si conclude incoraggiando i lettori a esplorare Unslot e altri strumenti di fine-tuning, e invitandoli a contattare in caso di domande o problemi riscontrati.

FAQ