Skip to content

Document that max_steps is required for iterable train datasets#6333

Merged
albertvillanova merged 4 commits into
mainfrom
train_dataset-max_steps
Jul 9, 2026
Merged

Document that max_steps is required for iterable train datasets#6333
albertvillanova merged 4 commits into
mainfrom
train_dataset-max_steps

Conversation

@albertvillanova

@albertvillanova albertvillanova commented Jul 9, 2026

Copy link
Copy Markdown
Member

This PR documents, in the trainer docstrings, that max_steps must be set when train_dataset is an iterable (streaming) dataset.

Motivation

When train_dataset is an IterableDataset, it has no length, and Trainer raises ValueError: The train_dataset does not implement __len__, max_steps has to be specified. at initialization. The requirement was undocumented, so users hit the error with no upfront guidance. This is the TRL-side counterpart to the transformers PR that clarifies the same requirement:

Solution

Add a note to the train_dataset docstring of the trainers that actually accept iterable datasets, stating that max_steps must be set in the training arguments. GRPO and RLOO are intentionally excluded, since they reject iterable datasets with NotImplementedError, so the note would not apply there.

Changes

  • Add the max_steps note to the train_dataset docstring in SFTTrainer, DPOTrainer, KTOTrainer and RewardTrainer

TODO

First merge:


Note

Low Risk
Documentation-only changes to trainer docstrings; no runtime or API behavior changes.

Overview
Documents that max_steps must be set in training arguments when train_dataset is an IterableDataset (e.g. streaming), because length cannot be inferred and Hugging Face Trainer needs a fixed step count for the loop and LR scheduler.

The same note is added under train_dataset in SFTTrainer, DPOTrainer, KTOTrainer, and RewardTrainer docstrings. GRPO and RLOO are unchanged—they reject iterable datasets at runtime, so the note would not apply. This mirrors the transformers-side documentation update.

Reviewed by Cursor Bugbot for commit 64e5cc0. Bugbot is set up for automated code reviews on this repo. Configure here.

@bot-ci-comment

bot-ci-comment Bot commented Jul 9, 2026

Copy link
Copy Markdown

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

Base automatically changed from support-init-eval-dsdict to main July 9, 2026 07:00
@albertvillanova
albertvillanova force-pushed the train_dataset-max_steps branch from 472a99e to 64e5cc0 Compare July 9, 2026 07:03

@AmineDiro AmineDiro left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm 👍🏼

@albertvillanova
albertvillanova merged commit 70f95f3 into main Jul 9, 2026
13 checks passed
@albertvillanova
albertvillanova deleted the train_dataset-max_steps branch July 9, 2026 08:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants