分词系统提供了一个统一的接口,用于将文本转换为可由 transformer 模型处理的 token。它支持快速(基于 Rust)和慢速(基于 Python)分词器,处理特殊 token,管理词汇表,并支持不同分词格式之间的转换,包括 GGUF 文件。
有关模型加载和配置的信息,请参阅 基础类和模型加载。有关自动选择分词器的 Auto Classes 的详细信息,请参阅 Auto Classes 系统。
分词系统围绕分层类结构构建,基础类提供通用功能,特定实现则针对不同分词器类型。
来源: src/transformers/tokenization_utils_base.py15-891 src/transformers/tokenization_utils_fast.py82-93 src/transformers/tokenization_utils.py1-700
来源: src/transformers/tokenization_utils_base.py2500-2700 src/transformers/tokenization_utils_fast.py200-400
PreTrainedTokenizerBase 类是所有分词器的基础,提供了编码、解码和批量处理的核心功能。
关键方法
__call__() - 主要分词接口encode() - 将文本转换为 token IDdecode() - 将 token ID 转换回文本batch_encode_plus() - 批量分词,支持填充/截断来源: src/transformers/tokenization_utils_base.py2500-2800 src/transformers/tokenization_utils_base.py3000-3200
SpecialTokensMixin 处理特殊 token,例如 [CLS]、[SEP]、<pad>、<unk> 等。
特殊 token 属性
bos_token - 序列开始eos_token - 序列结束unk_token - 未知 tokensep_token - 分隔符 tokenpad_token - 填充 tokencls_token - 分类 tokenmask_token - 掩码 tokenadditional_special_tokens - 自定义特殊 token来源: src/transformers/tokenization_utils_base.py847-900 src/transformers/tokenization_utils_base.py858-878
BatchEncoding 类封装了分词器的输出,并提供了处理分词序列的实用方法。
主要功能
来源: src/transformers/tokenization_utils_base.py192-790
快速分词器基于 HuggingFace 的 tokenizers 库(用 Rust 编写),可显著提高性能。
优点
来源: src/transformers/tokenization_utils_fast.py98-127 src/transformers/convert_slow_tokenizer.py127-133
慢速分词器是纯 Python 实现,提供兼容性和自定义选项。
用例
来源: src/transformers/tokenization_utils.py200-500
该分词系统支持从 GGUF (GPT-Generated Unified Format) 文件加载分词器,从而实现与量化模型的集成。
来源: src/transformers/tokenization_utils_fast.py121-127 src/transformers/integrations/ggml.py36-110 src/transformers/modeling_gguf_pytorch_utils.py37-53
该系统包含用于 GGUF 文件中不同分词器类型的转换器。
来源: src/transformers/integrations/ggml.py400-600 src/transformers/convert_slow_tokenizer.py400-1000
Llama 分词器使用 SentencePiece,支持慢速和快速实现。
关键文件
LlamaTokenizer - 基于 SentencePiece 的慢速分词器LlamaTokenizerFast - 具有 ByteFallback 的快速分词器特性
<s>、</s>、<unk> 的特殊处理来源: src/transformers/models/llama/tokenization_llama.py56-130 src/transformers/models/llama/tokenization_llama_fast.py46-100
T5 分词器处理序列到序列任务,并对前缀进行特殊处理。
特性
来源: src/transformers/models/t5/tokenization_t5.py45-80 src/transformers/models/t5/tokenization_t5_fast.py40-80
来源: src/transformers/tokenization_utils_base.py1800-2000 src/transformers/tokenization_utils_fast.py130-200
来源: src/transformers/tokenization_utils_base.py2500-2700 src/transformers/tokenization_utils_fast.py200-400
| 组件 | 主要文件 |
|---|---|
| 基类 | tokenization_utils_base.py |
| 快速分词器 | tokenization_utils_fast.py |
| 慢速分词器 | tokenization_utils.py |
| 转换工具 | convert_slow_tokenizer.py |
| GGUF 集成 | integrations/ggml.py, modeling_gguf_pytorch_utils.py |
| 模型分词器 | models/{model}/tokenization_{model}.py |
| 测试 | tests/test_tokenization_common.py |
来源: src/transformers/tokenization_utils_base.py1-50 src/transformers/tokenization_utils_fast.py1-50 src/transformers/integrations/ggml.py1-50