MCPcopy Index your code
hub / github.com/Extraltodeus/DistanceSampler / sample_distance_advanced

Function sample_distance_advanced

custom_samplers.py:115–209  ·  view source on GitHub ↗
(model, x, sigmas, eta=eta, s_noise=s_noise, noise_sampler=None, distance_step_noise_sampler=None, extra_args=None, callback=None, disable=None)

Source from the content-addressed store, hash-verified

113):
114 @torch.no_grad()
115 def sample_distance_advanced(model, x, sigmas, eta=eta, s_noise=s_noise, noise_sampler=None, distance_step_noise_sampler=None, extra_args=None, callback=None, disable=None):
116 nonlocal distance_first, distance_last, eta_first, eta_last, distance_eta_first, distance_eta_last
117
118 extra_args = {} if extra_args is None else extra_args
119 seed = extra_args.get("seed")
120 dstep_noise_sampler = None if distance_step_eta == 0 else distance_step_noise_sampler or noise_sampler or sampling.default_noise_sampler(x, seed=seed + distance_step_seed_offset if seed is not None else None)
121 noise_sampler = None if eta == 0 else noise_sampler or sampling.default_noise_sampler(x, seed=seed)
122 is_rf = isinstance(model.inner_model.inner_model.model_sampling, model_sampling.CONST)
123 uncond = None
124 steps = len(sigmas) - 1
125
126 distance_first, distance_last = fix_step_range(steps, distance_first, distance_last)
127 eta_first, eta_last = fix_step_range(steps, eta_first, eta_last)
128 distance_eta_first, distance_eta_last = fix_step_range(steps, distance_eta_first, distance_eta_last)
129
130 if cfgpp or use_negative:
131 uncond = None
132 def post_cfg_function(args):
133 nonlocal uncond
134 uncond = args["uncond_denoised"]
135 return args["denoised"]
136 model_options = extra_args.get("model_options", {}).copy()
137 extra_args["model_options"] = comfy.model_patcher.set_model_options_post_cfg_function(model_options, post_cfg_function)
138
139 s_min, s_max = sigmas[sigmas > 0].min(), sigmas.max()
140 progression = lambda x, y=0.5: max(0,min(1,((x - s_min) / (s_max - s_min)) ** y))
141 d_prev = None
142
143 if resample == -1:
144 current_resample = min(10, sigmas.shape[0] // 2)
145 else:
146 current_resample = resample
147 total = 0
148 s_in = x.new_ones([x.shape[0]])
149 for i in trange(steps, disable=disable):
150 use_distance = distance_first <= i <= distance_last
151 use_eta = eta_first <= i <= eta_last
152 use_distance_eta = distance_eta_first <= i <= distance_eta_last
153 sigma, sigma_next = sigmas[i:i + 2]
154 sigma_down, sigma_up, x_coeff = get_ancestral_step_ext(sigma, sigma_next, eta=eta if use_eta else 0.0, is_rf=is_rf)
155 sigma_up *= s_noise
156 dstep_sigma_down, dstep_sigma_up, dstep_x_coeff = get_ancestral_step_ext(sigma, sigma_next, eta=distance_step_eta if use_distance_eta else 0.0, is_rf=is_rf)
157 dstep_sigma_up *= distance_step_s_noise
158
159 res_mul = progression(sigma)
160 if resample_end >= 0:
161 resample_steps = max(min(current_resample,resample_end),min(max(current_resample,resample_end),int(current_resample * res_mul + resample_end * (1 - res_mul))))
162 else:
163 resample_steps = current_resample
164
165 denoised = model(x, sigma * s_in, **extra_args)
166 total += 1
167
168 if cfgpp and torch.any(uncond):
169 d = to_d(x - denoised + uncond, sigma, denoised)
170 else:
171 d = to_d(x, sigma, denoised)
172

Callers

nothing calls this directly

Calls 6

fix_step_rangeFunction · 0.85
get_ancestral_step_extFunction · 0.85
internal_stepFunction · 0.85
fast_distance_weightsFunction · 0.85
normalize_adjustFunction · 0.85
diff_stepFunction · 0.85

Tested by

no test coverage detected