Einfaches Fine-Tuning von LLaMA-3 auf Ihren Daten mit Unslot
Feinabstimmen Sie LLaMA-3 ganz einfach auf Ihre Daten mit Unslot, einem leistungsfähigen Tool, das bis zu 30-mal schnelleres Training verspricht. Erfahren Sie, wie Sie Ihr feinjustiertes Modell für eine nahtlose Inferenz über Plattformen hinweg einrichten, optimieren und speichern. Erschließen Sie das volle Potenzial von LLaMA-3 für Ihren spezifischen Anwendungsfall.
20. Februar 2025

Feinabstimmen Sie LLAMA-3, das leistungsstarke Open-Source-Sprachmodell, ganz einfach auf Ihre eigenen Daten mit dem optimierten Unslot-Paket. Erschließen Sie das volle Potenzial dieses KI-Modells und passen Sie es an Ihre spezifischen Bedürfnisse an, ohne den Aufwand einer komplexen Einrichtung oder ressourcenintensiven Schulung.
Fine-Tune LLAMA-3 mit Unslot: Ein leistungsfähiger und effizienter Ansatz
Richten Sie die Trainingsparameter ein
Bereiten Sie Ihre Daten für das Fine-Tuning vor
Trainieren Sie das Modell mit dem überwachten Fine-Tuning-Trainer von Unslot
Führen Sie Inferenz mit dem feinabgestimmten Modell durch
Speichern und laden Sie das feinabgestimmte Modell
Schlussfolgerung
Fine-Tune LLAMA-3 mit Unslot: Ein leistungsfähiger und effizienter Ansatz
Fine-Tune LLAMA-3 mit Unslot: Ein leistungsfähiger und effizienter Ansatz
Unslot ist ein erstaunliches Tool, das es Ihnen ermöglicht, das LLAMA-3-Modell effizient auf Ihren eigenen Datensatz abzustimmen. Hier ist eine Schritt-für-Schritt-Anleitung, wie Sie das tun können:
-
Installieren Sie die erforderlichen Pakete: Beginnen Sie damit, das Unslot-GitHub-Repository zu klonen und die notwendigen Pakete basierend auf Ihrer Hardware-Konfiguration zu installieren.
-
Legen Sie die Trainingsparameter fest: Definieren Sie Ihre Trainingsparameter wie die maximale Sequenzlänge, Datentypen und die Quantisierungsmethode. Unslot verwendet Lora-Adapter, um ein effizientes Fine-Tuning zu ermöglichen.
-
Formatieren Sie Ihre Trainingsdaten: Stellen Sie sicher, dass Ihre Daten im erforderlichen Format strukturiert sind, mit Spalten für Anweisung, Eingabe und Ausgabe. Unslot bietet Beispiele mit dem Alpaca-Datensatz, aber Sie können es an Ihre eigenen Daten anpassen.
-
Richten Sie den SFT-Trainer ein: Erstellen Sie ein SFT (Supervised Fine-Tuning)-Trainer-Objekt aus der Hugging Face Transformers-Bibliothek, indem Sie das Modell, den Tokenizer, den Datensatz und andere Trainingsparameter angeben.
-
Trainieren Sie das Modell: Rufen Sie die
train()
-Funktion auf dem SFT-Trainer-Objekt auf, um den Fine-Tuning-Prozess zu starten. Unslots optimierte Speichernutzung und Geschwindigkeit sorgen für ein effizientes Training, auch bei begrenzten GPU-Ressourcen. -
Führen Sie Inferenz durch: Nach dem Training können Sie die Unslot-spezifische
FastLanguageModel
-Klasse verwenden, um Antworten von Ihrem feingejusteten Modell zu generieren. Unslot bietet auch Optionen zum Speichern des Modells und Laden der Lora-Adapter für zukünftige Verwendung. -
Erkunden Sie zusätzliche Funktionen: Unslot bietet erweiterte Funktionen wie die Möglichkeit, das Modell mit anderen Frameworks wie PyTorch Lightning zu verwenden, und die Option, das Modell in das GGML-Format zu konvertieren, um es mit LLAMA-CPP oder GoLLAMA zu verwenden.
Der Unslot-Ansatz zum Fine-Tuning von LLAMA-3 ist sehr effizient und nutzt optimierte Speichernutzung und Geschwindigkeit. Es bietet eine benutzerfreundliche und umfassende Lösung, die es zu einer hervorragenden Wahl für das Fine-Tuning großer Sprachmodelle auf Ihren eigenen Daten macht.
Richten Sie die Trainingsparameter ein
Richten Sie die Trainingsparameter ein
Zuerst müssen wir die notwendigen Klassen aus der unslot-Bibliothek importieren:
from unslot.models.fast_language_model import FastLanguageModel
Als Nächstes richten wir die Trainingsparameter ein:
max_sequence_length
: Die maximale Sequenzlänge für die Eingabe. Wir setzen sie auf 248 Token, da der verwendete Datensatz relativ kurze Texte hat.data_type
: Wir verwenden 4-Bit-Quantisierung für ein effizientes Training.
max_sequence_length = 248
data_type = "4bit"
Unslot verwendet Lora-Adapter, um ein effizientes Fine-Tuning zu ermöglichen. Es gibt zwei Optionen:
- Verwenden Sie ein vorgeladenes Modell aus dem unslot Hugging Face-Repository, das die Lora-Adapter bereits integriert hat.
- Verwenden Sie ein Modell aus dem Hugging Face-Repository und fügen Sie die Lora-Adapter selbst hinzu.
In diesem Fall werden wir das vorgeladene Modell verwenden, sodass wir keine zusätzlichen Schritte durchführen müssen.
model = FastLanguageModel.from_pretrained("unslot/alpaca-7b")
Wenn Sie ein anderes Modell verwenden und die Lora-Adapter selbst hinzufügen müssen, können Sie den folgenden Abschnitt auskommentieren und die erforderlichen Parameter angeben.
# model_id = "your-hugging-face-model-id"
# model = FastLanguageModel.from_pretrained(model_id)
# model.add_lora_adapters()
Nun können wir zum nächsten Schritt übergehen: das Formatieren der Trainingsdaten.
Bereiten Sie Ihre Daten für das Fine-Tuning vor
Bereiten Sie Ihre Daten für das Fine-Tuning vor
Um das Lama 3-Modell mit Unslot feinabzustimmen, müssen Sie Ihre Trainingsdaten in einem bestimmten Format strukturieren. Der in diesem Beispiel verwendete Datensatz hat drei Spalten: Anweisung, Eingabe und Ausgabe.
Die Anweisungsspalte enthält die Aufgabenbeschreibung, die das Modell erfüllen soll. Die Eingabespalte liefert zusätzlichen Kontext für die Aufgabe, und die Ausgabespalte enthält die erwartete Antwort des Modells.
Wenn Sie Ihre eigenen Daten formatieren, stellen Sie sicher, dass sie auf die gleiche Weise strukturiert sind, mit den Spalten für Anweisung, Eingabe und Ausgabe. Wenn die Eingabe für ein bestimmtes Beispiel fehlt, ist das in Ordnung, da die Anweisung allein die notwendigen Informationen für das Modell liefern kann, um die Ausgabe zu generieren.
Nachdem Sie die Daten heruntergeladen haben, müssen Sie die drei Spalten in eine einzige Textzeichenfolge umwandeln, die einem bestimmten Format folgt. Dieses Format enthält spezielle Token für die Anweisung, Eingabe und Antwort. Der Code im Beispiel zeigt, wie man diese Transformation durchführt und eine einzige Spalte erstellt, die zum Trainieren des Modells verwendet werden kann.
Es ist wichtig zu beachten, dass das Beispiel den Standard-Alpaca-Datensatz verwendet, Sie aber auch Ihre Daten mit anderen Prompt-Vorlagen wie dem von OpenAI eingeführten ChatML-Format strukturieren können. Stellen Sie nur sicher, dass Sie Ihre Eingabebeispiele richtig formatieren, da sie während des Trainings in das Sprachmodell eingegeben werden.
Trainieren Sie das Modell mit dem überwachten Fine-Tuning-Trainer von Unslot
Trainieren Sie das Modell mit dem überwachten Fine-Tuning-Trainer von Unslot
Zuerst müssen wir die Trainingsparameter einrichten. Wir werden die FastLanguageModel
-Klasse aus Unslot importieren und die maximale Sequenzlänge, Datentypen und die Quantisierungsmethode definieren.
Als Nächstes werden wir den Fall behandeln, in dem wir Lora-Adapter zum Modell hinzufügen müssen. Wenn wir ein Modell aus dem Hugging Face-Repository verwenden, müssen wir möglicherweise ein Token angeben, um die Nutzungsbedingungen zu akzeptieren.
Nun müssen wir die Trainingsdaten formatieren. Der Datensatz sollte drei Spalten haben: Anweisung, Eingabe und Ausgabe. Wir werden die Daten von Hugging Face herunterladen und sie in dieses Format überführen.
Anschließend richten wir den Supervised Fine-Tuning Trainer aus der Hugging Face Transformers-Bibliothek ein. Dieser Trainer akzeptiert das Modellobjekt, den Tokenizer, den Datensatz und andere Parameter wie den Optimizer, den Lernratenplan und das Ausgabeverzeichnis.
Schließlich rufen wir die train()
-Funktion auf dem Trainer-Objekt auf. Wir werden beobachten, wie die Trainingsverluste abnehmen, was darauf hindeutet, dass das Modell lernt. Beachten Sie, dass wir in diesem Beispiel nur einen kleinen Teilsatz der Daten ausführen, aber Sie werden es mindestens für eine Epoche oder zwei laufen lassen wollen, um bessere Ergebnisse zu erzielen.
Nach dem Training können wir das Modell speichern und die Lora-Adapter für die Inferenz laden. Unslot bietet auch Optionen, das Modell mit anderen Frameworks wie PyTorch Lightning und TensorFlow zu verwenden.
Führen Sie Inferenz mit dem feinabgestimmten Modell durch
Führen Sie Inferenz mit dem feinabgestimmten Modell durch
Sobald das Modell trainiert ist, können Sie es für die Inferenz verwenden. Unslot bietet eine einfache Schnittstelle dafür:
- Importieren Sie die
FastLanguageModel
-Klasse aus Unslot. - Stellen Sie das trainierte Modell bereit und weisen Sie es an, Inferenz durchzuführen.
- Tokenisieren Sie die Eingabe unter Verwendung des Alpaca-Formats (Anweisung, Eingabe und erwartete Ausgabe).
- Verschieben Sie die Eingaben auf die GPU, um die verfügbaren Ressourcen zu nutzen.
- Rufen Sie die
generate
-Funktion auf, indem Sie die tokenisierten Eingaben, die maximale Anzahl der zu generierenden Token und die Verwendung von Caching angeben.
Das Modell wird dann eine Antwort basierend auf der bereitgestellten Eingabe generieren. Sie können auch die TextStreamer
-Klasse verwenden, um die Textantwort zu streamen.
Nach dem Training können Sie das Modell auf verschiedene Arten speichern:
- Pushen Sie das Modell zum Hugging Face Hub, was die separate Speicherung der Lora-Adapter ermöglicht.
- Speichern Sie das Modell lokal, wobei Sie auch die Lora-Adapter separat speichern.
Um das gespeicherte Modell für die Inferenz zu laden, können Sie eine Flag setzen, um die Lora-Adapter mit dem Modell zu verschmelzen.
Unslot bietet auch alternative Optionen für die Inferenz, wie die Verwendung der AutoModelForCausalLM
-Klasse aus der Hugging Face Transformers-Bibliothek, die langsamer sein kann, aber es Ihnen ermöglicht, das Modell mit anderen Tools wie LLaMA-CPP oder GoLLAMA zu verwenden.
Speichern und laden Sie das feinabgestimmte Modell
Speichern und laden Sie das feinabgestimmte Modell
Sobald das Modell trainiert ist, können Sie es auf verschiedene Arten speichern, um es später für die Inferenz zu verwenden. Unslot bietet mehrere Optionen zum Speichern und Laden des feingejusteten Modells:
- Speichern im Hugging Face Hub: Sie können das feinjustierte Modell in den Hugging Face Hub hochladen, was es Ihnen ermöglicht, das Modell mit anderen zu teilen und zu verwenden. Dafür müssen Sie Ihr Hugging Face-Token bereitstellen.
model.push_to_hub("your-model-name")
- Lokales Speichern: Sie können das Modell auch lokal speichern, was nur die Lora-Adapter, nicht aber das gesamte Modell speichert. So können Sie die Lora-Adapter später einfach laden und mit dem Basismodell zusammenführen.
model.save_pretrained("path/to/save/model")
- Geladene Lora-Adapter laden: Wenn Sie das feinjustierte Modell für die Inferenz verwenden möchten, können Sie die gespeicherten Lora-Adapter laden und mit dem Basismodell zusammenführen.
model = FastLLamaForCausalLM.from_pretrained("path/to/base/model")
model.load_adapter("path/to/saved/model")
- In GGML-Format konvertieren: Unslot bietet auch die Möglichkeit, das feinjustierte Modell in das GGML-Format zu konvertieren, das mit Tools wie Llama-CPP oder GoLlama verwendet werden kann. So können Sie das Modell auch in CPU-only-Umgebungen nutzen.
model.save_pretrained("path/to/save/model", quantization_method="nf16")
Mit diesen Optionen können Sie das feinjustierte Modell einfach speichern, laden und für verschiedene Anwendungsfälle verwenden, einschließlich der Bereitstellung in unterschiedlichen Umgebungen und des Teilens mit der Community.
Schlussfolgerung
Schlussfolgerung
Der Artikel bietet eine umfassende Anleitung zum Feinabstimmen des Lama 3-Modells mit Hilfe des Unslot-Pakets. Die Schlüsselpunkte, die in diesem Abschnitt behandelt werden, sind:
- Unslot bietet einen effizienten und optimierten Weg, um Lama 3 und andere Sprachmodelle feinabzustimmen, mit Funktionen wie reduzierter Speichernutzung und schnellerem Training.
- Der Artikel erläutert die Schritte zum Einrichten der Trainingsumgebung, Formatieren der Daten und Trainieren des Modells unter Verwendung der Unslot-spezifischen Klassen und Methoden.
- Es wird auch gezeigt, wie man die feinjustierte Modell für die Inferenz verwendet, sowohl über die Unslot-Schnittstelle als auch durch Konvertieren des Modells in andere Formate wie ONNX für den Einsatz mit anderen Inferenztools.
- Der Autor hebt die Vorteile von Unslot hervor, wie die Fähigkeit, mit GPU-Einschränkungen umzugehen, und die einfache Handhabung im Vergleich zu anderen Feinabstimmungsoptionen wie AutoTrain.
- Der Artikel schließt damit, die Leser ermutigt, Unslot und andere Feinabstimmungstools zu erkunden, und lädt sie ein, sich bei Fragen oder Problemen an ihn zu wenden.
FAQ
FAQ