573. Kaggle - LLM Science Exam | kaggle-llm-science-exam
感谢Kaggle团队组织这次全新且有趣的竞赛。通过这次竞赛,我学到了很多新知识,包括RAG和LLM微调技术。感谢所有在竞赛期间贡献有意义讨论和发布高水平笔记的参与者。同时感谢我的队友 @thedrcat、@anonamename 和 @kashiwaba,他们用各种想法完善了我们的解决方案。

此搜索策略基于JJ的公开笔记中的方法,但做了以下改进:
采用MB的27万篇文章数据集和TF-IDF方法(来自MB的优秀笔记)
使用gte-small模型(max_seq_length=512)搜索MB的27万篇文章文本
此方法基于以下假设:针对本竞赛数据,段落搜索和稀疏方法可能比密集方法更有效。问题和选项通常包含非常具体的术语,这些术语可能无法通过密集嵌入很好地表示。同时,段落搜索通常被认为对问答任务更有效。挑战在于如何对数百万维基百科段落进行有效的稀疏检索。
最初使用train.csv中的样本进行验证,但在CV达到~0.99后,难以评估CV与LB的相关性。因此通过Chat-GPT生成约3000个额外样本作为新验证集(使用13万篇STEM文章作为输入)。虽然存在一些模糊性,但CV与LB相关性较好,最终集成模型的组合基于该验证集的CV确定。

基于cderotte的笔记,训练了以下四个模型:
使用transformers的AutoModelForCausalLM类和trl的SFTTrainer类进行训练:
### 输入: <上下文>\\n\\n### 系统: 回答以下选择题,给出最合适的答案。答案必须是[A, B, C, D, E]中的一个。必要时可使用上面的输入文本作为参考。### 问题: <问题>\\nA) <选项A>\\nB) <选项B>\\nC) <选项C>\\nD) <选项D>\\nE) <选项E>\\n\\n### 答案:
<上下文> #### <问题> #### <选项> ####上下文:Wikipedia-20230801
| 模型 | 类型 | Private LB | Public LB |
|---|---|---|---|
| Mistral-7B-v0.1 | CausalLM | 0.874 | 0.868 |
| Mistral-7B-OpenOrca | CausalLM | 0.882 | 0.876 |
| Mistral-7B-v0.1 | CausalLM 奖励建模 | 0.897 | 0.888 |
| Mistral-7B-OpenOrca | CausalLM 奖励建模 | 0.896 | 0.888 |
| OpenOrca-Platypus2-13B | CausalLM | 0.872 | 0.880 |
| Llama2-chat-AYT-13B | CausalLM | 0.872 | 0.875 |
LLM的主要问题是推理时间长。因此首先使用Deberta模型过滤简单问题(定义为预测概率>0.7的问题),然后仅对剩余问题使用LLM推理。这样通过缩小LLM推理数据范围来减少总推理时间。同时对Deberta模型也应用这种分步推理,将总时间控制在9小时内。该集成方法使3个LLM能在9小时内完成推理。最终预测是8个Deberta模型和3个LLM在不同上下文上的加权平均,给予LLM更高权重。权重基于验证集的map3确定。
Private LB: 0.925, Public LB: 0.931
| 模型 | 上下文 | 阶段 | 权重 |
|---|---|---|---|
| DeBERTa-V3 large (max_length=512), v1 | Wikipedia-20230801 | 第1阶段 | 1.0 |
| DeBERTa-V3 large (max_length=512), v1 | MB 270K + TF-IDF | 第2阶段 | 1.0 |
| DeBERTa-V3 large (max_length=512), v2 | Wikipedia-20230801 | 第3阶段 | 0.5 |
| DeBERTa-V3 large (max_length=512), v2 | MB 270k + sentence-transformer | 第3阶段 | 0.5 |
| DeBERTa-V3 large (max_length=1024) | Wikipedia-20230801 | 第3阶段 | 0.5 |
| DeBERTa-V3 large (max_length=1024) | MB 270k + sentence-transformer | 第3阶段 | 0.5 |
| DeBERTa-V3 large (max_length=512), v3 | Cohere TF-IDF | 第3阶段 | 0.5 |
| DeBERTa-V3 large (max_length=512), v3 | MB 270K + TF-IDF | 第3阶段 | 0.5 |
| Mistral-7B-v0.1, CausalLM 奖励建模 | Wikipedia-20230801 | 第4阶段 | 1.25 |
| Mistral-7B-v0.1, CausalLM 奖励建模 | MB 270K + TF-IDF | 第4阶段 | 1.5 |
| OpenOrca-Platypus2-13B, CausalLM | Wikipedia-20230801 | 第4阶段 | 1.25 |