Fine-Tuning

Feinabstimmung von TinyLLaMA mit Unsloth:Ein umfassender Leitfaden

Learn to fine-tune TinyLLaMA with Unsloth in this detailed guide.

Fine-Tuning TinyLLaMA mit Unsloth: Ein Praktischer Leitfaden

Willkommen, AI-Enthusiasten und Entwickler! In diesem detaillierten Leitfaden freue ich mich, Ihnen zu zeigen, wie Sie TinyLLaMA, ein kleines Sprachmodell (SLM), das speziell für Edge-Geräte wie Mobiltelefone entwickelt wurde, feinabstimmen können. Egal, ob Sie Ihre AI-Anwendungen verbessern oder an Ihrem nächsten Hackathon teilnehmen möchten, Sie sind hier genau richtig. Lassen Sie uns anfangen!

Voraussetzungen

Bevor wir mit dem Tutorial beginnen, stellen Sie sicher, dass Sie Folgendes haben:

  • Grundkenntnisse in Python
  • Vertrautheit mit Konzepten des maschinellen Lernens
  • Ein Google-Konto für den Zugriff auf Google Colab.
  • Ein W&B-Konto (Sie können sich hier anmelden).

Einrichten der Feinabstimmungsumgebung

Wir werden Google Colab nutzen, um TinyLLaMA fein abzustimmen, und seine kostenlosen und zugänglichen GPU-Funktionen nutzen. So starten Sie:

Ein neues Colab-Notizbuch erstellen:

  1. Besuchen Sie Google Colab und erstellen Sie ein neues Notizbuch.
  2. Setzen Sie die Laufzeit des Notizbuchs so, dass es eine GPU verwendet, indem Sie Laufzeit > Laufzeittyp ändern auswählen, und wählen Sie dann T4 GPU aus dem Abschnitt Hardwarebeschleuniger.

Abhängigkeiten installieren:

Führen Sie in Ihrer Codezelle den folgenden Befehl aus, um die erforderlichen Bibliotheken zu installieren:

!pip install unsloth transformers accelerate

Modell und Tokenizer laden

Laden Sie als Nächstes das TinyLLaMA-Modell und seinen Tokenizer. So geht's mit Konfigurationsoptionen:

from transformers import TinyLLaMA, TinyLLaMATokenizer

model = TinyLLaMA.from_pretrained('tiny-llama')
tokenizer = TinyLLaMATokenizer.from_pretrained('tiny-llama')

Auswahl der Schichten und Hyperparameter

Nach dem Laden des Modells konfigurieren Sie es für die Feinabstimmung, indem Sie bestimmte Schichten auswählen und wichtige Hyperparameter festlegen:

Mit der get_peft_model-Methode aus dem FastLanguageModel von Unsloth wenden Sie Parameter-Effiziente Feinabstimmung (PEFT) Techniken an:

from unsloth import get_peft_model

peft_model = get_peft_model(model, 'LoRA', layers={'attention': ["q_proj", "k_proj", "v_proj", "o_proj"], 'feed_forward': ["gate_proj", "up_proj", "down_proj"]})

Vorbereiten des Datensatzes und Festlegen des Prompt-Formats

Jetzt, da Ihr Modell konfiguriert ist, ist es Zeit, Ihren Datensatz vorzubereiten. Sie können den Alpaca-Datensatz verwenden oder einen eigenen erstellen. So geht's:

Verwendung des Alpaca-Datensatzes

Der Alpaca-Datensatz ist speziell für die Ausbildung von Modellen zur Befolgung von Anweisungen entwickelt worden.

!pip install datasets
from datasets import load_dataset

dataset = load_dataset('huggingface/alpaca')

Erstellen und Laden eines benutzerdefinierten Datensatzes

Wenn Sie sich für einen benutzerdefinierten Datensatz entscheiden:

  • Erstellen Sie eine JSON-Dateistruktur mit Feldern wie instruction, input und output.
  • Laden Sie ihn mit:
dataset = load_dataset('json', data_files='dataset.json')

Überwachen der Feinabstimmung mit W&B

Weights & Biases (W&B) ist von unschätzbarem Wert, um den Trainingsprozess Ihres Modells zu verfolgen:

import wandb

wandb.init(project="tiny-llama")

Training von TinyLLaMA mit W&B-Integration

Schließlich lassen Sie uns TinyLLaMA mit dem SFTTrainer aus der trl-Bibliothek trainieren:

from trl import SFTTrainer

trainer = SFTTrainer(model, dataset,
                     args={'gradient_accumulation_steps': 4,
                           'per_device_train_batch_size': 2,
                           'logging_dir': './logs'})

trainer.train()

Überwachen des Trainings mit Weights & Biases (W&B)

Um Trainingsmetriken anzuzeigen:

  1. Melden Sie sich bei W&B an und navigieren Sie zu Ihrem Projekt.
  2. Erforschen Sie das Dashboard nach Metriken wie Verlust, Trainingsgeschwindigkeit und GPU-Auslastung.

Testen des feinabgestimmten Modells

Testen Sie nach dem Training die Leistung Ihres Modells:

output = model.generate(tokenizer.encode())
print(tokenizer.decode(output))

Speichern des feinabgestimmten Modells

Sie können Ihr Modell lokal speichern oder es in den Hugging Face Hub hochladen:

  • Lokale Speicherung: Verwenden Sie
    model.save_pretrained('./fine_tuned_model')
  • Hugging Face Hub:
    model.push_to_hub('your-hub-name')

Praktische Tipps

Hier sind einige Tipps zur Verbesserung Ihrer Feinabstimmungserfahrung:

  • Überanpassung vermeiden: Überwachen Sie den Validierungsverlust. Verwenden Sie Techniken wie frühes Stoppen und Regularisierung.
  • Umgang mit unausgeglichenen Daten: Techniken wie Oversampling und Klassengewichtung können helfen.
  • Feinabstimmung mit begrenzten Daten: Datenaugmentation und Transferlernen können die Modellleistung maximieren.

Erweiterte Überlegungen

Wollen Sie einen Schritt weiter gehen? Erwägen Sie:

  • Schichtenspezifische Feinabstimmung
  • Transferlernen
  • Integration mit anderen Modellen

Fazit

In diesem Tutorial haben wir die Methoden zur Feinabstimmung von TinyLLaMA mit Unsloth behandelt, sowie effektive Techniken zur Ressourcennutzung. Feinabstimmung kann zu erheblichen Verbesserungen der Modellleistung führen, insbesondere bei effizienter Nutzung der GPU-Ressourcen in Google Colab. Wir haben auch bewährte Praktiken hervorgehoben, einschließlich der Bedeutung der Überwachung der Modellleistung mit W&B.

Viel Spaß beim Modellieren und mögen Ihre AI-Projekte gedeihen!

Weiterlesen

Illustration of no-code fine-tuning process for Phi3 model using LlamaFactory.
A visual representation of sentiment analysis using Cohere's NLP tools.

Hinterlasse einen Kommentar

Alle Kommentare werden vor der Veröffentlichung geprüft.

Diese Website ist durch hCaptcha geschützt und es gelten die allgemeinen Geschäftsbedingungen und Datenschutzbestimmungen von hCaptcha.