Diffusers documentation

HeliosScheduler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

HeliosScheduler

HeliosScheduler は、Helios で導入されたピラミッド型フローマッチングサンプリングに基づいています。

HeliosScheduler

class diffusers.HeliosScheduler

< >

( num_train_timesteps: int = 1000shift: float = 1.0stages: int = 3stage_range: list = [0, 0.3333333333333333, 0.6666666666666666, 1]gamma: float = 0.3333333333333333thresholding: bool = Falseprediction_type: str = 'flow_prediction'solver_order: int = 2predict_x0: bool = Truesolver_type: str = 'bh2'lower_order_final: bool = Truedisable_corrector: list[int] = []solver_p: SchedulerMixin = Noneuse_flow_sigmas: bool = Truescheduler_type: str = 'unipc'use_dynamic_shifting: bool = Falsetime_shift_type: typing.Literal['exponential', 'linear'] = 'exponential' )

convert_model_output

< >

( model_output: Tensor*argssample: Tensor = Nonesigma: Tensor = None**kwargs ) → torch.Tensor

パラメータ

  • model_output (torch.Tensor) — 学習済み拡散モデルからの直接の出力です。
  • timestep (int) — 拡散チェーンにおける現在の離散タイムステップ。
  • sample (torch.Tensor) — 拡散プロセスによって生成されたサンプルの現在のインスタンス。
  • sigma (torch.Tensor, 任意) — ノイズスケジュールにおける現在のステップのシグマです。

戻り値

torch.Tensor

変換後のモデルの出力。

モデルの出力を、UniPCアルゴリズムが要求する対応する型に変換します。

init_sigmas

< >

( )

グローバルのtimestepsとsigmasを初期化します

init_sigmas_for_each_stage

< >

( )

各ステージのtimestepsを初期化します

multistep_uni_c_bh_update

< >

( this_model_output: Tensor*argslast_sample: Tensor = Nonethis_sample: Tensor = Noneorder: int = Nonesigma_before: Tensor = Nonesigma: Tensor = None**kwargs ) → torch.Tensor

パラメータ

  • this_model_output (torch.Tensor) — x_t におけるモデルの出力です。
  • this_timestep (int) — 現在のタイムステップ t。
  • last_sample (torch.Tensor) — 最後の予測器 x_{t-1} による生成サンプル。
  • this_sample (torch.Tensor) — 最後の予測器 x_{t} 以降に生成されたサンプルです。
  • order (int) — このステップにおける UniC-p の p です。有効な精度の次数は order + 1 になるはずです。
  • sigma_before (torch.Tensor, 省略可) — ノイズスケジュールにおける前ステップの sigma です。
  • sigma (torch.Tensor, 任意) — ノイズスケジュールにおける現在のステップのシグマです。

戻り値

torch.Tensor

現在のタイムステップにおける修正済みサンプルテンソル。

UniC(B(h)版)の1ステップ。

multistep_uni_p_bh_update

< >

( model_output: Tensor*argssample: Tensor = Noneorder: int = Nonesigma: Tensor = Nonesigma_next: Tensor = None**kwargs ) → torch.Tensor

パラメータ

  • model_output (torch.Tensor) — 現在のタイムステップにおける学習済み拡散モデルからの直接の出力。
  • prev_timestep (int) — 拡散チェーンにおける直前の離散タイムステップ。
  • sample (torch.Tensor) — 拡散プロセスによって生成されたサンプルの現在のインスタンス。
  • order (int) — このタイムステップにおける UniP のオーダーです(UniPC-p の p に相当します)。
  • sigma (torch.Tensor, 任意) — ノイズスケジュールにおける現在のステップのシグマです。
  • sigma_next (torch.Tensor, 任意) — ノイズスケジュールにおける次のステップのシグマです。

戻り値

torch.Tensor

前のタイムステップのサンプルテンソル。

UniP(B(h)版)の1ステップ。または、指定されている場合はself.solver_pが使用されます。

set_begin_index

< >

( begin_index: int = 0 )

パラメータ

  • begin_index (int) — スケジューラの開始インデックス。

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

set_timesteps

< >

( num_inference_steps: intstage_index: int | None = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: bool | None = Nonemu: bool | None = Noneis_amplify_first_chunk: bool = False )

各ステージのtimestepsとsigmasの設定

time_shift

< >

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

パラメータ

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

戻り値

torch.Tensor

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

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

scheduling_helios

Update on GitHub