Skip to content

预训练数据拼接策略深度分析

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

1. Pretrain 阶段为什么需要拼接?

为了提高 Pretrain 效率、拓展 LLM 最大长度,随机将若干条短文本进行拼接是 Pretrain 阶段的常见手段。

目标

  • 降低 Padding 占比,提高训练效率
  • 使 LLM 具备更好的长文本处理能力

2. 拼接方式一:Random Concatenate(随机拼接)

2.1 做法

随机将短文本 {examples_i} 拼接成 {examples_k} 以打满 maxLen

2.2 优点

  • 降低 Padding 占比
  • 提高训练效率
  • 理论上能拓展长文本处理能力

2.3 潜在问题

绝大多数情况下,构成一个 Example 的多个短文本彼此互不相关,无法提供有效的上下文信息:

  • LLM 无法从拓宽的窗口中获得正向反馈
  • 在语料较少、分布集中时,LLM 可能从多次偶然的噪音共现中拟合到错误特征
  • 如果语料足够多、分布足够广,LLM 能通过足够的 Contrastive 逐渐聚焦于 Example 本身

3. 拼接方式二:Random Concatenate + NoiseMask

3.1 做法

添加自定义 Attention Mask,使 LLM 在 Pretrain 时仅关注当前 Example,忽略跨 Example 的 Token。

python
def segment_causal_mask(input_ids, device, val=float("-inf")):
    bsz, tgt_len = input_ids.shape
    cum_lens = torch.arange(1, tgt_len+1, device=device).unsqueeze(0) * \
               torch.eq(input_ids, EosTokenId).int().to(device)
    mask = torch.zeros([bsz, tgt_len, tgt_len]).to(device)
    for i, _cum_lens in enumerate(cum_lens):
        for v in _cum_lens:
            mask[i, v:, :v] = val  # 屏蔽跨 Example 的 Attention
    return mask

3.2 效果

经测试,该方法在 ICL Few-Shot 上相比随机拼接有约 1.6% 的提升。

3.3 遗留问题

相对位置编码(ALiBi、RoPE)的 Token-wise 相对位置信息会在 Attention Score 矩阵对应位置有所体现:

  • 如果施加了 Attention Mask,这部分相对位置信息经过 Softmax 会被完全掩盖/误杀
  • LLM 无法从跨 Example 间获得反馈(无论是位置还是语义信息)
  • 本质上仍是在短文本窗口内训练,没有真正实现 MaxLen 级别的长文本训练
  • 只能起到提高训练效率的作用,无法真正拓展长文本能力

另一方面,即使不施加 Mask(方式一),LLM 是否能从无关 Example 构成的窗口中获取正向反馈也存疑——如果远的 Token 都不相关,LLM 可能天然倾向于忽略更远的 Token。


4. 拼接方式三:Random Concatenate + Cluster

4.1 动机

既不施加 Attention Mask,也能让 LLM 不受跨 Example 干扰甚至还能受益:

  • 以实体、语义等维度对 {examples_i} 进行聚类
  • 使构成同一个 Example 的 Examples 存在真实可靠的信息共现前提

4.2 优势

  • LLM 不容易从噪音共现中学偏
  • 能从 Pretrain 中适应更广泛全局的 Attention,从而具备更好的长文本处理能力

4.3 遇到的挑战:信息泄露

沿实体维度聚类时发现:

  • 信息重复严重
  • 经过关键词/语义去重后仍难以避免信息泄露
  • LLM 有从 Memorize 变成 Copy 的风险

5. 拼接方式四:IN-CONTEXT PRETRAINING(ICLM)

5.1 基本思想

在拼接时,利用语义相似度,优先将最相似的 Example 进行拼接,从而构成语义更加连贯流畅的上下文。

5.2 流程

步骤说明
1. Embedding{examples_i} 转换向量表示(作者使用 Contriever)
2. 去重基于余弦距离进行数据去重
3. 串联基于旅行商思想,不断串联最相关的 Examples(每个用完即扔,不重复)
4. Pretrain基于拼接后的 {examples_k} 进行预训练

5.3 为什么 ICLM 有效?

  • 相比实体聚类,沿语义聚合的 Examples 分布更平缓,受泄露影响风险更低
  • 分布更广泛的数据 + 更妥善的去重操作是 ICLM 有效的关键
  • 作者通过消融实验验证了去重对 ICLM 的正向增益

6. 四种拼接方式对比

方式核心思路长文本能力信息泄露风险实现复杂度
Random Concatenate随机拼接打满 MaxLen存疑
+ NoiseMask加 Attention Mask 隔离无(仍是短窗口)
+ Cluster实体/语义聚类后拼接较好(但信息泄露)
ICLM语义相似度 + 去重串联低(妥善去重)

7. 核心结论

  1. 简单的随机拼接可能导致 LLM 从噪音共现中学习到错误特征
  2. Attention Mask 隔离方案虽能缓解噪音,但牺牲了长文本训练效果
  3. 语义聚合 + 去重 + 旅行商串联(ICLM)是目前较优的拼接策略
  4. 相对位置编码(RoPE/ALiBi)与 Attention Mask 存在"误杀"交互,需要更多的研究探索