# Qwen3-Omni 模型评测最佳实践 Qwen3-Omni是新一代原生全模态大模型,能够无缝处理文本、图像、音频和视频等多种输入形式,并通过实时流式响应同时生成文本与自然语音输出。在这篇最佳实践中,我们将使用EvalScope框架以[Qwen3-Omni-30B-A3B-Instruct](https://modelscope.cn/models/Qwen/Qwen3-Omni-30B-A3B-Instruct)模型为例进行评测,覆盖模型服务推理性能评测和模型能力评测。 ## 安装依赖 首先,安装[EvalScope](https://github.com/modelscope/evalscope)模型评估框架: ```bash pip install 'evalscope[app,perf]' -U ``` ## 模型服务推理性能评测 首先,对于多模态模型,我们需要通过OpenAI API兼容的推理服务接入模型能力,以进行评测,暂不支持本地使用transformers进行推理。你可以将模型部署到支持OpenAI API接口的云端服务,还可以选择在本地使用vLLM、ollama等框架直接启动模型。这些推理框架能够很好地支持并发多个请求,从而加速评测过程。 下面以vLLM为例,介绍如何在本地启动Qwen3-Omni-30B-A3B-Instruct模型服务,并进行性能评测。 ### 安装依赖 由于提交到vLLM的代码目前(2025.9.25)处于拉取请求阶段,并且 instruction 模型的音频输出推理支持将在不久的将来发布,您可以按照以下命令从源码安装 vLLM。请注意,我们建议您创建一个新的 Python 环境以避免运行时环境冲突和不兼容: ```shell git clone -b qwen3_omni https://github.com/wangxiongts/vllm.git cd vllm pip install -r requirements/build.txt pip install -r requirements/cuda.txt export VLLM_PRECOMPILED_WHEEL_LOCATION=https://wheels.vllm.ai/a5dd03c1ebc5e4f56f3c9d3dc0436e9c582c978f/vllm-0.9.2-cp38-abi3-manylinux1_x86_64.whl VLLM_USE_PRECOMPILED=1 pip install -e . -v --no-build-isolation # If you meet an "Undefined symbol" error while using VLLM_USE_PRECOMPILED=1, please use "pip install -e . -v" to build from source. # Install the Transformers pip install git+https://github.com/huggingface/transformers pip install accelerate pip install qwen-omni-utils -U pip install -U flash-attn --no-build-isolation ``` ### 启动模型服务 以下命令可用于在 `http://localhost:8801/v1` 上创建一个 API 端点: ```bash VLLM_USE_MODELSCOPE=true vllm serve Qwen/Qwen3-Omni-30B-A3B-Instruct --port 8801 --dtype bfloat16 --max-model-len 32768 --served-model-name Qwen3-Omni-30B-A3B-Instruct ``` ### 本地模型服务性能评测 **压测命令:** - 测试环境:A100 80G * 1 - 输入:1024 tokens文本 + 1张 512\*512 图像 - 输出:1024 tokens > 注意:这里使用了Qwen3-30B-A3B-Instruct的tokenizer路径,因为Qwen3-Omni-30B-A3B-Instruct和Qwen3-30B-A3B-Instruct使用相同的文本tokenizer。 ```shell evalscope perf \ --model Qwen3-Omni-30B-A3B-Instruct \ --url http://localhost:8801/v1/chat/completions \ --api-key "API_KEY" \ --parallel 1 5 10 50 100 \ --number 2 10 20 100 200 \ --api openai \ --dataset random_vl \ --min-tokens 1024 \ --max-tokens 1024 \ --prefix-length 0 \ --min-prompt-length 1024 \ --max-prompt-length 1024 \ --image-width 512 \ --image-height 512 \ --image-format RGB \ --image-num 1 \ --tokenizer-path Qwen/Qwen3-30B-A3B-Instruct-2507 ``` 输出报告如下: ![image](https://sail-moe.oss-cn-hangzhou.aliyuncs.com/yunlin/images/evalscope/doc/qwen_omni/eval.png) ## 模型能力评测 下面开始进行模型能力评测流程,我们将在OmniBench上进行评测。OmniBench是一个用于评估多模态模型在文本、图像、音频多种模态上理解能力的基准测试工具。 > 注意:后续评测流程都基于API模型服务,你可以根据模型推理框架使用步骤拉起模型服务。由于vLLM框架目前(2025.9.25)对于Base64音频的输入支持存在bug,暂时无法进行音频输入的评测。 ```python from evalscope import TaskConfig, run_task task_cfg = TaskConfig( model='Qwen3-Omni-30B-A3B-Instruct', api_url='http://localhost:8801/v1', api_key='EMPTY', eval_type='openai_api', datasets=[ 'omni_bench', ], dataset_args={ 'omni_bench': { 'extra_params': { 'use_image': True, # 是否使用图像输入,如果为False,则使用文本替代图像内容。 'use_audio': False, # 是否使用音频输入,如果为False,则使用文本替代音频内容。 } } }, eval_batch_size=1, generation_config={ 'max_tokens': 10000, # 最大生成token数,建议设置为较大值避免输出截断 'temperature': 0.0, # 采样温度 (qwen 报告推荐值) }, limit=100, # 设置为100条数据进行测试 ) run_task(task_cfg=task_cfg) ``` 输出结果如下: > 注意:下面的结果是取了100条数据的结果,只用于评测流程测试。在正式评测时需要去掉该限制。 ``` +-----------------------------+------------+----------+----------+-------+---------+---------+ | Model | Dataset | Metric | Subset | Num | Score | Cat.0 | +=============================+============+==========+==========+=======+=========+=========+ | Qwen3-Omni-30B-A3B-Instruct | omni_bench | mean_acc | default | 100 | 0.44 | default | +-----------------------------+------------+----------+----------+-------+---------+---------+ ``` 更多可用的评测数据集可参考[数据集列表](https://evalscope.readthedocs.io/zh-cn/latest/get_started/supported_dataset/llm.html)。 ## 可视化 EvalScope支持可视化结果,可以查看模型具体的输出。 运行以下命令,可以启动Web 可视化界面: ```shell evalscope service ``` 选择评测报告,点击加载,即可看到模型在每个问题上的输出结果,以及整体答题正确率: ![image](https://sail-moe.oss-cn-hangzhou.aliyuncs.com/yunlin/images/evalscope/doc/qwen_omni/detail.png)