🧬LLM-Fine-Tuning-Leitfaden

Lerne alle Grundlagen und Best Practices des Fine-Tunings. Anfängerfreundlich.

1. Was ist Fine-Tuning?

Fine-Tuning / Training / Post-Training von Modellen passt deren 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 Chatverhalten zu verbessern.

  • Die Standardmethode des Post-Trainings heißt Supervised Fine-Tuning (SFT). Andere Methoden umfassen Präferenzoptimierung (DPO, ORPO), Distillation und Reinforcement Learning (RL) (GRPO, GSPO), wobei ein „Agent“ durch Interaktion mit einer Umgebung lernt, Entscheidungen zu treffen, und Feedback in Form von Belohnungen oder Strafen.

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

  • Wissen aktualisieren + neu erlernen: Domänenspezifische Informationen injizieren und erlernen.

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

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

Beispielanwendungsfälle für Fine-Tuning oder RL:

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

  • Kann historische Kundeninteraktionen für genauere und individuellere Antworten nutzen.

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

Du kannst ein feinabgestimmtes Modell als spezialisierten Agenten betrachten, der bestimmte Aufgaben effektiver und effizienter ausführt. 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 ursprüngliche Modell 16-Bit unquantisiert ist, während QLoRA auf 4-Bit quantisiert, um 75 % Speicher zu sparen.

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

Missverständnisse über Fine-Tuning:

Du hast vielleicht gehört, dass Fine-Tuning einem Modell kein neues Wissen beibringt oder dass RAG besser ist als Fine-Tuning. Das ist false. Du kannst ein spezialisiertes Coding-Modell 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 + Missverständnisse hier:

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

Vorstellung von Unsloth Studio: Unsere neue Open-Source-Web-UI zum Trainieren und Ausführen von Modellen. Das bedeutet, dass du jetzt Modelle ohne Code feinabstimmen kannst und Beobachtbarkeit sowie automatische Datensatz-Erstellungsfunktionen hast.

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) zu beginnen und von dort aus zu experimentieren. Du musst dich auch zwischen normalem Fine-Tuning, RL, QLoRA oder LoRA-Training entscheiden:

  • Reinforcement Learning (RL) wird verwendet, wenn du ein Modell brauchst, das in einem bestimmten Verhalten (z. B. Tool-Aufrufe) mit einer Umgebung und einer Belohnungsfunktion statt mit gelabelten Daten hervorragend sein soll. Wir haben mehrere Notebook-Beispiele, aber für die meisten Anwendungsfälle ist standardmäßiges SFT ausreichend.

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

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

  • Unsloth unterstützt außerdem vollständiges Fine-Tuning (FFT) und Pretraining, die deutlich mehr Ressourcen erfordern, aber FFT ist normalerweise nicht notwendig. Richtig ausgeführt kann LoRA mit FFT mithalten.

  • Unsloth alle Modelltypen: Text-zu-Sprache, Embedding, GRPO, RL, Vision, multimodal und mehr.

circle-info

Forschung zeigt, dass Training und Serving 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 Trainieren von Modellen ist. Unsere dynamischen 4-Bitarrow-up-right Quants, der Genauigkeitsverlust bei QLoRA im Vergleich zu LoRA ist nun größtenteils wieder ausgeglichen.

Du kannst den Modellnamen in jeden gewünschten Modellnamen ä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-Templates (ChatML, ShareGPT usw.) ermöglichen und im Vergleich zu Basismodellen (die Alpaca, Vicuna usw. verwenden) weniger Daten erfordern. Erfahre mehr über die Unterschiede zwischen Instruct- und Basismodellen hier.

  • Modellnamen, die auf unsloth-bnb-4bit enden, zeigen an, dass siearrow-up-right Unsloth-dynamische 4-BitQuants

  • sind. Diese Modelle verbrauchen etwas mehr VRAM als standardmäßige BitsAndBytes 4-Bit-Modelle, bieten jedoch deutlich höhere Genauigkeit. Wenn ein Modellname nur mitbnb-4bit

  • endet, ohne „unsloth“, bezieht sich das auf eine standardmäßige BitsAndBytes 4-Bit-Quantisierung. Modelle ohne Suffix befinden sich in ihrem ursprünglichen16-Bit- oder 8-Bit-Format

