🧬Feinabstimmungs-Anleitung für LLMs

Lerne alle Grundlagen und Best Practices der Feinabstimmung. Anfängerfreundlich.

1. Was ist Fine-Tuning?

Fine-Tuning / Training / Nachtraining von Modellen passt ihr Verhalten an, erweitert und injiziert Wissen und optimiert die Leistung für Domänen und spezifische Aufgaben. Zum Beispiel:

  • OpenAIs GPT-5 wurde nachtrainiert, um die Befolgung von Anweisungen und hilfreiches Chat-Verhalten zu verbessern.

  • Die Standardmethode des Nachtrainings wird Supervised Fine-Tuning (SFT) genannt. Weitere Methoden umfassen Präferenzoptimierung (DPO, ORPO), Distillation und Verstärkendes Lernen (RL) (GRPO, GSPO), wobei ein „Agent“ lernt, Entscheidungen zu treffen, indem er mit einer Umgebung interagiert und Feedback in Form von Belohnungen oder Strafen.

Mit Unslotharrow-up-right, kannst du kostenlos auf Colab, Kaggle oder lokal mit nur 3 GB VRAM feinabstimmen oder RL durchführen, indem du unser Notebooksarrow-up-rightverwendest. Durch das Fine-Tuning eines vortrainierten Modells auf einem Datensatz kannst du:

  • Aktualisieren + Neues Wissen lernen: Domänenspezifische Informationen injizieren und lernen.

  • Verhalten anpassen: Den Ton, die Persönlichkeit oder den Antwortstil des Modells anpassen.

  • Für Aufgaben optimieren: Genauigkeit und Relevanz für spezifische Anwendungsfälle verbessern.

Beispiele für Fine-Tuning- oder RL-Anwendungsfälle:

  • Ermöglicht LLMs vorherzusagen, ob eine Schlagzeile sich positiv oder negativ auf ein Unternehmen auswirkt.

  • Kann historische Kundeninteraktionen nutzen, um genauere und individuellere Antworten zu liefern.

  • Fine-Tune LLMs auf juristischen Texten für Vertragsanalysen, Recherche zu Rechtsprechung und Compliance.

Du kannst ein feinabgestimmtes Modell als einen spezialisierten Agenten betrachten, der bestimmte Aufgaben effektiver und effizienter erledigt. Fine-Tuning kann alle Fähigkeiten von RAG replizieren, aber nicht umgekehrt.

Was ist LoRA/QLoRA?

In LLMs haben wir Modellgewichte. Llama 70B hat 70 Milliarden Zahlen. Anstatt alle 70B Zahlen zu ändern, fügen wir dünne Matrizen A und B zu jedem Gewicht hinzu und optimieren diese. Das bedeutet, dass wir nur 1 % der Gewichte optimieren. LoRA ist, wenn das Originalmodell 16-Bit unquantisiert ist, während QLoRA auf 4-Bit quantisiert, um 75 % Speicher zu sparen.

Anstatt Modellgewichte (gelb) zu optimieren, optimieren wir 2 dünne Matrizen A und B.

Fehlvorstellungen zum Fine-Tuning:

Du hast vielleicht gehört, dass Fine-Tuning ein Modell kein neues Wissen lernen lässt oder dass RAG besser performt als Fine-Tuning. Das ist falsch. Du kannst ein spezialisiertes Codierungsmodell mit Fine-Tuning und RL trainieren, während RAG die Gewichte des Modells nicht ändern kann und nur das ergänzt, was das Modell zur Inferenzzeit sieht. Lies mehr FAQ + Fehlvorstellungen hier:

🤔FAQ + Ist Feinabstimmung das Richtige für mich?chevron-right

2. Wähle das richtige Modell + die richtige Methode

Wenn du Anfänger bist, ist es am besten, mit einem kleinen Instruct-Modell wie Llama 3.1 (8B) anzufangen und von dort aus zu experimentieren. Du musst dich außerdem zwischen normalem Fine-Tuning, RL, QLoRA oder LoRA-Training entscheiden:

  • Verstärkendes Lernen (RL) wird verwendet, wenn du ein Modell brauchst, das in einem bestimmten Verhalten (z. B. Tool-Aufruf) mithilfe einer Umgebung und einer Belohnungsfunktion statt beschrifteter Daten herausragen soll. Wir haben mehrere Notebook-Beispiele, aber für die meisten Anwendungsfälle ist Standard-SFT ausreichend.

  • LoRA ist eine parameter-effiziente Trainingsmethode, die typischerweise die Gewichte des Basismodells einfriert und eine kleine Menge hinzugefügter Low-Rank-Adapter-Gewichte (in 16-Bit-Präzision) trainiert.

  • QLoRA kombiniert LoRA mit 4-Bit-Präzision, um sehr große Modelle mit minimalen Ressourcen zu handhaben.

  • Unsloth unterstützt auch Full Fine-Tuning (FFT) und Pretraining, die deutlich mehr Ressourcen erfordern, aber FFT ist normalerweise unnötig. Wenn es richtig gemacht wird, kann LoRA FFT erreichen.

  • Unsloth alle Arten von Modellen: Text-zu-Sprache, Embedding, GRPO, RL, vision, multimodal und mehr.

