Needle 2 GPU微调教程pip install cactus-needle[gpu]全流程实战【免费下载链接】needle14MB foundation model for tiny devices; phones, wearables, smart home, and robots.项目地址: https://gitcode.com/GitHub_Trending/needle20/needleNeedle 2是一个开源的 45M 参数端侧基础模型专为工具调用tool calling设计整个模型只有 14MB全程会话约 28MB 内存。本文带你用GPU 微调LoRA在几分钟内把 Needle 2 训练成懂自己业务工具的专属小模型一条pip install cactus-needle[gpu]就能装好全部环境。一、Needle 2 是什么为什么值得微调它一句话概括文本进去JSON 工具调用出来。每一轮响应都由从你的 Schema 编译出的字节级语法约束输出的调用永远格式合法并附带一个校准过的置信度分数。它基于 Simple Attention Network 架构Hadamard MLP、GQA 注意力、engram 键值记忆用 CQ2-bit 量化压缩进自带引擎与同级别小模型相比Needle 2 在 Mobile-Actions 基准上以 5~70 倍的更小规模取得不输的成绩 架构细节可参考 doc/finetuning.md完整 API 见 doc/apis.md。二、GPU 环境一键安装步骤Needle 2 的训练是纯 JAXNVIDIA 机器只需安装 CUDA 构建后续命令完全不变pip install cactus-needle[gpu]这个[gpu]额外项实际安装的是jax[cuda12]定义在 pyproject.toml 中。如果已有 NVIDIA 显卡也可以直接运行仓库自带的安装脚本它会自动检测 GPU 并装 CUDA 版 JAXsetup。 Apple Silicon 用户用pip install cactus-needle[metal]走 Metal 后端实测 M5 Max 上每步 0.71 秒比 CPU 快约 4 倍。装好后用nvidia-smi确认显卡可被识别即可无需其他配置。三、准备微调数据一个 JSONL 文件数据格式为 JSONL每行一个样例query是用户输入tools是工具声明answers是期望的调用reasoning可选但强烈建议解释每个参数从哪里来。与话题无关的样例用answers: []表示让模型学会拒答{query: 把厨房灯调到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: 厨房 - room; 调到10 - brightness 10} 三条最影响效果的规则参数值必须能在 query 中找到依据没证据就省略可选字段每 8 个左右放一个拒答样例否则模型会对所有输入都调用工具样例长度要能装进--max-len默认 1024 token超出的部分会被静默截断。数据太少可以自动合成。设置OPENROUTER_API_KEY后用工具 Schema 播种生成或扩展现有数据集合成逻辑在 needle/model/finetune.pyneedle generate-data --tools my_tools.json --num-samples 500 --output data.jsonl四、GPU 上跑 LoRA 微调一条命令基座检查点不传--checkpoint时会自动从 Hugging Face 下载。LoRA 只训练每层 5 个注意力投影rank 16基座、tokenizer、置信度头全部冻结所以训练非常便宜needle finetune data.jsonl --epochs 10常用参数全部定义见 needle/cli.py参数默认值说明--epochs3小数据集建议 10~30--lora-rank16参数值不准确时升到 32--lora-alpha32缩放系数--lr1e-4学习率warmup 余弦衰减--batch-size16批大小--max-len1024序列长度上限--generate N0训练中顺手再合成 N 条数据--outcheckpoints/needle_lora.pkl适配器输出路径每个 epoch 结束会打印验证集 loss默认留出 10%--val-split可调。五、导出微调模型合并 LoRA 生成 .cact训练产出的是 LoRA 适配器用needle build把它合并进基座并量化得到一个仍然可以在同一引擎直接运行的.cact文件needle build checkpoints/needle2.pkl --lora checkpoints/needle_lora.pkl --out my_needle.cact加--bits 2可得到更小的模型设置NEEDLE_HF_REPO你/模型并加--upload还能发布之后任意机器用needle download 你/模型/my_needle.cact拉取。六、运行微调后的模型无需重新编译引擎与权重无关把.cact通过weights传入即可import needle agent needle.Needle(weightsmy_needle.cact, tools[...]) agent.run(把客厅灯调亮一点)也可以在浏览器里直接体验needle playground --weights my_needle.cact页面里的 Finetune on these tools 按钮会跑同一套微调流水线并回传可下载的.cact。七、如何看懂 loss 曲线新手必看起点在 1.0 附近是正常的loss 只覆盖推理行 JSON 调用其中大量样板 token 基座本来就会预测所以看趋势而不是绝对值。小数据集别用默认 3 个 epoch200 条样例 batch 16 只有 13 步/epoch3 个 epoch 共 39 步rank 16 的适配器几乎纹丝不动。几百条样例跑 10~30 个 epoch预期看到清晰下降。验证 loss 上升而训练 loss 还在降 过拟合到此为止或补充数据。曲线长时间停在起点值是欠训练先加 epoch再提学习率。调对工具靠几百条干净样例即可见效参数取值grounding则需要上千条、带 reasoning 的多样表达。八、微调不会改变什么 常见坑微调不改置信度头加载调优权重后confidence会报告None属正常现象也不改tokenizer非英文文本会被切成约 1.7 倍 token 数256 token 窗口会更紧张。高频坑位完整清单见 doc/finetuning.md 的 Troubleshooting调优后模型对什么都回 Sorry, I cant help → 旧引擎低置信度拦截所致升级包即可failed to load weights→.cact与引擎版本绑定用当前包版本重新 buildCPU 上 loss 开头变 NaN →pip install --upgrade cactus-needle已修复。总结四步完成 GPU 微调闭环步骤命令1. 装环境pip install cactus-needle[gpu]2. 备数据needle generate-data --tools my_tools.json --num-samples 500 --output data.jsonl3. 训 LoRAneedle finetune data.jsonl --epochs 104. 导出运行needle build checkpoints/needle2.pkl --lora checkpoints/needle_lora.pkl --out my_needle.cact从安装到拿到专属.cact全程没有一行需要手写的训练代码——这就是 Needle 2 把 LoRA 微调做到一条 pip 命令级别的完整体验。【免费下载链接】needle14MB foundation model for tiny devices; phones, wearables, smart home, and robots.项目地址: https://gitcode.com/GitHub_Trending/needle20/needle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
