A Tensor Language: novi programski jezik za računala visokih performansi
Uz prototip tenzorskog jezika brzina i pouzdanost više se ne moraju natjecati, oni sad mogu ići zajedno, ruku pod ruku
Računalstvo visokih performansi potrebno je za sve veći broj zadataka — poput obrade slika ili raznih aplikacija dubokog učenja na neuronskim mrežama — gdje se mora probijati kroz goleme hrpe podataka, i to razumno brzo, inače bi to moglo trajati beskonačno dugo. Smatra se da su u izvođenju operacija ove vrste neizbježni kompromisi između brzine i pouzdanosti. Ako je brzina glavni prioritet, patit će pouzdanost, i obrnuto.
Najbolje iz oba svijeta
Istraživači s MIT-a tvrde da se može imati i jedno i drugo. S novim programskim jezikom, napisanim posebno za računalstvo visokih performansi, brzina i pouzdanost mogu ići zajedno, ruku pod ruku, kaže Amanda Liu s tamošnjeg Laboratorija za računalnu znanost i umjetnu inteligenciju (CSAIL).
Potencijal programskog jezika "A Tensor Language” (ATL) predstavljeni su na konferenciji Principi programskih jezika u Philadelphiji.
"U našem jeziku sve je usmjereno na stvaranje jednog broja ili tenzora", kaže Liu. Tenzori su pak generalizacije vektora i matrica. Dok su vektori jednodimenzionalni objekti (često predstavljeni pojedinačnim strelicama), a matrice poznati dvodimenzionalni nizovi brojeva, tenzori su n-dimenzionalni nizovi, koji mogu imati oblik 3x3x3 polja, na primjer, ili nešto više (ili niže) dimenzije.
Računalstvo visokih performansi
"S obzirom na to da je računalstvo visokih performansi toliko zahtjevno za resurse, želite moći modificirati ili prepisati programe u optimalan oblik kako biste ubrzali stvari. Često se počinje s programom koji je najlakše napisati, ali to možda i nije najbrži način za njegovo pokretanje", kaže Liu.
Kao primjer, pretpostavimo da je slika predstavljena nizom brojeva veličine 100x100 od kojih svaki odgovara pikselu, i da želite dobiti prosječnu vrijednost za te brojeve. To bi se moglo učiniti u dvofaznom proračunu tako da se prvo odredi prosjek svakog retka, a zatim dobije prosjek svakog stupca. ATL ima pridruženi alat - ono što računalni znanstvenici nazivaju "okvirom" - koji bi mogao pokazati kako se ovaj proces u dva koraka može pretvoriti u brži proces u jednom koraku.
"Možemo jamčiti da je ova optimizacija točna korištenjem pomoćnika u ispitivanju (proof assistant)", kaže Liu. U tu svrhu, novi jezik tima nadovezuje se na postojeći jezik, Coq, koji sadrži pomoćnika u ispitivanju. On zauzvrat može dokazati svoje tvrdnje na matematički rigorozan način.
Obećavajući prototip
Programi napisani u Coqu ne mogu se izvoditi zauvijek u beskonačnim petljama, kao što se može dogoditi s programima napisanim u Javi.
"Pokrećemo program kako bismo dobili jedan odgovor - broj ili tenzor", objašnjava Liu. "Program koji se nikada ne prekida bio bi nam beskoristan, a prekid dobivamo korištenjem Coqa."
ATL je prvi tenzorski jezik s formalno provjerenim optimizacijama, no još uvijek je riječ samo o obećavajućem prototipu. Istraživačima sad žele poboljšati njegovu skalabilnost kako bi se mogao koristiti za veće programe u stvarnom svijetu.