Zum Hauptinhalt springen
Startseite / Portfolio / LLM Finetuning-Pipeline
Modelltraining

LLM Finetuning-Pipeline

End-to-End-Training eigener Sprachmodelle, als Docker geliefert

Gebaut von Rogue AI · Komplett selbst entwickelt · Produktiv seit 2026

Erster sauberer End-to-End-Lauf via docker compose: Ende Januar 2026. Über fünfzig Commits über Training-, Konvertierungs- und Benchmark-Layer seitdem. Letzte Iteration: April 2026.

LLM Finetuning-Pipeline — End-to-End-Training eigener Sprachmodelle, als Docker geliefert

Das Problem

Sprachmodelle von der Stange kennen deine Domäne nicht. Cloud-Finetuning ist teuer, langsam und schickt dein Training weg. Die meisten Open-Source-Rezepte sind Notebook-Demos, die in Produktion nicht halten.

Was ich gebaut habe

Eine containerisierte Finetuning-Pipeline, die auf einer einzigen Consumer-GPU läuft. Liest JSONL-Trainingsdaten, führt QLoRA-Training mit konfigurierbarem Basismodell durch, merged Adapter-Gewichte, exportiert nach GGUF für Ollama und misst per Benchmark-Harness — alles aus einem docker compose up.

Architektur

Dataset-Loader
Validiert JSONL-Schema, dedupliziert, splittet Train/Eval
QLoRA-Trainer
PEFT + bitsandbytes 4-Bit-Quantisierung, konfigurierbare Rank/Alpha/Target-Modules
Checkpoint-Merger
Merged Adapter in Basisgewichte, speichert als HF-Format
GGUF-Export
llama.cpp-Konvertierung mit konfigurierbarer Quantisierung (Q4_K_M / Q5_K_M / Q8_0)
Ollama-Registrierung
Generiert Modelfile, pusht auf lokale Ollama-Instanz
Benchmark-Harness
Perplexity + domänenspezifische Evals gegen Held-out-Testset

Tech-Stack

PythonLlamaFactoryllama.cppOllamaMLflowRunPodDocker

Was zuerst gebrochen ist

  • Datenqualität schlägt alles. Zwei Wochenenden lang an Rank/Alpha geschraubt, bevor klar war: Das JSONL war das Problem. 1.200 saubere Zeilen schlagen 8.000 schmutzige.

  • Q4_K_M ist eine Falle bei technischem Text. Das Modell fing an, CLI-Flags zu halluzinieren. Standard-Quantisierung ist jetzt Q5_K_M — langsamer, weniger erfunden.

  • Rank > 64 auf einem 13B-Basismodell killt jede 24-GB-Karte, egal wie clever die bitsandbytes-Config ist. Page-Table-Thrashing tarnt sich als 'nur langsam', bis es das nicht mehr tut.

Ergebnis

Eigene Modelle auf Domänendaten trainiert, ohne Daten an Drittanbieter zu schicken. Inferenz läuft lokal via Ollama auf demselben Host. Ersetzt wiederkehrende Finetuning-Kosten durch einen einmaligen Trainingslauf.

Ehrliche Grenzen

Noch keine Eval-Harness für Tool-Use oder Function-Calling — nur Perplexity und Task-Accuracy auf Held-out-Sets. Der Modelfile-Generator hartcodiert den System-Prompt; Multi-Tenant bräuchte das templated. RunPod ist für Experimente weiter günstiger, also läuft die Pipeline beidseitig — aber Produktion läuft lokal.

Verwandte Beiträge

← Zurück zum Portfolio