Skip to content

Commit 47afa4f

Browse files
authored
[data] fix: Propagate MIMO dataset loading errors (#5873)
Signed-off-by: Yu Yao <yaoyu.094@gmail.com>
1 parent 1da3545 commit 47afa4f

2 files changed

Lines changed: 22 additions & 4 deletions

File tree

‎src/megatron/bridge/data/megatron_mimo/hf_provider.py‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,11 @@ def _load_hf_dataset(self, split: str) -> Any:
146146
),
147147
)
148148
return dataset
149-
except ValueError:
150-
# Split doesn't exist
151-
return None
149+
except ValueError as error:
150+
message = str(error)
151+
if message.startswith('Unknown split "') and ". Should be one of " in message:
152+
return None
153+
raise
152154

153155
def _build_split_dataset(
154156
self,

‎tests/unit_tests/data/megatron_mimo/test_hf_provider.py‎

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from dataclasses import dataclass
55

6+
import pytest
67
import torch
78

89
from megatron.bridge.data.base import DatasetBuildContext
@@ -58,7 +59,7 @@ def fake_load_dataset(path, name=None, split=None, trust_remote_code=None, data_
5859
del path, name, trust_remote_code, data_files
5960
calls.load_dataset += 1
6061
if split == "validation":
61-
raise ValueError("missing split")
62+
raise ValueError("Unknown split \"validation\". Should be one of ['train', 'test'].")
6263
return [{"text": "hello", "image": "image_0.jpg"}]
6364

6465
class _AutoImageProcessor:
@@ -95,6 +96,21 @@ def from_pretrained(path, trust_remote_code=None):
9596
assert calls.is_safe_repo >= 3
9697

9798

99+
def test_build_datasets_propagates_non_split_value_error(monkeypatch):
100+
def fake_load_dataset(path, name=None, split=None, trust_remote_code=None, data_files=None):
101+
del path, name, split, trust_remote_code, data_files
102+
raise ValueError("Empty 'data_files': '[]'. It should be either non-empty or None (default).")
103+
104+
provider = _make_provider()
105+
monkeypatch.setattr(provider, "_load_processors", lambda: {})
106+
monkeypatch.setattr(provider, "_load_tokenizer", lambda: DummyTokenizer())
107+
monkeypatch.setattr("megatron.bridge.data.megatron_mimo.hf_provider.load_dataset", fake_load_dataset)
108+
109+
context = DatasetBuildContext(train_samples=1, valid_samples=0, test_samples=0)
110+
with pytest.raises(ValueError, match="Empty 'data_files'"):
111+
provider.build_datasets(context)
112+
113+
98114
def test_get_collate_fn_returns_partial():
99115
provider = _make_provider()
100116
collate_fn = provider.get_collate_fn()

0 commit comments

Comments
 (0)