🧬Feinabstimmungs-Anleitung für LLMs

Lerne alle Grundlagen und Best Practices der Feinabstimmung. Einsteigerfreundlich.

1. Was ist Feinabstimmung?

Feinabstimmung / Training / Post-Training von Modellen passt deren Verhalten an, erweitert + 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 Post-Trainings heißt Supervised Fine-Tuning (SFT). Weitere Methoden umfassen Präferenzoptimierung (DPO, ORPO), Destillation und Verstärkungslernen (RL) (GRPO, GSPO), bei dem ein "Agent" lernt, Entscheidungen zu treffen, indem er mit einer Umgebung interagiert und Feedback in Form von Belohnungen oder Strafen.

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

  • Aktualisieren + Neues Wissen 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.

Beispielhafte Anwendungsfälle für Feinabstimmung oder RL:

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

  • Kann historische Kundeninteraktionen nutzen, um genauere und maßgeschneiderte Antworten zu geben.

  • Feinabstimmung von LLMs auf juristischen Texten für Vertragsanalyse, Recherche zu Rechtsprechung und Compliance.

Du kannst ein feinabgestimmtes Modell als spezialisierten Agenten betrachten, der dazu entwickelt wurde, bestimmte Aufgaben effektiver und effizienter zu erledigen. Feinabstimmung kann alle Fähigkeiten von RAG replizieren, aber nicht umgekehrt.

Was ist LoRA/QLoRA?

In LLMs gibt es Modellgewichte. Llama 70B hat 70 Milliarden Zahlen. Anstatt alle 70B Zahlen zu ändern, fügen wir stattdessen dünne Matrizen A und B zu jedem Gewicht hinzu und optimieren diese. Das bedeutet, wir optimieren nur 1 % der Gewichte. 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.

Feinabstimmungs-Fehlvorstellungen:

Du hast vielleicht gehört, dass Feinabstimmung einem Modell kein neues Wissen beibringt oder dass RAG besser ist als Feinabstimmung. Das ist falsch. Du kannst ein spezialisiertes Coding-Modell mit Feinabstimmung und RL trainieren, während RAG die Gewichte des Modells nicht verä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 ein 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 normaler Feinabstimmung, RL, QLoRA oder LoRA-Training entscheiden:

  • Verstärkungslernen (RL) wird verwendet, wenn du ein Modell benötigst, das in einem bestimmten Verhalten (z. B. Tool-Aufrufe) mit einer Umgebung und einer Belohnungsfunktion anstelle von gelabelten Daten herausragen soll. Wir haben mehrere Notebook-Beispiele, aber für die meisten Anwendungsfälle ist standardmäßiges SFT ausreichend.

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

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

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

  • 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 beitragen, 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 für QLoRA im Vergleich zu LoRA ist nun weitgehend wiederhergestellt.

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 zu beginnen mit Instruct-Modellen, da sie direktes Fine-Tuning mit konversationellen Chat-Templates (ChatML, ShareGPT etc.) 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 aber deutlich höhere Genauigkeit. Wenn ein Modellname nur mitbnb-4bit

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

. Während sie die Originalmodelle der offiziellen Modellautoren sind, fügen wir manchmal wichtige Korrekturen hinzu – wie Chat-Template- 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 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 Speicherverbrauch beim Fine-Tuning um das 4-fache. Das Deaktivieren ermöglicht LoRA 16-Bit-Fine-Tuning. Du kannst 16-Bit-LoRA auch mit

  • load_in_16bit = True aktivieren. Um Full Fine-Tuning (FFT) zu ermöglichen, setzefull_finetuning = True . Für 8-Bit-Fine-Tuning setze.

  • load_in_8bit = True Hinweis: Es kann jeweils nur eine Trainingsmethode auf True

circle-info

gesetzt werden.

Ein häufiger Fehler ist, direkt in Full Fine-Tuning (FFT) einzusteigen, das rechenintensiv ist. Beginne zunächst 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 es auf magische Weise beheben wird. 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 Modellwahl:

