详细摘要 摘要

生成:2025-06-06 20:31

摘要详情

音频文件
2024 | Stanford CS229 I Machine Learning I Building Large Language Models (LLMs)
摘要类型
详细摘要
LLM 提供商
openai
LLM 模型
gemini-2.5-pro-preview-06-05
已创建
2025-06-06 20:31:08

概览/核心摘要 (Executive Summary)

该讲座由斯坦福大学博士生Yann Dubois主讲,全面概述了构建类ChatGPT大型语言模型(LLM)的完整流程,主要分为预训练(Pre-training)后训练(Post-training)两个核心阶段。讲者强调,尽管学术界传统上关注模型架构与算法,但在工业界,数据、评估和系统优化才是决定模型成败的三个关键支柱。

预训练阶段,模型通过自回归(Autoregressive)任务,在海量互联网文本上学习预测下一个词元(token),其核心是最大化文本的对数似然。此阶段的关键技术包括高效处理文本的分词(Tokenization)、复杂的数据清洗与处理流程(从TB级原始数据中筛选高质量语料),以及用于评估的困惑度(Perplexity)等指标。一个核心理论是规模法则(Scaling Laws),它揭示了模型性能会随着计算资源、数据量和模型参数的增加而可预测地提升,这为资源分配和性能预测提供了理论依据。

后训练(对齐)阶段,目标是将预训练好的模型转变为能遵循指令、有用的AI助手。该阶段始于监督式微调(SFT),使用少量高质量的“指令-回答”数据对,教会模型输出的格式。随后,通过基于人类反馈的强化学习(RLHF)或其更简单、更稳定的替代方案直接偏好优化(DPO),根据人类(或更强大的LLM)对不同回答的偏好来进一步优化模型,使其行为与人类价值观对齐。由于对齐后模型的输出是开放式的,评估极具挑战,通常依赖于如Chatbot Arena等平台进行人类或LLM的“头对头”比较。讲座最后简要提及了系统优化(如混合精度训练、算子融合)对于提升训练效率的重要性。


引言:构建LLM的关键组成部分

讲者Yann Dubois指出,构建大型语言模型(LLM)涉及五个关键部分:

  1. 模型架构 (Architecture):如今LLM几乎都基于Transformer架构。讲者选择不深入探讨此部分,因其已有大量公开资料。
  2. 训练损失与算法 (Training Loss and Algorithm):模型如何学习。
  3. 数据 (Data):模型训练所用的语料。
  4. 评估 (Evaluation):如何衡量模型性能及进展。
  5. 系统 (Systems):如何让庞大的模型在现代硬件上高效运行。

一个核心观点是,学术界往往过度关注前两者,而工业界的实践成功更多地依赖于后三者。

"in reality, honestly, what matters in practice is mostly the three other topics. So data evaluation and systems, which is what most of industry actually focuses on."
(“说实话,在实践中,真正重要的是另外三个主题:数据、评估和系统,这也是大多数行业实际关注的重点。”)


第一阶段:预训练 (Pre-training)

预训练是经典的语言建模范式,目标是让模型学习整个互联网的语言规律。

核心任务:自回归语言建模 (Autoregressive Language Modeling)

  • 定义:语言模型本质上是词元序列的概率分布模型 P(x₁...xₙ)。自回归模型利用概率的链式法则,将其分解为一系列条件概率的乘积:P(xᵢ | x₁...xᵢ₋₁),即预测给定上下文的下一个词元
  • 训练过程
    1. 将输入文本分词并嵌入为向量。
    2. 通过Transformer等神经网络处理,获得上下文表示。
    3. 通过一个线性层映射到与词汇表大小相同的维度。
    4. 使用Softmax函数得到下一个词元的概率分布。
  • 损失函数:使用交叉熵损失(Cross-Entropy Loss),这等同于最大化训练文本的对数似然(Log Likelihood)。

关键技术:分词 (Tokenization)

