Dweve

A Core belülről: több mint 2 900 művelet 12 háttérrendszeren

Több százezer kézzel hangolt kernel. Több mint 2 900 művelet 76 kategóriában, 25 numerikus formátum és 12 háttérrendszer. Ismerje meg a Dweve számítási...

A Core belülről: több mint 2 900 művelet 12 háttérrendszeren

Mit árul el a műveletek száma?

A mátrixszorzás egyetlen feladatnak tűnik. A megvalósítás azonban attól függ, mit jelentenek az értékek, hogyan tároljuk őket, miként halmozzuk fel a részösszegeket, és milyen hardver végzi a számítást. Egy tömörített bináris mátrix és egy lebegőpontos mátrix ugyanazt az elvont műveletet használhatja, mégis eltérő numerikus szabályokat és kódot igényel.

A Core a Dweve számítási alapja a tanításhoz és a következtetéshez. Nyilvános katalógusa több százezer kézzel hangolt kernelt foglal magában: több mint 2 900 műveletet 76 kategóriában, 25 numerikus formátumot és 12 háttérrendszert. Ezek a számok a rendszer különböző részeit írják le. A művelet nevezi meg a számítást. A numerikus formátum határozza meg a reprezentációt. A háttérrendszer jelöli a végrehajtási célt. A kernel a választások egy konkrét kombinációját valósítja meg.

Ezt a különbséget fontosabb megérteni, mint egyetlen nagy funkciószámként kezelni a katalógust. A fejlesztőnek azt kell tudnia, hogy létezik-e a szükséges kombináció, és milyen szerződés szerint működik.

Több mint 2 900 művelet 76 kategóriában; 25 numerikus formátum; 12 háttérrendszer. Több százezer kézzel hangolt kernel valósítja meg a támogatott végrehajtási lehetőségeket.

A számítás és a reprezentáció összetartozik

Vegyünk egy redukciót: egy értékkészlet elemeit egyetlen eredménnyé egyesítjük. Az „összeg” szó több kérdést nyitva hagy. Előjeles egész számok, fixpontos vagy lebegőpontos értékek a bemenetek? Milyen reprezentáció tárolja a felhalmozott eredményt? Mi történik, ha a következő érték már nem fér bele?

A Core a művelethez kapcsolja ezeket a választásokat. Végrehajtási szerződése tartalmazza az adattípust, a bitszélességet, a csomagolást, az akkumulátort, a háttérrendszert, az utasításkészletet, a dispatch szabályait és a determinizmus módját. Bármelyik megváltoztatása a számítás jelentését is módosíthatja, még akkor is, ha a művelet neve változatlan.

A 25 numerikus formátum között bináris, ternáris, egész, fixpontos, adaptív és lebegőpontos családok találhatók. A család neve csak a számtani szabályok leírásának kiindulópontja. A bitszélesség, az előjel, a skála és a tárolási elrendezés szintén számít. Ezért a katalógust támogatott kombinációk gyűjteményeként érdemes olvasni, nem pedig annak ígéreteként, hogy minden művelet minden elképzelhető formátumban és célon elérhető.

Ezért nem válaszol meg minden végrehajtási kérdést egy adatcsere-formátum sem. Az ONNX típusozott bemenetekkel, kimenetekkel és operátorokkal ír le számítási gráfokat. Ez közös modellleírást ad a rendszereknek, az operátorokat azonban továbbra is a futtatókörnyezetnek kell megvalósítania. Az ONNX fogalmi dokumentációja ismerteti a gráfreprezentáció és a végrehajtás közötti különbséget.

A végrehajtási választást a művelet, a reprezentáció, az akkumulátor, a háttérrendszer és az újrajátszási szabályok alapján értelmezzük. Az ábra egy jellemző részletet mutat, nem lefedettségi mátrixot.

12 háttérrendszer, egyértelmű végrehajtási választások

A Core 12 háttérrendszere a skaláris végrehajtást, a CPU utasításkészleteit, valamint a GPU-s és hordozható célokat fogja át. A nyilvános célok: Scalar, SSE2, AVX2, AVX-512, NEON, SVE2, CUDA, ROCm, Metal, Vulkan, WebGPU és WASM. Ezek a nevek a Core végrehajtási útvonalait jelölik, nem a modell különböző változatait.

A dispatch az aktuális gazdagépen kiválasztja a művelethez és annak végrehajtási szerződéséhez támogatott megvalósítást. A kiválasztott útvonalat a végrehajtási cellával, a gazdagéppel és a választás indokával együtt rögzíti a rendszer. Így a futás a tényleges döntései alapján vizsgálható.

A hordozhatóságnak is vannak határai. A WebAssembly dokumentációja például különbséget tesz a hordozható bináris formátum és a gazdakörnyezet által biztosított API-k között. A böngészőn belüli és azon kívüli végrehajtás eltérő felületeket kínálhat. A WebAssembly hordozhatósági dokumentációja hasznos hátteret ad ehhez. A háttérrendszer neve önmagában nem árulja el az alkalmazás futtatási környezetét.

A Core helye a Dweve rendszerében

A Core az alapműveletekhez a primitives könyvtárat használja, és ezekre építi a számítási rendszert. A Loom a Core-ra épül, és a következtetési feladataihoz a solvers könyvtárat használja. Így minden résznek világos a felelőssége: a primitives biztosítja az alapműveleteket, a Core végrehajtja a számításokat, a Loom pedig erre az alapra építve végez következtetést.

A Dweve maga a szolgáltatás. A Fabric az API-ja és portálja, amelyen keresztül az emberek és az alkalmazások elérik a szolgáltatást. A Fabric nem veszi át a Core számítási vagy a Loom következtetési szerepét. A felületnek és a mögötte működő rendszereknek más-más a feladata.

A Core a primitives könyvtárat használja. A Loom a Core-ra épül, és a solvers könyvtárat veszi igénybe. A Fabric a Dweve szolgáltatás API-ja és portálja.

Induljon ki a szükséges végrehajtásból

Egy számítási rendszer értékelésekor induljon ki egy konkrét számításból és az ahhoz szükséges reprezentációból. Ezután kérdezze meg, melyik háttérrendszer hajtja végre, milyen akkumulátor- és csomagolási szabályok érvényesek, és milyen újrajátszási szerződés van deklarálva. Ezekkel a kérdésekkel a katalógus a csapat számára is használhatóvá válik.

A Core nyilvános adatai a katalógus szélességét mutatják. A végrehajtási szerződés segít értelmezni azt. Mindkettőről beszélni kell: milyen munkát fed le a rendszer, és mit jelent használat közben egy konkrét megvalósítás.