开发者
资源
[object Object]

[object Object][object Object]undefined
[object Object]
  • 接口功能:适配decode & prefill场景的FlashAttention算子,既可以支持prefill计算场景(PromptFlashAttention),也可支持decode计算场景(IncreFlashAttention)。

    相比于FusedInferAttentionScoreV3,本接口新增dequantScaleQueryOptional、learnableSinkOptional、queryQuantMode参数,另外新增alibi的fullmask能力。

    说明: decode场景下特有KV Cache:KV Cache是大模型推理性能优化的一个常用技术。采样时,Transformer模型会以给定的prompt/context作为初始输入进行推理(可以并行处理),随后逐一生成额外的token来继续完善生成的序列(体现了模型的自回归性质)。在采样过程中,Transformer会执行自注意力操作,为此需要给当前序列中的每个项目(无论是prompt/context还是生成的token)提取键值(KV)向量。这些向量存储在一个矩阵中,通常被称为kv缓存(KV Cache)。

  • 计算公式:

    self-attention(自注意力)利用输入样本自身的关系构建了一种注意力模型。其原理是假设有一个长度为nn的输入样本序列xxxx的每个元素都是一个dd维向量,可以将每个dd维向量看作一个token embedding,将这样一条序列经过3个权重矩阵变换得到3个维度为ndn*d的矩阵。

    self-attention的计算公式一般定义如下,其中QKVQ、K、V为输入样本的重要属性元素,是输入样本经过空间变换得到,且可以统一到一个特征空间中。公式及算子名称中的"Attention"为"self-attention"的简写。

    Attention(Q,K,V)=Score(Q,K)VAttention(Q,K,V)=Score(Q,K)V

    本算子中Score函数采用Softmax函数,self-attention计算公式为:

    Attention(Q,K,V)=Softmax(QKTd+FullMask)VAttention(Q,K,V)=Softmax(\frac{QK^T}{\sqrt{d}} + FullMask)V

    其中QQKTK^T的乘积代表输入xx的注意力,为避免该值变得过大,通常除以dd的开根号进行缩放,加上alibi的fullmask,并对每行进行softmax归一化,与VV相乘后得到一个ndn*d的矩阵。

    说明

    [object Object]
[object Object]

算子执行接口为,必须先调用“aclnnFusedInferAttentionScoreV4GetWorkspaceSize”接口获取入参并根据计算流程计算所需workspace大小,再调用“aclnnFusedInferAttentionScoreV4”接口执行计算。

[object Object]
[object Object]
[object Object]
  • 参数说明:

    [object Object]
  • 返回值:

    返回aclnnStatus状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]
[object Object]
  • 参数说明:

    [object Object]
  • 返回值:

    返回aclnnStatus状态码,具体参见

[object Object]
  • 确定性计算:
    • aclnnFusedInferAttentionScoreV4默认确定性实现。
  • 公共约束
    • 入参为空的场景处理:
      • 空Tensor指必选输入和输出的shapeSize为0。在空Tensor场景下,若attentionOut为空,返回空,否则返回全0;若有lse且lse为空时返回空,lse不为空则返回全inf。非空Tensor时输入正常拦截。
      • query,attentionOut所有tensor的shapeSize为0,属于空Tensor。
      • query,attentionOut所有tensor的shapeSize不为0,若有lse且lse不为空,并且key,value中所有tensor的shapeSize为0,属于空Tensor。
      • attentionOut和lse都为空时,属于空Tensor。
      • 属于空Tensor时,跳过校验流程;否则,走正常校验流程。
  • alibi fullmask场景约束
    • innerPrecise为0;
    • pseShiftOptional不为空,shape为[B, N, maxQ, maxKV];
    • attenMaskOptional为空;
    • spareMode为0。
[object Object][object Object][object Object][object Object][object Object]
  • PagedAttention的使能必要条件是blocktable存在且有效,同时key、value是按照blocktable中的索引在一片连续内存中排布,在该场景下key、value的inputLayout参数无效。

  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:

    [object Object]
[object Object][object Object][object Object]

  说明:

[object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object]
  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:

    [object Object]
[object Object][object Object][object Object]
  • 当伪量化参数 和 KV分离量化参数同时传入时,以KV分离量化参数为准。

  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:

    [object Object]
[object Object][object Object][object Object]
  • actualSeqLengths和actualSeqLengthsKv必须传入

  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:

    [object Object]
[object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object][object Object]
  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:

    [object Object]
[object Object][object Object][object Object]
  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:

    [object Object]
[object Object][object Object]

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]