Trefon.
← Wszystkie notatki 9 min

Destylacja: KL na logitach, temperatura i on-policy kontra off-policy

Jak mały model uczy się od dużego: miękkie cele i czynnik T², KL w przód kontra KL wsteczna i dlaczego kierunek ma znaczenie, destylacja na poziomie sekwencji kontra na logitach, koszt przechowywania logitów nauczyciela i dlaczego destylacja on-policy naprawia własne błędy ucznia.

Jacek Trefon
  • deep dive
  • destylacja
  • trening
  • dywergencja KL
Kod ↗

Model 4,5B nie nauczy się wszystkiego, co wie model 27B, ale od modelu 27B może nauczyć się dużo więcej niż z surowego tekstu. Wyjścia nauczyciela niosą informację, której nie niesie pojedynczy „poprawny” token. Destylacja to sposób, żeby ją przenieść. Poniżej matematyka i wybory, od których zależy, czy to działa.

Informację niosą miękkie cele

Trening na tekście daje jeden poprawny następny token na pozycję, czyli cel one-hot. Model nauczyciela daje pełny rozkład: „def” 70%, „class” 20%, „async” 8%. Te prawdopodobieństwa kandydatów z dalszych miejsc kodują to, co Hinton i in. (2015) nazwali ciemną wiedzą (dark knowledge): które błędne odpowiedzi są prawie dobre.

Żeby wydobyć jej więcej, logity obu modeli przed porównaniem zmiękcza się temperaturą T:

p_teacher = softmax(z_teacher / T)      p_student = softmax(z_student / T)
L_distill = T² · KL( p_teacher ‖ p_student )

Czynnik T² utrzymuje porównywalną wielkość gradientów przy różnych temperaturach, bo zmiękczanie skaluje gradienty w dół o czynnik 1/T². W praktyce człon destylacyjny łączy się ze zwykłą entropią krzyżową na prawdziwych tokenach.

Kierunek KL ma znaczenie

Dywergencja KL nie jest symetryczna, a kierunek zmienia to, co uczeń robi z masą prawdopodobieństwa, na której dopasowanie go nie stać:

  • KL w przód, KL(teacher ‖ student): uczeń dostaje karę wszędzie tam, gdzie nauczyciel ma masę, a uczeń nie. Rozprasza swoją masę, żeby pokryć wszystko, co nauczyciel mógłby powiedzieć: to pokrywanie mod. U małego ucznia może to oznaczać stawianie prawdopodobieństwa na odpowiedzi, których w rzeczywistości nie potrafi dobrze wytworzyć.
  • KL wsteczna, KL(student ‖ teacher): uczeń dostaje karę za umieszczanie masy tam, gdzie nauczyciel jej nie ma. Skupia się na głównych modach nauczyciela i porzuca resztę: to szukanie mod. MiniLLM (Gu i in., 2024) przekonuje, że lepiej pasuje to do uczniów generatywnych.

Uczniowi o ograniczonej pojemności KL wsteczna często daje czystsze wyjścia. KL w przód zachowuje więcej różnorodności. Wybieraj świadomie.

Logity czy sekwencje

  • Destylacja na logitach dopasowuje pełny rozkład na każdej pozycji. Niesie najwięcej informacji, ale nauczyciel i uczeń muszą mieć wspólny tokenizer, inaczej rozkłady do siebie nie pasują.
  • Destylacja na poziomie sekwencji (Kim i Rush, 2016) trenuje ucznia na tekście wygenerowanym przez nauczyciela. Działa przy różnych tokenizerach i jest po prostu nadzorowanym fine-tuningiem (SFT) na wyjściach nauczyciela, ale zachowuje tylko jedną wylosowaną ścieżkę i wyrzuca rozkład.

Ukrytym kosztem jest przechowywanie logitów. Pełny rozkład po słowniku około 152K tokenów to 304 KB na token w FP16. Na miliard tokenów treningowych to 304 TB. Typowe poprawki to trzymanie tylko prawdopodobieństw top-k (top-64 to około 384 bajtów na token, czyli 384 GB na miliard tokenów) albo uruchamianie nauczyciela online w trakcie treningu.

