Diffusers documentation
パイプライン
パイプライン
Pipelines は、推論時に最先端の拡散モデルを実行するためのシンプルな方法を提供します。必要なコンポーネント(個別に学習された複数のモデル、スケジューラ、プロセッサ)を単一のエンドツーエンドのクラスにまとめることで実現されています。Pipelines は柔軟性があり、異なるスケジューラやモデルコンポーネントの使用に適応させることができます。
すべてのパイプラインは、コンポーネントの読み込み、ダウンロード、保存に関する基本的な機能を提供するベースクラスである DiffusionPipeline から構築されます。from_pretrained() で読み込まれる具体的なパイプラインの種類(例えば StableDiffusionPipeline)は自動的に検出され、パイプラインのコンポーネントが読み込まれて、そのパイプラインの __init__ 関数に渡されます。
DiffusionPipeline クラスは学習には使用しないでください。拡散パイプラインの個別コンポーネント(UNet2DModel や UNet2DConditionModel など)は通常、個別に学習されるため、それらを直接扱うことをお勧めします。
Pipelinesには学習機能は提供されていません。
torch.no_gradデコレーターで__call__()メソッドを装飾することにより、PyTorchのautogradが無効化されていることに気づくでしょう。これは、Pipelinesは学習に使用すべきではないためです。学習にご興味がある場合は、代わりにTrainingガイドをご覧ください。
サイドバーのAPI > パイプラインを使用して、モダリティ別のすべてのパイプラインリファレンスを確認できます。タスク指向のワークフローでは、クイックスタートまたはテキストから画像へ、画像から画像へ、インペインティング、動画生成などのガイドから始めることをお勧めします。
DiffusionPipeline
すべてのパイプラインの基底クラス。
DiffusionPipeline は、拡散パイプラインのすべてのコンポーネント(モデル、スケジューラ、プロセッサ)を保存し、モデルの読み込み、ダウンロード、保存を行うメソッドを提供します。また、以下のメソッドも含まれます。
- PyTorchのすべてのモジュールを、選択したデバイスに移動します
- デノイジング反復のプログレスバーを有効化/無効化
クラス属性:
- config_name (
str) — 拡散パイプラインのすべてのコンポーネントのクラス名とモジュール名を保存する設定ファイルの名前。 - _optional_components (
List[str]) — パイプラインの動作に必ずしも渡す必要のないすべてのオプションコンポーネントのリスト(サブクラスでオーバーライドされるべき)。
デバイス
< source >( ) → torch.device
戻り値
torch.device
パイプラインが配置されている torch デバイスです。コンポーネントが複数のデバイスに分割されている場合(例えば、テキストエンコーダーが CPU にあり、デノイジングのバックボーンがアクセラレーターで実行されている場合)、アクセラレーターデバイスが返されます。
へ
< 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を持つパイプラインを返します。
self.components プロパティは、追加のメモリを再割り当てせずに、同じ重みと設定で異なるパイプラインを実行する際に便利です。
dict を返します:
パイプラインを初期化するために必要なすべてのモジュールを含む辞書。
例:
>>> from diffusers import (
... StableDiffusionPipeline,
... StableDiffusionImg2ImgPipeline,
... StableDiffusionInpaintPipeline,
... )
>>> text2img = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> img2img = StableDiffusionImg2ImgPipeline(**text2img.components)
>>> inpaint = StableDiffusionInpaintPipeline(**text2img.components)スライスされたアテンションの計算を無効にします。enable_attention_slicingが以前に呼び出されていた場合、アテンションは1ステップで計算されます。
xFormersからのメモリ効率の高いアテンションを無効にします。
ダウンロード
< source >( pretrained_model_name**kwargs ) → os.PathLike
パラメータ
- pretrained_model_name (
strまたはos.PathLike、省略可) — Hub にホストされている事前学習済みパイプラインの文字列、リポジトリ ID(例:CompVis/ldm-text2im-large-256)。 - custom_pipeline (
str, 省略可) — 以下のいずれかです:-
文字列。Hub にホストされている事前学習済みパイプラインの リポジトリ ID(例:
CompVis/ldm-text2im-large-256)。リポジトリには、カスタムパイプラインを定義するpipeline.pyというファイルが含まれている必要があります。 -
文字列。GitHub の Community にホストされているコミュニティパイプラインの ファイル名。有効なファイル名は、パイプラインスクリプトではなくファイル名と一致する必要があります(
clip_guided_stable_diffusion.pyではなくclip_guided_stable_diffusion)。コミュニティパイプラインは、常に GitHub の現在のmainブランチから読み込まれます。 -
カスタムパイプラインを含むディレクトリ(
./my_pipeline_directory/)へのパス。ディレクトリには、カスタムパイプラインを定義するpipeline.pyというファイルが含まれている必要があります。
> 🧪 これは実験的な機能であり、将来変更される可能性があります。
カスタムパイプラインの読み込みと作成に関する詳細については、コミュニティパイプラインの貢献方法を参照してください。
-
- force_download (
bool、任意、デフォルトはFalse) — モデルの重みおよび設定ファイルを(再)ダウンロードすることを強制するかどうか。キャッシュされたバージョンが存在する場合でも、それらを無視してダウンロードします。 - proxies (
Dict[str, str]、省略可) — プロトコルやエンドポイントごとに使用するプロキシサーバーの辞書です。例えば、{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}のように指定します。各リクエストでこれらのプロキシが使用されます。 - output_loading_info(
bool, optional, デフォルトはFalse) — 欠落キー、予期しないキー、エラーメッセージを含む辞書を返すかどうかを指定します。 - local_files_only (
bool、任意、デフォルトはFalse) — ローカルのモデル重みと設定ファイルのみを読み込むかどうかを指定します。Trueに設定すると、モデルは Hub からダウンロードされません。 - token (
strまたは bool、省略可能) — リモートファイルの HTTP ベアラ認証に使用するトークンです。Trueの場合、diffusers-cli loginで生成されたトークン(~/.huggingfaceに保存されています)が使用されます。 - revision (
str、任意、デフォルトは"main") — 使用する特定のモデルのバージョンです。ブランチ名、タグ名、コミット ID、または Git によって許可される任意の識別子を使用できます。 - custom_revision (
str、任意、デフォルトは"main") — 使用する特定のモデルバージョンです。Hub からカスタムパイプラインを読み込む場合、revisionと同様に、ブランチ名、タグ名、またはコミット ID を指定できます。GitHub からカスタムパイプラインを読み込む場合は、🤗 Diffusers のバージョンを指定でき、それ以外の場合は Hub から読み込む際にデフォルトで"main"が使用されます。 - mirror (
str, 任意) — 中国でモデルをダウンロードする際に、アクセシビリティの問題を解決するためのミラーソースです。ソースの鮮度や安全性を保証するものではなく、詳細についてはミラーサイトをご参照ください。 - variant (
str、省略可) —"fp16"や"ema"のような指定されたバリアントファイル名から重みをロードします。 - use_safetensors (
bool、任意、デフォルトはNone) —Noneに設定されている場合、safetensors の重みが利用可能であり かつ safetensors ライブラリがインストールされている場合に、safetensors の重みがダウンロードされます。Trueに設定されている場合、モデルは safetensors の重みから強制的に読み込まれます。Falseに設定されている場合、safetensors の重みは読み込まれません。 - use_onnx (
bool、任意、デフォルトはFalse) —Trueに設定すると、ONNX 重みが存在する場合、常にダウンロードされます。Falseに設定すると、ONNX 重みはダウンロードされません。デフォルトでは、use_onnxは_is_onnxクラス属性の値をデフォルトとしており、非 ONNX パイプラインではFalse、ONNX パイプラインではTrueになります。ONNX 重みには、.onnxおよび.pbで終わるファイルの両方が含まれます。 - trust_remote_code (
bool、任意、デフォルトはFalse) — Hub 上で独自のファイルに定義されたカスタムのパイプラインやコンポーネントを許可するかどうか。このオプションは、信頼できるリポジトリで、かつコードを確認済みの場合にのみTrueに設定してください。そうしないと、Hub に存在するコードがローカルマシン上で実行されてしまうためです。 - use_flashpack (
bool、任意、デフォルトはFalse) —Trueに設定すると、FlashPackの重みが存在する場合、常にダウンロードされます。Falseに設定すると、FlashPackの重みはダウンロードされません。
戻り値
os.PathLike
ダウンロードされたパイプラインへのパス。
事前学習済みパイプラインの重みから、PyTorchの拡散パイプラインをダウンロードしてキャッシュします。
> プライベートモデルやゲート付きモデルを使用するには、hf > auth loginでログインしてください
enable_attention_slicing
< source >( slice_size: str | int = 'auto' )
スライスされたアテンション計算を有効にします。このオプションを有効にすると、アテンションモジュールは入力テンソルをスライスに分割し、複数ステップでアテンションを計算します。アテンションヘッドが1つを超える場合、各ヘッドに対して計算が逐次実行されます。これは、わずかな速度低下を代償にメモリを節約するために有用です。
> ⚠️ PyTorch > 2.0 または xFormers の
scaled_dot_product_attention(SDPA) をすでに使用している場合は、attention slicing を有効にしないでください。これらの attention 計算はすでに非常にメモリ効率が高いため、この機能を有効にする必要はありません。SDPA や xFormers とともに attention slicing を有効にすると、重大なスローダウンを引き起こす可能性があります!
例:
>>> import torch
>>> from diffusers import StableDiffusionPipeline
>>> pipe = StableDiffusionPipeline.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... dtype=torch.float16,
... use_safetensors=True,
... )
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]enable_group_offload
< source >( onload_device: deviceoffload_device: device = torch.device()offload_type: str = 'block_level'num_blocks_per_group: int | None = Nonenon_blocking: bool = Falseuse_stream: bool = Falserecord_stream: bool = Falselow_cpu_mem_usage = Falseoffload_to_disk_path: str | None = Noneexclude_modules: str | list[str] | None = None )
パラメータ
- onload_device (
torch.device) — モジュールのグループがオンロードされるデバイス。 - offload_device (
torch.device、デフォルトはtorch.device("cpu")) — モジュールのグループがオフロードされるデバイスです。通常は CPU を指定します。デフォルトは CPU です。 - offload_type (
strまたはGroupOffloadingType、デフォルトは “block_level”) — 適用するオフローディングの種類です。“block_level” または “leaf_level” のいずれかです。デフォルトは “block_level” です。 - offload_to_disk_path (
str、任意、デフォルトはNone) — パラメータをオフロードするディレクトリのパスです。RAM が限られた環境で、速度とメモリ使用量のバランスを重視する場合に、このオプションを設定すると有用です。 - num_blocks_per_group (
int, 任意) — offload_type="block_level" を使用する場合の、グループあたりのブロック数です。offload_type="block_level" を使用する場合は必須です。 - non_blocking (
bool、デフォルトはFalse) — True の場合、オフローディングとオンローディングは非ブロッキングなデータ転送で実行されます。 - use_stream (
bool、デフォルトはFalse) — True の場合、CUDA ストリームを使用してオフロードとオンロードを非同期で実行します。これにより、計算とデータ転送をオーバーラップさせることができ、有用な場合があります。 - record_stream (
bool、デフォルトはFalse) —use_streamと併せて有効にすると、現在のテンソルがこのストリームによって使用されたことをマークします。メモリ使用量がわずかに増加する代わりに、処理が高速になります。詳細については、PyTorch 公式ドキュメントを参照してください。 - low_cpu_mem_usage (
bool、デフォルトはFalse) — True の場合、テンソルを事前にピン留めするのではなく、オンザフライでピン留めすることで CPU メモリ使用量を最小限に抑えます。 このオプションは、ストリーミング CPU オフロード(つまりuse_stream=True)を使用している場合にのみ意味を持ちます。 CPU メモリがボトルネックになっている場合に有用ですが、ストリームを使用する利点を相殺する可能性があります。 - exclude_modules (
Union[str, List[str]]、デフォルトはNone) — オフロードから除外するモジュールのリスト。
torch.nn.Module の内部レイヤーにグループオフロードを適用します。グループオフロードとは何か、またどのような場合に有効であるかを理解するために、まず他のサポートされているオフロード手法がどのように動作するかについて、いくつかの背景情報を提供する必要があります。
通常、オフローディングは2つのレベルで行われます。
- モジュールレベル: Diffusers では、
ModelMixin::enable_model_cpu_offload()メソッドを使用してこれを有効にできます。このメソッドは、パイプラインの各コンポーネントを CPU にオフロードして保存し、計算が必要なときにアクセラレータデバイスにオンロードすることで動作します。すべてのコンポーネントをアクセラレータ上に保持するよりもメモリ効率に優れていますが、メモリ要件は依然としてかなり高くなります。このメソッドを動作させるには、ランタイムのデータ型でのモデルサイズと、フォワードパスを完了するために必要な最大の中間活性化テンソルのサイズの合計に相当するメモリが必要です。 - リーフレベル: Diffusers では、
ModelMixin::enable_sequential_cpu_offload()メソッドを使用してこれを有効にできます。 これは、計算グラフの最下層のリーフレベルのパラメータを CPU にオフロードして保存し、計算のためにリーフのみをアクセラレータデバイスにオンロードすることで機能します。これにより、アクセラレータメモリ使用量が最小限に抑えられますが、デバイス同期の回数が多くなるため、速度が遅くなる可能性があります。
Group offloading は、2つの手法の中間的なアプローチです。torch.nn.ModuleList または torch.nn.Sequential として構成された内部レイヤーのグループをオフロードすることで機能します。この手法は、モジュールレベルのオフロードよりもメモリ使用量が少なく、デバイス同期の回数が減るため、リーフレベル/シーケンシャルオフロードよりも高速です。
もう一つのサポートされている機能(非同期データ転送ストリームに対応する CUDA デバイス向け)は、データ転送と計算をオーバーラップさせることで、シーケンシャルなオフローディングと比較して全体の実行時間を短縮できる点です。これは、ストリームを用いたレイヤープリフェッチによって有効化されます。具体的には、次の実行対象となるレイヤーが、現在のレイヤーの実行中にアクセラレータデバイスへのオンローディングを開始します。これにより、メモリ要件はわずかに増加します。なお、この実装はリーフレベルのオフローディングにも対応していますが、ストリームを使用すると大幅に高速化できます。
例:
>>> from diffusers import DiffusionPipeline
>>> import torch
>>> pipe = DiffusionPipeline.from_pretrained("Qwen/Qwen-Image", dtype=torch.bfloat16)
>>> pipe.enable_group_offload(
... onload_device=torch.device("cuda"),
... offload_device=torch.device("cpu"),
... offload_type="leaf_level",
... use_stream=True,
... )
>>> image = pipe("a beautiful sunset").images[0]enable_model_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
enable_sequential_cpu_offload と比較すると、このメソッドは forward メソッドが呼び出されたときに、モデル全体を一度にアクセラレーターへ移動し、次のモデルが実行されるまでモデルはアクセラレーター上に保持されます。メモリ削減効果は enable_sequential_cpu_offload よりも低くなりますが、unet の反復的な実行により、パフォーマンスは大幅に向上します。
enable_sequential_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
🤗 Accelerate を使用してすべてのモデルを CPU にオフロードし、メモリ使用量を大幅に削減します。呼び出されると、torch.nn.Module コンポーネントのすべての状態辞書(self._exclude_from_cpu_offload に含まれるものを除く)が CPU に保存され、その後 torch.device('meta') に移動されます。特定のサブモジュールの forward メソッドが呼び出されたときにのみ、アクセラレーターに読み込まれます。オフロードはサブモジュール単位で行われます。enable_model_cpu_offload よりメモリ削減効果は高いですが、パフォーマンスは低くなります。
enable_xformers_memory_efficient_attention
< source >( attention_op: typing.Optional[typing.Callable] = None )
パラメータ
- attention_op (
Callable, 省略可) — xFormers のmemory_efficient_attention()関数のop引数として使用する、デフォルトのNoneオペレータを上書きします。
xFormersからメモリ効率の高いアテンションを有効にします。このオプションを有効にすると、推論時にGPUメモリ使用量の低下と、場合によっては高速化が期待できます。ただし、学習時の高速化は保証されません。
> ⚠️ memory efficient attention と sliced attention の両方が有効な場合、memory efficient attention が > 優先されます。
例:
>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp
>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)from_pipe
< source >( pipeline**kwargs ) → DiffusionPipeline
指定されたパイプラインから新しいパイプラインを作成します。このメソッドは、追加のメモリを再割り当てせずに、既存のパイプラインのコンポーネントから新しいパイプラインを作成する場合に便利です。
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike**kwargs )
パラメータ
- pretrained_model_name_or_path (
strまたはos.PathLike, 省略可) — 次のいずれかです。- Hub にホストされている事前学習済みパイプラインの repo id(例:
CompVis/ldm-text2im-large-256)を表す文字列 - パイプラインの重みをsave_pretrained()で保存して保存したディレクトリへのパス(例:
./my_pipeline_directory/)
- Hub にホストされている事前学習済みパイプラインの repo id(例:
- dtype (
torch.dtypeまたはdict[str, Union[str, torch.dtype]]、省略可) — デフォルトのtorch.dtypeを上書きし、別の dtype でモデルを読み込みます。サブモデルを異なる dtype で読み込む場合は、dictを渡します(例:{'transformer': torch.bfloat16, 'vae': torch.float16})。指定されていないコンポーネントのデフォルト dtype はdefaultで設定します(例:{'transformer': torch.bfloat16, 'default': torch.float16})。コンポーネントが指定されておらず、デフォルトも設定されていない場合は、torch.float32が使用されます。 - custom_pipeline (
str, 省略可) —> 🧪 これは実験的な機能であり、将来変更される可能性があります。
次のいずれかです:
- repo id(例:
hf-internal-testing/diffusers-dummy-pipeline)の文字列。Hub にホストされているカスタムパイプラインの ID です。リポジトリには、カスタムパイプラインを定義する pipeline.py というファイルが含まれている必要があります。 - 文字列。GitHub上のCommunityにホストされているコミュニティパイプラインのファイル名です。有効なファイル名は、パイプラインスクリプトではなくファイル名と一致する必要があります(
clip_guided_stable_diffusion.pyではなくclip_guided_stable_diffusion)。コミュニティパイプラインは、常にGitHubの現在のmainブランチから読み込まれます。 - カスタムパイプラインを含むディレクトリへのパス(
./my_pipeline_directory/)。このディレクトリには、カスタムパイプラインを定義するpipeline.pyというファイルが含まれている必要があります。
カスタムパイプラインの読み込みと作成に関する詳細については、カスタムパイプラインの読み込みと追加を参照してください。
- repo id(例:
- force_download (
bool、任意、デフォルトはFalse) — モデルの重みおよび設定ファイルを(再)ダウンロードすることを強制するかどうか。キャッシュされたバージョンが存在する場合でも、それらを無視してダウンロードします。 - cache_dir (
Union[str, os.PathLike], 省略可) — 標準のキャッシュを使用しない場合、ダウンロードした事前学習済みモデルの構成がキャッシュされるディレクトリのパス。 - proxies (
Dict[str, str]、省略可) — プロトコルやエンドポイントごとに使用するプロキシサーバーの辞書です。例えば、{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}のように指定します。各リクエストでこれらのプロキシが使用されます。 - output_loading_info(
bool, optional, デフォルトはFalse) — 欠落キー、予期しないキー、エラーメッセージを含む辞書を返すかどうかを指定します。 - local_files_only (
bool、任意、デフォルトはFalse) — ローカルのモデル重みと設定ファイルのみを読み込むかどうかを指定します。Trueに設定すると、モデルは Hub からダウンロードされません。 - token (
strまたは bool、省略可能) — リモートファイルの HTTP ベアラ認証に使用するトークンです。Trueの場合、diffusers-cli loginで生成されたトークン(~/.huggingfaceに保存されています)が使用されます。 - revision (
str、任意、デフォルトは"main") — 使用する特定のモデルのバージョンです。ブランチ名、タグ名、コミット ID、または Git によって許可される任意の識別子を使用できます。 - custom_revision (
str, 任意) — 使用する特定のモデルバージョンです。Hub からカスタムパイプラインを読み込む場合のrevisionと同様に、ブランチ名、タグ名、またはコミット ID を指定できます。デフォルトでは、最新の安定版の 🤗 Diffusers バージョンが使用されます。 - mirror (
str, 任意) — 中国でモデルをダウンロードする際に、アクセシビリティの問題を解決するためのミラーソースです。ソースの鮮度や安全性を保証するものではなく、詳細についてはミラーサイトをご参照ください。 - device_map (
str, 任意) — パイプラインの各コンポーネントを利用可能なデバイスに配置する方法を指定する戦略です。現在サポートされているのは “balanced”device_mapのみです。詳細は こちら をご覧ください。 - max_memory (
Dict, 任意) — 最大メモリを示すデバイスの識別子の辞書です。未設定の場合、各 GPU の利用可能な最大メモリと、利用可能な CPU RAM がデフォルトとして使用されます。 - offload_folder (
strまたはos.PathLike、省略可) —"disk"が device_map に含まれる場合、重みをオフロードするパス。 - offload_state_dict (
bool、省略可) —Trueの場合、CPU RAMが不足するのを避けるため、CPU state dictの重さとチェックポイントの最大シャードの合計が収まらない場合に、CPU state dictを一時的にハードドライブへオフロードします。ディスクオフロードが存在する場合、デフォルトはTrueです。 - low_cpu_mem_usage (
bool、任意、torch のバージョンが 1.9.0 以上の場合デフォルトはTrue、それ以外の場合はFalse) — 重みの初期化を行わず、事前学習済み重みのみを読み込むことで、モデルの読み込みを高速化します。また、モデルの読み込み中に CPU メモリ(ピークメモリを含む)をモデルサイズの 1 倍以下に抑えるよう試みます。PyTorch 1.9.0 以上でのみサポートされています。PyTorch の古いバージョンを使用している場合、この引数をTrueに設定するとエラーが発生します。 - use_safetensors (
bool、任意、デフォルトはNone) —Noneに設定されている場合、safetensors の重みが利用可能であり かつ safetensors ライブラリがインストールされている場合に、safetensors の重みがダウンロードされます。Trueに設定されている場合、モデルは safetensors の重みから強制的に読み込まれます。Falseに設定されている場合、safetensors の重みは読み込まれません。 - use_onnx (
bool、省略可能、デフォルトはNone) —Trueに設定すると、ONNX ウェイトが存在する場合に常にダウンロードされます。Falseに設定すると、ONNX ウェイトはダウンロードされません。デフォルトではuse_onnxは_is_onnxクラス属性の値をデフォルトとし、非 ONNX パイプラインではFalse、ONNX パイプラインではTrueになります。ONNX ウェイトには、.onnxおよび.pbで終わるファイルの両方が含まれます。 - kwargs (残りのキーワード引数の辞書、任意) —
ロードおよびセーブ可能な変数(特定のパイプラインクラスのコンポーネント)を上書きするために使用できます。上書きされたコンポーネントは、パイプラインの
__init__メソッドに直接渡されます。詳細は以下の例を参照してください。 - variant (
str、省略可) —"fp16"や"ema"のような指定されたバリアントファイル名から重みをロードします。 - disable_mmap (‘bool’, 任意、デフォルトは ‘False’) — Safetensors モデルの読み込み時に mmap を無効にするかどうか。モデルがネットワークマウントやハードドライブ上にあり、mmap のランダムアクセス(seek)を適切に処理できない可能性がある場合、このオプションを有効にするとパフォーマンスが向上する場合があります。
事前学習済みのパイプライン重みから、PyTorchの拡散パイプラインをインスタンス化します。
パイプラインはデフォルトで評価モード(model.eval())に設定されます。
以下のエラーメッセージが表示された場合、下流タスク用に重みをファインチューニングする必要があります。
Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.> プライベートモデルやゲート付きモデルを使用するには、
hf > auth loginでログインしてください。
例:
>>> from diffusers import DiffusionPipeline
>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")
>>> # Download pipeline that requires an authorization token
>>> # For more information on access tokens, please refer to this section
>>> # of the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> # Use a different scheduler
>>> from diffusers import LMSDiscreteScheduler
>>> scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)
>>> pipeline.scheduler = scheduler以下の処理を実行するメソッドです:
- すべてのコンポーネントをオフロードします。
enable_model_cpu_offloadを使用した際に追加されたすべてのモデルフックを削除し、その後、それらを再度適用します。 モデルがオフロードされていない場合、この関数は何もしません。register_hook()で追加された場合、denoiser コンポーネントの状態付き diffusers フックをリセットします。
__call__ 関数の末尾にこの関数を追加してください。これにより、enable_model_cpu_offload を適用した際に正しく動作します。
NumPyの画像または画像のバッチをPIL画像に変換します。
enable_sequential_cpu_offload または enable_model_cpu_offload を使用して追加されたすべてのフックを削除します。
デバイスマップ(存在する場合)を None にリセットします。
save_pretrained
< source >( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = Falseuse_flashpack: 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"など)を続ける必要があります。整数で指定する場合は、単位はバイトです。なお、diffusersの最新バージョンへのアップグレードをユーザーに促すため、2024 年 10 月以降、一定期間後にこの上限値が引き下げられます。これは、Hugging Face エコシステム内の異なるライブラリ(例えばtransformersやaccelerateなど)間で、この引数の共通のデフォルトサイズを確立するためのものです。 - push_to_hub (
bool、省略可、デフォルトはFalse) — モデルを保存した後、Hugging Face モデルハブにプッシュするかどうかを指定します。プッシュ先のリポジトリはrepo_idで指定できます(指定しない場合、save_directoryの名前があなたのネームスペース内でデフォルトとして使用されます)。 - kwargs (
Dict[str, Any]、省略可) — push_to_hub() メソッドに渡される追加のキーワード引数。
パイプラインの保存可能なすべての変数をディレクトリに保存します。パイプラインの変数は、そのクラスが保存メソッドと読み込みメソッドの両方を実装している場合に、保存および読み込みが可能です。パイプラインは、from_pretrained()クラスメソッドを使用して簡単に再読み込みできます。
diffusers.StableDiffusionMixin.enable_freeu
< source >( s1: floats2: floatb1: floatb2: float )
https://huggingface.co/papers/2309.11497 に記載されている FreeU メカニズムを有効にします。
スケーリング係数の後ろの接尾辞は、それらが適用されるステージを表しています。
Stable Diffusion v1、v2、Stable Diffusion XLなどの異なるパイプラインで良好に動作することが確認されている値の組み合わせについては、公式リポジトリを参照してください。
有効化されている場合、FreeUメカニズムを無効にします。
PushToHubMixin
Hugging Face Hub にモデル、スケジューラ、またはパイプラインをプッシュするための Mixin。
push_to_hub
< source >( repo_id: strcommit_message: str | None = Noneprivate: bool | None = Nonetoken: str | None = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: str | None = Nonesubfolder: str | None = None )
パラメータ
- repo_id (
str) — モデル、スケジューラ、またはパイプラインのファイルをプッシュするリポジトリの名前です。組織にプッシュする場合は、組織名を含める必要があります。repo_idはローカルディレクトリへのパスとしても指定できます。 - commit_message (
str, 省略可) — プッシュ時にコミットするメッセージ。デフォルトは"Upload {object}"です。 - private (
bool、省略可) — リポジトリをプライベートにするかどうか。None(デフォルト)の場合、組織のデフォルトがプライベートでない限り、リポジトリはパブリックになります。リポジトリが既に存在する場合、この値は無視されます。 - token (
str, 任意) — リモートファイルの HTTP ベアラ認証に使用するトークン。hf auth loginを実行した際に生成されるトークン(~/.huggingfaceに保存されます)。 - create_pr (
bool、省略可、デフォルトはFalse) — アップロードしたファイルを含む PR を作成するか、直接コミットするかどうかを指定します。 - safe_serialization (
bool、任意、デフォルトはTrue) — モデルの重みをsafetensors形式に変換するかどうかを指定します。 - variant (
str, 任意) — 指定した場合、重みはpytorch_model.<variant>.binの形式で保存されます。
モデル、スケジューラー、またはパイプラインのファイルを🤗 Hugging Face Hubにアップロードします。
例:
from diffusers import UNet2DConditionModel
unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")
# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")
# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")コールバック
class diffusers.callbacks.PipelineCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
パイプラインで使用されるすべての公式コールバックの基底クラスです。このクラスは、カスタムコールバックを実装するための構造を提供し、すべてのコールバックが一貫したインターフェースを持つことを保証します。
以下を実装してください: tensor_inputs: これは、あなたのコールバックに固有のテンソル入力のリストを返す必要があります。パイプラインクラスの ._callback_tensor_inputs 属性にリストされている変数のみを含めることができます。 callback_fn: このメソッドは、あなたのコールバックのコア機能を定義します。
class diffusers.callbacks.SDCFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Stable Diffusion パイプライン用のコールバック関数。cutoff_step_ratio または cutoff_step_index で設定された一定のステップ数に達した後、このコールバックは CFG を無効にします。
注: このコールバックは、cutoffステップ以降に_guidance_scale属性を0.0に変更することで、パイプラインを変更します。
class diffusers.callbacks.SDXLCFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
ベースの Stable Diffusion XL パイプライン用のコールバック関数です。cutoff_step_ratio または cutoff_step_index で設定された一定のステップ数に達した後、このコールバックは CFG を無効にします。
注: このコールバックは、cutoffステップ以降に_guidance_scale属性を0.0に変更することで、パイプラインを変更します。
class diffusers.callbacks.SDXLControlnetCFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Controlnet Stable Diffusion XL パイプライン用のコールバック関数。cutoff_step_ratio または cutoff_step_index で設定された一定のステップ数に達した後、このコールバックは CFG を無効にします。
注: このコールバックは、cutoffステップ以降に_guidance_scale属性を0.0に変更することで、パイプラインを変更します。
class diffusers.callbacks.IPAdapterScaleCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
IPAdapterMixin を継承するすべてのパイプライン用のコールバック関数です。cutoff_step_ratio または cutoff_step_index で設定された一定のステップ数に達した後、このコールバックは IP Adapter のスケールを 0.0 に設定します。
注: このコールバックは、cutoffステップ後にスケールを0.0に設定することで、IP Adapterのattentionプロセッサを変更します。
class diffusers.callbacks.SD3CFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Stable Diffusion 3 パイプライン用のコールバック関数。cutoff_step_ratio または cutoff_step_index で設定された一定のステップ数に達した後、このコールバックは CFG を無効にします。
注: このコールバックは、cutoffステップ以降に_guidance_scale属性を0.0に変更することで、パイプラインを変更します。