newsence
來源篩選

Introducing Modular Diffusers: Composable Building Blocks for Diffusion Pipelines

Huggingface

Hugging Face introduces Modular Diffusers, a new framework that allows users to build, swap, and share self-contained blocks for diffusion workflows with seamless integration into the Mellon visual interface.

newsence

Modular Diffusers 登場:擴散模型管線的可組合式構建模塊

Huggingface
大約 19 小時前

AI 生成摘要

Hugging Face 推出了 Modular Diffusers,這是一個全新的框架,讓我們能透過可自由組合、交換與分享的獨立區塊來建立擴散模型工作流,並能無縫整合至 Mellon 視覺化介面中。

介紹 Modular Diffusers - 擴散模型流水線的可組合構建塊

介紹 Modular Diffusers - 擴散模型流水線的可組合構建塊

在這篇文章中,我們將介紹 Modular Diffusers 的運作方式 —— 從用於運行模組化流水線(pipeline)的熟悉 API,到構建完全自定義的區塊並將其組合成您自己的工作流。我們還將展示它如何與 Mellon 集成,Mellon 是一個基於節點的視覺化工作流界面,您可以用它來連接 Modular Diffusers 的各個區塊。

目錄

快速上手

以下是一個使用預建區塊運行 FLUX.2 Klein 4B 推理的簡單範例:

您會得到與標準 DiffusionPipeline 相同的結果,但該流水線在底層卻大不相同:它由靈活的區塊組成 —— 文本編碼(text encoding)、圖像編碼(image encoding)、去噪(denoising)和解碼(decoding) —— 您可以直接檢查這些區塊:

每個區塊都是自包含的,擁有自己的輸入和輸出。您可以將任何區塊作為獨立的流水線運行,或者自由地添加、移除和更換區塊 —— 它們會動態地重新組合,以配合剩餘的任何區塊。使用 .init_pipeline() 將區塊轉換為可運行的流水線,並使用 .load_components() 加載模型權重。

欲了解更多關於區塊類型、組合模式、延遲加載以及使用 ComponentsManager 進行內存管理的資訊,請參閱 Modular Diffusers 文檔。

自定義區塊

Modular Diffusers 在創建您自己的區塊時真正大放異彩。自定義區塊是一個 Python 類別,定義了其組件、輸入、輸出和計算邏輯 —— 一旦定義完成,您就可以將其插入任何工作流中。

編寫自定義區塊

這是一個使用 Depth Anything V2 從圖像中提取深度圖的範例區塊。

將區塊組合成工作流

讓我們將此區塊與 Qwen 的 ControlNet 工作流一起使用。提取 ControlNet 工作流並在開頭插入深度區塊:

序列中的區塊會自動共享數據:深度區塊的 control_image 輸出會流向需要它的下游區塊,而其 image 輸入則成為流水線輸入,因為之前的區塊都沒有提供它。

blocks_composed

在 Hub 上分享自定義區塊

您可以將自定義區塊發布到 Hub,以便任何人都可以通過 trust_remote_code=True 加載它。我們創建了一個模板來幫助您入門 —— 請查看「構建自定義區塊」指南以獲取完整演練。

本文中的 DepthProcessorBlock 已發布在 diffusers/depth-processor-custom-block —— 您可以直接加載並使用它:

我們在這裡發布了一系列可直接使用的自定義區塊。

模組化存儲庫(Modular Repositories)

ModularPipeline.from_pretrained 開箱即可與任何現有的 Diffusers 存儲庫配合使用,但 Modular Diffusers 還引入了一種新型存儲庫:模組化存儲庫。

模組化存儲庫能夠引用其原始模型存儲庫中的組件。例如,diffusers/flux2-bnb-4bit-modular 包含一個量化過的 transformer,並從原始存儲庫加載其餘組件。

模組化存儲庫還可以託管作為 Python 代碼的自定義流水線區塊,以及為 Mellon 等工具提供的視覺化 UI 配置 —— 全部整合在一個地方。

社群流水線

社群已經開始使用 Modular Diffusers 構建完整的流水線並將其發布在 Hub 上,其中包含模型權重和即插即用的代碼。

團隊可以構建新穎的架構,將其封裝為區塊,並將整個流水線發布在 Hub 上,供任何人通過 ModularPipeline.from_pretrained 使用。

查看完整的社群流水線集合以了解更多。

與 Mellon 集成

💡 Mellon 尚處於早期開發階段,還不適合生產環境使用。請將此視為集成運作方式的預覽!

Mellon 是一個與 Modular Diffusers 集成的視覺化工作流界面。如果您熟悉 ComfyUI 等基於節點的工具,您會感到賓至如歸 —— 但存在一些關鍵差異:

這種集成之所以可行,是因為每個區塊都暴露了相同的屬性(inputsintermediate_outputsexpected_components)。這種一致的 API 意味著 Mellon 可以自動從任何區塊定義生成節點的 UI,並將區塊組合成更高級別的節點。

例如,diffusers/FLUX.2-klein-4B-modular 在一個存儲庫中包含了流水線定義、組件引用和 mellon_pipeline_config.json。您可以在 Python 中使用 ModularPipeline.from_pretrained("diffusers/FLUX.2-klein-4B-modular") 加載它,或者在 Mellon 中加載它以創建單節點或多節點工作流。

這是一個簡單的範例。我們將一個 Gemini 提示詞擴展節點(託管在 diffusers/gemini-prompt-expander-mellon 的模組化存儲庫中)添加到現有的文本生成圖像工作流中:

Gemini 會在生成圖像之前將您的簡短提示詞擴展為詳細描述。無需代碼,無需配置 —— 只需要一個 Hub 存儲庫 ID。

這只是一個例子。如需詳細演練,請查看 Mellon x Modular Diffusers 指南。

結論

Modular Diffusers 帶來了社群一直要求的組合性和靈活性,同時沒有犧牲使 Diffusers 強大的功能。目前仍處於早期階段 —— 我們希望您的參與來塑造未來的發展。請嘗試一下,並告訴我們哪些部分運作良好,哪些部分不理想,以及缺少了什麼。

資源

感謝 Chun Te Lee 製作縮略圖,並感謝 Poli、Pedro、Lysandre、Linoy、Aritra 和 Steven 提供的寶貴評論。

更多來自我們部落格的文章

Image

深入探討文本生成影片模型

Image

使用 Gradio 製作可見浮水印

社群

· 註冊或登錄以發表評論