2. AYS (Align Your Steps) Scheduler
What It Does
Uses optimized timestep distributions that allow fewer sampling steps with same or better quality compared to uniform schedulers.
Key Insight
Not all timesteps contribute equally to image formation. AYS pre-computes optimal sigma schedules that focus more steps on critical noise levels.
Research Background
Based on "Align Your Steps: Optimizing Sampling Schedules in Diffusion Models" (2024) - https://research.nvidia.com/labs/toronto-ai/AlignYourSteps/ - Developed by NVIDIA researchers - Validated across SD1.5, SDXL, and other models
Performance
| Model | Normal Scheduler | AYS Scheduler | Quality |
|---|---|---|---|
| SD1.5 | 20 steps | 10 steps | Same/Better |
| SDXL | 20 steps | 10 steps | Same/Better |
| Flux | 15 steps | 8 steps | Same |
Usage
Via UI (Streamlit)
- Open Settings → Sampling
- Select scheduler: "AYS (Align Your Steps)"
- Reduce steps to 10 (SD1.5/SDXL) or 8 (Flux)
- Generate - same quality, 2x faster!
Programmatically
from src.sample import ksampler_util
# Using AYS scheduler
sigmas = ksampler_util.calculate_sigmas(
model_sampling,
scheduler_name="ays", # or "ays_sd15", "ays_sdxl", "ays_flux"
steps=10
)
Scheduler Variants
"ays"or"ays_sd15"- SD1.5 optimized (default)"ays_sdxl"- SDXL optimized"ays_flux"- Flux optimized (experimental)
Optimal Step Counts
Pre-computed optimal schedules exist for:
SD1.5: 4, 6, 8, 10, 12, 15, 20, 25 steps
SDXL: 4, 6, 8, 10, 12, 15, 20 steps
Flux: 4, 8, 10, 15, 20 steps
Other step counts use interpolation (slightly less optimal but still better than uniform).
Recommended Settings
SD1.5 Quick Generation
scheduler: "ays"
steps: 10 # instead of 20
sampler: "euler" or "dpmpp_2m_cfgpp"
cfg: 7.0
SDXL High Quality
scheduler: "ays_sdxl"
steps: 12 # instead of 20-25
sampler: "dpmpp_2m_cfgpp"
cfg: 6.0
Flux Fast Mode
scheduler: "ays_flux"
steps: 8 # instead of 15
sampler: "euler"
cfg: 3.5
Comparison: Uniform vs AYS
Uniform Distribution (normal scheduler):
Steps: 0 4 8 12 16 20
Sigmas evenly spaced → wastes compute on low-impact timesteps
AYS Distribution:
Steps: 0 2 5 8 12 17 20
Sigmas concentrated on critical noise levels → better efficiency
Technical Details
AYS schedules are pre-computed using optimization to minimize reconstruction error:
# Example SD1.5 10-step schedule
AYS_SD15_10 = [
14.6146, # High noise (early steps - image structure)
10.4708,
7.3688,
4.9651, # Mid noise (detail formation)
3.2924,
2.1391,
1.3633, # Low noise (fine details)
0.8437,
0.4898,
0.2279,
0.0 # Final step
]
Compare to uniform schedule:
# Normal scheduler @ 10 steps
NORMAL_10 = [14.6146, 11.3, 8.7, 6.7, 5.1, 3.9, 3.0, 2.3, 1.7, 1.2, 0.0]
# More evenly spaced → less efficient
Troubleshooting
Q: Images look different with AYS?
A: Yes, they will differ slightly (different paths through noise space). Quality should be same or better. Adjust CFG if needed.
Q: AYS + multiscale?
A: Works great together! AYS optimizes step distribution, multiscale optimizes spatial resolution.
Q: Can I use AYS with euler_ancestral?
A: Yes! Works with all samplers (euler, euler_ancestral, dpmpp_2m_cfgpp, dpmpp_sde_cfgpp, etc.)
Q: How to verify it's active?
A: Check logs for "Using AYS optimal schedule" message.
References
- Original paper: https://research.nvidia.com/labs/toronto-ai/AlignYourSteps/
- Implementation:
src/sample/ays_scheduler.py - Integration:
src/sample/ksampler_util.py