上周 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,想玩的话直接上去拉代码就行。