多模态理解大模型高性能优化丨前沿多模态模型开发与应用实战第七期

news2025/5/29 6:58:38

一、引言

在前序课程中,我们系统剖析了多模态理解大模型(Qwen2.5-VL、DeepSeek-VL2)的架构设计。鉴于此类模型训练需消耗千卡级算力与TB级数据,实际应用中绝大多数的用户场景均围绕推理部署展开,模型推理的效率影响着用户的实际体验。本次将聚焦工业级部署的核心挑战——多模态理解大模型的高性能推理优化

飞桨(PaddlePaddle)作为国内领先的深度学习框架,在多模态模型的高性能推理方面具有显著优势和亮点:

  • 高效的推理引擎:飞桨提供了高性能推理引擎,能够以低比特量化压缩等方法加速多模态模型的推理过程。
  • 优化的计算算子:飞桨通过算子融合、高效KVCache的注意力算法,使得多模态大模型能够在有限的硬件资源下实现高性能推理。

基于飞桨的高效引擎与算子优化,飞桨多模态开发套件PaddleMIX中实现了多种先进多模态理解模型的高性能推理,支持了Dense架构的Qwen2.5-VL模型以及采用稀疏激活机制的MoE架构的DeepSeek-VL2模型。我们在密集激活Dense模型与稀疏激活MoE架构均有性能优势,在单张图像的BF16精度推理相较于开源框架vLLM最高可提升40%的解码速度!

接下来,本篇文章内容将对飞桨多模态开发套件 PaddleMIX 中多模态理解模型的高性能推理实现方案进行逐步解读。

二、高性能推理优化方案

2.1 飞桨通用优化策略

低比特权重量化技术:权重量化(Weight Quantization)是一种模型压缩和加速技术,通过降低模型权重的数值精度(如从 32 位浮点数转为 8 位整数),显著减少模型大小和计算量,同时尽量保持模型精度。PaddleMIX的高性能推理支持INT4、INT8权重量化技术,通过利用低比特的运算能力进一步对模型推理的过程加速。

多卡并行推理:如今深度学习模型包含的参数量已经亿级别,单张显卡或单个主机难以进行部署,PaddleMIX基于飞桨自研分布式并行功能实现对多模态大模型的分布式推理,支持张量并行(Tensor Parallelism)策略。张量并行通过切分张量计算,将模型计算任务分配到多个显卡设备上,从而降低每个设备的显存压力。其中图1为基于张量并行的MLP层进行前向计算示意图,对一个输入张量 X 经过权重 A 的线性层进行投影,将线性层权重矩阵切分成四份(A1,A2,A3,A4),分别在四个设备上进行X的特征投影,最后将各张显卡上的计算结果通过all_reduce操作汇总得到与非张量并行方式的等价结果。


图1 基于张量并行的MLP层计算示意图

2.2 Qwen2.5-VL 高性能推理

首先简单回顾下 Qwen2.5-VL 的网络结构,整体上还是经典的 ViT + LLM 的串联结构,采用 600M 参数量的 ViT 作为视觉编码器,并且支持图像和视频统一输入,语言模型使用Qwen2.5系列的各种模型大小版本。PaddleMIX套件在Qwen2.5-VL的高性能优化方案中将视觉与语言模型两部分单独优化。视觉模型采用FlashAttention-2的优化方案加速,针对高耗时的语言模型进行细粒度的推理优化:

2.2.1 高性能算子融合

目前主流深度学习框架的默认推理模式采用动态图推理,算子将按顺序逐行执行,默认不自动融合相邻操作主要存在两个问题:一是需要保存更多的中间结果内存开销增加二是频繁在显存读写导致计算效率下降。在推理部署阶段,未融合的动态图效率极低,尤其是长序列生成(如大模型语言模型的逐Token解码)。

为此PaddleMIX套件对Qwen2.5结构的注意力计算、全连接层的注意力计算进行算子融合,从而显著提升多模态大模型的推理效率。

  • 注意力算子融合:Qwen2.5语言模型的推理过程,注意力计算中额外新增RoPE位置编码、KVCache等技术,可以将RoPE应用到Q、K和缓存K、V操作合并到注意力计算过程,减少GPU访问和计算开销,显著提升推理速度
  • FFN算子融合:Qwen2.5语言模型FFN层中包含两个线性投影以及SwiGLU激活函数,其中SwiGLU计算公式为 SwiGLU ( x , W , V , b , c , β ) = Swish β ( x W + b ) ⊗ ( x V + c ) \text{SwiGLU}\left(x, W, V, b, c, \beta\right) = \text{Swish}_{\beta}\left(xW + b\right) \otimes \left(xV + c\right) SwiGLU(x,W,V,b,c,β)=Swishβ(xW+b)(xV+c),x为输入特征,W、V为线性层的投影矩阵,b、c是线性层的偏置项。我们可以将W、V两个线性层权重拼接,将两个线性层的矩阵乘法融合成一次矩阵乘法计算然后再去调用SwiGLU激活函数。


