Qwen-VL系列多模態大模型技術演進-模型架構、訓練方法、數據細節 原創 精華
Qwen2.5B-VL-32B開源之際,記錄一下Qwen-VL系列多模態大模型技術演進-模型架構、訓練方法、數據細節,僅供參考。
系列模型的應用場景:
- Qwen-VL:基礎圖像理解和對話。
- Qwen2-VL:圖像+短視頻理解,代理任務。
- Qwen2.5-VL:長視頻、復雜文檔解析、多語言支持,適用于更廣泛的現實場景。
模型架構演進一覽(其實差不多,模型側有一些細節改動,系列更多還是數據上的增量訓練):
模型 | 大型語言模型 (LLM) | 視覺編碼器 (ViT) | 視覺-語言連接機制 | 位置編碼 |
Qwen-VL | Qwen-7B | ViT-bigG(OpenClip 初始化),固定分辨率 448×448 | 位置感知 VL Adapter(256 查詢,交叉注意力) | 2D 絕對位置編碼 |
Qwen2-VL | Qwen2 | ViT(DFN 初始化),動態分辨率支持,最大 16384 標記 | MLP 壓縮(2×2 token合并) | 2D-RoPE + M-RoPE(多模態) |
Qwen2.5-VL | Qwen2.5 | 重新設計 ViT,原生分辨率,窗口注意力,3D patch | MLP 壓縮(4 patch 合并) | 2D-RoPE + MRoPE(絕對時間) |
一、Qwen-VL
模型架構
- 大型語言模型(LLM):Qwen-7B
- 視覺編碼器:采用Vision Transformer(ViT)架構,初始化權重來自OpenClip的ViT-bigG。
- 輸入處理:輸入圖像被調整到特定分辨率,然后被分割成固定大小的patch。
- 特征提取:ViT通過自注意力機制來捕捉圖像中的全局和局部信息,生成一組圖像特征。
- 位置感知的視覺-語言適配器:為了緩解長圖像特征序列帶來的效率問題,Qwen-VL引入了一個視覺-語言適配器。這個適配器的作用是將圖像特征序列壓縮到一個固定長度(例如256),以便更好地與語言模型結合。
- 壓縮機制:適配器包含一個單層交叉注意力模塊,使用可學習的查詢向量對圖像特征進行壓縮。
- 位置信息:為了保持位置信息的完整性,適配器在交叉注意力機制中使用2D絕對位置編碼。
- 輸入和輸出
- 圖像輸入:圖像通過視覺編碼器和適配器處理后,生成固定長度的圖像特征序列。為了區分圖像特征輸入和文本特征輸入,特殊標記(< img> 和 < /img>)被添加到圖像特征序列的開頭和結尾。
- 邊界框輸入和輸出:為了增強模型的細粒度視覺理解能力,Qwen-VL支持邊界框輸入和輸出。邊界框通過標準化和字符串格式化處理,使用特殊標記< box>組?進行區分。
訓練方法
訓練過程分為三個階段:兩個預訓練階段和一個指令微調階段。
階段1 預訓練
- 目標:利用大規模、弱標注的圖像-文本對數據訓練模型,優化視覺編碼器和視覺-語言適配器,同時凍結大型語言模型。
- 數據集:從多個公開來源(如 LAION、DataComp、Coyo 等)和內部數據中收集 50 億圖像-文本對,清理后剩 14 億(英語 77.3%,中文 22.7%)。數據清理后保留率 28%,數據集細節如下:
- 訓練細節:
a.輸入圖像分辨率:224X224。
b.訓練目標:最小化文本標記的交叉熵。
c.超參數:最大學習率 2X10-4,批量大小 30720,訓練 50,000 步,處理約 15 億樣本。
階段2 多任務預訓練
- 目標:引入高質量、細粒度標注數據,提升模型的多任務能力,解鎖并訓練整體模型。
- 數據集:涵蓋 7 個任務(說明、VQA、對齊、引用對齊、接地說明、OCR、純文本自回歸),數據來源包括 GRIT、Visual Genome、RefCOCO 等,以及內部數據和合成 OCR 數據,總計約 77M 樣本。
- 訓練數據格式:
- 訓練細節:
a.視覺編碼器分辨率提升至 448X448,移除窗口和全局注意力機制。
b.數據格式:交錯圖像-文本序列,長度 2048。
c.訓練目標與預訓練階段一致。
- 改進:更高的分辨率減少信息丟失,任務多樣性增強模型能力。
階段3 SFT
- 目標:通過指令微調提升 Qwen-VL 的指令遵循和對話能力,生成 Qwen-VL-Chat。
- 數據集:使用 350k 指令調整數據,包括 LLM 自生成的圖像說明/對話數據、手動標注和模型生成的定位/多圖像理解數據,以及多模態和純文本對話數據的混合。
- 訓練數據格式:
- 訓練細節:凍結視覺編碼器,僅優化語言模型和適配器。
- 結果:模型有效遷移定位和多圖像理解能力至多種語言和問題類型,同時保持對話通用性。
超參數細節
三階段訓練超參數細節
二、Qwen2-VL
Qwen2-VL總體沿用了
模型架構
1. 視覺編碼器:
沿用qwen-vl的形式視覺編碼器ViT,但有如下幾點改進:
- 動態分辨率支持:Qwen2-VL引入了“Naive Dynamic Resolution”機制,允許模型動態地將不同分辨率的圖像轉換為不同數量的視覺tokens。這種靈活性使得模型能夠更有效地處理各種分辨率的圖像,而不會損失細節信息。
- 2D-RoPE:為了更好地捕捉圖像的空間信息,Qwen2-VL在ViT中引入了二維旋轉位置嵌入(2D-RoPE)。傳統的RoPE用于一維序列,而2D-RoPE則擴展到二維空間,能夠同時捕捉圖像的高度和寬度信息。
- 壓縮機制:在推理階段,Qwen2-VL使用一個簡單的多層感知機(MLP)層來壓縮相鄰的2x2token為一個token,以減少每個圖像的視覺token數量。有助于減少計算負擔,同時保持模型的性能。
2. 多模態旋轉位置嵌入(M-RoPE)
M-RoPE是Qwen2-VL的創新點,用于建模多模態輸入的位置信息。傳統的RoPE僅限于一維序列,而M-RoPE則擴展到多模態輸入。實現方式如下:
- 分解位置嵌入:M-RoPE將原始的旋轉嵌入分解為三個組件:時間、高度和寬度。對于文本輸入,這三個組件使用相同的位置ID,使其功能上等同于1D-RoPE。
- 多模態應用:在處理圖像時,時間ID保持不變,而高度和寬度組件根據標記在圖像中的位置分配不同的ID。對于視頻,時間ID隨著每一幀的增加而遞增,而高度和寬度組件的ID分配模式與圖像相同。
3. 統一的圖像和視頻理解
Qwen2-VL采用混合訓練方法,結合圖像和視頻數據進行訓練,以確保模型在圖像理解和視頻理解方面的能力。訓練策略如下:
- 視頻采樣:為了盡可能完整地保留視頻信息,Qwen2-VL每秒采樣兩幀視頻。此外,使用3D卷積來處理視頻輸入,允許模型處理3D管狀結構而不是2D補丁,從而能夠處理更多的視頻幀而不增加序列長度。
- 動態調整分辨率:為了平衡長視頻處理的計算需求和整體訓練效率,Qwen2-VL動態調整每個視頻幀的分辨率,限制每個視頻的總標記數為16384。這種策略確保了模型在處理長視頻時的效率和性能。
訓練方法
階段1:預訓練
通過大量的圖像-文本對,訓練ViT以提取圖像中的特征,并將其與文本信息相結合。 ? 目標:專注于訓練視覺Transformer(ViT)組件,以增強大型語言模型(LLM)的語義理解能力。 ? 數據:使用大規模的圖像-文本對數據集進行訓練,以提高模型對圖像語義的理解。
階段2:全參數預訓練
通過更廣泛的數據集,訓練模型在多種任務上的表現,特別是復雜的多模態任務。 ? 目標:解鎖所有參數并進行更廣泛的數據訓練,實現更全面的學習。 ? 數據:引入更多樣化的數據集,包括圖像-文本對、OCR數據、交錯圖像-文本文章、視覺問答數據集、視頻對話和圖像知識數據集。
階段3:SFT
通過SFT,訓練模型理解和執行各種指令的能力,特別是在多模態任務中。
- 目標:凍結ViT參數,專門對LLM進行微調,優化其在指令遵循任務上的表現。
- 數據:使用指令遵循數據集進行訓練,涵蓋純文本對話數據和多模態對話數據。數據格式如下:
Qwen2.5-VL
模型架構
在Qwen2.5-VL中,模型的整體架構由三個主要組件構成:大型語言模型(LLM)、視覺編碼器(Vision Encoder)和基于MLP的視覺-語言融合器。以下是對這些組件的詳細解釋:
- LLM:Qwen2.5 LLM
- 視覺編碼器:采用重新設計的ViT架構。支持原生輸入分辨率,同時加速整個視覺編碼器的計算過程。
- 2D-RoPE:用于有效地捕捉二維空間中的空間關系。
- 窗口注意力:在大多數層中使用窗口注意力,以確保計算成本與patch數量成線性關系,而不是二次關系。這種設計允許模型在處理不同大小的圖像時保持高效。
- 動態采樣:在訓練過程中,圖像的高度和寬度被調整為28的倍數,然后輸入到ViT中。輸入圖像被分割成步長為14的patch,生成一組圖像特征。
- 3D patch劃分:對于視頻數據,兩幀連續的圖像被組合在一起,以減少輸入到語言模型的標記數量。這種方法不僅保持了與傳統架構的兼容性,還提高了處理順序視頻數據的效率。
- 基于MLP的視覺-語言融合器:為了應對長序列圖像特征的效率挑戰,Qwen2.5-VL采用了一種簡單而有效的方法來壓縮特征序列。首先,不直接使用ViT提取的原始補丁特征,而是將空間上相鄰的四組patch特征進行分組。這些分組的特征隨后被連接并通過一個兩層的MLP進行處理,將其投影到與文本嵌入對齊的維度。這種方法不僅減少了計算成本,還提供了一種靈活的方式來動態壓縮不同長度的圖像特征序列。
訓練方法
Qwen2.5-VL 整體的預訓練分為三個階段:
預訓練
- 視覺預訓練: 僅訓練 ViT,使用圖像標題、視覺知識和 OCR 數據。
- 多模態預訓練: 解凍所有模型參數,使用交錯數據、VQA、視頻、智能體等多種數據。
- 長上下文預訓練: 引入視頻、智能體數據,并增加序列長度。
預訓練數據著重通過各種策略提升了數據質量:
- 交錯圖文數據: 通過數據評分和清洗流程,確保使用高質量、相關的交錯數據。
- 絕對位置坐標的grounding數據: 使用基于輸入圖像實際尺寸的坐標值來表示邊界框和點,提高模型對真實世界尺度和空間關系的捕捉能力。
- 文檔全解析數據: 合成包含表格、圖表、公式、圖像、樂譜、化學式等多種元素的文檔數據,并以 HTML 格式統一表示,實現多模態文檔元素的無縫集成。
- OCR 數據: 收集和整理來自不同來源的 OCR 數據,包括合成數據、開源數據和內部收集的數據,并支持多種語言。
- 視頻數據: 動態采樣 FPS,構建長視頻標題,并以秒和時分秒幀 (hmsf) 格式表示時間戳。
- 智能體數據: 收集移動、Web 和桌面平臺的屏幕截圖,并使用合成數據引擎生成屏幕截圖標題和 UI 元素接地注釋。
其中最值得注意的特性是目標檢測任務使用了絕對位置坐標,以及視頻數據訓練中進行動態采樣FPS(Frames per second),目的是為了增強VLM的空間和時間理解能力。
后訓練
Qwen2.5-VL 的后訓練采用包含監督微調 (SFT) 和直接偏好優化 (DPO) 的雙階段優化范式,ViT的參數在整個后訓練階段都是凍結的。
- 監督微調 (SFT)
SFT階段用到的instruction data包含約 200 萬條數據,50% 為純文本數據,50% 為多模態數據(圖文和視頻文本)。在數據過濾流程中,先使用 Qwen2-VL-Instag (一個基于Qwen2-VL的分類模型)將 QA 對分層分類為 8 個主要領域和 30 個細粒度子類別,然后對于這些細分類別,使用領域定制過濾,結合基于規則和基于模型的過濾方法。
此外,在訓練中還使用拒絕采樣 (Rejection Sampling)技術,增強模型的推理能力。使用一個中間版本的 Qwen2.5-VL 模型,對帶有標注(ground truth)的數據集生成響應,將模型生成的響應與標注的正確答案進行比較,只保留模型輸出與正確答案匹配的樣本,丟棄不匹配的樣本。此外還進一步過濾掉不理想的輸出,例如:代碼切換 (code-switching)、過長 (excessive length)、重復模式 (repetitive patterns)等。通過這種方式,確保數據集中只包含高質量、準確的示例。
a.基于規則的過濾: 刪除重復模式、不完整或格式錯誤的條目,以及不相關或可能導致有害輸出的查詢和答案。
b.基于模型的過濾: 使用 Qwen2.5-VL 系列訓練的獎勵模型評估多模態 QA 對。
- 直接偏好優化 (DPO):
介紹的不是特別的詳細,沒看懂,僅使用圖文和純文本數據,不使用視頻數據,利用偏好數據將模型與人類偏好對齊。
參考文獻
- Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond,https://arxiv.org/pdf/2308.12966
- Qwen2-VL: Enhancing Vision-Language Model’s Perception of the World at Any Resolution,https://arxiv.org/pdf/2409.12191
- Qwen2.5-VL Technical Report,https://arxiv.org/abs/2502.13923
公眾號大模型自然語言處理 作者:余俊暉
原文鏈接:??https://mp.weixin.qq.com/s/8bzHK5FsCzwmK_hD4DBrzA??
