"Attention Is All You Need" (2017)

Osam ljudi je htjelo popraviti Google Translate, a slučajno su napisali nacrt za ChatGPT.

poglavlje 17/2619 min čitanja2011 – 2019
ti@kronika:~$ ./sviraj k6_17_attention.mp3

# da, poglavlje ima pjesmu. ne, nitko ne zna zašto.

Rad se pojavljuje na arXivu u lipnju 2017., no do svečanog krštenja treba još pričekati — konferencija NIPS, mjesto gdje se svake godine skupe ljudi koji vjeruju da su strojevi na pragu razumijevanja svijeta, održava se tek u prosincu, u Long Beachu, Kalifornija, i tada vrvi radovima o slikama. Konvolucijske mreže (vrsta neuronske mreže koja sliku ne gleda kao cjelinu, nego je secira na male komadiće i traži uzorke u njima, otprilike kako bi ti prepoznao mačku po uhu, brku i repu, a ne po cijeloj fotografiji) prepoznaju mačke, pse, rakove kože, prometne znakove; sve što se dade nacrtati u pikselima, netko je već natjerao neuronsku mrežu da ga prepozna bolje od čovjeka. Deep learning je, u tom trenutku, slavljenik s naslovnica — pogledaj samo poglavlja 12 do 15 ove knjige i vidjet ćeš zabavu.

Ali jezik? Jezik se i dalje ponaša kao gost koji neće otići. Rečenica je slijed — riječ, pa riječ, pa riječ — i strojevi koji ga čitaju, RNN-ovi (kratica za „rekurentne neuronske mreže”, mreže koje pamte ono što su pročitale i to pamćenje guraju dalje, kao da prepisuješ rečenicu riječ po riječ i pri svakoj novoj riječi bacaš pogled na ono što si već napisao) i njihova sofisticiranija rodbina, LSTM-ovi, moraju ga gutati baš takvim redom, jednu riječ po jednu riječ, kao da čitaš telegram kroz slamku. Svaka nova riječ gura se u isto, jedno jedino stanje pamćenja — i to je problem, jer to stanje je sito. Do dvadesete riječi rečenice, prva se riječ već davno procurila kroz rupe. Prevedi dugu rečenicu s hrvatskog na engleski i stroj će ti na kraju zaboraviti kako je počela ta ista rečenica koju upravo prevodi.

Gore od toga: taj redoslijed čitanja, riječ po riječ, znači da se posao ne može paralelizirati — ne može se rastrgati na komadiće i riješiti odjednom, mora se čekati red. A upravo smo, u prethodnim poglavljima, ispratili GPU-ove kako konačno dobivaju posao dostojan njihove arhitekture — tisuće jezgri koje žele računati tisuće stvari istovremeno. RNN im dade jednu riječ, čeka da je sažvaču, pa dade drugu. Automobil sposoban za tristo na sat, zaglavljen u školskoj zoni.

U jednoj zgradi Googlea osmero ljudi — netko je tek doktorirao, netko je dugogodišnji istraživač, nitko od njih tada zvijezda kakvom će postati — muči se praktičnim, dosadno konkretnim zadatkom: kako prevoditi bolje. Ne kako stvoriti opću inteligenciju, ne kako promijeniti svijet — nego kako rečenicu s jednog jezika prebaciti na drugi, malo brže i malo točnije nego jučer. Ambicija veličine jedne linije u proračunskom planu, ništa više.

Iz tog dosadnog zadatka izlazi rad naslova drskog baš dovoljno da zvuči kao naslov ploče — jer i jest, posuđen od Beatlesa i njihove »All You Need Is Love« — te arhitekture koju nazivaju transformer. Riječ koja će za pet godina biti na naslovnicama, u to ljeto znači samo jedno: ovo je naša nova ideja, probajte je.

Ono što nitko u toj dvorani ne zna — vjerojatno ni sami autori, dok pakiraju slajdove za idući poster — jest da su upravo, u prolazu, rješavajući dosadan problem prijevoda, potpisali nacrt sljedećeg desetljeća.

