MCPcopy Index your code
hub / github.com/zai-org/CodeGeeX / evaluate

Function evaluate

codegeex/megatron/training.py:1022–1087  ·  view source on GitHub ↗

Evaluation.

(forward_step_func, data_iterator, model, verbose=False)

Source from the content-addressed store, hash-verified

1020
1021
1022def evaluate(forward_step_func, data_iterator, model, verbose=False):
1023 """Evaluation."""
1024 args = get_args()
1025
1026 # Turn on evaluation mode which disables dropout.
1027 for model_module in model:
1028 model_module.eval()
1029
1030 total_loss_dict = {}
1031
1032 with torch.no_grad():
1033 iteration = 0
1034 while iteration < args.eval_iters:
1035 iteration += 1
1036 if verbose and iteration % args.log_interval == 0:
1037 print_rank_0("Evaluating iter {}/{}".format(iteration, args.eval_iters))
1038
1039 if mpu.get_pipeline_model_parallel_world_size() > 1:
1040 if args.virtual_pipeline_model_parallel_size is not None:
1041 forward_backward_func = (
1042 forward_backward_pipelining_with_interleaving
1043 )
1044 else:
1045 forward_backward_func = (
1046 forward_backward_pipelining_without_interleaving
1047 )
1048 else:
1049 forward_backward_func = forward_backward_no_pipelining
1050
1051 if args.deepspeed and not args.no_pipeline_parallel:
1052 # DeepSpeed uses eval_batch() and already aggregates losses.
1053 assert isinstance(model, list) and len(model) == 1
1054 loss = model[0].eval_batch(data_iterator)
1055 loss_dicts = [{"lm loss": loss}] * get_num_microbatches()
1056 else:
1057 loss_dicts = forward_backward_func(
1058 forward_step_func,
1059 data_iterator,
1060 model,
1061 optimizer=None,
1062 timers=None,
1063 forward_only=True,
1064 )
1065
1066 if mpu.is_pipeline_last_stage(ignore_virtual=True):
1067 # Reduce across processes.
1068 for loss_dict in loss_dicts:
1069 for key in loss_dict:
1070 total_loss_dict[key] = (
1071 total_loss_dict.get(key, torch.cuda.FloatTensor([0.0]))
1072 + loss_dict[key]
1073 )
1074
1075 args.consumed_valid_samples += (
1076 mpu.get_data_parallel_world_size()
1077 * args.micro_batch_size
1078 * get_num_microbatches()
1079 )

Callers 2

Calls 5

get_argsFunction · 0.90
print_rank_0Function · 0.90
get_num_microbatchesFunction · 0.90
evalMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected