L大语言模型从理论到实践
阅读 PDF ↗
CHAPTER 18

训练数据工程基础

模型接触的不是抽象的“互联网知识”,而是经过采集、解析、筛选、变换和采样后形成的一组训练事件。两个系统即使采用同一架构和相同的原始文件,也可能因为样本边界、去重规则、标签掩码和混合比例不同而优化不同的目标。因此,数据工程(Data Engineering)既要保证处理链能够持续运行,也要解释每个训练词元为何进入数据集、代表什么分布,以及能否追溯到原始来源。

第4章《文本表示》已经完成数据主线的第一部分:从单条文本记录出发,定义样本、词元编号、特殊词元、批输入与嵌入表示。本章进入第二部分,把视角从“一条样本怎样进入模型”扩大到“海量异构来源怎样成为可治理、可复现、可消费的训练版本”。这些原则同时适用于预训练和后训练;第23章《预训练原理》进一步讨论预训练的数据配比与词元预算,第20章第25章第26章分别展开指令、偏好和可验证推理数据。因此,本章不重复分词算法本身,而以各训练阶段共用的原始资料到训练制品生产链为主线。

第8章《自回归语言建模》已经定义了条件概率与有效预测位置;这里进一步说明,数据系统如何决定这些位置。数据质量并不等同于文件可读性,数据版本也不等同于目录名称。只有将统计对象、语义结构、治理条件与物理存储分别建模,才能判断一次训练实际使用了什么。

本章的主要符号见表18.1。概率按记录还是按词元计算,将在使用处单独声明;容量统一用词元位置计量。

表 18.1 主要符号与计量对象

符号 含义与范围
\(P_\star,P_0,Q\) 目标、原始采集及最终训练分布
\(A,B\) 用于比较的有限片段集合
\(J(A,B),\tau\) Jaccard 相似度与确认阈值,取值 \([0,1]\)
\(m,b,r\) 签名行数、带数、每带行数,\(m=br\)
\(n_i,p_i,q_i\) 来源规模、实际采样概率、目标风险权重
\(\alpha\) 来源混合指数,本章取 \([0,1]\)
\(L_i,M,T\) 样本长度、总长度、单块容量,单位为词元位置
\(K,R,P\) 块数、丢弃尾长、填充位置数

18.1统计对象及数据分类

样本依赖性

设目标应用中的样本分布为 \(P_\star\),原始采集分布为 \(P_0\),处理链最终提供给训练器的分布为 \(Q\)。训练风险 \(\mathbb E_{z\sim Q}[\ell_\theta(z)]\) 与目标风险 \(\mathbb E_{z\sim P_\star}[\ell_\theta(z)]\) 一般不同。网站可访问性、抓取频率、语言识别器和长度筛选都会改变 \(Q\)。数据量增加只能降低对当前采样过程的部分估计误差,不能自动消除分布偏移。

样本单位(Sampling Unit)需要随任务明确:文档、对话、问题家族、用户或时间窗口都是不同单位。同一篇文档的多个切片、同一问题的不同改写、同一对话的多个轮次具有相关性。把它们当作独立样本,会夸大有效信息量,也会使随机划分产生泄漏。

考虑 \(G\) 个相互独立的组,每组含 \(m\) 个观测,组内观测方差均为 \(\sigma^2\),任意两个不同观测的相关系数均为 \(\rho\),总数 \(N=Gm\)。样本均值的方差为

\begin{align} \operatorname{Var}(\bar Z) &=\frac{G[m\sigma^2+m(m-1)\rho\sigma^2]}{G^2m^2}\tag{18.1}\\ &=\frac{\sigma^2}{N}\,[1+(m-1)\rho]. \tag{18.2}\end{align}

相对于独立观测,设计效应(Design Effect)为 \(1+(m-1)\rho\),等效样本量为 \(\frac{N}{[1+(m-1)\rho]}\)。例如,每个问题生成五个答案且 \(\rho=0.5\),一万个观测的均值方差相当于约 \(3333\) 个独立观测。此式依赖等组大小、等相关及组间独立假设;它说明重复扩增可能增加存储和训练成本,却不同比例地增加信息。

六个可组合的分类维度

“这是 JSONL 数据”“这是推理数据”“这是监督微调数据”分别回答不同问题。若把它们放入同一分类树,就无法表达一个 JSONL 文件同时包含数学领域、多轮消息和偏好样本。应采用六个可以组合的维度。

  1. 物理格式描述字节如何编码和组织,例如纯文本、JSONL、CSV、Parquet、Arrow IPC 或 TAR。格式影响压缩、随机访问和扫描成本,不定义训练目标。

  2. 逻辑样本模式描述记录的语义结构,例如文档、平行句对、指令与回答、消息序列、偏好对、强化学习提示或推理轨迹。

  3. 消费目标描述如何使用记录,例如分词器训练、预训练、监督微调、奖励学习、偏好优化、带可验证奖励的强化学习、蒸馏或评估。

  4. 内容与能力描述语言、领域以及代码、数学、工具使用、安全等能力属性。一条记录可以具有多个标签;标签也可能带有置信度。

  5. 模态描述文本、图像、音频和视频等内容,以及跨模态对应关系。时间戳、图像区域和媒体引用属于语义的一部分。

  6. 治理与血缘描述来源快照、使用条件、允许用途、敏感信息、保留期限、质量结论和删除关系。

