Needle:14MB 基础模型跑在手机上,工具调用+结构化提取

大模型越来越大的同时,另一群人在反其道而行——把模型压缩到极致,让它能在手机、手表、智能家居甚至机器人上跑。Needle 就是这个方向上最激进的项目之一。

Needle 2 是一个 45M 参数的开源基础模型,整个模型是一个 14MB 的二进制文件,运行时只需要约 28MB 内存。它专为工具调用(tool calling)、设备使用和结构化数据提取而设计。GitHub 上超过 3,700 Star,MIT 许可开源。

为什么 14MB 就够了?

Needle 2 基于 Cactus Compute 的 Simple Attention Network(SAN) 架构——用 Hadamard MLP 替代传统 FFN、GQA 注意力机制、engram 键值记忆和多通道超连接。模型用 CQ2-bit 量化压缩,精度在同级别小模型中非常有竞争力。

跟 FunctionGemma 270M、LFM2.5 230M、Apple FM 这些小模型对比,Needle 2 在体积上小 5 到 70 倍(用 2-bit 对比它们的 f16),但基准测试成绩各有胜负。用 14MB 的体积做到这个水平,确实令人印象深刻。

核心能力:

工具调用是核心设计目标。你用 Python 装饰器描述工具,Needle 会根据用户输入自动决定调用哪个工具、填写什么参数。输入是文本,输出是 JSON——字节级语法约束保证每个 token 都合法。

置信度门控——每个响应都带一个校准过的置信度分数。设个阈值,高于阈值就执行,低于阈值就升级处理。对需要可靠性的场景很实用。

工具检索——可以声明大量工具,内置的检索头每次只渲染最相关的 5 个工具,语法约束自动切换。

内存有界——256 token 滑动窗口加上 KV sink,对话多长内存都稳定在 28MB 左右。不会因为聊天变长而内存爆炸。

快速上手: pip install cactus-needle,用 @needle.tool 装饰器描述工具,agent.run() 完成循环。几行代码就能跑起来,不需要管理单独的模型文件。

适合谁? 想在手机/手表/IoT 设备上跑本地 AI 的开发者;需要轻量级工具调用能力的边缘计算场景;对隐私敏感不想把数据发到云端的应用;做机器人/智能家居需要本地推理的项目。

项目 详情
:star: Stars 3,778
:hammer_and_wrench: 语言 Python
:page_facing_up: 许可 MIT
:laptop: 平台 全平台(14MB 二进制)

源码