# 可视化

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

```{important}
该可视化工具专门用于展示模型评测结果，不适用于模型推理服务的压测结果可视化。如需查看模型推理服务的压测结果可视化，请参考[压测结果可视化指南](../user_guides/stress_test/quick_start.md#可视化测试结果)。
```

## 安装依赖

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

```bash
pip install 'evalscope[app]' -U
```
```{note}
可视化功能需要`evalscope>=0.10.0`输出的评测报告，若版本小于`0.10.0`，请先升级`evalscope`进行模型评测。
```

## 启动可视化服务

运行如下命令启动可视化服务。
```bash
evalscope app
```

支持的命令行参数如下：

- `--outputs`: 类型为字符串，用于指定评测报告所在的根目录，默认值为`./outputs`。
- `--lang`: 类型为字符串，用于指定界面语言，默认值为中文`zh`，支持`zh`和`en`。
- `--share`: 作为标志参数，是否共享应用程序，默认值为`False`。
- `--server-name`: 类型为字符串，默认值为`0.0.0.0`，用于指定服务器名称。
- `--server-port`: 类型为整数，默认值为`7860`，用于指定服务器端口。
- `--debug`: 作为标志参数，是否调试应用程序，默认值为`False`。

输出如下内容即可在浏览器中访问可视化服务。
```text
* 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数据集上部分示例的评测结果。

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

## 功能介绍

### 选择评测报告

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

```{image} ./images/setting.png
:alt: alt text
:width: 60%
:align: center
```


1. 输入评测报告的根目录，默认值为`./outputs`，会根据如下目录结构来寻找评测报告json文件：
   ```text
   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](./images/single_model.png)



**评测报告总览**

1. 展示评测数据集的组成：其由内而外分别表示数据集名称、数据集类别、子数据集名称；扇形区域大小表示数据集样本数量；颜色表示数据集得分
2. 分别用条形图和表格展示各数据集打分结果
   ![alt text](./images/report_overview.png)

**单个数据集详情**
1. 选择数据集，将展示模型在该数据集上的评测结果
2. 使用条形图和表格展示模型在不同指标下、不同子数据集上的评测结果
   ![alt text](./images/single_dataset.png)
3. 选择子数据集，将展示模型在该子数据集上的评测结果，可以调整阈值，点击`答案模式`筛选模型输出结果。其中
   - `Input`表示模型输入；
   - `Generated`表示模型输出；
   - `Gold`表示标准答案；
   - `Pred`表示经过后处理的模型预测结果；
   - `Score`表示模型得分；
   - `NScore`表示归一化的模型得分，用于表示模型得分是否通过

   ![alt text](./images/model_prediction.png)


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

1. 点击`多模型`选项页按钮
2. 在`选择报告`下拉框中选择已加载的评测报告，将自动展示评测报告总览，可以多项选择
3. 点击`模型概览`，使用雷达图和对比表格进行展示
   ![alt text](./images/model_compare.png)
4. 点击`模型对比详情`，选择需要对比的两个模型，将展示两个模型在各数据集上的评测结果对比。可以调整阈值，点击`答案模式`筛选模型输出结果。
   ![alt text](https://sail-moe.oss-cn-hangzhou.aliyuncs.com/yunlin/images/evalscope/doc/model_compare_viz.jpg)

### 数据集混合评测可视化

本看板也支持[数据集混合评测](../advanced_guides/collection/index.md)可视化，将按照数据混合schema的结构进行可视化展示

例如如下结构的schema：

```python
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一致，为：
```text
math&reasoning
├── math
│   ├── gsm8k
│   ├── competition_math
│   ├── cmmlu
│   ├── ceval
├── reasoning
│   ├── arc
│   ├── ceval
│   ├── race
```
![alt text](./images/collection.png)
