【多模態(tài)&LLM】POINTS多模態(tài)大模型淺談
NaViT概述
NaViT利用序列打包訓(xùn)練,處理任意分辨率和長(zhǎng)寬比的輸入,在大規(guī)模監(jiān)督和對(duì)比圖像文本預(yù)訓(xùn)練中提高了訓(xùn)練效率,可以用于圖像和視頻分類、目標(biāo)檢測(cè)和語(yǔ)義分割,并在魯棒性和公平性基準(zhǔn)測(cè)試中取得了改進(jìn)的結(jié)果。
圖片
下面對(duì)NaViT在數(shù)據(jù)處理、模型架構(gòu)和訓(xùn)練策略方面的優(yōu)化總結(jié):
- 數(shù)據(jù)預(yù)處理:如上圖展示了NaViT在處理任意分辨率的方法,將不同分辨率的圖像分割成補(bǔ)丁(patches),然后應(yīng)用令牌丟棄(token drop)操作,類似于dropout,以加速訓(xùn)練過程。預(yù)處理后,將三張圖像生成的補(bǔ)丁展平為一個(gè)序列,不足的部分用填充(padding)補(bǔ)充。
- 模型架構(gòu):引入掩碼自注意力(Masked self attention)和掩碼池化(masked pooling),以防止示例之間的信息交換(防止圖片之間存在信息交換),并為每個(gè)示例提供單一的向量表示。采用因子化和分?jǐn)?shù)位置嵌入(Factorized & fractional positional embeddings),以支持任意分辨率和寬高比,并便于推斷到未見過的分辨率。
- 訓(xùn)練策略:
a.實(shí)施連續(xù)令牌丟棄(Continuous Token dropping),允許根據(jù)每張圖像調(diào)整丟棄率,從而在保持一定完整圖像的同時(shí)提高吞吐量,減少訓(xùn)練和推理之間的差異。
b.采用分辨率采樣(Resolution sampling),通過在訓(xùn)練過程中從圖像大小分布中采樣,實(shí)現(xiàn)混合分辨率訓(xùn)練,同時(shí)保留每個(gè)圖像的原始寬高比。這種方法可以在提高吞吐量的同時(shí),增加對(duì)大圖像的曝光,從而在與同等規(guī)模的ViT相比時(shí)顯著提高性能。
通過上述優(yōu)化,NaViT在處理任意分辨率和寬高比的圖像方面表現(xiàn)出色,同時(shí)在訓(xùn)練效率和性能上優(yōu)于傳統(tǒng)的ViT模型。
POINTS
POINTS架構(gòu)
POINTS1.5采用了傳統(tǒng)的LLaVA(【多模態(tài)&LLM】LLaVA系列算法架構(gòu)演進(jìn):LLaVA(1.0->1.5->Next(1.6)->NeXT(Video))風(fēng)格架構(gòu),該架構(gòu)包括視覺編碼器、MLP投影層和LLM。這種架構(gòu)通過持續(xù)的后期訓(xùn)練來增強(qiáng)LLM解釋視覺信息的能力。
視覺編碼器
改進(jìn)點(diǎn):
- NaViT風(fēng)格視覺編碼器: POINTS1.5用NaViT風(fēng)格的視覺編碼器替換了POINTS1.0中的CLIP視覺編碼器。NaViT能夠原生處理任意分辨率的圖像,而無需分割圖像。
- 動(dòng)態(tài)高分辨率支持: NaViT允許模型在不降低性能的情況下處理任意大小的圖像,避免了傳統(tǒng)方法中分割圖像導(dǎo)致的空間關(guān)系破壞問題。
批量前向傳播與NaViT
由于NaViT處理的是序列長(zhǎng)度不同的圖像,批量前向傳播需要特殊處理。采用了一種類似于LLM的策略,將多個(gè)圖像序列打包成一個(gè)長(zhǎng)序列,并記錄每個(gè)圖像序列的起始和結(jié)束索引,以確保自注意力機(jī)制僅在當(dāng)前圖像序列的邊界內(nèi)應(yīng)用。
MLP投影層
投影層與LLaVA和NVLM-D一致,都是由一個(gè)帶有GELU激活函數(shù)的兩層MLP組成,用于將視覺編碼器的輸出轉(zhuǎn)換為L(zhǎng)LM可以處理的嵌入表示。
LLM
POINTS1.5使用Qwen2.5-7B-Instruct作為其LLM。
預(yù)訓(xùn)練數(shù)據(jù)格式:
圖片
預(yù)訓(xùn)練期間的聊天模板,左圖為POINTS1.0,右圖為POINTS1.5
訓(xùn)練方法
圖片
三階段的訓(xùn)練方法如下:
第一階段(對(duì)齊階段):使用大量數(shù)據(jù)訓(xùn)練模態(tài)tokenizer和detokenizer。例如,視覺編碼器和解碼器。這個(gè)階段的目的是確保tokenizer能夠唯一且準(zhǔn)確地編碼任何模態(tài)信號(hào)到一個(gè)壓縮的特征空間,同時(shí)detokenizer能夠?qū)⑦@些壓縮特征恢復(fù)為原始的模態(tài)信號(hào)。
第二階段:預(yù)熱模態(tài)嵌入層,將任何模態(tài)信號(hào)轉(zhuǎn)換成LLM的文本空間。在這個(gè)階段,數(shù)據(jù)集的大小不一定需要很大,因?yàn)樵趯?shí)驗(yàn)和之前的工作中發(fā)現(xiàn),較小的數(shù)據(jù)集也可以達(dá)到良好的效果。
第三階段:使用高質(zhì)量的指令調(diào)整數(shù)據(jù)集來訓(xùn)練模態(tài)嵌入層和LLM,同時(shí)保持tokenizer和detokenizer不變。這個(gè)階段的目的是賦予LLM理解不同模態(tài)的能力。
通過這三個(gè)階段的訓(xùn)練,可以有效地?cái)U(kuò)展LLM以支持額外的模態(tài)。
實(shí)驗(yàn)
圖片
OpenCompass benchmarks
- 發(fā)票信息抽取
圖片
- OCR
圖片
- 公式識(shí)別
圖片
- etc...
參考文獻(xiàn)
- Patch n' Pack: NaViT, a Vision Transformer for any Aspect Ratio and Resolution,https://arxiv.org/abs/2307.06304
- POINTS1.5: Building a Vision-Language Model towards Real World Applications,https://arxiv.org/pdf/2412.08443
- https://github.com/WePOINTS/WePOINTS