🚀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 in der Regel einen Datensatz mit 2 Spalten erstellen – Frage und Antwort. Die Qualität und Menge werden das Endergebnis deines Fine-Tunings weitgehend widerspiegeln, daher ist es wichtig, diesen Teil richtig zu machen. Du kannst daten synthetisch generieren

  • Greife hier auf das Notebook zu.

  • Feinabstimmung kann aus einem vorhandenen Dokumentenbestand 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 Lernen, Verständnis und Antwortgenauigkeit.

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

📈Datensatz-Anleitungchevron-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 unter Umständen auch Bilder in der Antwortausgabe benötigen.

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

unter Verwendung von Best Practices aus Forschung und Praxiserfahrungen auswählst – 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, unsere vorgefertigten

zuerst zu nutzen, da dies der einfachste Weg ist, mit geführten Schritten zu starten. 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 Du kannst Unsloth auch lokal installieren via pip install unsloth (mit Linux, WSL oderWindows

). 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 lokalen Umgebung verwenden. Siehe:

6. Training + Evaluierung

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.

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

Der Trainingsverlust wird als Zahlen angezeigt

  • Wir empfehlen im Allgemeinen, die Standard-Einstellungen 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 aufgrund von 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 Speicherbedarf zu erhöhen. max_steps = 60 – Beschleunigt das Training. Für vollständige Läufe ersetze 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

Evaluierung Um zu evaluieren, kannst du manuell evaluieren, indem du einfach mit dem Modell chattest und prüfst, ob es deinen Erwartungen entspricht. Du kannst auch die Evaluierung für Unsloth aktivieren, bedenke aber, dass dies je nach Datensatzgröße zeitaufwändig sein kann. Um die Evaluierung zu beschleunigen, kannst du: die Evaluierungs-Datensatzgröße reduzieren oder.

evaluation_steps = 100

setzen. Zum Testen kannst du auch 20 % deiner Trainingsdaten entnehmen und diese für Tests verwenden. Wenn du bereits alle Trainingsdaten verwendet hast, musst du manuell evaluieren. Du kannst auch automatische Evaluierungstools verwenden, beachte aber, dass automatisierte Tools möglicherweise nicht perfekt mit deinen Evaluierungskriterien übereinstimmen.

7. Modell ausführen + bereitstellen

Lass uns nun das Modell ausführen, nachdem wir den Trainingsprozess abgeschlossen haben! Du kannst den gelb unterstrichenen Teil bearbeiten! Da wir einen Multi-Turn-Chatbot erstellt haben, können wir das Modell jetzt auch so aufrufen, als hätte es in der Vergangenheit bereits einige Gespräche gesehen, wie unten: Zur Erinnerung: Unsloth selbst bietet 2× schnellere Inferenz nativ an, also vergiss nicht, immerFastLanguageModel.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 + Bereitstellung

🖥️Inference & Bereitstellungchevron-right

Zum Speichern und Bereitstellen deines Modells in gewünschten Inferenz-Engines wie Ollama, vLLM, Open WebUI musst du den LoRA-Adapter zusätzlich zum Basismodell verwenden. Wir haben spezielle Anleitungen für jedes Framework:

GGUF & llama.cppchevron-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, um es in Ollama, llama.cpp, LM Studio usw. zu nutzen:

vLLMchevron-right

Wenn du ein LLM für Unternehmen oder Multi-User-Inferenz für FP8, AWQ bereitstellst, verwende vLLM: Wir können das feinabgestimmte Modell jetzt als eine kleine 100-MB-Datei namens LoRA-Adapter speichern, wie unten gezeigt. Du kannst stattdessen dein Modell auch auf das Hugging Face Hub pushen, wenn du es hochladen möchtest! Denk daran, ein Hugging Facearrow-up-right Token

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

wieder, 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 Tipps und Tricks zur Feinabstimmung zu erfahren, besuche unsere Blogs, die enormen und lehrreichen Mehrwert bieten:arrow-up-right

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

Zuletzt aktualisiert

War das hilfreich?