思维链(Chain of Thought,CoT)是推理过程的一种表达形式,不是物理格式,也不唯一决定损失函数。同一份推理轨迹可以产生仅学习最终答案的样本、学习完整轨迹的样本,或只保留问题供强化学习使用。消费目标改变时,应生成有明确版本的视图,不能直接修改原始记录来满足最后一个使用者。

类型化记录及适配

数据模式(Schema)定义字段类型、必要关系和约束。统一数据系统宜采用“公共信封加类型化载荷”:公共信封记录逻辑标识、来源、模式版本、语言、模态和治理信息;载荷由明确的类型标记选择文档、消息、偏好等结构。这样的类型化记录(Typed Record)可以同时检查公共约束和任务约束。

例如,一条偏好记录含公共提示、被偏好的回答和另一回答,二者必须在同一提示语境中可比较;它不能被当作两条无关联文本分别筛选。工具对话需要保存消息顺序、调用标识与返回结果之间的配对。推理记录应区分过程、最终答案和验证器结论;媒体记录应保留资源引用与对齐信息。把所有内容先展平为文本再尝试恢复结构,会丢失这些关系。

模式适配器(Schema Adapter)负责从指定来源版本转换到统一模式。它必须声明输入版本、输出版本、字段映射和失败条件。未知模式进入隔离队列,不能根据几个字段名猜测语义后继续训练。常见指令格式与消息格式即使名称相同,也可能在角色、工具消息或媒体字段上存在版本差异。1

记录标识 \(\texttt{record\_id}\) 与分组标识 \(\texttt{group\_id}\) 也应分离:前者标识逻辑记录,后者表达不能跨越训练与评估边界的家族。不同来源的局部编号可能相同,因此记录定位至少包含来源数据集标识和局部记录标识。重复来源和派生视图形成多对多关系,而非一条可覆盖的“来源字符串”。

18.2数据版本构建

数据层及控制层

数据血缘(Data Lineage)记录对象由哪些父对象经过哪些变换产生。图18.1把字节处理与控制信息分开:数据层负责变换内容,控制层负责确定变换为何被允许、采用哪个版本以及何时可发布。

原始数据、语义记录与训练制品分层。虚线表示控制约束,实线表示内容变换。
图 18.1 原始数据、语义记录与训练制品分层。虚线表示控制约束,实线表示内容变换。

原始层保存可追溯的快照,规范层保存经过解析并保持语义的记录,训练层保存针对特定分词器、目标和布局物化的制品。三者不应互相替代:训练词元通常不能恢复解析前的字节,清洗文本也未必能够重建媒体、许可记录和原始边界。保留层级不意味着无限保存;各层仍应遵循明确的保留与删除策略。

确定性及不同种类的哈希

确定性变换(Deterministic Transformation)要求在输入及显式配置相同的条件下产生相同结果。配置包括代码、模式适配器、规范化规则、词表、特殊词元、随机种子以及所有影响内容的外部模型版本。只保存种子而不固定输入顺序、随机数算法和并发归并规则,不能保证输出一致。

必须区分原始字节哈希、提取文本哈希、规范记录哈希、分词器输入哈希和去重规范化哈希。它们回答不同的相等性问题。去重时忽略空白,可能适合普通散文,却会破坏代码缩进或表格含义。规范记录的哈希需要固定序列化规则,例如字段排序、编码、空值与数字表示;否则语义相同的对象可能得到不同摘要。

密码学哈希可以检测相对于可信摘要的内容变化,但不能证明来源允许使用,也不能单独证明清单的真实性。如果攻击者同时替换内容与摘要,内部一致性仍然成立。可信注册表或签名等机制属于控制层;不能用一个内容指纹替代来源治理。

18.3质量、隐私及评估污染

过滤后的学习分布

设输入样本分布为 \(P(z)\),样本以概率 \(a(z)\in[0,1]\) 被接受,则接受后的分布为

\[ Q(z)=\frac{a(z)P(z)}{\mathbb E_{P}[a(Z)]},\qquad 0\le a(z)\le1,\quad \mathbb E_P[a(Z)]>0. \tag{18.3}\]

若平均接受率为零,处理结果是空数据集,不能定义上述归一化分布;发布流程应报告无可用样本并停止该分支。 这表明质量筛选既减少不合格内容,也重新加权语言、领域和表达方式。若质量评分器偏好某一种文体,保留率提高并不必然代表目标能力提高。阈值应按记录类型和目标用途解释:代码的有效性、对话的角色一致性、偏好对的可比较性与网页的正文密度不是同一个量。

解析、规范化、敏感信息处理和质量筛选应具有分开的阶段及原因码。解析失败意味着无法可靠解释结构;质量拒绝意味着结构可解释但不满足某项条件。将所有失败统称为“坏数据”,会使源格式升级与真实质量变化无法区分。统计时还应声明分母:源记录保留率、规范记录保留率和有效词元保留率可能给出截然不同的结论。

个人可识别信息(Personally Identifiable Information,PII)检测可以结合规则、实体识别和上下文判定,但模式匹配只能覆盖已定义模式。替换电话号码不等于匿名化,多个非敏感字段组合也可能重新识别个人。审计日志应保留稳定原因和定位信息,避免把被移除的秘密再次写入普通日志。对敏感记录采用隔离或删除后,还需要同步处理其派生视图。

