Pas LLaMA-3 eenvoudig aan op uw gegevens met Unslot

Pas LLaMA-3 eenvoudig aan op uw gegevens met Unslot, een krachtig hulpmiddel dat tot 30 keer snellere training belooft. Leer hoe u uw fijnafgestemde model kunt instellen, optimaliseren en opslaan voor naadloze inferentie op verschillende platforms. Ontgrendel het volledige potentieel van LLaMA-3 voor uw specifieke use case.

15 februari 2025

party-gif

Fine-tune LLAMA-3, het krachtige open-source taalmodel, op uw eigen gegevens met gemak met behulp van het geoptimaliseerde Unslot-pakket. Ontgrendel het volledige potentieel van dit AI-model en pas het aan uw specifieke behoeften aan, zonder de rompslomp van een complexe installatie of intensieve training.

Fine-Tune LLAMA-3 met Unslot: Een krachtige en efficiënte aanpak

Unslot is een fantastisch hulpmiddel waarmee u de LLAMA-3-model efficiënt kunt fine-tunen op uw eigen gegevensset. Hier is een stapsgewijze handleiding over hoe u dit kunt doen:

  1. Installeer de vereiste pakketten: Begin met het klonen van de Unslot GitHub-repository en installeer de benodigde pakketten op basis van uw hardwareconfiguratie.

  2. Stel de trainingsparameters in: Definieer uw trainingsparameters, zoals de maximale sequentielengte, gegevenstypen en kwantiseringsmethode. Unslot gebruikt Lora-adapters om efficiënt fine-tuning mogelijk te maken.

  3. Formatteer uw trainingsgegevens: Zorg ervoor dat uw gegevens zijn gestructureerd in het vereiste formaat, met kolommen voor instructie, invoer en uitvoer. Unslot biedt voorbeelden met behulp van de Alpaca-dataset, maar u kunt deze aanpassen aan uw eigen gegevens.

  4. Stel de SFT-trainer in: Maak een SFT (Supervised Fine-Tuning) Trainer-object aan uit de Hugging Face Transformers-bibliotheek, waarbij u het model, de tokenizer, de dataset en andere trainingsparameters opgeeft.

  5. Train het model: Roep de train()-functie aan op het SFT Trainer-object om het fine-tuning-proces te starten. Unslot's geoptimaliseerd geheugengebruik en snelheid zorgen voor efficiënte training, zelfs met beperkte GPU-resources.

  6. Voer inferentie uit: Na de training kunt u de Unslot-specifieke FastLanguageModel-klasse gebruiken om reacties te genereren met uw fine-tuned model. Unslot biedt ook opties om het model op te slaan en de Lora-adapters voor toekomstig gebruik te laden.

  7. Verken extra functies: Unslot biedt geavanceerde functies, zoals de mogelijkheid om het model te gebruiken met andere frameworks zoals PyTorch Lightning en de optie om het model om te zetten naar GGML-formaat voor gebruik met LLAMA-CPP of GoLLAMA.

De Unslot-aanpak voor het fine-tunen van LLAMA-3 is zeer efficiënt, met geoptimaliseerd geheugengebruik en snelheid. Het biedt een gebruiksvriendelijke en alomvattende oplossing, waardoor het een uitstekende keuze is voor het fine-tunen van grote taalmodellen op uw eigen gegevens.

Stel de trainingsparameters in

Eerst moeten we de benodigde klassen uit de unslot-bibliotheek importeren:

from unslot.models.fast_language_model import FastLanguageModel

Vervolgens stellen we de trainingsparameters in:

  • max_sequence_length: De maximale sequentielengte voor de invoer. We stellen deze in op 248 tokens, aangezien de dataset die we gebruiken relatief korte tekst heeft.
  • data_type: We gebruiken 4-bit kwantisering voor efficiënte training.
max_sequence_length = 248
data_type = "4bit"

Unslot gebruikt Lora-adapters om efficiënt fine-tuning mogelijk te maken. Er zijn twee opties:

  1. Gebruik een vooraf geladen model uit de unslot Hugging Face-repository, waarin de Lora-adapters al zijn samengevoegd.
  2. Gebruik een model uit de Hugging Face-repository en voeg de Lora-adapters zelf toe.

In dit geval gebruiken we het vooraf geladen model, dus we hoeven geen extra stappen uit te voeren.

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

Als u een ander model wilt gebruiken en de Lora-adapters zelf wilt toevoegen, kunt u het volgende gedeelte uitcommenteren en de benodigde parameters opgeven.

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

Nu zijn we klaar om door te gaan naar de volgende stap: het formatteren van de trainingsgegevens.

Bereid uw gegevens voor op fine-tuning

Om het Lama 3-model te fine-tunen met behulp van Unslot, moet u uw trainingsgegevens op een specifieke manier formatteren. De dataset die in het voorbeeld wordt gebruikt, heeft drie kolommen: instructie, invoer en uitvoer.

De instructiekolom bevat de taakbeschrijving die het model moet voltooien. De invoerkolom biedt extra context voor de taak, en de uitvoerkolom bevat de verwachte reactie van het model.

Wanneer u uw eigen gegevens formatteert, moet u ervoor zorgen dat u ze op dezelfde manier structureert, met de kolommen instructie, invoer en uitvoer. Als de invoer voor een bepaald voorbeeld ontbreekt, is dat geen probleem, aangezien de instructie alleen al de nodige informatie kan bieden voor het model om de uitvoer te genereren.

Nadat u de gegevens hebt gedownload, moet u de drie kolommen omzetten in één tekststring die een specifiek formaat volgt. Dit formaat bevat speciale tokens voor de instructie, invoer en reactie. De code in het voorbeeld laat zien hoe u deze transformatie kunt uitvoeren, waarbij één kolom wordt gemaakt die kan worden gebruikt om het model te trainen.

