def METHOD_NAME(model, metric, data_loader):
    model.eval()
    metric.reset()
    for batch in data_loader:
        token_ids, length, labels = batch
        preds = model(token_ids, length)
        num_infer_chunks, num_label_chunks, num_correct_chunks = metric.compute(length, preds, labels)
        metric.update(num_infer_chunks.numpy(), num_label_chunks.numpy(), num_correct_chunks.numpy())
        precision, recall, f1_score = metric.accumulate()
    logger.info("eval precision: %f, recall: %f, f1: %f" % (precision, recall, f1_score))
    model.train()
    return precision, recall, f1_score