本文以评测AF算法接口(Restful API) 为例,采用benchmark外部对接方式评测模型效果
流程介绍
一、外接算法评测步骤
1.准备/上传测试数据集
2.自定义Metric
3.创建Benchmark配置
4.添加Benchmark 任务
5.运行评测任务,查看日志/报告
二、评审过程的整体数据流向
1.数据集
数据集需要包含输入数据(input)、期望的数据结果/金标准(output),input传递给测试对象(即算法)作为输入,output作为评测指标传递给Metric。用户的数据可通过AD数据集模块上传/管理。
2.指标 Metric
- AD内置七种指标,可前往【Benchmark】-【Benchmark配置】-【指标库】查看
- 支持用户自定义,自定义内容可参考上传窗口的《示例模版.py》,包含:指标的定义,计算方法的定义
- 输入input分别需要“Benchmark配置 Adapter”和“Benchmark任务 Adapter”提供
3.Benchmark配置
(1)Adapter:将数据集output传递给Metric作为计算指标的参数之一
(2)算法:即评测对象,AD Benchmark支持评测的对象支持:
- a.大模型:指通过AD模型工厂添加/管理的大模型
- b.小模型:指AD模型工厂中内置的小模型
- c.自定义应用:指AD认知应用模块中开发的自定义应用服务
- d.外部接入:除了以上3中AD内部的算法外,还可支持直接对接外部API评测算法。
4.Benchmark任务
(1)Adapter
- 第一部分是将数据集input传递给算法,作为算法的输入值
- 第二部分是将算法的结果传递给Metric作为计算指标的参数
5.报告
展示Metric评测结果
最佳实践
一、AF算法接口
本文以评测AF算法接口(对应 benchmark外部对接方式) 为例,该接口将符合格式的的json经过算法解析后得到的指定字段结果对比groudtruth计算bleu指标,请求体和返回体如下:
这里我们拿整个请求的请求体作为算法评测数据集的输入,输出从response中解析得到。
二、数据集准备
Benchmark配置中支持解析的文件类型为:json、jsonl、csv(分隔符为‘\t’),如果数据不满足以上要求的,需要先处理数据集格式。
当前AF提供测试数据集为xlxs,且把12个数据集都放在一个文件中。
需要做如下步骤:
1. 把原文件切分出不同维度的csv数据集,以方便测试报告呈现出不同维度的能力,拆封后测试集内容结构如下:
2. 上传处理后的数据集至AD的数据集板块
三、自定义Metric
当数据集确认后,确定Metric的计算方式。
AF采用hugging face的evaluate中bleu指标匹配数据理解的相似度,AD默认不包含该指标,需要用户自定义。自定义模版下载入口和上传入见下图:
基于代码模版需要做如下补充/修改:
1.补充Bleu指标方法
2.修改Metric计算逻辑
3.修改输入输出定义和指标定义
(1)Metric输入输出定义
(2)指标定义
注意
- 注意Executor命名,类名为metric_name+“Executor”
- 上传时需要确保ad-task/ray-head/ray-worker/model-factory服务已包含需要的依赖,目前缺失的依赖需要手动进入安装(后续迭代优化)
四、Benchmark配置
数据集、Metric都上传完成后,可进入Benchmark配置,具体配置步骤如下:
1.新建Task:报告中一个task一条测试结果,一个task若包含多个测试文件最终会合并为1条结果
2.选择数据集
3.选择Metric
4.点击Adapter,下载示例模版,基于示例模版修改
注意:
- 上传时需要确保ad-task/ray-head/ray-worker/model-factory服务已包含需要的依赖,目前缺失的依赖需要手动进入安装(后续迭代优化)
- 为保证benchmark评测的公正性已发布的配置不允许再编辑,故配置完成后建议只保存不发布,等评测任务测试完成后再考虑发布
五、Benchmark 任务
Benchmark配置完成后(benchmark的测试数据集和指标都已确定),接下来是配置Benchmark任务。
1. 添加任务
进入【Benchamark】-【Benchmark任务】新建任务,输入任务名后:
(1)选择对应的配置、类型,输入算法名称和URL地址
(2)下载示例模版,并基于示例模版修改数据集到算法、算法结果到metric的逻辑
- 数据集input传递给算法
- 算法返回结果到Metric
3.点击【运行】按钮,即可
2.查看任务
(1)点击“状态”区域,可以查看构建任务,如下图:
3.榜单
稳定的且已发布的benchmark配置运行出来的任务可在榜单中对比不同模型下的测试结果
注意:
只有Benchmark配置为“已发布”状态的任务完成后才会进入榜单,其他状态的运行结果,可以在任务列表中单击“操作-查看结果”查看,如图:
六、Adapter总结
- 脚本中的类名或方法名与数据集名等有强绑定关系,建议按步骤操作后基于下载的示例模版修改实现
- 梳理清楚【benchmark配置Adapter】测试数据集输入与Metric输入的对应关系
- 梳理清楚【benchmark配置Adapter】测试数据集输出与【benchmark任务Adapter】输入的对应关系
- 注意传递参数的格式/内容是否符合下一个接收者