TodayAI

Guides快速开始

用 Datasets 加载并处理第一个数据集

按照 Datasets 官方 Quickstart,用 load_dataset 拉取 MRPC,map 做 tokenize,再 with_format 交给 DataLoader。

基于 Hugging Face Docs 整理 · 官方资料 ↗

Datasets 解决的是「如何把 Hub 或本地数据变成可训练的张量流」。官方 Quickstart 覆盖 Audio / Vision / NLP;这篇走 NLP 路径:加载 MRPC,tokenize,格式化。

每个数据集都不一样,复杂任务可能还有清洗步骤;但 load_dataset → map → format 这条主线是通用的。

安装 Datasets

官方安装

bash
pip install datasets
pip install torch
pip install -U transformers

音频或图像数据再装 datasets[audio] / datasets[vision]。NLP 这条线有 transformers 的 tokenizer 即可。

加载第一个文本数据集

官方 NLP 示例用 Microsoft Research Paraphrase Corpus(MRPC):判断句对是否同义。

官方 load_dataset

python
from datasets import load_dataset

dataset = load_dataset("nyu-mll/glue", "mrpc", split="train")

用 map 做 tokenize

加载 BERT tokenizer,对 sentence1 / sentence2 截断并 padding。map(batched=True) 会批量加速。

官方 encode + map

python
from transformers import AutoModelForSequenceClassification, AutoTokenizer

model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

def encode(examples):
    return tokenizer(
        examples["sentence1"],
        examples["sentence2"],
        truncation=True,
        padding="max_length",
    )

dataset = dataset.map(encode, batched=True)
dataset = dataset.map(lambda examples: {"labels": examples["label"]}, batched=True)

tokenize 后会出现 input_ids、token_type_ids、attention_mask;再把 label 映射为模型期望的 labels。

格式化并交给 DataLoader

官方 with_format + DataLoader

python
import torch

dataset = dataset.select_columns([
    "input_ids",
    "token_type_ids",
    "attention_mask",
    "labels",
])
dataset = dataset.with_format(type="torch")
dataloader = torch.utils.data.DataLoader(dataset, batch_size=32)

batch = next(iter(dataloader))
print({k: v.shape for k, v in batch.items()})

到这里,数据集已经可以进入训练循环。完整微调示例见 Transformers 的 text classification 指南;模型推理入门可对照 用 Transformers 跑通第一次模型推理

容易踩的坑

忘记传 configuration 或 split

像 glue/mrpc 这类数据集必须带配置名与 split;查阅数据集卡确认。

列名仍是 label 导致训练报错

按官方把 label 映射为 labels,或在 collator 中显式处理。

map 很慢

使用 batched=True;重复处理时可开启缓存,避免每次全量重算。

官方资料

Hugging Face Docs

Quickstart