Lipanj 2017. Zamisli da ti netko da rečenicu na engleskom i kaže: prevedi je, ali smiješ pročitati samo jednu riječ u trenutku, po redu, i sve što pročitaš moraš pamtiti u jednoj jedinoj bilježnici koja ima točno onoliko stranica koliko joj ti daš. Ne možeš se vratiti na početak rečenice da provjeriš je li se ona „it” na kraju odnosila na psa ili na loptu — to moraš znati napamet, iz glave, jer si to zapisao negdje na trećoj stranici prije dvadesetak riječi. E, tako je otprilike radio model koji se do 2017. smatrao najboljim rješenjem za obradu jezika — RNN, i njegov malo pametniji rođak LSTM.

Ideja iza RNN-a je, kad je skineš s pijedestala, sasvim ljudska: čitaš tekst riječ po riječ, kao što bi prstom pratio redove u knjizi, i za svaku riječ ažuriraš neko svoje ‘stanje’ — zbroj onoga što si do sad pokupio. Riječ uđe, stanje se malo promijeni, sljedeća riječ uđe, stanje se malo promijeni opet, i tako sve do kraja rečenice. Zvuči razumno. Zvuči skoro kao da je model naučio čitati. Problem je što je to stanje jedna torba, a ne police u ormaru — i što je rečenica dulja, torba je punija, a stvari koje si strpao na dno, one s početka rečenice, polako se gube pod novim naramkom riječi koje pristižu. Do dvadesete riječi model se često već ne sjeća baš ničega korisnog o petoj. Memorija kao sito — curi joj sadržaj dok ga puniš.

LSTM je taj problem malo popravio — dodao je ventile, sitne kapice koje odlučuju što se pamti i što se pušta da izblijedi — i to je bilo dovoljno dobro da desetljeće bude standard u strojnom prijevodu, prepoznavanju govora, svemu što ima oblik rečenice. Ali temeljni nedostatak nije riješio, samo ga je malo odgodio. Model je i dalje morao čitati riječ po riječ, redom, jednu za drugom, jer sljedeći korak ovisi o rezultatu prethodnog. To se zove sekvencijalna obrada, i zvuči kao tehnički detalj — dok se ne sjetiš što se u to isto vrijeme, u istoj zgradi, u istom desetljeću, događalo s hardverom.

Nigdje se to nije osjećalo bolnije nego u strojnom prijevodu — a to je, nezgodno po ovu priču, baš poligon na kojem će se sve odigrati. Google Translate je do tog trenutka bio impresivan i frustrirajući u istom dahu: prevede ti rečenicu razumljivo, ali negdje na sredini duže rečenice izgubi kontekst, zamijeni rod, promaši ton — kao netko koji simultano prevodi, ali je u tom trenu zapravo razmišljao o ručku. Ne zato što nije bio pametan model. Zato što je njegova memorija bila torba, ne polica, i zato što je morao čitati rečenicu kao da vozi kroz uski kanjon — jedno po jedno, bez skretanja, bez prečice.

I tu smo, ljeto 2017., s dvije stvari koje se ne slažu: hardver koji vrišti da može sve odjednom, i model koji inzistira na tome da radi jedno po jedno. Netko je morao riješiti taj razgovor glasova koji ne čuju jedan drugoga. Osam ljudi u Googleu, koji su tog trenutka najviše brinuli oko toga kako prevesti rečenicu s engleskog na njemački brže i bolje, upravo su bili na pragu da to riješe — samo što još nisu znali da rješavaju nešto puno veće od prijevoda.

Ideja: pažnja umjesto pamćenja
§ 02

Ideja: pažnja umjesto pamćenja

Dobro, problem znamo — čitanje riječ po riječ je sporo i zaboravljivo, GPU-ovi zijevaju od dosade, a prijevod je muka. Sad dolazi trenutak kad osmero ljudi u sobi (ili preko Google Docsa, budimo realni, ovo je 2017.) kaže: čekaj, zašto uopće čitamo redom?