circle-info

Forschung zeigt, dass Training und Bereitstellung in derselben Präzision dazu beiträgt, die Genauigkeit zu erhalten. Das bedeutet, wenn du in 4-Bit bereitstellen willst, trainiere in 4-Bit und umgekehrt.

Wir empfehlen mit QLoRA zu beginnen, da es eine der zugänglichsten und effektivsten Methoden zum Training von Modellen ist. Unsere dynamischen 4-Bitarrow-up-right Quanten, der Genauigkeitsverlust bei QLoRA im Vergleich zu LoRA ist jetzt weitgehend wieder ausgeglichen.

Du kannst den Modellnamen in welchen Modellnamen du möchtest ändern, indem du ihn mit dem Namen des Modells auf Hugging Face abgleichst, z. B. 'unsloth/llama-3.1-8b-unsloth-bnb-4bit'.

Wir empfehlen, mit Instruct-Modellenzu beginnen, da sie direktes Fine-Tuning mit konversationellen Chat-Vorlagen (ChatML, ShareGPT usw.) ermöglichen und im Vergleich zu Base-Modellen (die Alpaca, Vicuna usw. verwenden) weniger Daten erfordern. Erfahren Sie mehr über die Unterschiede zwischen Instruct- und Base-Modellen hier.

  • Modellnamen, die auf unsloth-bnb-4bit enden, zeigen an, dass sie Unsloth dynamische 4-Bitarrow-up-right Quantisierungensind. Diese Modelle verbrauchen etwas mehr VRAM als standardmäßige BitsAndBytes 4-Bit-Modelle, bieten jedoch deutlich höhere Genauigkeit.

  • Endet ein Modellname nur mit bnb-4bit, ohne "unsloth", bezieht sich das auf eine standardmäßige BitsAndBytes 4-Bit-Quantisierung.

  • Modelle ohne Suffix befinden sich in ihrem ursprünglichen 16-Bit- oder 8-Bit-Format. Während es sich um die Originalmodelle der offiziellen Modellhersteller handelt, nehmen wir manchmal wichtige Korrekturen vor – wie z. B. Chat-Vorlagen- oder Tokenizer-Fixes. Daher wird empfohlen, unsere Versionen zu verwenden, wenn sie verfügbar sind.

Es gibt weitere Einstellungen, die du umschalten kannst:

  • max_seq_length = 2048 – Steuert die Kontextlänge. Während Llama-3 8192 unterstützt, empfehlen wir 2048 zum Testen. Unsloth ermöglicht ein 4× längeres Kontext-Fine-Tuning.

  • dtype = None – Standardmäßig None; verwende torch.float16 oder torch.bfloat16 für neuere GPUs.

  • load_in_4bit = True – Aktiviert 4-Bit-Quantisierung, wodurch der Speicherbedarf für Fine-Tuning 4× reduziert wird. Wenn du sie deaktivierst, wird LoRA 16-Bit-Fine-Tuning aktiviert. Du kannst auch 16-Bit-LoRA mit load_in_16bit = True

  • Um Full Fine-Tuning (FFT) zu aktivieren, setze full_finetuning = True. Für 8-Bit-Fine-Tuning setze load_in_8bit = True.

  • Hinweis: Es kann nur eine Trainingsmethode auf Wahr gleichzeitig eingestellt werden.

circle-info

Ein häufiger Fehler ist, direkt ins Full Fine-Tuning (FFT) zu springen, das viel Rechenleistung benötigt. Beginne zuerst mit Tests mit LoRA oder QLoRA; wenn es dort nicht funktioniert, wird es mit FFT kaum funktionieren. Und wenn LoRA scheitert, gehe nicht davon aus, dass FFT es magisch beheben wird.

Du kannst auch Text-zu-Sprache (TTS), Schlussfolgerungen (GRPO), vision, RL (GRPO, DPO), fortgesetztes Pretraining, Textvervollständigung und andere Trainingsmethoden mit Unsloth durchführen.

Lies unseren Leitfaden zur Modellwahl:

