<EbeneX/>
Grundlagen Grundlagen · Updated 11. März 2026

SFT (Supervised Fine-Tuning)

Definition

Der erste Schritt nach dem Pre-Training, bei dem LLMs auf Instruktions-Daten trainiert werden – macht aus einem Text-Vervollständiger einen hilfreichen Assistenten.

Experte 3 Min. Lesezeit EN: Supervised Fine-Tuning (SFT)

Einfach erklärt

SFT (Supervised Fine-Tuning) trainiert ein vortrainiertes Sprachmodell darauf, Instruktionen zu befolgen. Nach dem Pre-Training kann ein Modell Text vervollständigen – nach SFT kann es Fragen beantworten und Aufgaben erledigen.

Der Unterschied:

Base Model (nach Pre-Training):
Input:  "Was ist die Hauptstadt von Frankreich?"
Output: "Was ist die Hauptstadt von Deutschland? Was ist..."
        ↑ Vervollständigt nur, antwortet nicht

SFT Model:
Input:  "Was ist die Hauptstadt von Frankreich?"
Output: "Die Hauptstadt von Frankreich ist Paris."
        ↑ Versteht und beantwortet die Frage

Die Training-Pipeline:

┌─────────────────┐
│  Pre-Training   │  Riesige Textmengen, Next-Token-Prediction
│  (Base Model)   │  → Sprachverständnis
└────────┬────────┘

┌─────────────────┐
│      SFT        │  (Instruktion, Antwort)-Paare
│                 │  → Instruktionen befolgen
└────────┬────────┘

┌─────────────────┐
│   RLHF / DPO    │  Menschliche Präferenzen
│   (optional)    │  → Besseres Alignment
└─────────────────┘

Technischer Deep Dive

SFT-Datenformat

Chat-Format:

{
  "messages": [
    {"role": "system", "content": "Du bist ein hilfreicher Assistent."},
    {"role": "user", "content": "Erkläre Photosynthese einfach."},
    {"role": "assistant", "content": "Photosynthese ist der Prozess..."}
  ]
}

Instruction-Format:

{
  "instruction": "Fasse den folgenden Text zusammen.",
  "input": "Der lange Originaltext...",
  "output": "Die Zusammenfassung..."
}

Training mit TRL

from trl import SFTTrainer
from transformers import AutoModelForCausalLM, AutoTokenizer
from datasets import load_dataset

# Modell und Tokenizer laden
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8B")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3-8B")

# Dataset laden
dataset = load_dataset("your-sft-dataset")

# Trainer konfigurieren
trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    tokenizer=tokenizer,
    max_seq_length=2048,
    dataset_text_field="text",  # Oder formatting_func
)

# Training starten
trainer.train()

Mit LoRA (effizienter)

from peft import LoraConfig
from trl import SFTTrainer

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    lora_dropout=0.05,
    target_modules=["q_proj", "v_proj", "k_proj", "o_proj"],
)

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    peft_config=lora_config,  # LoRA aktivieren
    max_seq_length=2048,
)

Datenqualität

Gute SFT-Daten:

  • Klare, eindeutige Instruktionen
  • Hochwertige, korrekte Antworten
  • Vielfältige Tasks und Formate
  • Konsistenter Stil

Schlechte SFT-Daten:

  • Mehrdeutige Instruktionen
  • Falsche oder oberflächliche Antworten
  • Nur ein Task-Typ
  • Inkonsistente Formatierung

Hyperparameter

ParameterTypischer WertAnmerkung
Learning Rate1e-5 bis 5e-5Niedriger als Pre-Training
Epochs1-3Mehr kann zu Overfitting führen
Batch Size4-32Je nach GPU-Speicher
Max Seq Length2048-4096Abhängig von Daten
Warmup3-10%Stabileres Training

Evaluation

# Perplexity auf Held-out Set
eval_results = trainer.evaluate()

# Manuelle Evaluation
test_prompts = [
    "Erkläre Machine Learning.",
    "Schreibe ein Gedicht über KI.",
    "Was ist 15 * 23?",
]

for prompt in test_prompts:
    response = model.generate(prompt)
    print(f"Prompt: {prompt}")
    print(f"Response: {response}\n")

SFT vs. RLHF

AspektSFTRLHF
Daten(Prompt, Response)Präferenz-Rankings
KomplexitätEinfachKomplex
ComputeModeratHoch
ErgebnisInstruktionen befolgenBesser aligned
Wann nutzenImmer als BasisFür Top-Qualität

SFT ist wie ein Praktikum nach dem Studium: Das Studium (Pre-Training) vermittelt breites Wissen, das Praktikum (SFT) lehrt, dieses Wissen praktisch anzuwenden – Fragen zu beantworten, Aufgaben zu erledigen.

Trainiert Modelle auf (Instruktion, Antwort)-Paare

Verwandelt Base Model in Instruction-Following Model

Vorstufe zu RLHF/DPO für weitere Alignment

Chat-Modelle

Base Model → Chat-fähiges Modell (GPT-4, Claude)

Task-spezifische Assistenten

Modell für spezifische Aufgaben trainieren

Domain-Anpassung

Allgemeines Modell auf Fachgebiet spezialisieren

Vorbereitung für RLHF

SFT-Modell als Startpunkt für Preference Learning

Was ist der Unterschied zwischen SFT und Instruction Tuning?

Praktisch dasselbe. SFT ist der technische Begriff (Supervised Fine-Tuning), Instruction Tuning beschreibt das Ziel (Instruktionen befolgen). Beide trainieren auf (Prompt, Response)-Paaren.

Brauche ich RLHF nach SFT?

Nicht zwingend. SFT allein kann gute Ergebnisse liefern. RLHF/DPO verbessert Alignment weiter, ist aber aufwändiger. Für viele Anwendungen reicht SFT.

Wie viele Daten brauche ich für SFT?

Qualität > Quantität. 1.000-10.000 hochwertige Beispiele können ausreichen. Mehr hilft, aber schlechte Daten schaden. Alpaca nutzte 52k, viele erfolgreiche Modelle weniger.

SFT vs. Full Fine-Tuning?

SFT IST eine Form von Fine-Tuning, speziell auf Instruktions-Daten. 'Full' bezieht sich auf alle Gewichte vs. LoRA/Adapter. Man kann SFT mit LoRA machen.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.