Otišli smo u Bukurešt, prisustvovali finalu takmičenja, slušali razna predavanja, i vratili se nazad u Beograd…
Dan nulti
Voz nekim čudom kreće na vreme sa železničke stanice. Ipak, da ne bismo bili u obavezi da hvalimo Železnice Srbije, grejanje ne radi sve do Temišvara, a voz stoji dva sata u Vršcu zbog kvara.
Dan prvi
Zbog gore pomenutog kvara na vozu, opravdano kasnimo dva sata u Bukurešt i stižemo oko 8 sati po lokalnom vremenu (+1 u odnosu na Srbiju). Pošto smo prethodno pripremili sve potrebne podatke za nalaženje studentskog doma u kome smo smešteni, brzo smo došli do istog, pritom nailazeći (srećom) na ljude koji bez problema barataju engleskim jezikom.
Prvo prijatno iznenađenje bila je soba koju smo dobili – ali ne zato što je luksuzna (jer nije), već zbog dva Internet priključka od kojih je jedan čak i radio. Doduše, tek posle nabijanja kabla u priključak… Nakon nekog vremena nas je posetila devojka sa kojom smo imali e-mail prepisku, poželela nam dobrodošlicu, i pozvala nas na predavanje o Google Priority Inbox-u to veče.
Nakon što smo obišli kraj grada u kome smo se nalazili i malo se odmorili, uputili smo se na predavanje, koje se održavalo na Fakultetu za automatiku i računarstvo (Facultatea de Automatica si Calculatoare).
The Priority Inbox feature of Gmail ranks mail by the probability that the user will perform an action on that mail. Because “importance” is highly personal, we try to predict it by learning a per-user statistical model, updated as frequently as possible. This talk will describe the challenges of online learning over millions of models, and the solutions adopted.
Predavanje je držao Andrew Moedinger (Senior Software Engineer) i pričao je o odlukama koje donosi sistem iza njihovog najnovijeg dodatka GMailu, odnosno sistem prioretizacije mailova. Kod korisnika koji koriste Priority Inbox, mailovi se sortiraju na osnovu dva modela – globalnog i korisničkog. Prvi model se generiše na osnovu ogromnog broja korisnika i njihovih e-mail navika, dok drugi uzima u obzir ponašanje samo jednog korisnika i detaljno analizira njegovo ponašanje. Zbog ovoga, GMail je u mogućnosti da svakom korisniku prikaže bitne mailove sa prilično velikom preciznošću. Na trenutke je priča možda bila previše komplikovana za nekoga ko nije završio studije u oblasti matematike, zbog raznih formula koje Priority Inbox koristi, ali je predavanje u svakom slučaju moglo da zainteresuje one koji ovaj sistem još uvek nisu isprobali. Četrdeset minuta se ispostavilo kao odlično vreme za dužinu predavanja, nakon kog smo se uputili nazad u studentski dom.
Nažalost, ubrzo po povratku u sobu, u celom studentskom domu je nestala struja. Baterija na laptopu je bila napunjena, a Internet je i dalje radio, tako da nije bilo mesta za paniku.
Tačnije, nije bilo mesta za paniku sve dok i Internet nije prestao da radi. Očigledan znak da je vreme za spavanje.
Dan drugi
Iako naslov kaže Dan drugi, ovo je zapravo prvi dan događaja, pa je započet registracijom učesnika u ranim jutarnjim satima (od 9 do 10). Kako se kasnije ispostavilo, nas trojica iz Srbije (nas dvojica sa Računarskog fakulteta i kolega sa ETFa) smo činili jedina dva strana tima, a pored nas je predavanjima jedva prisustvovalo nekoliko stranaca. Nakon nekoliko reči profesora Adine Florea, došao je na red žreb za finalnu rundu takmičenja. Kako je u našoj kategoriji učestvovalo osam timova, raspored je bio sledeći:
- Formiraju se dve grupe od po četiri tima
- Svaka grupa u prvoj rundi igra pet partija
- Nakon prve runde prva dva tima iz obe grupe prolaze u drugu rundu
- U drugoj rundi se opet igra pet partija
- Najbolji tim na kraju druge runde je pobednik
Znajući rezultate kvalifikacija, bili smo pomalo razočarani kada smo završili u grupi sa najjačim timovima, ali smo bili optimisti pošto smo dosta razvili naš algoritam posle kvalifikacija.
Nakon žreba, usledilo je prvo (i najzanimljivije predavanje) — Three cool things about Facebook.
You might have heard a few things about Facebook. The Hackathons. Ripstiks. Engineers shipping code daily. The gourmet free food… This talk dives into three aspects behind the scenes at Facebook that might be less known but, plenty interesting. Did you know we use machine learning to figure out patterns in data too large to be human-reviewable? That takes a fair amount of CPU power, so we defined our own memory allocator and string type. Finally, we concluded that the existing data centers were wasting power and money, so we decided to build our own data centers focused on efficiency and speed.
Tokom sledećih 45 minuta Andrei Alexandrescu (Research Scientist) je pričao o nekim tehnikama koje Facebook koristi da bi se izborio sa ogromnom količinom podataka i ogromnim brojem korisnika (oko 600 miliona u trenutku pisanja ovog teksta). Dve stvari bliske programerima kao što sam ja bile su mehanizam za alociranje memorije i nova klasa za stringove. Naime, inženjeri iz Facebooka su shvatili da ovde postoji mesta za optimizaciju, pa su odlučili da za alociranje memorije umesto standardnog malloc koriste jemalloc, a uz to su dodali i svoju klasu za stringove, fbstring koja na različite načine čuva podatke u zavisnosti od njihove dužine. Kada se ova dva pristupa kombinuju, dobijaju se funkcije koje rade čak do petnaest puta brže nego kada se koriste standarni string i alociranje memorije. Kvalitet ovog predavanja je ležao u tome što je ono bilo razumljivo svakome ko se bavi računarstvom, a ipak je bilo dovoljno detalja da se ne može reći da je tema samo ovlaš objašnjena.
Posle ovog predavanja, odlučili smo da se prošetamo kroz AI-MAS Village, odnosno hol u kome su bili postavljeni štandovi sponzora. Međutim, tih petnaestak štandova nije imalo previše da ponudi (tu i tamo se moglo naići na kojeg jednostavnog robota, ali je zato Adobe na svom štandu imao čokoladice), pa smo se ubrzo zaustavili u chill-out zoni i zauzeli lazy bag-ove.
Kao što to uvek biva, uprkos najboljim namerama organizatora, stvari jednostavno ne mogu da prođu bez problema. Iako je bilo planirano da se u 12 i 14 časova objave rezultati prvog, odnosno drugog dela prve runde, odlučeno je da se sve objavi odjednom nakon što se završe predavanja, koja su sama po sebi kasnila, pa smo i rezultate dobili nešto kasnije nego što je planirano. I tu je naš optimizam bio raspršen.
“Zahvaljujući” ELO sistemu bodovanja, završili smo na trećem mestu u grupi (tim AI Powerhouse), iako smo u svim partijama imali dobar učinak. Kao što se može videti na slici ispod, u četiri partije smo zauzeli drugo mesto, i samo u jednoj treće. Šta više, imali smo najveći prosečan broj bodova od svih timova, ali to očigledno nije bilo dovoljno. Naše rešenje je konstantno bilo dobro, ali smo ispali zato što su druga dva briljirala s vremena na vreme. Da smo prošli u drugu rundu, možda bi nas baš to opet dotuklo, ali ipak verujem da je (ne)sreća dosta uticala na ovakav ishod. Naravno, sve bi sigurno bilo drugačije da smo upali u drugu, očigledno slabiju grupu.
Loše raspoloženje nas ipak nije dugo držalo, pa čak ni sneg koji je kasnije počeo da pada nije uspeo da nas odvrati od šetnje po Bukureštu; kad smo već tu, zašto ne bismo iskoristili vreme koje sada ne moramo da provedemo nadajući se pobedi u finalu?
Dan treći
Sledećeg dana predavanja nisu bila previše zanimljiva, pa nijedno ne bih mogao izdvojiti. Štandovi su ostali isti (na Facebook štandu su se sada pojavili neki simpatični magneti i znojnice, zar programerima to uopšte treba?), samo se broj ljudi smanjio, pošto su videli sve što ih je zanimalo prošlog dana. Jedina bitna stvar koja je preostala jeste objavljivanje pobednika. Program je ponovo kasnio.
Druga i finalna runda je bila neizvesna — ali to je bila borba između dva tima iz naše grupe, dok su druga dva tu bila samo da popune mesto. Nagradu je na kraju odneo tim RedArmy, kome ovom prilikom čestitam, iako on ovog sigurno neće videti/razumeti. Pravila lepog ponašanja to nalažu. Mana ELO sistema bodovanja je ovde veoma očigledna, jer je drugoplasirani tim imao bolji algoritam, ali je ipak izgubio.
Da stvari ne budu toliko crne postarao se naš kolega sa fakulteta koji nije mogao da doputuje u Bukurešt (kvalifikacije za Challenge24 su ipak preče), jer je osvojio prvo mesto u svojoj kategoriji ubedljivo pobedivši sve ostale takmičare.
Ostatak dana je bio pomalo neočekivano prijatan. Prvo su nas organizatori lično pozvali na ručak posle proglašenja pobednika, pa su nam čak ponudili i prevoz do železničke stanice, ali smo ovaj poziv nažalost morali da odbijemo, pošto smo imali još planova za obilaženje Bukurešta. A kasnije tog dana se, kao šlag na torti, pojavio kondukter u spavaćim kolima koji je, uprkos nekoj srpskoj “tradiciji”, bio neverovatno pristojan i uvek na raspolaganju za sve što nam zatreba. Verovatno je nov.
Putovanje nazad je prošlo veoma brzo i mirno, i najzad smo stigli u naš dragi Beograd.
Krajnji utisci
Takmičenje samo po sebi je veoma lepo zamišljeno, u nekim trenucima predstavlja pravi izazov, i daleko od toga da nije uzbudljivo. Osim brojnih bagova koji su se sve vreme pojavljivali (ali su i rešavani), ništa drugo mu se ne može zameriti. S druge strane, finale i događaji koji su organizovani oko njega ipak nisu tako dobri kao na papiru. Od oko deset organizovanih predavanja, samo nekolicina je bila zanimljiva širim narodnim masima, odnosno i ljudima koji se ne bave baš tom oblašću računarstva. Slično bi se moglo reći i za štandove, ali njih su izvukla velika imena i (delimično) funkcionalni roboti. Zaista, dosta se primećuje da je takmičenje mlado i da zbog toga ima još uvek neiskorišćeni potencijal da privuče strane studente, pa ostaje da vidimo da li će se situacija promeniti sledeće godine.
Zaključak? Definitivno vredi učestvovati, ali treba dobro razmisliti o odlasku u Bukurešt. Posebno u ovo doba godine – možda vas, kao mene, zadesi sneg.