aclnnFusedInferAttentionScoreV4
产品支持情况
功能说明
接口功能:适配decode & prefill场景的FlashAttention算子,既可以支持prefill计算场景(PromptFlashAttention),也可支持decode计算场景(IncreFlashAttention)。相比于FusedInferAttentionScoreV3,本接口新增dequantScaleQueryOptional、queryQuantMode参数。
说明:
decode场景下特有KV Cache:KV Cache是大模型推理性能优化的一个常用技术。采样时,Transformer模型会以给定的prompt/context作为初始输入进行推理(可以并行处理),随后逐一生成额外的token来继续完善生成的序列(体现了模型的自回归性质)。在采样过程中,Transformer会执行自注意力操作,为此需要给当前序列中的每个项目(无论是prompt/context还是生成的token)提取键值(KV)向量。这些向量存储在一个矩阵中,通常被称为kv缓存(KV Cache)。
计算公式:
self-attention(自注意力)利用输入样本自身的关系构建了一种注意力模型。其原理是假设有一个长度为的输入样本序列,的每个元素都是一个维向量,可以将每个维向量看作一个token embedding,将这样一条序列经过3个权重矩阵变换得到3个维度为的矩阵。
self-attention的计算公式一般定义如下,其中为输入样本的重要属性元素,是输入样本经过空间变换得到,且可以统一到一个特征空间中。公式及算子名称中的"Attention"为"self-attention"的简写。
本算子中Score函数采用Softmax函数,self-attention计算公式为:
其中和的乘积代表输入的注意力,为避免该值变得过大,通常除以的开根号进行缩放,并对每行进行softmax归一化,与相乘后得到一个的矩阵。
说明:
[object Object]
函数原型
算子执行接口为,必须先调用“aclnnFusedInferAttentionScoreV4GetWorkspaceSize”接口获取入参并根据计算流程计算所需workspace大小,再调用“aclnnFusedInferAttentionScoreV4”接口执行计算。
aclnnFusedInferAttentionScoreV4GetWorkspaceSize
aclnnFusedInferAttentionScoreV4
约束说明
确定性计算:
- aclnnFusedInferAttentionScoreV4默认确定性实现。
公共约束
- 入参为空的场景处理:
- query为空Tensor:直接返回
- 参数query不为空Tensor,参数key、value为空tensor(即S2为0):attentionOut填充为全零
- attentionOut为空Tensor:框架会处理
- 上述参数说明中标注了“可传入nullptr”的入参为空指针时:不进行处理
- 入参为空的场景处理:
[object Object][object Object]Mask
[object Object][object Object][object Object]PagedAttention
PagedAttention的使能必要条件是blocktable存在且有效,同时key、value是按照blocktable中的索引在一片连续内存中排布,在该场景下key、value的inputLayout参数无效。
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
[object Object]
[object Object][object Object]innerPrecise
说明:
[object Object][object Object][object Object][object Object]pseShift:
[object Object][object Object][object Object]int8量化场景:
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:[object Object]
[object Object][object Object]伪量化参数约束:
当伪量化参数 和 KV分离量化参数同时传入时,以KV分离量化参数为准。
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
[object Object]
[object Object][object Object]TND、TND_NTD、NTD_TND场景下query,key,value输入的综合限制:
actualSeqLengths和actualSeqLengthsKv必须传入
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
[object Object]
[object Object][object Object]MLA场景(queryRope和keyRope输入不为空时)
[object Object][object Object][object Object]GQA/MHA/MQA伪量化场景下key/value shape为五维时的参数约束如下:
[object Object]当Q_S大于1时:
[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
[object Object]
当Q_S等于1时(IFA非MTP场景):
- [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:[object Object]