首頁  >  文章  >  科技週邊  >  模組化重構LLaVA,替換組件只需添加1-2個文件,開源TinyLLaVA Factory來了

模組化重構LLaVA,替換組件只需添加1-2個文件,開源TinyLLaVA Factory來了

王林
王林原創
2024-06-08 21:21:29386瀏覽

TinyLLaVA+計畫由清華大學電子系多媒體訊號與智慧資訊處理實驗室 (MSIIP) 吳及教授團隊與北京航空航太大學人工智慧學院黃雷老師團隊聯袂打造。清華大學 MSIIP 實驗室長期致力於智慧醫療、自然語言處理與知識發現、多模態等研究領域。北京航空團隊長期致力於深度學習、多模態、電腦視覺等研究領域。 TinyLLaVA+計畫的目標是開發一種小型跨語言智慧助手,具備語言理解、問答、對話等多模態能力。專案團隊將充分發揮各自的優勢,共同攻克技術難題,實現智慧助理的設計與開發。這將為智慧醫療、自然語言處理與知識發現、多模態等研究領域帶來新的突破。 同時,清華大學MSIIP 實驗室長期致力於智能

近日,清華和北航聯合推出了TinyLLaVA Factory, 一款支持定制、訓練、評估多模態大模型的程式碼庫,程式碼和模型全部開源。程式碼庫以軟體工程的工廠模式作為設計理念,模組化地重建了 LLaVA 程式碼庫,注重程式碼的可讀性、功能的擴展性、和實驗效果的可重現性。方便研究者和實踐者更容易探索多模態大模型的訓練和設計空間。

模块化重构LLaVA,替换组件只需添加1-2个文件,开源TinyLLaVA Factory来了

  • Github 專案:https://github.com/TinyLLaVA/TinyLLaVA_Factory
  • #論文網址:https://arxiv.org/abs/2405.11788
  • Hugging Face 模式網址:https:// huggingface.co/tinyllava/TinyLLaVA-Phi-2-SigLIP-3.1B or https://huggingface.co/bczhou/TinyLLaVA-3.1B-SigLIP

模块化重构LLaVA,替换组件只需添加1-2个文件,开源TinyLLaVA Factory来了

# #機器之心SOTA 模型地址:https://sota.jiqizhixin.com/project/tinyllava

模块化重构LLaVA,替换组件只需添加1-2个文件,开源TinyLLaVA Factory来了

模块化重构LLaVA,替换组件只需添加1-2个文件,开源TinyLLaVA Factory来了

LLaVA是一個多模態社群的優質開源項目,備受研究者和開發者的青睞。新入坑多模態大模型的初學者也習慣以LLaVA專案作為起點,學習和訓練多模態大模型。但LLaVA專案的程式碼較為晦澀難懂,一旦不慎更改錯誤,就可能會影響訓練效果,對於新手來說,往往不敢輕易修改其中的細節,給理解和探索多模態大模型的本質細節造成了一定的困難。 ############近日,清華和北航聯合推出TinyLLaVA Factory,將原本的LLaVA 程式碼進行模組化重構,專注於簡潔的程式碼實作、新功能的可擴展性、以及訓練結果的可復現性,讓你以最小的程式碼量,客製化並訓練屬於自己的多模態​​大模型,同時減少程式碼錯誤率!在相同的模型配置、訓練資料和訓練策略條件下,使用 TinyLLaVA Factory 可訓練出比使用 LLaVA 程式碼效能略勝一籌的模型。為了讓使用者更容易理解程式碼和使用模型,TinyLLaVA Factory 專案還配備了程式碼文件和 Demo 網站。其總體架構如下圖所示:[架構圖]。 #####################在資料預處理部分,TinyLLaVA Factory摒棄了LLaVA程式碼中燒腦的圖片處理和Prompt處理過程,提供了標準的、可擴展的圖片和文字預處理過程,清晰明了。其中,圖片預處理可以自訂Processor,也可以使用一些官方視覺編碼器的Processor,例如CLIP ViT和SigCLIP ViT自帶的Image Processor。對於文字預處理,定義了基底類別Template,提供了基本的、共用的函數,例如新增System Message (Prompt)、Tokenize和產生標籤Ground Truth的函數,使用者可以透過繼承基底類別就可以輕鬆擴展至不同LLM的Chat Template。 #########################

模型部分,TinyLLaVA Factory自然地將多模態大模型模組化成3個組件-大語言模型組件、視覺編碼器組件、中間的連接器組件。每個組件由一個工廠物件控制,負責新模型的註冊和替換,使用使用者能夠足夠更容易地替換其中任何一個組件,而不會牽連到其他部分。

模块化重构LLaVA,替换组件只需添加1-2个文件,开源TinyLLaVA Factory来了

TinyLLaVA Factory 為每個元件提供了當前主流的模型,如下表所示。

模块化重构LLaVA,替换组件只需添加1-2个文件,开源TinyLLaVA Factory来了

訓練器仍然仿照LLaVA,採取Hugging Face 自帶的Trainer,整合了Gradient Accumulation,Wandb 做日誌記錄等特性,同樣支援DeepSpeed ZeRO2/ZeRO3 並行訓練。對於評估部分,TinyLLaVA Factory 提供了 SQA/GQA/TextVQA/VQAv2/POPE/MME/MM-Vet/MMMU 8 個 Benchmark 的評估。

接下來,劃重點! TinyLLaVA Factory Github 專案也手把手教你自訂自己的多模態​​大模型。只需簡單地添加 1-2 個文件,就可以輕鬆替換 LLM 組件、視覺編碼器組件、連接器組件。

拿取代 LLM 模型範例。根據使用過 LLaVA 程式碼庫的同學反應,LLaVA 程式碼想取代非 Llama 系列的語言模型容易出錯。而 TinyLLaVA Factory 可以方便地替換語言模型,只需添加 2 個 py 文件,一個是 Chat Template 文件,一個是模型文件。替換視覺編碼器時,也只需新增 1 個 py 文件,繼承視覺編碼器的基底類別即可。

模块化重构LLaVA,替换组件只需添加1-2个文件,开源TinyLLaVA Factory来了

TinyLLaVA Factory 也支援對訓練策略進行定制,對使用者來說只需在設定檔中進行修改,就能在pretraining 和finetuning 階段對3 個模組組件(LLM / 視覺編碼器/ 連接器)實現凍住/ 全量微調/ 部分微調/lora 微調的任意組合。堪稱小白易上手式的教學!

模块化重构LLaVA,替换组件只需添加1-2个文件,开源TinyLLaVA Factory来了

早在今年2 月,TinyLLaVA 計畫就敏銳地捕捉了3B 以下LLM 在多模態大模型中的潛力,利用市面主流的小規模LLM,訓練了一系列多模態大模型,參數量在0.89B-3.1B。實驗結果顯示經過高品質的資料選擇和更細緻的訓練策略,利用小規模 LLM 同樣可以實現和大模型相近甚至更加優越的任務表現。 (細節詳見技術報告 https://arxiv.org/abs/2402.14289)

以上是模組化重構LLaVA,替換組件只需添加1-2個文件,開源TinyLLaVA Factory來了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn