本文翻译整理自:How-to guides Validation
https://llama.meta.com/docs/how-to-guides/validation/
文章目录
俗话说,如果你不能测量它,你就不能改进它。在本节中,我们将介绍测量和最终验证Llama 的不同方法,以便确定不同微调技术提供的改进。
量化技术
这些技术的重点是收集可以在每次微调运行期间和之后轻松比较的客观指标,并提供关于模型是否运行的快速反馈。收集的主要指标是损失和困惑。
该方法包括将数据集划分为k个子集或折叠,然后微调模型k次。
在每次运行中,不同的折叠被用作验证数据集,其余的用于训练。
每次运行的性能结果被平均用于最终报告。
这为整个数据集的模型性能提供了更准确的指标,因为所有条目都用于验证和训练。
虽然它对给定数据集进行微调后模型将如何泛化产生最准确的预测,但它计算成本很高,更适合小型数据集。
Holdout
当使用 Holdout 时,数据集被分成两个或三个子集,训练和验证与测试是可选的。测试和验证集可以分别代表数据集的10%-30%。
顾名思义,前两个子集用于在微调期间训练和验证模型,而第三个子集仅在微调完成后使用,以评估模型在任何阶段都没有看到的数据上的泛化程度。
具有三个分区的优点是它提供了一种在微调后评估模型的方法,以获得对模型性能的公正视图,但它需要稍微大一点的数据集以允许适当的拆分。
这目前在Llama食谱微调脚本中实现,其中包含数据集的两个子集,训练 和 验证。数据收集在一个json文件中,可以绘制该文件以轻松解释结果并评估模型的执行情况。
标准评估工具
有多个项目提供标准评估。它们提供预定义的任务和常用的指标来评估LLM的性能,如 HellaSwa 和 ThrouthfulQA。
这些工具可用于测试模型在微调后是否降级。
此外,可以使用旨在微调模型的数据集创建自定义任务,有效地自动化微调前后模型性能的手动验证。这些类型的项目提供了一种量化的方式来查看模型在模拟现实世界示例中的性能。
其中一些项目包括LM评估工具(用于创建HF排行榜)、HELM、BIG-bench和OpenCompass。如前所述,torchtune库提供了与LM评估工具的集成来测试微调模型。
Interpreting Loss and Perplexity
所使用的损失值来自transformer 的 LlamaForCaillLM,它根据模型所需的目标初始化不同的损失函数。
本节的目标是简要概述如何理解损失和困惑的结果,作为微调期间模型性能的初始评估。我们还将困惑计算为损失值的指数。
关于损失函数的其他信息可以在这些资源中找到:1、2、3、4、5、6。
在我们的配方中,我们在微调期间使用简单的保持。
使用记录的训练和验证数据集的损失值,绘制两者的曲线以分析过程的结果。
给定配方中的设置,预期的行为是一个日志图,显示随着训练和验证损失值的减少。
![](https://img-home.csdnimg.cn/images/20230724024159.png)
如果验证曲线开始上升,而训练曲线继续下降,模型过度拟合,泛化不好。发生这种情况时,测试的一些替代方法是提前停止,验证验证数据集在统计上等同于训练数据集,数据增强,使用参数有效的微调或使用k倍交叉验证来更好地调整超参数。
定性技术
手动测试
手动评估微调模型会根据FT目标和可用资源而有所不同。在这里,我们提供了如何实现它的一般指南。
通过为微调准备的数据集,它的一部分可以分成手动测试子集,可以通过可能与特定用例相关的一般知识问题进一步增加。
除了这些一般问题,我们还建议执行标准评估,并将结果与微调模型的基线进行比较。
为了对结果进行评分,应该定义一个与正在使用的数据集相关的明确评估标准。
示例标准可以是准确性、一致性和安全性。
为每个标准创建一个标题,并定义输出获得特定分数所需的条件。
有了这些指导方针,将测试问题分配给不同的审阅者,以便每个问题有多个数据点。
每个问题有多个数据点和不同的标准,可以为每个查询计算最终分数,允许根据最终模型的首选焦点对分数进行加权。
2024-07-16(二)