Архитектура без Python
SonicBoom — это нативный тензорный рантайм, написанный с нуля на C++ и CUDA. Главная особенность проекта: полное отсутствие Python-интерпретатора, pip и дерева зависимостей на пути инференса. Библиотека экспортирует стабильный C ABI, позволяя загружать libsonicboom.so из любого языка. Первичная разработка моделей ведется на Scheme (GNU Guile), а генерация кода заменяет PyTorch'овский torchgen инструментом SonicCross.
Производительность: SonicBoom против llama.cpp
Бенчмарки проводились на ноутбуке с NVIDIA GeForce RTX 3050 (8 GB, sm_86) и процессором AMD Ryzen 5 5500. SonicBoom использует графовый планировщик и MLIR-компилятор для генерации GPU-ядер, что позволяет запускать каждый шаг декодирования как единую CUDA Graph. Результаты (медиана из 3 запусков) показывают преимущество в скорости декодирования:
| Модель (квантование) | Метрика | SonicBoom | llama.cpp | Ускорение |
|---|---|---|---|---|
| Gemma 4 E4B-it (Q3_K_M) | Decode (steady state) | 53.6 tok/s | 44.8 tok/s | 1.20× |
| Gemma 4 E4B-it (Q3_K_M) | Prefill (512 токенов) | 2084 tok/s | 1995 tok/s | 1.04× |
| Qwen2.5-0.5B (Q4_K_M) | Decode (steady state) | 345.9 tok/s | 306.9 tok/s | 1.13× |
| Qwen2.5-0.5B (Q4_K_M) | Prefill (512 токенов) | 15301 tok/s | 14027 tok/s | 1.09× |
Технические детали и новые возможности v0.0.3
Разработчики отмечают, что преимущество в скорости декодирования достигается не за счет самих ядер (они те же), а благодаря надстройкам: графовому планировщику и компилятору. В ветке boom-next добавлены:
- Генерация GPU-ядер (fused glue, attention, bf16 dense GEMM).
- Автотюнинг рантайма под конкретное GPU.
- Безпотерное спекулятивное декодирование (по умолчанию отключено).
- Генерированное attention-ядро для декодирования, идентичное ручному по результатам.
Особое внимание уделено префикс-кэшированию: SonicBoom гарантирует точное совпадение токенов при повторном использовании префикса, чего нельзя измерить в стандартных бенчмарках llama.cpp. Для модели Gemma 4 время до первого токена при повторном использовании префикса составило 57.4 мс, а для Qwen2.5 — 13.7 мс.
Статус проекта
На данный момент выпущена версия v0.0.3. Поддерживаются две проверенные модели: Gemma 4 E4B-it и Qwen2.5-0.5B Instruct. Проект распространяется под лицензией GPL-3.0-or-later. Для сборки требуются Linux x86-64, g++-13, CMake и libyaml-dev. Поддержка ARM64 (aarch64) пока не реализована из-за отсутствия архитектурных защит в модуле AVX2.
Источник: Github ↗
