三:Tokenizer自测题¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247483759&idx=1&sn=6f482f37d9e5211af988ad2a9ee84fe0&chksm=f01eb216c7693b00152294b12bb28d3daf18bfaacdc079db1df01cefd8116b8552b18eef0a24#rd
覆盖范围¶
-
tokenizer 在 LLM 流程中的位置
-
token、vocabulary、token id、embedding table 的关系
-
字符级、词级、子词级 tokenizer 的优缺点
-
BPE、byte-level BPE、WordPiece、Unigram、SentencePiece
-
normalization、pre-tokenization、special tokens、chat template
-
OOV、UNK、中文、多语言、代码、数字、URL
-
tokenization 对上下文长度、成本和模型效果的影响
-
padding、truncation、attention mask、offset mapping
-
tokenizer 与模型 embedding 的兼容性
-
常见工程 bug 和面试追问
一、Tokenizer 基础¶
-
请用 1 分钟解释 tokenizer 在大语言模型中的作用。
-
LLM 为什么不能直接处理原始字符串?为什么需要 token id?
-
token、vocabulary、token id、embedding table 之间是什么关系?
-
tokenizer 的 encode 和 decode 分别做什么?
-
为什么同一句话在不同模型中可能被切成不同 token?
-
tokenizer 是否是模型训练后可以随意替换的组件?为什么?
-
词表大小
V会影响模型哪些参数和计算? -
为什么上下文窗口通常按 token 计数,而不是按字符或词计数?
二、粒度选择:字符、词、子词¶
-
字符级 tokenizer 的优点和缺点是什么?
-
词级 tokenizer 的优点和缺点是什么?
-
子词级 tokenizer 为什么是现代 LLM 的主流选择?
-
子词 tokenizer 如何缓解 OOV 问题?
-
“可编码”是否等于“模型一定理解得好”?请解释。
-
子词粒度过细和过粗分别有什么问题?
-
tokenizer 的 token efficiency 是什么?为什么重要?
三、Tokenizer Pipeline¶
-
一个典型 tokenizer pipeline 包含哪些阶段?
-
normalization 的作用是什么?请举例说明。
-
normalization 可能带来哪些信息损失?
-
pre-tokenization 的作用是什么?它和真正的 subword segmentation 有什么区别?
-
为什么很多 GPT 类 tokenizer 会把词前空格作为 token 的一部分?
-
tokenizer 训练阶段和使用阶段有什么区别?
-
tokenizer 训练语料的语言和领域分布会如何影响词表?
四、BPE 与 Byte-level BPE¶
-
BPE 的训练流程是什么?
-
BPE 中的 merge rule 是什么?编码新文本时是否会重新统计 pair 频率?
-
请用一个简单例子说明 BPE 如何从字符逐步合并成子词。
-
BPE 为什么能在有限词表下处理未见词?
-
byte-level BPE 和普通字符级 BPE 有什么区别?
-
byte-level BPE 为什么几乎可以避免
<unk>? -
byte-level tokenizer 对中文、emoji 或罕见字符可能有什么代价?
-
GPT 类模型中常见的 byte-level BPE 对空格和英文词有什么特殊影响?
五、WordPiece、Unigram 与 SentencePiece¶
-
WordPiece 的核心思想是什么?它和 BPE 的直觉区别是什么?
-
WordPiece 中
##前缀通常表示什么? -
Unigram tokenizer 的核心思想是什么?
-
Unigram 和 BPE 在训练方向上有什么不同?
-
SentencePiece 的重要特点是什么?为什么它对中文、日文等无空格语言友好?
-
SentencePiece 中
▁符号通常表示什么? -
请对比 BPE、WordPiece、Unigram 三者的核心差异。
六、Special Tokens 与 Chat Template¶
-
special tokens 是什么?请列举常见 special tokens 及其作用。
-
BOS、EOS、PAD、UNK 分别是什么?
-
BERT 中
[CLS]、[SEP]、[MASK]分别有什么作用? -
decoder-only chat model 中 role tokens 或 turn separators 为什么重要?
-
chat template 和 tokenizer 有什么关系?
-
如果 chat template 用错,模型可能出现哪些问题?
-
为什么 EOS token 对生成停止很重要?
-
decode 时
skip_special_tokens=True可能解决什么问题?又可能隐藏什么问题?
七、中文、多语言、代码与结构化文本¶
-
中文 tokenizer 为什么不能简单照搬英文按空格分词的思路?
-
同样长度的中文、英文、代码在不同 tokenizer 下 token 数为什么可能差异很大?
-
多语言 tokenizer 的词表分配会带来哪些公平性或效率问题?
-
代码 tokenizer 需要特别关注哪些字符或结构?
-
数字、日期、URL、JSON 被切得很碎会带来哪些影响?
-
emoji、罕见符号、乱码为什么会考验 tokenizer 的鲁棒性?
八、训练、微调与标签对齐¶
-
为什么微调时必须使用与基座模型匹配的 tokenizer?
-
新增 special token 或领域 token 后,模型侧需要做什么?
-
什么是 resize token embeddings?什么时候需要?
-
token-level 任务中,subword 切分会如何影响标签对齐?
-
offset mapping 是什么?它在 NER、QA、信息抽取中有什么用?
-
对一个词被切成多个 subword 的情况,标签可以有哪些处理策略?
-
SFT 中 prompt token、answer token、padding token 是否都应该参与 loss?这和 tokenizer 有什么关系?
九、Padding、Truncation 与 Attention Mask¶
-
padding、truncation、attention mask 分别是什么?
-
padding token 如果参与 attention 或 loss,会带来什么问题?
-
left padding 和 right padding 在 decoder-only 推理中有什么差异和风险?
-
截断策略设计不当会导致什么问题?
-
tokenizer 输出的
input_ids、attention_mask、labels通常各自表示什么?
十、工程排错与面试追问¶
-
如果模型输出中出现大量
<s>、</s>、`` 这类符号,可能是什么原因? -
如果同一段中文在某模型中 token 数异常多,可能是什么原因?
-
如果微调后模型完全不会说话或输出乱码,tokenizer 相关原因有哪些?
-
如果新增 token 后训练报 embedding shape mismatch,应该如何排查?
-
tokenizer 会如何影响 API 成本和推理延迟?
-
你会如何评估一个 tokenizer 对某个领域是否合适?
-
请总结 subword-based tokenizer 的核心价值、主要算法和工程注意事项。
预览时标签不可点<div class="