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

パイプライン

ModularPipeline

class diffusers.ModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

パラメータ

  • blocks — ModularPipelineBlocks、パイプラインで使用されるブロック

すべての Modular パイプラインの基底クラス。

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike | Nonetrust_remote_code: bool | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = None**kwargs )

パラメータ

  • pretrained_model_name_or_path (str または os.PathLike、省略可) — 事前学習済みパイプライン設定へのパスです。まず modular_model_index.json から設定を読み込もうとし、標準的な非モジュラーリポジトリとの互換性のために、model_index.json にフォールバックします。pretrained_model_name_or_path にパイプライン設定が含まれていない場合、初期化時に None に設定されます。
  • trust_remote_code (bool, 任意) — パイプラインの読み込み時にリモートコードを信頼するかどうか。pretrained_model_name_or_path 内のカスタムコードに基づいてパイプラインブロックを作成する場合は、True に設定する必要があります。
  • components_manager (ComponentsManager, 省略可) — 複数のパイプラインにまたがるコンポーネントを管理し、オフローディング戦略を適用するための ComponentsManager インスタンス。
  • collection (str, 省略可) — ComponentsManager でコンポーネントを整理するためのコレクション名。
  • workflow (str, 省略可能) — パイプラインブロックによって宣言されたワークフローの名前。指定した場合、ブロックはそのワークフローの実行ブロックに絞り込まれ、パイプラインは、load_components() が読み込むのは、そのワークフローが使用するコンポーネントのみとなります。

Hugging Face HubのリポジトリからModularPipelineを読み込みます。

get_component_spec

< >

( name: str )

load_components

< >

( names: list[str] | str | None = Noneworkflow: str | None = None**kwargs )

パラメータ

  • names — list of component names to load. If None, will load all components with default_creation_method == “from_pretrained”. If provided as a list or string, will load only the specified components.
  • workflow — パイプラインブロックによって宣言されたワークフローの名前。指定した場合、そのワークフローの実行ブロックで使用されるコンポーネントのみが読み込まれます。names と併用することはできません。
  • **kwargs — から from_pretrained().以下のような値を指定できます:
    • 読み込むすべてのコンポーネントに適用される単一の値。例: dtype=torch.bfloat16
    • 辞書、例: dtype={"unet": torch.bfloat16, "default": torch.float32}
    • kwargs に pretrained_model_name_or_path、variant、revision など、異なる読み込みフィールドが渡された場合、ComponentSpec を上書きする可能性があります。
    • kwargs に pretrained_model_name_or_path、variant、revision など、異なる読み込みフィールドが渡された場合、ComponentSpec を上書きする可能性があります。

スペックから選択されたコンポーネントを読み込みます。

register_components

< >

( **kwargs )

パラメータ

  • **kwargs — キーがコンポーネント名、値がコンポーネントオブジェクトであるキーワード引数。 例: register_components(unet=unet_model, text_encoder=encoder_model)

コンポーネントを、それに対応する仕様とともに登録します。

このメソッドは、以下を担当します:

  1. コンポーネントのオブジェクトをローダーの属性として設定します(例: self.unet = unet)。
  2. save_pretrained 時に modular_model_index.json として保存される設定辞書を更新します(from_pretrained コンポーネントのみ対象)
  3. コンポーネントマネージャーがアタッチされている場合、コンポーネントを追加します(from_pretrainedコンポーネントのみ対象)

このメソッドは、次の場合に呼び出されます:

  • コンポーネントは最初に init:
    • from_pretrained によって init 時に読み込まれないコンポーネントは None として登録されます。
    • init 時に from_pretrained 以外のコンポーネントが作成され、オブジェクト自体として登録されます
  • コンポーネントはupdate_components()メソッドで更新されます。例えば、loader.update_components(unet=unet)やloader.update_components(guider=guider_spec)のように使用します。
  • (from_pretrained) コンポーネントはload_components()メソッドで読み込まれます。例: loader.load_components(names=[“unet”])で特定のコンポーネントを読み込むか、loader.load_components()ですべてのデフォルトのコンポーネントを読み込みます

注:

  • コンポーネントにNoneを登録すると、属性がNoneに設定されますが、それでもspecはconfig辞書と同期され、save_pretrained実行時にmodular_model_index.jsonとして保存されます。
  • このメソッドの外側、例えばupdate_components()メソッド内で、新しいコンポーネントに合わせてcomponent_specsが更新されます。

save_pretrained

< >

( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = False**kwargs )

