class_docstr: Wrapper for doing multitask training using multiple data objects.
  Takes a dictionary of data objects, does round robin over their
  iterators using BatchSampler.
  
  Args:
      config (Config): Configuration object of type DisjointMultitaskData.Config.
      data_dict (Dict[str, Data]): Data objects to do roundrobin over.
      *args (type): Extra arguments to be passed down to sub data handlers.
      **kwargs (type): Extra arguments to be passed down to sub data handlers.
  
  Attributes:
      data_dict (type): Data handlers to do roundrobin over.
code: def from_config(
      cls,
      config: Config,
      data_dict: Dict[str, Data],
      task_key: str = BatchContext.TASK_NAME,
      rank=0,
      world_size=1,
      init_tensorizers=True,
  ):
      samplers = {
          Stage.TRAIN: create_component(
              ComponentType.BATCH_SAMPLER, config.sampler
          ),
          Stage.EVAL: EvalBatchSampler(),
          Stage.TEST: EvalBatchSampler(),
      }
      return cls(data_dict, samplers, config.test_key, task_key)
  
file_path: pytext/pytext/data/disjoint_multitask_data.py
imports: from typing import Dict, Optional
  from pytext.common.constants import BatchContext, Stage
  from pytext.config.component import Component, ComponentType, create_component
  from pytext.data import BaseBatchSampler, Data, EvalBatchSampler, generator_iterator, RoundRobinBatchSampler
  from pytext.data.data import BatchData
label_desc: Use image node_id 1 for calling the DisjointMultitaskData obj's underlying member method code with example usage: obj.from_config(cls, config, data_dict, task_key, rank, world_size, init_tensorizers) and returns: cls