dump图详细信息
模型转换前,通过设置如下两个环境变量:
export DUMP_GE_GRAPH=1 #控制dump图的内容多少 export DUMP_GRAPH_LEVEL=1 #控制dump图的个数
在执行atc命令的当前路径会生成如下文件,关于环境变量的详细介绍请参见2。
- ge_onnx*.pbtxt:基于ONNX的开源模型描述结构,可以使用Netron等可视化软件打开。
- ge_proto*.txt:protobuf格式存储的文本文件,该文件可以转成json格式文件方便用户定位问题。该文件与ge_onnx*.pbtxt成对出现,但是ge_proto*.txt比ge_onnx*.pbtxt文件会多string类型的属性信息,因此ge_proto*.txt显示的更完整, 用户选择其中一种文件打开即可。
由于ge_proto*.txt文件结构相比ge_onnx*.pbtxt已经做了文件大小的优化,因此DUMP_GE_GRAPH环境变量设置为2或3,对ge_proto*.txt文件效果相同,都显示为不含有权重等数据的基本版dump。
上述每个文件对应模型编译过程中的一个步骤,比如以ge_onnx_00000001_graph_0_PreRunBegin.pbtxt开始,以ge_onnx_00000078_graph_0_PreRunAfterBuild.pbtxt结尾。每个文件中包括完成该步骤所涉及的所有算子,关于dump图每个阶段的子图详细作用请参见dump图详细信息(每个模型生成的dump子图可能不一致,但是主流程基本一致)。
子图名称 |
涉及组件 |
含义 |
---|---|---|
ge_proto_00000000_RunCustomPassBegin.txt |
GE |
GE获取到的经过parse处理的整张下沉图,在此图前还会进行parse处理,TensorFlow场景还会经过scope融合处理 |
ge_proto_00000001_PreRunBegin.txt |
GE |
用户自定义优化处理之后的图结构 |
ge_proto_00000002_PrepareAfterCheckAndUpdateInput.txt |
GE |
校验并更新图输入数据处理之后的图结构 |
ge_proto_00000003_PrepareAfterPropagateFormatIfNeed.txt |
GE |
单算子模式下,对算子做format推导处理之后的图结构 |
ge_proto_00000004_PreRunAfterInitPreparation.txt |
GE |
经历了图准备阶段所有初始化处理之后的图结构 |
ge_proto_00000005_OptimizeGraph_TagNoConstFoldingAfter.txt |
FE |
量化场景使用,FE会给算子打上不做常量折叠标签,GE在执行常量折叠时会判断此标签,如果存在,则不执行常量折叠 |
ge_proto_00000006_PreRunAfterOptimizeGraphPrepare.txt |
GE |
经过各算子信息库原图准备处理(OptimizeGraphPrepare接口调用)之后的图结构 |
ge_proto_00000007_PreRunAfterHandleSummaryOp.txt |
GE |
对Summary节点做处理之后的图结构 |
ge_proto_00000008_PrepareAfterGraphEquivalentTransformation.txt |
GE |
将For循环图结构同等替换成While循环图结构处理之后的图结构 |
ge_proto_00000009_PrepareAfterProcessOutput.txt |
GE |
对图数据进行相关处理之后的图结构 |
ge_proto_00000010_PrepareAfterProcessMultiBatch.txt |
GE |
在动态档位开关下,对图结构做相关处理之后的图结构 |
ge_proto_00000011_PrepareAfterInsertAipp.txt |
GE |
在配置了aipp参数下,对图进行aipp相关处理之后的图结构 |
ge_proto_00000012_PrepareAfterProcessBeforeInfershape.txt |
GE |
对条件算子进行死边消除处理之后的图结构 |
ge_proto_00000013_after_first_inferformat.txt |
GE |
经过全图inferformat处理之后的图结构 |
ge_proto_00000014_after_infershape.txt |
GE |
经过全图infershape处理之后的图结构,会伴随常量折叠 |
ge_proto_00000015_PrepareAfterInferFormatAndShape.txt |
GE |
经历完所有inferformat与infershape处理之后的图结构,与上图间经历了第二次全图inferformat |
ge_proto_00000016_PrepareAfterCtrlFlowPreProcess.txt |
GE |
对条件算子做预处理之后的图结构 |
ge_proto_00000017_PrepareAfterGetDynamicOutputShape.txt |
GE |
动态档位下,对图输出做处理之后的图结构 |
ge_proto_00000018_PrepareAfterProcessAippStage2.txt |
GE |
在aipp模式下,对图输入节点做相关处理之后的图结构 |
ge_proto_00000019_PrepareAfterPrepareOptimize.txt |
GE |
在图准备阶段,做相关优化处理之后的图结构 |
ge_proto_00000020_PreRunAfterPrepare.txt |
GE |
目前和上张图相同,经历过所有图准备处理之后的图结构 |
ge_proto_00000021_OptimizeQuantGraph_FeGraphFusionAfter.txt |
FE |
图优化阶段的量化流程结束后的图结构 |
ge_proto_00000022_OptimizeOriginalGraph_FeGraphFusionAfter.txt |
FE |
图融合流程结束后的图结构 |
ge_proto_00000023_OptimizeOriginalGraph_FeTopoSortingAfter.txt |
FE |
图融合后进行拓扑排序,排查融合后是否成环的图结构 |
ge_proto_00000024_PreRunAfterOptimizeOriginalGraph.txt |
GE |
经过各算子信息库原图优化处理(OptimizeOriginalGraph接口调用)之后的图结构 |
ge_proto_00000025_PrepareAfterUpdateInputOutputByUserOptions.txt |
GE |
根据用户参数,对图输入输出做相关处理之后的图结构 |
ge_proto_00000026_PrepareAfterUpdateVariableFormats.txt |
GE |
对变量的Format进行相关处理之后的图结构 |
ge_proto_00000027_PreRunAfterPrepareRunningFormatRefiner.txt |
GE |
与上图相同 |
ge_proto_00000028_OptimizeOriginalGraph_FeOpJudgeAfter.txt |
FE |
opjudge流程后的图结构 |
ge_proto_00000029_OptimizeOriginalGraph_FeDistHeavyFormatAfter.txt |
FE |
重型算子扩散后的图结构 |
ge_proto_00000030_OptimizeOriginalGraph_FeInsertTransNodeAfter.txt |
FE |
插入转换算子后的图结构 |
ge_proto_00000031_PreRunAfterRefineRunningFormat.txt |
GE |
经过各算子信息库优化处理(OptimizeOriginalGraphJudgeInsert接口调用)之后的图结构 |
ge_proto_00000032_PreRunAfterSubexpressionMigration.txt |
GE |
动态分档场景下公共子表达式提取之后的图结构 |
ge_proto_00000033_OptimizeStage1_1.txt |
GE |
图优化1_1阶段处理之后的图结构 |
ge_proto_00000034_OptimizeStage1_2.txt |
GE |
图优化1_2阶段处理之后的图结构 |
ge_proto_00000035_PreRunAfterOptimize1.txt |
GE |
所有图优化1阶段处理之后的图结构 |
ge_proto_00000036_PreRunAfterOptimizeAfterStage1.txt |
GE |
经过各算子信息库优化处理(OptimizeAfterStage1接口调用)之后的图结构 |
ge_proto_00000037_PreRunAfterInferShape2.txt |
GE |
第二次infershape处理之后的图结构 |
ge_proto_00000038_AfterPipelinePartition.txt |
GE |
为本地队列流水做图拆分之后的图结构,helper场景使用 |
ge_proto_00000039_AfterDynamicShapePartition.txt |
GE |
动态shape图拆分之后的图结构 |
ge_proto_00000040_MergedComputeGraphAfterCompositeEnginePartition.txt |
GE |
经历对立子图拆分与子图优化处理之后的合并图结构 |
ge_proto_00000041_partition0_rank0_inputNodeGraph_AtomicEnginePartitioning.txt |
GE |
原子引擎规则图拆分后,输入节点子图的图结构 |
ge_proto_00000042_partition0_rank1_new_sub_graph1_AtomicEnginePartitioning.txt |
GE |
原子引擎规则图拆分后,子图1的图结构 |
ge_proto_00000043_partition0_rank2_new_sub_graph110_AtomicEnginePartitioning.txt |
GE |
原子引擎规则图拆分后,子图110的图结构 |
ge_proto_00000044_OptimizeSubGraphBefore.txt |
GE |
子图优化操作前的子图结构,每张子图都有一份,同名不同序号,总个数根据子图个数确定 |
ge_proto_00000045_OptimizeSubGraphBefore.txt |
GE |
子图优化操作前的子图结构,每张子图都有一份,同名不同序号,总个数根据子图个数确定 |
ge_proto_00000046_OptimizeSubGraphAfter.txt |
GE |
子图优化操作后的子图结构,每张子图都有一份,同名不同序号,总个数根据子图个数确定 |
ge_proto_00000047_partition0_rank1_new_sub_graph1_lxfusion_input.txt |
AOE |
ATC场景和AOE baseline场景的sgat输入图 |
ge_proto_00000048_partition0_rank1_new_sub_graph1_after_rebuild.txt |
AOE |
AOE sgat内部流程UB融合图 |
ge_proto_00000049_OptimizeSubGraphAfter.txt |
GE |
子图优化操作后的子图结构,每张子图都有一份,同名不同序号,总个数根据子图个数确定 |
ge_proto_00000050_mergedComputeGraph.txt |
GE |
图合并之后的图结构,与上图相同 |
ge_proto_00000051_MergedComputeGraphAfterAtomicEnginePartition.txt |
GE |
经历对立原子引擎拆分与子图优化处理之后的合并图结构 |
ge_proto_00000052_PreRunAfterOptimizeSubgraph.txt |
GE |
子图优化处理之后的图结构 |
ge_proto_00000053_OptimizeWholeGraphaicpu_tf_optimizer.txt |
GE |
调用各引擎的原图优化接口后的图信息,OptimizeWholeGraph后为引擎名称 |
ge_proto_00000054_OptimizeWholeGraphaicpu_ascend_optimizer.txt |
GE |
调用各引擎的原图优化接口后的图信息,OptimizeWholeGraph后为引擎名称 |
ge_proto_00000055_OptimizeWholeGraphAIcoreEngine.txt |
GE |
调用各引擎的原图优化接口后的图信息,OptimizeWholeGraph后为引擎名称 |
ge_proto_00000056_OptimizeWholeGraphDNN_VM_RTS_GRAPH_OPTIMIZER_STORE.txt |
GE |
调用各引擎的原图优化接口后的图信息,OptimizeWholeGraph后为引擎名称 |
ge_proto_00000057_OptimizeWholeGraphDNN_VM_HOST_CPU_OPTIMIZER.txt |
GE |
调用各引擎的原图优化接口后的图信息,OptimizeWholeGraph后为引擎名称 |
ge_proto_00000058_PreRunAfterOptimizeWholeGraph.txt |
GE |
经过各算子信息库优化处理(OptimizeWholeGraph接口调用)之后的图结构 |
ge_proto_00000059_BeforeHandleMemConflict.txt |
GE |
处理内存冲突之前的图 |
ge_proto_00000060_PreRunAfterOptimize2.txt |
GE |
所有图优化2阶段处理之后的图结构 |
ge_proto_00000061_PreRunAfterOptimizeGraphBeforeBuild.txt |
GE |
经过各算子信息库优化处理(OptimizeGraphBeforeBuild接口调用)之后的图结构 |
ge_proto_00000062_partition0_rank0_inputNodeGraph_SecondPartitioning.txt |
GE |
二拆操作后,输入节点子图的图结构 |
ge_proto_00000063_partition0_rank1_new_sub_graph1_SecondPartitioning.txt |
GE |
二拆操作后,子图1的图结构 |
ge_proto_00000064_partition0_rank2_new_sub_graph110_SecondPartitioning.txt |
GE |
二拆操作后,子图2的图结构 |
ge_proto_00000065_BeforePreBuildModel.txt |
GE |
经历过二次图拆分,在图编译动作处理之前的图结构 |
ge_proto_00000066_AfterPreBuildModel.txt |
GE |
经历图编译前预处理动作后的图结构 |
ge_proto_00000067_AfterCalcOpParam.txt |
GE |
对图中所有节点的tensor做size计算之后的图结构 |
ge_proto_00000068_BeforeAssignedLogicalStreams.txt |
GE |
在逻辑流分配处理之前的图结构 |
ge_proto_00000069_AfterAssignedLogicalStreams.txt |
GE |
完成逻辑流分配处理之后的图结构 |
ge_proto_00000070_BeforeRefreshRealStream.txt |
GE |
在流同步激活关系处理之前的图结构,与上图间会经历内存分配的动作 |
ge_proto_00000071_AfterRefreshRealStream.txt |
GE |
经历流同步激活关系处理之后的图结构 |
ge_proto_00000072_AfterBuildModel.txt |
GE |
权重合并,生成模型基础数据之后的图结构 |
ge_proto_00000073_AfterOptimizeStreamedSubGraph.txt |
GE |
对流分配结果经过相关优化处理之后的图结构 |
ge_proto_00000074_GenerateTaskBefore.txt |
GE |
在节点生成task处理之前的图结构 |
ge_proto_00000075_GenerateTaskAfter.txt |
GE |
经历节点生成task处理之后的图结构,其中会调用各算子信息库的GenerateTask接口 |
ge_proto_00000076_AfterGetTask.txt |
GE |
在经历了所有task生成处理之后的图结构,与上图相同 |
ge_proto_00000077_Build.txt |
GE |
完成图编译之后的图结构 |
ge_proto_00000078_PreRunAfterBuild.txt |
GE |
与上图相同 |