用途
perf-analysis 是一个性能分析协调工作流技能,属于 NVIDIA TensorRT-LLM 项目。它的核心定位是:协调性能分析流程,但不直接运行剖析工具。使用者通过它来规划分析步骤、委派剖析任务、解读剖析结果、分类性能瓶颈,并生成结构化的性能分析报告。
主要能力
- 剖析委派:将实际的剖析与测量任务委派给 perf-profiling-specialist 或其他领域专家,而不是自己运行工具。
- 指标提取:从剖析工具输出中提取所需指标,包括吞吐量(samples/sec、tokens/sec、iterations/sec)、延迟(端到端时间、内核时间、通信时间)、MFU(模型 FLOPs 利用率)、% of SOL(当前性能与硬件峰值性能之比)、GPU 利用率(SM 占用率、张量核心使用率)、内存带宽(DRAM 带宽利用率与峰值对比)。
- 瓶颈分类:在给出优化建议前,先判定主要瓶颈类型,包括计算受限(高 GPU 利用率、低内存带宽使用)、内存受限(高内存带宽、低计算利用率)、启动开销(大量小内核、高 CPU 时间)、通信受限(集合操作耗时显著)、同步受限(过多的 CPU-GPU 同步点)。
- 结构化报告:每次分析都生成包含 Summary、Metrics、Findings、Recommendations 四个部分的报告。
- 优化建议参考:分类完成后,可查阅 perf-optimization-casebook 技能,寻找与瓶颈类别、模型和硬件匹配的候选优化方案(决策先例),用于填充建议部分;但只报告实测数字,不得把案例的预期效果当作已达成结果。
使用方式
分析工作流分为六步:
- Understand(理解):明确用户需要哪些指标(MFU、SOL、延迟等)。
- Plan(规划):在开始前规划剖析与分析步骤。
- Profile(剖析):委派给 perf-profiling-specialist 进行实际测量。
- Measure(测量):从剖析结果中提取所需指标。
- Classify(分类):若在诊断问题,确定主要瓶颈类型。
- Report(报告):生成包含发现结果的性能分析报告。
委派时,应描述期望的结果,而不是工具方法论。应包含:工作负载(文件路径、代码片段或要剖析的命令)、问题背景(维度、数据类型、FLOPs 计算、批大小)、期望指标(SOL%、MFU、吞吐量、占用率、瓶颈分类)、约束条件(要针对的特定内核、剖析区域标记)。不应包含:具体工具标志或命令模式、逐步工具使用说明、工具失败的回退策略、示例命令、输出文件路径或产物位置。专家拥有自己的技能来编码工具使用最佳实践,并拥有自己的工作区产物用于输出;在委派中指定命令会覆盖其技能,可能导致次优的剖析策略。
远程剖析时,若在远程 SLURM 集群上剖析,需在委派提示中包含 Remote Execution Context 块,附带目标集群的 SSH+srun 包装器。perf-profiling-specialist 会用该包装器为其命令(nsys、ncu、nvidia-smi)添加前缀。该专家不需要 exec-remote-slurm 技能,因为上下文块已提供远程执行所需的一切。
可用的专家包括:perf-profiling-specialist(运行 nvidia-smi、nsys、ncu、torch.profiler,用于所有剖析任务)、perf-torch-cuda-graph-specialist(分析 CUDA Graph 兼容性并应用捕获工作流)。
适用场景
适用于需要对 GPU 工作负载进行性能剖析与瓶颈诊断的场景,例如分析批量 GEMM 内核、训练或推理性能评估、MFU 与 SOL 计算、内存带宽与计算利用率分析,以及在远程 SLURM 集群上执行剖析。
限制
- 该技能不直接运行剖析工具,所有测量必须委派给专家。
- 所有性能数字必须来自剖析工具输出,不得编造。
- 必须先分类瓶颈再给出优化建议,错误分类会导致无效工作。
- 优化建议只能引用实测数字,不得把案例的预期效果当作已达成结果。
- 委派时不得指定具体工具标志、命令模式或输出路径。
报告格式
每份分析报告包含四个部分:Summary(高层性能状态或瓶颈分类)、Metrics(来自剖析的关键性能数字)、Findings(带证据的详细观察)、Recommendations(按优先级排列的优化建议,如适用)。