Dweve

Core iš vidaus: daugiau nei 2 900 operacijų 12 vykdymo aplinkų

Šimtai tūkstančių rankomis optimizuotų branduolių. Daugiau nei 2 900 operacijų 76 kategorijose. 25 skaitiniai formatai ir 12 vykdymo aplinkų. Susipažinkite...

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.

Daugiau nei 2 900 operacijų 76 kategorijose; 25 skaitiniai formatai; 12 vykdymo aplinkų. Šimtai tūkstančių rankomis optimizuotų branduolių įgyvendina palaikomus vykdymo pasirinkimus.

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.

Vykdymo pasirinkimą vertinkite pagal operaciją, atvaizdavimą, akumuliatorių, aplinką ir pakartojimo taisykles. Tai reprezentatyvus pavyzdys, o ne aprėpties matrica.

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.

Core naudoja primityvų biblioteką. Loom sukurta ant Core ir naudoja sprendiklių biblioteką. Fabric yra Dweve paslaugos API ir portalas.

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.