Ġewwa Core: aktar minn 2,900 operazzjoni fuq 12-il backend
X'jgħidlek in-numru ta' operazzjonijiet
Il-multiplikazzjoni tal-matriċi tidher biċċa xogħol waħda. Iżda l-implimentazzjoni tagħha tiddependi minn xi jfissru l-valuri, kif jinħażnu, kif jinġabru r-riżultati parzjali u liema hardware jwettaq il-komputazzjoni. Matriċi b'valuri binarji ppakkjati u matriċi b'valuri floating-point jistgħu jaqsmu l-istess operazzjoni astratta, iżda jeħtieġu regoli numeriċi u kodiċi differenti.
Core huwa l-pedament tal-komputazzjoni ta' Dweve għat-taħriġ u l-inferenza. Il-katalgu pubbliku tiegħu jinkludi mijiet ta' eluf ta' kernels irfinati bl-idejn għal aktar minn 2,900 operazzjoni f'76 kategorija, 25 format numeriku u 12-il backend. Dawn iċ-ċifri jiddeskrivu partijiet differenti tas-sistema. Operazzjoni ssemmi l-komputazzjoni. Format numeriku jiddefinixxi r-rappreżentazzjoni. Backend jidentifika mira ta' eżekuzzjoni. Kernel jimplimenta taħlita partikolari ta' dawn l-għażliet.
Aktar milli tqis il-katalgu bħala total wieħed kbir ta' karatteristiċi, huwa importanti li tifhem din id-distinzjoni. Żviluppatur irid ikun jaf jekk teżistix it-taħlita meħtieġa u liema kuntratt isegwi.
Il-komputazzjoni u r-rappreżentazzjoni jmorru flimkien
Ħu t-tnaqqis: ġabra ta' valuri tingħaqad f'riżultat wieħed. Il-kelma “somma” tħalli diversi mistoqsijiet bla tweġiba. L-inputs huma numri sħaħ b'sinjal, valuri b'punt fiss jew valuri floating-point? Liema rappreżentazzjoni żżomm ir-riżultat akkumulat? X'jiġri jekk ir-rappreżentazzjoni ma tkunx tista' żżomm il-valur li jmiss?
Core iżomm dawn l-għażliet marbuta mal-operazzjoni. Il-kuntratt tal-eżekuzzjoni tiegħu jinkludi t-tip tad-dejta, il-wisa', l-ippakkjar, l-akkumulatur, il-backend, is-sett ta' istruzzjonijiet, il-politika ta' dispatch u l-mod ta' determinismu. Bidla f'waħda minn dawn tista' tbiddel it-tifsira tal-komputazzjoni, anki meta l-isem tal-operazzjoni jibqa' l-istess.
Il-25 format numeriku jinkludu familji binarji, ternarji, ta' numri sħaħ, b'punt fiss, adattivi u floating-point. L-isem ta' familja huwa biss il-bidu tad-deskrizzjoni tal-aritmetika. Jgħoddu wkoll il-wisa', jekk in-numru għandux sinjal, l-iskala u t-tqassim fil-ħażna. Għaldaqstant, il-katalgu għandu jinqara bħala ġabra ta' taħlitiet appoġġati, mhux bħala wegħda li kull operazzjoni teżisti f'kull format konċepibbli fuq kull mira.
Għalhekk, format ta' interkambju lanqas ma jwieġeb kull mistoqsija dwar l-eżekuzzjoni. ONNX jiddeskrivi graff ta' komputazzjoni b'inputs, outputs u operaturi b'tipi definiti. B'hekk is-sistemi jkollhom deskrizzjoni komuni tal-mudell; ir-runtime xorta jrid jimplimenta dawk l-operaturi. Id-dokumentazzjoni tal-kunċetti tal-ONNX tispjega d-differenza bejn ir-rappreżentazzjoni tal-graff u l-eżekuzzjoni.
12-il backend, għażliet ta' eżekuzzjoni espliċiti
It-12-il backend ta' Core ikopru eżekuzzjoni skalar, settijiet ta' istruzzjonijiet tas-CPU u miri GPU u portabbli. Il-lista pubblika tinkludi Scalar, SSE2, AVX2, AVX-512, NEON, SVE2, CUDA, ROCm, Metal, Vulkan, WebGPU u WASM. Dawn l-ismijiet jiddeskrivu mogħdijiet ta' eżekuzzjoni fi ħdan Core, mhux verżjonijiet differenti ta' mudell.
Id-dispatch jagħżel implimentazzjoni appoġġata għall-operazzjoni u l-kuntratt tal-eżekuzzjoni tagħha fuq il-host attwali. Il-mogħdija magħżula tiġi rreġistrata flimkien maċ-ċellola tal-eżekuzzjoni, il-host u r-raġuni. Għalhekk, run jista' jiġi spezzjonat permezz tal-għażliet li tassew għamel.
Il-portabbiltà xorta għandha l-limiti tagħha. Pereżempju, id-dokumentazzjoni tal-WebAssembly tiddistingwi bejn format binarju portabbli u l-APIs ipprovduti mill-ambjent host. L-eżekuzzjoni fil-browser u dik barra minnu jistgħu joffru interfaces differenti. Id-dokumentazzjoni tal-portabbiltà tal-WebAssembly tagħti kuntest utli għal din id-distinzjoni. L-isem ta' backend waħdu ma jispjegax l-ambjent li fih taħdem applikazzjoni.
Fejn jidħol Core f'Dweve
Il-librerija tal-primitives tintuża minn Core għall-operazzjonijiet fundamentali. Core jiġbor dawn il-pedamenti fis-sistema tal-komputazzjoni. Loom huwa mibni fuq Core u juża l-librerija tas-solvers għar-raġunament tiegħu. B'hekk kull parti għandha responsabbiltà ċara: il-primitives jipprovdu operazzjonijiet bażiċi, Core iwettaq il-komputazzjoni, u Loom jibni r-raġunament fuq dak il-pedament.
Dweve huwa s-servizz. Fabric huwa l-API u l-portal tiegħu, li permezz tagħhom in-nies u l-applikazzjonijiet jaċċessaw is-servizz. Fabric ma jieħux post ir-rwol ta' komputazzjoni ta' Core jew ir-rwol ta' raġunament ta' Loom. L-interface u s-sistemi warajha jaqdu skopijiet differenti.
Ibda mill-eżekuzzjoni li teħtieġ
Meta tivvaluta sistema ta' komputazzjoni, ibda minn komputazzjoni konkreta u mir-rappreżentazzjoni li teħtieġ. Imbagħad staqsi liema backend se jwettaqha, liema regoli japplikaw għall-akkumulatur u l-ippakkjar, u liema kuntratt ta' replay huwa ddikjarat. Dawn il-mistoqsijiet jagħmlu l-katalgu utli għal tim.
Iċ-ċifri pubbliċi ta' Core jiddeskrivu l-firxa tal-katalgu. Il-kuntratt tal-eżekuzzjoni jispjega kif għandek taqrah. It-tnejn għandhom jitqiesu flimkien: liema xogħol ikopri s-sistema, u xi tfisser implimentazzjoni partikolari meta tużaha.