class_docstr: Multi-scale batch sampler for data parallel. This sampler yields batches of fixed batch size, but each batch
  has different spatial resolution.
  
  Args:
      opts: command line argument
      n_data_samples: Number of samples in the dataset
      is_training: Training or validation mode. Default: False
class_docstr_tok: ["Multi-scale","batch","sampler","for","data","parallel",".","This","sampler","yields","batches","of","fixed","batch","size",",","but","each","batch","has","different","spatial","resolution",".","Args",":","opts",":","command","line","argument","n_data_samples",":","Number","of","samples","in","the","dataset","is_training",":","Training","or","validation","mode",".","Default",":","False"]
code: def update_scales(
      self, epoch: int, is_master_node: bool = False, *args, **kwargs
  ) -> None:
      if (
          type(self).update_scales
          is not MultiScaleSampler.update_scales
      ):
          # Do nothing when a subclass overrides this method and calls super().update_scales
          return
  
      if is_master_node and self.scale_inc:
          logger.warning(
              f"Update scale function is not yet implemented for {self.__class__.__name__}."
          )
  
imports: import argparse
  import random
  from typing import Iterator, Tuple
  from common import DEFAULT_IMAGE_HEIGHT, DEFAULT_IMAGE_WIDTH
  from data.sampler import SAMPLER_REGISTRY
  from data.sampler.base_sampler import BaseSampler, BaseSamplerDDP
  from data.sampler.utils import image_batch_pairs
  from utils import logger
label_desc: Use image node_id 4 for calling the MultiScaleSampler obj's underlying member method code with example usage: obj.update_scales(epoch, is_master_node) without return types