返回列表

19th-place solution

573. Kaggle - LLM Science Exam | kaggle-llm-science-exam

开始: 2023-07-11 结束: 2023-10-10 自然语言处理 数据算法赛
第19名解决方案

第19名解决方案

感谢Kaggle举办了这场关于LLM的挑战性比赛。
特别感谢分享了他们工作的Kagglers,使得比赛更加精彩。
和往常一样,祝贺获奖者以及所有享受比赛的人!

以下是我的解决方案的详细说明

上下文检索

这是一个两步过程:

  • 第一步,我通过在维基百科所有段落的索引搜索生成候选答案。
  • 第二步,我使用TF-IDF模型对候选答案进行重新排序,以充分利用提示/答案与维基百科句子使用相同词汇的特点:这第二步对最终得分非常重要。

对于索引生成,我使用了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

LLAMA2 70B推理

我使用了 '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:

多选模型(ModelForMultipleChoice)

我使用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

同比赛其他方案