CS336课程笔记:lecture 0 基础回顾
考虑到资源,如何训练出最好的模型?
举例:给你一个 Common Crawl dump 和 32 H100s ,时间两周,你应该怎么做?

Basics 基础
分词器 Tokenizers
定义:一种能在字符串和整数序列之间进行转换的东西
整数序列是输入到实际模型中的内容。
字节对分词器 Byte-Pair Encoding (BPE) tokenizer
“无分词器方法”:这些方法直接处理原始字节,而不进行分词。并开发一种特殊的架构,直接接收原始字节。
但应用不广泛,所以我们还是用BPE分词。
模型架构 Architecture
Transformer
原始transformer:

一些变化:
1. 激活函数:ReLU、SwiGLU
SwiGLU是一种结合了Swish激活函数和门控线性单元(GLU)的混合激活函数
![]()
2. 位置编码:Sinusoidal(正余弦位置编码)、RoPE(旋转位置编码)
3. 归一化:LayerNorm、RMSNorm(均方根归一化)
4. 归一化的位置:pre-norm versus post-norm(前归一化 / 后归一化)
5. MLP:可用dense、mixture of experts替换
6. Attention:full,sliding window,linear attention (全都试图防止二次增长)
7. 低纬attention:group-query attention(GQA)、multi-headd latent attention(MLA)
8. State-space models(基于空间的模型):Hyena
SSM(状态空间模型) 是一类基于 “动态系统状态演化” 的序列建模框架,核心是 “用‘状态更新’替代‘注意力的全局点积’”,能以
O(L)的线性复杂度处理超长序列,是近年来替代 Transformer 处理长序列的热门方向。
训练 Training
1. 优化器:AdamW、Muon、SOAP
2. 学习率策略:cosine、WSD
3. Batch size:critical batch size(临界批次大小)
4. 正则化:dropout、weight decay
5. 超参数:(number of heads、隐藏维度)grid search
作业1

Systems 系统
GPU


发现:一个主要的瓶颈就是数据移动的成本
技巧:高效组织计算,通过最小化数据移动成本来最大化GPU的利用率
使用 CUDA、Triton、CUTLASS、ThunderKittens 这些工具 / 框架编写核函数
GPU核函数:
GPU 并行计算的核心执行单元,是运行在 GPU 上、由 CPU 发起调用的一段代码。它的设计目的是利用 GPU 大量计算核心的并行能力,高效处理大规模数据或复杂计算任务。
并行化 Parallelism

推理 Inference
推理的两个阶段:预填充(Prefill)和解码(Decode)

预填充:接收提示词,然后通过模型运行它,得到一些激活值
解码:逐个进行自回归生成token
预填充阶段(similar to training):tokens全都给出,可以一次性处理所有内容(天然适合并行处理,受限于计算能力)
解码阶段:需要一次生成一个token,很难充分利用所有GPU(推理过程变得特殊和困难,主要是因为这种自回归解码方式,受限于内存)
加速解码的方法:
1. 使用cheaper model:通过模型剪枝,量化和蒸馏
2. Speculative decoding:用成本更低的 “draft” model 生成多个tokens,再利用完整模型进行并行打分(属于精确解码!)
3. 系统优化:KV caching, batching
作业2
Scaling laws 缩放定律
目标:小范围做实验,在大范围预测超参数 / loss
问题:给你一个FLOPs budget,你知道应该使用什么模型尺寸吗?
Compute-optimal scaling laws:

经验:tokens(D) = 20*parameter(N)
例如:1.4B 参数量的模型应该用 28B tokens 进行训练
作业3
Data 数据
Evaluation 评估方法
1. 困惑度(Perplexity):语言模型的 “教科书级” 评估指标
2. 标准化测试:如 MMLU、HellaSwag、GSM8K
3. 指令遵循能力:如 AlpacaEval、IFEval、WildBench
4. 提升测试时计算量:如 COT、集成学习
“测试时计算量” 指模型推理阶段的资源投入(如计算步数、并行规模)。通过增加计算量,可在不改变模型参数的情况下提升输出质量,是性价比高的优化手段。
5. 用语言模型当 “裁判”:评估生成式任务的质量
6. Full system: RAG、agents
Data curation 数据筛选
1. 数据不会凭空出现
2. 资源来源多样,存在一些 “垃圾” 数据
3. 能否依据合理使用原则,使用受版权保护的数据进行模型训练?
4. 可能需要通过授权获取数据
5. 数据格式多样,需要转化成纯文本
Data processing 数据处理
1. Transformation:将 HTML/PDF 格式转换为文本(保留内容、部分结构,进行重写)
2. Filtering:保留高质量数据,移除有害内容(通过分类器实现)
3. Deduplication(去重):节省计算资源,避免记忆重复内容,use Bloom filters or MinHash
作业4
Alignment 对齐
目标:
- 使语言模型听从指令
- 微调 the style:format、length、tone,etc.
- 融入安全性考量:如 拒绝回答有害提问
两个阶段:监督微调(supervised finetuning)和 从反馈中学习(learning from feedback)
Supervised finetuning (SFT)
收集数据:prompt response pairs
进行监督学习
learning from feedback
目标:你可以利用更轻量级的标注形式,并让算法承担更多的工作
你可以用来学习的一种数据是偏好数据(Preference data),另一种是验证器(Verifiers)
Preference data
Data:使用模型给 prompt 生成多种 responses(e,g, [A,B])
用户提供偏好(e.g. A < B or A > B).

Verifiers
1. 规范的验证器:如用于 code ,math
2. 学习到的验证器:train against an LM-as-a-judge
Algorithms
1. 强化学习中的近端策略优化(PPO,Proximal Policy Optimization)
2. 直接策略优化(DPO):适用于偏好数据,实现更简洁
3. 组相对偏好优化(GRPO,Group Relative Preference Optimization):移除了价值函数
作业5
备注:所有作业部分后续会更新github链接
更多推荐


所有评论(0)