前言

【CMU 11-868】课程面向研究生开设,聚焦“从算法到工程”的大语言模型系统构建全过程。课程内容包括但不限于:

  • GPU 编程与自动微分:掌握 CUDA kernel 调用、并行编程基础,以及深度学习框架设计原理
  • 模型训练与分布式系统:学习高效的训练算法、通信优化(ZeRO、FlashAttention)、分布式训练框架(DDP、GPipe、Megatron-LM)。
  • 模型压缩与加速:量化(GPTQ)、稀疏化(MoE)、编译技术(JAX、Triton)、以及推理时的服务化设计(vLLM、CacheGen)。
  • 前沿技术与系统实践:涵盖检索增强生成(RAG)、多模态 LLM、RLHF 系统,以及端到端的在线维护和监控。

一、大语言模型的能力(Capabilities of LLMs)

  大模型的发展历程和规模增长趋势如下图所示:
在这里插入图片描述
在这里插入图片描述
  LLM的能力包括翻译、总结、回答日常问题、数学计算、润色邮件、编写代码等 。

在这里插入图片描述

  1️⃣ 翻译(Translation)

在这里插入图片描述

  2️⃣ 模仿用户风格(ChatBot to Mimic a User)

  使用微信(WhatsApp)聊天数据进行训练(大约 10 条聊天记录就足够了),耗时约几个小时,生成模仿用户风格的回复。

  3️⃣ 风格重写(Rewrite Text with Style)

  • Q:请用尤达的风格写下这句话。这里有几个例子。
    你还有很多要学的。-> 还有很多要学的,你仍然有。
    我会说你找到人了,嗯?-> 找到人了,你已经,我会说,嗯?
    你不应该开那么快。->
  • A:开那么快,你不应该。

在这里插入图片描述

  4️⃣ 常识推理(Commonsense Reasoning)

  • Q:填空:史蒂文对罗伯特选择做猪肉当晚餐感到厌恶,因为___是个素食主义者。
    “选项1”: “史蒂文”, “选项2”: “罗伯特”
  • A:正确答案是“史蒂文”。

在这里插入图片描述

  5️⃣ 数学推理(Math Reasoning)

  • Q:罗杰有4个网球。他又买了2罐网球。每罐有3个网球。他现在有多少个网球?
  • A:罗杰最初有4个网球。当他再买2罐网球,且每罐有3个网球时,他的收藏就增加了2罐×每罐3个网球=6个网球。
    所以,罗杰现在总共有4个初始网球+6个新购买的网球=10个网球。

在这里插入图片描述

  6️⃣ 写代码(Write code)

  Q:给你一个0索引的山脉数组mountain。你的任务是找出这个山脉数组中的所有峰值。请编写一个Python程序。

在这里插入图片描述

  7️⃣ 图像生成(Image Generation)

在这里插入图片描述

  

二、数学基础(Mathematical Foundations)

2.1 概率模型(Probability Model)

  1️⃣ 下一个Token预测概率(Probability Model for Next Token)

  语言模型本质上是计算下一个Token的条件概率:

P ( next word  y t ∣ Prompt  x , previous words  y 1 : t − 1 ) P(\text{next word } y_t | \text{Prompt } x, \text{previous words } y_{1:t-1}) P(next word ytPrompt x,previous words y1:t1)

在这里插入图片描述

  2️⃣ 语言模型的数学原理(Mathematics of Language Model)

  整个序列的概率是各步条件概率的乘积 。

在这里插入图片描述
  

  3️⃣ ChatGPT改变AI格局的原因(Why is ChatGPT changing AI landscape)

  • 在超大规模原始数据(3000亿个标记)上进行预训练 + 少量人类反馈;
  • 遵循指令——通过自然指令即可轻松使用;
  • 上下文学习——通过在使用时展示几个示例,能很好地泛化到多种任务。

2.2 语言模型类型(Type of Language Models)

  语言模型类型可以分为:仅编码器(Encoder-only)、编码-解码器(Encoder-Decoder)和仅解码器(Decoder-only)。其中仅编码器是非自回归的掩码语言模型(Non-autoregressive,Masked LM),仅解码器是自回归模型(Autoregressive)。

在这里插入图片描述

  1️⃣ 仅编码器语言模型(Encoder-only Language Model)

  • 掩码预测:BERT P ( x m a s k ∣ x ) P(x_{mask } | x) P(xmaskx);
  • 也可用于生成语言,例如:NAT、REDER(可逆双工模型)。

在这里插入图片描述

  2️⃣ 编码器-解码器语言模型(Encoder-Decoder Language Model)

  • 对概率 P ( Y ∣ X ) P(Y | X) P(YX) 进行建模;
  • 编码器可以选择双向长短期记忆网络(Bi-LSTM)、Transformer、卷积神经网络(CNN);
  • 解码器可以选择长短期记忆网络(LSTM)、Transformer或非自回归Transformer,卷积神经网络。

在这里插入图片描述

  3️⃣ 仅解码器语言模型(Decoder-only Language Model)

  • 因果语言模型: P ( X ) = ∏ n = 1 N P ( x n ∣ x 1.. n − 1 ) P(X)=\prod_{n=1}^{N} P(x_{n} | x_{1 . . n-1}) P(X)=n=1NP(xnx1..n1);
  • 模型选择:Transformer或(单向)LSTM;
  • 最受欢迎的大语言模型架构。

