帶回家的訊息:Janus 是一個簡單、統一且可擴充的多模態理解與產生模型,可將多模態理解與產生的視覺編碼分離,減少兩項工作之間的潛在衝突。它可以在未來擴展以納入更多的輸入模式。Janus-Pro 在此基礎上優化了訓練策略 (包括增加訓練步驟、調整資料比例等)、增加更多資料 (包括使用合成資料等),並擴大了模型規模 (達到 70 億個參數),從而提升了模型的多模態理解能力和文字到圖像的指示依循能力。
Janus-Pro 是先前工作 Janus 的進階版本,具體而言,包括 (1) 最佳化的訓練策略、(2) 擴大的訓練資料,以及 (3) 更大的模型規模。透過這些改進,Janus-Pro 在多模態理解和文本到圖像指令依循能力方面取得了顯著進步,同時也增強了文本到圖像生成的穩定性。在解讀 Janus-Pro 之前,讓我們先回顧一下 Janus。
回顧 Janus
其前身 Janus 是用於統一多模態理解與生成的自回歸框架,用於解耦視覺編碼以實現統一多模態理解與生成。對於多模態理解,其設計通常遵循 LLaVA,使用視覺編碼器作為橋梁,使大型語言模型能夠理解圖像。對於生成,通常是以擴散模型為基礎,有些則是以自回歸方法為基礎。有些方法嘗試使用單一的轉換器 (Transformer) 來統一多模態理解與產生的任務,它通常使用單一的視覺編碼器來處理兩個任務的輸入。
然而,多模態理解與產生任務所需的表達方式存在差異。在多模態理解任務中,視覺編碼器的目標是擷取高階語義資訊 (例如物件類別或視覺屬性),輸出內容除了擷取影像中的資訊外,還涉及複雜的語意推理,編碼器主要著重於高維語義表達。產生任務主要是在影像中產生局部細節並維持全局一致性,因此需要空間結構和材質細節的低維編碼表徵。將這兩項任務的表徵統一在相同的空間中,可能會造成衝突。
Janus 包含兩個獨立的視覺編碼路徑,分別用於多模態理解和生成,並帶來兩個好處:1) 減緩因多模態理解與產生的不同粒度需求而產生的衝突;2) 靈活且可擴充,可解耦,因此理解與產生任務均可使用各自領域的最先進編碼技術進行編碼,將來還可輸入點雲、EEG 訊號或音訊資料,並使用統一的 Transformer 進行處理。
為了理解文字,使用 LLM 內建的 Tokenizer 將文字轉換為離散的 ID;
針對多模態理解,使用 SigLIP 編碼器萃取影像中的高維度語意特徵 (筆者註:Cosmos 在 Guardrails 部分也使用 SigLIP 編碼器),並使用 Adaptor (2 層 MLP) 將萃取的特徵映射到 LLM 的文字特徵空間;
長邊調整為 384 像素,短邊則使用 RGB(127, 127, 127) 填充為 384 像素;
在視覺生成方面,使用 VQ Tokenizer 將影像轉換為離散的 ID,並使用 Adaptor (2 層 MLP) 將每個 ID 映射到 LLM 的文字特徵空間;
短邊的大小調整為 384 像素,長邊則裁切為 384 像素;
整體訓練使用 16 個節點執行,每個節點包含 8 個 Nvidia A100 GPU;
對於視覺生成和多模態理解任務,圖像特徵序列和文字特徵序列會連結在一起,作為 LLM 的輸入(文中使用 DeepSeek-LLM 1.3B);
在純文字理解和多模態理解任務中,LLM 的內建預測頭被用於文字預測,而在視覺生成任務中,隨機初始化的預測頭被用於圖像預測。整個模型採用自回歸架構,不需要特別設計的注意力遮罩。
Janus 培訓 分為 3 個階段:
第一階段
火車轉接頭和影像頭 在嵌入空間中建立語言與視覺元素之間的連結,使 LLM 能夠理解圖像中的實體,並擁有初步的視覺生成能力;
對於多模態理解,使用 SHareGPT4V 中 125 萬個圖像-文字配對標題資料,格式為;
在視覺生成方面,使用來自 ImageNet1k 的 120 萬個格式樣本:;
第二階段
統一的預先訓練,使用多模态语料库进行统一的预训练,以学习多模态理解和生成。本階段使用純文字資料、多模態理解資料和視覺生成資料。使用 ImageNet-1k 進行簡單的視覺生成訓練,接著使用一般的文字轉圖像資料來增強模型開放領域的視覺生成;
純文字資料:DeepSeek-LLM 預先訓練的語料庫;
交錯影像文字資料:WikiHow 和 WIT 資料集;
圖片標題資料:來自多個來源的影像,並使用開放原始碼的多模態模型為部分影像重新加上標題,資料格式為 Q&A 對,例如:詳細描述影像。
表格和圖表資料:來自 DeepSeek-VL 的對應表格和圖表資料,格式為 ;
視覺產生的資料:來自多個資料集的影像-標題對,以及 200 萬筆內部資料;
在訓練期間,只有標題的第一句會以 25% 的機率隨機使用;
ImageNet 樣本只出現在最初的 120K 訓練步驟中,其他資料集的影像會出現在隨後的 60K 步驟中;
第三階段
監督微調,使用指令微調資料對預先訓練的模型進行微調,以增強其遵循指令和對話的能力。微調除了產生編碼器之外的所有參數。在監督答案的同時,遮蔽系統和使用者的提示。為了確保 Janus 能同時精通多模態理解與產生,我們並未針對特定任務分別微調模型。相反地,我們混合使用純文字對話資料、多模態理解資料和視覺生成資料,以確保在各種情況下的通用性;
文字理解:使用特定來源的資料;
多模式理解:使用來自多種來源的資料來調整教學;
視覺生成:使用部分第二階段資料集中的圖像-文字對子集,以及 400 萬筆內部資料;
資料格式為User: \n Assistant:;
訓練目標
Janus 是使用交叉熵損失函數訓練的自回歸模型,對於純文字理解和多模態理解任務,損失是在文字序列上計算的。對於視覺生成任務,則只在影像序列上計算損失。為了保持設計簡單,不同的任務沒有指定不同的損失權重。
推理
使用下一個詞彙元素預測方法,對於純文字理解和多模態理解,詞彙元素會從預測分佈中依序採樣。對於影像的產生,則使用無分類的 bootstrap。
可能的延伸
對於多模式理解,1)可以選擇更強的視覺編碼器,2)可以使用動態高解析度技術;
對於視覺生成,1)可以選擇更細粒度的編碼器;2)使用專門為視覺生成設計的損失函數;3)結合因果注意和平行方法;
更多的模式,能夠整合 3D 點雲、觸覺、EEG 以及其他損失模式的輸入;
Janus-Pro 升級
由於訓練資料有限,模型容量相對較小 (1B),Janus 在某些方面有不足之處,例如在短小的提示下,影像產生的表現不佳,文字到影像的產生品質也不一致。Janus-Pro 的架構與 Janus 相同,如下圖所示:
主要改進
訓練策略
階段 1:增加訓練步驟數,並在 ImageNet 上進行完整訓練;
第二階段:不再使用 ImageNet,直接使用一般的文字到影像資料進行訓練;
第三階段:在微調過程中修改資料集比例,將多模態資料、純文字資料和文字對影像資料的比例從 7:3:10 改為 5:1:4;
數據規模
多模態理解
第二階段:新增 9000 萬個樣本,包括用於影像標題的 YFCC,以及用於表格和圖表文件理解的 Doc-matrix;
第 3 階段:新增 DeepSeek-VL2 附加資料集,例如 MEME 瞭解;
視覺生成:真實世界的資料可能包含品質不佳的資料,導致文字到圖像的生成不穩定,輸出的美學效果也不佳,Janus-Pro 使用 7200 萬個合成美學資料樣本,預先訓練階段(Stage 2)的真實資料與合成資料比例統一為 1:1;
模型比例
將模型參數縮放至 70 億參數規模;
實驗細節
與 Janus 相比,Janus-Pro 實驗的細節基本相同。相較之下,較大參數的模型使用較多的群集節點 (16 到 32)。
Janus-Pro 訓練超準參數
不足
對於多模態理解,輸入解析度限制在 384×384,影響了細粒度視覺任務的表現。對於文字到影像的產生,低解析度會導致產生的結果缺乏細節。