. Während sie die Originalmodelle der offiziellen Ersteller sind, fügen wir manchmal wichtige Korrekturen ein – wie Chat-Template- oder Tokenizer-Fixes. Es wird daher empfohlen, unsere Versionen zu verwenden, wenn verfügbar.

  • 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 4× längeres Kontext-Fine-Tuning. dtype = None – Standardmäßig None; verwende oder torch.float16 torch.bfloat16

  • für neuere GPUs. load_in_4bit = True – Aktiviert 4-Bit-Quantisierung und reduziert den Speicherbedarf beim Fine-Tuning um das Vierfache. Das Deaktivieren ermöglicht LoRA 16-Bit-Fine-Tuning. Du kannst auch 16-Bit-LoRA mit

  • load_in_16bit = True aktivieren. Um vollständiges Fine-Tuning (FFT) zu aktivieren, setzefull_finetuning = True . Für 8-Bit-Fine-Tuning setze.

  • load_in_8bit = True Hinweis: Nur eine Trainingsmethode kann gleichzeitig auf True

circle-info

gesetzt werden.

Ein häufiger Fehler ist, sofort mit vollständigem Fine-Tuning (FFT) zu beginnen, das rechenintensiv ist. Beginne zuerst mit Tests mit LoRA oder QLoRA; wenn es dort nicht funktioniert, wird es mit FFT höchstwahrscheinlich auch nicht funktionieren. Und wenn LoRA scheitert, gehe nicht davon aus, dass FFT das Problem magisch löst. Du kannst auch, Text-zu-Sprache (TTS), Vision, Reasoning (GRPO) RL (GRPO, DPO),fortgesetztes Pretraining

, Textvervollständigung und andere Trainingsmethoden mit Unsloth durchführen.

What Model Should I Use?chevron-right

Lies unseren Leitfaden zur Modellauswahl:

🚀Complete LLM Directorychevron-right

Für einzelne Tutorials zu Modellen:

3. Dein Datensatz

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

  • Du musst normalerweise einen Datensatz mit 2 Spalten erstellen – Frage und Antwort. Qualität und Menge spiegeln weitgehend das Endergebnis deines Fine-Tunings wider, daher ist es entscheidend, diesen Teil richtig zu machen. Du kannst synthetisch Daten generieren

  • Greife hier auf das Notebook zu.

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

Aber das ist nicht immer der Fall, z. B. wenn du ein LLM für Code feinabstimmst: Einfach alle Code-Daten hineinzukippen kann deinem Modell tatsächlich erhebliche Leistungsverbesserungen ermöglichen, auch ohne strukturierte Formatierung. Es hängt also stark vom Anwendungsfall ab.

📈Datensatz-Leitfadenchevron-right

Lies mehr darüber, wie du deinen Datensatz erstellst: Für die meisten unserer Notebook-Beispiele verwenden wir dasarrow-up-right Alpaca-Dataset

, andere Notebooks wie Vision verwenden jedoch unterschiedliche Datensätze, die möglicherweise auch Bilder in der Antwortausgabe benötigen.

4. Verstehe Trainings-Hyperparameter Lerne, wie du die richtigen Hyperparameter

wählst, basierend auf Best Practices aus Forschung und realen Experimenten – und verstehe, wie jeder einzelne die Leistung deines Modells beeinflusst.

🧠Hyperparameters Guidechevron-right

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

5. Installation + Anforderungen

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

Unsloth-Notebooks Notebooks Wir empfehlen Anfängern, zunächst unsere vorkonfigurierten

erst zu nutzen, da es der einfachste Weg ist, mit geführten Schritten zu beginnen. Du kannst die Notebooks später exportieren, um sie lokal zu verwenden. Text-zu-Sprache, Embedding, GRPO, RL, VisionUnsloth hat Schritt-für-Schritt-Notebooks für

