上周 Hacker News 上有个项目炸了——768 个赞,210 条评论,到今天已经拿到了 2100 多个 GitHub Star。名字叫 Needle,一根针。
它干了一件事:把 Gemini 3.1 的工具调用能力蒸馏到了一个只有 2600 万参数的小模型里。
2600 万是什么概念?对比一下:
- Qwen 的最小号是 6 亿参数(0.6B),是 Needle 的 23 倍
- 隔壁的 Llama 3.2 最小也 1B 起步
- Needle 只有 0.026B
小到可以在你的 MacBook 上本地跑,甚至能微调。
怎么做到的
团队来自 Cactus Compute,项目主导是 Henry Ndubuaku。他们搞了一种叫 Simple Attention Network(简单注意力网络) 的架构,不是标准的 Transformer。
结构上像个 Encoder-Decoder,但两边都没用 FFN(前馈网络),全靠注意力机制办事。Encoder 12 层,Decoder 8 层,嵌入维度只有 512,8 个注意力头、4 个 KV 头。
预训练在 16 块 TPU v6e 上跑了 200B 的 token,花了 27 小时。然后拿 2B token 的函数调用数据集做了 45 分钟的后训练——就这,没了。
性能怎么样
在单次函数调用这个细分赛道上,Needle 干翻了:
- FunctionGemma-270M(Google 出品,270M 参数)
- Qwen-0.6B(阿里,6 亿参数)
- Graninte-350M(Intel,3.5 亿)
- LFM-2.5-350M(Liquid FM,3.5 亿)
用 Cactus 自家的推理引擎跑,预填充速度达到 6000 tok/s,解码 1200 tok/s。作为参考,一个 7B 模型在同样硬件上大概只能跑到几百 tok/s。
当然也得说实话——Needle 是为工具调用专项优化的。它不是通用的聊天模型,不支持多轮对话。做个人 AI 助手(设个闹钟、查天气、开关灯、控制智能家居)是它的主场。
怎么用
作者整了个一条龙工具链,装好之后几条命令搞定:
git clone https://github.com/cactus-compute/needle.git
cd needle && source ./setup
needle playground
会弹出一个 Web 界面,可以直接测试和微调。也支持 Python 调用:
from needle import SimpleAttentionNetwork, load_checkpoint, generate
params, config = load_checkpoint("checkpoints/needle.pkl")
model = SimpleAttentionNetwork(config)
result = generate(model, params, tokenizer,
query="北京的天气怎么样?",
tools='[{"name":"get_weather","description":"获取天气","parameters":...}]'
)
微调也简单——准备一个 JSONL 文件,每行一条 query + tools + answers,每个工具至少 120 个样例就行。
needle finetune my_data.jsonl
争议
HN 评论区也不是一片叫好。有人翻出了 Google 的条款——"你不能用 Gemini API 来开发与之竞争的产品或逆向工程提取模型权重"。法律上这是个灰色地带。
另外也有人指出,2600 万说成 26M 比 0.026B 听着唬人多了。这倒是真的。
它意味着什么
我个人觉得,Needle 最值得关注的点不是它有多强,而是它代表的方向。
过去两年大家都在卷大模型——7B 嫌小,70B 刚及格,400B 才叫真正的模型。但 Needle 证明了,在某些特定的任务上,小模型通过精心设计的数据和架构,完全可以和大模型掰手腕。
而且 2600 万参数意味着什么?意味着它可以在你的手机、手表、眼镜上跑。不需要联网,不需要云端推理,隐私问题一下子解决了一大半。
智能家居、可穿戴设备、车载助手……这才是 Needle 真正想去的地方。
代码和权重全部开源(MIT 协议),地址在 github.com/cactus-compute/needle,想玩的话直接上去拉代码就行。




