本文档涵盖了Llama模型变体中使用的分词和量化系统。分词系统使用基于tiktoken的BPE(字节对编码)处理文本编码/解码,而量化系统则为模型权重提供FP8和INT4混合精度优化。
有关模型加载和生成管道的信息,请参阅模型加载和生成。有关提示格式和特殊令牌用法,请参阅提示格式。
分词和量化系统在Llama模型管道中作为基础预处理和优化层运行。分词将文本输入转换为数值令牌,而量化则通过权重压缩减少模型内存占用。
来源:models/llama4/tokenizer.py113-273 models/llama4/scripts/quantize.py45-213
分词系统使用基于tiktoken的BPE编码和模型特有的特殊令牌。Llama 3和Llama 4都实现了相似的核心功能,但在令牌词汇表和特殊令牌集方面有所不同。
来源:models/tokenizer_utils.py15-41 models/llama3/tokenizer.py46-210 models/llama4/tokenizer.py113-273
| 组件 | Llama 3 | Llama 4 |
|---|---|---|
| 保留特殊令牌 | 256 | 2048 |
| BPE模式 | 简单正则表达式 | O200K_PATTERN |
| 视觉令牌 | 仅<|image|> | 完整视觉令牌集 |
| 推理令牌 | 无 | <|reasoning_thinking_start|>, <|reasoning_thinking_end|> |
| 文本处理 | 基本特殊令牌 | 扩展训练后令牌 |
Llama 3分词器使用简化的令牌集,专注于基本文本处理
来源:models/llama3/tokenizer.py53-116
Llama 4分词器扩展了多模态和推理功能
来源:models/llama4/tokenizer.py48-180
函数load_bpe_file()处理从Base64编码令牌文件加载核心BPE模型
来源:models/tokenizer_utils.py15-41
量化系统为Llama 4 MoE模型提供使用FP8和INT4混合精度技术的权重压缩。量化目标是Transformer块中的MoE专家权重(w1、w2、w3)。
来源:models/llama4/scripts/quantize.py45-213
FP8混合量化使用FBGEMM操作对MoE专家权重进行高效的逐行量化
FP8量化使用特定的键转换来映射专家权重
w1 → moe_w_in_eD_Fw2 → moe_w_out_eF_Dw3 → moe_w_swiglu_eD_F来源:models/llama4/scripts/quantize.py174-190
INT4混合量化使用4位权重和BF16激活函数提供更高的压缩比
INT4量化通过批处理方式处理多维权重
来源:models/llama4/scripts/quantize.py143-172
分词系统包含复杂的文本预处理,以处理tiktoken的限制
预处理解决了两个主要限制
来源:models/llama4/tokenizer.py30-40 models/llama4/tokenizer.py250-272
分词和量化系统通过标准化接口与更广泛的模型架构集成
来源:models/llama4/scripts/quantize.py100-113 models/llama4/tokenizer.py181-248