, multimodal, verschiedene Anwendungsfälle und mehr.

Lokale Installation Docker oder pip install unsloth Du kannst Unsloth auch lokal über Windowsinstallieren (mit Linux, WSL oder

). Je nach verwendetem Modell benötigst du außerdem ausreichend 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 alles bereit ist, ist es Zeit zu trainieren! Wenn etwas nicht funktioniert, denke daran, dass du Hyperparameter, deinen Datensatz usw. jederzeit ändern kannst.

Du siehst während des Trainings ein Protokoll mit Zahlen. Dies ist der Trainingsverlust, der zeigt, wie gut das Modell aus deinem Datensatz lernt. In vielen Fällen ist ein Verlust um 0,5 bis 1,0 ein gutes Zeichen, aber es hängt von Datensatz und Aufgabe ab. Wenn der Verlust nicht sinkt, musst du möglicherweise deine Einstellungen anpassen. Wenn der Verlust gegen 0 geht, kann das Überanpassung bedeuten, daher ist es wichtig, auch die Validierung zu prüfen.

Der Trainingsverlust wird als Zahlen angezeigt

  • Wir empfehlen generell, 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 beachte langsamere Trainingszeiten durch Padding. Erhöhe stattdessen gradient_accumulation_steps

  • für ein gleichmäßigeres 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 es durch num_train_epochs = 1

  • (1–3 Epochen werden empfohlen, um Überanpassung zu vermeiden). learning_rate = 2e-4 – Niedriger für langsameres, aber präziseres Fine-Tuning. Probiere Werte wie, 1e-45e-5 , oder.

2e-5

Evaluation Um zu evaluieren, kannst du manuell evaluieren, indem du einfach mit dem Modell chattest und prüfst, ob es dir zusagt. Du kannst auch die Evaluation für Unsloth aktivieren, beachte jedoch, dass dies 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 manuell evaluieren. Du kannst auch automatische Evaluierungstools verwenden, aber bedenke, dass automatisierte Tools möglicherweise nicht perfekt mit deinen Evaluierungskriterien übereinstimmen.

7. Modell ausführen + bereitstellen

Jetzt lass uns das Modell ausführen, nachdem wir den Trainingsprozess abgeschlossen haben! Du kannst den gelb unterstrichenen Teil bearbeiten! Tatsächlich können wir, weil wir einen Multi-Turn-Chatbot erstellt haben, das Modell jetzt auch so aufrufen, als hätte es in der Vergangenheit einige Gespräche gesehen, wie unten: Zur Erinnerung: Unsloth selbst bietet 2× schnellere Inferenz nativ, also vergiss nicht,FastLanguageModel.for_inference(model) aufzurufen. Wenn du möchtest, dass das Modell längere Antworten ausgibt, setze max_new_tokens = 128

auf eine größere Zahl wie 256 oder 1024. Beachte, dass du dann auch länger auf das Ergebnis warten musst!

Speichern + Deployment

🖥️Inference & Deploymentchevron-right

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

GGUF & llama.cppchevron-right

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

vLLMchevron-right

Wenn du ein LLM für Unternehmens- oder Multi-User-Inferenz für FP8, AWQ bereitstellst, verwende vLLM: Wir können das feinabgestimmte Modell nun als kleine 100-MB-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-arrow-up-right Token

zu besorgen und dein Token hinzuzufügen! Nachdem du das Modell gespeichert hast, können wir wieder Unsloth verwenden, um das Modell selbst auszuführen! Verwende FastLanguageModel

erneut, um es für die Inferenz aufzurufen!

8. Wir sind fertig!

Du hast erfolgreich ein Sprachmodell feinabgestimmt und 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:arrow-up-right

https://unsloth.ai/blog/ hierarrow-up-right oder Wenn du Hilfe beim Fine-Tuning benötigst, kannst du auch unserem Discord-Server beitretenarrow-up-rightReddit r/unsloth

Zuletzt aktualisiert

War das hilfreich?