Viena platforma, 1930 algoritmi, katrs backend: kā mēs izveidojām pilnu steku diskrētajam mākslīgajam intelektam
Fragmentācijas problēma
Jūsu AI izstrādes vide ir fragmentēta.
Jūs veidojat prototipus PyTorch, jo pētnieki to dod priekšroku. Jūs izvietojat ar TensorFlow, jo ražošanas komandas vēlas Google rīkus. Jūs rakstāt CUDA kodolus NVIDIA GPU. Jūs portējat uz ROCm AMD aparatūrai. Jūs pārrakstāt visu mobilajām ierīcēm, izmantojot TensorFlow Lite vai Core ML. Jūs izmantojat ONNX, lai konvertētu starp ietvariem, cerot, ka nekas nesabojāsies. Jūs uzturat atsevišķas kodu bāzes mākoņa, malu un pārlūkprogrammas izvietošanai.
Desmit dažādi rīki. Tūkstošiem atkarību. Versiju saderības murgi. Pārrāvuma izmaiņas katrā laidiena ciklā.
Atjaunināt PyTorch? Ceriet, ka jūsu CUDA versija sakrīt. Vēlaties izvietot AMD? Pārrakstiet savus kodolus. Nepieciešama pārlūkprogrammas secināšana? Sāciet no nulles ar WebAssembly. Pārejat no NVIDIA uz AMD GPU? Veiksmi portējot šo kodu bāzi. Izvietojat FPGA? Apgūstiet pilnīgi citu rīku ķēdi.
Šī fragmentācija nav nejaušība. Tas ir dabisks rezultāts tam, ka katrs ietvars optimizējas savam konkrētajam lietošanas gadījumam, ignorējot savietojamību. PyTorch izceļas pētniecībā, bet izvietošanu uzskata par pēcpārdomu. TensorFlow mērķē uz ražošanu, bet pētniecības pieredze ir sāpīga. CUDA ieslēdz jūs NVIDIA aparatūrā. Katrs rīks atrisina vienu problēmu, vienlaikus radot trīs jaunas.
Ir labāks ceļš.
Dweve Core: pilnīga platforma diskrētam AI
Dweve Core ir vienota platforma diskrētu neironu tīklu veidošanai no bināras līdz 8 bitu precizitātei. Tas nav vēl viens ietvars. Tas ir pilnīgs aizstājējs jūsu fragmentētajai kopai.
Viena instalācija. Viens API. Viena kodu bāze. Automātiska izvietošana uz CPU, GPU, FPGA, WebAssembly, jebkur, kur jums nepieciešams darbināt.
Lūk, ko nozīmē pilnīgs:
1 930 algoritmi, kas aptver katru darbību, kas jums nepieciešama:
- 415 primitīvu: atomiskas darbības, piemēram, XNOR, popcount, bitu manipulācija, kvantizācija, konvertēšana starp formātiem
- 500 kodolu: optimizētas saliktas darbības izplatītiem modeļiem
- 191 slāņi: pilnīgi neironu tīkla celtniecības bloki (konvolūcija, blīvs, normalizācija, aktivācija, uzmanība)
- 674 algoritmi: augsta līmeņa metodes, tostarp transformācijas, apmācības procedūras, evolūcijas meklēšana, zināšanu destilācija
- 30 savietojamības utilītas: neobligāti peldošā komata tilti hibrīdām pieejām
- 120 modeļu arhitektūru: iepriekš optimizētas tīkla veidnes no ResNet līdz Transformer
Tas nav apakškopa. Tā ir matemātiska pilnība. Mēs analizējām katru galveno neironu tīkla arhitektūru un izveidojām katru darbību, kas tām nepieciešama, optimizētu diskrētai skaitļošanai no pirmajiem principiem.
6 aizmugursistēmas ar automātisku kompilāciju:
- SIMD CPU: ar rokām optimizēti kodoli x86 un ARM ar automātisku ISA noteikšanu (SSE2, AVX2, AVX-512, NEON, SVE/SVE2)
- CUDA: NVIDIA GPU optimizācija ar warp līmeņa primitīviem un Tensor Core izmantošanu
- Rust-HDL: tieša FPGA un ASIC sintēze no algoritmu aprakstiem
- WebAssembly: pārlūkprogrammas secināšana ar SIMD128 atbalstu GDPR atbilstošai apstrādei ierīcē
- ROCm: AMD GPU optimizācija ar wavefront līmeņa darbībām
- Metal: Apple Silicon optimizācija, izmantojot vienotu atmiņas arhitektūru
6 bitu platumi ar adaptīvu precizitāti:
- Binārais (1 bits): Maksimāla efektivitāte ar 16× kompresiju salīdzinājumā ar FP16
- Trīsvērtīgais: {-1, 0, +1} ar tiešu retumu
- 2 biti: Četri līmeņi līdzsvarotai kompresijai
- 3 biti: Astoņi līmeņi kvalitātes jutīgiem slāņiem
- 4 biti: Sešpadsmit līmeņi, tuvojoties FP16 kvalitātei
- 8 biti: Gandrīz pilna precizitāte kritiskām darbībām
Platforma apmācības laikā katram slānim apgūst optimālo bitu platumu, izmantojot gradientu balstītu atlasi. Ne heuristiku. Ne minējumus. Faktisku optimizāciju, kas balstās uz to, kā precizitāte uzlabojas, palielinot precizitātes pakāpi.
Raksti vienreiz, izvieto visur
Platforma izmanto deklaratīvu Rust API. Jūs aprakstāt, ko vēlaties, un kompilators izdomā, kā to optimāli palaist jūsu mērķa aparatūrā.
Tīkla definīcijas piemērs:
let model = NetworkBuilder::new()
.input(BinaryTensor::new([1024, 784]))
.dense(784, 512, activation=BinaryActivation::Sign)
.dense(512, 256, activation=BinaryActivation::Sign)
.output(256, 10)
.build();
Tas arī viss. Rakstiet šo vienreiz, un kompilators automātiski ģenerē optimizētas implementācijas katram backendam.
Kompilācijas cauruļvads darbojas četros līmeņos:
1. līmenis: Neironu tīkla IR - Jūsu augsta līmeņa tīkla apraksts tiek parsēts skaitļošanas grafā ar darbībām, datu plūsmu un hiperparametriem.
2. līmenis: Grafu optimizācija - Standarta kompilatora gājieni novērš mirušo kodu, saloka konstantes, noņem dublētas izteiksmes un apvieno secīgas darbības. Blīvs slānis, kam seko partiju normalizācija un aktivācija, kļūst par vienu apvienotu kodolu, kas ielādē ievadi vienreiz un rada galīgo izvadi.
3. līmenis: BitOps dialekts - Grafs tiek pazemināts līdz bitu līmeņa darbībām, kas tieši tipizētas ar precizitāti. Šis starpposma attēlojums ir aparatūras neatkarīgs, bet tuvs faktiskajām mašīnas darbībām. Balstīts uz MLIR (Multi-Level Intermediate Representation) infrastruktūru rūpnieciska līmeņa optimizācijai.
4. līmenis: Aparatūras pazemināšana - Galīgā koda ģenerēšana rada platformai specifiskas implementācijas. AVX-512 bitu darbības kļūst par VPXORQ un VPOPCNTQ instrukcijām. CUDA tās kļūst par warp līmeņa iebūvētajām funkcijām ar koalescētu atmiņas piekļuvi. FPGA tās kļūst par XNOR vārtiem un summētāju kokiem, kas sintezēti Verilog.
Tas pats pirmkods izstrādes laikā darbojas jūsu klēpjdatora CPU, ražošanā tiek izvietots mākoņa GPU, un kompilējas FPGA deterministiskai reāllaika secināšanai. Bez tulkošanas. Bez pārnešanas. Bez platformai specifiska koda.
Veidots, lai klienti ar to veidotu
Dweve Core nodrošina Dweve Loom, mūsu ierobežojumu balstīto spriešanas sistēmu. Bet tas nav tikai mums. Tā ir pilnīga platforma ikvienam, kurš veido diskrētus neironu tīklus.
Varat izveidot:
- Pielāgotas arhitektūras, izmantojot 191 slāņu tipus un 674 algoritmus
- Domēnam specifiskus modeļus, kas optimizēti tieši jūsu prasībām
- Hibrīdas pieejas, kas apvieno diskrētu un nepārtrauktu skaitļošanu, izmantojot 30 sadarbspējas utilītas
- Jaunas apmācības metodes, izmantojot evolucionāro meklēšanu, zināšanu destilāciju vai pielāgotus gradientu novērtētājus
Platforma nodrošina:
Pilnīgu apmācības infrastruktūru: Seši tiešās novirzīšanas novērtētāja varianti binārai/ternārai gradientu plūsmai. Binārai apziņai pielāgoti optimizētāji, kas iekšēji saglabā pilnas precizitātes svarus, vienlaikus binārizējot tos priekšējās pārejās. Automātiska bitu platuma izvēle, izmantojot gradientu balstītu optimizāciju. Pakāpeniska daudzposmu destilācija no FP32 caur INT8, INT4, ternāru līdz bināram.
Automātisku aparatūras optimizāciju: CPU iespēju noteikšana izpildes laikā (CPUID x86, sistēmas reģistri ARM) un automātiska nosūtīšana uz ātrāko pieejamo SIMD implementāciju. GPU kodola varianti, kas atlasīti, pamatojoties uz vītņu grupas lielumu, koplietoto atmiņu un reģistru skaitu. FPGA sintēze ar automātisku cauruļvada reģistru ievietošanu, pamatojoties uz laika ierobežojumiem.
Elastīgu kvantizāciju: Simetriska un asimetriska kvantizācija ar mērogiem katram tensoram, katram kanālam vai katram grupai. Dinamiskā kvantizācija ar diapazona noteikšanu izpildes laikā vai statiskā kvantizācija ar iepriekš aprēķinātiem mērogiem no kalibrēšanas datiem. MSE optimāla un KL diverģences balstīta mērogu aprēķināšana minimālam precizitātes zudumam.
Kāpēc diskrētai skaitļošanai ir nozīme
Tradicionālie neironu tīkli visu aprēķina 16 bitu vai 32 bitu peldošā komata formātā un pēc tam galā pieņem diskrētus lēmumus. Mēs darbojamies tieši diskrētā telpā no bināra līdz 8 bitiem, novēršot starpposma nepārtrauktu skaitļošanu.
Tā nav vienkārša esošo modeļu kvantizācija. Ietvars ir veidots no pirmajiem principiem ap diskrētām darbībām:
Aparatūras realitāte: Mūsdienu procesori sastāv no miljardiem tranzistoru divos stāvokļos. XNOR vārtiem nepieciešami 6 tranzistori. 32 bitu peldošā komata reizinātājam nepieciešami tūkstošiem, un tas patērē vairākas kārtas vairāk enerģijas. Diskrētas darbības saskan ar aparatūras pamatprincipiem.
Atmiņas efektivitāte: Binārie svari iesaiņo 64 vērtības vienā 64 bitu vārdā. ResNet-50 ar 25,6 miljoniem parametru aizņem 3,1 MB binārā formātā salīdzinājumā ar 50 MB FP16 formātā. Viss modelis ietilpst CPU L3 kešatmiņā (parasti: 36-64 MB). Jūs kļūstat skaitļošanas ierobežots, nevis atmiņas ierobežots.
Izvietošanas elastīgums: Nelieli modeļi ļauj veikt secinājumus ierīcē. Nav mākoņa atkarības. Nav tīkla latentuma. Nav datu privātuma bažu. Apstrādājiet sensitīvu informāciju pilnībā lietotāju ierīcēs, nekad to nepārsūtot uz serveriem.
Pilnīga algoritmu matrica
Platforma nodrošina visaptverošu pārklājumu trīs dimensijās: algoritmi, aizmugures sistēmas un bitu platumi.
Pamatdarbības (415 primitīvi):
- 46 bitu operācijas: loģiskie vārti, manipulācijas, nobīdes, skaitīšana, atrašana
- 16 lauku operācijas: izvilkšana, ievietošana, iepakošana, izkliedēšana, apkopošana, masku veidošana
- 25 reducēšanas: loģiskā AND/OR/XOR, aritmētiskā summa/reizinājums, balsošana un vienprātība
- 17 attāluma metrikas: Hamminga, Žakāra, Daisa, Tanimoto, kosinusa, Manhetenas, Eiklīda
- 12 savstarpējās sajaukšanas operācijas: 2 līdz 4 virzienu sajaukšana, Mortona un Hilberta telpu aizpildošās līknes
- 44 aritmētikas: saskaitīšana, atņemšana, reizināšana, dalīšana, fiksētā punkta operācijas
- 39 transformācijas: Volša-Hadamarda, FFT, DCT, NTT, viļņi (Hāra, Daubechies, CDF97)
- 11 jaucējfunkcijas: SHA-256, Blake3, xxHash, MinHash, SimHash, lokalitāti jutīga jaucējfunkcija
- 22 nejaušo skaitļu ģenerēšana: LFSR, Mersennes Twister, ChaCha20, Sobola secības
- 15 kvantēšanas: simetriskā, asimetriskā, pa tensoru, pa kanālu, mēroga aprēķināšana
- 30 binārās matemātikas: XNOR-popcount, trīskāršā kodēšana, svaru atjaunināšana, gradientu operācijas
- 48 formātu konversijas: FP32/FP16/FP8/INT8/INT4/INT2 konversijas visos virzienos
- 42 fiksētā punkta operācijas: aritmētika, transcendentālās funkcijas, piesātinājums visos bitu platumos
Saliktās operācijas (500 kodolu):
Optimizēti kodoli, kas apvieno pamatoperācijas izplatītiem modeļiem. Matricas reizināšanas varianti (standarta, transponētā, blokētā). Konvolūcijas veidi (2D, 3D, dziļuma, grupētā, dilatētā). Normalizācija (partijas, slāņa, grupas, instances). Aktivācijas funkcijas (zīmes, cietā tanh, pa daļām lineārā). Uzmanības mehānismi (pašuzmanība, savstarpējā uzmanība, vairāku galvu). Apkopošana (maksimālā, vidējā, stohastiskā).
Tīkla slāņi (191 slānis):
Pilnīgi celtniecības bloki tīklu konstruēšanai. Blīvi slāņi ar bināriem, trīskāršiem un vairāku bitu svariem. Konvolūcijas slāņi ar visiem izplatītajiem variantiem. Atkārtotie slāņi (LSTM, GRU ar bināriem vārtiem). Uzmanības slāņi (mērogots punktu reizinājums, vairāku galvu, relatīvā pozīcija). Normalizācijas slāņi ar partijas statistiku un apgūtiem parametriem. Atlikušie savienojumi ar dimensiju saskaņošanu.
Augsta līmeņa algoritmi (674 algoritmi):
Pilnīgas metodes apmācībai, secinājumu izdarīšanai un optimizācijai. Zināšanu destilācija ar pakāpenisku daudzpakāpju precizēšanu. Evolūcijas ierobežojumu atklāšana ar ģenētisko programmēšanu. Neironu arhitektūras meklēšana diskrētiem tīkliem. Gradientu novērtētāji (tiešais, apgrieztais, adaptīvais, impulsa, hipertīkla). Optimizētāji (BinaryAdam, TernaryAdam, adaptīvā kvantēšana). Izplatītā apmācība ar Bizantijas noturīgu apkopošanu.
Backend ieviešanas dziļums
Katrs algoritms pastāv vairākos optimizētos variantos katram backend. Nevis vispārīgas implementācijas. Aparatūrai specifisks kods, kas izmanto katru arhitektūras iezīmi.
CPU SIMD: SSE2 nodrošina universālu x86-64 saderību (katrs procesors kopš 2001. gada). AVX2 sniedz 4-8× paātrinājumu Haswell un jaunākiem (2013+). AVX-512 sasniedz 10-16× ar masku reģistriem predikācijai un VPTERNLOG jebkurai 3 ieeju Būla funkcijai. NEON sniedz 3-4× paātrinājumu visiem ARMv8 procesoriem, ieskaitot mobilās ierīces un Apple Silicon. SVE/SVE2 nodrošina vektora garumam neatkarīgu kodu, kas automātiski izmanto platākus vektorus jaunākā aparatūrā.
CUDA: Warp līmeņa primitīvi organizē 32 pavedienus, kas izpildās sinhroni. Katrs pavediens apstrādā 32 bināras vērtības, kas ievietotas uint32. Pilns warp apstrādā 1 024 bināras vērtības paralēli. Aparatūras instrukcijas ietver __popc populācijas skaitīšanai, __ballot_sync warp balsošanai, __shfl_sync ātrai saziņai bez koplietojamās atmiņas. Koalescēta atmiņas piekļuve nodrošina joslas platuma izmantošanu. Tensor Core izmantošana matricas operācijām pat ar bināriem datiem.
Rust-HDL: Tieša aparatūras sintēze no anotēta Rust koda. Ietvars automātiski ģenerē Verilog/VHDL. Binārās XNOR-popcount operācijas tiek kartētas uz XNOR vārtiem (kombinatoriskā loģika, nulles izplatīšanās aizkave) plus summētāju kokiem. Cauruļvada reģistri tiek ievietoti automātiski, pamatojoties uz laika ierobežojumiem. Sintezē gan FPGA (Xilinx, Intel), gan ASIC.
WebAssembly: SIMD128 nodrošina 128 bitu vektoru operācijas visās mūsdienu pārlūkprogrammās (Chrome 91+, Firefox 89+, Safari 16.4+). Operācijas ietver v128.and/or/xor bitu loģikai un i8x16.popcnt populācijas skaitīšanai. Apvienojumā ar Web Workers daudzpavedienu apstrādei un SharedArrayBuffer koplietojamai atmiņai, tiek sasniegti 60-80% no vietējās CPU veiktspējas. Inference pārlūkprogrammā nodrošina GDPR atbilstošu apstrādi bez datu augšupielādes serverī.
ROCm: Wavefront līmeņa optimizācija AMD arhitektūrām ar 64 pavedieniem vienā wavefront (divreiz vairāk nekā NVIDIA 32). Katrs pavediens apstrādā 32 bināras vērtības, tātad 2 048 vērtības vienā wavefront. Līdzīgas instrukcijas kā CUDA ar __builtin_popcount, __ballot un ds_swizzle. Programmēšanas modelis ir pietiekami līdzīgs, lai CUDA izstrādātāji varētu uzreiz rakstīt ROCm kodu.
Metal: Apple Silicon optimizācija, izmantojot vienotu atmiņas arhitektūru, kur CPU un GPU koplieto fizisko RAM ar kešatmiņas saskaņotību. Novērš datu kopēšanas pārklājumu. Binārās operācijas izmanto Apple pielāgotos matricas dzinējus. M3 Max Neural Engine nodrošina 50-80 TOPS binārajā inferencē, izmantojot īpašus paātrinātājus, kas iebūvēti SoC.
Ko mēs nedarām (un kāpēc fokuss ir svarīgs)
Svarīgi precizēt: mēs nedarām visu. Fokuss nodrošina izcilību.
Nav peldošā komata inferenču: Tikai diskrēti aprēķini no bināriem līdz 8 bitu. Ja nepieciešams FP32/FP16/BFloat16 izvietošanai, izmantojiet PyTorch vai JAX. Mēs optimizējam tikai diskrētām operācijām, ļaujot sasniegt specializācijas, kas nav iespējamas ar jauktas precizitātes peldošo komatu. Jūs nevarat būt izcili visā. Mēs izvēlējāmies diskrēto AI un optimizējām nežēlīgi.
Nav dinamisku inferenču grafu: Modeļi tiek kompilēti statiskos grafos izvietošanai. Apmācība atbalsta dinamisku aprēķinu (nepieciešams pētniecības elastībai), bet ražošanas inferenču ir statiska. Tas ļauj veikt iepriekšēju optimizāciju: kodolu sapludināšanu visā tīklā, atmiņas izkārtojuma optimizāciju ar zināmām tenzoru formām, priekšielādēšanas instrukciju ievietošanu ar paredzamiem piekļuves modeļiem.
Fokusēta datu priekšapstrāde: Mēs nodrošinām 8 specializētus algoritmus neironu tīkla ievades sagatavošanai (normalizācija, adaptīvā mērogošana, apgūtā kvantizācija, binārā paplašināšana), nevis vispārējas nozīmes ETL. Funkciju inženierijas cauruļvadiem un datu ielādei izmantojiet esošos rīkus (Pandas, Polars, DuckDB). Mēs esam izcili diskrētā neironu tīkla inferencē no bināriem līdz 8 bitu. Mēs neaizstājam visu jūsu datu steku.
Šie nav ierobežojumi. Tie ir fokuss. Ierobežojot darbības jomu līdz diskrētiem neironu tīkliem ar statiskiem inferenču grafiem, mēs sasniedzam optimizācijas dziļumu, ko visaptveroši ietvari nevar panākt.
Būvējot uz Dweve Core
Platforma ir gatava lietošanai. Jūs varat sākt veidot diskrētus neironu tīklus jau šodien.
Pilns rīku komplekts:
- Deklaratīvais API: Rust DSL ar NetworkBuilder modeļa definēšanai
- Kompilatora infrastruktūra: uz MLIR balstīta optimizācijas caurplūde ar četriem IR līmeņiem
- Mācīšanās sistēma: seši STE varianti, binārajai darbībai pielāgoti optimizētāji, automātiska bitu platuma izvēle
- Backend koda ģeneratori: C ar intrinsics CPU, CUDA/HIP kodoli GPU, Verilog FPGA
- Izvietošanas rīki: eksportēšana uz ONNX, Core ML, TensorFlow Lite vai atsevišķiem binārajiem failiem
Piemēra darbplūsma:
1. Definējiet savu tīklu, izmantojot NetworkBuilder
2. Māciet, izmantojot binārajai darbībai pielāgotus optimizētājus ar adaptīvu bitu platuma izvēli
3. Kompilējiet mērķa aparatūrai ar automātisku backend izvēli
4. Izvietojiet kā optimizētu bināro failu vai eksportējiet standarta formātā
5. Darbiniet jebkur: mākoņserveros, malu ierīcēs, pārlūkprogrammās, FPGA
Viena platforma. Viena koda bāze. Katrs backend. Pilnīga diskrētā mākslīgā intelekta sistēma.
Beidziet žonglēt ar desmit sistēmām. Beidziet pārrakstīt kodu katram izvietošanas mērķim. Beidziet cīnīties ar versiju saderību. Izveidojiet vienreiz Dweve Core un izvietojiet visur.
Dweve Core nodrošina Dweve Loom, mūsu uz ierobežojumiem balstīto spriešanas sistēmu, kas tiks laista klajā 2026. gadā. Sistēma realizē pilnu 1 930 algoritmu kopumu 6 backendos ar adaptīvu daudzbitu kvantizāciju no binārā līdz 8 bitiem. To izveidojusi Nīderlandes inženieru komanda trīs gadu izstrādes laikā.