返回列表

12th Place Solution

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

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

第 12 名解决方案

作者: monsaraida (MASTER)
发布时间: 2025-03-11
竞赛排名: 第 12 名

首先,我要感谢本次竞赛的组织者以及所有慷慨分享绝佳想法的参赛者。我非常享受参与的过程,并在此期间学到了很多。这是一次极其宝贵且富有教育意义的经历。

训练

模型

基础模型

  • 我选择了 Qwen2.5-14B-Instruct 作为基础模型。
    • 在我的实验中,它的表现优于 gemma2-9b-it-fp16 和 DeepSeek-R1-Distill-Qwen-14B。

基于 QLoRA 的监督微调 (Supervised Fine Tuning)

  • 超参数:
    • 学习率 (learning rate): 2e-4
    • lora_r: 8
    • epoch 数 (num_epoch): 1
    • 最大长度 (max_length): 2048

两阶段训练

  1. 第一阶段: 使用大型外部数据集进行预训练, presumed 能有效捕捉一般人类偏好。

    • 使用的数据集:
      • dpo_44k (44K) (*1)
      • ut_157k (157K) (*1)
  2. 第二阶段: 从第一阶段获得的 checkpoint 开始,使用类似于 WSDM 竞赛数据的数据集进行微调。

    • 使用的数据集:
      • WSDM official (48K)
      • LMSYS official (39K)
      • add_23k (15K) (*1)

(*1) 外部数据集:https://www.kaggle.com/datasets/shelterw/wsdm-extra-dataset/data

文本截取 (Snip)

  • 我在提示词和响应的中间插入了一个占位符 (snip 123 chars),以表明原始文本中省略了 123 个字符("snipped")。包含省略字符的数量有助于模型更好地处理部分信息,从而提高准确性。

响应交换 (Response Swapping)

  • 我还使用了交换响应 A 和 B 的数据来训练模型。
  • 虽然训练时间增加了一倍,但准确性略有提高。
  • 为了使这种方法有效, crucial 的是确保交换后的样本出现在同一个 batch 中。

交叉验证与全量训练

  • 使用 5 折交叉验证进行评估(仅使用 fold_id=0 以加快评估速度)。
  • 最终模型在整个数据集上重新训练,不使用任何评估分割,使用的是交叉验证期间发现的最佳设置。

分类头 (Classification Head)

  • 除了主要的二分类任务外,还添加了一个辅助任务来分类响应 A/B 的模型名称(权重 = 0.1)。
  • 我也测试了语言 ID 分类,但没有采用,因为它没有提供改进。

推理

第一轮推理

  • 通过将所有样本按 token 数量降序排序,然后交替分配给两个 GPU,从而加速推理。

第二轮推理

  • 从第一轮推理中选择预测概率最接近 0.5 的前 40% 样本。对于这些样本,我将交换响应 A 和 B 后的预测结果进行了平均。
  • 与在整个数据集上应用 TTA 相比,这种方法提高了效率和准确性。

附加说明

  • 我独自参加了这次竞赛,但每晚都与 ChatGPT (o1) 讨论进度和策略。
  • o1 是一个极好的想法共鸣板。此外,它还帮助识别了我源代码中的几个 bug。

再次感谢组织者和 fellow 参赛者。期待在未来的竞赛中见到大家!

同比赛其他方案