MASCOT奖励模型训练实战:Rubric打分构造偏好对,LoRA微调标量奖励模型
【免费下载链接】MASCOT
EMNLP 2026 Main Conference Paper: MASCOT: Towards Multi-Agent Socio-Collaborative Companion Systems (https://arxiv.org/abs/2601.14230)
MASCOT(EMNLP 2026 论文)是一个面向情感支持与会议场景的多智能体社交陪伴系统。本文聚焦它的核心一环:奖励模型(Reward Model)训练实战——先用 Rubric 评分为候选回答打分并构造偏好对,再用 LoRA 微调一个输出标量分数的奖励模型,为后续的 GRPO 强化学习提供"评委"。
为什么 Speaker 训练需要一个奖励模型
MASCOT 采用两阶段训练:阶段 1 让每个 Speaker 智能体保持独特人设(Persona),阶段 2 让 Director 智能体协调整组对话。阶段 1 中,Speaker 用GRPO做强化学习,而 GRPO 必须有一个能给出连续分数信号的奖励模型来评估每次回答的好坏。
Figure 1. MASCOT 整体架构:候选回答经 Rubric 打分形成偏好对(Preference Pairs),训练 Persona 奖励模型,再用于对齐 Speaker 策略
整个数据流可以概括为四步:
- 生成候选回答:让 LLM 按指定人设对同一情境生成多条候选回答;
- Rubric 打分:LLM 评审(judge)按 5 个维度逐条打分;
- 构造偏好对:按分差筛选出 chosen / rejected 配对;
- LoRA 训练奖励模型:用 TRL 的
RewardTrainer微调出标量打分器。
第一步:用 vLLM 起好推理服务
数据生成阶段所有 LLM 调用都走 OpenAI 兼容的 vLLM 服务,先启动服务:
pip install -e ".[train]" # 奖励模型 / GRPO 训练依赖 pip install -e ".[serve]" # 本地 vLLM 服务依赖 CUDA_VISIBLE_DEVICES=0,1 python scripts/serve_vllm.py \ --model Qwen/Qwen3-8B --gpus 2 --port 8008启动器 serve_vllm.py 会自动推断张量并行数,共享 GPU 时可加--gpu-memory-utilization 0.5控制显存占用。
第二步:Rubric 打分构造偏好对
生成候选回答并打分
python -m src.dataset.generate_and_annotate \ --mode individual --dataset ESConv \ --model-name Qwen/Qwen3-8B \ --num-agents-per-query 1 --score-margin 0.5 \ --vllm-server-url http://localhost:8008/v1 \ --output-dir data/rl完整参数说明见 generate_preference_data.sh 与 generate_and_annotate.py。--mode individual会为每条 query 生成多条候选回答(--num-agents-per-query,默认 5),然后交给 Rubric 评审打分。
评审的 5 个维度
打分器实现于 rubric_evaluator.py,IndividualRubricEvaluator从 5 个维度各打 1-5 分,total_reward取平均值:
| 维度 | 含义 |
|---|---|
persona_consistency | 人设一致性:是否体现角色独特的语气与词汇 |
perceived_empathy | 共情质量:是否准确解读用户情绪 |
emotional_expressiveness | 情绪表达:语气强度是否与情境匹配 |
relevance_coherence | 相关性:是否紧扣上下文、逻辑连贯 |
social_contribution | 社交贡献:是否提供新视角而非套话 |
值得注意的是评分哲学:judge 被明确要求**"严苛"**——3 分是"合格但平庸"的默认分,4-5 分属于稀有高分。这种校准能拉开候选回答之间的分差,让后续构造的偏好对更有区分度。
偏好对是怎么筛出来的
按分数对候选排序后采用全配对策略:任意一对候选,只有当分数差>= --score-margin(默认 0.5)时才组成一个偏好对(chosen = 高分回答,rejected = 低分回答)。相关逻辑见 data_utils.py 中的load_meeting_prompts_dataset:
- 每条记录包含
chosen/rejected两组消息及score_chosen/score_rejected两个分数列; - 分数保持 Rubric 原始的 [1, 5] 区间,不做缩放。
候选越多、分差越大,产出的偏好对越多——这也是--num-agents-per-query和--score-margin值得重点调参的原因。
第三步:LoRA 微调标量奖励模型
模型结构:序列分类头 + LoRA
奖励模型本质是一个带标量输出的分类器:train_reward_model.py 通过 model_utils.py 的create_lora_model加载基座模型(默认Qwen/Qwen3-0.6B),任务类型为SEQ_CLS、num_labels=1,即对"人设 + 评分标准 + 回答"的整段 prompt 输出一个实数奖励分。
关键细节:
- LoRA 配置:
--lora-r 16、--lora-alpha 32、--lora-dropout 0.1,只训练注意力投影层(q_proj/v_proj/k_proj/o_proj),可训练参数占比不到 0.2%; - 训练框架:TRL 的
RewardTrainer,bf16 混合精度 + 梯度检查点; - 数据对齐:训练前会把回答包裹进统一的"人设 + 角色 + 标准"评估 prompt(prompt_reward_model.py 的
get_prompt_persona_reward_model),保证训练分布与 GRPO 推理时的打分分布一致; - 数据集划分:默认 90% 训练 / 10% 评估,每 100 步评估并保存一次(
save_total_limit=3)。
一条命令开始训练
python -m src.train.train_reward_model \ --dataset QMSum \ --model-name Qwen/Qwen3-0.6B或用现成脚本 train_reward_model.sh,支持用环境变量覆盖:
DATASET=ESConv MODEL=Qwen/Qwen3-0.6B bash scripts/train_reward_model.sh训练完成后,LoRA 适配器保存在outputs/reward_model/Individual_{数据集}_{模型名}目录(例如outputs/reward_model/Individual_QMSum_Qwen3-0.6B),只写适配器、不写全量权重,单个适配器仅约 10MB。
关键超参数调优清单
| 参数 | 默认值 | 作用与调优建议 |
|---|---|---|
--score-margin | 0.5 | 偏好对最小分差;调低可扩量但引入噪声,调高则更干净但数据变少 |
--num-agents-per-query | 5 | 每条 query 的候选数;候选越多,全配对产出的偏好对越多 |
--batch-size | 4 | 单卡批大小,显存不足时调小并加大梯度累积 |
--gradient-accumulation-steps | 4 | 等效批大小 = 4 × 4 = 16 |
--learning-rate | 1e-5 | 奖励模型训练的常规量级 |
--num-epochs | 1 | 数据量大时可保持 1 轮 |
--lora-r/--lora-alpha | 16 / 32 | alpha 取 rank 的 2 倍是常见搭配 |
--max-length | 4096 | 超长对话会被截断,按数据长度调整 |
Figure 2. MASCOT 消融实验:完整模型(MASCOT)在 Persona 与 Collective 两组维度上均优于仅去掉单一优化目标的变体
如果验证集奖励准确率不理想,可以依次尝试:增大偏好对数量(调低--score-margin或增加候选数)、换更大的基座模型、把--num-epochs提到 2-3。
训练完成后:接入 Speaker GRPO
标量奖励模型就是阶段 1 强化学习的打分器,直接指向刚训出的适配器目录即可:
python -m src.train.train_rl --algorithm grpo --dataset QMSum \ --reward-model-path outputs/reward_model/Individual_QMSum_Qwen3-0.6BFigure 3. MASCOT 目标:多个视角互补的智能体代替"回声室"式单智能体,给用户更平衡、更有洞察的陪伴
需要区分的是:本文训练的个人奖励模型只评估单个 Speaker 的回答;阶段 2 整段多轮对话的群体级奖励模型由 train_group.py 的--mode train-reward-model训练,数据来自generate_and_annotate --mode group的分支式 episode。两者共用同一套"Rubric 打分 → 偏好对 → 奖励模型"的范式,只是粒度从单条回答扩展到了整段协作对话。
小结
- 偏好数据质量是成败关键:Rubric 的严苛评分校准 +
--score-margin分差过滤,决定了奖励模型学到的是"深度与个性"而非表面差异; - 成本极低:LoRA r=16 只训练不到 0.2% 的参数,产出约 10MB 的适配器,小显存也能复现;
- 闭环设计:训练时的评估 prompt 与 GRPO 推理时的打分 prompt 严格一致,避免奖励 hacking。
按"起 vLLM → 生成打分 → 构造偏好对 → LoRA 训练 → 接入 GRPO"五步走通,你就得到了 MASCOT 阶段 1 的核心组件——一个懂人设、懂共情的标量奖励模型。
【免费下载链接】MASCOT
EMNLP 2026 Main Conference Paper: MASCOT: Towards Multi-Agent Socio-Collaborative Companion Systems (https://arxiv.org/abs/2601.14230)
相关推荐
5分钟掌握F3:开源工具帮你识别真假存储设备,告别数据丢失风险!🚀
5分钟掌握F3:开源工具帮你识别真假存储设备,告别数据丢失风险!🚀 你是否曾经遇到过这样的场景:花了几百元购买的"256GB"U盘,用了几个月后发现重要的工作
CLI存储性能测试NeMo-RL奖励模型训练:HelpSteer3数据集偏好学习实践
NeMo RL奖励模型训练:HelpSteer3数据集偏好学习实践 你是否在寻找高效训练奖励模型(Reward Model, RM)的解决方案?NeMo RL作
3行代码搞定AI偏好训练:TRL奖励模型实战指南
3行代码搞定AI偏好训练:TRL奖励模型实战指南 你还在为AI生成内容不符合预期而烦恼?想让模型精准理解你的偏好却苦于复杂配置?本文将带你用TRL(Transf
人工智能大模型强化学习RLHF微调LoRA分布式训练
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考