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 | |
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_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
24 25 26 27 28 29 30 31 32 33 34 35 36 | |