Zamisli rečenicu koja u izvorniku, na engleskom, sadrži pravu jezičnu foru: „Sjeo je na obalu rijeke i izvadio novac iz banke.” Na engleskom se i obala i novčna institucija zovu isto — „bank” — pa ta riječ, sama za sebe, ne znači ništa određeno. Ti, kao čovjek koji razumije jezik, odmah znaš da je ovdje riječ o financijskoj instituciji, a ne o obali. Kako to znaš? Ne čekaš da ti netko naglas objasni — tvoj mozak, u djelić sekunde, pogleda cijelu rečenicu i uzme u obzir riječ „novac”. Ta riječ ti je „važnija” za razumijevanje „banke” nego, recimo, riječ „sjeo”. Nesvjesno si svakoj riječi u rečenici dodijelio težinu koliko je relevantna za onu koju trenutno tumačiš.

E, to točno radi attention (u prijevodu: „pažnja”, i to mu je i ime u samom naslovu rada). Samo što to radi kao matematiku, ne kao intuiciju. Za svaku riječ u ulazu, model računa: koliko sam relevantan tebi, tebi, tebi i tebi — svim ostalim riječima u rečenici, uključujući samog sebe. Rezultat je skup brojeva, težine pažnje, koji kažu: „banka” gleda „rijeka” i dodijeli joj, recimo, 0.05, a gleda „novac” i dodijeli mu 0.8. Kontekst, koji smo dosad opisivali kao nešto mistično i ljudsko, svodi se na — pazi sad — množenje matrica. Nije poetsko, ali radi.

Ono što je genijalno u ovoj priči — i tu dolazi obrat — jest da attention računanje ne mora ići redom. Svaka riječ gleda sve ostale riječi odjednom, ne jednu po jednu. Nema onog vlaka kakav poznaju stariji modeli, RNN-ovi, gdje moraš čekati da prethodna stanica bude obrađena da bi stigao do sljedeće. Kod transformera cijela rečenica se procesira paralelno — svaka riječ istovremeno računa svoj odnos prema svima ostalima. Ovo se zove self-attention: sama rečenica gleda samu sebe, riječ po riječ, ali sve odjednom, ne redom.

I tu se, dragi moj, zatvara krug koji smo otvorili u dvanaestom poglavlju ove knjige. Sjećaš se GPU-a, tih grafičkih kartica koje su htjele raditi tisuće stvari istovremeno, a dobivale su posao koji je htio da se radi jedna stvar za drugom? Cijelo desetljeće hardver je vrištao „dajte mi paralelni posao”, a softver je nudio red čekanja. Self-attention je taj posao. Konačno. Nema sekvencijalne ovisnosti, nema čekanja da prethodni korak završi — samo gomila matričnih množenja koja mogu ići u isto vrijeme na tisuću jezgri istog čipa. Hardver i ideja su se, nakon godina mimoilaženja, konačno sreli na istom sastanku i vjenčali se. GPU-i su već nekoliko godina prije, kroz konvolucijske mreže, dokazali da mogu raditi i nešto drugo osim eksplozija u pucačinama — ali s transformerom su, prvi put u tolikoj mjeri, radili točno ono za što su građeni — samo za jezik, ne za teksture.

Ali čekaj, tu postoji problem. Ako sve riječi gledaju sve odjednom, kako model zna da je „pas ugrizao čovjeka” nešto drugo od „čovjek ugrizao psa”? Ako se sve odvija paralelno, bez čitanja redom, redoslijed riječi lako može ispariti — a redoslijed je u jeziku, često, cijela poanta.

Rješenje je elegantno do te mjere da zvuči kao trik iz rukava mađioničara: pozicijsko kodiranje. Umjesto da model čita riječi po redu i time „pamti” gdje je koja, autori su svakoj poziciji u rečenici (prva riječ, druga, treća...) dodali jedinstveni matematički potpis — kombinaciju sinusa i kosinusa različitih frekvencija, ako baš hoćeš detalje, ali suštinski zamisli ga kao nevidljivi vodeni žig na svakoj riječi koji kaže „ja sam bio treći po redu”. Taj žig se jednostavno pribroji značenju riječi prije nego što uopće krene računanje pažnje. Model tako i dalje zna redoslijed, samo ga ne mora čitati redom da bi ga znao — dobiješ ga na poklon, ugrađenog u broj, i onda si slobodan gledati sve odjednom.

