首页 / 资讯中心 / 文章详情

Needle 3的2-layer子网络革命:用--layers切片,让29M参数端侧模型超越更大模型

Needle 3的2-layer子网络革命:用--layers切片,让29M参数端侧模型超越更大模型 ★ FEATURED ARTICLE
Needle 3的2-layer子网络革命用--layers切片让29M参数端侧模型超越更大模型Needle 3 是面向手机、可穿戴与机器人的端侧 AI 基础模型单个 8–29MB 的文件即可在设备上完成工具调用tool calling、结构化抽取与文本嵌入三大任务。它最有想象力的设计是梯级Laddered架构整模 20 层、1.21 亿参数但训练时就让 2 到 20 层的每一层深度都可独立部署——用--layers切出一个最薄仅 2 层的子网络在你的产品工具集上微调后从 29M 参数起就能在端侧工具调用上胜过数倍于它的更大模型。这篇文章带你理解这套子网络切片机制并给出 3 步落地流程。为什么端侧模型需要2 层子网络端侧部署最大的矛盾是设备内存和算力有限而模型能力又往往随参数量线性增长。传统做法是训练一堆不同规模的模型维护成本极高。Needle 3 换了一条路用一份权重覆盖所有档位。它的配方包括Monarch Hadamard MLP替代传统 FFN见 config.json 中mlp: hadamardGQA 注意力 因果卷积12 个注意力头、仅 2 个 KV 头KV 缓存更省Engram n-gram 记忆大量参数放在记忆表里121M 的模型只干 50M 模型的活字节级语法约束输出被你的 schema 编译的语法逐 token 约束抽取结果保证可解析架构与训练目标在 README.md 的 Model 一节有完整描述超参数可直接查 config.json20 层、hidden_size 768、8192 词表与 8192 上下文、CQ2-bit 量化。如何使用 --layers 切片任意深度 2 到 20 层切片本身是一个命令。Python 包先用 LoRA 在冻结的 20 层基座上微调再用needle build合并适配器、按指定深度切片导出可直接运行的 4-bit.cact权重needle build --platform linux-x86_64 --layers 2--layers N的取值范围是 2 到 20导出后运行的是同一套引擎不需要换运行时。仓库里可直接找到这些产物文件说明needle3.cact完整 20 层的 2-bit 量化权重引擎原地映射读取checkpoints/needle3.safetensors用于微调的原始 checkpointtokenizer/tokenizer.model、tokenizer/tokenizer.vocab8192 词表含tools、schema等结构化特殊 token也就是说切片不是事后压缩而是训练时就按梯级规则ladder rule保证的产物——每个深度都是原生可用的模型。29M 参数的战绩微调后大涨 18 到 36 分切片只是第一步真正让小子网络打大模型的是针对单一产品工具集的微调。官方数据详见 README.md 的 Customisation 一节配图数据源 assets/finetune.svg在 DroidCall 上微调后每个子网络都提升 18 到 36 分从 4 层起微调后的子网络就在工具调用上超过 DeepSeek V4 Flash起点仅 29M 参数哪怕只有 2 层的子网络微调后也能在远小于完整模型需求的设备上最优运行配合六项基准的完整对比工具调用 exact-match、抽取字段 micro-F1图表文件 assets/benchmarks.svg你可以看到 29M 量级的 Needle 3 子网络在工具调用维度上对 2–3 倍体量基线的优势。把切片后的子网络部署到真实设备切片产出的.cact文件放进任意平台目录与自带的迷你引擎每个 1MB配对即可运行仓库内置 17 个平台./needle --model needle3.cact --tools tools.json --prompt dim the living room to 30常用平台入口部署全景图见 assets/deploy.svglinux-x86_64/needle linux-x86_64/needle.hLinux x86_64 引擎与 C API 头文件android-arm64/needleAndroid 真机wasm/needle.wasm wasm/needle.js浏览器内运行wasm-component/needle.witWASI 组件接口定义C API 极精简needle_init传入系统提示与工具 JSONneedle_complete生成回答needle_embed取句向量失败时用needle_last_error()读取具体原因签名见 linux-x86_64/needle.h。每轮返回一个 JSON包含function_calls、reasoning与经校准的confidence置信分用户说的事情没有工具覆盖时返回空列表而不是乱猜——这正是端侧可控性的关键。快速上手3 步跑通 Needle 3 子网络第 1 步安装pip install cactus-needle第 2 步用 Python 定义工具并调用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(whats it like in Lagos right now?)[results]) # [{city: Lagos, temp_c: 27, sky: clear}]引擎与权重首次自动拉取并缓存。第 3 步切片并导出你自己的子网络在自己产品的工具轨迹上微调后执行needle build --layers 2或任意深度导出 4-bit.cact丢进目标平台的引擎目录即可。若需要离线使用全部资产可克隆仓库获取各平台引擎与权重git clone https://gitcode.com/hf_mirrors/Cactus-Compute/needle3小结Needle 3 用梯级训练让2–20 层任意深度都是可部署模型一份权重覆盖所有端侧档位needle build --layers N一条命令完成 LoRA 适配器合并 深度切片 4-bit.cact导出微调后小子网络在 DroidCall 上大涨 18–36 分29M 参数起即可超越 DeepSeek V4 Flash17 个平台引擎均 1MB同一个.cact从手机、浏览器到树莓派直接复用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站