DeepSeek新作Janus:解耦視覺編碼,多模態理解與生成統一新範式
1. 太長不看版
我們提出了 Janus,一種基於自迴歸的多模態理解與生成統一模型。Janus 的核心思想是對理解和生成任務的視覺編碼進行解耦,在提升了模型的靈活性的同時,有效緩解了使用單一視覺編碼導致的衝突和性能瓶頸。實驗表明,Janus 超越了此前的統一模型的效果,並取得了和純理解 / 純生成模型比肩或更好的性能。我們通過詳細嚴格的對比實驗證實瞭解耦的好處,並分析了理解生成統一訓練相較於分開訓練帶來的影響。
在羅馬神話中,Janus (雅努斯) 是象徵着矛盾和過渡的雙面守護神。我們將模型命名爲 Janus,形象地表示我們的模型可以像 Janus 一樣,用不同的眼睛看向視覺數據,分別編碼特徵,然後用同一個身體 (Transformer) 去處理這些輸入信號。此外,得益於解耦的設計,Janus 極易擴展,研究者們可以將理解和生成領域最新的編碼技術直接應用在 Janus 之上。我們希望我們提出的框架能和雅努斯一樣,象徵着多模態統一模型的舊範式到新範式的過渡。
2. 背景和動機
2.1 相關工作
多模態理解大模型和視覺生成模型都取得了飛速的發展。最近,也有一些工作嘗試將這兩者進行統一,構造更強大的通用模型。將理解和生成進行統一具有重大意義。從模型部署角度來說,統一之後能避免分開部署多個模型,減少了模型的冗餘性。且社區對 LLM 的推理做了很細緻的優化,如果能統一到一個 LLM 中,會很方便;從結果來說,理解和生成統一可以提高視覺生成的指令跟隨能力,甚至解鎖一些涌現能力,例如多語言視覺生成,或隨着 LLM 的 scale up 獲得更強的能力。
有一些先驅工作 (EMU, Seed) 嘗試將預訓練好的 Diffusion Model 接在多模態理解模型後面。這些方法中,多模態理解模型輸出 Diffusion Model 的條件,然後依賴 Diffusion Model 做圖像生成。但是,這樣的設計中,LLM 本身並不具備直接出圖的能力,出圖的性能也往往被外接的 Diffusion Model 所限制。後來的一些工作 (Chameleon, Vila-U, Show-O 等) 則提出直接讓 LLM 處理多模態理解和生成任務,真正做到了統一。但是,這些方法通常將視覺編碼器也進行了合併,即:用一個視覺編碼器同時負責理解與生成任務。
2.2 目前方法存在的問題
由於多模態理解和生成任務所需的信息不完全一致,視覺編碼器的合併可能導致一些問題。(1) 多模態理解任務通常需要的是對圖像或視頻等視覺輸入的高層語義理解,因此需要視覺編碼器能夠從低級像素信息逐漸轉換爲具有更高層語義的信息。(2) 對視覺生成任務來說,視覺編碼器需要傳遞細粒度的視覺信息,通常需要保留更多的細節信息,例如紋理、顏色等。將這兩個任務的視覺編碼壓縮到同一個表徵空間中,會帶來一些衝突和妥協。由於專門爲多模態理解設計的編碼器很多並不能直接來做視覺生成,現有的方案在挑選編碼器時,往往優先考慮圖像生成任務 (如 使用 VQ Tokenizer 作爲編碼器),導致目前的統一模型生成能力還不錯,但是多模態理解能力和當前最先進的方法差異較大。
3. 方法
3.1 模型結構
爲了解決單一視覺編碼器帶來的性能瓶頸,我們提出了對視覺編碼進行解耦。具體來說,我們使用兩個獨立的視覺編碼器分別負責多模態理解和生成任務,然後用一個統一的 Transformer 結構去處理不同的輸入信息。
爲了簡化整個模型,我們在選取視覺編碼器的時候沒有進行復雜的設計。對多模態理解任務來說,我們使用 SigLIP-Large-Patch16-384 去編碼特徵。對視覺生成任務來說,我們使用 LlamaGen 中訓練的標準 VQ Tokenizer 去編碼。編碼後的信息會分別經過一個 adaptor,然後送入 LLM 中。整個模型是使用 Next-Token-Prediction 的方式進行訓練的,採用 causal attention mask,和 LLM 的訓練方式一致。
3.2 訓練流程
Janus 的訓練分爲三個階段。(每一階段使用的數據詳情請參考 paper。整體上會控制 多模態理解 + 純文本理解:視覺生成 = 1:1)
3.3 推理流程
我們使用 Next-Token-Prediction 的方式進行推理,所以可以使用針對 LLM 進行的優化,例如 KV Cache, vLLM 等加速推理。對視覺生成任務,遵循之前的方法,我們還額外使用了 classifier-free guidance (cfg) 機制,即每個 token 的 logit 由以下公式得出:
其中, 是無條件生成得到的 logit,s 是 cfg 權重,默認爲 5。相應的,爲了讓 cfg 能順利進行,我們在訓練時會隨機將 10% 的文生圖數據置換爲無條件生圖。
3.4 可能的擴展
Janus 的設計非常靈活,易於擴展。
4. 實驗
4.1 實現細節
我們使用 DeepSeek-LLM (1.3B, pretrain 模型,未經過指令微調) 作爲 LLM 的初始化。在理解和生成任務中,圖像分辨率均爲 384 * 384。我們用 DeepSeek 自研的 HAI-LLM 框架進行開發,整個訓練流程需要在 16 臺 8 Nvidia A100 (40GB) GPU 機器上跑 7 天時間。具體細節請參考論文。
4.2 和 state-of-the-arts 的比較
4.3 消融實驗
我們設計了嚴格的消融實驗,一方面對 Janus 的視覺編碼解耦這一觀點進行驗證,另一方面,研究聯合訓練對單任務訓練的性能影響。
Baseline 介紹
我們首先按照 Chameleon 的設計,使用一個 VQ Tokenizer 去同時爲理解和生成任務編碼 (Exp-A)。這個 VQ Tokenizer 和 Janus 中視覺生成部分的編碼器是同一個。考慮到這個編碼器語義很弱,所以我們額外構造了一個更強的 baseline, Semantic Tokenizer (Exp-B)。
簡單來說,這個 Semantic Tokenzier 基於原先的 VQ Tokenizer 構造,額外加了一個 semantic decoder,預測 SigLIP 產生的語義特徵,具體細節請見論文的補充材料。通過這樣的方式,一方面可以通過 semantic decoder,產生語義更強的圖像特徵;另一方面,可以使得 Semantic Tokenizer 編碼出的圖像 ID 具有更好的語義,局部連續性更強。請注意:爲了方法的簡單性。Semantic Tokenizer 僅在對比實驗中使用,而沒有在 Janus 中用。如果用了,Janus 應該會在視覺生成方面表現更好。
視覺編碼解耦的影響
(1) 比較 Exp-A 和 Exp-D,我們發現 Exp-A 的圖像生成效果還不錯,COCO-FID 有 8.72,和 Janus (8.53) 類似。但是 Exp-A 的多模態理解性能明顯拉胯。
(2) 當換上語義更強的 tokenizer (Exp-B),我們發現多模態理解能力有了明顯的提升,但和 Janus 相比還有一定距離。視覺生成方面,Exp-B (7.11) 比 Janus (8.53) 更好。我們猜測原因可能有兩點。首先,Semantic Tokenizer 編碼出的圖像 ID 語義更強,作爲 LLM 的預測目標更合理。其次,Semantic Tokenizer 的參數量顯著高於 VQ Tokenizer。這也說明了 Janus 在視覺生成方面巨大的提升空間。
(3) 那麼,使用同一個 Encoder,對理解的影響到底有多大呢?通過比較 Exp-B 和 Exp-C,我們發現僅使用 Semantic Tokenizer 做多模態理解,明顯高於 Exp-B 中的結果。舉例來說,MMBench 從 52.7 提高到 62.1。這說明使用單一視覺編碼器確實在理解和生成任務上導致了衝突,犧牲了多模態理解的性能。
(4) 最後,我們探討一下聯合訓練對單一任務的影響,見 Exp-D, Exp-E, Exp-F。這裡爲了公平,我們對迭代步數做了嚴格的控制。例如,讓聯合訓練的模型和純理解模型見過的多模態理解數據一樣多。(其實這樣對聯合模型不太公平,因爲聯合模型的數據裡,多模態理解的數據濃度相對更低)。最後發現聯合訓練可以在基本保持多模態理解的能力下,有效地加入視覺生成能力。
4.4 可視化
文生圖可視化
如 Figure 4 所示,我們的模型相比於 SDXL, LlamaGen 有着更好的指令跟隨能力,能對用戶的 prompt 做出更精準的反饋。
涌現能力:多語言文生圖
如 Figure 8 所示,我們還意外地發現,及時訓練數據中只有英文文生圖數據,但最後的模型涌現出了多語言文生圖能力,如中文、法語、日語、甚至使用 emoji 都可以。我們認爲這裡的涌現能力來自於 LLM 預訓練模型。
多模態理解可視化
請見以下兩張圖,相比於以前的大一統模型,我們的模型更聰明,能讀懂 meme 圖像。同時還能處理 latex 公式轉換、圖轉代碼等任務。
5. 總結
Janus 是一個基於自迴歸的統一多模態理解與生成框架,具有簡單性、高效性和高度靈活性。通過解耦視覺編碼,我們突破了當前多模態統一模型中的性能瓶頸,拉進了大一統模型和專用模型在專項任務上的性能差距,解鎖了多模態統一模型的新範式。