天天看點

HuggingFace教你怎樣做出SOTA視覺模型

作者:量子位

克雷西 發自 凹非寺

量子位 | 公衆号 QbitAI

前有OpenAI的GPT-4o,後有谷歌的系列王炸,先進的多模态大模型接連炸場。

其他從業者在震撼之餘,也再次開始思考怎麼追趕這些超級模型了。

剛好在這時,HuggingFace和法國索邦大學的一篇論文,總結出了建構視覺大模型的關鍵經驗,給開發者指明了一條路。

HuggingFace教你怎樣做出SOTA視覺模型

這些經驗涵蓋了模型架構選擇、訓練方法、訓練資料等多個方面,作者在多方比較之後給出了詳盡的總結,核心要點包括這些内容:

  • 想把視覺大模型搞好,架構的選擇很重要。
  • 語言模型對整體表現的影響,比視覺子產品更大。
  • 采用分階段預訓練政策,更有利于構模組化型能力。
  • 訓練資料應包含多種類型,并注意之間的比例平衡。

可以說,HF能夠打造出同規模SOTA的視覺模型Idefics2,背後依靠的都是這些經驗。

Idefics2基于Mistral-7B打造,整體擁有8B的參數量,可以準确識别出手寫字型。

HuggingFace教你怎樣做出SOTA視覺模型

專業人士評價稱,這是一篇很好的調查報告,對視覺模型開發者很有幫助,不過同時也提醒說不要當成萬金油來看。

HuggingFace教你怎樣做出SOTA視覺模型

當然也有人打趣說,什麼架構資料都是浮雲,有GPU才是最關鍵的。

HuggingFace教你怎樣做出SOTA視覺模型

倒也有些道理,不過玩笑歸玩笑,還是來看看HuggingFace都帶給了我們哪些經驗。

來自SOTA模型開發實戰

HuggingFace論文中的這些經驗,來自于視覺模型Idefics2的開發過程。

與前一代Idefics1和Flamingo等同規模前SOTA相比,Idefics2在多個資料集上表現優異,甚至還超過了更大的13B模型。

同時,和在COCO資料集上略勝于Idefics2的MM1相比,Idefics2在每張圖上消耗的token大幅減少。

HuggingFace教你怎樣做出SOTA視覺模型

從Idefics2的開發實戰當中,HuggingFace給我們帶來的經驗至少包含以下幾個方面:

  • backbone和架構的選擇
  • 訓練方法和政策
  • 資料多樣性和處理政策

語言模型對整體表現影響更大

目前的視覺大模型主要都采用語言模型+視覺編碼器的形式進行開發,作者對二者給整體表現帶來的影響分别進行了評估。

結果顯示,語言模型的品質比視覺模型更重要。

在相同參數量的情況下,使用更好的語言模型(如将Llama-7B替換為Mistral-7B),能夠顯著提升視覺大模型在下遊任務上的性能。

而更新視覺編碼器帶來的提升則較為有限,是以在需要權衡時最好的做法是優先選擇更強的語言模型。

HuggingFace教你怎樣做出SOTA視覺模型

當然這不意味着更新視覺編碼器沒有作用,在條件允許的情況下,選用更好的視覺編碼器也能帶來一定的性能提升。

此外還應當注意選擇要與下遊任務相比對,例如在文本識别任務上,應使用支援可變分辨率的視覺編碼器;如果任務對推理速度要求很高,可以選擇更輕量級的模型。

以及在實際應用中,推理速度和記憶體占用也是需要權衡的因素,Idefics2選用的SigLIP-SO400M就在性能和效率之間取得了很好的平衡。

根據需求選擇架構類型

關于架構的選擇,這篇論文讨論了常見的完全自回歸和交叉注意力這兩種。

完全自回歸架構通過自回歸方式生成每個輸出,考慮了整個序列的依賴關系;

後者則允許模型在處理一種模态時動态地關注另一種模态的不同部分,實作更靈活的模态間互動。

在具體工作中,作者發現哪種架構表現更好取決于預訓練的backbone是否被當機。

(簡單說,若預訓練backbone參與正式訓練過程則為非當機,不參與則為當機)

若未被當機,則完全自回歸架構的表現更優,反之則是交叉注意力架構更好。

HuggingFace教你怎樣做出SOTA視覺模型

至于是否需要對backbone進行當機,就要看開發者需求的側重點了。

在資源有限的條件下,如果需要高性能、對延遲高度敏感,選擇當機更為合适;

如果希望模型具有更高的靈活性和适應性,則應選擇非當機的訓練方式。

具體到Idefics2,選擇了不當機backbone,是以相應地采用了完全自回歸架構。

HuggingFace教你怎樣做出SOTA視覺模型

訓練階段的經驗

選擇好适當的架構固然重要,訓練過程同樣也必不可少,在Idefics2的訓練過程之中,作者總結出了這些經驗供我們參考:

一是整體上采用分階段的預訓練政策,初始階段使用較低分辨率的圖像,随後引入更高分辨率的PDF文檔,這種做法可以逐漸構模組化型的多種能力。

二是使用Learned Pooling替代直接将圖像特征送入語言模型,這可以大幅減少圖像token數量,顯著提升訓練和推理效率,并且還帶來了性能的提升。

三是資料增強,一種方法是在訓練時将圖像切分成多個子圖像送入模型,可以在推理時用計算時間換取更強的性能,這在文本識别等任務上尤為有效,不過并非所有圖檔都需要這樣處理。

四是在指令微調階段使用更多元的資料和任務,可以提升模型的泛化和魯棒性。

此外為了穩定訓練,當預訓練的單模态backbone參與訓練(非當機)時,作者還使用了LoRA技術來适配預訓練參數。

資料的多樣性和處理政策

除了訓練過程本身,所選用的資料也會對模型的表現造成重大影響。

從收集階段開始,就應注意要選擇多種類型的資料,如Idefics2就使用的資料就包括三類——圖文對齊的文檔(如網頁)、圖像-文本對(如圖檔标題),以及帶OCR标注的PDF文檔。

對于各類資料所占的比例,也應根據實際需要進行适當平衡,而不是簡單等分。

至于資料規模,則是在條件允許的情況下多多益善,當然應當注意過濾掉低品質資料。

當然收集隻是獲得訓練資料的一個步驟,想把模型訓練好,還需要進行一定的加工處理。

對不同類型的資料采用不同的預處理和增強政策,比如對于OCR資料,使用更高分辨率的圖檔是必要的,其他資料則可以使用較低分辨率。

這其中需要注意的是,處理圖像時要保留原始的寬高比和分辨率,可以在提高模型适應性的同時大幅節省訓練和推理的計算開銷。

如果你認為這些經驗對你有所啟發,可以讀讀原論文了解更多詳情,也歡迎在評論區交流你的開發經驗。

論文位址:

https://arxiv.org/abs/2405.02246

— 完 —

量子位 QbitAI · 頭條号簽約

關注我們,第一時間獲知前沿科技動态

繼續閱讀