第1章
显存去哪了
模型参数、梯度、优化器状态、中间激活值分析,混合精度如何从源头减少显存。
显存分析FP16
第2章
FP16 vs FP32
半精度浮点数表示范围与精度,FP16数值溢出问题,为何需要混合精度。
精度数值溢出
第3章
损失缩放 (Loss Scaling)
为什么需要损失缩放,动态与静态缩放区别,PyTorch实现。
GradScalerAMP
第4章
梯度累积
梯度累积原理,模拟更大Batch Size,代码实现与显存收益。
Gradient AccumulationBatch Size
第5章
ZeRO优化器 (DeepSpeed)
ZeRO Stage 1/2/3原理,分片存储优化器状态、梯度、参数,显存节省效果。
ZeRODeepSpeed
第6章
激活值检查点
以时间换空间原理,哪些层适合检查点,PyTorch实现。
Checkpointing显存优化
第7章
混合精度实战 (PyTorch AMP)
torch.cuda.amp的autocast与GradScaler,完整训练代码示例。
AMPPyTorch
第8章
混合精度实战 (HuggingFace Trainer)
Trainer中fp16=True配置,结合DeepSpeed使用。
HuggingFaceTrainer
第9章
混合精度实战 (DeepSpeed)
DeepSpeed配置文件详解,ZeRO与混合精度组合使用。
DeepSpeed配置
第10章
显存监控与调试
torch.cuda.memory_summary(),显存泄漏排查,OOM解决。
调试OOM
第11章
梯度裁剪
梯度裁剪原理,混合精度中重要性,代码实现。
Gradient Clipping稳定
第12章
Batch Size与学习率关系
线性缩放法则,混合精度中学习率调整与预热策略。
学习率预热
第13章
数值稳定性
NaN、Inf问题定位与修复,调试技巧。
NaN稳定性
第14章
Batch Normalization
BN在FP16下的问题,LayerNorm等替代方案。
BNLayerNorm
第15章
Embedding层
Embedding在FP16下的梯度问题及解决方案。
Embedding梯度
第16章
Softmax
Softmax在FP16下的精度问题,LogSoftmax使用。
Softmax精度
第17章
CrossEntropyLoss
损失函数FP16实现,label smoothing影响。
损失函数Label Smoothing
第18章
LayerNorm
LayerNorm在FP16下的数值问题,RMSNorm等变体。
LayerNormRMSNorm
第19章
Attention
Attention在FP16下的实现,Flash Attention显存优化。
AttentionFlash
第20章
Dropout
Dropout在混合精度训练中的行为与正确使用。
Dropout正则化
第21章
权重衰减 (Weight Decay)
权重衰减在FP16下的实现,AdamW正确使用。
Weight DecayAdamW
第22章
学习率调度
Cosine、Linear、Step调度器在混合精度中的表现。
调度器Cosine
第23章
数据加载
DataLoader的num_workers设置,数据预处理对显存影响。
DataLoader预处理
第24章
分布式训练
DDP与混合精度结合,梯度同步显存优化。
DDP分布式
第25章
模型并行
Tensor Parallelism与Pipeline Parallelism,显存分配策略。
模型并行TP/PP
第26章
CPU Offloading
优化器状态/梯度卸载到CPU,性能与显存权衡。
OffloadCPU
第27章
显存碎片
显存碎片产生原因,内存池和预分配减少碎片。
碎片内存池
第28章
模型量化
PTQ与QAT,混合精度与量化结合。
量化PTQ
第29章
稀疏训练
稀疏梯度与稀疏参数,与混合精度结合。
稀疏梯度
第30章
综合实战:LLaMA风格模型
从零训练LLaMA,结合AMP、ZeRO、Activation Checkpointing、梯度累积,显存优化最大化。
LLaMA综合