Files
VLA/wall_x/data/_bundle.py
T

40 lines
1.3 KiB
Python
Raw Normal View History

2026-06-15 11:40:00 +08:00
"""Dataset bundle returned by data backends."""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any, Callable, Iterable, Optional
def _noop_set_epoch(_epoch: int) -> None:
"""Default ``set_epoch`` for backends with epoch-agnostic shuffling."""
return None
@dataclass
class DataBundle:
"""Container returned by every backend ``build()``.
Attributes:
dataset: backend-private; trainer code should treat it as opaque.
train_loader: anything iterable that yields training batches.
val_loader: val iterable or None if the backend does not split val.
train_iters: one-epoch step count for the train loader. Backends
with dynamic resizing should set this to a stable snapshot
and expose the live value separately on ``dataset``.
val_iters: one-epoch step count for the val loader; 0 if no val.
set_epoch: per-epoch seed hook. Called before each epoch by
the trainer. Backends that don't need per-epoch reshuffle
should use ``_noop_set_epoch``.
"""
dataset: Any
train_loader: Iterable
val_loader: Optional[Iterable] = None
train_iters: int = 0
val_iters: int = 0
set_epoch: Callable[[int], None] = field(default=_noop_set_epoch)
__all__ = ["DataBundle"]