MCPcopy Index your code
hub / github.com/OpenMeshLab/MeshXL / evaluate

Function evaluate

eval_utils/perplexity.py:36–147  ·  view source on GitHub ↗
(
    args,
    curr_epoch,
    model,
    accelerator,
    dataset_loader,
    logger,
    curr_train_iter=-1,
)

Source from the content-addressed store, hash-verified

34
35@torch.no_grad()
36def evaluate(
37 args,
38 curr_epoch,
39 model,
40 accelerator,
41 dataset_loader,
42 logger,
43 curr_train_iter=-1,
44):
45
46 model.eval()
47 net_device = next(model.parameters()).device
48 num_batches = len(dataset_loader)
49
50 ### parse evaluation status
51 if hasattr(dataset_loader.dataset, "dataset_name"):
52 dataset_name = dataset_loader.dataset.dataset_name
53 else:
54 dataset_name = "default"
55 task_name_prefix = dataset_name + '_'
56
57 time_delta = SmoothedValue(window_size=10)
58
59 accelerator.wait_for_everyone()
60
61 epoch_str = f"[{curr_epoch}/{args.max_epoch}]" if curr_epoch > 0 else ""
62
63 if accelerator.is_main_process:
64 logger.log_messages("==" * 10)
65 logger.log_messages(f"Evaluate Epoch [{curr_epoch}/{args.max_epoch}]")
66 logger.log_messages("==" * 10)
67
68 ### calculate perplexity
69 neg_log_likelihood = []
70 for curr_iter, batch_data_label in enumerate(dataset_loader):
71
72 curr_time = time.time()
73
74 # forward pass to calculate per-sequence negative log likelihood
75 with accelerator.autocast():
76 outputs = model(batch_data_label, is_eval=True)
77 # [(batch,), (batch,), ...]
78 neg_log_likelihood.append(outputs['neg_log_likelihood'])
79
80 ### log status
81 time_delta.update(time.time() - curr_time)
82
83 if accelerator.is_main_process and curr_iter % args.log_every == 0:
84 mem_mb = torch.cuda.max_memory_allocated() / (1024 ** 2)
85 moving_average_ppl = perplexity(neg_log_likelihood)
86 logger.log_messages(
87 '; '.join(
88 (
89 f"Evaluate {epoch_str}",
90 f"Batch [{curr_iter}/{num_batches}]",
91 f"perplexity: {moving_average_ppl:0.4f}",
92 f"Evaluating on iter: {curr_train_iter}",
93 f"Iter time {time_delta.avg:0.2f}",

Callers

nothing calls this directly

Calls 5

updateMethod · 0.95
SmoothedValueClass · 0.90
perplexityFunction · 0.85
log_messagesMethod · 0.80
post_process_meshFunction · 0.70

Tested by

no test coverage detected