def METHOD_NAME(eval_ds, model, loss_fn, config, evaluator, dataset):
    model.eval()
    step = 0
    output_metric = defaultdict(lambda: [])
    pred_temp = []
    y_temp = []
    for batch in eval_ds.generator():
        graph_list, x, y = batch
        x = dataset.x[x]
        x = paddle.to_tensor(x, dtype='float32')
        y = paddle.to_tensor(y, dtype='int64')
        graph_list = [(item[0].tensor(), paddle.to_tensor(item[2]))
                      for item in graph_list]
        out = model(graph_list, x)
        loss = loss_fn(out, y)
        pred_temp.append(out.numpy())
        y_temp.append(y.numpy())
        output_metric["loss"].append(float(loss))
        step += 1
        if step > config.eval_max_steps:
            break
    model.train()
    for key, value in output_metric.items():
        output_metric[key] = np.mean(value)
    pred_temp = np.concatenate(pred_temp, axis=0)
    y_pred = pred_temp.argmax(axis=-1)
    y_eval = np.concatenate(y_temp, axis=0)
    output_metric['acc'] = evaluator.eval({
        'y_true': y_eval,
        'y_pred': y_pred
    })['acc']
    return output_metric