# Qwen3-VL 模型评测最佳实践 Qwen3-VL 系列——这是迄今为止 Qwen 系列中最强大的视觉语言模型,在多个维度实现了全面跃升:无论是纯文本理解与生成,还是视觉内容的感知与推理;无论是上下文长度的支持能力,还是对空间关系、动态视频的理解深度;乃至在与Agent交互中的表现,Qwen3-VL 都展现出显著进步。在这篇最佳实践中,我们将使用EvalScope框架以Qwen3-VL模型进行全面评测,覆盖模型服务推理性能评测和模型能力评测。 ## 安装依赖 首先,安装[EvalScope](https://github.com/modelscope/evalscope)模型评估框架: ```bash pip install 'evalscope[app,perf]' -U ``` ## 模型服务推理性能评测 首先,对于多模态模型,我们需要通过OpenAI API兼容的推理服务接入模型能力,以进行评测,暂不支持本地使用transformers进行推理。除了将模型部署到支持OpenAI接口的云端服务外,还可以选择在本地使用vLLM、ollama等框架直接启动模型。这些推理框架能够很好地支持并发多个请求,从而加速评测过程。 ### DashScope API 服务性能评测 由于模型参数量较大,这里我们使用百炼平台(DashScope)提供的API来访问Qwen3-VL(在平台上对应的模型为 qwen-vl-plus-latest),并对模型服务进行压测。 > TIPs: 你也可以使用modelscope提供的免费API进行试用,具体可参考:[https://modelscope.cn/docs/model-service/API-Inference/intro](https://modelscope.cn/docs/model-service/API-Inference/intro) **压测命令:** - 输入:100 tokens文本 + 1张 512\*512 图像 - 输出:128 tokens ```shell evalscope perf \ --model qwen-vl-plus-latest \ --url https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \ --api-key "API_KEY" \ --parallel 1 2 5 \ --number 4 8 20 \ --api openai \ --dataset random_vl \ --min-tokens 128 \ --max-tokens 128 \ --prefix-length 0 \ --min-prompt-length 100 \ --max-prompt-length 100 \ --image-width 512 \ --image-height 512 \ --image-format RGB \ --image-num 1 \ --tokenizer-path Qwen/Qwen3-VL-235B-A22B-Instruct ``` 输出报告如下: ![image.png](https://sail-moe.oss-cn-hangzhou.aliyuncs.com/yunlin/images/evalscope/doc/qwen_vl/perf.png) ## 模型能力评测 下面开始进行模型能力评测流程。 注意:后续评测流程都基于API模型服务,你可以根据模型推理框架使用步骤拉起模型服务。 ### 构建评测集合(可选) 为了全面评测模型的各方面能力,我们可以混合EvalScope已支持的benchmark,构建一个全面的评测集合。下面是一个评测集合的例子,覆盖了主流的benchmark,评测了模型的数学能力(GSM8K)、知识能力(MMLU-Pro)、指令遵循(IFEval)、多模态知识能力(MMMU-Pro)、多模态数学能力(MathVista)等。 运行如下代码即可根据定义的Schema自动下载并混合数据集,并将构建的评测集合保存在本地的jsonl文件中。当然你也可以跳过这个步骤,直接使用我们放在了[ModelScope仓库](https://modelscope.cn/datasets/evalscope/Qwen3-VL-Test-Collection/summary)中处理好的数据集合。 ```python from evalscope.collections import CollectionSchema, DatasetInfo, WeightedSampler from evalscope.utils.io_utils import dump_jsonl_data schema = CollectionSchema(name='Qwen3-VL', datasets=[ CollectionSchema(name='PureText', weight=1, datasets=[ DatasetInfo(name='mmlu_pro', weight=1, task_type='exam', tags=['en'], args={'few_shot_num': 0}), DatasetInfo(name='ifeval', weight=1, task_type='instruction', tags=['en'], args={'few_shot_num': 0}), DatasetInfo(name='gsm8k', weight=1, task_type='math', tags=['en'], args={'few_shot_num': 0}), ]), CollectionSchema(name='Vision', weight=2, datasets=[ DatasetInfo(name='math_vista', weight=1, task_type='math', tags=['en'], args={'few_shot_num': 0}), DatasetInfo(name='mmmu_pro', weight=1, task_type='exam', tags=['en'], args={'few_shot_num': 0}), ]) ]) # get the mixed data mixed_data = WeightedSampler(schema).sample(1000) # dump the mixed data to a jsonl file dump_jsonl_data(mixed_data, 'outputs/qwen3_vl_test.jsonl') ``` ### 运行评测任务 运行如下代码即可评测Qwen3-VL的模型性能: ```python from dotenv import dotenv_values env = dotenv_values('.env') from evalscope import TaskConfig, run_task task_cfg = TaskConfig( model='qwen-vl-plus-latest', api_url='https://dashscope.aliyuncs.com/compatible-mode/v1', api_key=env.get('DASHSCOPE_API_KEY'), eval_type='openai_api', datasets=[ 'data_collection', ], dataset_args={ 'data_collection': { 'dataset_id': 'evalscope/Qwen3-VL-Test-Collection', } }, eval_batch_size=5, generation_config={ 'max_tokens': 30000, # 最大生成token数,建议设置为较大值避免输出截断 'temperature': 0.6, # 采样温度 (qwen 报告推荐值) 'top_p': 0.95, # top-p采样 (qwen 报告推荐值) 'top_k': 20, # top-k采样 (qwen 报告推荐值) 'n': 1, # 每个请求产生的回复数量 }, limit=100, # 设置为100条数据进行测试 ) run_task(task_cfg=task_cfg) ``` 输出结果如下: 注意:下面的结果是取了100条数据的结果,只用于评测流程测试。在正式评测时需要去掉该限制。 ![image.png](https://sail-moe.oss-cn-hangzhou.aliyuncs.com/yunlin/images/evalscope/doc/qwen_vl/eval.png) ### 评测结果可视化 EvalScope支持可视化结果,可以查看模型具体的输出。 运行以下命令,可以启动Web 可视化界面: ```shell evalscope service ``` 选择评测报告,点击加载,即可看到模型在每个问题上的输出结果,以及整体答题正确率: ![image.png](https://sail-moe.oss-cn-hangzhou.aliyuncs.com/yunlin/images/evalscope/doc/qwen_vl/overview.png) ![image.png](https://sail-moe.oss-cn-hangzhou.aliyuncs.com/yunlin/images/evalscope/doc/qwen_vl/detail.png)