UltraEval:开源模型测评框架,集成模型部署、测试数据集、数据指标统计
模型测评
评估对提升大型语言模型(LLMs)的性能至关重要,它能帮助我们精确把握模型的能力并指导其优化。随着 LLMs 的迅猛发展,我们急需一个轻巧、易于操作的评估框架,以便快速进行评估。然而,鉴于众多实施细节的考量,打造一个全面的评估平台并非易事。现有的评估平台往往过于复杂,模块化程度低,难以与研究人员的工作流程无缝对接。本文推出了 UltraEval,这是一个用户友好的评估框架,它以轻量、全面、模块化和高效著称。我们筛选并重新构建了模型评估的三大核心要素(模型、数据和评价指标)。这种组合的灵活性使得在同一个评估流程中可以自由搭配不同的模型、任务、提示和评价指标。此外,UltraEval 得益于其统一的 HTTP 服务,能够支持多种模型,同时提供强大的推理加速能力。目前,UltraEval 已经向研究界公开发布。
缘起
大语言模型在过去一年多时间里的进展可谓突飞猛进,这一进展也拉近了人类现实与AGI的距离。随着大语言模型不断地进步和发展,我们也需要持续的对大语言模型的能力进行持续而细致的评估。
传统的测试往往集中在某一特定领域,缺乏全面系统性的评价。
另一方面,传统的测试往往单独构建评估流程,但是这样的做法效率低下,并且存在大量的重复劳动。
因此,作者想构建一个综合性的评估框架。
目前,市面上的一些从模型部署到评估全链条的评估框架大体上包括两种:
鉴于以上问题,作者提出了一个UltraEval的轻量级测试评估框架。
什么是UltraEval ?

模型评估一般包括三个核心组成部分:模型(或系统)、任务数据和指标(即评估方法)。作者基于这三部分构建了一个轻量级、且操作友好的大语言模型评估开源框架:UltraEval。

上图展示了UltraEval的三个核心组件:数据准备、模型部署、模型评估。
数据准备
数据准备是将原始数据转换成模型能够识别的输入格式的过程,这包括对数据进行预处理和设计Prompt模板。
在数据预处理方面,我们搜集了一系列评估大语言模型Agent(LLM)的标准测试,比如MMLU、GSM8K和Hellaswag等,这些测试覆盖了模型能力的多个方面。目前,我们已经汇集了59种不同的基准测试,并计划持续扩充测试集。
为了保证数据的准确无误,从Hugging Face和GitHub等信誉良好的平台直接获取数据,避免使用经过第三方修改的数据。鉴于不同基准测试中数据格式的多样性,我们设计了一系列模板,将这些格式统一标准化为JSON格式,为评估工作奠定基础。
在Prompt模板设计方面,UltraEval支持进行提示工程,包括少量样本学习和思维链推理(CoT)等技术,以增强模型的逻辑推理能力。由于大语言模型Agent对提示非常敏感,而且不同任务中的提示方式也各不相同,研究人员往往难以复现学术论文中的结果,这在一定程度上阻碍了研究的发展。UltraEval通过为每个任务提供定制化、稳定的提示模板来解决这一问题,便于研究者获得一致的评估结果。
模型部署
UltralEval使用了vLLM和gunicore技术,实现了模型的多GPU部署加速,并对外提供Http服务。

HTTP服务的优势在于:
• 模型独立性得到保障,通过统一接口接收任务数据和超参数,独立完成推理并返回结果,便于进行超参数调整。
• 支持全面的模型加载,可直接从Huggingface Transformers库中加载,理论上兼容所有模型,包括个人在不同框架下实验的模型,极大地提升了研发的灵活性。vLLM作为基础加速框架,优先支持其所涵盖的模型。
• 具备极佳的扩展能力,用户可轻松将模型从语言应用扩展至多模态应用。
在多GPU加速方面,UltraEval通过Gunicorn Web服务器配合Flask进行模型部署,实现了模型部署与评估的灵活解耦,支持动态GPU加速。Gunicorn服务器根据特定环境配置,管理多个工作进程,每个进程负责一部分GPU资源,同步执行推理任务,大幅提升了计算效率和处理能力。
利用4个A800 GPU,UltralEval可以在1.5小时内完成41K测试数据集的测试。
评估技巧
后处理环节

模型的输出受到任务性质、提示模板和模型性能等多种因素的影响,往往包含了超出答案本身所需的多余信息。例如,上图中,ChatGPT对HumanEval问题的回应可能既包含代码也包含额外的文字描述,这给自动评估带来了难度。为了更精确地评估模型性能,我们需要对模型输出进行后处理,提炼出最关键的答案。
后处理分为模型和任务两个层面。由于模型训练方法的不同,会产生聊天版和基础版等不同版本,每种版本需要采用不同的处理方法。同时,不同的任务也有其特定的评估方法。例如,在图7中,首先需要从ChatGPT的回应中提取代码段。然后,根据HumanEval的评估标准,需要从代码中提取函数主体,同时忽略函数名,以便得到更为清晰和精确的答案。UltraEval针对当前的任务和模型,开发了多种定制化的后处理方法。
指标计算
评估方法根据能否自动计算被划分为自动评估和人工评估两大类。在自动评估中,我们实现了诸如文本生成任务的精确匹配、二元分类任务的F1分数、翻译任务的ROUGEL以及编码任务的pass@k等常用指标。特别是在精确匹配方面,我们开发了in match和prefix match等扩展,以更有效地适应多种场景。
由于UltraEval是一个自动化的评估框架,对于需要人工评估的部分,我们集成了GPT-4作为鉴别器,以替代人工评估。此外,所有数据结果都可以根据用户的偏好进行保存,用户可以自行选择是否进行人工评估,这为实现更为客观的评估提供了极大的灵活性。
局限性
https://arxiv.org/abs/2404.07584
通往 AGI 的神秘代码
if like_this_article():
do_action('点赞')
do_action('再看')
add_wx_friend('iamxxn886')
if like_all_arxiv_articles():
go_to_link('https://github.com/HuggingAGI/HuggingArxiv') star_github_repo(''https://github.com/HuggingAGI/HuggingArxiv')