Dweve

V notranjosti Core: več kot 2.900 operacij na 12 zaledjih

Več sto tisoč ročno optimiziranih jeder. Več kot 2.900 operacij v 76 kategorijah. 25 numeričnih formatov in 12 zaledij. Spoznajte Core, računsko osnovo Dweve.

V notranjosti Core: več kot 2.900 operacij na 12 zaledjih

Kaj nam pove število operacij

Množenje matrik zveni kot ena sama naloga. Njena izvedba je odvisna od tega, kaj vrednosti pomenijo, kako so shranjene, kako se seštevajo delni rezultati in katera strojna oprema izvaja računanje. Matrika s pakiranimi binarnimi vrednostmi in matrika s števili s plavajočo vejico lahko predstavljata isto abstraktno operacijo, vendar zahtevata drugačna numerična pravila in drugačno kodo.

Core je računska osnova Dweve za učenje in sklepanje. Njegov javni katalog obsega več sto tisoč ročno optimiziranih jeder za več kot 2.900 operacij v 76 kategorijah, 25 numeričnih formatih in 12 zaledjih. Te številke opisujejo različne dele sistema. Operacija poimenuje računanje. Numerični format določa predstavitev. Zaledje označuje cilj izvajanja. Jedro udejanja določeno kombinacijo teh možnosti.

Pomembneje je razumeti to razliko kot katalog obravnavati kot eno samo veliko številko funkcij. Razvijalec mora vedeti, ali zahtevana kombinacija obstaja in kakšno pogodbo upošteva.

Več kot 2.900 operacij v 76 kategorijah; 25 numeričnih formatov; 12 zaledij. Več sto tisoč ročno optimiziranih jeder udejanja podprte izbire izvajanja.

Računanje in njegova predstavitev sodita skupaj

Vzemimo redukcijo: zbirko vrednosti združimo v en rezultat. Beseda »vsota« pušča več vprašanj odprtih. So vhodi predznačena cela števila, števila s fiksno vejico ali števila s plavajočo vejico? V kakšni predstavitvi hranimo akumulirani rezultat? Kaj se zgodi, ko ta predstavitev ne more sprejeti naslednje vrednosti?

Core te izbire poveže z operacijo. Njena pogodba izvajanja vključuje podatkovni tip, širino, pakiranje, akumulator, zaledje, nabor ukazov, pravilnik izbire in način determinističnosti. Sprememba katere od teh lastnosti lahko spremeni pomen računanja, tudi če se ime operacije ne spremeni.

Med 25 numeričnimi formati so binarne, ternarne, celoštevilske, s fiksno vejico, prilagodljive in s plavajočo vejico družine. Ime družine je šele izhodišče za opis aritmetike. Pomembni so tudi širina, predznačenost, merilo in postavitev v pomnilniku. Katalog zato berite kot zbirko podprtih kombinacij, ne kot obljubo, da je vsaka operacija na voljo v vsakem zamisljivem formatu in na vsakem cilju.

Zato tudi format za izmenjavo ne more odgovoriti na vsa vprašanja o izvajanju. ONNX opisuje računski graf s tipiziranimi vhodi, izhodi in operatorji. Sistemi tako dobijo skupen opis modela; izvajalno okolje mora operatorje še vedno implementirati. Dokumentacija ONNX o osnovnih pojmih pojasnjuje razliko med predstavitvijo grafa in njegovim izvajanjem.

Izbiro izvajanja presojajte prek operacije, predstavitve, akumulatorja, zaledja in pravil za ponovitev. Diagram prikazuje reprezentativen izsek, ne matrike pokritosti.

12 zaledij z izrecno določenimi izbirami izvajanja

Dvanajst zaledij Core zajema skalarno izvajanje, nabore ukazov procesorjev ter grafične in prenosljive cilje. Javni nabor vključuje Scalar, SSE2, AVX2, AVX-512, NEON, SVE2, CUDA, ROCm, Metal, Vulkan, WebGPU in WASM. Ta imena označujejo poti izvajanja znotraj Core, ne ločenih različic modela.

Izbirnik na trenutnem gostitelju izbere podprto izvedbo operacije in njene pogodbe izvajanja. Izbrana pot se zabeleži skupaj z izvajalno celico, gostiteljem in razlogom izbire. Zato lahko izvajanje pregledamo glede na odločitve, ki jih je dejansko sprejelo.

Prenosljivost ima svoje meje. Dokumentacija WebAssembly na primer razlikuje med prenosljivim binarnim formatom in vmesniki API, ki jih zagotavlja gostiteljsko okolje. V brskalniku in zunaj njega so lahko na voljo različni vmesniki. Dokumentacija WebAssembly o prenosljivosti je koristno izhodišče za razumevanje te razlike. Sama oznaka zaledja še ne pove, v kakšnem okolju deluje aplikacija.

Vloga Core v Dweve

Knjižnico primitivov uporablja Core za osnovne operacije. Core te temelje vključi v računski sistem. Loom je zgrajen na Core in za sklepanje uporablja knjižnico reševalnikov. Vsak del ima tako jasno odgovornost: primitivi zagotavljajo osnovne operacije, Core izvaja računanje, Loom pa na tej podlagi gradi sklepanje.

Dweve je storitev. Fabric je njen API in portal, prek katerega ljudje in aplikacije dostopajo do storitve. Fabric ne prevzema računske vloge Core ali vloge Loom pri sklepanju. Vmesnik in sistemi v ozadju imajo različne namene.

Knjižnico primitivov uporablja Core. Loom je zgrajen na Core in uporablja knjižnico reševalnikov. Fabric je API in portal storitve Dweve.

Začnite pri izvajanju, ki ga potrebujete

Pri ocenjevanju računskega sistema najprej določite konkretno računanje in zahtevano predstavitev. Nato preverite, katero zaledje ga bo izvedlo, katera pravila veljajo za akumulator in pakiranje ter kakšna pogodba ponovljivosti je določena. Tako katalog postane uporaben za ekipo.

Javne številke Core opisujejo širino kataloga. Pogodba izvajanja pojasni, kako ga brati. Oboje sodi v isti pogovor: katero delo sistem podpira in kaj pomeni določena izvedba, ko jo uporabite.