原文链接:Holistic Trace Analysis — Holistic Trace Analysis 0.2.0 documentation
介绍
1、什么是HTA
整体跟踪分析 = Holistic Trace Analysis = HTA
整体跟踪分析是一个面向PyTorch用户的开源性能分析和可视化Python库。HTA将PyTorch Profiler收集的Kineto跟踪作为输入,并提升跟踪中包含的性能信息。
ML研究人员和系统工程师经常难以在计算上扩展他们的模型,因为他们不知道其工作负载中的性能瓶颈。由于缺乏“底层”可见性,作业所请求的资源(例如GPU、内存)通常与实际所需的资源不一致。
HTA的目标是帮助工程师和研究人员从硬件堆栈中获得最佳性能。要实现这一点,必须了解分布式训练和推理工作负载的资源利用率和瓶颈。
在文章的后面出现 rank 一词,这个是在HTA文档中经常出现的词,因为HTA用在分布式训练和推理工作中,所以我认为这个单词表示的是对不同的硬件路径进行标记。例如,你现在使用8个Nvidia的A100去训练模型,则Pytorch Profiler会分别记录这8个硬件的性能数据,然后在输出的JSON文件中会出现相关的rank数据。
2、HTA的特点
为了帮助进行性能调试,HTA提供了以下功能
-
时间细分:按单个节点和所有等级上计算、通信、内存事件和空闲时间所花费的时间细分GPU时间。
-
空闲时间细分:将GPU空闲时间细分为等待主机、等待另一个内核或归因于未知原因。
-
内核细分:查找每个等级上持续时间最长的内核。
-
内核持续时间分布:不同等级上最长内核所用平均时间的分布。
-
通信计算重叠:计算通信与计算重叠的时间百分比。
-
CUDA内核启动统计:持续时间非常短、持续时间很长和启动时间过长的GPU内核的分布。
-
增强计数器(内存复制带宽、队列长度):增强跟踪文件,可深入了解内存复制带宽和每个CUDA流上的未完成操作数量。
-
频繁的CUDA内核模式:查找任何给定PyTorch或用户定义运算符最常启动的CUDA内核。
-
跟踪差异:用于识别和可视化跟踪之间差异的跟踪比较工具。
-
CUPTI计数器分析:一种用于解释GPU性能计数器的实验性API。它将内核的性能测量结果归因于PyTorch运算符,并有助于内核优化和屋顶线分析。
-
轻量级关键路径分析:一种用于计算跟踪中关键路径的实验性API。关键路径可以帮助人们了解应用程序是CPU受限、GPU计算受限还是通信受限。该路径可以在原始轨迹上可视化,也可以作为有向无环图对象进行操作。