573. Kaggle - LLM Science Exam | kaggle-llm-science-exam
感谢Kaggle举办了这场关于LLM的挑战性比赛。
特别感谢分享了他们工作的Kagglers,使得比赛更加精彩。
和往常一样,祝贺获奖者以及所有享受比赛的人!
以下是我的解决方案的详细说明
这是一个两步过程:
对于索引生成,我使用了Hugging Face数据集 wikipedia_20220301.en:我删除了所有类似"另见"、"参考文献"、"外部链接"等部分,并按两个换行符(\n\n)分割文本。
此外,我删除了所有少于10个词的段落。
我使用 'all-MiniLM-L6-v2' 模型(最大长度512)为每个段落生成了嵌入向量,并创建了10个Faiss索引,每个索引包含420万行。
在GPU T4 x2实例上对这些索引进行顺序搜索相对较快(200个提示只需不到10分钟)。
您可以在这里找到数据集和搜索示例:Semantic search of Wikipedia EN with Faiss
我使用了 'orca-mini-v3-70b' 以及 @simjeg 完成的出色工作,在GPU T4 x2上运行LLAMA2 70B。
以下是提示词:
### System:
You are an AI assistant that follows instruction extremely well. Help as much as you can.
### User:
Your task is to analyze the question and the proposed answer below. If the answer is correct, respond with yes; otherwise, respond with no. As a potential aid, context from sentences of Wikipedia pages delimited by ## is available, even if it may not always be relevant.
Context: {row['context']}
Question: {row['prompt']}
Proposed answer: {row['A']}
### Assistant:
我使用Deberta V3(最大长度450)和 AutoModelForMultipleChoice 在24k个提示的数据集上进行了训练,该数据集提取自 @mgoksu 的 llm-science-exam-dataset-w-context,仅选取以 'What', 'Which', 'How', 'Who' 开头的提示,并去除了训练集中的重复提示。
然后我在200行的训练集上进行了验证。
最终提交是两个模型的softmax结果的融合。
为了最小化内存泄漏,每个步骤都在单独的脚本中执行。
管道提交时间从7小时20分钟到超时不等(在最后几天!!)
以下是每个步骤对最终得分的贡献:
| 模型 | LB分数 | Private分数 |
|---|---|---|
| 单个多选模型 | 0.822 | 0.805 |
| 单个多选模型(带第一步上下文检索) | 0.889 | 0.884 |
| 单个orca-mini-v3-70b模型(带第一步上下文检索) | 0.897 | 0.889 |
| 融合多选模型和orca-mini-v3-70b(带第一步上下文检索) | 0.906 | 0.901 |
| 单个orca-mini-v3-70b模型(带两步上下文检索) | 0.904 | 0.906 |
| 融合多选模型和orca-mini-v3-70b(带两步上下文检索) | 0.921 | 0.917 |
推理笔记本链接:https://www.kaggle.com/code/steubk/llm-mc-qa-openbook-v3-inf-val-tfidf-db450