返回列表

9th Place Solution

620. LMSYS - Chatbot Arena Human Preference Predictions | lmsys-chatbot-arena

开始: 2024-05-02 结束: 2024-08-12 自然语言处理 数据算法赛
第 9 名解决方案 - Ebi
作者: Ebi (MASTER)
发布时间: 2024-08-13
竞赛排名: 第 9 名

第 9 名解决方案

感谢组织者,尤其是所有参与讨论和分享 notebook 的人们。

解决方案概述

  • 使用 lmsys-chat-1m 伪标签数据训练 gemma2-9b-it。
  • 与 llama3 模型集成。

chat-1m 伪标签数据

  1. 移除无用行
    df = df[(df.language == "English") & (~df["redacted"])]

  2. 我提取唯一的 prompt,并为每个 prompt 随机采样两个由不同模型生成的 response。我只采样两个 response 以减少数据量,同时尽可能包含更多的 prompt。这创建了大约 45k 的额外训练数据。

LB 进度

LB 指的是泄露前的分数。

  1. 训练单个 gemma2 模型并执行 response swap TTA
    → 公共 LB : 0.890
  2. 不进行 TTA,而是用 response swap 数据训练另一个 gemma2 模型并进行集成。
    → 公共 LB : 0.887
  3. 按照方法 2 训练两个模型,并添加 chat-1m 伪标签
    → 公共 LB : 0.881 (私有 LB: 0.9859)
  4. 与单个 llama3 模型集成,不使用 TTA (使用 TTA 的 公共 LB: 0.899)
    → 公共 LB : 0.881 (私有 LB: 0.9828)

解决方案详情

数据集

输入

prompt

prompt = "<context>\n{context}\n<response_A>\n{response_a}\n<response_B>\n{response_b}"
  • response_a: 模型 A 的最后 response
  • response_b: 模型 B 的最后 response
  • context: 所有用户指令和 response(但 response 仅包含一个模型),不包括 response_a 和 response_b

tokenizer

  • truncation_side = "left"
  • max_len
    • train: 256 * 6
    • inference: 256 * 7

模型

  • gemma2-9b-it

    • lora 针对所有 linear 层
    • r=32, lora_alpha=64
    • epoch=1
    • lr=8e-5
    • 学习率调度器=linear
    • 无 warm up 步数
    • 全局 batch size=16
  • llama3-8b

推理技巧

  • 由于 notebook 时间限制,难以推理两个 gemma2 模型和一个 llama3 模型,因此 llama3 模型仅对 token 计数小于等于 512 和大于等于 1500 的样本进行推理。
  • 加速方法
    • 使用 8bit 量化模型而不是 4bit。
    • merge_and_unload()
      • 在 8 位量化的情况下,未观察到分数下降。
    • 根据 token 长度动态改变 batch size
同比赛其他方案