MCPcopy Create free account
hub / github.com/CompVis/zigma / main

Function main

train_acc.py:113–650  ·  view source on GitHub ↗
(args)

Source from the content-addressed store, hash-verified

111
112@hydra.main(config_path="config", config_name="default", version_base=None)
113def main(args):
114 assert torch.cuda.is_available(), "Training currently requires at least one GPU."
115 from accelerate.utils import AutocastKwargs
116
117 kwargs = AutocastKwargs(enabled=True)
118 # https://github.com/pytorch/pytorch/issues/40497#issuecomment-709846922
119 # https://github.com/huggingface/accelerate/issues/2487#issuecomment-1969997224
120
121 accelerator = accelerate.Accelerator(
122 kwargs_handlers=[kwargs], mixed_precision=args.mixed_precision
123 )
124 device = accelerator.device
125 accelerate.utils.set_seed(args.global_seed, device_specific=True)
126 rank = accelerator.state.process_index
127 logging.info(
128 f"Starting rank={rank}, world_size={accelerator.state.num_processes}, accelerator.mixed_precision={accelerator.mixed_precision},device={device}."
129 )
130 is_multiprocess = True if accelerator.state.num_processes > 1 else False
131 if accelerator.state.num_processes >= 4 * 8:
132 args.data.sample_fid_n = min(args.data.sample_fid_n, 1_000)
133 print(
134 "decreasing sample_fid_n to 1_000 in node with >= 4*8 GPUs, an unknown bug from torchmetrics"
135 )
136
137 _fid_eval_batch_nums = args.data.sample_fid_n // (
138 args.data.sample_fid_bs * accelerator.state.num_processes
139 )
140 assert _fid_eval_batch_nums > 0, f"{_fid_eval_batch_nums} <= 0"
141
142 slurm_job_id = os.environ.get("SLURM_JOB_ID")
143 logging.info(f"slurm_job_id: {slurm_job_id}")
144
145 local_bs = args.data.batch_size
146
147 train_steps = 0
148
149 accelerator.wait_for_everyone()
150 if accelerator.is_main_process:
151 logging.info(args)
152 experiment_dir = HydraConfig.get().run.dir
153 logging.info(f"Experiment directory created at {experiment_dir}")
154 checkpoint_dir = (
155 f"{experiment_dir}/checkpoints" # Stores saved model checkpoints
156 )
157 os.makedirs(checkpoint_dir, exist_ok=True)
158 logger = create_logger(rank, experiment_dir)
159 logger.info(f"Experiment directory created at {experiment_dir}")
160
161 if args.use_wandb:
162 config_dict = OmegaConf.to_container(args, resolve=True)
163 config_dict = {
164 **config_dict,
165 "experiment_dir": experiment_dir,
166 "world_size": accelerator.state.num_processes,
167 "local_batch_size": args.data.batch_size
168 * accelerator.state.num_processes,
169 "job_id": slurm_job_id,
170 }

Callers 1

train_acc.pyFile · 0.70

Calls 15

train_dataloaderMethod · 0.95
resetMethod · 0.95
update_realMethod · 0.95
sample_odeMethod · 0.95
update_fakeMethod · 0.95
computeMethod · 0.95
create_loggerFunction · 0.90
get_modelFunction · 0.90
update_emaFunction · 0.90
create_transportFunction · 0.90
SamplerClass · 0.90

Tested by

no test coverage detected