教程:CollabLLM
最后更新:09/22/2025。
开源算法实现和实验运行:Haiquan Chen,Shirley Wu
🏠 Homepage | 📝 Paper | 🤗 Datasets & Models | ⭐️ Original Implementation
verl 提供了一个针对 ICML 2025 优质论文(Outstanding Paper)的教程(或实施指南),论文标题为 “CollabLLM: 从被动回应者到主动合作者”。CollabLLM 是一个统一的微调框架,用于优化大型语言模型(LLM),使其能有效且高效地与用户进行多轮对话协作。
核心理念: 模型根据其响应如何促进与用户进行有效 未来 协作而获得奖励(奖励机制基于响应在后续多轮对话中的表现)。
论文作者:Shirley Wu,Michel Galley,Baolin Peng,Hao Cheng,Gavin Li,Yao Dou,Weixin Cai,James Zou,Jure Leskovec,Jianfeng Gao
快速开始
0. 环境配置
确保 verl 所需的所有包已安装。此外,请安装 litellm 并导出所需的 API 密钥。这些 API 模型将用于用户模拟器,并可选择用于 LLM 判断器(详见下文的配置部分)。
1. 准备你的数据集
首先,使用提供的脚本处理你的数据集(示例命令和用法请参见 process_dataset.py):
python process_dataset.py --dataset <> ... --dataset_type <sft or rl>
要求:
输入:一个 Hugging Face 多轮对话数据集。现有数据集:
collabllm/collabllm-multiturn-$DATASET,其中$DATASET可选值包括 [math-hard(-large),medium(-large),bigcodebench(-large)](*-large 为 CollabLLM 论文中使用的扩展数据集)。示例格式:请参考 collabllm-multiturn-math-hard。
要生成自己的数据集:使用原始 CollabLLM 仓库中的 build_dataset.py。
2. 训练你的模型
(可选)监督式微调(SFT):
bash train_sft_collabllm.sh
强化学习(RL):
bash train_rl_collabllm.sh
RL 脚本展示了在 math-hard-large 上训练 CollabLLM 的示例。
用于采样未来对话的配置位于
recipe/collabllm/config/collabllm_interaction_config.yaml中。多轮对话感知奖励是从以下三个对话级奖励聚合而得:
+reward_model.reward_kwargs.metric_weights.accuracy=1 \ +reward_model.reward_kwargs.metric_weights.interactivity=1 \ +reward_model.reward_kwargs.metric_weights.token_amount=-0.0001 \
你可以根据任务移除、添加或修改权重。已实现的指标列表请看
recipe/collabllm/metrics。例如,在medium-large上,你可以通过以下方式将accuracy替换为bleu_score:+reward_model.reward_kwargs.metric_weights.bleu_score=1
这将在采样得到的未来对话上应用 BLEU 分数代替准确率。
算法
步骤 |
名称 |
描述 |
|---|---|---|
1 |
模型响应生成 |
模型为批次中的每个提示生成多个响应。 |
2 |
协作模拟 |
用户模拟器(例如 GPT 或 Claude)为每个响应采样 |
3 |
计算多轮对话感知奖励 |
对采样得到的对话应用定制化的对话奖励函数。奖励会聚合,然后在多个 rollout 中取平均。 |
4 |
更新模型 |
使用计算得到的多轮对话感知奖励来更新模型权重。 |
配置
主要配置通过启动脚本 train_rl_collabllm.sh 和 YAML 文件 recipe/collabllm/config/collabllm_interaction_config.yaml 管理。关键配置部分:
部分 |
关键参数 / 注意事项 |
|---|---|
|
训练/验证文件路径、批次大小、序列长度。 |
|
基础模型路径(用于演员 + 初始参考)、FSDP 设置、优化(学习率、调度器)。 |
|
|
|
在 |
|
管理器默认为 |
|
GRPO 特定超参数,例如 |
|
分布式训练(节点数、每节点 GPU 数)、日志记录(WandB)、检查点频率。 |
关键文件
文件路径 |
用途 |
|---|---|
|
采样未来对话的主要逻辑,使用 |
|
计算未来对话的奖励,利用 |
致谢
我们衷心感谢 verl 社区和顾问们的贡献与指导!