Cactus Needle 3 8‑29 MB 基础模型在微型设备上媲美 DeepSeek V4 Flash
Needle 3 在 30 MB 以下的二进制文件中实现 LLM 级工具调用
Needle 3 是一个 8‑29 MB 的单一二进制文件,可在微控制器、手机、可穿戴设备和其他微型设备上运行,同时提供与比其大十倍的模型相当的工具调用性能。关键在于 Cactus 的智能阶梯 (intelligence ladder) 让开发者能够从 2 到 20 层中选择一个子网络,微调一个 4 层版本,并在仅经过一个 epoch 的训练后,在下游任务上实现 DeepSeek V4 Flash 级别的准确率。
架构:阶梯式简单注意力网络 (SAN)
每一层都是一个独立的子网络。
- 该模型由 29‑121 M 个参数组成,量化为 CQ2‑bit (2‑bit) 精度。
- 每个深度 (2L‑20L) 都形成一个 容量单调递增 的子模型,使开发者能够选择满足延迟和内存限制的最小模型。
- 底层的 SAN 取代了传统的 MLP 密集型 Transformer 块,在不牺牲工具模式推理能力的情况下减少了参数数量。
- 训练使用了来自专有结构化数据集的 360 B 个 token,重点关注工具定义理解和结构化提取。
核心能力
工具调用
"给定你的应用程序公开的函数,Needle 会选择正确的函数,并根据用户所说的内容填充每个参数。要求做两件事,你就会按顺序得到两个调用;要求做没有任何工具涵盖的事情,你就会得到一个空列表,而不是猜测。"
- Needle 返回一个 JSON 格式的函数调用列表,其中的参数是从用户话语中填充的。
- 如果没有匹配的工具,模型会返回一个空列表,而不是产生幻觉调用。
- 置信度分数经过校准;低于 0.1 阈值的调用会被抑制。
结构化提取
"声明一个形状,传入杂乱的文本,取回类型化的字段:发票、预订、通知、表单。"
- 用户提供一个 Pydantic 模式;Needle 将字段提取为类型化对象。
- 解码语法保证了语法上有效的 JSON,使下游处理更加可靠。
文本嵌入
- 同一个模型可以输出一个 句子级向量,用于本地语义搜索、重复检测或路由到最合适的工具。
微型硬件上的性能
| 设备 | Tokens / s (解码) | Tokens / s (预填充) |
|---|---|---|
| Raspberry Pi 5 | 400 – 4 000 | 1 000 – 10 000 |
推理引擎小于 1 MB,并在启动时加载 needle3.cact 权重。预构建的二进制文件适用于 macOS、Linux (x86_64, arm64, armv7, riscv64, mipsel)、Windows、Android、iOS、tvOS、watchOS、WebAssembly 和 WASI。
Cactus 展示的现实用例
- 智能家居 – 诸如 “调暗卧室灯光并锁门” 之类的语音命令无需云端往返即可生成两个离线工具调用。
- 机器人技术 – 诸如 “打扫厨房但不要动卧室” 之类的命令被转换为有序的运动原语。
- 手机 – 本地助手可以在不向服务器发送数据的情况下创建相册、打开 URL 或定位租赁文档。
- 可穿戴设备 – 腕戴式设备可以将通知解析为结构化字段(商家、金额、日期)。
- AR 眼镜 – 离线导航和附近搜索查询完全在设备上运行。
- 汽车 – 气候、媒体、导航和通话处理均在本地执行,在长途驾驶中保护隐私。
- 桌面 – 纯英语命令驱动操作系统操作,如起草电子邮件、启动计时器或打开标签页。
- 本地语义搜索 – 嵌入技术支持设备上的文档检索和重复警报合并。
开发者工作流程
- 安装
cactus-needlePython 包;推理引擎从 Hugging Face 获取并缓存。 - 定义工具:通过装饰 Python 函数。函数签名提供参数类型,文档字符串提供描述,
run()执行调用。 - 添加触发器 (正则表达式):用于必须始终路由到特定工具的意图,确保即使在置信度阈值以下也能实现确定性行为。
- 提取结构化数据:通过将 Pydantic 模型传递给
extract(),接收一个类型化对象。 - 微调:通过 LoRA 在冻结的基础模型上进行;为任何子网络深度导出 4‑bit
.cact文件。
“根据我有限的测试,它最多可以处理 10 个工具/定义。超过这个数量它就会感到困惑” – 用户关于工具集大小限制的观察。
社区反馈亮点
- 成功之处:用户报告了可靠的多工具调用(例如,开灯和锁门)以及准确的置信度门控。
- 局限性:一些话语(如“更亮一点”)或模棱两可的温度请求产生了不正确的操作或错误路由的调用,通常伴随着较高的置信度分数。
- 工具集扩展:当加载超过约 10 个工具定义时,模型性能往往会下降。
- 领域知识:正如一位评论者所指出的,该模型缺乏大型 LLM 所保留的世界知识(例如艺术家姓名),这可能会影响特定领域。
- 偏见:观察到摄氏度/华氏度混淆和意外的恒温器调整实例。
- 与竞争对手的比较:基准测试显示,在特定任务上微调的 Needle 3 超过了 FunctionGemma 和 Needle 2,尽管在通用分类方面仍落后于更大的仅编码器模型。
为什么 Needle 3 很重要
Needle 3 证明了 在 30 MB 以下的尺寸下实现设备端结构化 JSON 生成和工具调用是可行的,为可穿戴设备、微控制器和边缘设备开启了隐私保护 AI 的大门。通过公开阶梯式架构,Cactus 让开发者能够平衡延迟、内存和准确性,开源推理引擎简化了跨多种硬件的部署。
入门指南
pip install cactus-needle
needle build --platform linux-arm64 # 下载 1 MB 的引擎和权重
然后定义一个工具:
from cactus_needle import tool
@tool
def set_lights(room: str, brightness: int):
"""Set the lights in *room* to *brightness* (0‑100)."""
# hardware integration here
return {"status": "ok"}
将用户提示发送给模型,并接收包含所选函数调用和置信度分数的 JSON 响应。
展望
Cactus 计划通过数据集管理、全深度微调和评估流水线来扩展 Cactus Platform,使更多领域(例如手机上的 OpenStreetMap 编辑)能够受益于设备端 LLM 推理。随着社区对 ESP32、汽车 ECU 和 WebAssembly 目标的实验,Needle 3 有望成为低功耗、隐私优先 AI 助手的实际标准。
Sources
相关
- Dispatch
- Dispatch
- 项目
- Dispatch
- Dispatch