Needle 2 是一个仅 45M 参数、权重烧录进单个 14MB 引擎二进制的开源基础模型,专攻微型设备上的工具调用、设备操控与结构化信息抽取,完整会话只需约 28MB 内存。业界主流是让手机塞进几亿参数的通用模型,Cactus 却反向操作:抓住 Agent 场景最刚需的调工具与抽结构两件事,用专精架构压到 14MB、2bit 量化的极限尺寸。

| 项目 | 内容 |
|---|---|
| 仓库 | cactus-compute/needle |
| 语言 / 许可证 | Python / 未标注 |
| 总星标 | ⭐ 9280 |
| 本月净增星标 | +5861 |
| 榜单 | GitHub官方月度趋势榜 第31名;星标增速榜 第7名 |
Needle 2 是一个仅 45M 参数、权重烧录进单个 14MB 引擎二进制的开源基础模型,专攻微型设备上的工具调用、设备操控与结构化信息抽取,完整会话只需约 28MB 内存。
业界主流是让手机塞进几亿参数的通用模型,Cactus 却反向操作:抓住 Agent 场景最刚需的调工具与抽结构两件事,用专精架构压到 14MB、2bit 量化的极限尺寸。对 IoT、可穿戴这类跑不动大模型的设备而言近乎唯一解,再加 pip 即装即用的顺滑体验与 arXiv 论文背书,本月以近 5900 星净增挤进双榜前列。
7. Playground:`needle playground` 起本地服务在浏览器里改提示词、跑模型,UI 上还有"Finetune on these tools"一键微调按钮。
论文(arXiv:2607.18363)提出的 Simple Attention Network 用 Hadamard MLP 取代传统 FFN(Walsh-Hadamard 正交变换,n log n 时间、无可学习矩阵),注意力走 GQA,辅以哈希 n-gram 表构成的 engram 键值记忆与多通道 hyper-connections;残差 Sandwich-norm 加 σ 门控,路由 logits 经 Sinkhorn 迭代做双随机归一化。训练栈是纯 JAX,CUDA 与 Apple Metal 经 extra 即装即用;推理引擎首次运行从 Hugging Face 下载缓存一次,之后离线可用,气隙设备的离线部署有 doc/apis.md 专门覆盖。
pip install cactus-needle # 基础安装(自动拉取引擎)
pip install "cactus-needle[gpu]" # NVIDIA GPU 训练
pip install "cactus-needle[metal]" # Apple Silicon GPU 训练
说明工具时写好函数签名与 docstring 是效果好坏的关键。
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"])
结构化抽取同样一小段搞定:定义 Pydantic 模型 Invoice 后调用 `needle.extract("Invoice from Acme Corp, $1,200.00, due 2026-09-01", Invoice)` 即返回带类型的对象。
同为小型工具调用模型的 FunctionGemma 270M、LFM2.5 230M 与 Apple FM 体量大 5–70 倍且多为 f16 存储,benchmark 上与本模型互有胜负;Raspberry Pi 圈常用的 whisper.cpp/RWKV 更偏语音或通用文本。Needle 走"专用小模型+烧录引擎"路线,牺牲闲聊能力换取确定性结构输出与极致体积,填补了真正的空白生态位。