UniRL 文档
指南

评测

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_rewards suite。
  • 或用 unirl-reward-service/ 下的独立 reward service 对生成的 media 离线打分。

目录