污染及重复

评估污染(Evaluation Contamination)指评估信息通过训练、调参或数据选择进入被评估系统,使结果不能解释为预期的独立泛化。问题全文、答案、解释、翻译和近似改写都可能构成信息通道。仅检查整条记录的哈希相等,只排除了很窄的一类重叠。

设评估题的片段集合为 \(A\),训练文档为 \(B\)。当短题被嵌入长文档时,Jaccard 相似度可能很低,而包含率(Containment) \(C(A,B)=\frac{|A\cap B|}{|A|}\) 仍为 \(1\)。因此污染检查需要与任务匹配的粒度:整记录、片段、问题家族以及答案相关内容。包含率与相似度的区分见 Broder 的原始研究(Broder 1997)

污染检查结论应表述为“在所用检测方法、阈值和参考集合下未发现匹配”,不能表述为没有污染。保留评估参考集的访问边界也很重要:不能为了检测而将答案完整写入通用训练日志或生成提示。数据去重研究显示训练重复与记忆、训练评估重叠存在值得控制的联系(Lee 等 2022);这不意味着去重能够消除全部隐私风险或评估偏差。

18.4精确去重及近似去重

精确相等的判定对象

精确去重(Exact Deduplication)先对指定对象进行确定性规范化,再比较其摘要;需要排除碰撞时进一步比较规范化字节。对象可以是文档、对话或完整偏好对。对结构化记录只比较回答文本,会把语境不同的合法样本误判为相同。

重复记录的删除应保留所有来源别名与治理关系。一个内容在多个位置出现,并不使这些来源的使用条件自动相同。代表记录的选择需明确优先级,例如允许用途、质量、来源可信度、时间与稳定标识的顺序。不能让并发完成顺序决定保留者,否则同一输入会产生不同训练版本。

MinHash 去重

把规范文本切成长度为 \(q\) 的连续片段,称为连续片段(Shingle),得到集合 \(A\)。这里采用集合而非多重集,重复片段出现次数不增加权重。两条记录的Jaccard 相似度(Jaccard Similarity)为

\[ J(A,B)=\frac{|A\cap B|}{|A\cup B|}. \tag{18.4}\]

\(q\) 太小会使常用表达大量重合,太大则对局部改写敏感。空集合需要另行约定,例如送入短文本专门处理;不能在公式中执行 \(\frac{0}{0}\)

最小哈希的理想化模型

片段来自有限全集,\(A\ne\varnothing\)\(B\ne\varnothing\);空集合已由前述短文本流程单独处理。每次独立地对全集作均匀随机排列 \(\pi\),并以排列次序最小的片段作为集合签名。推导暂不考虑有限哈希值的碰撞及非理想哈希族偏差。

最小哈希(MinHash)用 \(h_\pi(A)=\argmin_{x\in A}\pi(x)\) 表示集合。两个最小值相同,当且仅当 \(A\cup B\) 中排列最靠前的元素落在 \(A\cap B\) 中。并集内每个元素成为最小者的概率相等,因此

\[ \Pr[h_\pi(A)=h_\pi(B)]=\frac{|A\cap B|}{|A\cup B|}=J(A,B). \tag{18.5}\]

该关系把集合相似度转化为签名碰撞概率(Broder 1997)。采用 \(m\) 次独立排列,令 \(I_j\) 为第 \(j\) 个签名相等的指示量,则

\[ \widehat J=\frac1m\sum_{j=1}^{m}I_j, \qquad \mathbb E[\widehat J]=J, \qquad \operatorname{Var}(\widehat J)=\frac{J(1-J)}m. \tag{18.6}\]

例如 \(J=0.8,m=100\) 时标准差为 \(0.04\)。它是随机估计的不确定性,不是一个样本对的确定误差上限。工程上使用哈希函数近似随机排列,必须意识到函数相关性、摘要截断和碰撞可能改变上述理想性质。

局部敏感哈希候选集

\(N\) 条记录逐对计算相似度需要 \(O(N^2)\) 次比较。局部敏感哈希(Locality-Sensitive Hashing,LSH)把签名分成 \(b\) 个带,每带 \(r\) 行,满足 \(m=br\);同一带内所有行相同的记录进入同一候选桶。若两记录相似度为 \(s\),在独立行假设下,一个带完全相同的概率为 \(s^r\),所有带均不同的概率为 \((1-s^r)^b\),所以成为候选的概率为

\[ P_{\mathrm{cand}}(s)=1-(1-s^r)^b. \tag{18.7}\]

\(b=20,r=5\)\(s=0.8\) 时候选概率约为 \(0.99964\)\(s=0.2\) 时约为 \(0.00638\)。概率曲线并不是硬阈值:相似度高的记录仍可能漏检,低相似度记录也可能进入候选。

近似去重的候选生成与精确确认承担不同职责。
图 18.2 近似去重的候选生成与精确确认承担不同职责。

对候选计算真实 Jaccard 可以排除候选中的误报,但不能找回从未进入候选的漏报。候选桶中有 \(u\) 条记录时,完全展开仍产生 \(\frac{u(u-1)}{2}\) 对。常见模板会形成热点桶,限制桶大小虽能保护资源,却改变召回率;这种限制必须作为策略版本的一部分记录,而不能隐藏成实现细节。

近重关系的非传递性

