LLM的流行以及大规模应用时间并不长,LLM的一些弊端时有出现,在应用上线前以及在线运营过程对LLM进行评估都非常有必要。
(1)人工评价
人工评估应该是成本最高、可扩展性最差的方法,但可以产生可靠的结果。从本质上讲,为了在特定应用程序的上下文中最好地评估模型的性能和相关性,需要一组人来审查为测试数据集生成的输出,并提供定性和/或定量反馈。
(2)批量离线评估
可以在大模型上线前利用特定数据集仔细检查LLM。它在应用上线运行之前验证功能能否满足应用需求。在这个阶段进行评估,对于应用开发方来说可以有利于选择一个合适的LLM,对于大模型服务商来说可实现更快的迭代。它无需实时数据,具有成本效益,适用于部署前检查和回归测试。
在上线前,为了彻底评估LLM,为每个大模型功能创建评估数据集(黄金数据集)是个重要基础。但是,设计一个高质量的评估数据集是一项复杂的任务。需要结合各种应用场景和复杂性逻辑设计各种输入、输出。还需要对每个输入输出进行仔细地验证。黄金数据集可以作为评估LLM的能力的测试基准,为LLM的功能识别和改进提供了可靠的标准。
随着LLM的发展,LLM越来越有人的智力。为了评估LLM,除了手工收集数据集之外,还可以利用LLM的生成式功能来帮助人们生成评估数据集。这样做既可以增强评估过程的可扩展性,也有助于节省人力,同时还保留了人类参数据集整理的程度,以保证LLM生成的数据集的质量。
除了可以使用LLM来帮助生成黄金数据集之外,还可以让LLM帮助评估基于LLM的应用。这种方法不仅效率有可能比人工评估更高效。
但需要注意的是,目前的LLM并非真正的AGI,还存在很多问题,特别是在专业领域的理解上通用大模型还是比较欠缺,容易提供一些误导性信息以及错误的逻辑。
(3)在线评估与监测
对在线运行的LLM进行评估,其实是最接近真实场景、最真实的。通常的做法是直接和间接地收集用户反馈来评估实际的性能、质量和用户满意度。这个过程涉及到对服务过程的日志收集和评估分析。在线评估的手段,收集并分析了真实且有价值的用户反馈,是实现持续性能监控的理想方式。可以更加出色地反映出现实世界在使用大模型各个方面。
评估指标
(1)基础评估指标
参考klu.ai和Microsoft的评估指标列表如下:
https://klu.ai/glossary/llm-evaluationhttps://klu.ai/glossary/llm-evaluation
|---------------|---------------------------------------------|--------------------------------------------|
| 类别 | 度量 | 描述 |
| 用户参与度和效用指标 | 访问 | 访问LLM应用程序功能的用户数 |
| 提交 | 提交提示词的用户数 |
| 响应 | LLM应用程序生成没有错误的响应 |
| 观看 | 用户查看LLM的响应信息次数 |
| 点击 | 用户点击LLM响应中的参考文档(如有参考文档的话) |
| 用户交互指标 | 用户接受率 | 用户接受大模型响应内容的概率,例如,在对话场景中包含正面、负面或者建议的反馈) |
| LLM会话数 | 每个用户的LLM平均会话数 |
| 活跃天数 | 每个用户使用LLM功能的活动天数 |
| 交互计时 | 编写提示词、发送再到大模型响应之间的平均时间,以及每次花费的时间 |
| 模型答复质量 | 提示和响应长度 | 提示词和响应内容的平均长度 |
| 编辑距离度量 | 用户提示之间以及LLM响应和保留内容之间的平均编辑距离测量用作提示细化和内容定制的指标 |
| 用户反馈和用户留存 | 用户反馈 | 带有有"大拇指向上、向下"的反馈数 |
| 每日/每周/每月活跃用户 | 在特定时间段内访问LLM应用程序功能的用户数 |
| 用户回访率 | 在前一周/月使用此功能的用户在本周/月继续使用此功能的百分比 |
| 性能度量指标 | 每秒请求数(并发) | LLM每秒处理的请求数 |
| 每秒处理Token数 | 计算LLM响应流期间每秒输出的Tokens |
| 第一次输出Token的时间 | 从用户提交提示词到第一次流式输出令牌的时间,以多次重复测量 |
| 错误率 | 不同类型错误的错误概率,如401错误、429错误。 |
| 可靠性 | 成功请求占总请求(包括错误或失败请求)的百分比 |
| 延迟时间 | 从提交请求到收到响应之间的平均处理持续时间 |
| 成本度量指标 | GPU/CPU利用率 | 在请求返回错误(OpenAI 返回429错误编码,表示过多请求)之前的Token总数 |
| LLM呼叫成本 | 每次调用需要花费的成本 |
| 基础设施成本 | 存储、网络、计算资源等成本 |
| 运维成本 | 包括:运行、维护、技术支持、监控、记录、安全措施等方面的成本 |
(2)RAI指标
对于LLM来说,评价其是否存在道德、偏见、伦理等潜在风险,十分重要。RAI(Responsible AI)指标主要用于评价LLM是否是一个负责任的大模型。评价可以促进基于LLM的应用具有公平性、包容性和可靠性。
参考:
https://www.microsoft.com/en-us/ai/responsible-ai
|--------------------------------|--------------|
| 潜在伤害类别 | 样本评价数据集的伤害描述 |
| 有害内容 | 自残 |
| 憎恨 |
| 性行为 |
| 暴力 |
| 公平 |
| 攻击 |
| 系统失控,导致有害内容 |
| 合规性 | 版权 |
| 隐私和安全 |
| 第三方内容监管 |
| 与高度监管领域相关的建议,例如医疗、金融和法律 |
| 的恶意软件的生成 |
| 危害安全系统 |
| 幻觉 | 无根据的内容:非事实 |
| 无根据的内容:冲突 |
| 基于共同世界知识的幻觉 |
| 其他 | 透明度 |
| 问责制:生成内容缺乏出处(生成内容的来源和更改可能无法追踪) |
| 服务质量(QoS)差异 |
| 包容性:刻板印象,贬低,或过度和低估社会群体 |
| 可靠性和安全性 |
(3)基于应用场景的评估指标
不同的行业对LLM的要求不相一致,因此对LLM的评价指标也会有所差别。在大模型行业落地过程中,根据应用场景定制评价指标体系对最终应用效果至关重要。例如:在医疗领域,关乎人命,大模型应用在疾病、用药、诊断等方面准确性的要求会更高;在金融方面,大模型在逻辑推理、计算等方面的能力就很重要;而在"闲聊"应用场景,就相对的专业性、严谨性没有那么严格。
(4)文档摘要能力评估指标
|------------|------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 类型 | 度量 | 描述 | 参考资料 |
| 基于重叠的度量 | BLEU | BLEU评分是一种基于精度的衡量标准,范围从0到1。值越接近1,预测越好。 | https://huggingface.co/spaces/evaluate-metric/bleu |
| ROUGE | ROUGE(Recall-Oriented Understudy for Gisting Evaluation)是一套用于评估自然语言处理中自动摘要和机器翻译软件的度量标准和附带的软件包。 | https://huggingface.co/spaces/evaluate-metric/rouge |
| ROUGE-N | 测量候选文本和参考文本之间的n-gram(n个单词的连续序列)的重叠。它根据n-gram重叠计算精度,召回率和F1分数。 | https://github.com/google-research/google-research/tree/master/rouge |
| ROUGE-L | 测量候选文本和参考文本之间的最长公共子序列(LCS)。它根据LCS的长度计算精确率、召回率和F1分数。 | https://github.com/google-research/google-research/tree/master/rouge |
| METEOR | 一种机器翻译评估的自动度量,其基于机器生成的翻译和人类生成的参考翻译之间的单字匹配的广义概念。 | https://huggingface.co/spaces/evaluate-metric/meteor |
| 基于语义相似性的度量 | BERTScore | 利用BERT中预先训练的上下文嵌入,并通过"余弦相似度"匹配候选句子和参考句子中的单词。 | https://huggingface.co/spaces/evaluate-metric/bertscore |
| MoverScore | 基于上下文向量和距离的文本生成评估。 | https://paperswithcode.com/paper/moverscore-text-generation-evaluating-with |
| 擅长总结 | SUPERT | 无监督多文档摘要评估和生成。 | https://github.com/danieldeutsch/SUPERT |
| BLANCBlanc | 摘要质量的无引用度量,用于衡量在访问和不访问摘要的情况下屏蔽语言建模性能的差异。 | https://paperswithcode.com/method/blanc |
| FactCC | 文摘文本摘要的事实一致性评价指标 | https://github.com/salesforce/factCC |
| 其他 | Perplexity(困惑) | 在分析文本样本时,困惑度是语言模型预测准确性的统计指标。简而言之,它衡量了模型在遇到新数据时的"惊讶"程度。较低的困惑值表示模型对文本分析的预测准确度较高。 | https://huggingface.co/spaces/evaluate-metric/perplexity |
(5)问答样本评估指标
QA评估指标主要用于衡量基于LLM的应用系统在解决用户问答方面的有效性。
|------------|----------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 度量 | 描述 | 参考资料 |
| QAEval | 基于问答的度量,用于估计摘要的内容质量。 | https://github.com/danieldeutsch/sacrerouge/blob/master/doc/metrics/qaeval.md |
| QAFactEval | 基于QA的事实一致性评价。 | https://github.com/salesforce/QAFactEval |
| QuestEval | 一种NLG指标,用于评估两个不同的输入是否包含相同的信息。它可以处理多模式和多语言输入。 | https://github.com/ThomasScialom/QuestEval |
(6)实体识别指标
实体识别(NER)是对文本中特定实体进行识别和分类的一种任务。评估NER,对于确保信息的准确提取,对需要精确实体识别的应用系统非常重要。
|--------|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 度量 | 描述 | 参考资料 |
| 分类度量指标 | 实体级别或模型级别的分类指标(精度、召回率、准确性、F1分数等)。 | https://learn.microsoft.com/en-us/azure/ai-services/language-service/custom-named-entity-recognition/concepts/evaluation-metrics |
| 解释评估指标 | 主要思想是根据实体长度、标签一致性、实体密度、文本的长度等属性将数据划分为实体的桶,然后在每个桶上分别评估模型。 | https://github.com/neulab/InterpretEvalhttps://arxiv.org/pdf/2011.06854.pdf |
(7)文本转SQL
通过大模型实现文本转SQL,在一些对话式的数据分析、可视化、智能报表、智能仪表盘等场景中经常被用到,文本转SQL是否有效性取决于LLM能否熟练地概括各种自然语言问题,并灵活地构建新的SQL查询语句。想要确保系统不仅在熟悉的场景中表现良好,并且在面对不同的语言表达风格的输入、不熟悉的数据库结构和创新的查询格式时还依然表现出准确性。需要全面评估文本到SQL系统方面能否发挥作用。
|-------------------------------|-------------------------------------------------------------------|
| 度量 | 描述 |
| Exact-set-match accuracy (EM) | EM根据其相应的基本事实SQL查询来评估预测中的每个子句。然而,一个限制是,存在许多不同的方式来表达SQL查询,以达到相同的目的。 |
| Execution Accuracy (EX) | EX根据执行结果评估生成的答案的正确性。 |
| VES (Valid Efficiency Score) | VES是一个用于测量效率以及所提供SQL查询的通常执行正确性的度量标准。 |
(8)RAG系统
RAG(Retrieval-Augmented Generation)是一种自然语言处理(NLP)模型架构,它结合了检索和生成方法的元素。通过将信息检索技术与文本生成功能相结合来增强大语言模型的性能。评估RAG检索相关信息、结合上下文、确保流畅性、避免偏见对提高满足用户满意度至关重要。有助于识别系统问题,指导改进检索和生成模块。
|----------------------------|--------------------------------------|
| 度量 | 描述 |
| Faithfulness | 事实一致性:根据给定的上下文测量生成的答案与事实的一致性。 |
| Answer relevance | 答案相关性:重点评估生成的答案与给定提示的相关性。 |
| Context precision | 上下文精确度:评估上下文中存在的所有与实况相关的项目是否排名更高。 |
| Context relevancy | 语境关联:测量检索到的上下文的相关性,根据问题和上下文计算。 |
| Context Recall | 上下文召回率:测量检索到的上下文与样本答案(被视为基本事实)的一致程度。 |
| Answer semantic similarity | 答案语义相似度:评估生成的答案和基础事实之间的语义相似性。 |
| Answer correctness | 答案正确性:衡量生成的答案与地面实况相比的准确性。 |
04
一些评估基准
通用大模型具有多功能性,如:聊天、实体识别(NER)、内容生成、文本摘要、情感分析、翻译、SQL生成、数据分析等。下面收集了一些对这些大模型的评估基准。
|-------------|---------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 基准 | 描述 | 参考资料 |
| GLUE基准 | GLUE(General Language Understanding Evaluation)提供了一组标准化的各种NLP任务,以评估不同大语言模型的有效性。 | https://gluebenchmark.com/ |
| SuperGLUE基准 | 提供比起GLUE更具挑战性、多样化,更全面的任务。 | https://super.gluebenchmark.com/ |
| HellaSwag | 评估LLM完成句子的能力。 | https://rowanzellers.com/hellaswag/https://github.com/rowanz/hellaswag/tree/master/hellaswag_models#submitting-to-the-leaderboard |
| TruthfulQA | 评测模型的回答是否真实性。 | https://github.com/sylinrl/TruthfulQAhttps://arxiv.org/abs/2109.07958 |
| MMLU | 评估LLM可以处理大规模多任务的能力。 | https://github.com/hendrycks/test |
| ARC | AI2数据集分为两个分区:"简单"和"挑战",其中后一个分区包含需要推理的更困难的问题。大多数问题有4个答案选择,1%的问题有3个或5个答案选择。 | https://www.microsoft.com/en-us/ai/responsible-ai |
到目前为止,最安全的方法仍然是基于人的评估。但是这种方法也是最耗时、最昂贵,并且不可扩展。
在特定行业应用场景的大模型平台,应该可以在已有方法、框架、指标和基准的基础上进一步完善,以适应行业大模型的评估。
还有一种看起来挺有前途的方法,就是使用一些大家认为比较先进的LLM来评估其他模型的属性,但由于目前最先进的大模型仍然存在提升空间,因此使用这个方法评估新的大模型,可能本身也存在一些不确定性。