Hugging Face 模組化 Diffusers 發布

Hugging Face 推出了 Modular Diffusers,一個透過組合可重複使用、獨立的區塊來構建 diffusion 流程的框架。此方法讓開發者能混合與匹配元件——例如文字編碼、影像編碼、去噪與解碼——以建立客製化的工作流程,而無需從頭編寫完整的流程。

可組合的流程架構

Modular Diffusers 透過引入 ModularPipeline 類別,補足現有的 DiffusionPipeline 類別。此架構將工作流程的定義與模型權重的載入分離,提供在記憶體管理與流程修改上的更大彈性。

主要操作流程

  • 工作流程定義:使用 ModularPipeline.from_pretrained(),使用者在未立即載入權重的情況下定義區塊的順序。
  • 權重載入:使用 .load_components() 方法來設定資料類型、量化,並載入實際的模型權重。
  • 區塊操作:由於流程由彈性區塊組成,使用者可以檢視、添加、移除或交換區塊。例如,文字編碼器區塊可以從流程中取出,並使用 .init_pipeline() 作為獨立的流程執行。

自訂區塊開發

使用者可以透過定義繼承自 ModularPipelineBlocks 的 Python 類別來建立自訂區塊。自訂區塊必須指定三個主要屬性:

  1. expected_components:定義所需模型及其在 Hugging Face Hub 上的預設倉庫路徑。
  2. inputs:定義必要與可選的輸入參數。
  3. intermediate_outputs:定義區塊為下游元件產生的資料。

計算邏輯在 __call__ 方法中處理。定義完成後,這些區塊即可插入現有的工作流程。例如,使用 Depth Anything V2 的 DepthProcessorBlock 可以插入至 ControlNet 工作流程的開頭,其輸出會自動傳遞給後續需要的區塊。

模組化倉庫與 Hub 整合

Modular Diffusers 引入「模組化倉庫」,允許倉庫引用其原始模型倉庫中的元件,而非在本地儲存所有權重。此機制透過 modular_model_index.json 檔案管理。

自訂區塊可以發布至 Hugging Face Hub,其他使用者可使用 trust_remote_code=True 載入。此生態系統讓社群不僅共享模型權重,亦共享在模組化流程中執行區塊所需的特定 Python 邏輯。

社群實作

已經有多個高效能流程使用 Modular Diffusers 框架實作:

  • Krea Realtime Video:一個從 Wan 2.1 蒸餾而來的 14 億參數模型,在單一 B200 GPU 上達到 11fps,支援文字轉影片與串流影片轉影片。
  • Waypoint-1:來自 Overworld 的 2.3 億參數即時 diffusion 世界模型,能根據文字提示與控制輸入生成互動環境。

與 Mellon 的整合

Modular Diffusers 與 Mellon(基於節點的視覺工作流程介面)整合。此整合依賴模組化區塊一致的 API(inputsintermediate_outputsexpected_components),使 Mellon 能自動為區塊產生使用者介面,無需自訂 UI 程式碼。

Mellon 整合的主要功能包括:

  • 動態節點:根據所選模型自動調整介面的節點。
  • 單節點工作流程:可將整個模組化流程折疊為單一節點,以減少畫布雜亂。
  • Hub 整合:發布至 Hub 的自訂區塊可透過 repo_id 載入 Mellon,並自動完成設定。

Sources