\(A=\{1,2\}\)\(B=\{1,2,3\}\)\(C=\{2,3\}\),阈值取 \(\frac{2}{3}\)。此时 \(J(A,B)=J(B,C)=\frac{2}{3}\),但 \(J(A,C)=\frac{1}{3}\)。如果把近重边的连通分量全部只留一条,就可能删除与代表记录并不相似的内容。

分组和删除需要不同语义。为了防止泄漏,可以保守地把整个关联分量放入同一个划分;为了删除内容,则可按稳定优先级扫描,只有与已经保留的某个代表直接达到阈值的记录才删除。该策略并非求最小代表集合,也可能保留多个彼此通过中间节点相关的记录;它换取的是可解释的直接删除依据。

算法18.1 稳定代表去重

输入:类型一致的记录、固定规范化规则、相似度阈值 \(\tau\)、候选索引及稳定全序。输出:保留记录与删除依据。状态:保留集合 \(R\),重复映射 \(D\)

  1. 按治理资格、质量和稳定标识确定全序;初始化 \(R=D=\varnothing\)

  2. 依次读取记录 \(x\),从候选索引取得已在 \(R\) 中的候选,按同一全序排列。

  3. 对每个候选 \(y\) 计算实际相似度;若有 \(J(x,y)\ge\tau\),记录直接依据 \((x,y,J)\),并保留 \(x\) 的所有来源血缘。

  4. 若没有确认匹配,将 \(x\) 加入 \(R\)。处理完所有记录后停止。

不变量:每条因近重被删除的记录都有一个直接达标且仍被保留的代表。候选漏检仍可能导致重复保留,必须单独评估召回。

18.5划分及混合定义训练分布

分组哈希及时间边界

分组划分(Group Split)要求同一个泄漏家族只进入训练、验证或测试中的一个集合。设稳定组标识为 \(g\),固定盐值为 \(s_0\),把哈希映射到 \(u(g)\in[0,1)\)。例如 \(u<0.8\) 分配到训练,\(0.8\le u<0.9\) 分配到验证,其余进入测试。同一组的新增记录仍进入同一集合;与按当前行号洗牌相比,它更适合增量数据。

这里稳定的是组到集合的映射,不是精确比例。组大小不等时,样本比例和词元比例都可能偏离 \(80:10:10\)。哈希还必须与目标变量及来源顺序没有系统性关联。固定盐值是可复现配置,不是为得到更好测试成绩而不断调整的超参数。

如果新增近重边把两个已经落入不同集合的组连接起来,原划分的隔离条件已经失效。不能既保持所有旧分配又宣称严格分组隔离;需要隔离新增冲突、重建划分或发布新的评估版本。面向未来数据的应用还应采用时间边界,确保训练时不可见的信息没有进入特征构造。分词器学习、统计归一化和基于语料的阈值拟合也属于需要限定训练范围的过程。

温度混合及目标校正

设清洗后有 \(D\) 个合格来源,第 \(i\) 个来源具有 \(n_i>0\) 个采样单位。温度混合(Temperature-Based Mixing)常写为

\[ p_i=\frac{n_i^\alpha}{\sum_{j=1}^{D}n_j^\alpha},\qquad 0\le\alpha\le1. \tag{18.8}\]

\(\alpha=1\) 保持自然数量比例,\(\alpha=0\) 等概率选择来源,较小的 \(\alpha\) 提高小来源的相对权重。式中的 \(n_i\) 必须声明是文档数、词元数还是其他单位,不能在同一配置里混用。

例如两个来源分别有 \(900\)\(100\) 条记录,取 \(\alpha=\frac{1}{2}\),则 \(p=(0.75,0.25)\)。若有放回抽取 \(1200\) 次,期望分别抽取 \(900\)\(300\) 条,单条记录平均使用次数分别为 \(1\)\(3\)。若只对各来源各读一遍并拼接,实际记录比例仍为 \(0.9:0.1\),并未实现指定目标。

假设两个来源平均长度分别为 \(100\)\(400\) 个有效词元,按上述文档概率采样,则长期词元份额近似为

\[ \widetilde p_i=\frac{p_i\mathbb E[L_i]}{\sum_jp_j\mathbb E[L_j]}, \tag{18.9}\]

得到 \(\widetilde p=(\frac{3}{7},\frac{4}{7})\)。因此目标配比、抽中文档配比、物化词元配比和最终有效标签配比必须分别统计。截断、尾部丢弃和标签屏蔽会使它们进一步不同。

若真正希望优化来源权重 \(q_i\),却按 \(p_i\) 抽样,可以采用重要性采样(Importance Sampling)校正:对来自 \(i\) 的损失乘以 \(\frac{q_i}{p_i}\)。因为

\[ \sum_i p_i\,\mathbb E_i\!\left[\frac{q_i}{p_i}\ell_\theta\right] =\sum_iq_i\mathbb E_i[\ell_\theta], \tag{18.10}\]

期望目标恢复为指定加权风险。前提是 \(q_i>0\)\(p_i>0\),并且期望存在;极小的 \(p_i\) 会产生大权重和高方差。若本来就希望改变学习目标,则不应再无意识地施加该校正。

课程学习(Curriculum Learning)让 \(p_i\) 随训练步变化。它改变参数经历的样本顺序与梯度路径,不能仅用最终累计比例描述。合成数据(Synthetic Data)同样需要来源问题家族、生成模型、提示、解码配置和验证器版本。生成器自评筛选可能放大其偏好,验证器通过也只证明所检验的条件;评估集应与生成、筛选和阈值调整隔离。

18.6词元物化、打包及存储

训练样本消费视图

词元物化(Token Materialization)把规范记录转换为固定词元与监督信号。它需要冻结分词器、特殊词元、对话模板、截断规则、标签策略和位置处理。仅记录词表名称不足以确定结果。对于偏好对,共同提示的处理必须一致;对于推理样本,应显式决定过程是否参与损失。

训练视图至少定义输入词元、有效预测位置和必要的边界信息。自回归目标预测的是下一词元,输入与目标的错位必须与样本边界一致。一个序列长度为 \(L\),并不意味着必有 \(L\) 个有效标签:提示词元、填充、边界和被屏蔽的内容都可能不计入损失。

连续流及不可拆样本的容量公式

序列打包(Sequence Packing)把变长内容组织为长度上限为 \(T\) 的模型输入块。首先区分允许跨块切分的连续流与不允许切分的原子样本。令 \(L_i\) 已包含规则要求的分隔符或边界词元,总长度 \(M=\sum_iL_i\)

对连续流,若尾部不足一块就丢弃,则

\[ K_{\mathrm{drop}}=\lfloor \frac{M}{T}\rfloor,\qquad R=M-K_{\mathrm{drop}}T, \qquad 0\le R<T. \tag{18.11}\]

若保留尾部并填充,则对于 \(M>0\)

\[ K_{\mathrm{pad}}=\lceil \frac{M}{T}\rceil,\qquad P=K_{\mathrm{pad}}T-M. \tag{18.12}\]

空输入约定零块。这些公式先由输入长度确定块数,再推导余量,不把未知填充量重新放入块数定义形成循环。

如果每条样本不可拆分,\(L_i\le T\),则 \(\lceil \frac{M}{T}\rceil\) 只是块数下界,实际值由装箱策略决定。例如三个长度均为 \(6\) 的样本,\(T=10\),总长 \(18\) 给出下界 \(2\),但任意两条都无法同块,必须使用 \(3\) 块。超过 \(T\) 的样本还需要明确选择截断、切分或隔离,不能留给隐式溢出行为。

长度为 \((5,4,3)\)\(T=8\) 时,按顺序采用放不下便开启下一块的策略,得到第一块长度 \(5\)、第二块长度 \(7\),共填充 \(4\) 个位置,内容利用率为 \(\frac{12}{16}=75\%\)。连续流丢尾则生成一块、丢弃四个词元,已生成块利用率为 \(100\%\),但数据损失率为 \(\frac{1}{3}\)。只汇报利用率会掩盖这一差别。特殊词元占用率与有效标签占用率还应另外统计。

不可拆样本的顺序打包示意。每格为一个位置,粗线是来源边界;是否允许跨边界注意力仍由掩码策略决定。
图 18.3 不可拆样本的顺序打包示意。每格为一个位置,粗线是来源边界;是否允许跨边界注意力仍由掩码策略决定。

样本隔离约束

把多个文档放入一块,不代表它们必须互相可见。连续预训练流可以显式允许跨文档条件关系;若目标要求样本独立,则需要块内分段因果掩码。令 \(g(t)\) 为位置 \(t\) 所属样本,允许位置 \(t\) 读取 \(j\) 的条件为 \(j\le t\)\(g(j)=g(t)\),填充位置另行处理。第18章《注意力机制》讨论了掩码归一化,包括全屏蔽行的边界。

仅插入结束词元并不会阻断注意力。标签也必须隔离:若前一样本的末位置被要求预测下一样本的首词元,即使注意力已隔离,损失仍引入跨样本预测。可以在每个样本加入开始标记,由其预测本样本首词元,或屏蔽没有合法本样本前缀的预测位置。位置编号是否重置应写入布局规范。2

算法18.2 保持来源的原子样本打包

输入:按确定顺序排列的已序列化样本,最大长度 \(T\),超长与尾部策略。输出:词元块、标签掩码、样本段及来源跨度。状态:当前块 \(B\)、已用长度 \(u\)、跨度表 \(S\)

  1. 初始化空块。读取下一样本,先执行已声明的超长策略,使进入打包器的原子样本长度不超过 \(T\)

  2. \(u+L_i>T\),按尾部策略封存当前块,记录填充或丢弃量;重新建立空块。

  3. 追加样本,记录半开区间 \([u,u+L_i)\)、来源记录与源词元偏移,并设置段标识和合法标签;更新 \(u\)

  4. 输入耗尽时按同一尾部策略处理最后一块,停止。

不变量:块长不超过 \(T\);每个非填充位置能定位到来源或明确标记为插入词元;样本边界与标签策略一致。按顺序一次遍历的组织成本为 \(O(\sum_iL_i)\),不含分词成本。

来源跨度及分片边界

来源跨度(Provenance Span)将块中的半开区间映射到来源数据集、记录、源偏移以及变换版本。填充应有空来源,插入的特殊词元应注明生成规则,不能伪装为原文词元。跨度可支持训练贡献统计、错误定位与删除影响分析;只保存“本块来自三个文档”不足以定位具体内容。

