文件最后提交记录最后更新时间
【PR】: readable dump 节点输入、子图IR不规范的场景,使用自定义参数导出;ES构图,对 Data 类型节点设置InputDesc为OutputDesc Co-authored-by: du-hua1024<duhua2@huawei.com> # message auto-generated for no-merge-commit merge: !192 merge master into master 【PR】: readable dump 节点输入、子图IR不规范的场景,使用自定义参数导出;ES构图,对 Data 类型节点设置InputDesc为OutputDesc Created-by: du-hua1024 Commit-by: du-hua1024 Merged-by: cann-robot Description: # Pull Request ## 描述 ### readable dump 节点输入、子图IR不规范的场景,使用自定义参数导出 1、业务中部分pass插入节点不规范:缺少 IR 定义、输入描述符名称与 IR 定义不匹配,在 ReadableDump 中,inputs、子图属性需要展示 IR 参数名与实例,导致某些节点的 inputs 、子图属性输出为空 ![图片.png](https://raw.gitcode.com/user-images/assets/8371840/f7fbce1b-91eb-41df-a42b-7e72bd412162/图片.png '图片.png') 针对这些异常场景,不强制校验IR定义,ReadableDump 在解析 IR 实例失败时,输入使用 _input_0, _input_1, ... 作为参数名,子图属性使用_graph_0,_graph_1,...作为参数名 ![图片.png](https://raw.gitcode.com/user-images/assets/8371840/1d1b1b45-21cd-47f2-93ed-4c852fa4ea41/图片.png '图片.png') 2、修改子图属性拼接逻辑, 2.1 子图IR信息通过GetOrderedSubgraphIrNames和GetSubgraphNameIndexes比对获取 2.2 将子图实例收集从独立阶段改为在拼接子图属性信息时同步进行 3、更新readme,补充了ONNX格式在Netron工具中的可视化说明,并细化了Readable格式中关于参数名和子图属性名解析异常时的回退规则 ### ES构图,对 Data 类型节点设置InputDesc为OutputDesc ES构图CreateInput创建的Data节点,没有设置InputDesc信息,aclgrphBuildModel场景下,内部更新图输入需要InputDesc,因此在ES构图BuildAndReset处使用outPutDesc对InputDesc更新 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> NA ## 如何测试 描述测试此变更的步骤和前提条件: 1.构图节点没有 IR 定义,或者 输入描述与 IR 定义不符,ReadableDump 的 inputs 位置参数展示所有输入实例,位置参数展示子图实例 2.使用ES API构图并调用CreateInput创建输入节点,构图完成后查看Data节点是否有设置的InputDesc信息 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!1924 个月前
sync develop to master 20260210 Co-authored-by: cann-robot<songchangxia@cann.team> Co-authored-by: zhang_shengjie<804425610@qq.com> Co-authored-by: kobemini<gengchao4@huawei.com> Co-authored-by: lining23666<lining.li@huawei.com> Co-authored-by: stevenaw0<huangguijun@huawei.com> Co-authored-by: lihuachao<lihuachao1@huawei.com> Co-authored-by: wanghuajie<wanghuajie1@huawei.com> Co-authored-by: yangyongqiang0606<yangyongqiang7@hisilicon.com> Co-authored-by: yelongjian<yelongjian1@huawei.com> Co-authored-by: isaacxu<xurui23@huawei.com> Co-authored-by: du-hua1024<duhua2@huawei.com> Co-authored-by: maohaodi<maohaodi@huawei.com> Co-authored-by: jsong27<songjiaming6@h-partners.com> # message auto-generated for no-merge-commit merge: !571 merge develop into master sync develop to master 20260210 Created-by: depeng1994 Commit-by: cann-robot;jsong27;maohaodi;du-hua1024;zhang_shengjie;isaacxu;yelongjian;yangyongqiang0606;wanghuajie;lihuachao;stevenaw0;lining23666;kobemini Merged-by: wqtshg_wt Description: # Pull Request ## 描述 develop分支整体合入同步到master,详细描述见提交记录。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!5713 个月前
README.md

GE 图 Dump 格式说明

概述

