开发者
资源

Exp近似计算

功能说明

exp使用m8v2近似计算提升性能。

在进行attention计算时exp占据单算子耗时比较大,故可以使用fast exp进行快速计算。

基于此理论,提出exp m8v2方案,提升精度的同时保持性能:

其中多项式可以采用秦九韶算法减少操作次数:

其中系数经过数值寻优后得到确定。

开启方式

参数“kernelType”置为KERNELTYPE_EXP_M8V2。

  • 算子输入列表

    参数

    维度

    数据类型

    格式

    cpu/npu

    说明

    Q

    [ntokens, heads, headSize]

    float16

    ND

    npu

    nTokens: sum(qSeqlen),且求和后向上16对齐。

    K

    [ntokens, kvHead, headSize]

    float16

    ND

    npu

    -

    V

    [ntokens, kvHead, headSize]

    float16

    ND

    npu

    v shape 与k 相同。

    Attention_mask

    压缩mask:maxSeqlen = 128[1, 128/16, 128, 16]

    float16

    NZ

    npu

    maskType为MASK_TYPE_UNDEFINED(0)时不传入。

    seqlen

    [batch]

    int32/uint32

    ND

    npu

    -

  • 算子输出列表

    参数

    维度

    数据类型

    格式

    cpu/npu

    说明

    output

    [nTokens, head_num, head_size]

    float16

    ND

    npu

    输出。

约束说明

  • headSize必须等于headSizeV,不支持MLA。
  • headSize需要16对齐。
  • m8v2仅在Atlas 推理系列产品上支持。
  • 仅支持masktype为MASK_TYPE_UNDEFINEDMASK_TYPE_NORM
  • 仅支持calcType为PA_ENCODER。
  • 支持headNum != kvHeadNum
  • 支持qkScale归一化。
  • 不支持qScale缩放。
  • quantType、outDataType、batchRunStatusEnable、isTriuMask、clampType、clampMin、clampMax、kvcacheCfg、scaleType、mlaVHeadSize、cacheType、windowSize仅支持默认值。