hiyouga/LlamaFactory · error · ValueError
Trainer: training requires a train_dataset.
Error message
Trainer: training requires a train_dataset.
What it means
Error "Trainer: training requires a train_dataset." thrown in hiyouga/LlamaFactory.
Source
Thrown at src/llamafactory/train/hyper_parallel/trainer.py:311
}
if self.args.dataloader_num_workers > 0:
dataloader_params["prefetch_factor"] = self.args.dataloader_prefetch_factor
from transformers.trainer import seed_worker # pylint: disable=C0415
dataloader_params["worker_init_fn"] = partial(
seed_worker,
num_workers=self.args.dataloader_num_workers,
rank=self.args.process_index,
)
dataloader = self.accelerator.prepare(torch.utils.data.DataLoader(dataset, **dataloader_params))
return _CPDataLoaderLengthProxy(dataloader, logical_length)
def get_train_dataloader(self):
"""Keep the no-CP logical batch stream, then repeat each whole batch across CP peers."""
if self.train_dataset is None:
raise ValueError("Trainer: training requires a train_dataset.")
if self._cp_size <= 1:
return super().get_train_dataloader()
shuffle = not getattr(self.finetuning_args, "disable_shuffling", False)
return self._get_cp_dataloader(
dataset=self.train_dataset,
batch_size=self._train_batch_size,
shuffle=shuffle,
)
def _move_model_to_device(self, model: nn.Module, device: Optional[torch.device] = None):
"""Skip redundant device moves for HSDP-wrapped models."""
if isinstance(model, HSDPModule):
return model
if device is None:
return model
return model.to(device)
View on GitHub (pinned to f28afaf635)
Solutions
- Provide a training dataset via the `dataset` argument (and ensure it is not empty) before starting training.
Example fix
dataset: identity,alpaca_en_demo
When it happens
Trigger: Thrown at src/llamafactory/train/hyper_parallel/trainer.py:311 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of hiyouga/LlamaFactory@f28afaf635 (2026-08-14).
Data as JSON: /api/errors/b5612b6d7e4cc665.
Report an issue: GitHub.