Diffusers documentation
コンポーネントと設定
コンポーネントと設定
ComponentSpec
class diffusers.ComponentSpec
< source >( 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つの方法で作成できます。
- 設定辞書を使用してinitでゼロから
from_pretrainedを使用して
create
< source >( config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None**kwargs )
config を使用して from_config でコンポーネントを作成します。
decode_load_id
< source >( load_id: str )
load_id 文字列を読み取りフィールドと値の辞書に復号します。
from_component
< source >( name: strcomponent: Any )
Component から ComponentSpec を作成します。
現在サポートしているもの:
ComponentSpec.load()メソッドで作成されたコンポーネント- ConfigMixin のサブクラスでありながら nn.Module ではないコンポーネント(スケジューラやガイダーなど)
from_pretrained を使用してコンポーネントを読み込みます。
読み込み関連のフィールド(つまり、field.metadata["loading"] が True であるもの)の名前をすべて返します。
ConfigSpec
パイプライン設定パラメータの仕様。
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
< source >( name: strcomponent: Anycollection: str | None = None ) → str
ComponentsManager にコンポーネントを追加します。
すべてのコンポーネントに対して、CPUへの自動オフロードを無効にします。
enable_auto_cpu_offload
< source >( 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 オフロードの自動有効化を有効にします。
アルゴリズムは次のように動作します:
- すべてのモデルはデフォルトでCPUから起動します
- モデルのフォワードパスが呼び出されると、実行デバイスに移動されます
- メモリが不足している場合、デバイス上の他のモデルはCPUに移動されます
- システムは、十分なメモリを解放できる最小のモデルの組み合わせをオフロードしようとします
- モデルは、別のモデルがメモリを必要としてメモリを解放するよう強制されるまで、実行デバイス上に保持されます
グループオフロードされたモデルはこれに参加しますが、自分自身を配置します。他のモデルを退避させることでスペースを確保できるため、他のモデルのために退避されることはありません。どちらの順序でも問題ありません。この機能を有効にする前にグループオフロードを行うか、後に実行するか、どちらでも構いません。AutoOffloadStrategy はモデルのメモリフットプリントに基づいて判断を決定しますが、これは一度に1つのグループを保持しているモデルを説明するものではないため、ワークフローに基づいて判断する offload_strategy を渡してください。
get_components_by_ids
< source >( ids: list[str]return_dict_with_names: bool | None = True ) → dict[str, Any]
パラメータ
戻り値
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
< source >( names: list[str]collection: str | None = None ) → dict[str, Any]
名前の一覧でコンポーネントを取得します。必要に応じて、コレクションでフィルタリングできます。
get_ids
< source >( names: str | list[str] = Nonecollection: str | None = None ) → list[str]
…
get_model_info
< source >( component_id: strfields: str | list[str] | None = None )
コンポーネントに関する包括的な情報を取得します。
get_one
< source >( component_id: str | None = Nonename: str | None = Nonecollection: str | None = Noneload_id: str | None = None )
次のいずれかの方法で、単一のコンポーネントを取得します:
- 検索名(パターンマッチング)、コレクション、または load_id。
- component_id を渡す 複数のコンポーネントが一致した場合、または一致するコンポーネントが見つからなかった場合は、エラーが発生します。
ComponentsManagerからコンポーネントを削除します。
コレクションからコンポーネントを削除します。
search_components
< source >( 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
< source >( offload_strategy )
管理対象のすべてのモデルでオフロード戦略を置き換えます。CPU オートオフロードが有効な場合のみ有効です。