class_docstr: GRNA trainer.
  
  Parameters
  ----------
  n_warmup : int
      Number of epochs for training super network.
  model_lr : float
      Learning rate for super network.
  model_wd : float
      Weight decay for super network.
  
  Other parameters see Evolution
code: def _infer(self, mask="train"):
      metric, loss = self.estimator.infer(
          self.model, self.dataset, mask=mask
      )
      return metric[0], loss
  
imports: import logging
  import torch
  import torch.optim
  import torch.nn
  import torch.nn.functional
  from .None import register_nas_algo
  from .base import BaseNAS
  from ..estimator.base import BaseEstimator
  from ..space import BaseSpace
  from ..utils import replace_layer_choice, replace_input_choice
  from ...model.base import BaseAutoModel
  from .spos import Evolution, UniformSampler, Spos
  from ..utils import AverageMeterGroup, replace_layer_choice, replace_input_choice, get_module_order, sort_replaced_module, PathSamplingLayerChoice, PathSamplingInputChoice
  from tqdm import tqdm, trange
  from torch.autograd import Variable
  import numpy
  import time
  import copy
  import torch.optim
  import scipy.sparse
label_desc: Use image node_id 3 for calling the GRNA obj's underlying member method code with example usage: obj._infer(mask) and returns: metric,  loss