Iz Novog Sada i Bostona stiže deep-tech startap koji pokušava da reši jedan od najvećih problema savremenog 'computing'-a: kako običan softverski kod pretvoriti u hardver, bez hardverskog tima, Veriloga i višegodišnjeg razvoja čipova.
BoolSi je nastao iz konkretnog istraživačkog problema tokom doktorskog rada osnivača i CEO-a startapa Mihaila Isakova, kada je pokušavao da razvije procesore visokih performansi i naišao na ograničenja postojećih pristupa u hardverskom dizajnu.
Ono što je počelo kao potraga za boljim načinom optimizacije jednog procesorskog modula, vremenom je preraslo u platformu koja softverskim inženjerima omogućava da običan C ili C++ kod automatski “spuste” na rekonfigurabilne čipove.
Za razliku od klasičnih High-Level Synthesis alata, BoolSi ne traži od developera da menjaju kod, dodaju anotacije ili razumeju FPGA arhitekturu. Njihov pristup polazi od ponašanja programa: sistem generiše ulazno-izlazne parove, trenira posebnu klasu neuralnih mreža, a zatim se ta mreža “kristalizuje” u determinističko digitalno kolo koje može da se izvršava na hardveru.
Pomenuti startap je proteklog meseca zatvorio seed rundu od šest miliona dolara, uz investitore kao što su Fine Structure Ventures, Pillar VC, Fifth Quarter Ventures i Coalition Ventures. Upravo o ovoj investiciji i načinu na koji BoolSi nastoji da promeni način na koji kompanije dolaze do performansi, razgovaramo sa Mihailom u intervjuu koji sledi.
Koji si konkretan problem tokom doktorskog rada prepoznao kao dovoljno veliki da zbog njega pokreneš kompaniju?
Mihailo: Iskreno, nisam razmišljao o tržištu sve do nakon što smo podigli svoju pre-seed rundu of $1.6 miliona. Uvek nam je bilo jasno da postoji mnogo klijenata nalik nama sa potrebom da brže razvijaju čipove za svoje potrebe. BoolSi je nastao kada sam za vreme doktorskih studija razvijao RISC-V superscaler, out-of-order procesore, tj. procesore visokih performansi. Bio mi je potreban “branch predictor”, hardverski modul koji kada program izvršava neko grananje, pogađa da li će program otići u jednom ili drugom smeru.
Ovo obično objasnim studentima kao situaciju gde je procesor voz sa lokomotivom na kraju voza. Voz prolazi kroz raskrsnice nesvestan u kom smeru će otići, a saznaje da li je napravio grešku tek kad lokomotiva dođe do raskrsnice, u kom slučaju mora da stane i da se vrati nazad. Branch predictor je modul koji pogađa da li šine trebaju da budu povezane u jednom ili drugom smeru.
Taj modul ne mora uvek da korektno pogodi smer, ali loše performanse ovde mogu da uspore procesor i do 10 puta. Tokom razvoja mog procesora sam postizao branch prediction preciznost od ~95% umesto ciljanih 99%, daleko od onoga što naučni radovi i postojeće firme postižu, i nisam znao zašto. Onda sam dobio ideju da pošto imam velik broj RISC-V programa, mogao bih da istreniram ML model da radi tu predikciju, ali problem je što taj ML model ne bi mogao da se izvršava u 2-3 procesorska ciklusa potrebnih za korisnu predikciju.
Odatle sam krenuo da se fokusiram na metode za digitalizaciju neuralnih mreža u Boolean kola, pa smo postepeno proširili fokus sa nekih programa gde je greška prihvatljiva i na programe koji moraju da budu egzaktni. Inicijalna ideja je bila da pravimo alate za nas i druge hardver arhitekte, ali arhitekti nema mnogo, možda 10 ili 20 hiljada njih, i dizajn je relativno mali deo celog procesa dizajna čipa.
Umesto toga smo se fokusirali na akceleraciju “general-purpose computing”-a što je mnogo veće tržište, i jedno gde će naši klijenti svakodnevno koristiti naše alate, a ne samo nekoliko meseci u okviru višegodišnjeg razvoja čipa. Tako smo došli do BoolSi platforme koja automatski pretvara običan softverski kod u dizajn čipa i dozvoljava softver inženjerima da spuštaju svoj kod na rekonfigurabilne čipove.
Postojeći High-Level Synthesis alati već omogućavaju pretvaranje C ili C++ koda u Verilog. U čemu se vaš pristup suštinski razlikuje od klasičnog HLS-a?
Mihailo: BoolSi-jev cilj je puna podrška za C i C++ standarde, što se u praksi pokazalo nedostižnim za klasične kompajlerske pristupe. Korisnik ne menja ni liniju koda, nema anotacija, ne mora ništa da zna o hardveru. Mi postavljamo problem ne kao translaciju iz npr. C u Verilog, već koristimo ponašanje programa kao međukorak.
Ideja je da korisnički program možemo da ispitujemo tako što ćemo generisati validne ulaze nad kojima ćemo primeniti program kako bi dobili validne izlaze, čime ti ulaz-izlaz parovi definišu sintetički dataset. Taj dataset je onda moguće koristiti za “supervised” treniranje ML modela koje lakše možemo da pretvorimo u digitalna kola.
Taj međukorak je ključan jer nam dozvoljava da lako podržavamo različite jezike, gde je samo potrebno da napišemo novi “fuzzer” za neki jezik a bekend za generisanje kola ostaje isti, pa tako npr. planiramo da podržimo Rust i Matlab u skorijoj budućnosti.

BoolSi ne koristi neuronsku mrežu da dizajnira kolo, već se sama mreža tokom treninga “kristalizuje” u determinističko digitalno kolo. Kako biste taj proces objasnili softverskom inženjeru koji nema iskustva sa FPGA sistemima?
Mihailo: Mi razvijamo klasu neuralnih mreža koje su nadskup digitalnih kola, gde neuroni imaju aktivacije ograničene u [0,1] opsegu, i težine isto. Kako neuralna mreža postepeno bolje i bolje uči sintetički dataset, tako neke težine (weights) prilaze jedinicama (u kom slučaju te težine postaju žice u digitalnom kolu), a ostale težine prilaze nulama (u kom slučaju nema žice).
Na kraju dolazimo do toga da se mreža uvek ponaša digitalno, i dozvoljava nam da svaki neuron pretvorimo u određenu digitalnu kapiju, a težine da koristimo za “ožičenje” ili “rutiranje” između njih. To možemo posmatrati kao da se mreža “kristalizuje”, tj. ona ne dizajnira digitalno kolo, ona postaje digitalno kolo. Sada, to konačno rešenje je digitalno kolo koje je teško primeniti bez iskustva u arhitekturi računara.
Korisnik bi morao da razvije ceo čip oko tog kola i da ga napravi u jednom od malog broja fabrika čipova. Umesto toga, postoji kategorija rekonfigurabilnih čipova koji se zovu FPGA (Field Programmable Gate Arrays), čije je svojstvo da nakon fabrikacije mogu da promene svoju fizičku arhitekturu, čime dozvoljavaju sve benefite namenskih arhitektura, ali koštaju više i troše više energije u poređenju sa proizvedenim čipom sa istom arhitekturom.
Zato razvijamo kompajler i platformu koja targetira postojeće FPGA MPSoC sisteme (ARM procesori i rekonfigurabilna (FPGA) logika na istom čipu) gde naš generisan hardver bude stavljen na FPGA i automatski konektovan u softver kroz drajvere koje generišemo.
Kako dokazujete da generisano kolo uvek daje isti rezultat kao originalni program, naročito kod funkcija sa velikim ulaznim prostorom?
Mihailo: Postoji više pristupa koje koristimo. Iako treniramo na ponašanju, naši fuzzer-i (program koji automatski generiše test ulaze) pametno ispituju prostor i generišu ulaze koji pokušavaju što bolje da pokriju prostor, tako da je svako grananje kroz “if statement” uzet, svaka petlja ispitana za ceo raspon iteracija, itd. (Ovo su coverage-based fuzzer-i).
Pored toga koristimo statističke fuzzer-e, koristimo LLM-ove da na osnovu programa pišu pametnije fuzzer-e, i još nekoliko pristupa. Na kraju, koristimo alate za formalnu verifikaciju koje apliciramo tako što izgenerišemo veći broj hardver kandidata i dokazujemo da su identični po ponašanju, sa idejom da su male šanse da naprave isti “bag”.
Ovaj pristup može biti posmatran kao menadžer koji istu specifikaciju za čip da dvoje različitih inženjera koji će odvojeno razviti dva čipa. Menadžer na kraju koristi formalnu verifikaciju da dokaže da li su čipovi identični, i time verifikuje da je specifikacija dovoljno egzaktna i konzistentna kao i da inženjeri nisu napravili greške.
Na duže staze ciljamo i da podržimo verifikaciju između originalnog koda i čipa, ali to je često teško zbog manjka formalnih modela za C familiju jezika.
BoolSi rešenje je ubrzalo izvršavanje biblioteke za regularne izraze do 63 puta u odnosu na ARM procesor. Koliko je taj rezultat reprezentativan za realne aplikacije?
Mihailo: FPGA-ovi generalno nude 10-100x ubrzanje u odnosu na CPU-ove za probleme koji su ograničeni paralelnim procesiranjem a ne memorijom. Naravno naš sistem ne uspeva sve programe da jednako kvalitetno pretvori u hardver koji bi stvorio neki senior arhitekta, ali ne vidimo nikakve prepreke da alati dođu i prestignu ljude u toj sposobnosti u naredne 2-3 godine.
Trenutno viđamo ubrzanja od 2x do 100x puta zavisno od programa, gde često ti programi koji ne uspevaju da se ubrzaju fundamentalno ne mogu biti ubrzani zbog nekih serijskih operacija gde namenski hardver ne može da izvuče paralelizaciju. Ovaj primer koji smo demonstrirali postiže 63x ubrzanje RegEx pretraga, a slični zadaci su prisutni u jako mnogo poslova, od baza podataka do DNK sekvenciranja.
Što se tiče generalnosti, programi su neverovatno raznoliki tako da je teško doći do univerzalnog broja za ubrzanje, ali generalno 90% “teških” aplikacija može da očekuje ubrzanje od namenskih čipova. Mesta gde ne očekujemo da mnogo pomognemo su u stvari aplikacije koje su već videle dosta arhitekturalne podrške: neuralne mreže, kriptografija, video enkoding / dekoding, neki tipovi obrade signala, itd. Sve ostale aplikacije koje nisu dovljno opšte ili česte da dobiju direktnu podršku od CPU / GPU proizvođača su “fair game” za BoolSi.
Kako izgleda vaš idealni prvi korisnik i u kom trenutku kompanija treba da zaključi da joj se prelazak sa CPU-a na FPGA zaista poslovno isplati?
Mihailo: Idealni korisnici već koriste FPGA-ove u njihovim proizvodima, tako da ne moramo da ih ubedimo da promene svoj BoM (bill of materials) već im nudimo isključivo softversko rešenje. Trenutno istražujemo partnerstva sa većim FPGA proizvođačima koji bi nam dali pristup celom skupu postojećih korisnika.
U bližoj budućnosti planiramo naš System-on-Module (SoM) koji će upakovati FPGA čipove u format nalik Arduino-u, gde korisnici samo trebaju da integrišu taj modul kroz M.2 slot i ne komplikuju svoj PCB. Taj korak naravno čeka da platforma ima ozbiljniji developer community i reputaciju iza sebe.
Cilj takvog SoM rešenja je da smanjimo “aktivacionu energiju” koju korisnici moraju da ulože da isprobaju našu platformu, pogotovo ako nemaju iskustva sa ovim tipom čipova. Platforma i čip koji se mogu deploy-ovati kod korisnika u nekoliko sati a ne nedelja nam omogućava da konvertujemo korisnike koji trenutno plaćaju mnogo skuplje procesore sa grafičkim karticama, ML akceleratorima i slično, a gde bi im FPGA ponudio slične performanse za mnogo manje truda i cene.
Ipak, nama najzanimljivije tržište je set svih onih aplikacija koje su bile prosto nemoguće za rešiti bez namenskih čipova (VR, humanoidna robotika, autonomni dronovi, eye tracking, itd.), gde ćemo dozvoliti ekspertima u tim industrijama da reše svoje računarske potrebe bez da moraju da zaposle ceo tim “čipadžija” i da imaju milione za razvoj.
Ko će u kompanijama najčešće donositi odluku o kupovini BoolSi-ja: softverski timovi, CTO, hardverski inženjeri ili rukovodioci proizvoda?
Mihailo: To su generalno CTO-ovi i VP of Engineering pozicije, ali gradimo developer community koji će olakšati pravljenje takvih odluka. Developeri će moći jeftino da se oprobaju sa razvojem kroz našu platformu, a CTO potpisuje kada je rešenje već oprobano unutar tima. Planiramo više biznis modela, počinjući sa naplatom po potrošnji ali kasnije planiramo da se fokusiramo na naplatu po individualnom deployment-u.
BoolSi je upravo zatvorio seed rundu od šest miliona dolara. Na koji način planirate da iskoristite dobijena sredstva?
Mihailo: Cilj u narednih godinu dana je izlazak na tržište i građenje velikog developer pool-a u par ranih ciljnih tržišta, uspostavljanje partnerstava sa FPGA proizvođačima, prvi komercijalni korisnici koji već koriste FPGA-ove, lansiranje našeg SoM rešenja, i uspeh u konvertovanju korisnika koji trenutno koriste klasične mikroprocesore u korisnike naše platforme i FPGA-ova.
Tim razvijate između Novog Sada i Bostona. Koje kompetencije gradite u Srbiji, a koje u SAD?
Mihailo: Da, Novi Sad se pokazao kao odlično mesto za BoolSi, i deo je našeg “secret sauce”-a. Srbija ima neverovatnu gustinu hardver i embedded inženjera, što mislim da se “otkrilo” u poslednjih par godina. Velik deo R&D vodimo u Novom Sadu i delom u Beogradu, a u Bostonu zapošljavamo više “Field Applications Engineering” i sales uloge. Srbija je dovoljno blizu da vremenske zone nisu prevelika prepreka (bar ne sa istočnom obalom), plus engleski je odličan.
Da li je krajnja ambicija da BoolSi ostane kompajlerska kompanija ili da vremenom postane vertikalno integrisana compute kompanija sa sopstvenim hardverom?
Mihailo: Kompajler je srce kompanije, ali na duže staze planiramo da razvijamo naše čipove, budući da platforma motiviše “data-driven” razvoj ka čipovima za koje znamo da su potrebni na terenu. Postojeće firme koje razvijaju čipove imaju ograničen uvid u to kako se njihovi čipovi koriste, a BoolSi platforma ima tu prednost da vidimo kod koji se deploy-uje i znamo šta je to tačno što korisniku predstavlja prepreku, bilo da su performanse, latencija, energija, cena ili “time to market”. To će nam dozvoliti da odlučimo da li i kakav tip čipa želimo da razvijemo, i da ga automatski plasiramo kroz platformu.

Želiš da podeliš svoje mišljenje o ovoj temi? Komentari su otvoreni na našoj Facebook i LinkedIn stranici!