算子清单
算子类型 |
Operation |
说明 |
|---|---|---|
通信算子 |
AllGatherOperation |
不同卡的数据concat起来。 |
AllGatherVOperation |
将多个通信卡上的数据按通信编号的顺序在第一维进行聚合,然后发送到每张卡上。 |
|
AllReduceOperation |
不同卡的数据相加或者平均。 |
|
AllToAllOperation |
数据广播。 |
|
AllToAllVOperation |
向通信域内所有通信卡发送数据(数据量可以通过参数定制),并从所有通信卡接收数据(数据量可以通过参数定制)。 |
|
AllToAllVV2Operation |
向通信域内所有通信卡发送数据(数据量可以通过参数定制),并从所有通信卡接收数据(数据量可以通过参数定制)。 |
|
BroadcastOperation |
将通信主卡上的数据广播到其他每张卡上。 |
|
RecvOperation |
从当前通信卡接收来自指定通信卡的数据。 |
|
ReduceScatterOperation |
在集群内的所有节点上都按维度执行相同的Reduce规约运算,再将结果发散到集群内所有的节点上。 |
|
ReduceScatterVOperation |
将多个通信卡上的数据进行计算,支持相加、取最大、最小三种计算,然后不等地发送到每张卡上。 |
|
SendOperation |
将当前通信卡的输入发送至指定通信卡上。 |
|
RmsNormOperation |
不同卡的数据concat起来。 |
|
RopeOperation |
旋转位置编码,以旋转矩阵的方式在q、k中注入位置信息,使得attention计算时能感受到token的位置关系。 |
|
激活类 |
ActivationOperation |
激活函数,可以引入非线性因素。 |
SoftmaxOperation |
可以将Tensor(张量)的某个或多个维度数据归一化,对应维度上每一个元素的范围都在(0, 1)之间并且和为1。 |
|
张量变换 |
AsStridedOperation |
基于已有的张量创建一个数据重新排布过的新的视图(view),可以通过指定形状(shape)和步长(strides)来重新排列元素。 |
BlockCopyOperation |
通过指定源block index和目的block index,将keyCache和valueCache中的数据从一系列源block拷贝到一系列目的block(keyCache和valueCache做相同的拷贝处理)。 |
|
ConcatOperation |
将两个输入张量在指定维度拼接成一个输出张量。 |
|
FillOperation |
将指定位置设置为value值或者生成一个指定shape的tensor并填充为value。 |
|
PadOperation |
对于输入input_ids,取出每个batch最后一个有效token的embedding向量。 |
|
RepeatOperation |
将输入tensor的Shape,根据参数中multiples上的信息扩展指定倍数。 |
|
SetValueOperation |
将输入源张量中的内容拷贝到输入目标张量指定位置中。 |
|
SliceOperation |
从输入张量某个起始位置中提取指定大小的切片。 |
|
SplitOperation |
将输入张量沿指定维度切分成多个张量。 |
|
TransdataOperation |
数据格式转换处理。 |
|
TransposeOperation |
改变输入Tensor的排列顺序,在多个维度上进行转置。 |
|
UnpadOperation |
对于输入input_ids,把所有有效的token拼接在一起,并在最后补0。 |
|
正则化计算 |
CohereLayerNormOperation |
一种归一化方法,可以将网络层输入根据-1维归一化到[0, 1]之间。 |
GatherPreRmsNormOperation |
先进行Gather索引操作,然后进行加法操作,最后进行RmsNorm计算。 |
|
LayerNormOperation |
是一种归一化方法,可以将网络层输入数据归一化到[0, 1]之间。 |
|
LayerNormWithStrideOperation |
为了使LayerNorm支持非连续Tensor,将x tensor通过(shape、strides、offset)表示。strides描述某个维度上相邻两个元素的间隔,offset表示这个Tensor的首元素相对addr的偏移。 |
|
RmsNormOperation |
RMSNorm是一种归一化方法,它通过对数据的root mean square(RMS)进行归一化,避免了均值的使用。 |
|
RmsNormWithStrideOperation |
为了使RmsNorm支持非连续Tensor,将x tensor通过(shape、strides、offset)表示。strides描述某个维度上相邻两个元素的间隔,offset表示这个Tensor的首元素相对addr的偏移。 |
|
数学计算 |
CumsumOperation |
返回给定axes上的累计和。 |
ElewiseOperation |
常用的逐元素数值计算集合。 |
|
OnehotOperation |
onehot编码。 |
|
ReduceOperation |
在指定维度上求和、取最大值或最小值,并消除这个维度。 |
|
SortOperation |
后处理计算功能。 |
|
WhereOperation |
三目运算。 |
|
融合算子 |
DynamicNTKOperation |
推理的长度大于训练序列长度时,生成ROPE算子使用的旋转矩阵。推理长度小于等于训练序列长度时,不进行插值;推理长度大于训练长度时,放大base动态插值。 |
FaUpdateOperation |
将各SP域PA算子的输出的中间结果lse、attention out两个局部结果更新成全局结果。 |
|
FusedAddTopkDivOperation |
算子支持两种模式:常规模式(物理专家模式)、逻辑专家模式。 |
|
GatingOperation |
将token和专家的映射关系反转为专家与token的映射关系。 |
|
GmmDeqSwigluQuantGmmDeqOperation |
整网中gate up + gate down两层的融合算子。 |
|
GroupedMatmulInplaceAddOperation |
算子Groupedmatmul和add融合,实现分组矩阵乘+InplaceAdd功能。 |
|
GroupedMatmulWithRoutingOperation |
在MOE中,实现topK个专家权重与token激活值的乘法。 |
|
GroupTopkOperation |
将输入tensor0中维度1(输入tensor0有2个维度:维度0和维度1)数据分groupNum个组,每组取最大值,然后选出每组最大值中前k个,最后将非前k个组的数据全部置零。 |
|
KVCacheOperation |
KVCache处理。 |
|
MlaPreprocessOperation |
融合了MLA场景下PagedAttention输入数据处理的全过程。 |
|
MmDeqSwigluQuantMmDeqOperation |
整网中 gate up + gate down 两层的融合算子。 |
|
MultiLatentAttentionOperation |
MLA场景下的paged attention。 |
|
NormRopeReshapeOperation |
对输入tensor x进行RmsNorm操作,再对keyrope进行Rope操作,将两个操作的输出合并后进行ReshapeAndCache操作 。 |
|
PagedAttentionOperation |
基于paged attention 对于kvcache分页管理的机制计算attention score。 |
|
PagedCacheLoadOperation |
根据blockTable上存储的blockId和kv请求长度在kvCache上将对应位置的token搬运拼接成1条连续的key/value序列。 |
|
RazorFusionAttentionOperation |
支持混元大模型在多模态场景下的长序列优化,基于优化算法实现razorFusion特性。 |
|
RelayAttentionOperation |
RelayAttention算法的核心创新点是通过将与系统提示对应的矩阵-向量乘法分组为矩阵-矩阵乘法,允许对于一批输入令牌从DRAM中仅读取一次系统提示的隐藏状态(键值对),从而消除现有因果注意力计算算法中处理系统提示时存在的大量冗余内存访问,在提高效率的同时保持生成质量且无需模型重新训练。 |
|
ReshapeAndCacheOperation |
遍历每个key和value,将key和value(num_heads, head_size)以slotmapping填入key_cache/value_cache指定位置。 |
|
ReshapeAndCacheOmniOperation |
OmniAttention在Decode阶段通过对LLM特定的Layer的特定Head进行Attention稀疏计算达到节省KV Cache显存、降低片上内存搬运数据量到缓存、减少Attention计算量的性能增益。 |
|
ReshapeAndCacheWithStrideOperation |
支持Leading Dimension功能,key和value由传入tensor:kStrides、vStrides、kOffset、vOffset确定。 |
|
RingMLAOperation |
基于传统MultiLatentAttention,并使能ring MLA算子的输出的中间结果lse,attention out两个局部结果更新成全局结果,支持更长的序列长度。 |
|
RopeOperation |
旋转位置编码(Rotary Position Embedding,RoPE),以旋转矩阵的方式在q、k中注入位置信息,使得attention计算时能感受到token的位置关系。 |
|
RopeQConcatOperation |
旋转位置编码后进行concat操作。 |
|
SelfAttentionOperation |
基于传统flash attention按照layerId管理kvcache的机制计算attention score。 |
|
SwigluQuantOperation |
swiglu函数激活对输出进行per token量化。 |
|
TopkToppSamplingOperation |
依据给定的词表概率以及top-k、top-p,从词表概率中选取前k个作为候选,然后选取概率高于top-p的词表按照TopkToppSamplingType的值采取不同的后处理策略,最后选择最合适的词序号以及对应的概率作为输出。 |
|
FastSoftMaxOperation |
与unpadOperation一起使用,将unpad处理后的Q矩阵和K矩阵相乘的结果做高性能的SoftMax处理。 |
|
FastSoftMaxGradOperation |
用于计算FastSoftMax的反向计算结果,其数据的排列结构与FastSoftMax相同。 |
|
GenAttentionMaskOperation |
根据实际需要生成attention mask。 |
|
LaserAttentionOperation |
训练场景下,使用LaserAttention算法实现self-attention(自注意力)的计算。 |
|
LaserAttentionGradOperation |
训练场景下,使用LaserAttention算法实现self-attention(自注意力)的计算(反向)。 |
|
PadWithHiddenStateOperation |
带隐藏层的pad,这个算子的主要作用是将变长的序列填充为固定长度,便于批处理和模型训练。 |
|
RmsNormBackwardOperation |
rmsnorm的反向计算。 |
|
RopeGradOperation |
旋转位置编码处理的反向。 |
|
UnpadWithHiddenStateOperation |
将填充后的序列恢复成原始的变长序列。 |
|
索引计算 |
GatherOperation |
从输入张量中根据索引收集切片,并将这些切片组合成一个新的张量。 |
IndexAddOperation |
固定维度的指定下标加上某个特定值。 |
|
MultinomialOperation |
采样功能。对最后一个轴进行采样,随机抽取numSamples个值,输出下标。 |
|
NonzeroOperation |
输出非零值索引。 |
|
ScatterElementsV2Operation |
将张量update中的所有的值,按照indices位置,写到自身张量input中。 |
|
通算融合 |
LinearParallelOperation |
通信计算并行算子,该算子功能为linear和通信算子组合,通信和计算是并行处理,与串行处理相较性能大幅度提升。 |
矩阵运算 |
LinearOperation |
将A、B两个矩阵进行矩阵乘运算,同时可以选择对矩阵乘的运算结果添加偏置、InplaceAdd融合或反量化操作。 |
LinearSparseOperation |
稀疏量化Linear。 |
|
StridedBatchMatmulOperation |
对矩阵进行分组,指定每组矩阵之间的步长,实现更加灵活的矩阵乘法操作。 |