Zum Inhalt springen
_CORE
KI & Agentensysteme Unternehmensinformationssysteme Cloud & Platform Engineering Datenplattform & Integration Sicherheit & Compliance QA, Testing & Observability IoT, Automatisierung & Robotik Mobile & Digitale Produkte Banken & Finanzen Versicherungen Öffentliche Verwaltung Verteidigung & Sicherheit Gesundheitswesen Energie & Versorgung Telko & Medien Industrie & Fertigung Logistik & E-Commerce Retail & Treueprogramme
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

Fine-tuning — KI-Modell an Ihre Daten anpassen

06. 02. 2026 Aktualisiert: 28. 03. 2026 5 Min. Lesezeit intermediate

Fine-Tuning ist eine fortgeschrittene Technik, die es Ihnen ermöglicht, ein vortrainiertes KI-Modell an Ihre spezifischen Daten und Bedürfnisse anzupassen. Mit dieser Methode können Sie die Modellleistung in einer bestimmten Domäne oder Aufgabe erheblich verbessern.

Was ist Fine-Tuning und warum brauchen Sie es

Fine-Tuning ist der Prozess des Weitertrainierens eines vortrainierten KI-Modells auf spezifischen Daten, der es Ihnen ermöglicht, ein allgemeines Modell an Ihre konkreten Anforderungen anzupassen. Anstatt ein Modell von Grund auf zu trainieren, nutzen Sie bereits erlernte Kenntnisse und erweitern diese lediglich um Ihre Domäne.

Hauptvorteile des Fine-Tunings:

  • Deutlich geringere Rechenanforderungen als Training von Grund auf
  • Bessere Ergebnisse bei spezifischen Aufgaben als allgemeine Modelle
  • Möglichkeit, kleinere Datensätze zu nutzen (Hunderte bis Tausende Beispiele)
  • Erhaltung des allgemeinen Wissens des Basismodells

Wann Fine-Tuning statt Prompt Engineering verwenden

Fine-Tuning ist nicht immer die beste Lösung. Der Entscheidungsprozess sollte folgendermaßen aussehen:

Verwenden Sie Prompt Engineering, wenn:

  • Sie eine schnelle Lösung ohne zusätzliche Kosten benötigen
  • Sie nur wenige Beispiele haben (weniger als 100)
  • Die Aufgabe allgemein und gut beschreibbar ist

Verwenden Sie Fine-Tuning, wenn:

  • Sie eine spezifische Domäne mit eigener Terminologie haben
  • Sie ein konsistentes Antwortformat benötigen
  • Sie über einen qualitativ hochwertigen Datensatz verfügen (100+ Beispiele)
  • Sie Latenz und Inferenzkosten reduzieren möchten

Arten des Fine-Tunings

Full Fine-Tuning

Aktualisiert alle Modellparameter. Am effektivsten, aber auch am anspruchsvollsten hinsichtlich Rechenressourcen und Speicher.

Parameter Efficient Fine-Tuning (PEFT)

Moderner Ansatz, der nur einen kleinen Teil der Parameter aktualisiert. Haupttechniken:

  • LoRA (Low-Rank Adaptation): Fügt kleine Adaptionsschichten hinzu
  • QLoRA: LoRA mit Quantisierung für noch geringere Speicheranforderungen
  • Adapter Layers: Fügt kleine Schichten zwischen bestehende Schichten ein
  • Prefix Tuning: Optimiert nur spezielle Prefix-Token

Praktische Implementierung mit LoRA

Beispiel für Fine-Tuning mit Hugging Face Transformers und der PEFT-Bibliothek:

from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from peft import LoraConfig, get_peft_model, TaskType
from datasets import Dataset
import torch

# Fine-tuning — KI-Modell an Ihre Daten anpassen
model_name = "microsoft/DialoGPT-medium"
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token

# LoRA-Konfiguration
lora_config = LoraConfig(
    task_type=TaskType.CAUSAL_LM,
    r=16,  # Rang - höher = mehr Parameter
    lora_alpha=32,
    lora_dropout=0.1,
    target_modules=["c_attn", "c_proj"]  # welche Schichten anpassen
)

# LoRA auf Modell anwenden
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()

Vorbereitung der Trainingsdaten

def prepare_dataset(examples):
    """Daten für kausale Sprachmodellierung vorbereiten"""
    inputs = []
    for example in examples:
        # Format: "Frage: {question} Antwort: {answer}"
        text = f"Frage: {example['question']} Antwort: {example['answer']}"
        inputs.append(text)

    # Tokenisierung
    model_inputs = tokenizer(
        inputs,
        truncation=True,
        padding=True,
        max_length=512,
        return_tensors="pt"
    )

    # Für kausales LM sind Labels gleich den input_ids
    model_inputs["labels"] = model_inputs["input_ids"].clone()
    return model_inputs

# Beispieldaten
train_data = [
    {"question": "Wie funktioniert Docker?", "answer": "Docker ist eine Containerisierungsplattform..."},
    {"question": "Was ist Kubernetes?", "answer": "Kubernetes ist ein Orchestrierungssystem..."},
    # ... weitere Beispiele
]

dataset = Dataset.from_list(train_data)
tokenized_dataset = dataset.map(prepare_dataset, batched=True)

Training starten

from transformers import Trainer, DataCollatorForLanguageModeling

# Trainingskonfiguration
training_args = TrainingArguments(
    output_dir="./fine-tuned-model",
    num_train_epochs=3,
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    warmup_steps=100,
    learning_rate=5e-5,
    logging_steps=10,
    save_steps=500,
    evaluation_strategy="steps",
    eval_steps=500,
    fp16=True,  # zur Speichereinsparung
)

