AI算子列表

AI算子列表
概述
目前只有部分算子可在一个库中同时运行在MLU220和MLU270平台。也就是用户使用 ./build_cnplugin.sh --mlu270 命令编译生成的 libcnplugin.so 文件可同时在MLU220和MLU270上运行,其余算子只能在MLU270上运行。支持MLU220和MLU270平台的算子列表如下:
• Faster Rcnn Detection Output
• Roi Pool
• Proposal
• Yolov3 Detection Output
• Yolov2 Detection Output
• SSD Detection Output
• Resize Yuv To Rgba
• Yuv To Rgb
• Resize
• Bert Pre
后续版本会完善其余算子对不同平台的支持。
Add Pad
• 功能描述
给图片的右侧和下侧加边框。
支持型号:MLU220和MLU270系列。
• 参数限制
输入:
o param:输入参数结构体。
o tensor:一个四维的张量,形状是batchNum, 1 or 4, dst_h, dst_w,目前只支持UINT8格式。
o pad_value_tensor:一个四维的张量,形状是1, 3, 1, 1,目前只支持UINT8格式。
输出:
o dst_tensor:经过padding的四维张量。形状是:batchNum, 1 or 4, src_h, src_w。目前只支持UINT8格式。
返回值:
正常返回值是CNML_STATUS_SUCCESS,其他为异常返回值。
• 规格限制
o src_w和dst_w必须是32对齐,src_h和 dst_h必须是2对齐。
o 输入的图片可以是YUV SP420或者RGB(RGBA),输入的通道也相应是1或者4。
o pad value是要填充的值。如果通道的大小为3,通道的值应为是yuv或者rgb。
Anchor Generator
• 功能描述
根据形状生成anchors。
算子接收feature shape、image shape、base achor size、scales、ratios几个参数,实现过程如下:
o base anchor size是anchor的默认size。
o scales和ratios在base anchor size的基础上对长宽、以及长宽比进行变形。
o 一个点生成 scales.size() * ratios.size() 个anchor,整个算子生成 scales.size() * ratios.size() * feature_shape[0]* feature_shape[1] 个 anchor。
支持型号:MLU220和MLU270系列。支持TensorFlow。
• 参数限制
输入:
o feature_map_shape_mlu_tensor:维度是四维(NCHW)的张量。
o param:参数描述结构体。
输出:
o grid_anchors_mlu_tensors:四维张量,形状是1, len(scales) * len(aspect_ratios) * 4, featuremap_height, featuremap_width
返回值:
正常返回值是CNML_STATUS_SUCCESS,其他为异常返回值。
• 规格限制
o 输入输出的张量仅支持FLOAT16类型。
Arange
• 功能描述
根据给定的参数,生成一个大小为 size 的一维有序数组。
o start:数组的开始数据。
o step:数组步长。
o repeat:数组中每个数据重复次数。
o size:数组大小及数组中数据总个数。
支持型号:MLU270系列。支持MXNet。
• 参数限制
输入:
o param:输入参数结构体。
o input:输入张量,无意义。这里是为了满足CNML算子输入要求。支持数据类型float16和float32。
o start:数列的起始值。
o stop:数列的结束值。算子中未用到。
o step:有序数列的步长。
o repeat:数列中每个数的重复次数。
o size:数列大小,数据总个数。
输出:
o output:输出张量,最后的有序数列。
返回值:
正常返回值是CNML_STATUS_SUCCESS,其他为异常返回值。
Bert Base Encoder
• 功能描述
任务类型为SQuAD1.1的BERT-Base网络。与pluginBertSquadOp算子不同的是,该算子不包含前后处理模块。
支持型号:MLU270系列。支持TensorFlow。
• 参数限制
输入:
o param:输入参数结构体。
o cnml_input_ptr:一组描述BERT前处理后数据的四维张量。
o cnml_output_ptr:一组描述encoder后数据输出的四维张量。
o input_tensor:BERT前处理后的数据。
o attr_mask:前处理后的mask输入。
o attr_kernel_Q_ch0:query层的矩阵乘的权值。
o attr_kernel_Q_ch1:query层的矩阵乘的权值。
o attr_kernel_Q_ch2:query层的矩阵乘的权值。
o attr_kernel_Q_ch3:query层的矩阵乘的权值。
o attr_bias_Q:query层的矩阵乘的偏置。
o attr_kernel_K_ch0:key层的矩阵乘的权值。
o attr_kernel_K_ch1:key层的矩阵乘的权值。
o attr_kernel_K_ch2:key层的矩阵乘的权值。
o attr_kernel_K_ch3:key层的矩阵乘的权值。
o attr_bias_K:key层的矩阵乘的偏置。
o attr_kernel_V_ch0:value层的矩阵乘的权值。
o attr_kernel_V_ch1:value层的矩阵乘的权值。
o attr_kernel_V_ch2:value层的矩阵乘的权值。
o attr_kernel_V_ch3:value层的矩阵乘的权值。
o attr_bias_V:value层的矩阵乘的偏置。
o attr_output_kernel_ch0:attention_output层的矩阵乘的权值。
o attr_output_kernel_ch1:attention_output层的矩阵乘的权值。
o attr_output_kernel_ch2:attention_output层的矩阵乘的权值。
o attr_output_kernel_ch3:attention_output层的矩阵乘的权值。
o attr_output_bias:attention_output层的矩阵乘的偏置。
o attr_layernorm_beta:attention_output层的矩阵乘的beta。
o attr_layernorm_gamma:attention_output层的矩阵乘的gamma。
o inter_kernel_ch0:intermediate层的矩阵乘的权值。
o inter_kernel_ch1:intermediate层的矩阵乘的权值。
o inter_kernel_ch2:intermediate层的矩阵乘的权值。
o inter_kernel_ch3:intermediate层的矩阵乘的权值。
o inter_bias:intermediate层的矩阵乘的偏置。
o output_kernel_ch0:output层的矩阵乘的权值。
o output_kernel_ch1:output层的矩阵乘的权值。
o output_kernel_ch2:output层的矩阵乘的权值。
o output_kernel_ch3:output层的矩阵乘的权值。
o output_bias:output层的矩阵乘的偏置。
o output_layernorm_beta:output层的矩阵乘的beta。
o output_layernorm_gamma:output层的矩阵乘的gamma。
o fix_pos:网络中所有Matmul和BatchMatMul的position。
o batch_num:输入的batch数。
o seq_len:输入语句长度。
输出:
o encoder_out:encoder的输出结果。
返回值:
正常返回值是CNML_STATUS_SUCCESS,其他为异常返回值。
• 规格限制
o batch_size值范围为1 - 8。
o seq_len值范围为128 - 512并且 seq_len % 64 的余数为0。
o batch_size * seq_len 的值应小于或等于1024。
Bert Emb Encoder
• 功能描述
包含pre和encoder两个模块的bert_base网络,可以根据不同任务接入不同的后处理。根据用户使用需求,针对1batch和2batch做了专门的性能优化。
支持型号:MLU270系列。支持TensorFlow。
• 参数限制
输入:
o input ids:int32类型,形状为(batch, seqlen)。
o input_mask:float16类型,形状为(batch, seqlen)。
o token_type_ids:int32类型,形状为(batch, seqlen)。
o 权值参数:
 word_embedding_table:embedding层的词向量表。
 segment_embedding_table:embedding层的词向量表。
 position_embedding_table:embedding层的词向量表。
 embedding_layernorm_beta:embedding层的layernorm参数beta。
 embedding_layernorm_gamma:embedding层的layernorm参数gamma。
 post_output_kernel:squad后处理中的矩阵乘的权值。
 post_output_bias:squad后处理中的矩阵乘的偏置。
 attr_kernel_Q_ch0:query层的矩阵乘的权值。
 attr_kernel_Q_ch1:query层的矩阵乘的权值。
 attr_kernel_Q_ch2:query层的矩阵乘的权值。
 attr_kernel_Q_ch3:query层的矩阵乘的权值。
 attr_bias_Q:query层的矩阵乘的偏置。
 attr_kernel_K_ch0:key层的矩阵乘的权值。
 attr_kernel_K_ch1:key层的矩阵乘的权值
 attr_kernel_K_ch2:key层的矩阵乘的权值。
 attr_kernel_K_ch3:key层的矩阵乘的权值。
 attr_bias_K:key层的矩阵乘的偏置。
 attr_kernel_V_ch0:value层的矩阵乘的权值。
 attr_kernel_V_ch1:value层的矩阵乘的权值。
 attr_kernel_V_ch2:value层的矩阵乘的权值。
 attr_kernel_V_ch3:value层的矩阵乘的权值。
 attr_bias_V:value层的矩阵乘的偏置。
 attr_output_kernel_ch0:attention_output层的矩阵乘的权值。
 attr_output_kernel_ch1:attention_output层的矩阵乘的权值。
 attr_output_kernel_ch2:attention_output层的矩阵乘的权值。
 attr_output_kernel_ch3:attention_output层的矩阵乘的权值。
 attr_output_bias:attention_output层的矩阵乘的偏置。
 attr_layernorm_beta:attention_output层的矩阵乘的beta。
 attr_layernorm_gamma:attention_output层的矩阵乘的gamma。
 inter_kernel_ch0:intermediate层的矩阵乘的权值。
 inter_kernel_ch1:intermediate层的矩阵乘的权值。
 inter_kernel_ch2:intermediate层的矩阵乘的权值。
 inter_kernel_ch3:intermediate层的矩阵乘的权值。
 inter_bias:intermediate层的矩阵乘的偏置。
 output_kernel_ch0:output层的矩阵乘的权值。
 output_kernel_ch1:output层的矩阵乘的权值。
 output_kernel_ch2:output层的矩阵乘的权值。
 output_kernel_ch3:output层的矩阵乘的权值。
 output_bias:output层的矩阵乘的偏置。
 output_layernorm_beta:output层的矩阵乘的beta。
 output_layernorm_gamma:output层的矩阵乘的gamma。
 fix_pos:网络中所有Matmul或BatchMatMul的position。
 batch_num:输入的batch数。
 input_seq_len:输入语句长度output层的矩阵乘的权值、偏置、beta和gamma。
