VIP20
本课程属于:011-CUDA AI算力与GPU工程 · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录 咨询 / 购买

CUDA显存管理 · 告别训练中断

📚 共计 30 章节
01
显存泄漏的根源
理解CUDA内存分配与释放机制,掌握cudaMalloc和cudaFree的正确使用姿势。
cudaMalloc内存泄漏
02
PyTorch显存分配器探秘
深入理解PyTorch的缓存分配器工作原理,学会使用torch.cuda.memory_summary()诊断工具。
缓存分配器memory_summary
03
梯度累积与显存优化
掌握梯度累积技术,用时间换空间,突破单卡显存限制。
梯度累积时间换空间
04
混合精度训练实战
AMP(自动混合精度)的原理与配置,如何在减少显存占用的同时保持模型精度。
AMP混合精度
05
激活值检查点 (Checkpointing)
用梯度检查点技术,以少量计算开销换取大量显存节省。
梯度检查点显存节省
06
数据加载器优化
使用pin_memory和num_workers加速数据加载,避免CPU成为训练瓶颈。
pin_memorynum_workers
07
显存碎片化问题
理解显存碎片产生的原因,学习使用PYTORCH_CUDA_ALLOC_CONF环境变量进行碎片整理。
碎片整理ALLOC_CONF
08
模型并行与张量并行
分布式训练基础,如何将大模型拆分到多张GPU上训练。
模型并行张量并行
09
流水线并行
GPipe和PipeDream的原理,实现高效的流水线并行训练。
GPipePipeDream
10
ZeRO优化器
微软DeepSpeed ZeRO的三个阶段,从优化器状态到参数梯度的显存优化。
DeepSpeedZeRO
11
显存监控与告警
使用nvidia-smi、gpustat、torch.cuda进行实时显存监控,设置自动告警。
nvidia-smigpustat
12
梯度裁剪与显存
梯度裁剪对显存的影响,如何在不增加显存的情况下实现梯度裁剪。
梯度裁剪显存安全
13
Batch Size调优
找到最大Batch Size的方法,以及Batch Size对模型收敛的影响。
Batch Size收敛
14
序列并行
针对Transformer的长序列训练优化,减少注意力机制的显存占用。
长序列注意力
15
Flash Attention
理解Flash Attention原理,如何在不损失精度的情况下大幅减少显存。
FlashAttention显存高效
16
显存交换技术
CPU-GPU显存交换(offloading)的原理与实现,突破单卡显存极限。
offloadingCPU-GPU
17
模型剪枝与量化
结构化剪枝和量化感知训练,从根本上减少模型显存占用。
剪枝量化
18
动态显存管理
在训练过程中动态调整显存分配策略,应对显存波动。
动态分配显存波动
19
CUDA图 (CUDAGraphs)
使用CUDA图减少内核启动开销,同时优化显存使用。
CUDAGraph内核启动
20
显存泄漏检测工具
掌握valgrind、cuda-memcheck、torch.cuda.memory._dump_snapshot等工具的使用。
valgrindcuda-memcheck
21
多进程训练中的显存管理
DataParallel和DistributedDataParallel的显存差异,避免子进程显存泄漏。
DDP子进程
22
大模型推理优化
KV Cache优化、连续批处理(Continuous Batching)等推理阶段的显存优化技术。
KV CacheContinuous Batching
23
显存预留与池化
为关键操作预留显存,避免训练中途因显存不足而中断。
显存预留池化
24
梯度同步优化
理解梯度同步过程中的显存峰值,优化all-reduce操作。
all-reduce显存峰值
25
数据增强与显存
在线数据增强的显存开销,使用GPU加速数据增强的注意事项。
在线增强GPU加速
26
模型保存与加载
保存和加载大模型时的显存管理,避免保存时OOM。
模型保存OOM
27
显存回收机制
Python垃圾回收与CUDA显存回收的交互,手动触发显存回收。
垃圾回收手动回收
28
容器化环境显存管理
Docker和Kubernetes环境下的GPU显存隔离与限制。
DockerKubernetes
29
显存性能分析
使用Nsight Systems和Nsight Compute进行显存性能分析,找到优化瓶颈。
Nsight SystemsNsight Compute
30
综合实战:全链路显存管理
构建一个完整的显存优化训练流程,从数据加载到模型保存的全链路显存管理。
全链路实战