Token 是 LLM 处理文本的基本单位。你可以把它理解成"词的碎片"。
LLM 不会直接处理字符,而是把文本切分成 token。例如:
输入: "Hello world" Tokens: ["Hello", " world"]
输入: "Hello world" Tokens: ["Hello", " wor", "ld"]
同一个词在不同模型中可能被切分方式不同,取决于训练时使用的分词器。
| 分词器 | 特点 | 使用模型 |
|---|---|---|
| BPE | 字节对编码,高效 | GPT-2, GPT-3, RoBERTa |
| WordPiece | 子词单元 | BERT |
| Unigram | 基于语言模型 | T5, ALBERT |
| SentencePiece | 语言无关 | Llama, Qwen |
中文通常一个汉字 ≈ 1-2 个 token,英文平均 1 个词 ≈ 1.3 个 token。
"我爱人工智能" → 5 tokens "Artificial Intelligence" → 2 tokens
每个模型都有一些特殊用途的 token:
<BOS> / <EOS> - 序列开始/结束<PAD> - 填充,对齐批次长度<UNK> - 未知词<mask> - 掩码(BERT 使用)API 按 token 计费,模型有上下文长度限制(如 128K tokens)。理解 token 帮助你:
减少 Token 消耗:
估算规则:
import tiktoken
# GPT-4 的分词器
enc = tiktoken.encoding_for_model("gpt-4")
text = "Hello, 世界!"
tokens = enc.encode(text)
print(f"Token 数量: {len(tokens)}")
print(f"Tokens: {tokens}")
print(f"解码: {enc.decode(tokens)}")