code: def train(self):
      max_score = -1
      self._best_epoch = -1
      self.global_steps = 0
      for epoch in range(200):
          self.model.train()
          self.train_epoch(epoch, split="train")
  
          # self._adjust_lr(epoch)
          if epoch >= 0:
              score = self.evaluate(epoch=epoch, split="val")
              if score >= max_score:
                  self.logger.info(
                      "Best model saved, epoch {}".format(epoch)
                  )
                  self.model.save_checkpoint(
                      os.path.join(
                          "examples/pytorch/nmt/save", opt["name"]
                      ),
                      "best.pth",
                  )
                  self._best_epoch = epoch
              max_score = max(max_score, score)
          if epoch >= 30 and self._stop_condition(epoch):
              break
      return max_score
  
imports: import os
  import resource
  import numpy
  import torch
  import torch.optim
  from torch.utils.data import DataLoader
  from torch.utils.tensorboard import SummaryWriter
  from graph4nlp.pytorch.models.graph2seq import Graph2Seq
  from graph4nlp.pytorch.models.graph2seq_loss import Graph2SeqLoss
  from graph4nlp.pytorch.modules.evaluation import BLEU
  from args import get_args
  from build_model import get_model
  from dataset import IWSLT14Dataset
  from utils import WarmupCosineSchedule, get_log, wordid2str
label_desc: Use image node_id 9 for calling the NMT obj's underlying member method code with example usage: obj.train() and returns: max_score