# 快速上手 EvalScope 是一个为大模型设计的评测框架,旨在提供简单易用、功能全面的评测流程。本指南将引导您完成从简单到复杂的各类评测任务,帮助您快速上手。 ## 开始第一次评测 您可以通过命令行或 Python 代码两种方式,在指定数据集上使用默认配置评测一个模型。 ### 方式1:使用命令行 在任意路径下执行 `evalscope eval` 命令即可启动评测。这是最推荐的入门方式。 ```bash evalscope eval \ --model Qwen/Qwen2.5-0.5B-Instruct \ --datasets gsm8k arc \ --limit 5 ``` **基本参数说明:** - `--model`: 指定模型的 ModelScope ID (如 `Qwen/Qwen2.5-0.5B-Instruct`) 或本地路径。 - `--datasets`: 指定一个或多个数据集名称,以空格分隔。支持的数据集请参考[数据集列表](./supported_dataset/index.md)。 - `--limit`: 每个数据集最多评测的样本数,便于快速验证。若不设置,则评测全量数据。 ### 方式2:使用 Python 代码 通过调用 `run_task` 函数并传入 `TaskConfig` 配置,可以在 Python 环境中运行评测。配置可以是 `TaskConfig` 对象、Python 字典,或 `yaml`/`json` 文件路径。 ::::{tab-set} :::{tab-item} 使用 `TaskConfig` 对象 ```python from evalscope.run import run_task from evalscope.config import TaskConfig task_cfg = TaskConfig( model='Qwen/Qwen2.5-0.5B-Instruct', datasets=['gsm8k', 'arc'], limit=5 ) run_task(task_cfg=task_cfg) ``` ::: :::{tab-item} 使用 Python 字典 ```python from evalscope.run import run_task task_cfg = { 'model': 'Qwen/Qwen2.5-0.5B-Instruct', 'datasets': ['gsm8k', 'arc'], 'limit': 5 } run_task(task_cfg=task_cfg) ``` ::: :::{tab-item} 使用 YAML 文件 ```{code-block} yaml :caption: config.yaml model: Qwen/Qwen2.5-0.5B-Instruct datasets: - gsm8k - arc limit: 5 ``` ```python from evalscope.run import run_task run_task(task_cfg="config.yaml") ``` ::: :::{tab-item} 使用 JSON 文件 ```{code-block} json :caption: config.json { "model": "Qwen/Qwen2.5-0.5B-Instruct", "datasets": ["gsm8k", "arc"], "limit": 5 } ``` ```python from evalscope.run import run_task run_task(task_cfg="config.json") ``` ::: :::: ### 查看评测结果 评测完成后,终端会打印出如下格式的得分报告: ```text +-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+ | Model Name | Dataset Name | Metric Name | Category Name | Subset Name | Num | Score | +=======================+================+=================+=================+===============+=======+=========+ | Qwen2.5-0.5B-Instruct | gsm8k | AverageAccuracy | default | main | 5 | 0.4 | +-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+ | Qwen2.5-0.5B-Instruct | ai2_arc | AverageAccuracy | default | ARC-Easy | 5 | 0.8 | +-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+ | Qwen2.5-0.5B-Instruct | ai2_arc | AverageAccuracy | default | ARC-Challenge | 5 | 0.4 | +-----------------------+----------------+-----------------+-----------------+---------------+-------+---------+ ``` ````{tip} 您还可以通过可视化工具来深入分析评测结果: ```bash pip install 'evalscope[service]' evalscope service ``` 服务启动后,访问 `http://127.0.0.1:9000` 即可打开可视化界面。详情参考:[评测结果可视化](visualization.md) ```` ## 进阶用法 ### 评测在线模型 API EvalScope 支持评测兼容 OpenAI API 格式的模型服务。只需指定服务地址、API Key,并将 `eval-type` 设置为 `openai_api`。 **示例1:直接评测 OpenAI API 兼容的云端服务(推荐入门方式,无需 GPU)** 支持任意 OpenAI API 兼容的模型服务,只需配置 `$OPENAI_API_BASE_URL` 与 `$OPENAI_API_KEY` 即可: ```shell evalscope eval \ --model your-model-name \ --api-url $OPENAI_API_BASE_URL \ --api-key $OPENAI_API_KEY \ --eval-type openai_api \ --datasets gsm8k \ --limit 10 ``` **示例2:评测自部署的模型服务** 以 vLLM 为例,启动一个模型服务: ```shell # 请先安装 vLLM: pip install vllm export VLLM_USE_MODELSCOPE=True python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen2.5-0.5B-Instruct \ --served-model-name qwen2.5 \ --trust-remote-code \ --port 8801 ``` 使用以下命令评测该 API 服务: ```shell evalscope eval \ --model qwen2.5 \ --api-url http://127.0.0.1:8801/v1 \ --api-key EMPTY \ --eval-type openai_api \ --datasets gsm8k \ --limit 10 ``` 如需评测 OpenAI 官方 Responses API,请设置 `--eval-type openai_responses_api`,并将 `--api-url` 指向 API 根路径: ```shell evalscope eval \ --model gpt-4.1-mini \ --api-url https://api.openai.com/v1 \ --api-key $OPENAI_API_KEY \ --eval-type openai_responses_api \ --datasets gsm8k \ --limit 10 \ --generation-config '{"stream": true, "max_tokens": 512}' ``` ### 自定义评测参数 **示例1. 调整模型加载和推理生成参数** 您可以通过传入 JSON 格式的字符串来精细化控制模型加载、推理生成和数据集配置。 ```shell evalscope eval \ --model Qwen/Qwen3-0.6B \ --model-args '{"revision": "master", "precision": "torch.float16", "device_map": "auto"}' \ --generation-config '{"do_sample":true,"temperature":0.6,"max_tokens":512}' \ --dataset-args '{"gsm8k": {"few_shot_num": 0, "few_shot_random": false}}' \ --datasets gsm8k \ --limit 10 ``` **常用参数说明:** - `--model-args`: 模型加载参数,例如 `revision` (版本), `precision` (精度), `device_map` (设备映射)。 - `--generation-config`: 推理生成参数,例如 `do_sample` (采样), `temperature` (温度), `max_tokens` (最大长度)。 - `--dataset-args`: 数据集专属参数,以数据集名称为键。例如 `few_shot_num` (少样本数量)。 **示例2. 调整结果聚合方式** 对于需要多次生成的任务(如数学题),可以通过 `--repeats` 参数指定重复生成次数k,并使用 `dataset-args` 调整结果聚合方式,例如 `mean_and_vote_at_k`、`mean_and_pass_at_k`、`mean_and_pass^k`。 ```shell evalscope eval \ --model Qwen/Qwen2.5-0.5B-Instruct \ --datasets gsm8k \ --limit 10 \ --dataset-args '{"gsm8k": {"aggregation": "mean_and_vote_at_k"}}' \ --repeats 5 ``` ```{seealso} 查看所有可配置项,请参考:[全部参数说明](parameters.md) ``` ### 使用裁判模型进行评估 对于某些主观或开放式任务(如 `simple_qa`),可以指定一个强大的“裁判模型”来评估目标模型的输出。 ```python import os from evalscope import TaskConfig, run_task from evalscope.constants import JudgeStrategy task_cfg = TaskConfig( model='qwen2.5-7b-instruct', api_url='https://dashscope.aliyuncs.com/compatible-mode/v1', api_key=os.getenv('DASHSCOPE_API_KEY'), eval_type='openai_api', datasets=['chinese_simpleqa'], limit=5, judge_strategy=JudgeStrategy.AUTO, judge_model_args={ 'model_id': 'qwen2.5-72b-instruct', 'api_url': 'https://dashscope.aliyuncs.com/compatible-mode/v1', 'api_key': os.getenv('DASHSCOPE_API_KEY'), } ) run_task(task_cfg=task_cfg) ``` ```{seealso} 关于裁判模型的详细配置,请参考:[裁判模型参数](./parameters.md#judge参数) ``` ### 使用 Hugging Face 数据集 EvalScope 默认从 ModelScope 加载数据集。如需改用 Hugging Face Hub,将 `--dataset-hub` 设置为 `huggingface` 即可。当某个数据集在 Hugging Face 与 ModelScope 上的仓库 ID 不一致时,再通过 `--dataset-args` 覆盖该数据集的 `dataset_id`。 以 `ocr_bench` 为例,其默认 ID 为 ModelScope 上的 `evalscope/OCRBench`,对应 Hugging Face 仓库为 `echo840/OCRBench`: ```shell evalscope eval \ --model Qwen/Qwen2.5-VL-7B-Instruct \ --datasets ocr_bench \ --dataset-hub huggingface \ --dataset-args '{"ocr_bench": {"dataset_id": "echo840/OCRBench"}}' \ --limit 5 ``` 等价的 Python 写法: ```python from evalscope import TaskConfig, run_task task_cfg = TaskConfig( model='Qwen/Qwen2.5-VL-7B-Instruct', datasets=['ocr_bench'], dataset_hub='huggingface', dataset_args={ 'ocr_bench': { 'dataset_id': 'echo840/OCRBench', }, }, limit=5, ) run_task(task_cfg=task_cfg) ``` ```{tip} 若数据集在 Hugging Face 与 ModelScope 上的仓库 ID 相同,只需设置 `--dataset-hub huggingface`,无需再传 `dataset_id`。 ``` ### 离线评测 在无网络环境下,您可以使用本地缓存的模型和数据集进行评测。 **1. 准备本地数据集** 数据集默认托管在[ModelScope](https://modelscope.cn/datasets)上,加载需要联网。如果是无网络环境,可以使用本地数据集和模型,流程如下: 1) 首先查看想要使用的数据集在modelscope上的ID:在[支持的数据集](./supported_dataset/index.md)列表中查找到需要使用的数据集的**数据集ID**,例如`mmlu_pro`的ID为 `modelscope/MMLU-Pro`。 2) 使用modelscope命令下载数据集:点击“数据集文件”tab -> 点击“下载数据集” -> 复制命令行 ```bash # 下载数据集 modelscope download --dataset modelscope/MMLU-Pro --local_dir ./data/mmlu_pro ``` 3) 使用目录`./data/mmlu_pro`作为`local_path`参数的值传入即可。 **2. 准备本地模型** 模型文件托管在ModelScope Hub端,需要联网加载,当需要在离线环境创建评测任务时,可提前将模型下载到本地: 例如使用modelscope命令下载[Qwen2.5-0.5B-Instruct](https://modelscope.cn/models/Qwen/Qwen2.5-0.5B-Instruct)模型到本地: ```bash modelscope download --model modelscope/Qwen2.5-0.5B-Instruct --local_dir ./model/qwen2.5 ``` ```{seealso} 更多下载选项,请参考 [ModelScope下载指南](https://modelscope.cn/docs/models/download)。 ``` **3. 运行离线评测** 在评测命令中,将 `--model` 指向本地模型路径,并通过 `--dataset-args` 指定数据集的 `local_path`。 ```shell evalscope eval \ --model ./model/qwen2.5 \ --datasets mmlu_pro \ --dataset-args '{"mmlu_pro": {"local_path": "./data/mmlu_pro"}}' \ --limit 10 ``` ### 从已有/中断的评测结果继续评测 如果之前的评测任务中断,或者您想基于已有的评测结果继续进行评测,可以使用 `--use-cache` 参数指定之前的输出目录。这将跳过已完成的样本,只评测剩余样本。此外,还可以通过 `--rerun-review` 参数强制对所有样本重新执行评分步骤。 ```shell evalscope eval \ --model Qwen/Qwen2.5-0.5B-Instruct \ --datasets gsm8k \ --limit 10 \ --use-cache outputs/20230101_123456 \ --rerun-review ``` ### 跳过评测出错的样本 在某些情况下,模型可能会因为输入过长、超时、模型服务崩溃等原因导致推理失败,或评测过程中出现了未知错误。这时程序会抛出异常并中断评测流程。您可以通过 `--ignore-errors` 参数跳过这些出错样本,继续评测剩余样本。在评测报告中,这些样本会被忽略,也就是说最终评测的样本数量会减少。 ```shell evalscope eval \ --model Qwen/Qwen2.5-0.5B-Instruct \ --datasets gsm8k \ --limit 10 \ --ignore-errors ``` ```{admonition} 从 v0.1.x 迁移 :class: tip, dropdown 如果您之前使用的是 v0.1.x 版本,升级到 v1.0+ 后请注意以下主要变化: 1. **本地数据集**:不再支持 `zip` 压缩包格式。请参考[离线评测](#离线评测)指引,使用 `local_path` 参数加载本地数据集。 2. **可视化兼容性**:v1.0 的输出报告格式已更新,旧版报告与新版可视化工具不兼容。 3. **推理参数**:模型推理参数 `n` 已被移除,请改用 `repeats` 参数来控制重复生成次数。 4. **评测流程控制**:`stage` 参数已移除。新增 `rerun_review` 参数,用于在 `use_cache=True` 时强制重新执行评分步骤。 5. **数据集名称**:`gpqa` 数据集已更名为 `gpqa_diamond`,且不再需要手动指定 `subset_list`。 ``` ## 常见问题 在评测过程中遇到问题?我们为您整理了一份常见问题列表,希望能帮助您解决问题。 ```{seealso} 参考:[常见问题解答](faq.md) ```