CANN/cannbot-skills Mosaic内存分析指南

📅 2026/7/5 18:22:16
CANN/cannbot-skills Mosaic内存分析指南
Mosaic 内存分析工具使用指南【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skillsMosaic 是 Meta 开源的 PyTorch 内存快照后处理分析工具。安装# Mosaic 未发布到 PyPI建议锁定到已验证的 commit/tag如 ...mosaic.gitcommit # 避免拉到上游默认分支不可复现的最新代码。 pip install githttps://github.com/facebookresearch/mosaic.gitCLI 命令速查1. 峰值内存栈追踪 —mosaic_get_memory_usage_peak分析峰值内存时刻的所有分配及其调用栈定位具体哪些操作导致了内存峰值mosaic_get_memory_usage_peak --snapshot snapshot.pickle输出内容Total Peak Dynamic Memory Usage运行时动态分配的峰值内存Total Static Memory Usage快照开始前已存在的基线内存Total Overall Peak Memory UsageDynamic Static每个分配的完整调用栈及大小解读要点观察 Top 几个分配的栈追踪识别是来自 optimizeradam.py、backwardautograd还是 forward 的激活对比 baseline 和问题版本的调用次数差异如 optimizer 追踪了更多 tensor2. 分类内存 Profile —mosaic_get_memory_profile按类别activation、gradient、optimizer、parameter生成内存使用可视化 HTML# 标准分类 profile mosaic_get_memory_profile --snapshot snapshot.pickle \ --out-path profile.html \ --profile categories # 保持分配顺序便于看内存随时间变化 mosaic_get_memory_profile --snapshot snapshot.pickle \ --out-path profile_ordered.html \ --profile categories \ --preserve-allocation-order # 自定义正则匹配追踪特定模式 mosaic_get_memory_profile --snapshot snapshot.pickle \ --out-path profile_custom.html \ --profile custom \ --custom-profile {hccl: hccl, moe_expert: expert}分类说明类别含义Activation前向传播保存用于反向的中间张量Gradient反向传播计算的梯度Optimizer StateAdam/SGD 的动量和方差缓冲Parameter模型权重3. 常用对比分析流程# 1. 生成两个场景的 snapshot如开启 AC 前后 # 2. 分别生成分类 profile mosaic_get_memory_profile --snapshot baseline.pickle \ --out-path baseline_profile.html --profile categories mosaic_get_memory_profile --snapshot with_ac.pickle \ --out-path ac_profile.html --profile categories # 3. 分别查看峰值 mosaic_get_memory_usage_peak --snapshot baseline.pickle mosaic_get_memory_usage_peak --snapshot with_ac.picklePython API当需要编程集成或在脚本中自动化分析时使用 Mosaic Python APIfrom mosaic.libmosaic.analyzer.memory_abstract import MemoryAbstract # 加载并分析 memory_abstract MemoryAbstract(memory_snapshot_filesnapshot.pickle) memory_abstract.load_memory_snapshot() # 分析峰值内存 memory_abstract.memory_snapshot.analyze_memory_snapshot(optmemory_peak) # 获取结果 dynamic_peak memory_abstract.memory_snapshot.dynamic_memory_peak static_memory memory_abstract.memory_snapshot.static_memory overall_peak dynamic_peak static_memory print(f动态峰值: {dynamic_peak / 1024**3:.3f} GiB) print(f静态内存: {static_memory / 1024**3:.3f} GiB) print(f总峰值: {overall_peak / 1024**3:.3f} GiB)适用场景场景推荐工具快速定位峰值内存来源mosaic_get_memory_usage_peak可视化各类别内存占比mosaic_get_memory_profile --profile categories追踪特定操作(如 HCCL)的内存mosaic_get_memory_profile --profile custom对比优化前后效果两次 profile 对比 HTMLCI/CD 内存回归检测Python API 阈值断言[!NOTE] Mosaic 目前对 CUDA/GPU snapshot 支持最完善。对于 NPU snapshot基本的 segments/blocks 分析可正常工作但部分可视化功能可能需要适配。如遇到兼容问题可使用本 skill 自带的analyze_snapshot.py脚本作为替代。【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考