needle
2600万参数极简函数调用AI模型,可在手表/眼镜等可穿戴设备上本地离线运行
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2600万参数极简函数调用AI模型,可在手表/眼镜等可穿戴设备上本地离线运行
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你戴着智能眼镜,手腕上是最新款的健康手表,这些设备想在离线状态下完成 AI 函数调用——查天气、调通知、控制智能家居。传统方案要么依赖云端 API,要么需要几GB的模型权重。但现在,一个仅 26M 参数的模型,就能完成这件事。
Needle(意为"针",暗喻精准轻巧)是 Cactus Compute 团队开源的极轻量级函数调用(Function Calling)模型。项目发起于 2026 年初,核心动机是探索 Simple Attention Networks——一种去除了传统 Transformer 中 FFN(前馈网络)层的新型架构。
团队发现:当模型任务明确为"工具路由"(Tool Routing,即根据用户意图选择正确的函数并提取参数)时,FFN 的非线性变换能力实际上是冗余的——函数调用本质上是检索+组装,注意力机制足以胜任。基于这一洞察,团队从 Gemini 3.1 Flash-Lite 蒸馏出了 Needle,参数规模压缩至 26M,却保留了可用的函数调用准确率。

图1:Needle 项目 banner,展示极轻量模型在端侧设备上的应用场景
Needle 的架构设计极具创新性,核心是对传统 Transformer 的大胆精简。
Encoder-Decoder 结构:
模型采用 Encoder-Decoder 架构,但与传统 T5/UL2 不同:
Encoder(12层):仅包含 ZCRMSNorm + Self Attention(GQA+RoPE)+ Gated Residual,完全移除了 FFN 层。这是整个架构最激进的设计——作者在论文中解释:FFN 的非线性变换在检索类任务中贡献有限,真正重要的是注意力机制的 query-to-key 路由能力。
Decoder(8层):包含 Masked Self Attention(带 RoPE)+ Cross Attention + Gated Residual,同样无 FFN。输出通过 tied embedding 生成 <tool_call> token 和 answer。
词表:BPE=8192,使用 SentencePiece 训练,比 GPT-4 等模型的 100k+ 词表小得多,专为函数调用场景定制。
关键技术选型:
| 技术 | 选择 | 理由 |
|---|---|---|
| 归一化 | ZCRMSNorm | 比 LayerNorm 更适合极深网络 |
| 位置编码 | RoPE | 长序列外推能力 |
| 注意力 | GQA(8H/4KV) | 降低 KV cache 显存占用 |
| 训练框架 | JAX + Flax + Optax | TPU 原生,适合大规模训练 |
| 词表 | BPE 8192 | 小词表降低嵌入参数量 |
这是 Needle 的核心能力。用户传入自然语言 query + JSON 格式的工具描述,模型输出结构化的函数调用指令。
from needle import generate, load_checkpoint, get_tokenizer
params, config = load_checkpoint("checkpoints/needle.pkl")
model = SimpleAttentionNetwork(config)
tokenizer = get_tokenizer()
result = generate(
model, params, tokenizer,
query="What's the weather in San Francisco?",
tools='[{"name":"get_weather","description":"Get current weather",...}]',
)
# 输出: [{"name":"get_weather","arguments":{"location":"San Francisco"}}]
Needle 提供了完整的微调流程,支持用户用自己的工具集和数据集训练专属模型:
needle playground # Web UI 一键微调
needle finetune data.jsonl # CLI 微调
数据格式为 JSONL,每个样本包含 query、tools(JSON 字符串)、answers(JSON 字符串)。官方建议每个工具至少 120 个样本(100 训练 / 10 验证 / 10 测试),否则容易过拟合。
项目配套的 Cactus 推理引擎可实现极高吞吐量:
这意味着 Needle 在服务端部署时延迟极低,适合高并发场景。
git clone https://github.com/cactus-compute/needle.git
cd needle && source ./setup
needle playground
./setup 脚本自动完成以下工作:
.venv 虚拟环境Web UI 监听在 http://127.0.0.1:7860,无需任何配置即可开始测试。
| 维度 | 评估 |
|---|---|
| 依赖复杂度 | 中等(JAX 安装较慢,首次 setup 需 5-10 分钟) |
| GPU 需求 | 无需 GPU,纯 CPU 推理 |
| 磁盘占用 | ~500MB(权重 + 依赖) |
| 内存占用 | ~2GB |
| 容器化 | 无 Dockerfile,无法 Docker 一键部署 |
| Web UI | 自定义 HTTP Server,功能完整 |
尽管 Needle 在极轻量化上取得了突破,但仍有明显局限:
1. 精度与规模权衡
26M 参数对比 Qwen-0.6B / FunctionGemma-270m / Granite-350m 等竞品,Needle 在单次函数调用评测中表现更优,但这些竞品在多轮对话场景下能力明显更强。小模型在复杂语境中的表现尚存疑问。
2. 生态锁定
依赖 Cactus 推理引擎才能达到标称吞吐量(6000 toks/s prefill)。纯 JAX 在 CPU 上运行速度较慢,日常开发体验可能低于预期。
3. JAX 学习曲线
项目使用 JAX/Flax/Optax 生态,对习惯 PyTorch 的开发者有一定门槛,且 JAX 的即时编译(XLA)和设备布局(pmap/xmap)概念较为复杂。
4. 微调数据要求高
每个工具需 120+ 样本才能避免过拟合,对于只有少量示例的私有工具场景,实际可用性受限。
Needle 的出现在 TinyML + AI Agent 交叉领域具有标志性意义:
1. 端侧 Agent 的可行性证明
将函数调用能力压缩到 26M 参数,证明了在 MCU/手表/眼镜等超低功耗设备上运行 AI Agent 的核心技术路径是可行的。随着模型蒸馏技术的成熟,未来 1-5M 参数的函数调用模型并非天方夜谭。
2. Simple Attention Network 的学术价值
移除 FFN 的实验为 Transformer 架构演进提供了重要数据点。如果检索类任务确实不需要 FFN 的非线性表达能力,那么更激进的架构简化(如线性注意力变体)将有更大空间。
3. 蒸馏技术的新方向
Needle 不是简单蒸馏 Gemini 的输出,而是蒸馏"函数调用"能力——这要求蒸馏过程对工具描述格式、JSON 结构有精确理解,对蒸馏方法本身提出了新的挑战。
4. Star 增长与社区态势
截至 2026 年 6 月,Needle 在 GitHub 获得约 2588 stars,核心作者来自 Cactus Compute 团队,贡献者包括 Jakub Mroz、Karen Mosoyan 等。该项目与 Cactus 推理引擎形成生态闭环,HuggingFace 权重完全开放。