如何通过MT-Bench评估大模型

如何评估LLM在开放性问题的回答能力

  前面三篇博客中介绍了如何评估大模型,内容包括评估大模型时常用的指标,每个指标背后的含义,如何通过编写代码实现指标的收集。对于pass@k指标,还进行了专门的说明。在前面的博客中,我们提到,对于数据集大致可以分为三类,选择题,数学题,代码生成题,对于这三类数据集,在收集指标时,实现过程都有所不同,具体如下图所示。

  可以看到,上面的数据集都找到了一种方式来评估LLM生成的内容是否正确,那么,如果是针对开放性问题,如何评估LLM的能力呢?比如让LLM写一篇优美的作文,写一封措辞友好的email等。这类问题,无法通过选择题来做标准数据集,在实际应用中,很多下游任务往往是这种更贴近人类的开放性问题任务,他不会是做一个选择题或者数学题。对于这类任务,如何有效的评估LLM的能力呢?本篇博客提到的MT-Bench评估方法就是解决该类问题的。

如何实现MT-Bench评估

MT-Bench采用的数据集

   首先来看看MT-Bench评估所采用的数据集,如下图所示,可以看到MT-Bench方法采用的数据集包含了写作、角色扮演、推理、数学、编码、人文、提取、STEM(科学(Science),技术(Technology),工程(Engineering),数学(Mathematics)四门学科英文首字母的缩写),8个不同领域的问题。和前面介绍的数据集mmlu,c-eval等相似。

  具体到某个类型下的数据,如下图所示,包括category,prompt,reference,这里的reference是标准答案,有些category类型有标准答案,有些是没有的。

MT-Bench评估方法的原理

  一句话理解就是用GPT4作为裁判,对其他大模型生成的内容进行打分,分数设置为1-10,通过分数高低来评估LLM生成的内容的质量。

  在MT-Bench中会提到两个术语,第一个是turn1,turn2,即第一轮和第二轮,这里的turn2指的是:针对第一个问题,继续问第二个相关性问题,对于第二个问题的得分情况。例如,如下图所示,可以看到,第二个问题都和第一个问题紧密相关。

  MT-Bench中第二个术语就是“Single Answer Grading”和“Pariwise Comparison”。Single Answer的意思就是:针对大模型的回答,给出具体的分数;Pariwise的意思是:在输入时会给出两个模型生成的答案,让GPT4判断哪个大模型生成的答案更好。理解了上面的术语后,我们再来看看MT-Bench中使用到的Prompt

MT-Bench中使用到的Prompt

MT-Bench中使用到的prompt部分截图,如下所示,如果要review所有的prompt,查看这里。

上面的prompt中,大概的意思就是让gpt作为judge裁判,对内容进行评估, 对上面的pair-v2的system_prompt信息进行翻译,内容如下所示:“请充当一个公正的评委,评估两个AI助手对以下用户问题提供的回应的质量。您应选择那个按照用户的指示更好地回答了用户的问题的助手。您的评估应考虑诸如回应的实用性、相关性、准确性、深度、创造性和详细程度等因素。开始您的评估,比较两个回应并提供简要解释。避免任何立场偏见,并确保回应的呈现顺序不影响您的决定。不要让回应的长度影响您的评估。不要偏袒助手的某些名称。请尽量客观。在提供解释后,请按照以下格式严格输出您的最终判决:“[[A]]”如果助手A更好,“[[B]]”如果助手B更好,对于平局,请输出“[[C]]

对于single-v1的prompt_template信息进行翻译,内容如下所示“

[指导]
请充当一个公正的评委,评估AI助手对以下用户问题的回应质量。您的评估应考虑回应的实用性、相关性、准确性、深度、创造性和详细程度等因素。开始您的评估,提供简要解释。请尽量客观。在提供解释后,您必须按照以下格式严格给出对回应的评分,使用这个格式:“[[评分]]”,例如:“评分:[[5]]”。

[问题]
{问题}

[助手回答的开始]
{回答}
[助手回答的结束]

 通过对上面prompt的分析,可以进一步知道MT-Bench的工作原理。即,首先调用需要评估的大模型将数据集中的问题作为输入,得到大模型生成的答案,再通过gpt4对生成的答案进行打分,得到最终的评估结果。

MT-Bench脚本执行过程

  在Fashchat的官网给出了如何通过运行脚本收集评估结果的步骤,这里做简要介绍。如果对FastChat如何部署大模型不清楚,可以参考我前面的关于FastChat的博客。

第一:通过FastChat部署需要评估的大模型

git clone https://github.com/lm-sys/FastChat.git
cd FastChat
pip install -e ".[model_worker,llm_judge]"
python3 -m fastchat.serve.controller
python3 -m fastchat.serve.vllm_worker --model-path [MODEL-PATH]
python3 -m fastchat.serve.openai_api_server --host localhost --port 8000

第二:调用部署模型的接口生成答案

python gen_api_answer.py --model [MODEL-NAME] --openai-api-base http://localhost:8000/v1 --parallel 50

第三:调用GPT4对生成的答案的评分

export OPENAI_API_KEY=XXXXXX  # set the OpenAI API key
python gen_judgment.py --model-list [LIST-OF-MODEL-ID] --parallel [num-concurrent-api-call]

