Hacker News 中文摘要

RSS订阅

Show HN: Needle2——面向手机、可穿戴设备、智能家居和机器人的14MB智能大语言模型 -- Show HN: Needle2: 14MB agentic LLM for phones, wearables, smart home and robots

文章摘要

今日发布的Needle 2是一款仅45M参数、14MB大小的开源AI模型,可在28MB内存中运行,支持工具调用和设备控制。它在树莓派5上达到每秒500 tokens的推理速度,兼容VR设备和低价手机,适用于可穿戴设备、机器人等场景。

文章总结

今日,我们发布了Needle 2:一款面向工具调用、设备操控与结构化数据提取的开源4500万参数模型。整个模型仅为一个14MB的二进制文件,在28MB内存中即可完成完整会话。该模型基于我们的“简单注意力网络”研究成果构建,采用“仙人掌量化”技术压缩至CQ2位,并集成于专属引擎中。

在工具调用与移动设备使用基准测试中,Needle 2与FunctionGemma 270M、LFM2.5 230M及Apple FM等小型模型互有胜负,但体积仅为它们的5至70分之一,且仅用2位精度对抗其f16精度。Needle 2在树莓派5上解码速度达每秒500个词元,在Meta Quest 3S与Apple Vision Pro等VR设备上为每秒400至1500个词元,在三星A系列等200美元以下手机上为每秒300至700个词元。凭借约28MB的峰值会话内存,Needle 2可在ESP32-S3等新型微控制器上运行。

我们的核心策略是:将设备端AI引入200美元以下的设备。边缘AI目前多指Mac和PC,但真正的边缘是廉价硬件——超过210亿台联网物联网设备,而PC仅约15亿台;在新兴市场,大多数手机售价低于200美元。加上廉价手机、树莓派、微控制器、可穿戴设备、小型机器人及智能家居设备,约五分之四的边缘设备成本低于200美元。这正是Needle 2的目标硬件:无GPU、无NPU,仅需几百MB内存。

在功能调用与设备使用方面,开灯无需前沿模型。手表、家居、机器人各自以带类型参数的函数形式暴露能力,唯一难点是将杂乱语句映射到这些函数上:选择哪个函数,填入哪些值。如此定义后,问题无需世界知识或开放式文本,因此4500万参数足以胜任聊天模型需数十亿参数的任务。这一更小规模的设定是我们所有后续工作的基础。

在提取与结构化输出方面,模式即接口,同一设定也适用于文档:一个模式加一段文本即可返回类型化字段,枚举字段充当分类器,数组字段一次调用收集列表。我们通过契约而非惯例强制执行:每轮回复均以调用信封形式返回,空调用表示拒绝,从声明模式编译的字节级语法约束每个词元。语法承载句法,因此全部4500万参数专注于选择函数并将参数基于用户话语。

边缘-云端协作方面,没有小型模型能覆盖一切,因此Needle 2会明确表示而非猜测:每次回复附带学习到的置信度分数,无关请求返回空调用。高于阈值则执行,低于阈值则重新询问或升级至云端。大多数设备请求为常规控制,因此升级情况罕见,默认路径保持私密、即时且免费。

无损2位量化方面,小型模型在事后量化中易崩溃,因此我们从不事后量化:Needle 2从预训练到后训练,权重、激活值及KV缓存均针对“仙人掌量化”训练。部署的2位模型即训练时的模型,这使4500万参数在无损情况下压缩至14MB。

协同设计的模型与推理方面,每个架构选择均在目标硬件上基准测试后才确定参数,交付物是模型与引擎的配对而非仅权重:一个无依赖的C++二进制文件,启动时探测CPU并选择内核,模型、分词器及语法编译器均封装在内。单一构件可从Cortex-M运行至x86及WebAssembly,无需安装或下载。

在Mac/PC上微调方面,每个产品有其工具词汇,4500万参数的模型足够小,可在运行设备上重新训练:代码库与Python包可在几分钟至几小时内于个人电脑上微调与测试。部署一个能理解设备工具的Needle 2,而非通用助手。

Needle 2已为生产就绪,适用于需要最小内存占用、低延迟、隐私及离线可靠性的产品。可穿戴设备先驱Pebble在其Index 01应用中本地运行Needle 2,将语音请求转化为操作,无需依赖网络连接。

架构方面,Needle 2基于专有1150亿词元语料库预训练,并额外用380亿词元进行后训练,包含紧凑推理轨迹与精心设计的数据集分布。每个组件旨在以不增加带宽为代价提升能力:Hadamard MLP用固定沃尔什变换与学习到的对角线替代传统密集上下投影,使通道混合几乎不消耗参数;engram将世界知识从堆栈移至哈希n-gram表,每词元仅读取几行,解码时几乎免费;多通道残差流使27层、512宽的网络具备更宽网络的路径灵活性,仅需少量点积。

内存系统针对固定RAM设备设计。注意力使用256词元滑动窗口,使KV缓存无论会话多长均有上限;系统提示与工具声明固定为永久驻留,确保工具调用模型永不遗忘工具。缓存通过量化感知训练,权重以平均2位的混合精度存储于“仙人掌量化”中。结果使质量决策与部署决策解耦:一个训练好的模型,可针对目标设备支持的精度与窗口进行专门化。

引擎速度源于其拒绝计算的内容。权重从不解压至RAM:2位代码在向量寄存器内展开,融合为整数点积,因此驻留内存保持为二进制文件大小,算术路径为全int8——激活值、KV缓存及通道路由表均如此。语法不仅是保证,更是优化:匹配器在logits存在前即知合法词元,引擎仅计算候选行的输出分数,在结构词元上跳过高达98%的词汇投影,在输出已强制时完全跳过。一个通用二进制文件在启动时探测CPU并自选内核层级,线程池在词元的短串行部分自旋而非休眠,这使解码速度几乎翻倍。所有这些不改变任何输出:每个技巧要么精确,要么逐词元验证与参考路径一致。

