Šta vas je prvo zainteresovalo za inženjerstvo?
Imao sam sreću da još mlad otkrijem programiranje i iskoristim ga kao ulaz u istraživanje drugih tema. U osnovnoj školi mi je prijatelj pokazao posebnu varijantu programskog jezika BASIC koja je dolazila uz Texas Instruments kalkulatore (moj kod je, očekivano, bio nemoguć za održavanje zbog ograničenja od 27 jednokarakternih promenljivih po programu i velikog oslanjanja na GOTO naredbe). Ipak, pravili smo neke jednostavne programe, poput tekstualnih avanturističkih igara, aplikacije za ćaskanje za povezane kalkulatore i uobičajenog pomoćnika za kvadratnu formulu.
Kasnije sam pisao složenije programe: vizuelni pomoćnik za prikaz Njutnovog metoda i kalkulator orbita za procenu položaja planeta i njihovih meseca, što je privuklo pažnju Linux kluba u mojoj školi. Ubrzo sam se rvao sa NDISwrapper-om pokušavajući da osposobim WiFi adapter svog laptopa zasnovan na CardBus-u i palio prozore svog desktopa pomoću Compiz-a! Taj obrazac otkrivanja kroz kod nastavio se kroz srednju školu i dalje, što je dovelo do mog današnjeg interesovanja za inženjerstvo.
Šta vas je dovelo u OpenAI?
Na prethodnom poslu prešao sam iz pozadinske u full-stack ulogu, da bih potom otkrio da mi frontend rad i UX dizajn ne prijaju. Želeo sam da se vratim ulozi bližoj pozadinskim sistemima i nedostajala mi je interakcija sa Linux okruženjima u kojoj sam uživao u akademskoj zajednici. OpenAI mi je ponudio promenu u radu koju sam tražio, i više od toga; teško da biste mogli da nađete bolje mesto za ono što sam tražio od rada na OpenAI-jevim superračunarskim klasterima.
Na rešavanje kojih problema ste ovde u OpenAI-ju fokusirani?
Istraživački AI tokovi rada su po svojoj prirodi brzi; istraživači žele da mogu da uzmu preprint sa arXiv-a i isprobaju nove pristupe bez opterećenja platformom na kojoj pokreću svoj kod. Takođe su neverovatno složeni, pri čemu se istraživači ponašaju veoma slično matematičarima — oslanjajući se na intuiciju koju su gradili tokom karijere da osmisle rešenje za problem koji im je ove nedelje privukao pažnju. Činjenica da se ova izvršavanja odvijaju na nekim od najvećih superračunara na svetu dodaje još jedan sloj složenosti, a upravo tu pretposlednju razinu preuzima moj tim. Radimo na tome da predvidimo potrebe istraživanja pre nego što blokiraju napredak, a ako to ne uspe, sarađujemo sa istraživačkim timovima da identifikujemo uska grla i što brže uvedemo zaobilazna rešenja.

Photo: Jake Stangel
Šta mislite, po čemu se rad na superračunarstvu u OpenAI-ju razlikuje od rada drugde?
Sam obim na kom radimo je, iskreno, zapanjujući. Dobavljači hardvera trećih strana nam redovno poveravaju da nailazimo na probleme kakve ranije nikada nisu videli. Često je to jednostavno zato što naše instalacije imaju više hardvera naguranog u jedan jedinstveni superračunar nego kod njihovih drugih klijenata, mada je ponekad to posledica naših očekivanja u pogledu performansi. Sinhronizovana priroda većine pristupa treniranju modela dovodi do konfiguracije u kojoj ceo klaster praktično radi brzinom najsporijeg čvora.
Naši najistaknutiji modeli treniraju se na superračunarima vrednim milijarde dolara i zbog toga se bavimo padovima performansi koje bi većina drugih ignorisala. Uzbudljivo je videti da promena od jedne linije stigne u glavni kernel, znajući da će uštedeti ~6 dana računanja širom naše flote nedeljno, ili videti stavku u novom izdanju drajvera, znajući da je jedno od naših otkrića dovelo do ispravke koja je sada uključena uzvodno.
Kako za vas izgleda tipičan dan u OpenAI-ju?
Moji dani se uglavnom sastoje od neke kombinacije rada na kodu, istraživanja problema i prisustvovanja sastancima. Sastanci dominiraju mojim utorkom (i obično samo utorkom, srećom), a ostatak nedelje je podeljen između otklanjanja grešaka i kodiranja. Uočeni problemi uglavnom postaju programski zadaci, npr. pisanje dokumenta o dizajnu, slanje brzog hotfix-a na PR granu ili dodavanje logike za pasivnu proveru zdravlja kako bi se problematičan hardver držao van naših klastera.
Udubljivanje u probleme zahteva pomalo detektivskog rada. Uticaj na istraživanje varira od neodređenog („čini mi se da mi se posao izvršava sporije nego juče“) do zastrašujuće konkretnog („mislim da ako pustim više od 30Gbps preko Ethernet NIC-a, izazovem kernel panic?“). To je verovatno poznata mešavina: produktivno u danima kada sve ide kako se očekuje, i uzbudljivo kada se očekivano poremeti pa dobijete priliku da naučite nešto novo.
„OpenAI nudi priliku da se duboko zaroni u aspekte računarstva koji se drugde zanemaruju.“
Šta vas svakog dana pokreće?
Retko dolazim na posao a da već nemam nešto važno na umu što treba uraditi, i uglavnom sam svestan konkretnog tima, projekta i istraživača koji imaju korist od pravovremenog završetka zadatka. OpenAI je najveći poslodavac za kog sam radio i to da odmah mogu da sagledam uticaj svog rada ključno je za moju svakodnevnu motivaciju. Takođe me zabavlja otkrivanje sitnih detalja sistema. OpenAI nije prvi poslodavac kod kog sam radio na pozadinskim sistemima, ali mi je ovo prvi put da radim u HPC prostoru.
Tehnologije sa kojima radimo često postoje isključivo zbog performansnih zahteva specifičnih za ovu oblast. Kod prethodnih poslodavaca nisam morao da brinem o fizičkoj topologiji našeg hardvera — na primer, da se komunikacija odvija unutar istog NUMA domena, ili da GPU koristi lokalno postavljen NVME ili InfiniBand uređaj preko Nvidia GPUDirect-a, ili da su sistemski procesi vezani za određene CPU-ove kako bi se izbegli konflikti sa „bučnim komšijom“ u istraživačkim izvršavanjima. OpenAI nudi priliku da se duboko zaroni u aspekte računarstva koji se drugde zanemaruju, što me održava zainteresovanim za zadatak koji je predamnom.
Gde pronalazite inspiraciju?
Ništa nije toliko inspirativno kao gledati kako naši istraživački timovi napreduju u unapređivanju svojih modela. Mnoge grupe postavljaju Slack botove ili jednostavne playground-e gde možete da komunicirate sa modelima koji su još u razvoju i da ih testirate, što vam omogućava da posmatrate kako se modeli poboljšavaju dok se obuka nastavlja!
Takođe koristim popularni :meow_party: Slackmoji da označim motivišući ili inspirativan sadržaj iz naših različitih Slack kanala. Otkako sam se pridružio sredinom 2020, imam više od 400 objava označenih sa :meow_party:, što je u proseku skoro 4 nedeljno!



