MCPcopy Create free account
hub / github.com/AnswerDotAI/ModernBERT / benchmark_training

Function benchmark_training

benchmark.py:134–187  ·  view source on GitHub ↗
(model, dataloader, num_warmup_batches=10, gpu_idx=0)

Source from the content-addressed store, hash-verified

132
133
134def benchmark_training(model, dataloader, num_warmup_batches=10, gpu_idx=0):
135 model.train()
136 optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4)
137 device = next(model.parameters()).device
138
139 torch.cuda.reset_peak_memory_stats()
140
141 power_readings = []
142 max_allocated_memory = 0
143 max_reserved_memory = 0
144
145 with Progress(
146 TextColumn("[progress.description]{task.description}"),
147 BarColumn(),
148 TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
149 TimeRemainingColumn(),
150 TimeElapsedColumn(),
151 ) as progress:
152 warmup_task = progress.add_task("[yellow]Warmup", total=num_warmup_batches)
153 for i, batch in enumerate(dataloader):
154 if i >= num_warmup_batches:
155 break
156 input_ids, attention_mask, labels = [t.to(device) for t in batch]
157 with torch.cuda.amp.autocast(dtype=torch.bfloat16):
158 outputs = model(input_ids, attention_mask=attention_mask, labels=labels)
159 loss = outputs.loss
160 loss.backward()
161 optimizer.step()
162 optimizer.zero_grad()
163 progress.update(warmup_task, advance=1)
164
165 train_task = progress.add_task("[green]Training", total=len(dataloader))
166 total_time = 0
167 epoch_start_time = time.time()
168 for i, batch in enumerate(dataloader):
169 input_ids, attention_mask, labels = [t.to(device) for t in batch]
170 with torch.cuda.amp.autocast(dtype=torch.bfloat16):
171 outputs = model(input_ids, attention_mask=attention_mask, labels=labels)
172 loss = outputs.loss
173 loss.backward()
174 optimizer.step()
175 optimizer.zero_grad()
176 progress.update(train_task, advance=1)
177 if i % 10 == 0:
178 power_readings.append(get_gpu_power(gpu_idx))
179 max_allocated_memory = max(max_allocated_memory, torch.cuda.max_memory_allocated())
180 max_reserved_memory = max(max_reserved_memory, torch.cuda.max_memory_reserved())
181 epoch_end_time = time.time()
182 total_time += epoch_end_time - epoch_start_time
183
184 avg_epoch_time = total_time
185 avg_power = np.mean(power_readings)
186 max_power = np.max(power_readings)
187 return avg_epoch_time, avg_power, max_power, max_allocated_memory, max_reserved_memory, loss.item()
188
189
190def benchmark_inference(model, dataloader, num_warmup_batches=10, gpu_idx=0):

Callers 1

mainFunction · 0.85

Calls 4

get_gpu_powerFunction · 0.85
stepMethod · 0.80
backwardMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected