查看健康报告#

功能说明#

健康报告用于展示计算图不同阶段的统计信息。

  • Tensor Graph健康报告展示用户定义的计算图的原始统计信息。

  • Tile Graph健康报告展示经过TileShape展开后的计算图的整体统计信息。包括节点总数、出度入度最大的瓶颈节点、最大并发度、总的数据搬运量和冗余搬运等。

  • Block Graph健康报告展示调度运行在单个AI Core上的子图的整体统计信息。包括spill数据量、各个存储空间占用情况、内存碎片率等指标。

  • Execute Graph健康报告展示对应子图间任务调度的整体统计指标。包括最大并发度、最大长度、总的子图数、出度入度最大的瓶颈子图、子图同构率等。

前提条件#

执行PyPTO程序,生成计算图文件和健康报告文件,健康报告文件的生成操作如下。

  1. 配置健康报告生成开关:${install_path}/python/site-packages/pypto/lib/configs/tile_fwk_config.json。

    "global": {
        "pass":{
            "default_pass_configs": {
                "health_check": false  # 默认为false,需要配置为true
            }
        }
    
        },
    
  2. 执行PyPTO程序,在${work_path}/output/output_*/目录(*代表时间戳)的计算图同级目录下生成相关健康报告文件,文件名格式为_xxxHealthReport.json。

    • Pass_xx_ExpandFunction目录下生成Tensor Graph健康报告文件。

    • Pass_xx_L1CopyInReuseMerge目录下生成Tile Graph健康报告文件。

    • Pass_xx_OoOSchedule目录下生成Block Graph健康报告文件。

    • Pass_xx_SubgraphToFunction下生成Execute Graph健康报告文件。

查看Tensor Graph健康报告#

  1. 打开计算图文件,下面提供两种方式,用户任选其一即可:

    • 在Visual Studio Code侧边栏,单击图标,打开PyPTO Toolkit,在运行结果界面打开计算图文件(此种方式仅支持打开文件命名以After开头的图)。

    • 在Visual Studio Code工作区,右键单击计算图文件,在弹出的菜单中选择“PyPTO Toolkit:打开文件”。

  2. 在计算图界面中,单击右侧的按钮。

    在计算图界面右侧自动滑出健康度报告数据面板,不同类型计算图的健康度报告略有不同,下面分别介绍。

  3. 查看Tensor Graph健康报告。

    区域①:展示Operation节点的汇总信息,详细请参见表1

    区域②:展示Tensor节点的汇总信息,详细请参见表2

    表 1 Tensor Graph健康报告-区域①参数说明

    参数

    说明

    MaxDepth

    计算图上从Incast节点到Outcast节点的最长路径上的节点总数。

    MaxWidth

    计算图上的最大并发度,即同一时间内节点的最大并发执行数。

    max Fanin

    计算图上所有节点的最大入度值。入度值表示来自上游节点的输入数量。

    max FaninOps

    计算图上入度值最大的节点。单击右侧展开按钮,可以展开所有Operation节点。单击节点的magicid值(如10003),可以跳转到图中相应位置。

    max Fanout

    计算图上所有节点的最大出度值。出度值表示每个节点最多需要向多少个下游节点分发输出。

    max FanoutOps

    计算图上出度值最大的节点。

    表 2 Tensor Graph健康报告-区域②参数说明

    参数

    说明

    maxProducerCount

    计算图上Tensor生产者个数的最大值。

    maxConsumerCount

    计算图上Tensor消费者个数的最大值。

    maxProducerTensors

    计算图上生产者个数最多的Tensor。单击右侧展开按钮,可以展开所有Tensor节点。

    maxConsumerTensors

    计算图上消费者个数最多的Tensor。

查看Tile Graph健康报告#

请参照上述步骤打开Tile Graph健康报告,界面显示如下:

区域①:展示Operation节点的汇总信息,详细请参见表3

区域②:展示Tensor节点的汇总信息,当前暂不支持数据展示。

表 3 Tile Graph健康报告-区域①参数说明

参数

说明

MaxDepth

计算图上从Incast节点到Outcast节点的最长路径上的节点总数。

MaxWidth

计算图上的最大并发度,即同一时间内节点的最大并发执行数。

max Fanin

计算图上所有节点的最大入度值。入度值表示来自上游节点的输入数量。

max FaninOps

计算图上入度值最大的节点。单击右侧展开按钮,可以展开所有Operation节点。

max Fanout

