class_docstr: Split the dataset into `num_parts` parts and sample from the part with
  index `part_index`
  
  Parameters
  ----------
  length: int
    Number of examples in the dataset
  num_parts: int
    Partition the data into multiple parts
  part_index: int
    The index of the part to read from
code: def __init__(self, length, num_parts=1, part_index=0, random=True):
      # Compute the length of each partition
      self.part_len = length // num_parts
      # Compute the start index for this partition
      self.start = self.part_len * part_index
      # Compute the end index for this partition
      self.end = self.start + self.part_len
      self.random = random
  
imports: import os
  import argparse
  import logging
  import math
  import time
  import random
  import gluoncv
  from gluoncv.model_zoo import get_model
  from gluoncv.utils import makedirs
  import horovod.mxnet
  import mxnet
  import numpy
  from mxnet import autograd, gluon, lr_scheduler
  from mxnet.io import DataBatch, DataIter
  from mxnet.gluon.data.vision import transforms
  from PIL import Image
  from gluoncv.nn.dropblock import DropBlockScheduler
label_desc: Use image node_id 1 to create a new SplitSampler object from inherited base classes: mx.gluon.data.sampler with example: obj = SplitSampler(length, num_parts, part_index, random)