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

一、引言

在前序课程中,我们系统剖析了多模态理解大模型(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.pswp.cn/bicheng/82386.shtml

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

相关文章

各个网络协议的依赖关系

网络协议的依赖关系 学习网络协议之间的依赖关系具有多方面重要作用,具体如下: 帮助理解网络工作原理 - 整体流程明晰:网络协议分层且相互依赖,如TCP/IP协议族,应用层协议依赖传输层的TCP或UDP协议来传输数据&#…

11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南

使用 LangGraph 构建生产级 AI Agent:LangGraph 节点与边的实现 关键词:LangGraph 节点定义, 条件边实现, 状态管理, 多会话控制, 生产级 Agent 架构 1. LangGraph 核心设计解析 LangGraph 通过图结构抽象复杂 AI 工作流,其核心要素构成如下表所示: 组件作用描述代码对应…

相机--基础

在机器人开发领域,相机种类很多,作为一个机器人领域的开发人员,我们需要清楚几个问题: 1,相机的种类有哪些? 2,各种相机的功能,使用场景? 3,需要使用的相机…

【备忘】 windows 11安装 AdGuardHome,实现开机自启,使用 DoH

windows 11安装 AdGuardHome,实现开机自启,使用 DoH 下载 AdGuardHome解压 AdGuardHome启动 AdGuard Home设置 AdGuardHome设置开机自启安装 NSSM设置开机自启重启电脑后我们可以访问 **http://127.0.0.1/** 设置使用 AdGuardHome DNS 效果图 下载 AdGua…

安装部署配置jenkins

随着现代软件开发流程的不断演进,持续集成(CI)和持续交付(CD)已经成为了开发团队必不可少的工具。而Jenkins作为最为广泛应用的CI/CD工具,能够自动化执行构建、测试、部署等任务。Maven作为Java生态中广泛使用的构建工具,它能够帮助开发人员自动化管理项目的构建、依赖和…

How to balance work and personal life?

How to balance work and personal life? 1. Background2. How to balance work and personal life?References 1. Background Let me introduce /ˌɪntrəˈdjuːs/ the background /ˈbkɡraʊnd/ first. Today we will talk about this topic: How to balance work and …

存储引擎系列--LSM的Compaction研究方法论

本文主要包含以下内容: 1、Compaction 设计空间的四个原语:触发器、数据布局、压缩粒度、数据移动策略。任何已有的compaction策略和新的策略都可以由这个四个原语组建构成。 2、详细介绍这四个原语的定义,策略方法 3、现有的基于LSM的知名系统的compaction策略按照四个原语…

关系数据库基础入门

关系数据库概述 相关名词 1、关系:在关系数据库中,实体以及实体间的联系都是用关系来表示的。类似于程序设计语言中变量的概念。 2、关系模式:是对关系的描述。类似于程序设计语言中类型定义的概念。 3、关系模型:是由若干个关系…

图解BERT

图解 Bert 大家可以访问 图解Bert 获取更加优质的阅读体验。 图解BERT一文还在持续更新中。 环境搭建 按序执行以下命令完成环境搭建: git clone https://github.com/DA-southampton/Read_Bert_Code.git cd Read_Bert_Code conda create -n Read_Bert_Code python3.9.22 co…

【HarmonyOS 5】鸿蒙中的UIAbility详解(一)

【HarmonyOS 5】鸿蒙中的UIAbility详解(一) 一、UIAbility是什么? Stage模型中的组件类型名,即UIAbility组件,包含UI,提供展示UI的能力,主要用于和用户交互。 UIAbility类似于传统移动开发An…

Transformer预训练模型微调技术全解析

引言:Transformer预训练模型与微调的浪潮 近年来,人工智能领域取得了令人瞩目的成就,特别是在自然语言处理(NLP)方面。引领这场变革的核心技术之一便是Transformer架构。自2017年 Vaswani 等人在论文 "Attention Is All You Need" 中提出以来,Transformer凭借…

《算法笔记》12.2小节——字符串专题->KMP算法 问题 C: 剪花布条

题目描述 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 输入 输入中含有一些数据,分别是成对出现的…

实现一个前端动态模块组件(Vite+原生JS)

1. 引言 在前面的文章《使用Vite创建一个动态网页的前端项目》中我们实现了一个动态网页。不过这个动态网页的实用价值并不高,在真正实际的项目中我们希望的是能实现一个动态的模块组件。具体来说,就是有一个页面控件同时在多个页面中使用,那…

NTFS0x90属性和0xa0属性和0xb0属性的一一对应关系是index_entry中的index_node中VCN和runlist和bitmap

第一部分: 0: kd> dt _FILE_RECORD_SEGMENT_HEADER 0xc1241400 Ntfs!_FILE_RECORD_SEGMENT_HEADER 0x000 MultiSectorHeader : _MULTI_SECTOR_HEADER 0x008 Lsn : _LARGE_INTEGER 0x80e74aa 0x010 SequenceNumber : 5 0x012 Referen…

PCB 通孔是电容性的,但不一定是电容器

哼?……这是什么意思?…… 多年来,流行的观点是 PCB 通孔本质上是电容性的,因此可以用集总电容器进行建模。虽然当信号的上升时间大于或等于过孔不连续性延迟的 3 倍时,这可能是正确的,但我将向您展示为什…

Flutter 3.32 新特性

2天前,Flutter发布了最新版本3.32,我们来一起看下29到32有哪些变化。 简介 欢迎来到Flutter 3.32!此版本包含了旨在加速开发和增强应用程序的功能。准备好在网络上进行热加载,令人惊叹的原生保真Cupertino,以及与Fir…

汉诺塔超级计算机数据区结构和源代码详细设计

### 数据区结构与源代码详细设计 基于"满秩二叉树"存储模型的设计理念,我设计了以下数据区结构和实现方案: #### 1. 满秩二叉树存储模型 **数据结构设计**: python class TreeNode: """二叉树节点结构&#xff0c…

GitHub Copilot 现已支持 AI Coding Agent

VS Code 开始越来越像 Cursor 和 WindSurf 了。 这周,GitHub 发布了一个新的编程代理,直接嵌入到 GitHub 中。当你将 GitHub 问题分配给 Copilot 或在 VS Code 中提示它时,该代理会启动一个由 GitHub Actions 驱动的安全且完全可定制的开发环境。 这一公告来自微软首席执行…

【辰辉创聚生物】FGF信号通路相关蛋白:解码生命调控的关键枢纽

在生命科学的探索旅程中,成纤维细胞生长因子(Fibroblast Growth Factor,FGF)信号通路犹如精密仪器中的核心齿轮,驱动着众多生命活动的有序进行。FGF 信号通路相关蛋白作为该通路的重要组成部分,其结构与功能…

算法的学习笔记— 构建乘积数组(牛客JZ66)

构建乘积数组 1. 问题背景与描述 1.1 题目来源与链接 本题来源于NowCoder在线编程平台,是剑指Offer系列面试题中的经典问题。题目链接为:NowCoder。该问题在算法面试中出现频率较高,主要考察数组操作和数学思维。 1.2 问题描述与要求 给…