在这里插入图片描述

2.3 LLM学习框架(LLM Learning Framework)

  • 预训练 (Pre-training):使用海量原始文本(Wiki, 书籍, Reddit等),追求数据量大且质量高 。
  • 监督微调 (SFT):使用问答对等指令数据 。
  • 强化学习 (RL):使用偏好数据(Preference data)进行对齐。

在这里插入图片描述

  1️⃣ 语言模型的预训练(Pre-training of Language Models)

  • 数据:原始文本语料库
    • 数据量越大越好,通常从网络上爬取;
    • 质量很重要:维基百科、书籍、经过筛选的Reddit帖子;
  • 模型架构设计
    • 稀疏注意力(Sparse Attention)、混合专家模型(MoE)等;
  • 训练损失
    • 用于下一个token预测的交叉熵损失。

  2️⃣ 训练目标(Training Objective)

  • 交叉熵损失: C E = − 1 N ∑ n = 1 N l o g P θ ( x n ∣ x < n ) CE=-\frac{1}{N} \sum_{n=1}^{N} log P_{\theta}(x_n | x_{<n}) CE=N1n=1NlogPθ(xnx<n)
  • 核心目标:最小化下一个 token 预测的损失值

在这里插入图片描述

  3️⃣ 语言模型性能的衡量(Measuring Performance of Language Model)

  • 基础指标
    • 困惑度(Perplexity):用于开放式生成, P P L = e x p − 1 N ∑ n = 1 N l o g P L M ( x n ∣ x < n ) PPL=exp -\frac{1}{N} \sum_{n=1}^{N} log P_{LM}(x_n | x_{<n}) PPL=expN1n=1NlogPLM(xnx<n),值越低性能越好(例:GPT-3 零样本在 PTB 数据集上为 20.5)
  • 参考型指标
    • 经典指标:BLEU、ROUGE(基于 n-gram 匹配)
    • 现代模型型指标:SEScore2、COMET、BLEURT、InstructScore(可解释性)
  • 下游任务指标
    • 命名实体识别:F1 分数
    • 问答任务:准确率、匹配率
    • 代码生成:pass-rate @k
    • 检索任务:NDCG
    • 翻译任务:COMET/SEScore2/BLEU

  4️⃣ LLM性能表现(Performance of LLM)

  模型规模(参数量)和数据量都很重要,二者共同决定性能 。

在这里插入图片描述

三、大语言模型系统中的挑战(Challenges in LLM Systems)

  1️⃣ 现代大语言模型(Modern LLMs)

  • 通用型(Generalist):将所有 AI 任务转化为基于 token 的序列生成任务
  • 可指令性(Instructibility):交互式系统,支持自然语言或无限指令
  • 智能体属性(Agentic):调用外部工具、执行动作、接收反馈

  2️⃣ 大语言模型的系统设计(System Design for LLM)

  • 关键系统问题:使用更少的资源(GPU/内存/电力)更快地在更大的数据集上计算(训练/推理)更大的大语言模型;
  • 恰当的抽象:设计有用的构建块,向应用程序开发人员隐藏复杂性——不同级别的计算;
  • 权衡:基本限制和主要成功指标是什么?

  3️⃣ 语言模型中的计算(Computation in Language Models)

  • 通用网络层:
    • 多头注意力(Multi-head Attention)
    • 层归一化(Layer Norm)
    • Dropout
    • 线性层
    • 非线性激活(Tanh/RELU/GELU)
    • Softmax
  • 低级别算子:
    • 矩阵 / 张量乘法
    • 归约(求和、平均)
    • 映射(逐元素应用)
    • 内存移动

  4️⃣ 不同抽象层次的系统挑战(System Challenges at Different Abstraction Levels)

抽象层次核心挑战优化方向
分布式 / 并行系统超大规模模型、数据集、长序列的分区 / 调度 / 通信并行策略优化、通信效率提升
DL 框架便捷开发 / 修改模型、快速实现 ML 算法模块化设计、接口简化
数据块算子计算速度、数据 / 模型压缩快速 CUDA/TPU 内核、压缩算法

在这里插入图片描述

  5️⃣ 大语言模型需要模型-算法-系统协同设计(LLM needs Model-Algorithm-System Co-design)

  • 缩放就是你所需要的一切!—— 向上缩放和向下缩放
  • 联合设计:模型架构、训练/推理算法、软件优化(分区、调度、数据移动、延迟隐藏)、硬件加速(设备特定指令)

  6️⃣ 计算与数据传输(Computation versus Data Transfer)

  • 仅让计算速度快是不够的;
  • 数据传输需要时间;
    • 大型模型有很多参数:跨设备/节点传输参数/梯度可能会花费更多时间;
    • 批量数据样本与单个序列采样;
  • 长上下文大语言模型需要大的工作内存;

  7️⃣ 编程模型(Programming Models)

  • 上层:将模型集成到产品系统,跟踪并提升产品质量;
  • 中层:构建模型训练与推理软件,流式数据流处理;
  • 下层:构建 GPU 内核、编译器等底层组件;
  • 核心要求:抽象设计需解放程序员(如无需关注性能或故障),同时支持广泛应用场景。

四、课程安排(Logistics)

  这部分主要是对课程的介绍和安排,不涉及具体知识点,因此省略。

更多推荐