分词器(Tokenizer)是将原始文本转换为模型可以处理的词元(token)序列的工具,其重要性常被低估。

  • 必要性
    • 通用性:比直接用单词更通用,能处理拼写错误、未登录词(OOV)以及泰语等无空格语言。
    • 效率:若按字符分词,序列会过长,而Transformer的计算复杂度与序列长度成二次方关系,导致效率低下。分词器在词汇量和序列长度之间取得了平衡。
  • 算法示例:字节对编码 (Byte Pair Encoding, BPE)
    1. 初始时,将语料库中所有单个字符视为一个词元。
    2. 迭代地找出最常出现的相邻词元对,并将它们合并成一个新的词元。
    3. 重复此过程,直到达到预设的词汇表大小。
  • 挑战与未来
    • 分词器在处理数学公式和代码时存在困难,例如,数字“327”可能被视为一个独立的词元,使模型难以理解其数值含义。
    • 讲者认为,未来可能会随着新架构的出现(如能高效处理长序列的架构),逐步淘汰分词器,转向更底层的字节级处理。

预训练的评估方法 (Evaluation for Pre-training)

  • 困惑度 (Perplexity)
    • 定义:可以直观理解为模型在预测下一个词元时“犹豫不决”的选项数量。计算上是指数化的平均损失,值越低越好。
    • 现状:虽然因其依赖于分词器和评估数据,已不再是主要的学术基准,但在模型开发过程中仍然是极其重要的监控指标
  • 学术基准 (Academic Benchmarks)
    • 聚合基准:通过在大量经典的NLP任务上进行评估并聚合分数,如斯坦福的HELM和Hugging Face的Open LLM Leaderboard
    • MMLU (Massive Multitask Language Understanding):目前最常用的学术基准之一,包含覆盖众多领域的专业级多项选择题。
  • 评估挑战
    • 不一致性:不同机构对同一基准(如MMLU)的评估方法(如Prompt格式)可能不同,导致结果差异巨大。
    • 数据污染 (Test Set Contamination):测试集中的数据可能无意中出现在了模型的训练集中,导致评估结果虚高。这对学术基准的公正性构成了严重威胁。

预训练的核心要素:数据 (Data)

数据是训练LLM的基石,其处理流程远比“在互联网上训练”复杂得多。

  • 数据来源:通常始于Common Crawl等网络爬虫项目,其数据量可达PB级别(约2500亿个页面)。
  • 数据处理管线
    1. 文本提取:从HTML中提取纯文本内容。
    2. 内容过滤:移除不适宜工作(NSFW)、有害内容和个人身份信息(PII)。
    3. 数据去重:在文档、段落等多个层级上移除重复内容。
    4. 启发式过滤:基于规则(如词元分布、文本长度等)移除低质量文档。
    5. 基于模型的过滤:训练一个分类器,用于识别和筛选高质量文档(例如,以维基百科引用的网页为正样本)。
    6. 领域分类与加权:将数据分为代码、书籍、娱乐等领域,并调整各领域的采样权重(如提高代码和书籍的权重,因其有助于提升模型的推理能力)。
    7. 持续预训练:在训练末期,使用极高质量的数据(如维基百科)以较低的学习率继续训练,以“巩固”模型能力。
  • 数据规模与保密性
    • 规模:顶尖模型(如Llama 3)的训练数据量已达到15万亿(Trillion)词元
    • 保密性:由于涉及核心竞争力和版权风险,各大公司通常对其数据处理方法和构成严格保密。

核心理论:规模法则 (Scaling Laws)

规模法则是LLM领域的一项惊人发现,深刻影响了模型的开发策略。

  • 核心内容:模型性能(以测试损失衡量)与计算量、模型参数量、数据量这三个因素呈幂律关系。在对数-对数坐标系下,性能提升曲线近似为一条直线。这意味着:
    > 更大的模型、更多的数据会带来更好的性能,且这种提升是可预测的。
  • 实践意义
    • 性能预测:可以根据可用的计算资源,预测出训练出的模型能达到的性能水平。
    • 资源优化:帮助决策者在模型大小和数据量之间做出最优权衡。例如,Chinchilla论文发现,对于训练效率而言,每参数约需20个词元的数据是较为理想的配比。
    • 开发流程变革:开发者不再直接在大模型上调参,而是在不同规模的小模型上进行实验,拟合规模法则曲线,然后推断出最佳参数配置,最后用全部资源训练最终的大模型。

预训练的成本估算 (Cost Estimation)

Llama 3 400B模型为例的粗略估算:

  • 模型参数:4050亿
  • 训练数据:15万亿词元
  • 计算量:约 3.8 x 10²⁵ FLOPs
  • GPU时间:约2600万 - 3000万 GPU小时
  • 总成本:约7500万美元(其中GPU租赁成本约5200万美元,人员薪酬约2500万美元)。
  • 碳排放:约4400吨二氧化碳当量,相当于约2000次纽约到伦敦的往返航班。

