class_docstr: Base solver class, define some standard solver interfaces.
  
  Parameters
  ----------
  feature_module: autogl.module.feature.BaseFeatureEngineer or str or None
      The (name of) auto feature engineer used to process the given dataset.
      Disable feature engineer by setting it to ``None``.
  
  graph_models: list of autogl.module.model.BaseModel or str
      The (name of) models to be optimized as backbone.
  
  hpo_module: autogl.module.hpo.BaseHPOptimizer or str or None
      The (name of) hpo module used to search for best hyper parameters.
      Disable hpo by setting it to ``None``.
  
  ensemble_module: autogl.module.ensemble.BaseEnsembler or str or None
      The (name of) ensemble module used to ensemble the multi-models found.
      Disable ensemble by setting it to ``None``.
  
  max_evals: int (Optional)
      If given, will set the number eval times the hpo module will use.
      Only be effective when hpo_module is  of type ``str``. Default ``50``.
  
  default_trainer: str or list of str (Optional)
      Default trainer class to be used.
      If a single trainer class is given, will set all trainer to default trainer.
      If a list of trainer class is given, will set every model with corresponding trainer
      cls. Default ``None``.
  
  trainer_hp_space: list of dict (Optional)
      trainer hp space or list of trainer hp spaces configuration.
      If a single trainer hp is given, will specify the hp space of trainer for every model.
      If a list of trainer hp is given, will specify every model with corrsponding
      trainer hp space. Default ``None``
  
  model_hp_spaces: list of list of dict (Optional)
      model hp space configuration.
      If given, will specify every hp space of every passed model. Default ``None``.
  
  size: int (Optional)
      The max models ensemble module will use. Default ``None``.
  
  device: torch.device or str
      The device where model will be running on. If set to ``auto``, will use gpu when available.
      You can also specify the device by directly giving ``gpu`` or ``cuda:0``, etc.
      Default ``auto``.
class_docstr_tok: ["Base","solver","class",",","define","some","standard","solver","interfaces",".","Parameters","--","--","--","--","--","feature_module",":","autogl.module.feature.BaseFeatureEngineer","or","str","or","None","The","(","name","of",")","auto","feature","engineer","used","to","process","the","given","dataset",".","Disable","feature","engineer","by","setting","it","to","``","None","``",".","graph_models",":","list","of","autogl.module.model.BaseModel","or","str","The","(","name","of",")","models","to","be","optimized","as","backbone",".","hpo_module",":","autogl.module.hpo.BaseHPOptimizer","or","str","or","None","The","(","name","of",")","hpo","module","used","to","search","for","best","hyper","parameters",".","Disable","hpo","by","setting","it","to","``","None","``",".","ensemble_module",":","autogl.module.ensemble.BaseEnsembler","or","str","or","None","The","(","name","of",")","ensemble","module","used","to","ensemble","the","multi-models","found",".","Disable","ensemble","by","setting","it","to","``","None","``",".","max_evals",":","int","(","Optional",")","If","given",",","will","set","the","number","eval","times","the","hpo","module","will","use",".","Only","be","effective","when","hpo_module","is","of","type","``","str","``",".","Default","``","50","``",".","default_trainer",":","str","or","list","of","str","(","Optional",")","Default","trainer","class","to","be","used",".","If","a","single","trainer","class","is","given",",","will","set","all","trainer","to","default","trainer",".","If","a","list","of","trainer","class","is","given",",","will","set","every","model","with","corresponding","trainer","cls",".","Default","``","None","``",".","trainer_hp_space",":","list","of","dict","(","Optional",")","trainer","hp","space","or","list","of","trainer","hp","spaces","configuration",".","If","a","single","trainer","hp","is","given",",","will","specify","the","hp","space","of","trainer","for","every","model",".","If","a","list","of","trainer","hp","is","given",",","will","specify","every","model","with","corrsponding","trainer","hp","space",".","Default","``","None","``","model_hp_spaces",":","list","of","list","of","dict","(","Optional",")","model","hp","space","configuration",".","If","given",",","will","specify","every","hp","space","of","every","passed","model",".","Default","``","None","``",".","size",":","int","(","Optional",")","The","max","models","ensemble","module","will","use",".","Default","``","None","``",".","device",":","torch.device","or","str","The","device","where","model","will","be","running","on",".","If","set","to","``","auto","``",",","will","use","gpu","when","available",".","You","can","also","specify","the","device","by","directly","giving","``","gpu","``","or","``","cuda:0","``",",","etc",".","Default","``","auto","``","."]
docstr: Set the neural architecture search module in current solver.
  
  Parameters
  ----------
  nas_spaces: (list of) `autogl.module.hpo.nas.GraphSpace`
      The search space of nas. You can pass a list of space to enable
      multiple space search. If list passed, the length of `nas_spaces`,
      `nas_algorithms` and `nas_estimators` should be the same. If set
      to `None`, will disable the whole nas module.
  
  nas_algorithms: (list of) `autogl.module.hpo.nas.BaseNAS`
      The search algorithm of nas. You can pass a list of algorithms
      to enable multiple algorithms search. If list passed, the length of
      `nas_spaces`, `nas_algorithms` and `nas_estimators` should be the same.
      Default `None`.
  
  nas_estimators: (list of) `autogl.module.hpo.nas.BaseEstimators`
      The nas estimators. You can pass a list of estimators to enable multiple
      estimators search. If list passed, the length of `nas_spaces`, `nas_algorithms`
      and `nas_estimators` should be the same. Default `None`.
  
  Returns
  -------
  self: autogl.solver.BaseSolver
      A reference of current solver.
docstr_tok: ["Set","the","neural","architecture","search","module","in","current","solver",".","Parameters","--","--","--","--","--","nas_spaces",":","(","list","of",")","`","autogl.module.hpo.nas.GraphSpace","`","The","search","space","of","nas",".","You","can","pass","a","list","of","space","to","enable","multiple","space","search",".","If","list","passed",",","the","length","of","`","nas_spaces","`",",","`","nas_algorithms","`","and","`","nas_estimators","`","should","be","the","same",".","If","set","to","`","None","`",",","will","disable","the","whole","nas","module",".","nas_algorithms",":","(","list","of",")","`","autogl.module.hpo.nas.BaseNAS","`","The","search","algorithm","of","nas",".","You","can","pass","a","list","of","algorithms","to","enable","multiple","algorithms","search",".","If","list","passed",",","the","length","of","`","nas_spaces","`",",","`","nas_algorithms","`","and","`","nas_estimators","`","should","be","the","same",".","Default","`","None","`",".","nas_estimators",":","(","list","of",")","`","autogl.module.hpo.nas.BaseEstimators","`","The","nas","estimators",".","You","can","pass","a","list","of","estimators","to","enable","multiple","estimators","search",".","If","list","passed",",","the","length","of","`","nas_spaces","`",",","`","nas_algorithms","`","and","`","nas_estimators","`","should","be","the","same",".","Default","`","None","`",".","Returns","--","--","--","-","self",":","autogl.solver.BaseSolver","A","reference","of","current","solver","."]
code: def set_nas_module(
      self, nas_algorithms=None, nas_spaces=None, nas_estimators=None
  ) -> "BaseSolver":
      """
      Set the neural architecture search module in current solver.
  
      Parameters
      ----------
      nas_spaces: (list of) `autogl.module.hpo.nas.GraphSpace`
          The search space of nas. You can pass a list of space to enable
          multiple space search. If list passed, the length of `nas_spaces`,
          `nas_algorithms` and `nas_estimators` should be the same. If set
          to `None`, will disable the whole nas module.
  
      nas_algorithms: (list of) `autogl.module.hpo.nas.BaseNAS`
          The search algorithm of nas. You can pass a list of algorithms
          to enable multiple algorithms search. If list passed, the length of
          `nas_spaces`, `nas_algorithms` and `nas_estimators` should be the same.
          Default `None`.
  
      nas_estimators: (list of) `autogl.module.hpo.nas.BaseEstimators`
          The nas estimators. You can pass a list of estimators to enable multiple
          estimators search. If list passed, the length of `nas_spaces`, `nas_algorithms`
          and `nas_estimators` should be the same. Default `None`.
  
      Returns
      -------
      self: autogl.solver.BaseSolver
          A reference of current solver.
      """
      if (
          nas_algorithms is None
          and nas_estimators is None
          and nas_spaces is None
      ):
          self.nas_algorithms = (
              self.nas_estimators
          ) = self.nas_spaces = None
          return
      assert None not in [
          nas_algorithms,
          nas_estimators,
          nas_spaces,
      ], "The algorithms, estimators and spaces should all be set"
  
      nas_algorithms = (
          nas_algorithms
          if isinstance(nas_algorithms, Iterable)
          else [nas_algorithms]
      )
      nas_spaces = (
          nas_spaces
          if isinstance(nas_spaces, Iterable)
          else [nas_spaces]
      )
      nas_estimators = (
          nas_estimators
          if isinstance(nas_estimators, Iterable)
          else [nas_estimators]
      )
  
      # parse all str elements
      nas_algorithms = [
          algo if not isinstance(algo, str) else NAS_ALGO_DICT[algo]()
          for algo in nas_algorithms
      ]
      nas_spaces = [
          space
          if not isinstance(space, str)
          else NAS_SPACE_DICT[space]()
          for space in nas_spaces
      ]
      nas_estimators = [
          estimator
          if not isinstance(estimator, str)
          else NAS_ESTIMATOR_DICT[estimator]()
          for estimator in nas_estimators
      ]
  
      max_number = max(
          [len(x) for x in [nas_algorithms, nas_spaces, nas_estimators]]
      )
      assert all(
          [
              len(x) in [1, max_number]
              for x in [nas_algorithms, nas_spaces, nas_estimators]
          ]
      ), "lengths of algorithms/spaces/estimators do not match!"
  
      self.nas_algorithms = (
          [deepcopy(nas_algorithms) for _ in range(max_number)]
          if len(nas_algorithms) == 1 and max_number > 1
          else nas_algorithms
      )
      self.nas_spaces = (
          [deepcopy(nas_spaces) for _ in range(max_number)]
          if len(nas_spaces) == 1 and max_number > 1
          else nas_spaces
      )
      self.nas_estimators = (
          [deepcopy(nas_estimators) for _ in range(max_number)]
          if len(nas_estimators) == 1 and max_number > 1
          else nas_estimators
      )
  
      return self
  
imports: from typing import Any, Iterable, Tuple
  from copy import deepcopy
  import torch
  from ..module.feature import FEATURE_DICT
  from ..module.hpo import HPO_DICT
  from ..module.model import EncoderUniversalRegistry, DecoderUniversalRegistry, ModelUniversalRegistry
  from ..module.nas.algorithm import NAS_ALGO_DICT
  from ..module.nas.estimator import NAS_ESTIMATOR_DICT
  from ..module.nas.space import NAS_SPACE_DICT
  from ..module import BaseFeatureEngineer, BaseHPOptimizer, BaseTrainer
  from .utils import LeaderBoard
  from ..utils import get_logger
label_desc: Use image node_id 5 for calling the BaseSolver obj's underlying member method code with example usage: obj.set_nas_module(nas_algorithms, nas_spaces, nas_estimators) and returns: self