code: def load_dataset(
      self, split: str, task_cfg: FairseqDataclass = None, **kwargs
  ):
      datasets = []
      self.mult_ratios = []
  
      def load_ds(task, name, ratio):
          if task is not None:
              task.load_dataset(split)
              ds = ModalityDatasetItem(
                  datasetname=name,
                  dataset=task.dataset(split),
                  max_positions=task.max_positions(),
                  max_tokens=self.cfg.max_tokens,
                  max_sentences=self.cfg.batch_size,
              )
              datasets.append(ds)
              self.mult_ratios.append(ratio)
  
      load_ds(self.audio_task, Modality.AUDIO, self.cfg.audio_ratio)
      load_ds(self.image_task, Modality.IMAGE, self.cfg.image_ratio)
      load_ds(self.text_task, Modality.TEXT, self.cfg.text_ratio)
  
      assert len(datasets) > 0
  
      self.datasets[split] = MultiModalityDataset(datasets)
  
imports: import sys
  from dataclasses import dataclass
  from typing import Optional, List
  from omegaconf import II
  from fairseq.data.iterators import GroupedEpochBatchIterator
  from fairseq.dataclass import FairseqDataclass
  from fairseq.tasks import FairseqTask, register_task
  from fairseq.tasks.audio_pretraining import AudioPretrainingConfig, AudioPretrainingTask
  from fairseq.tasks.masked_lm import MaskedLMConfig, MaskedLMTask
  from .mae_image_pretraining import MaeImagePretrainingConfig, MaeImagePretrainingTask
  from examples.data2vec.data.modality import Modality
  from fairseq.data.audio.multi_modality_dataset import MultiModalityDataset, ModalityDatasetItem
label_desc: Use image node_id 3 for calling the MultimodalPretrainingTask obj's underlying member method code with example usage: obj.load_dataset(split, task_cfg) without return types