尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

善用Needle 2的reasoning字段:训练「接地」而非只会选工具的模型

善用Needle 2的reasoning字段:训练「接地」而非只会选工具的模型 善用Needle 2的reasoning字段训练「接地」而非只会选工具的模型【免费下载链接】needle14MB foundation model for tiny devices; phones, wearables, smart home, and robots.项目地址: https://gitcode.com/GitHub_Trending/needle20/needleNeedle 2 是一款仅 4500 万参数的开源端侧基础模型专攻**工具调用tool calling**与结构化抽取——整个模型压缩成一个 14MB 的二进制文件跑完整会话仅需约 28MB 内存。用 LoRA 微调它时决定模型是接地还是只会选工具的关键就藏在训练数据里的reasoning字段中。一、先认识 Needle 2能跑在手机里的工具调用模型Needle 2 的设计目标很明确让工具调用模型小到可以装进手机、可穿戴设备、智能家居和机器人。它的几个硬核指标45M 参数压缩为 CQ2-bit整个引擎只有14MB会话内存稳定在~28MB256 token 滑动窗口工具声明作为 KV 锚点常驻对话再长内存也不涨字节级语法约束解码由你的 schema 编译出文法模型吐出的每个 token 都合法JSON 永远格式正确每次响应附带校准过的置信度分数可设阈值决定直接执行还是升级处理。对新手来说最友好的入口是 Python 包pip install cactus-needle装饰一个函数即声明工具agent.run()自动完成模型选工具 → 执行 → 回填结果的循环。完整 API 见 doc/apis.md。二、reasoning 字段每次调用前的「思维链」在 Needle 2 里模型的每一轮响应都长这样节选自 doc/apis.md{ type: call, function_calls: [ { name: set_lights, arguments: { room: living room, on: true, brightness: 30 } } ], reasoning: living room - room; dim - on true, brightness 30, confidence: 0.94 }注意reasoning这一行它是模型为每个参数从输入中的来源片段推导出处的一句短句例如living room 填给 room 参数dim 意味着打开且调暗。这个设计有个微妙而重要的分工部分是否受语法约束作用function_calls✅ 字节级文法约束保证 JSON 永不畸形、字段值合法reasoning❌ 自由生成记录值从哪来保持推导可读也就是说调用被文法锁死推导保持自由——模型先说出依据再动手调用。这条先推导、后调用的顺序正是接地grounding的核心。三、微调数据里reasoning 字段在教模型「值从哪来」很多人第一次微调工具调用模型时都会遇到同一个坑模型选工具很准参数值却填错。官方文档 doc/finetuning.md 对reasoning字段有一句关键建议reasoning是可选的但建议写上模型会在调用前先生成推导展示每个值来自哪里的例子教的是接地而不只是工具选择。微调数据是 JSONL 格式每行一个例子。以调灯光为例{query: dim the kitchen to 10, tools: [{name: set_lights, parameters: {type: object, properties: {room: {type: string}, brightness: {type: integer}}, required: [room]}}], answers: [{name: set_lights, arguments: {room: kitchen, brightness: 10}}], reasoning: kitchen - room; dim to 10 - brightness 10}这个字段在训练里如何起作用看 needle/model/finetune.py 中的render_example每个例子被渲染成提示词 目标目标 思维标签包裹的 reasoning 行 JSON 调用。也就是说训练损失同时覆盖 reasoning 行和 JSON 调用模型被显式要求先写推导再出调用由于 JSON 里大部分是模型早已会预测的样板工具名、大括号、字段名loss 起点通常在 1.0 附近判断训练效果要看趋势而不是绝对值。再配合两条数据纪律接地效果会明显更好参数只包含输入中出现过的值无证据的可选字段直接省略绝不填占位符加入离题例子answers: []生成器默认约占 1/8否则微调后的模型会对任何输入都硬调一个工具。四、快速上手3 条命令完成「接地」微调 完整流程只有三步需要pip install cactus-needle# 1.可选用大模型合成训练数据 needle generate-data --tools my_tools.json --num-samples 500 --output data.jsonl # 2. LoRA 微调基座自动下载基础权重 needle finetune data.jsonl --epochs 10 # 3. 合并适配器并导出为单个 .cact 引擎 needle build checkpoints/needle2.pkl --lora checkpoints/needle_lora.pkl --out my_needle.cact微调基于冻结基座做 LoRA默认 rank 16导出时合并权重——训练便宜产物仍是同一个引擎可直接运行的.cact文件agent needle.Needle(weightsmy_needle.cact, tools[...])另外还有个零代码选项needle playground启动浏览器界面点Finetune on these tools按钮即可在 UI 里跑完上面整条流水线并拿到可下载的.cact。五、如何判断微调是否成功3 个实用信号1. 看曲线趋势不看绝对值。200 条数据在默认 3 个 epoch 下总共只有约 39 步几乎不足以移动 rank 16 的适配器几百条数据建议跑 10–30 个 epochloss 应出现明确下降趋势。若几百步后曲线仍停在起点先加 epoch 再加学习率。2. 验证集 loss 是刹车。默认留出 10% 数据做验证每个 epoch 打印一次。验证 loss 抬头而训练 loss 继续下降 过拟合此时停止训练或补充数据。3. 工具对、参数错是数据问题不是标注问题。官方文档 doc/finetuning.md 的结论工具选择几百条干净例子就能明显变好而参数接地需要千级规模的数据且必须带 reasoning 行、措辞和取值多样化。接地任务较重时--lora-rank 32可加倍适配器容量体积依然很小。⚠️ 一个常见疑惑微调后的模型confidence会返回None——因为置信度头只为基座校准、微调不更新它包会主动禁用该分数。需要置信度门控时请使用基座权重。六、小结 reasoning让 Needle 2 的每次调用都先推导、后执行调用受字节级文法约束推导保持自由可读微调数据里写上reasoning行等于教模型每个参数的值从哪里来这是接地与只会选工具的分水岭微调流程仅 3 条命令几百条数据先解决工具选择千级带 reasoning 的数据再解决参数接地训练完仍是单个.cact文件直接丢回手机、机器人等端侧设备运行——这正是 14MB 基础模型的意义所在。【免费下载链接】needle14MB foundation model for tiny devices; phones, wearables, smart home, and robots.项目地址: https://gitcode.com/GitHub_Trending/needle20/needle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表