帶回家的訊息:Janus 是一個簡單、統一且可擴充的多模態理解與產生模型,可將多模態理解與產生的視覺編碼分離,減少兩項工作之間的潛在衝突。它可以在未來擴展以納入更多的輸入模式。Janus-Pro 在此基礎上優化了訓練策略 (包括增加訓練步驟、調整資料比例等)、增加更多資料 (包括使用合成資料等),並擴大了模型規模 (達到 70 億個參數),從而提升了模型的多模態理解能力和文字到圖像的指示依循能力。

代碼地址

Janus Pro 位址

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,影響了細粒度視覺任務的表現。對於文字到影像的產生,低解析度會導致產生的結果缺乏細節。

類似職位

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *