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 |
张量 |
|
float16/bf16 |
ND |
- |
是 |
query矩阵。 |
key |
张量 |
|
float16/bf16 |
ND |
- |
是 |
key矩阵。 |
value |
张量 |
|
float16/bf16 |
ND |
- |
是 |
value矩阵。 |
blockTables |
张量 |
[batch, maxBlockNum] |
int32 |
ND |
- |
是 |
每个query的kvcache的block table,第一维是token索引,第二维表示block索引。 |
mask |
张量 |
|
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左对齐,只支持 9:MASK_TYPE_CAUSAL_MASK, mask内部生成。 |
headNum |
标量 |
- |
int32_t |
- |
0 |
是 |
query头大小,需大于0。 |
kvHeadNum |
标量 |
- |
int32_t |
- |
0 |
是 |
kv头数量,该值需要用户根据使用的模型实际情况传入。 |
qkScale |
标量 |
- |
float |
- |
1 |
是 |
Q*K^T后乘以的缩放系数。 |
attnOut |
张量 |
|
float16/bf16 |
ND |
- |
是 |
attention输出。 |