多模態理解大模型高性能優化丨前沿多模態模型開發與應用實戰第七期

一、引言

在前序課程中,我們系統剖析了多模態理解大模型(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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82386.shtml
英文地址,請注明出處:http://en.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 問題描述與要求 給…