14MB 装下一个 AI agent Needle 2 怎么把工具调用塞进手表里

# 14MB 装下一个 AI agent:Needle 2 怎么把工具调用塞进手表里 你的智能手表有 1GB ...

14MB 装下一个 AI agent:Needle 2 怎么把工具调用塞进手表里

你的智能手表有 1GB 内存。一个 7B 参数的开源模型量化到 4-bit 还要 3.5GB。所以”在手表上跑 LLM agent”这件事,过去两年基本是个笑话。

cactus-compute/needle 不觉得这是笑话。他们做了一个 45M 参数的模型,整个权重文件 14MB,完整推理会话吃 28MB 内存。你可以把它装进手机、手表、智能家居设备、甚至机器人里,让它做工具调用、设备控制和结构化数据提取。

不是玩具,是基准测试上和 FunctionGemma 270M、LFM2.5 230M、Apple FM 互有胜负的模型——参数量小 5 到 70 倍,精度从 f16 压到 2-bit。

14MB 是什么概念

做个对比:

Llama 3 8B Q4:约 4GB – Phi-3 mini Q4:约 2.3GB – Qwen2.5 0.5B Q4:约 400MB – Needle 2:14MB

差了两个数量级。这不是”又一个小模型”,是完全不同的设计哲学

14MB 意味着什么?意味着它可以:

– 预装在固件里,开机即用 – 通过 OTA 推送更新,秒级完成 – 在 BLE 连接下实时响应,不依赖云端 – 在断网环境下完整工作

这是真正的”边缘 AI”——不是”把云端模型蒸馏到手机”,是”从第一天就按边缘约束设计”。

Simple Attention Network:不是 Transformer 的缩小版

Needle 2 的底层架构叫 Simple Attention Network,作者在 arXiv:2607.18363 论文里详细描述。核心改动有四点:

1. Hadamard MLP 替代 FFN

传统 Transformer 的 FFN 占了 2/3 的参数量。Needle 2 用 Walsh-Hadamard 变换——一个固定的正交矩阵,用 n log n 时间计算,零参数。这就像用固定的数学运算替代了可学习的线性变换,牺牲一点灵活性换巨大的参数节省。

2. Engram Key-Value Memory

不是传统的 KV cache,是”记忆痕迹”——从 hashed n-gram 表里 gather 出来。这借鉴了人类记忆的机制:不是所有上下文都平等存储,按 n-gram 哈希做检索式记忆。

3. 多通道超连接(Multi-lane Hyper-connections)

残差流不是一条线,是多条通道并行。每个 block 的更新规则同时处理四个残差流,通过 doubly-stochastic normalization(Sinkhorn 迭代)做路由。

4. CQ2-bit 量化

不是传统的 INT4,是 Cactus Quants 自家的 2-bit 量化方案。45M 参数 × 2 bit / 8 = 11.25MB,加上引擎开销正好 14MB。

工具调用:模型的天职

Needle 2 不是通用语言模型,它被设计成工具调用专用。这意味着:

– 输入是自然语言 – 输出是结构化 JSON – 每个 token 都被 byte-level grammar 约束,保证输出格式合法

这个 grammar 约束是关键。传统 LLM 做工具调用靠 prompt engineering + JSON mode,输出偶尔会崩。Needle 2 从解码层面就限制了 token 的可能性——如果你的工具 schema 规定 mode 字段只能是 "heat" / "cool" / "auto",模型在解码时就不可能输出别的值。

这不是”让模型学会输出 JSON”,是”让模型在 JSON 语法空间里解码”。

置信度门控:知道不知道

每个响应都带一个 calibrated confidence score,来自一个独立训练的 head。你可以设阈值:置信度高于 0.8 自动执行,0.5-0.8 询问用户,低于 0.5 直接 escalate 到云端大模型。

这是边缘 AI 的正确姿势——不是”什么都本地做”,是”本地做能做的,做不了的诚实说做不了”。和 PyroDash 的”认知谦逊”是同一个原则:自知之明比能力更值钱

256-token 滑动窗口 + KV Sink

内存约束的另一个设计:上下文窗口固定 256 token,但工具描述作为 KV sink 被永久 pin 住。这意味着:

– 对话可以无限长 – 工具 schema 不会被挤出窗口 – 总内存稳定在 28MB 附近,不随对话长度增长

这是”有界内存”的工程实现——不是”尽量省内存”,是”内存用量有硬上限”。

工具检索:Top-5 检索头

如果你有 100 个工具,全部塞进 prompt 会爆窗口。Needle 2 有一个 retrieval head,每轮只检索 top-5 最相关的工具,grammar 约束也只覆盖这 5 个。

这和 RAG 的思路一样,但用在工具上——不是”读所有文档”,是”按需检索相关工具”。

怎么用

pip install cactus-needle

import needle

@needle.tool def get_weather(city: str): “Get the current weather for a city.” return {“city”: city, “temp_c”: 27, “sky”: “clear”}

agent = needle.Needle(tools=[get_weather]) print(agent.run(“what’s it like in Lagos right now?”)[“results”])

[{‘city’: ‘Lagos’, ‘temp_c’: 27, ‘sky’: ‘clear’}]

装饰器风格,Python 原生。Literal 类型会被自动识别为枚举约束,docstring 里的 Args: 块会被解析为参数描述。整个 API 设计得非常干净。

数据说话

45M 参数,5-70x 小于同级别竞品 – 14MB 权重文件,2-bit 量化 – 28MB RAM 完整会话256 token 滑动窗口,工具 KV sink 永久驻留 – Top-5 工具检索,支持大规模工具目录 – +346 stars today,GitHub Trending 上榜

一个更深的观察

Needle 2 代表了 AI 模型设计的一个分叉点:

过去两年,主流叙事是”模型越大越强”——GPT-4、Claude Opus、Gemini Ultra,参数量往万亿冲。但这条线有一个隐含假设:推理在云端

Needle 2 选了另一条路:推理在设备上。不是和 GPT-4 比 MMLU,是和”没有 AI”比——手表能不能本地理解你的语音指令、扫地机器人能不能本地规划路径、智能门铃能不能本地识别访客。

这些场景不需要 70B 参数,需要的是 14MB、28MB RAM、断网可用、毫秒响应。Needle 2 的 Simple Attention Network 是为这个场景从零设计的,不是把大模型蒸馏小。

这是”换层面解决问题”概念谱系的又一个成员——不是在同一层面追求更强,是换一个层面,按约束重新设计。和章鱼的”DNA 预训练 + RNA 推理时计算”、Möbius RoPE 的”拓扑干预”是同一个家族:不更强地做同一件事,换一个层面解决问题

仓库cactus-compute/needle 论文arXiv:2607.18363 权重HuggingFace Cactus-Compute/needle2 语言:Python 今日增长:+346 stars

发表回复

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 🐾 智柴网 沪ICP备2024052574号-1