SuperAPI AI 工具集

perf-workload-profiling

部署与运维

查看项目

更新于 10-16 02:34

技能介绍

本技能用于对工作负载做性能测量与计时插桩,可按负载类型选择一条路径。

用途:训练循环等迭代负载,用 torch.cuda.synchronize() 配合 time.perf_counter() 手动计时,报告每次迭代延迟、吞吐(样本/秒)和数据加载时间;单个 kernel 或算子等非循环负载,直接编写 CUDA 事件基准代码。还可添加 NVTX 时间线标注供 nsys 可视化。

主要能力与用法:训练循环模板设置 WARMUP=5、NUM_ITERS=30、BATCH_SIZE=128,超过预热次数后记录 iter_ms、fps 与 data 时间,并用 statistics.mean 输出平均值;解读时 iter(ms) 为每迭代挂钟时间(含计算与通信、不含数据加载),data/iter>0.2 表明数据加载是瓶颈。非循环负载提供两种 CUDA 事件基准:简单版(仅均值)与详细版(每迭代 mean/median/std/min/max)。NVTX 用 @nvtx.annotate 装饰器或 with nvtx.annotate 上下文管理器标注 forward、backward、optimizer、data loading 等阶段。

原则:以测量代替猜测,指标须来自 profiler 或结构化数据;排除预热(CUDA 上下文初始化、cuDNN 自动调优、JIT 编译);用硬件计时;测量循环内不做同步,事件异步记录、末尾同步一次;张量、事件、已编译 kernel 均提前预分配,CuTe DSL kernel 用 cute.compile() 预编译;先用轻量测量,再按需升级到 Kineto、nsys、ncu。

限制:手动计时只给出整体迭代时间,不含 forward、backward、optimizer 的分阶段拆分,需临时在子阶段加同步计时,或加 NVTX 后用 nsys profile 看时间线。反模式包括每次迭代前后都同步、用 time.perf_counter() 测 GPU、缺预热、测量循环内分配张量、只报告均值。更多基准模板(CUDA Graph、CuTe DSL、Triton、Raw CUDA)、NVTX API 与 PyTorch 2.0+ profiler API 见随附 references 文件。安装命令与收费信息暂未提供。