昇腾社区首页
中文
注册

PrefixEncoder

定义

atb::Status AtbSelfAttentionPrefixEncoderGetWorkspaceSize(const aclTensor *query, const aclTensor *key,
                                                          const aclTensor *value, const aclTensor *blockTables,
                                                          const aclTensor *mask, const aclTensor *seqLen,
                                                          const aclTensor *kvSeqLen, const aclTensor *slopes,
                                                          int maskType, int32_t headNum, int32_t kvHeadNum,
                                                          float qkScale, aclTensor *attnOut, uint64_t *workspaceSize,
                                                          atb::Operation **op, atb::Context *context);
atb::Status AtbSelfAttentionPrefixEncoder(void *workspace, uint64_t workspaceSize, atb::Operation *op,
                                          atb::Context *context);

AtbSelfAttentionPrefixEncoderGetWorkspaceSize成员

参数

标量/张量

维度

数据类型

格式

默认值

是否必选

描述

query

张量

  • [nTokens, qHiddenSize]
  • [nTokens, headNum, headSize]

float16/bf16

ND

-

query矩阵。

key

张量

  • [numBlocks, blockSize, kvHiddenSize]
  • [numBlocks, blockSize, headNum, headSize]

float16/bf16

ND

-

key矩阵。

value

张量

  • [numBlocks, blockSize, kvHiddenSize]
  • [numBlocks, blockSize, headNum, headSize]

float16/bf16

ND

-

value矩阵。

blockTables

张量

[batch, maxBlockNum]

int32

ND

-

每个query的kvcache的block table,第一维是token索引,第二维表示block索引。

mask

张量

  • [256, 256]
  • [headNum, seqLen, 128]

float16/bf16

ND

-

alibiMask。

maskType不为MASK_TYPE_ALIBI_COMPRESS或MASK_TYPE_ALIBI_COMPRESS_SQRT时,需要置为nullptr。

seqLen

张量

[batch]

int32/uint32

ND

-

query对应的每个batch的序列长度

Host侧。

kvSeqLen

张量

[batch]

int32/uint32

ND

-

key、value对应的每个batch的序列长度。Host侧tensor。

slopes

张量

[head]

fp32

ND

-

即alibi coefficient,当使用alibiMask时传入tensor时,为alibiMask的每个head的系数。

maskType为MASK_TYPE_CAUSAL_MASK时,需要置为nullptr。

maskType

标量

-

int

-

0

mask类型。

仅支持

3:压缩mask MASK_TYPE_ALIBI_COMPRESS,alibi压缩mask。

4:MASK_TYPE_ALIBI_COMPRESS_SQRT,alibi压缩开平方mask。

5: MASK_TYPE_ALIBI_COMPRESS_LEFT_ALIGN,alibi压缩mask左对齐,只支持Atlas A2 训练系列产品/Atlas 800I A2 推理产品Atlas A3 推理系列产品/Atlas A3 训练系列产品

9:MASK_TYPE_CAUSAL_MASK, mask内部生成。

headNum

标量

-

int32_t

-

0

query头大小,需大于0。

kvHeadNum

标量

-

int32_t

-

0

kv头数量,该值需要用户根据使用的模型实际情况传入。

qkScale

标量

-

float

-

1

Q*K^T后乘以的缩放系数。

attnOut

张量

  • [nTokens, qHiddenSize]
  • [nTokens, headNum, headSize]

float16/bf16

ND

-

attention输出。