code: def _get_eval_dataloader_dict(
      self, phase, task_name_list, use_subset=False
  ):
      val_dataloader_dict = {}
      for task_name in task_name_list:
          task = self.jiant_task_container.task_dict[task_name]
          eval_cache = self.jiant_task_container.task_cache_dict[
              task_name
          ][phase]
          task_specific_config = (
              self.jiant_task_container.task_specific_configs[task_name]
          )
          val_dataloader_dict[
              task_name
          ] = get_eval_dataloader_from_cache(
              eval_cache=eval_cache,
              task=task,
              eval_batch_size=task_specific_config.eval_batch_size,
              subset_num=task_specific_config.eval_subset_num
              if use_subset
              else None,
          )
      return val_dataloader_dict
  
imports: from typing import Dict
  from dataclasses import dataclass
  import torch
  import jiant.tasks.evaluate
  import jiant.utils.torch_utils
  from jiant.proj.main.components.container_setup import JiantTaskContainer
  from jiant.proj.main.modeling.primary import JiantModel, wrap_jiant_forward
  from jiant.shared.constants import PHASE
  from jiant.shared.runner import complex_backpropagate, get_train_dataloader_from_cache, get_eval_dataloader_from_cache
  from jiant.utils.display import maybe_tqdm
  from jiant.utils.python.datastructures import InfiniteYield, ExtendedDataClassMixin
label_desc: Use image node_id 9 for calling the JiantRunner obj's underlying member method code with example usage: obj._get_eval_dataloader_dict(phase, task_name_list, use_subset) and returns: val_dataloader_dict