You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
397 lines
8.9 KiB
397 lines
8.9 KiB
4 years ago
|
/* Copyright (C) 2018. Huawei Technologies Co., Ltd. All rights reserved.
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or modify
|
||
|
* it under the terms of the Apache License Version 2.0.You may not use this file except in compliance with the License.
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* Apache License for more details at
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*/
|
||
|
syntax = "proto3";
|
||
|
|
||
|
package domi;
|
||
|
|
||
|
enum TargetType
|
||
|
{
|
||
|
MINI = 0;
|
||
|
TINY = 1;
|
||
|
LITE = 2;
|
||
|
}
|
||
|
|
||
|
// offline model
|
||
|
message ModelDef {
|
||
|
string name = 1;
|
||
|
uint32 version = 2;
|
||
|
|
||
|
uint64 memory_size = 10;
|
||
|
uint32 stream_num = 11;
|
||
|
uint32 event_num = 12;
|
||
|
uint64 weight_size = 13;
|
||
|
uint32 label_num = 15;
|
||
|
repeated OpDef op = 20;
|
||
|
TargetType target_type = 23;
|
||
|
|
||
|
map<string, AttrDef> attr = 30;
|
||
|
};
|
||
|
|
||
|
// operator define
|
||
|
message OpDef {
|
||
|
string name = 1;
|
||
|
string type = 2;
|
||
|
|
||
|
uint32 id = 3;
|
||
|
uint32 stream_id = 4;
|
||
|
|
||
|
repeated string input_name = 5;
|
||
|
|
||
|
repeated string src_name = 8;
|
||
|
repeated int32 src_index = 9;
|
||
|
repeated int64 input = 10;
|
||
|
repeated int64 output = 11;
|
||
|
repeated TensorDescriptor input_desc = 12;
|
||
|
repeated TensorDescriptor output_desc = 13;
|
||
|
repeated WeightDef weights = 14;
|
||
|
repeated string dst_name = 15;
|
||
|
repeated int32 dst_index = 16;
|
||
|
|
||
|
repeated int64 workspace = 20;
|
||
|
repeated uint32 workspace_bytes = 21;
|
||
|
|
||
|
repeated string weight_name = 22;
|
||
|
repeated bool is_input_const = 23;
|
||
|
|
||
|
map<string, AttrDef> attr = 30;
|
||
|
|
||
|
QuantizeFactorParams quantize_factor = 31;
|
||
|
|
||
|
oneof op_params {
|
||
|
// start at 100 here
|
||
|
SendOpParams sender_param = 100;
|
||
|
RecvOpParams receiver_param = 200;
|
||
|
ConvolutionOpParams convolution_param = 300;
|
||
|
PoolingOpParams pooling_param = 400;
|
||
|
EltwiseOpParams eltwise_param = 500;
|
||
|
BatchNormOpParams batchnorm_param = 600;
|
||
|
ScaleOpParams scale_param = 700;
|
||
|
FullConnectionOpParams full_connection_param = 800;
|
||
|
SoftmaxOpParams softmax_param = 900;
|
||
|
ActivationOpParams activation_param = 1000;
|
||
|
ReshapeOpParams reshape_param = 1100;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
message SendOpParams {
|
||
|
uint32 event_id = 1;
|
||
|
};
|
||
|
|
||
|
message RecvOpParams {
|
||
|
uint32 event_id = 1;
|
||
|
};
|
||
|
|
||
|
enum QuantizeScaleType
|
||
|
{
|
||
|
VECTOR_SCALE = 0;
|
||
|
SCALAR_SCALE = 1;
|
||
|
}
|
||
|
|
||
|
enum QuantizeScaleMode
|
||
|
{
|
||
|
NORMAL_MODE = 0;
|
||
|
SQRT_MODE = 1;
|
||
|
}
|
||
|
|
||
|
enum QuantizeAlgorithm
|
||
|
{
|
||
|
NON_OFFSET_ALGO = 0;
|
||
|
HALF_OFFSET_ALGO = 1;
|
||
|
ALL_OFFSET_ALGO = 2;
|
||
|
}
|
||
|
message QuantizeFactor
|
||
|
{
|
||
|
QuantizeScaleMode scale_mode = 1;
|
||
|
bytes scale_value = 2;
|
||
|
int64 scale_offset = 3;
|
||
|
bytes offset_data_value = 4;
|
||
|
int64 offset_data_offset = 5;
|
||
|
bytes offset_weight_value = 6;
|
||
|
int64 offset_weight_offset = 7;
|
||
|
bytes offset_pad_value = 8;
|
||
|
int64 offset_pad_offset = 9;
|
||
|
};
|
||
|
|
||
|
message QuantizeCalcFactor
|
||
|
{
|
||
|
bytes offsetw = 1;
|
||
|
int64 offsetw_offset = 2;
|
||
|
bytes offsetd = 3;
|
||
|
int64 offsetd_offset = 4;
|
||
|
bytes scalereq = 5;
|
||
|
int64 scaledreq_offset = 6;
|
||
|
bytes offsetdnext = 7;
|
||
|
int64 offsetdnext_offset = 8;
|
||
|
}
|
||
|
|
||
|
message QuantizeFactorParams
|
||
|
{
|
||
|
QuantizeAlgorithm quantize_algo = 1;
|
||
|
QuantizeScaleType scale_type = 2;
|
||
|
QuantizeFactor quantize_param = 3;
|
||
|
QuantizeFactor dequantize_param = 4;
|
||
|
QuantizeFactor requantize_param = 5;
|
||
|
QuantizeCalcFactor quantizecalc_param = 6;
|
||
|
};
|
||
|
|
||
|
message ConvolutionOpParams {
|
||
|
int32 mode = 1;
|
||
|
int32 algo = 2;
|
||
|
int32 pad_mode = 3;
|
||
|
uint32 group = 4;
|
||
|
uint32 num_output = 5;
|
||
|
|
||
|
repeated uint32 pad = 10;
|
||
|
repeated uint32 stride = 11;
|
||
|
repeated uint32 dilation = 12;
|
||
|
repeated uint32 kernel = 13;
|
||
|
|
||
|
float alpha = 20;
|
||
|
float beta = 21;
|
||
|
|
||
|
WeightDef filter = 40;
|
||
|
WeightDef bias = 41;
|
||
|
|
||
|
bool relu_flag = 62;
|
||
|
repeated uint32 adj = 70;
|
||
|
repeated uint32 target_shape = 71;
|
||
|
repeated uint32 before_pad = 72;
|
||
|
};
|
||
|
|
||
|
message PoolingOpParams {
|
||
|
int32 mode = 1;
|
||
|
int32 nan_opt = 2;
|
||
|
int32 pad_mode = 3;
|
||
|
bool global_pooling = 4;
|
||
|
|
||
|
repeated uint32 window = 10;
|
||
|
repeated uint32 pad = 11;
|
||
|
repeated uint32 stride = 12;
|
||
|
bool ceil_mode = 13;
|
||
|
int32 data_mode = 14;
|
||
|
|
||
|
float alpha = 20;
|
||
|
float beta = 21;
|
||
|
repeated uint32 before_pad = 22;
|
||
|
};
|
||
|
|
||
|
message EltwiseOpParams {
|
||
|
int32 mode = 1;
|
||
|
repeated float coeff = 2;
|
||
|
float alpha = 3;
|
||
|
float beta = 4;
|
||
|
repeated WeightDef weight = 5;
|
||
|
bool relu_flag = 6;
|
||
|
};
|
||
|
|
||
|
message ActivationOpParams {
|
||
|
int32 mode = 1;
|
||
|
float coef = 2;
|
||
|
float alpha = 3;
|
||
|
float beta = 4;
|
||
|
};
|
||
|
|
||
|
message BatchNormOpParams {
|
||
|
int32 mode = 1;
|
||
|
|
||
|
float alpha = 2;
|
||
|
float beta = 3;
|
||
|
double epsilon = 4;//optinal,[default = 1e-5]
|
||
|
bool use_global_stats = 5; //optinal,by default true,testing mode
|
||
|
float moving_average_fraction = 6; //optinal,[default = .999];
|
||
|
|
||
|
WeightDef estimated_mean = 7;
|
||
|
WeightDef estimated_variance = 8;
|
||
|
|
||
|
WeightDef scale = 9;
|
||
|
WeightDef bias = 10;
|
||
|
};
|
||
|
|
||
|
message ScaleOpParams {
|
||
|
WeightDef scale = 1;
|
||
|
WeightDef bias = 2;
|
||
|
};
|
||
|
|
||
|
message ReshapeOpParams {
|
||
|
float alpha = 1;
|
||
|
float beta = 2;
|
||
|
ShapeDef shape = 3;
|
||
|
int32 axis = 4;
|
||
|
int32 num_axes = 5;
|
||
|
int32 format = 6;
|
||
|
};
|
||
|
|
||
|
message SoftmaxOpParams {
|
||
|
int32 algo = 1;
|
||
|
int32 mode = 2;
|
||
|
float alpha = 3;
|
||
|
float beta = 4;
|
||
|
};
|
||
|
|
||
|
message FullConnectionOpParams {
|
||
|
WeightDef filter = 1;
|
||
|
WeightDef bias = 2;
|
||
|
uint32 num_output = 3;
|
||
|
bool relu_flag = 12;
|
||
|
};
|
||
|
|
||
|
message FlattenOpParams {
|
||
|
float alpha = 1;
|
||
|
float beta = 2;
|
||
|
int32 start_axis = 3;
|
||
|
int32 end_axis = 4;
|
||
|
}
|
||
|
|
||
|
message AddLimitedOpParams {
|
||
|
float alpha = 1;
|
||
|
float beta = 2;
|
||
|
int32 axis = 3;
|
||
|
bool broadcast = 4;
|
||
|
|
||
|
repeated WeightDef weight = 10;
|
||
|
};
|
||
|
|
||
|
message MulLimitedOpParams {
|
||
|
float alpha = 1;
|
||
|
float beta = 2;
|
||
|
int32 axis = 3;
|
||
|
bool broadcast = 4;
|
||
|
|
||
|
repeated WeightDef weight = 10;
|
||
|
};
|
||
|
|
||
|
message AddOpParams {
|
||
|
float alpha = 1;
|
||
|
float beta = 2;
|
||
|
|
||
|
repeated WeightDef weight = 10;
|
||
|
};
|
||
|
|
||
|
message MulOpParams {
|
||
|
float alpha = 1;
|
||
|
float beta = 2;
|
||
|
|
||
|
repeated WeightDef weight = 10;
|
||
|
};
|
||
|
|
||
|
message SubOpParams {
|
||
|
float alpha = 1;
|
||
|
float beta = 2;
|
||
|
|
||
|
repeated WeightDef weight = 10;
|
||
|
};
|
||
|
|
||
|
message BiasAddOpParams {
|
||
|
float alpha = 1;
|
||
|
float beta = 2;
|
||
|
|
||
|
WeightDef bias = 10;
|
||
|
};
|
||
|
|
||
|
message MatMulOpParams {
|
||
|
float alpha = 1;
|
||
|
float beta = 2;
|
||
|
bool transposeX = 3;
|
||
|
bool transposeW = 4;
|
||
|
|
||
|
WeightDef filter = 10;
|
||
|
WeightDef bias = 12;
|
||
|
};
|
||
|
|
||
|
message RsqrtOpParams {
|
||
|
float alpha = 1;
|
||
|
float beta = 2;
|
||
|
};
|
||
|
|
||
|
|
||
|
message WeightDef {
|
||
|
int32 format = 1;
|
||
|
int32 data_type = 2;
|
||
|
ShapeDef shape = 3;
|
||
|
bytes data = 4;
|
||
|
int64 data_offset = 5;
|
||
|
uint32 cmps_size = 6;
|
||
|
bytes cmps_tab = 7;
|
||
|
int64 cmps_tab_offset = 10;
|
||
|
CompressInfo cmps_info = 8;
|
||
|
AllOffsetQuantizeInfo alloffset_quantize_info = 11;
|
||
|
}
|
||
|
|
||
|
message ShapeDef {
|
||
|
repeated int64 dim = 1;
|
||
|
}
|
||
|
|
||
|
enum DeviceType {
|
||
|
NPU = 0; // In default, we will use NPU.
|
||
|
CPU = 1; // CPU
|
||
|
}
|
||
|
|
||
|
message AllOffsetQuantizeInfo {
|
||
|
float scale = 1;
|
||
|
int32 offset = 2;
|
||
|
}
|
||
|
|
||
|
message TensorDescriptor {
|
||
|
int32 format = 1;
|
||
|
int32 data_type = 2;
|
||
|
repeated int64 dim = 3;
|
||
|
uint32 size = 4;
|
||
|
bool reuse_input = 5;
|
||
|
bool output_tensor = 7;
|
||
|
DeviceType device_type = 8;
|
||
|
bool input_tensor = 9;
|
||
|
uint32 real_dim_cnt = 10;
|
||
|
uint32 reuse_input_index = 11;
|
||
|
AllOffsetQuantizeInfo alloffset_quantize_info = 12;
|
||
|
}
|
||
|
|
||
|
message CompressInfo {
|
||
|
int32 blockRow = 1; // block row
|
||
|
int32 blockCol = 2; // block col
|
||
|
int32 fractalK = 3; // fractal K
|
||
|
int32 fractalN = 4; // fractal N
|
||
|
int32 lastFractalK = 5; // K of last fractal
|
||
|
int32 lastFractalN = 6; // N of last fractal
|
||
|
int32 cubeSize = 7; // cube's length
|
||
|
int32 loadDir = 8; // data load directtiono 0:col load 1:row load
|
||
|
}
|
||
|
|
||
|
message AttrDef {
|
||
|
message ListValue {
|
||
|
repeated string s = 2; // "list(string)"
|
||
|
repeated int64 i = 3 [packed = true]; // "list(int)"
|
||
|
repeated float f = 4 [packed = true]; // "list(float)"
|
||
|
repeated bool b = 5 [packed = true]; // "list(bool)"
|
||
|
repeated uint32 u = 6 [packed = true]; // "list(uint)"
|
||
|
repeated bytes bt = 7;
|
||
|
}
|
||
|
|
||
|
oneof value {
|
||
|
string s = 2; // "string"
|
||
|
int64 i = 3; // "int"
|
||
|
float f = 4; // "float"
|
||
|
bool b = 5; // "bool"
|
||
|
uint32 u = 6; // "uint32"
|
||
|
bytes bt = 7;
|
||
|
ListValue list = 1; // any "list(...)"
|
||
|
NamedAttrs func = 10;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// A list of attr names and their values. The whole list is attached
|
||
|
// with a string name. E.g., MatMul[T=float].
|
||
|
message NamedAttrs {
|
||
|
string name = 1;
|
||
|
map<string, AttrDef> attr = 2;
|
||
|
}
|
||
|
|