Add new sampling
- Dominant language
- Python
- Stars
- 133k
- Forks
- 15.7k
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 158
Description
###` Feature Idea
Add new mu sampling.
### Existing Solutions
`@torch.no_grad()
def sample_ab4_delayed(model, x, sigmas, extra_args=None, callback=None, disable=None):
"""Использует Heun для первых 4 шагов, затем переключается на 4-й порядок Adams-Bashforth."""
extra_args = {} if extra_args is None else extra_args
s_in = x.new_ones([x.shape[0]])
ds = [] # история производных
for i in trange(len(sigmas) - 1, disable=disable):
sigma = sigmas[i]
sigma_next = sigmas[i + 1]
denoised = model(x, sigma * s_in, **extra_args)
d = to_d(x, sigma, denoised)
ds.append(d)
if callback is not None:
callback({'x': x, 'i': i, 'sigma': sigma, 'denoised': denoised})
dt = sigma_next - sigma
if len(ds) < 4:
# Первые 4 шага — Heun
x_high = x + d * dt
denoised2 = model(x_high, sigma_next * s_in, **extra_args)
d2 = to_d(x_high, sigma_next, denoised2)
x = x + (d + d2) * dt / 2
else:
# AB4: 4-й порядок
d0, d1, d2, d3 = ds[-1], ds[-2], ds[-3], ds[-4]
x = x + dt * (55 * d0 - 59 * d1 + 37 * d2 - 9 * d3) / 24
# Оставляем только последние 4 значения
ds = ds[-4:]
return x
return x`
`@torch.no_grad()
def sample_ab4_delayed_euler(model, x, sigmas, extra_args=None, callback=None, disable=None):
"""Использует Euler для первых 4 шагов, затем переключается на 4-й порядок Adams-Bashforth."""
extra_args = {} if extra_args is None else extra_args
s_in = x.new_ones([x.shape[0]])
ds = [] # история производных
for i in trange(len(sigmas) - 1, disable=disable):
sigma = sigmas[i]
denoised = model(x, sigma * s_in, **extra_args)
d = to_d(x, sigma, denoised)
ds.append(d)
if callback is not None:
callback({'x': x, 'i': i, 'sigma': sigma, 'denoised': denoised})
dt = sigmas[i + 1] - sigma
if len(ds) < 4:
# Первые 4 шага — метод Эйлера
x = x + d * dt
else:
# AB4: 4-й порядок
d0, d1, d2, d3 = ds[-1], ds[-2], ds[-3], ds[-4]
x = x + dt * (55 * d0 - 59 * d1 + 37 * d2 - 9 * d3) / 24
# Оставляем только последние 4 значения
ds = ds[-4:]
return x`
Contributor guide
Assessment
This issue has not been assessed yet.