Diffusers documentation

パイプライン

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