图2 融合后的SwiGLU算子

2.2.2 高效的注意力算法:

传统的多头注意力Multi-Head Attention(MHA) 每个Query有独立的Key和Value投影,Qwen2.5-VL语言模型结构中使用Group Query Attention(GQA)将Query头分组,组内共享Key和Value投影,这种设计降低显存占用,优化了KVCache缓存的KV数量。PaddleMIX基于自研AppendAttention算子加速语言模型部分的GQA注意力计算,实现了高效的KVCache管理、注意力并行计算算法。

  • 高效RoPE融合与KVCache管理:考虑到RoPE位置编码添加属于浮点运算密集型操作,AppendAttention算子中使用CUDA Core实现位置编码添加到并行计算,同时利用CUDA提供并行存储机制将寄存器中融合编码后的KV写入全局内存中,从而加速了RoPE位置编码与QKV的融合。
  • GQA并行加速:AppendAttention中基于Tensor Core实现对GQA的注意力加速,使用NVIDIA GPU 提供的 PTX 内联汇编指令对分块后的矩阵进行加速运算,从而取得极致的矩阵乘法运算加速。


图3 Group Query Attention 示意图

2.2.3 Token拒绝采样推理生成加速:

在多模态大语言模型每一步需要计算整个词表的概率分布(Softmax),并采样下一个Token。这一过程计算成本高,尤其是当词表规模大时(如数万Token),PaddleMIX套件采用Token 拒绝采样改进Token采样策略,减少排序等高耗时操作加速Token的采样速度。

1.Token拒绝采样加速的核心思想

  • 提前拒绝低概率Token:在Softmax完全计算前,通过阈值或启发式方法过滤掉明显低概率的候选Token,仅对高概率Token进行精确计算。
  • 平衡速度与质量:通过动态调整拒绝阈值,在加速生成的同时,避免显著影响生成文本的多样性或合理性。

2.拒绝采样优势

  • 避免全量排序:传统Top-k采样需对所有Token排序,而拒绝采样仅需一次阈值比较,减少计算量。
  • 并行计算优化:结合GPU硬件加速,对Logits进行批量筛选。

2.2.4 Qwen2.5-VL 高性能效果展示

基于上述优化,我们展开与业内主流解决方案的性能测评。Qwen2.5-VL模型的推理时延评测环境使用单卡A800 GPU进行,与现有主流开源框架PyTorch、vLLM进行性能比较。对于不同框架,我们都采用相同的图像、视频和文本作为输入,具体实验设置参考文末项目地址进行推理复现。

首先是单张图像推理,飞桨的BF16推理每秒输出token数目相较于vLLM框架在Qwen2.5-VL-3B-Instruct和Qwen2.5-VL-7B-Instruct模型分别提升20%和46%值得注意的是Qwen2.5-VL-3B-Instruct模型在8bit权重量化设置下解码速度高达155Token/s,取得了极致的推理性能。


图4 Qwen2.5-VL模型单图测速对比

Qwen2.5-VL同样支持视频输入,我们进一步评估视频处理的推理性能。飞桨的BF16推理解码速度相较于vLLM框架在Qwen2.5-VL-3B-Instruct和Qwen2.5-VL-7B-Instruct模型分别提升110%和33%。8bit权重量化技术带来显著性能提升,8bit的解码速度(token/s)相比Paddle BF16精度推理在3B和7B上分别提升29%、33%。


图5 Qwen2.5-VL模型单视频测速对比

2.3 DeepSeek-VL2 高性能推理

2.3.1 优化方案解读

DeepSeek-VL2 的结构也是由三部分核心模块组成:视觉编码器 Vision Encoder、视觉-语言适配器 VL Adaptor 和 DeepSeek-MoE 语言模型。DeepSeek-VL2 在视觉编码器和语言建模部分都有了显著提升,这主要是因为DeepSeek-VL2引入了两项重大改进:动态切片策略,以及采用多头潜在注意力(Multi-head Latent Attention,MLA)机制的 DeepSeek-MoE 语言模型。这些创新使得 DeepSeek-VL2 能够更高效地处理高分辨率视觉输入和文本数据。


图6 DeepSeek-VL2 架构

PaddleMIX对DeepSeek-VL2的语言模型进行高性能优化,总结如下:

1.高效MLA机制

  • 通过多级流水线编排、精细的寄存器及共享内存分配,深度调优MLA算子性能,性能优于业内方法FlashMLA。

2.长序列注意力机制量化加速

  • 长序列推理,由于自注意力机制计算复杂度与Token序列长度的平方成正比,量化和稀疏都能取得非常好的加速。飞桨框架3.0大模型推理集成了自注意力动态量化方案SageAttention,在精度近乎无损的基础上,实现了长序列输入Prefilling阶段的高性能注意力计算。
  • 如下图7所示,SageAttention通过动态的将Q、K矩阵量化为INT8,V矩阵量化为FP8来重新组织注意力计算各阶段的数据类型;在Softmax阶段先将INT32的QK转换为FP32,之后进行QK的反量化,再采用Online Softmax加速计算;将Softmax后的注意力权重P量化为FP8,与经过FP8量化的V矩阵相乘,之后在进行对V的反量化,得到Attention的计算结果O。上述两次量化和反量化过程**在保证精度的前提下,大幅度提升了注意力计算的性能****。**


图7 SageAttention量化流程

2.3.2 高性能展示

在讲解完DeepSeek-VL2的优化策略,我们采取与Qwen2.5-VL相同的环境进行测试,样例覆盖单图、多图测试。 DeepSeek-VL2-small 是一个16B总参数量3B激活参数的混合专家模型,这在推理部署上添加了更大难度。得益于飞桨的高效推理引擎与先进优化策略,我们的BF16推理速度与PyTorch动态图推理相比提升3倍以上,相较于vLLM框架提升10%!


图8 DeepSeek-VL2模型单图测速对比

我们在多张图像推理评测上也极具竞争力,飞桨的BF16精度推理每秒输出token数目相较于vLLM提升11%。其中Paddle 8bit权重量化方法的解码速度在相同设置下最优,平均一秒输出77个Token数目,相比vLLM最高可提速22%!


图9 DeepSeek-VL2模型多图测速对比

三、上手教程

多模态理解模型高性能推理

  • 环境安装
# 以CUDA11.8版本为例安装Paddle
# 3.0版本和nighly build 版本均可以使用(推荐使用paddlepaddle-gpu==3.0.0版本)
# 更多版本可以参考https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/linux-pip.html
python -m pip install --pre paddlepaddle-gpu -i https://www.paddlepaddle.org.cn/packages/nightly/cu118/
python -m pip install paddlepaddle-gpu==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/

# 安装PaddleMIX以及PaddleNLP,目前高性能推理只支持PaddleNLP的develop版本
git clone https://github.com/PaddlePaddle/PaddleMIX
cd PaddleMIX
sh build_env.sh --nlp_dev

# 此处提供两种paddlenlp_ops安装方法,如果CUDA版本11.8建议建议使用预编译的paddlenlp_ops进行安装
# 如果CUDA版本不是11.8可以手动编译安装paddlenlp_ops
cd csrc
python setup_cuda.py install

# 安装pre-build paddlenlp_ops,pre-build 版本paddlenlp_ops目前暂时只支持CUDA11.8版本
wget https://paddlenlp.bj.bcebos.com/wheels/paddlenlp_ops-ci-py3-none-any.whl -O paddlenlp_ops-0.0.0-py3-none-any.whl
pip install paddlenlp_ops-0.0.0-py3-none-any.whl
  • Qwen2.5-VL高性能推理
# 在PaddleMIX目录下运行以下命令
sh deploy/qwen2_5_vl/scripts/qwen2_5_vl.sh
  • DeepSeek-VL2高性能推理
sh deploy/deepseek_vl2/scripts/deepseek_vl2.sh

四、总结

本文介绍了基于PaddleMIX套件的多模态模型的高性能推理实现,在推理性能上取得显著提升,上手容易降低了模型部署成本!其中多模态理解模型以 Qwen2.5-VL 和 DeepSeek-VL2 为例逐步拆解飞桨高性能优化策略,两个模型高性能推理均优于vLLM框架。

百度飞桨团队推出的PaddleMIX套件现已支持 Qwen2.5-VL、DeepSeek-VL2 这两个热门模型的高性能推理,通过深入解析其代码实现,研究人员和开发者能够更透彻地理解模型的核心技术细节与创新突破。我们诚挚推荐您访问AI Studio平台的专项教程(点击以下链接🔗),通过实践演练掌握前沿多模态模型的开发与应用技巧。

AI Studio教程链接:

https://aistudio.baidu.com/projectdetail/8964029

论文链接:

Qwen2.5-VL Technical Report

