跳转至

RLAIF (RL from AI Feedback)

RLAIF 用 AI/规则 judge 代替人类来标注偏好,再走既有对齐流程训练。本切片把 judge 标定的 (chosen, rejected) 响应对喂给现有的 DPO 任务,是 ROADMAP 阶段十一 「其他对齐技术」的一部分,与 GRPO / Rejection Sampling 互补。

组件

  • llm/training/rlhf/aifeedback.py
    • PreferenceJudge(ABC):给每条 response 打分(score_batch)。
    • TargetTokenJudge:规则/scalar judge——响应以目标 token 结尾则得分 1,否则 0 (CPU 可验证,作为真实 judge 模型的占位)。
    • prefer_batch(a, b, judge):把两条 batch 按分数排序成 (chosen, rejected)
  • llm/data/modules/aifeedback.pyAIFeedbackDataModule——合成响应对,用 judge 标注,产出 DPO 兼容 batch {chosen_input_ids, chosen_labels, chosen_attention_mask, rejected_* }, 可直接接入现有 --task dpo

用法

from llm.data.modules.aifeedback import AIFeedbackDataModule
from llm.training.tasks.dpo_task import DPOTask
from llm.training.core.engine import TrainingEngine

module = AIFeedbackDataModule(config)  # 默认 TargetTokenJudge
task = DPOTask(config, module)
engine = TrainingEngine(config=config, task=task, rank=0, world_size=1, data_module=module)
loss = engine._run_epoch(0)

测试

tests/training/test_aifeedback.py 覆盖:judge 打分、prefer_batch 选择/形状校验、 DataModule 的 DPO batch 结构,以及一个 CPU e2e——DPO 在 AI 标注的偏好对上训练后, 策略对 judge 选中响应的偏好比例从 ~0 升到 ~1。