Debian下PyTorch内存管理要点
一 核心机制
二 监控与诊断
建议同时观察系统级与框架级指标:用 nvidia-smi 查看进程总显存(包含缓存),用 PyTorch API 观察真实使用与缓存情况。
| 指标 | 含义 | 典型 API |
|---|---|---|
| allocated | 当前张量实际占用的显存 | torch.cuda.memory_allocated() |
| reserved | 缓存分配器管理的总显存(allocated + cached) | torch.cuda.memory_reserved() |
| peak allocated | 峰值已分配显存 | torch.cuda.max_memory_allocated() |
| peak reserved | 峰值缓存显存 | torch.cuda.max_memory_reserved() |
| report | 详细显存报告 | torch.cuda.memory_summary() |
| 清理缓存 | 释放未使用的缓存块 | torch.cuda.empty_cache() |
诊断建议:出现 CUDA out of memory 但 allocated 远小于总显存时,优先考虑碎片或复用效率低;可用 memory_summary 与 max_memory_allocated/reset_peak_memory_stats 定位增长来源与峰值区间。
三 常见陷阱与规避
四 优化实践