分片(Shard)是存储或调度单位,训练块(Training Block)是模型输入单位,两者不能等同。一个分片可以容纳多个完整块,也可以在另一种明确格式中保存尚未打包的文档。若规定分片只含完整 \(T\) 长块,容量上限为 \(S\) 个位置,则最多容纳 \(\lfloor \frac{S}{T}\rfloor\) 块,且要求 \(S\ge T\)。例如 \(S=18,T=8\),只能放两块即 \(16\) 个位置;余下两个位置不能容纳第三块。文件结束也不是文档结束或训练序列结束。

18.7流式执行、发布及删除

读取状态及数据消费

流式读取(Streaming)降低预先装载需求,但不消除输入输出成本。内存映射仍受页缓存、存储吞吐和访问局部性影响。有限缓冲区洗牌只在局部窗口混合,不等价于全量均匀排列。若某些来源更慢,而调度器总选择先完成的数据,目标混合也可能被吞吐差异改变。

恢复点必须覆盖分片位置、记录偏移、随机数状态、洗牌缓冲、未封存词元以及训练器已经提交的进度。只恢复文件游标,可能重复或跳过缓冲区中的样本。改变工作进程数或分片分配方式,也可能改变顺序与尾部结果。恰好一次(Exactly-Once)在这里应指逻辑训练事件的提交语义,而不是文件只被读取一次;是否重复更新参数,取决于数据消费状态与训练检查点如何一致提交。

遇到坏记录静默跳过会改变分布,重试直到成功又可能阻塞整个输入。正确做法是固定失败分类和隔离策略,计量其来源分布,并把最终纳入或排除的决定记录到版本中。批处理适合生成不可变制品,增量处理适合吸收新增快照;二者都需要相同的语义规则。

幂等发布及版本身份

幂等性(Idempotency)表示同一逻辑构建重复提交不会产生不同的可见结果。构建标识可以由源快照集合、模式与适配器、代码和策略版本、分词与布局配置的规范表示计算得到。它表示构建规格;最终内容摘要表示构建产物,两者应分开,以避免让清单把自己的摘要纳入计算而形成自引用。

发布清单(Manifest)列出制品、摘要、记录与词元计数、来源范围、策略版本和必要血缘。中间文件先写入隔离的暂存空间,完整制品准备后才发布清单或更新可见指针。单一文件系统中的原子重命名与对象存储中的条件指针更新具有不同条件;不能把多个对象依次上传称作整体原子发布。

算法18.3 可重试的数据版本发布

输入:不可变源快照与完整构建规格。输出:可消费版本标识。状态:构建标识、暂存制品列表、阶段完成记录。

  1. 计算构建标识;若已有已发布版本,比较规格与产物登记,匹配则复用,否则报告一致性冲突。

  2. 按阶段生成不可变制品,记录父对象与完成状态。重试只复用经过完整性确认的阶段结果,不把“文件存在”视为完成。

  3. 生成独立内容摘要和清单,记录成功、拒绝、隔离、派生及有效标签数量;所有必需对象就绪后进入发布步骤。

  4. 以平台支持的原子提交或条件更新暴露最终指针。并发提交者若发现版本已经发布,核对后复用;同一规格产生不同内容时停止发布并保留诊断依据。

不变量:消费者只能发现完整版本;同一版本标识不覆盖为另一内容。失败发生在发布前时可重试,发布后则返回已存在的版本。

内容摘要可以发现字节变化,但如果攻击者能同时替换制品与清单,自声明摘要不能证明来源真实。发布目录应把认可的摘要保存在独立信任边界内,或者由受控签名及验证密钥建立真实性。公开清单通常记录聚合数与受控审计资产的引用,不直接暴露隔离原文、个人标识或推理轨迹;细粒度血缘的可追溯性必须与访问权限同时设计。

对于一进一出的阶段,输入记录数应等于成功、拒绝与隔离数之和;对于一条文档切成多块或多条记录合并的阶段,简单行数守恒不再成立,必须使用父子映射和词元账目。最大处理编号也不能证明之前所有编号都完成,特别是在并发执行时。

删除传播及模型影响

删除血缘(Deletion Lineage)用于从撤回的源记录定位规范记录、消费视图、词元跨度、分片以及使用过这些制品的训练任务。精确去重后如果删除了来源别名,这条链就会断裂;保留一个代表不意味着其他来源不再需要治理。

删除请求首先阻止未来消费,并根据策略重建或撤销受影响的数据版本。已经完成的训练还需要单独评估模型影响:删除存储对象不会自动从模型参数中消除其作用,重新发布数据也不等同于完成模型层面的遗忘。3

可追溯性闭环

一个训练数据版本至少应回答四个问题:哪些来源允许进入;哪些变换决定了内容与标签;训练器实际消费了什么;某个来源失效后哪些产物需要处理。可读取的文件、正确的哈希和成功结束的任务分别提供局部证据,任何一个都不能独自证明闭环成立。

18.8数据管线设计

考虑两个通过治理筛选的来源,共 \(900\) 条短记录与 \(100\) 条长记录。采用式(18.8)中的 \(\alpha=\frac{1}{2}\),按文档有放回抽样 \(1200\) 次,期望使用次数为 \(900\)\(300\)。若序列化后长度恒为 \(100\)\(400\),则期望物化长度为 \(210000\) 个词元;其中长来源贡献 \(120000\),即 \(\frac{4}{7}\)

