Diffusers documentation

FlowMatchEulerDiscreteScheduler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

FlowMatchEulerDiscreteScheduler

FlowMatchEulerDiscreteScheduler は、Stable Diffusion 3 で導入された flow-matching サンプリングに基づいています。

FlowMatchEulerDiscreteScheduler

class diffusers.FlowMatchEulerDiscreteScheduler

< >

( num_train_timesteps: int = 1000shift: float = 1.0use_dynamic_shifting: bool = Falsebase_shift: float | None = 0.5max_shift: float | None = 1.15base_image_seq_len: int = 256max_image_seq_len: int = 4096invert_sigmas: bool = Falseshift_terminal: float = Noneuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falsetime_shift_type: typing.Literal['exponential', 'linear'] = 'exponential'stochastic_sampling: bool = False )

パラメータ

  • num_train_timesteps (int、デフォルト値は 1000) — モデルを学習するための拡散ステップ数。
  • shift (float、デフォルト値: 1.0) — タイムステップスケジュールのシフト値です。
  • use_dynamic_shifting (bool、デフォルトは False) — 画像の解像度に基づいて、タイムステップシフトをオンザフライで適用するかどうかを指定します。
  • base_shift (float、デフォルト値: 0.5) — 画像生成を安定させるための値です。base_shift を大きくすると、ばらつきが減少し、望ましい出力に一致した画像が生成されます。
  • max_shift (float、デフォルト値は 1.15) — 潜在ベクトルに許可される値の変化量です。max_shift を大きくすると、より多くのバリエーションが促され、画像がより誇張されたり、スタイライズされたりする可能性があります。
  • base_image_seq_len (int、デフォルト値は 256) — ベース画像シーケンスの長さです。
  • max_image_seq_len (int、デフォルト値は 4096) — 画像シーケンスの最大長です。
  • invert_sigmas (bool、デフォルトは False) — シグマを反転するかどうか。
  • shift_terminal (float、デフォルトは None) — シフトされたタイムステップスケジュールの終了値です。
  • use_karras_sigmas (bool、デフォルトは False) — サンプリング中のノイズスケジュールにおけるステップサイズに、Karras シグマを使用するかどうかを指定します。
  • use_exponential_sigmas (bool、デフォルトは False) — サンプリング中のノイズスケジュールにおけるステップサイズに、指数関数的なシグマを使用するかどうかを指定します。
  • use_beta_sigmas (bool、デフォルトは False) — サンプリング時のノイズスケジュールにおけるステップサイズにベータシグマを使用するかどうかを指定します。
  • time_shift_type (str、デフォルトは “exponential”) — 適用する動的な解像度依存のタイムステップシフトの種類。“exponential” または “linear” のいずれかです。
  • stochastic_sampling (bool、デフォルトは False) — 確率的サンプリングを使用するかどうか。

Euler スケジューラ。

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

index_for_timestep

< >

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

パラメータ

  • timestep (float または torch.FloatTensor) — インデックスを特定するためのタイムステップ。
  • schedule_timesteps (torch.FloatTensor、任意) — 検証に使用するスケジュールのタイムステップです。None の場合、スケジューラーのタイムステップが使用されます。

戻り値

int

タイムステップのインデックス。

与えられたタイムステップのインデックスを取得します。

scale_noise

< >

( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: typing.Optional[torch.FloatTensor] = None ) → torch.FloatTensor

パラメータ

  • sample (torch.FloatTensor) — 入力サンプルです。
  • timestep (torch.FloatTensor) — 拡散チェーンにおける現在のタイムステップです。
  • noise (torch.FloatTensor) — ノイズテンソルです。

戻り値

torch.FloatTensor

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

フローマッチングにおけるフォワードプロセス

set_begin_index

< >

( begin_index: int = 0 )

パラメータ

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

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

set_shift

< >

( shift: float )

パラメータ

  • shift (float) — 設定するシフト値です。

スケジューラーのシフト値を設定します。

set_timesteps

< >

( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: list[float] | None = Nonemu: float | None = Nonetimesteps: list[float] | None = None )

パラメータ

  • num_inference_steps (int, 任意) — 事前学習済みモデルでサンプルを生成する際に使用する拡散ステップ数です。
  • device (str または torch.device、省略可) — timesteps を移動先とするデバイスです。None の場合、timesteps は移動されません。
  • sigmas (list[float]、任意) — 各拡散ステップで使用するシグマの自定义値。None の場合、シグマは自動的に計算されます。
  • mu (float, 省略可) — 解像度依存のタイムステップシフトを実行する際に、シグマに適用されるシフト量を決定します。
  • timesteps (list[float]、任意) — 各拡散ステップで使用する timesteps のカスタム値。None の場合、timesteps は自動的に計算されます。

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

ステップ

< >

( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Noneper_token_timesteps: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → FlowMatchEulerDiscreteSchedulerOutput or tuple

パラメータ

  • model_output (torch.FloatTensor) — 学習済み拡散モデルからの直接の出力です。
  • timestep (float) — 拡散チェーンにおける現在の離散タイムステップ。
  • sample (torch.FloatTensor) — 拡散プロセスによって生成されたサンプルの現在のインスタンスです。
  • s_churn (float) —
  • s_tmin (float) —
  • s_tmax (float) —
  • s_noise (float、デフォルト値: 1.0) — サンプルに追加されるノイズのスケール係数。
  • generator (torch.Generator、任意) — 乱数生成器です。
  • per_token_timesteps (torch.Tensor, 省略可) — サンプル内の各トークンに対するタイムステップです。
  • return_dict (bool、デフォルトは True) — FlowMatchEulerDiscreteSchedulerOutput を返すか、タプルを返すかを指定します。

戻り値

FlowMatchEulerDiscreteSchedulerOutput または tuple

True の場合、FlowMatchEulerDiscreteSchedulerOutput が返され、それ以外の場合は、最初の要素がサンプルテンソルであるタプルが返されます。

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

stretch_shift_to_terminal

< >

( t: Tensor ) → torch.Tensor

パラメータ

  • t (torch.Tensor) — 伸縮およびシフトの対象となるタイムステップのテンソル。

戻り値

torch.Tensor

最終値がself.config.shift_terminalに等しくなるよう調整されたタイムステップのテンソル。

shift_terminal 設定値で終了するように、タイムステップスケジュールを伸縮およびシフトします。

参照: https://github.com/Lightricks/LTX-Video/blob/a01a171f8fe3d99dce2728d60a73fecf4d4238ae/ltx_video/schedulers/rf.py#L51

time_shift

< >

( mu: floatsigma: floatt: Tensor ) → torch.Tensor

パラメータ

  • mu (float) — タイムシフト用の mu パラメータです。
  • sigma (float) — タイムシフト用の sigma パラメータです。
  • t (torch.Tensor) — 入力タイムステップです。

戻り値

torch.Tensor

時間シフトされたタイムステップ。

シグマに時間シフトを適用します。

Update on GitHub