Hugging Face Modular Diffusers リリース

Hugging Face は Modular Diffusers を導入しました。このフレームワークは、再利用可能で自己完結型のブロックを組み合わせることでディフュージョンパイプラインを構築できるようにします。このアプローチにより、開発者はテキストエンコーディング、画像エンコーディング、ノイズ除去、デコードなどのコンポーネントを自由に組み合わせ、パイプライン全体を一から書くことなく、目的に合わせたワークフローを作成できます。

組み合わせ可能なパイプラインアーキテクチャ

Modular Diffusers は既存の DiffusionPipeline クラスに加えて ModularPipeline クラスを導入し、これを補完します。このアーキテクチャは、ワークフローの定義とモデル重みのロードを分離し、メモリ管理やパイプラインの変更においてより高い柔軟性を提供します。

主要な操作フロー

  • Workflow Definition: ModularPipeline.from_pretrained() を使用して、ユーザーは重みをすぐにロードせずにブロックのシーケンスを定義します。
  • Weight Loading: .load_components() メソッドを使用して、データ型や量子化を設定し、実際のモデル重みをロードします。
  • Block Manipulation: パイプラインは柔軟なブロックで構成されているため、ユーザーはブロックを検査、追加、削除、交換できます。例えば、テキストエンコーダーブロックをパイプラインから取り出し、.init_pipeline() を使用して独立したパイプラインとして実行することが可能です。

カスタムブロック開発

ユーザーは ModularPipelineBlocks を継承した Python クラスを定義することでカスタムブロックを作成できます。カスタムブロックは以下の3つの主要プロパティを指定する必要があります:

  1. expected_components: 必要なモデルとそのデフォルトの Hugging Face Hub リポジトリパスを定義します。
  2. inputs: 必須およびオプションの入力パラメータを定義します。
  3. intermediate_outputs: 下流コンポーネント向けにブロックが生成するデータを定義します。

計算ロジックは __call__ メソッド内で処理されます。定義が完了すると、これらのブロックは既存のワークフローに挿入できます。例えば、Depth Anything V2 を使用した DepthProcessorBlock を ControlNet ワークフローの冒頭に挿入すると、その出力は自動的にそれを必要とする後続ブロックへ流れます。

モジュラーレポジトリとハブ統合

Modular Diffusers は「Modular Repositories」を導入し、リポジトリがすべての重みをローカルに保持するのではなく、元のモデルリポジトリからコンポーネントを参照できるようにします。これは modular_model_index.json ファイルで管理されます。

カスタムブロックは Hugging Face Hub に公開でき、trust_remote_code=True を指定して他のユーザーがロードできます。このエコシステムにより、コミュニティはモデルの重みだけでなく、モジュラーパイプライン内でブロックを実行するために必要な特定の Python ロジックも共有できるようになります。

コミュニティ実装例

Modular Diffusers フレームワークを使用して、すでにいくつかの高性能パイプラインが実装されています:

  • Krea Realtime Video: Wan 2.1 から蒸留された 14B パラメータのモデルで、単一の B200 GPU で 11fps を実現し、テキストからビデオへの変換やストリーミングビデオからビデオへの変換をサポートします。
  • Waypoint-1: Overworld が提供する 2.3B パラメータのリアルタイムディフュージョンワールドモデルで、テキストプロンプトやコントロール入力からインタラクティブな環境を生成します。

Mellon との統合

Modular Diffusers は、ノードベースのビジュアルワークフローインターフェースである Mellon と統合します。この統合は、モジュラーブロックの一貫した API(inputsintermediate_outputsexpected_components)により実現され、Mellon がカスタム UI コードを必要とせずにブロック用のユーザーインターフェースを自動生成できるようになります。

Key features of the Mellon integration include:

  • Dynamic Nodes: 選択されたモデルに応じてインターフェースを適応させるノード。
  • Single-Node Workflows: キャンバスの混雑を減らすために、モジュラーパイプライン全体を単一ノードに折りたたむ機能。
  • Hub Integration: Hub に公開されたカスタムブロックは repo_id を介して Mellon にロードでき、自動的に設定されます。

Sources