What changed in Datasets from 4 to 5
2 releases numbered after 4.8.5 up to and including 5.0.1, stable releases only. 4.8.5 and 5.0.1 are the newest stable releases of 4 and 5 we track; this page follows them as new ones ship.
- 1 mentions breaking changes
38 changes across 2 releases
- Support hermes traces
- Support droid agent traces
- Support batched=True in Dataset.to_dict
- Parse Agent traces messages for SFT using the teich library to enable training on traces from claude_code, pi, codex and other sources
- Use multiple input shards for shuffle buffer in streaming mode with configurable max_buffer_input_shards parameter
- Add batch(by_column=...) method to batch examples by a specified column, useful for robotics datasets
- Add Apache Iceberg format support
- Add TsFile (Apache IoTDB) packaged builder with per-device wide format
- Add 3D mesh support and MeshFolder builder
- Add .conll / .conllu dataset format loader for CoNLL-2003, 2000, and U formats
- Add num_proc argument to Dataset.to_sql
- Default shuffling mechanism now uses multiple input shards instead of single shard
- Support fsspec 2026.4.0
- Pass library_name and version to HfApi in dataset push and delete paths
- Fix version string in __init__.py
- Fix conda build
- Fix JSON loader schema inference for files starting with a UTF-8 BOM
- Fix batch(by_column=...) crashing after shard/shuffle/split
- Fix traces streaming
- Fix lance auth
- Fix resuming dataloader twice resetting the dataloader
- Validate Arrow IPC record batches
- Make the dataset fingerprint independent of Arrow chunking
- Fix casting a nullable LargeList to a different inner type
- Fix column drop in Arrow path of axis=1 concatenation
- Raise on length mismatch in batched IterableDataset.map
- Fix require_storage_embed recursing into require_storage_cast
- Fix hdf5 external files
- Keep flat numeric columns with nulls numeric in numpy format
- Fix CSV loader dropping on_bad_lines/encoding_errors on pandas 2.0-2.2
- Fix storage_options lookup for streaming Lance datasets
- Fix Parquet streaming hangs at the end of script
- Fix parquet reshard
- Fix parquet columns argument
- Fix progress bar exceeding total when load_from_cache_file=False in map operation
- Fix single lance file from pylance 7.0
- Fix symlink-following arbitrary file write in archive extraction
- Fix path traversal via metadata file_name in folder-based builders
Original release notes, newest first
The list above is our reading of these notes; the originals from Hugging Face are here, one fold per release.
5.0.1
Bug fixes
- Fix version string in init.py by @qgallouedec in https://github.com/huggingface/datasets/pull/8244
- fix conda build by @lhoestq in https://github.com/huggingface/datasets/pull/8250
- Fix JSON loader schema inference for files starting with a UTF-8 BOM (#8241) by @archievi in https://github.com/huggingface/datasets/pull/8243
- Support hermes traces by @lhoestq in https://github.com/huggingface/datasets/pull/8255
- Fix batch(by_column=...) crashing after shard/shuffle/split by @pkooij in https://github.com/huggingface/datasets/pull/8259
- fix traces streaming by @lhoestq in https://github.com/huggingface/datasets/pull/8277
- support droid agent traces by @cfahlgren1 in https://github.com/huggingface/datasets/pull/8263
- Fix CI: commit operation equality (hfh 1.20.0) and pytest parametrize collection error by @Wauplin in https://github.com/huggingface/datasets/pull/8283
- Fix lance auth by @lhoestq in https://github.com/huggingface/datasets/pull/8301
- Fix symlink-following arbitrary file write in archive extraction by @AAtomical in https://github.com/huggingface/datasets/pull/8303
- Bug Fix: Resuming Twice Resets the Dataloader by @francesco-bertolotti in https://github.com/huggingface/datasets/pull/8295
- Bump fsspec and simpler wds compr by @lhoestq in https://github.com/huggingface/datasets/pull/8337
- fix: validate Arrow IPC record batches by @XciD in https://github.com/huggingface/datasets/pull/8350
- Make the dataset fingerprint independent of Arrow chunking by @SuryanshSS1011 in https://github.com/huggingface/datasets/pull/8339
- Fix casting a nullable LargeList to a different inner type by @vineethsaivs in https://github.com/huggingface/datasets/pull/8346
- docs: replace AutoFeatureExtractor with AutoImageProcessor in image preprocessing docs by @gautamkishore in https://github.com/huggingface/datasets/pull/8326
- Fix column drop in Arrow path of axis=1 concatenation by @ebarkhordar in https://github.com/huggingface/datasets/pull/8342
- Raise on length mismatch in batched IterableDataset.map by @sohumt123 in https://github.com/huggingface/datasets/pull/8332
- Fix require_storage_embed recursing into require_storage_cast by @vineethsaivs in https://github.com/huggingface/datasets/pull/8349
- Fix path traversal via metadata file_name in folder-based builders by @Kaif10 in https://github.com/huggingface/datasets/pull/8325
- Support batched=True in Dataset.to_dict by @vineethsaivs in https://github.com/huggingface/datasets/pull/8333
- Fix hdf5 external files by @lhoestq in https://github.com/huggingface/datasets/pull/8355
- remove bad require_storage test by @lhoestq in https://github.com/huggingface/datasets/pull/8357
- ensure fiels are in repo by @lhoestq in https://github.com/huggingface/datasets/pull/8356
- Keep flat numeric columns with nulls numeric in numpy format by @ebarkhordar in https://github.com/huggingface/datasets/pull/8352
- Fix bucket dataset card handling and push metadata accounting by @pjh4993 in https://github.com/huggingface/datasets/pull/8354
- Fix CSV loader dropping on_bad_lines/encoding_errors on pandas 2.0-2.2 by @ebarkhordar in https://github.com/huggingface/datasets/pull/8358
- Keep integers on the python read path for fixed-shape ArrayXD columns with nulls by @ebarkhordar in https://github.com/huggingface/datasets/pull/8363
- Rebatch arrow source before formatting in IterableDataset.filter to fix resume data loss by @ebarkhordar in https://github.com/huggingface/datasets/pull/8360
- Decode Json() columns in Dataset.to_pandas() by @ebarkhordar in https://github.com/huggingface/datasets/pull/8344
- fix buckets on windows by @lhoestq in https://github.com/huggingface/datasets/pull/8369
- Fix DatasetDict.push_to_hub leaving removed splits in the dataset card by @pjh4993 in https://github.com/huggingface/datasets/pull/8367
- Preserve nullable integer columns in to_json/to_csv/to_sql by @ebarkhordar in https://github.com/huggingface/datasets/pull/8366
Docs
- docs: fix duplicate "to" in IterableDataset push-to-hub example by @DaoyuanLi2816 in https://github.com/huggingface/datasets/pull/8252
- Clarify dataset creation vs loading workflows in create_dataset tutorial by @zanvari in https://github.com/huggingface/datasets/pull/8235
New Contributors
- @DaoyuanLi2816 made their first contribution in https://github.com/huggingface/datasets/pull/8252
- @zanvari made their first contribution in https://github.com/huggingface/datasets/pull/8235
- @archievi made their first contribution in https://github.com/huggingface/datasets/pull/8243
- @pkooij made their first contribution in https://github.com/huggingface/datasets/pull/8259
- @AAtomical made their first contribution in https://github.com/huggingface/datasets/pull/8303
- @francesco-bertolotti made their first contribution in https://github.com/huggingface/datasets/pull/8295
- @XciD made their first contribution in https://github.com/huggingface/datasets/pull/8350
- @SuryanshSS1011 made their first contribution in https://github.com/huggingface/datasets/pull/8339
- @vineethsaivs made their first contribution in https://github.com/huggingface/datasets/pull/8346
- @gautamkishore made their first contribution in https://github.com/huggingface/datasets/pull/8326
- @ebarkhordar made their first contribution in https://github.com/huggingface/datasets/pull/8342
- @sohumt123 made their first contribution in https://github.com/huggingface/datasets/pull/8332
- @Kaif10 made their first contribution in https://github.com/huggingface/datasets/pull/8325
- @pjh4993 made their first contribution in https://github.com/huggingface/datasets/pull/8354
Full Changelog: https://github.com/huggingface/datasets/compare/5.0.0...5.0.1
5.0.0
Datasets Features
Agent traces
-
Parse Agent traces messages for SFT using
teichby @lhoestq in https://github.com/huggingface/datasets/pull/8232- Agent traces from claude_code/pi/codex and others can now be loaded with load_dataset
- Using the
teichlibrary (new optional dependency), traces are parsed tomessagesto enable training on traces using e.g.trl - Load the data:
>>> from datasets import load_dataset >>> ds = load_dataset("lhoestq/agent-traces-example", split="train") >>> ds[0]["messages"] [{'role': 'user', 'content': 'Download a random dataset from Hugging Face, use DuckDB to inspect it, and come back with a short report about it. Be concise and include: dataset name, what files/format you found, row count or rough size if you can determine it,...' ...]- Train on agent traces:
trl sft --dataset-name lhoestq/agent-traces-example ...- find all the Agent traces datasets on HF here: https://huggingface.co/datasets?format=format:agent-traces&sort=trending
Next-level shuffling in streaming mode
-
Use multiple input shards for shuffle buffer by @lhoestq in https://github.com/huggingface/datasets/pull/8194
ds = load_dataset(..., streaming=True) ds = ds.shuffle(seed=42) # or configure local buffer shuffling manually, default is: ds = ds.shuffle(seed=42, buffer_size=1000, max_buffer_input_shards=10)before👎:
after✨:
toy example comparison
from datasets import IterableDataset ds = IterableDataset.from_dict({"i": range(123_456_789)}, num_shards=1024) ds = ds.shuffle(seed=42) print("Cold start ids:") print(list(ds.take(10)["i"])) print("Nominal regime ids:") print(list(ds.skip(10_000).take(10)["i"]))before👎:
Cold start ids: [6148853, 6149537, 6149418, 6149202, 6149197, 6149622, 6148849, 6149461, 6148965, 6148858] Nominal regime ids: [6149537, 6149418, 6149202, 6149197, 6149622, 6148849, 6149461, 6148965, 6148858, 6149290]after✨:
Cold start ids: [7836668, 9283505, 95847927, 482299, 9283471, 482341, 112003312, 59920157, 43764666, 95847871] Nominal regime ids: [9283505, 95847927, 482299, 9283471, 482341, 112003312, 59920157, 43764666, 95847871, 16758448]Note:
ds.state_dict()andds.load_state_dict()are still supported for this improved shuffling :) enabling dataset checkpointingNote 2: it uses threads to fetch the first examples in parallel from the input shards
Note 3: This is a BREAKING CHANGE: the default shuffling mechanism now uses multiple input shards. You can get the old mechanism by passing
max_buffer_input_shards=1toIterableDataset.shuffle()
New batching features for robotics datasets
-
Add batch(by_column=...) by @lhoestq in https://github.com/huggingface/datasets/pull/8172
from datasets import Dataset ds = Dataset.from_dict({"episode": [0] * 10 + [1] * 10, "frame": list(range(10)) * 2}) # ds = ds.to_iterable_dataset() ds = ds.batch(by_column="episode") for x in ds: print(x) # {'episode': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'frame': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]} # {'episode': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'frame': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}
New supported formats
- Add Apache Iceberg format support by @frankliee in https://github.com/huggingface/datasets/pull/8148
- feat: add TsFile (Apache IoTDB) packaged builder with per-device wide format by @JackieTien97 in https://github.com/huggingface/datasets/pull/8160
- feat: add 3D mesh support and MeshFolder builder by @Vinay-Umrethe in https://github.com/huggingface/datasets/pull/8055
- Add
.conll/.conlludataset format loader (CoNLL-2003 / 2000 / U) by @CrypticCortex in https://github.com/huggingface/datasets/pull/8219
Other improvements and bug fixes
- Pass library_name/version to HfApi in dataset push and delete paths by @davanstrien in https://github.com/huggingface/datasets/pull/8161
- Fix storage_options lookup for streaming Lance datasets by @ericjaebeom in https://github.com/huggingface/datasets/pull/8166
- add agent trace prompt, sent_at, count fields by @cfahlgren1 in https://github.com/huggingface/datasets/pull/8163
- fix: add
num_procargument toDataset.to_sqlby @EricSaikali in https://github.com/huggingface/datasets/pull/7791 - Support fsspec 2026.4.0 by @lhoestq in https://github.com/huggingface/datasets/pull/8175
- Fix Parquet streaming hangs at the end of script by @lhoestq in https://github.com/huggingface/datasets/pull/8176
ClassLabeldocs: Correct value for unknown labels by @l-uuz in https://github.com/huggingface/datasets/pull/7645- fix parquet reshard by @lhoestq in https://github.com/huggingface/datasets/pull/8193
- Fix parquet columns arg by @lhoestq in https://github.com/huggingface/datasets/pull/8210
- update readme by @lhoestq in https://github.com/huggingface/datasets/pull/8208
- update single seg repos in ci by @lhoestq in https://github.com/huggingface/datasets/pull/8213
- Fix single lance file form pylance 7.0 by @lhoestq in https://github.com/huggingface/datasets/pull/8225
- fix(map): fix progress bar exceeding total when load_from_cache_file=False by @Nitin-Rajasekar in https://github.com/huggingface/datasets/pull/8170
- fix: embed_external_files=True for mesh support by @Vinay-Umrethe in https://github.com/huggingface/datasets/pull/8224
- Fix iterable skip over full Arrow blocks by @my17th2 in https://github.com/huggingface/datasets/pull/8236
- Keep None as a real null in Json() columns instead of the string "null" by @adityasingh2400 in https://github.com/huggingface/datasets/pull/8231
- Support composed splits in streaming datasets by @lanarkite99 in https://github.com/huggingface/datasets/pull/8220
New Contributors
- @ericjaebeom made their first contribution in https://github.com/huggingface/datasets/pull/8166
- @EricSaikali made their first contribution in https://github.com/huggingface/datasets/pull/7791
- @l-uuz made their first contribution in https://github.com/huggingface/datasets/pull/7645
- @CrypticCortex made their first contribution in https://github.com/huggingface/datasets/pull/8219
- @frankliee made their first contribution in https://github.com/huggingface/datasets/pull/8148
- @Vinay-Umrethe made their first contribution in https://github.com/huggingface/datasets/pull/8055
- @Nitin-Rajasekar made their first contribution in https://github.com/huggingface/datasets/pull/8170
- @JackieTien97 made their first contribution in https://github.com/huggingface/datasets/pull/8160
- @my17th2 made their first contribution in https://github.com/huggingface/datasets/pull/8236
- @adityasingh2400 made their first contribution in https://github.com/huggingface/datasets/pull/8231
- @lanarkite99 made their first contribution in https://github.com/huggingface/datasets/pull/8220
Full Changelog: https://github.com/huggingface/datasets/compare/4.8.5...5.0.0