鲲鹏社区首页
中文
注册
Qwen2 VL推理调优实践

Qwen2 VL推理调优实践

案例分享

发表于 2025/06/20

0

Qwen2 VL概述

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


图片源自Qwen2-VL论文

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:

ncallstottimepercall cumtime percall filename:lineno
(function)
400.1290.0030.1290.003{method 'cpu' of 'torch._C._TensorBase' objects}
70.0250.0040.0250.004{built-in method torch.arange}
10.0190.0190.0190.019image_transforms.py:352(normalize)
10.0180.0180.0180.018{method 'resize' of 'ImagingCore' objects}
100.0150.0010.0200.002{built-in method numpy.array}
40.0110.0030.0110.003{method 'reshape' of 'numpy.ndarray' objects}
1310.0070.0000.0070.000{built-in method torch._C._nn.linear}
20.0060.0030.0060.003{method 'astype' of 'numpy.ndarray' objects}
1860.0060.000
0.0060.000{built-in method torch.cat}
1640.0060.0000.0060.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)已对resize函数进行过优化,尝试将resize函数替换为KPCV优化的版本,下文将详细描述使能过程。

调优实施及结果

1.kpcv安装

参考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之后的
分辨率
端到端耗时
(优化前)
端到端耗时
(优化后)
端到端提升图片处理耗时
(优化前)
图片处理耗时
(优化后)
图片处理提升
13840×21601176×672104892012%19314027%
11920×10801176×67269661212%592754%
11280×7841120×7006896850.5%402147%
41280×7841120×7007366965%985741%

本页内容