现在取一个具体已经实现该次数的采样序列,按连续流以 \(T=1024\) 打包。保留尾部时有 \(\lceil\frac{210000}{1024}\rceil=206\) 块,容量为 \(210944\),填充 \(944\) 个位置。丢尾时有 \(205\) 块,保留 \(209920\) 个词元,丢弃 \(80\) 个。由于尾部来自具体排序中的记录,其来源份额不一定仍为 \(\frac{4}{7}\)。若改成不可拆记录,这两个块数公式便不再直接适用。

进一步假设标签策略屏蔽所有提示,共屏蔽 \(42000\) 个实际词元;在保尾条件下有效标签最多为 \(168000\),还需扣除策略要求屏蔽的边界位置。按块容量统计的有效标签率最多为 \(\frac{168000}{210944}\approx79.64\%\),低于内容利用率约 \(99.55\%\)。这些是给定长度与计数的算术结果,不是训练性能实验。

这组计算揭示了数据审计应区分的四个分母:源记录、被抽中的记录、实际词元和有效标签。除此之外,去重候选召回、隔离率、来源跨度覆盖率、重试产生的逻辑重复量和版本完整性也需要分别解释。一个总“质量分”无法替代这些具有不同因果含义的指标。


  1. 面向模型接口的消息结构与数据仓库的归档结构职责不同。归档可以保留训练器不消费的治理字段,但不能因为某个接口不接受这些字段而删除原始语义。↩︎

  2. 打包后的注意力掩码在概念上可以是分块矩阵;物理实现可以使用段边界等紧凑表示。本章规定语义,不要求显式存储一个稠密平方矩阵。↩︎

  3. 用于防止再次导入的删除标记也可能含有可关联标识,其保留形式与权限应单独设计;不能为了证明已删除而无限保留原始敏感内容。↩︎

WORKBOOK / 习题

配套习题与解析

先独立作答,再展开参考解析。选修题保留原书标记。

习题 18.1

某数据集每组有十条观测,组内相关系数为 \(0.2\)。在等组大小假设下推导均值方差与等效样本量,并说明该量为何不能直接视为神经网络训练的有效样本数。

展开参考解析

设G组独立、每组\(m=10\)、各观测方差\(\sigma^2\),组内相关\(\rho=0.2\),总数\(N=10G\)。均值方差为 \(\frac{\sigma^2[1+(m-1)\rho]}{N}=\frac{2.8\sigma^2}{N}\),匹配独立同方差均值可定义 \(N_{\mathrm{eff}}=\frac{N}{2.8}\)。它是特定均值估计量的方差等效,不刻画神经网络的函数复杂度、梯度相关结构和数据覆盖,不能直接解释为训练样本有效数量。

习题 18.2

为含工具调用、图片引用和偏好对的数据设计公共信封与三种载荷,列出必须由模式检查的跨字段约束。

展开参考解析

公共信封固定dataset/record/group身份、schema版本、来源与许可、时间、内容哈希及权限。工具载荷保存有序消息、call ID、参数和结果引用,校验每结果匹配已有调用及角色次序;媒体载荷保存消息块和图片引用,校验资源存在、类型及processor版本;偏好载荷保存同一prompt下chosen/rejected,校验共同条件、候选区分和分组原子性。未知类型进入隔离,不把三类字段拼成大量空列的万能表。

习题 18.3

推导式18.3,构造两个领域原始数量相同但过滤后严重失衡的例子,并说明校正所需的信息。

展开参考解析

设接受事件A满足 \(P(A\mid Z=z)=a(z)\),由条件概率 \(P(Z=z\mid A)=\frac{a(z)P(z)}{P(A)}\),其中 \(P(A)=\mathbb E_Pa(Z)>0\)。两个领域原各1000条,接受率.9和.1,则过滤后900与100,份额.9/.1。校正需要各领域准入后数量、接受机制和目标份额;可抽样或重要性加权,但被完全过滤的子群没有支持,不能仅靠无限权重恢复。

习题 18.4选修

\(J=0.5\),希望 MinHash 估计量标准差不超过 \(0.025\),在独立排列模型下至少需要多少行?该条件是否保证每次误差都小于 \(0.025\)

展开参考解析

独立排列下 \(\operatorname{Var}(\widehat J)=\frac{J(1-J)}{m}=\frac{.25}{m}\),要求标准差不超过.025,故 \(m\ge\frac{.25}{.025^2}=400\)。标准差是重复试验的波动尺度,不保证每次误差都在该范围内;确定概率容差还需另给置信水平并使用合适尾界或二项分布区间。

习题 18.5选修

固定签名长度 \(m=100\),比较 \((b,r)=(20,5)\)\((10,10)\) 对相似度 \(0.6\) 的候选概率,解释计算量与漏检的取舍。

展开参考解析

候选概率为 \(1-(1-s^r)^b\)。s=.6时,(20,5)得到 \(1-(1-.6^5)^{20}\approx.8019\);(10,10)得到 \(1-(1-.6^{10})^{10}\approx.05885\)。相同100行签名,后者要求更长连续匹配,候选更少、精确复核量下降,却更易漏掉.6相似记录。候选量还取决于全库分布,不能仅靠本概率断言总运行成本。

习题 18.6

用本章三个集合说明:为什么近重连通分量适合保守划分,却不能无条件作为“全部内容可互相替代”的证明?

