cactus-compute/engine
项目简介
cactus-compute/engine 是一个面向消费级移动设备(智能手机、平板、可穿戴设备)的端侧 LLM 推理引擎,核心卖点是 2bit 极低比特量化 + 手写算子 + 轻量 runtime 的一体化方案。它提供从权重压缩、ARM 指令集特化 kernel 到会话级 runtime 的完整链路,让 7B 级模型有机会在数 GB 内存的手机上离线跑起来;同时把 Whisper 语音转写、文本生成与 RAG 检索纳入同一套栈,支持 iOS 与 Android 双端。定位上它并不打算取代云端推理,而是要把推理彻底搬到用户口袋里。
技术亮点
- 2bit 权重 + 混合精度量化:权重压到 2bit 级别,配合分组 scale/zero-point 与关键层(embedding、lm_head 等)保留更高精度,用精度换内存带宽;端侧推理的瓶颈通常是带宽,较少受算力限制。
- 带宽感知的算子融合:反量化直接融进 GEMV/GEMM 与 attention 路径,避免中间张量回写主存;针对 ARM NEON/SVE 与 Apple Silicon 做了指令级特化。
- runtime 而非单纯推理库:内置内存池、KV cache 管理与流式输出,减少端侧频繁 malloc 造成的抖动与功耗尖峰。
- 多模态与 RAG 同栈:Topics 覆盖 Whisper 语音与 RAG,说明它面向的是“语音进、检索增强、文本出”的完整端侧应用,而不只是 chat 场景。
- 跨平台一致性:C/C++ 核心 + iOS/Android 绑定,同一份量化权重双端复用,并兼容 llama.cpp 生态的权重转换习惯。
架构解析
整体可分三层。模型层负责权重转换与量化工具链,把 HuggingFace 格式的权重打包成 2bit 分块布局,并生成运行时需要的元信息。计算层是 kernel 库,涵盖 embedding、RoPE、attention、FFN 等算子,按 ARM 指令集分版本实现,反量化与矩阵乘融合在此完成。runtime 层负责图调度、内存与 KV cache 分配、token 流式回调,向上暴露 C API 与 iOS/Android 语言绑定;应用级模块(ASR、RAG 检索)作为可选组件挂载其上,形成“引擎 + 能力包”的结构。
适用场景
- 手机端离线语音助手:Whisper 本地转写 + 小参数模型对话,全程不联网,无音频出端。
- 隐私敏感行业的本地 RAG:医疗、金融、法务的文档问答,向量检索与生成都在设备内完成。
- 弱网/无网环境作业:工业巡检、户外作业、航空与远洋场景下的离线 LLM 辅助。
- 系统级端侧 Agent:输入法联想、相册语义搜索、通知摘要等需要低延迟、低功耗常驻的功能。
- 可穿戴与 IoT 语音指令:内存与功耗预算极紧,2bit 量化带来的体积优势最明显。
生态对比
与 llama.cpp 相比:后者是通用 GGUF 推理框架,量化主力在 4/5/8bit,移动端更多是“能跑”;本项目把 2bit 与移动 SoC kernel 调优作为第一目标,更垂直但通用性较弱。与 MLC-LLM 相比:MLC 走 TVM 编译 + WebGPU/Metal 路线,偏 GPU 加速与跨端编译,包体与冷启动开销更大;本项目更轻、更偏 CPU/ARM 路径。与 ONNX Runtime Mobile / TFLite 相比:二者是通用图执行器,LLM 所需的 KV cache、动态 shape、量化算子融合需要使用者自行补齐,而本项目把这些当作内建能力。此外相对 Apple MLX / ExecuTorch,它的差异在于不强绑定单一平台,主打 iOS 与 Android 行为一致。
延伸阅读
项目信息
- 仓库地址: https://github.com/cactus-compute/engine
- 许可证: NOASSERTION
- 开发语言: C++
- Stars: 6,180 | Forks: 516 | 热度 73.6
- 主页: https://cactuscompute.com