公司动态
SkillOpt 训练循环6大核心阶段图解:Rollout、Reflect、Aggregate、Select、Update、Gate
SkillOpt 训练循环6大核心阶段图解Rollout、Reflect、Aggregate、Select、Update、Gate【免费下载链接】SkillOptSkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.项目地址: https://gitcode.com/gh_mirrors/sk/SkillOptSkillOpt 是一个文本空间优化器text-space optimizer它像训练神经网络一样训练可复用的自然语言技能文档skill document通过轨迹驱动的编辑、验证门控的更新为冻结的 LLM Agent 产出可直接部署的best_skill.md工件。本文用一张总图 六个阶段逐一拆解帮你 10 分钟读懂 SkillOpt 训练循环training loop的完整流水线。先看全景一张图理解 SkillOpt 优化流水线SkillOpt 的核心理念是把技能文档当作可训练参数优化它的过程和训练神经网络结构上完全同构——有 epoch、有 mini-batch、有学习率、有验证集门控但全程不碰模型权重。对应到代码整条流水线由训练器 skillopt/engine/trainer.py 编排官方文档 docs/guide/training-loop.md 给出了最直观的循环伪代码for epoch in epochs: for step in steps: 1. Rollout — Target 执行任务 2. Reflect — Optimizer 分析轨迹 3. Aggregate — 分层合并补丁 4. Select — 排名并裁剪编辑学习率 5. Update — 将补丁应用到技能文档 6. Gate — 验证并接受/拒绝下面逐个阶段拆解。阶段 1Rollout前向传播—— 让目标模型跑任务Rollout 相当于神经网络的前向传播。冻结的目标模型target拿着当前版本 S_t 的技能文档作为提示词执行一批训练任务每个任务产出一条轨迹trajectory和一个得分。入口代码skillopt/engine/trainer.py 中的[1/6 ROLLOUT]阶段调用adapter.rollout(...)后用compute_score算出 hard / soft 两个分数各基准环境的 rollout 实现分散在 skillopt/envs/ 下例如最简单的参考实现 skillopt/envs/searchqa/rollout.py关键配置batch_size: 40每步采样多少任务见 configs/base/default.yaml 类比predictions model(input, skill_document)→scores evaluate(predictions, ground_truth)阶段 2Reflect反向传播—— 从失败轨迹里算梯度Reflect 相当于反向传播求梯度。优化器模型optimizer分析 rollout 产出的轨迹 mini-batch输出结构化的编辑补丁edit patches——即对技能文档的增ADD/删DEL/替换REP建议。失败的 mini-batch 必然被分析成功的轨迹默认也会分析除非开启gradient.failure_only。核心实现skillopt/gradient/reflect.py 中的run_minibatch_reflect各环境的提示词模板如 skillopt/envs/searchqa/prompts/ 下的analyst_error.md与analyst_success.md关键配置minibatch_size: 8、analyst_workers: 16分析器可并行见 configs/base/default.yaml 类比gradients loss.backward()→ 得到的不是张量而是文本编辑补丁阶段 3Aggregate梯度聚合—— 合并语义相似的编辑同一个 rollout 批次会产生多份补丁直接全量套用会冗余冲突。Aggregate 阶段做分层合并把语义相似的编辑归并去重、解决冲突压缩成一份批级合并补丁batch-level merged patch相当于 DL 里多卡梯度的 AllReduce。核心实现skillopt/gradient/aggregate.py 中的merge_patches与_hierarchical_merge训练器调用点skillopt/engine/trainer.py关键配置merge_batch_size: 8阶段 4Select梯度裁剪—— 学习率决定一次改几条Select 是 SkillOpt 里最有深度学习味的一步编辑排名 截断等价于梯度裁剪。所有合并后的编辑按相关度打分排序learning_rate参数限制每步最多应用多少条编辑——防止一次性大改导致技能文档语义跳变loss surface 上的大步长。排名与截断skillopt/optimizer/clip.py 的rank_and_select学习率调度器skillopt/optimizer/scheduler.py支持cosine先激进后平滑衰减、linear、constant三种模式默认配置learning_rate: 4每步最多改 4 条、lr_scheduler: cosine见 configs/base/default.yaml 类比selected top_k(edits, klearning_rate)——经验上 4~16 是温和学习率区间阶段 5Update参数更新—— 把选中的补丁写进技能文档Update 就是 SGD 参数更新步。选中的编辑被逐条应用到当前技能文档产出候选技能版本 S_{t1}。应用过程带保护机制慢更新字段、附录等受保护区域不会被普通编辑误伤。核心实现skillopt/optimizer/skill.py 的apply_patch_with_report训练器调用点skillopt/engine/trainer.py阶段 6Gate验证门控—— 分数不涨就不接受Gate 是整个循环的安全阀对应 DL 的验证集。候选技能会在一个独立的 selection split验证集上重新 rollout 评测只有当门控分数严格高于当前技能分数时更新才被接受否则候选被拒拒掉的编辑还会写入被拒编辑缓冲区作为后续 Reflect 阶段的负面上下文避免重复犯错。核心实现skillopt/evaluation/gate.py 的evaluate_gate训练器调用点skillopt/engine/trainer.py开关配置evaluation.use_gate: true关闭时验证分仍会记录但候选强制接受最终训练结束时全程最优的候选被固化为best_skill.md通常仅 300~2000 tokens部署时零额外推理开销。阶段之外Epoch 边界的两个记忆机制训练跑完一个 epoch 后还有两个跨 epoch 的机制防止学了新的忘了旧的机制作用类比Slow Update用同一批样本分别跑上一轮技能与当前技能对比出改善/回退/持续失败/稳定成功四类生成高层指导写入技能文档动量MomentumMeta Skill累积跨 epoch 的策略记忆哪些编辑有用、哪些失败供后续 Reflect 参考元学习Slow Update 实现skillopt/optimizer/slow_update.pyMeta Skill 实现skillopt/optimizer/meta_skill.py训练效果验证门控让曲线稳步爬升下图展示了三个基准上训练 rollout 分 / 验证集最佳分 / 未见测试分随 epoch 的变化得益于每步门控Selection best橙色虚线始终稳步上行说明 SkillOpt 训练过程稳定、可控。上手路径从配置到跑通第一个训练想动手跑通完整循环只需三步看配置所有超参数集中在 configs/base/default.yaml如num_epochs: 4、learning_rate: 4、batch_size: 40看文档完整映射表见 docs/guide/dl-analogy.mdDL ↔ SkillOpt 概念对照快速上手见 docs/guide/first-experiment.md看代码按阶段顺序读 skillopt/engine/trainer.py 的train主循环每个阶段的打印日志都标注了[1/6 ROLLOUT]~[6/6 GATE]对照本文即可逐段理解一句话总结Rollout 是前向传播Reflect 求文本梯度Aggregate 聚合梯度Select 裁剪梯度Update 更新参数Gate 做验证——SkillOpt 用这套纪律把一篇 Markdown 技能文档训练成了冻结 Agent 的稳定外挂。【免费下载链接】SkillOptSkillOpt is a text-space optimizer that trains reusable natural-language skills for frozen LLM agents through trajectory-driven edits, validation-gated updates, and deployable best_skill.md artifacts.项目地址: https://gitcode.com/gh_mirrors/sk/SkillOpt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考