昇腾社区首页
中文
注册
开发者
下载

Tensor/Node/Graph

Ascend IR(Ascend Intermediate Representation,昇腾中间表示)是昇腾AI处理器专用的抽象数据结构,用于表达计算流程。基于GE图引擎能力,PyTorch、TensorFlow、MindSpore、PaddlePaddle等主流AI框架的算法模型可以统一转换为使用Ascend IR表示的计算图,同时也支持用户自定义构建计算图,后续的编译加速优化均基于该计算图完成。

图1 使用Ascend IR表示的计算图

Ascend IR主要包括张量(Tensor)、Node(Operator)、Graph三个维度的信息。

Tensor

包括Tensor描述及数据两部分,Tensor描述包括了该Tensor的name、dtype、shape、format信息。
表1 TensorDesc属性说明

属性

定义

名称(name)

用于对Tensor进行索引,不同Tensor的name需要保持唯一。

形状(shape)

Tensor的形状,比如(10, )或者(1024, 1024)或者(2, 3, 4)等。如形状(3, 4)表示第一维有3个元素,第二维有4个元素,(3, 4)表示一个3行4列的矩阵数组。

形式:(i1, i2, …, in),其中i1到in均为正整数。

数据类型(dtype)

Tensor对象的数据类型。

取值范围:float16, float32, int8, int16, int32, uint8, uint16, bfloat16, bool等。

数据排布格式(format)

数据的物理排布格式,详细请参见数据排布格式

Node

Node(Operator)包括算子的name、type、输入、输出、属性等信息。
表2 Operator属性说明

属性

定义

名称(name)

算子的名称,用于标识图中的某个算子,同一图中算子的名称需要保持唯一。如下图所示Conv1、Pool1、Conv2都是图中的算子名称,其中Conv1与Conv2算子的类型为Convolution,表示分别做一次卷积运算。

类型(type)

网络中每一个算子根据算子类型进行算子实现的匹配,相同类型的算子的实现逻辑相同。在一个图中同一类型的算子可能存在多个,例如上图中的Conv1算子与Conv2算子的类型都为Convolution。

输入(input)

算子的输入Tensor数据。

输出(output)

算子的输出Tensor数据。

属性(Attributes)

定义算子行为和功能,常见的算子属性包括轴(Axis)、权重(Weight)、偏差(Bias)。

Graph

Graph包括name、算子列表、输入算子、输出算子等信息。
表3 Graph属性说明

属性

定义

名称(name)

图的名称,用于标识网络中的某个Graph,同一网络中Graph的名称需要保持唯一。

算子列表

图中所有的节点列表。

输入算子(input)

图的输入算子。

输出算子(output)

图的输出算子。