TransformBiasRescaleQkv
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
| Kirin X90 处理器系列产品 | √ |
| Kirin 9030 处理器系列产品 | √ |
功能说明
-
算子功能: TransformBiasRescaleQkv算子是一个用于处理多头注意力机制中查询(Query)、键(Key)、值(Value)向量的接口。它用于调整这些向量的偏置(Bias)和缩放(Rescale)因子,以优化注意力计算过程。
-
计算公式:
逐个元素计算过程见公式:qo=(qi+qbias)/dim_per_head q_o=(q_i+q_{bias})/\sqrt{dim\_per\_head}\\
ko=ki+kbias k_o=k_i+k_{bias}\\
vo=vi+vbias v_o=v_i+v_{bias}
公式中:
- dim_per_head为每个注意力头的维度。
- qo、ko、vo分别为查询(Query)、键(Key)、值(Value)向量的输出元素。
- qi、ki、vi分别为查询(Query)、键(Key)、值(Value)向量的输入元素。
- qbias、kbias、vbias分别为查询(Query)、键(Key)、值(Value)向量的输入元素偏移。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| qkv | 输入 | 公式中的输入qi、ki、vi。 | BFLOAT16、FLOAT32、FLOAT16 | ND |
| qkvBias | 输入 | 公式中的输入qbias、kbias、vbias。 | BFLOAT16、FLOAT32、FLOAT16 | ND |
| numHeads | 属性 |
|
INT64 | - |
| qOut | 输出 | 公式中的qo。 | BFLOAT16、FLOAT32、FLOAT16 | ND |
| kOut | 输出 | 公式中的ko。 | BFLOAT16、FLOAT32、FLOAT16 | ND |
| vOut | 输出 | 公式中的vo。 | BFLOAT16、FLOAT32、FLOAT16 | ND |
- Kirin X90/Kirin 9030 处理器系列产品: 不支持BFLOAT16。
约束说明
- 输入qkv、qkvBias和输出qOut、kOut、vOut的数据类型需要保持一致。
- 输入值为NaN,输出也为NaN,输入是Inf,输出也是Inf。
- 输入是-Inf,输出也是-Inf。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_transform_bias_rescale_qkv | 通过aclnnTransformBiasRescaleQkv接口方式调用TransformBiasRescaleQkv算子。 |
| 图模式调用 | - | 通过算子IR构图方式调用TransformBiasRescaleQkv算子。 |