返回列表

The 2nd Place Solution

644. WSDM Cup - Multilingual Chatbot Arena | wsdm-cup-multilingual-chatbot-arena

开始: 2024-11-18 结束: 2025-03-10 自然语言处理 数据算法赛
第二名解决方案 - WSDM Cup
作者: zhudong1949 | 发布时间: 2025-03-13 | 竞赛排名: 第 2 名

第二名解决方案

感谢 Chatbot Arena 和 Kaggle 举办如此精彩的比赛。祝贺所有获奖者。🎉🎉🎉

代码框架

基于上一场比赛中 @tascj0 分享的工作,该工作提供了高效的 训练推理 方案,能够在有限的 GPU 资源下实现快速的全参数微调和推理。感谢 @tascj0 团队的出色工作。

数据处理

promptresponse_aresponse_b 根据长度比例在中间进行比例截断。详见推理代码中的 MIDV2ProcessorPAB 类。

基础模型

模型使用 gemma2-9bArmoRM-Llama3-8B-v0.1,初始化使用 @tascj0 训练过的模型,而不是从头训练。分类头的最后一层被丢弃并改为 2(原来是 3)。

命名为 lmsys-gemma-pretrainlmsys-llama-pretrain

最终提交方案 1

步骤 1:微调基础模型

使用 WSDM 竞赛数据(80% 训练数据 + 20% 验证集)微调 lmsys-gemma-pretrainlmsys-llama-pretraingemma2-27b

步骤 2:伪标签数据创建

感谢 @nbroad 分享的三个版本数据集。我们使用了 v1 (8.5k) 和 v2 (13k)。v3 被排除,因为模型之间的能力差距很小,可能会在伪标签过程中引入噪声。

平均三个模型的预测结果(软标签)以创建伪标签数据集 hf-21k

步骤 3:使用伪标签微调

使用 hf-21k + WSDM (80%) 微调 lmsys-gemma-pretrainlmsys-llama-pretrain,得到 gemma-pseudollama-pseudo

步骤 4:在线推理

使用测试时增强 (TTA):

  • gemma-pseudo 预测 PAB
  • llama-pseudo 预测 PBA (交换)

结果权重比为 3.3:1。获得公有榜分数 0.709,私有分数 0.708。

最终提交方案 2

步骤 1:扩展伪标签

数据来源

vllm-74k 数据集。来自 lmsys-chat-1m 的提示词,经过去重并移除 Nicholas Broad 的 hf-v1/v2 中使用的提示词。按语言拆分:

  • en_424k (英语)
  • other_103k (非英语)

采样数据集:

  • vllm-v1 (10k): 7k 来自 other_103k, 3k 来自 en_424k
  • vllm-v2 (27k): 21k 来自 other_103k, 6k 来自 en_424k
  • vllm-v3 (38k): 36k 来自 other_424k, 2k 来自 en_424k

从 v1 到 v3 增加非英语数据比例以提高多语言性能。

响应 Pair 生成

使用 vLLM 推理与以下模型:

'Qwen/Qwen2.5-72B-Instruct', 'Llama-3.3-70B-Instruct', 'gemma-2-27b-it', 'phi-4', 'DeepSeek-R1-Distill-Qwen-32B', 'Mistral-7B-Instruct-v0.3', 'internlm2_5-20b-chat', 'llama-3.2-3b-instruct', 'Hermes-3-Llama-3.1-8B', 'internlm3-8b-instruct', 'gemma-2-9b-it', 'DeepSeek-R1-Distill-Qwen-14B', 'Llama-3.2-1B-Instruct'

(DeepSeek-R1 模型移除了 "think" 部分。vllm-v1 包含了一些在线模型,如 DeepSeek-V3 和 yi-lightning。)

伪标签生成

使用 gemma-pseudo (PAB) 和 llama-pseudo (PBA) 权重 3.3:1。移除 abs(winner_model_a - winner_model_b) <= 0.03 的数据。

步骤 2:扩展预训练

合并伪标签:95k (hf-21k + vllm-74k)。重新训练 lmsys-gemma-pretrainlmsys-llama-pretrain 以避免伪标签噪声,得到 gemma-pseudo-v2llama-pseudo-v2

步骤 3:最终训练

使用完整 WSDM 训练数据 (100%) 微调 gemma-pseudo-v2llama-pseudo-v2

拆分 WSDM 数据:

  • 英语子集 (90% 英语数据)
  • 多语言子集 (10% 英语 + 其他语言)

训练 2 个 epoch:
第 1 个 epoch 在英语子集上,第 2 个 epoch 在多语言子集上。
得到 gemma-finalllama-final

步骤 4:推理

与之前相同的 TTA:

  • gemma-final 预测所有数据 (PAB)
  • llama-final 仅预测 abs(winner_model_a - winner_model_b) < 0.8 的数据 (PBA)

权重 2.5:1。获得相同的公有榜分数 0.709,但私有分数提高到 0.716。

其他尝试(无效)

  • Qwen2.5-72B 蒸馏:受限于时间/GPU,仅进行一次微调循环(缺乏预训练)
  • 使用 Skywork-Reward-Gemma-2-27B-v0.2 进行伪标签
  • lmsys-llama-pretrain 替换为 Skywork-Reward-Llama-3.1-8B-v0.2
  • 使用 Skywork-Reward-Preference-80K-v0.2 数据集
  • BT loss, 多 loss weighting
同比赛其他方案