ai学习笔记(十)
本次主要分享一下LLM训练与架构解析。
学习LLM需要掌握数据的原理特性,以及分布式训练的基础。
1. LLM训练数据
LLM训练的数据通常为文本数据。
1.1 数据预处理
在处理TB级别甚至PB级别的海量语料时,预处理环节的质量直接决定了最终模型的“智商”和“价值观”。
大模型的数据预处理主要分为以下几步:
1、基础清洗与标准化(移除html标签、特殊字符) TB级别的筛选
主要目标:将原始文本转化为干净、统一的纯文本格式。
HTML/XML标签移除:去除
<div>、<p>、<script>等标签,提取标签间的纯文本。特殊字符处理:
移除控制字符(如乱码、
\x00)。标准化Unicode(如将全角符号转为半角,将带重音字母
é保留或根据语料要求规范化)。移除零宽空格、软连字符等不可见字符。
多余空白处理:将连续的空格、换行符压缩为单一空格或标准段落分隔符。
元数据剥离:去除页眉、页脚、导航栏、版权声明等非正文内容。
2、语言检测和分类(需要识别出机器翻译的痕迹)
主要目标:识别文本的实际语言,并剔除低质量的机器翻译文本。
语言识别:使用工具(如
fastText、langdetect)对文本块进行语言分类,标记为“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 的位置。
所以“预训练目标” = 预训练阶段用来优化模型的数学目标,它决定了:
-
模型能看到什么(单向还是双向上下文)
-
模型要预测什么(下一个词 vs 被盖住的词)
-
模型最终擅长什么(生成 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
流程:
-
每张卡独立计算梯度
-
所有卡的梯度同步(All-Reduce)
-
每张卡用同步后的梯度更新自己的模型
优点:实现简单,通信量小
缺点:模型必须能放进单卡显存(对大模型不成立)
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. 混合并行

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



所有评论(0)