2. 希姆计算TensorTurbo算子支持说明
2.1. 版本历史
| 文档版本 | 对应产品版本 | 作者 | 日期 | 描述 |
|---|---|---|---|---|
| V1.12.0 | STCRP V1.4.0 | 希姆计算 | 2023-04-04 | 新增支持ONNX算子:Einsum 更新以下ONNX算子限制说明:AveragePool、Conv、MaxPool、Upsample 更新TensorTurbo算子层额外的算子depthwise_conv2d的使用限制说明 架构调整和编辑优化 |
| V1.11.0 | STCRP V1.3.0 | 希姆计算 | 2023-01-10 | 新增支持ONNX算子:Gemm、GRU、LSTM、IsInf、RNN、Shape更新Resize算子使用限制说明 |
| V1.10.0 | STCRP V1.2.0 | 希姆计算 | 2022-11-24 | 更新AveragePool 、Cast、Conv 、ConvTranspose 、LayerNormalization、Pow算子的使用限制说明。新增支持TensorTurbo算子层额外的算子:any。 |
| V1.9.0 | STCRP V1.1.0 | 希姆计算 | 2022-10-10 | 新增基于ONNX opset=9,统计出TensorTurbo目前暂不支持的ONNX算子列表。 |
| V1.8.0 | STCRP V1.1.0 | 希姆计算 | 2022-09-08 | 新增支持ONNX算子:IsNaN、LayerNormalization、MaxRoiPool、NonZero、 RoiAlign 新增支持TensorTurbo算子层额外的算子:floor_divide |
| V1.7.1 | TensorTurbo V1.7.0 | 希姆计算 | 2022-08-09 | 更新算子使用限制说明根据目前算子支持情况和算子性质进行重新编辑和排序 |
| V1.7.0 | TensorTurbo V1.7.0 | 希姆计算 | 2022-08-01 | 新增支持ONNX算子:Atanh、Asinh、Acosh、HardSigmoid、InstanceNormalization、MeanVarianceNormalization、Reciprocal、ReduceSumSquare、ReduceL1 新增支持TensorTurbo算子层额外的算子:negative |
| V1.6.0 | TensorTurbo V1.6.0 | 希姆计算 | 2022-06-30 | 新增支持ONNX算子:Acos、 Asin、Atan、GlobalLpPool、GlobalMaxPool、Hardmax、MaxUnpool、ReduceLogSum、ReduceProd、Tan |
| V1.5.0 | TensorTurbo V1.5.0 | 希姆计算 | 2022-06-02 | 新增支持ONNX算子:Ceil、Cos、Floor、LpPool、Pad、ReverseSequence、Round、ReduceLogSumExp、ReduceL2、Shrink、Sin |
| V1.4.0 | TensorTurbo V1.4.0 | 希姆计算 | 2022-04-29 | 新增支持ONNX算子:Cast、CumSum 、Elu、Gather、Log、Logsoftmax、Mod、SpaceToDepth、Softplus、Scatter、ScatterND新增支持TensorTurbo算子层额外的算子:argsort、sort |
| V1.3.0 | TensorTurbo V1.3.0 | 希姆计算 | 2022-03-31 | 初始对外版本。 |
2.2. ONNX算子(Opset 9)
基于ONNX Opset 9,TensorTurbo支持的ONNX算子共计113个,算子列表如下:
| 算子 | 限制说明 |
|---|---|
| Abs | 无限制。 |
| Acos | 输入范围[-1,1]。 |
| Acosh | 输入数值范围为[1, 16950]。 |
| Add | 无限制。 |
| And | 无限制。 |
| ArgMax | 只支持axis为一根轴。 |
| ArgMin | 只支持axis为一根轴。 |
| Asin | 输入范围[-1,1]。 |
| Asinh | 输入数值范围为[-255.9, 255.9]。 |
| Atan | 无限制。 |
| Atanh | 输入数值范围为[-1, 1)。 |
| AveragePool | 支持2D与3D。pad参与计算。 |
| BatchNormalization | 无限制。 |
| Cast | 无限制。 |
| Ceil | 无限制。 |
| Clip | 无限制。 |
| Concat | 无限制。 |
| Constant | 无限制。 |
| ConstantOfShape | 无限制。 |
| Conv | dilations在各维度的取值应相同。kernel大小不超过9*9。 |
| ConvTranspose | 不支持auto_pad与dilations。kernel大小不超过9*9。 |
| Cos | 输入数值范围为[-6.7, 6.7]。 |
| Cosh | 无限制。 |
| DepthToSpace | 无限制。 |
| Div | 无限制。 |
| Einsum | 目前该算子equation仅支持以下场景: ibh,hnd->ibndibnd,jbnd->bnijibnd,snd->ibnsijbs,ibns->bnijijbn->bnijbnij,jbnd->ibndibnd,hnd->ibh |
| Elu | 无限制。 |
| Equal | 无限制。 |
| Erf | 无限制。 |
| Exp | 无限制。 |
| Expand | 无限制。 |
| EyeLike | 无限制。 |
| Flatten | 无限制。 |
| Floor | 无限制。 |
| Gather | 无限制。 |
| Gemm | 无限制。 |
| GlobalAveragePool | 仅支持2D(Layout为NHWC)。 |
| GlobalLpPool | 仅支持p=1和p=2, 仅支持2D(Layout为NHWC)。 |
| GlobalMaxPool | 仅支持2D(Layout为NHWC)。 |
| Greater | 无限制。 |
| GRU | 无限制。 |
| Hardmax | 无限制。 |
| HardSigmoid | 所有输入数据均为FP16类型。 |
| Identity | 无限制。 |
| InstanceNormalization | 输入数值范围为[-5, 5],reduce轴size小于128*128。 |
| IsInf | 无限制。 |
| IsNaN | 无限制。 |
| LeakyRelu | 无限制。 |
| Less | 无限制。 |
| Log | 输入数值范围为[4.2e-5, 33900]。 |
| LogSoftmax | 无限制。 |
| LpNormalization | 仅支持p=1和p=2,输入数值范围为[-5,5],reduce轴size小于4096。 |
| LpPool | 仅支持p=1和p=2, 仅支持2D(Layout为NHWC)。 |
| LSTM | 不支持sequence_lens输入。 |
| MatMul | 无限制。 |
| Max | 仅支持二元输入。 |
| MaxPool | 支持2D与3D。 |
| MaxUnpool | 无限制。 |
| Mean | 输入数值范围为[-0.2, 0.2],输入个数小于128。 |
| MeanVarianceNormalization | 输入数值范围为[-5, 5],reduce轴size小于128*128。 |
| Min | 仅支持二元输入。 |
| Mul | 无限制。 |
| MaxRoiPool | 第2个输入rois对应的数据按batch_index升序排列。 |
| Neg | 无限制。 |
| Not | 无限制。 |
| NonZero | 无限制。 |
| OneHot | 输入depth参数最大支持320000。 |
| Or | 无限制。 |
| Pad | 仅支持constant和edge模式。仅支持四维 (NHWC)和二维(HW)输入的H和W轴上的扩展。 |
| Pow | 第二个输入(指数)是值为0.5、1、2或3的常数。或限定第一个输入(底数)范围[0.6, 1.7], 第二个输入(指数)范围[-1.7, 1.7] |
| PRelu | 无限制。 |
| Reciprocal | 无限制。 |
| ReduceL1 | 输入数值范围为[-0.2, 0.2],reduce轴size小于128。 |
| ReduceL2 | 输入数值范围为[-0.2, 0.2],reduce轴size小于128。 |
| ReduceLogSum | 输入数值范围为[0, 0.2],reduce轴size小于128。 |
| ReduceLogSumExp | 无限制。 |
| ReduceMax | 无限制。 |
| ReduceMean | 输入数值范围为[-0.2, 0.2],reduce轴size小于128。 |
| ReduceMin | 无限制。 |
| ReduceProd | 输入数值范围为[-1.4, 1.4],reduce轴size小于32。 |
| ReduceSum | 输入数值范围为[-0.2, 0.2],reduce轴size小于128。 |
| ReduceSumSquare | 输入数值范围为[-0.45, 0.45],reduce轴size小于128。 |
| Relu | 无限制。 |
| Reshape | 无限制。 |
| RNN | 不支持sequence_lens输入。 |
| Scatter/ScatterElements | 仅支持indices.shape = updates.shape,且indices与data的shape除了axis轴外,其他维度的大小相同。不支持indices包含重复值。 |
| Selu | 无限制。 |
| Shape | 无限制。 |
| Shrink | 无限制。 |
| Sigmoid | 无限制。 |
| Sign | 无限制。 |
| Sin | 输入数值范围为[-5.2, 5.2]。 |
| Sinh | 无限制。 |
| Size | 无限制。 |
| Slice | 无限制。 |
| Softmax | 无限制。 |
| Softplus | 无限制。 |
| Softsign | 无限制。 |
| SpaceToDepth | 无限制。 |
| Split | 无限制。 |
| Sqrt | 无限制。 |
| Squeeze | 无限制。 |
| Sub | 无限制。 |
| Sum | 输入数值范围为[-0.2, 0.2],输入个数小于128。 |
| Tan | 输入数值范围为[-1.48, 1.48]。 |
| Tanh | 无限制。 |
| Tile | 无限制。 |
| TopK | 无限制。 |
| Transpose | 无限制。 |
| Unsqueeze | 无限制。 |
| Upsample | 支持2D与3D。在最新的ONNX算子中已弃用,但在ONNX opset=9中该算子仍正常使用。 |
| Where | 无限制。 |
| Xor | 无限制。 |
说明:基于ONNX Opset 9,统计出TensorTurbo目前暂不支持的ONNX算子共12个,包括Compress、Dropout、If、LRN、Loop、Multinomial、RandomNormal、RandomNormalLike、RandomUniform、RandomUniformLike、Scan、TfidfVectorizer。
2.3. ONNX算子(其他Opset版本)
基于ONNX的其他Opset版本,TensorTurbo支持的ONNX算子共计12个,算子列表如下:
| 算子 | 限制说明 |
|---|---|
| CumSum | 不支持axis=None,输入数值范围为[-0.2, 0.2],reduce轴size小于128。 |
| Mod | 双输入均为整数,输入数值范围为[-256, 256],第二个输入非0。 |
| GatherND | 仅支持batch_dims=0。 |
| GatherElements | output.shape = indices.shape,且indices维度小于或等于data维度。 |
| GreaterOrEqual | 无限制。 |
| LessOrEqual | 无限制。 |
| LayerNormalization | 仅支持axis=-1,输入范围[-0.2,0.2],reduce轴size小于4096。 |
| Resize | 支持2D与3D。目前支持的插值模式有nearest_neighbor和linear两种模式。目前支持的坐标变换模式有half_pixel 、align_corners和asymmetric。 |
| ReverseSequence | 仅支持sequence_lens输入为常数,且其值与input输入的shape在time_axis轴上值相等。 |
| Round | 无限制。 |
| RoiAlign | 第2个输入rois对应的数据按batch_index升序排列。 |
| ScatterND | 不支持indices包含重复值。 |
2.4. TensorTurbo算子层额外支持的算子
TensorTurbo支持的非ONNX算子共计15个,算子列表如下:
| 算子 | 限制说明 |
|---|---|
| argsort | 仅支持axis=-1(最后一个轴排序)。 |
| any | 不支持reduce轴绑核。 |
| broadcast_to | 无限制。 |
| deformable_conv2d | 仅支持batch size=1。在H轴与W轴上的大小不超过2048。 |
| depthwise_conv2d | dilations在各维度的取值应相同。kernel大小不超过9*9。 |
| full | 无限制。 |
| floor_divide | 双输入均为整数,输入范围[-1024, 1024],第二个输入非0。 |
| gelu | 无限制。 |
| mish | 无限制。 |
| non_max_suppression | 无限制。 |
| not_equal | 无限制。 |
| opencv_magnitude | 无限制。 |
| relu6 | 无限制。 |
| swish | 无限制。 |
| sort | 仅支持axis=-1(最后一个轴排序)。 |