食谱:CollabLLM
最后更新:2025年9月22日。
开源算法实现与实验运行:Haiquan Chen, Shirley Wu
🏠 主页 | 📝 论文 | 🤗 数据集与模型 | ⭐️ 原始实现
verl 为 ICML 2025 优秀论文 “CollabLLM: From Passive Responders to Active Collaborators” 提供了一个实现方法。 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 存储库中的 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。多轮感知奖励 (Multiturn-aware Reward) 从以下三个对话级别奖励中聚合:
+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 |
计算多轮感知奖励 |
将自定义的对话奖励函数应用于采样到的对话。奖励会进行聚合,然后跨模拟次数取平均值。 |
4 |
更新模型 |
使用计算出的多轮感知奖励来更新模型权重。 |
配置
主要配置通过启动脚本 train_rl_collabllm.sh 和 YAML 文件 recipe/collabllm/config/collabllm_interaction_config.yaml 进行管理。关键配置部分:
部分 |
关键参数 / 说明 |
|---|---|
|
训练/验证文件路径、批处理大小、序列长度。 |
|
基础模型路径(用于 actor + 初始参考)、FSDP 设置、优化器(学习率、调度器)。 |
|
|
|
在 |
|
默认管理器设置为 |
|
GRPO 特有的超参数,例如 |
|
分布式训练(节点、每节点 GPU)、日志记录(WandB)、检查点频率。 |
关键文件
文件路径 |
目的 |
|---|---|
|
主要逻辑,用于采样未来对话,使用 |
|
计算未来对话的奖励,利用 |
致谢
我们衷心感谢 verl 社区和顾问的贡献和指导!