espnet3.components.dataloader.DataLoaderBuilder
espnet3.components.dataloader.DataLoaderBuilder
class espnet3.components.dataloader.DataLoaderBuilder(dataset, config, collate_fn, num_device: int, epoch: int)
Bases: object
Builder class for constructing training and validation DataLoaders in ESPnet3.
This class provides a unified interface for setting up PyTorch or ESPnet-specific DataLoaders based on the configuration. It supports advanced features such as:
- Custom collate functions (e.g., CommonCollateFn)
- Sharded sampling using {shard_idx}-formatted shape files
- Sequence-based batch sampling with batch_bins or batch_size
- Dynamic handling of DDP-compatible iteration strategies
Typically used by LitESPnetModel to instantiate training and validation DataLoaders with consistent behavior across single-GPU, multi-GPU, and distributed training.
- Parameters:
- dataset (torch.utils.data.Dataset) – Dataset instance wrapped by DataLoader.
- config (DictConfig) – Full training configuration (e.g., from OmegaConf).
- collate_fn (Callable) – Function to collate individual samples into mini-batches.
- num_device (int) – Number of devices in use (e.g., GPUs or nodes).
- epoch (int) – Current epoch number. Used to reseed samplers deterministically.
Example
builder = DataLoaderBuilder( : dataset=train_dataset, config=config, collate_fn=collate_fn, num_device=4, epoch=3
) train_loader = builder.build(mode=”train”)
build(mode: str)
Build and return a DataLoader for the specified mode (“train” or “valid”).
This method supports two modes of operation depending on the configuration: (1) ESPnet-style iterator: Custom sampling and iteration logic. (2) Standard PyTorch DataLoader: Simpler use-case with fixed batch size.
The selection depends on whether config.dataloader.<mode>.iter_factory is defined.
- Parameters:mode (str) – One of {“train”, “valid”} indicating which dataloader to build.
- Returns: Configured DataLoader instance for training or : validation.
- Return type: torch.utils.data.DataLoader
Config-driven branching logic: : Case 1: ESPnet SequenceIterFactory is used Example config: <br/>
``<br/> ` dataloader: train: <br/>
iter_factory: _target_: espnet2.iterators.sequence_iter_factory.SequenceIterFactory shuffle: true collate_fn: ${dataloader.collate_fn} batches: <br/>
_target_: espnet2.samplers.build_batch_sampler.build_batch_sampler type: numel shape_files:
- stats/train/split.12/speech_shape.{shard_idx} batch_bins: 4000000 min_batch_size: 2 <br/>
``<br/>
`<br/> Case 2: Standard PyTorch DataLoader is used Example config: <br/>
``<br/> ` dataloader: train: <br/>
iter_factory: # Set iter_factory to None batch_size: 4 num_workers: 2 shuffle: true <br/>
``<br/>
`Notes
- For Case 1, all placeholder strings like “{shard_idx}” are resolved
when initializing shards. (e.g., via update_shard()).
- Raises:ValueError – If the provided mode is neither “train” nor “valid”.
