MindSpore Lite问题定位——Dump图

  • Dump GE图

GE(GraphEngine,图引擎)是由C++实现,位于前端模块MindSpore/MindSpore Lite/TensorFlow和底层硬件之间,起到承接作用。图引擎模块以ME/TF下方的图作为输入,然后进行一系列的深度图优化操作,最后输出一张可以在底层硬件上高效运行的图。dump GE图就是dump GE接收的输入以及中间过程优化产生的图,可以用于查看模块的结构、算子信息、算子与算子之间的网格关系,主要用于定位网络执行中的功能或者精度问题。

以下环境变量可以使能GE图的dump功能:

环境变量名称 可选取值及含义
DUMP_GE_GRAPH 1:表示dump图全量内容 2:表示不dump权重数据的基础图(推荐取值) 3:表示只dump节点关系的精简图
DUMP_GRAPH_LEVEL 1:表示dump图所有图 2:表示dump除子图外的所有图(推荐取值) 3:表示只dump最后一张图
DUMP_GRAPH_PATH 用户自定义dump路径

配置环境变量之后,再使用MindSpore Lite的Converter转换工具,重新执行一次模型转换的命令。转换完成之后会在用户指定的目录生成一系列后缀后pbtxt和txt的文件,其中pbtxt文件可以通过nertron可视化。

  • Dump MindSpore IR图

MindSpore IR(MindSpore Intermediate Representation,MindIR)就是MindSpore模型在编译过程中的一种中间表达格式,全场景统一部署以来与MindSpore IR,不同设备都可以加载MindSpore IR模型或者基于MindSpore IR模型进行编译运行。dump MindIR图就是dump MindSpore代码所构建的网络结构图,可以清楚看出网络中节点的信息以及节点与节点间的关系,主要用于定位网络执行中的功能或者精度问题。

使用MindSpore戴框架推理时,可以在代码中添加如下代码来使能dump MindSpore IR图的功能:

from mindspore import context

context.set_context(save_graphs=True, save_graph_path=”./xxx”)
export MS_DEV_SAVE_GRAPHS=2
export MS_DEV_SAVE_GRAPHS_PATH=.