パラメータ

  • save_directory (str または os.PathLike) — パイプラインを保存するディレクトリ。存在しない場合は作成されます。
  • safe_serialization (bool、任意、デフォルトはTrue) — safetensorsを使用してモデルを保存するか、従来のpickleによるPyTorchの方式で保存するかどうかを指定します。
  • variant (str, 任意) — 指定した場合、重みはpytorch_model.<variant>.binの形式で保存されます。
  • max_shard_size (int または str、デフォルトは None) — シャード化される前のチェックポイントの最大サイズ。シャード化された各チェックポイントのサイズは、このサイズ未満になります。文字列で指定する場合は、数字の後に単位("5GB" など)を付ける必要があります。整数で指定する場合は、単位はバイトです。
  • push_to_hub (bool、省略可、デフォルトは False) — パイプラインを保存した後、Hugging Face モデルハブにプッシュするかどうかを指定します。
  • **kwargs — 追加のキーワード引数:
    • overwrite_modular_index (bool、省略可、デフォルトは True): modular_model_index.json を更新して、保存される各コンポーネントの読み込み仕様を保存先(Hub にプッシュする場合は repo_id、それ以外の場合は save_directory)を指すようにするかどうかを指定します。読み込まれていないコンポーネントは保存されず、常に記録された読み込み仕様が保持されます。保存対象のコンポーネントについても記録された仕様を保持する場合は False を指定します(他のリポジトリを意図的に参照するインデックスなど)。読み込み ID がないコンポーネント(update_components で追加されたカスタムモデルなど)は、記録されたソースがないため、引き続き書き換えられます。
    • repo_id (str, 任意): パイプラインをプッシュするリポジトリの ID です。デフォルトでは、save_directory の最後のコンポーネントが使用されます。
    • commit_message (str, 省略可): Hub への push 操作のコミットメッセージ。
    • private (bool, 任意): リポジトリを非公開にするかどうかを指定します。
    • create_pr (bool、省略可、デフォルトはFalse): 直接プッシュする代わりに、プルリクエストを作成するかどうか。
    • token (str, 省略可): 認証に使用する Hugging Face トークン。

パイプラインとそのすべてのコンポーネントをディレクトリに保存し、from_pretrained()クラスメソッドを使って再読み込みできるようにします。

へ

< >

( *args**kwargs ) → DiffusionPipeline

パラメータ

  • dtype (torch.dtype, 省略可) — 指定したdtypeを持つパイプラインを返します
  • device (torch.Device、省略可) — 指定したdeviceを持つパイプラインを返します。
  • silence_dtype_warnings (str、省略可、デフォルトはFalse) — ターゲットのdtypeがターゲットのdeviceと互換性がない場合、警告を省略するかどうかを指定します。

パイプラインは、指定されたdtypeおよび/またはdtypeに変換されました。

Performs Pipeline dtype and/or device conversion. A torch.dtype and torch.device are inferred from the arguments of self.to(*args, **kwargs).

> パイプラインがすでに正しい torch.dtype と torch.device を持っている場合、そのまま返されます。 それ以外の場合、> 返されるパイプラインは、希望する torch.dtype と torch.device を持つ self のコピーです。

toを呼び出す方法には、次のものがあります。

  • to(dtype, silence_dtype_warnings=False) → DiffusionPipeline は、指定された dtype を持つパイプラインを返します
  • to(device, silence_dtype_warnings=False) → DiffusionPipeline を呼び出すと、指定した device を持つパイプラインが返されます。
  • to(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline は、指定された device および dtype を持つパイプラインを返します。

unload_components

< >

( names: list[str] | str )

パラメータ

  • names — 解放するコンポーネント名、またはコンポーネント名のリスト。

選択したコンポーネントをアンロードし、そのメモリを解放します。

コンポーネント属性はNoneにリセットされ、ComponentsManagerがアタッチされている場合は、コンポーネントがそこから削除されます。コンポーネントの仕様は変更されないため、後でload_components()を呼び出して再度読み込むことができます。

update_components

< >

( **kwargs )

パラメータ

  • **kwargs — 更新するコンポーネントオブジェクトまたは設定値: コンポーネントオブジェクト: AutoModel.from_pretrained() または ComponentSpec.load() で読み込まれたモデルには、読み込み情報が自動的にタグ付けされます。重みを持たない ConfigMixin オブジェクト (スケジューラやガイダーなど) は直接渡すことができます。設定値: 設定を更新するための単純な値 (例: requires_safety_checker=False)
    • コンポーネントオブジェクト: AutoModel.from_pretrained() または ComponentSpec.load() で読み込まれたモデルには、読み込み情報が自動的にタグ付けされます。重みを持たない ConfigMixin オブジェクト(スケジューラーやガイダーなど)は、そのまま直接渡すことができます。
    • 設定値: 設定項目を更新するための単純な値 (例: requires_safety_checker=False)

パイプラインがインスタンス化された後で、コンポーネントおよび設定値と仕様を更新します。

このメソッドを使用すると、以下を行うことができます:

  1. 既存のコンポーネントを新しいコンポーネントに置き換えます(例:self.unetまたはself.text_encoderの更新)
  2. 設定値を更新します(例:self.requires_safety_checker フラグの変更)

パイプラインの属性としてコンポーネントと設定値を更新するだけでなく、このメソッドは以下も更新します:

  • _component_specs および _config_specs 内の対応する仕様
  • save_pretrained 時に modular_model_index.json として保存される config ディクショナリ

例:

# Update pre-trained model
pipeline.update_components(unet=new_unet_model, text_encoder=new_text_encoder)

# Update configuration values
pipeline.update_components(requires_safety_checker=False)

注:

  • AutoModel.from_pretrained() または ComponentSpec.load() で読み込まれたコンポーネントは、シリアライズのためにローディング仕様を保持します。Hub への参照がないカスタムコンポーネントやローカルで読み込まれたコンポーネントは、save_pretrained() の実行中に modular_model_index.json のエントリが自動的に更新されます。
  • 重みを持たないConfigMixinオブジェクト(スケジューラーやガイダーなど)は、そのまま直接渡すことができます。
Update on GitHub