Diffusers documentation

MiniMaxH3Scheduler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

MiniMaxH3Scheduler

MiniMaxH3Scheduler は、MiniMax-H3 で使用される指数シグマシフト付きの rectified-flow Euler スケジューラー(eta = 0)であり、sigma' = s * sigma / (1 + (s - 1) * sigma) を用います。

MiniMax-H3のパイプラインでは、1ステップあたりの単一のtransformer呼び出し内で、動画と音声の潜在変数がそれぞれ異なるスケジュールに従ってステップダウンするため、2つが登録されます。schedulerは動画のスケジュール(公開されているチェックポイントではshift=12.0)を持ち、audio_schedulerは音声のスケジュール(shift=3.0)を持ちます。

MiniMaxH3Scheduler

クラス diffusers.MiniMaxH3Scheduler

< >

( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = Noneeuler_update_form: str = 'blend' )

パラメータ

  • shift (float、デフォルト値は 12.0) — sigma グリッドに適用される指数シフト、sigma' = s*sigma / (1 + (s-1)*sigma)。公開されているチェックポイントは、動画の潜在変数に 12.0、音声の潜在変数に 3.0 を使用しています。
  • stochastic_sampling (bool、デフォルトは False) — Euler ブレンドを、再ノイズ化更新に置き換えます。クリーンなサンプルを予測し、新しいノイズを用いて次の sigma まで再ノイズ化します。少数ステップの Pika H3 Flex アダプターはこの更新用に学習されていますが、ベースのチェックポイントはそうではありません。
  • shift_provided_sigmas (bool、省略可) — set_timesteps() に渡される明示的な sigmas が、スケジューラによってシフトされるベースグリッド(linspace グリッドと同様)であるか、それともそのまま使用される完成済みスケジュールであるかを指定します。未設定の場合は非推奨の警告とともにそのまま使用されます。0.44.0 以降、デフォルト値は True になります。
  • euler_update_form (str、デフォルトは "blend") — Euler 更新の評価方法です。"blend" は x_t / x0 のブレンド x_next = r*x_t + (1 - r)*x0 を指します。 "velocity" は x_next = x_t + (sigma - sigma_next) * v を指し、float32 で計算されます。これらは同じ更新であり、float32 の丸め誤差のみが異なります。MiniMax-H3-Image は velocity 形式で蒸留されています。

MiniMax-H3で使用される、指数関数的シグマシフトを備えたRectified-flow Eulerスケジューラ(eta = 0)。

index_for_timestep

< >

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

パラメータ

  • timestep (float または torch.Tensor) — self.timesteps から取得される値です。スケジュールは t に対して厳密に増加するため、一致は一意です。

戻り値

int

timestepのインデックス。

タイムステップの値をスケジュール内のインデックスにマッピングします。

scale_noise

< >

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

パラメータ

  • sample (torch.FloatTensor) — クリーンなサンプル x_0 です。
  • timestep (float または torch.FloatTensor) — [0, 1] 内の目標時刻です。1 を指定すると、sample は変更されずに返されます。
  • noise (torch.FloatTensor) — 混合するノイズ。

戻り値

torch.FloatTensor

ノイズが加えられたサンプル。

MiniMax-H3のtの規約におけるRectified-flowのフォワードプロセス: x_t = t*x_0 + (1 - t)*noise。

MiniMax-H3 は、この手法を用いて条件付けアンカーにノイズを付与します。ここで t はスケジュールのエントリではなく noise_aug レベルを指すため、timestep はそのままの値として扱われ、self.timesteps からの参照は行われません。

set_begin_index

< >

( begin_index: int = 0 )

パラメータ

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

スケジューラの開始インデックスを設定します。

set_shift

< >

( shift: float )

パラメータ

  • shift (float) — 次のスケジュールに使用する指数シフト。

設定済みのシグマシフトをオーバーライドします。set_timesteps()を呼び出す前に実行してください。

MiniMax-H3 は、これをリクエストごとに flow_shift(動画)/ audio_flow_shift(音声)として公開しています。

set_timesteps

< >

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

パラメータ

  • num_inference_steps (int, 任意) — シグマグリッドの点数です。終端の0を含みます。sigmasが指定されている場合は無視されます。
  • device (str または torch.device、省略可能) — スケジュールテンソルを移動先とするデバイスです。グリッド自体は常に CPU 上で float32 として構築されるため、スケジュールはアクセラレータに依存しません。
  • sigmas (list[float] または torch.Tensor、省略可) — 0.0 で終わる、厳密に減少する明示的なグリッドです。shift_provided_sigmas=True の場合、linspace グリッドと同様にシフトが適用される [0, 1] 内のベースグリッドとして扱われます。それ以外の場合は、そのまま使用されます(非推奨のデフォルト)。

sigma / timestep スケジュールを構築します。

グリッドは linspace(1, 0, num_inference_steps) を指数シフトに通したもの(連続する重複は圧縮されます)または明示的な sigmas であり、shift_provided_sigmas が設定されている場合も同様にシフトされます。終端の 0 はすでにグリッドの一部であり、シフトは 0 をちょうど 0 に写像するため、スケジュールは num_inference_steps 個のシグマを保持し、num_inference_steps - 1 回のモデル評価を駆動します。これは self.timesteps = 1 - sigmas[:-1] として公開されます。

ステップ

< >

( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → MiniMaxH3SchedulerOutput or tuple

パラメータ

  • model_output (torch.FloatTensor) — timestepにおけるtransformerの速度予測です。
  • timestep (float または torch.FloatTensor) — 現在のタイムステップ。self.timesteps のいずれかであり、timestep == 1 - sigma となります。
  • sample (torch.FloatTensor) — 現在のサンプル x_t。
  • generator (torch.Generator、省略可) — stochastic_sampling で新しいノイズをサンプリングする際に使用するジェネレーター。それ以外の場合は使用されません。
  • return_dict (bool、デフォルトはTrue) — MiniMaxH3SchedulerOutputを返すか、通常のタプルを返すかを指定します。

戻り値

MiniMaxH3SchedulerOutput または tuple

次のステップのサンプル。

Euler(eta = 0)ステップを1回実行するか、stochastic_samplingによる再ノイズ化ステップを1回実行します。

モデルの出力はデータ方向の速度であるため、ノイズ除去された推定値はx0 = x_t + (1 - t) * vとなります。ここで+に注意してください。これは通常の flow-match の規約とは逆の符号です。その後の更新は、r = sigma_next / sigmaを用いたブレンドx_next = r*x_t + (1 - r)*x0として行われ、半精度のサンプルに対しては float32 で評価されます。stochastic_samplingが有効な場合、更新はgeneratorから新しいノイズを用いたx_next = (1 - sigma_next) * x0 + sigma_next * noiseとなり、すべて float32 で計算されるため、最終ステップ(sigma_next = 0)ではx0が返されます。euler_update_form="velocity"の場合、同じ Euler 更新が float32 でx_next = x_t + (sigma - sigma_next) * vとして評価されます。

MiniMaxH3SchedulerOutput

class diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput

< >

( prev_sample: FloatTensor )

パラメータ

  • prev_sample (torch.FloatTensor) — デノイジングループの次のステップで使用する計算済みサンプル x_{t+1}。

スケジューラーのstep関数の出力用のクラス。

Update on GitHub