https://arxiv.org/abs/2502.13923

DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding

https://arxiv.org/pdf/2412.10302

项目地址:

Qwen2.5-VL:

https://github.com/PaddlePaddle/PaddleMIX/tree/develop/deploy/qwen2_5_vl

DeepSeek-VL2:

https://github.com/PaddlePaddle/PaddleMIX/tree/develop/deploy/deepseek_vl2

为了帮助您通过解析代码深入理解模型实现细节与技术创新,基于PaddleMIX框架实操多模态高性能推理,我们将开展“多模态大模型PaddleMIX产业实战精品课”,带您实战操作多模态高性能推理。5月26日正式开营,报名即可免费获得项目消耗算力(限时一周),名额有限,立即点击链接报名:https://www.wjx.top/vm/wpv02PB.aspx?udsid=554465

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2387264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人脸识别技术合规备案最新政策详解

《人脸识别技术应用安全管理办法》将于2025年6月1日正式实施,该办法从技术应用、个人信息保护、技术替代、监管体系四方面构建了人脸识别技术的治理框架,旨在平衡技术发展与安全风险。 一、明确技术应用的边界 公共场所使用限制:仅在“维护公…

AStar低代码平台-脚本调用C#方法

修改报工表表单&#xff0c;右键定义弹出菜单&#xff0c;新增一个菜单项&#xff0c;并在点击事件脚本中编写调用脚本。 编译脚本&#xff0c;然后在模块代码里面定义这个方法&#xff1a; public async Task<int> on_call_import(DataRow curRow) {PrintDataRow(cur…

企业级RAG技术实战指南:从理论到落地的全景解析

前言 在大模型技术日新月异的今天&#xff0c;检索增强生成&#xff08;RAG&#xff09;技术正成为企业突破AI应用瓶颈的关键利器。当传统AI系统还在处理结构化数据的泥潭中挣扎时&#xff0c;RAG技术已经打开了通向非结构化知识海洋的大门。这本《RAG技术实战指南》以独特的工…

【八股战神篇】RabbitMQ高频面试题

简述RabbitMQ五种模式 &#xff1f; 延伸 请介绍一下RabbitMQ的特点 延伸 简述RabbitMQ的发布与订阅模式 延伸 RabbitMQ 如何保证消息不丢失&#xff1f; 延伸 RabbitMQ 如何保证消息有序&#xff1f; 延伸 专栏简介 八股战神篇专栏是基于各平台共上千篇面经&#xf…

高阶数据结构——红黑树实现

目录 1.红黑树的概念 1.1 红黑树的规则&#xff1a; 1.2 红黑树的效率 2.红黑树的实现 2.1 红黑树的结构 2.2 红黑树的插入 2.2.1 不旋转只变色&#xff08;无论c是p的左还是右&#xff0c;p是g的左还是右&#xff0c;都是一样的变色处理方式&#xff09; 2.2.2 单旋变色…

安卓学习笔记-声明式UI

声明式UI Jetpack Compose 是 Google 推出的用于构建 Android UI 的现代化工具包。它采用 声明式编程模型&#xff08;Declarative UI&#xff09;&#xff0c;用 Kotlin 编写&#xff0c;用于替代传统的 XML View 的方式。一句话概括&#xff1a;Jetpack Compose 用 Kotlin…

AI天气预报进入“大模型时代“:如何用Transformer重构地球大气模拟?

引言:从数值预报到AI大模型的范式变革 传统的天气预报依赖于数值天气预报(NWP, Numerical Weather Prediction),通过求解大气动力学方程(如Navier-Stokes方程)进行物理模拟。然而,NWP计算成本极高,依赖超级计算机,且难以处理小尺度天气现象(如短时强降水)。 近年来…

数据结构第3章 线性表 (竟成)

目录 第 3 章 线性表 3.1 线性表的基本概念 3.1.1 线性表的定义 3.1.2 线性表的基本操作 3.1.3 线性表的分类 3.1.4 习题精编 3.2 线性表的顺序存储 3.2.1 顺序表的定义 3.2.2 顺序表基本操作的实现 1.顺序表初始化 2.顺序表求表长 3.顺序表按位查找 4.顺序表按值查找 5.顺序表…

JAVA面试复习知识点

面试中遇到的题目&#xff0c;记录复习&#xff08;持续更新&#xff09; Java基础 1.String的最大长度 https://www.cnblogs.com/wupeixuan/p/12187756.html 2.集合 Collection接口的实现&#xff1a; List接口&#xff1a;ArraryList、LinkedList、Vector Set接口&#xff1a…

项目中的流程管理之Power相关流程管理