计算图上所有节点的最大出度值。出度值表示每个节点最多需要向多少个下游节点分发输出。

max FanoutOps

计算图上出度值最大的节点。

查看Block Graph健康报告#

请参照上述步骤打开Block Graph健康报告,界面显示如下:

区域①:耗时总览,详细请参见表4

区域②:展示每种内存在整个调度过程中占用的峰值和平均值以及各pipe的利用率,详细请参见表5

区域③:展示Spill统计信息,详细请参见表6

区域④:子图最大生产者、消费者等统计信息,详细请参见表7

表 4 Block Graph健康报告-区域①参数说明

参数

说明

Total Cycles

当前子图理论执行耗时。

Theoretical Minimum Cycles

当前子图理论耗时最优值。

表 5 Block Graph健康报告-区域②参数说明

参数

说明

L1 Avg/Peak

L1内存的平均值/峰值。

L0A Avg/Peak

L0A内存的平均值/峰值。

L0B Avg/Peak

L0B内存的平均值/峰值。

L0C Avg/Peak

L0C内存的平均值/峰值。

UB Avg/Peak

UB内存的平均值/峰值。

PIPE_FIX

PIPE_FIX的利用率。

PIPE_MTE1

PIPE_MTE1的利用率。

PIPE_MTE2

PIPE_MTE2的利用率。

PIPE_MTE3

PIPE_MTE3的利用率。

PIPE_M

PIPE_M的利用率。

PIPE_S

PIPE_S的利用率。

PIPE_V

PIPE_V的利用率。

表 6 Block Graph健康报告-区域③参数说明

参数

说明

Spill Count

换出换入总次数。数值越大表明空间资源紧张,图的性能越差。

magic

被换出换入的Tensor的Magic ID。

Type

发生换出换入的Buffer类型。

Buffer Usage / Rate / AllocSize

当前Buffer已占用的大小 / 当前Buffer的占用率 / 当前被Alloc占用的Buffer的大小。

Spill Tensor / Trigger Tensor / Spill CopyOut Tensor

被换出换入的Tensor的大小 / 触发当前换出换入的Tensor的大小 / 发生换出换入时搬出到DDR的数据量大小。

表 7 Block Graph健康报告-区域④参数说明

参数

说明

Workspace offset

当前子图Workspace占用大小。

OP

Operation节点总数。

max Producers

子图内生产者数量最大的Tensor。

max Consumers

子图内消费者数量最大的Tensor。

max Inputs

子图内前序节点数量的最大的Tensor。

max Outputs

子图内后继节点数量的最大的Tensor。

查看Execute Graph健康报告#

请参照上述步骤打开Execute Graph健康报告,界面显示如下:

区域①:子图同构信息,详细请参见表8

区域②:耗时信息,详细请参见表9

区域③:最大出入度信息,详细请参见表10

区域④:峰值内存信息,详细请参见表11

区域⑤:OP类型分布信息,详细请参见表12

表 8 Execute Graph健康报告-区域①参数说明

参数

说明

Total Subgraph

子图总数,即整个计算图经过子图划分后,最终得到的所有子图的总个数。

Unique

不同构的子图的数量。

同构率

Total Subgraph/Total Subgraph的值,较高的同构率反映出该图的并发度较好。

MaxSubgraphDepth

计算图上从Incast节点到Outcast节点的最长路径上的节点总数。

MaxSubgraphWidth

计算图上的最大并发度,即同一时间内节点的最大并发执行数。

表 9 Execute Graph健康报告-区域②参数说明

参数

说明

maxSubgraphCycle

value:子图的最大理论耗时。subgraphID:理论耗时最大的子图。

minSubgraphCycle

value:子图的最小理论耗时。subgraphID:理论耗时最小的子图。

avgSubgraphCycle

子图的平均理论耗时。

表 10 Execute Graph健康报告-区域③参数说明

参数

说明

maxSubgraphFanin

value:子图最大入度值。subgraphID:入度值最大子图。

maxSubgraphFanout

value:子图最大出度值。subgraphID:出度值最大子图。

表 11 Execute Graph健康报告-区域④参数说明

参数

说明

PeakUsage

value列:GM峰值内存占用。subgraphID列:发生GM峰值内存占用的子图。

表 12 Execute Graph健康报告-区域⑤参数说明

参数

说明

AIV

执行在AIV上的子图个数。

AIC

执行在AIC上的子图个数。

AICPU

执行在AI CPU上的子图个数。

mix

执行在AIV和AIC上的子图个数。