Buckets:

|
download
raw
6.62 kB
# MiniMaxH3Scheduler
`MiniMaxH3Scheduler` is the rectified-flow Euler scheduler (`eta = 0`) with an exponential sigma shift used by [MiniMax-H3](https://huggingface.co/MiniMaxAI), `sigma' = s * sigma / (1 + (s - 1) * sigma)`.
The MiniMax-H3 pipelines register **two** of them, because video and audio latents step down two different schedules inside a single transformer call per step: `scheduler` carries the video schedule (`shift=12.0` in the released checkpoints) and `audio_scheduler` the audio one (`shift=3.0`).
## MiniMaxH3Scheduler[[diffusers.MiniMaxH3Scheduler]]
#### diffusers.MiniMaxH3Scheduler[[diffusers.MiniMaxH3Scheduler]]
```python
diffusers.MiniMaxH3Scheduler(shift: float = 12.0)
```
[Source](https://github.com/huggingface/diffusers/blob/vr_14421/src/diffusers/schedulers/scheduling_minimax_h3.py#L60)
**Parameters:**
shift (`float`, defaults to `12.0`) : Exponential shift applied to the sigma grid, `sigma' = s*sigma / (1 + (s-1)*sigma)`. The released checkpoints use `12.0` for video latents and `3.0` for audio latents.
Rectified-flow Euler scheduler (`eta = 0`) with an exponential sigma shift, as used by MiniMax-H3.
#### index_for_timestep[[diffusers.MiniMaxH3Scheduler.index_for_timestep]]
```python
index_for_timestep(timestep: typing.Union[float, torch.Tensor])
```
[Source](https://github.com/huggingface/diffusers/blob/vr_14421/src/diffusers/schedulers/scheduling_minimax_h3.py#L172)
**Parameters:**
timestep (`float` or `torch.Tensor`) : A value taken from `self.timesteps`. The schedule is strictly increasing in `t`, so the match is unique.
**Returns:** `int`
The index of `timestep`.
Map a timestep value to its index in the schedule.
#### scale_noise[[diffusers.MiniMaxH3Scheduler.scale_noise]]
```python
scale_noise(sample: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], noise: FloatTensor)
```
[Source](https://github.com/huggingface/diffusers/blob/vr_14421/src/diffusers/schedulers/scheduling_minimax_h3.py#L193)
**Parameters:**
sample (`torch.FloatTensor`) : The clean sample `x_0`.
timestep (`float` or `torch.FloatTensor`) : The target time in `[0, 1]`; `1` returns `sample` unchanged.
noise (`torch.FloatTensor`) : The noise to mix in.
**Returns:** `torch.FloatTensor`
The noised sample.
Rectified-flow forward process, in MiniMax-H3's `t` convention: `x_t = t*x_0 + (1 - t)*noise`.
MiniMax-H3 uses this to noise its conditioning anchors, where `t` is the `noise_aug` level rather than a
schedule entry, so `timestep` is taken at face value and is *not* looked up in `self.timesteps`.
#### set_begin_index[[diffusers.MiniMaxH3Scheduler.set_begin_index]]
```python
set_begin_index(begin_index: int = 0)
```
[Source](https://github.com/huggingface/diffusers/blob/vr_14421/src/diffusers/schedulers/scheduling_minimax_h3.py#L100)
**Parameters:**
begin_index (`int`, defaults to `0`) : The begin index for the scheduler.
Sets the begin index for the scheduler.
#### set_shift[[diffusers.MiniMaxH3Scheduler.set_shift]]
```python
set_shift(shift: float)
```
[Source](https://github.com/huggingface/diffusers/blob/vr_14421/src/diffusers/schedulers/scheduling_minimax_h3.py#L110)
**Parameters:**
shift (`float`) : The exponential shift to use for the next schedule.
Overrides the configured sigma shift; call before [set_timesteps()](/docs/diffusers/pr_14421/en/api/schedulers/minimax_h3#diffusers.MiniMaxH3Scheduler.set_timesteps).
MiniMax-H3 exposes this per request as `flow_shift` (video) / `audio_flow_shift` (audio).
#### set_timesteps[[diffusers.MiniMaxH3Scheduler.set_timesteps]]
```python
set_timesteps(num_inference_steps: int | None = None, device: typing.Union[str, torch.device, NoneType] = None, sigmas: typing.Union[list[float], torch.Tensor, NoneType] = None)
```
[Source](https://github.com/huggingface/diffusers/blob/vr_14421/src/diffusers/schedulers/scheduling_minimax_h3.py#L124)
**Parameters:**
num_inference_steps (`int`, *optional*) : Number of sigma grid points, terminal `0` included. Ignored when `sigmas` is given.
device (`str` or `torch.device`, *optional*) : Device the schedule tensors are moved to. The grid itself is always built on CPU in float32 so the schedule does not depend on the accelerator.
sigmas (`list[float]` or `torch.Tensor`, *optional*) : A fully-formed sigma schedule, used verbatim (no shifting, no deduplication). It must be strictly decreasing and terminate at `0.0`.
Build the sigma / timestep schedule.
The grid is `linspace(1, 0, num_inference_steps)` pushed through the exponential shift, with consecutive
duplicates collapsed. The terminal `0` is already part of that grid — the shift maps `0` to exactly `0` — so
the schedule holds `num_inference_steps` sigmas and drives `num_inference_steps - 1` model evaluations, exposed
as `self.timesteps = 1 - sigmas[:-1]`.
#### step[[diffusers.MiniMaxH3Scheduler.step]]
```python
step(model_output: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], sample: FloatTensor, return_dict: bool = True)
```
[Source](https://github.com/huggingface/diffusers/blob/vr_14421/src/diffusers/schedulers/scheduling_minimax_h3.py#L223)
**Parameters:**
model_output (`torch.FloatTensor`) : The transformer's velocity prediction at `timestep`.
timestep (`float` or `torch.FloatTensor`) : The current timestep, one of `self.timesteps` (so `timestep == 1 - sigma`).
sample (`torch.FloatTensor`) : The current sample `x_t`.
return_dict (`bool`, defaults to `True`) : Whether to return a `MiniMaxH3SchedulerOutput` instead of a plain tuple.
**Returns:** `MiniMaxH3SchedulerOutput` or `tuple`
the sample for the next step.
Take one Euler (`eta = 0`) step.
The model output is a data-ward velocity, so the denoised estimate is `x0 = x_t + (1 - t) * v` — note the `+`,
the opposite of the usual flow-match convention. The update is then the blend `x_next = r*x_t + (1 - r)*x0`
with `r = sigma_next / sigma`, evaluated in float32 for half-precision samples.
## MiniMaxH3SchedulerOutput[[diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput]]
#### diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput[[diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput]]
```python
diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput(prev_sample: FloatTensor)
```
[Source](https://github.com/huggingface/diffusers/blob/vr_14421/src/diffusers/schedulers/scheduling_minimax_h3.py#L48)
**Parameters:**
prev_sample (`torch.FloatTensor`) : Computed sample `x_{t+1}` for the next step of the denoising loop.
Output class for the scheduler's `step` function output.

Xet Storage Details

Size:
6.62 kB
·
Xet hash:
c5ea68eab21d48da2eee190f430cb478fa1bacfe645512ca48cd6dce1d923480

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.