LLM-PEFT-方法-绩效审查

在这项研究中,我旨在评估定制LLM模型的复杂性。

我遇到的第一件事是ICL(在上下文中学习)。这是一种技术,您在每个用户提示中为模型提供一些例子,以便模型可以推断出例子,并尝试为给定的提示复制相同的内容。这听起来像是一个很好的选择。但您正在浪费宝贵的上下文长度,较小的模型通常具有512个上下文长度,使用ICL例子,您几乎浪费了一半上下文长度。此外,您可能没有足够的空间来包含RAG信息。除此之外,这种方法的计算成本和响应时间也更高。

您可以在以下笔记本中找到ICL示例:https://github.com/hari7696/LLM-PEFT-Methods-Performance-Review/blob/main/In-Context_Learning.ipynb

谨记ICL并非适用于所有情况,我进一步探索了。

我偶然发现了Andrews NG的LLM课程,它为PEFT模型、RL方法和LLM部署提供了许多见解。 这门课程给了我做这项评估的灵感。

我进一步探索了定制化方法,重点关注指令微调和PEFT(参数高效微调方法)。

对于我选择的所有方法,我将“google/flan-t5-base”作为基本模型。模型在12460个训练样本上进行微调,并在1500个样本的留出数据集上进行评估。我能够在Google Colab Enterprise上调整所有模型,成本不到10美元。

指令微调:

* 通常情况下,这种方法计算开销大且容易发生灾难性遗忘,适用于单个任务或少量任务的情况。* 我使用对话摘要数据集(“knkarthick/dialogsum”)进行了指导调整。* 我在Google Colab企业版(g2-standard-4)上对模型进行了6次迭代的调整。我从推荐的小学习率1e5开始。(令人惊讶的低,仅1.1小时)* 理想情况下,应该能够提供比我目前所取得的更好的结果。由于计算预算限制,我无法进行微调。

低秩适应(LoRA)— 一种PEFT方法。它通过将一个大矩阵分解为更小的低秩矩阵在注意力层中进行操作。[100,000 * 100,000] -> [100,000 * 1],[1 * 100,000],基本上,一亿参数被减少到二百万参数。这些低秩矩阵相乘并加到原矩阵上。因此,我们只训练了模型参数的

通过抑制和放大内部激活,Infused Adapter by Inhibiting and Amplifying Inner Activations(IA3)—这是一种PEFT方法。它通过使用学习向量对内部激活重新缩放(比Lora减少更多可训练参数),该方法使用相同的Prodigy优化器。将其训练了3个时期,并且相对于原始模型获得了绝对差异为13.41(rougeLsum)。虽然比Lora少,但仍然很好。训练时间:32分钟。

结果

模型的完整结果保存在“models_evaluaiton.csv”文件中,训练好的模型保存在hugging face存储库中。评估是在包含1500个提示的测试数据上进行的。| 模型 | ROUGE-1 | ROUGE-2 | ROUGE-L | ROUGE-Lsum || — — — — — — — — -| — — — — — -| — — — — — -| — — — — — -| — — — — — || 原始模型 | 0.1936 | 0.0558 | 0.1653 | 0.1655 || 指导模型* | 0.2094 | 0.0729 | 0.1836 | 0.1840 || PEFT IA3 模型 | 0.3751 | 0.1414 | 0.2998 | 0.2996 || PEFT LoRa 模型 | 0.4341 | 0.1779 | 0.3494 | 0.3493 |

  • 不要在意Instruct模型的得分,如果其微调得当,得分会高于LoRa和IA3。我包含该得分的原因是为了展示指导调整的难度。我还没有尝试过推理设置,比如随机抽样、前k个、前n个、温度。我观察到一些PEFT模型答案缺乏创意。通过调整推理设置需要进行进一步评估。

所有代码都可以在我的github上公开查看。https://github.com/hari7696/LLM-PEFT-Methods-Performance-Review

2024-09-03 04:31:21 AI中文站翻译自原文