Ono što je bitno zapamtiti — jer ćemo se na ovo vraćati kroz cijelu sljedeću knjigu — jest da ova dva trika, pažnja bez redoslijeda i redoslijed bez čitanja, zajedno rješavaju točno onaj problem s kojim smo otvorili ovu priču. Model više ne pamti kroz usko grlo jednog „stanja” koje se prenosi riječ po riječ i polako trune kao pokvareni telefon. On jednostavno, u svakom trenutku, gleda cijelu rečenicu odjednom i računa što mu je važno. To se zove „attention”, pažnja. I baš zato je naslov rada koji dolazi na red bio toliko drzak — a drskost je, ispada, bila opravdana.

Naslov kao stav
§ 03

Naslov kao stav

Kad su akademici u zadnjem trenutku birali naslov rada, netko je bacio na stol rečenicu koju je pola planeta pjevalo pedesetak godina prije: Attention Is All You Need. All You Need Is Love, samo umjesto ljubavi — pažnja. Beatlesi, u referatu o strojnom prijevodu. Zamisli da predaješ diplomski rad i naslov mu je citat iz pjesme Beatlesa. U akademskom svijetu, gdje naslovi obično glase nešto poput »Empirijska analiza atencijskih mehanizama u sekvencijalnom modeliranju«, ovo je bilo skoro nasilje. Netko se u recenziji sigurno namrštio. Netko drugi se sigurno smijao. I to je bila poanta — naslov je bio štos, ali štos koji je govorio: ovi ljudi su toliko sigurni u ono što su napravili da se mogu petljati s Beatlesima umjesto s dosadnim akademskim žargonom.

A sigurni su i bili, s razlogom. Ono što je uslijedilo nije bio rad jednog genija koji je imao viziju u kadi. Bilo ih je osmero — Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan Gomez, Łukasz Kaiser, Illia Polosukhin — i u samom radu, na dnu prve stranice, mala fusnota kaže da su svi jednako zaslužni. Redoslijed imena je nasumičan. Nitko nije glavni autor koji je smislio ideju dok su ostali nosili kavu. To je rijetkost u znanosti, gdje se hijerarhija obično piše u samom poretku imena — prvi autor je taj koji je najviše radio, ili taj koji je najglasniji, ili taj čiji je mentor htio biti spomenut. Ovdje je poredak nasumičan kaos s napomenom »svi jednako«, kao da je osam ljudi sjelo za jedan stol i svatko rekao: dobro, dobro, nećemo se svađati oko toga tko je pametniji, samo završimo ovo.

Ono što je ta dijaspora dokazala, retroaktivno, jest da nitko od njih nije bio slučajni prolaznik koji se pukom srećom našao u pravoj sobi u pravom trenutku. Svako od njih razumjelo je ideju dovoljno duboko da je moglo otići i samostalno voditi sljedeći veliki projekt. „Attention Is All You Need” nije bio vrhunac njihovih karijera — bio je polazna stanica. Rijetko kad jedan rad funkcionira i kao krajnja točka jedne ideje i kao startna crta za osam paralelnih karijera, ali ovaj je uspio u oba.

Konferencija na kojoj je rad predstavljen, NIPS 2017. — najveći godišnji sabor svjetske AI zajednice, nešto kao Woodstock za ljude koji sanjaju u matricama — imala je tisuće posjetitelja i stotine radova. „Attention Is All You Need” bio je samo jedan od njih: nije dobio nagradu za najbolji rad te godine, nije imao red čekanja za svoj poster (na tim konferencijama znanstvenici satima stoje pored velikog plakata i objašnjavaju rad svakome tko prošeta pored) koji bi zaustavio promet po hodnicima. Bio je to samo dobar rad, dobro napisan, s pametnim naslovom. Trebalo je vrijeme da svijet shvati da je upravo pročitao nacrt za sljedeće desetljeće.

Zašto je promijenilo sve
§ 04

Zašto je promijenilo sve

