珍藏|斯坦福CS336笔记:程序员从0构建大模型的系统性框架
一、基础核心:大模型的“砖瓦”——Tokenizer与计算基础
01. BPE Tokenizer:大模型的“语言翻译官”
字节对编码(Byte-Pair Encoding)是目前主流的分词方案,核心逻辑是自底向上合并高频字节对,逐步形成稳定的子词单元。
✅ 优势:既避免单字分词的语义割裂,又解决生僻词OOV(未登录词)问题,平衡语义完整性与编码效率。
02. FLOPs计算与显存估算:开发前必算的“成本账”
大模型开发的核心约束是计算量与显存,这两个指标直接决定硬件选型与训练效率:
● 计算量(FLOPs):矩阵乘法中,平均每个参数约需2 FLOPs/token。例:7B模型≈14B FLOPs/token。
● 精度选择:fp32(通用)→ tf32(19bit,平衡速度与精度)→ bf16/fp16(训练常用)→ fp8(推理低精度,需注意数值稳定性)。
● 复杂度关系:反向传播(backward)计算量≈正向传播(forward)的2倍(需同时处理参数与激活值)。
● 显存构成:参数(模型本身)+ 激活值(计算中间结果)+ 梯度(反向传播产物)+ 优化器状态(如Adam的动量项)。关键提醒:推理可量化省显存,训练阶段通常不能量化。
常用工具:tensor(stride)、einops、einsum、jaxtyping,可高效简化张量操作。
二、模型设计:从结构到超参的“精准调控”
03. 网络结构优化:更轻、更快、更稳
Transformer架构的细节优化,是大模型能否“训得动、效果好”的关键,核心改进方向如下:
模块 | 传统方案 | 优化方案 | 核心优势 |
归一化 | LayerNorm(带bias) | RMSNorm(无bias) | 减少内存移动,降低显存占用 |
归一化位置 | PostNorm(层后归一化) | PreNorm(层前归一化) | 无需warmup,防梯度爆炸/消失 |
FFN设计 | 带bias,固定维度 | 去bias,动态维度 | 避免低精度下bias溢出,节省参数 |
激活函数 | GELU | SwiGLU(门控激活) | 提升模型表达能力,输出维度缩放至2/3*d_model |
位置编码 | 三角函数 | RoPE(旋转位置编码) | 保留相对位置信息,满足f(x,i)*f(y,j)=g(x,y,i-j) |
04. 超参数选择:不盲目调参的“黄金法则”
超参数直接决定模型性能上限,需结合架构与任务特性精准设置,核心参数规律如下:
● FFN宽度:普通激活(GELU)设d_hidden_ffn=4*d_model;门控激活(SwiGLU)设d_hidden_ffn=8/3*d_model(保持总参数量一致)。
● 注意力头配置:需满足head*head_dim=d_model,若head*head_dim>d_model,部分头会退化为低秩注意力,丧失表达能力。
● 模型宽深比:d_model/layer_num≈100,过宽(如T5)或过深(如GPT-2)都会导致训练效率下降。
● 词表规模:单语言30K-50K,多语言100K,过大易导致参数冗余,过小则语义覆盖不足。
● 训练策略:数据通常只过1遍(epoch=1);预训练阶段dropout=0.1(部分工作可省略);学习率后期降至初始值的1/10以下(如1e-5),配合Weight Decay增强正则化。
05. 训练技巧:避开“训练崩溃”的坑
大模型训练易出现loss骤升(spike)等问题,核心在于监控稳定性与针对性解决溢出问题:
关键监控指标:同时观察loss与梯度L2范数,loss并非越低越好,稳定才是核心目标。
常见问题与解决方案:
● Softmax溢出:Output softmax加z-loss=(logZ-0)²;Attention softmax采用QK Normalization(效果优于Soft-cap技术)。
● 推理显存优化:KV Cache用MQA(多头Q共享KV)减少冗余;Sparse Attention(滑动窗口+RoPE)降低计算量。
三、进阶架构:MoE——大模型的“并行引擎”
混合专家模型(Mixture of Experts, MoE)通过“分而治之”的思路,在不显著增加计算量的前提下提升模型容量,核心要点如下:
核心设计:让每个Token“找对专家”
● 基本逻辑:每个Token仅激活Top-K个专家(K≥2更利于探索),避免全量专家计算,平衡容量与效率。
● 路由策略:Hash Expert(哈希分配)→ Switch Layer(硬切换)→ Dynamic Routing(动态路由),DeepSeek V3采用Sigmoid gate+reweight防溢出。
● 专家配置:8个专用专家+1个共享专家,降低FFN隐藏层维度,提升并行效率。
关键挑战:负载均衡与训练稳定
● 负载均衡方案:训练前期给Gate加噪声促进探索;Switch Transformer加辅助loss控制专家使用比例;DeepSeek V3用在线bias调整,推理加sequence-wise imbalance loss。
● 避坑指南:Gate softmax必须用fp32保证精度;小数据集易过拟合,可交替使用MoE与Dense层,SFT阶段只微调Dense层;Upcycling技术可从Dense模型复制FFN快速构建MoE结构。
● 推理问题:专家设备过载时可随机drop token(会引入不确定性),需结合业务容忍度选择。
四、工程落地:硬件优化与分布式训练
大模型从理论到实践,工程优化是核心瓶颈,这部分直接决定“能否跑起来、跑得多快”。
07. GPU硬件与优化:榨干每一分算力
GPU的核心单位是SM(Streaming Multiprocessor),由block和warp(32线程)组成,同warp需执行相同指令,这是优化的核心依据:
性能瓶颈与优化技巧
● 核心瓶颈:FLOPs增长速度远超显存带宽,显存比计算力更宝贵,优化重点是减少显存读写。
● 关键优化手段:
避免分支判断(if语句导致线程空转);
● 混合精度计算:聚合操作用fp32/bf16,矩阵乘法用fp16/bf16;
● Kernel Fusion(算子融合)减少显存读写次数;
● Flash Attention:通过Online Softmax+Tiling+Kernel Fusion,将Attention计算效率提升数倍;
● Memory Coalescing(内存合并):保证寻址对齐,充分利用DRAM burst特性。
性能分析工具:PyTorch profiler(粗粒度)、NVTX profiler(细粒度,支持CPU+GPU协同分析)。
算子选择优先级:PyTorch内置算子>Triton手写函数>Torch.compile优化>CUDA Kernel>Python手写函数(效率依次递减)。
08. 分布式并行:突破单卡算力限制
当模型参数超过单卡显存时,需通过分布式并行拆分任务,三种主流并行策略的核心逻辑与组合方式如下:
并行策略 | 核心逻辑 | 优势 | 代表方案 |
数据并行(DP) | 拆分数据,各卡独立计算后聚合梯度 | 扩展batchsize,易实现 | ZeRO-1/2/3(ZeRO-3即FSDP,参数切分最省显存) |
模型并行(MP) | 拆分模型层或张量,各卡负责部分计算 | 突破单卡显存限制,适合超大模型 | Pipeline Parallel(PP,按层拆分)、Tensor Parallel(TP,按张量拆分) |
组合策略:优先用DP(ZeRO)扩展数据规模,再在单机内用TP(≤8卡)拆分张量,最后用PP处理超大规模模型。例:DeepSeek V3采用16路PP+专家并行+ZeRO-1 DP。
GPU数量公式:gpu_num = dp × pp × tp,需结合硬件数量与模型规模合理分配。
五、部署与评估:从“能训”到“能用”
09. 推理优化:让大模型“跑得快、省资源”
推理阶段的核心目标是提升吞吐量与降低延迟,需结合不同阶段特性针对性优化:
● 阶段特性:Prefill阶段(输入处理)是计算密集型,batchsize增大更高效;Generate阶段(逐token生成)是内存密集型,效率固定为1 token/步。
● 核心优化手段:
KV Cache优化:GQA、MLA、CLA等架构减少冗余存储;
● 结构优化:Mamba、Linear Attention等替代传统Attention,降低计算复杂度;
● 工程优化:int8量化、模型蒸馏(Draft & Check)、动态batching、Page Attention(减少显存碎片)。
10. Scaling Law:预测模型性能的“导航图”
Scaling Law(缩放定律)通过小规模实验预测大规模模型性能,是资源规划的核心依据:
● Data Scaling Law:通过小规模实验确定有效缩放区间,预测数据组成、架构选择、超参数设置的最优方向。
● Model Scaling Law:确定不同计算量下的最优模型范围,需注意学习率不遵循缩放定律,需单独调优。
● Critical Batch Size:小batch噪声大,大batch噪声比例恒定,可通过梯度累积扩展batchsize,且扩大batch时需线性增大学习率,保持更新幅度不变。
● muP技术:通过重新参数化保持训练动态稳定,实现小模型调参结果向大模型迁移,降低大规模实验成本。
11. 模型评估:不止看Perplexity
大模型评估需兼顾客观指标与实际任务效果,核心评估维度分为两级:
1. 基础指标(Perplexity Level):困惑度(Perplexity)衡量模型对文本的拟合能力,是基础参考。
2. 任务指标(Task Level):结合具体任务(如分类、生成、推理)评估准确率、BLEU、ROUGE等指标,反映实际应用效果。
12. 数据处理:模型性能的“基石”
数据质量直接决定模型上限,核心处理环节包括过滤、去重与语种识别:
● 核心工具:kenLM(ngram语言模型)、fastText分类器、Importance Sampling(重要性采样)。
● 关键操作:语种识别过滤非目标语言数据;用fastText等工具过滤有害文本;去重采用BloomFilter、MinHash,重复文档按log次数采样训练,避免数据偏斜。
13. 推理能力增强:让模型“会思考”
大模型推理能力需通过人类反馈强化,核心技术路线如下:
● RLHF(基于人类反馈的强化学习):通过人类标注偏好训练奖励模型,再用PPO算法优化策略模型,是主流方案。
● DPO(直接偏好优化):跳过奖励模型训练,直接用偏好数据优化策略,简化流程。
● GRPO(通用强化偏好优化):扩展DPO的适用范围,支持更复杂的偏好数据格式。
今天的分享就到这里了,喜欢的话点个关哦~



