本文是《从零手搓大模型实战》学习的第四篇个人学习笔记,主要通过学习TinyEval项目来总结搭建一个大模型评测系统的相关知识,下面记录下学习内容以及相关心得。
注:Tiny-Eval相关学习内容来自datawhalechina/tiny-universe
1.什么是大模型评测?
大模型LLM的评测是衡量模型性能的关键环节,它涉及多个方面,包括模型的准确性、流畅性、多样性和相关性等。评测LLM时,我们通常会使用一系列的评测指标(metrics)来量化模型的表现。
Metrics(指标)的解释:
“metric”指的是用于量化评估模型性能的具体指标,有助于客观地比较模型的表现。常见的metrics包括:
-
BLEU (Bilingual Evaluation Understudy):
- 基于n-gram精确度的评估方法,用于衡量文本生成的质量。
- 通过比较模型生成的文本与参考文本中n-gram的重合程度来打分。
-
ROUGE (Recall-Oriented Understudy for Gisting Evaluation):
- 用于评估自动摘要和机器翻译的性能。
- 基于召回率的概念,衡量生成的摘要或翻译与参考文本的相似度。
-
PERPLEXITY:
- 衡量语言模型性能的指标,表示模型对测试数据的困惑度。
- 较低的困惑度意味着模型能更好地预测文本序列。
-
DISTINCT:
- 评估生成文本的多样性。
- 通过计算生成文本中不同n-gram的比例来衡量。
-
Accuracy:
- 分类或选择任务中,准确率衡量模型正确预测的比例。
- 在需要选择的生成式任务中也可用作评估指标。
-
F1 Score:
- 用于分类任务的评估指标,特别是处理不平衡数据集时。
- 是精确率(precision)和召回率(recall)的调和平均值。
- 在文本分类任务中(如情感分析),F1 Score衡量模型正确识别和分类文本的性能。
-
Fluency, Coherence, and Relevance:
- 基于人类评估的指标,衡量文本的流畅性、连贯性和相关性。
- 通过问卷调查或评分系统收集人类评估者的反馈。
在进行大模型评测时,需要考虑综合使用多个metrics,以便全面评估模型的性能。不同的任务和应用场景需关注不同的评估指标组合。例如,在文本分类任务中,除了常见的准确率外,F1 Score也是一个非常重要的补充指标,特别是在类别不平衡的情况下。
评测常见做法:
-
人工评测:
- 通过人类评估者对模型生成的文本进行打分或提供反馈,这是最直接的评测方法。
- 评估维度可以包括文本的相关性、连贯性、创新性等。
-
自动评测:
- 使用自动化工具和算法来评估模型生成的文本质量。
- 这通常涉及计算模型生成文本与参考文本之间的相似度或差异度。
-
任务特定评测:
- 针对特定任务(如问答、摘要生成等)设计评测方法。
- 例如,在问答任务中,可以评估模型回答问题的准确率和相关性。
2. TinyEval的主要内容和流程
这里,TinyEval 是一个简单的LLM评测框架,双阶段的评测体系,包含了LLM通用评测的核心功能,支持生成式、判别式、选则式评测问题,框架主要包含inference与eval部分,目的是为了帮助我们大家更好理解和学习LLM评测的原理与实现。
image.png3. TinyEval的评测数据集、评测Metric等
TinyEval 这里数据集主要是3类,采用不同的评测metirc,如下:
- multi_news 长文本问答
- multifieldqa_zh 短文本问答
- trec 生成式选则
评测metric:
- F1 score
- rouge-series/blue-series
- accuracy
4. TinyEval的代码
TinyEval 的代码包含2部分,一部分是LLM和metrics的定义,一部分是评测框架主要是2个文件: inference.py 和 eval.py:
TinyEval .png
- inference代码主要用于加载预训练语言模型,并使用该模型对给定的数据集进行文本生成任务。使用一些配置文件来设置模型参数和预测参数,最后将预测结果保存到指定的输出文件中。
- eval代码主要用于评估自然语言处理模型性能的脚本,主要功能是计算不同数据集上的模型预测结果的得分,并将结果保存为一个JSON文件。
注:由于本地环境的因素,目前没实际运行tinyEval,之后再补上吧
网友评论