code: def prepare_data(self):
      if self.cache_dir is None:  # Just download the dataset
          load_dataset(self.dataset_name, self.dataset_config_name)
      else:  # Process the dataset and save it
          self.process_dataset()
  
imports: from itertools import chain
  from pathlib import Path
  import pickle
  from typing import Any, List, Union
  import subprocess
  import mmap
  from multiprocessing.shared_memory import SharedMemory
  import numpy
  import torch
  from torch.utils.data.dataloader import DataLoader, Dataset
  from transformers import AutoTokenizer
  from datasets import load_dataset
  from pytorch_lightning import LightningDataModule
  from src.datamodules.datasets.lm_dataset import LMDataset
  from src.datamodules.fault_tolerant_sampler import RandomFaultTolerantSampler
  from src.datamodules.fault_tolerant_sampler import FaultTolerantDistributedSampler
  from src.datamodules.datasets.detokenizer import DATASET_TOKENIZATION_REGISTRY
  from src.utils.utils import get_logger
label_desc: Use image node_id 2 for calling the LMDataModule obj's underlying member method code with example usage: obj.prepare_data() without return types