---
title: Qwen2 VL推理调优实践-官方技术文章-鲲鹏社区
description: 本文介绍了一次CPU上的Qwen2 VL推理调优过程
keywords: Qwen,VL,推理调优实践,官方技术文章,鲲鹏社区,概述,推理过程及调,优分析
url: https://www.hikunpeng.com/developer/techArticles/20250620-2?envFlag=1
section: (其他)
---

# Qwen2 VL推理调优实践-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20250620-2?envFlag=1
描述: 本文介绍了一次CPU上的Qwen2 VL推理调优过程
关键词: Qwen,VL,推理调优实践,官方技术文章,鲲鹏社区,概述,推理过程及调,优分析

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

Qwen2 VL推理调优实践

Qwen2 VL推理调优实践

案例分享

发表于 2025/06/20

0

## Qwen2 VL概述

Qwen2 VL（Qwen-VL）是阿里巴巴通义千问（Qwen）系列的最新一代多模态大模型，专注于视觉-语言（Vision-Language）理解与生成任务。作为Qwen-VL-1.0的升级版本，该模型深度融合了强大的视觉感知与自然语言处理能力，能够同时处理图像、文本、检测框等多模态输入，支持任意分辨率和宽高比的输入，并在开放域问答、细粒度视觉定位、文档解析等场景中展现卓越性能。

图片源自Qwen2-VL论文 [了解详情](https://arxiv.org/pdf/2409.12191)

## Qwen2 VL推理过程及调优分析

以一次图片理解为例：当用户输入一张包含金毛犬的图片并提问"这是什么动物？"时，首先对输入图片进行预处理，此阶段在CPU上进行，然后送入Vision Encoder模块输出为vision token，与prompt（"这是什么动物？"）分词编码后的token拼接，作为QwenLM Decoder模块的输入，输出最终答案。此次推理优化主要为CPU侧的图片预处理，因此将只介绍图片预处理阶段流程。

### 图片预处理

1.调整宽和高，生成新分辨率的图片

2.对图片进行归一化操作，主要为求均值和标准差操作

3.对图片进行缩放操作

### 图片处理模块时延分析

统计一次离线推理图片预处理阶段各个操作的耗时，结果如下表所示，可以看到调整图片的宽高阶段占据了大部分时间。

| 图片预处理 | 调整宽高 | 缩放 | 归一化 | 其他 |
| --- | --- | --- | --- | ---|
| 占比 | 29.9% | 12.4% | 25.9% | 34.7% |

### 性能分析

通过Python自带的cProfile工具，统计了一次推理过程中预处理阶段的各个函数耗时，简便起见，仅展示其中的Top10：

| ncalls | tottime | percall | cumtime | percall | filename:lineno(function) |
| --- | --- | --- | --- | --- | ---|
| 40 | 0.129 | 0.003 | 0.129 | 0.003 | {method 'cpu' of 'torch._C._TensorBase' objects} |
| 7 | 0.025 | 0.004 | 0.025 | 0.004 | {built-in method torch.arange} |
| 1 | 0.019 | 0.019 | 0.019 | 0.019 | image_transforms.py:352(normalize) |
| 1 | 0.018 | 0.018 | 0.018 | 0.018 | {method 'resize' of 'ImagingCore' objects} |
| 10 | 0.015 | 0.001 | 0.020 | 0.002 | {built-in method numpy.array} |
| 4 | 0.011 | 0.003 | 0.011 | 0.003 | {method 'reshape' of 'numpy.ndarray' objects} |
| 131 | 0.007 | 0.000 | 0.007 | 0.000 | {built-in method torch._C._nn.linear} |
| 2 | 0.006 | 0.003 | 0.006 | 0.003 | {method 'astype' of 'numpy.ndarray' objects} |
| 186 | 0.006 | 0.000 | 0.006 | 0.000 | {built-in method torch.cat} |
| 164 | 0.006 | 0.000 | 0.006 | 0.000 | {function _TensorBase.to at 0xfffdbb503760} |

从中可以看到，resize函数排在了Top4，符合之前离线推理时统计的预期，此外，在在线推理时，还会多一次resize操作。因此，选中此热点函数作为优化对象，鲲鹏boositkit媒体库（KPCV，https://www.hikunpeng.com/document/detail/zh/kunpengaccel/media/rn_kpcv/kunpengaccel_kpcv_28_0002.html [了解详情](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/media/rn_kpcv/kunpengaccel_kpcv_28_0002.html)）已对resize函数进行过优化，尝试将resize函数替换为KPCV优化的版本，下文将详细描述使能过程。

### 调优实施及结果

#### 1.kpcv安装

参考https://www.hikunpeng.com/document/detail/zh/kunpengaccel/media/ug_kpcv/kunpengaccel_kpcv_06_0005.html [了解详情](https://www.hikunpeng.com/document/detail/zh/kunpengaccel/media/ug_kpcv/kunpengaccel_kpcv_06_0005.html)

#### 2.resize替换

原代码中图像为RGB排列，Opencv为BGR，需进行转换。image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)image = cv2.resize(image, (resized_width, resized_height))image = cv2.cv2Color(image, cv2.COLOR_BGR2RGB)

#### 3.调优结果

从表中可以看出，图片分辨率越大，提升效果越明显。当图片分辨率为3840×2160和1080×1920时，优化效果最为显著，端到端推理时间能降低12%；当图片分辨率为784×1280时，图片处理部分耗时能有47%的提升，由于后续推理的性能波动，端到端提升相对较小。为了验证其性能提升，在推理小图片时增大图片数，当图片数为4时，可以看到端到端能有5%的提升。

| 总图片数 | 分辨率 | resize之后的分辨率 | 端到端耗时（优化前） | 端到端耗时（优化后） | 端到端提升 | 图片处理耗时（优化前） | 图片处理耗时（优化后） | 图片处理提升 |
| --- | --- | --- | --- | --- | --- | --- | --- | ---|
| 1 | 3840×2160 | 1176×672 | 1048 | 920 | 12% | 193 | 140 | 27% |
| 1 | 1920×1080 | 1176×672 | 696 | 612 | 12% | 59 | 27 | 54% |
| 1 | 1280×784 | 1120×700 | 689 | 685 | 0.5% | 40 | 21 | 47% |
| 4 | 1280×784 | 1120×700 | 736 | 696 | 5% | 98 | 57 | 41% |

本页内容
