Diffusers documentation
パイプライン
パイプライン
ModularPipeline
class diffusers.ModularPipeline
< source >( 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 )
すべての Modular パイプラインの基底クラス。
from_pretrained
< source >( 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を読み込みます。
load_components
< source >( 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
< source >( **kwargs )
コンポーネントを、それに対応する仕様とともに登録します。
このメソッドは、以下を担当します:
- コンポーネントのオブジェクトをローダーの属性として設定します(例: self.unet = unet)。
save_pretrained時にmodular_model_index.jsonとして保存される設定辞書を更新します(from_pretrained コンポーネントのみ対象)- コンポーネントマネージャーがアタッチされている場合、コンポーネントを追加します(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
< source >( 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()クラスメソッドを使って再読み込みできるようにします。
へ
< source >( *args**kwargs ) → DiffusionPipeline
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を持つパイプラインを返します。
選択したコンポーネントをアンロードし、そのメモリを解放します。
コンポーネント属性はNoneにリセットされ、ComponentsManagerがアタッチされている場合は、コンポーネントがそこから削除されます。コンポーネントの仕様は変更されないため、後でload_components()を呼び出して再度読み込むことができます。
update_components
< source >( **kwargs )
パラメータ
- **kwargs — 更新するコンポーネントオブジェクトまたは設定値: コンポーネントオブジェクト: AutoModel.from_pretrained() または ComponentSpec.load() で読み込まれたモデルには、読み込み情報が自動的にタグ付けされます。重みを持たない ConfigMixin オブジェクト (スケジューラやガイダーなど) は直接渡すことができます。設定値: 設定を更新するための単純な値 (例: requires_safety_checker=False)
- コンポーネントオブジェクト:
AutoModel.from_pretrained()またはComponentSpec.load()で読み込まれたモデルには、読み込み情報が自動的にタグ付けされます。重みを持たない ConfigMixin オブジェクト(スケジューラーやガイダーなど)は、そのまま直接渡すことができます。 - 設定値: 設定項目を更新するための単純な値
(例:
requires_safety_checker=False)
- コンポーネントオブジェクト:
パイプラインがインスタンス化された後で、コンポーネントおよび設定値と仕様を更新します。
このメソッドを使用すると、以下を行うことができます:
- 既存のコンポーネントを新しいコンポーネントに置き換えます(例:
self.unetまたはself.text_encoderの更新) - 設定値を更新します(例:
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オブジェクト(スケジューラーやガイダーなど)は、そのまま直接渡すことができます。