# MVP v2.5 开发/部署/验收标准 本文件定义 v2.5 的“可验证闭环”,确保每个里程碑可验收。 --- ## 1. 开发交付物(Deliverables) ### 1.1 代码交付(建议) - API Server 增强:user management + task 关联 user_id + 鉴权隔离 - SQLite schema 迁移:新增 users/tokens,tasks 增加 user_id - Ray Head service discovery:head.json 写入与心跳刷新 - Worker bootstrap + watchdog: - dev:以脚本方式提供(docker compose 场景) - prod:以容器 command/entrypoint 方式可注入 ### 1.2 文档交付 - 目录结构与 GPFS 路径约定 - API 文档(含用户与多租户隔离) - 运维 SOP:head 重启、worker 自愈、如何排障 head.json --- ## 2. 部署流程(Dev 环境可验证) ### 2.1 启动顺序(推荐) 1) 启动 head(包含 API server + Ray head) 2) head 写入 `/private/ray/discovery//head.json` 3) 启动若干 worker(无须指定 head 地址) 4) worker 自动读取 head.json 并加入集群 5) 通过 API 创建用户并获取 token 6) 使用 user token 提交 PPO/GRPO/SFT --- ## 3. 验收标准(Acceptance Criteria) ### 3.1 Stateless Ray Node Pool - A1:在 worker 启动时不传 head 地址,worker 能在 `T<=60s` 内加入集群(ray status 可见) - A2:head 容器重启(IP 变化或 Ray 重启)后: - head.json 更新 - worker watchdog 在 `T<=60s` 内自动重连 - A3:head 设置 `--num-gpus=0 --num-cpus=0`,训练 driver 不会跑到 head(可通过 Ray dashboard/日志验证) ### 3.2 User Management - U1:admin 可创建用户并签发 token(token 仅返回一次) - U2:用户 A 提交的 task,用户 B 无法查询/取消/获取日志(API 返回 404 或 403,按设计约定) - U3:仅隔离 jobs 输出:任务输出落在 `/private/users//jobs//...`,不同用户互不覆盖 - U4:训练输入(verl 代码、HF cache、datasets)统一使用 `/private/common/...`(v2.5 不做输入隔离) ### 3.3 Task Flow(继承 v2.0) - T1:PPO/GRPO/SFT 三种 workload 都能成功提交并跑通(dev 规模可用 epoch=1/steps=10) - T2:资源不足时任务不会“直接失败不可恢复”,而是进入 `PENDING_RESOURCES` 并按间隔重试(与 v2.0 同逻辑) --- ## 4. 回归用例(最小集合) 1) 创建用户 alice/bob,分别提交 sft,验证隔离与输出目录 2) 启动 head + 2 workers,提交 ppo/grpo,验证 driver 落 worker 3) 重启 head(或修改 head.json 指向新 IP),验证 worker watchdog 自动重连