Soft-Label-Destillation für einen 0.8B SQL Agent: Warum ein schwächerer Qwen-Lehrer gewann
Das LoRA-Fine-Tuning mit top-k-Weichetiketten aus gefrorenen Spuren brachte einen 0,8B-SQL-Agenten auf 55 von 220 Aufgaben, und ein schwächerer Qwen-Lehrer übertraf das stärkere GPT-Modell.
Quellen: Small-Model Distillation — Part 2: Off-Policy Soft-Label KD for a 0.8B SQL Agent
Die kurze Version
Bei einem früheren Versuch wurde ein 0,8B-SQL-Agent von 1 gelöster Aufgabe von insgesamt 220 auf 46 erhöht, indem er einen größeren „Lehrer“-Agent Schritt für Schritt mit einem Token nachahmen musste. Dieses Mal ändert sich nur eine Sache: Was passiert, wenn der „Schüler“ auch einen Teil der Unsicherheit des „Lehrers“ sieht – und nicht nur das Token, das er letztendlich auswählte? Alles andere bleibt unverändert: das Trainingsframework, die Bewertung der 220 Aufgaben, das Aktionsschema, der 0,8B-Schüler-Agent sowie die LoRA-Feinabstimmungseinstellungen. Nur das Lernsignal ändert sich.
Die „eingefrorenen“ Spuren des Lehrer-Agenten wurden erneut bewertet. An jeder Position wurden die 20 höchstwahrscheinlichen Token gespeichert, zusammen mit einer geringen Restmenge, die alles andere repräsentiert. Anschließend wurde das herkömmliche, gewichtete Training mit harten Tokenen mit der Methode der top-k-Weichetikett-Destillation verglichen. Der beste Versuch löste 55 von 220 Aufgaben, während der Schüler mit harten Tokenen nur 46 Aufgaben löste und eine Kombination aus harten Tokenen sowie Weichetiketten 49 Aufgaben löste.
Die Überschriftszahl ist nicht der interessanteste Teil. Weiche Etiketten verschlimmerten die Situation in zwei der acht Tests mit einer einzigen Quelle. Auch der beste Lehrer war nicht unbedingt der stärkste. Qwen, ein schwächeres Modell derselben Familie mit 96/220, passte sich seinen eigenen Spuren viel genauer an als das stärkere GPT-Modell (115/220), wodurch seine Wahrscheinlichkeiten dem Lernenden eine klarere Lektion boten. Der eigentliche Vorteil entstand durch die Kombination beider Quellen.
Es gibt bereits zu Beginn eine Einschränkung: Die eigenen Tokenwahrscheinlichkeiten von GPT waren nie verfügbar. Die hier dargestellten GPT-Spuren wurden von Qwen bewertet, wodurch es sich um Ersatzwerte handelt und keine echte Logit-Destillation von GPT vorliegt.
Was getestet wurde
Das übergeordnete Ziel besteht darin, kleine Modelle bei spezifischen Aufgaben leistungsfähiger zu machen. Der Agent ist derselbe SQL-Reparatur-Agent wie zuvor. Er erhält ein Benutzerproblem zusammen mit fehlerhafter SQL-Code, kann eine SQLite-Datenbank untersuchen, Prüfabfragen ausführen, die Ergebnisse lesen und korrigierten SQL-Code einreichen. Die Bewertung erfolgt anhand versteckter, deterministischer Tests – es gibt keinen LLM-Bewerter.
Der frühere Test mit Hard-Tokens hatte bereits gezeigt, dass ein kleines Modell diesen Ablauf bewältigen kann. Das ungetunte Basismodell wiederholte meist nur Aktionen und reichte nie etwas ein. Nach dem SFT mit Hard-Tokens untersuchte, abfragte und reichte es deutlich häufiger ein.
Das Training mit harten Tokenen ist ein grobes Mittel. Dem Lernenden wird gesagt, er solle einfach jeden Token nachbilden, den der Lehrer geschrieben hat, ohne irgendeine Hinweis darauf, wie sicher der Lehrer war, was er sonst noch berücksichtigt hat oder ob die zweitbeste Option fast genauso gut war. Bei SQL kann diese fehlende Information bei Tabellen- und Spaltennamen, Prädikaten, Verknüpfungen, Literallwerten sowie der Syntax strukturierter Aktionen von Bedeutung sein.
Die Frage lautete daher, ob die top-k-Soft-Label-Destillation denselben 0,8-Billionen-Modell-Agenten verbessert, wenn Spuren und Benchmarks unverändert bleiben.
Zwei Ausgangspunkte wurden verglichen. Einer war das Basismodell unsloth/Qwen3.5-0.8B. Der andere war der Hard-Token-Adapter für Qwen3.5-0.8B, der zuvor mit erfolgreichen Trajektorien aus Qwen3.5-35B-A3B 8-bit trainiert worden war. Mit anderen Worten: Soll das Soft-Label-Training von Grund auf beginnen oder vom Hard-Token-Lernenden weitergeführt werden?
Die SQL-Agenten-Aufgabe
Die Einrichtung entspricht dem früheren Test mit harten Tokenen. Jede Aufgabe umfasst ein Benutzerproblem, eine fehlerhafte Abfrage sowie eine SQLite-Datenbank. Das Modell wählt aus strukturierten Aktionen aus: das Schema überprüfen, SQL ausführen oder den endgültigen SQL-Code einreichen. Eine Aufgabe gilt nur dann als gelöst, wenn der eingereichte SQL-Code die versteckten Tests besteht.
Eine typische, kleine, aber reale Aufgabe: In der chinook-Datenbank möchte der Benutzer die neueste track_id erhalten und diese anschließend nutzen, um Zeilen der track-Tabelle zu filtern. Die fehlerhafte Abfrage lautet:
WITH vars AS (SELECT COUNT(*) AS vars_id FROM track)
SELECT * FROM track WHERE track_id = vars_id
Der Fehler hat nichts mit der Formatierung zu tun. COUNT(*) ist nicht die neueste ID, und es ist eine Korrektur im Stil von MAX(track_id) erforderlich. Das Modell muss dies innerhalb einer Tool-Schleife herausfinden: möglicherweise das Schema überprüfen, einen Probeablauf durchführen, die Beobachtung lesen und schließlich SQL im exakt strukturierten Format einreichen, das das System akzeptiert.
BAML, abgekürzt für Boundary Markup Language, umhüllt weiterhin die Anfrage als Schicht für die strukturierte Ausgabe. Es bestimmt die Struktur einer Entscheidung und stellt die an das Modell gesendete Anfrage zusammen. Freiformiger Lehrertext ist niemals Teil der Trainingsdaten des Modells; es lernt stattdessen kanonische JSON-Entscheidungen, die aus einem kurzen draft sowie einer ausführbaren output-Aktion bestehen.
{"draft":"Need schema first.","output":{"action":"inspect_schema"}}
{"draft":"Test a candidate query.","output":{"action":"run_sql_query","sql":"SELECT ..."}}
{"draft":"Submit corrected SQL.","output":{"action":"submit_sql","sql":["SELECT ..."]}}
Jede Bewertung nutzte die Einstellungen des vorherigen Laufs, sodass das Trainingssignal das Einzige war, das sich änderte. Zwei Einstellungen verdienen besondere Erwähnung. Die Obergrenze von 8192 Sequenzen stellt das Gesamtbudget für Prompt und Generierung zusammen dar: Systemprompt, Aufgabe, frühere Aktionen, Schema, Abfragergebnisse, Anweisungen für die strukturierte Ausgabe sowie der Generierungsreserveteil teilen sich dieses Budget. Die maximale Anzahl der generierten Tokens wird separat aufgeführt, da sie eine einzelne Modellaufrufbeschränkung darstellt. Der Lernende kann einen langen Zustand lesen, muss aber dennoch in jeder Runde eine kompakte Aktion ausführen. Die Ergebnisse werden über Terminalausgaben sowie Verhaltensmetriken wie eingereichte Lösungen, fehlerhafte Einreichungen, SQL-Fehler, Abbrüche aufgrund wiederholter Aktionen und Abbrüche nach der maximalen Anzahl an Runden berichtet.
Die besten Lernenden scheitern hauptsächlich nicht an JSON. Sie erreichen submit_sql ohne Probleme. Der schwierige Teil besteht im Urteilsvermögen bezüglich SQL sowie darin, sich zu erholen, wenn eine Probe fehlschlägt.
Die Trainingsidee
Die Hard-Token-Destillation gibt dem Lernenden ein einzelnes Zieltoken pro Position. Die Soft-Label-Destillation liefert hingegen eine kleine Wahrscheinlichkeitsverteilung. Angenommen, das Ziel des Lehrers enthält ein Tabellen-Token wie in ... FROM users .... Bei harter Trainierung wird als nächstes Token users angegeben. Bei Soft-Label-Trainierung kann außerdem angegeben werden, welche Wahrscheinlichkeit der Lehrer einigen nahegelegenen Alternativen zugewiesen hat. Das ausgewählte Token zählt weiterhin, doch der Lernende erkennt zusätzlich, dass einige Alternativen näher lagen als andere.
Das Speichern der Wahrscheinlichkeiten für das gesamte Vokabular ist für ein großes Sprachmodell aufwändig. Ein Vokabular kann Hunderttausende von Tokens enthalten, und jede Entscheidung des Lehrers betrifft viele Zielpositionen des Assistenten. Der praktische Kompromiss war eine spärliche Version: die 20 höchsten Wahrscheinlichkeiten des Lehrers pro Zielposition des Assistenten, plus die verbleibende Masse für alle anderen Tokens.
Warum den Rest beibehalten? Angenommen, die gespeicherten Wahrscheinlichkeiten der oberen 20 addieren sich auf 0,996. Die verbleibenden 0,004 gehören weiterhin zur Verteilung des „Lehrers“, und wenn man die Wahrscheinlichkeiten der oberen 20 auf 1,0 erhöhen würde, bekäme der Lernende ein übermäßig selbstbewusstes Ziel. Deshalb wird das Ziel absichtlich so konstruiert, dass berücksichtigt wird, dass ein Teil der Wahrscheinlichkeiten außerhalb dessen liegt, was gespeichert wurde.
Der Ansatz bleibt weiterhin off-policy. Der Lernende lernt aus zuvor gesammelten Spuren und handelt niemals während der Bewertung.
Kurze Durchsicht des Codes
Die einfachste Möglichkeit, dieser Methode zu folgen, besteht darin, eine Zeile durch den Prozessablauf nachzuvollziehen. Für die weichen Labels wurde kein neues Agentenumfeld erstellt. Die gleichen erfolgreichen Entscheidungen des „Lehrers“ aus den vorherigen Laufverläufen wurden wiederverwendet, in derselben BAML-Prompt-Struktur dargestellt und anschließend mit Wahrscheinlichkeitsinformationen zu den Ziel-Tokens des Assistenten angereichert.
Hier ist eine Zeile für das supervised fine-tuning (SFT) mit Hard-Tokens. Beim SFT wird an Eingab-Ausgabepaaren trainiert, wobei nur die Antwort-Tokens zum Verlust beitragen:
row = {
"messages": conversation_before_teacher_decision + [
{"role": "assistant", "content": canonical_decision_json(teacher_decision)}
],
"teacher_draft": teacher_decision.draft,
"teacher_action": teacher_decision.output,
}
Ein Soft-Label-Row behält die gleichen kanonischen Nachrichten sowie die Lehrer-Metadaten bei und erhält bei den vom Lehrer festgelegten Positionen im Assistenten die entsprechenden Token-Werte. Unter „Lehrer-Einsatz“ versteht man hier das Übergeben des bekannten Zieltextes an das Wahrscheinlichkeitsmodell und die anschließende Abfrage, wie wahrscheinlich dieser Text anhand seines Kontextes ist – Token für Token. Es werden logarithmische Wahrscheinlichkeiten gespeichert statt der Rohwahrscheinlichkeiten, da diese numerisch sicherer zum Ausdrucken und zum Training geeignet sind:
row = {
"messages": [..., {"role": "assistant", "content": target_decision_json}],
"distillation": {
"probability_model": "Qwen3.5-35B-A3B 8-bit",
"top_k": 20,
"row_weight": 1.18,
"token_scores": [
{
"position": 1661, # full-sequence token position
"target_token_id": 412,
"target_logprob": -0.21,
"top_token_ids": [412, 879, 91],
"top_logprobs": [-0.21, -2.81, -3.51],
"top_mass": 0.90,
"tail_mass": 0.10,
}
],
},
}
Der Scoring-Modul hat nur eine Aufgabe: Es nimmt eine gefrorene Zeile und gibt darauf Token-Wahrscheinlichkeiten an. Vom Qwen3.5-35B-A3B 8-bit Scorer wird niemals verlangt, eine neue Entscheidung zu treffen. Der Prompt wird ohne die Antwort des Assistenten generiert, die vollständige Sequenz mit dieser Antwort, und der zu bewertende Teil wird Token für Token bewertet:
prompt = chat_template(messages[:-1], add_generation_prompt=True)
full = chat_template(messages, add_generation_prompt=False)
prompt_ids = tokenize(prompt)
full_ids = tokenize(full)
target_ids = full_ids[len(prompt_ids):]
prefill_teacher_cache(prompt_ids[:-1])
driver_ids = [prompt_ids[-1]] + target_ids[:-1]
for i, target_id in enumerate(target_ids):
logits = qwen_35b(driver_ids[i]).logits
logprobs = log_softmax(logits)
top_ids, top_logprobs = top_k(logprobs, k=20)
save_token_score(
position=len(prompt_ids) + i,
target_token_id=target_id,
target_logprob=logprobs[target_id],
top_token_ids=top_ids,
top_logprobs=top_logprobs,
tail_mass=1.0 - sum(exp(top_logprobs)),
)
Die maskierung ausschließlich der Assistententoken bleibt unverändert im Vergleich zur Verwendung von Hard-Tokens. Prompt-Tokens bilden den Kontext, während die Ziel-Tokens des Assistenten zur Überwachung dienen. Das ist für einen Agenten wichtiger als bei herkömmlichem Fragenbeantworten, da der Prompt Schema-Beobachtungen, frühere Tool-Ausgaben sowie SQL-Ergebnisse enthält. Diese Tokens dienen dazu, darauf aufzubauen, niemals zur Vorhersage:
labels = full_ids.copy()
labels[: len(prompt_ids)] = -100
hard_ce = cross_entropy(student_logits, labels)
Das Training benötigt außerdem mehr Tensoren als herkömmliches SFT. Eine Batch enthält wie üblich input_ids, attention_mask sowie maskierte labels, und darüber hinaus auch ein Gewicht für jede Position, die IDs der top-k-Token zusammen mit ihren Log-Wahrscheinlichkeiten, eine Maske für diese k Slots sowie die verbleibenden Schwanzwahrscheinlichkeiten. Das Padding setzt neutrale Werte in inaktive Slots, sodass der Verlust sie problemlos ignoriert:
batch = {
"input_ids": pad(input_ids, pad_id),
"attention_mask": pad(attention_mask, 0),
"labels": pad(labels, -100),
"position_weights": pad(position_weights, 0.0),
"topk_token_ids": pad(topk_token_ids, [0] * top_k),
"topk_logprobs": pad(topk_logprobs, [0.0] * top_k),
"topk_mask": pad(topk_mask, [False] * top_k),
"tail_probs": pad(tail_probs, 0.0),
}
Die Kontrollbedingung ist das gewichtete Hard-Token-Fine-Tuning. Ein ausgewähltes Token bleibt weiterhin das Ziel, doch die Cross-Entropy des Assistent-Token wird mit einem Vertrauensgewicht multipliziert, das aus der Log-Wahrscheinlichkeit des Scorers für dieses Ziel entnommen wird. Ein für den Scorer einfaches Szenario kann ein höheres Gewicht erhalten, während ein unwahrscheinliches Szenario ein geringeres Gewicht haben kann:
z = (mean_target_logprob - dataset_mean_logprob) / dataset_logprob_std
row_weight = clip(2 / (1 + exp(-z)), 0.25, 1.75)
loss = row_weight * hard_ce
Das Einschneiden auf [0.25, 1.75] verhindert, dass eine einzelne unzuverlässige Zeile eine ganze Gruppe dominiert, während zuverlässige Zeilen weiterhin mit großem Abstand überzeugender sein können als unsichere.
Auf der Seite der weichen Etiketten wird ein Wahrscheinlichkeitsabgleichsterm zur Verlustfunktion hinzugefügt. Was folgt, ist eine Skizze seiner Form und nicht der genaue Implementierungscode:
teacher_top_probs = exp(top_logprobs) * topk_mask
teacher_top_probs *= (1.0 - tail_mass) / sum(teacher_top_probs)
student_logprobs = log_softmax(student_logits_at_target_positions)
student_top_logprobs = gather(student_logprobs, topk_token_ids)
student_tail_prob = 1.0 - sum(exp(student_top_logprobs))
topk_kl = sum(teacher_top_probs * (log(teacher_top_probs) - student_top_logprobs))
tail_kl = tail_mass * (log(tail_mass) - log(student_tail_prob))
loss = hard_ce + topk_kl + tail_kl
Die Informationen fließen vom Lehrer zum Schüler: Das Verteilungsmuster des Lehrers ist das Ziel des Schülers, und es wird eine Strafe verhängt, wenn zu geringe Wahrscheinlichkeiten dieser Masse zugeordnet werden. Im echten Trainer werden sowohl die Kreuzentropie als auch die Destillation ausschließlich über verschobene Zielpositionen des Assistenten berechnet.
Die tatsächliche Schulung des Schülers erfolgt weiterhin durch LoRA-Fine-Tuning. LoRA, also die Anpassung niedrigen Rangs, lässt das Basismodell größtenteils unverändert und fügt kleine, trainierbare Adaptermatrizen zu ausgewählten Attention- und MLP-Modulen hinzu. Dadurch ist es kostengünstig, viele Durchläufe zu vergleichen, ohne jedes Mal das 0,8-Billionen-Modell vollständig zu fine-tunen:
student = load_student("unsloth/Qwen3.5-0.8B", max_seq_length=4096)
student = add_lora_adapters(
student,
rank=32,
alpha=32,
target_modules=[
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",
],
)
trainer_class = make_trainer_class(Trainer, soft_label_args)
trainer = trainer_class(
model=student,
train_dataset=scored_train_examples,
eval_dataset=scored_validation_examples,
data_collator=distillation_collator,
batch_size=1,
gradient_accumulation_steps=8,
learning_rate=5e-5,
epochs=3,
)
trainer.train()
adapter = save_lora_adapter(student)
Die tatsächliche Implementierung sieht so aus: make_trainer_class gibt eine Unterklasse des Hugging Face Trainer zurück, die den gespeicherten spärlichen top-k-Verlust sowie den residual-tail-Verlust anwendet. Beachten Sie den Unterschied zum online-basierten DistillationTrainer von TRL, bei dem die Bewertung vom „Lehrer“ innerhalb des Trainers durchgeführt wird. Alle drei Gewichte für weiche Etiketten blieben bei 1,0: harter Kreuzentropieverlust, Destillation und Temperatur. Die Temperatur wurde absichtlich unverändert gelassen, da die spärlichen Artefakte bereits bei 1,0 festgelegt waren und ein Temperaturskalierungsstudium nicht das Ziel war.
Die Bewertung am Ende stellt eine echte Einsatzumgebung dar und nicht eine erzwungene Bewertung durch den „Lehrer“. Der trainierte Adapter kehrt zum SQL-Agent-System zurück und muss die 220 zurückgehaltenen Aufgaben nacheinander bearbeiten, jeweils einen Schritt pro Durchgang.
for task in held_out_eval_tasks:
state = start_sql_agent_task(task)
for turn in range(8):
messages = render_baml_messages(state)
decision = model_with_adapter.generate_action(
messages,
max_new_tokens=512,
temperature=0.0,
)
state = execute_action_and_append_observation(state, decision)
if state.solved or state.stopped:
break
results.append(score_final_submission(state))
Viele Ideen zur Offline-Destillation scheitern an diesem letzten Schritt. Der Lehrer prüft, ob der Schüler vorhersagen kann, was der Lehrer in einem von ihm geformten Kontext als Nächstes tun würde. Eine Umsetzung prüft, ob der Schüler mit seinen eigenen früheren Entscheidungen umgehen kann, nützliche Prüffragen wählt, Wiederholungen vermeidet und korrekten SQL-Code einreicht. Hier zählt nur die zweite Zahl.
Wie das Experiment abläuft
Es wäre einfach, dies als On-Policy-Destillation zu interpretieren, doch das ist nicht der Fall. Was auch immer der Schüler erzeugt, wird niemals bewertet. Er lernt erst später aus den Spuren, die der Lehrer bereits erstellt hat.
Die Daten stammen von einer Bewertung von eingefrorenen, erfolgreichen Spuren. Die Handlungen des Lehrers existieren bereits, und das Wahrscheinlichkeitsmodell fragt lediglich danach, wie wahrscheinlich jedes ausgewählte Token im Kontext erscheint. Es erstellt niemals eine neue Entscheidung. Die beiden bewerteten Datensätze wurden getrennt aufbewahrt (GPT-Spuren von Qwen bewertet, Qwen-Spuren von Qwen bewertet) und jeder wurde nach der Länge der gesamten generierten Sequenz gefiltert, da Schema-Beobachtungen sowie frühere Tool-Ausgaben Teil dessen sind, was der Schüler aufnehmen muss – und nicht nur die endgültige Antwort. Grenze: Die GPT-Spuren gelten als von Qwen als Proxy bewertet und wurden nicht mit GPTs eigenen Wahrscheinlichkeiten bewertet, und der Schüler handelt während der Bewertung niemals.
Drei Trainingsvarianten wurden auf die bewerteten Daten angewandt:
- Gewichtete Feinabstimmung mit harten Tokenen (die Kontrolle). Für jede Position wird ein Token ausgewählt, wobei jede Zeile nach dem Vertrauensgrad des Bewerters gewichtet wird. Es handelt sich dabei um SFT mit einer Einstellung für den Vertrauensgrad. Unterschied: Es handelt sich nicht um Destillation mit weichen Labels, da der Lernende das Gewicht sieht, aber niemals die top-k-Verteilung.
- Destillation mit weichen Labels nach dem Top-k-Prinzip (die getestete Methode). Derselbe harte Zielwert zusammen mit einem zweiten Signal, das den Lernenden auffordert, die Wahrscheinlichkeit auf die top-k-Alternativen zu verteilen, die der Bewerter erkannt hat, wobei der verbleibende Anteil für alles andere verwendet wird. Unterschied: Es handelt sich um eine außerpolicy-Methode, bei der der Lehrer auf eingefrorenen Daten Einfluss nimmt, und der Lehrer bewertet niemals die eigenen Beispiele des Lernenden.
Die Mischung der Quellen liefert das sauberste und verständlichste Ergebnis: Vielfältigere erfolgreiche Beispiele sowie reichhaltigere Zielwerte pro Token geben dem kleinen Basismodell mehr Anhaltspunkte zum Lernen als jede Quelle für sich allein.
Datensatz und Filtern
Die Lehrerbeispiele wurden absichtlich nicht neu erzeugt. Sie wurden aus dem Run mit den „hard-token“-Werten festgehalten, damit der Vergleich auf dem Überwachungssignal beruht und nicht auf einer neuen Datengenerierung.
In dieser früheren Generation durchliefen beide Lehrmodelle genau die gleichen 879 Trainingsaufgaben. GPT 5.5 medium löste 446 von 879 Aufgaben richtig, was 1046 SFT-Spalten ergab. Qwen3.5-35B-A3B 8-bit löste 394 Aufgaben richtig und erzeugte 1232 Spalten, da seine erfolgreichen Abläufe länger dauerten. Bei der Bewertung mit 220 Aufgaben war GPT 5.5 medium leistungsfähiger – 115 gegenüber 96 – wodurch der Qwen-Test hier als Test innerhalb derselben Familie gilt und nicht als Test mit dem leistungsstärksten Lehrmodell.
Die Einschränkung bezüglich der Proxy-Modelle ist bedeutsam. Ehrliche Soft-Labels für GPT 5.5 medium würden die eigenen Tokenwahrscheinlichkeiten dieses Modells erfordern, die jedoch nicht verfügbar waren. Daher stellt das GPT-Trace-Experiment eine engere Frage: Fügt ein Qwen-Modell derselben Familie etwas Nützliches zu den von GPT gewählten Aktionen hinzu?
Für jede Zeile wurde die tatsächlich von dem Harness verwendete BAML-Aufforderung generiert. Das bekannte Assistentenziel wurde anschließend über Qwen3.5-35B-A3B erzwungen; Token-Werte wurden nur für die Positionen des Assistentenziels gespeichert.
Vor jeder Trainingsphase müssen zwei Aspekte der bewerteten Daten überprüft werden: Welcher Anteil davon passt in ein Budget von 4096 Token sowie inwieweit stimmt die Bewertung durch Qwen mit den jeweiligen Quelldaten überein. Eine niedrigere negative Log-Likelihood-Wert ist besser, da dies bedeutet, dass das Wahrscheinlichkeitsmodell die Zielaktionen leichter erklären kann. Deshalb unterscheiden sich die von Qwen selbst bewerteten Daten so stark von den von GPT indirekt bewerteten Daten: Qwen war bei seinen eigenen Daten weitaus zuversichtlicher als bei den Daten von GPT 5.5 Medium. Der durchschnittliche negative Log-Likelihood-Wert lag bei den von Qwen selbst bewerteten Datensätzen bei 0,297 und bei den von GPT indirekt bewerteten Datensätzen bei 0,876. Der Zieltoken befand sich in jeder von Qwen selbst bewerteten Position zu 100,00 % unter den ersten 20 gespeicherten Tokenn und in 98,56 % der von GPT indirekt bewerteten Positionen.
Die zusammengeführte Menge begann mit 2278 Zeilen. Nach dem Filter mit 4096 Tokenen blieben 2253 Zeilen übrig, die in 2141 für das Training und 112 für die Validierung aufgeteilt wurden. Eine feste Zufallszahl sortierte die Zeilen vor der Aufteilung, damit die Validierungsgruppe nicht die Reihenfolge der Quellen widerspiegelte.
Trainingseinstellungen
Acht Durchläufe bildeten das Hauptgitter, eine vollständige Kombination aus drei binären Auswahlmöglichkeiten: welche Quelle zum Nachvollziehen (GPT-Proxy oder Qwen-Selbstmodell), welche Methode (gewichtete harte oder weiche Etikettierung) und welcher Startpunkt für das Modell (Grundmodell oder Warmstart mit harten Tokenen). Zwei weitere Durchläufe, beide mit dem Grundmodell und beide anhand der kombinierten Daten – einer mit gewichteten harten Tokenen und einer mit weichen Etiketten – ergaben insgesamt zehn trainierte Modelle. Die kombinierten Warmstart-Durchläufe wurden weggelassen. Die ersten acht zeigten, dass Warmstarts stark von der Quelle zum Nachvollziehen abhingen, während die kombinierten Durchläufe dazu dienten, eine einfachere Frage zu beantworten: Hilft das Mischen verschiedener Lehrmodelle beim Grundmodell?
Die Trainingshyperparameter folgten dem Baseline-Modell mit der Hard-Token-Trajektorie. Die Adapter nutzten LoRA mit einem Rang von 32 und einem Alpha-Wert von 32 für die Attention-Projektionen (q_proj, k_proj, v_proj, o_proj) sowie für die MLP-Projektionen (gate_proj, up_proj, down_proj). Weitere Einstellungen: eine Lernrate von 5e-5, eine Batch-Größe von 1 pro Gerät mit 8 Akkumulationsschritten, drei Epochen, bf16 auf einer NVIDIA GPU, Unsloth sowie FlashAttention 2, sofern verfügbar. Die übrigen Einstellungen umfassten einen 5%-igen Validierungsanteil, Seed 42 sowie eine Obergrenze von 4096 Token für vollständige Trainingssequenzen.
Für weiche Labels lag die Temperatur bei 1,0, wobei sowohl für die harte Kreuzentropie als auch für die Destillation Gewichte von 1,0 verwendet wurden. Der Code behält die gespeicherte top-k-Masse zusammen mit der restlichen Schwanzmasse bei – eine einfache numerische Korrektur für Wahrscheinlichkeiten, die spärlich serialisiert wurden.
Die Laufgrößen waren nicht identisch. Die mit GPT proxy bewerteten Laufe wurden anhand von 990 Zeilen trainiert, die mit Qwen selbst bewerteten anhand von 1151 Zeilen und die kombinierten anhand von 2141 Zeilen. Bei einer Batch-Größe von 1 und 8 Akkumulationsschritten führten drei Epochen jeweils zu 372, 432 bzw. 804 Optimierer-Updates. In den Laubelabeln steht Base für das ungetunte Modell unsloth/Qwen3.5-0.8B, GPT proxy bezeichnet Spuren aus GPT 5.5 medium, die von Qwen3.5-35B-A3B 8-bit bewertet wurden, Qwen self bedeutet, dass die Spuren des Qwen-Modells von diesem selbst bewertet wurden, und Combined bezeichnet die vor dem Training zusammengeführten Bewertungssätze beider Modelle.
Achten Sie auf die Validierungsverluste. Sie haben innerhalb eines einzigen Ziels eine Bedeutung, doch gewichtete „hard“- und „soft-label“-Ausführungen können nicht miteinander verglichen werden, da ihre Verluste unterschiedliche Komponenten enthalten. Der niedrigste Validierungsverlust entstand bei der Basis-Qwen-Ausführung mit selbstbewerteten „hard“-Werten, die nur 40 von 220 Aufgaben löste, während die beste Leistung von der kombinierten „soft-label“-Ausführung erzielt wurde, obwohl deren Verlust höher war.
Die Vorbereitung und das Training fanden auf unterschiedlicher Hardware statt. Ein Rechner mit viel Speicher war geeignet, um Qwen3.5-35B-A3B im 8-Bit-Format lokal zu laden und zu bewerten, wobei die genaue Bewertung mit Lehrerunterstützung Zeit in Anspruch nahm: etwa 60 Minuten für die GPT-Daten und 41 Minuten für die Qwen-Daten. Die Studierenden trainierten hingegen mit einer NVIDIA-GPU. Die einzelnen Ausführungen mit aufgezeichneter Dauer dauerten jeweils etwa 23 bis 30 Minuten, während die größeren kombinierten Ausführungen rund 52 Minuten („hard“-Werte) bzw. 55 Minuten („soft-label“-Werte) in Anspruch nahmen.
Ergebnisse, nach Frage geordnet
Ein erster Diagrammversuch zeigte alles auf einmal und vermischte zwei getrennte Fragen: Was passiert, wenn das Training vom Basismodell ausgeht, und was passiert, wenn es von dem Hard-Token-Trajektoriemodell fortgesetzt wird. Die Ergebnisse wurden daher nach Forschungsfrage aufgeteilt.
Zur Veranschaulichung waren die Lehrmodelle und Baselines in der festgelegten 220-Aufgaben-Bewertung: Keine Feinabstimmung 1/220, das Hard-Token-Studentenmodell 46/220, Qwen als Lehrmodell 96/220 und GPT als Lehrmodell 115/220. Ziel des top-k-Soft-Label-Experiments war es nie, die Lehrmodelle zu übertreffen. Es ging darum zu prüfen, ob ein reichhaltigeres Überwachungssignal das 0,8B-Studentenmodell unter denselben Bedingungen weiter verbessern kann.
Startet man mit dem Basismodell, dann schneiden alle trainierten Versionen besser ab als das untrainierte Modell mit 1/220. Das reine GPT-Training sowie das reine Qwen-Training lagen ungefähr auf dem gleichen Niveau und lösten je nach Methode 41 bis 43 Aufgaben. Die Kombination beider Ansätze führte zu einem deutlicheren Unterschied: Die Kombination aus gewichteten harten Tokenen erzielte 49/220, während die Kombination aus top-k-Weichetiketten 55/220 erreichte – das sind etwa ein Viertel der Aufgaben. In absoluten Zahlen ist das bescheiden und weit entfernt von den 115/220 des besten Lehrmodells, doch der Reiz liegt darin, wie weit ein 0,8-Billion-Modelle von fast null aus ansteigen kann, und nicht darin, dem Lehrmodell nachzueifern. Für einen Start mit dem Basismodell lautet die Schlussfolgerung, von beiden Lehrmodellen Gebrauch zu machen, wobei bei den zusammengeführten Daten die Weichetiketten den gewichteten harten Tokenen voraus sind.
Fortsetzung beim Schüler mit harten Tokenen. Hier ist das Bild weniger klar. Der Checkpoint hatte bereits 46/220 gelöst. Weitere Trainingsschritte mit GPT-Spuren und gewichteten harten Tokenen brachten ihn auf 48/220, während weiche Labels bei denselben Spuren wieder auf 44/220 führten. Bei von Qwen selbst bewerteten Spuren umkehrte sich das Muster: Gewichtete harte Token sanken auf 38/220, und weiche Labels stiegen auf 49/220.
Die unerwartete Erkenntnis: Weiche Labels halfen nur dann, wenn sich die Bewertung und die Spur übereinstimmten. Qwen3.5-35B-A3B 8-bit war mit 96/220 der schwächere „Lehrer“ im Vergleich zu GPTs 115/220, doch seine Wahrscheinlichkeiten passten zu seinen eigenen Spuren, und dort funktionierten weiche Labels (49/220), während sie bei von einem Proxy bewerteten GPT-Spuren schadeten (44/220). Die Übereinstimmung war wichtiger als die reine Stärke des „Lehrers“.
Was sich im Agenten-Loop geändert hat. Das Basismodell reichte fast nie Einreichungen ein. Die Hard-Token-Trajektorien-SFT-Methode brachte es dazu, in den Loop einzutreten und Einreichungen zu machen, doch viele dieser Einreichungen waren falsch. Der kombinierte Soft-Label-Verfahrensansatz steigerte den Erfolg erneut und stellt insgesamt die beste Leistung dar. Dennoch reichte es 171 Aufgaben ein und löste 55 davon, was bedeutet, dass 116 eingereichte Abfragen die versteckten Tests nicht bestanden, und es gab außerdem noch 39 Fälle von wiederholten Aktionen.
Das ist die ehrliche Darstellung der Ergebnisse. Das Modell versagt nicht hauptsächlich daran, dass es keine gültigen BAML-Aktionen erzeugen kann. Es versagt, weil es weiterhin schlechte SQL-Entscheidungen trifft und manchmal im Loop stecken bleibt.
Das zuverlässigste Signal für das Verhalten war die Anzahl der Wendungen. Der durchschnittliche Wert bei der Kombination aus weichen Labels betrug 3,39 Wendungen, gegenüber 3,48 bei dem Warm-Start mit harten Tokens – ein Unterschied, der so gering ist, dass zusätzliche Schritte die Verbesserung nicht erklären können. Eine etwas bessere Mischung der Aktionen tut es hingegen: mehr korrekte Einreichungen als beim Warm-Start, weniger Fehlversuche als bei der kombinierten gewichteten-Hard-Run-Methode, sowie weniger SQL-Fehler und weniger Unterbrechungen aufgrund der Wendungsgrenze. Die Anzahl der generierten Tokens pro Evaluierungsaufruf wurde nicht protokolliert, weshalb keine Zahlen zu den Ausgabetokens angegeben werden können. Die Zahlen, die sicher berichtet werden können, stammen aus dem Training: wie viele Prompt- und Ziel-Token vorhanden waren, die Gesamtlänge der Sequenz sowie der Top-k-Coverage-Wert.
Hinweis zur Lesart der Tabellen hinter den Diagrammen: „submitted“ umfasst sowohl korrekte als auch fehlerhafte Einreichungen, und „wrong submits“ entspricht submitted minus Erfolg. Die Spalte „SQL-error tasks“ ist nicht ausschließend – eine Aufgabe landet darin, wenn eine der SQL-Abfragen während des Laufs einen Fehler verursacht hat, sodass sie mit jedem Endresultat übereinstimmen kann.
Fehleranalyse
Würde man allein auf den kombinierten Lauf des Basismodells schauen, würde das Ergebnis zu ordentlich aussehen: gemischte Lehrer zusammen mit schwachen Bewertungen – Fall abgeschlossen. Die getrennten Ansichten sind weniger übersichtlich. Überraschend ist, dass ein schwächerer Lehrer besser lehrte als ein stärkerer, da seine Wahrscheinlichkeiten mit seinen eigenen Ergebnissen übereinstimmten. Schwache Bewertungen profitierten am meisten auf Qwen-Pfaden derselben Familie und offensichtlich auch, wenn die Quellen kombiniert wurden. Sie profitierten weniger von GPT-Ergebnissen, die Qwen nur indirekt bewertet hatte, und beeinträchtigten außerdem die Zelle für den GPT-Warmstart.
Das ist plausibel: Die 8-Bit-Wahrscheinlichkeiten von Qwen3.5-35B-A3B beschreiben die 8-Bit-Aktionen von Qwen3.5-35B-A3B gut, wodurch der 0,8B große Qwen-Student ein klareres Signal zum Nachahmen erhält.
Beim Rollout bleibt das letzte Wort erhalten. Bei der Anleitung durch den Lehrer stellt sich die Frage, ob der Student die nächste Aktion des Lehrers erraten kann, wenn der Kontext dem des Lehrers ähnelt. Das Harness stellt eine schwierigere Aufgabe: Kann es von eigenen früheren Schritten wieder auf die Beine kommen, sinnvolle Prüfungen auswählen, Schleifen vermeiden und schließlich den korrekten SQL-Code erstellen? Beides hängt zusammen, ist aber keineswegs dasselbe.
Der Validierungsverlust erzählt dieselbe Geschichte aus einer anderen Perspektive. Bei 55/220 hatte der kombinierte Soft-Label-Modus einen Validierungsverlust von 0,5684, was höher ist als der Wert von 0,3478 beim kombinierten Hard-Token-Modus, der 49 Aufgaben löste. Der niedrigste Verlust überhaupt, 0,2544, wurde vom basischen Qwen-Modus mit selbstbewerteten Hard-Tokens erzielt, der jedoch nur 40/220 Aufgaben löste. Ein niedriger, vom Lehrer erzwungener Verlust bedeutet nicht unbedingt einen besseren Agenten.
Das Ergebnis des kombinierten Lehrer-Modus bringt am meisten bei. Die GPT-Spuren veranlassten den Schüler dazu, häufiger Antworten abzugeben. Die Qwen-Spuren waren leichter zu bewerten und gehörten zur gleichen Familie, führten jedoch zu mehr Schleifen. Der gemischte Soft-Label-Modus übernahm nicht einfach das Beste aus beiden Ansätzen, und die Stopps durch Wiederholungen traten weiterhin auf. Dennoch lag seine Erfolgsrate am höchsten, und im Vergleich zum gemischten Hard-Token-Modus trat es seltener auf SQL-Ausführungsfehler und beendete weniger Episoden wegen des Limits an Turns.
Die gewichtete-harte Steuerung brachte ihre eigene Lektion mit sich. Das Gewichten der Zeilen nach der Zuverlässigkeit des Bewerters ist günstiger als das Anpassen spärlicher Wahrscheinlichkeitsverteilungen, und anhand der mit GPT-proxy-bewerteten Warm-Start-Daten erzeugte sie die beste Zelle. Was sie jedoch nicht kann, ist dem Lernenden Informationen über benachbarte Alternativen an jeder Position zu geben; sie gibt lediglich an „diesen Token härter oder weicher kopieren“. Top-k-Weichetiketten eignen sich für Fälle, in denen der Bewerter mit der Quellquelle übereinstimmt und die Datenmischung breit genug ist, sodass der Lernende nicht übermäßig an den Stil eines einzelnen Lehrers angepasst wird.
Hardware-Lektionen
Es waren zwei Arten von Maschinen erforderlich. Für die Bewertung musste Qwen3.5-35B-A3B im 8-Bit-Format im Speicher gehalten und auf eingefrorenen Zielen ausgeführt werden, weshalb ein Mac mit hohem RAM-Ausstattung und 128 GB einheitlichem Speicher, der den quantisierten Lehrer beherbergen konnte, sinnvoll war. Er war zwar nicht schnell, ermöglichte aber alle Vorbereitungen lokal, bevor kostenpflichtige GPU-Zeit genutzt werden musste.
Die Schulung verfolgte das Gegenteil. Die Feinabstimmung mit LoRA ist rechenintensiv, da sie Vorwärts- und Rückwärtsberechnungen, Aufmerksamkeitskerne sowie Optimierer-Schritte beinhaltet. Die NVIDIA-GPU war trotz geringerer Gesamtmemory-Menge viel schneller, da die entsprechenden Tensorstrukturen im VRAM blieben und mit CUDA-Kernen verarbeitet wurden. Die zentrale Erkenntnis ist, dass Kapazität und Durchsatz getrennte Probleme sind: Großer System-RAM ermöglicht es, Daten und Strukturen zu speichern und vorzubereiten, während GPU-VRAM in Kombination mit CUDA eine schnelle Trainierung ermöglicht. Der Arbeitsablauf sah vor, alles Mögliche auf dem Mac zu erledigen und die entfernte GPU erst dann einzusetzen, wenn Daten und Skripte bereit waren.
Lektionen
Die Soft-Label-Destillation lohnt sich für das Feintunen von Agenten, sofern sie anhand von Implementierungen bewertet wird. Die Unsicherheit auf Token-Ebene liefert mehr Informationen als harte Token, bleibt jedoch eine lokale Überwachung und lehrt das Modell allein nicht, sich von fehlerhaften Tool-Aufrufen zu erholen, Schleifen zu vermeiden oder bei neuen Beobachtungen besser vorzugehen.
Proxy-Soft-Labels sollten ehrlich beschriftet werden. Die hier angegebenen GPT-Werte sind nicht die eigenen Wahrscheinlichkeiten von GPT, sondern solche, die mit Qwen bewertet wurden. Das ist dennoch ein nützliches Experiment, nur keine echte GPT-Logit-Destillation.
Ein Lehrer derselben Familie kann einen stärkeren übertreffen. Wie gut der Bewertungsfaktor der Spur entsprach, war wichtiger als seine eigene Bewertungsscore.
Sparse top-k mit einem Schwanz ist ein praktikabler Kompromiss. Das Speichern der vollständigen Wortschatz-Logits wäre vollständiger, erfordert aber viel Speicherplatz und ist aufwendig in der Speicherung, Übertragung sowie beim Training. Zwanzig Token plus ein ausreichend großes Residualschwanz sorgen dafür, dass das Zieltoken fast überall sichtbar bleibt.
Das Mischen verschiedener Lehrmodelle ist besser als die Auswahl eines einzigen Gewinners. Das beste Ergebnis erzielte man, indem man Zeilen mit GPT 5.5-Medium-Proxy-Scores mit Zeilen mit Qwen-Selbst-Scores kombinierte und das Basismodell mit weichen Labels trainierte.
Was bleibt übrig
Hilft das also? Ja, unter bestimmten Bedingungen. In der besten Konfiguration verbesserte die top-k-Weich-Label-Destillation den 0,8B-SQL-Agenten: Zeilen mit GPT-Proxy-Scores in Kombination mit Zeilen mit Qwen-Selbst-Scores, die an das Basismodell unsloth/Qwen3.5-0.8B weitergegeben wurden, lösten 55 von 220 Aufgaben – deutlich mehr als der Student mit der off-policy-Hard-Token-Strategie (46/220) sowie die Kombination aus Hard-Token-Strategien (49/220).
Verstehen Sie das nicht als „sanfte Labels gewinnen immer“. Die Quelle des Lehrers, die Initialisierung des Schülers, die Wahrscheinlichkeitsanpassung sowie das Verhalten während des Ablaufs waren alle entscheidend – und der Lehrer, der am Ende vorn lag, war nicht unbedingt der mit der besten Bewertung. Was weiterhin schiefgeht, betrifft die Agentenfunktionen: falsche SQL-Anfragen, wiederholte Aktionen sowie unvollkommene Wiederherstellungsmechanismen innerhalb der Schleife.
Genau deshalb lohnt es sich, den Benchmark beizubehalten. Ein Schüler mag unter dem Druck des Lehrers gut abschneiden, stolpert aber dennoch, sobald er selbst handeln muss. Jede weitere Untersuchung sollte die Rahmenbedingungen konstant halten und prüfen, ob eine neue Trainingsmethode den tatsächlichen Ablauf verbessert – und nicht nur den Verlustwert im Offline-Modus.
Verwandte Literatur
- Training eines kleinen GPT anhand indischer Volksmärchen: Tokenisierer, Maske und Verlustfunktion: Ein GPT mit 9 M Parametern von Grund auf: Warum der Tokenisierer von GPT-2 bei Worten aus Volksmärchen versagt, wie BPE und die kausale Maske funktionieren und wie eine Batch-Verarbeitung 4.096 Verlustwerte für den nächsten Token liefert.
- Suche in Video- und Audiodateien nach Bedeutung: Aufbau eines multimodalen RAG-Systems mit Gemini Embedding 2: Wie ein einziger Embedding-Raum für Texte, Audio, Video und PDFs Transkriptionsprozesse ersetzt hat, zusammen mit Chunking, ChromaDB, Abfragerweiterung, Neubewertung und Schwellenwerten.