什么是单算子描述文件
单算子描述文件是基于Ascend IR定义的单个算子的定义文件,包括算子的输入、输出及属性等信息。借助该文件转换成适配昇腾AI处理器的离线模型后,可以验证单算子的功能。
单算子描述文件是由OpDesc数组构成的json文件,参数构成以及解释如下:
属性名 |
类型 |
说明 |
是否必填 |
---|---|---|---|
compile_flag |
INT32 |
该参数废弃,不建议使用,后续版本将会删除。 编译类型。取值如下:
默认值为0。 使用约束:当前仅支持transformer网络模型涉及的算子。 |
否 |
op |
string |
算子类型。 |
是 |
name |
string |
单算子模型文件的名称。 如果不设置name参数,则模型文件名的命名规则默认为:序号_算子类型_输入的描述(dataType_format_shape)_输出的描述(dataType_format_shape),例如,0_Add_3_2_3_3_3_2_3_3_3_2_3_3.om。 dataType以及format对应枚举值请从${INSTALL_DIR}/include/graph/types.h文件中查看,枚举值依次递增。其中,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。 |
否 |
input_desc |
TensorDesc数组 |
算子输入描述。 |
是 |
output_desc |
TensorDesc数组 |
算子输出描述。 |
是 |
attr |
Attr数组 |
算子属性。 |
否 |
属性名 |
类型 |
说明 |
---|---|---|
dynamic_input |
string |
可选。动态输入,取值必须和算子信息库中该算子定义的输入name相同。 该参数用于设置算子动态输入的分组与动态输入的个数,例如算子原型定义中某算子的动态输入为: .DYNAMIC_INPUT(x,...) .DYNAMIC_INPUT(y,...) 则表示动态输入有两组,分别为x,y。每一组的输入个数,根据dynamic_input的个数确定。具体设置原则可以参见TensorDesc数组中name参数的说明。
|
format |
string |
必填。Tensor的排布格式,配置为算子原始框架支持的format。 当前支持的format格式以及对应的枚举如下:
模型转换完毕,上述format在对应om文件名中以对应的枚举呈现,例如若输入为NHWC格式,则展示为1。 |
origin_format |
string |
可选。Tensor的原始format。 不带此字段时,默认Tensor的实现format与原始format一致。 |
name |
string |
可选。Tensor的名称。算子的输入为动态输入时,需要设置该字段。 该参数用于设置每一组动态输入中,具体输入的名称,每一个输入名称为算子原型中定义的输入名称+编号,编号根据dynamic_input的个数确定,从0开始依次递增。
|
shape |
int数组 |
必填。Tensor的shape,例如[1, 224, 224, 3],实际shape乘积不能超过int32最大值(2147483647)。
|
origin_shape |
string |
可选。Tensor的原始shape。 不带此字段时,默认Tensor的实现shape与原始shape一致。 |
type |
string |
必填。Tensor的数据类型,支持的type以及对应的枚举如下:
模型转换完毕,上述type在对应om文件名中以对应的枚举呈现,例如若输入为int8类型,则展示为2。 |
shape_range |
int[2]数组 |
可选。shape为动态时(不包括-2场景),unknow shape的取值范围。 例如,若shape取值为[16,-1,20,-1]:其中的-1表示unknow shape。 shape_range取值为[1,128],[1,-1]:[1,128]表示从1到128的取值范围,对应shape参数中第一个-1;[1,-1]表示从1到无穷大的取值范围,对应shape参数中第二个-1。 |
is_const |
bool |
可选,表示输入是否为常量:
|
const_value |
list |
可选,常量取值。 当前仅支持一维list配置,list中具体配置个数由shape取值决定。例如,shape取值为2,则const_value中列表个数为2。 取值类型由type决定,假设type取值为float16,则单算子编译时会自动将const_value中的取值转换为float16格式的取值。 |
属性名 |
类型 |
说明 |
---|---|---|
name |
string |
必填。属性名。 |
type |
string |
必填。属性值的类型,支持的类型有:
|
value |
由type的取值决定 |
必填。属性值,根据type不同,属性值不同,举例如下: |