← KI-Engineering und Agentic AI
Model-Alignment · SFT und DPO Llama-3-8B · FinQA

Alignment für Finanzfragen mit SFT, RLAIF und DPO

Einem Modell beibringen, die Finanztabellen eines Unternehmens zu lesen und seinen Rechenweg zu zeigen, damit eine Analystin die Zahl prüfen kann, statt ihr zu vertrauen.

2,74 → 0,785
SFT-Trainingsloss
2 Epochen, 248 Schritte
80,8 %
SFT-Token-Genauigkeit am Ende
Schritt 248
97,7 %
DPO-Reward-Genauigkeit
Schritt 30, 1 Epoche, 38 Schritte
1 800
RLAIF-Präferenzpaare
Annotator Zephyr-7B-β

Die Aufgabenstellung

Finanzfragen zu beantworten heißt, über Tabellen aus Geschäftsberichten in mehreren Schritten zu rechnen. Ein Modell muss die richtigen Zeilen finden, die Zahlenwerte herausziehen und eine Rechenkette durchlaufen, bevor es antwortet. Basismodelle erfinden Zahlen, die nie in der Tabelle standen, und ordnen Werte den falschen Spalten zu. Ein Training allein auf der Musterlösung lehrt das Modell nicht, welche Zwischenschritte zur richtigen Endzahl führen, denn es sieht die Schritte nie.

Stufe 1. Überwachtes Fine-Tuning

Llama-3-8B wird auf dem vollständigen FinQA-Trainingsteil feinabgestimmt. Der Datenformatierer wandelt jedes Rohbeispiel (pre_text, Tabellenzeilen, post_text, Musterprogramm, Musterantwort) in eine ChatML-Konversation. Der Assistenzzug folgt einem ausdrücklichen Chain-of-Thought-Format: ein <thought>-Block mit den Indizes der stützenden Fakten und dem Rechenprogramm aus der FinQA-Annotation, danach ein <answer>-Block mit der ausgerechneten Zahl. Das zwingt das Modell zu prüfbaren Zwischenschritten, statt zur Endzahl zu springen.

Das SFT nutzt LoRA (r=16, alpha=32, auf allen 7 Projektionsschichten, nach Hu u. a. 2022 und Dettmers u. a. 2023 zu Reasoning-Aufgaben), einen Kosinus-Plan für die Lernrate, 5 % Warmup, paged_adamw_32bit und Gradient Checkpointing, damit es auf eine einzelne RTX 4090 (24 GB) passt. Die Gradientenakkumulation bringt die effektive Batchgröße auf 48. Ein Holdout von 5 % fängt Überanpassung während des SFT ab, was zählt, weil eine überangepasste SFT-Initialisierung das DPO-Referenzmodell verschlechtert (Gao u. a. 2022). Trainingsdynamik: Loss 2,74 → 0,785 über 248 Schritte, Token-Genauigkeit 44 % → 80,8 %.

Stufe 2. RLAIF-Präferenzdaten

Das trainierte SFT-Modell erzeugt je Trainingsbeispiel zwei Antwortkandidaten, bei den Temperaturen 0,3 und 0,9. Ein eigenes Modell, Zephyr-7B-β (Tunstall u. a. 2023), annotiert jedes Paar nach dem Paarvergleichsraster der konstitutionellen KI (Bai u. a. 2022) und entscheidet, welche Antwort gewinnt. Paare mit einer Kosinusähnlichkeit über 0,85 fallen heraus, weil ein so nahes Paar kein nutzbares DPO-Signal trägt. Heraus kommen 1 800 Tripel (Prompt, gewählt, verworfen) in NDJSON. Mit Zephyr zu annotieren und mit Llama-3.3-70B zu bewerten hält die 2 Aufgaben auf getrennten Modellen und vermeidet die Zirkularität, die Zheng u. a. 2023 benannt haben.

Stufe 3. Direct Preference Optimization

Das DPO trainiert auf dem RLAIF-Präferenzdatensatz. Der SFT-Adapter geht als trainierbares Modell hinein, und TRL klont ihn automatisch zum eingefrorenen Referenzmodell. NF4-Quantisierung auf 4 Bit über BitsAndBytes. Beta=0,3 (Rafailov u. a. 2023 empfehlen 0,1 bis 0,5, und 0,3 ist bei dieser Datensatzgröße eine sichere Mitte). Lernrate 5e-6, 1 Epoche, 38 Schritte. DPO-Loss am Ende 0,058, Reward-Genauigkeit am Ende 97,7 %.

Evaluation durch ein Modell als Richter

Eine Evaluationspipeline in zwei Durchläufen prüft 3 Modellvarianten (Basis, SFT, SFT+DPO) an 100 FinQA-Testfragen, bewertet von Llama-3.3-70B über Groq (nach Zheng u. a. 2023). Die Raster sind Faithfulness zum Kontext (1 bis 5), Genauigkeit des Rechenwegs (1 bis 5) und Halluzinationsrate (vorhanden oder nicht, je Antwort). Im ersten Durchlauf lädt jedes Modell in 4 Bit, erzeugt seine Antworten und gibt den GPU-Speicher wieder frei, bevor das nächste lädt. Im zweiten Durchlauf wird jede Antwort auf allen 3 Rastern bewertet. Die Ergebnisse gehen mit Zwischenständen in CSV, sodass ein unterbrochener Lauf fortsetzt, ohne bereits bewertete Modelle erneut zu prüfen.

SFT+DPO hebt die Faithfulness von 1,17 auf 1,29 und die Genauigkeit des Rechenwegs von 1,16 auf 1,56 gegenüber dem Basismodell und senkt die Halluzinationsrate von 96,0 % auf 86,7 %. Diese absoluten Werte liegen auf einer Skala von 1 bis 5 niedrig, was mehr über die Schwierigkeit mehrstufigen Rechnens auf Berichtstabellen aussagt als über das Trainingssignal: die DPO-Reward-Genauigkeit erreichte 97,7 %, das Modell lernt die Präferenzstruktur also. Die ehrliche Lesart ist, dass diese Aufgabe ein größeres Basismodell braucht und die Pipeline für eines bereitsteht.

Die Rechenumgebung

Die Trainingsskripte laufen auf einer einzelnen GPU (RTX 4090, RunPod) oder über mehrere GPUs mit DDP über torchrun. Das SFT-Skript liest LOCAL_RANK aus der Umgebung und bindet jeden Prozess an die ihm zugeteilte GPU. Ein Heartbeat-Thread meldet den Fortschritt alle 10 Minuten, was man bei einem langen Lauf in der Cloud haben will. Adapter und das zusammengeführte Modell gehen unter G-Maxime-N/ auf den Hugging Face Hub.

  • Llama-3-8B
  • LoRA / QLoRA
  • SFT
  • DPO
  • RLAIF
  • Zephyr-7B-β
  • Llama-3.3-70B
  • TRL
  • PEFT
  • BitsAndBytes
  • FinQA
  • HuggingFace
  • RunPod
  • DDP