datasets README

The project's README from github.com/huggingface/datasets. As one markdown file: README.md.

Hugging Face Datasets Library

Build GitHub Documentation GitHub release Number of datasets Contributor Covenant DOI

🤗 Datasets is a lightweight library providing two main features:

🎓 Documentation 🔎 Find a dataset in the Hub 🌟 Share a dataset on the Hub

🚀 Key Features

🤗 Datasets is designed to let the community easily add and share new datasets, and provides powerful capabilities for data manipulation:

Feature Description
📦 One-line dataset loading Load AI-ready datasets from the Hugging Face Hub or local files with load_dataset()
🔍 Multiple formats Native support for CSV, JSON, JSONL, Parquet, Arrow, XML, Text, Webdataset, and more
🖼️ Multi-modal data Built-in support for text, audio, image, video, PDF, and NIfTI (3D medical) data
🚀 Streaming mode Stream datasets without downloading — iterate over data on-the-fly with streaming=True (now up to 100x faster with Xet backend)
💾 HF Storage Buckets Read and write directly from/to Hugging Face Storage Buckets for mutable, large-scale raw data
🧠 AI Agent Traces Load and process AI agent traces (prompts, tool calls, responses) from the Hub
⚡ Apache Arrow backend Zero-copy memory-mapped storage — datasets naturally free you from RAM limitations
🔄 Smart caching Never wait for your data to process twice — cached results are automatically reused
📊 Multi-framework interoperability Native conversion to/from NumPy, Pandas, Polars, Arrow, PyTorch, TensorFlow, JAX, and Spark
🏎️ Multi-processing Fast parallel data processing with map(num_proc=N)
🔎 Search & index Built-in FAISS and Elasticsearch index support for similarity search
📦 JSON type Flexible JSON/structured data support with Json() feature type

Installation

With pip

🤗 Datasets can be installed from PyPi and should be installed in a virtual environment (venv or conda for instance):

pip install datasets

For the latest development version:

pip install "datasets @ git+https://github.com/huggingface/datasets.git"

With conda

conda install -c huggingface -c conda-forge datasets

Optional dependencies

🤗 Datasets supports various optional features via extras:

# For audio (torchcodec)
pip install datasets[audio]

# For image/video (Pillow, torchcodec)
pip install datasets[vision]

# For PDFs/NIfTI (pdfplumber, nibabel)
pip install datasets[pdfs,nibabel]

# For PyTorch/TensorFlow/JAX integration
pip install datasets[torch,tensorflow,jax]

For more details on installation, check the installation page.

Quick Start

🤗 Datasets is made to be very simple to use — the API is centered around a single function, datasets.load_dataset(dataset_name, **kwargs), that instantiates a dataset.

Here is a quick example:

from datasets import load_dataset

# Load a dataset and print the first example in the training set
squad_dataset = load_dataset('rajpurkar/squad')
print(squad_dataset['train'][0])

# Process the dataset - add a column with the length of the context texts
dataset_with_length = squad_dataset.map(lambda x: {"length": len(x["context"])})

# Tokenize the context texts (using a tokenizer from the 🤗 Transformers library)
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('bert-base-cased')

tokenized_dataset = squad_dataset.map(lambda x: tokenizer(x['context']), batched=True)

# Tokenize chat conversations with a chat template (using a model that supports chat templates)
# This is useful for fine-tuning instruction/chat models

# Load a popular chat dataset (ultrachat_200k contains ~200k AI assistant conversations)
chat_dataset = load_dataset('HuggingFaceH4/ultrachat_200k', split='train_sft')

chat_tokenizer = AutoTokenizer.from_pretrained('Qwen/Qwen2.5-7B-Instruct')

def tokenize_chat(examples):
    # Apply the chat template and tokenize in one step
    return chat_tokenizer.apply_chat_template(examples["messages"])

tokenized_chat_dataset = chat_dataset.map(tokenize_chat, batched=True)

Streaming mode

If your dataset is bigger than your disk or if you don't want to wait to download the data, you can use streaming:

# Stream the dataset without downloading anything
image_dataset = load_dataset('timm/imagenet-1k-wds', streaming=True)
for example in image_dataset["train"]:
    print(example["image"])
    break

Multi-modal data

🤗 Datasets supports a wide variety of data types out of the box:

# Audio dataset
dataset = load_dataset("openslr/librispeech_asr", "clean")

# Image dataset
dataset = load_dataset("ILSVRC/imagenet-1k")

# Video dataset
dataset = load_dataset("Shofo/shofo-tiktok-general-small")

# PDF documents
dataset = load_dataset("pixparse/pdfa-eng-wds")

# NIfTI (3D medical imaging)
dataset = load_dataset("dartbrains/localizer", "betas")

From local files

# Load from local CSV
dataset = load_dataset('csv', data_files='my_data.csv')

# Load from local Parquet
dataset = load_dataset('parquet', data_files='data/*.parquet')

# Load from a local directory (auto-detect format)
dataset = load_dataset('./path/to/data')

From Python objects

from datasets import Dataset

# From a dictionary
dataset = Dataset.from_dict({"text": ["Hello world", "How are you?"]})

# From a list
dataset = Dataset.from_list([{"text": "Hello world"}, {"text": "How are you?"}])

# From Pandas
import pandas as pd
df = pd.DataFrame({"col1": [1, 2, 3], "col2": ["a", "b", "c"]})
dataset = Dataset.from_pandas(df)

# From a generator
def gen():
    for i in range(10):
        yield {"value": i}
dataset = Dataset.from_generator(gen)

For more details on using the library, check the quick start guide and the specific pages on:

Core Classes

The library provides two main dataset classes:

Class Description
Dataset In-memory / memory-mapped dataset backed by Apache Arrow. Supports indexing, slicing, random access and caching.
IterableDataset Lazy, streamable dataset for large-scale / out-of-core processing. Supports streaming and infinite iteration.

Both are wrapped in DatasetDict / IterableDatasetDict for multi-split datasets (e.g., train/test/val).

Add a new dataset to the Hub

We have a very detailed step-by-step guide to add a new dataset to the number of datasets datasets already provided on the HuggingFace Datasets Hub.

You can find:

Disclaimers

You can use 🤗 Datasets to load datasets based on versioned git repositories maintained by the dataset authors. For reproducibility reasons, we ask users to pin the revision of the repositories they use.

If you're a dataset owner and wish to update any part of it (description, citation, license, etc.), or do not want your dataset to be included in the Hugging Face Hub, please get in touch by opening a discussion or a pull request in the Community tab of the dataset page. Thanks for your contribution to the ML community!

Contributing

We welcome contributions! Please see our Contributing Guide for details on:

BibTeX

If you want to cite our 🤗 Datasets library, you can use our paper:

