评测
Trainer 周期评测、reward suite 与外部 benchmark。
训练中的质量信号
recipe 上配置的 reward 组件是主要质量信号。每个 rollout 对生成的 media 打分,并记录逐样本和逐组件 reward
(启用 WandB 时可见)。unirl/reward/local/ 下的内置 scorer 包括 PickScore、HPS、OCR、GenEval2、
VideoPickScore,以及基于规则的匹配器。
配置见 Rewards 与生成的 Reward Package README。
周期评测
eval_interval>0 时启用 trainer 的周期评测路径,设为 0 时关闭。各实现并不等价:
| Trainer | 当前评测行为 |
|---|---|
| Diffusion | 从 eval_data_path 生成样本,用已配置 reward 打分并记录均值。支持 eval_num_prompts、eval_samples_per_prompt、eval_chunk_prompts、eval sampling override/eval_eta,以及共享或单独 eval 数据的 eval_rewards suite。启用 eval 时必须有 reward block。 |
| AR | 分 batch 生成并做 reward scoring,记录 avg@k 风格的 accuracy/reward。使用 eval_num_prompts、eval_batch_size、eval_samples_per_prompt 与 eval_temperature,不使用 diffusion 的 eval_rewards suite 机制。 |
| SFT | 做 validation forward 并记录加权 eval/loss;不生成 rollout,也不调用 reward model。使用 eval_batch_size 与 eval_num_samples,-1 表示完整 eval set。 |
| PE | 评测组合的 AR→diffusion rollout 与图像 reward。支持 eval_num_prompts、diffusion 的 eval_cfg_text_scale/eval_eta,以及可选 eval_rewards suite。 |
| Unified model | 评测统一 AR+diffusion 生成路径与图像 reward。支持 eval_num_prompts、eval_cfg_text_scale/eval_eta,以及可选 eval_rewards suite。 |
| Async AR / async diffusion | 复用对应 AR/diffusion evaluator,但会先停止补充任务、drain 在途 rollout,并在空 RolloutManager 的 hard boundary 完成同步;不会直接评测任意 stale 的在途状态。 |
对于 MultimodalRLDataSource,
data_source.args.run.eval_data_path 选择确定性、不 shuffle 的 eval 数据源;省略时回退到
data_path。recipe 通常从 EVAL_DATA_PATH 插值。SFT 则使用其 SFT data source 的
validation iterator。
上述 trainer 启用后会先做一次初始评测,再按配置 cadence 执行。agentic trainer 不属于 这份周期评测契约。精确字段以所选 recipe 和 trainer 构造函数为准。
离线 / 外部 Benchmark
[eval] extra 安装当前 OCR reward 所需的 PaddlePaddle、PaddleOCR、torchvision 与
Levenshtein 支持;它不是通用 benchmark harness。
legacy GenEval/OpenMMLab scorer 必须作为 Python 3.10 sidecar 运行,与核心 Python 3.12 / CUDA 13 engine 环境隔离。按 Geneval MMCV 设置 安装,不要把它的 MMCV 栈装进核心训练环境。
如果现在就要评测
- 打开 trainer 的周期 eval 字段,在 W&B 中查看
eval/*metric。 - Diffusion eval 需要额外 scorer 时添加
eval_rewardssuite。 - 或用
unirl-reward-service/下的独立 reward service 对生成的 media 离线打分。