MCPcopy
hub / github.com/openai/guided-diffusion / main

Function main

scripts/super_res_sample.py:23–74  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

21
22
23def main():
24 args = create_argparser().parse_args()
25
26 dist_util.setup_dist()
27 logger.configure()
28
29 logger.log("creating model...")
30 model, diffusion = sr_create_model_and_diffusion(
31 **args_to_dict(args, sr_model_and_diffusion_defaults().keys())
32 )
33 model.load_state_dict(
34 dist_util.load_state_dict(args.model_path, map_location="cpu")
35 )
36 model.to(dist_util.dev())
37 if args.use_fp16:
38 model.convert_to_fp16()
39 model.eval()
40
41 logger.log("loading data...")
42 data = load_data_for_worker(args.base_samples, args.batch_size, args.class_cond)
43
44 logger.log("creating samples...")
45 all_images = []
46 while len(all_images) * args.batch_size < args.num_samples:
47 model_kwargs = next(data)
48 model_kwargs = {k: v.to(dist_util.dev()) for k, v in model_kwargs.items()}
49 sample = diffusion.p_sample_loop(
50 model,
51 (args.batch_size, 3, args.large_size, args.large_size),
52 clip_denoised=args.clip_denoised,
53 model_kwargs=model_kwargs,
54 )
55 sample = ((sample + 1) * 127.5).clamp(0, 255).to(th.uint8)
56 sample = sample.permute(0, 2, 3, 1)
57 sample = sample.contiguous()
58
59 all_samples = [th.zeros_like(sample) for _ in range(dist.get_world_size())]
60 dist.all_gather(all_samples, sample) # gather not supported with NCCL
61 for sample in all_samples:
62 all_images.append(sample.cpu().numpy())
63 logger.log(f"created {len(all_images) * args.batch_size} samples")
64
65 arr = np.concatenate(all_images, axis=0)
66 arr = arr[: args.num_samples]
67 if dist.get_rank() == 0:
68 shape_str = "x".join([str(x) for x in arr.shape])
69 out_path = os.path.join(logger.get_dir(), f"samples_{shape_str}.npz")
70 logger.log(f"saving to {out_path}")
71 np.savez(out_path, arr)
72
73 dist.barrier()
74 logger.log("sampling complete")
75
76
77def load_data_for_worker(base_samples, batch_size, class_cond):

Callers 1

Calls 9

args_to_dictFunction · 0.90
load_data_for_workerFunction · 0.85
logMethod · 0.80
p_sample_loopMethod · 0.80
get_dirMethod · 0.80
create_argparserFunction · 0.70
convert_to_fp16Method · 0.45

Tested by

no test coverage detected