@inproceedings{lhoest-etal-2021-datasets,
    title = "Datasets: A Community Library for Natural Language Processing",
    author = "Lhoest, Quentin  and
      Villanova del Moral, Albert  and
      Jernite, Yacine  and
      Thakur, Abhishek  and
      von Platen, Patrick  and
      Patil, Suraj  and
      Chaumond, Julien  and
      Drame, Mariama  and
      Plu, Julien  and
      Tunstall, Lewis  and
      Davison, Joe  and
      {\v{S}}a{\v{s}}ko, Mario  and
      Chhablani, Gunjan  and
      Malik, Bhavitvya  and
      Brandeis, Simon  and
      Le Scao, Teven  and
      Sanh, Victor  and
      Xu, Canwen  and
      Patry, Nicolas  and
      McMillan-Major, Angelina  and
      Schmid, Philipp  and
      Gugger, Sylvain  and
      Delangue, Cl{\'e}ment  and
      Matussi{\`e}re, Th{\'e}o  and
      Debut, Lysandre  and
      Bekman, Stas  and
      Cistac, Pierric  and
      Goehringer, Thibault  and
      Mustar, Victor  and
      Lagunas, Fran{\c{c}}ois  and
      Rush, Alexander  and
      Wolf, Thomas",
    booktitle = "Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing: System Demonstrations",
    month = nov,
    year = "2021",
    address = "Online and Punta Cana, Dominican Republic",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2021.emnlp-demo.21",
    pages = "175--184",
    abstract = "The scale, variety, and quantity of publicly-available NLP datasets has grown rapidly as researchers propose new tasks, larger models, and novel benchmarks. Datasets is a community library for contemporary NLP designed to support this ecosystem. Datasets aims to standardize end-user interfaces, versioning, and documentation, while providing a lightweight front-end that behaves similarly for small datasets as for internet-scale corpora. The design of the library incorporates a distributed, community-driven approach to adding datasets and documenting usage. After a year of development, the library now includes more than 650 unique datasets, has more than 250 contributors, and has helped support a variety of novel cross-dataset research projects and shared tasks. The library is available at https://github.com/huggingface/datasets.",
    eprint={2109.02846},
    archivePrefix={arXiv},
    primaryClass={cs.CL},
}

If you need to cite a specific version of our 🤗 Datasets library for reproducibility, you can use the corresponding version Zenodo DOI from this list.

datasets (huggingface/datasets)

Searching Database…

22.1K ·GitHub
这是什么东西?Hugging Face 出品的一个轻量级 Python 库,只需一行代码就能加载 HF Hub 上海量现成公共数据集,还能对 Hub 和本地数据做快速、可复现的预处理。
这是一个网站,还是需要安装的库?是一个库:用 pip 或 conda 装到你的 Python 环境里即可。数据集本身放在 Hugging Face Hub 上——库会把它们取进来,变成基于 Arrow 的 Dataset 对象,可以放进内存,也可以流式读取。
我该怎么把它跑起来?在 virtualenv 或 conda 环境里执行 pip install datasets(也有 conda 包和开发版可用),然后一行代码就能加载数据,比如 load_dataset('rajpurkar/squad')。
使用它需要先装 PyTorch 或 TensorFlow 吗?不需要——除了 Python 之外没有任何额外要求,而且数据集可以和 NumPy、Pandas、Polars、Arrow、PyTorch、TensorFlow、JAX、Spark 原生互转,所以你现有的训练框架都能直接用。
处理大型数据集需要一台高配置电脑吗?不需要——底层用 Apache Arrow 的零拷贝内存映射存储,数据集大小不受内存限制;就算数据比你的硬盘还大,也可以用 streaming=True 边迭代边读,不用先下载。
它是给机器学习研究者用的,还是普通 Python 开发者也能用?凡是训练或评估机器学习模型的人都能用——它直接把准备好的数据交给训练或评估的 dataloader,而且设计上就是让社区可以方便地添加和分享新数据集。
它能在我的 Windows 笔记本上运行,还是必须用 Linux 服务器?只要 Python 能跑的地方它就能跑——它就是一个普通的 pip 包,没有任何针对特定操作系统的内容,Windows、macOS 和 Linux 都没问题。
能用来处理我自己电脑上的文件吗,还是只能用 Hub 上的数据集?自己的文件同样可以用:支持 CSV、JSON、JSONL、Parquet、HDF5、XML、文本、PNG、JPEG、WAV、MP3、PDF 和 NIfTI,还有普通的 Python 对象——全都走同一套基于 map() 的预处理流程。
它能处理哪些类型的数据?文本(涵盖 467 种语言和方言的数据集)、图片、音频、视频、PDF 和 NIfTI 三维医学扫描影像,还有 AI 智能体的运行记录;多份数据划分会以 DatasetDict 的形式返回,包含 train/test/val。
每次运行脚本都要重新处理一遍我的数据吗?不用——处理结果会缓存并自动复用,耗时的 map() 操作只做一次;还可以用 map(num_proc=N) 让它跨多个进程并行处理。
我怎么把自己的数据集发布到 Hub 上?有一份详细的分步指南:可以用网页浏览器或 Python 上传,也可以用 Git 推送;数据集所有者随时可以通过数据集页面的 Community 标签页更新或删除自己的数据集。
Size
113.7 MB
Stars
22.1K
Age
6y
Commits · 90 Days