Diffusers documentation

コンポーネントと設定

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

コンポーネントと設定

ComponentSpec

class diffusers.ComponentSpec

< >

( name: str | None = Nonetype_hint: typing.Optional[typing.Type] = Nonedescription: str | None = Noneconfig: diffusers.configuration_utils.FrozenDict | None = Nonepretrained_model_name_or_path: str | list[str] | None = Nonesubfolder: str | None = ''variant: str | None = Nonerevision: str | None = Nonedefault_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained'repo: str | list[str] | None = None )

パラメータ

  • name — コンポーネントの名前
  • type_hint — コンポーネントの型(例: UNet2DConditionModel)
  • description — コンポーネントの任意の説明
  • config — init の作成に使用する任意の config dict
  • pretrained_model_name_or_path — Optional pretrained_model_name_or_path path for from_pretrained creation
  • subfolder — pretrained_model_name_or_path 内の任意のサブフォルダ
  • variant — pretrained_model_name_or_path のオプションのバリアント
  • revision — pretrained_model_name_or_path の任意の revision
  • default_creation_method — 推奨される作成メソッド - “from_config” または “from_pretrained”

パイプラインコンポーネントの仕様。

コンポーネントは2つの方法で作成できます。

  1. 設定辞書を使用してinitでゼロから
  2. from_pretrained を使用して

create

< >

( config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None**kwargs )

config を使用して from_config でコンポーネントを作成します。

decode_load_id

< >

( load_id: str )

パラメータ

  • load_id — デコード対象の load_id 文字列。形式: “pretrained_model_name_or_path|subfolder|variant|revision” None の値は “null” で表されます

load_id 文字列を読み取りフィールドと値の辞書に復号します。

from_component

< >

( name: strcomponent: Any )

パラメータ

  • name — コンポーネントの名前
  • component — spec を作成するための Component オブジェクト

例外

ValueError

  • ValueError — コンポーネントがサポートされていない場合(例: load_id がない nn.Module、ConfigMixin ではない場合)

Component から ComponentSpec を作成します。

現在サポートしているもの:

  • ComponentSpec.load()メソッドで作成されたコンポーネント
  • ConfigMixin のサブクラスでありながら nn.Module ではないコンポーネント(スケジューラやガイダーなど)

load

< >

( **kwargs )

from_pretrained を使用してコンポーネントを読み込みます。

読み込みフィールド

< >

( )

読み込み関連のフィールド(つまり、field.metadata["loading"] が True であるもの)の名前をすべて返します。

ConfigSpec

class diffusers.ConfigSpec

< >

( name: strdefault: Anydescription: str | None = None )

パイプライン設定パラメータの仕様。

ComponentsManager

class diffusers.ComponentsManager

< >

( )

複数のパイプラインにまたがるモデルコンポーネントの中央レジストリおよび管理システム。

ComponentsManager は、異なるモジュラーパイプライン間でモデルのコンポーネント(UNet、VAE、テキストエンコーダーなど)を登録、追跡、再利用するための統一された方法を提供します。重複検出、メモリ管理、コンポーネントの整理などの機能が含まれています。

> これは実験的な機能であり、将来変更される可能性があります。

例:

from diffusers import ComponentsManager

# Create a components manager
cm = ComponentsManager()

# Add components
cm.add("unet", unet_model, collection="sdxl")
cm.add("vae", vae_model, collection="sdxl")

# Enable auto offloading
cm.enable_auto_cpu_offload()

# Retrieve components
unet = cm.get_one(name="unet", collection="sdxl")

add

< >

( name: strcomponent: Anycollection: str | None = None ) → str

パラメータ

  • name (str) — コンポーネントの名前
  • component (Any) — 追加するコンポーネント
  • collection (str | None) — コンポーネントを追加するコレクション

戻り値

str

{name}_{id(component)} という形式で生成される一意のコンポーネント ID です。ここで id(component) は、Python の組み込み関数であるオブジェクトの一意な識別子です。

ComponentsManager にコンポーネントを追加します。

disable_auto_cpu_offload

< >

( )

すべてのコンポーネントに対して、CPUへの自動オフロードを無効にします。

enable_auto_cpu_offload

< >

( device: str | int | torch.device = Nonememory_reserve_margin = '3GB'offload_strategy = None )

パラメータ

  • device (str | int | torch.device) — モデルを移動してフォワードパスを実行するデバイス
  • memory_reserve_margin (str) — 使用するメモリリザーブマージン。デフォルトは 3GB です。これは、モデル実行中にメモリ不足を避けるためにデバイス上で空きとして確保しておくメモリ量です(中間アクティベーションや勾配など)。
  • offload_strategy — シグネチャが (hooks, model_id, model, execution_device) -> hooks であり、読み込まれるモデルの前にオフロードする常駐モデルを返す任意の呼び出し可能オブジェクト。デフォルトは AutoOffloadStrategy で、最小限の十分な組み合わせを解放します。

すべてのコンポーネントに対して、CPU オフロードの自動有効化を有効にします。

アルゴリズムは次のように動作します:

  1. すべてのモデルはデフォルトでCPUから起動します
  2. モデルのフォワードパスが呼び出されると、実行デバイスに移動されます
  3. メモリが不足している場合、デバイス上の他のモデルはCPUに移動されます
  4. システムは、十分なメモリを解放できる最小のモデルの組み合わせをオフロードしようとします
  5. モデルは、別のモデルがメモリを必要としてメモリを解放するよう強制されるまで、実行デバイス上に保持されます

グループオフロードされたモデルはこれに参加しますが、自分自身を配置します。他のモデルを退避させることでスペースを確保できるため、他のモデルのために退避されることはありません。どちらの順序でも問題ありません。この機能を有効にする前にグループオフロードを行うか、後に実行するか、どちらでも構いません。AutoOffloadStrategy はモデルのメモリフットプリントに基づいて判断を決定しますが、これは一度に1つのグループを保持しているモデルを説明するものではないため、ワークフローに基づいて判断する offload_strategy を渡してください。

get_components_by_ids

< >

( ids: list[str]return_dict_with_names: bool | None = True ) → dict[str, Any]

パラメータ

  • ids (list[str]) — コンポーネントの ID のリスト
  • return_dict_with_names (bool | None) — コンポーネント名をキーとする辞書を返すかどうか:

戻り値

dict[str, Any]

コンポーネントの辞書。

  • return_dict_with_names=True の場合、キーはコンポーネント名になります。
  • If return_dict_with_names=False, keys are component IDs.

例外

ValueError

  • ValueError — return_dict_with_names=True の場合、検索結果に重複するコンポーネント名が見つかったとき

IDのリストでコンポーネントを取得します。

get_components_by_names

< >

( names: list[str]collection: str | None = None ) → dict[str, Any]

パラメータ

  • names (list[str]) — コンポーネント名のリスト
  • collection (str | None) — フィルタリングに使用する任意のコレクション

戻り値

dict[str, Any]

コンポーネント名をキーとするコンポーネントの辞書

例外

ValueError

  • ValueError — 検索結果に重複するコンポーネント名が見つかった場合

名前の一覧でコンポーネントを取得します。必要に応じて、コレクションでフィルタリングできます。

get_ids

< >

( names: str | list[str] = Nonecollection: str | None = None ) → list[str]

パラメータ

  • names (str | list[str]) — コンポーネント名のリスト
  • collection (str | None) — フィルタリングに使用する任意のコレクション

戻り値

list[str]

コンポーネントIDのリスト

…

get_model_info

< >

( component_id: strfields: str | list[str] | None = None )

パラメータ

  • component_id (str) — 情報取得対象のコンポーネント名
  • fields (str | list[str] | None) — 返すフィールドです。単一のフィールドの場合は文字列、複数の場合はフィールドのリストを指定できます。None の場合は、available_info_fields の設定を使用します。

コンポーネントに関する包括的な情報を取得します。

get_one

< >

( component_id: str | None = Nonename: str | None = Nonecollection: str | None = Noneload_id: str | None = None )

パラメータ

  • component_id (str | None) — 取得するオプションのコンポーネントID
  • name (str | None) — コンポーネント名またはパターン
  • collection (str | None) — フィルタリングに使用する任意のコレクション
  • load_id (str | None) — 絞り込み用の任意の load_id

例外

ValueError

  • ValueError — コンポーネントが1つも一致しない場合、または複数のコンポーネントが一致する場合

次のいずれかの方法で、単一のコンポーネントを取得します:

  • 検索名(パターンマッチング)、コレクション、または load_id。
  • component_id を渡す 複数のコンポーネントが一致した場合、または一致するコンポーネントが見つからなかった場合は、エラーが発生します。

remove

< >

( component_id: str = None )

パラメータ

  • component_id (str) — 削除するコンポーネントのID

ComponentsManagerからコンポーネントを削除します。

remove_from_collection

< >

( component_id: strcollection: str )

コレクションからコンポーネントを削除します。

search_components

< >

( names: str | None = Nonecollection: str | None = Noneload_id: str | None = Nonereturn_dict_with_names: bool = True )

パラメータ

  • names — コンポーネント名またはパターン パターン:
    • “unet” : 基本名が “unet” のコンポーネントに一致(例: unet_123abc)
    • “!unet” : ベース名が“unet”のコンポーネントを除くすべて
    • “unet*” : 基本名が “unet” で始まるもの
    • “!unet*”: 基本名が“unet”で始まらないものすべて
    • ”unet” : 基本名に “unet” を含むものすべて
    • “!unet” : 基本名に“unet”を含まないもの
    • “refiner|vae|unet” : 基本名が “refiner”、“vae”、または “unet” に完全に一致するもの
    • “!refiner|vae|unet” : 基本名が“refiner”、“vae”、“unet”に完全に一致しないもの
    • “unet|vae” : 基本名が “unet” で始まるか “vae” で始まるもの
  • collection — フィルタリングに使用する任意のコレクション
  • load_id — 絞り込み用の任意の load_id
  • return_dict_with_names — True の場合、コンポーネント名をキーとする辞書を返します。同名のコンポーネントが複数見つかった場合はエラーをスローします。False の場合、コンポーネント ID をキーとする辞書を返します。

名前の単純なパターンマッチングでコンポーネントを検索します。必要に応じて、collectionまたはload_idでフィルタリングできます。

set_offload_strategy

< >

( offload_strategy )

パラメータ

  • offload_strategy — (hooks, model_id, model, execution_device) -> hooks というシグネチャを持つ任意の呼び出し可能オブジェクト: デバイス上に現在存在するモデルの hooks を受け取り、読み込まれるモデルの前にオフロードすべき hooks を返します。デフォルトは AutoOffloadStrategy で、最小限の十分な組み合わせを解放します。

管理対象のすべてのモデルでオフロード戦略を置き換えます。CPU オートオフロードが有効な場合のみ有効です。

InsertableDict

class diffusers.modular_pipelines.InsertableDict

< >

( )

Update on GitHub