可视化#

可视化功能支持单模型评测结果和多模型评测结果对比,支持数据集混合评测可视化。

重要

该可视化工具专门用于展示模型评测结果,不适用于模型推理服务的压测结果可视化。如需查看模型推理服务的压测结果可视化,请参考压测结果可视化指南

安装依赖#

安装可视化所需的依赖,包括gradio、plotly等。

pip install 'evalscope[app]' -U

备注

可视化功能需要evalscope>=0.10.0输出的评测报告,若版本小于0.10.0,请先升级evalscope进行模型评测。

启动可视化服务#

运行如下命令启动可视化服务。

evalscope app

支持的命令行参数如下:

  • --outputs: 类型为字符串,用于指定评测报告所在的根目录,默认值为./outputs

  • --lang: 类型为字符串,用于指定界面语言,默认值为中文zh,支持zhen

  • --share: 作为标志参数,是否共享应用程序,默认值为False

  • --server-name: 类型为字符串,默认值为0.0.0.0,用于指定服务器名称。

  • --server-port: 类型为整数,默认值为7860,用于指定服务器端口。

  • --debug: 作为标志参数,是否调试应用程序,默认值为False

输出如下内容即可在浏览器中访问可视化服务。

* Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

快速体验#

运行如下命令,即可下载样例并快速体验可视化功能,样例中包含Qwen2.5-0.5B和Qwen2.5-7B模型在ceval, humaneval, arc, gsm8k, ifeval数据集上部分示例的评测结果。

git clone https://github.com/modelscope/evalscope
evalscope app --outputs evalscope/examples/viz

功能介绍#

选择评测报告#

按下图所示步骤选择评测报告:

alt text
  1. 输入评测报告的根目录,默认值为./outputs,会根据如下目录结构来寻找评测报告json文件:

    outputs/
    ├── time_stamp_1
    │   ├── reports
    │   │   ├── model_name_1
    │   │   │   ├── report1.json
    │   │   │   ├── report2.json
    ├── time_stamp_2
    │   ├── reports
    │   │   ├── model_name_1
    │   │   │   ├── report1.json
    │   │   │   ├── report2.json
    
  2. 选择评测报告,点击下拉框选择评测报告,若不选择,则弹出警告。

  3. 点击加载并查看按钮,即可查看可视化。

单模型评测结果可视化#

  1. 点击单模型选项页按钮

  2. 选择报告下拉框中选择已加载的评测报告,将自动展示评测报告总览

  3. 点击任务配置可查看任务配置信息 alt text

评测报告总览

  1. 展示评测数据集的组成:其由内而外分别表示数据集名称、数据集类别、子数据集名称;扇形区域大小表示数据集样本数量;颜色表示数据集得分

  2. 分别用条形图和表格展示各数据集打分结果 alt text

单个数据集详情

  1. 选择数据集,将展示模型在该数据集上的评测结果

  2. 使用条形图和表格展示模型在不同指标下、不同子数据集上的评测结果 alt text

  3. 选择子数据集,将展示模型在该子数据集上的评测结果,可以点击答案模式筛选模型输出结果。其中

    • Input表示模型输入;

    • Generated表示模型输出;

    • Gold表示标准答案;

    • Pred表示经过后处理的模型预测结果;

    • Score表示模型得分;

    • NScore表示归一化的模型得分,用于表示模型得分是否通过

    alt text

多模型评测结果对比可视化#

  1. 点击多模型选项页按钮

  2. 选择报告下拉框中选择已加载的评测报告,将自动展示评测报告总览,可以多项选择

  3. 使用雷达图和对比表格进行展示 alt text

数据集混合评测可视化#

本看板也支持数据集混合评测可视化,将按照数据混合schema的结构进行可视化展示

例如如下结构的schema:

schema = CollectionSchema(name='math&reasoning', datasets=[
            CollectionSchema(name='math', datasets=[
               DatasetInfo(name='gsm8k', weight=1, task_type='math', tags=['en', 'math']),
               DatasetInfo(name='competition_math', weight=1, task_type='math', tags=['en', 'math']),
               DatasetInfo(name='cmmlu', weight=2, task_type='math', tags=['zh', 'math'], args={'subset_list': ['college_mathematics', 'high_school_mathematics']}),
               DatasetInfo(name='ceval', weight=3, task_type='math', tags=['zh', 'math'], args={'subset_list': ['advanced_mathematics', 'high_school_mathematics', 'discrete_mathematics', 'middle_school_mathematics']}),
            ]),
            CollectionSchema(name='reasoning', datasets=[
               DatasetInfo(name='arc', weight=1, task_type='reasoning', tags=['en', 'reasoning']),
               DatasetInfo(name='ceval', weight=1, task_type='reasoning', tags=['zh', 'reasoning'], args={'subset_list': ['logic']}),
               DatasetInfo(name='race', weight=1, task_type='reasoning', tags=['en', 'reasoning']),
            ]),
         ])

可视化报告如下,可见结构与schema一致,为:

math&reasoning
├── math
│   ├── gsm8k
│   ├── competition_math
│   ├── cmmlu
│   ├── ceval
├── reasoning
│   ├── arc
│   ├── ceval
│   ├── race

alt text