HuggingFace教你怎麼做SOTA視覺模型

王林
發布: 2024-06-05 21:39:58
原創
926 人瀏覽過

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

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

在這篇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://www.php.cn/link/52c8b8d56837155b4870fc2658b676f0

##

以上是HuggingFace教你怎麼做SOTA視覺模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:51cto.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板