输出:
o 以下面方式计算的输出结果:
half * encoder_out / encoder
返回值:
正常返回值是CNML_STATUS_SUCCESS,其他为异常返回值。
• 规格限制
o batch_size = 1~8
o seq_len = 128 ~512 && seq_len % 64 =0
o batch_size * seq_len <= 1024
BertPre
• 功能描述
是BERT网络的前处理步骤。通过查表操作,对输入进行embedding操作。
支持型号:MLU220和MLU270系列。支持TensorFlow和PyTorch。
• 参数限制
输入:
o param:输入参数结构体。
o cnml_static_ptr:一组描述输入权值的四维张量。
o cnml_intput_ptr:一组描述输入数据的四维张量。
输出:
o cnml_output_ptr:一组描述处理后数据的四维张量。
返回值:
正常返回值是CNML_STATUS_SUCCESS,其他为异常返回值。
• 规格限制
输入seq_len不得超过512。
Bert Squad
• 功能描述
执行任务类型为SQuAD1.1的BERT-Base网络。
支持型号:MLU270系列。支持TensorFlow。
• 参数限制
输入:
o input ids:数据类型为int32,形状为(batch, seqlen)。
o input_mask:数据类型为float16,形状为(batch, seqlen)。
o token_type_ids:数据类型为int32,形状为(batch, seqlen)。
o word_embedding_table:embedding层的3个词向量表。
o segment_embedding_table:embedding层的3个词向量表。
o position_embedding_table:embedding层的3个词向量表。
o embedding_layernorm_beta:embedding层的layernorm参数beta。
o embedding_layernorm_gamma:embedding层的layernorm参数gamma。
o post_output_kernel:squad后处理中的矩阵乘的权值。
o post_output_bias:squad后处理中的矩阵乘的偏置。
o attr_kernel_Q_ch0:query层的矩阵乘的权值。
o attr_kernel_Q_ch1:query层的矩阵乘的权值。
o attr_kernel_Q_ch2:query层的矩阵乘的权值。
o attr_kernel_Q_ch3:query层的矩阵乘的权值。
o attr_bias_Q:query层的矩阵乘的偏置。
o attr_kernel_K_ch0:key层的矩阵乘的权值。
o attr_kernel_K_ch1:key层的矩阵乘的权值。
o attr_kernel_K_ch2:key层的矩阵乘的权值。
o attr_kernel_K_ch3:key层的矩阵乘的权值。
o attr_bias_K:key层的矩阵乘的偏置。
o attr_kernel_V_ch0:value层的矩阵乘的权值。
o attr_kernel_V_ch1:value层的矩阵乘的权值。
o attr_kernel_V_ch2:value层的矩阵乘的权值。
o attr_kernel_V_ch3:value层的矩阵乘的权值。
o attr_bias_V:value层的矩阵乘的偏置。
o attr_output_kernel_ch0:attention_output层的矩阵乘的权值。
o attr_output_kernel_ch1:attention_output层的矩阵乘的权值。
o attr_output_kernel_ch2:attention_output层的矩阵乘的权值。
o attr_output_kernel_ch3:attention_output层的矩阵乘的权值。
o attr_output_bias:attention_output层的矩阵乘的偏置。
o attr_layernorm_beta:attention_output层的矩阵乘的beta。
o attr_layernorm_gamma:attention_output层的矩阵乘的gamma。
o inter_kernel_ch0:intermediate层的矩阵乘的权值。
o inter_kernel_ch1:intermediate层的矩阵乘的权值。
o inter_kernel_ch2:intermediate层的矩阵乘的权值。
o inter_kernel_ch3:intermediate层的矩阵乘的权值。
o inter_bias:intermediate层的矩阵乘的偏置。
o output_kernel_ch0:output层的矩阵乘的权值。
o output_kernel_ch1:output层的矩阵乘的权值。
o output_kernel_ch2:output层的矩阵乘的权值。
o output_kernel_ch3:output层的矩阵乘的权值。
o output_bias:output层的矩阵乘的偏置。
o output_layernorm_beta:output层的矩阵乘的beta。
o output_layernorm_gamma:output层的矩阵乘的gamma。
o fix_pos:网络中所有Matmul和BatchMatMul的position。
o batch_num:输入的batch数 。
o input_seq_len:输入语句长度。
输出:
o start_logits:数据类型为float32,形状为(8, 128)。
o end_logits:数据类型为float32,形状为(8, 128)。
返回值:
正常返回值是CNML_STATUS_SUCCESS,其他为异常返回值。
• 规格限制
o batch_size的值范围为 1 - 8。
o seq_len的值范围为128 - 512并且 seq_len % 64 的余数为0。
o batch_size * seq_len 的值应小于或者等于1024。
Box Coder
• 功能描述
基于PaddlePaddle框架的box_coder()算子。
接收边界框坐标,先验框坐标和先验框坐标的方差,并对边界框坐标进行编码。
支持型号:MLU270系列。
• 参数限制
输入:
o param:输入参数结构体,包括:
 row:边界框的个数。
 col:边界框类别的个数。
 len:边界框坐标的维度,必须是4。
 axis:先验框形状的参数。
 normalized:输出结果是否需要归一化的标志位。
 float_presicion:浮点数数据类型。
 code_type:编码的方式。
 core_version:运行的硬件平台。
