What Is a Single-Operator Description File?
A single-operator description file defines a single-operator in Ascend IR in terms of the operator information such as inputs, outputs, and attributes. You can verify the functionality of a single-operator by converting the file to an offline model adapted to the Ascend AI Processor.
The single-operator description file is a JSON file consisting of the OpDesc array. The parameters are described as follows.
Parameter |
Type |
Description |
Required |
|---|---|---|---|
compile_flag |
INT32 |
Deprecated. Build type. The values are as follows:
The default value is 0. Only operators of the Transformer network are supported currently. |
No |
op |
string |
Operator type. |
Yes |
name |
string |
Name of a single-operator model file. If name is not set, the default naming rule of the model file is SN_Operator type_Input description (dataType_format_shape)_Output description (dataType_format_shape), for example, 0_Add_3_2_3_3_3_2_3_3_3_2_3_3.om. You can check the enum values of dataType and format from the ${INSTALL_DIR}/include/graph/types.h file. The enum values are sorted in ascending order. Replace ${INSTALL_DIR} with the CANN component directory. For example, if the installation is performed by the root user, the default file storage path is /usr/local/Ascend/cann. |
No |
input_desc |
TensorDesc array |
Operator input description. |
Yes |
output_desc |
TensorDesc array |
Operator output description. |
Yes |
attr |
Attr array |
Operator attribute. |
No |
Parameter |
Type |
Description |
|---|---|---|
dynamic_input |
string |
(Optional) Dynamic input. The value must be the same as the input name field defined in the operator information library. Assume that an operator has two groups of dynamic inputs, which are defined as follows: .DYNAMIC_INPUT(x,...) .DYNAMIC_INPUT(y,...) It indicates that two groups of dynamic inputs are defined (x and y). The number of inputs in each group is determined by the number of dynamic_input fields. For details, see the description of the name parameter in the TensorDesc array.
|
format |
string |
(Mandatory) Format used during tensor compute, also called runtime format, which is the format used for compute on the device. The mapping between the possible formats and enum values is as follows:
After your model is converted, you will see the supported format represented as the corresponding enum value in the file name of the generated offline model (.om) file. For example, 1 maps to format NHWC. |
origin_format |
string |
(Optional) Original format of the tensor input, that is, the original image format without any conversion. If this field is not included, the format used during tensor computation is the same as the original format by default. |
name |
string |
(Optional) Tensor name. It is required when the operator has dynamic inputs. This parameter sets the input names in each group of dynamic inputs. Each input name consists of the input name defined in the operator prototype plus an ID. The ID is determined based on the number of dynamic inputs and indexed from 0.
|
shape |
Array of ints |
(Mandatory) Shape used during tensor compute, for example, [1, 224, 224, 3]. The actual shape product cannot be greater than the maximum int32 value (2147483647).
|
origin_shape |
string |
(Optional) Original shape of the input tensor. If this parameter is not included, the shape used during tensor computation is the same as the original shape by default. |
type |
string |
(Mandatory) Tensor data type. The mapping between the possible data types and enum values is as follows:
After your model is converted, you will see the supported data types represented as the corresponding enum values in the file name of the generated offline model (.om) file. For example, 2 maps to type int8. |
shape_range |
Array of int[2]s |
(Optional) Value range of an unknown/dynamic shape (excluding the scenario where shape is -2). For example, for shape [16, -1, 20, -1], -1 indicates an unknown dimension. Assume that shape_range is [1, 128], [1, -1], where [1, 128] indicates the value range from 1 to 128, corresponding to the first -1 dimension in the shape value, and [1, -1] indicates the value range from 1 to infinity, corresponding to the second -1 dimension accordingly. |
is_const |
bool |
(Optional) Whether the input is a constant.
|
const_value |
list |
(Optional) Constant value. Currently, this parameter supports only a one-dimensional list. The number of the list items to configure is determined by the value of shape. For example, if the value of shape is 2, there are two list items in const_value. The data type of const_value is determined by type. If type is set to float16, single-operator build automatically converts the value of const_value to the float16 format. |
Parameter |
Type |
Description |
|---|---|---|
name |
string |
(Mandatory) Attribute name. |
type |
string |
(Mandatory) Attribute value type. The options are as follows:
|
value |
Determined by the value of type |
(Mandatory) Attribute value, which varies with type. The value examples are as follows:
|