Core iš vidaus: daugiau nei 2 900 operacijų 12 vykdymo aplinkų
Ką pasako operacijų skaičius
Matricų daugyba skamba kaip viena užduotis. Tačiau jos įgyvendinimas priklauso nuo to, ką reiškia reikšmės, kaip jos saugomos, kaip sumuojami tarpiniai rezultatai ir kokia aparatinė įranga atlieka skaičiavimą. Supakuotų dvejetainių reikšmių matrica ir slankiojo kablelio skaičių matrica gali atitikti tą pačią abstrakčią operaciją, bet joms gali reikėti skirtingų skaitinių taisyklių ir kodo.
Core yra Dweve skaičiavimų pagrindas, skirtas mokymui ir išvadų skaičiavimui. Viešame kataloge – šimtai tūkstančių rankomis optimizuotų branduolių, apimančių daugiau nei 2 900 operacijų 76 kategorijose, 25 skaitinius formatus ir 12 vykdymo aplinkų. Šie skaičiai nusako skirtingas sistemos dalis. Operacija įvardija skaičiavimą. Skaitinis formatas apibrėžia reikšmių atvaizdavimą. Vykdymo aplinka nurodo skaičiavimo tikslą. Branduolys įgyvendina konkretų šių pasirinkimų derinį.
Svarbiau suprasti šiuos skirtumus, nei laikyti katalogą vienu dideliu funkcijų skaičiumi. Kūrėjui reikia žinoti, ar reikiamas derinys yra prieinamas ir kokios sutarties jis laikosi.
Skaičiavimas ir jo atvaizdavimas neatsiejami
Panagrinėkime redukciją: reikšmių aibė sujungiama į vieną rezultatą. Žodis „suma“ palieka neatsakytų klausimų. Ar įvestys yra sveikieji skaičiai su ženklu, fiksuotojo kablelio ar slankiojo kablelio reikšmės? Kokiu formatu laikomas sukauptas rezultatas? Kas nutinka, kai kita reikšmė nebetelpa į tą formatą?
Core šiuos pasirinkimus susieja su operacija. Jos vykdymo sutartyje nurodomi duomenų tipas, plotis, pakavimas, akumuliatorius, vykdymo aplinka, instrukcijų rinkinys, parinkimo politika ir deterministiškumo režimas. Pakeitus bent vieną iš jų, gali pasikeisti skaičiavimo reikšmė, net jei operacijos pavadinimas lieka tas pats.
Tarp 25 skaitinių formatų yra dvejetainės, trejetainės, sveikųjų skaičių, fiksuotojo kablelio, adaptyviosios ir slankiojo kablelio šeimos. Šeimos pavadinimas tėra atskaitos taškas aprašant aritmetiką. Svarbūs ir plotis, ženklo bitas, mastelis bei saugojimo išdėstymas. Todėl katalogą reikėtų suprasti kaip palaikomų derinių rinkinį, o ne kaip pažadą, kad kiekviena operacija veikia visais įmanomais formatais ir visose platformose.
Net ir apsikeitimo formatas neatsako į visus vykdymo klausimus. ONNX aprašo skaičiavimų grafą su tipizuotomis įvestimis, išvestimis ir operatoriais. Taip sistemos gauna bendrą modelio aprašą, tačiau vykdymo aplinka vis tiek turi įgyvendinti tuos operatorius. ONNX sąvokų dokumentacijoje paaiškinamas skirtumas tarp grafo atvaizdavimo ir vykdymo.
12 vykdymo aplinkų ir aiškūs vykdymo pasirinkimai
Core 12 vykdymo aplinkų apima skaliarinį vykdymą, CPU instrukcijų rinkinius, GPU ir perkeliamas platformas. Viešame sąraše yra Scalar, SSE2, AVX2, AVX-512, NEON, SVE2, CUDA, ROCm, Metal, Vulkan, WebGPU ir WASM. Tai Core vykdymo keliai, o ne atskiros modelio versijos.
Parinkimo mechanizmas dabartiniame kompiuteryje pasirenka palaikomą operacijos ir jos vykdymo sutarties įgyvendinimą. Pasirinktas kelias, vykdymo langelis, kompiuteris ir pasirinkimo priežastis įrašomi. Todėl galima patikrinti, kokiais pasirinkimais iš tiesų buvo vykdomas skaičiavimas.
Perkeliamumas turi ribas. Pavyzdžiui, WebAssembly dokumentacijoje atskiriamas perkeliamas dvejetainis formatas nuo pagrindinės aplinkos teikiamų API. Naršyklėje ir už jos ribų gali būti prieinamos skirtingos sąsajos. WebAssembly perkeliamumo dokumentacija padeda suprasti šį skirtumą. Vien vykdymo aplinkos pavadinimas neatskleidžia, kokioje aplinkoje veikia programa.
Core vieta Dweve sistemoje
Core naudoja primityvų biblioteką pagrindinėms operacijoms ir įtraukia jas į skaičiavimų sistemą. Loom sukurta ant Core ir samprotavimui naudoja sprendiklių biblioteką. Kiekviena dalis turi aiškią paskirtį: primityvai teikia pagrindines operacijas, Core vykdo skaičiavimus, o Loom šiuo pagrindu samprotauja.
Dweve yra paslauga. Fabric – jos API ir portalas, per kurį žmonės ir programos pasiekia paslaugą. Fabric nepakeičia Core skaičiavimų ar Loom samprotavimo funkcijų. Sąsaja ir už jos esančios sistemos atlieka skirtingus vaidmenis.
Pradėkite nuo reikiamo skaičiavimo
Vertindami skaičiavimų sistemą, pradėkite nuo konkretaus skaičiavimo ir jam reikalingo atvaizdavimo. Tada išsiaiškinkite, kuri vykdymo aplinka jį atliks, kokios taikomos akumuliatoriaus ir pakavimo taisyklės ir kokia pakartojimo sutartis deklaruota. Šie klausimai paverčia katalogą naudingu komandai.
Vieši Core skaičiai nusako katalogo platumą. Vykdymo sutartis paaiškina, kaip jį skaityti. Reikia aptarti abu dalykus: kokius darbus sistema apima ir ką reiškia konkretus įgyvendinimas ją naudojant.