argus-cluster/specs/mvp/v3.6/v3.6_summary.md

5.0 KiB
Raw Blame History

MVP v3.6 迭代研发总结(基于 v3.5

时间基线2026-01H20 dev 环境:argus@h1:/home2/argus/infra/mvp
v3.6 架构草图:specs/mvp/v3.6/Snipaste_2026-01-05_10-56-34.png

1. 迭代目标回顾

v3.6 在 v3.5WebUI + API server + Ray stateless node pool + SFTPGo + Advanced TaskSpec基础上新增两块能力

  1. Weights & BiasesW&Blocal server 集成
  • 训练任务PPO/GRPO/SFT默认可写入 W&B。
  • 采用“共享 W&B 账号 + 按用户拆分 project<user_id>_project)”的隔离策略。
  1. New Task 增加 Evaluation 示例
  • New Task 页面新增一个最小可用的 evaluation 模板(以 Advanced command 方式运行 verl.trainer.main_eval)。

2. 交付内容(代码/配置/脚本)

2.1 部署形态docker compose

v3.6 在 src/mvp/docker-compose.yaml 新增 W&B 服务:

  • 服务名:wandb(容器名:argus-wandb
  • 宿主机端口:8090:8080
  • 持久化:../../shared/common/wandb:/vol
  • 同 networkargus-ray-net(便于 Ray 容器内访问)

2.2 平台配置YAML

src/mvp/configs/dev.yaml 增加/启用 W&B 配置:

tracking:
  wandb:
    enabled: true
    base_url: "http://172.22.0.1:8090"
    api_key_env: "WANDB_API_KEY"
    project_suffix: "_project"

说明:

  • base_url 采用 docker bridge 网关 + 宿主机映射端口的方式,规避容器内 DNS 偶发解析失败问题。
  • 不在 config 中写明文 key统一通过启动 API server 时注入 WANDB_API_KEY

2.3 Ray Job runtime_env 注入(核心)

v3.6 在每个 Ray job attempt提交时注入两类环境变量:

  1. 始终注入(无论是否启用 W&B:便于 Advanced command 在不改模板的情况下能运行
  • MVP_TRAINER_LOGGERconsole[console,wandb]
  • MVP_WANDB_PROJECT<user_id>_project(例如 alice_project
  • MVP_WANDB_RUN<ray_submission_id>(每次 attempt 唯一)
  1. 当 W&B 有效启用时注入
  • WANDB_BASE_URL
  • WANDB_API_KEY
  • WANDB_MODE=online
  • WANDB_DIR=<job_dir>/wandb(例如 /private/users/alice/jobs/<ray_sid>/wandb

降级策略:

  • tracking.wandb.enabled=true 但缺少 WANDB_API_KEY 时,平台会降级为 console(并在 attempt.message 中记录 warning避免训练失败。

2.4 WebUI 变更

  1. Login 页面
  • 增加 “Open W&B” 跳转(指向 tracking.wandb.base_url
  1. New Task 页面
  • 新增 Evaluation example
  • Advanced example 更新为 v3.6
    • command: | 内不再包含任何注释(避免 YAML/命令解析报错)
    • W&B 参数不再让用户手填,改为引用平台注入的 ${MVP_*} env
      • trainer.logger=${MVP_TRAINER_LOGGER}
      • trainer.project_name=${MVP_WANDB_PROJECT}
      • trainer.experiment_name=${MVP_WANDB_RUN}

备注driver 日志里会打印 MVP_DRIVER_EXEC: bash -lc '...',此处看到 ${MVP_*} 仍是“未替换”的字符串是正常现象;变量替换发生在 bash 执行阶段,而不是打印 argv 阶段。

2.5 启动脚本

src/mvp/scripts/60_start_api.sh 支持将宿主机的 WANDB_API_KEY 透传进 head 容器内启动的 API server

  • 宿主机设置:export WANDB_API_KEY=...
  • 启动 API脚本会 docker exec -e WANDB_API_KEY=... 进入 head 容器启动 python3 /workspace/mvp/py/server.py

3. 用户侧操作流程v3.6

3.1 一次性初始化(只在首次启用/清空 /vol 时需要)

  1. 打开 W&B UIhttp://<h1机器IP>:8090
  2. 在 System Admin 页面粘贴 license 完成初始化
  3. 生成并记录 WANDB_API_KEYlocal key
  4. 以后启动 API server 时注入该 keyWANDB_API_KEY=...

只要保留 shared/common/wandb(即 /vol 持久化目录),重建容器无需再次进入 8090 配置。

3.2 日常使用

  1. WebUI 登录:http://<h1机器IP>:8080/ui/login(输入 user token
  2. New Task 提交任务:http://<h1机器IP>:8080/ui/tasks/new
  3. 到 Tasks 查看状态/日志:/ui/tasks 与 task detail
  4. 打开 W&Bhttp://<h1机器IP>:8090,在 <user_id>_project 下查看 runs/metrics

4. 验收结果(本迭代应达成)

  1. PPO/GRPO/SFT 任一任务运行后:
  • W&B local server 可见对应 projectalice_project
  • run name 与 ray_submission_id 对齐(便于追踪每次 attempt
  1. Evaluation 示例:
  • 可作为 Advanced 任务提交并在 Ray 上执行 verl.trainer.main_eval
  • 支持用户在 command 内自行加入 reward overrides平台不做封装

5. 已知限制与后续建议

  1. W&B 初始化自动化
  • 当前:首次仍需在 8090 页面粘贴 license、生成 key更稳、侵入最小
  • 若需要“从零部署也完全免页面操作”,可进一步调研 W&B local 的可用管理 API/启动参数(自动注入 license + 自动创建 key
  1. Advanced command 的自由度
  • 平台只负责:
    • $HOME 宏替换
    • runtime_env env_vars 注入
    • 任务队列与 Ray job 提交
  • command 的语义正确性仍由用户负责(例如 PPO 必需的 micro batch 等参数)。