Evo gdje priča prelazi iz „zgodno rješenje za prijevod” u „čekaj, ovo mijenja sve”. Jer se pokazalo nešto što nitko od osmero autora nije naglas obećao, a što je ispalo najvrjednija rečenica cijelog rada, samo napisana nevidljivom tintom: ova arhitektura ne prestaje rasti. Da razjasnimo — parametri su, grubo rečeno, brojevi koje model uči tijekom treniranja i pamti u sebi; njih je u modernim modelima milijarde, i svaki je malo zavrnuti gumbić koji određuje kako model reagira na ulaz. Baciš joj više tih gumbića, više teksta, više GPU-ova — i ne udari u zid. Nastavi se popravljati. Skoro dosadno linearno, kao da je neko fizikalno svojstvo, ne inženjerski trik. Kasnije će to dobiti ime, scaling laws, zakoni skaliranja, s grafovima i krivuljama i ozbiljnim tonom znanstvenog rada (o tome više kad dođemo do sedme knjige) — ali klica je posađena upravo ovdje, 2017., u radu koji je htio samo bolje prevoditi njemački u engleski.

I onda dolazi drugi udarac, još veći. Transformer nije arhitektura za jezik. Transformer je arhitektura za slijed. A slijed je, kad malo bolje pogledaš, skoro sve što nas zanima. Rečenica je slijed riječi. Slika je, ako je nasjeckaš na komadiće, slijed komadića. Programski kod je slijed tokena — token je samo komadić teksta na koji model reže ulaz, ponekad cijela riječ, ponekad samo dio riječi — s vlastitom gramatikom, strožom od bilo kojeg jezika. DNA je slijed baza. Šahovska partija je slijed poteza. Glazba je slijed nota. Netko je čak, jer zašto ne, natrenirao transformer na proteinskim sekvencama da predviđa kako će se molekula presložiti u prostoru — i radilo je zapanjujuće dobro. Osam ljudi je htjelo popraviti Google Translate. Napravili su opći stroj za bilo što što ima redoslijed. To je razlika između pronalaska boljeg čekića i pronalaska činjenice da je, ispada, sve na svijetu čavao.

Praktična posljedica: već iduće godine, 2018., transformer dobiva dvoje djece koja će ga učiniti poznatim ljudima koji nikad nisu čuli riječ „attention”. Google objavljuje BERT — transformer okrenut prema unutra, uči čitati rečenicu iz oba smjera odjednom da bolje razumije značenje; ime mu, ako te zanima, stoji za Bidirectional Encoder Representations from Transformers, što je samo kompliciran način da kažeš „čita rečenicu s obje strane da bolje shvati o čemu je riječ”. OpenAI, tada još relativno nepoznata neprofitna organizacija, objavljuje GPT — transformer okrenut prema van, uči predviđati sljedeću riječ, i to toliko dobro da će mu za nekoliko generacija to postati dovoljno za gotovo sve što tražiš od njega. Oboje su izravni potomci rada iz lipnja 2017. Oboje koriste, u osnovi, istu arhitekturu, samo drugačije posloženu. To ćemo detaljno rasparčati u sljedećoj knjizi, ali zapamti ovu rečenicu: GPT-ov T ne stoji ni za genije, ni za tajnu, ni za Google. Stoji za transformer. Cijela ta budućnost, chatbotovi, generatori slika, asistenti koji ti pišu mejlove, sjedi na kosturu koji je opisan u ovom jednom radu, ni dvadesetak stranica dugom.

Zato ova sekcija zaslužuje malo drugačiji ton od prethodne. Do sad smo objašnjavali kako stroj radi. Sad objašnjavamo zašto je bitno da radi baš tako. Univerzalnost nije neka usputna prednost, ona je razlog zašto ćeš sutra ujutro, kad otvoriš bilo koju aplikaciju s riječju „AI” u opisu, negdje duboko unutra pokrenuti varijaciju istog mehanizma pažnje koji je 2017. trebao samo prevesti rečenicu s engleskog na njemački. Svaki chatbot kojem se obraćaš, svaki AI asistent koji ti dovrši rečenicu, svaki alat koji ti generira sliku iz opisa — sve to negdje u trbuhu ima isti trik: svaka riječ, svaki piksel, svaki token gleda sve ostale odjednom i računa tko mu je važan. Nisu izmislili sto novih strojeva za sto novih problema. Izmislili su jedan, i onda su ga svi ostali samo presložili.

Ono što ostaje, i što priču vodi prema kraju ovog poglavlja, jest pitanje razmjera. Imaš ideju koja radi. Imaš arhitekturu koja se ne zamara vrstom podatka. Imaš dokaz da rast ne udara u zid. Sve što ti treba da od zgodnog akademskog rada dobiješ ChatGPT jest — više. Više novca, više strojeva, više teksta, i netko dovoljno lud da baci sve troje odjednom na jedan model i pusti ga da raste. To se neće dogoditi u ovoj knjizi. Ali vrata su, u ljeto 2017., ostala širom otvorena, i nitko još nije znao koliko će brzo nešto kroz njih proći.

Most u sljedeću eru
§ 05

Most u sljedeću eru

Rad je prvi put objavljen na arXivu — besplatnom internetskom repozitoriju gdje znanstvenici objavljuju radove i prije nego što ih ikoja komisija stigne pročitati i odobriti, pa je to nešto kao ladica u koju baciš rad čim ga završiš — u lipnju 2017., i mjesecima je tamo skupljao pristojan, ali ne spektakularan broj citata, prije nego što je u prosincu iste godine formalno predstavljen na NIPS-u (velikoj godišnjoj konferenciji o strojnom učenju), u gomili od nekoliko stotina drugih radova. Nekolicina istraživača u susjednim timovima pročitala ga je, kimnula, rekla „fora, paralelizacija” i vratila se svojim RNN-ovima. Nitko nije otvorio šampanjac. Nitko nije poslao interni mail s naslovom „ovo mijenja sve”. Osam ljudi je otišlo na pivo, možda, i to je vjerojatno bila cijela proslava.

Onda su se stvari počele događati brzo — ne odmah, ali brže nego što bilo koji od autora priznaje da je očekivao. Citati su iz desetaka prešli u stotine, pa u tisuće, pa u desetke tisuća, pa u broj koji više nitko ne broji jer je postao besmislen kao mjera. Danas je „Attention Is All You Need” jedan od najcitiranijih znanstvenih radova ovog stoljeća, u bilo kojem polju — fizika, biologija, ekonomija, svejedno. Rad o strojnom prijevodu postao je referentna točka za sve, od pisanja pjesama do slaganja proteina. Eksponencijalna krivulja, ona ista koju smo gledali kod tranzistora i kod interneta, opet se pojavila — samo ovaj put mjeri koliko brzo je jedna arhitektura progutala cijelo polje umjetne inteligencije.

Zašto uopće spominjemo brzinu tog usvajanja, umjesto da samo kažemo „i onda je postalo popularno”? Zato što je razmak između rada i posljedice neobično kratak za ovakvu prekretnicu. Elektricitet je trebao desetljeća da promijeni gradove. Internet je trebao dvadesetak godina da promijeni ekonomiju. Transformer je trebao — pripremi se — pet godina da od akademskog rada o prijevodu postane ChatGPT, alat koji je za dva mjeseca prikupio sto milijuna korisnika. Pet godina i tri reda veličine, ako mjeriš u broju parametara: od modela veličine desetina milijuna do modela od nekoliko stotina milijardi. Jedan red veličine znači „deset puta veći”, tako da su tri reda veličine „deset puta deset puta deset”, odnosno tisuću puta veći broj — kao da je bicikl narastao u vlak, pa u zrakoplov, pa u svemirsku raketu, sve u istom dahu. To je razlika između bicikla i svemirske rakete, i dogodila se u vremenu u kojem prosječan projekt jedva stigne dobiti drugu verziju.

Ono što ovaj rad čini pravom kronikom, a ne samo tehničkim izvještajem, jest upravo taj nesrazmjer između trenutka objave i trenutka posljedice. Nema drame na premijeri. Nema publike koja ustaje i kliče. Postoji samo osam ljudi koji su, gurnuti problemom prijevoda i dosadom čekanja da im se napune GPU-i, sklopili nešto što je slučajno bilo opći stroj za obradu bilo kojeg slijeda — riječi, piksela, nota, DNA baza. Rekli su „možda ovo pomaže s prijevodom”. Nisu rekli „ovo je nacrt umjetne opće inteligencije”, jer to nisu znali, i tko bi im vjerovao da su rekli.