Off-policy kontra on-policy

Obie powyższe metody są off-policy: uczeń uczy się na sekwencjach, których sam nie napisał. Przy inferencji generuje własny tekst, popełnia własne błędy i trafia do stanów, na których nigdy nie trenował. Nie wie, jak wychodzić z błędów, których nigdy mu nie pokazano.

Destylacja on-policy usuwa tę rozbieżność. Uczeń generuje, a nauczyciel ocenia każdy token tego, co uczeń napisał. Standardowe sformułowanie to Generalised Knowledge Distillation (GKD, Agarwal i in., 2024). Uczeń uczy się, jak nauczyciel kontynuowałby od własnych błędów ucznia, a właśnie tego potrzebuje przy inferencji. Kosztem jest generowanie w trakcie treningu i nauczyciel trzymany w pamięci albo osiągalny na każdym kroku.

Destylacja rozumowania: co pokazał DeepSeek-R1

Najbardziej znany wynik destylacji ostatnich lat należy do DeepSeek. Razem z R1 opublikowali sześć mniejszych modeli, bazy Qwen i Llama od 1,5B do 70B parametrów. Każdy dostroili na około 800 tys. próbek wygenerowanych przez R1, zwykłą destylacją na poziomie sekwencji i bez RL na uczniu.

Wyróżniły się dwa wyniki:

  • Rozumowanie przenosi się przez tekst. Destylowane modele przejęły zachowanie długiego łańcucha myśli z samych śladów R1. DeepSeek podał, że R1-Distill-Qwen-32B wyprzedził o1-mini od OpenAI w kilku benchmarkach rozumowania.
  • Destylacja wygrała z RL dla małego modelu. Duże RL uruchomione wprost na bazie 32B dało wyraźnie gorsze wyniki niż destylacja R1 do tej samej bazy. Ślady mocnego nauczyciela były warte więcej niż samodzielne odkrywanie rozumowania przez ucznia przy tym budżecie obliczeń.

Praktyczny wniosek: jeśli istnieje zdolny nauczyciel, najpierw destyluj, a RL wydaj na to, co zostało (notatka o rozumowaniu i notatka o DeepSeek opisują resztę tej historii).

Jak to się wpisuje w mój model compass

Plan dla compass jest taki: wziąć dostrojonego Qwena, który dobrze radzi sobie w terminalu i w roli agenta, zdestylować większego Qwena do wariantów 4,5B, a potem przeprowadzić RL osobno dla każdego języka i stosu. Tę część opisuje notatka o RL. Destylacja to krok środkowy: przenosi możliwości w dół, do rozmiaru, który można dostarczać wewnątrz IDE, zanim RL wyostrzy je na zadaniach, w których o nagrodzie decydują testy. Moje narzędzia do destylacji są w repozytorium distiller.

Zasady, których się trzymam

  1. Ten sam tokenizer: destylacja na logitach; różne tokenizery: na poziomie sekwencji. Nie walcz z niedopasowaniem słowników.
  2. Przechowuj top-k, a nie pełne rozkłady, chyba że możesz uruchomić nauczyciela online.
  3. Kończ on-policy. Off-policy tanio prowadzi ucznia przez większość drogi; on-policy uczy go wychodzić z własnych błędów.
  4. Oceniaj na tym, co uczeń generuje, a nie na stracie. Niższa KL na tekście nauczyciela nie gwarantuje lepszych wyjść, gdy uczeń pisze sam.

Źródła: Hinton, Vinyals i Dean, Distilling the Knowledge in a Neural Network (2015). Kim i Rush, Sequence-Level Knowledge Distillation (2016). Gu i in., MiniLLM (ICLR 2024). Agarwal i in., On-Policy Distillation of Language Models (GKD, ICLR 2024). DeepSeek-AI, DeepSeek-R1 (2025). Rozmiary danych do przechowania policzono dla słownika o 152 064 tokenach.

Masz podobny problem?

Opisz swój problem

30-minutowa rozmowa techniczna z inżynierem, który to buduje. Bez działu sprzedaży, bez slajdów.