docstr: Default use 108 epoch for c10, this is the largest epoch number.
  :param dataset:
  :param arch_id: architecture id
  :param epoch_num: query the result of the specific epoch number
  :return:
code: def get_c10_test_info(
      self,
      arch_id: str,
      dataset: str = Config.c10,
      epoch_num: int = 108,
  ):
      """
      Default use 108 epoch for c10, this is the largest epoch number.
      :param dataset:
      :param arch_id: architecture id
      :param epoch_num: query the result of the specific epoch number
      :return:
      """
      if dataset != Config.c10:
          raise "NB101 only have c10 results"
  
      if epoch_num is None or epoch_num > 108:
          epoch_num = 108
      elif epoch_num > 36:
          epoch_num = 36
      elif epoch_num > 12:
          epoch_num = 12
      elif epoch_num > 4:
          epoch_num = 4
      else:
          epoch_num = 4
      arch_id = str(arch_id)
      # this is acc from zero-cost paper, which only record 108 epoch' result [test, valid, train]
      # t_acc = self.data101_from_zerocost[self.id_to_hash_map[arch_id]][0]
      # this is acc from parse_testacc_101.py,
      t_acc = self.data101_full[arch_id][Config.c10][str(epoch_num)][
          "test-accuracy"
      ]
      time_usage = self.data101_full[arch_id][Config.c10][
          str(epoch_num)
      ]["time_usage"]
      # print(f"[Debug]: Acc different = {t_acc_usage - t_acc}")
      return t_acc, time_usage
  
imports: import os
  import random
  from src.common.constant import Config
  from src.tools.io_tools import read_json, write_json
  from src.query_api.singleton import Singleton
  from src.tools.io_tools import read_pickle
  from src.tools.compute import generate_global_rank
label_desc: Use image node_id 3 for calling the Gt101 obj's underlying member method code with example usage: obj.get_c10_test_info(arch_id, dataset, epoch_num) and returns: t_acc,  time_usage