def METHOD_NAME(self, dy_model, metrics_list, batch_data, config):
    query_len = config.get('hyper_parameters.query_len', 79)
    pos_len = config.get('hyper_parameters.pos_len', 99)
    neg_len = config.get('hyper_parameters.neg_len', 90)
    margin = config.get('hyper_parameters.margin', 0.1)
    batch_size = config.get("runner.train_batch_size", 128)
    inputs = self.create_feeds_train(batch_data, query_len, pos_len,
                                     neg_len)
    cos_pos, cos_neg = dy_model.forward(inputs, False)
    loss = self.create_loss(batch_size, margin, cos_pos, cos_neg)
    # update metrics
    acc = self.get_acc(cos_neg, cos_pos, batch_size)
    print_dict = {"Acc": acc, "loss": loss}
    return loss, metrics_list, print_dict