code: def build_model(dataset, config, phase, main_prog):
      gw = pgl.graph_wrapper.GraphWrapper(
          name="graph", node_feat=dataset.graph.node_feat_info()
      )
  
      GraphModel = getattr(model, config.model_name)
      m = GraphModel(config=config, num_class=dataset.num_classes)
      logits = m.forward(gw, gw.node_feat["words"], phase)
  
      # Take the last
      node_index = fluid.layers.data(
          "node_index",
          shape=[None, 1],
          dtype="int64",
          append_batch_size=False,
      )
      node_label = fluid.layers.data(
          "node_label",
          shape=[None, 1],
          dtype="int64",
          append_batch_size=False,
      )
  
      pred = fluid.layers.gather(logits, node_index)
      loss, pred = fluid.layers.softmax_with_cross_entropy(
          logits=pred, label=node_label, return_softmax=True
      )
      acc = fluid.layers.accuracy(input=pred, label=node_label, k=1)
      loss = fluid.layers.mean(loss)
  
      if phase == "train":
          adam = fluid.optimizer.Adam(
              learning_rate=config.learning_rate,
              regularization=fluid.regularizer.L2DecayRegularizer(
                  regularization_coeff=config.weight_decay
              ),
          )
          adam.minimize(loss)
      return gw, loss, acc
  
imports: import pgl
  import model
  from pgl import data_loader
  import paddle.fluid
  import numpy
  import time
label_desc: Use image node_id 1 for calling a global function with example usage: build_model(dataset, config, phase, main_prog) and returns: gw,  loss,  acc