為什么多模態AI是下一個風口?深度解讀新一代LLM 精華
本文旨在解釋多模態大語言模型的工作原理。此外,還將回顧并總結最近幾周發布的十幾篇多模態研究論文和模型(包括 Llama 3.2)的內容,以比較它們的不同實現方式。
一、多模態大語言模型是什么?
多模態大語言模型(Multimodal Large Language Models,簡稱Multimodal LLMs)是一種能夠理解和生成多種類型數據的模型,包括文本、圖片、音頻和視頻等。這些模型可以跨越不同的數據形式,進行信息的交互與生成。例如,傳統語言模型只能處理文字,但多模態模型不僅能“讀”文字,還能“看”圖片、“聽”聲音,甚至“看”視頻,并用文字或其他形式將它們的理解表達出來。
一個典型的應用場景是圖片描述。例如,你可以上傳一張圖片,模型可以用自然語言準確地描述圖片中的內容。它還能完成更復雜的任務,比如提取PDF文件中的表格數據,生成學術文檔所需的LaTeX格式等。不管是日常生活中的實用性,還是在專業領域的助力,多模態模型都展示了其廣泛的應用潛力。
二、構建多模態大語言模型的常見方法
構建多模態大語言模型(LLM)主要有兩種常見的方法:
- 方法A:統一嵌入解碼架構(Unified Embedding Decoder Architecture);
- 方法B:跨模態注意力架構(Cross-Modality Attention Architecture)。
如上圖所示,統一嵌入解碼架構(Unified Embedding-Decoder Architecture)使用單一解碼模型,其結構類似于未修改的大語言模型架構,例如 GPT-2 或 Llama 3.2。在這種方法中,圖像被轉換為與原始文本標記(Token)相同的嵌入大小,使得LLM能夠在文本和圖像輸入標記合并后共同處理這些數據。
相比之下,跨模態注意力架構(Cross-Modality Attention Architecture)通過跨注意力機制在注意力層中直接集成圖像和文本嵌入。
接下來的部分將從概念層面探索這些方法如何工作,并結合最近的多模態LLM研究論文,探討它們在實際應用中的實現方式。
2.1 方法A:統一嵌入解碼架構
讓我們先從統一嵌入解碼架構開始,這種架構如下面的圖示所示。
統一嵌入解碼架構的圖示,這一架構基于未修改的解碼器風格的大語言模型(如 GPT-2、Phi-3、Gemma 或 Llama 3.2),模型接收的輸入包括圖像標記和文本標記的嵌入。
在統一嵌入解碼架構中,圖像被轉換為嵌入向量,其過程與標準文本語言模型處理文本時將輸入文本轉換為嵌入的方式類似。
對于一個典型的僅處理文本的LLM來說,文本輸入通常會經過以下步驟:
a. **標記化:**文本被分解為小的單位(如使用字節對編碼法,Byte-Pair Encoding);
b. **嵌入層處理:**這些標記通過嵌入層轉換為嵌入向量。
2.1.1 理解圖像編碼器
類似于文本的標記化和嵌入生成,圖像嵌入是通過一個圖像編碼器模塊生成的(而不是通過標記器生成),如下圖所示。
圖像編碼器的內部如何工作?如圖所示,為了處理一張圖像,我們首先將圖像分割成小塊,就像在標記化過程中將單詞分解為子詞一樣。這些小塊隨后由一個預訓練的**視覺Transformer(Vision Transformer,簡稱ViT)**進行編碼,具體過程如下面的圖示所示。
該圖示展示了經典ViT模型的設置,與論文《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》(2020年)中提出的模型類似。
需要注意的是,ViT通常用于分類任務,因此上圖中包含了一個分類頭(classification head)。然而,在這里我們只需要使用圖像編碼器部分。
2.1.2 線性投影模塊的作用
前一圖示中的“線性投影”(linear projection)由一個單獨的線性層(即全連接層)組成。其作用是將經過展平的圖像塊投影為一個與Transformer編碼器兼容的嵌入尺寸。如下圖所示,這一線性投影的過程展示了如何將一個展平的圖像塊從256維向量投影為768維向量。
上圖展示了線性投影層如何將展平的圖像塊從256維嵌入空間映射到768維嵌入空間。如果更傾向于通過代碼示例理解,我們可以用以下PyTorch代碼實現對圖像塊的線性投影:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
import torch
class PatchProjectionLayer(torch.nn.Module):
def __init__(self, patch_size, num_channels, embedding_dim):
super().__init__()
self.patch_size = patch_size
self.num_channels = num_channels
self.embedding_dim = embedding_dim
self.projection = torch.nn.Linear(
patch_size * patch_size * num_channels, embedding_dim
)
def forward(self, x):
batch_size, num_patches, channels, height, width = x.size()
x = x.view(batch_size, num_patches, -1) # Flatten each patch
x = self.projection(x) # Project each flattened patch
return x
# Example Usage:
batch_size = 1
num_patches = 9 # Total patches per image
patch_size = 16 # 16x16 pixels per patch
num_channels = 3 # RGB image
embedding_dim = 768 # Size of the embedding vector
projection_layer = PatchProjectionLayer(patch_size, num_channels, embedding_dim)
patches = torch.rand(
batch_size, num_patches, num_channels, patch_size, patch_size
)
projected_embeddings = projection_layer(patches)
print(projected_embeddings.shape)
# This prints
# torch.Size([1, 9, 768])
如果你閱讀過機器學習問與答》(Machine Learning Q and AI)一書,你可能知道,可以用卷積操作來替代線性層,并實現數學上的等價性。在這里,這種方法尤其實用,因為我們可以通過卷積操作同時完成圖像塊的創建和投影,僅需兩行代碼:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
layer = torch.nn.Conv2d(3, 768, kernel_size=(16, 16), stride=(16, 16))
image = torch.rand(batch_size, 3, 48, 48)
projected_patches = layer(image)
print(projected_patches.flatten(-2).transpose(-1, -2).shape)
# This prints
# torch.Size([1, 9, 768])
2.1.3 圖像與文本的標記化對比
在簡單討論了圖像編碼器(及其包含的線性投影)的作用后,讓我們回到之前提到的文本標記化類比,進一步比較圖像和文本標記化與嵌入的過程,如下圖所示。
上圖展示了圖像和文本標記化過程的并排對比。可以看到,在圖像編碼器之后,我添加了一個額外的投影模塊(projector)。這一模塊通常是一個線性投影層,與前面提到的類似,其目的是將圖像編碼器的輸出投影到與文本標記嵌入相匹配的維度,如下圖所示。(需要注意的是,這個模塊有時也被稱為適配器、連接器或轉換器。)
現在,圖像塊嵌入的維度已經與文本標記嵌入的維度相同,因此我們可以將它們簡單地拼接在一起,作為輸入提供給大語言模型(LLM)。為了方便參考,以下再次展示了本節開頭的圖示。
將圖像塊標記投影到與文本標記嵌入相同維度后,拼接為標準LLM的輸入。順便提一下,此部分討論的圖像編碼器通常是預訓練的視覺Transformer(ViT)。一個常見的選擇是CLIP或OpenCLIP。
然而,方法A也有一些變體可以直接處理圖像塊,例如Fuyu模型,如下圖所示。
如上圖所示,Fuyu模型直接將輸入的圖像塊送入線性投影層(或嵌入層),通過自身學習圖像塊的嵌入,而不像其他模型和方法那樣依賴額外的預訓練圖像編碼器。這種方法顯著簡化了架構和訓練流程。
2.2 方法B:跨模態注意力架構
在討論了統一嵌入解碼架構的方法并理解了圖像編碼的基本概念后,我們來探討另一種實現多模態LLM的方法:跨模態注意力架構,如下圖所示。
在上圖所示的跨模態注意力架構中,我們仍然使用前面討論的圖像編碼器設置。然而,不同的是,這種方法不是將圖像塊編碼作為LLM的輸入,而是通過多頭注意力層中的跨注意力機制將輸入圖像塊連接起來。
這一思想可以追溯到2017年提出的經典Transformer架構(Attention Is All You Need論文),如下圖所示。
需要注意的是,上圖中原始的Attention Is All You Need Transformer最初是為語言翻譯開發的。因此,它由一個文本編碼器(圖的左側)和一個文本解碼器(圖的右側)組成,用于生成翻譯結果。在多模態LLM的背景下,編碼器部分被圖像編碼器取代,但核心思想保持一致。
跨注意力是如何工作的?我們來看一個概念圖,展示了常規自注意力機制內部的運行方式。
在上圖中,輸入為 x,而 W_q 是生成查詢(Query, Q)的權重矩陣。同樣,K 表示鍵(Key),V 表示值(Value)。A 是注意力分數矩陣,Z 則是輸入 x 轉換后的輸出上下文向量。
在跨注意力中,與自注意力不同,我們有兩個不同的輸入來源,如下圖所示。
跨注意力的示意圖,在跨注意力中,可能存在兩個不同的輸入 x_1 和 x_2。如前兩幅圖所示,在自注意力中,我們處理的是同一個輸入序列。而在跨注意力中,我們混合或結合了兩個不同的輸入序列。
在經典 Transformer 架構(Attention Is All You Need 論文)中,兩個輸入 x_1 和 x_2 分別對應于編碼器模塊輸出的序列(x_2)和解碼器部分正在處理的輸入序列(x_1)。在多模態LLM的上下文中,x_2 是圖像編碼器的輸出。(請注意,查詢通常來自解碼器,而鍵和值通常來自編碼器。)
值得注意的是,在跨注意力中,兩個輸入序列 x_1 和 x_2 的元素數量可以不同,但它們的嵌入維度必須匹配。如果我們設置 x_1 = x_2,那么這相當于自注意力。
三、統一解碼器與跨注意力模型的訓練
在討論了多模態設計的兩大主要選擇后,讓我們簡要談談模型訓練中涉及的三個主要組件,它們在下圖中有所概述。
多模態LLM的不同組件概覽,編號為1-3的組件可以在多模態訓練過程中凍結或解凍。與傳統文本LLM的開發類似,多模態LLM的訓練也分為兩個階段:預訓練 和 指令微調。然而,與從零開始訓練不同,多模態LLM通常以一個預訓練且已進行指令微調的文本LLM作為基礎模型開始訓練。
對于圖像編碼器,通常使用 CLIP,并在整個訓練過程中保持不變,盡管也有例外。
在預訓練階段,通常將LLM部分凍結,只訓練投影器(通常是一個線性層或一個小型多層感知機,MLP)。由于投影器的學習能力有限(通常僅包含一到兩層),LLM通常會在多模態指令微調階段(階段2)解凍,以實現更全面的更新。但在基于跨注意力的模型(方法B)中,跨注意力層在整個訓練過程中都是解凍的。
在介紹了兩種主要方法(方法A:統一嵌入解碼架構和方法B:跨模態注意力架構)后,可能會問哪種方法更有效。答案取決于具體的權衡。
- 統一嵌入解碼架構(方法A)通常更容易實現,因為它不需要對LLM架構本身進行修改。
- 跨模態注意力架構(方法B)通常被認為在計算效率上更優,因為它不會通過額外的圖像標記超載輸入上下文,而是將它們稍后引入跨注意力層。
此外,如果在訓練期間凍結LLM參數,該方法還能保持原始文本LLM的性能。
四、最新的多模態模型與方法
在本文的剩余部分,將回顧關于多模態LLM的文獻。這并非多模態LLM的歷史性概覽或全面綜述。以下是這些論文的詳細內容:
4.1 The Llama 3 Herd of Models
Meta AI 在 2024 年 7 月 31 日發布了 Llama 3 Herd of Models 論文,這標志著 Llama 3 系列多模態模型的推出。雖然在論文發布時未正式發布模型,但 Llama 3.2 系列模型于 9 月 25 日正式宣布并開放使用。
Llama 3.2 系列包括 110 億和 900 億參數版本,采用此前描述的 基于跨注意力的方法(方法B),具體結構如下圖所示。
Llama 3.2 多模態模型架構(圖注來自 Llama 3 論文:https://arxiv.org/abs/2407.21783)。
不同于多模態LLM開發中通常凍結圖像編碼器的做法,Llama 3.2 研究團隊反其道而行之,他們選擇更新圖像編碼器的參數,而保持語言模型的參數不變。這是為了保留文本模型的能力,使得 110 億和 900 億參數的多模態模型可以直接替代文本模型 Llama 3.1 8B 和 70B,用于純文本任務。訓練過程:
- 訓練從 Llama 3.1 文本模型開始,添加圖像編碼器和投影器(在此稱為“適配器”)后,先在圖像-文本數據上進行預訓練。
- 接著,進行類似 Llama 3 僅文本模型的指令和偏好微調。
研究團隊選擇不使用預訓練的圖像編碼器(如 CLIP),而是從零開始訓練一個視覺Transformer。具體來說,他們采用經典 ViT 架構中的 ViT-H/14(包含 6.3 億參數),并在 25 億圖像-文本對數據集上進行了五輪訓練,然后將其連接到 LLM。
此外,由于跨注意力層引入了大量參數,這些層只添加到每四個 Transformer 塊中:
- 對于 8B 模型,增加了 30 億參數。
- 對于 70B 模型,增加了 200 億參數。
4.2 Molmo 和 PixMo:開源權重與數據的多模態模型
2024 年 9 月 25 日,Molmo 和 PixMo 論文提出了一種開源模式,承諾開放模型權重、數據集以及源碼。Molmo(Multimodal Open Language Model)是模型名稱,而 PixMo(Pixels for Molmo)是數據集的名稱。
Molmo 解碼器僅方法(方法A)架構(圖注來自論文:https://arxiv.org/abs/2409.17146)。
Molmo 使用現成的 CLIP 作為圖像編碼器,并通過“連接器”(即“投影器”)對齊圖像特征和語言模型。訓練策略:
- 采用簡化的訓練流程,避免多個預訓練階段。
- 統一更新基礎LLM、連接器和圖像編碼器的參數。
Molmo 提供多種基礎LLM選項:
- OLMo-7B-1024(完全開源的模型骨干);
- OLMoE-1B-7B(專家混合架構,最為高效);
- Qwen2 7B(性能優于 OLMo-7B-1024 的開源權重模型);
- Qwen2 72B(最佳性能的開源權重模型)。
4.3 NVLM:開放的前沿級多模態LLM
NVIDIA 于 2024 年 9 月 17 日發布了 NVLM: Open Frontier-Class Multimodal LLMs 論文,該研究探討了三種方法:
- 方法A:統一嵌入解碼架構(NVLM-D);
- 方法B:跨模態注意力架構(NVLM-X);
- 混合方法:NVLM-H,將兩種方法的優勢結合。
NVLM 的三種多模態方法概覽(圖注來自論文:https://arxiv.org/abs/2409.11402)。
如下圖所總結,NVLM-D 對應方法 A,NVLM-X 對應方法 B(如前文所述)。混合模型(NVLM-H)的概念是結合兩種方法的優勢:輸入一張圖像縮略圖后,通過跨注意力機制動態引入若干圖像塊,以捕捉更精細的高分辨率細節。
簡而言之,研究團隊發現以下結論:
- NVLM-X 在處理高分辨率圖像時展現出優越的計算效率。
- NVLM-D 在與 OCR 相關的任務中達到了更高的準確性。
- NVLM-H 結合了兩種方法的優勢。
與 Molmo 及其他類似方法一樣,他們以僅文本的大語言模型(LLM)為基礎模型,而不是從零開始預訓練多模態模型(這種方式通常效果更好)。此外,他們使用的是經過指令微調的 LLM,而不是基礎模型。具體來說,其核心 LLM 是 Qwen2-72B-Instruct(據我所知,Molmo 使用的是 Qwen2-72B 的基礎版本)。
在 NVLM-D 方法中,他們訓練了所有的 LLM 參數;但對于 NVLM-X 方法,他們發現凍結原始 LLM 的參數,僅在預訓練和指令微調階段訓練跨注意力層效果良好。
對于圖像編碼器,他們沒有使用常見的 CLIP 模型,而是使用 InternViT-6B,并在所有階段保持其參數凍結。
此外,投影器(projector)使用的是一個多層感知機(MLP),而非單一線性層。
4.4 Qwen2-VL:提升視覺-語言模型的感知能力
前面提到的兩篇論文和模型(Molmo 和 NVLM)都基于 Qwen2-72B LLM。而在這篇論文中,Qwen 研究團隊正式發布了一種多模態 LLM Qwen2-VL,全稱為 Enhancing Vision-Language Model’s Perception of the World at Any Resolution(提升視覺-語言模型對任意分辨率圖像的感知能力),發布時間為 2024 年 10 月 3 日。
這項工作的核心在于其所謂的“Naive Dynamic Resolution”(樸素動態分辨率)機制。這種機制允許模型處理不同分辨率的圖像,而無需簡單的降采樣,從而能夠輸入原始分辨率的圖像。
Qwen 多模態模型概覽:Qwen2-VL 模型能夠原生地處理各種不同分辨率的輸入圖像。(圖注來自 Qwen2-VL 論文:https://arxiv.org/abs/2409.12191)。
這種原生分辨率輸入通過對 ViT(視覺 Transformer)進行修改實現,具體方法是移除原有的絕對位置嵌入(absolute position embeddings),并引入 2D-RoPE(二維旋轉位置嵌入)。
研究團隊使用了一個經典的視覺編碼器,其參數量為 6.75 億,并結合了不同大小的 LLM 骨干模型,具體如表所示。
模型的訓練分為以下三個階段:
1. 預訓練階段:僅訓練圖像編碼器。
2. 全參數解凍階段:解凍所有參數(包括 LLM),統一預訓練。
3. 指令微調階段:凍結圖像編碼器,僅微調 LLM。
4.5 Pixtral 12B
Pixtral 12B(2024 年 9 月 17 日發布)是 Mistral AI 推出的首個多模態模型,采用了 方法 A:統一嵌入解碼架構。遺憾的是,目前尚未提供技術論文或報告,但 Mistral 團隊在博客文章中分享了一些有趣的細節。
一個引人注目的決定是,他們沒有使用預訓練的圖像編碼器,而是從零開始訓練了一個具有 4 億參數的圖像編碼器。對于 LLM 的主干模型,他們選擇了 12 億參數的 Mistral NeMo 模型。
與 Qwen2-VL 類似,Pixtral 也原生支持可變圖像大小,如下圖所示。
通過這種設計,Pixtral 展現了其在多模態輸入處理上的靈活性,無需依賴固定分辨率或降采樣。此特點使其在處理多樣化的圖像輸入任務時具備顯著優勢。
Pixtral 支持不同圖像尺寸的處理(圖注來自 Pixtral 博客文章:https://mistral.ai/news/pixtral-12b/)。
4.6 MM1.5:多模態 LLM 微調方法、分析與洞見
MM1.5: Methods, Analysis & Insights from Multimodal LLM Fine-tuning 論文(2024 年 9 月 30 日發布)提供了一些實用的微調技巧,并介紹了一種多模態的專家混合模型(Mixture-of-Experts,MoE)以及類似于 Molmo 的稠密模型。這些模型的參數規模從 10 億到 300 億不等,覆蓋了多種大小的模型需求。
該論文中的模型重點采用了 方法 A:統一嵌入 Transformer 架構,這一架構能夠有效地結構化輸入,優化多模態學習的表現。
此外,論文還進行了多項有趣的消融研究,探討了以下內容:
- 數據混合方式:不同數據類型的組合對模型性能的影響;
- 坐標標記(coordinate tokens)的作用:在多模態模型中用于表示輸入邊界框等信息,研究其對學習能力和推理結果的影響。
這些研究不僅為多模態 LLM 的設計提供了理論支持,還為模型開發者在微調過程中提供了實踐指導。
MM1.5 方法示意圖MM1.5 方法中引入了額外的 坐標標記(coordinate tokens),用于表示輸入圖像中邊界框的位置信息。(圖注來自 MM1.5 論文:https://arxiv.org/abs/2409.20566。)
4.7 Aria: 開放的多模態原生專家混合模型
Aria: An Open Multimodal Native Mixture-of-Experts Model 論文(2024 年 10 月 8 日發布)提出了一種專家混合模型(Mixture-of-Experts, MoE)的方法,與 Molmo 和 MM1.5 系列中的變體類似。
Aria 模型的參數構成:
? 模型總參數量:24.9 億。
? 分配給每個文本標記的參數:3.5 億。
? 圖像編碼器(SigLIP)的參數量:438 萬。
模型架構
Aria 基于 跨模態注意力方法(Cross-Attention Approach),并采用以下整體訓練流程:
1. 完全從零開始訓練 LLM 骨干網絡:與其他通常以預訓練文本模型為基礎的方法不同,Aria 從頭開始構建 LLM。
2. 預訓練 LLM 骨干網絡和視覺編碼器:在早期階段同時對語言和圖像處理能力進行優化。
設計特點
Aria 模型充分利用跨模態注意力機制,能夠有效整合文本和圖像信息。其訓練流程強調從零開始構建,表明研究團隊試圖通過精細控制訓練過程來進一步優化模型性能。這種方法與其他基于預訓練模型的方法形成了鮮明對比,為多模態 LLM 的研究提供了另一種思路。
4.8 Baichuan-Omni
Baichuan-Omni 技術報告(2024 年 10 月 11 日發布)介紹了 Baichuan-Omni 模型,這是一種具有 70 億參數的多模態 LLM,基于 方法 A:統一嵌入解碼架構,如圖所示。
Baichuan-Omni 能夠處理多種輸入模態。(圖注來自 Baichuan-Omni 論文:??https://arxiv.org/abs/2410.08565)??
Baichuan-Omni 的訓練采用三階段方法:
1. 投影器訓練(Projector training):
? 初始階段,僅訓練投影器模塊,同時凍結視覺編碼器和語言模型(LLM)。
2. 視覺編碼器訓練(Vision encoder training):
? 解凍視覺編碼器并進行訓練,而 LLM 仍然保持凍結狀態。
3. 全模型訓練(Full model training):
? 最后階段,解凍 LLM,允許整個模型進行端到端訓練。
模型特點:
? 使用 SigLIP 視覺編碼器。
? 集成了 AnyRes 模塊,通過下采樣技術處理高分辨率圖像。
? 雖然報告未明確說明 LLM 的骨干網絡,但根據模型參數規模和命名規則,推測其基于 Baichuan 7B LLM。
Baichuan-Omni 的模塊化訓練流程以及對高分辨率圖像的支持,使其在多模態任務中具有較強的適應性和靈活性。
4.9 Emu3: Next-Token Prediction is All You Need
Emu3: Next-Token Prediction is All You Need 論文(2024 年 9 月 27 日發布)提出了一種替代擴散模型的全新圖像生成方法,完全基于 Transformer 解碼器架構。盡管從經典意義上說,Emu3 并非嚴格意義上的多模態 LLM(即更關注圖像生成而非圖像理解),但其研究非常有趣,展示了使用 Transformer 解碼器完成圖像生成的可能性,而這一任務傳統上由擴散模型主導。(值得注意的是,此前也有類似的嘗試,例如 Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation。)
模型特點:Emu3 專注于基于 Transformer 解碼器的圖像生成架構,展現了 Transformer 在擴散模型主導任務中的潛在優勢。這種方法為圖像生成任務開辟了新的路徑,挑戰了傳統方法的主導地位。
Emu3 主要是一種用于圖像生成的大語言模型(LLM),是擴散模型的替代方案。(來自 Emu3 論文的注釋圖:https://arxiv.org/abs/2409.18869)。
研究人員從零開始訓練了 Emu3 模型,并通過直接偏好優化(Direct Preference Optimization,DPO)將模型調整到符合人類偏好的方向。
該模型的架構包含一個受 SBER-MoVQGAN 啟發的視覺分詞器,核心的大語言模型架構基于 Llama 2,但完全從頭開始訓練。
4.10 Janus:解耦視覺編碼實現統一的多模態理解與生成
此前我們主要關注用于圖像理解的多模態大語言模型,并以 Emu3 為例介紹了一個圖像生成的模型。現在,《Janus:解耦視覺編碼實現統一的多模態理解與生成》(2024年10月17日發表)引入了一個框架,在單一的大語言模型骨干中統一多模態理解和生成任務。
Janus 的一個關鍵特性是解耦視覺編碼路徑,以滿足理解任務和生成任務的不同需求。研究人員指出,圖像理解任務需要高維語義表示,而圖像生成任務則需要圖像的詳細局部信息和全局一致性。通過分離這些路徑,Janus 能夠有效管理兩者的差異化需求。
該模型采用 SigLIP 視覺編碼器(類似于 Baichuan-Omni 中的編碼器)處理視覺輸入。在圖像生成中,模型使用矢量量化(Vector Quantized,VQ)分詞器完成生成過程。Janus 的基礎大語言模型是 DeepSeek-LLM,擁有13億參數。
Janus 的統一解碼器架構概覽(來自 Janus 論文的注釋圖:https://arxiv.org/abs/2410.13848)
Janus 模型的訓練過程分為三個階段,如下圖所示。
Janus 模型的三階段訓練過程示意圖(來自 Janus 論文的注釋圖:https://arxiv.org/abs/2410.13848)。
- 第一階段:僅訓練投影層和圖像輸出層,而 LLM、理解編碼器和生成編碼器保持凍結狀態。
- 第二階段:解凍 LLM 主干和文本輸出層,允許在理解和生成任務上進行統一的預訓練。
- 第三階段:解凍整個模型,包括 SigLIP 圖像編碼器,進行監督微調,使模型能夠充分整合和優化其多模態能力。
總結
在公共基準上比較大語言模型(LLM)和多模態大語言模型的性能是一項具有挑戰性的任務,因為普遍存在的數據污染問題,這意味著測試數據可能已包含在訓練數據中。
此外,不同模型的架構組件差異巨大,因此進行公平的性能比較非常困難。不過,特別值得稱贊的是 NVIDIA 團隊開發了不同版本的 NVLM 模型,這至少使得解碼器架構和交叉注意力方法之間的比較成為可能。
無論如何,這篇文章的主要結論是:多模態大語言模型可以通過多種不同的方式成功構建。 下圖總結了本文涉及的不同模型、其子組件以及訓練方法的概覽。
本文轉載自??芝士AI吃魚??,作者: 芝士AI吃魚
