Diffusers documentation

KDPM2AncestralDiscreteScheduler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

KDPM2AncestralDiscreteScheduler

祖先サンプリングを用いたKDPM2DiscreteSchedulerは、拡散ベースの生成モデルの設計空間の解明論文に着想を得ており、このスケジューラはKatherine Crowson氏によって移植・作成されました。

元のコードベースはcrowsonkb/k-diffusionで確認できます。

KDPM2AncestralDiscreteScheduler

class diffusers.KDPM2AncestralDiscreteScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falseprediction_type: str = 'epsilon'timestep_spacing: str = 'linspace'steps_offset: int = 0 )

パラメータ

  • num_train_timesteps (int、デフォルト値は 1000) — モデルを学習するための拡散ステップ数。
  • beta_start (float、デフォルト値は 0.00085) — 推論の開始時の beta 値。
  • beta_end (float、デフォルト値は 0.012) — 最終的な beta 値。
  • beta_schedule (str、デフォルトは "linear") — ベータスケジュールです。ベータの範囲から、モデルのステップ処理に使用するベータのシーケンスへのマッピングを指定します。linear または scaled_linear から選択してください。
  • trained_betas (np.ndarray または list[float]、省略可) — beta_start と beta_end をバイパスして、ベータの配列を直接コンストラクタに渡すことができます。
  • use_karras_sigmas (bool、デフォルトは False) — サンプリング処理中のノイズスケジュールにおけるステップサイズに Karras sigmas を使用するかどうか。True の場合、ノイズレベルの列 {σi} に基づいて sigmas が決定されます。
  • use_exponential_sigmas (bool、デフォルトは False) — サンプリングプロセス中のノイズスケジュールにおけるステップサイズに、指数関数的なシグマを使用するかどうかを指定します。
  • use_beta_sigmas (bool, defaults to False) — Whether to use beta sigmas for step sizes in the noise schedule during the sampling process. Refer to Beta Sampling is All You Need for more information.
  • prediction_type (str, defaults to "epsilon") — Prediction type of the scheduler function; can be epsilon (predicts the noise of the diffusion process), sample (directly predicts the noisy sample) or v_prediction` (see section 2.4 of Imagen Video paper).
  • timestep_spacing (str、デフォルトは"linspace") — タイムステップをスケーリングする方法です。詳細については、一般的な拡散ノイズスケジュールとサンプルステップは欠陥があるの表2を参照してください。
  • steps_offset (int、デフォルト値は 0)— 一部のモデルファミリーで必要とされる、推論ステップに追加されるオフセットです。

ancestral sampling を用いた KDPM2DiscreteScheduler は、Elucidating the Design Space of Diffusion-Based Generative Models 論文の DPMSolver2 と Algorithm 2 に着想を得ています。

このモデルは SchedulerMixin および ConfigMixin を継承しています。読み込みや保存など、ライブラリがすべてのスケジューラに対して実装している汎用的なメソッドについては、スーパークラスのドキュメントを参照してください。

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor

パラメータ

  • original_samples (torch.Tensor) — ノイズが加えられる元のサンプルです。
  • noise (torch.Tensor) — 元のサンプルに追加するノイズのテンソル。
  • timesteps (torch.Tensor) — ノイズを追加するタイムステップ。スケジュールに基づいてノイズレベルを決定します。

戻り値

torch.Tensor

タイムステップスケジュールに従ってスケーリングされたノイズが加えられたノイズ付きサンプル。

指定されたタイムステップにおけるノイズスケジュールに従って、元のサンプルにノイズを追加します。

index_for_timestep

< >

( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int

パラメータ

  • timestep (float または torch.Tensor) — スケジュール内で検索するタイムステップの値。
  • schedule_timesteps (torch.Tensor、任意) — 検索対象となるタイムステップスケジュールです。None の場合、self.timesteps が使用されます。

戻り値

int

スケジュールにおけるタイムステップのインデックスです。最初のステップでは、スケジュールの途中で開始する場合(画像から画像への生成など)にシグマをスキップすることを避けるため、複数の一致が存在する場合は2番目のインデックスを返します。

与えられたタイムステップのタイムステップスケジュールにおけるインデックスを特定します。

scale_model_input

< >

( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → torch.Tensor

パラメータ

  • sample (torch.Tensor) — 入力サンプルです。
  • timestep (float または torch.Tensor) — 拡散チェーンにおける現在のタイムステップ。

戻り値

torch.Tensor

スケーリングされた入力サンプル。

現在のタイムステップに応じて、デノイジングモデルの入力をスケーリングする必要があるスケジューラーとの相互運用性を保証します。

set_begin_index

< >

( begin_index: int = 0 )

パラメータ

  • begin_index (int、デフォルトは0) — スケジューラの開始インデックスです。

スケジューラの開始インデックスを設定します。この関数は、推論の前にパイプラインから実行する必要があります。

set_timesteps

< >

( num_inference_steps: intdevice: typing.Union[str, torch.device, NoneType] = Nonenum_train_timesteps: int | None = None )

パラメータ

  • num_inference_steps (int) — 事前学習済みモデルでサンプルを生成する際に使用する拡散ステップの数。
  • device (str または torch.device、省略可) — timesteps を移動先とするデバイスです。None の場合、timesteps は移動されません。
  • num_train_timesteps (int、任意) — モデルの学習に使用される拡散ステップ数。None の場合、self.config.num_train_timesteps が使用されます。

拡散チェーンで使用される離散タイムステップを設定します(推論の実行前に実行する必要があります)。

ステップ

< >

( model_output: typing.Union[torch.Tensor, numpy.ndarray]timestep: typing.Union[float, torch.Tensor]sample: typing.Union[torch.Tensor, numpy.ndarray]generator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True )

パラメータ

  • model_output (torch.Tensor または np.ndarray) — 学習済み拡散モデルからの直接の出力です。
  • timestep (float または torch.Tensor) — 拡散チェーンにおける現在の離散タイムステップ。
  • sample (torch.Tensor または np.ndarray) — 拡散プロセスによって生成されたサンプルの現在のインスタンス。
  • generator (torch.Generator、任意) — 乱数生成器です。
  • return_dict (bool、デフォルトはTrue) — KDPM2AncestralDiscreteSchedulerOutputを返すか、タプルを返すかを指定します。

前のタイムステップのサンプルを、SDEを逆方向に適用することで予測します。この関数は、学習済みモデルの出力(多くの場合、予測されたノイズ)から拡散過程を伝播させます。

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関数の出力の基底クラス。

Update on GitHub