返回列表

26th place solution(Public 14th)

632. Eedi - Mining Misconceptions in Mathematics | eedi-mining-misconceptions-in-mathematics

开始: 2024-09-12 结束: 2024-12-12 学习效果预测 数据算法赛
第 26 名解决方案(公开榜第 14 名)

第 26 名解决方案(公开榜第 14 名)

作者: monnu (Grandmaster)
发布时间: 2024-12-13
比赛: EEDI - Mining Misconceptions in Mathematics

感谢举办这场精彩的比赛。
祝贺那些名列前茅的选手,我也想赞扬每一位参与者。
我想简要分享一下我的解决方案。

概述

  • 使用检索模型(Retrieve Model)获取每个 QuestionID_Answer 的前 160 个误解候选项。
  • 重排序模型(Rerank Model)评估候选项并选择前 25 个。
  • 通过 vLLM 的前缀缓存(Prefix Caching)和负样本下采样(Negative Downsampling)实现高效的训练和推理。

验证策略

  • 分组 KFold(group = question_id)

训练阶段

检索模型 (Retriever)

  • 基于公开笔记本使用 Sentence Transformer 训练。
  • 骨干模型:Salesforce/SFR-Embedding-2_R。
  • 使用 LoRA 微调。
  • num_retrieve: 100。
  • 负样本下采样:
    • 对于每个 questionId_Answer,随机采样 100 个例子中的 3 个用于训练。

重排序模型 (Reranker)

  • 利用检索阶段的折外(OOF)预测。
  • 使用检索器提取每个 QuestionID_Answer 的前 K (K = 100) 个误解候选项。
  • 输入:question_text + correct answer + wrong answer + misconception
  • 任务:输出 YesNo
  • 负样本下采样方式与检索器相同。
  • Prompt:
    <| ( performance|>user
    Is the incorrect answer caused by the misconception? Answer Yes/No.
    <Problem>: {Question}
    <Construct>: {ConstructName}
    <Subject>: {SubjectName}
    <Correct Answer>: {Correct_Answer}
    <Incorrect Answer>: {Answer}
    <Misconception>: {PredMisconceptionName}
    
    <| ( eyes|>
    <| ( performance|>assistant
    Answer:{label}
  • 骨干模型:Qwen 32b AWQ 或 GPTQ。
  • 使用 LoRA 微调。

推理阶段

检索模型 (Retriever)

  • 合并 LoRA 模型以便与 vLLM 一起推理。
    • 因为 vLLM 嵌入模型原生不支持 LoRA。
  • 计算相似度并选择前 K (K=160)。

重排序模型 (Reranker)

  • 使用 vLLM。
  • 强制输出 YesNo 标记,并输出相应的标记概率用于重排序。
  • 在 vLLM 中实现前缀缓存以显著加速:
    • 需要对每个问题 - 答案对的前 K 个候选项进行推理。
    • 直到最终误解之前的提示内容保持不变。
    • 前缀缓存允许使用重排序模型高效地推理许多候选项。

无效尝试

  • 在量化之前训练模型(without AWQ or GPTQ)并尝试自定义量化。
  • 硬例挖掘(Hard Example Mining):
    • 提高了 CV 但没有提高 LB。
  • QWQ 模型。
  • 在检索器中连接其他排名较高的误解。
  • 连接其他选项。
同比赛其他方案