o input_tensors:一组四维输入张量。张量的个数为3,顺序为:target_box_tensor(边界框坐标), prior_box_tensor(先验框坐标),prior_box_var_tensor(先验框坐标方差)。
输出:
o output_tensors:一组思维输出张量。张量的个数是1。
返回值:
正常返回值是CNML_STATUS_SUCCESS,其他为异常返回值。
Clip Boxes
• 功能描述
对超出边界的框进行裁剪。
支持型号:MLU220和MLU270系列。
• 参数限制
参数
o normalized:bool类型,表示是否对框进行归一化。
o num_boxes: int类型,表示框的数量。
o data_type:int类型,表示输入的数据类型。取值2代表half,取值4代表float。
o core_num:int类型,表示可用的硬件核数。
o core_version:硬件平台。
输入:
o boxes:输入框,形状是[num_boxes, 4]。
o image_shape:图片形状,形状是[4]。
输出:
输出形状是[num_boxes, 4]的四维张量。
返回值:
正常返回值是CNML_STATUS_SUCCESS,其他为异常返回值。
Combined NMS
• 功能描述
支持多batch多class的NMS。
支持型号:MLU220和MLU270系列。
• 参数限制
输入:
o param:输入参数结构体。
o box:一个3维tensor,描述输入的box。
o score:一个3维tensor,描述输入的score。
o 参数:
 max_size_per_class:每个label的最大输出size。
 total_size_per_batch:每个batch的最大输出size,为-1时等于num_boxes。
 nms_topk:控制NMS前面的topk。
 score_threshold:分数阈值。
 iou_threshold:iou阈值。
 pad_per_class:是否对每个class做pad。
 clip_boxes:是否进行ClipToWindow。
 normalized:是否正则化。
 nms_eta:动态调整iou阈值。
 background_label:背景的label。
 batch_size:batch大小。
 num_classes:输入class的数量。
 num_boxes:输入box的数量。
 box_size:box的维度。
 data_type:数据类型,支持half和float32。
输出:
o output_box:一个3维张量,描述输出box。
o output_score:一个2维张量,描述输出box的score。
o output_class:一个2维张量,描述输出box的class。
o output_valid:一个1维张量,描述各bacth输出的有效box的数量。
返回值:
正常返回值是CNML_STATUS_SUCCESS,其他为异常返回值。
Conv3d
• 功能描述
五维(NDHWC)卷积运算。
支持型号:MLU270系列。
• 参数限制
输入:
o param:输入参数结构体,包括:
 input_n:输入张量的batch维度。
 input_d:输入张量的depth维度。
 input_h:输入张量的height维度。
 input_w:输入张量的weight维度。
 input_c:输入张量的channel维度。
 output_d:输出张量的depth维度。
 output_h:输出张量的height维度。
 output_w:输出张量的weight维度。
 output_c:输出张量的channel维度。
 kernel_d : 卷积核的depth维度。
 kernel_h : 卷积核的hight维度。
 kernel_w : 卷积核的weight维度。
 stride_d: 卷积核在depth维度的步长。
 stride_h: 卷积核在hight维度的步长。
 stride_w: 卷积核在weight维度的步长。
 dilation_d: 卷

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值