返回列表

13th Place Solution

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

开始: 2024-09-12 结束: 2024-12-12 学习效果预测 数据算法赛
第 13 名解决方案

第 13 名解决方案

作者: RB
发布日期: 2024-12-14
竞赛排名: 13

感谢 Kaggle 和 The Learning Agency Lab 举办本次竞赛。

虽然很遗憾😢以一名之差错失金牌,但我们感激这次学习和成长的机会。

总结

我们得分最高的私有榜 (Private LB) 提交方案如下:

(a) 知识蒸馏 (Knowledge Distillation)
使用 Qwen2.5-Math-7B-Instruct 来解决题目以获得最终正确答案。直接使用基础模型是因为它看起来相当有能力,同时也为了避免过拟合公共榜 (Public LB)。此推理过程被用于训练下一步的嵌入 (Embedding) 模型。

(b) 候选生成 (Candidate Generation)
Qwen2.5-14B-Instruct 使用步骤 1 中的推理文本进行了微调。训练代码改编自 @sayoulala 的 GitHub 仓库。此检索器用于获取前 100 个误解 (misconceptions)。

(c) 第一轮列表重排序 (1st Listwise Reranking)
将步骤 2 中的前 100 个误解填入提示词 (prompt),连同主题 (Subject)、结构 (Construct)、问题 (Question)、正确答案和错误答案一起发送给微调后的 Qwen2.5-32B-Instruct。模型仅生成 1 个 token(与正确误解相关的字母 ID)。然而,我们计算了 logprobs 以获取前 25 个误解 ID,而不仅仅是 1 个。

(d) 第二轮列表重排序 (2nd Listwise Reranking)
将阶段 3 中的前 25 个误解以相同的方式使用微调后的 Qwen2.5-72B-Instruct 进行重排序。

以上组合方案在私有榜得分为 0.561,公共榜得分为 0.578。

数据

交叉验证 (CV) - 基于误解 ID 的 GroupKFold 4 折。

训练嵌入模型 (Training Embedding Model)

FlagEmbedding (改编自 @sayoulala 的 GitHub 仓库)

  • 使用 SFR 微调嵌入模型的预测来获取硬负样本 (hard negatives)。该模型的公共榜得分为 0.45x,低于公共 kernel,但与重排序器结合时效果更好。
  • 由 Qwen 2.5 Math 7b instruct 生成的正确答案推理也作为输入的一部分。(私有榜 0.433,公共榜 0.486)

训练多项选择题重排序器 (Training Multiple Choice Reranker)

72B 模型

利用 LLaMa-Factory 在分布式设置下使用 LoRA 微调所有 72B 模型。所有模型均使用 DeepSpeed ZeRO-3 协议进行训练和分片,以确保权重、梯度和优化器状态都能适应可用的显存 (VRAM)。

32B 模型
使用 Hugging Face SFT Trainer 训练。

推理 (Inference)

  • Qwen 2.5 Math 7b 使用 vllm _fp16_ 模式。
  • Qwen 2.5 14b 使用 bnb 以适应单个 GPU - 我们使用两个 GPU 来加速推理。
  • Qwen 2.5 32b 和 72b 在 _fp16_ 模式下逐层运行 - 我们使用两个 GPU 来加速推理。

总提交时间:500 分钟 (8.3 小时)

失败的想法 (Failed ideas)

  • 集成 72b 模型 (Ensembling 72b models)
  • 将逐步解决方案插入重排序器的上下文窗口
  • 各种生成合成数据的方法
  • 32B 嵌入模型 - 是最终选择的一部分但不是最佳提交。(私有榜 0.453,公共榜 0.470)
  • AWQ Qwen14B 嵌入模型 - 但在 Kaggle 上推理需要 vllm >= 0.6.4。
  • 合成数据 - 其中一个带有合成数据的模型是 3 个选定提交的一部分。

最后,非常感谢我出色的队友们 🌟 @nbroad,🌟 @abdullahmeda 和 🌟 @benbla 在本次竞赛中的辛勤工作和合作!!

同比赛其他方案