在人工智能领域,由于大模型(LLM)技术的发展以及其广阔的市场前景,MaaS 以及开源大模型呈现出百家争鸣的景象。现阶段,大型语言模型的开发和应用已经成为各个领域智能化提升的重要方向。为了利用大模型实现业务和产品的提升或创新,就需要对大模型进行系统的评估。
LLM评估是指在人工智能系统中评估和改进语言和语言模型的过程。在人工智能领域,特别是在自然语言处理(NLP)及相关领域,LLM评估具有至高无上的地位。通过评估语言生成和理解模型,LLM评估有助于细化人工智能驱动的语言相关任务和应用程序,确保在语言发挥关键作用的各种场景中增强准确性和适应性。
随着大模型的版本升级和应用的持续,对大模型的评估也绝非一次性,而是需要多次迭代的过程。建立一个有效的、可持续的评估过程非常重要。如今,许多大模型服务通过LLMOps实现了CI、CE、CD(持续集成、持续评估、持续部署),大大提高了大模型的可用性。但在大模型微调、开源大模型应用、基于RAG的架构以及行业应用等层面,我们仍然需要了解大模型的评测技术。
一、评测框架
为评估大模型在不同应用程序中的质量,可以借鉴一些有效的项目。下面列举了一些受到广泛认可框架,如:Microsoft Azure AI Studio中的Prompt Flow、结合LangChain的Weights Biases、LangChain的LangSmith、Confidence-ai的DeepEval、TruEra等等。
1.Azure AI Studio(Microsoft)
Azure AI Studio是一个用于构建、评估和部署AGI以及自定义Copilots的一体化AI平台。
参考资料:
- https://ai.azure.com/
- https://learn.microsoft.com/en-us/azure/ai-studio/concepts/evaluation-approach-gen-ai
2.Prompt Flow (Microsoft)
Prompt Flow是一套用于简化基于LLM的人工智能应用的开发工具,缩短端到端的开发周期,支持从构思、原型设计、测试和评估到生产、部署和监控的一体化开发流程。它还提供了一个VS Code扩展,基于UI的交互式流程设计器。
参考资料:
- https://github.com/microsoft/promptflow
- https://microsoft.github.io/promptflow/how-to-guides/quick-start.html
3.Weights & Biases(Weights & Biases)
这是一个机器学习平台,用于快速跟踪实验、对数据集进行版本和迭代、评估模型性能、复制模型、可视化结果和发现回归,并与同事共享成果。
参考资料:
- https://docs.wandb.ai/
- https://docs.wandb.ai/tutorials
- https://learn.deeplearning.ai/evaluating-debugging-generative-ai
- https://docs.wandb.ai/tutorials
4.LangSmith (LangChain)
可以帮助用户跟踪和评估大语言模型的应用和AI Agent,以帮助用户实现从大模型的原型到生产环境。
参考资料:
- https://www.langchain.com/langsmith
- https://docs.smith.langchain.com/evaluation
5.TruLens (TruEra)
TruLens提供了一套用于开发和监控神经网络(包括LLM)的工具。可以使用TruLens-Eval评估LLM和基于LLM的应用程序,以及使用TruLens-Explain的深度学习可解释性。
参考资料:
- https://github.com/truera/trulens
- https://www.trulens.org/trulens_eval/getting_started/
- https://learn.deeplearning.ai/building-evaluating-advanced-rag
6.Vertex AI Studio (Google)
Vertex AI Studio可以用于评估通用大模型和优化后的生成式AI模型的性能。它使用一组指标对您提供的评估数据集对模型进行评估。
参考资料:
- https://cloud.google.com/vertex-ai?hl=zh
- https://cloud.google.com/vertex-ai/docs/generative-ai/models/evaluate-models?hl=zh-cn
7.Amazon Bedrock
Amazon Bedrock支持用于大模型的评估。模型评估作业的执行结果可以用于对比选型,帮助选择最适合下游生成式AI模型。模型评估作业支持大型语言模型(LLM)的常见功能,例如:文本生成、文本分类、问答和文本摘要等。
参考资料:
- https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html
- https://docs.aws.amazon.com/bedrock/latest/userguide/model-evaluation.html
8.DeepEval (Confident AI)
这是一个用于评估LLM的开源框架。它类似于Pytest,但专门用于单元测试LLM输出。DeepEval结合了最新的研究,根据G-Eval,幻象,答案相关性,RAGAS等指标评估LLM输出,它使用LLM和其他各种NLP模型,在您的机器上本地运行以进行评估。无论您的应用程序是通过RAG或微调,LangChain或LlamaIndex实现的,DeepEval都可以覆盖您。有了它,你可以轻松地确定最佳超参数,以改善你的RAG管道,防止即时漂移,甚至可以放心地从OpenAI过渡到托管你自己的Llama2。
参考资料:
- https://github.com/confident-ai/deepeval
- https://github.com/confident-ai/deepeval/tree/main/examples
9.Parea AI
Parea可以帮助AI工程师构建可靠的、可落地的LLM应用程序。Parea提供了用于调试、测试、评估和监控基于LLM的应用程序。
参考资料:
- https://docs.parea.ai/evaluation/overview
- https://docs.parea.ai/blog/eval-metrics-for-llm-apps-in-prod
10.test-suite-sql-eval
test-suite-sql-eval是一个开源的基于精简测试集的Text-to-SQL语义评估框架。项目包含11个文本到SQL任务的测试套件评估指标。与现有的其他度量方法相比,该方法能够有效地计算语义准确度的上界。在我们的EMNLP 2020论文中提出了这一点:使用蒸馏测试套件对文本到SQL进行语义评估。
参考资料:https://github.com/taoyds/test-suite-sql-eval
11.RAGAs
Ragas是一个可帮助评估检索增强生成(RAG)的框架。RAG表示一类使用外部数据来增强LLM上下文的LLM应用程序。现有的工具和框架可以帮助您构建这些管道,但评估它并量化管道性能可能很困难。这就是Ragas(RAG评估)的用武之地。
参考资料:https://github.com/explodinggradients/ragas
12.ARES
这是一个检索增强生成(RAG)系统的自动评估框架。
参考资料:https://github.com/stanford-futuredata/ARES
三、LLM评估方法
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.com的评估指标列表如下:https://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 |
|
其他 |
Perplexit y (困惑) |
在分析文本样本时,困惑度是语言模型预测准确性的统计指标。简而言之,它衡量了模型在遇到新数据时的“惊讶”程度。较低的困惑值表示模型对文本分析的预测准确度较高。 |
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 |
答案正确性:衡量生成的答案与地面实况相比的准确性。 |
五、一些评估基准
通用大模型具有多功能性,如:聊天、实体识别(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/TruthfulQA https://arxiv.org/abs/2109.07958 |
MMLU |
评估LLM可以处理大规模多任务的能力。 |
https://github.com/hendrycks/test |
ARC |
AI2数据集分为两个分区:“简单”和“挑战”,其中后一个分区包含需要推理的更困难的问题。大多数问题有4个答案选择,1%的问题有3个或5个答案选择。 |
https://paperswithcode.com/dataset/arc |
HellaSwag排行榜:
TruthfulQA排行榜:
MMLU排行榜:
ARC排行榜:
另外,针对文本转SQL应用,也有一些,评估基准数据,如下表所示:
基准 |
描述 |
参考资料 |
WikiSQL |
WikiSQL为2017年底引入的文本到SQL用例构建的第一个大型数据集。 |
https://github.com/salesforce/WikiSQL |
Spider |
一个大规模的、复杂的、跨域语义的文本转SQL基准数据集。 |
https://yale-lily.github.io/spider |
BIRD-SQL |
BIRD(BIg Bench for LaRge scale Database Grounded Text-to-SQL Evaluation)是一个开创性的跨域数据集,它检查了大量数据库内容对文本到SQL解析的影响。 |
https://bird-bench.github.io/ |
SParC |
用于上下文中跨域语义解析的数据集。 |
https://yale-lily.github.io/sparc |
总结
本文介绍了一些评估LLM的方法和技术。但是由于不同的应用场景对模型的要求不同,另外,许多评价基准对某些特定领域有依赖关系,可能会导致无法准确预测模型的质量。
因此,到目前为止,最安全的方法仍然是基于人的评估。但是这种方法也是最耗时、最昂贵,并且不可扩展。在特定行业应用场景的大模型平台,应该可以在已有方法、框架、指标和基准的基础上进一步完善,以适应行业大模型的评估。
另外,还有一种看起来挺有前途的方法,就是使用一些大家认为比较先进的LLM来评估其他模型的属性,但由于目前最先进的大模型仍然存在提升空间,因此使用这个方法评估新的大模型,可能本身也存在一些不确定性。