返回列表

1st Place Solution

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

开始: 2024-11-18 结束: 2025-03-10 自然语言处理 数据算法赛
第一名解决方案

第一名解决方案

作者: Max (orangeaugust)

合作者: Michael Pieler (micpie)

发布日期: 2025-03-24

竞赛排名: 1

首先,感谢组织团队、我的队友 Michael 以及其他参赛者让这次挑战充满乐趣,下次见 ˙ᵕ˙

概述

我们的解决方案融合了 @sayoulala 的蒸馏方法和 @tascj0 的推理方法(参考上次竞赛的 第一名第二名 解决方案),并使用 Qwen2.5-14B-Instruct 作为基座模型。

设置

我们使用默认的 ForSequenceClassification 模型,包含两个输出类用于二分类。对于输入,我们将提示词(prompt)和两个回复拼接在一起,如果格式化后的样本超过最大长度,则按比例从中间截断。对于训练,我们在单个梯度步中包含两种回复顺序。

第一阶段:预训练

我们在以下数据集上预训练 Qwen2.5-14B-Instruct(学生模型)和 Qwen2.5-72B-Instruct(教师模型):

对于两个模型,我们都使用 DeepSpeed ZeRO3 进行全参数微调。所有实验的学习率调度都有 50 个预热步,随后线性衰减到峰值学习率 (4e-6) 的 10%。我们将两者的梯度裁剪阈值增加到 64.0(正如上次竞赛的 第二名第三名 解决方案中所 noted 的那样)。

第二阶段:教师模型训练

我们从预训练的 Qwen2.5-72b-Instruct 开始,在以下数据集的 5 个折(folds)上进一步训练 5 个教师模型:

在过滤掉平局、多轮回复并去重提示词和回复后,组合数据集共有 80k 个样本。此外,对于教师模型的训练,我们通过在每个回复前添加模型名称来更改输入格式。

第三阶段:蒸馏

使用五个教师模型,我们对上述数据集进行折外软标签(soft label),并人工审查与人类标注分歧最大的样本,以纠正错误标注的配对。此外,我们对以下数据进行了软标签:

最后一个数据集是通过标记复杂度分数(如 Arena-hard 中所做的那样)过滤简单提示词,并选取复杂度分数 ≥ 3 的提示词,同时保持语言分布(50% 非英语)以及提示词领域分布(使用 MT-Bench 的 8 个类别)以镜像竞赛数据集。对于回复,我们使用 vLLM 从以下模型中均匀采样完成内容:

  • meta-llama/Llama-3.1-405B-Instruct-FP8
  • meta-llama/Llama-3.3-70B-Instruct
  • Qwen/Qwen2.5-72B-Instruct
  • Nexusflow/Athene-V2-Chat

蒸馏使用三个加权损失完成(如果存在原始标签则针对原始标签的 CE,否则为硬标签,以及针对软标签的 KL 和余弦损失)。最终模型是两个模型的线性合并:一个在完整数据上训练,另一个排除最后两个数据集。

推理

对于推理,我们通过适配 previous 第二名 解决方案中针对 Qwen2.5 的代码,使用序列拼接(去填充)。我们进行两次推理 passes:首先使用合并模型在所有样本上推理,然后第二次使用原始模型(在完整数据上训练)仅在 33% 预测最不确定的样本上交换回复顺序进行推理。

未成功的实验

  • 我们训练了一个单独的 critique 模型,为训练和推理教师模型添加 CoT(思维链),通过创建一个来自 GPT-4o 的 20k 评论数据集,并按与人类投票的一致性进行过滤。然而,使用评论进行软标签训练的效果反复不如不使用它们。
  • 我们尝试在第二次推理 pass 中使用 vLLM 和 AWQ 进行 Qwen2.5-72B 推理。然而,由于较高的推理成本,只有 5% 的样本可以使用 TTA 处理,最终在 LB 上看起来明显更差。
  • 我们进行了基于激活相似度的层剪枝实验,这将能够推理更大的模型。然而,在我们的实验中,层剪枝 gemma-2-27b 或 Qwen2.5-14B 的结果与直接使用 gemma-2-9b 相同或更差。
  • 还尝试在两个回复顺序的线性头之前强制类似的输出嵌入,以消除模型对输入顺序的偏差,这可以消除第二次 pass 的需要或让我们为此使用更少的资源。
同比赛其他方案