Jedna platforma, 1930 algorytmów, każdy backend: jak zbudowaliśmy kompletny stos dla dyskretnej AI
Problem fragmentacji
Twoje środowisko programistyczne AI jest rozproszone.
Prototypujesz w PyTorch, bo preferują go badacze. Wdrażasz z TensorFlow, bo zespoły produkcyjne chcą narzędzi Google. Piszesz jądra CUDA dla procesorów graficznych NVIDIA. Przenosisz kod na ROCm dla sprzętu AMD. Przepisujesz wszystko na urządzenia mobilne, używając TensorFlow Lite lub Core ML. Używasz ONNX do konwersji między frameworkami, mając nadzieję, że nic się nie zepsuje. Utrzymujesz osobne bazy kodu dla chmury, urządzeń brzegowych i przeglądarek.
Dziesięć różnych narzędzi. Tysiące zależności. Koszmary ze zgodnością wersji. Zmiany przełamujące kompatybilność w każdym cyklu wydawniczym.
Aktualizujesz PyTorch? Miej nadzieję, że wersja CUDA pasuje. Chcesz wdrożyć na AMD? Przepisz swoje jądra. Potrzebujesz inferencji w przeglądarce? Zacznij od nowa z WebAssembly. Przechodzisz z GPU NVIDIA na AMD? Powodzenia w przenoszeniu tej bazy kodu. Wdrażasz na FPGA? Naucz się zupełnie innego zestawu narzędzi.
Ta fragmentacja nie jest przypadkowa. To naturalny wynik optymalizacji każdego frameworka pod konkretny przypadek użycia przy ignorowaniu interoperacyjności. PyTorch doskonale sprawdza się w badaniach, ale traktuje wdrażanie jako coś pobocznego. TensorFlow celuje w produkcję, ale doświadczenie badawcze jest bolesne. CUDA zamyka cię w sprzęcie NVIDIA. Każde narzędzie rozwiązuje jeden problem, tworząc trzy kolejne.
Jest lepszy sposób.
Dweve Core: Kompletna platforma dla dyskretnej AI
Dweve Core to ujednolicona platforma do budowania dyskretnych sieci neuronowych od precyzji binarnej do 8-bitowej. To nie kolejny framework. To kompletny zamiennik twojego rozproszonego stosu technologicznego.
Jedna instalacja. Jedno API. Jedna baza kodu. Automatyczne wdrażanie na CPU, GPU, FPGA, WebAssembly, wszędzie tam, gdzie potrzebujesz uruchomić.
Oto, co oznacza kompletność:
1930 algorytmów obejmujących każdą operację, której potrzebujesz:
- 415 prymitywów: Operacje atomowe, takie jak XNOR, popcount, manipulacja bitami, kwantyzacja, konwersja między formatami
- 500 jąder: Zoptymalizowane operacje złożone dla typowych wzorców
- 191 warstw: Kompletne bloki budulcowe sieci neuronowych (konwolucja, warstwa gęsta, normalizacja, aktywacja, uwaga)
- 674 algorytmy: Metody wysokiego poziomu, w tym transformacje, procedury treningowe, wyszukiwanie ewolucyjne, destylacja wiedzy
- 30 narzędzi interoperacyjności: Opcjonalne mosty zmiennoprzecinkowe dla podejść hybrydowych
- 120 architektur modeli: Wstępnie zoptymalizowane szablony sieci od ResNet do Transformerów
To nie podzbiór. To matematyczna kompletność. Przeanalizowaliśmy każdą główną architekturę sieci neuronowych i zbudowaliśmy każdą operację, której wymagają, zoptymalizowaną pod kątem obliczeń dyskretnych od podstaw.
6 backendów z automatyczną kompilacją:
- SIMD CPU: Ręcznie zoptymalizowane jądra dla x86 i ARM z automatycznym wykrywaniem ISA (SSE2, AVX2, AVX-512, NEON, SVE/SVE2)
- CUDA: Optymalizacja GPU NVIDIA z prymitywami na poziomie warpów i wykorzystaniem Tensor Core
- Rust-HDL: Bezpośrednia synteza FPGA i ASIC z opisów algorytmów
- WebAssembly: Inferencja w przeglądarce z obsługą SIMD128 dla przetwarzania na urządzeniu zgodnego z RODO
- ROCm: Optymalizacja GPU AMD z operacjami na poziomie wavefrontów
- Metal: Optymalizacja Apple Silicon z wykorzystaniem ujednoliconej architektury pamięci
6 szerokości bitowych z adaptacyjną precyzją:
- Binarny (1-bit): Maksymalna wydajność dzięki 16-krotnej kompresji w porównaniu z FP16
- Trójkowy: {-1, 0, +1} z jawną rzadkością
- 2-bitowy: Cztery poziomy dla zrównoważonej kompresji
- 3-bitowy: Osiem poziomów dla warstw wrażliwych na jakość
- 4-bitowy: Szesnaście poziomów zbliżających się do jakości FP16
- 8-bitowy: Prawie pełna precyzja dla krytycznych operacji
Platforma uczy się optymalnej szerokości bitowej dla każdej warstwy podczas treningu poprzez selekcję opartą na gradiencie. Nie heurystyki. Nie zgadywanie. Rzeczywista optymalizacja oparta na tym, jak dokładność poprawia się wraz z dodaną precyzją.
Napisz raz, wdrażaj wszędzie
Platforma używa deklaratywnego API w Rust. Opisujesz, czego chcesz, a kompilator ustala, jak uruchomić to optymalnie na docelowym sprzęcie.
Przykładowa definicja sieci:
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();
To wszystko. Napisz to raz, a kompilator automatycznie wygeneruje zoptymalizowane implementacje dla każdego backendu.
Potok kompilacji działa na czterech poziomach:
Poziom 1: IR sieci neuronowej - Twój opis sieci wysokiego poziomu jest parsowany do grafu obliczeniowego z operacjami, przepływem danych i hiperparametrami.
Poziom 2: Optymalizacja grafu - Standardowe przebiegi kompilatora eliminują martwy kod, składają stałe, deduplikują wyrażenia i łączą sekwencyjne operacje. Warstwa gęsta, po której następuje normalizacja wsadowa i aktywacja, staje się pojedynczym scalonym jądrem, które ładuje dane wejściowe raz i produkuje końcowe wyjście.
Poziom 3: Dialekt BitOps - Graf jest obniżany do operacji na poziomie bitów jawnie typowanych precyzją. Ta pośrednia reprezentacja jest niezależna od sprzętu, ale bliska rzeczywistym operacjom maszynowym. Zbudowana na infrastrukturze MLIR (Multi-Level Intermediate Representation) dla optymalizacji klasy przemysłowej.
Poziom 4: Obniżanie do sprzętu - Finalna generacja kodu produkuje implementacje specyficzne dla platformy. Dla AVX-512 operacje bitowe stają się instrukcjami VPXORQ i VPOPCNTQ. Dla CUDA stają się wewnętrznymi funkcjami na poziomie warpów ze scalonym dostępem do pamięci. Dla FPGA stają się bramkami XNOR i drzewami sumatorów syntetyzowanymi do Verilog.
Ten sam kod źródłowy działa na procesorze laptopa podczas rozwoju, wdraża się na GPU w chmurze w produkcji i kompiluje do FPGA dla deterministycznego wnioskowania w czasie rzeczywistym. Bez tłumaczenia. Bez przenoszenia. Bez kodu specyficznego dla platformy.
Zbudowany, aby klienci mogli tworzyć
Dweve Core zasila Dweve Loom, nasz system rozumowania oparty na ograniczeniach. Ale to nie tylko dla nas. To kompletna platforma dla każdego, kto buduje dyskretne sieci neuronowe.
Możesz tworzyć:
- Niestandardowe architektury z wykorzystaniem 191 typów warstw i 674 algorytmów
- Modele specyficzne dla domeny zoptymalizowane pod Twoje dokładne wymagania
- Podejścia hybrydowe łączące obliczenia dyskretne i ciągłe dzięki 30 narzędziom interoperacyjności
- Nowatorskie metody treningu z użyciem wyszukiwania ewolucyjnego, destylacji wiedzy lub niestandardowych estymatorów gradientu
Platforma zapewnia:
Pełną infrastrukturę treningową: Sześć wariantów estymatorów straight-through dla przepływu gradientów binarnego i trójskładnikowego. Optymalizatory uwzględniające binarizację, które wewnętrznie utrzymują wagi w pełnej precyzji, jednocześnie binaryzując je na potrzeby przejść w przód. Automatyczny wybór szerokości bitowej poprzez optymalizację opartą na gradiencie. Progresywna destylacja wieloetapowa od FP32 przez INT8, INT4 i trójskładnikową aż do binarnej.
Automatyczną optymalizację sprzętową: Wykrywanie w czasie rzeczywistym możliwości procesora (CPUID na x86, rejestry systemowe na ARM) i automatyczne kierowanie do najszybszej dostępnej implementacji SIMD. Warianty jąder GPU wybierane na podstawie rozmiaru warp, pamięci współdzielonej i liczby rejestrów. Synteza FPGA z automatycznym wstawianiem rejestrów potokowych na podstawie ograniczeń czasowych.
Elastyczną kwantyzację: Kwantyzacja symetryczna i asymetryczna ze skalami per-tensor, per-channel lub per-group. Kwantyzacja dynamiczna z wykrywaniem zakresu w czasie rzeczywistym lub kwantyzacja statyczna z wcześniej obliczonymi skalami z danych kalibracyjnych. Obliczanie skal optymalnych pod względem MSE i opartych na dywergencji KL dla minimalnej utraty dokładności.
Dlaczego obliczenia dyskretne mają znaczenie
Tradycyjne sieci neuronowe obliczają wszystko w 16-bitowej lub 32-bitowej arytmetyce zmiennoprzecinkowej, a następnie podejmują dyskretne decyzje na końcu. Działamy bezpośrednio w przestrzeni dyskretnej od wartości binarnych do 8-bitowych, eliminując pośrednie obliczenia ciągłe.
To nie jest zwykła kwantyzacja istniejących modeli. Framework jest zaprojektowany od podstaw wokół operacji dyskretnych:
Rzeczywistość sprzętowa: Nowoczesne procesory składają się z miliardów tranzystorów w dwóch stanach. Bramka XNOR wymaga 6 tranzystorów. 32-bitowy mnożnik zmiennoprzecinkowy wymaga tysięcy i zużywa o rzędy wielkości więcej energii. Operacje dyskretne są zgodne z podstawami sprzętu.
Wydajność pamięci: Wagi binarne mieszczą 64 wartości w jednym słowie 64-bitowym. ResNet-50 z 25,6 miliona parametrów zajmuje 3,1 MB w wersji binarnej w porównaniu z 50 MB w FP16. Cały model mieści się w pamięci podręcznej L3 procesora (typowa: 36-64 MB). Stajesz się ograniczony obliczeniowo, a nie pamięciowo.
Elastyczność wdrożenia: Małe modele umożliwiają wnioskowanie na urządzeniu. Brak zależności od chmury. Brak opóźnień sieciowych. Brak obaw o prywatność danych. Przetwarzaj wrażliwe informacje w całości na urządzeniach użytkowników, bez przesyłania ich na serwery.
Pełna macierz algorytmów
Platforma zapewnia kompleksowe pokrycie w trzech wymiarach: algorytmy, backendy i szerokości bitowe.
Operacje podstawowe (415 prymitywów):
- 46 operacji bitowych: bramki logiczne, manipulacja, przesunięcia, zliczanie, wyszukiwanie
- 16 operacji na polach: ekstrakcja, depozyt, pakowanie, rozpraszanie, zbieranie, tworzenie masek
- 25 redukcji: logiczne AND/OR/XOR, suma/iloczyn arytmetyczny, głosowanie i konsensus
- 17 metryk odległości: Hamminga, Jaccarda, Dice'a, Tanimoto, cosinusowa, Manhattan, euklidesowa
- 12 operacji przeplotu: przeplot 2- do 4-kierunkowy, krzywe wypełniające przestrzeń Mortona i Hilberta
- 44 operacje arytmetyczne: dodawanie, odejmowanie, mnożenie, dzielenie, operacje stałoprzecinkowe
- 39 transformacji: Walsha-Hadamarda, FFT, DCT, NTT, falki (Haara, Daubechies, CDF97)
- 11 funkcji skrótu: SHA-256, Blake3, xxHash, MinHash, SimHash, haszowanie wrażliwe na lokalność
- 22 generatory liczb losowych: LFSR, Mersenne Twister, ChaCha20, ciągi Sobola
- 15 kwantyzacji: symetryczna, asymetryczna, per-tensor, per-kanał, obliczanie skali
- 30 operacji arytmetyki binarnej: XNOR-popcount, kodowanie trójkowe, aktualizacje wag, operacje gradientowe
- 48 konwersji formatów: konwersje FP32/FP16/FP8/INT8/INT4/INT2 we wszystkich kierunkach
- 42 operacje stałoprzecinkowe: arytmetyka, funkcje transcendentalne, nasycanie dla wszystkich szerokości bitowych
Operacje złożone (500 jąder):
Zoptymalizowane jądra łączące prymitywy dla typowych wzorców. Warianty mnożenia macierzy (standardowe, transponowane, blokowe). Typy konwolucji (2D, 3D, depthwise, grupowane, dylatowane). Normalizacja (batch, layer, group, instance). Funkcje aktywacji (sign, hard tanh, odcinkowo liniowe). Mechanizmy uwagi (self-attention, cross-attention, multi-head). Pooling (max, average, stochastic).
Warstwy sieciowe (191 warstw):
Kompletne bloki konstrukcyjne do budowy sieci. Warstwy gęste z wagami binarnymi, trójkowymi i wielobitowymi. Warstwy konwolucyjne ze wszystkimi typowymi wariantami. Warstwy rekurencyjne (LSTM, GRU z bramkami binarnymi). Warstwy uwagi (skalowany iloczyn skalarny, multi-head, względna pozycja). Warstwy normalizacyjne ze statystykami batcha i uczonymi parametrami. Połączenia resztkowe z dopasowaniem wymiarów.
Algorytmy wysokiego poziomu (674 algorytmy):
Kompletne metody treningu, wnioskowania i optymalizacji. Dystylacja wiedzy z progresywnym wieloetapowym udoskonalaniem. Ewolucyjne odkrywanie ograniczeń z programowaniem genetycznym. Poszukiwanie architektury sieci dla sieci dyskretnych. Estymatory gradientu (straight-through, przycinane, adaptacyjne, z pędem, hypernetwork). Optymalizatory (BinaryAdam, TernaryAdam, adaptacyjna kwantyzacja). Trening rozproszony z agregacją odporną na błędy bizantyjskie.
Głębokość implementacji backendu
Każdy algorytm istnieje w wielu zoptymalizowanych wariantach dla każdego backendu. Nie są to generyczne implementacje. Kod specyficzny dla sprzętu, wykorzystujący każdą cechę architektury.
CPU SIMD: SSE2 zapewnia uniwersalną zgodność x86-64 (każdy procesor od 2001 roku). AVX2 zapewnia 4-8× przyspieszenie na Haswell i nowszych (2013+). AVX-512 osiąga 10-16× z rejestrami masek do predykacji i VPTERNLOG dla dowolnej funkcji logicznej 3-wejściowej. NEON zapewnia 3-4× przyspieszenie na wszystkich procesorach ARMv8, w tym mobilnych i Apple Silicon. SVE/SVE2 zapewnia kod niezależny od długości wektorów, który automatycznie wykorzystuje szersze wektory na nowszym sprzęcie.
CUDA: Warp-level primitives organize 32 threads executing in lockstep. Each thread processes 32 binary values packed in uint32. Full warp processes 1,024 binary values in parallel. Hardware intrinsics include __popc for population count, __ballot_sync for warp voting, __shfl_sync for fast communication without shared memory. Coalesced memory access ensures bandwidth utilization. Tensor Core utilization for matrix operations even with binary data.
Rust-HDL: Direct hardware synthesis from annotated Rust code. The framework generates Verilog/VHDL automatically. Binary XNOR-popcount operations map to XNOR gates (combinatorial logic, zero propagation delay) plus adder trees. Pipeline registers inserted automatically based on timing constraints. Synthesizes to both FPGAs (Xilinx, Intel) and ASICs.
WebAssembly: SIMD128 provides 128-bit vector operations in all modern browsers (Chrome 91+, Firefox 89+, Safari 16.4+). Operations include v128.and/or/xor for bitwise logic and i8x16.popcnt for population counting. Combined with Web Workers for multi-threading and SharedArrayBuffer for shared memory, achieves 60-80% of native CPU performance. On-device browser inference enables GDPR-compliant processing without server uploads.
ROCm: Wavefront-level optimization for AMD architectures with 64 threads per wavefront (double NVIDIA's 32). Each thread processes 32 binary values for 2,048 values per wavefront. Similar intrinsics to CUDA with __builtin_popcount, __ballot, and ds_swizzle. Programming model close enough that CUDA developers can write ROCm code immediately.
Metal: Apple Silicon optimization using unified memory architecture where CPU and GPU share physical RAM with cache coherency. Eliminates data copying overhead. Binary operations leverage Apple's custom matrix engines. M3 Max Neural Engine delivers 50-80 TOPS on binary inference using dedicated accelerators built into the SoC.
What we don't do (and why focus matters)
Important to clarify: we don't do everything. Focus enables excellence.
No floating-point inference: Discrete computation only from binary to 8-bit. If you need FP32/FP16/BFloat16 for deployment, use PyTorch or JAX instead. We optimize exclusively for discrete operations, enabling specializations impossible with mixed-precision floating-point. You can't be excellent at everything. We chose discrete AI and optimized ruthlessly.
No dynamic inference graphs: Models compile to static graphs for deployment. Training supports dynamic computation (necessary for research flexibility), but production inference is static. This enables ahead-of-time optimization: kernel fusion across entire network, memory layout optimization with known tensor shapes, prefetch instruction insertion with predictable access patterns.
Focused data preprocessing: We provide 8 specialized algorithms for neural network input preparation (normalization, adaptive scaling, learned quantization, binary augmentation), not general-purpose ETL. For feature engineering pipelines and data loading, use existing tools (Pandas, Polars, DuckDB). We're excellent at discrete neural network inference from binary to 8-bit. We're not replacing your entire data stack.
These aren't limitations. They're focus. By constraining scope to discrete neural networks with static inference graphs, we achieve optimization depth that comprehensive frameworks can't match.
Building on Dweve Core
The platform is ready to use. You can start building discrete neural networks today.
Complete toolchain:
- Deklaratywne API: DSL w języku Rust z NetworkBuilder do definiowania modeli
- Infrastruktura kompilatora: potok optymalizacji oparty na MLIR z czterema poziomami IR
- Framework treningowy: sześć wariantów STE, optymalizatory uwzględniające binarne wagi, automatyczny wybór szerokości bitów
- Generatory kodu backendu: C z intrinsics dla CPU, jądra CUDA/HIP dla GPU, Verilog dla FPGA
- Narzędzia wdrożeniowe: eksport do ONNX, Core ML, TensorFlow Lite lub samodzielnych plików binarnych
Przykładowy przepływ pracy:
1. Zdefiniuj swoją sieć za pomocą NetworkBuilder
2. Trenuj przy użyciu optymalizatorów uwzględniających binarne wagi z adaptacyjnym wyborem szerokości bitów
3. Skompiluj na docelowy sprzęt z automatycznym wyborem backendu
4. Wdróż jako zoptymalizowany plik binarny lub wyeksportuj do standardowego formatu
5. Uruchamiaj wszędzie: na serwerach chmurowych, urządzeniach brzegowych, w przeglądarkach i na układach FPGA
Jedna platforma. Jeden kod źródłowy. Każdy backend. Kompletna dyskretna sztuczna inteligencja.
Przestań żonglować dziesięcioma frameworkami. Przestań przepisywać kod dla każdego celu wdrożenia. Przestań walczyć ze zgodnością wersji. Zbuduj raz na Dweve Core i wdrażaj wszędzie.
Dweve Core zasila Dweve Loom, nasz system rozumowania oparty na ograniczeniach, który zadebiutuje w 2026 roku. Framework implementuje pełny stos 1930 algorytmów na 6 backendach z adaptacyjną kwantyzacją wielobitową od formatu binarnego do 8-bitowego. Zbudowany przez holenderski zespół inżynierów w ciągu trzech lat prac rozwojowych.