Yksi alusta, 1 930 algoritmia, kaikki backendit: näin rakensimme täydellisen pinon diskreetille tekoälylle
Pirstoutumisen ongelma
AI-kehitysympäristösi on pirstoutunut.
Prototyyppaat PyTorchilla, koska tutkijat suosivat sitä. Otat käyttöön TensorFlow'lla, koska tuotantotiimit haluavat Googlen työkalut. Kirjoitat CUDA-ytimiä NVIDIA-näytönohjaimille. Siirrät ne ROCm:lle AMD-laitteistoa varten. Kirjoitat kaiken uusiksi mobiilille TensorFlow Lite tai Core ML -alustoilla. Käytät ONNX:ää muuntaaksesi kehysten välillä toivoen, ettei mikään hajoa. Ylläpidät erillisiä koodikantoja pilvi-, reuna- ja selainkäyttöönottoa varten.
Kymmenen eri työkalua. Tuhansia riippuvuuksia. Versioiden yhteensopivuusongelmia. Rikkoutuvia muutoksia joka julkaisusyklissä.
Päivitätkö PyTorchin? Toivo, että CUDA-versiosi täsmää. Haluatko ottaa käyttöön AMD:llä? Kirjoita ytimesi uusiksi. Tarvitsetko selainpäätelmän? Aloita alusta WebAssembly'lla. Vaihdatko NVIDIA:sta AMD-näytönohjaimiin? Onnea koodikannan siirtämiseen. Otatko käyttöön FPGA:lla? Opi täysin erilainen työkaluketju.
Tämä pirstoutuminen ei ole sattumaa. Se on luonnollinen seuraus siitä, että jokainen kehys optimoi oman käyttötapauksensa mutta jättää yhteentoimivuuden huomiotta. PyTorch loistaa tutkimuksessa mutta kohtelee käyttöönottoa jälkikäteisajatuksena. TensorFlow tähtää tuotantoon, mutta tutkimuskokemus on kivulias. CUDA lukitsee sinut NVIDIA-laitteistoon. Jokainen työkalu ratkaisee yhden ongelman luoden samalla kolme uutta.
On olemassa parempi tapa.
Dweve Core: Täydellinen alusta diskreetille tekoälylle
Dweve Core on yhtenäinen alusta diskreettien neuroverkkojen rakentamiseen binääristä 8 bitin tarkkuuteen. Se ei ole toinen kehys. Se on täydellinen korvaaja pirstoutuneelle pinollesi.
Yksi asennus. Yksi API. Yksi koodikanta. Automaattinen käyttöönotto CPU:lle, GPU:lle, FPGA:lle, WebAssembly'lle, minne tahansa sinun täytyy ajaa.
Tässä on mitä täydellinen tarkoittaa:
1 930 algoritmia kattaen jokaisen tarvitsemasi operaation:
- 415 primitiiviä: Atomaariset operaatiot kuten XNOR, popcount, bittimanipulaatio, kvantisointi, muunnokset formaattien välillä
- 500 ydintä: Optimoidut yhdistelmäoperaatiot yleisiin kuvioihin
- 191 kerrosta: Täydelliset neuroverkon rakennuspalikat (konvoluutio, tiheä, normalisointi, aktivointi, attention)
- 674 algoritmia: Korkean tason menetelmät mukaan lukien muunnokset, koulutusmenettelyt, evolutionäärinen haku, tiedon tislaus
- 30 yhteentoimivuusapuohjelmaa: Valinnaiset liukulukusillat hybridimenetelmiä varten
- 120 verkkoarkkitehtuuria: Esivalmistetut verkkopohjat ResNetistä Transformereihin
Tämä ei ole osajoukko. Se on matemaattinen täydellisyys. Analysoimme jokaisen merkittävän neuroverkkoarkkitehtuurin ja rakensimme jokaisen operaation, jota ne vaativat, optimoituna diskreettiin laskentaan ensimmäisistä periaatteista lähtien.
6 taustajärjestelmää automaattisella käännöksellä:
- SIMD CPU: Käsin optimoidut ytimet x86- ja ARM-alustoille automaattisella ISA-tunnistuksella (SSE2, AVX2, AVX-512, NEON, SVE/SVE2)
- CUDA: NVIDIA GPU -optimointi warp-tason primitiiveillä ja Tensor Core -hyödyntämisellä
- Rust-HDL: Suora FPGA- ja ASIC-synteesi algoritmikuvauksista
- WebAssembly: Selainpohjainen päätelmä SIMD128-tuella GDPR-yhteensopivaan laitteen sisäiseen käsittelyyn
- ROCm: AMD GPU -optimointi wavefront-tason operaatioilla
- Metal: Apple Silicon -optimointi yhtenäistä muistiarkkitehtuuria käyttäen
6 bittileveyttä mukautuvalla tarkkuudella:
- Binääri (1 bitti): Maksimaalinen tehokkuus 16× pakkauksella verrattuna FP16:een
- Ternaari: {-1, 0, +1} eksplisiittisellä harvuudella
- 2 bittiä: Neljä tasoa tasapainoista pakkausta varten
- 3 bittiä: Kahdeksan tasoa laatutietoisille kerroksille
- 4 bittiä: Kuusitoista tasoa lähellä FP16-laatua
- 8 bittiä: Lähes täysi tarkkuus kriittisiin operaatioihin
Alusta oppii optimaalisen bittileveyden kerroksittain koulutuksen aikana gradienttipohjaisen valinnan avulla. Ei heuristiikkoja. Ei arvailua. Todellista optimointia sen mukaan, miten tarkkuus paranee lisätyn tarkkuuden myötä.
Kirjoita kerran, käytä kaikkialla
Alusta käyttää deklaratiivista Rust-rajapintaa. Kuvailet, mitä haluat, ja kääntäjä selvittää, miten se ajetaan optimaalisesti kohdelaitteistollasi.
Esimerkki verkon määrittelystä:
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();
Siinä se. Kirjoita tämä kerran, ja kääntäjä tuottaa automaattisesti optimoidut toteutukset jokaiselle taustajärjestelmälle.
Käännösputki toimii neljällä tasolla:
Taso 1: Neuroverkon IR - Korkean tason verkkokuvauksesi jäsennetään laskennalliseksi graafiksi, jossa on operaatiot, datavirtaus ja hyperparametrit.
Taso 2: Graafin optimointi - Vakiomuotoiset kääntäjäajot poistavat kuolleen koodin, yhdistävät vakiot, poistavat päällekkäiset lausekkeet ja sulauttavat peräkkäiset operaatiot. Tiheä kerros, jota seuraa eränormalisointi ja aktivointi, muuttuu yhdeksi sulautetuksi ytimeksi, joka lataa syötteen kerran ja tuottaa lopullisen tulosteen.
Taso 3: BitOps-dialekti - Graafi lasketaan bittitason operaatioiksi, jotka on eksplisiittisesti tyypitetty tarkkuudella. Tämä välikerroksen esitys on laitteistoriippumaton mutta lähellä todellisia koneoperaatioita. Rakennettu MLIR (Multi-Level Intermediate Representation) -infrastruktuurin päälle teollisuusluokan optimointia varten.
Taso 4: Laitteistoon laskeminen - Lopullinen koodigenerointi tuottaa alustakohtaiset toteutukset. AVX-512:lle bittioperaatioista tulee VPXORQ- ja VPOPCNTQ-käskyjä. CUDA:lle niistä tulee warp-tason sisäänrakennettuja toimintoja yhdistetyllä muistin käytöllä. FPGA:lle niistä tulee XNOR-portteja ja summaimia, jotka syntetisoidaan Verilogiksi.
Sama lähdekoodi toimii kannettavan tietokoneesi suorittimella kehityksen aikana, käyttöönotetaan pilven GPU:ille tuotannossa ja käännetään FPGA:ille determinististä reaaliaikaista päättelyä varten. Ei käännöksiä. Ei siirtoja. Ei alustakohtaista koodia.
Rakennettu asiakkaille rakentamista varten
Dweve Core käyttää Dweve Loomia, rajoitteisiin perustuvaa päättelyjärjestelmäämme. Mutta se ei ole vain meille. Se on täydellinen alusta kaikille, jotka rakentavat diskreettejä neuroverkkoja.
Voit rakentaa:
- Mukautettuja arkkitehtuureja käyttämällä 191 kerrostyyppiä ja 674 algoritmia
- Toimialakohtaisia malleja, jotka on optimoitu täsmälleen sinun vaatimuksiisi
- Hybridimenetelmiä, joissa yhdistyvät diskreetti ja jatkuva laskenta 30 yhteentoimivuusapuohjelman avulla
- Uudenlaisia koulutusmenetelmiä käyttämällä evolutiivista hakua, tiedon tislautta tai mukautettuja gradienttiestimaattoreita
Alusta tarjoaa:
Täydellisen koulutusinfrastruktuurin: Kuusi straight-through-estimaattorivarianttia binääri-/ternäärigradienttivirralle. Binääritietoiset optimoijat, jotka ylläpitävät täyden tarkkuuden painoja sisäisesti ja binarisoivat ne eteenpäin suuntautuvissa laskuissa. Automaattinen bittileveyden valinta gradienttipohjaisen optimoinnin avulla. Progressiivinen monivaiheinen tislaus FP32:sta INT8:n, INT4:n ja ternäärin kautta binääriin.
Automaattisen laitteisto-optimoinnin: Suorituskyvyn tunnistus ajonaikaisesti (CPUID x86:ssä, järjestelmärekisterit ARM:ssa) ja automaattinen siirto nopeimpaan saatavilla olevaan SIMD-toteutukseen. GPU-ydinvariantit valitaan warp-koon, jaetun muistin ja rekisterimäärän perusteella. FPGA-synteesi automaattisella putkirekisterien lisäyksellä ajoitusrajoitteiden perusteella.
Joustavan kvantisoinnin: Symmetrinen ja epäsymmetrinen kvantisointi tensori-, kanava- tai ryhmäkohtaisilla asteikoilla. Dynaaminen kvantisointi ajonaikaisella alueen tunnistuksella tai staattinen kvantisointi ennalta lasketuilla asteikoilla kalibrointidatasta. MSE-optimaalinen ja KL-divergenssiin perustuva asteikon laskenta minimaaliseen tarkkuushäviöön.
Miksi diskreetillä laskennalla on merkitystä
Perinteiset neuroverkot laskevat kaiken 16- tai 32-bittisellä liukuluvulla ja tekevät diskreetit päätökset vasta lopussa. Me toimimme suoraan diskreetissä avaruudessa binääristä 8-bittiseen, mikä poistaa välivaiheen jatkuvan laskennan.
Tämä ei ole yksinkertaista olemassa olevien mallien kvantisointia. Kehys on suunniteltu alusta alkaen diskreettien operaatioiden ympärille:
Laitteiston todellisuus: Nykyaikaiset prosessorit koostuvat miljardeista transistoreista kahdessa tilassa. XNOR-portti vaatii 6 transistoria. 32-bittinen liukulukukertoja vaatii tuhansia ja kuluttaa suuruusluokkia enemmän energiaa. Diskreetit operaatiot ovat linjassa laitteiston perusteiden kanssa.
Muistitehokkuus: Binääripainot pakkaavat 64 arvoa 64-bittiseen sanaan. ResNet-50, jossa on 25,6 miljoonaa parametria, vie 3,1 Mt binäärimuodossa verrattuna 50 Mt FP16-muodossa. Koko malli mahtuu CPU:n L3-välimuistiin (tyypillisesti 36-64 Mt). Sinusta tulee laskentasidonnainen muistisidonnaisuuden sijaan.
Käyttöönoton joustavuus: Pienet mallit mahdollistavat päätelaskennan laitteella. Ei pilviriippuvuutta. Ei verkkoviivettä. Ei tietosuojahuolia. Käsittele arkaluonteista tietoa kokonaan käyttäjän laitteella lähettämättä sitä koskaan palvelimille.
Täydellinen algoritmimatriisi
Alusta tarjoaa kattavan kattavuuden kolmella ulottuvuudella: algoritmit, taustajärjestelmät ja bittileveydet.
Perusoperaatiot (415 primitiiviä):
- 46 bittioperaatiota: logiikkaportit, manipulointi, siirrot, laskenta, etsintä
- 16 kenttäoperaatiota: erotus, talletus, pakkaus, hajotus, keräys, maskin luonti
- 25 reduktiota: looginen AND/OR/XOR, aritmeettinen summa/tulo, äänestys ja konsensus
- 17 etäisyysmittaa: Hamming, Jaccard, Dice, Tanimoto, kosini, Manhattan, euklidinen
- 12 lomitusoperaatiota: 2-suuntainen 4-suuntaiseen lomitukseen, Morton- ja Hilbert-avaruudentäyttökäyrät
- 44 aritmeettista operaatiota: yhteenlasku, vähennyslasku, kertolasku, jakolasku, kiinteän pisteen operaatiot
- 39 muunnosta: Walsh-Hadamard, FFT, DCT, NTT, aallokkeet (Haar, Daubechies, CDF97)
- 11 hajautusta: SHA-256, Blake3, xxHash, MinHash, SimHash, sijaintiherkkä hajautus
- 22 satunnaislukugeneraattoria: LFSR, Mersenne Twister, ChaCha20, Sobol-sekvenssit
- 15 kvantisointia: symmetrinen, epäsymmetrinen, tensori- ja kanavakohtainen, skaalan laskenta
- 30 binäärimatematiikkaa: XNOR-popcount, kolmitasoinen koodaus, painopäivitykset, gradienttioperaatiot
- 48 muotomuunnosta: FP32/FP16/FP8/INT8/INT4/INT2-muunnokset kaikkiin suuntiin
- 42 kiinteän pisteen operaatiota: aritmetiikka, transkendenttifunktiot, saturaatio kaikilla bittileveyksillä
Yhdistelmäoperaatiot (500 ydintä):
Optimoidut ytimet, jotka yhdistävät primitiivit yleisiin käyttötapoihin. Matriisikertolaskun muunnelmat (vakio, transponoitu, lohkottu). Konvoluutiotyypit (2D, 3D, syvyyssuuntainen, ryhmitelty, laajennettu). Normalisointi (erä-, kerros-, ryhmä-, instanssikohtainen). Aktivointifunktiot (merkki, kova tanh, paloittain lineaarinen). Huomiointimekanismit (itsehuomiointi, ristihuomiointi, monipäinen). Pooling (maksimi, keskiarvo, stokastinen).
Verkkokerrokset (191 kerrosta):
Täydelliset rakennuspalikat verkkojen rakentamiseen. Tiheät kerrokset binääri-, kolmitasoisilla ja monibittisillä painoilla. Konvoluutiokerrokset kaikilla yleisillä muunnelmilla. Toistuvat kerrokset (LSTM, GRU binääriporteilla). Huomiointikerrokset (skaalattu pistetulo, monipäinen, suhteellinen sijainti). Normalisointikerrokset erätilastoilla ja opituilla parametreilla. Jäännöskytkennät ulottuvuuksien yhteensovituksella.
Korkean tason algoritmit (674 algoritmia):
Täydelliset menetelmät koulutukseen, päättelyyn ja optimointiin. Tietämyksen tislaus progressiivisella monivaiheisella hienosäädöllä. Evolutiivinen rajoitteiden etsintä geneettisellä ohjelmoinnilla. Neuroarkkitehtuurin haku diskreeteille verkoille. Gradienttiestimaattorit (suora, rajattu, adaptiivinen, liikemäärä, hyperverkko). Optimointimenetelmät (BinaryAdam, TernaryAdam, adaptiivinen kvantisointi). Hajautettu koulutus bysanttilaiskestävällä aggregoinnilla.
Taustajärjestelmän toteutuksen syvyys
Jokainen algoritmi on olemassa useina optimoituina muunnelmina jokaista taustajärjestelmää kohden. Ei yleisiä toteutuksia. Laitteistokohtaista koodia, joka hyödyntää jokaista arkkitehtuurin ominaisuutta.
CPU SIMD: SSE2 tarjoaa yleisen x86-64-yhteensopivuuden (jokainen prosessori vuodesta 2001). AVX2 tuo 4-8× nopeutuksen Haswelliin ja uudempiin (2013+). AVX-512 saavuttaa 10-16× maskirekistereillä predikaatioon ja VPTERNLOGilla mihin tahansa 3-tuloiseen Boolen funktioon. NEON tuo 3-4× nopeutuksen kaikkiin ARMv8-prosessoreihin, mukaan lukien mobiililaitteet ja Apple Silicon. SVE/SVE2 tarjoaa vektorinpituudesta riippumatonta koodia, joka hyödyntää automaattisesti leveämpiä vektoreita uudemmassa laitteistossa.
CUDA: Warp-tason primitiivit järjestävät 32 säiettä, jotka suorittavat lukittuun tahtiin. Jokainen säie käsittelee 32 binääriarvoa uint32-muodossa. Täysi warp käsittelee 1 024 binääriarvoa rinnakkain. Laitteistotason sisäänrakennetut funktiot sisältävät __popc populaatiolaskentaan, __ballot_sync warp-äänestykseen ja __shfl_sync nopeaan kommunikaatioon ilman jaettua muistia. Yhdistetty muistihakujen käyttö varmistaa kaistanleveyden hyödyntämisen. Tensor Core -yksiköitä hyödynnetään matriisioperaatioissa myös binääridatalla.
Rust-HDL: Suora laitteistosynteesi annotoidusta Rust-koodista. Kehys generaattori tuottaa Verilog/VHDL:n automaattisesti. Binääriset XNOR-popcount-operaatiot kuvautuvat XNOR-portteihin (kombinatorinen logiikka, nolla etenemisviivettä) sekä summaimipuihin. Pipeline-rekisterit lisätään automaattisesti ajoitusrajoitteiden perusteella. Syntetisoi sekä FPGA-piireille (Xilinx, Intel) että ASIC-piireille.
WebAssembly: SIMD128 tarjoaa 128-bittiset vektorioperaatiot kaikissa moderneissa selaimissa (Chrome 91+, Firefox 89+, Safari 16.4+). Operaatiot sisältävät v128.and/or/xor bittilogiikkaan ja i8x16.popcnt populaatiolaskentaan. Yhdistettynä Web Workers -säikeisiin monisäikeisyyttä varten ja SharedArrayBuffer jaettua muistia varten, saavutetaan 60-80 % natiivin CPU:n suorituskyvystä. Selaimessa tapahtuva päättely mahdollistaa GDPR-yhteensopivan käsittelyn ilman palvelinlähetyksiä.
ROCm: Wavefront-tason optimointi AMD-arkkitehtuureille, joissa on 64 säiettä wavefrontia kohden (kaksinkertainen NVIDIA:n 32:een verrattuna). Jokainen säie käsittelee 32 binääriarvoa, eli 2 048 arvoa wavefrontia kohden. Samankaltaiset sisäänrakennetut funktiot kuin CUDA:ssa: __builtin_popcount, __ballot ja ds_swizzle. Ohjelmointimalli on niin lähellä, että CUDA-kehittäjät voivat kirjoittaa ROCm-koodia heti.
Metal: Apple Silicon -optimointi käyttää yhtenäistä muistiarkkitehtuuria, jossa CPU ja GPU jakavat fyysisen RAM-muistin välimuistin koherenssilla. Poistaa datan kopioinnin ylimääräisen työn. Binäärioperaatiot hyödyntävät Applen mukautettuja matriisimoottoreita. M3 Max Neural Engine tarjoaa 50-80 TOPS binääripäättelyssä käyttäen SoC-piiriin rakennettuja erillisiä kiihdyttimiä.
Mitä emme tee (ja miksi keskittyminen on tärkeää)
Tärkeää selventää: emme tee kaikkea. Keskittyminen mahdollistaa erinomaisuuden.
Ei liukulukupäättelyä: Vain diskreetti laskenta binääristä 8-bittiseen. Jos tarvitset FP32/FP16/BFloat16-tukea käyttöönottoon, käytä PyTorchia tai JAXia. Optimoimme yksinomaan diskreetteihin operaatioihin, mikä mahdollistaa erikoistumiset, jotka ovat mahdottomia sekatarkkuuden liukulukulaskennassa. Et voi olla erinomainen kaikessa. Valitsimme diskreetin tekoälyn ja optimoimme sen armottomasti.
Ei dynaamisia päättelygraafeja: Mallit käännetään staattisiksi graafeiksi käyttöönottoa varten. Harjoitus tukee dynaamista laskentaa (välttämätöntä tutkimuksen joustavuudelle), mutta tuotantopäättely on staattista. Tämä mahdollistaa etukäteen tehtävän optimoinnin: kernelien fuusioinnin koko verkon yli, muistiasettelun optimoinnin tunnettujen tensorimuotojen kanssa ja esihakukäskyjen lisäämisen ennustettavien pääsykäyttäytymisten perusteella.
Keskitetty datan esikäsittely: Tarjoamme 8 erikoistunutta algoritmia neuroverkkojen syötteen valmisteluun (normalisointi, adaptiivinen skaalaus, opittu kvantisointi, binäärinen augmentointi), emme yleiskäyttöistä ETL:ää. Feature engineering -putkia ja datan latausta varten käytä olemassa olevia työkaluja (Pandas, Polars, DuckDB). Olemme erinomaisia diskreetissä neuroverkkopäättelyssä binääristä 8-bittiseen. Emme korvaa koko data-pinoasi.
Nämä eivät ole rajoitteita. Ne ovat keskittymistä. Rajoittamalla laajuuden diskreetteihin neuroverkkoihin, joissa on staattiset päättelygraafit, saavutamme optimointisyvyyden, johon kattavat kehykset eivät pysty.
Rakentaminen Dweve Core -alustalla
Alusta on valmis käytettäväksi. Voit aloittaa diskreettien neuroverkkojen rakentamisen jo tänään.
Täydellinen työkaluketju:
- Deklaratiivinen API: Rust-DSL NetworkBuilderilla mallien määrittelyyn
- Kääntäjäinfrastruktuuri: MLIR-pohjainen optimointiputki neljällä IR-tasolla
- Koulutuskehys: Kuusi STE-muunnelmaa, binaaritietoinen optimoijat, automaattinen bittileveyden valinta
- Taustapään koodigeneraattorit: C sisäänrakennetuilla toiminnoilla CPU:lle, CUDA/HIP-ytimet GPU:lle, Verilog FPGA:lle
- Käyttöönottotyökalut: Vienti ONNX-, Core ML-, TensorFlow Lite- tai erillisinä binääreinä
Esimerkki työnkulusta:
1. Määritä verkko NetworkBuilderilla
2. Kouluta binaaritietoisilla optimoijilla ja mukautuvalla bittileveyden valinnalla
3. Käännä kohdelaitteistolle automaattisella taustapään valinnalla
4. Ota käyttöön optimoituna binäärinä tai vie vakiomuotoon
5. Suorita missä tahansa: pilvipalvelimilla, reunalaitteissa, selaimissa, FPGA:issa
Yksi alusta. Yksi koodikanta. Jokainen taustapää. Täydellinen diskreetti tekoäly.
Lopeta kymmenen kehyksen pyörittäminen. Lopeta koodin uudelleenkirjoittaminen jokaista käyttöönottokohdetta varten. Lopeta versioyhteensopivuuden kanssa taisteleminen. Rakenna kerran Dweve Corella ja ota käyttöön kaikkialla.
Dweve Core toimii Dweve Loomin, rajoitepohjaisen päättelyjärjestelmämme, taustalla. Järjestelmä lanseerataan vuonna 2026. Kehys toteuttaa täyden 1 930 algoritmin pinon kuudella taustapäällä mukautuvalla monibittisellä kvantisoinnilla binaarista 8-bittiseen. Alankomaalaisen insinööritiimin rakentama kolmen vuoden kehitystyön tuloksena.