<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Dyfuzja — Inferownia</title><link>https://inferownia.pl/tags/dyfuzja/</link><description>Inferownia — polski hub wiedzy o lokalnym AI: uruchamianie modeli językowych na własnym sprzęcie, kwantyzacja, inferencja, małe modele, fine-tuning i RAG.</description><language>pl-PL</language><copyright>&#169; 2026 Inferownia</copyright><lastBuildDate>Wed, 22 Jul 2026 00:00:00 +0200</lastBuildDate><atom:link href="https://inferownia.pl/tags/dyfuzja/index.xml" rel="self" type="application/rss+xml"/><item><title>Autoregresja kontra dyfuzja: co wygrywa, gdy danych zaczyna brakować</title><link>https://inferownia.pl/naukowy/autoregresja-kontra-dyfuzja/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0200</pubDate><author>Mihir Prabhudesai</author><author>Mengning Wu</author><author>Amir Zadeh</author><author>Katerina Fragkiadaki</author><author>Deepak Pathak</author><category>małe-modele</category><guid>https://inferownia.pl/naukowy/autoregresja-kontra-dyfuzja/</guid><description>Każdy model, którego odpalasz u siebie, pisze tak samo: jeden token, od lewej do prawej, bez prawa cofnięcia. To autoregresja i rządzi całą sceną. Ale jest drugi sposób — dyfuzja, która tekst nie tyle pisze, co wywołuje z szumu. I okazuje się, że w jednym konkretnym reżimie, akurat tym twoim, bije autoregresję na głowę.</description><content:encoded><![CDATA[<p>Popatrz kiedyś uważnie, jak model pisze odpowiedź. Token po tokenie, od lewej do prawej,
równiutko jak maszyna do pisania. I jest w tym jedno ukryte okrucieństwo: <strong>on nie może się
cofnąć</strong>. Postawił słowo — zostaje. Zdanie skręciło nie tam, gdzie trzeba? Trudno, brnie
dalej, bo cała jego natura polega na tym, że patrzy tylko wstecz i zgaduje, co będzie
następne. Nigdy do przodu, nigdy w bok, nigdy „a wróćmy do środka i to popraw&quot;.</p>
<p>A teraz pomyśl, jak <em>ty</em> piszesz. Rzucasz szkielet myśli, wracasz do drugiego akapitu,
wpychasz słowo w środek pierwszego zdania, wykreślasz koniec, bo nie pasuje do początku.
Skaczesz. Cały czas widzisz całość i dłubiesz w niej z każdej strony naraz. To dwa zupełnie
różne sposoby dochodzenia do tego samego tekstu — i okazuje się, że oba da się w modelu
zaszyć. Ten pierwszy nazywa się <strong>autoregresja</strong> i siedzi w każdym GPT, Llamie i Qwenie,
jakiego ściągnąłeś. Ten drugi to <strong>dyfuzja</strong> — i przez długi czas był ciekawostką, na którą
poważni ludzie machali ręką.</p>
<p>Aż ktoś sprawdził, kiedy dyfuzja zaczyna wygrywać. I odpowiedź brzmi: <strong>dokładnie tam, gdzie
siedzisz ty</strong> — na małym korpusie, który trzeba przemielić wiele razy.</p>
<h2 id="dwa-sposoby-żeby-model-nauczył-się-mówić">Dwa sposoby, żeby model nauczył się mówić</h2>
<p>Autoregresja jest prosta do wytłumaczenia, bo działa jak zgadywanka w ciemno. Model dostaje
kawałek tekstu i ma jedno zadanie: <strong>przewidź następny token</strong>. Potem ten token doklejasz,
podajesz z powrotem i pytasz znowu. I znowu. Zdanie rośnie od lewej do prawej jak sopel.
Uwaga w środku jest <strong>przyczynowa</strong> — każdy token widzi tylko to, co przed nim, bo tak
uczono go zgadywać. To cała tajemnica ery, w której żyjemy.</p>
<p>Dyfuzja podchodzi do tego od drugiej strony i szczerze — pierwszy raz brzmi jak wariactwo.
Bierzesz gotowe zdanie i <strong>psujesz je</strong>: losowo zamieniasz część tokenów na specjalny znak
<code>[MASKA]</code>. Raz zamaskujesz co dziesiąty, raz prawie wszystkie. Model ma <strong>odgadnąć, co
schowałeś</strong> — naraz, na wszystkich pozycjach, patrząc na całość w obie strony. A potem, przy
generowaniu, odpalasz to od stanu, w którym <em>wszystko</em> jest zamaskowane, i <strong>odsłaniasz
tekst po kawałku</strong>, w kolejności pewności: najpierw tam, gdzie model jest najbardziej
przekonany, potem coraz dalej. Tekst nie tyle powstaje, co <strong>kondensuje się z szumu</strong>, jak
zdjęcie wychodzące z rozmycia.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>Jak to działa? Kluczowa różnica jest jedna: dyfuzja jest <strong>dwukierunkowa</strong>. Nie ma maski
przyczynowej, każda pozycja widzi wszystkie inne. Model może „naprawić środek&quot;, bo w ogóle
nie myśli w kategoriach lewo-prawo. To ta sama swoboda, którą masz ty, gdy skaczesz po
tekście — tyle że wpisana w architekturę.</p>
<h2 id="najpierw-zła-wiadomość-na-czystej-jakości-autoregresja-prowadzi">Najpierw zła wiadomość: na czystej jakości autoregresja prowadzi</h2>
<p>Powiedzmy sobie uczciwie, bo inaczej cała reszta zabrzmi jak marketing. Jeśli weźmiesz oba
podejścia, dasz im <strong>tyle samo parametrów i tyle samo danych</strong> i zmierzysz surową jakość
modelowania języka — autoregresja wygrywa. I to nie odrobinę.</p>
<p>Miarą jest <strong>perplexity</strong> — najprościej mówiąc: między iloma równie prawdopodobnymi słowami
model średnio się waha przy każdym tokenie. Perplexity 20 znaczy „jestem tak niepewny, jakbym
losował spośród dwudziestu opcji&quot;; perplexity 2 — „waham się między dwiema&quot;. Im niżej, tym
pewniej i tym lepiej (dla skali: model rzucający monetą przy słowniku ośmiu tysięcy tokenów
miałby perplexity około 8000). Na standardowym zbiorze OpenWebText dobrze dostrojony model
dyfuzyjny — MDLM, praca z recenzją z NeurIPS 2024 — schodzi do <strong>23,21</strong>.
Wcześniejszy dyfuzyjny SEDD miał 24,10, więc to postęp. Ale porządny model autoregresyjny na
tych samych danych siedzi na <strong>17,54</strong>.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> To jest przepaść, nie zaokrąglenie. Przez lata
właśnie ta liczba kazała wszystkim traktować dyfuzję tekstu jako akademicką zabawę: ładna
idea, gorszy wynik, po co.</p>
<p>Gdyby historia kończyła się tutaj, nie pisałbym tego wpisu. Ale ktoś zadał lepsze pytanie.</p>
<h2 id="zwrot-akcji-a-co-gdy-danych-jest-mało">Zwrot akcji: a co, gdy danych jest MAŁO?</h2>
<p>Cała ta zabawa w „tyle samo danych&quot; ma cichy skutek uboczny: zakłada, że danych masz
w bród i każdy token widzisz <strong>raz</strong>. Tymczasem świat idzie w drugą stronę. Publicznie
dostępnych, napisanych przez ludzi tekstów jest skończenie wiele, a prognozy mówią, że
przy obecnym tempie <strong>wyczerpiemy je około 2028 roku</strong>.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> Compute rośnie, danych nie
przybywa. Coraz częściej nie pytamy „ile danych&quot;, tylko „ile razy mogę bezpiecznie
przemielić te, które mam&quot;.</p>
<p>I dokładnie to sprawdzili Prabhudesai i współpracownicy w pracy z NeurIPS 2025 — z
tytułem, który mówi wszystko: <em>Diffusion Beats Autoregressive in Data-Constrained
Settings</em>. Wytrenowali oba typy modeli, wielokrotnie powtarzając ten sam ograniczony
korpus, i zmierzyli, kto dłużej wyciąga korzyść z powtórek. Wyniki są zaskakująco czyste:</p>
<ul>
<li>Przy <strong>małym budżecie obliczeń</strong>, blisko punktu Chinchilli, autoregresja startuje lepiej
— tak jak pokazywały liczby perplexity przed chwilą.</li>
<li>Ale <strong>gdy zaczynasz powtarzać dane przez epoki, przewaga się odwraca</strong>. Dyfuzja schodzi
niżej na walidacji i wypada lepiej na zadaniach.</li>
<li>W jednym z ich reżimów pula unikalnych danych jest ustawiona na <strong>100 milionów tokenów</strong>
(tyle mniej więcej ma niewielki, ale realny korpus) i mielona w kółko. Autoregresja wyciska
z tego maksimum przy jakichś <strong>50 epokach</strong> — czyli obejrzawszy te dane 50 razy — i potem
się przejada, zaczyna zapamiętywać zamiast uogólniać. Dyfuzja bije swój najlepszy wynik
dopiero przy <strong>500 epokach</strong>.<sup id="fnref1:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></li>
</ul>
<p>Pięćset epok. Dziesięć razy dłużej można karmić model tymi samymi danymi, zanim zacznie się
psuć.</p>
<h2 id="dlaczego-bo-maska-to-darmowa-augmentacja">Dlaczego? Bo maska to darmowa augmentacja</h2>
<p>Sekret nie jest magiczny, jest wręcz elegancki. Autoregresja zawsze zadaje modelowi <strong>to
samo pytanie</strong>: co jest następnym tokenem. Przy każdej epoce ten sam tekst, ten sam kierunek,
to samo zadanie. Po kilkudziesięciu powtórkach model zwyczajnie <strong>wkuwa</strong> — bo nic nowego
już z tego zdania nie wyciśnie.</p>
<p>Dyfuzja za każdym razem <strong>maskuje inaczej</strong>. Raz schowa początek, raz środek, raz co drugie
słowo. Ten sam fragment tekstu staje się za każdą epoką <strong>innym zadaniem</strong> — inną łamigłówką
do rozwiązania. To jest jak <strong>darmowa augmentacja danych</strong>, wpisana w samo objective. Model
nigdy nie widzi dokładnie tej samej próbki dwa razy, więc dłużej ma się czego uczyć, zanim
zacznie kuć na pamięć.<sup id="fnref2:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> Dwukierunkowość dokłada swoje: przewidywanie zasłoniętego środka
z obu stron to trudniejsze, bogatsze zadanie niż wieczne „zgadnij następne&quot;.</p>
<p>I tu robi się ciekawie dla ciebie. Bo kto trenuje na <strong>małym, ustalonym korpusie</strong>, który
z checią przemieli wiele razy? Nie OpenAI z całym internetem. <strong>Ty</strong> — jeśli kiedyś siądziesz
do trenowania własnego modelu na swoim zbiorze: korpusie jednego autora, archiwum forum,
tekstach w niszowym języku. To jest twój reżim, nie ich.</p>
<h2 id="trzecia-droga-block-diffusion-czyli-suwak-między-światami">Trzecia droga: block diffusion, czyli suwak między światami</h2>
<p>Zanim rzucisz się przepisywać wszystko na dyfuzję — jest haczyk, i jest sprytne wyjście.</p>
<p>Haczyk: czysta dyfuzja gubi dwie rzeczy, które w autoregresji masz za darmo. Po pierwsze,
<strong>KV-cache</strong> — sztuczkę, dzięki której model przy generowaniu nie przelicza w kółko całej
historii. Dyfuzja co krok zmienia cały bufor, więc nie ma czego cache&rsquo;ować, i inferencja
jest droższa. Po drugie, <strong>zmienną długość</strong> — dyfuzja musi z góry wiedzieć, ile tokenów
wygeneruje, podczas gdy autoregresja gada, aż powie „koniec&quot;.</p>
<p>Sprytne wyjście nazywa się <strong>block diffusion</strong> (BD3-LM, praca z ICLR 2025) i jest dokładnie
tym, na co wygląda: <strong>suwakiem między autoregresją a dyfuzją</strong>. Dzielisz tekst na bloki.
<em>Między</em> blokami idziesz autoregresyjnie, lewo do prawa — więc odzyskujesz KV-cache i możesz
generować dowolnie długo. <em>Wewnątrz</em> bloku robisz dyfuzję — więc zostaje ci dwukierunkowość
i równoległość. Ustawiasz długość bloku na jeden i masz czysty autoregresyjny model; ustawiasz
na całą sekwencję i masz czystą dyfuzję. Wszystko pomiędzy to hybryda. BD3-LM tym trickiem
ustanowił <strong>najlepszą perplexity wśród modeli dyfuzyjnych</strong>, mocno domykając lukę do
autoregresji.<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p>
<p>Czyli mapa jest taka: autoregresja — najlepsza surowa jakość i najprostsza inferencja.
Czysta dyfuzja — najwięcej wyciska z małych danych i generuje najrównoleglej. Block diffusion
— próbuje wziąć jedno i drugie.</p>
<h2 id="zrób-to-sam-no-prawie">Zrób to sam (no, prawie)</h2>
<p>Najlepsze jest to, że <strong>to nie jest już zabawa tylko dla laboratoriów</strong>. Dyfuzyjny model
językowy da się wytrenować od zera na jednej domowej karcie — objective to kilkanaście linii
kodu, a szkielet transformera zostaje ten sam, tylko zdejmujesz maskę przyczynową. Kod
wszystkich trzech podejść leży otwarty: <strong>LLaDA</strong> pokazała, że dyfuzja skaluje się do 8
miliardów parametrów trenowanych od zera i dogania Llamę 3 na benchmarkach (MMLU 65,9 kontra
65,4) — z zastrzeżeniem, że to na razie preprint, nie praca z recenzją.<sup id="fnref1:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> <strong>MDLM</strong> daje
czysty, minimalny punkt startu, a <strong>BD3-LM</strong> — wariant blokowy z gotowymi wagami.<sup id="fnref1:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><sup id="fnref1:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p>
<p>Jeśli miałbyś to kiedyś odpalić u siebie, zapamiętaj jedną rzecz z tego wpisu: <strong>dyfuzja nie
jest „lepsza&quot; ani „gorsza&quot; od autoregresji w próżni</strong>. Wygrywa albo przegrywa w zależności od
tego, ile masz unikalnych danych i ile razy zamierzasz je przemielić. Masz internet i jeden
przebieg? Bierz autoregresję. Masz mały, cenny zbiór, który chcesz wycisnąć do dna przez
setki epok? Wtedy maska, która za każdym razem pyta inaczej, zarobi na siebie z nawiązką.</p>
<h2 id="kiedy-studnia-wyschnie">Kiedy studnia wyschnie</h2>
<p>Jest w tym wszystkim pewna ironia losu. Przez dekadę autoregresja wygrywała, bo danych było
tyle, że pytanie „ile razy je powtórzyć&quot; w ogóle nie miało sensu — brało się kolejny bilion
tokenów i szło dalej. Dyfuzja czekała w kącie ze swoją dziwną sztuczką maskowania, do niczego
niepotrzebna, bo po co augmentować dane, których masz w nadmiarze.</p>
<p>Ale internet nie rośnie w nieskończoność, a karty graficzne owszem. Zbliżamy się do momentu,
w którym wygra nie ten model, który przeczyta najwięcej, tylko ten, który <strong>z każdego
przeczytanego zdania wyciśnie najwięcej</strong>. I wtedy okaże się, że ta dziwna sztuczka — psuć
tekst, żeby nauczyć się go składać z powrotem, za każdym razem inaczej — nie była
ciekawostką. Była zapasem na czasy, gdy studnia zacznie wysychać.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Nie i in., <em>Large Language Diffusion Models</em> (LLaDA), arXiv:2502.09992 (preprint, nierecenzowany) — pierwszy dyfuzyjny model językowy trenowany od zera na skali 8B, konkurencyjny z LLaMA3-8B (MMLU 65,9 vs 65,4; TruthfulQA 46,4 vs 44,0), bijący GPT-4o na zadaniu odwróconego wiersza dzięki dwukierunkowości. Traktować jako mocną przesłankę, nie zweryfikowany fakt. <a href="https://arxiv.org/abs/2502.09992">arxiv.org/abs/2502.09992</a>.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Sahoo i in., <em>Simple and Effective Masked Diffusion Language Models</em> (MDLM), NeurIPS 2024 — Rao-Blackwellizowane objective jako mieszanka klasycznych strat MLM; na OpenWebText perplexity 23,21 (MDLM) wobec 24,10 (SEDD) i 17,54 (model autoregresyjny), czyli nowy stan sztuki wśród dyfuzji przy wciąż istniejącej luce do AR. <a href="https://openreview.net/pdf?id=JESNfpRIGj">openreview.net/pdf?id=JESNfpRIGj</a>.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>Prabhudesai, Wu, Zadeh, Fragkiadaki, Pathak, <em>Diffusion Beats Autoregressive in Data-Constrained Settings</em>, NeurIPS 2025, arXiv:2507.15857 — autoregresja przewodzi przy małym compute (blisko optimum Chinchilli), lecz przy powtarzaniu danych przez epoki dyfuzja schodzi niżej na walidacji i lepiej wypada na zadaniach; w reżimie 100M tokenów dyfuzja osiąga minimum przy ~500 epokach wobec ~50 dla autoregresji; mechanizm to niejawna augmentacja przez różne maski/kolejności; praca podaje nowe prawa skalowania dyfuzji i próg compute, powyżej którego dyfuzja wygrywa. Prognoza wyczerpania publicznych danych ~2028. <a href="https://arxiv.org/abs/2507.15857">arxiv.org/abs/2507.15857</a>.&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref2:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>Arriola, Gokaslan, Chiu, Yang, Qi, Han, Sahoo, Kuleshov, <em>Block Diffusion: Interpolating Between Autoregressive and Diffusion Language Models</em> (BD3-LM), ICLR 2025 (Oral) — autoregresja między blokami, dyfuzja wewnątrz bloku; długość bloku interpoluje między oboma paradygmatami; odzyskuje KV-cache, generację zmiennej długości i równoległe próbkowanie; najlepsza perplexity wśród modeli dyfuzyjnych. <a href="https://arxiv.org/abs/2503.09573">arxiv.org/abs/2503.09573</a>.&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item></channel></rss>