Üks platvorm, 1930 algoritmi, kõik backendid: kuidas ehitasime täieliku lahenduse diskreetse tehisintellekti jaoks
Fragmentatsiooni probleem
Sinu AI arenduskeskkond on killustunud.
Prototüübid teed PyTorchis, sest teadlased eelistavad seda. Kasutusele võtad TensorFlow'ga, sest tootmismeeskonnad tahavad Google'i tööriistu. Kirjutad CUDA kerneliid NVIDIA GPU-dele. Portid ROCm-i AMD riistvara jaoks. Kirjutad kõik mobiili jaoks ümber, kasutades TensorFlow Lite'i või Core ML-i. Kasutad ONNX-i raamistike vahel teisendamiseks, lootes, et miski ei purune. Pead üleval eraldi koodibaase pilve-, serv- ja brauserikasutuse jaoks.
Kümme erinevat tööriista. Tuhanded sõltuvused. Versioonide ühilduvuse õudusunenäod. Murrangulised muudatused igas väljalaske tsüklis.
Uuendad PyTorchi? Looda, et su CUDA versioon sobib. Tahad kasutada AMD-d? Kirjuta kernelid ümber. Vajad brauseri inferentsi? Alusta otsast WebAssembly'ga. Lähed NVIDIA-lt üle AMD GPU-dele? Edu selle koodibaasi portimisel. Kasutad FPGA-sid? Õpi selgeks täiesti teistsugune tööriistaahel.
See killustatus pole õnnetus. See on loomulik tulemus sellest, et iga raamistik optimeerib oma konkreetset kasutusjuhtu, ignoreerides koostalitlusvõimet. PyTorch paistab silma teadustöös, kuid kohtleb kasutuselevõttu järelmõttena. TensorFlow on suunatud tootmisele, kuid teadustöö kogemus on valus. CUDA lukustab sind NVIDIA riistvarasse. Iga tööriist lahendab ühe probleemi, luues samal ajal kolm uut.
On olemas parem tee.
Dweve Core: Täielik platvorm diskreetse AI jaoks
Dweve Core on ühtne platvorm diskreetsete närvivõrkude ehitamiseks alates binaarsest kuni 8-bitise täpsuseni. See pole järjekordne raamistik. See on täielik asendus sinu killustatud tehnoloogiavirnale.
Üks installatsioon. Üks API. Üks koodibaas. Automaatne kasutuselevõtt CPU-le, GPU-le, FPGA-le, WebAssembly'le, kõikjale, kus seda käitada vajad.
Siin on, mida täielikkus tähendab:
1 930 algoritmi, mis katavad kõik vajalikud operatsioonid:
- 415 primitiivi: Aatomoperatsioonid nagu XNOR, popcount, bitimanipulatsioon, kvantiseerimine, teisendus formaatide vahel
- 500 kerneli: Optimeeritud liitoperatsioonid tavaliste mustrite jaoks
- 191 kihti: Täielikud närvivõrgu ehitusplokid (konvolutsioon, tihe, normaliseerimine, aktiveerimine, tähelepanu)
- 674 algoritmi: Kõrgetasemelised meetodid, sealhulgas teisendused, treeningprotseduurid, evolutsiooniline otsing, teadmiste destilleerimine
- 30 koostalitlusutiliiti: Valikulised ujukoma sillad hübriidlahenduste jaoks
- 120 mudeliarhitektuuri: Eeloptimeeritud võrgumallid alates ResNetidest kuni Transformeriteni
See pole alamhulk. See on matemaatiline täielikkus. Analüüsisime iga olulise närvivõrgu arhitektuuri ja ehitasime kõik operatsioonid, mida need vajavad, optimeerituna diskreetseks arvutuseks esimestest põhimõtetest lähtudes.
6 taustsüsteemi automaatse kompileerimisega:
- SIMD CPU: Käsitsi optimeeritud kernelid x86 ja ARM jaoks automaatse ISA tuvastusega (SSE2, AVX2, AVX-512, NEON, SVE/SVE2)
- CUDA: NVIDIA GPU optimeerimine warp-tasandi primitiivide ja Tensor Core kasutusega
- Rust-HDL: Otsene FPGA ja ASIC süntees algoritmikirjeldustest
- WebAssembly: Brauseripõhine inferents SIMD128 toega GDPR-ile vastavaks seadmesiseseks töötlemiseks
- ROCm: AMD GPU optimeerimine wavefront-tasandi operatsioonidega
- Metal: Apple Silicon optimeerimine ühtse mäluarhitektuuri abil
6 bitilaiust adaptiivse täpsusega:
- Binaarne (1-bit): Maksimaalne efektiivsus 16× tihendusega võrreldes FP16-ga
- Kolmeväärtuseline: {-1, 0, +1} selgesõnalise hõredusega
- 2-bitine: Neli taset tasakaalustatud tihenduseks
- 3-bitine: Kaheksa taset kvaliteeditundlike kihtide jaoks
- 4-bitine: Kuusteist taset, lähenedes FP16 kvaliteedile
- 8-bitine: Peaaegu täispikk täpsus kriitiliste toimingute jaoks
Platvorm õpib treeningu käigus iga kihi jaoks optimaalse bitilaiuse gradientidel põhineva valiku kaudu. Mitte heuristika. Mitte oletamine. Tegelik optimeerimine, mis põhineb sellel, kuidas täpsus paraneb koos lisatud täpsusega.
Kirjuta üks kord, käivita kõikjal
Platvorm kasutab deklaratiivset Rust API-t. Kirjeldate, mida soovite, ja kompilaator leiab, kuidas seda teie sihtriistvaral optimaalselt käitada.
Näide võrgu definitsioonist:
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();
See on kõik. Kirjutage see üks kord ja kompilaator genereerib automaatselt optimeeritud rakendused iga taustsüsteemi jaoks.
Kompileerimise torujuhe töötab läbi nelja taseme:
Tase 1: närvivõrgu IR - Teie kõrgetasemeline võrgu kirjeldus parsitakse arvutusgraafikuks koos operatsioonide, andmevoo ja hüperparameetritega.
Tase 2: graafiku optimeerimine - Standardsed kompilaatori läbimised eemaldavad surnud koodi, voltivad konstandid, deduplitseerivad avaldised ja ühendavad järjestikused operatsioonid. Tihe kiht, millele järgnevad pakinormaliseerimine ja aktiveerimine, muutub üheks ühendatud tuumaks, mis laadib sisendi üks kord ja toodab lõpliku väljundi.
Tase 3: BitOpsi dialekt - Graafik alandatakse bititaseme operatsioonideks, mis on selgesõnaliselt täpsusega tüpiseeritud. See vahepealne esitus on riistvarast sõltumatu, kuid lähedane tegelikele masinaoperatsioonidele. Ehitatud MLIR-i (mitmetasandilise vahepealse esituse) infrastruktuurile tööstusliku tugevusega optimeerimiseks.
Tase 4: riistvara alandamine - Lõplik koodigeneratsioon toodab platvormispetsiifilised rakendused. AVX-512 puhul muutuvad bitioperatsioonid VPXORQ ja VPOPCNTQ käskudeks. CUDA puhul muutuvad need sõjataseme sisemisteks funktsioonideks koos ühendatud mälupöördusega. FPGA puhul muutuvad need XNOR-väravateks ja liitjapuudeks, mis sünteesitakse Verilogi.
Sama lähtekood töötab arenduse ajal teie sülearvuti protsessoril, läheb tootmises pilve GPU-dele ja kompileeritakse FPGA-dele deterministliku reaalajas järelduste tegemiseks. Ei mingit tõlkimist. Ei mingit portimist. Ei mingit platvormispetsiifilist koodi.
Ehitatud selleks, et kliendid saaksid sellega ehitada
Dweve Core toidab Dweve Loomi, meie piirangutel põhinevat arutlussüsteemi. Kuid see pole mõeldud ainult meile. See on täielik platvorm kõigile, kes ehitavad diskreetseid närvivõrke.
Saate ehitada:
- Kohandatud arhitektuure, kasutades 191 kihitüüpi ja 674 algoritmi
- Valdkonnapõhiseid mudeleid, mis on optimeeritud täpselt teie vajadustele
- Hübriidseid lähenemisviise, mis ühendavad diskreetse ja pideva arvutuse 30 koostalitlusutiliidi abil
- Uudseid treenimismeetodeid, kasutades evolutsioonilist otsingut, teadmiste destilleerimist või kohandatud gradientide hindajaid
Platvorm pakub:
Täielikku treenimistaristut: Kuus straight-through hindaja varianti binaarse/ternaarse gradiendivoolu jaoks. Binaarsusteadlikud optimeerijad, mis hoiavad sisemiselt täispikkuses täpsusega kaalusid, binariseerides need edasisuunaliste läbimiste jaoks. Automaatne bitilaiuse valik gradientipõhise optimeerimise kaudu. Järkjärguline mitmeastmeline destilleerimine FP32-st läbi INT8, INT4, ternaarse kuni binaarseni.
Automaatset riistvara optimeerimist: Protsessori võimaluste tuvastamine käitusajal (CPUID x86-l, süsteemiregistrid ARM-il) ja automaatne suunamine kiireimale saadaolevale SIMD-rakendusele. GPU kernelivariandid valitakse hõõgniidi suuruse, jagatud mälu ja registrite arvu alusel. FPGA süntees automaatse registri sisestamisega torustikku, lähtudes ajapiirangutest.
Paindlikku kvantiseerimist: Sümmeetriline ja asümmeetriline kvantiseerimine per-tensor, per-channel või per-group skaaladega. Dünaamiline kvantiseerimine käitusaja ulatuse tuvastamisega või staatiline kvantiseerimine eelarvutatud skaaladega kalibreerimisandmetest. MSE-optimaalne ja KL-divergentsil põhinev skaalade arvutamine minimaalse täpsuskao tagamiseks.
Miks diskreetne arvutus on oluline
Traditsioonilised närvivõrgud arvutavad kõik 16- või 32-bitises ujukomaformaadis ja teevad diskreetsed otsused alles lõpus. Meie töötame otse diskreetses ruumis binaarsest kuni 8-bitini, välistades vahepealse pideva arvutuse.
Tegemist ei ole lihtsalt olemasolevate mudelite kvantiseerimisega. Raamistik on üles ehitatud esimestest põhimõtetest lähtuvalt diskreetsete operatsioonide ümber:
Riistvara reaalsus: Kaasaegsed protsessorid koosnevad miljarditest transistoridest kahes olekus. XNOR-värav vajab 6 transistorit. 32-bitine ujukoma korrutaja vajab tuhandeid ja tarbib suurusjärke rohkem energiat. Diskreetsed operatsioonid ühtivad riistvara põhialustega.
Mälu tõhusus: Binaarsed kaalud mahutavad 64 väärtust 64-bitise sõna kohta. ResNet-50 25,6 miljoni parameetriga võtab binaarselt 3,1MB, FP16 puhul 50MB. Terve mudel mahub protsessori L3 vahemällu (tüüpiliselt 36-64MB). Saate arvutuspiirangu, mitte mälupiirangu.
Juurutamise paindlikkus: Väikesed mudelid võimaldavad seadmesisest inferentsi. Puudub pilvesõltuvus. Puudub võrgu latentsus. Puuduvad andmekaitse mured. Töödelge tundlikku teavet täielikult kasutaja seadmetes, ilma et seda kunagi serveritesse edastataks.
Täielik algoritmimaatriks
Platvorm pakub põhjalikku katvust kolmes mõõtmes: algoritmid, taustsüsteemid ja bitilaiused.
Põhitehted (415 primitiivi):
- 46 bititehet: loogikaväravad, manipuleerimine, nihutamine, loendamine, leidmine
- 16 väljatehet: eraldamine, paigutamine, pakkimine, hajutamine, kogumine, maski loomine
- 25 redutseerimist: loogiline AND/OR/XOR, aritmeetiline summa/korrutis, hääletamine ja konsensus
- 17 kaugusmõõdikut: Hamming, Jaccard, Dice, Tanimoto, koosinus, Manhattan, Eukleidese
- 12 põimimistehet: 2- kuni 4-suunaline põimimine, Mortoni ja Hilberi ruumitäitevad kõverad
- 44 aritmeetilist tehet: liitmine, lahutamine, korrutamine, jagamine, fikseeritud punktiga tehted
- 39 teisendust: Walsh-Hadamard, FFT, DCT, NTT, laineikesed (Haar, Daubechies, CDF97)
- 11 räsifunktsiooni: SHA-256, Blake3, xxHash, MinHash, SimHash, asukohatundlik räsifunktsioon
- 22 juhuarvugeneraatorit: LFSR, Mersenne Twister, ChaCha20, Soboli jadad
- 15 kvantimist: sümmeetriline, asümmeetriline, tensori- ja kanalipõhine, skaala arvutamine
- 30 kahendarvutehet: XNOR-popcount, kolmeväärtuseline kodeerimine, kaaluvärskendused, gradienditehted
- 48 vorminguteisendust: FP32/FP16/FP8/INT8/INT4/INT2 teisendused kõigis suundades
- 42 fikseeritud punktiga tehet: aritmeetika, transtsendentsed funktsioonid, küllastumine kõigil bitilaiustel
Liittehted (500 kerneli):
Optimeeritud kernelid, mis ühendavad primitiivtehteid levinud mustrite jaoks. Maatrikskorrutamise variandid (standardne, transponeeritud, plokkidena). Konvolutsioonitüübid (2D, 3D, sügavuti, rühmitatud, laiendatud). Normaliseerimine (partiipõhine, kihipõhine, rühmapõhine, eksemplaripõhine). Aktiveerimisfunktsioonid (märk, hüperboolne tangens, tükkhaaval lineaarne). Tähelepanumehhanismid (enese-tähelepanu, risttähelepanu, mitme peaga). Kokkupakkimine (maksimum, keskmine, juhuslik).
Võrgukihid (191 kihti):
Täielikud ehitusplokid võrkude ehitamiseks. Tihedad kihid kahend-, kolmeväärtuseliste ja mitmebitiste kaaludega. Konvolutsioonikihid kõigi levinud variantidega. Korduvad kihid (LSTM, GRU kahendväravatega). Tähelepanukihid (skaleeritud punktkorrutis, mitme peaga, suhteline asukoht). Normaliseerimiskihid partiistatistika ja õpitud parameetritega. Jääkühendused mõõtmete sobitamisega.
Kõrgetasemelised algoritmid (674 algoritmi):
Täielikud meetodid treenimiseks, järelduste tegemiseks ja optimeerimiseks. Teadmiste destilleerimine progressiivse mitmeastmelise täpsustamisega. Evolutsiooniline piirangute avastamine geneetilise programmeerimisega. Närvivõrgu arhitektuuri otsing diskreetsete võrkude jaoks. Gradiendihinnangud (läbiv, kärbitud, adaptiivne, impulsiga, hüpervõrk). Optimeerijad (BinaryAdam, TernaryAdam, adaptiivne kvantimine). Hajutatud treenimine Bütsantsi-kindla agregeerimisega.
Tagarakenduse teostuse sügavus
Iga algoritm eksisteerib mitmes optimeeritud variandis iga tagarakenduse jaoks. Mitte üldised teostused. Riistvaraspetsiifiline kood, mis kasutab ära kõiki arhitektuuri omadusi.
CPU SIMD: SSE2 tagab universaalse x86-64 ühilduvuse (iga protsessor alates 2001. aastast). AVX2 annab 4-8× kiirenduse Haswellil ja uuematel (2013+). AVX-512 ulatub 10-16×-ni maskiregistritega predikatsiooniks ja VPTERNLOG-iga mis tahes 3-sisendilise Boole'i funktsiooni jaoks. NEON toob 3-4× kiirenduse kõigile ARMv8 protsessoritele, sealhulgas mobiilseadmetele ja Apple Siliconile. SVE/SVE2 pakub vektori pikkusest sõltumatut koodi, mis kasutab uuemal riistvaral automaatselt laiemaid vektoreid.
CUDA: Warp-taseme primitiivid korraldavad 32 lõime, mis töötavad lukustatud sammus. Iga lõim töötleb 32 kahendväärtust, mis on pakitud uint32-tüüpi. Täielik warp töötleb paralleelselt 1024 kahendväärtust. Riistvaralised intrinsikud hõlmavad __popc rahvastiku loendamiseks, __ballot_sync warp-hääletamiseks ja __shfl_sync kiireks suhtluseks ilma jagatud mäluta. Ühtlustatud mälupöördus tagab ribalaiuse kasutuse. Tensor Core'i kasutus maatriksitehteks isegi kahendandmetega.
Rust-HDL: Otsene riistvarasüntees märgendatud Rust-koodist. Raamistik genereerib automaatselt Verilog/VHDL-koodi. Kahend-XNOR-popcount-tehted kaardistuvad XNOR-väravatele (kombinatoorne loogika, null levimisviivitus) pluss liitjapuudele. Torujuhtme registrid sisestatakse automaatselt ajapiirangute alusel. Sünteesib nii FPGA-dele (Xilinx, Intel) kui ka ASIC-idele.
WebAssembly: SIMD128 pakub 128-bitiseid vektoroperatsioone kõigis kaasaegsetes brauserites (Chrome 91+, Firefox 89+, Safari 16.4+). Operatsioonid hõlmavad v128.and/or/xor bitipõhiseks loogikaks ja i8x16.popcnt rahvastiku loendamiseks. Koos Web Workers'itega mitmelõimelisuseks ja SharedArrayBuffer'iga jagatud mäluks saavutatakse 60-80% natiivse CPU jõudlusest. Seadmesisene brauseri inferents võimaldab GDPR-ile vastavat töötlemist ilma serverisse üleslaadimiseta.
ROCm: Wavefront-taseme optimeerimine AMD-arhitektuuridele, kus igas wavefront'is on 64 lõime (kaks korda rohkem kui NVIDIA 32). Iga lõim töötleb 32 kahendväärtust, andes 2048 väärtust wavefront'i kohta. Sarnased intrinsikud CUDA-ga: __builtin_popcount, __ballot ja ds_swizzle. Programmeerimismudel on piisavalt sarnane, et CUDA-arendajad saavad kohe ROCm-koodi kirjutada.
Metal: Apple Siliconi optimeerimine, kasutades ühtset mäluarhitektuuri, kus CPU ja GPU jagavad füüsilist RAM-i vahemälu koherentsusega. Välistab andmete kopeerimise üldkulud. Kahendoperatsioonid kasutavad Apple'i kohandatud maatriksimootoreid. M3 Max Neural Engine annab 50-80 TOPS-i kahendinferentsil, kasutades SoC-sse ehitatud spetsiaalseid kiirendeid.
Mida me ei tee (ja miks fookus on oluline)
Oluline on selgitada: me ei tee kõike. Fookus võimaldab tipptaset.
Ei ujukoma-inferentsi: Ainult diskreetne arvutus kahendväärtustest 8-bitini. Kui vajate FP32/FP16/BFloat16 kasutuselevõtuks, kasutage selle asemel PyTorch'i või JAX-i. Me optimeerime eranditult diskreetsete tehete jaoks, võimaldades spetsialiseerumist, mis on segatäpsusega ujukomaarvutusega võimatu. Te ei saa olla kõiges tipptasemel. Me valisime diskreetse tehisintellekti ja optimeerisime halastamatult.
Ei dünaamilisi inferentsigraafe: Mudelid kompileeritakse kasutuselevõtuks staatilisteks graafideks. Treening toetab dünaamilist arvutust (vajalik teadustöö paindlikkuseks), kuid tootmisinferents on staatiline. See võimaldab eelnevat optimeerimist: kernelite liitmine kogu võrgu ulatuses, mälupaigutuse optimeerimine teadaolevate tensorikujudega, eeltõmbe käskude sisestamine etteaimatavate juurdepääsumustritega.
Fokuseeritud andmete eeltöötlus: Pakume 8 spetsialiseeritud algoritmi närvivõrgu sisendi ettevalmistamiseks (normaliseerimine, adaptiivne skaleerimine, õpitud kvantimine, kahendaugmentatsioon), mitte üldotstarbelist ETL-i. Funktsioonide inseneritöö torujuhtmete ja andmete laadimise jaoks kasutage olemasolevaid tööriistu (Pandas, Polars, DuckDB). Me oleme tipptasemel diskreetse närvivõrgu inferentsis kahendväärtustest 8-bitini. Me ei asenda teie kogu andmevirna.
Need ei ole piirangud. Need on fookus. Piirates ulatuse diskreetsete närvivõrkudega staatiliste inferentsigraafidega, saavutame optimeerimissügavuse, mida laiaulatuslikud raamistikud ei suuda pakkuda.
Ehitamine Dweve Core'ile
Platvorm on kasutusvalmis. Saate hakata diskreetseid närvivõrke ehitama juba täna.
Täielik tööriistaahel:
- Deklaratiivne API: Rust DSL koos NetworkBuilderiga mudeli defineerimiseks
- Kompilaatori infrastruktuur: MLIR-põhine optimeerimistöövoog nelja IR-tasemega
- Treeningraamistik: Kuus STE varianti, binaarteadlikud optimeerijad, automaatne bitilaiuse valik
- Backend-koodigeneraatorid: C koos intrinsikatega CPU-le, CUDA/HIP kernelid GPU-le, Verilog FPGA-le
- Juurutustööriistad: Eksport ONNX-i, Core ML-i, TensorFlow Lite'i või eraldiseisvatesse binaaridesse
Näidistöövoog:
1. Defineeri oma võrk NetworkBuilderi abil
2. Treeri binaarteadlike optimeerijatega, kasutades kohanduvat bitilaiuse valikut
3. Kompileeri sihtriistvarale automaatse backend-valikuga
4. Juurutu optimeeritud binaarina või ekspordi standardvormingusse
5. Käivita kõikjal: pilveserverites, servaseadmetes, brauserites, FPGA-del
Üks platvorm. Üks koodibaas. Iga backend. Täielik diskreetne AI.
Lõpeta kümne raamistiku vahel askeldamine. Lõpeta koodi ümberkirjutamine iga juurutussihtmärgi jaoks. Lõpeta versiooniühilduvuse vastu võitlemine. Ehita üks kord Dweve Core'iga ja juurutu kõikjal.
Dweve Core toidab Dweve Loomi, meie piirangutepõhist arutlusmootorit, mis ilmub 2026. aastal. Raamistik rakendab täieliku 1 930-algoritmi hulga 6 backendis, kasutades kohanduvat mitmebitist kvantimist binaarsest kuni 8-bitini. Loonud Hollandi insenerimeeskond kolmeaastase arendustöö jooksul.