Destylacja z miękkimi etykietami dla agenta SQL o pojemności 0,8 miliarda: dlaczego słabszy nauczyciel Qwen zwyciężył
Dokonanie drobnej optymalizacji LoRA na podstawie miękkich etykiet typu top-k z zamrożonych śladów pozwoliło agentowi SQL o pojemności 0,8 miliarda parametrów rozwiązać 55 z 220 zadań, a słabszy model Qwen przewyższył silniejszy model GPT.
Źródła: Small-Model Distillation — Part 2: Off-Policy Soft-Label KD for a 0.8B SQL Agent
Wersja skrócona
W poprzedniej próbie agent SQL o wielkości 0,8B, pracujący nad 1 z 220 zadań, przechodził od rozwiązania 1 zadania do 46 poprzez kopiowanie większego „nauczyciela” po jednym tokenie na raz. Tym razem zmienia się tylko jedna rzecz. Co się stanie, jeśli uczeń zobaczy również część niepewności „nauczyciela”, a nie tylko token, który ostatecznie wybrał? Wszystko inne pozostaje bez zmian: narzędzie do treningu, ocena 220 zadań, schemat działań, uczeń o wielkości 0,8B oraz ustawienia do drobnej kalibracji LoRA. Tylko sygnał uczenia się ulega zmianie.
Zamrożone ślady „nauczyciela” zostały ponownie ocenione. W każdej pozycji zapisywano 20 najwyższych prawdopodobieństw tokenów, wraz z niewielką ilością reprezentującą wszystko inne. Następnie porównano zwykły trening z wagami dla twardych tokenów z metodą destylacji miękkich etykiet typu top-k. Najlepsza próba rozwiązała 55 z 220 zadań, podczas gdy uczeń używający twardych tokenów rozwiązał 46 zadań, a połączona próba z twardymi tokenami – 49 zadań.
Liczba główna nie jest najciekawszą częścią. Miękkie etykiety pogorszyły sytuację w dwóch z ośmiu prób wykonywanych z jednego źródła. Najlepszym nauczycielem również nie był najsilniejszy model. Qwen, słabszy model z tej samej rodziny o wyniku 96/220, znacznie dokładniej naśladował własne ślady niż silniejszy model GPT (115/220), dzięki czemu jego prawdopodobieństwa zapewniały uczniowi bardziej klarowną lekcję. Prawdziwy sukces przyniosło połączenie obu źródeł.
Należy od razu zaznaczyć jedną zastrzeżenie: prawdopodobieństwa tokenów samego GPT nigdy nie były dostępne. Ślady GPT zostały tutaj ocenione przez Qwen, co czyni je jedynie zamiennikiem, a nie prawdziwą destylacją logitów GPT.
Co było testowane
Głównym celem jest poprawa małych modeli w wykonywaniu specyficznych zadań. Agentem jest ten sam co wcześniej – agent do naprawy zapytań SQL. Otrzymuje opis problemu użytkownika wraz z błędnym zapytaniem SQL, może przeglądać bazę danych SQLite, wykonywać zapytania diagnostyczne, analizować wyniki i wysyłać poprawione wersje zapytań. Ocena wynika z ukrytych, deterministycznych testów, bez udziału żadnego sędziego opartego na modelach językowych.
Wcześniejsze testy z użyciem hard-tokenów już pokazały, że mały model potrafi obsługiwać taki cykl działania. Nieodtunowany model bazowy głównie powtarzał te same działania i nigdy nic nie wysyłał. Po treningu SFT z użyciem hard-tokenów częściej przeglądał bazę danych, wykonywał zapytania i wysyłał poprawione wyniki.
Szkolenie z użyciem trudnych tokenów to prymitywny narzędzie. Uczeń ma za zadanie odtworzyć dowolny token napisany przez nauczyciela, bez żadnych wskazówek dotyczących tego, na ile nauczyciel był pewny swojego wyboru, co jeszcze wziął pod uwagę, czy druga najlepsza opcja była niemal tak dobra. W przypadku SQL ta brakująca informacja może mieć znaczenie w nazwach tabel i kolumn, predykatach, połączeniach, wartościach literalnych oraz składni strukturalnych działań.
Zatem pytanie brzmiało, czy metoda destylacji miękkich etykiet typu top-k poprawia ten sam agent o pojemności 0,8 miliarda parametrów, gdy ślady działania i punkty odniesienia pozostają niezmienione.
Porównano dwa punkty wyjścia. Jeden to podstawowy model unsloth/Qwen3.5-0.8B. Drugim był adapter dla trudnych tokenów Qwen3.5-0.8B, wytrenowany wcześniej na udanych ścieżkach działania modelu Qwen3.5-35B-A3B 8-bit. Innymi słowy: czy szkolenie z miękkimi etykietami powinno rozpoczynać się od zera, czy kontynuować od modelu opartego na trudnych tokenach?
Zadanie agenta SQL
Układ jest identyczny jak w poprzedniej sesji z użyciem twardych tokenów. Każde zadanie obejmuje problem użytkownika, błędną zapytanie oraz bazę danych SQLite. Model wybiera spośród strukturyzowanych działań: sprawdzenie schematu, wykonywanie zapytań SQL lub wysłanie ostatecznego zapytania SQL. Zadanie uznaje się za rozwiązane tylko wtedy, gdy wysłane zapytanie SQL przechodzi ukryte testy.
Typowe, niewielkie, ale rzeczywiste zadanie: w bazie danych chinook użytkownik chce uzyskać najnowszy track_id, a następnie użyć go do filtrowania wierszy w tabeli track. Błędne zapytanie brzmi:
WITH vars AS (SELECT COUNT(*) AS vars_id FROM track)
SELECT * FROM track WHERE track_id = vars_id
Błąd nie ma żadnego związku z formatowaniem. COUNT(*) nie jest najnowszym identyfikatorem, więc konieczna jest korekta w postaci użycia MAX(track_id). Model musi to rozwiązać w ramach pętli narzędziowej: być może sprawdzić schemat, uruchomić sondę, przeczytać uzyskane dane, a na końcu wysłać zapytanie SQL w dokładnie takim ustrukturyzowanym formacie, jaki akceptuje narzędzie.
BAML, skrót od Boundary Markup Language, nadal otacza prompt warstwą ustrukturyzowanego wyniku. Określa ona strukturę decyzji i komponuje żądanie wysyłane do modelu. Proza nauczyciela w formie swobodnej nigdy nie stanowi części danych treningowych ucznia; model uczy się kanonicznych decyzji w formacie JSON, składających się z krótkiego draft oraz wykonywalnej akcji output.
{"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 ..."]}}
Każda ocena wykorzystywała ustawienia z poprzedniego wykonywania, więc jedyną zmianą był sygnał treningowy. Dwie ustawienia wymagają szczególnej uwagi. Limit sekwencji wynoszący 8192 to całkowity budżet przeznaczony na prompt i generowanie łącznie: prompt systemowy, zadanie, wcześniejsze działania, schemat, wyniki zapytania, instrukcje dotyczące struktury wyjścia oraz rezerwa na generowanie – wszystko to dzieli ten budżet. Maksymalna liczba wygenerowanych tokenów jest podawana oddzielnie, ponieważ ogranicza liczbę wywołań modelu. Uczeń może przetwarzać długie dane, ale musi przy każdej turze wykonać tylko jedno zwięzłe działanie. Wyniki są raportowane poprzez wyniki w terminalu oraz metryki zachowania, takie jak złożone odpowiedzi, błędne odpowiedzi, błędy SQL, zatrzymania spowodowane powtórnymi działaniami oraz zatrzymania po maksymalnej liczbie tur.
Najlepsi uczniowie nie ponoszą porażek głównie z powodu JSON. Bez problemu dochodzą do kroku submit_sql. Trudniejsza jest ocena treści SQL oraz odzyskiwanie kontroli, gdy próba kończy się niepowodzeniem.
Idea treningu
Destylacja tokenów twardych daje uczniowi jeden token docelowy na każdą pozycję. Zamiast tego destylacja miękkich etykiet dostarcza małą rozkładu prawdopodobieństwa. Załóżmy, że cel nauczyciela zawiera token tabeli, jak w ... FROM users .... Twarde szkolenie mówi, że następnym tokenem jest users. Szkolenie z miękkimi etykietami może również wskazać, jakie prawdopodobieństwo nauczyciel przypisał kilku bliskim alternatywom. Wybrany token nadal się liczy, ale uczeń dodatkowo widzi, że niektóre alternatywy były bliższe niż inne.
Zachowywanie prawdopodobieństw całego słownika jest kosztowne dla dużego modelu językowego. Słownik może zawierać setki tysięcy tokenów, a każda decyzja nauczyciela obejmuje wiele pozycji docelowych asystenta. Praktycznym kompromisem była wersja rzadka: 20 najwyższych prawdopodobieństw nauczyciela na każdą pozycję docelową asystenta, plus pozostała masa dla wszystkich innych tokenów.
Dlaczego zachować tylne wartości? Załóżmy, że zsumowane prawdopodobieństwa 20 najwyższych wartości wynoszą 0,996. Pozostałe 0,004 nadal należą do rozkładu nauczyciela, a podniesienie tych 20 wartości do 1,0 dałoby uczniowi zbyt pewnego siebie cel. Dlatego cel jest celowo tak skonstruowany, aby pamiętał, że część danych znajduje się poza tym, co zostało zachowane.
Metoda ta nadal jest typu off-policy. Uczeń uczy się na podstawie wcześniej zebranych śladów i nigdy nie podejmuje działań podczas procesu oceny.
Najprostszym sposobem na zrozumienie tej metody jest śledzenie jednego wiersza w całym procesie. Dla miękkich etykiet nie stworzono nowego środowiska agenta. Wykorzystano te same skuteczne decyzje nauczyciela z wcześniejszych prób z trajektorią hard-tokenów, przedstawiono je w tym samym formacie BAML i wzbogarto o informacje o prawdopodobieństwach dotyczących tokenów celu asystenta.
Oto wiersz dotyczący doskonalenia pod nadzorem z użyciem twardych tokenów (SFT). SFT polega na szkoleniu na parach wejście-wyjście, w których tylko tokeny odpowiedzi przyczyniają się do straty:
row = {
"messages": conversation_before_teacher_decision + [
{"role": "assistant", "content": canonical_decision_json(teacher_decision)}
],
"teacher_draft": teacher_decision.draft,
"teacher_action": teacher_decision.output,
}
Wiersz z miękkimi etykietami zachowuje te same kanoniczne komunikaty i metadane nauczyciela, a także uzyskuje oceny tokenów narzucone przez nauczyciela w pozycjach docelowych asystenta. „Narzucanie przez nauczyciela” oznacza tutaj podanie znanego tekstu docelowego modelowi prawdopodobieństwa i pytanie, token po tokenie, jak duże jest prawdopodobieństwo wystąpienia tego tekstu w danym kontekście. Zapisywane są prawdopodobieństwa logarytmiczne, a nie surowe, ponieważ są one liczbowo bezpieczniejsze do zapisu i wykorzystania do szkolenia:
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,
}
],
},
}
Moduł oceny ma jedynie jedno zadanie: bierze zamarznięty wiersz i umieszcza na nim prawdopodobieństwa tokenów. Od modułu Qwen3.5-35B-A3B 8-bit nie wymaga się nigdy tworzenia nowej decyzji. Prompty są renderowane bez odpowiedzi asystenta, pełna sekwencja – z nią, a docelowa część jest oceniana token po tokenie:
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)),
)
Maskowanie dotyczące wyłącznie asystenta nie uległo zmianie w porównaniu z modelem opartym na twardych tokenach. Tokeny promptu stanowią kontekst, natomiast tokeny docelowe asystenta służą do nadzoru. Jest to ważniejsze w przypadku agenta niż w zwykłym odpowiadaniu na pytania, ponieważ prompt zawiera informacje o schemacie, wcześniejsze wyniki narzędzi oraz wyniki SQL. Te tokeny mają służyć jako podstawa do podejmowania decyzji, a nie do ich przewidywania:
labels = full_ids.copy()
labels[: len(prompt_ids)] = -100
hard_ce = cross_entropy(student_logits, labels)
Szkolenie wymaga również więcej tensorów niż zwykłe SFT. Partia danych zawiera jak zwykle input_ids, attention_mask oraz zamaskowane labels, a ponadto obejmuje wagę dla każdej pozycji, identyfikatory tokenów z top-k wraz z ich logowymi prawdopodobieństwami, maskę dla tych k pozycji oraz pozostałe prawdopodobieństwa końcowe. Padding wprowadza wartości neutralne do nieaktywnych pozycji, dzięki czemu funkcja straty ignoruje je bez problemu:
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),
}
Warunkiem kontroli jest dopasowywanie za pomocą ciężarów hard-token. Jeden wybrany token pozostaje celem, ale krzywa entropii między tokenem asystenta a celem jest mnożona przez wagę pewności pobraną z prawdopodobieństwa logarytmicznego oceniającego dla tego celu. Scenariusz łatwy dla oceniającego może mieć większą wagę, natomiast mniej prawdopodobny – mniejszą:
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
Obcięcie na zakresie [0.25, 1.75] zapobiega temu, by pojedynczy, niestabilny wiersz przejął kontrolę nad całym zbiorem, przy czym pewne wiersze mogą nadal znacznie przewyższać wartością te niepewne.
W przypadku miękkich etykiet do funkcji straty dodawany jest termin odpowiadający prawdopodobieństwu. Poniżej znajduje się zarys jego struktury, a nie dokładny kod implementacyjny:
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
Informacje przepływają od nauczyciela do ucznia: to, co rozdziela nauczyciel, jest celem ucznia, a występuje kara, gdy przypisuje się zbyt małą prawdopodobieństwo tej masie. W rzeczywistym trenerze zarówno entropia krzyżowa, jak i destylacja są obliczane wyłącznie na przesuniętych pozycjach celowych asystenta.
Rzeczywiste szkolenie ucznia to nadal drobna kalibracja LoRA. LoRA, czyli adaptacja niskorankowa, pozostawia model bazowy w większości nieruchomym i dołącza małe, treningowe macierze adaptera do wybranych modułów uwagi i MLP. Dzięki temu możliwe jest tanie porównywanie wielu prób bez konieczności za każdym razem pełnej kalibracji modelu o wielkości 0,8 miliarda parametrów:
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)
Rzeczywista implementacja odpowiada temu: make_trainer_class zwraca podklasę Hugging Face Trainer, która stosuje zapisaną stratę typu sparse top-k w połączeniu ze stratą residual-tail. Zwróć uwagę, jak różni się to od online DistillationTrainer z TRL, w którym ocena nauczyciela odbywa się wewnątrz trenera. Wszystkie trzy wagi soft-label pozostały ustawione na 1,0: dla hard cross-entropy, distillation oraz temperature. Temperature zostało celowo pozostawione bez modyfikacji, ponieważ artefakty powstałe przy zastosowaniu sparse zostały zapisane przy wartości 1,0, a badanie skalowania temperature nie było celem.
Ocena na końcu stanowi prawdziwe wdrożenie, a nie przymusowe wpływanie nauczyciela. Wytrenowany adapter wraca do narzędzia SQL-agent i musi przetworzyć 220 zadań pozostawionych do testowania, działając po jednym kroku na raz:
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))
Wiele pomysłów na destylację offline zawodzi na tym ostatnim etapie. Test wymuszany przez nauczyciela sprawdza, czy uczeń potrafi przewidzieć, co nauczyciel zrobi dalej w kontekście stworzonym przez niego. Test wdrożeniowy sprawdza, czy uczeń potrafi pogodzić się ze swoimi wcześniejszymi wyborami, wybrać przydatne pytania, uniknąć powtórzeń i dostarczyć poprawny kod SQL. Tutaj liczy się tylko druga liczba.
Jak przebiega eksperyment
Łatwo byłoby to potraktować jako destylację typu on-policy, ale tak nie jest. Nic z tego, co generuje uczeń, nie jest oceniane. Uczeń uczy się dopiero później na podstawie śladów, które nauczyciel już wcześniej stworzył.
Dane pochodzą z oceny tras zakończonych pomyślnie w stanie zamrożonym. Działania nauczyciela już istnieją, a model prawdopodobieństwa jedynie określa, jak prawdopodobne wydaje się każde wybrane token w danym kontekście. Nigdy nie tworzy on nowej decyzji. Dwa zestawy danych poddane ocenie były trzymane oddzielnie (trasy GPT ocenione przez Qwen, trasy Qwen ocenione przez Qwen) i każdy z nich był filtrowany pod kątem długości całej zrenderowanej sekwencji, ponieważ obserwacje schematu oraz wcześniejsze wyniki narzędzi stanowią część tego, co uczeń musi przyswoić, a nie tylko ostateczna odpowiedź. Granica: trasy GPT są uważane za ocenione przez Qwen-proxy i nie zostały ocenione za pomocą własnych prawdopodobieństw GPT, a uczeń nigdy nie podejmuje żadnych działań podczas procesu oceny.
Na dane poddane ocenie zastosowano trzy warianty szkolenia:
- Dopasowywanie z wagami dla twardych tokenów (metoda kontrolna). Wybierany jest jeden token na pozycję, przy czym każdy wiersz jest ważony według poziomu pewności oceniającego. Jest to SFT z regulatorem pewności. Granica: nie jest to destylacja miękkich etykiet, ponieważ uczeń widzi wagę, a nigdy rozkład top-k.
- Destylacja miękkich etykiet top-k (metoda testowana). Ten sam twardy cel w połączeniu z drugim sygnałem, który każe uczniowi rozproszyć prawdopodobieństwo między najlepsze k alternatywy widziane przez oceniającego, zachowując pozostałą masę dla wszystkiego innego. Granica: jest to metoda off-policy z przymusem ze strony nauczyciela na zamarzniętych śladach, a nauczyciel nigdy nie ocenia własnych próbek ucznia.
Mieszanie źródeł daje najczystszy i najmniej skomplikowany wynik: bardziej zróżnicowane udane przykłady oraz bogatszy cel na poziomie pojedynczych tokenów dają małemu modelowi podstawowemu więcej materiału do nauki niż każde z źródeł osobno.
Zbiór danych i filtrowanie
Przykłady od nauczycieli nie zostały celowo ponownie wygenerowane. Zostały zamrożone z sesji z użyciem trudnych tokenów, aby porównanie dotyczyło wyłącznie sygnału nadzoru, a nie nowej rundy generowania danych.
W tamtym etapie testowania pierwszej generacji obaj nauczyciele przeprowadzili te same 879 zadań szkoleniowych. GPT 5.5 medium odgadł 446 z 879 zadań, co dało 1046 wierszy wyników SFT. Qwen3.5-35B-A3B 8-bit odgadł 394 zadania, co dało 1232 wierszy, ponieważ jego udane ślady były dłuższe. W ocenie 220 zadań GPT 5.5 medium okazał się silniejszy – 115 punktów przy 96 u Qwena, więc w tym przypadku test Qwena stanowi porównanie w ramach tej samej rodziny modeli, a nie najskuteczniejszego nauczyciela.
Uwaga dotycząca zamienników ma znaczenie. Aby uzyskać uczciwe oceny dla GPT 5.5 medium, potrzebne byłyby własne prawdopodobieństwa tokenów tego modelu, które nie były dostępne. Dlatego eksperyment z śladami GPT stawia węższe pytanie: czy oceniający z rodziny Qwen dodaje coś przydatnego do wybranych działań GPT?
Dla każdego wiersza wyświetlono prompt BAML, który faktycznie został użyty przez system. Znany cel asystenta został następnie narzucony za pomocą Qwen3.5-35B-A3B 8-bit, a wyniki oceny tokenów zostały zapisane wyłącznie dla pozycji celu asystenta.
Przed jakimkolwiek szkoleniem należało sprawdzić dwie kwestie dotyczące danych ocenionych: jaki ich udział mieścił się w limicie 4096 tokenów oraz w jakim stopniu algorytm oceny Qwen zgadzał się z każdym źródłem danych. Im niższa wartość ujemnej log-prawdopodobieństwa, tym lepiej, ponieważ oznacza to, że model prawdopodobieństwa uważa docelowe działania za łatwiejsze do wyjaśnienia. Dlatego dane samoskalowane przez Qwen tak bardzo różnią się od danych skalowanych za pomocą proxy GPT: Qwen był znacznie bardziej pewny swoich własnych wyników niż wyników GPT 5.5 medium. Średnia ujemna log-prawdopodobieństwo docelowe wyniosła 0,297 dla wierszy samoskalowanych przez Qwen i 0,876 dla wierszy skalowanych za pomocą proxy GPT. Token docelowy znajdował się wśród 20 najlepszych przechowywanych wyników we wszystkich pozycjach samoskalowanych przez Qwen (100,00%) oraz w 98,56% pozycji skalowanych za pomocą proxy GPT.
Złączona zbiór rozpoczynał się od 2278 wierszy. Po filtrze 4096 tokenów pozostało 2253 wiersze, które podzielono na 2141 przeznaczonych do szkolenia i 112 do walidacji. Stałe nasienie przetasowało wiersze przed podziałem, aby zbiór walidacyjny nie odzwierciedlał kolejności źródeł.
Ustawienia szkolenia
Osiem prób utworzyło główną siatkę, pełne skrzyżowanie trzech opcji binarnych: który źródło śladu (proxy GPT czy Qwen), która metoda (waga ciężka czy lekka dla etykiet) oraz od którego „ucznia” zacząć (od wersji podstawowej czy od ciepłego startu z tokenami ciężkimi). Dwie dodatkowe próby, obie wykonywane na modelu podstawowym i obie na połączonych danych – jedna z wagą ciężką dla tokenów, a druga z lekkimi etykietami – dały łącznie dziesięciu „ucznia” przeszkolonych. Próby z ciepłym startem połączonym zostały pominięte. Pierwsze osiem pokazało, że ciepły start w dużej mierze zależy od źródła śladu, natomiast próby połączone miały na celu odpowiedź na prostsze pytanie: czy mieszanie nauczycieli pomaga w przypadku modelu podstawowego?
Hiperparametry szkolenia były zgodne z bazą trajektorii hard-token. Adaptery wykorzystywały LoRA o rzędzie 32 i wartości alfy 32 w projekcjach uwagi (q_proj, k_proj, v_proj, o_proj) oraz w projekcjach MLP (gate_proj, up_proj, down_proj). Inne ustawienia to szybkość uczenia się na poziomie 5e-5, partia jedna na urządzenie z 8 krokami akumulacji, trzy epoki, format bf16 na karcie GPU NVIDIA, biblioteka Unsloth oraz FlashAttention 2, o ile były dostępne. Pozostałe ustawienia obejmowały 5% podziału na dane walidacyjne, metodę packing off, seed 42 oraz ograniczenie długości sekwencji treningowych do 4096 tokenów.
Dla etykiet miękkich temperatura wynosiła 1,0, przy wadze 1,0 zarówno dla twardej entropii krzyżowej, jak i destylacji. Kod przechowuje zapisaną masę top-k wraz z masą pozostałej części, co jest prostym rozwiązaniem numerycznym dla prawdopodobieństw zserializowanych w sposób rozproszony.
Rozmiary serii nie były identyczne. Serie z oceną GPT proxy zostały wytrenowane na 990 wierszach, te z oceną Qwen na 1151, a połączone na 2141. Przy rozmiarze partii 1 i 8 krokach akumulacji trzy epoki przyniosły odpowiednio 372, 432 i 804 aktualizacje optymalizatora. W etykietach serii Base oznacza nietunowany model unsloth/Qwen3.5-0.8B, GPT proxy oznacza ślady pochodzące z GPT 5.5 medium ocenione przez Qwen3.5-35B-A3B 8-bit, Qwen self oznacza ślady modelu Qwen ocenione przez sam model, a Combined to połączone zbiory ocen przed rozpoczęciem treningu.
Należy uważać na straty walidacyjne. Mają one znaczenie w ramach jednego celu, ale wyniki badań z użyciem ciężkich wag oraz miękkich etykiet nie mogą być porównywane ze sobą, ponieważ ich straty zawierają różne składniki. Najniższa strata walidacyjna odnotowano w przypadku bazy Qwen z samouszeregowanymi ciężkimi wagami, która rozwiązała tylko 40 z 220 zadań, podczas gdy najlepszy wynik uzyskano w wyniku połączonego testu z miękkimi etykietami, mimo wyższej straty.
Przygotowania i treningi przeprowadzono na różnym sprzęcie. Komputer o dużej ilości pamięci był przydatny do lokalnego ładowania i oceniania modelu Qwen3.5-35B-A3B w formacie 8-bit, chociaż dokładna ocena z wykorzystaniem metody nauczyciela zajmowała około 60 minut dla śladów GPT i 41 minut dla śladów Qwen. Studenci trenowali na kartach graficznych NVIDIA. Te pojedyncze testy trwały około 23 do 30 minut każdy, natomiast większe, połączone testy zajmowały około 52 minut (z ciężkimi wagami) i 55 minut (z miękkimi etykietami).
Wyniki, uporządkowane według pytania
Pierwszy wykres próbował pokazać wszystko naraz i pomieszał dwa odrębne pytania: co się dzieje, gdy szkolenie rozpoczyna się od modelu bazowego, oraz co się dzieje, gdy kontynuuje się je od modelu trajektorii hard-token. Dlatego wyniki zostały podzielone według pytania badawczego.
Dla porównania, nauczyciele i punkty odniesienia w testowaniu z 220 zadaniami to: brak dopracowywania 1/220, uczeń hard-token 46/220, Qwen jako nauczyciel 96/220 oraz GPT jako nauczyciel 115/220. Celem eksperymentu z top-k soft-label nie było pokonanie nauczycieli, lecz sprawdzenie, czy bogatszy sygnał nadzoru może jeszcze bardziej poprawić wyniki uczeńa 0.8B przy tych samych warunkach.
Początek od modelu bazowego. Wszystkie przeprowadzone treningi przewyższyły wynik nietrainowanego modelu 1/220. Trening wyłącznie z użyciem GPT oraz wyłącznie Qwen dał podobne rezultaty – od 41 do 43 rozwiązanych zadań w zależności od metody. Połączenie obu źródeł wywołało większą różnicę: trening z użyciem ważonych trudnych tokenów dał 49/220, natomiast trening z użyciem miękkich etykiet top-k osiągnął 55/220, co stanowi mniej więcej jedną czwartą wszystkich zadań. Wyniki te są skromne w ujęciu bezwzględnym i dalekie od najlepszego wyniku nauczyciela, który wyniósł 115/220, ale istotne jest to, jak daleko model o pojemności 0,8 miliarda parametrów może się podnieść od niemal zerowego poziomu, a nie dorównywanie nauczycielowi. Biorąc pod uwagę start od modelu bazowego, wnioskiem jest korzystanie z obu „nauczycieli” – przy połączonych danych miękkie etykiety okazały się skuteczniejsze niż ważone trudne tokeny.
Kontynuując temat trudnych tokenów dla studenta. Tutaj sytuacja jest mniej jasna. Punkt kontrolny rozwiązał już 46/220 zadań. Dodatkowe szkolenie na śladach GPT z wagowanymi trudnymi tokenami doprowadziło go do wyniku 48/220, natomiast miękkie etykiety na tych samych śladach spowodowały spadek do 44/220. W przypadku śladów ocenianych przez Qwen wzorzec był odwrotny: wagowane trudne tokeny dały wynik 38/220, a miękkie etykiety wzrosły do 49/220.
Niespodziewany wynik: miękkie etykiety pomagały tylko wtedy, gdy oceniający i ślad byli zgodni. Qwen3.5-35B-A3B 8-bit okazał się słabszym „nauczycielem” z wynikiem 96/220 w porównaniu z 115/220 u GPT, jednak jego prawdopodobieństwa pasowały do jego własnych śladów, a miękkie etykiety działały skutecznie w tym przypadku (49/220), choć szkodziły przy śladach GPT ocenianych metodą zastępczą (44/220). Zgodność między oceną a śladem miała większe znaczenie niż sama siła „nauczyciela”.
Co zmieniło się w pętli agenta. Model bazowy prawie nigdy nie składał wniosków. Proces SFT z użyciem twardych tokenów nauczył go wchodzić do pętli i składać wnioski, ale wiele z tych wniosków było błędnych. Połączona sesja z miękkimi etykietami ponownie poprawiła wyniki i była najlepszą sesją ogółem. Mimo to model składał 171 zadań i rozwiązał 55 z nich, co oznacza, że 116 złożonych zapytań nie przeszło ukrytych testów, a ponadto wystąpiło 39 przerw spowodowanych powtórnymi działaniami.
Taki jest rzeczywisty obraz wyników. Model nie ponosi porażek głównie dlatego, że nie potrafi tworzyć ważnych działań BAML. Poraża się, ponieważ nadal podejmuje słabe decyzje w zakresie SQL i czasami utyka w pętli.
Najbardziej wiarygodnym wskaźnikiem zachowania była liczba zwrotów. Średnia liczba zwrotów w przypadku połączonego podejścia z miękkimi etykietami wyniosła 3,39, podczas gdy w przypadku metody ciepłego uruchomienia z twardymi tokenami była to 3,48 – różnica jest na tyle mała, że dodatkowe kroki nie mogą tłumaczyć tej poprawy. Lekko lepszy skład działań taką poprawę wyjaśnia: więcej poprawnych odpowiedzi niż przy ciepłym uruchomieniu, mniej błędnych niż w przypadku połączonego podejścia z ważonymi twardymi tokenami, a także mniej błędów SQL i mniej przerw spowodowanych osiągnięciem limitu zwrotów. Liczba wygenerowanych tokenów przy każdej próbie oceny nie była rejestrowana, dlatego nie podano żadnych danych dotyczących tokenów wyjściowych. Liczby, które można bezpiecznie podać, pochodzą z fazy szkolenia: ile było tokenów wejściowych i wyjściowych, całkowita długość sekwencji oraz stopień pokrycia metodą top-k.
Uwaga dotycząca czytania tabel za wykresami: „submitted” obejmuje zarówno poprawne, jak i błędne zgłoszenia, a „wrong submits” równa się submitted minus success. Kolumna „SQL-error tasks” nie jest wykluczająca – zadanie trafia do niej, jeśli którykolwiek z jego zapytań SQL wygenerował błąd w trakcie wykonywania, więc może pokrywać się z dowolnym ostatecznym wynikiem.
Analiza niepowodzeń
Gdyby oceniać wyłącznie na podstawie łącznego wyniku wykonywania modelu bazowego, wynik wydawałby się zbyt uporządkowany: nauczyciele o różnym poziomie skuteczności w połączeniu z miękkimi etykietami – sprawa zamknięta. Podzielone widoki nie są tak uporządkowane. Zaskakującym faktem jest to, że słabszy nauczyciel radził sobie lepiej niż silniejszy, ponieważ jego prawdopodobieństwa były zgodne z jego własnymi danymi. Miękkie etykiety odniosły największy sukces na ścieżkach Qwen z tej samej rodziny, a także wtedy, gdy połączono źródła danych. Mniej zyskały na danych GPT, które Qwen ocenił jedynie pośrednio, a także negatywnie wpłynęły na wyniki GPT w fazie rozgrzewki.
To jest prawdopodobne: prawdopodobieństwa 8-bitowe Qwen3.5-35B-A3B dobrze opisują działania tego modelu w formacie 8 bitów, więc model uczeń o pojemności 0.8B otrzymuje jaśniejszy sygnał do naśladowania.
Proces wdrażania zachowuje ostatnie słowo. Pytanie, które stawia nauczyciel, brzmi, czy uczeń potrafi odgadnąć kolejne działanie nauczyciela, gdy kontekst jest podobny do jego własnego. System testowy stawia trudniejsze wymagania: czy potrafi skorzystać z wcześniejszych swoich ruchów, wybrać sensowne próby, unikać pętli i zakończyć zadanie poprawnym kodem SQL? Są one powiązane, ale dalekie od bycia identycznymi.
Strata walidacyjna opowiada tę samą historię z innej perspektywy. Przy wskaźniku 55/220 połączony proces z miękkimi etykietami dał stratę walidacyjną na poziomie 0,5684, co jest wyższe niż 0,3478 uzyskane w przypadku połączonego procesu z twardymi tokenami, który rozwiązał 49 zadań. Najniższa strata, wynosząca 0,2544, odnotowano w przypadku podstawowego procesu Qwen z samodzielnie ocenianymi twardymi tokenami, który rozwiązał jedynie 40 z 220 zadań. Niska strata spowodowana interwencją nauczyciela nie oznaczała lepszego wyniku agenta.
Wynik uzyskany dzięki połączeniu metod nauczyciela dostarcza najwięcej informacji. Ślady GPT skłoniły ucznia do częstszego składania odpowiedzi. Ślady Qwen były łatwiejsze do oceny i pochodziły z tej samej rodziny, jednak powodowały więcej pętli. Połączony proces z miękkimi etykietami nie po prostu połączył to, co najlepsze z obu metod, a problemy z powtarzaniem się operacji nadal występowały. Mimo to jego liczba udanych rozwiązań była najwyższa, a w porównaniu z połączonym procesem z twardymi tokenami wystąpiło mniej błędów w wykonywaniu zapytań SQL oraz mniej epizodów zakończonych osiągnięciem limitu rund.
Kontrola typu weighted-hard miała swoją własną lekcję. Ważenie wierszy według pewności oceny jest tańsze niż dopasowywanie rzadkich rozkładów prawdopodobieństwa, a na danych do rozpoczęcia pracy z ocenami proxy dla GPT dała najlepsze wyniki. Nie potrafi jednak poinformować ucznia o sąsiednich alternatywach w każdej pozycji; mówi jedynie „skopiuj ten token mocniej lub słabiej”. Etykiety typu top-k soft nadają się w przypadkach, gdy oceniający odpowiada źródłu danych, a mieszanka danych jest na tyle zróżnicowana, że uczeń nie nadadaptuje się wyłącznie do stylu jednego nauczyciela.
Lekcje z sprzętu
Potrzebne były dwa rodzaje maszyn. Aby móc oceniać, trzeba było utrzymać Qwen3.5-35B-A3B w wersji 8-bitowej w pamięci i uruchamiać go na zamrożonych celach, dlatego sensowny okazał się Mac z dużą ilością pamięci RAM – 128 GB pamięci zintegrowanej, która mogła pomieścić kwantyzowanego nauczyciela. Nie był szybki, ale umożliwiał przeprowadzenie wszystkich przygotowań lokalnie, zanim zostanie wykorzystana płatna moc obliczeniowa GPU.
Trening wymagał czegoś przeciwnego. Dostrojenie LoRA polega na intensywnym wykorzystaniu macierzy, obejmującym kroki przetwarzania w obie strony, jądra uwagi oraz kroki optymalizatora, a karta GPU NVIDIA była znacznie szybsza pomimo mniejszej ilości pamięci – tensorzy te pozostawały w VRAM i były przetwarzane za pomocą jąder CUDA. Kluczową lekcją jest to, że pojemność i szybkość przetwarzania to odrębne problemy. Duża ilość pamięci RAM w systemie umożliwia przechowywanie i przygotowanie danych, natomiast VRAM karty GPU w połączeniu z CUDA pozwala szybko je trenować. Proces pracy ustalił się tak, że wszystko, co możliwe, wykonywano na Macu, a zdalna karta GPU uruchamiana była dopiero wtedy, gdy dane i skrypty były gotowe.
Lekcje
Destylacja z miękkimi etykietami zasługuje na wypróbowanie w celu drobnej kalibracji agenta, pod warunkiem oceny jej na podstawie testów w rzeczywistych warunkach. Niepewność na poziomie tokenów dostarcza więcej informacji niż tokeny „twarde”, ale nadal chodzi o lokalną nadzór, więc sama w sobie nie nauczy modelu, jak odzyskać się po błędnej próbie wywołania narzędzia, unikać pętli czy lepiej reagować po pojawieniu się nowych obserwacji.
Proxy-miękkie etykiety powinny być oznaczane uczciwie. Wiersze z GPT tutaj to nie prawdopodobieństwa samego GPT, lecz te ocenione za pomocą Qwen. To nadal przydatny eksperyment, choć nie jest to prawdziwa destylacja logitów GPT.
Nauczyciel z tej samej rodziny może przewyższyć silniejszego. To, na jak dobrze oceniający odpowiadał oryginałowi, miało większe znaczenie niż sama jego ocena.
Sparse top-k z dodatkowym wyrażeniem końcowym to praktyczny kompromis. Zachowanie pełnych wartości logits całego słownika zapewniłoby większą dokładność, ale wymagałoby dużo miejsca do przechowywania, transferu oraz trenowania. Dwadzieścia tokenów wraz z wystarczająco dużym wyrażeniem końcowym sprawia, że docelowy token pozostaje widoczny niemal wszędzie.
Mieszanie różnych metod uczenia przewyższa wybór jednej najlepszej. Najlepszy wynik uzyskano poprzez połączenie wierszy ocenionych metodą GPT 5.5 medium z wierszami ocenionymi metodą Qwen oraz trening modelu bazowego przy użyciu miękkich etykiet.
Jakie są ograniczenia
Czy to więc pomaga? Tak, w określonych warunkach. W najlepszym ustawieniu destylacja top-k z miękkimi etykietami poprawiła wyniki agenta SQL o pojemności 0,8 miliarda parametrów: wiersze ocenione metodą GPT połączone z wierszami ocenionymi metodą Qwen, podane do modelu bazowego unsloth/Qwen3.5-0.8B, rozwiązały 55 z 220 zadań, co wyraźnie przewyższa wyniki modelu opartego na twardych tokenach bez użycia specjalnych strategii (46/220) oraz modelu opartego wyłącznie na twardych tokenach (49/220).
Nie traktuj tego jako stwierdzenia, że „miękkie etykiety zawsze wygrywają”. Istotne były źródło nauczyciela, inicjalizacja ucznia, dopasowanie prawdopodobieństw oraz zachowanie podczas wykonywania pętli – a nauczyciel, który ostatecznie wygrał, nie miał najwyższej oceny. Nadal występują problemy związane z zachowaniem agenta: błędne zapytania SQL, powtarzające się działania oraz niepełne przywracanie stanu wewnątrz pętli.
Dlatego właśnie warto utrzymywać ten benchmark. Uczeń może wydawać się dobrze funkcjonować pod wpływem przymusu ze strony nauczyciela, ale nadal popełniać błędy, gdy musi działać samodzielnie. Każde dalsze badanie powinno zachować stałe warunki i sprawdzić, czy nowa idea treningowa poprawia rzeczywistą pracę pętli, a nie tylko straty w modelu offline.
Literatura pokrewna
- Szkolenie małego GPT na indyjskich opowieściach ludowych: tokenizer, maska i strata: GPT o 9 milionów parametrów stworzony od zera: dlaczego tokenizer GPT-2 zawodzi przy słowach z opowieści ludowych, jak działają BPE i maska przyczynowa oraz jak jedna partia danych daje 4 096 wartości straty dla następnego tokena.
- Szukanie wideo i audio według znaczenia: budowa multimodalnego systemu RAG z użyciem Gemini Embedding 2: Jak pojedyncza przestrzeń embeddingów dla tekstu, audio, wideo i plików PDF zastąpiła procesy transkrypcji, wraz z funkcjami dzielenia na fragmenty, ChromaDB, rozszerzania zapytań, ponownego sortowania i ustawiania progów.