GE(Graph Engine)支持将计算图导出为多种格式,便于开发者查看、调试和分析图结构。本文档介绍三种 dump 格式:ge_protoonnxreadable,以及它们的特点和使用方法。


Dump 格式概览

格式 文件命名 主要特点
ge_proto ge_proto*.txt protobuf文本格式,信息完整性最好,可以转成JSON格式文件方便用户定位问题
onnx ge_onnx*.pbtxt 基于ONNX的模型描述结构,支持 Netron可视化工具打开。详细说明见Netron 可视化说明
readable ge_readable*.txt 类似Dynamo fx图风格,文本可读性最高。详细格式说明请参考 readable_dump.md

Dump 使用方式

通过环境变量自动 Dump

通过设置环境变量,可以在图执行时自动生成 dump 文件:

# 设置图 dump 级别
export DUMP_GE_GRAPH=1

# 设置 dump 路径
export DUMP_GRAPH_PATH=/path/to/dump/directory

# 设置 dump 格式
export DUMP_GRAPH_FORMAT="ge_proto|onnx|readable"

环境变量说明:

环境变量 说明 示例值
DUMP_GE_GRAPH 控制图 dump 的内容粒度:
- 1:包含连边关系和数据信息的全量 dump
- 2:不含有权重等数据的基本版 dump
- 3:只显示节点关系的精简版 dump
123
DUMP_GRAPH_PATH dump 文件保存路径:
- 可配置为绝对路径或脚本执行目录的相对路径
- 路径支持大小写字母、数字、下划线、中划线、句点、中文字符
/path/to/dump
DUMP_GRAPH_FORMAT dump 格式,支持 ge_protoonnxreadable,多个格式用 | 分隔 readablege_proto|onnx(默认值)
DUMP_GRAPH_LEVEL 控制 dump 图编译阶段的个数:
- 数值配置
- 1:dump 所有阶段的图
- 2:dump 白名单阶段的图(默认值)
- 3:dump 最后的生成图(经过 GE 优化、编译后的图)
- 4:dump 最早的生成图(GE 解析映射算子后的编译入口图)
- 字符串配置:用 | 分隔,例如 "PreRunBegin|AfterInfershape",表示 dump 名称包含这些字符串的图
1234"PreRunBegin|AfterInfershape"

通过 Graph API 导出

C++

#include "ge/graph.h"

// 创建图
ge::Graph graph("my_graph");
// ... 构建图结构 ...

// 导出为不同格式
graph.DumpToFile(ge::Graph::DumpFormat::kTxt, "suffix");        // ge_proto
graph.DumpToFile(ge::Graph::DumpFormat::kOnnx, "suffix");       // onnx
graph.DumpToFile(ge::Graph::DumpFormat::kReadable, "suffix");   // readable

Python

from ge.graph import Graph, DumpFormat

# 创建图
graph = Graph("my_graph")
# ... 构建图结构 ...

# 方式1: 导出为文件
graph.dump_to_file(format=DumpFormat.kTxt, suffix="suffix")        # ge_proto
graph.dump_to_file(format=DumpFormat.kOnnx, suffix="suffix")       # onnx
graph.dump_to_file(format=DumpFormat.kReadable, suffix="suffix")   # readable

# 方式2: 直接打印(仅 readable 格式支持)
print(graph)  # 直接打印 readable 格式到控制台查看图结构
readable_str = str(graph)  # 获取 readable 格式字符串,可用于保存或进一步处理

关于 ge.graph 的详细说明,请参考 graph模块


附录

Netron 可视化说明

在 Netron 中打开 ge_onnx*.pbtxt 文件时:

  • 节点表示:图中的每个节点表示为一个算子

  • 连边关系:连边关系用带箭头的实线表示,箭头方向表示数据流向(从源节点指向目标节点)

  • 节点信息查看:点击算子节点可查看算子的详细信息,重点信息包括:

    属性名 说明
    type 算子类型
    name 算子名
    input_desc_dtype:x 第x个输入的数据类型
    input_desc_layout:x 第x个输入的数据格式
    input_desc_shape:x 第x个输入的shape
    output_desc_dtype:x 第x个输出的数据类型
    output_desc_layout:x 第x个输出的数据格式
    output_desc_shape:x 第x个输出的shape