大语言模型开发各个阶段的评估方法
大语言模型开发各个阶段的评估方法
随着大语言模型在各个领域的广泛应用,如何科学地评估其开发过程中的各个阶段成为了一个重要课题。本文从数据评估和模型评估两个维度,详细介绍了基座模型评估、预训练后评估和微调后评估的具体方法,为大语言模型的开发提供了全面的技术指导。
大语言模型开发过程评估
大语言模型的开发通常包括以下几个关键步骤:
- 选择开源的基座大语言模型
- 使用领域无关的数据进行预训练
- 使用任务特定的数据进行微调
为了确保每一步操作的有效性,需要对开发过程中的各个阶段进行科学评估。
数据评估方法
数据评估主要关注训练数据集的数量和质量。评估指标通常采用大模型在测试集上的交叉熵损失或困惑度。
数据数量评估
根据大模型的Scaling Law(尺度定律),模型性能与计算量、模型参数量和数据大小之间存在幂律关系。这意味着增加计算量、模型参数量或数据大小都可能提升模型的性能,但提升的效果会随着这些因素的增加而递减。通过分析数据规模与模型性能的关系,可以判断是否需要继续增加数据量。
数据质量评估
数据剪枝是一种评估数据质量的有效方法。通过删除困惑度最大的部分数据,然后比较删减前后模型的性能变化,可以评估数据集的冗余度。高质量的数据集应该具有较小的冗余度,即有效训练的数据比例应尽可能大。
模型评估方法
模型评估主要包括基座模型评估、预训练后评估和微调后评估三个方面。
评估基座模型
选择基座模型时需要综合考虑具体应用的任务场景、数据量规模以及可用算力等因素。
评估预训练后的大语言模型
预训练模型的评估分为粗粒度评估和细粒度评估:
- 粗粒度评估:主要通过测试集困惑度和测试集填词准确率进行评价。
- 细粒度评估:需要构建能力测试基准,对大模型的领域常识理解、推理能力等进行评价。每种能力的数量不需要太多(几十条足够),但多样性要大。具体形式可以做成选择题形式评估准确率,或者做成问答题评估ROUGE-L之类的指标,然后通过In-Context Learning(Few-shot)进行测试。
评估微调后的大语言模型
微调后的模型需要在具体任务场景中进行评估。以代码生成任务为例,可以使用HumanEval等基准数据集进行评估。HumanEval包含164个独立的编程问题,每个问题都包含函数签名、文档字符串、函数体以及一组单元测试用例。评价指标通常采用pass@k,计算通过单元测试正确程序采样的概率。
此外,还有多种评价指标可以用于代码生成任务:
- BLEU:比较生成代码和参考代码的tokens序列匹配程度
- METEOR:在BLEU的基础上增加了同义词比较,关注tokens出现顺序
- CHRF:比较生成代码和参考代码的字符序列匹配程度
- CHRF++:字符和tokens的组合评价
- RUBY:从图相似度、树相似度和字符串相似度三个层次进行评价
- CodeBLEU:综合考虑BLEU、权重BLEU、抽象语法树匹配和数据流匹配
参考文献
[1] KAPLAN J, MCCANDLISH S, HENIGHAN T, 等. Scaling Laws for Neural Language Models[M/OL]. arXiv, 2020[2024-03-13]. http://arxiv.org/abs/2001.08361.
[2] HOFFMANN J, BORGEAUD S, MENSCH A, 等. Training Compute-Optimal Large Language Models[M/OL]. arXiv, 2022[2024-03-13]. http://arxiv.org/abs/2203.15556.
[3] ZHANG B, LIU Z, CHERRY C, 等. WHEN SCALING MEETS LLM FINETUNING: THE EFFECT OF DATA, MODEL AND FINETUNING METHOD[J]. 2024.
[4] MARION M, ÜSTÜN A, POZZOBON L, 等. When Less is More: Investigating Data Pruning for Pretraining LLMs at Scale[M/OL]. arXiv, 2023[2024-04-08]. http://arxiv.org/abs/2309.04564.
[5] TIRUMALA K, SIMIG D, AGHAJANYAN A, 等. D4: Improving LLM Pretraining via Document De-Duplication and Diversification[M/OL]. arXiv, 2023[2024-03-19]. http://arxiv.org/abs/2308.12284.