Skip to content

参考

基于 Hugging Face Datasets 官方文档(huggingface.co/docs/datasets,API Reference)与 Tokenizers 官方文档(huggingface.co/docs/tokenizers,components)整理

速查

  • Datasets 核心 APIload_dataset / Dataset.map / Dataset.filter / Dataset.select / Dataset.shuffle / Dataset.save_to_disk / load_from_disk / push_to_hub
  • Datasets 数据结构Dataset(单 split)/ DatasetDict(多 split)/ IterableDataset(流式)
  • Tokenizers 核心 APITokenizer / Tokenizer.train / Tokenizer.from_pretrained / Tokenizer.encode / Tokenizer.encode_batch / Tokenizer.decode / Tokenizer.save / Tokenizer.from_file
  • Tokenizer 组件Normalizer / PreTokenizer / Model / PostProcessor / Decoder(+ Trainer
  • 三 ModelBPE / WordPiece / Unigram / WordLevel
  • 三 TrainerBpeTrainer / WordPieceTrainer / UnigramTrainer
  • 底层:Datasets=Apache Arrow;Tokenizers=Rust(<20s/GB tokenize)
  • 安装pip install datasets tokenizers
  • 当前版本:Datasets v3.x 主线 / Tokenizers v0.2x 主线
  • import 名from datasets import load_dataset, Dataset / from tokenizers import Tokenizer

load_dataset 来源对照

来源写法说明
Hub 数据集load_dataset("namespace/ds")返回 DatasetDict
Hub 指定 splitload_dataset("ds", split="train")返回 Dataset
Hub 切片load_dataset("ds", split="train[:10%]")按百分比/行
CSVload_dataset("csv", data_files="f.csv")表格
JSON/JSONLload_dataset("json", data_files="f.json")嵌套用 field=
Parquetload_dataset("parquet", data_files="f.parquet")列式、高效
文本load_dataset("text", data_files="f.txt")每行一条
Arrowload_dataset("arrow", data_files="f.arrow")内部格式
Lanceload_dataset("lance", ...)多模态表格式
HDF5load_dataset("hdf5", data_files="f.h5")数值数据
WebDatasetload_dataset("webdataset", data_files="*.tar", streaming=True)TAR 归档,大图集
SQLDataset.from_sql(query, con=uri)数据库
Python dictDataset.from_dict({...})内存
Python listDataset.from_list([{...}])内存
GeneratorDataset.from_generator(gen)支持超内存
PandasDataset.from_pandas(df)DataFrame
远程data_files=["https://..."]["hf://..."]HTTP/HF URL

Dataset 主要方法

方法作用
ds[i] / ds[i:j] / ds["col"]索引/切片/取列(零拷贝)
ds.map(fn, batched, num_proc, ...)应用函数(返回新 Dataset)
ds.filter(fn, with_indices)过滤行
ds.select(indices)按下标取行
ds.shuffle(seed)随机打乱(产生 indices mapping)
ds.sort(col)按列排序
ds.flatten_indices()重写磁盘恢复顺序读速度
ds.train_test_split(test_size)切训练/测试
ds.shard(num_shards, index)分片
ds.rename_column(old, new)重命名列
ds.remove_columns(cols) / select_columns(cols)删/选列
ds.cast(features) / cast_column(col, feat)改类型
ds.flatten()展平嵌套列
ds.with_format("torch"/"numpy"/"pandas")设张量格式
ds.with_transform(fn)即时变换
ds.save_to_disk(path) / load_from_disk(path)本地 Arrow
ds.push_to_hub(repo)上传 Hub
ds.to_csv/to_json/to_parquet/to_pandas导出

IterableDataset vs Dataset

维度DatasetIterableDataset
随机访问 ds[i]支持不支持
len(ds)
shuffle全局(产生 mapping)近似(buffer)
map/filter/select返回 Dataset返回 IterableDataset
内存映射是(Arrow)流式产出
适用大多场景超大/在线数据
Trainer 需 max_steps

Tokenizer 组件速查

Normalizer(可选)

作用
Lowercase转小写
NFD/NFKD/NFC/NFKCUnicode 归一化
StripAccents去重音符号
Strip去首尾空白
Replace(pattern, content)正则替换
BertNormalizerBERT 风格(clean_text/handle_chinese_chars/strip_accents/lowercase)
Sequence([...])组合多个

PreTokenizer

作用典型
Whitespace按词边界(\w+|[^\w\s]+通用
WhitespaceSplit按空白切通用
ByteLevel字节级(256 字符,无 OOV)GPT/LLaMA
Punctuation隔离标点多种
Metaspace用 ▁(U+2581) 替代空格SentencePiece/T5
CharDelimiterSplit(c)按指定字符切自定义
Digits隔离数字多种
Split(pattern, behavior)通用切分(正则/字符串)灵活
Sequence([...])组合

Model(必填)

算法unk/续接代表
BPE字节对编码unk_tokenGPT、LLaMA
WordPiece贪心最长匹配unk_token + ## 续接BERT
Unigram概率最大化子词集unk_token(可无)T5、ALBERT
WordLevel纯词表映射unk_token(OOV 多)教学

Trainer

对应 Model关键参数
BpeTrainerBPEvocab_size/special_tokens/min_frequency/show_progress
WordPieceTrainerWordPiece同上 + continuing_subword_prefix/end_of_word_suffix
UnigramTrainerUnigramvocab_size/special_tokens/shrinking_factor/unk_token

PostProcessor

作用
TemplateProcessing模板化插特殊 token([CLS] $A [SEP]),设 type_id
BertProcessingBERT 风格([CLS]/[SEP]
RobertaProcessingRoBERTa 风格(&lt;s&gt;/&lt;/s&gt; + 前缀空格)
ByteLevelProcessingGPT 字节级

Decoder

作用
ByteLevel还原 ByteLevel PreTokenizer
WordPiece还原 ## 续接
Metaspace还原 ▁ 替代
BPEDecoderBPE 还原(前缀空格处理)
Sequence组合

Tokenizer 主要方法

方法作用
Tokenizer(model)用 Model 构造
tokenizer.train(files, trainer)从语料训练词表
tokenizer.from_pretrained(id)加载已训练(Hub/本地)
tokenizer.encode(seq) / encode(seq, pair)文本→Encoding
tokenizer.encode_batch(list)批量编码
tokenizer.decode(ids) / decode_batch(list)ids→文本
tokenizer.token_to_id(tok) / id_to_token(id)双向查词表
tokenizer.get_vocab()取词表 dict
tokenizer.save(path) / from_file(path)保存/加载
tokenizer.add_tokens([...])增加 token

Encoding 对象含:ids/tokens/offsets/attention_mask/type_ids/special_tokens_mask/overflowing

版本与兼容

近期要点

版本线状态关键点
Datasetsv3.x(2026 主线)活跃Arrow 内存映射;streaming 强化;push_to_hub 用 Parquet
Tokenizersv0.2x(2026 主线)活跃Rust 实现;BPE/WordPiece/Unigram;对齐追踪

兼容性

  • Python:≥ 3.9(推荐 3.10–3.12)
  • 依赖(Datasets)pyarrow(Arrow 后端)/ huggingface_hub(Hub 交互)/ multiprocess/ fsspec(远程文件)/ pandas(可选)/ numpy
  • 依赖(Tokenizers):Rust 编译产物(pip 装预编译 wheel),无 Python 编译依赖
  • import 名from datasets import load_dataset, Dataset, DatasetDictfrom tokenizers import Tokenizer

与同类库对比

维度DatasetspandasTokenizersjieba/sacrebleu
定位ML 数据集加载/处理表格分析子词分词(Rust)规则分词/评测
规模超内存(Arrow mmap)受限于内存极速(Rust)Python 速度
格式Arrow/Parquet/csv/json/...DataFrameBPE/WordPiece/Unigram词/字切分
与 Hub 集成一行 load 20 万+ 数据集一行 from_pretrained
场景训练数据管线通用分析模型分词中文分词/指标

官方资源