| Opis: | V magistrskem delu predstavimo zasnovo in implementacijo splošnonamenskega, visokozmogljivega urejevalnika vozlišč za grafovske cevovode. Ta uporabnikom omogoča vizualno grajenje in izvajanje procesnih cevovodov. Slednji so predstavljeni v obliki acikličnega grafa, pri čemer vozlišča predstavljajo operacije ali funkcije, povezave med njimi pa tok podatkov. Grafovski cevovodi so ključni koncept na številnih področjih, kot so obdelava podatkov, strojno učenje, računalniška grafika in avtomatizacija delovnih tokov, saj omogočajo modularno, pregledno in učinkovito modeliranje kompleksnih procesov. Urejevalnik vozlišč, ki smo ga zasnovali v tem magistrskem delu, je zmogljiv, razširljiv in enostaven za uporabo, zato je v praksi koristen za različne namene.
Zasnovani sistem podpira dinamično nalaganje in zamenjavo definicij vozlišč iz dinamičnih knjižnic (DLL) med delovanjem, vključuje sprotno (JIT) vzporedno izvajanje in uporablja napreden sistem tipov s pretvorniki, ki omogočajo varno povezovanje priključkov različnih vhodov in izhodov med vozlišči. Pred zagonom pogon izvaja statično preverjanje grafov, skladnosti podatkovnih tipov ter prisotnosti ciklov, kar zagotavlja pravilnost izračuna. Za vizualizacijo in interakcijo z grafi smo razvili namenski upodabljalni pogon, ki temelji na Direct2D in je optimiziran za izris velikih grafov. Urejevalnik serializira in hrani grafe v formatu JSON, kar omogoča njihovo nalaganje ob ponovnem zagonu in izvajanje grafov brez grafičnega vmesnika prek ukazne vrstice (CLI). S tem omogočamo uporabo sistema v različnih okoljih, vključno s strežniki in avtomatiziranimi cevovodi.
Implementirani urejevalnik eksperimentalno ovrednotimo v treh sklopih: (i) praktičen geoprostorski cevovod (agregacija točk in tvorjenje toplotnih kart) od uvoza do vizualizacije, (ii) merjenje zmogljivosti JIT razvrščevalnika ter (iii) razširljivost na sintetičnih usmerjenih acikličnih grafih (DAG) z visoko stopnjo paralelizma. Vgrajena instrumentacija meri uporabniški, procesorski in režijski čas izvajanja. V eksperimentih preizkusimo več nastavitev števila niti, da prikažemo učinek paralelizacije in režijskega časa samega pogona.
Empirični rezultati prikazujejo skoraj teoretičen pospešek pri večnitnem izvajanju z visoko izkoriščenostjo CPU, zmanjšanje režijskega časa v primerih z lahkimi obremenitvami, kar je mogoče pripisati JIT razvrščevalniku, in nizek režijski čas pogona. Geoprostorski primer potrdi aplikativno delovanje od uvoza podatkov do vizualizacije, inkrementalno izvajanje pa opazno zmanjša ponovne izračune pri delnih spremembah in iterativnem razvoju cevovoda. Diagnostični podatki omogočajo hitro prepoznavo ozkih grl in optimizacijo cevovodov.
V magistrskem delu naredimo tudi obširno primerjavo z obstoječimi urejevalniki vozlišč v industriji in kreativnih okolij (LabVIEW, Blender, Unreal Engine), pri čemer izpostavimo, da ti praviloma ne ponujajo podpore za izmenjavo definicij vozlišč med delovanjem, strogo statično preverjanje grafov, inkrementalno izvajanje ter izvajanje prek CLI. Naš pristop združuje možnost nalaganja zunanjih definicij vozlišč z zanesljivim sprotnim izvajanjem in s tem zapolnjuje vrzel med orodji za hitro iteracijo in orodji za avtomatizirane cevovode.
Omejitve in nadaljnje delo vključujejo podporo za zanke in vgnezdeni grafi, izračun s podporo GPU ter pretvorbo obstoječih funkcij PyTorch C++ v vozlišča, kar bi omogočilo nalaganje, urejanje, učenje in inferenco modelov umetne inteligence znotraj urejevalnika vozlišč. |
|---|