01
吞吐与显存概述
定义吞吐量(Throughput)与显存(VRAM)的基本概念,解释为什么两者需要协同优化。
基础概念
02
计算瓶颈分析
区分计算密集型与访存密集型任务,介绍Roofline模型。
性能Roofline
03
显存层次结构
GPU显存体系(HBM、L2、L1、寄存器),理解不同层级的速度与容量差异。
硬件层次
04
数据复用原理
时间局部性与空间局部性,如何通过复用减少显存访问次数。
局部性复用
05
算子融合 (Kernel Fusion)
将多个小算子合并为一个大算子,减少Kernel Launch开销与中间显存读写。
融合优化
06
Tiling (分块) 策略
将大矩阵/张量切分为小块,使数据驻留在高速缓存中,提升吞吐。
分块缓存
07
Bank Conflict & Shared Memory
Shared Memory的Bank结构,如何避免冲突以提升带宽利用率。
共享内存冲突
08
流水线与异步执行
利用CUDA Stream实现计算与数据传输的重叠,隐藏延迟。
流水线异步
09
显存池 (Memory Pool) 设计
预分配大块显存,避免频繁cudaMalloc/cudaFree带来的开销与碎片。
显存池分配
10
显存复用技术
In-place操作、张量生命周期管理、引用计数与垃圾回收机制。
复用生命周期
11
梯度累积与显存权衡
在训练中通过梯度累积模拟大Batch Size,平衡吞吐与显存占用。
梯度累积权衡
12
混合精度训练 (AMP)
FP16/BF16与FP32的混合使用,降低显存占用并提升计算吞吐。
AMP精度
13
ZeRO优化器
ZeRO-Stage 1/2/3原理,如何通过分片状态 (State Sharding) 减少显存冗余。
ZeRO显存
14
激活值重计算 (Checkpointing)
以计算换显存,选择性地丢弃并重算中间激活值。
重计算激活
15
张量并行 (Tensor Parallelism)
将单个张量切分到多个设备,解决单卡显存不足问题。
并行张量
16
流水线并行 (Pipeline Parallelism)
按层切分模型,各设备处理不同层,提升整体吞吐。
流水线并行
17
数据并行与通信优化
All-Reduce的带宽优化,Ring All-Reduce与Tree All-Reduce。
通信All-Reduce
18
通信与计算重叠
使用NCCL的异步通信API,将通信时间隐藏在计算背后。
NCCL重叠
19
Flash Attention原理
通过分块计算与显存复用,将Attention的显存复杂度从O(N²)降至O(N)。
AttentionFlash
20
PageAttention与vLLM
针对LLM推理的显存管理,通过虚拟分页消除内部碎片。
vLLM分页
21
KV Cache量化与压缩
对LLM推理中的Key-Value Cache进行INT8/INT4量化,减少显存占用。
量化KV Cache
22
Continuous Batching
在推理服务中动态拼接请求,提高GPU利用率与吞吐。
批处理推理
23
Speculative Decoding
投机解码,用小模型生成草稿,大模型验证,加速推理吞吐。
投机解码
24
模型剪枝与稀疏化
结构化/非结构化剪枝,利用稀疏矩阵运算减少计算量与显存。
剪枝稀疏
25
知识蒸馏
用大模型(Teacher)训练小模型(Student),在保持精度的同时降低资源需求。
蒸馏压缩
26
量化感知训练 (QAT)
在训练过程中模拟量化误差,使低精度模型精度更高。
QAT量化
27
动态显存分配与碎片整理
实现类似jemalloc/tcmalloc的GPU内存分配器,减少碎片。
分配器碎片
28
Profiling工具使用
Nsight Systems、Nsight Compute、PyTorch Profiler,定位吞吐瓶颈与显存泄漏。
ProfilerNsight
29
端到端案例:LLM训练优化
大语言模型训练优化实战,综合运用上述技术实现2倍以上吞吐提升。
实战训练
30
端到端案例:LLM推理优化
大语言模型推理优化实战,综合运用上述技术实现低延迟高吞吐推理。
实战推理