HLO 操作统计信息工具
您可以使用 HLO Op Stats 查看在性能分析会话期间执行的高级优化器 (HLO) 操作的性能统计信息。此工具可突出显示 HLO 图表中在分析期间用时最长的操作,从而帮助您确定性能优化的潜在目标。
支持的平台
TPU:受支持
GPU:受支持
对于 GPU,HLO 运算与实际执行的内核之间存在 N:M 关系。如需查看内核级统计信息,请参阅 GPU 内核统计信息工具。
HLO 操作统计信息工具组件
HLO 操作统计信息工具包含以下关键组件:
- HLO 操作统计信息表:这是主要组件,以表格格式显示在性能分析会话期间执行的每个 HLO 操作的详细细分。每个不同的 HLO 操作对应一行,并且列会捕获与该操作相关的各种详细信息。
- 借助下拉选择器,您可以决定要针对每个 HLO 操作可视化哪些列。
- 您还可以通过第二个下拉选择器按 HLO 操作类别过滤行。
- 您可以使用搜索框按特定程序 ID、HLO 操作、HLO 操作文本或框架操作名称进行过滤;过滤条件会选择相应列中任何位置出现的指定字符串。
- “汇总图表”部分:此部分包含图表,以以下方式汇总了详细的每项操作表格:
- 一个饼图,显示不同类别的 HLO 操作所占用的时间比例。
- 饼图,显示不同单个 HLO 操作所占用的时间比例(截断为前 N 个操作,其余操作归类为“其他”以提高可读性)。
- 一个饼图,显示在重新实例化操作中花费的总时间所占的百分比;XProf 会从与配置文件关联的编译器元数据接收此信息。
- 一个饼图,显示了重新实例化时间(如果有)所属的 HLO 操作类别。
- 外部编译所花时间:外部编译是 TensorFlow 的一项功能,可让 XLA 计算中的某些操作在主机 CPU 上(而不是加速器设备上)透明运行(例如,需要设备不具备的 I/O 访问权限的 tf.summary 或 tf.print)。
- 一个图表,其中绘制了所有 HLO 操作的每秒 GFLOPS 数,按总自用时间排序。
- 仅限 TPU,按副本组显示每个 HLO 的时间:您可以从在性能分析会话期间执行的不同集合操作中进行选择。该集合运算的不同实例可能在不同的副本组之间执行(例如,AllGather);一个饼图显示了这些不同实例之间的时间分布。
HLO 操作统计信息表详情
您可以点击任意列标题,对 HLO 操作统计信息表格进行排序。默认顺序基于操作的总自耗时间(在表中标记为“排名”)。
此表包含每个 HLO 操作的以下信息:
- 操作名称:XLA 编译器为 HLO 操作分配的唯一名称。
- 程序 ID:此运算关联的 HLO 模块的标识符
- HLO 操作类别:这些类别主要由 XLA 编译器定义;XProf 还会采用启发词语来识别和分类特定操作(例如卷积融合)。
- HLO 操作文本:由 XLA 编译器提供,包含输入/参数的类型和形状等详细信息。
- 框架操作名称:框架级别的操作(例如JAX) 导致生成此 HLO 运算。
- 出现次数:在性能分析期间执行此特定 HLO 操作的总次数。
- 总时间 (μs):执行此操作的所有实例所花费的累计时间。如果此操作有任何子操作(例如在融合内),则此时间包括在这些子操作中花费的时间。
- 平均时间 (μs):此 HLO 操作每次执行的平均时间,包括在子操作(如果有)中花费的任何时间。
- 总自用时间 (μs):仅在此 HLO 操作的正文中所花费的累计时间,不包括在其子操作中所花费的任何时间。
- 平均自用时间 (μs):此 HLO 操作每次执行的平均时间,不包括在其子操作中花费的任何时间。
- 总自用时间(%):操作的自用时间占设备上所有操作总时间的百分比。
- 累计总自用时间(%):在“排名”顺序中排位较前的所有操作的总自用时间(%)的累计和。
- DMA 卡顿 (%):由于直接内存访问 (DMA) 操作而导致操作卡顿的总时间所占的百分比。
- FLOP、HBM 和内部 TPU 内存的带宽消耗(使用量/秒),如果有(例如CMEM 仅适用于 TPU v4)。这些值均使用编译器的静态开销分析(分子)和配置文件分析的执行时间(分母)计算得出。
- 模型 GFLOPS/s:GFLOPs 开销由 XLA 编译器计算,时间由配置文件测量。
- 归一化 GFLOPS/s:根据运算的数值精度以及设备针对不同精度支持的峰值 FLOP,对编译器计算的 FLOP 进行逐运算归一化。例如,TPU v6e 在 int8 下支持的峰值 FLOP 是 bf16 下的两倍;XProf 默认会归一化为 bf16。
- 内存带宽:操作从任何内存(例如芯片级 TPU VMEM 和 HBM)消耗的字节数/秒。XLA 编译器提供“字节”数值,并且时长是在配置文件中衡量的。
- HBM BW:从 HBM 专门消耗的字节数/秒。
- 操作强度:按每字节 FLOPS 的比率计算,如屋顶线分析中所定义。
- 计算/内存瓶颈:根据 Roofline 模型,此列表示操作的性能主要受计算能力还是内存带宽的限制。
- 重新实例化:指示操作是否属于重新实例化的一部分。
- 外部编译:表示操作是使用 TensorFlow 的外部编译设施在宿主 CPU 上运行的。
- 自动调整:指示 XLA 是否自动调整了操作。如需了解详情,请参阅自动调整和持久性自动调整。