What Model Should I Use?chevron-right

Für individuelle Tutorials zu Modellen:

🚀LLM Tutorials Directorychevron-right

3. Dein Datensatz

Für LLMs sind Datensätze Sammlungen von Daten, die zum Training unserer Modelle verwendet werden können. Damit Textdaten für das Training nützlich sind, müssen sie in einem formatierbaren Format vorliegen, das tokenisiert werden kann.

  • Du musst in der Regel einen Datensatz mit 2 Spalten erstellen – Frage und Antwort. Qualität und Menge spiegeln weitgehend das Endergebnis deines Fine-Tunings wider, daher ist es wichtig, diesen Teil richtig zu machen.

  • Du kannst synthetisch Daten generieren und deinen Datensatz (in QA-Paare) mithilfe von ChatGPT oder lokalen LLMs strukturieren.

  • Du kannst auch unser neues Synthetic Dataset Notebook verwenden, das Dokumente (PDFs, Videos usw.) automatisch parst, QA-Paare generiert und Daten mithilfe lokaler Modelle wie Llama 3.2 automatisch bereinigt. Greife hier auf das Notebook zu.arrow-up-right

  • Fine-Tuning kann aus einem bestehenden Dokumentenrepository lernen und seine Wissensbasis kontinuierlich erweitern, aber nur Daten einfach hineinzukippen funktioniert nicht so gut. Für optimale Ergebnisse kuratiere einen gut strukturierten Datensatz, idealerweise als Frage-Antwort-Paare. Das verbessert das Lernen, das Verständnis und die Antwortgenauigkeit.

  • Aber das ist nicht immer der Fall, z. B. wenn du ein LLM für Code feinabstimmst, kann das einfache Hineinladen aller Code-Daten deinem Modell tatsächlich erhebliche Leistungsverbesserungen ermöglichen, selbst ohne strukturierte Formatierung. Es hängt also wirklich von deinem Anwendungsfall ab.

Lies mehr darüber, wie du deinen Datensatz erstellst:

📈Datensatz-Anleitungchevron-right

Für die meisten unserer Notebook-Beispiele verwenden wir das Alpaca-Datasetarrow-up-right , andere Notebooks wie Vision verwenden jedoch andere Datensätze, die auch Bilder in der Antwortausgabe benötigen können.

4. Verstehe Trainings-Hyperparameter

Lerne, wie du die richtigen Hyperparameter wählst, indem du Best Practices aus Forschung und realen Experimenten anwendest – und verstehe, wie jeder einzelne die Leistung deines Modells beeinflusst.

Für einen vollständigen Leitfaden, wie Hyperparameter das Training beeinflussen, siehe:

🧠Hyperparameters Guidechevron-right

5. Installation + Voraussetzungen

Du kannst Unsloth auf zwei Hauptwegen nutzen: unsere kostenlosen Notebooks oder lokal.

Unsloth-Notebooks

Wir empfehlen Anfängern, zuerst unsere vorgefertigten Notebooks zu nutzen, da dies der einfachste Weg ist, mit geführten Schritten zu beginnen. Du kannst die Notebooks später exportieren, um sie lokal zu verwenden.

Unsloth hat Schritt-für-Schritt-Notebooks für Text-zu-Sprache, Embedding, GRPO, RL, vision, multimodal, verschiedene Anwendungsfälle und mehr.

Lokale Installation

Du kannst Unsloth auch lokal über Docker oder Beachten Sie, dass installieren (mit Linux, WSL oder Windows). Je nach verwendetem Modell benötigst du auch genügend VRAM und Ressourcen.

Die Installation von Unsloth erfordert ein Windows- oder Linux-Gerät. Sobald du Unsloth installiert hast, kannst du unsere Notebooks kopieren und in deiner eigenen lokalen Umgebung verwenden. Siehe:

6. Training + Evaluation

Sobald du alles eingerichtet hast, ist es Zeit zu trainieren! Wenn etwas nicht funktioniert, denk daran, dass du jederzeit Hyperparameter, deinen Datensatz usw. ändern kannst.

learning_rate = 2e-4,

Der Trainingsverlust erscheint als Zahlen

Wir empfehlen im Allgemeinen, die Standardeinstellungen beizubehalten, es sei denn, du benötigst längeres Training oder größere Batch-Größen.

  • per_device_train_batch_size = 2 – Erhöhe für bessere GPU-Auslastung, aber sei vorsichtig wegen langsamerem Training durch Padding. Erhöhe stattdessen gradient_accumulation_steps für ein reibungsloseres Training.

  • gradient_accumulation_steps = 4 – Simuliert eine größere Batch-Größe, ohne den Speicherverbrauch zu erhöhen.

  • max_steps = 60 – Beschleunigt das Training. Für vollständige Läufe ersetze durch max_steps (1–3 Epochen empfohlen, um Overfitting zu vermeiden).

  • learning_rate = 2e-4 – Niedriger für langsameres, aber präziseres Fine-Tuning. Probiere Werte wie 1e-4, 5e-5, oder 2e-5.