# Data Collator für Sprachmodellierung
data_collator = DataCollatorForLanguageModeling(
    tokenizer=tokenizer,
    mlm=False  # kausales LM, nicht maskiertes LM
)

# Trainer initialisieren
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized_dataset,
    data_collator=data_collator,
)

# Training starten
trainer.train()
trainer.save_model()

Monitoring und Evaluierung

Korrektes Monitoring des Fine-Tuning-Fortschritts ist entscheidend:

# Metriken während des Trainings verfolgen
import wandb

# Integration mit Weights & Biases
wandb.init(project="fine-tuning-experiment")

# Evaluierungsfunktion
def compute_perplexity(eval_dataset):
    """Perplexity auf dem Evaluierungsdatensatz berechnen"""
    model.eval()
    total_loss = 0
    num_batches = 0

    with torch.no_grad():
        for batch in eval_dataset:
            outputs = model(**batch)
            total_loss += outputs.loss.item()
            num_batches += 1

    avg_loss = total_loss / num_batches
    perplexity = torch.exp(torch.tensor(avg_loss))
    return perplexity.item()

# Generierte Antworten testen
def test_generation(prompt, max_length=100):
    """Textgenerierung testen"""
    inputs = tokenizer.encode(prompt, return_tensors="pt")

    with torch.no_grad():
        outputs = model.generate(
            inputs,
            max_length=max_length,
            temperature=0.7,
            do_sample=True,
            pad_token_id=tokenizer.eos_token_id
        )

    return tokenizer.decode(outputs[0], skip_special_tokens=True)

Optimierung und Best Practices

Auswahl der Hyperparameter

  • Lernrate: Beginnen Sie mit 5e-5, probieren Sie 1e-4 für kleinere Modelle
  • Batch-Größe: So groß wie in den Speicher passt
  • LoRA-Rang (r): 16–64 für die meisten Aufgaben, höher für komplexere Domänen
  • Epochen: 2–5, achten Sie auf Overfitting

Datenqualität

Datenqualität ist entscheidend für den Erfolg des Fine-Tunings:

# Validierung der Datensatzqualität
def validate_dataset(dataset):
    """Qualität der Trainingsdaten prüfen"""
    issues = []

    for i, example in enumerate(dataset):
        # Längenprüfung
        if len(example['question']) < 10:
            issues.append(f"Zeile {i}: Frage zu kurz")

        # Duplikatprüfung
        if example['question'] in seen_questions:
            issues.append(f"Zeile {i}: Doppelte Frage")

        # Formatprüfung
        if not example['answer'].strip():
            issues.append(f"Zeile {i}: Leere Antwort")

    return issues

# Datenbereinigung
def clean_dataset(examples):
    """Grundlegende Datensatzbereinigung"""
    cleaned = []

    for example in examples:
        # Zusätzliche Leerzeichen entfernen
        question = example['question'].strip()
        answer = example['answer'].strip()

        # Nach Länge filtern
        if 10 <= len(question) <= 500 and 20 <= len(answer) <= 1000:
            cleaned.append({
                'question': question,
                'answer': answer
            })

    return cleaned

Deployment und Inferenz

Nach Abschluss des Fine-Tunings muss das Modell effizient bereitgestellt werden:

from peft import PeftModel

# Fine-Tuned-Modell für Inferenz laden
base_model = AutoModelForCausalLM.from_pretrained(
    "microsoft/DialoGPT-medium",
    torch_dtype=torch.float16,
    device_map="auto"
)

# LoRA-Adapter laden
model = PeftModel.from_pretrained(base_model, "./fine-tuned-model")

# Inferenz-API
class FineTunedAPI:
    def __init__(self, model, tokenizer):
        self.model = model
        self.tokenizer = tokenizer

    def generate_response(self, question: str) -> str:
        """Antwort auf eine Frage generieren"""
        prompt = f"Frage: {question} Antwort:"

        inputs = self.tokenizer.encode(prompt, return_tensors="pt")

        with torch.no_grad():
            outputs = self.model.generate(
                inputs,
                max_new_tokens=200,
                temperature=0.7,
                do_sample=True,
                pad_token_id=self.tokenizer.eos_token_id
            )

        response = self.tokenizer.decode(outputs[0], skip_special_tokens=True)
        # Nur den neuen Teil der Antwort extrahieren
        return response[len(prompt):].strip()

# Verwendung
api = FineTunedAPI(model, tokenizer)
answer = api.generate_response("Wie optimiert man eine PostgreSQL-Datenbank?")

Zusammenfassung

Fine-Tuning ist ein leistungsstarkes Werkzeug zur Anpassung von KI-Modellen an spezifische Bedürfnisse. Entscheidend ist die richtige Wahl zwischen Prompt Engineering und Fine-Tuning, die Verwendung hochwertiger Daten und geeigneter PEFT-Techniken wie LoRA. Mit der zunehmenden Verfügbarkeit von Werkzeugen wie Hugging Face PEFT wird Fine-Tuning auch für kleinere Teams immer zugänglicher. Denken Sie an gründliches Testen, Monitoring der Metriken und schrittweise Verbesserung der Datenqualität, um die besten Ergebnisse zu erzielen.

fine-tuningpeftllm
Teilen:

CORE SYSTEMS Team

Wir bauen Kernsysteme und KI-Agenten, die den Betrieb am Laufen halten. 15 Jahre Erfahrung mit Enterprise-IT.