EvalScope 是一个功能强大的大模型评测与性能基准测试平台,旨在为用户提供全面、高效的模型性能评估解决方案。其“性能压测”专注于对大模型推理服务进行压力测试,帮助用户精准衡量模型在 高并发场景下的响应能力、吞吐量、延迟等关键性能指标 。通过“快速开始”指南,用户可迅速搭建压测环境,仅需简单配置即可发起测试任务,适用于各类生产与开发场景。
EvalScope框架支持多种文生图模型的评测,包括Stable Diffusion、Flux等。用户可以通过EvalScope框架对这些模型进行评测,获取模型在不同任务上的性能指标。
一、支持的评测数据集 可参阅本公众号文章《大模型基准评测与性能压测EvalScope (6)— 支持的数据集》 二、支持的评测指标 EvalScope框架支持多种评测指标,用户可以根据需求选择合适的指标进行评测。以下是支持的评测指标:
三、安装依赖 用户可以通过以下命令安装相关依赖:
pip install evalscope[aigc] -U 四、Benchmark 用户可以通过以下命令配置文生图模型的评测任务。
下面展示使用modelscope的Stable Diffusion XL模型在tifa160上使用默认指标进行评测的示例代码:
from evalscope import TaskConfig, run_task from evalscope.constants import ModelTask task_cfg = TaskConfig( model='stabilityai/stable-diffusion-xl-base-1.0', # model id on modelscope model_task=ModelTask.IMAGE_GENERATION, # must be IMAGE_GENERATION model_args={ 'pipeline_cls': 'DiffusionPipeline', 'use_safetensors': True, 'variant': 'fp16', 'torch_dtype': 'torch.float16', }, datasets=[ 'tifa160', 'genai_bench', 'evalmuse', 'hpdv2', ], limit=5, generation_config={ 'height': 1024, 'width': 1024, 'num_inference_steps': 50, 'guidance_scale': 9.0, } ) # 运行评测任务 run_task(task_cfg=task_cfg) 3.1 参数说明 基本参数请参考:参数说明。
需要注意的参数如下:
• model: 模型ID,支持本地模型和modelscope model id。 • model_task: 模型任务类型,必须为image_generation。 • model_args: 模型加载参数,支持传入模型加载参数,包括: • pipeline_cls: diffusers中的用于加载模型Pipeline类,默认为DiffusionPipeline。下面的其余参数均为该Pipeline的参数,请参考diffusers文档。 • use_safetensors: 是否使用安全张量。 • generation_config: 生成参数,支持传入模型生成参数,具体支持的参数参考对应的Pipeline类,一般包括: • num_inference_steps: 生成图像的推理步数。 • guidance_scale: 生成图像的引导比例。 3.2 输出结果 评测完成后,EvalScope将输出评测结果,包括模型ID、数据集、指标、子集、数量和得分等信息。以下是输出结果的示例:
五、自定义评测
当前文生图模型的开发流程日益复杂,部分开发者需依赖ComfyUI等可视化工作流工具进行多模块组合生成,或通过API接口调用云端模型服务(如Stable Diffusion WebUI、商业API平台)。针对这类场景,EvalScope支持“无模型介入”的评测模式 ,仅需用户提供生成图片的prompt文本列表 与对应图像存储路径 ,即可直接启动评测流程,无需本地下载模型权重或执行推理计算。
用户可以通过以下命令配置自定义prompts来进行评测任务。
5.1 自定义数据集评测 提供如下格式的jsonl文件:
{"id": 1, "prompt": "A beautiful sunset over the mountains", "image_path": "/path/to/generated/image1.jpg"} {"id": 2, "prompt": "A futuristic city skyline", "image_path": "/path/to/generated/image2.jpg"} id: 评测数据的唯一标识符。
prompt: 生成图像的提示文本。
image_path: 生成图像的路径。
5.1.1 配置评测任务 下面展示了使用自定义评测数据集的示例代码,展示了所有指标的使用:
备注
使用自定义评测任务不需要传递model参数,model_id用来指定模型名称。只需配置对应模型生成的image_path即可。
指标计算模型会在任务初始化时全部加载,可能会导致内存显存较大,请求根据实际情况调整需要计算的指标或分多个任务进行计算。
运行如下代码:
from evalscope import TaskConfig, run_task task_cfg = TaskConfig( model_id='T2I-Model', model_task='image_generation', # must be 'image_generation' datasets=[ 'general_t2i' ], dataset_args={ 'general_t2i': { 'metric_list': [ 'PickScore', 'CLIPScore', 'HPSv2Score', 'BLIPv2Score', 'ImageRewardScore', 'VQAScore', 'FGA_BLIP2Score', 'MPS', ], 'dataset_id': 'custom_eval/multimodal/t2i/example.jsonl', } } ) run_task(task_cfg=task_cfg) 输出结果 输出结果如下:
5.2 自定义benchmark评测 如果想用自定义的模型来进行benchmark评测,可从modelscope下载对应benchmark的jsonl文件,例如eval_muse_format.jsonl,将模型生成的图像路径替换为对应的image_path,如下所示:
{"id":"EvalMuse_1","prompt":"cartoon die cut sticker of hotdog with white border on gray background","tags":["cartoon (attribute)","die cut sticker (object)","hotdog (food)","white (object)","border (object)","gray (color)","background (attribute)"], "image_path":"/path/to/generated/image1.jpg"} {"id":"EvalMuse_2","prompt":"Fiat 124","tags":["Fiat 124 (object)"], "image_path":"/path/to/generated/image2.jpg"} 5.2.1 配置评测任务 配置对应的评测任务,运行如下代码即可:
from evalscope import TaskConfig, run_task task_cfg = TaskConfig( model_id='T2I-Model', model_task='image_generation', # must be 'image_generation' datasets=[ 'evalmuse', ], dataset_args={ 'evalmuse': { 'dataset_id': 'custom_eval/multimodal/t2i/example.jsonl', } } ) run_task(task_cfg=task_cfg) 六、可视化 EvalScope框架支持对评测结果进行可视化,用户可以通过以下命令生成可视化报告:
evalscope app 详情参阅本公众号文章《大模型基准评测与性能压测EvalScope(4)—可视化》。