MCPcopy Create free account
hub / github.com/NVlabs/DiffusionNFT / run_sampling

Function run_sampling

flow_grpo/diffusers_patch/solver.py:14–75  ·  view source on GitHub ↗
(
    v_pred_fn,
    z,
    sigma_schedule,
    solver="flow",
    determistic=False,
    eta=0.7,
)

Source from the content-addressed store, hash-verified

12
13# Modified from MixGRPO
14def run_sampling(
15 v_pred_fn,
16 z,
17 sigma_schedule,
18 solver="flow",
19 determistic=False,
20 eta=0.7,
21):
22 assert solver in ["flow", "dance", "ddim", "dpm1", "dpm2"]
23 dtype = z.dtype
24 all_latents = [z]
25 all_log_probs = []
26
27 if "dpm" in solver:
28 order = int(solver[-1])
29 dpm_state = DPMState(order=order)
30 for i in tqdm(
31 range(len(sigma_schedule) - 1),
32 desc="Sampling Progress",
33 disable=not dist.is_initialized() or dist.get_rank() != 0,
34 ):
35 sigma = sigma_schedule[i]
36
37 pred = v_pred_fn(z.to(dtype), sigma)
38 if solver == "flow":
39 z, pred_original, log_prob = flow_grpo_step(
40 model_output=pred.float(),
41 latents=z.float(),
42 eta=eta if not determistic else 0,
43 sigmas=sigma_schedule,
44 index=i,
45 prev_sample=None,
46 )
47 elif solver == "dance":
48 z, pred_original, log_prob = dance_grpo_step(
49 pred.float(), z.float(), eta if not determistic else 0, sigmas=sigma_schedule, index=i, prev_sample=None
50 )
51 elif solver == "ddim":
52 z, pred_original, log_prob = ddim_step(
53 pred.float(), z.float(), eta if not determistic else 0, sigmas=sigma_schedule, index=i, prev_sample=None
54 )
55 elif "dpm" in solver:
56 assert determistic
57 z, pred_original, log_prob = dpm_step(
58 order,
59 model_output=pred.float(),
60 sample=z.float(),
61 step_index=i,
62 timesteps=sigma_schedule[:-1],
63 sigmas=sigma_schedule,
64 dpm_state=dpm_state,
65 )
66 else:
67 assert False
68 z = z.to(dtype)
69 all_latents.append(z)
70 all_log_probs.append(log_prob)
71

Callers 1

pipeline_with_logprobFunction · 0.85

Calls 7

DPMStateClass · 0.85
v_pred_fnFunction · 0.85
flow_grpo_stepFunction · 0.85
dance_grpo_stepFunction · 0.85
ddim_stepFunction · 0.85
dpm_stepFunction · 0.85
toMethod · 0.80

Tested by

no test coverage detected