Skip to content

Commit 4d40dfd

Browse files
Explicit error when the number of training samples < global batch size (#3464)
Co-authored-by: Chen Cui <chcui@nvidia.com>
1 parent f4b705a commit 4d40dfd

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

‎src/megatron/bridge/data/loaders.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,13 @@ def build_train_valid_test_data_loaders(
228228
cfg=cfg, build_train_valid_test_datasets_provider=build_train_valid_test_datasets_provider
229229
)
230230

231+
# Check that the train dataset has at least one global batch of samples.
232+
if cfg.dataset.dataloader_type != "external" and len(train_ds) < cfg.train.global_batch_size:
233+
raise RuntimeError(
234+
f"Not enough train samples for a single global batch: "
235+
f"train dataset size ({len(train_ds)}) < global batch size ({cfg.train.global_batch_size})."
236+
)
237+
231238
exit_signal = cfg.train.exit_signal
232239

233240
def worker_init_fn(_):

‎tests/functional_tests/test_groups/data/test_loaders.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,8 @@ def test_build_train_valid_test_data_loaders_specialized_dispatch_updates_flags(
231231
dp_group = object()
232232
dataset_provider = mock.Mock()
233233

234-
fake_train_ds = mock.Mock()
234+
fake_train_ds = mock.MagicMock()
235+
fake_train_ds.__len__.return_value = cfg.train.global_batch_size
235236
fake_train_ds.collate_fn = None
236237
mock_build_datasets.return_value = (fake_train_ds, None, None)
237238
fake_train_loader = object()

0 commit comments

Comments
 (0)