
SonicBoom 是一个从头用 C++ 和 CUDA 编写的 AI 框架,专为性能关键型工作负载设计。它的核心特征非常明确:没有 Python 解释器,没有 pip 依赖树,也没有 wheel 构建产物。整个系统通过稳定的 C ABI 暴露,GNU Guile 作为其一等语言。开发者可以从任何编程语言中直接加载 libsonicboom.so,在推理路径上保持绝对的轻量与纯粹。
性能表现与架构优势
SonicBoom 主要面向消费级 GPU 上的本地 LLM 推理。在笔记本 RTX 3050(sm_86)上,使用相同的量化内核,其解码速度比 llama.cpp 快 12% 到 18%。具体而言,在 Gemma 4 E4B-it (Q3_K_M) 上达到 1.18 倍,在 Qwen2.5-0.5B-Instruct (Q4_K_M) 上达到 1.12 倍。预填充阶段在 Gemma 4 上与 llama.cpp 持平,在 Qwen2.5 上领先 9%。

这种性能提升不仅源于底层内核,更得益于其独特的运行时架构。每个解码步骤都作为单个 CUDA Graph 重放运行,KV 缓存始终保留在设备端。其核心优势在于 llama.cpp 架构所缺乏的两个层级:一个图规划器和其后的 MLIR 编译器层。规划器通道融合了 norm、激活和量化操作,而 MLIR 层则直接生成 GPU 内核(包括融合胶水、注意力和 bf16 密集 GEMM)。此外,它的前缀缓存重用是精确的,延续计算与完全重计算 token 的结果完全一致。
不仅仅是 LLM 运行器
SonicBoom 的定位是一个通用张量框架。开发者可以用 Scheme 编写模型,体验类似 PyTorch 的急切执行模式,随后这些模型会被追踪并编译成计算图。生产模型在 C++ 核心中定义,并可通过 C API 从任何语言提供服务。LLM 推理只是它的第一个基准测试,而非项目的最终限制。
基准测试条件与数据
所有性能数据均基于 3 次进程运行的中位数,在严格的基准条件下测得。两个运行时在同一会话中加载同一个 GGUF 文件进行对比。
测试环境:NVIDIA GeForce RTX 3050 (8 GB, sm_86), AMD Ryzen 5 5500, 32 GB DDR4 单通道内存, Ubuntu 24.04。对比基准锁定为特定的 llama.cpp 提交版本。
在 Gemma 4 E4B-it Q3_K_M 上:
- 稳态解码(64 步):SonicBoom 53.0 tok/s,llama.cpp 44.8 tok/s (1.18×)
- 预填充(512 token 提示,边际):SonicBoom 1990 tok/s,llama.cpp 1992 tok/s (1.00×)
- 前缀重用(512 token 前缀 + 64 新 token):首 token 延迟 65.2 毫秒
在 Qwen2.5-0.5B-Instruct Q4_K_M 上:
- 稳态解码(64 步):SonicBoom 344.7 tok/s,llama.cpp 307.6 tok/s (1.12×)
- 预填充(512 token 提示,边际):SonicBoom 15346 tok/s,llama.cpp 14044 tok/s (1.09×)
- 前缀重用(512 token 前缀 + 64 新 token):首 token 延迟 13.7 毫秒
需要注意的是,Qwen2 在 KV 深度 512 时的解码速度与 llama.cpp 基本持平(0.98×),这是因为 Qwen2 没有滑动窗口机制,所有 512 个键都会被关注,而 Gemma 的环形缓冲区会发生回绕。
构建与运行指南
SonicBoom 目前处于 v0.0.3 阶段,已在 CUDA sm_86 上对 Gemma 4 和 Qwen2.5 两个模型系列完成了端到端验证。
环境要求:Linux x86-64、g++-13、CMake、CUDA 工具包 12.0+(计算能力 6.1+,张量核心路径需 7.5+)以及 GNU Guile 3.0。
构建过程依赖 SonicCross,这是一个用 Guile 编写的代码生成工具,用于替代 PyTorch 的 torchgen,将 YAML 定义转换为 C++ 声明和分派源。SonicCross 仅在构建时运行,不会链接到最终的动态库中。
构建步骤简述:
- 安装 SonicCross v0.0.2 并配置到系统路径。
- 克隆 SonicBoom 仓库并初始化子模块。
- 运行
tools/mlir/build-mlir.sh静态编译所需的 LLVM/MLIR 组件。 - 使用 CMake 配置并构建 Release 版本:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DSONICBOOM_USE_CUDA=ON,随后执行cmake --build build -j。
运行示例(通过 Guile):
(use-modules (sonicboom inference))
(define model (load-model "models/gemma-4-E4B-it-Q3_K_M.gguf"))
(define session (make-session model 4096))
(display (generate model session "The three laws of thermodynamics are" 64))
;; 前缀重用是自动的:当同一会话上稍后的提示以相同 token 开始时,
;; 只有新后缀会被预填充。
(prefill! session (tokenize model "..."))
(free-session! session)
(free-model! model)
相同的函数也可通过 capi/include/sonicboom/capi.h 从 C 语言直接调用。对于希望在本地环境中追求极致推理性能、且愿意接受纯 C/C++ 技术栈的开发者而言,SonicBoom 提供了一个高度可控且性能优异的替代方案。
相关导航


LM Fingerpoint Detector

Clarifai

Inworld TTS

火山方舟大模型服务平台

DS2API

Fal.ai







