Skip to content

Multi-turn rollout Update #1 #113

@zhaochenyang20

Description

@zhaochenyang20

Multi-turn rollout

TODO

  • 重构代码,具体的文档还有 dev branch@SwordFaith
    • 为 rl_dataset 提供可选的 sample_id 支持(和可选的 tools 列,通过 tool_kwargs 配置选取的工具和 create/execute/calc_reward/release 时的定制参数)
    • 重构 之前版本 AsyncRolloutdev branch
      • 将 generate_sequence 输入的 prompts 转换为 AsyncRolloutRequest 管理 (结合状态) @zyzshishui
      • messages <-> id with loss mask 转换逻辑 @zyzshishui
      • 基于 FSM 的 async rollout 1 request @SwordFaith
        • 初始时向 async engine 发起多个请求 @SwordFaith
        • 中间 check future 完成状态,实现对 rollout turn 输出解析(有 tool call 的执行 tool call,无 tool call 的需要考虑输出是否结束)
        • 中间结果提供 chat messages 格式表示,tool parser 可考虑复用现有 sgl 实现好的 parser,最终结果聚合为和原 generate sequences 一致的格式
          • 待讨论问题:tool parser 的 <tool_call> </tool_call> 可能会把文本中间的 tool_call apply chat template 后,统一放到当前轮的尾部?是否会和模型原始生成不一致?
        • 提供工具生命周期管理的各节点接口
          • TODO: 单次工具调用除了 tool response 外,目前还支持返回 reward_score 和 tool_metrics dict,后两者暂时没想到一个清晰的示例演示,导致没有完整的承接链路,和该如何使用
          • 支持返回 message 表示
          • 支持返回 tool 相关 score
      • 批量完成 request level rollout 并重整为 generate_sequence 兼容的表示 (开发结束待补全测试) @SwordFaith
        • async rollout with sharding manager 单测
        • async rollout e2e training 测试
      • merge pr 917 的 loss mask 在主训练流程的支持 @zyzshishui
    • 提供工具实现与 reward manager 结合的示例
      • 添加 GSM8kTool 实现与 session 周期结合的 create instance(存 instance_id 和 gsm8k 结果的地方), call 写入 gsm8k 计算结果, calc_reward impl, release instance
      • 结合 meta info 和配置的 tools 计算每条 rollout (对应 async rollout request) 的 reward
      • 实现一种在 ppo_trainer 下配置使用指定 tool cls 和 tools schema 的方式(配置 + 创建 + rollout build 时传参) @zyzshishui
      • 添加 reward manager 对 generate_sequences 返回的 reward_scores 和 tool_names 来源的支持,可以融合这部分分数到 reward 计算,并提供示例 (放到下一期和 step-level reward 一起做)
      • async rollout with tool e2e training 测试
    • 本期改为在 AsyncSGLangRollout 中根据 tool_config file 创建所需的工具并根据 request-level 配置初始化对应工具状态,后续 micro-batch 化版本会提供第一版带 tools 配置读取和初始化的 ray_agentic_trainer 和 main_agentic_ppo,
  • 和最新的 main 持续 rebase。 @zyzshishui
  • 学习笔记加进 dev-log,整理 dev-log,test-log 为英文,重构文档翻译成英文整合进 dev-log。 @zyzshishui
  • Pre-merge To-do

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions