Core seestpoolt: üle 2 900 operatsiooni 12 taustsüsteemis
Mida näitab operatsioonide arv?
Maatriksite korrutamine kõlab ühe ülesandena. Selle teostus sõltub sellest, mida väärtused tähistavad, kuidas neid salvestatakse, kuidas vahetulemusi liidetakse ja milline riistvara arvutuse teeb. Pakitud binaarne maatriks ja ujukomaarvudega maatriks võivad kasutada sama abstraktset operatsiooni, kuid vajavad erinevaid arvutusreegleid ja koodi.
Core on Dweve’i arvutusbaas treenimiseks ja järelduste tegemiseks. Selle avalik kataloog hõlmab sadu tuhandeid käsitsi häälestatud tuumi, enam kui 2 900 operatsiooni 76 kategoorias, 25 arvuvormingut ja 12 taustsüsteemi. Need arvud kirjeldavad süsteemi eri osi. Operatsioon nimetab arvutuse. Arvuvorming määrab esituse. Taustsüsteem tähistab käivitamise sihtkohta. Tuum teostab valitud kombinatsiooni.
Seda eristust on kasulikum mõista kui käsitleda kataloogi ühe suure funktsioonide koguarvuna. Arendaja peab teadma, kas vajalik kombinatsioon on olemas ja millist lepingut see järgib.
Arvutus ja selle esitus käivad kokku
Võtame taandamise: väärtuste hulk ühendatakse üheks tulemuseks. Sõna „summa” jätab mitu küsimust lahtiseks. Kas sisendid on märgiga täisarvud, fikspunkt- või ujukomaarvud? Millises esituses vahetulemust hoitakse? Mis juhtub siis, kui järgmine väärtus enam sellesse esitusse ei mahu?
Core seob need valikud operatsiooniga. Selle käivitusleping määrab andmetüübi, laiuse, pakkimise, akumulaatori, taustsüsteemi, käsustiku, suunamispoliitika ja determinismirežiimi. Ühe valiku muutmine võib muuta arvutuse tähendust ka siis, kui operatsiooni nimi jääb samaks.
25 arvuvormingu hulka kuuluvad binaarsed, trinaarsed, täis-, fikspunkt-, adaptiivsed ja ujukomaarvud. Arvuperekonna nimi on aritmeetika kirjeldamise lähtekoht. Olulised on ka laius, märgilisus, skaala ja salvestuspaigutus. Seepärast tuleks kataloogi lugeda toetatud kombinatsioonide kogumina, mitte lubadusena, et iga operatsioon töötab igas mõeldavas vormingus ja igal sihtmärgil.
Ka andmevahetusvorming ei lahenda kõiki käivitamisega seotud küsimusi. ONNX kirjeldab arvutusgraafi, mille sisendid, väljundid ja operaatorid on tüübistatud. See annab süsteemidele ühise mudelikirjelduse, kuid käituskeskkond peab operaatorid ikkagi teostama. ONNX-i mõistete dokumentatsioon selgitab graafi esituse ja käivitamise erinevust.
12 taustsüsteemi ja selged käivitusvalikud
Core’i 12 taustsüsteemi hõlmavad skalaarset täitmist, protsessori käsustikke ning GPU- ja kaasaskantavaid sihtmärke. Avalikku sihtmärkide hulka kuuluvad Scalar, SSE2, AVX2, AVX-512, NEON, SVE2, CUDA, ROCm, Metal, Vulkan, WebGPU ja WASM. Need nimed tähistavad Core’i käivitusteid, mitte mudeli eri versioone.
Suunamine valib praeguses hostis operatsiooni ja selle käivituslepingu jaoks toetatud teostuse. Valitud tee salvestatakse koos käivituskeskkonna, hosti ja valiku põhjusega. Nii saab kontrollida, milliseid valikuid konkreetne käivitus tegelikult kasutas.
Kaasaskantavusel on siiski piirid. Näiteks eristab WebAssembly dokumentatsioon kaasaskantavat binaarvormingut hostkeskkonna pakutavatest API-dest. Brauseris ja sellest väljaspool võib kasutada erinevaid liideseid. WebAssembly kaasaskantavuse dokumentatsioon annab selle eristuse mõistmiseks kasulikku tausta. Üksnes taustsüsteemi nimi ei kirjelda rakenduse töökeskkonda.
Core’i roll Dweve’is
Core kasutab põhitehete jaoks primitiivide teeki. Core koondab need alused arvutussüsteemiks. Loom on ehitatud Core’i peale ja kasutab arutlustööks lahendajate teeki. Nii on igal osal selge vastutus: primitiivid pakuvad põhitehteid, Core teeb arvutused ja Loom rajab neile arutlusvõime.
Dweve on teenus. Fabric on selle API ja portaal, mille kaudu inimesed ja rakendused teenust kasutavad. Fabric ei asenda Core’i arvutusrolli ega Loomi arutlusrolli. Liidesel ja selle taga olevatel süsteemidel on eri ülesanded.
Alusta vajalikust käivitusest
Arvutussüsteemi hinnates alusta konkreetsest arvutusest ja sellele vajalikust esitusest. Seejärel küsi, milline taustsüsteem selle käivitab, millised akumulaatori- ja pakkimisreeglid kehtivad ning milline korduskäivituse leping on määratud. Nii muutub kataloog meeskonnale kasutatavaks.
Core’i avalikud arvud näitavad kataloogi ulatust. Käivitusleping selgitab, kuidas seda lugeda. Mõlemad kuuluvad samasse arutellu: milliseid töid süsteem katab ja mida konkreetne teostus selle kasutamisel tähendab.