Core sisältäpäin: yli 2 900 operaatiota 12 taustajärjestelmälle
Mitä operaatiomäärä kertoo
Matriisikertolasku kuulostaa yhdeltä tehtävältä. Sen toteutus riippuu siitä, mitä arvot tarkoittavat, miten ne tallennetaan, miten osatulokset kootaan ja millä laitteistolla työ tehdään. Pakatuista binääriarvoista koostuva matriisi ja liukulukumatriisi voivat vastata samaa abstraktia operaatiota, vaikka ne vaativat erilaiset laskentasäännöt ja koodin.
Core on Dweven laskentaperusta koulutukseen ja päättelyyn. Sen julkinen luettelo kattaa satojatuhansia käsin viritettyjä ytimiä yli 2 900 operaatiolle 76 kategoriassa, 25 lukumuodossa ja 12 taustajärjestelmässä. Luvut kuvaavat järjestelmän eri osia. Operaatio nimeää laskutoimituksen. Lukumuoto määrittää esitystavan. Taustajärjestelmä kertoo, missä suoritus tapahtuu. Ydin toteuttaa tietyn yhdistelmän näitä valintoja.
Luetteloa ei kannata käsitellä yhtenä suurena ominaisuuslukuna. Kehittäjän on tiedettävä, löytyykö tarvittava yhdistelmä ja millaisia ehtoja sen käyttöön liittyy.
Laskutoimitus ja sen esitystapa kuuluvat yhteen
Tarkastellaan reduktiota: arvokokoelma yhdistetään yhdeksi tulokseksi. Sana ”summa” jättää monta kysymystä auki. Ovatko syötteet etumerkillisiä kokonaislukuja, kiinteän pisteen lukuja vai liukulukuja? Missä muodossa välitulosta säilytetään? Mitä tapahtuu, jos seuraava arvo ei mahdu siihen?
Core liittää nämä valinnat operaatioon. Suoritussopimus määrittää tietotyypin, bittileveyden, pakkauksen, kertyvän tuloksen tyypin, taustajärjestelmän, käskykannan, valintakäytännön ja determinismitilan. Yhdenkin valinnan muuttaminen voi muuttaa laskutoimituksen merkitystä, vaikka operaation nimi pysyy samana.
25 lukumuotoa kattavat binääri-, ternaari-, kokonaisluku-, kiinteän pisteen, mukautuvat ja liukulukumuodot. Lukumuotoperheen nimi on vasta lähtökohta aritmetiikan kuvaamiseen. Myös bittileveydellä, etumerkillisyydellä, skaalalla ja tallennusasettelulla on merkitystä. Luetteloa tulee siis lukea tuettujen yhdistelmien kokoelmana, ei lupauksena siitä, että jokainen operaatio toimii kaikissa kuviteltavissa lukumuodoissa ja kaikilla kohdealustoilla.
Myöskään tiedonsiirtomuoto ei ratkaise kaikkia suoritukseen liittyviä kysymyksiä. ONNX kuvaa laskentagraafin tyypitetyillä syötteillä, tulosteilla ja operaattoreilla. Se tarjoaa järjestelmille yhteisen mallikuvauksen, mutta suoritusaikaisen ympäristön on silti toteutettava operaattorit. ONNX-käsitteiden dokumentaatio selittää graafiesityksen ja suorituksen eron.
12 taustajärjestelmää, selkeät suoritusvalinnat
Coren 12 taustajärjestelmää kattavat skalaarisuorituksen, suorittimien käskykannat sekä grafiikkasuoritin- ja siirrettävät kohteet. Julkiseen kohdejoukkoon kuuluvat Scalar, SSE2, AVX2, AVX-512, NEON, SVE2, CUDA, ROCm, Metal, Vulkan, WebGPU ja WASM. Ne ovat Coren suorituspolkuja, eivät mallin erillisiä versioita.
Valintamekanismi valitsee nykyiselle isäntälaitteelle tuetun toteutuksen operaation ja sen suoritussopimuksen perusteella. Valittu polku, suoritusympäristö, isäntälaite ja valinnan syy tallennetaan. Näin voidaan tarkastella, mitä valintoja suoritus todella käytti.
Siirrettävyydellä on silti rajansa. Esimerkiksi WebAssemblyn dokumentaatio erottaa siirrettävän binäärimuodon isäntäympäristön tarjoamista rajapinnoista. Selaimessa ja sen ulkopuolella voi olla käytettävissä eri rajapintoja. WebAssemblyn siirrettävyyttä käsittelevä dokumentaatio antaa tälle hyödyllistä taustaa. Pelkkä taustajärjestelmän nimi ei kerro, millaisessa ympäristössä sovellus toimii.
Coren paikka Dwevessä
Core käyttää perusoperaatioihin primitiivikirjastoa ja tuo nämä perusteet osaksi laskentajärjestelmää. Loom rakentuu Coren päälle ja käyttää päättelytyössään ratkaisijakirjastoa. Osilla on näin selkeät vastuut: primitiivit tarjoavat perusoperaatiot, Core suorittaa laskennan ja Loom rakentaa niiden varaan päättelyä.
Dweve on palvelu. Fabric on sen API ja portaali, jonka kautta ihmiset ja sovellukset käyttävät palvelua. Fabric ei korvaa Coren laskentatehtävää eikä Loomin päättelytehtävää. Käyttöliittymällä ja sen taustalla toimivilla järjestelmillä on omat tarkoituksensa.
Aloita tarvitsemastasi laskutoimituksesta
Kun arvioit laskentajärjestelmää, aloita konkreettisesta laskutoimituksesta ja sen vaatimasta esitystavasta. Selvitä sitten, mikä taustajärjestelmä suorittaa sen, mitä sääntöjä kertyvään tulokseen ja pakkaukseen sovelletaan ja millainen toistettavuussopimus on määritelty. Näiden kysymysten avulla luettelosta tulee tiimille käyttökelpoinen.
Coren julkiset luvut kuvaavat luettelon laajuutta. Suoritussopimus kertoo, miten sitä luetaan. Molempia tarvitaan: mitä työtä järjestelmä kattaa ja mitä tietty toteutus tarkoittaa käytännössä.