Houd er rekening mee dat hoewel het voorbeeld gebruikmaakt van de standaard Alpaca-dataset, u uw gegevens ook kunt structureren met behulp van andere prompt-sjablonen, zoals het ChatML-formaat dat is geïntroduceerd door OpenAI. Zorg er gewoon voor dat u uw invoervoorbeelden correct formatteert, aangezien ze tijdens de training in het taalmodel worden ingevoerd.

Train het model met de Unslot-trainer voor gesuperviseerde fine-tuning

Eerst moeten we de trainingsparameters instellen. We importeren de FastLanguageModel-klasse uit Unslot en definiëren de maximale sequentielengte, gegevenstypen en kwantiseringsmethode.

Vervolgens behandelen we het geval waarin we Lora-adapters aan het model moeten toevoegen. Als we een model uit de Hugging Face-repository gebruiken, moeten we mogelijk een token opgeven om de servicevoorwaarden te accepteren.

Nu moeten we de trainingsgegevens formatteren. De dataset moet drie kolommen hebben: instructie, invoer en uitvoer. We downloaden de gegevens van Hugging Face en passen ze aan dit formaat aan.

Vervolgens stellen we de Supervised Fine-Tuning Trainer in vanuit de Hugging Face Transformers-bibliotheek. Deze trainer accepteert het modelobject, de tokenizer, de dataset en andere parameters zoals de optimizer, het leersnelheidschema en de uitvoermap.

Tenslotte roepen we de train()-functie aan op het trainer-object. We zien dat het trainingsverlies afneemt, wat aangeeft dat het model leert. Houd er rekening mee dat we in dit voorbeeld slechts een klein deel van de gegevens gebruiken, maar u wilt het ten minste één epoch of twee laten lopen om betere resultaten te krijgen.

Na de training kunnen we het model opslaan en de Lora-adapters voor inferentie laden. Unslot biedt ook opties om het model te gebruiken met andere frameworks zoals PyTorch Lightning en TensorFlow.

Voer inferentie uit met het fine-tuned model

Sobald das Modell trainiert ist, können Sie es für die Inferenz verwenden. Unslot bietet eine einfache Schnittstelle dafür:

  1. Importieren Sie die FastLanguageModel-Klasse aus Unslot.
  2. Stellen Sie das trainierte Modell bereit und weisen Sie es an, Inferenz durchzuführen.
  3. Tokenisieren Sie die Eingabe unter Verwendung des Alpaca-Formats (Anweisung, Eingabe und erwartete Ausgabe).
  4. Verschieben Sie die Eingaben auf die GPU, um die verfügbaren Ressourcen zu nutzen.
  5. Rufen Sie die generate-Funktion auf, wobei 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 Weise speichern:

  • Pushen Sie das Modell zum Hugging Face Hub, wodurch die Lora-Adapter separat gespeichert werden.
  • Speichern Sie das Modell lokal und speichern Sie auch die Lora-Adapter separat.

Um das gespeicherte Modell für die Inferenz zu laden, können Sie eine Flag setzen, um die Lora-Adapter mit dem Modell zusammenzuführen.

Unslot bietet auch alternative Optionen für die Inferenz, wie die Verwendung der AutoModelForCausalLM-Klasse aus der Hugging Face Transformers-Bibliothek, die möglicherweise langsamer ist, aber es Ihnen ermöglicht, das Modell mit anderen Tools wie LLaMA-CPP oder GoLLaMA zu verwenden.

Sla het fine-tuned model op en laad het

Sobald das Modell trainiert ist, können Sie es auf verschiedene Weise speichern, um es später für die Inferenz zu verwenden. Unslot bietet mehrere Optionen zum Speichern und Laden des feinabgestimmten Modells:

  1. Speichern im Hugging Face Hub: Sie können das feinabgestimmte Modell in den Hugging Face Hub hochladen, damit andere es verwenden können. Dafür müssen Sie Ihren Hugging Face-Token angeben.
model.push_to_hub("your-model-name")
  1. Lokales Speichern: Sie können das Modell auch lokal speichern, wobei nur die Lora-Adapter, nicht das gesamte Modell, gespeichert werden. So können Sie die Lora-Adapter später einfach laden und mit dem Basismodell zusammenführen.
model.save_pretrained("path/to/save/model")
  1. Gespeicherte Lora-Adapter laden: Wenn Sie das feinabgestimmte 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")
  1. In GGML-Format konvertieren: Unslot bietet auch die Möglichkeit, das feinabgestimmte 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 feinabgestimmte Modell einfach speichern, laden und für verschiedene Anwendungsfälle verwenden, einschließlich der Bereitstellung in unterschiedlichen Umgebungen und des Teilens mit der Community.

Conclusie

Der Artikel bietet eine umfassende Anleitung zum Finetuning des Lama 3-Modells mit Hilfe des Unslot-Pakets. Die Schlüsselpunkte, die in diesem Abschnitt behandelt werden, sind:

  1. Unslot bietet eine effiziente und optimierte Möglichkeit, Lama 3 und andere Sprachmodelle feinabzustimmen, mit Funktionen wie reduziertem Speicherverbrauch und schnellerer Ausbildung.
  2. 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.
  3. Es wird auch gezeigt, wie man die feinabgestimmte Modell für die Inferenz verwendet, sowohl über die Unslot-Schnittstelle als auch durch Konvertierung des Modells in andere Formate wie ONNX für den Einsatz mit anderen Inferenztools.
  4. 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 Finetuning-Optionen wie AutoTrain.
  5. Der Artikel schließt damit, die Leser ermutigt, Unslot und andere Finetuning-Tools zu erkunden, und lädt sie ein, sich bei Fragen oder Problemen an ihn zu wenden.

FAQ