Chain of Thought, RLVR i Test-Time Compute w pomiarach
Te same 24 zadania: 0% poprawnie w 1,9 tokena, 100% w 145. Potem self-consistency, czyli odzyskiwanie trafności greedy decoding.
Na tej stronie
Dwadzieścia cztery dwuetapowe zadania tekstowe. Mały model — pół miliarda parametrów, ten sam co w Rozdziale 11 — dostaje każde z nich dwa razy.
Najpierw z prośbą o odpowiedź:
"...How many bolts are left? Reply with only the final number, nothing else."
0 / 24 correct 1.9 tokens per answerPotem z prośbą o odpowiedź, ale z pozwoleniem, by najpierw popracować:
"...How many bolts are left? Think step by step, then give the final
number on its own line."
24 / 24 correct 145.2 tokens per answerOd zera do stu procent. Ten sam model, te same wagi, te same zadania, to samo greedy decoding. Jedyna różnica polega na tym, że druga wersja mogła wyemitować 143 tokenów więcej, zanim zobowiązała się do podania liczby.
Ten rozdział jest o tej luce: czym naprawdę jest, jak daleko sięga, ile kosztuje i co się stało, gdy branża przestała prosić o nią w prompt i zaczęła trenować ją w modelu.
Model nie myśli. Liczy dłużej.
Link do sekcji: Model nie myśli. Liczy dłużej.Kusi, żeby powiedzieć, że druga wersja „się nad tym zastanowiła”. Oprzyj się temu, bo mechanizm jest jednocześnie prostszy i bardziej przydatny do zrozumienia.
transformer wykonuje stałą ilość obliczeń na każdy wygenerowany token. Jedno przejście w przód: te same warstwy, te same macierze, ta sama liczba operacji niezależnie od tego, czy pytanie brzmi ile to 2+2, czy udowodnij to twierdzenie. W modelu nie ma pokrętła „postaraj się bardziej przy tym przykładzie”.
Kiedy więc model ma odpowiedzieć natychmiast, całe dostępne dla niego obliczenie to jedno przejście w przód. Każda wielkość pośrednia musi zmieścić się w aktywacjach tego pojedynczego przejścia, a czegokolwiek nie zdoła tam policzyć, tego nie policzy.
Emitowanie tokenów to zmienia — i zmienia na dwa różne sposoby, które warto rozdzielić:
- Więcej obliczeń. Każdy wygenerowany token to kolejne pełne przejście w przód. Sto czterdzieści pięć tokenów pracy to sto czterdzieści pięć razy więcej arytmetyki niż przy natychmiastowej odpowiedzi.
- Uzewnętrzniona pamięć. Tokeny są zapisywane w kontekście, więc następne przejście może je odczytać.
5 × 13 = 65staje się faktem w wejściu, a nie wartością, którą model musi trzymać w aktywacji i przenosić dalej. Model używa własnego wyjścia jako brudnopisu.
Ten drugi punkt łatwo przeoczyć, a to on wyjaśnia, dlaczego praca musi zostać zapisana, żeby pomóc. Model poproszony, by „pomyślał o tym po cichu, a potem odpowiedział”, nie ma gdzie odłożyć tej myśli.
Nie ma w tym nic mistycznego, a mechanizm daje konkretną predykcję: chain of thought powinien pomagać najbardziej w problemach o strukturze szeregowej — gdzie krok drugi potrzebuje wyniku kroku pierwszego — a najmniej w problemach będących pojedynczym odczytem. Dokładnie to znajduje literatura i właśnie dlatego „pomyśl krok po kroku” nic nie daje przy jaka jest stolica Francji.
Chain of thought jako technika promptingu
Link do sekcji: Chain of thought jako technika promptinguTechnika pojawiła się w 2022 roku w dwóch częściach. Wei i in. pokazali, że dołączenie do prompt opracowanych przykładów — demonstracji, w których odpowiedź poprzedza rozumowanie — daje duże zyski na benchmarkach arytmetycznych i zdroworozsądkowych.1 Kojima i in. pokazali potem coś dziwniejszego: przykłady nie są potrzebne. Dopisanie „Let's think step by step” do zero-shot prompt przechwytuje dużą część tego samego zysku.2
To drugi wynik mówi, co się dzieje. Jeśli magiczna fraza odblokowuje zachowanie, to zachowanie było już w modelu — pretraining jest pełen opracowanych rozwiązań, a fraza jest wskaźnikiem do tego obszaru rozkładu. Chain of thought niczego modelu nie nauczył. Wybrał coś, co model już miał.
To ujęcie przewiduje też późniejszą dezaktualizację tej techniki, do czego wrócimy na końcu rozdziału.
Self-consistency i wynik, który mnie zaskoczył
Link do sekcji: Self-consistency i wynik, który mnie zaskoczyłOczywisty następny ruch: jeśli jeden łańcuch rozumowania może być błędny, wylosuj kilka i weź odpowiedź większości. To jest self-consistency.3 To ściśle większy wydatek — pełnych generacji zamiast jednej — a intuicja mówi, że błędne odpowiedzi rozpraszają się, podczas gdy poprawne się zgadzają.
Pomiar na 16 z tych samych zadań, sampling przy temperature 0,8, głosowanie większościowe po łańcuchach:
| trafność | skumulowane tokeny | tokeny na zadanie | |
|---|---|---|---|
| 1 | 81% | 2 952 | 185 |
| 2 | 81% | 5 618 | 351 |
| 3 | 100% | 8 417 | 526 |
| 4 | 100% | 11 103 | 694 |
| 5 | 100% | 13 933 | 871 |
Szesnaście zadań to mały mianownik, a zasada z Rozdziału 4 stosuje się do tej tabeli tak samo jak do każdej innej. 13 z 16 to 81% z 95-procentowym przedziałem Wilsona [57, 93]; 16 z 16 to 100% z [81, 100]. One się nakładają. Czytaj kształt krzywej, bo to jest znalezisko; nie czytaj dokładnego szczebla, na którym się wypłaszcza, bo szesnaście zadań nie pozwala go zlokalizować.
W tej tabeli są dwie rzeczy, a druga nie jest tym, czego się spodziewałem.
Krzywa wypłaszcza się przy . Przy trzeciej próbce trafność jest już przy suficie, a dwie pozostałe próbki niczego nie kupują, choć kosztują po 172 tokeny, 345 łącznie. To kształt każdej krzywej self-consistency opisywanej w literaturze — i dużo wcześniejszy, niż sugeruje narracja „więcej próbek to bardziej lepiej”.
A greedy decoding już miało 100%. Spójrz z powrotem na początek rozdziału: jeden łańcuch, bez sampling, 145 tokenów, 24/24. Sampling przy temperature 0,8 obniżył trafność do 81%, a self-consistency potrzebowało trzech generacji, żeby wrócić tam, gdzie pojedyncze zachłanne przejście już było — przy 3,6 razy większej liczbie tokenów, albo sześciokrotnie większej, jeśli uruchomisz przegląd do pięciu, nie wiedząc, gdzie krzywa się wypłaszcza.
To nie jest argument przeciw self-consistency. To precyzyjny opis tego, co ta technika robi: temperature kupuje różnorodność przez wstrzykiwanie błędów, a głosowanie usuwa błędy, które właśnie wstrzyknęła. W problemach, w których greedy decoding zawodzi — gdzie pojedynczy najbardziej prawdopodobny łańcuch prowadzi w złe miejsce, a mniej prawdopodobny jest poprawny — taka wymiana się opłaca i dlatego ta technika istnieje. W problemach, w których greedy już się udaje, jest to sposób na wydanie sześciokrotnego budżetu, żeby wyjść na zero.
Nikt nie publikuje drugiego przypadku, dlatego warto zmierzyć to na własnym zadaniu, zanim przyjmiesz technikę. To łatwe dwuetapowe zadania dla małego modelu; właśnie w takim reżimie odpowiedź wychodzi w ten sposób.
Od proszenia do trenowania
Link do sekcji: Od proszenia do trenowaniaWszystko do tej pory dzieje się w czasie prompt na modelu, który nigdy nie był do tego specjalnie trenowany. Przesunięcie, które doprowadziło do obecnej generacji modeli rozumujących, polegało na przeniesieniu tego do treningu — a klucz, który to umożliwił, jest węższy, niż brzmi.
Post-training z Rozdziału 11 potrzebował preferencji ludzi, bo pytanie „czy to była dobra odpowiedź?” nie ma programowej odpowiedzi. Ale dla niektórych pytań ma. Odpowiedź matematyczna albo równa się poprawnej wartości, albo nie. Kod albo przechodzi testy, albo nie. Dowód albo się sprawdza, albo nie.
Dla tych domen możesz zastąpić model nagrody weryfikatorem, a wszystko dalej od razu staje się lepsze: bez anotatorów, bez dopasowywania Bradley–Terry, bez reward hackingu takiego, jaki zmierzono w Rozdziale 11 — bo nie da się schlebiać testowi jednostkowemu. To jest reinforcement learning from verifiable rewards, i właśnie dla tego ustawienia zbudowano GRPO: wylosuj grupę prób rozwiązania tego samego problemu, sprawdź każdą z nich i użyj średniego wyniku grupy jako baseline. Bez krytyka, bez anotatora, bez modelu nagrody. Tylko program, który mówi: dobrze albo źle.
Outcome reward. Oceniaj tylko końcową odpowiedź. Tanie — porównanie stringów — i ma oczywistą dziurę: rozwiązanie, które dochodzi do właściwej liczby przez błędne rozumowanie, jest nagradzane dokładnie tak samo jak poprawne, więc polityka może swobodnie uczyć się wiarygodnie wyglądających bzdur, które akurat trafiają.
Process reward. Oceniaj każdy krok. Lightman i in.5 zbudowali zbiór danych 800 000 oznaczonych przez ludzi kroków rozumowania, aby trenować model, który to robi, i pokazali, że znacząco przewyższa on nadzór po wyniku na trudnej matematyce. Koszt jest w nazwie: ktoś oznaczył 800 000 kroków.
Wynik, który przeformułował pole, przyszedł od DeepSeek na początku 2025 roku.6 Wzięli model bazowy i zastosowali reinforcement learning with verifiable rewards bezpośrednio, bez wcześniejszego etapu supervised fine-tuning — etapu, który Rozdział 11 przedstawia jako fundament wszystkiego. Długie łańcuchy rozumowania i tak się wyłoniły. Podobnie zachowania, których nikt nie trenował: model zaczął ponownie sprawdzać własne kroki i, w najczęściej cytowanym fragmencie artykułu, spontanicznie przemyślał podejście w połowie rozwiązania.
Uczciwa interpretacja nie brzmi: rozumowanie jest magią. Brzmi: kiedy jedyną rzeczą nagradzaną jest bycie poprawnym, a poprawność przy trudnym problemie wymaga przepracowania go, to właśnie przepracowanie znajduje optymalizator — łącznie z tymi częściami przepracowywania, które robią też ludzie, bo wymaga ich problem, a nie dlatego, że ktokolwiek ich nauczył.
Tokeny rozumowania to pozycja na rachunku
Link do sekcji: Tokeny rozumowania to pozycja na rachunkuPraktyczna konsekwencja tego wszystkiego jest taka, że model rozumujący produkuje tokeny, o które prosisz, i tokeny, o które nie prosisz — a płacisz za jedne i drugie.
Dostawcy obsługują to różnie, a różnica ma znaczenie:
- Większość API liczy tokeny rozumowania wewnątrz liczby output token. Twój rachunek i limit
max_tokensobejmują też myślenie, którego nigdy nie widzisz. - Google Gemini raportuje thinking tokens jako oddzielne pole, poza standardową liczbą output.
To prawdziwa niekompatybilność między dwoma sposobami liczenia tej samej rzeczy, a każdy kod, który oblicza koszt albo wymusza budżet między dostawcami, musi ją znormalizować. Rozdział 16 to miejsce, w którym staje się to pieniędzmi, a Rozdział 23 — budżetem, który możesz egzekwować.
Druga konsekwencja dotyczy opóźnienia i zaskakuje ludzi za pierwszym razem. Czas modelu rozumującego do pierwszego widocznego tokena obejmuje całe jego myślenie, więc żądanie, które przez osiem sekund niczego nie streamuje, a potem odpowiada w jedną sekundę, nie jest zawieszonym połączeniem — to model pracuje. Każdy interfejs, który przez osiem sekund pokazuje spinner bez wyjaśnienia, ma problem projektowy, nie sieciowy.
Kiedy „think step by step” przestaje pomagać
Link do sekcji: Kiedy „think step by step” przestaje pomagaćNa koniec ostrzeżenie, bo to najczęstszy sposób błędnego stosowania materiału z tego rozdziału.
Wszystko w pierwszej połowie to technika zmuszania modelu, który nie był trenowany do rozumowania, by mimo to produkował rozumowanie. Modele trenowane z RLVR już to robią: emitują własną pracę, we własnej długości, przed odpowiedzią. Mówienie takiemu modelowi, żeby myślał krok po kroku, jest w najlepszym razie redundantne, a w najgorszym szkodliwe — może wyprodukować krótki, prompt-kształtny łańcuch zamiast dłuższego, który model wygenerowałby sam, i niektórzy dostawcy dokumentują dokładnie to.
To samo dotyczy rozbudowanych rusztowań rozumowania budowanych w kodzie aplikacji. prompt, który prowadzi model przez drzewo decyzyjne, po którym model i tak porusza się wewnętrznie, wydaje twoje tokeny, żeby ograniczyć zachowanie wytrenowane w modelu. To pierwsze wystąpienie motywu, który będzie przewijał się przez resztę kursu: techniki, które były niezbędne w 2022 roku, do 2025 stały się przesądem, a jedynym sposobem, żeby dziś odróżnić jedne od drugich dla twojego modelu, jest zmierzyć oba warianty.
Rozdział 15 to miejsce, w którym ten pomiar staje się dyscypliną, a nie opinią.
Dokąd to prowadzi
Link do sekcji: Dokąd to prowadziRozumowanie ma niewygodną właściwość: jest jedną zdolnością, której koszt skaluje się z trudnością pytania. Model, który myśli przez dziewięćset tokenów, wykonuje dziewięćset przejść w przód, trzyma rosnący cache w pamięci dla nich wszystkich i zajmuje GPU na cały czas.
To sprawia, że ekonomia serwowania modelu rozumującego jest wyraźnie gorsza niż serwowania modelu czatowego, a zestaw szczegółów implementacyjnych zamienia w różnicę między produktem opłacalnym i nieopłacalnym: jak cache przeszłych keys i values jest przechowywany i ponownie używany, ile żądań może współdzielić przejście w przód oraz jakiej precyzji naprawdę potrzebują wagi.
Rozdział 13 jest ostatnim, w którym model jest obiektem w twojej pamięci, a nie usługą za portem, i dotyczy tego, jak uczynić ten obiekt wystarczająco tanim do serwowania. Realizuje też obietnicę z tego rozdziału: speculative decoding, które produkuje kilka tokenów za mniej więcej cenę jednego dzięki temu, że mały model zgaduje, a duży sprawdza — trik, który ma sens dopiero wtedy, gdy zobaczysz, jak duża część przejścia w przód upływa na czekaniu na pamięć, a nie na arytmetyce.
Źródła i metoda
Link do sekcji: Źródła i metodaWszystkie pomiary w tym rozdziale pochodzą z Qwen/Qwen2.5-0.5B-Instruct na 24 wygenerowanych dwuetapowych zadaniach tekstowych, z greedy decoding z wyjątkiem miejsc, gdzie podano sampling, przy zerowej liczbie generacji uciętych przez użyte limity tokenów. Są odtwarzalne i dotyczą małego modelu na łatwych problemach: czytaj wynik self-consistency jako demonstrację mechanizmu, nie jako benchmark. Rozdział 18 notatek z wykładów CS229 oraz rozdział 12 kursu Hugging Face LLM Course omawiają ten materiał na większych modelach i właściwych benchmarkach.
Przypisy
Link do sekcji: Przypisy-
Wei, J. et al. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903 (2022). ↩
-
Kojima, T., Gu, S. S., Reid, M., Matsuo, Y. and Iwasawa, Y. Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916 (2022). Wynik „let's think step by step”. ↩
-
Wang, X. et al. Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171 (2022). ↩
-
Yao, S. et al. Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601 (2023). ↩
-
Lightman, H. et al. Let's Verify Step by Step. arXiv:2305.20050 (2023). Wprowadza PRM800K, zbiór danych nadzoru procesu obejmujący 800 000 kroków. ↩
-
DeepSeek-AI. DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning. arXiv:2501.12948 (2025). Wynik R1-Zero — reinforcement learning zastosowany bezpośrednio do modelu bazowego, bez etapu supervised fine-tuning — znajduje się w sekcji 2.2. ↩
-
Snell, C., Lee, J., Xu, K. and Kumar, A. Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters. arXiv:2408.03314 (2024). ↩