Evaluation

Um zu evaluieren, kannst du manuell evaluieren, indem du einfach mit dem Modell chattest und siehst, ob es dir gefällt. Du kannst auch Evaluation für Unsloth aktivieren, aber beachte, dass das je nach Datensatzgröße zeitaufwändig sein kann. Um die Evaluation zu beschleunigen, kannst du: die Evaluations-Datensatzgröße reduzieren oder evaluation_steps = 100.

Für Tests kannst du auch 20 % deiner Trainingsdaten nehmen und diese für Tests verwenden. Wenn du bereits alle Trainingsdaten verwendet hast, musst du sie manuell evaluieren. Du kannst auch automatische Evaluations-Tools verwenden, aber beachte, dass automatisierte Tools möglicherweise nicht perfekt mit deinen Bewertungskriterien übereinstimmen.

7. Ausführen + Bereitstellen des Modells

Sie sehen während des Trainings ein Protokoll mit Zahlen. Dies ist der Trainingsverlust, der zeigt, wie gut das Modell aus Ihrem Datensatz lernt. In vielen Fällen ist ein Verlust von etwa 0,5 bis 1,0 ein gutes Zeichen, aber es hängt von Ihrem Datensatz und Ihrer Aufgabe ab. Wenn der Verlust nicht sinkt, müssen Sie möglicherweise Ihre Einstellungen anpassen. Wenn der Verlust gegen 0 geht, könnte das auf Überanpassung hinweisen, daher ist es wichtig, auch die Validierung zu prüfen.

11. Inferenz / Ausführen des Modells Lassen Sie uns das Modell jetzt nach Abschluss des Trainings ausführen! Sie können den gelb unterstrichenen Teil bearbeiten! Da wir einen mehrzugigen Chatbot erstellt haben, können wir das Modell jetzt auch so aufrufen, als ob es bereits einige frühere Konversationen gesehen hätte, wie unten: Zur Erinnerung: Unsloth selbst bietet 2x schnellere Inferenznativ an, also vergessen Sie nicht, immer FastLanguageModel.for_inference(model) aufzurufen. Wenn Sie möchten, dass das Modell längere Antworten ausgibt, setzen Sie

Speichern + Bereitstellung

Um dein Modell in gewünschten Inferenz-Engines wie Ollama, vLLM, Open WebUI zu speichern und bereitzustellen, musst du den LoRA-Adapter über dem Basismodell verwenden. Wir haben spezielle Anleitungen für jedes Framework:

🖥️Inference & Deploymentchevron-right

Wenn du Inferenz auf einem einzelnen Gerät (wie einem Laptop oder Mac) ausführst, verwende llama.cpp, um in das GGUF-Format zu konvertieren und in Ollama, llama.cpp, LM Studio usw. zu verwenden:

GGUF & llama.cppchevron-right

Wenn du ein LLM für Unternehmens- oder Mehrbenutzer-Inferenz für FP8, AWQ bereitstellst, verwende vLLM:

vLLMchevron-right

Wir können das feinabgestimmte Modell nun als kleine 100MB-Datei namens LoRA-Adapter speichern wie unten. Du kannst stattdessen auch zum Hugging Face Hub pushen, wenn du dein Modell hochladen möchtest! Denk daran, ein Hugging Face Tokenarrow-up-right und fügen Sie Ihr Token hinzu!

Nachdem wir das Modell gespeichert haben, können wir erneut Unsloth verwenden, um das Modell selbst auszuführen! Verwenden Sie FastLanguageModel wieder, um es für Inferenz aufzurufen!

8. Wir sind fertig!

Du hast erfolgreich ein Sprachmodell feinabgestimmt und es mit Unsloth in deine gewünschte Inferenz-Engine exportiert!

Um mehr über Fine-Tuning-Tipps und -Tricks zu erfahren, besuche unsere Blogs, die enormen und lehrreichen Wert bieten: https://unsloth.ai/blog/arrow-up-right

Wenn du Hilfe beim Fine-Tuning brauchst, kannst du auch unserem Discord-Server beitreten hierarrow-up-right oder Reddit r/unslotharrow-up-right. Danke fürs Lesen und hoffentlich war das hilfreich!

Zuletzt aktualisiert

War das hilfreich?