class_docstr: Sampler that restricts data loading to a subset of the dataset for distributed,
  with repeated augmentation.
  It ensures that different each augmented version of a sample will be visible to a
  different process (GPU).
  Heavily based on 'torch.utils.data.DistributedSampler'.
  
  This is borrowed from the DeiT Repo:
  https://github.com/facebookresearch/deit/blob/main/samplers.py
code: def __init__(
      self,
      dataset,
      num_replicas=None,
      rank=None,
      shuffle=True,
      seed=0,
      repetitions=3,
  ):
      if num_replicas is None:
          if not dist.is_available():
              raise RuntimeError(
                  "Requires distributed package to be available!"
              )
          num_replicas = dist.get_world_size()
      if rank is None:
          if not dist.is_available():
              raise RuntimeError(
                  "Requires distributed package to be available!"
              )
          rank = dist.get_rank()
      self.dataset = dataset
      self.num_replicas = num_replicas
      self.rank = rank
      self.epoch = 0
      self.num_samples = int(
          math.ceil(
              len(self.dataset) * float(repetitions) / self.num_replicas
          )
      )
      self.total_size = self.num_samples * self.num_replicas
      self.num_selected_samples = int(
          math.floor(len(self.dataset) // 256 * 256 / self.num_replicas)
      )
      self.shuffle = shuffle
      self.seed = seed
      self.repetitions = repetitions
  
file_path: vision/references/classification/sampler.py
imports: import math
  import torch
  import torch.distributed
label_desc: Use image node_id 1 to create a new RASampler object from inherited base classes: torch.utils.data with example: obj = RASampler(dataset, num_replicas, rank, shuffle, seed, repetitions)