反复合并高频字节/字符对
从较小单位开始,逐步合并成高频子词。常见词更短,新词可由多个子词拼出。
ENGINEERING EXTENSION / DATA
tokenizer 的词表和切分规则影响序列长度、embedding 表大小,以及中文、代码和数字的切分粒度; 数据清洗与去重决定模型反复看到什么;验证集污染会让训练曲线看起来很好却不可信。
每个处理环节都应记录输入输出、统计、版本和拒绝原因,便于复查清洗结果。
Unicode 规范化、编码修复、HTML 清理、语言识别与元数据补全。保留原始文本,并记录清洗规则及输出摘要,以便复查不可逆改写。
原始文档 → 规范化文档 + 语言/来源元数据
语言分布、截断率、编码错误率、每来源文档/token 数量
全角/半角或代码缩进被误改;语言识别把混合文本误判。
切换字符、手工子词与 UTF-8 字节切分,观察同一句话的序列长度。下方 BPE 实验再展示怎样从语料学习合并规则。
TOKENIZATION MODE
这 8 个子词由手工指定。更少的 token 缩短了本句序列;质量、速度与 loss 还需在各自明确的评估条件下比较。
S = 8 for this sentenceV × d∝ 8 · L · Hkv本句含句号共 15 个 Unicode 字符;4K = 4,096 token。估算字符数 = ⌊4,096 × 15 ÷ token 数⌋,沿用本句的切分比例,未计模板与特殊 token 开销,不能代表其他文本的容量或理解能力。
从较小单位开始,逐步合并成高频子词。常见词更短,新词可由多个子词拼出。
优化候选子词及其概率,再求切分;不同语言、语料和词表大小会得到不同的 fertility(每个词或字符平均对应的 token 数,需声明分母)。
字节回退避免 OOV,但一个生僻字符可能变成多个 byte token,显著拉长上下文。
词表更大通常让常见文本更短,但 embedding 与输出头变宽,softmax 和权重内存也变大。
拖动来源比例。有效训练预算按 token 而不是 GB;同一段中文、代码和英文的 token 密度不同。
实际训练还要决定采样温度、课程顺序、各来源的 repetition cap 与质量分层。来源占比描述训练投入,对应能力的变化还要通过任务评估确认。
训练内去重改变“看多少遍”;训练/评估去污染保护“指标可信”。两者规则和目标不同。
成本低,能清理站点镜像与重复抓取;无法识别轻微改写的近重复。
识别模板页、转载与局部重复。阈值过松会误删相似但不同的事实文本。
更强但更贵,也可能把“同主题但不同答案”聚掉。需抽样验证误删。
至少做精确哈希、长 n-gram 与改写近邻;测试集和训练数据要隔离到版本级。
同一条训练样本反复出现,等价于隐式加权。去重会调整数据分布、重复次数和 token 预算。必须记录去重规则与各来源损失。
这是一条可审计的生产流水线。规则、模型过滤与人工抽查各有职责,流程需要固定每一步的判断标准与版本。
| 步骤 | 实际操作 | 应保留的证据 | 误伤与边界 |
|---|---|---|---|
| 采集与来源登记 | 记录文档来源、抓取时间、格式、许可/使用条件、内容 hash 与版本;保留原始快照。 | 来源清单、数据版本、解析失败率、文档/字节数。 | 网页正文、附件、代码和论坛对话需要各自的解析与样本规则。 |
| 解析与规范化 | HTML 正文抽取,去导航/广告模板;编码修复、Unicode 处理、OCR;保留代码缩进、数学和表格结构。 | 原始到清洗文档映射、解析器版本、字符/段落变化。 | 不可逆改写可能损伤事实或语法。OCR 错字不应被误认为可信原文。 |
| 启发式过滤 | 检查长度、重复行/字符、异常符号、模板占比、语言概率、垃圾页模式。 | 每条规则的拒绝原因与分语言/来源保留率。 | 代码和数学天然符号多;少数语言可能被通用语言检测器误杀。 |
| 模型质量筛选 | 分类器、教育价值/相关性评分、困惑度等 proxy;有时用教师标注小集再训练便宜过滤器。 | 标注标准、评分器 revision、阈值、抽样人工一致性。 | 低 perplexity 可能来自模板或重复;事实正确性需要额外核验。 |
| 敏感字段处理 | 用规则/识别器定位个人信息、凭据、异常内容,按数据用途决定删除、遮蔽或隔离。 | 策略版本、命中类型、抽查误报与漏报。 | 技术文档示例与真实秘密不同;规则需要语境与权限约束。 |
| 去重与聚类 | 规范化 hash 精确去重;n-gram shingles + MinHash/LSH 找近重复;必要时语义检索再核验。 | 重复簇、保留代表、阈值、跨来源/时间重合。 | LSH 用来发现候选,随后需核验内容是否重复;按重复簇拆分可减少 train/test 泄漏。 |
| 评测隔离 | 已知 benchmark 的题目/答案/解题片段匹配、时间/来源隔离、保留污染报告。 | 重叠策略、命中样本、评测集版本。 | 去污染扫描不能证明没有任何改写或未知测试污染;测试内容也不能拿去指导训练标签。 |
| 混合、分词与打包 | 按 token 和领域设混合权重/重复上限;锁定 tokenizer,按样本边界 pack/shard 并校验。 | 唯一/总 token、长度分布、重复次数、manifest、有效 loss token。 | 记录清洗后的分布与采样权重,评估其对模型的影响。 |
处理顺序可按成本和数据特点安排:先做便宜规则可节省昂贵评分,先聚类可避免反复给重复内容打分;多步过滤会相互影响,因此需要保存可回溯的中间统计。分布式数据任务通常按 shard 做确定性转换与校验,失败重跑也要保证同一文档不会重复进入预算。
顺序:阈值 → 评测隔离 → 重复簇保留首条。所有分数与标记均可在表中查看。
| 样本 / 来源 | 质量分 | 重复簇 / 重叠 | 处理结果 |
|---|
先抽样检查误删/漏删,再比较配方的训练结果。在同 token 或同 compute 预算下,保留原配方基线,逐项加入过滤器并评估 held-out loss、领域任务和长尾切片。每次改变规则都会改变训练分布,不能仅凭平均质量分升高下结论。
同时看被删掉的少数语言、代码、长文本和困难样本。过滤器的高分数据如果高度同质,模型可能更擅长常见格式却失去覆盖。FineWeb 这类公开工作值得学的是数据处理与消融证据的组织方式,具体阈值应按自己的数据分布校准。
例如预算 100B token,代码占 20%,代码唯一储备 5B,则期望处理 20B 代码 token,平均相当于四遍。提高代码占比也可能只是多重复同一小部分样本,相应能力收益要单独评估。长度、质量、去重与来源子群的覆盖要同时记录。
手工混合通常从业务和覆盖约束起步:保留语言/领域底线、设重复上限、按质量分层,再用小规模训练比较配方。课程学习还会改变顺序;先易后难、阶段性长上下文或末期高质量数据的收益都需验证,可通过固定预算的训练消融检验。
来源可能本身难预测、噪声多或 tokenizer 不利。要区分可学习的欠拟合、不可约难度和数据错误;盲目追逐高 loss 可能把预算浪费在噪声。
用小 reference 与 proxy model,基于相对 reference 的 excess loss 做域重加权,再把得到的 token 混合权重用于较大模型。权重来自代理训练中的域损失,迁移到目标规模后还需验证业务表现。
小模型可能缺少大模型已具备的能力,最优权重也会随 token 预算改变。用中间规模、同 tokenizer 与相近优化条件复核,确认配方是否仍有收益。
混合权重本身是超参数。反复据某个验证集选配方会间接适应它;需要保留独立测试、跨来源切片与污染证据。
| 比较配方时固定什么 | 另外记录什么 | 防止什么误归因 |
|---|---|---|
| 训练 token 或 FLOPs 预算 | 有效监督 token、唯一量与重复次数。 | 数据过滤导致量变了,却把多训练/少训练当质量变化。 |
| 模型与合理调参协议 | 初始化、LR/schedule、batch、precision、随机种子。 | 配方收益实际上来自优化配置变化。 |
| 评估协议与切片 | 主任务、长尾、语言、长度、恢复/停止行为。 | 平均值变好但某个关键群体退化。 |
| 问题 | 进入位置 | 可能影响 | 检查方向 |
|---|---|---|---|
| 错误或低质标注 | 训练样本与偏好标签。 | 学到错误事实、行为或比较标准。 | 标注规范、抽样复核、来源切片、分歧处理。 |
| 训练数据投毒 | 有意设计的恶意训练样本。 | 使参数学到攻击者期望的行为或触发模式。 | 来源与版本追溯、异常簇检查、行为对照和训练后回归。 |
| 评测污染 | 评测题目、答案、参考解或相关变体进入训练/选参。 | 评估独立性下降,泛化估计失真。 | 来源/题族/时间隔离、去重、隐藏测试与公开基准外验证。 |
| 间接提示注入 | 推理时检索文档或工具结果中的恶意指令。 | 让本次运行偏离授权目标。 | 指令与数据分离、最小权限、动作校验和审计。 |
Anthropic、英国 AISI 与 Alan Turing Institute 的 2025 年研究,在 600M–13B 模型和特定低风险后门目标下观察到少量恶意文档的影响。这说明平均质量或数据占比不足以排除局部异常;结果不能直接推广到任意前沿规模、攻击行为或防御设置。
治理需要数据清单、来源权限、处理版本和可回溯样本。发现异常时定位受影响数据与 checkpoint,检查正常行为和目标异常,再决定重训或修复范围。来源可信、过滤分高、去重完成分别提供部分证据,仍需组合行为测试。
本例按字符和词尾符号初始化四个词,用出现频数加权统计相邻对,每轮选择频数最高的一对,在词内从左到右合并。训练得到有顺序的 merge 列表;编码新词时应用这些已有规则,不根据新词重新训练。
训练频数:low×5、lower×2、newest×6、widest×3。词尾 </w> 是独立边界符号;频数相同按固定字符串顺序决定。
语料当前使用的符号数:;累计词表大小:
新词编码:
拼接还原:
| 轮次 | 合并对 | 加权次数 | 合并后的训练词 |
|---|
| 相邻对 | 加权频数 | 下一轮选择 |
|---|
同一词中可有重叠相邻对,统计时按出现位置计数,替换时需要约定不重叠合并。已有 merge 的优先级决定推理切分。
预分词、大小写和 Unicode 规范化决定哪些符号相邻。字节级 BPE、SentencePiece 与本例的字符词尾约定不同。
本例保留未知字符以展示路径;生产 tokenizer 可能使用 UNK、byte fallback 或完整字节表,必须按模型配置处理。
本例剥离词尾标记后拼接,可还原输入词。若前处理改变大小写、空格或规范形式,解码未必恢复原始字节。
清洗账本为人工数据;新增 BPE 按字符与词尾标记、加权频数和固定并列规则合并,无 byte fallback。当前使用符号与累计词表分开统计。数据配方收益需独立验证。