帶你認識微信多模態(tài)大模型 POINTS
作者 | bensenliu
始于數(shù)據(jù),但不局限于數(shù)據(jù)
POINTS: Improving Your Vision-language Model with Affordable Strategies
paper link: https://huggingface.co/papers/2409.04828
前言
近來,隨著大型語言模型的發(fā)展,視覺語言大型模型的能力也在逐步增強,GPT-4、Gemini Pro 1.5和Claude 3等著名的閉源模型成功將 LLM 擴展到視覺語言模型領(lǐng)域。LLaVA,InternVL等開源模型也在迅速發(fā)展。目前,視覺語言模型領(lǐng)域存在一些關(guān)鍵問題亟待解決:
- 閉源模型很少公開關(guān)于其架構(gòu)的詳細信息。相比之下,開源模型雖公開了其訓(xùn)練策略,但這些策略的詳細消融并沒有完全披露。
- 在目前的開源工作中,對于預(yù)訓(xùn)練階段,大多都是憑經(jīng)驗添加不同來源的數(shù)據(jù)集,這使得預(yù)訓(xùn)練過程難以得到深入的探索。
- 在微調(diào)階段,絕大多數(shù)工作關(guān)注的重點通常是添加和消融更多的數(shù)據(jù)集,這樣性能會較快觸及瓶頸。
我們針對以上幾點給出了我們的方案,并進行了清晰充分的實驗論證。
POINTS 主要包含 3 個部分:
- 強 baseline: 通過融入當前主流的前沿技術(shù),我們?yōu)檫M一步探索創(chuàng)造了一個較強的 baseline
- pre-train 數(shù)據(jù)集過濾策略:借鑒 LLM 中常用的利用 ppl 來過濾數(shù)據(jù)的思想,我們利用一個離線模型使用 ppl 的方式來過濾 pre-train 數(shù)據(jù),最終得到 1M 高效的 pre-train 數(shù)據(jù)
- model soup: 在指令微調(diào)階段,過濾大部分工作都集中在消融更多的數(shù)據(jù)集來增強模型性能,但這種方式很可能達到一個階段后帶來的增益就比較有限,我們率先提出在不同指令微調(diào)數(shù)據(jù)集上訓(xùn)練得到的模型進行 model soup,實驗結(jié)果表明,模型的性能可以得到進一步較大的提升
強 baseline
我們首先將現(xiàn)在開源工作中的各種技術(shù)(動態(tài)高分辨率,CapFusion,雙視覺編碼器,Individual Select)進行了整合,并提出一種新的動態(tài)分辨率分割方法,以搭建一個更加穩(wěn)健和高效的 baseline。下圖是POINTS的模型結(jié)構(gòu)。對于每個模塊(例如 OCR ViT、General ViT、MLP Projector 和 Large Language Model),虛線左側(cè)標簽表示預(yù)訓(xùn)練時的狀態(tài),右側(cè)標簽表示指令調(diào)優(yōu)時的狀態(tài)。
Consistent Aspect Ratio Dynamic High Resolution (CATTY)
將高分辨率圖像提供給視覺語言模型有利于捕捉細粒度細節(jié)和減少幻覺。與 LLaVA-Next 和 InternVL-1.5 中的動態(tài)高分辨率不同的是,我們在對高分辨率圖像進行切分時保持了圖塊的縱橫比。在InternVL-1.5中,在分割圖像之前,圖像大小會被調(diào)整為預(yù)定義分辨率中與其最接近的目標分辨率,這種切圖方式容易導(dǎo)致失真。而我們通過在切圖時引入overlap的方式在把圖像切割為固定大小圖塊的同時,保持了圖塊縱橫比。
CATTY的具體步驟如下:i) 首先,預(yù)定義圖像可以分割成的最大圖塊數(shù)(在我們的實驗中設(shè)置為 8)。ii) 列出圖塊數(shù)不超過最大圖塊數(shù)的所有整數(shù)分辨率組合。iii) 給定一個高度為H和寬度為W的圖像,我們尋找與其分辨率最近的整數(shù)分辨率,乘視覺編碼器的圖像尺寸,得到目標圖像的高度Hr和寬度Wr,并通過以下方式將圖像大小調(diào)整為目標大小 (Ht × Wt ):
給定視覺編碼器的輸入分辨率 Hv×Wv,目標圖像應(yīng)分為 Hr/Hv × Wr/Wv 圖塊。接下來,我們使用一個滑動窗口分割目標圖像 Ht×Wt ,該窗口的步幅分別為 Height 和 width。步幅(Sh, Sw) 的計算方式如下:(若 Hr/Hv = 1,Sh為0,若 Wr/Wv = 1,Sw 為 0)
除了使用CATTY分割的圖塊,我們還加入了整體圖像的縮略圖來捕獲整體上下文信息。在將視覺編碼器輸出的特征對齊并傳入到大型語言模型之前,我們InternLM-XComposer2-4KHD中的pixel-shuffile,設(shè)置下采樣因子為 0.25,減少圖像特征的序列長度以提高效率。
1.CapFusion
預(yù)訓(xùn)練數(shù)據(jù)集中原始 caption 通常存在很多噪聲和結(jié)缺陷。為了解決這個問題,LAION-COCO 和 BLIP-LAION 等提出了通過 image captioning model 生成 synthetic caption。但合成字幕中較為簡單的句法和語義結(jié)構(gòu)可能會導(dǎo)致缺失可擴展性和缺乏世界知識。CapFusion利用大語言模型整合原始 caption 和 synthetic caption,在豐富的世界知識和結(jié)構(gòu)化且語法簡單之間取得了較好的平衡。我們使用 InternLM-XComposer2[9] 為圖像生成 synthetic caption,使用 InternLM2[10] 來整合原始 caption 和 synthetic caption。
2.Dual Vision Encoder
相關(guān)工作如 SPHINX[11] 和 Cambrian1,已經(jīng)證明不同的視覺編碼器會在不同的領(lǐng)域表現(xiàn)優(yōu)勢,結(jié)合多個視覺編碼器可以在性能上有更大的提升。文本密集型圖像所需的視覺編碼能力在一定程度上有別于自然圖像。為了增強光學(xué)字符識別(OCR)能力,我們訓(xùn)練了一個單獨的視覺編碼 OCR ViT,遵循 Vary[13] 的方法從圖像中提取文本特征。與其不同的是,我們沒有從零構(gòu)建圖文對的訓(xùn)練樣本(如圖表),我們使用PaddleOCR提取的文本結(jié)果構(gòu)建數(shù)據(jù)集,并在數(shù)據(jù)集中加入描述自然圖像的caption組成完整的預(yù)訓(xùn)練數(shù)據(jù)集。我們將完成訓(xùn)練的 OCR ViT 與通用視覺編碼器(通用 ViT)用過加權(quán)平均值合并,然后將輸入到大型語言模型中。
3.Individual Select
Individual Select 通過貪心選擇的方式從一個數(shù)據(jù)池中確定最有效的指令調(diào)優(yōu)數(shù)據(jù)集。我們收集了其中所提到的開源數(shù)據(jù)集,并整合了DeepSeekVL、Cambrian-1 和 Cauldron 使用的數(shù)據(jù)以及額外的16個數(shù)據(jù)集。此外,鑒于學(xué)術(shù)數(shù)據(jù)集的提示風(fēng)格趨于同質(zhì),為了增強提示的多樣性,我們從 LAION-5B 中隨機選取了一些圖像使用 GPT-4o 生成了一系列問答對。最終我們得到了可視化指令調(diào)優(yōu)數(shù)據(jù)集 Base Set。
預(yù)訓(xùn)練數(shù)據(jù)篩選策略
perplexity(PPL) 常在大語言模型中被用作評估預(yù)訓(xùn)練數(shù)據(jù)集質(zhì)量的指標。受其啟發(fā),我們利用已被訓(xùn)練過的視覺語言模型 P 來進一步過濾掉CapFusion獲得預(yù)訓(xùn)練數(shù)據(jù)集中的低質(zhì)量部分。對于預(yù)訓(xùn)練數(shù)據(jù)集中的每個數(shù)據(jù)樣本s,我們使用以下公式計算所有文本的 PPL,({w1,...,wN } 表示s中的文本序列):
我們對所有樣本進行升序排序,并選擇前 20% 用于預(yù)訓(xùn)練。與大型語言模型中的篩選結(jié)果不同,對比 PPL 前 20% 和后 20% 的樣本,我們發(fā)現(xiàn)兩者的區(qū)別并不是數(shù)據(jù)的質(zhì)量。PPL 后 20% 的物品通常包含晦澀難懂的世界知識,例如游戲版本號和計算機出廠序列號,這類世界知識極為罕見,且信息量非常少,因此對模型的學(xué)習(xí)不太有益。
1.Model Soup
視覺指令調(diào)優(yōu)數(shù)據(jù)對于現(xiàn)有視覺語言模型的卓越性能至關(guān)重要。但現(xiàn)有工作大多通過迭代消融來選擇更有效的數(shù)據(jù)集,這種方法很快會達到了一個瓶頸期,后續(xù)的數(shù)據(jù)選擇帶來的提升微乎其微,甚至?xí)档湍P托阅?。在?shù)據(jù)選擇遇到瓶頸后,我們使用 model soup 整合使用不同指令調(diào)優(yōu)數(shù)據(jù)集進行微調(diào)的模型優(yōu)勢。model soup 的原理是通過使用不同的超參數(shù)(學(xué)習(xí)率、數(shù)據(jù)增強、初始化種子等)對模型進行微調(diào)以收斂到不同的局部最優(yōu)值,對這些模型的權(quán)重進行插值,以得到一個更強的模型。為了將 model soup 的思路應(yīng)用在數(shù)據(jù)集的優(yōu)勢融合上,我們在性能飽和的指令調(diào)優(yōu)數(shù)據(jù)集base set上單次加入一個 Individual Select 階段未能帶來顯著性能提升的數(shù)據(jù)集,構(gòu)成新的數(shù)據(jù)集Di* ,模型在微調(diào)后收斂到不同的局部最優(yōu)值f(Dk*;θk),再將這些模型權(quán)重進行插值。我們提出了Maximum Soup、Average Soup 和 Greedy Soup 三種方法來選擇微調(diào)模型的最佳組合。
2.Maximum Soup
給定評估分數(shù) Acc,我們使用以下公式獲得一個更強模型 f(θs):
3.Average Soup
通過取所有微調(diào)模型的權(quán)重平均值,我們可以獲得更強的模型 f(θs):
Greedy Soup
首先根據(jù)評估分數(shù)對微調(diào)后的模型進行降序排序。接著遍歷排序后的模型。對于每個模型,我們計算其權(quán)重與模型池中當前所有模型的權(quán)重的平均值。如果評估分數(shù)提高,則模型將添加到池中。最后,我們對池中所有模型的權(quán)重進行平均,以獲得更強的模型,表示為 f(θs)。下表概述了 Greedy Soup 的步驟。
1.實驗
我們使用 OpenCompass中 的 8 個基準,從不同角度均衡地對模型進行評估。這些指標包括:MMBench 和 MMStar:用于評估通用能力;MMMU:用于測試STEM(科學(xué)(Science)、技術(shù)(Technology)、工程(Engineering)和數(shù)學(xué)(Mathematics))能力;MathVista:用于數(shù)學(xué)相關(guān)能力;AI2D:用于圖表相關(guān)能力;OCRBench:用于OCR功能;MMVet:用于主觀評估。我們使用 OpenCompass 提供的 VLMEvalKit 進行標準化評估,在 MMBench 上選擇 dev-en split。
2.數(shù)據(jù)配置
在預(yù)訓(xùn)練階段,訓(xùn)練 OCR ViT 時,我們沒有額外抓取PDF文件并轉(zhuǎn)換為圖像構(gòu)建數(shù)據(jù)集,為了提高復(fù)雜背景下的 OCR 能力,我們從 LAION-5B-en、LAION-5B-cn、WuKong 和 Zero 中隨機選擇了 2000 萬個數(shù)據(jù)樣本。使用 PaddleOCR 從圖像中提取文本,替換原始 caption 以形成新的數(shù)據(jù)對。此外我們加入 LAION-5B 的 1000 萬個原始數(shù)據(jù)樣本,構(gòu)成最終數(shù)據(jù)集進行訓(xùn)練。
在指令調(diào)優(yōu)階段,基于 [14] 中確定的數(shù)據(jù),我們繼續(xù)使用 Individual Select 的方式在其他開源數(shù)據(jù)工作中進行了選擇,確定為基礎(chǔ)數(shù)據(jù)集。對于未能通過 Individual Select 得到增益的其余數(shù)據(jù)集,我們將其組成數(shù)據(jù)池,以待通過 model soup 的方式加以選擇和利用。
3.訓(xùn)練配置
在 OCR ViT 的預(yù)訓(xùn)練階段,我們使用 LLaVA 架構(gòu),視覺編碼器從 OpenAI 的 CLIP-ViT-Large-336 初始化,大型語言模型是從 Yi-1.5-9B-Chat[19]初始化。凍結(jié)大型語言模型權(quán)重,設(shè)置視覺編碼器和MLP是可訓(xùn)練的。視覺編碼器和MLP的學(xué)習(xí)率分別設(shè)置為 2×10-4 和 2×10-5 ,學(xué)習(xí)率的schedule在訓(xùn)練過程的前3%采用預(yù)熱(warm up),剩余步驟采用余弦衰減。
在整體視覺語言模型的預(yù)訓(xùn)練階段,通用 ViT 從 OpenAI 的 CLIP-ViT-Large-336 初始化的,OCR ViT 則繼承上個階段的權(quán)重。參考 Vary 的設(shè)置,我們的通用 ViT 只有最后三層是可訓(xùn)練的,OCR ViT 則在整個階段保持凍結(jié)狀態(tài)。我們選擇通用 ViT 和 OCR ViT 倒數(shù)第二層的特征通過 MLP 與大預(yù)言模型連接。起到特征對齊作用的 MLP,在預(yù)訓(xùn)練階段保持可訓(xùn)練狀態(tài)。通用 ViT 和 MLP 的學(xué)習(xí)率分別設(shè)置為 2×10-4 和 2×10-5 ,學(xué)習(xí)率的schedule在訓(xùn)練過程的前3%采用預(yù)熱(warm up),剩余步驟采用余弦衰減。
在指令調(diào)優(yōu)階段,我們凍結(jié)通用 ViT 和 OCR ViT。MLP 和大預(yù)言模型保持可訓(xùn)練狀態(tài),學(xué)習(xí)率設(shè)置為 2 × 10?5 。學(xué)習(xí)率的 schedule 在訓(xùn)練過程的前3%采用預(yù)熱(warm up),剩余步驟采用余弦衰減。
4.與目前先進的方法對比
除了 OpenCompass 的8個基準外,我們增加了ScienceQA、MME、LLaVA-Wild 和 ReadWorldQA 更詳細地與目前領(lǐng)域內(nèi)最先進的模型進行比較。POINTS的性能可與現(xiàn)有類似尺寸的模型媲美,甚至超越更大參數(shù)量的模型性能,如 Cambrian-34B。此外,與其他模型相比,POINTS 使用的預(yù)訓(xùn)練數(shù)據(jù)集和指令調(diào)優(yōu)數(shù)據(jù)集更少且是公開可用的,我們下面將從各角度對 POINTS 進行了徹底的分析,充分論證每種策略的有效性。這意味著后續(xù)開源工作能夠更簡單直接地使用本文提出的方法。
強 baseline 的消融實驗
CF:CapFusion,DHR:動態(tài)高分辨率,CATTY:我們提出的一致縱橫比動態(tài)高分辨率,DEV:雙視編碼器,IS:Individual Select。MMB:MMBench、MV:MathVista、HB:HallusionBench、OCR:OCRBench、Overall:前 8 個基準的平均值。
每個組件都有助于穩(wěn)步改進。這些增強功能非常重要, 例如,在引入動態(tài)高分辨率來分割輸入圖像后,我們觀察到 OCR 相關(guān)任務(wù)(如 OCRBench)有了實質(zhì)性的改進,性能從56.9% 對 60.3%。此外,使用具有動態(tài)高分辨率的高分辨率圖像有助于減少幻覺,這主要是由于高分辨率圖像中的細節(jié)增加。此外,用 CATTY 替換原來的動態(tài)高分辨率會導(dǎo)致各種基準測試的顯著改進,OCR 相關(guān)基準測試的收益比其他基準測試更大。這可能是因為圖像失真對圖像中的文本有更明顯的負面影響。與一般的視覺特征提取相比,CLIP-ViT 從圖像中提取文本特征的能力是有限的,因為它是在大量的通用圖像-文本對上訓(xùn)練的。因此,在集成了來自附加 ViT 的特征后,我們觀察到 OCRBench 有了實質(zhì)性的改進,并在文本豐富的圖像上進行了后訓(xùn)練。在這 5 種策略中,通過 Individual Select 整合更多的可視化指令調(diào)整數(shù)據(jù)集會產(chǎn)生最顯著的改進。這一觀察結(jié)果與現(xiàn)有工作一致,強調(diào)了在視覺指令調(diào)整階段選擇有效數(shù)據(jù)集的重要性。
通過PPL篩選預(yù)訓(xùn)練數(shù)據(jù)的實驗(左),Dual Vision Encoder 的實驗(中),model soup 融合指令調(diào)優(yōu)數(shù)據(jù)的實驗(右)
(左)前兩行比較了預(yù)訓(xùn)練階段不同數(shù)據(jù)量的使用情況。第三行表示第一行中5M數(shù)據(jù)集按PPL篩選了升序排序的前20%子集。將預(yù)訓(xùn)練數(shù)據(jù)大小從 5M 擴展到 20M 反而會導(dǎo)致性能下降,我們認為可能的原因是:i)現(xiàn)有大多數(shù)視覺語言模型的視覺編碼器都是從基于大量圖像-文本對進行預(yù)訓(xùn)練的視覺模型初始化的。而我們的視覺語言模型,在預(yù)訓(xùn)練階段使用的大部分數(shù)據(jù)很可能已經(jīng)被視覺編碼器訓(xùn)練過,導(dǎo)致在擴大預(yù)訓(xùn)練數(shù)據(jù)集的大小時,只會帶來有限甚至負向的影響。ii) 現(xiàn)有的大規(guī)模網(wǎng)絡(luò)爬蟲數(shù)據(jù)集,例如 LAION-5B 和 COYO-700M,數(shù)據(jù)分布非常同質(zhì)。我們提取圖像的主要實體后繪制密度圖后,發(fā)現(xiàn)這是一種長尾分布,因此,不加選擇地增加數(shù)據(jù)量進行預(yù)訓(xùn)練只能帶來有限的提升。而我們僅使用 1M 數(shù)據(jù)對模型進行預(yù)訓(xùn)練,這些數(shù)據(jù)是 5M 數(shù)據(jù)的按照 PPL 升序排序后的前 20%。這表明,在過渡過程中,過度地將模型暴露在晦澀和稀缺的知識中,不利于其學(xué)習(xí)。
(中)DVE:Dual Vision Encoder 架構(gòu)。SVE:Single Vision Encoder 架構(gòu)。
(右)lr:在不同學(xué)習(xí)率微調(diào)的模型上使用Model Soup。ds:使用不同數(shù)據(jù)集微調(diào)的模型上使用Model Soup。添加更多的指令調(diào)優(yōu)數(shù)據(jù)集通常會達到一個瓶頸。然而,通過整合不同數(shù)據(jù)集訓(xùn)練得到的模型湯,我們觀察到了實質(zhì)性的改進,總分從 59.0 提高到 61.2。我們對各種 Model Soup 策略進行了比較。其中,greedy soup 的表現(xiàn)最好,分別比 maximum soup 和 average soup 高出 0.8 和 0.6 個百分點。此外,我們還對比了使用不同超參數(shù)(例如不同的學(xué)習(xí)率)進行模型湯的結(jié)果,其只能帶來有限提升。
model soup 與 Individual Select 的對比實驗
這幅圖展示了在相同基礎(chǔ)數(shù)據(jù)集基礎(chǔ)上,使用 Individual Select 和 Model Soup 加入單個數(shù)據(jù)集的性能差距。表明當通過 Individual Select 的方式選擇并添加額外的指令調(diào)整數(shù)據(jù)集無益時,使用 Model Soup 的融合方式可以顯著提高性能。