返回列表

Autobots roll out! Ensembling 4 transformers to reach position 20.

603. LLM Prompt Recovery | llm-prompt-recovery

开始: 2024-02-27 结束: 2024-04-16 AIGC与多模态 数据算法赛

作者:Guillermo Barbadillo  |  竞赛排名:第 20 名

Kaggle LLM Prompt Recovery 竞赛第 20 名解决方案

这是我第一次亲自动手使用 LLMs(非语言模型),因此非常感谢 Kaggle 和 Google 给了我尝试的动力。这是一场有趣的比赛,尽管我始终无法找到持续提升 LB 分数的方法,尝试的几乎所有方法都失败了。原来所谓的“黑魔法”是对 T5 嵌入模型进行对抗攻击。

方案标志

背景

方案概述

本解决方案是一个集成模型,使用 LoRA 对以下模型进行微调:

模型
Mistral 7B
Llama 2 13B
Mistral 22B
Mistral 8x7B

模型在约 100 万条由 GPT4 生成的样本上进行微调。

提交版本 公开 LB 私有 LB
MMML v1 0.64 0.65
MMML v1 + 0.63 prompt 0.66 0.67

模型的预测结果被拼接在一起,同时也将公开的 0.63 提示一起追加到提交中。

资源

提交细节

有效的做法

进行多次预测

与论坛中认为长预测会损害相似度得分的观点相反,我发现仅仅进行 n 次预测并拼接它们可以提升 LB 分数。例如,仅通过使用 v5 模型进行 4 次推理,就能把分数从 0.62 提高到 0.64

使用自己的数据进行微调

在自有数据上进行微调得到的 LB 分数为 0.62,而在公开数据上微调的最佳分数仅为 0.60

少样本提示

少样本提示效果出奇地好。根据提供的样本不同,排行榜分数最高可以达到 0.62。不过因为输入提示非常大,导致推理速度较慢;对模型进行微调后可以实现更快的推理,从而可以进行多次推理。

平均提示

提交使用 “Please improve this text using the writing style with maintaining the original meaning but altering the tone.” 这条提示获得了 0.63 的分数。

这可能是由于度量指标选择不佳、模型较弱以及 Kaggle 的优化力度(2000 人每天提交 5 次)共同造成的。但该平均提示也有可能在隐藏测试集上同样有效,所以我认为应该在有或没有该提示的情况下都进行推理。

无效的做法

验证集,任务究竟要学习什么?

缺少验证集使得设计并改进解决方案变得非常困难。我只能依赖一个非常小且精度四舍五入的公开数据集。比赛初期我尝试使用一些数据集进行验证,但没有发现验证结果与排行榜之间有明显的相关性。

更大的模型

比赛初期我曾认为 Mixtral 会带来显著差异。实际上,我并未看到 Mistral、Mixtral 与 Llama 之间出现任何显著的区别。

公开数据集

在公开数据集上微调获得的最佳 LB 分数为 0.60,大多数数据集的分数仅在 0.53 左右。

尝试改进我的数据

我尝试了多种策略来提升数据质量:

  • 多指令提示
  • 模仿泄露的提示
  • 根据 GPT4 建议生成更多主题的提示
  • 在数据集中加入提示线索

以上所有尝试都没有带来排行榜分数的提升。

使用相似提示进行训练

我尝试使用语义相似并在 T5 嵌入上得分高的提示来扩充训练数据,但这并未提升 LB 分数。

扩展数据

在使用 GPT4 生成 2000 条新样本后,我没有观察到任何提升。

批评

恢复提示的任务本身具有含糊性。同一个输出可以由多个不同的提示产生。提示可以是通用的也可以是具体的,都能得到相同的结果。例如,Rewrite the sentence using a different word choice.Rewrite the sentence replacing beautiful by cute 都能得到类似输出。

因此,选择相似度作为比赛度量可能并不是一个好的决定。或许可以使用困惑度(perplexity)作为度量,尽管这会增加计算成本。

学习心得

  • 学会了使用并微调 LLMs。
  • 了解到将 LLMs 量化到 float4 仍然能保持很好的效果。
  • 发现可以对文本嵌入模型进行对抗攻击。

附注:我目前正在找工作。如果有有趣的项目,我非常乐意了解。

同比赛其他方案