Viena platforma, 1 930 algoritmų, kiekvienas backendas: kaip sukūrėme pilną diskrečiojo DI kūrimo kelią
Fragmentacijos problema
Jūsų dirbtinio intelekto kūrimo aplinka yra suskaidyta.
Prototipus kuriate PyTorch, nes tyrėjai jį renkasi. Diegiate su TensorFlow, nes gamybos komandos nori „Google“ įrankių. Rašote CUDA branduolius NVIDIA GPU. Perkeliate į ROCm, skirtą AMD aparatinei įrangai. Viską perrašote mobiliesiems įrenginiams naudodami TensorFlow Lite arba Core ML. Naudojate ONNX konversijoms tarp sistemų, tikėdamiesi, kad niekas nesuges. Palaikote atskiras kodo bazes debesijos, įrenginių ir naršyklės diegimui.
Dešimt skirtingų įrankių. Tūkstančiai priklausomybių. Versijų suderinamumo košmarai. Kertiniai pakeitimai kiekviename leidimo cikle.
Atnaujinate PyTorch? Tikėkitės, kad jūsų CUDA versija atitinka. Norite diegti AMD? Perrašykite branduolius. Reikia išvadų naršyklėje? Pradėkite iš naujo su WebAssembly. Pereinate nuo NVIDIA prie AMD GPU? Sėkmės perkeliant tą kodo bazę. Diegiate FPGA? Mokykitės visiškai kitokio įrankių rinkinio.
Ši fragmentacija nėra atsitiktinė. Tai natūralus rezultatas to, kad kiekviena sistema optimizuojama konkrečiam naudojimo atvejui, ignoruojant sąveiką. PyTorch puikiai tinka tyrimams, bet diegimą laiko antraeiliu dalyku. TensorFlow orientuotas į gamybą, bet tyrimų patirtis yra skausminga. CUDA pririša jus prie NVIDIA aparatinės įrangos. Kiekvienas įrankis išsprendžia vieną problemą, sukurdamas dar tris.
Yra geresnis būdas.
Dweve Core: išsami platforma diskrečiajam DI
Dweve Core yra vieninga platforma diskrečiųjų neuroninių tinklų kūrimui nuo dvejetainio iki 8 bitų tikslumo. Tai ne dar viena sistema. Tai visiškas jūsų suskaidytos technologijų krūvos pakaitalas.
Vienas diegimas. Viena API. Viena kodo bazė. Automatinis diegimas CPU, GPU, FPGA, WebAssembly, bet kur, kur reikia vykdyti.
Štai ką reiškia išsamumas:
1 930 algoritmų, apimančių kiekvieną jums reikalingą operaciją:
- 415 primityvų: atominės operacijos, tokios kaip XNOR, popcount, bitų manipuliavimas, kvantavimas, konversija tarp formatų
- 500 branduolių: optimizuotos sudėtinės operacijos įprastiems šablonams
- 191 sluoksnis: išsamūs neuroninių tinklų statybiniai blokai (konvoliucija, tankus, normalizavimas, aktyvavimas, dėmesys)
- 674 algoritmai: aukšto lygio metodai, įskaitant transformacijas, mokymo procedūras, evoliucinę paiešką, žinių destiliaciją
- 30 sąveikos įrankių: pasirenkami slankiojo kablelio tiltai hibridiniams metodams
- 120 modelių architektūrų: iš anksto optimizuoti tinklo šablonai nuo ResNet iki Transformerių
Tai ne poaibis. Tai matematinis išsamumas. Išanalizavome kiekvieną pagrindinę neuroninių tinklų architektūrą ir sukūrėme kiekvieną joms reikalingą operaciją, optimizuotą diskrečiajam skaičiavimui nuo pagrindų.
6 pagrindinės sistemos su automatiniu kompiliavimu:
- SIMD CPU: rankomis optimizuoti branduoliai x86 ir ARM su automatiniu ISA aptikimu (SSE2, AVX2, AVX-512, NEON, SVE/SVE2)
- CUDA: NVIDIA GPU optimizavimas su warp lygio primityvais ir Tensor Core naudojimu
- Rust-HDL: tiesioginė FPGA ir ASIC sintezė iš algoritmo aprašymų
- WebAssembly: išvados naršyklėje su SIMD128 palaikymu, skirtos BDAR atitinkančiam apdorojimui įrenginyje
- ROCm: AMD GPU optimizavimas su wavefront lygio operacijomis
- Metal: Apple Silicon optimizavimas naudojant vieningos atminties architektūrą
6 bitų pločiai su adaptyviuoju tikslumu:
- Binary (1-bit): Maximum efficiency with 16× compression versus FP16
- Ternary: {-1, 0, +1} with explicit sparsity
- 2-bit: Four levels for balanced compression
- 3-bit: Eight levels for quality-sensitive layers
- 4-bit: Sixteen levels approaching FP16 quality
- 8-bit: Near-full-precision for critical operations
The platform learns optimal bit-width per layer during training through gradient-based selection. Not heuristics. Not guesswork. Actual optimization based on how accuracy improves with added precision.
Write once, deploy everywhere
The platform uses a declarative Rust API. You describe what you want, the compiler figures out how to run it optimally on your target hardware.
Example network definition:
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();
That's it. Write this once, and the compiler automatically generates optimized implementations for every backend.
The compilation pipeline works through four levels:
Level 1: Neural Network IR - Your high-level network description gets parsed into a computational graph with operations, data flow, and hyperparameters.
Level 2: Graph Optimization - Standard compiler passes eliminate dead code, fold constants, deduplicate expressions, and fuse sequential operations. A dense layer followed by batch normalization and activation becomes a single fused kernel that loads input once and produces final output.
Level 3: BitOps Dialect - The graph lowers to bit-level operations explicitly typed with precision. This intermediate representation is hardware-agnostic but close to actual machine operations. Built on MLIR (Multi-Level Intermediate Representation) infrastructure for industrial-strength optimization.
Level 4: Hardware Lowering - Final code generation produces platform-specific implementations. For AVX-512, bit operations become VPXORQ and VPOPCNTQ instructions. For CUDA, they become warp-level intrinsics with coalesced memory access. For FPGA, they become XNOR gates and adder trees synthesized to Verilog.
The same source code runs on your laptop CPU during development, deploys to cloud GPUs in production, and compiles to FPGAs for deterministic real-time inference. No translation. No porting. No platform-specific code.
Built for customers to build with
Dweve Core powers Dweve Loom, our constraint-based reasoning system. But it's not just for us. It's a complete platform for anyone building discrete neural networks.
Galite kurti:
- Pasirinktines architektūras naudodami 191 sluoksnio tipą ir 674 algoritmus
- Konkrečiai sričiai skirtus modelius, optimizuotus pagal jūsų tikslius reikalavimus
- Hibridinius metodus, derinančius diskrečiuosius ir tęstinius skaičiavimus per 30 sąveikos įrankių
- Naujus mokymo metodus, naudodami evoliucinę paiešką, žinių destiliaciją arba pasirinktinius gradiento įverčius
Platforma teikia:
Išsamią mokymo infrastruktūrą: Šešios tiesioginio įverčio atmainos dvejetainiam/triniam gradiento srautui. Dvejetainiams modeliams pritaikyti optimizatoriai, kurie viduje išlaiko viso tikslumo svorius, o pirmyn nukreiptam skaičiavimui juos binarizuoja. Automatinis bitų pločio parinkimas gradiento pagrįstu optimizavimu. Laipsniška daugiapakopė destiliacija nuo FP32 per INT8, INT4, trinį iki dvejetainio.
Automatinį aparatinės įrangos optimizavimą: Procesoriaus galimybių aptikimas vykdymo metu (CPUID x86, sistemos registrai ARM) ir automatinis nukreipimas į greičiausią prieinamą SIMD diegimą. GPU branduolio variantai parenkami pagal warp dydį, bendrąją atmintį ir registrų skaičių. FPGA sintezė su automatiniu vamzdyno registrų įterpimu pagal laiko apribojimus.
Lankstų kvantavimą: Simetrinis ir asimetrinis kvantavimas su masteliais pagal tensorius, kanalus ar grupes. Dinaminis kvantavimas su diapazono aptikimu vykdymo metu arba statinis kvantavimas su iš kalibravimo duomenų iš anksto apskaičiuotais masteliais. MSE optimalus ir KL divergencija pagrįstas mastelio skaičiavimas, užtikrinantis minimalų tikslumo praradimą.
Kodėl diskretieji skaičiavimai svarbūs
Tradiciniai neuroniniai tinklai viską skaičiuoja 16 arba 32 bitų slankiojo kablelio formatu, o diskrečius sprendimus priima tik pabaigoje. Mes veikiame tiesiogiai diskrečiojoje erdvėje nuo dvejetainio iki 8 bitų, pašalindami tarpinius tęstinius skaičiavimus.
Tai ne paprastas esamų modelių kvantavimas. Sistema sukurta nuo pagrindų orientuojantis į diskrečiąsias operacijas:
Aparatinės įrangos realybė: Šiuolaikiniai procesoriai susideda iš milijardų tranzistorių, turinčių dvi būsenas. XNOR vartams reikia 6 tranzistorių. 32 bitų slankiojo kablelio daugikliui reikia tūkstančių ir jis sunaudoja eilėmis daugiau energijos. Diskrečiosios operacijos atitinka aparatinės įrangos pagrindus.
Atminties efektyvumas: Dvejetainiai svoriai į 64 bitų žodį sutalpina 64 reikšmes. ResNet-50 su 25,6 milijono parametrų dvejetainiu formatu užima 3,1 MB, palyginti su 50 MB FP16 formatu. Visas modelis telpa procesoriaus L3 talpykloje (įprastai: 36-64 MB). Vietoj atminties apribojimų susiduriate su skaičiavimo apribojimais.
Diegimo lankstumas: Maži modeliai įgalina išvadas įrenginyje. Nėra priklausomybės nuo debesijos. Nėra tinklo delsos. Nėra duomenų privatumo problemų. Jautrią informaciją apdorokite visiškai vartotojo įrenginyje, niekada jos nesiųsdami į serverius.
Visiška algoritmų matrica
Platforma užtikrina išsamią aprėptį trimis aspektais: algoritmai, pagrindinės sistemos ir bitų pločiai.
Pagrindinės operacijos (415 primityvų):
- 46 bitų operacijos: loginiai vartai, manipuliavimas, poslinkiai, skaičiavimas, radimas
- 16 laukų operacijos: ištraukimas, įdėjimas, pakavimas, išsklaidymas, rinkimas, kaukių kūrimas
- 25 redukcijos: loginės AND/OR/XOR, aritmetinė suma/sandauga, balsavimas ir konsensusas
- 17 atstumo metrikos: Hammingo, Jaccard, Dice, Tanimoto, kosinuso, Manheteno, Euklido
- 12 persipynimo operacijos: 2 krypčių iki 4 krypčių persipynimas, Morton ir Hilbert erdvę užpildančios kreivės
- 44 aritmetikos: sudėtis, atimtis, daugyba, dalyba, fiksuoto taško operacijos
- 39 transformacijos: Walsh-Hadamard, FFT, DCT, NTT, bangelės (Haar, Daubechies, CDF97)
- 11 maišos: SHA-256, Blake3, xxHash, MinHash, SimHash, vietai jautri maiša
- 22 atsitiktinių skaičių generavimas: LFSR, Mersenne Twister, ChaCha20, Sobol sekos
- 15 kvantizavimo: simetrinis, asimetrinis, pagal tensorius, pagal kanalus, skalės skaičiavimas
- 30 dvejetainės matematikos: XNOR-popcount, trinaris kodavimas, svorių atnaujinimai, gradiento operacijos
- 48 formato konversijos: FP32/FP16/FP8/INT8/INT4/INT2 konversijos visomis kryptimis
- 42 fiksuoto taško operacijos: aritmetika, transcendentinės funkcijos, sodrinimas visų bitų pločių
Sudėtinės operacijos (500 branduolių):
Optimizuoti branduoliai, sujungiantys primityvus įprastiems modeliams. Matricos daugybos variantai (standartinis, transponuotas, blokuotas). Konvoliucijos tipai (2D, 3D, gylio, grupuota, išplėsta). Normalizavimas (paketų, sluoksnių, grupių, egzempliorių). Aktyvinimo funkcijos (ženklas, kietasis tanh, dalimis tiesinė). Dėmesio mechanizmai (savidėmesys, kryžminis dėmesys, daugiagalvis). Sujungimas (maksimalus, vidutinis, stochastinis).
Tinklo sluoksniai (191 sluoksnis):
Visiški statybos blokai tinklams kurti. Tankūs sluoksniai su dvejetainiais, trinariais ir daugiabitiais svoriais. Konvoliuciniai sluoksniai su visais įprastais variantais. Pasikartojantys sluoksniai (LSTM, GRU su dvejetainiais vartais). Dėmesio sluoksniai (masteliu padalintas taškinės sandaugos, daugiagalvis, santykinės padėties). Normalizavimo sluoksniai su paketų statistika ir išmoktais parametrais. Liekanų jungtys su matmenų suderinimu.
Aukšto lygio algoritmai (674 algoritmai):
Visiški metodai mokymui, išvadoms ir optimizavimui. Žinių destiliacija su laipsnišku daugiapakopiu tobulinimu. Evoliucinis apribojimų atradimas su genetiniu programavimu. Neuroninių tinklų architektūros paieška diskretiesiems tinklams. Gradiento įvertinimo metodai (tiesioginis, apkarpytas, adaptyvus, su impulsu, hipertinklo). Optimizavimo metodai (BinaryAdam, TernaryAdam, adaptyvus kvantizavimas). Paskirstytasis mokymas su Bizantijos atsparia agregacija.
Palaikymo įgyvendinimo gylis
Kiekvienas algoritmas egzistuoja keliais optimizuotais variantais kiekvienam palaikymo lygmeniui. Ne bendrosios paskirties įgyvendinimai. Aparatūrai specifinis kodas, išnaudojantis kiekvieną architektūros ypatybę.
CPU SIMD: SSE2 užtikrina visuotinę x86-64 suderinamumą (kiekvienas procesorius nuo 2001 m.). AVX2 suteikia 4-8× pagreitį Haswell ir naujesniuose (2013+). AVX-512 pasiekia 10-16× su kaukės registrais predikacijai ir VPTERNLOG bet kuriai 3 įėjimų Būlio funkcijai. NEON suteikia 3-4× pagreitį visiems ARMv8 procesoriams, įskaitant mobiliuosius ir Apple Silicon. SVE/SVE2 suteikia nuo vektoriaus ilgio nepriklausomą kodą, kuris automatiškai išnaudoja platesnius vektorius naujesnėje aparatūroje.
CUDA: „Warp“ lygio primityvai organizuoja 32 gijas, vykdomas sinchroniškai. Kiekviena gija apdoroja 32 dvejetaines reikšmes, supakuotas į uint32. Visas „warp“ lygiagrečiai apdoroja 1 024 dvejetaines reikšmes. Aparatinės įrangos instrukcijos apima __popc populiacijos skaičiui, __ballot_sync „warp“ balsavimui, __shfl_sync greitam ryšiui be bendrosios atminties. Sujungtas atminties pasiekimas užtikrina pralaidumo panaudojimą. „Tensor Core“ naudojimas matricos operacijoms net su dvejetainiais duomenimis.
Rust-HDL: Tiesioginė aparatinės įrangos sintezė iš anotuoto Rust kodo. Sistema automatiškai generuoja Verilog/VHDL. Dvejetainės XNOR-popcount operacijos atvaizduojamos į XNOR vartus (kombinacinė logika, nulinis sklidimo vėlavimas) ir sumatorių medžius. Registrai vamzdynui įterpiami automatiškai pagal laiko apribojimus. Sintezė tiek į FPGA (Xilinx, Intel), tiek į ASIC.
WebAssembly: SIMD128 suteikia 128 bitų vektorines operacijas visose šiuolaikinėse naršyklėse (Chrome 91+, Firefox 89+, Safari 16.4+). Operacijos apima v128.and/or/xor bitų logikai ir i8x16.popcnt populiacijos skaičiavimui. Kartu su „Web Workers“ kelių gijų apdorojimui ir SharedArrayBuffer bendrajai atminčiai pasiekiama 60-80 % gimtosios CPU našumo. Įrenginio naršyklės išvadų skaičiavimas užtikrina GDPR reikalavimus atitinkantį apdorojimą be duomenų siuntimo į serverį.
ROCm: „Wavefront“ lygio optimizavimas AMD architektūroms su 64 gijomis viename „wavefront“ (dvigubai daugiau nei NVIDIA 32). Kiekviena gija apdoroja 32 dvejetaines reikšmes, taigi viename „wavefront“ apdorojama 2 048 reikšmės. Panašios instrukcijos kaip CUDA: __builtin_popcount, __ballot ir ds_swizzle. Programavimo modelis pakankamai artimas, kad CUDA kūrėjai galėtų iškart rašyti ROCm kodą.
Metal: „Apple Silicon“ optimizavimas naudojant vieningos atminties architektūrą, kurioje CPU ir GPU dalijasi fizine RAM su talpyklos suderinamumu. Pašalinamos duomenų kopijavimo sąnaudos. Dvejetainės operacijos naudoja „Apple“ pasirinktinius matricos variklius. M3 Max „Neural Engine“ užtikrina 50-80 TOPS dvejetainiam išvadų skaičiavimui naudodamas į SoC įmontuotus specializuotus greitintuvus.
Ko nedarome (ir kodėl dėmesys svarbus)
Svarbu paaiškinti: nedarome visko. Dėmesys leidžia pasiekti meistriškumą.
Jokio slankiojo kablelio išvadų skaičiavimo: Tik diskretusis skaičiavimas nuo dvejetainio iki 8 bitų. Jei diegimui reikia FP32/FP16/BFloat16, naudokite PyTorch arba JAX. Mes optimizuojame tik diskrečiąsias operacijas, todėl galime pasiekti specializacijų, neįmanomų su mišraus tikslumo slankiuoju kableliu. Negali būti puikus visame kame. Mes pasirinkome diskrečiąjį DI ir optimizavome negailestingai.
Jokių dinaminių išvadų skaičiavimo grafų: Modeliai diegimui kompiliuojami į statinius grafus. Mokymas palaiko dinaminį skaičiavimą (būtina tyrimų lankstumui), tačiau gamybinis išvadų skaičiavimas yra statinis. Tai įgalina išankstinį optimizavimą: branduolių suliejimą visame tinkle, atminties išdėstymo optimizavimą pagal žinomas tenzorių formas, išankstinio duomenų nuskaitomumo instrukcijų įterpimą pagal nuspėjamus prieigos modelius.
Specializuotas duomenų parengimas: Pateikiame 8 specializuotus algoritmus neuroninio tinklo įvesties paruošimui (normalizavimas, adaptyvusis mastelio keitimas, išmoktas kvantavimas, dvejetainis papildymas), o ne bendros paskirties ETL. Funkcijų inžinerijos grandinėms ir duomenų įkėlimui naudokite esamus įrankius (Pandas, Polars, DuckDB). Esame puikūs diskrečiojo neuroninio tinklo išvadų skaičiavime nuo dvejetainio iki 8 bitų. Nepakeičiame viso jūsų duomenų paketo.
Tai ne apribojimai. Tai dėmesys. Apribodami taikymo sritį diskrečiaisiais neuroniniais tinklais su statiniais išvadų skaičiavimo grafais, pasiekiame tokį optimizavimo gylį, kurio visapusiškos sistemos negali pasiūlyti.
Kūrimas su Dweve Core
Platforma paruošta naudojimui. Galite pradėti kurti diskrečiuosius neuroninius tinklus jau šiandien.
Pilnas įrankių rinkinys:
- Deklaratyvus API: „Rust“ DSL su „NetworkBuilder“ modelio apibrėžimui
- Kompiliatoriaus infrastruktūra: MLIR pagrįstas optimizavimo kanalas su keturiais IR lygiais
- Mokymo sistema: Šeši STE variantai, dvejetainius duomenis atpažįstantys optimizatoriai, automatinis bitų pločio pasirinkimas
- Palaikomųjų sistemų kodų generatoriai: C su intrinzikomis CPU, CUDA/HIP branduoliai GPU, Verilog FPGA
- Diegimo įrankiai: Eksportas į ONNX, Core ML, TensorFlow Lite arba atskirus dvejetainius failus
Darbo eigos pavyzdys:
1. Apibrėžkite savo tinklą naudodami „NetworkBuilder“
2. Mokykite naudodami dvejetainius duomenis atpažįstančius optimizatorius su adaptyviu bitų pločio pasirinkimu
3. Kompiliuokite į tikslinę aparatinę įrangą su automatiniu palaikomosios sistemos pasirinkimu
4. Diekite kaip optimizuotą dvejetainį failą arba eksportuokite į standartinį formatą
5. Vykdykite bet kur: debesų serveriuose, krašto įrenginiuose, naršyklėse, FPGA
Viena platforma. Viena kodo bazė. Kiekviena palaikomoji sistema. Visapusiškas diskretusis DI.
Nustokite laviruoti tarp dešimties sistemų. Nustokite perrašinėti kodą kiekvienam diegimo tikslui. Nustokite kovoti su versijų suderinamumu. Kurkite vieną kartą naudodami „Dweve Core“ ir diekite visur.
„Dweve Core“ maitina „Dweve Loom“, mūsų apribojimais pagrįstą samprotavimo sistemą, kuri bus pristatyta 2026 m. Sistema įgyvendina visą 1 930 algoritmų rinkinį 6 palaikomosiose sistemose su adaptyviu daugiajuosčiu kvantavimu nuo dvejetainio iki 8 bitų. Sukūrė olandų inžinierių komanda per trejus kūrimo metus.