DeepSeek新作Janus:解耦視覺編碼,引領多模態理解與生成統一新正規化
机器之心發表於2024-10-22
AIxiv專欄是機器之心釋出學術、技術內容的欄目。過去數年,機器之心AIxiv專欄接收報導了2000多篇內容,覆蓋全球各大高校與企業的頂級實驗室,有效促進了學術交流與傳播。如果您有優秀的工作想要分享,歡迎投稿或者聯絡報導。投稿郵箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com
- 論文: https://arxiv.org/pdf/2410.13848
- 專案主頁:https://github.com/deepseek-ai/Janus
- 模型下載:https://huggingface.co/deepseek-ai/Janus-1.3B
- 線上 Demo:https://huggingface.co/spaces/deepseek-ai/Janus-1.3B
我們提出了 Janus,一種基於自迴歸的多模態理解與生成統一模型。Janus 的核心思想是對理解和生成任務的視覺編碼進行解耦,在提升了模型的靈活性的同時,有效緩解了使用單一視覺編碼導致的衝突和效能瓶頸。實驗表明,Janus 超越了此前的統一模型的效果,並取得了和純理解 / 純生成模型比肩或更好的效能。我們透過詳細嚴格的對比實驗證實瞭解耦的好處,並分析了理解生成統一訓練相較於分開訓練帶來的影響。在羅馬神話中,Janus (雅努斯) 是象徵著矛盾和過渡的雙面守護神。我們將模型命名為 Janus,形象地表示我們的模型可以像 Janus 一樣,用不同的眼睛看向視覺資料,分別編碼特徵,然後用同一個身體 (Transformer) 去處理這些輸入訊號。此外,得益於解耦的設計,Janus 極易擴充套件,研究者們可以將理解和生成領域最新的編碼技術直接應用在 Janus 之上。我們希望我們提出的框架能和雅努斯一樣,象徵著多模態統一模型的舊正規化到新正規化的過渡。多模態理解大模型和視覺生成模型都取得了飛速的發展。最近,也有一些工作嘗試將這兩者進行統一,構造更強大的通用模型。將理解和生成進行統一具有重大意義。從模型部署角度來說,統一之後能避免分開部署多個模型,減少了模型的冗餘性。且社群對 LLM 的推理做了很細緻的最佳化,如果能統一到一個 LLM 中,會很方便;從結果來說,理解和生成統一可以提高視覺生成的指令跟隨能力,甚至解鎖一些湧現能力,例如多語言視覺生成,或隨著 LLM 的 scale up 獲得更強的能力。有一些先驅工作 (EMU, Seed) 嘗試將預訓練好的 Diffusion Model 接在多模態理解模型後面。這些方法中,多模態理解模型輸出 Diffusion Model 的條件,然後依賴 Diffusion Model 做影像生成。但是,這樣的設計中,LLM 本身並不具備直接出圖的能力,出圖的效能也往往被外接的 Diffusion Model 所限制。後來的一些工作 (Chameleon, Vila-U, Show-O 等) 則提出直接讓 LLM 處理多模態理解和生成任務,真正做到了統一。但是,這些方法通常將視覺編碼器也進行了合併,即:用一個視覺編碼器同時負責理解與生成任務。由於多模態理解和生成任務所需的資訊不完全一致,視覺編碼器的合併可能導致一些問題。(1) 多模態理解任務通常需要的是對影像或影片等視覺輸入的高層語義理解,因此需要視覺編碼器能夠從低階畫素資訊逐漸轉換為具有更高層語義的資訊。(2) 對視覺生成任務來說,視覺編碼器需要傳遞細粒度的視覺資訊,通常需要保留更多的細節資訊,例如紋理、顏色等。將這兩個任務的視覺編碼壓縮到同一個表徵空間中,會帶來一些衝突和妥協。由於專門為多模態理解設計的編碼器很多並不能直接來做視覺生成,現有的方案在挑選編碼器時,往往優先考慮影像生成任務 (如 使用 VQ Tokenizer 作為編碼器),導致目前的統一模型生成能力還不錯,但是多模態理解能力和當前最先進的方法差異較大。為了解決單一視覺編碼器帶來的效能瓶頸,我們提出了對視覺編碼進行解耦。具體來說,我們使用兩個獨立的視覺編碼器分別負責多模態理解和生成任務,然後用一個統一的 Transformer 結構去處理不同的輸入資訊。為了簡化整個模型,我們在選取視覺編碼器的時候沒有進行復雜的設計。對多模態理解任務來說,我們使用 SigLIP-Large-Patch16-384 去編碼特徵。對視覺生成任務來說,我們使用 LlamaGen 中訓練的標準 VQ Tokenizer 去編碼。編碼後的資訊會分別經過一個 adaptor,然後送入 LLM 中。整個模型是使用 Next-Token-Prediction 的方式進行訓練的,採用 causal attention mask,和 LLM 的訓練方式一致。Janus 的訓練分為三個階段。(每一階段使用的資料詳情請參考 paper。整體上會控制 多模態理解 + 純文字理解:視覺生成 = 1:1)- 在第一階段,我們使用 Image Caption 資料和 ImageNet 文生圖資料,對 understanding adaptor, generation adaptor, image head 這三個隨機初始化的模組進行訓練,起到 warm up 的效果。
- 在第二階段,我們額外開啟 LLM 和 text head,然後使用大量純文字、圖生文和文生圖的資料進行聯合預訓練。對於文生圖資料,我們會讓 ImageNet 這部分資料出現在其他場景的文生圖資料之前,先學習畫素依賴關係,然後學習場景生成 (參照 Pixart 中的設定)。
- 在第三階段,我們額外開啟 understanding encoder,使用指令跟隨資料進行訓練。
我們使用 Next-Token-Prediction 的方式進行推理,所以可以使用針對 LLM 進行的最佳化,例如 KV Cache, vLLM 等加速推理。對視覺生成任務,遵循之前的方法,我們還額外使用了 classifier-free guidance (cfg) 機制,即每個 token 的 logit 由以下公式得出:其中, 是無條件生成得到的 logit,s 是 cfg 權重,預設為 5。相應的,為了讓 cfg 能順利進行,我們在訓練時會隨機將 10% 的文生圖資料置換為無條件生圖。- 多模態理解方面,(1) 可以使用比 SigLIP 更強的 encoder,例如 EVA-CLIP 或 InternViT 6B,而不用擔心這些 encoder 是否能來做生成。(2) 可以引入當前多模態理解領域先進的動態解析度技術 (將影像切成多個子塊,提供更好的細粒度理解能力) 和 pixel shuffle 壓縮技術。
- 視覺生成方面,(1) 可以將當前的 VQ Tokenizer 替換成更好的 tokenizer,例如 MoVQGan 以及最近剛出的 HART (一種結合連續和離散的優點的 tokenizer)。(2) 可以為影像生成部分設計其他最佳化目標,如 diffusion loss。也可以將影像生成部分的 attention mask 改成雙向的,這也被證實了比單向 mask 有更好的生成效果。
- 對更多模態的支援。Janus 的核心思想是解耦,對不同的輸入使用不同的編碼方式,然後用統一的 transformer 進行處理。這一方案的可行性,意味著 Janus 有可能接入更多的模態,如影片、3D 點雲、EEG 訊號等。這使得 Janus 有可能成為下一代多模態通用模型的有力候選。
我們使用 DeepSeek-LLM (1.3B, pretrain 模型,未經過指令微調) 作為 LLM 的初始化。在理解和生成任務中,影像解析度均為 384 * 384。我們用 DeepSeek 自研的 HAI-LLM 框架進行開發,整個訓練流程需要在 16 臺 8 Nvidia A100 (40GB) GPU 機器上跑 7 天時間。具體細節請參考論文。4.2 和 state-of-the-arts 的比較- 多模態理解 (Table 2)。Janus-1.3B 超越了之前同規模的統一模型。在一些 benchmark (POPE, MMBench, SEED Bench, MM-Vet) 上,Janus-1.3B 甚至超越了 LLaVA-v1.5-7B 的結果。這證實了視覺編碼解耦對多模態理解效能帶來了顯著的提升。
- 視覺生成 (Table 3 和 Table 4)。Janus-1.3B 在影像質量評價 (MSCOCO-30K 和 MJHQ-30K) 和影像生成指令跟隨能力 benchmark GenEval 上都取得了很不錯的結果,超越了之前同規模的統一模型,和一些專用影像生成模型,如 SDXL。
我們設計了嚴格的消融實驗,一方面對 Janus 的視覺編碼解耦這一觀點進行驗證,另一方面,研究聯合訓練對單任務訓練的效能影響。我們首先按照 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。這裡為了公平,我們對迭代步數做了嚴格的控制。例如,讓聯合訓練的模型和純理解模型見過的多模態理解資料一樣多。(其實這樣對聯合模型不太公平,因為聯合模型的資料裡,多模態理解的資料濃度相對更低)。最後發現聯合訓練可以在基本保持多模態理解的能力下,有效地加入視覺生成能力。如 Figure 4 所示,我們的模型相比於 SDXL, LlamaGen 有著更好的指令跟隨能力,能對使用者的 prompt 做出更精準的反饋。如 Figure 8 所示,我們還意外地發現,及時訓練資料中只有英文文生圖資料,但最後的模型湧現出了多語言文生圖能力,如中文、法語、日語、甚至使用 emoji 🐶 都可以。我們認為這裡的湧現能力來自於 LLM 預訓練模型。請見以下兩張圖,相比於以前的大一統模型,我們的模型更聰明,能讀懂 meme 影像。同時還能處理 latex 公式轉換、圖轉程式碼等任務。Janus 是一個基於自迴歸的統一多模態理解與生成框架,具有簡單性、高效性和高度靈活性。透過解耦視覺編碼,我們突破了當前多模態統一模型中的效能瓶頸,拉進了大一統模型和專用模型在專項任務上的效能差距,解鎖了多模態統一模型的新正規化。