Shortcuts

InfiniteSampler

class mmengine.dataset.InfiniteSampler(dataset, shuffle=True, seed=None)[source]

It’s designed for iteration-based runner and yields a mini-batch indices each time.

The implementation logic is referred to https://github.com/facebookresearch/detectron2/blob/main/detectron2/data/samplers/distributed_sampler.py

Parameters:
  • dataset (Sized) – The dataset.

  • shuffle (bool) – Whether shuffle the dataset or not. Defaults to True.

  • seed (int, optional) – Random seed. If None, set a random seed. Defaults to None.

set_epoch(epoch)[source]

Not supported in iteration-based runner.

Parameters:

epoch (int)

Return type:

None

skip(num_samples)[source]

Fast-forward the sampler to an absolute position for resuming.

It rebuilds the deterministic index stream from the seed and discards the first num_samples indices, so the next iteration continues from the same position as an uninterrupted run. num_samples is absolute (counted from the start of the stream, per rank), not relative to the current position, and this method is meant to be called once before iterating. Only indices are generated and no data is loaded, so it is safe for any num_workers; the cost is O(num_samples) index generation, which is still far cheaper than loading the skipped data.

Parameters:

num_samples (int) – The number of per-rank indices already consumed in the previous training that should be skipped. Must be a non-negative integer.

Return type:

None