Diffusers documentation

スケジューラー

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

スケジューラー

🤗 Diffusers は、拡散プロセス用の多くのスケジューラ関数を提供しています。スケジューラは、モデルの出力(拡散プロセスが反復処理しているサンプル)とタイムステップを受け取り、ノイズ除去されたサンプルを返します。タイムステップは、拡散プロセス内のどの位置でステップが行われるかを決定するため重要です。データは n ステップのタイムステップを前方に反復することで生成され、推論はタイムステップを後方へ伝播させることで行われます。タイムステップに基づいて、スケジューラは 離散型(この場合、タイムステップは int)または 連続型(この場合、タイムステップは float)のいずれかになります。

コンテキストに応じて、スケジューラは画像に反復的にノイズを追加する方法、またはモデルの出力に基づいてサンプルを更新する方法を定義します。

  • 学習中、スケジューラーはサンプルにノイズを追加して拡散モデルを学習します(ノイズの追加方法にはさまざまなアルゴリズムがあります)。
  • 推論時、スケジューラは事前学習済みモデルの出力に基づいてサンプルを更新する方法を定義します。

k-diffusion ライブラリ(Katherine Crowson 氏による)から実装されたスケジューラーが多く、A1111 でも広く使用されています。k-diffusion や A1111 のスケジューラーを 🤗 Diffusers のスケジューラーに対応させるために、以下の表を参照してください。

A1111/k-diffusion🤗 Diffusers使用方法
DPM++ 2MDPMSolverMultistepScheduler
DPM++ 2M KarrasDPMSolverMultistepScheduleruse_karras_sigmas=True で初期化
DPM++ 2M SDEDPMSolverMultistepScheduleralgorithm_type="sde-dpmsolver++" で初期化
DPM++ 2M SDE KarrasDPMSolverMultistepScheduleruse_karras_sigmas=True および algorithm_type="sde-dpmsolver++" で初期化します
DPM++ 2S aN/ADPMSolverSinglestepScheduler と非常に似ています
DPM++ 2S a KarrasN/ADPMSolverSinglestepScheduler(use_karras_sigmas=True, ...) と非常に似ています
DPM++ SDEDPMSolverSinglestepScheduler
DPM++ SDE KarrasDPMSolverSinglestepScheduleruse_karras_sigmas=True で初期化
DPM2KDPM2DiscreteScheduler
DPM2 KarrasKDPM2DiscreteScheduleruse_karras_sigmas=True で初期化
DPM2 aKDPM2AncestralDiscreteScheduler
DPM2 a KarrasKDPM2AncestralDiscreteScheduleruse_karras_sigmas=True で初期化
DPM 適応N/A
DPM fastN/A
EulerEulerDiscreteScheduler
Euler aEulerAncestralDiscreteScheduler
HeunHeunDiscreteScheduler
LMSLMSDiscreteScheduler
LMS KarrasLMSDiscreteScheduleruse_karras_sigmas=True で初期化
N/ADEISMultistepScheduler
N/AUniPCMultistepScheduler

ノイズスケジュールとスケジュールの種類

A1111/k-diffusion🤗 Diffusers
Karrasuse_karras_sigmas=True で初期化
sgm_uniformtimestep_spacing="trailing" で初期化
シンプルtimestep_spacing="trailing" で初期化
指数timestep_spacing="linspace"、use_exponential_sigmas=True で初期化します
betatimestep_spacing="linspace"、use_beta_sigmas=True で初期化します

すべてのスケジューラーは、すべてのスケジューラーで共有される低レベルのユーティリティを実装するベースクラスである SchedulerMixin から構築されています。

SchedulerMixin

class diffusers.SchedulerMixin

< >

( )

すべてのスケジューラの基底クラス。

SchedulerMixin には、すべてのスケジューラーで共有される一般的な読み込みや保存などの機能が含まれています。

ConfigMixinは、スケジューラの__init__関数に渡される設定属性(num_train_timestepsなど)の保存を管理し、これらの属性はscheduler.config.num_train_timestepsによってアクセスできます。

クラス属性:

  • _compatibles (list[str]) — 親スケジューラクラスと互換性のあるスケジューラクラスのリスト。from_config() を使用して、別の互換スケジューラクラスを読み込みます(親クラスでオーバーライドされるべきです)。

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike | None = Nonesubfolder: str | None = Nonereturn_unused_kwargs: bool = False**kwargs: Any ) → SchedulerMixin or tuple[SchedulerMixin, dict[str, Any]]

パラメータ

  • pretrained_model_name_or_path (str または os.PathLike, 省略可) — 次のいずれかです:
    • Hub にホストされている事前学習済みモデルの model id(例: google/ddpm-celebahq-256)を表す文字列。
    • save_pretrained() で保存されたスケジューラの設定を含むディレクトリ(例: ./my_model_directory)へのパス。
  • subfolder (str、省略可) — Hub またはローカル上のより大きなモデルリポジトリ内における、モデルファイルのサブフォルダの場所です。
  • return_unused_kwargs (bool、省略可能、デフォルトはFalse) — Python クラスによって消費されない kwargs を返すかどうかを指定します。
  • cache_dir (str または os.PathLike、省略可) — 標準のキャッシュを使用しない場合、ダウンロードした事前学習済みモデルの構成がキャッシュされるディレクトリのパス。
  • force_download (bool、任意、デフォルトは False) — モデルの重みおよび設定ファイルを(再)ダウンロードすることを強制するかどうか。キャッシュされたバージョンが存在する場合でも、それらを無視してダウンロードします。
  • proxies (dict[str, str]、省略可) — プロトコルまたはエンドポイントごとに使用するプロキシサーバーの辞書です。例えば、{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'} のように指定します。各リクエストでこれらのプロキシが使用されます。
  • output_loading_info (bool、省略可、デフォルトはFalse) — 欠落キー、予期しないキー、エラーメッセージを含む辞書を返すかどうかを指定します。
  • local_files_only (bool、任意、デフォルトは False) — ローカルのモデル重みと設定ファイルのみを読み込むかどうかを指定します。True に設定すると、モデルは Hub からダウンロードされません。
  • token (str または bool、省略可) — リモートファイルの HTTP ベアラ認証に使用するトークンです。True の場合、diffusers-cli login で生成されたトークン(~/.huggingface に保存)が使用されます。
  • revision (str、任意、デフォルトは"main") — 使用する特定のモデルのバージョンです。ブランチ名、タグ名、コミット ID、または Git によって許可される任意の識別子を使用できます。

戻り値

SchedulerMixin または tuple[SchedulerMixin, dict[str, Any]]

設定からインスタンス化されたスケジューラ。return_unused_kwargsがTrueの場合、タプルが返され、その第2要素は未使用のキーワード引数の辞書になります。

ローカルディレクトリまたは Hub リポジトリにある事前定義済みの JSON 設定ファイルから、スケジューラーをインスタンス化します。

> プライベートモデルやゲート付きモデルを使用するには、hf > auth loginでログインしてください。また、ファイアウォールが設定された環境でこの方法を使用するために、特別な> 「オフラインモード」を有効にすることもできます。

save_pretrained

< >

( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )

パラメータ

  • save_directory (str または os.PathLike) — 設定 JSON ファイルを保存するディレクトリ(存在しない場合は作成されます)。
  • push_to_hub (bool、省略可能、デフォルトはFalse) — モデルを保存した後に Hugging Face Hub にプッシュするかどうかを指定します。プッシュ先のリポジトリはrepo_idで指定できます(デフォルトでは、あなたのネームスペース内のsave_directoryの名前が使用されます)。
  • kwargs (dict[str, Any]、省略可) — push_to_hub() メソッドに渡される追加のキーワード引数。

スケジューラの設定オブジェクトをディレクトリに保存し、from_pretrained()クラスメソッドを使って再読み込みできるようにします。

SchedulerOutput

class diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

パラメータ

  • prev_sample(画像の場合、torch.Tensor、形状 (batch_size, num_channels, height, width)) — 前のタイムステップの計算済みサンプル (x_{t-1})。prev_sample は、デノイジングループにおける次のモデル入力として使用します。

スケジューラーのstep関数の出力の基底クラス。

KarrasDiffusionSchedulers

KarrasDiffusionSchedulers は、🤗 Diffusers のスケジューラーの広範な一般化です。このクラスのスケジューラーは、ノイズサンプリング戦略、ネットワークの種類とスケーリング、学習戦略、および損失の重み付け方法によって、高レベルで区別されます。

このクラスに含まれる各種スケジューラは、常微分方程式(ODE)ソルバの種類に応じて、上記の分類体系に属し、🤗 Diffusers に実装されている主要なスケジューラの設計において優れた抽象化を提供します。このクラスのスケジューラはこちらで確認できます。

PushToHubMixin

class diffusers.utils.PushToHubMixin

< >

( )

Hugging Face Hub にモデル、スケジューラ、またはパイプラインをプッシュするための Mixin。

push_to_hub

< >

( 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")
Update on GitHub