Diffusers documentation

MiniMaxH3Scheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
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 = None )

パラメータ

  • 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 になります。

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 が返されます。

MiniMaxH3SchedulerOutput

class diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput

< >

( prev_sample: FloatTensor )

パラメータ

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

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

Update on GitHub