这一切归根结底是能量问题。在设备芯片上,从闪存或DRAM移动一个字节的成本比乘加运算高出数个数量级,因此关键预算是每词元FLOPs与每词元字节数。架构削减前者:Needle 2每词元消耗70 MFLOPs,而同等宽度与深度的传统Transformer为164 MFLOPs,即使参数匹配的Transformer也为87 MFLOPs。二进制文件削减后者:无物重新实例化,算术保持全int8,语法直接削减计算,因此解码一个词元最多读取14MB二进制文件一次,结构词元则更少。这就是电池寿命的来源。即使在高端手机上,始终在线的助手也受限于功耗预算;每MFLOP即毫瓦时,Needle 2每词元消耗的FLOPs比基准模型少7至85倍。

评估方面,我们在五个公开函数调用基准上测试:Google Mobile Actions、DroidCall、Seal-Tools域内与域外测试,以及BFCL v4单轮。评分采用有序严格精确匹配:仅当函数名、调用顺序及每个参数值均匹配时才算通过。所有Needle 2数据通过发布的C++引擎在生产配置下端到端测量:CQ2位权重、工具检索开启、256词元滑动KV窗口。基准模型在vLLM下以完整上下文运行发布检查点,Apple FM在设备上运行。

两个不对称性使比较困难,我们事先说明。精度:基准模型故意保持f16,因为传统后训练量化至2位会使未针对激进压缩训练的模型崩溃,而“仙人掌量化”从训练之初即融入Needle 2。这偏向基准模型。范围:Needle 2专门针对智能体工具调用训练,而每个基准模型均为通用语言模型,携带聊天、散文及世界知识。这偏向Needle 2。无法同时平衡两者,因此我们不尝试。表格回答一个狭窄问题:哪个模型在设备端预算内正确执行工具调用。我们接受偏差,但这仍描绘了我们意图的画面。

在Mobile Actions基准上,Needle 2以63.7%的准确率与FunctionGemma 270M的64.0%接近,且名称准确率高达98.3%。在DroidCall上,Needle 2以17.0%的准确率与FunctionGemma的17.5%几乎持平。在Seal-Tools域内测试中,Needle 2以32.6%的准确率领先LFM2.5的26.9%与FunctionGemma的16.3%。在域外测试中,Needle 2以28.7%的准确率领先LFM2.5的17.0%与FunctionGemma的15.6%。在BFCL v4上,Needle 2在Python简单调用中与FunctionGemma相差不到一个百分点,整体格式正确率达93.4%。差距集中在训练数据未覆盖的Java、JavaScript及并行多调用类别。

评论总结

根据评论内容,总结如下:

主要观点与论据:

  1. 对微型LLM的肯定与潜力探讨(评分:无,但多位评论者持积极态度)

    • 评论1(tolugenius):“This is really cool, I'm curious how much knowledge can their be in smaller models? ... edge ai is really what needs to get better before physical ai can take off.” 认为微型模型对边缘AI发展至关重要。
    • 评论9(redrix):“While most of the industry focuses on the frontier of 'intelligence' (function), a release like this represents the frontier of the other end of the spectrum (form).” 强调该工作在“形态”前沿的贡献。
    • 评论7(nater5000):“I foresee a paradigm ... where you have a hierarchy of LLMs, with more competent models actively training smaller models to solve specific tasks very efficiently.” 提出层级式LLM架构的设想。
  2. 对模型性能与实用性的质疑(评分:无,但批评具体)

    • 评论2(Tiberium):“I'd expect it to at least ignore (call no tools) for the queries that it doesn't understand. And it seems like it does do that, just not consistently.” 指出模型对不理解查询的处理不一致。
    • 评论12(hathym):“conclusion: completely useless” 直接否定模型在简单数学计算上的能力。
    • 评论16(yorwba):“... maybe this counts as dark humor at least.” 通过示例展示模型对模糊指令的荒谬响应。
  3. 技术细节与改进建议(评分:无,但具建设性)

    • 评论6(minimaltom):“Was really cool to see yous use Engrams to cut down compute! ... I was curious if you've tried ablating engram layers and sizes across your setup?” 关注Engrams技术及其消融实验。
    • 评论8(grenli):“The learned confidence gate is the crucial piece for a 14MB action model. ... what calibration target decides between abstaining locally and escalating to the cloud?” 探讨置信度门控的校准目标。
    • 评论7(nater5000):“what does a 28MB binary get you? Or a 140MB binary? Or a 1.4MB binary?” 质疑模型大小选择的合理性。
  4. 应用场景与集成兴趣(评分:无,但积极)

    • 评论4(dofm):“how would you pair this with speech-text-speech stuff, wake words etc.?” 询问与语音系统的集成。
    • 评论10(ianseyler):“I'd be interested in attempting to run this in a network-enabled 32MiB RAM microVM.” 表达在微VM上运行的兴趣。
    • 评论17(sroussey):“Looking forward to npm version of needle-rs supporting v2.” 期待npm版本支持。

平衡性总结: - 正面观点:多数评论认可该工作在微型LLM领域的创新性,认为其对边缘AI、层级式模型架构有重要意义,并赞赏其技术实现(如Engrams、WASM支持)。 - 负面观点:部分评论指出模型在理解模糊查询、执行简单任务时表现不佳,甚至“完全无用”,并质疑其大小选择的合理性。 - 中立/建设性:多位评论者提出技术改进建议(如消融实验、置信度校准),并探讨实际应用集成(如语音、微VM)。