第二阶段:后训练 (对齐) (Post-training / Alignment)

后训练的目标是将一个只会“续写”的预训练模型,转变为一个能理解并遵循用户指令的AI助手。

方法一:监督式微调 (Supervised Fine-Tuning, SFT)

  • 方法:使用一个规模相对较小、高质量的“指令-回答”数据集对预训练模型进行微调。
  • 数据来源:可以由人类编写,也可以由更强大的LLM生成(如Alpaca项目)。
  • 核心洞察:SFT所需的数据量并不大(数千条即可)。其主要作用不是教授新知识,而是教会模型如何以“助手”的格式来回答问题。知识本身已在预训练阶段习得。

方法二:基于人类反馈的强化学习 (RLHF) 及其替代方案

SFT存在局限性,如受限于人类撰写高质量答案的能力、成本高昂、可能诱发模型“幻觉”等。RLHF旨在解决这些问题。

  • RLHF (Reinforcement Learning from Human Feedback)

    1. 收集偏好数据:针对同一指令,让模型生成两个或多个回答,然后由人类标注者选出更好的一个。
    2. 训练奖励模型:训练一个独立的模型(Reward Model),使其能够预测人类会对哪个回答给出更高的评分。
    3. 强化学习优化:将LLM作为RL中的策略(Policy),奖励模型作为环境(Environment),使用PPO等RL算法进行优化,使LLM倾向于生成能获得更高奖励的回答。
    4. 挑战:RLHF流程复杂,尤其是PPO算法的实现和调试非常困难且不稳定。
  • DPO (Direct Preference Optimization)

    • 方法:作为RLHF的简化替代方案,DPO通过一个巧妙设计的损失函数,直接在偏好数据上进行优化。该损失函数的目标是最大化模型生成“更优”回答的概率,同时最小化生成“较差”回答的概率。
    • 优势:DPO省去了训练独立奖励模型和使用复杂RL算法的步骤,实现简单且性能与RLHF相当,已成为当前开源社区和工业界的主流选择。

后训练的评估挑战与方法

评估对齐后的模型极具挑战性,因为回答是开放式的,没有单一的正确答案。

  • 评估困境
    • 困惑度失效:经过RLHF/DPO优化的模型不再是纯粹的概率模型,其输出的概率分布不具可比性,因此困惑度不再适用。
    • 自动化困难:难以设计自动化的指标来衡量开放式回答的质量。
  • 主流评估方法:头对头比较 (Head-to-head Comparison)
    • 人类评估 (Chatbot Arena):被视为“黄金标准”。让大量真实用户在匿名情况下与两个模型进行对话,并投票选出更好的一个,通过ELO评分系统对模型进行排序。
    • LLM作为裁判 (LLM-as-a-Judge):使用一个非常强大的LLM(如GPT-4)来自动评估两个模型回答的优劣。这种方法成本低、速度快,且与人类评估结果高度相关(如AlpacaEval)。
    • 裁判模型的偏见:LLM裁判存在自身偏见,例如强烈偏好更长、更详细的回答。这需要通过引入控制变量等统计方法进行校正。

系统优化 (Systems Optimization)

由于时间限制,讲者简要介绍了几个提升训练效率的系统级技巧。

  • GPU计算瓶颈:现代GPU的计算速度增长快于内存和通信带宽,导致GPU大部分时间在等待数据,即模型浮点运算利用率(MFU)不高(通常50%已算优秀)。
  • 优化技巧
    1. 低精度/混合精度训练 (Low/Mixed Precision Training):使用16位浮点数(FP16/BF16)进行主要的矩阵运算,以减少内存占用和通信开销,同时保留32位浮点数(FP32)用于存储权重以维持精度和稳定性。
    2. 算子融合 (Operator Fusion):通过torch.compile等工具,将多个连续的计算操作(Kernel)融合成一个,从而大幅减少GPU内存与计算单元之间的数据传输次数,提升效率。

结论与未来展望

讲座总结了构建LLM的关键流程和核心理念,但仍有许多重要议题未深入探讨,包括:

  • 模型架构的演进
  • 推理优化(Inference Optimization)
  • 多模态(Multimodality)
  • 模型的滥用与安全
  • 数据来源的法律与伦理问题

讲者推荐了斯坦福大学的相关课程(CS224N, CS324, CS336)供有兴趣的听众深入学习。