A mesterséges intelligencia fejlődése az utóbbi években jelentős előrelépéseket hozott a természetes nyelv feldolgozásában, különösen a nagy nyelvi modellek (LLM-ek) területén. Az olyan modellek, mint a ChatGPT vagy a Copilot, már széles körben használtak a programozás támogatásában. Ezek az úgynevezett autoregresszív (AR) modellek lépésről lépésre, balról jobbra generálják a kódot, szinte úgy, ahogy egy ember is írná. Egy új megközelítés azonban most alapjaiban kérdőjelezi meg ezt a lineáris gondolkodást: a diffúziós nyelvi modellek (dLLM-ek) nem sorban, hanem globálisan, iteratív finomítással generálnak tartalmat. De vajon valóban alkalmasabbak-e a programkód előállítására, mint a jól bevált AR modellek? És mit mutat az első komoly nyílt forráskódú kísérlet ezen a területen, a DiffuCoder?
Kódot írni nem mindig lineáris feladat
A programozás gyakran nem a sorban egymás után haladó gondolatmenetekről szól. A fejlesztők visszalépnek, módosítanak, átstrukturálnak – sokszor újra és újra átgondolnak korábban már „leírt” részeket. A diffúziós modellek működése – melyek egy teljes kódrészletet ismételten zajosítanak, majd finomítanak – természetszerűleg közelebb áll ehhez a nem lineáris munkafolyamathoz. Ennek megfelelően egyre többen vizsgálják, hogy ezek a modellek jobb alternatívát kínálhatnak-e a kódgenerálásra, különösen összetett feladatok esetén.
A DiffuCoder – az Apple és a Hongkongi Egyetem közös kutatásában – az első olyan nagyméretű (7 milliárd paraméteres) diffúziós modell, amelyet kifejezetten kódgenerálásra fejlesztettek és tanítottak. Különlegessége, hogy képes alkalmazkodni a generálás sorrendjéhez: nem ragaszkodik mereven a balról jobbra haladáshoz, hanem – a mintavételezési hőmérséklet függvényében – változtathat a tokenek előállítási sorrendjén.
A megközelítés nem új, az év elején az Inception Labs a Mercury modellcsaládon belül már bemutatta a Mercury Coder-t amely diffúziós eljárással volt képes kódot generálni. Erről részletesebben ebben a cikkben írtam. Az eljárás már akkor nagyon ígéretesnek tűnt a jelentés sebességnövekedés miatt, így nem csoda, hogy az Apple kutatói nem csak hivatkoznak erre a modellre, hanem gyakorlatilag ez volt a kiinduló pont számukra. Legalábbis mint olyan ami valós környezetben már bizonyította az eljárás hatékonyságát.
Mennyiben más ez, mint amit eddig ismertünk?
A kutatók a DiffuCoder viselkedését új mérőszámokkal írták le, melyek azt vizsgálják, hogy mennyire „autoregesszív” egy modell – azaz mennyire halad szigorúan sorban a generálás során. Megfigyeléseik szerint a diffúziós modellek természetes módon hajlamosak egyfajta „kauzális torzításra”, vagyis még mindig előnyben részesítik azokat a tokeneket, amelyek közvetlenül a prompt után következnek. Ez a torzítás valószínűleg a bemeneti adatok struktúrájából ered, de a működés finomabb szabályozásával (például magasabb mintavételezési hőmérséklettel) a modell fokozatosan eltávolodik ettől a sorrendiségtől, ami változatosabb és – több próbálkozásból választva – hatékonyabb kódgenerálást eredményezhet.
A hagyományos AR modellekben a mintavételezési hőmérséklet csak a kiválasztott tokenek sokféleségét befolyásolja. Diffúziós modelleknél viszont ez a sorrendiségre is hatással van: a modell nem csak mást választ, hanem máshol is kezdheti a generálást.
Az RL szerepe: tanulás jutalom alapján
A DiffuCoder fejlesztése során a kutatók egy négy szakaszból álló tanítási eljárást alkalmaztak, amelyben a hagyományos felügyelt finomhangolást egy újfajta megerősítéses tanulással egészítették ki. Ez utóbbihoz a „coupled-GRPO” nevű algoritmust használták, amely egy olyan optimalizációs eljárás, amely a diffúziós működés logikájához illeszkedik. Lényege, hogy a mintavétel során nem véletlenszerűen maszkolja a tokeneket, hanem egymást kiegészítő maszkokat használ – így minden token legalább egyszer értelmes környezetben kerül kiértékelésre.
Ez a megközelítés a mérések szerint javítja a modell teljesítményét több kódgenerálási benchmarkon is. Például a HumanEval vagy MBPP teszteken 4-7 százalékos pontosságnövekedés volt tapasztalható a coupled-GRPO alkalmazásával.
Megfontolt előrelépés – de nem forradalom
Fontos kiemelni, hogy a DiffuCoder és a hozzá hasonló diffúziós modellek egyelőre nem múlják felül egyértelműen a vezető AR modelleket. Sőt, az utasításalapú finomhangolás (instruction tuning) során az AR modellek látványosabb fejlődést mutatnak, míg a diffúziós modellek csak mérsékelt javulást érnek el. A diffúziós megközelítés jelenleg tehát inkább kiegészítő irány, semmint domináns paradigmaváltás. A fejlesztésük azonban betekintést nyújt abba, hogyan lehetne a jövő nyelvi modelljeit jobban illeszteni a nem-lineáris, komplex problémák megoldásához – ilyen például a programkód írása.
Mi következik?
A DiffuCoder létrehozása és nyílt forráskódú elérhetővé tétele (elérhető a GitHub-on) nem csupán egy új modell bemutatása. Egyúttal kutatási alapot is kínál arra, hogyan viselkednek a diffúziós nyelvi modellek, és hogyan lehet azokat tudatosan irányítani – például megerősítéses tanulással. A kódgenerálás tehát mostantól nem feltétlenül egyetlen szó szerint vett sorrendet követ. Az új megközelítés – ha nem is forradalmi – lehetőséget nyújt arra, hogy a gépek a saját „gondolkodási” sorrendjüket is alakítani tudják. Ez pedig hosszabb távon nemcsak a kódírásban, hanem más összetett tartalomgenerálási feladatokban is előnyt jelenthet.
A diffúziós modellek jövője még alakul, de már most fontos szereplővé váltak a nyelvi modellezés fejlődésében. A DiffuCoder – óvatos, de határozott lépés ebbe az irányba.