Diffusers documentation
HeliosScheduler
HeliosScheduler
HeliosScheduler は、Helios で導入されたピラミッド型フローマッチングサンプリングに基づいています。
HeliosScheduler
class diffusers.HeliosScheduler
< source >( 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 = []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
< source >( model_output: Tensor*argssample: Tensor = Nonesigma: Tensor = None**kwargs ) → torch.Tensor
モデルの出力を、UniPCアルゴリズムが要求する対応する型に変換します。
グローバルのtimestepsとsigmasを初期化します
各ステージのtimestepsを初期化します
multistep_uni_c_bh_update
< source >( 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
< source >( 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_timesteps
< source >( 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
< source >( mu: floatsigma: floatt: Tensor ) → torch.Tensor
シグマに時間シフトを適用します。
scheduling_helios
Update on GitHub