From 52b7b88ec2640178e022e0e51e98ebc5fff423b3 Mon Sep 17 00:00:00 2001 From: wangyuzhan Date: Tue, 18 Nov 2025 21:21:13 +0800 Subject: [PATCH] update web --- ...Œ成 GRPO 与 SPO 训练类型的前端与后端支持.md | 66 ------------------- 1 file changed, 66 deletions(-) delete mode 100644 .trae/documents/完成 GRPO 与 SPO 训练类型的前端与后端支持.md diff --git a/.trae/documents/完成 GRPO 与 SPO 训练类型的前端与后端支持.md b/.trae/documents/完成 GRPO 与 SPO 训练类型的前端与后端支持.md deleted file mode 100644 index f62b0d7..0000000 --- a/.trae/documents/完成 GRPO 与 SPO 训练类型的前端与后端支持.md +++ /dev/null @@ -1,66 +0,0 @@ -## 目标 -- 在现有 DPO/PPO 基础上,新增 GRPO 与 SPO 训练类型的完整前后端流程。 -- 选定对应训练类型后,仅显示该类型的特有参数;隐藏不需要的参数。 -- 参数默认值严格对齐 `trainer/train_grpo.py` 与 `trainer/train_spo.py`。 -- 保持原有 `trainer_web` 逻辑与交互不受影响。 - -## 代码改动 -### 前端模板(index.html) -- 在训练类型选择框中新增:`RL - GRPO`(value=`grpo`)、`RL - SPO`(value=`spo`)。 -- 新增两块参数卡片: - - GRPO 参数卡(class=`parameter-card grpo`): - - `beta`(浮点输入,placeholder=0.02) - - `num_generations`(整数输入,placeholder=8) - - `reasoning`(下拉 0/1) - - `reward_model_path`(文本输入,placeholder=`../../internlm2-1_8b-reward`) - - SPO 参数卡(class=`parameter-card spo`): - - `beta`(浮点输入,placeholder=0.02) - - `reasoning`(下拉 0/1) - - `reward_model_path`(文本输入,placeholder=`../../internlm2-1_8b-reward`) -- 保持现有 DPO/PPO 参数卡结构不变。 - -### 前端交互(static/js/train/form.js) -- 在 `onTrainTypeChange` 中: - - 为 GRPO/SPO 添加显示/隐藏逻辑: - - `.grpo` 与 `.spo` 卡片只在对应训练类型显示。 - - `pretrain-sft` 区域显示范围扩展到 `grpo` 与 `spo`(需要 `save_weight` 字段)。 - - `from-weight` 区域在 `ppo/grpo/spo` 下隐藏(这三者均不使用 `from_weight`)。 - - 新增默认参数设定: - - GRPO 默认值(严格对齐 `trainer/train_grpo.py`): - - `save_dir=../out`, `save_weight=grpo`, `epochs=1`, `batch_size=2`, `learning_rate=8e-8` - - `data_path=../dataset/rlaif-mini.jsonl`, `log_interval=1`, `save_interval=10` - - `hidden_size=512`, `num_hidden_layers=8`, `max_seq_len=66`, `use_moe=0` - - 特有:`beta=0.02`, `num_generations=8`, `reasoning=1`, `reward_model_path=../../internlm2-1_8b-reward` - - SPO 默认值(严格对齐 `trainer/train_spo.py`): - - `save_dir=../out`, `save_weight=spo`, `epochs=1`, `batch_size=2`, `learning_rate=1e-7` - - `data_path=../dataset/rlaif-mini.jsonl`, `log_interval=1`, `save_interval=10` - - `hidden_size=512`, `num_hidden_layers=8`, `max_seq_len=66`, `use_moe=0` - - 特有:`beta=0.02`, `reasoning=1`, `reward_model_path=../../internlm2-1_8b-reward` -- 保持 GPU 选择与提交逻辑不变。 - -### 后端启动器(trainer_web/train_web_ui.py) -- 在 `start_training_process` 中新增 `train_type=='grpo'` 与 `train_type=='spo'` 分支: - - `grpo` 使用脚本 `../trainer/train_grpo.py`;显式拼接:`--beta`、`--num_generations`、`--reasoning`、`--reward_model_path`(若前端提供)。 - - `spo` 使用脚本 `../trainer/train_spo.py`;显式拼接:`--beta`、`--reasoning`、`--reward_model_path`(若前端提供)。 -- 在通用参数拼接的跳过列表中新增:`'num_generations','beta','reasoning','reward_model_path'`(防止重复添加),并与 DPO/PPO 现有跳过策略一致;同时对 `grpo/spo` 也跳过 `from_weight`。 -- 其余逻辑(多卡、日志、监控)保持不变。 - -### 进程显示名称 -- `static/js/processes/list.js` 的名称映射中补充:`ppo: 'PPO', grpo: 'GRPO', spo: 'SPO'`(`logfiles/list.js` 已有,无需改动)。 - -## 验证步骤 -- 前端:切换训练类型时仅显示对应参数卡;`from_weight` 在 `ppo/grpo/spo` 下隐藏;默认值填充正确。 -- 后端:提交后查看日志首行的命令拼接,确认包含对应特有参数: - - GRPO:`--beta 0.02 --num_generations 8 --reasoning 1 --reward_model_path ../../internlm2-1_8b-reward` - - SPO:`--beta 0.02 --reasoning 1 --reward_model_path ../../internlm2-1_8b-reward` -- 保证 DPO/PPO 流程未受影响:分别发起一次 DPO/PPO 以回归测试。 -- 多卡/单卡/CPU 选择与日志查看、进程管理均保持工作。 - -## 兼容性与风险控制 -- 所有改动均为增量更新,不修改既有字段与 API 形态。 -- 默认值与训练脚本对齐;占位符仅用于引导,实际以默认填充值为准。 -- 若未提供特有参数,后端不拼接该 flag,训练脚本使用自身默认值。 - -## 交付 -- 更新上述 4 处文件:`templates/index.html`、`static/js/train/form.js`、`trainer_web/train_web_ui.py`、`static/js/processes/list.js`。 -- 提供端到端验证记录与示例日志片段,确保功能闭环。 \ No newline at end of file