微调(fine-tuning)就是利用特有数据和技巧将通用模型转换为能执行具体任务的一种方式。例如,将 GPT-3 这种通用模型转换为诸如 ChatGPT 这样的专门用于聊天的模型。或者将 GPT-4 转换为诸如 GitHub Coplot 这样的专门用于写代码的模型。
这里的微调特指生成式任务上的微调。在这种方式中,
- 需要更新整个模型的权重,而不是像其他模型一样只更新部分权重
- 微调的训练目标与预训练时的目标相同,目的是让模型的输出更加一致
- 有许多先进的方法可以减少对模型的更新
L4 如何为训练准备数据
1.高质量
2.多样性
3.真实的数据(因为生成的数据具有某种模式)
4.更多的数据
收集数据的步骤:
1)连接这些对或添加提示模板
2)对数据进行标记,添加填充或截断数据,使得数据适合偶像。
对数据进行标记是将文本数据转化为表示每个文本片段的数字。实际上,不一定是按单词来分的。是基于常见字符出现的频率。之后,当您使用相同的标记器进行解码时,它会转换为相同的文本。
现在有很多不同的标记器,每个模型都与特定的标记器相关联,因为它是根据它进行训练的。
L6评估生成模型
目前流行的一种方法是Eleuther AI开发的ELO对比,类似于多模型间的AB test。普遍采用的一个开放LLM基准测试利用了多种评估方法。它集合了各种评估方法并取平均值以此来排序模型。包括:
ARC:主要是小学问题
(ARC包含7787个来自不同科学领域的考试问题,根据难易程度,可以划分为2590个问题组成的ARC-Challenge和5197个问题的ARCEasy。这些问题用以评估LLM在多步推理、语言匹配等多方面的高级能力。在这两个评测基准中,GPT-4取得了最好的成绩,明显超过其他LLM。)
HellaSwag:常识
MMLU:多个小学学科
TruthfulQA:评估模型在复制常见的在线错误信息上的表现
FreeWilly模型是在 Llama-2 模型基础上进行微调得到的,使用的是 ORCA 方法。
另一个分析和评估模型的框架是错误分析:
第一种:拼写错误。
第二种:长度过长。简洁的数据集可以帮助模型更准确地回答问题。
第三种:生成重复。解决方法是更明确地使用停止标记或者提示词模板。确保数据既有多样性又不过于重复。
注意,不需要过度关注模型在这些基准测试上的表现,因为他们可能与业务场景无关。因此,真正要关心的是在真实业务场景上的表现。上述基准测试只有在你研究的是通用模型时才更具有参考价值。也就是说,这个基准测试对于你找基础的模型有参考价值,对于具体地微调任务上意义不大。
L7 总结
微调的实用步骤:
1)明确任务
2)收集与任务输入和输出相关的数据,并对数据进行组织整理
3)如果数据不够,可以借助AI生成或实用提示词模板来创建
4)建议先微调一个小模型(例如 4亿-10亿参数),看一下模型的表现
5)调整微调模型时的数据量,并观察对微调结果的影响
6)评估模型,看看哪些做得好,哪些做得不好
7)收集更多的数据,通过评估结果来持续改进模型
8)提高任务的复杂度
9)增加模型规模以适应这种复杂的任务
参数高效微调方法 PEFT
低秩适应LoRA:减少你需要训练的参数数量,降低你需要训练的权重。减少gpu内存,但会获得相同的推理延迟。
部分来源: