本次主要分享一下LLM训练与架构解析。

学习LLM需要掌握数据的原理特性,以及分布式训练的基础。

1. LLM训练数据

LLM训练的数据通常为文本数据。

1.1 数据预处理

在处理TB级别甚至PB级别的海量语料时,预处理环节的质量直接决定了最终模型的“智商”和“价值观”。

大模型的数据预处理主要分为以下几步:

1、基础清洗与标准化(移除html标签、特殊字符) TB级别的筛选

  • 主要目标:将原始文本转化为干净、统一的纯文本格式。

  • HTML/XML标签移除:去除<div><p><script>等标签,提取标签间的纯文本。

  • 特殊字符处理

    • 移除控制字符(如乱码、\x00)。

    • 标准化Unicode(如将全角符号转为半角,将带重音字母é保留或根据语料要求规范化)。

    • 移除零宽空格、软连字符等不可见字符。

  • 多余空白处理:将连续的空格、换行符压缩为单一空格或标准段落分隔符。

  • 元数据剥离:去除页眉、页脚、导航栏、版权声明等非正文内容。

2、语言检测和分类(需要识别出机器翻译的痕迹)

  • 主要目标:识别文本的实际语言,并剔除低质量的机器翻译文本。

  • 语言识别:使用工具(如fastTextlangdetect)对文本块进行语言分类,标记为“en”(英语)、“zh”(中文)等。TB级数据通常使用基于字符n-gram的快速分类器。

3、质量的评分和筛选(语言的流畅度)

  • 主要目标:过滤掉低质量、无信息量或有害的文本,保留高质量文本用于训练。

  • 语言流畅度评估

    • Perplexity:使用一个预训练的小型语言模型计算文本的困惑度。困惑度过高说明文本不通顺(如乱码、随机单词),困惑度过低说明文本过于简单(如重复的“哈哈哈”或模板化文本)。

    • KenLM:在TB级别处理中,常用基于n-gram的KenLM打分,速度远快于神经网络模型。

  • 内容质量

    • 教育价值/复杂度:分析词频分布、句子长度标准差。过于简单或过于晦涩的文本按比例保留。

    • 毒性/有害内容过滤:使用分类器(如Perspective API)检测暴力、仇恨言论等,决定是剔除还是打标用于安全对齐。

  • 筛选策略

    • 硬阈值:设定困惑度区间(如 (p10, p90)),剔除头尾的极低质和极高重复数据。

    • 基于分布的采样:按领域(医学、法律、代码)、质量分数进行分层采样,确保数据分布多样性。

4、数据去重和去噪

  • 主要目标:去除重复样本,确保训练数据的多样性。

5、隐私保护和合规处理

  • 主要目标:移除或匿名化个人身份信息,遵守版权和法律规定。

1.2 数据评估

优质训练数据需具备:规模性(如Common Crawl数据集)、多样性(多领域覆盖)、清洁度(经过严格过滤处理)。

1、规模性

规模性通常是最直观的指标,但它远不止“数据量有多大”这么简单。

一句话定义:数据的总量是否足够支撑模型训练。

核心要点

  • 有效Token数是关键指标,而非原始数据量

  • 遵循 1:20 法则:70B参数的模型需要约1.4T Token

  • 特定领域需要足够的领域数据量才能涌现专业能力

简单判断:数据够不够多?是否达到模型参数对应的理论需求?

2、多样性

一句话定义:数据的覆盖范围是否广泛且均衡。

核心要点

  • 涵盖多领域(科学、人文、代码、医疗等)

  • 包含多语言多体裁(书籍、网页、对话、论文)

  • 分布均衡,避免少数类型垄断

简单判断:数据来源是否丰富?各种类型占比是否合理?

3、清洁度

一句话定义:数据的纯净程度,即噪声和有害内容的残留水平。

核心要点

  • 语言质量:文本流畅、语法正确(低困惑度)

  • 低重复:精确去重 + 近似去重

  • 安全合规:无个人身份信息、低毒性、无版权侵权

简单判断:数据干不干净?乱码、重复、有害内容多不多?


如何设计脚本评判数据的优质性?

1. 规模性

  • 评估内容:总样本数、总Token数、各来源分布

  • 实现方式:遍历数据文件,累加计数,使用分词器统计Token量

  • 核心指标:有效Token总量、平均每样本Token数

2. 多样性

  • 评估内容:语言分布、领域覆盖、文本结构丰富度

  • 实现方式:抽样后做语言检测、n-gram覆盖度计算、句子长度标准差分析

  • 核心指标:语言分布熵、n-gram覆盖度、长度分布标准差

3. 清洁度

  • 评估内容:语言流畅度、重复率、噪声比例

  • 实现方式:困惑度计算(kenlm)、MinHash近似去重、异常字符正则匹配

  • 核心指标:低困惑度样本占比、重复率、高噪声样本占比

1.3 常用数据集

Common、The Pile、RefineWen。

2. 预训练目标

作用:预训练目标决定了语言模型的学习方向和能力边界,是LLM性能的基础保障。

2.1 为什么叫“目标”?

在机器学习中,我们通过一个损失函数来告诉模型“你做得好不好”。这个损失函数定义的就是优化目标

  • 对于 GPT:目标是让预测的下一个词尽可能准确 → 损失函数是交叉熵损失。

  • 对于 BERT:目标是让被盖住的词预测准确 → 损失函数也是交叉熵,但只计算被 mask 的位置。

所以“预训练目标” = 预训练阶段用来优化模型的数学目标,它决定了:

  1. 模型能看到什么(单向还是双向上下文)

  2. 模型要预测什么(下一个词 vs 被盖住的词)

  3. 模型最终擅长什么(生成 vs 理解)

2.2 自监督学习

核心思想:自监督学习让模型从无标签数据中自我学习,无需人工标注即可提取有效特征,显著降低数据标注成本。

代表模型:GPT系列模型(如GPT-3、GPT-4)是该领域的典型代表,参数量可达千亿级别,展现强大的生成能力。

与监督学习的对比

维度 监督学习 自监督学习
数据来源 需要人工标注(如情感标签) 数据本身自带结构(文本、图像)
成本 高,需要大量人工 低,海量原始数据即可
LLM中的应用 微调阶段 预训练阶段

在LLM中的体现

大语言模型在海量文本上预训练时,使用的就是自监督学习:

  • 数据:互联网上的所有文本(无需标注)

  • 监督信号:文本内部的结构(下一个词、被遮住的词)

关键:预训练阶段不需要任何人工标注,所以可以用TB级别的数据。

2.3 因果语言建模

因果语言建模(Causal Language Modeling,CLM)是一种自监督学习任务:给定前面的词,预测下一个词。也叫“自回归语言建模”。

核心任务:核心任务是预测下一个词(Next Token Prediction),通过前文上下文预测后续词汇,形成连贯文本生成能力。

应用优势:特别适合文本生成场景,如自动写作、对话系统等,生成内容具有上下文连贯性和逻辑性。

      

2.4 掩码语言建模        

核心任务:采用“完形填空“机制,随机遮盖输入文本中的部分词汇(通常15%),要求模型预测被遮盖的原始词汇。这种自监督学习方式使模型能深入理解上下文语义关系。

技术优势:双向上下文编码能力显著优于传统单向语言模型在GLUE基准测试中提升幅度达7%-15%特别适合命名实体识别、情感分析等NLU任务。

      

3. 并行训练

分布式训练是训练大语言模型(LLM)的核心技术。没有它,GPT-4、Llama 这类千亿参数模型根本无法训练——单张显卡的内存远远不够,训练时间也会长达数百年。

3.1 数据并行

思路:每张 GPU 保存完整的模型副本,但处理不同的数据批次。

GPU 0: 模型副本 + batch 0
GPU 1: 模型副本 + batch 1
GPU 2: 模型副本 + batch 2
GPU 3: 模型副本 + batch 3

流程

  1. 每张卡独立计算梯度

  2. 所有卡的梯度同步(All-Reduce)

  3. 每张卡用同步后的梯度更新自己的模型

优点:实现简单,通信量小
缺点:模型必须能放进单卡显存(对大模型不成立)

3.2 模型并行

思路:把模型切分到多张 GPU 上,每张卡只存一部分。

a. 张量并行(Tensor Parallelism)

在 Transformer 层内部切分。例如把注意力头的权重矩阵按列切分:

原始: [768, 3072] 权重矩阵
切分: GPU0 存 [768, 1536],GPU1 存 [768, 1536]

计算时需要 All-Reduce 通信来聚合结果。

优点:精细切分,适合单机多卡。
缺点:通信频繁,跨机时延迟高。

b. 流水线并行(Pipeline Parallelism)

按层切分,GPU 0 负责第 1-4 层,GPU 1 负责第 5-8 层,以此类推。

数据流向:
batch → GPU0 (层1-4) → GPU1 (层5-8) → GPU2 (层9-12) → GPU3 (层13-16)

优点:通信量小(只传激活值和梯度)
缺点:存在“流水线气泡”(部分 GPU 空闲等待)

c. 混合并行

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