Една платформа, 1 930 алгоритъма, всеки бекенд: как изградихме пълния стек за дискретен ИИ
Проблемът с фрагментацията
Средата ви за разработка на изкуствен интелект е фрагментирана.
Прототипирате в PyTorch, защото изследователите го предпочитат. Внедрявате с TensorFlow, защото продуктовите екипи искат инструментите на Google. Пишете CUDA ядра за NVIDIA GPU. Портирате към ROCm за хардуер на AMD. Преписвате всичко за мобилни устройства с TensorFlow Lite или Core ML. Използвате ONNX за конвертиране между рамки, надявайки се нищо да не се счупи. Поддържате отделни кодови бази за облак, периферни устройства и браузър.
Десет различни инструмента. Хиляди зависимости. Кошмари със съвместимостта на версиите. Промени, които чупят всичко при всеки цикъл на издаване.
Актуализирате PyTorch? Надявайте се версията на CUDA да съвпада. Искате да внедрите на AMD? Преписвайте ядрата си. Нуждаете се от изводи в браузъра? Започвайте отначало с WebAssembly. Преминавате от NVIDIA към AMD GPU? Успех с портирането на тази кодова база. Внедрявате на FPGA? Учете съвсем различен инструментариум.
Тази фрагментация не е случайна. Тя е естественият резултат от това, че всяка рамка се оптимизира за конкретния си случай на употреба, като игнорира оперативната съвместимост. PyTorch блести в изследванията, но третира внедряването като второстепенна задача. TensorFlow е насочен към производството, но изследователското преживяване е мъчително. CUDA ви заключва в хардуера на NVIDIA. Всеки инструмент решава един проблем, докато създава три нови.
Има по-добър начин.
Dweve Core: Цялостната платформа за дискретен изкуствен интелект
Dweve Core е обединена платформа за изграждане на дискретни невронни мрежи с точност от двоична до 8-битова. Това не е поредната рамка. Това е пълна замяна на фрагментирания ви стек.
Една инсталация. Един API. Една кодова база. Автоматично внедряване на CPU, GPU, FPGA, WebAssembly, навсякъде, където трябва да работи.
Ето какво означава пълнота:
1 930 алгоритъма, покриващи всяка операция, от която се нуждаете:
- 415 примитива: Атомарни операции като XNOR, popcount, манипулация на битове, квантуване, конвертиране между формати
- 500 ядра: Оптимизирани съставни операции за често срещани модели
- 191 слоя: Пълни градивни блокове за невронни мрежи (конволюция, плътен слой, нормализация, активация, внимание)
- 674 алгоритъма: Методи от високо ниво, включително трансформации, процедури за обучение, еволюционно търсене, дистилация на знания
- 30 интероперабилни помощни средства: Допълнителни мостове с плаваща запетая за хибридни подходи
- 120 архитектури на модели: Предварително оптимизирани шаблони за мрежи от ResNet до Transformer
Това не е подмножество. Това е математическа пълнота. Анализирахме всяка основна архитектура на невронни мрежи и изградихме всяка операция, от която се нуждаят, оптимизирана за дискретни изчисления от първи принципи.
6 бекенда с автоматична компилация:
- SIMD CPU: Ръчно оптимизирани ядра за x86 и ARM с автоматично разпознаване на ISA (SSE2, AVX2, AVX-512, NEON, SVE/SVE2)
- CUDA: Оптимизация за NVIDIA GPU с примитиви на ниво warp и използване на Tensor Core
- Rust-HDL: Директен синтез на FPGA и ASIC от описания на алгоритми
- WebAssembly: Изводи в браузъра с поддръжка на SIMD128 за обработка на устройството в съответствие с GDPR
- ROCm: Оптимизация за AMD GPU с операции на ниво wavefront
- Metal: Оптимизация за Apple Silicon с използване на обединената архитектура на паметта
6 битови ширини с адаптивна точност:
- Двоичен (1 бит): Максимална ефективност с 16× компресия спрямо FP16
- Троичен: {-1, 0, +1} с изрична разреденост
- 2-битов: Четири нива за балансирана компресия
- 3-битов: Осем нива за слоеве, чувствителни към качеството
- 4-битов: Шестнадесет нива, близки до качеството на FP16
- 8-битов: Почти пълна точност за критични операции
Платформата научава оптималната битова ширина за всеки слой по време на обучение чрез избор, основан на градиента. Не евристики. Не предположения. Реална оптимизация, основана на това как точността се подобрява с добавената прецизност.
Напиши веднъж, изпълнявай навсякъде
Платформата използва декларативен Rust API. Описваш какво искаш, а компилаторът измисля как да го изпълни оптимално на твоя целеви хардуер.
Примерна дефиниция на мрежа:
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();
Това е. Напиши го веднъж и компилаторът автоматично генерира оптимизирани реализации за всеки бекенд.
Компилационният конвейер работи на четири нива:
Ниво 1: IR на невронната мрежа - Описанието на твоята мрежа от високо ниво се преобразува в изчислителна графика с операции, поток от данни и хиперпараметри.
Ниво 2: Оптимизация на графиката - Стандартните компилаторни проходи премахват мъртъв код, свиват константи, премахват дублирани изрази и сливат последователни операции. Плътен слой, последван от пакетна нормализация и активация, се превръща в едно слято ядро, което зарежда входа веднъж и произвежда крайния изход.
Ниво 3: BitOps диалект - Графиката се спуска до побитови операции, изрично типизирани с прецизност. Това междинно представяне е независимо от хардуера, но е близко до реалните машинни операции. Изградено върху инфраструктурата на MLIR (Multi-Level Intermediate Representation) за оптимизация на индустриално ниво.
Ниво 4: Спускане към хардуера - Генерирането на крайния код произвежда реализации, специфични за платформата. За AVX-512 побитовите операции стават инструкции VPXORQ и VPOPCNTQ. За CUDA те стават интринзики на ниво warp със съгласуван достъп до паметта. За FPGA те стават XNOR порти и суматорни дървета, синтезирани във Verilog.
Същият изходен код работи на процесора на твоя лаптоп по време на разработка, внедрява се в облачни GPU в производство и се компилира за FPGA за детерминистичен извод в реално време. Без превод. Без пренасяне. Без код, специфичен за платформата.
Създаден за клиенти, които искат да строят
Dweve Core захранва Dweve Loom, нашата система за разсъждение, основана на ограничения. Но не е само за нас. Това е цялостна платформа за всеки, който изгражда дискретни невронни мрежи.
Можете да изграждате:
- Персонализирани архитектури с помощта на 191 типа слоеве и 674 алгоритъма
- Модели за конкретни области, оптимизирани според точните ви изисквания
- Хибридни подходи, съчетаващи дискретни и непрекъснати изчисления чрез 30-те помощни инструмента за взаимодействие
- Нови методи за обучение с помощта на еволюционно търсене, дестилация на знания или персонализирани оценители на градиента
Платформата предоставя:
Пълна инфраструктура за обучение: Шест варианта на сквозен оценител за потока на градиента при двоични/тройни стойности. Оптимизатори, съобразени с двоичните стойности, които поддържат тегла с пълна точност вътрешно, докато ги преобразуват в двоични за предните проходи. Автоматичен избор на битова ширина чрез оптимизация, базирана на градиента. Постепенна многоетапна дестилация от FP32 през INT8, INT4 и тройни до двоични стойности.
Автоматична оптимизация за хардуера: Откриване по време на изпълнение на възможностите на процесора (CPUID при x86, системни регистри при ARM) и автоматично насочване към най-бързата налична SIMD реализация. Варианти на GPU ядра, избрани въз основа на размера на warp, споделената памет и броя на регистрите. FPGA синтез с автоматично вмъкване на конвейерни регистри въз основа на времевите ограничения.
Гъвкаво квантуване: Симетрично и асиметрично квантуване с мащаби за тензор, канал или група. Динамично квантуване с откриване на диапазона по време на изпълнение или статично квантуване с предварително изчислени мащаби от калибрационни данни. Изчисляване на мащаби въз основа на MSE-оптималност и KL-дивергенция за минимална загуба на точност.
Защо дискретните изчисления са важни
Традиционните невронни мрежи изчисляват всичко в 16-битов или 32-битов формат с плаваща запетая и след това вземат дискретни решения накрая. Ние работим директно в дискретното пространство от двоични до 8-битови стойности, като елиминираме междинните непрекъснати изчисления.
Това не е просто квантуване на съществуващи модели. Рамката е изградена от първите принципи около дискретните операции:
Хардуерна реалност: Съвременните процесори се състоят от милиарди транзистори в две състояния. Една XNOR врата изисква 6 транзистора. Един 32-битов умножител с плаваща запетая изисква хиляди и консумира с порядъци повече енергия. Дискретните операции съответстват на хардуерните основи.
Ефективност на паметта: Двоичните тегла събират 64 стойности в 64-битова дума. ResNet-50 с 25,6 милиона параметъра заема 3,1MB в двоичен формат срещу 50MB във FP16. Целият модел се побира в L3 кеша на процесора (обикновено: 36-64MB). Ставате ограничени от изчисленията, а не от паметта.
Гъвкавост при внедряване: Малките модели позволяват изводи на самото устройство. Без зависимост от облак. Без мрежова латентност. Без опасения за поверителността на данните. Обработвайте чувствителна информация изцяло на устройствата на потребителите, без никога да я предавате на сървъри.
Пълната матрица на алгоритмите
Платформата осигурява цялостно покритие в три измерения: алгоритми, бекенди и битови ширини.
Основни операции (415 примитива):
- 46 битови операции: логически порти, манипулация, отмествания, броене, намиране
- 16 полеви операции: извличане, вмъкване, пакетиране, разпръскване, събиране, създаване на маски
- 25 редукции: логически И/ИЛИ/XOR, аритметична сума/произведение, гласуване и консенсус
- 17 метрики за разстояние: Hamming, Jaccard, Dice, Tanimoto, косинусова, Manhattan, Euclidean
- 12 операции за преплитане: от 2-посочно до 4-посочно преплитане, криви на запълване на пространството на Morton и Hilbert
- 44 аритметични операции: събиране, изваждане, умножение, деление, операции с фиксирана запетая
- 39 трансформации: Walsh-Hadamard, FFT, DCT, NTT, уейвлети (Haar, Daubechies, CDF97)
- 11 хеширания: SHA-256, Blake3, xxHash, MinHash, SimHash, локално-чувствително хеширане
- 22 генерирания на случайни числа: LFSR, Mersenne Twister, ChaCha20, последователности на Sobol
- 15 квантувания: симетрично, асиметрично, по-тензорно, по-канално, изчисляване на мащаба
- 30 двоични математически операции: XNOR-popcount, троично кодиране, актуализации на тегла, градиентни операции
- 48 преобразувания на формати: конверсии FP32/FP16/FP8/INT8/INT4/INT2 във всички посоки
- 42 операции с фиксирана запетая: аритметика, трансцендентни функции, насищане при всички битови ширини
Композитни операции (500 ядра):
Оптимизирани ядра, комбиниращи примитиви за често срещани модели. Варианти на матрично умножение (стандартно, транспонирано, блоково). Видове конволюция (2D, 3D, по дълбочина, групирана, разширена). Нормализация (пакетна, слоева, групова, инстантна). Активационни функции (знак, твърд tanh, частично линейна). Механизми на вниманието (самовнимание, кръстосано внимание, много-глави). Обединяване (максимално, средно, стохастично).
Мрежови слоеве (191 слоя):
Пълни градивни блокове за изграждане на мрежи. Плътни слоеве с двоични, троични и много-битови тегла. Конволюционни слоеве с всички често срещани варианти. Рекурентни слоеве (LSTM, GRU с двоични порти). Слоеве на вниманието (мащабирано точково произведение, много-глави, относителна позиция). Слоеве за нормализация с пакетна статистика и научени параметри. Остатъчни връзки със съвпадение на размерите.
Алгоритми от високо ниво (674 алгоритъма):
Пълни методи за обучение, извод и оптимизация. Дестилация на знания с прогресивно много-етапно усъвършенстване. Откриване на еволюционни ограничения с генетично програмиране. Търсене на невронна архитектура за дискретни мрежи. Оценявачи на градиента (прав, изрязан, адаптивен, с импулс, хипермрежа). Оптимизатори (BinaryAdam, TernaryAdam, адаптивно квантуване). Разпределено обучение с устойчиво на византийски грешки агрегиране.
Дълбочина на имплементацията на бекенда
Всеки алгоритъм съществува в множество оптимизирани варианти за всеки бекенд. Не общи имплементации. Хардуерно-специфичен код, използващ всяка архитектурна характеристика.
CPU SIMD: SSE2 осигурява универсална x86-64 съвместимост (всеки процесор от 2001 г. насам). AVX2 осигурява 4-8× ускорение на Haswell и по-нови (2013+). AVX-512 достига 10-16× с маскиращи регистри за предсказване и VPTERNLOG за всяка 3-входова булева функция. NEON осигурява 3-4× ускорение на всички ARMv8 процесори, включително мобилни и Apple Silicon. SVE/SVE2 осигурява код, независим от дължината на вектора, който автоматично използва по-широки вектори на по-нов хардуер.
CUDA: Примитивите на ниво warp организират 32 нишки, които се изпълняват в синхрон. Всяка нишка обработва 32 двоични стойности, опаковани в uint32. Пълният warp обработва 1 024 двоични стойности паралелно. Хардуерните интринзики включват __popc за преброяване на единици, __ballot_sync за гласуване в warp и __shfl_sync за бърза комуникация без споделена памет. Коалесцираният достъп до паметта гарантира пълноценно използване на честотната лента. Tensor Core се използва за матрични операции дори с двоични данни.
Rust-HDL: Директен хардуерен синтез от анотиран Rust код. Рамката генерира автоматично Verilog/VHDL. Двоичните XNOR-popcount операции се преобразуват в XNOR порти (комбинаторна логика, нулево закъснение на разпространение) плюс дървета от суматори. Конвейерните регистри се вмъкват автоматично въз основа на времевите ограничения. Синтезира се както за FPGA (Xilinx, Intel), така и за ASIC.
WebAssembly: SIMD128 предоставя 128-битови векторни операции във всички съвременни браузъри (Chrome 91+, Firefox 89+, Safari 16.4+). Операциите включват v128.and/or/xor за побитова логика и i8x16.popcnt за преброяване на единици. В комбинация с Web Workers за многонишкова обработка и SharedArrayBuffer за споделена памет се постига 60-80% от производителността на нативния процесор. Инференцията в браузъра на устройството позволява обработка, съобразена с GDPR, без качване към сървър.
ROCm: Оптимизация на ниво вейвфронт за AMD архитектури с 64 нишки на вейвфронт (двойно повече от 32-те на NVIDIA). Всяка нишка обработва 32 двоични стойности, т.е. 2 048 стойности на вейвфронт. Интринзиките са подобни на CUDA с __builtin_popcount, __ballot и ds_swizzle. Програмният модел е достатъчно близък, че разработчиците на CUDA могат веднага да пишат ROCm код.
Metal: Оптимизация за Apple Silicon чрез унифицирана архитектура на паметта, при която процесорът и графичният ускорител споделят физическата RAM с кохерентност на кеша. Елиминира се разходът за копиране на данни. Двоичните операции използват персонализираните матрични двигатели на Apple. Neural Engine на M3 Max осигурява 50-80 TOPS при двоична инференция чрез специализирани ускорители, вградени в SoC.
Какво не правим (и защо фокусът има значение)
Важно е да уточним: не правим всичко. Фокусът позволява съвършенство.
Без инференция с плаваща запетая: Само дискретни изчисления от двоични до 8-битови. Ако ви трябва FP32/FP16/BFloat16 за внедряване, използвайте PyTorch или JAX. Ние се оптимизираме изключително за дискретни операции, което позволява специализации, невъзможни при смесена точност с плаваща запетая. Не може да сте отлични във всичко. Ние избрахме дискретния ИИ и се оптимизирахме безпощадно.
Без динамични графи за инференция: Моделите се компилират в статични графи за внедряване. Обучението поддържа динамични изчисления (необходими за гъвкавост в изследванията), но производствената инференция е статична. Това позволява оптимизация предварително: сливане на ядра в цялата мрежа, оптимизация на разположението на паметта с известни размери на тензорите, вмъкване на инструкции за предварително извличане с предвидими модели на достъп.
Фокусирана предварителна обработка на данни: Предоставяме 8 специализирани алгоритъма за подготовка на входни данни за невронни мрежи (нормализация, адаптивно мащабиране, обучено квантуване, двоична аугментация), а не универсален ETL. За тръбопроводи за инженеринг на характеристики и зареждане на данни използвайте съществуващи инструменти (Pandas, Polars, DuckDB). Ние сме отлични в дискретната инференция на невронни мрежи от двоични до 8-битови. Не заместваме целия ви стек за данни.
Това не са ограничения. Това е фокус. Ограничавайки обхвата до дискретни невронни мрежи със статични графи за инференция, постигаме дълбочина на оптимизация, която универсалните рамки не могат да достигнат.
Изграждане върху Dweve Core
Платформата е готова за употреба. Можете да започнете да изграждате дискретни невронни мрежи още днес.
Пълен инструментариум:
- Декларативен API: Rust DSL с NetworkBuilder за дефиниране на модели
- Компилаторна инфраструктура: оптимизационен pipeline на базата на MLIR с четири нива на IR
- Обучение: шест варианта на STE, оптимизатори, съобразени с двоичното представяне, автоматичен избор на битова ширина
- Генератори на код за бекенди: C с intrinsics за CPU, CUDA/HIP ядра за GPU, Verilog за FPGA
- Инструменти за внедряване: експорт към ONNX, Core ML, TensorFlow Lite или самостоятелни двоични файлове
Примерен работен процес:
1. Дефинирайте мрежата си с NetworkBuilder
2. Обучете с оптимизатори, съобразени с двоичното представяне, и адаптивен избор на битова ширина
3. Компилирайте за целевия хардуер с автоматичен избор на бекенд
4. Внедрете като оптимизиран двоичен файл или експортирайте в стандартен формат
5. Работете навсякъде: облачни сървъри, крайни устройства, браузъри, FPGA
Една платформа. Една кодова база. Всеки бекенд. Пълно дискретно изкуствено съзнание.
Спрете да жонглирате с десет рамки. Спрете да пренаписвате код за всяка целева платформа. Спрете да се борите със съвместимостта на версиите. Изградете веднъж върху Dweve Core и внедрявайте навсякъде.
Dweve Core захранва Dweve Loom, нашата система за разсъждения, базирана на ограничения, която стартира през 2026 г. Рамката реализира пълния стек от 1 930 алгоритъма в 6 бекенда с адаптивно мултибитово квантуване от двоично до 8-битово. Създадена от нидерландски инженерен екип в продължение на три години разработка.