大家好!我是新人唱跳 rap 打篮球,是一个立志 2026 年有心情就能水一篇文章的人
好久没有写文章了,主要上班忙,最近金铲铲的赛季又很顶,就基本不怎么学习了
最近工作中遇到需要做效果评测和性能评测,主要是性能评测,发现自己写的脚本不准确
刚好工作接触魔搭,就准备顺便学习一下 evalscope 框架,后续准备用这个做大模型的性能评测
说一下魔搭:
ModelScope 旨在打造下一代开源的模型即服务共享平台,为泛 AI 开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!
对比 huggingface,evalscope 在国内更方便使用
其他类似的网站暂时不知道,如果大家有类似好用的网站可以风险一下
下面就说一下安装后基础使用,后续在补充做性能测试分享
https://evalscope.readthedocs.io/zh-cn/latest/get_started/introduction.html
EvalScope 是魔搭社区倾力打造的模型评测与性能基准测试框架,为您的模型评估需求提供一站式解决方案。
# 建议使用 python 3.10
conda create -n evalscope python=3.10
# 激活conda环境
conda activate evalscope
# 安装所有依赖
pip install 'evalscope[all]'
evalscope eval \
--model Qwen/Qwen2.5-0.5B-Instruct \
--datasets gsm8k arc \
--limit 5
TaskConfig
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)
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)
使用 YAML 文件
from evalscope.run import run_task
run_task(task_cfg="config.yaml")
自定义评测参数
示例 1.调整模型加载和推理生成参数
您可以通过传入 JSON 格式的字符串来精细化控制模型加载、推理生成和数据集配置。
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_passk。
evalscope eval \
--model Qwen/Qwen2.5-0.5B-Instruct \
--datasets gsm8k \
--limit 10 \
--dataset-args '{"gsm8k": {"aggregation": "mean_and_vote_at_k"}}' \
--repeats 5
EvalScope 支持评测兼容 OpenAI API 格式的模型服务。只需指定服务地址、API Key,并将 eval-type 设置为 openai_api。
1.启动模型服务
以 vLLM 为例,启动一个模型服务:
# 请先安装 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
2.运行评测
使用以下命令评测该 API 服务
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
import os
from evalscope import TaskConfig, run_task
from evalscope.constants import EvalType, 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=EvalType.SERVICE,
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)
在无网络环境下,您可以使用本地缓存的模型和数据集进行评测。
数据集默认托管在 ModelScope 上,加载需要联网。
如果是无网络环境,可以使用本地数据集和模型。
1.首先查看想要使用的数据集在 modelscope 上的 ID:在支持的数据集列表中查找到需要使用的数据集的数据集 ID,例如 mmlu_pro 的 ID 为 modelscope/MMLU-Pro。
2.使用 modelscope 命令下载数据集:点击 “数据集文件” tab -> 点击 “下载数据集” -> 复制命令行
# 下载数据集
modelscope download --dataset modelscope/MMLU-Pro --local_dir ./data/mmlu_pro
3.使用目录./data/mmlu_pro 作为 local_path 参数的值传入即可。
模型文件托管在 ModelScope Hub 端,需要联网加载,当需要在离线环境创建评测任务时,可提前将模型下载到本地:
例如使用 modelscope 命令下载 Qwen2.5-0.5B-Instruct 模型到本地:
# 这个已经404了
modelscope download --model modelscope/Qwen2.5-0.5B-Instruct --local_dir ./model/qwen2.5
# 使用这个
modelscope download --model Qwen/Qwen2.5-0.5B-Instruct --local_dir ./model/qwen2.5
evalscope eval \
--model ./model/qwen2.5 \
--datasets mmlu_pro \
--dataset-args '{"mmlu_pro": {"local_path": "./data/mmlu_pro"}}' \
--limit 10
# windows cmd -> powershell
powershell
evalscope eval --model ./model/qwen2.5 --datasets mmlu_pro --dataset-args '{\"mmlu_pro\": {\"local_path\": \"./data/mmlu_pro\"}}' --limit 2
评测下来还是要挺久的,大家可以安装官网文往下,了解一下 evalscope 进行模型评测的基础流程
我是新人唱跳 rap 打篮球,是一个立志 2026 年有心情就能水一篇文章的人,希望我的文章可以给你带来好心情!