Schedulers¶
mlx_diffuser.schedulers.Scheduler
¶
Abstract base. Subclasses implement the four core methods below.
Source code in src/mlx_diffuser/schedulers/base.py
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | |
add_noise(x0, noise, t)
¶
Forward process: corrupt x0 with noise at timestep t.
Source code in src/mlx_diffuser/schedulers/base.py
88 89 90 | |
get_target(x0, noise, t)
¶
The quantity the network is trained to predict (per prediction_type).
Source code in src/mlx_diffuser/schedulers/base.py
92 93 94 | |
sample_timesteps(batch_size, key)
¶
Draw a batch of training timesteps in this scheduler's convention.
Source code in src/mlx_diffuser/schedulers/base.py
84 85 86 | |
scale_model_input(sample, t)
¶
Optional pre-network input scaling (identity unless overridden).
Source code in src/mlx_diffuser/schedulers/base.py
107 108 109 | |
set_begin_index(begin_index)
¶
Start sampling partway through the configured schedule.
Image/video-to-X pipelines use this after adding noise to encoded input latents. Keeping the step cursor on the scheduler avoids pipeline code reaching into scheduler internals.
Source code in src/mlx_diffuser/schedulers/base.py
111 112 113 114 115 116 117 118 119 120 121 122 123 124 | |
set_timesteps(num_inference_steps)
¶
Configure the inference timestep grid (descending) and reset state.
Source code in src/mlx_diffuser/schedulers/base.py
97 98 99 | |
step(model_output, t, sample, key=None)
¶
Take one reverse step, returning the previous (less-noisy) sample.
Source code in src/mlx_diffuser/schedulers/base.py
101 102 103 104 105 | |
mlx_diffuser.schedulers.DDPMScheduler
¶
Bases: Scheduler
Source code in src/mlx_diffuser/schedulers/ddpm.py
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | |
predict_x0(model_output, t, sample)
¶
Recover predicted clean sample x0 from the network output.
Source code in src/mlx_diffuser/schedulers/ddpm.py
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | |
mlx_diffuser.schedulers.DDIMScheduler
¶
Bases: DDPMScheduler
Source code in src/mlx_diffuser/schedulers/ddim.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | |
mlx_diffuser.schedulers.EulerDiscreteScheduler
¶
Bases: DDPMScheduler
Source code in src/mlx_diffuser/schedulers/euler.py
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | |
init_noise_sigma
property
¶
Std-dev for the initial latent noise (matches diffusers EulerDiscrete).
add_noise_sigma(x0, noise, sigma)
¶
VE-style corruption used by img2img-style sampling starts.
Source code in src/mlx_diffuser/schedulers/euler.py
88 89 90 | |
mlx_diffuser.schedulers.FlowMatchEulerScheduler
¶
Bases: Scheduler
Source code in src/mlx_diffuser/schedulers/flow_match_euler.py
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | |
set_sigmas(sigmas)
¶
Drive the integrator from an externally-computed sigma schedule (FLUX / SD3).
sigmas is the descending list of flow times in [0, 1] (one per step, high
noise first); a terminal 0 is appended automatically. The model is conditioned
on each sigma directly. Used by pipelines that compute a resolution-dependent
(mu-shifted) schedule themselves rather than the static-shift default.
Source code in src/mlx_diffuser/schedulers/flow_match_euler.py
68 69 70 71 72 73 74 75 76 77 78 79 | |
mlx_diffuser.schedulers.load_scheduler(path)
¶
Load a scheduler from a directory containing config.json.
The concrete class is selected from the config's _class_name tag written
at save time, falling back to DDPM when absent.
Source code in src/mlx_diffuser/schedulers/__init__.py
25 26 27 28 29 30 31 32 33 34 35 36 37 | |