MVP v1.1(GRPO + SFT on Ray)运行说明
本目录是一套独立可运行的 v1.1 交付:使用 1 个 Ray head(不跑训练)+ 2 个 Ray worker(各 4 GPU)在同一宿主机通过 docker exec 协调容器,并通过 head 上的 ray job submit 提交作业,同时强制 driver 落到 worker。
远程 dev 环境推荐目录布局:
/home2/argus/infra/mvp/
shared/(持久化:datasets/hf/jobs/...)verl/(代码仓库,用于 prepare / snapshot)v1.1/(本目录内容:compose + scripts)
快速开始(远程机 argus@h1)
在 /home2/argus/infra/mvp/v1.1/ 下执行:
./scripts/00_prereq_check.sh
./scripts/01_up.sh
./scripts/20_start_head.sh
./scripts/21_start_workers.sh
./scripts/30_prepare_data_and_model.sh
./scripts/12_install_py_deps.sh
./scripts/44_submit_sdk.sh /workspace/mvp/v1.1/py/configs/dev.yaml /workspace/mvp/v1.1/py/jobspecs/ppo.yaml
./scripts/44_submit_sdk.sh /workspace/mvp/v1.1/py/configs/dev.yaml /workspace/mvp/v1.1/py/jobspecs/grpo.yaml
./scripts/44_submit_sdk.sh /workspace/mvp/v1.1/py/configs/dev.yaml /workspace/mvp/v1.1/py/jobspecs/sft.yaml
./scripts/40_submit_ppo_epoch1.sh
./scripts/41_submit_grpo_epoch1.sh
./scripts/42_submit_sft_minimal.sh
./scripts/50_status.sh
说明:
scripts/40/41/42是历史的 “CLI 提交脚本”(仍可用),但 v1.1 的工程化目标是把提交机制迁移到scripts/44_submit_sdk.sh(Ray Python SDK + YAML 配置)。
停止并清理:
./scripts/02_down.sh
关键约束(必须满足)
- 必须通过 head 执行
ray job submit提交任务(满足“从 head 提交”要求)。 - head 不跑训练:head 以
--num-cpus=0 --num-gpus=0启动;worker 具备自定义资源worker_node;提交时--entrypoint-resources='{"worker_node": 1}'强制 driver 落 worker。 - 共享路径统一为
/private(容器内):compose 将宿主机../shared挂载到容器内/private,对齐生产环境。 - 多版本 verl:通过 Ray Job
runtime_env.env_vars.PYTHONPATH注入${SHARED_ROOT}/common/code/verl/...,job 粒度选择代码快照。
共享目录(容器内 /private)
/private/datasets/:数据(PPO 的 gsm8k RL parquet、SFT parquet)/private/hf/:HF 缓存(模型持久化,避免重复下载)/private/jobs/<submission_id>/:每个 Ray Job 的输出目录(logs/config/debug/checkpoints)/private/common/:共享区(模型/数据/代码快照)/private/user/:用户自定义代码(例如 reward_fn)