code: def run_eval(
      mode,
      dataset,
      graph,
      model,
      feature,
      gcn_norm,
      best_val_acc,
      final_test_acc,
      eval_loader=None,
  ):
      if mode == "s":
          out = full_eval(graph, model, feature, gcn_norm)
      elif mode == "m":
          out = mini_eval(graph, model, feature, gcn_norm, eval_loader)
      else:
          raise ValueError("Mode %s not supported." % mode)
      train_acc = compute_acc(out, dataset.label, dataset.train_mask)
      val_acc = compute_acc(out, dataset.label, dataset.val_mask)
      test_acc = compute_acc(out, dataset.label, dataset.test_mask)
      if val_acc > best_val_acc:
          best_val_acc = val_acc
          final_test_acc = test_acc
      return train_acc, val_acc, test_acc, best_val_acc, final_test_acc
  
imports: import os
  import sys
  import argparse
  from functools import partial
  import yaml
  from tqdm import tqdm
  from easydict import EasyDict
  import numpy
  import paddle
  import pgl
  from pgl.utils.logger import log
  import gnn_models
  from dataset import load_dataset, create_dataloaders
  from graph_partition import random_graph_partition
  from graph_partition import metis_graph_partition
  from utils import check_device, process_batch_data, compute_buffer_size
  from utils import generate_mask, permute, compute_gcn_norm, compute_acc
label_desc: Use image node_id 4 for calling a global function with example usage: run_eval(mode, dataset, graph, model, feature, gcn_norm, best_val_acc, final_test_acc, eval_loader) and returns: train_acc,  val_acc,  test_acc,  best_val_acc,  final_test_acc