MT-Bench评估存在的局限性

  虽然MT-Bench可以帮助评估LLM在开放性问题方面的能力,但也有很多局限性,这些局限性导致给出的评估结果可能不是完全正确。具体的局限性如下所示:

1.Position bias,位置偏见,当两个模型答案比较靠近的时候,交换两个模型的答案的位置,会改变评估结果,通常来说,靠前的答案,得分更高一些。
2.Verbosity bias,啰嗦性偏见,如果内容写的更多,通常能拿到更好的分数。
3.Self-enhancement bias,自我增强的偏见,如果其他模型生成的内容,与gpt4生成的内容更贴近,通常得分更高。
4.Limited capability in grading math and reasoning questions,对数学和推理问题的评分能力有限。

总结

  对于MT-Bench的局限性,我是这样看待的,有评估指标强过没有评估指标。另外,还可以通过相对比较的方式,评估可选模型中哪些模型能力相对更好一些。

  MT-Bench评估方法提供的数据集只包含了8个典型领域的问题,在实际应用中,还可以进一步扩张,使用MT-Bench评估方法的思路,对微调后的模型或者垂直领域模型进行评估。例如,训练了一个专门写测试用例的模型,那么可以准备一份测试用例数据集,采用MT-Bench的思路进行评估。总结而言,MT-Bench提出的评估模型思路是非常有价值的,尽管存在一些局限性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/289192.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用 TailwindCSS 画一条0.5px的线条

背景 在移动端项目,一般为了让线条看起来更细、更锐利,此时使用0.5px的线条是非常合适的。那么如何使用TailwindCSS画一条0.5px的线条呢? 在实现这个需求的时候,首先去TailwindCSS官网查了一下border有没有对应的内置工具类&…

mysql:查看服务端为了处理连接而创建的线程数量

使用命令show global status like Threads_created;可以查看服务端为了处理连接而创建的线程数量。 例如:

信息收集 - 网站架构

网站架构组成 通常,一个典型的网站架构包括以下组件: 动态脚本语言:动态脚本语言用于处理网站的逻辑和动态内容生成。常见的动态脚本语言包括PHP、Python、Ruby和Node.js等。这些脚本语言可以根据用户请求生成动态的网页内容。 数据库:数据库用于存储网站的数据,包括用户…

对GPU进行压力测试

GPU压力测试工具安装指导(RHEL8.2) - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/443165016 1、下载gpu-burn工具 下载地址:https://github.com/wilicc/gpu-burn 2、上传到系统后安装 # unzip gpu-burn-master.zip # cd gpu-burn-mas…

华清远见嵌入式学习——ARM——作业1

要求: 代码: mov r0,#0 用于加mov r1,#1 初始值mov r2,#101 终止值loop: cmp r1,r2addne r0,r0,r1addne r1,r1,#1bne loop 效果:

【Spring-Securty】安全框架使用详解

前言: 上一篇我分享了,关于使用swarrger的博客, 今天来分享关于security的操作: 在日常开发中,几乎所有的项目都需要进行请求的安全校验操作。 通常会采取以下几种方式来实现安全校验和过滤。 1、实例化HandlerInterce…

PSP - 蛋白质与蛋白质的扩散对接 DiffDock-PP 算法

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/135115528 DiffDock-PP is a new approach to rigid-body protein-protein docking that is based on a diffusion generative model that learns…

回归预测 | MATLAB实现GWO-DHKELM基于灰狼算法优化深度混合核极限学习机的数据回归预测 (多指标,多图)

回归预测 | MATLAB实现GWO-DHKELM基于灰狼算法优化深度混合核极限学习机的数据回归预测 (多指标,多图) 目录 回归预测 | MATLAB实现GWO-DHKELM基于灰狼算法优化深度混合核极限学习机的数据回归预测 (多指标,多图&#…

SLA阿里云,腾讯云,华为云服务测量指标

SLA 的由来 在云计算时代,越来越多企业的服务迁移到云上,各大云服务厂商有自己服务发布的SLA,SLA是服务提供商与客户之间定义的正式承诺。 我们使用云服务提供商为我们提供的 APP 或者网站,如果出现购物无法下单、看视频打不开类…

浅析 ArrayList

ArrayList是一个使用List接口实现的Java类。顾名思义,Java ArrayList提供了动态数组的功能,其中数组的大小不是固定的。它实现了所有可选的列表操作,并允许所有元素,包括null。 ArrayList 继承于 AbstractList ,实现了…

js知识点1:防抖节流

js知识点1:防抖节流 防抖节流 防抖节流,本质上是优化高频率执行代码的一种手段 定义: 防抖: n 秒后再执行该事件,若在 n 秒内被重复触发,则重新计时 节流: n 秒内只运行一次,若在 n 秒内重复触发&#xff0…

存储:The file system wasn‘t safely closed on Windows.

借鉴:mount -t ntfs-3g 挂载失败 The disk contains an unclean file system (0, 0). - 简书 (jianshu.com) 原因:进程未关闭,无法读写磁盘 [rootlocalhost /]# mount -t ntfs-3g /dev/sdb2 /data1/ The disk contains an unclean file sys…