Diffusers 文件

CosineDPMSolverMultistepScheduler

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

CosineDPMSolverMultistepScheduler

CosineDPMSolverMultistepSchedulerDPMSolverMultistepScheduler 的一個變體,採用 Nichol 和 Dhariwal (2021) 提出的餘弦排程。它被用於 Stable Audio Open 論文和 Stability-AI/stable-audio-tool 程式碼庫中。

此排程器由 Yoach Lacombe 貢獻。

CosineDPMSolverMultistepScheduler

class diffusers.CosineDPMSolverMultistepScheduler

< >

( sigma_min: float = 0.3 sigma_max: float = 500 sigma_data: float = 1.0 sigma_schedule: str = 'exponential' num_train_timesteps: int = 1000 solver_order: int = 2 prediction_type: str = 'v_prediction' rho: float = 7.0 solver_type: str = 'midpoint' lower_order_final: bool = True euler_at_final: bool = False final_sigmas_type: typing.Optional[str] = 'zero' )

引數

  • sigma_min (float, 可選, 預設為 0.3) — sigma 排程中的最小噪聲幅度。在 Stable Audio Open [1] 中此值設定為 0.3。
  • sigma_max (float, 可選, 預設為 500) — sigma 排程中的最大噪聲幅度。在 Stable Audio Open [1] 中此值設定為 500。
  • sigma_data (float, 可選, 預設為 1.0) — 資料分佈的標準差。在 Stable Audio Open [1] 中此值設定為 1.0。
  • sigma_schedule (str, 可選, 預設為 exponential) — 用於計算 sigmas 的 sigma 排程。預設情況下,我們使用 EDM 論文 (https://huggingface.co/papers/2206.00364) 中引入的排程。另一個可接受的值是 “exponential”。指數排程被整合到這個模型中:https://huggingface.co/stabilityai/cosxl
  • num_train_timesteps (int, 預設為 1000) — 用於訓練模型的擴散步數。
  • solver_order (int, 預設為 2) — DPMSolver 階數,可以是 12。建議使用 solver_order=2
  • prediction_type (str, 預設為 v_prediction, 可選) — 排程器函式的預測型別;可以是 epsilon(預測擴散過程的噪聲),sample(直接預測噪聲樣本)或 v_prediction(參見 Imagen Video 論文的 2.4 節)。
  • solver_type (str, 預設為 midpoint) — 二階求解器的求解器型別;可以是 midpointheun。求解器型別對樣本質量略有影響,特別是對於少量步驟。建議使用 midpoint 求解器。
  • lower_order_final (bool, 預設為 True) — 是否在最後幾步中使用低階求解器。僅適用於小於 15 個推理步驟。這可以穩定 DPMSolver 在小於 15 個步驟(特別是小於等於 10 個步驟)的取樣。
  • euler_at_final (bool, 預設為 False) — 是否在最後一步使用尤拉法。這是數值穩定性和細節豐富度之間的權衡。這可以穩定 DPMSolver 的 SDE 變體在少量推理步驟下的取樣,但有時可能導致模糊。
  • final_sigmas_type (str, 預設為 "zero") — 取樣過程中噪聲排程的最終 sigma 值。如果為 "sigma_min",則最終 sigma 與訓練排程中的最後一個 sigma 相同。如果為 zero,則最終 sigma 設定為 0。

實現了帶有餘弦排程的 DPMSolverMultistepScheduler 變體,由 Nichol 和 Dhariwal (2021) 提出。此排程器在 Stable Audio Open [1] 中使用。

[1] Evans, Parker, et al. “Stable Audio Open” https://huggingface.co/papers/2407.14358

此模型繼承自 SchedulerMixinConfigMixin。檢視超類文件以瞭解庫為所有排程器實現的通用方法,例如載入和儲存。

convert_model_output

< >

( model_output: Tensor sample: Tensor = None ) torch.Tensor

引數

  • model_output (torch.Tensor) — 學習到的擴散模型的直接輸出。
  • sample (torch.Tensor) — 擴散過程建立的樣本的當前例項。

返回

torch.Tensor

轉換後的模型輸出。

將模型輸出轉換為 DPMSolver/DPMSolver++ 演算法所需的相應型別。DPM-Solver 旨在離散化噪聲預測模型的積分,而 DPM-Solver++ 旨在離散化資料預測模型的積分。

演算法和模型型別是解耦的。噪聲預測模型和資料預測模型都可以使用DPMSolver或DPMSolver++。

dpm_solver_first_order_update

< >

( model_output: Tensor sample: Tensor = None noise: typing.Optional[torch.Tensor] = None ) torch.Tensor

引數

  • model_output (torch.Tensor) — 學習到的擴散模型的直接輸出。
  • sample (torch.Tensor) — 擴散過程建立的樣本的當前例項。

返回

torch.Tensor

上一個時間步的樣本張量。

一階DPMSolver(等同於DDIM)的一個步驟。

multistep_dpm_solver_second_order_update

< >

( model_output_list: typing.List[torch.Tensor] sample: Tensor = None noise: typing.Optional[torch.Tensor] = None ) torch.Tensor

引數

  • model_output_list (List[torch.Tensor]) — 學習到的擴散模型在當前和後續時間步的直接輸出。
  • sample (torch.Tensor) — 擴散過程建立的樣本的當前例項。

返回

torch.Tensor

上一個時間步的樣本張量。

二階多步DPMSolver的一個步驟。

scale_model_input

< >

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

引數

  • sample (torch.Tensor) — 輸入樣本。
  • timestep (int, 可選) — 擴散鏈中的當前時間步。

返回

torch.Tensor

一個縮放後的輸入樣本。

確保與需要根據當前時間步縮放去噪模型輸入的排程器可互換。透過 (sigma**2 + 1) ** 0.5 縮放去噪模型輸入以匹配尤拉演算法。

set_begin_index

< >

( begin_index: int = 0 )

引數

  • begin_index (int) — 排程器的起始索引。

設定排程器的起始索引。此函式應在推理之前從管道中執行。

set_timesteps

< >

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

引數

  • num_inference_steps (int) — 使用預訓練模型生成樣本時使用的擴散步數。
  • device (strtorch.device, 可選) — 時間步應該移動到的裝置。如果為 None,則時間步不移動。

設定用於擴散鏈的離散時間步(在推理之前執行)。

步驟

< >

( model_output: Tensor timestep: typing.Union[int, torch.Tensor] sample: Tensor generator = None return_dict: bool = True ) SchedulerOutputtuple

引數

  • model_output (torch.Tensor) — 學習到的擴散模型的直接輸出。
  • timestep (int) — 擴散鏈中的當前離散時間步。
  • sample (torch.Tensor) — 由擴散過程建立的樣本的當前例項。
  • generator (torch.Generator, 可選) — 隨機數生成器。
  • return_dict (bool) — 是否返回 SchedulerOutputtuple

返回

排程器輸出tuple

如果 `return_dict` 為 `True`,則返回 SchedulerOutput,否則返回一個元組,其中第一個元素是樣本張量。

透過反轉 SDE 預測前一個時間步的樣本。此函式使用多步 DPMSolver 傳播樣本。

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 函式輸出的基類。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.