一、低功耗设计架构规划&#xff08;Power Plan&#xff09;   低功耗设计的起点是架构级的电源策略规划&#xff0c;主要包括&#xff1a;   电源域划分   基于功能模块的活跃度划分多电压域&#xff08;Multi-VDD&#xff09;&#xff0c;非关键模块采用低电压&#xf…

SLOT:测试时样本专属语言模型优化,让大模型推理更精准!

SLOT&#xff1a;测试时样本专属语言模型优化&#xff0c;让大模型推理更精准&#xff01; 大语言模型&#xff08;LLM&#xff09;在复杂指令处理上常显不足&#xff0c;本文提出SLOT方法&#xff0c;通过轻量级测试时优化&#xff0c;让模型更贴合单个提示。实验显示&#x…

《计算机组成原理》第 10 章 - 控制单元的设计

目录 10.1 组合逻辑设计 10.1.1 组合逻辑控制单元框图 10.1.2 微操作的节拍安排 10.1.3 组合逻辑设计步骤 10.2 微程序设计 10.2.1 微程序设计思想的产生 10.2.2 微程序控制单元框图及工作原理 10.2.3 微指令的编码方式 1. 直接编码&#xff08;水平型&#xff09; 2.…

【数据结构与算法】模拟

成熟不是为了走向复杂&#xff0c;而是为了抵达天真&#xff1b;不是为了变得深沉&#xff0c;而是为了保持清醒。 前言 这是我自己刷算法题的第五篇博客总结。 上一期笔记是关于前缀和算法&#xff1a; 【数据结构与算法】前缀和-CSDN博客https://blog.csdn.net/hsy1603914691…

PyTorch入门-torchvision

torchvision torchvision 是 PyTorch 的一个重要扩展库&#xff0c;专门针对计算机视觉任务设计。它提供了丰富的预训练模型、常用数据集、图像变换工具和计算机视觉组件&#xff0c;大大简化了视觉相关深度学习项目的开发流程。 我们可以在Pytorch的官网找到torchvision的文…

18、Python字符串全解析:Unicode支持、三种创建方式与长度计算实战

适合人群&#xff1a;零基础自学者 | 编程小白快速入门 阅读时长&#xff1a;约6分钟 文章目录 一、问题&#xff1a;Python的字符串是什么&#xff1f;1、例子1&#xff1a;多语言支持演示2、例子2&#xff1a;字符串不可变性验证3、答案&#xff1a;&#xff08;1&#xff09…

5月27日复盘-Transformer介绍

5月27日复盘 二、层归一化 层归一化&#xff0c;Layer Normalization。 Layer Normalizatioh和Batch Normalization都是用来规范化中间特征分布&#xff0c;稳定和加速神经网络训练的&#xff0c;但它们在处理方式、应用场景和结构上有本质区别。 1. 核心区别 特征BatchNo…

MyBatis-Plus一站式增强组件MyBatis-Plus-kit(更新2.0版本):零Controller也能生成API?

MyBatis-Plus-Kit &#x1f680; MyBatis-Plus-Kit 是基于MyBatis-Plus的增强组件&#xff0c;专注于提升开发效率&#xff0c;支持零侵入、即插即用的能力扩展。它聚焦于 免写 Controller、代码一键生成、通用响应封装 等核心场景&#xff0c;让您只需专注业务建模&#xff0…

实时数仓flick+clickhouse启动命令

1、启动zookeeper zk.sh start 2、启动DFS&#xff0c;Hadoop集群 start-dfs.sh 3、启动yarn start-yarn.sh 4、启动kafka 启动Kafka集群 bin/kafka-server-start.sh -daemon config/server.properties 查看Kafka topic 列表 bin/kafka-topics.sh --bootstrap-server local…

【Git】Commit Hash vs Change-Id

文章目录 1、Commit 号2、Change-Id 号3、区别与联系4、实际场景示例5、为什么需要两者&#xff1f;6、总结附录——Gerrit 在 Git 和代码审查工具&#xff08;如 Gerrit&#xff09;中&#xff0c;Commit 号&#xff08;Commit Hash&#xff09; 和 Change-Id 号 是两个不同的…

【KWDB创作者计划】_KWDB分布式多模数据库智能交通应用——高并发时序处理与多模数据融合实践

导读&#xff1a;本文主要探讨了基于KWDB的分布式多模数据库智能交通应用场景&#xff0c;进行了高并发时序处理与多模数据融合实践方向的思考。探索智慧交通领域的数据实时处理与存储资源利用方面的建设思路。 本文目录 一、智能交通数据架构革命   1.1 传统架构瓶颈  …