展开参考解析

可取 \(A=\{1,2\},B=\{1,2,3\},C=\{2,3\}\),相邻Jaccard为\(\frac{2}{3}\),端点为\(\frac{1}{3}\)。阈值.6下三个节点连通,分到同一评估组可避免任何高相似边跨集合;但A和C不达到阈值,不能因连通便把它们当成同一内容删除。稳定代表去重需每个删除项与实际保留代表之间有直接依据。

习题 18.7

新数据把已分到训练和测试的两个家族连接起来。提出一个保留既有评估版本解释性的处理方案,明确哪些记录被隔离、哪些版本必须失效。

展开参考解析

冻结旧评估版本及其成员不做静默重排,先隔离引入连接的新记录和相关派生视图,调查新边是否揭示旧组已有泄漏。若旧测试解释确受影响,将该版本标为受污染并停止用其作独立准入;重建组图、分组划分和全部下游版本,建立新测试基准。历史分数保留但附失效说明;仅改新记录split不能自动修复已泄漏训练。

习题 18.8

三个来源的记录数为 \((10000,1000,100)\),平均有效长度为 \((50,200,500)\)。计算 \(\alpha=\frac{1}{2}\) 下记录概率与近似词元份额,并给出面向指定词元目标的调整思路。

展开参考解析

平方根计数归一化得到记录概率 \(p\)。随后乘各来源平均长度,得到未归一化词元量 \(w\),再归一化得到词元份额 \(q\)\[\begin{aligned} p&=\frac{(100,\ 10\sqrt{10},\ 10)}{110+10\sqrt{10}}\\ &\approx(0.70610,\ 0.22329,\ 0.07061),\\ w&=(5000,\ 2000\sqrt{10},\ 5000),\\ q&\approx(0.30629,\ 0.38742,\ 0.30629). \end{aligned}\] 若指定词元份额为 \(q_i\),可设序列抽样概率 \(p_i\propto \frac{q_i}{\mathbb E} L_i\),再按实际有效标签计数复核。长度与过滤分布变化会使目标和物化结果偏离。

习题 18.9

对长度 \((6,6,6)\) 与块长 \(10\),比较连续流、不可拆原子样本以及独立注意力打包的容量和语义,不能仅比较填充比例;独立注意力打包分别讨论允许与禁止跨块拆分的条件。

展开参考解析

连续流18词元用2个10长块,填充2,可按第一块6个A加4个B、第二块2个B加6个C排列;B被截断且允许跨样本读取会改变条件。不可拆样本时任意两条长度6都装不进10,需3块、填充12。独立注意力若也禁止拆样本,同为3块但还需块内样本mask;若允许拆段可用2块并阻断跨样本读取,但第二段B是否保留第一段B上下文必须另定,不能声称仅靠mask保持原目标。

习题 18.10

设计一个在块中跨越两个来源的词元跨度表,包含插入分隔符、填充与标签屏蔽。说明如何从一个输出位置反查到原始记录。

展开参考解析

取块长8:位置[0,3)来自数据集D1记录A源偏移[5,8),[3,4)为插入SEP,[4,6)来自D2记录B偏移[0,2),[6,8)为PAD。若A是提示、B是回答,可设相应目标监督仅覆盖B及协议所需EOS,具体按右移后目标而非输入编号判定。每跨度存父记录和变换版本;查询块位置5落在[4,6),可反查B的偏移1。SEP记录生成规则、PAD为空来源,不能伪称原文。

习题 18.11

某作业先提交训练检查点,后保存数据游标,在两步之间崩溃。分析恢复后可能出现的重复,并给出一致性提交所需的状态边界。

展开参考解析

权重已包含某批更新,但游标仍指向该批之前,恢复后会再消费并更新一次;若反过来先推进游标再提交权重,则可能漏更新。逻辑提交点应绑定权重、优化器/调度器、随机状态、分片游标、洗牌缓冲、未封存packing尾部及累计有效计数。可先写不可变状态对象,最后原子切换包含全部摘要的提交清单,消费者只恢复完整同版本组。

习题 18.12

一个源文档已从对象存储删除,但被去重代表、派生分片和训练检查点引用。画出需要处理的血缘图,并区分未来数据撤销与既有模型影响。

展开参考解析

血缘关系为“源文档及别名→规范代表→训练视图→带source span的块→分片→训练任务→检查点”。删除原对象后仍需阻止别名再次导入、定位代表的其他合法来源、撤销或重建受影响视图和分片,并标记使用过旧版本的任务。未来消费撤销不自动去掉参数中已学影响;已有模型需按用途评估重训、遗忘或停用策略,保留受控审计而非继续公开敏感原文。

REFERENCES

参考文献

Broder, Andrei Z. 1997. 《On the resemblance and containment of documents》. 收入 Proceedings of Compression and Complexity of SEQUENCES 1997, 21–29. https://doi.org/10.1109/SEQUEN.1997.666900.
Lee, Katherine, Daphne Ippolito, Andrew Nystrom, Chiyuan Zhang, Douglas Eck, Chris Callison-Burch, 和 Nicholas Carlini. 2022. 《Deduplicating Training Data Makes Language Models Better》. 收入 Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), 8424–45. https://doi.org/10.18653/v1/2022.acl-long.577.

搜索全书

搜索全书正文、习题与解析