AddLora
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | × |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:
将输入x根据输入索引indices,分别和对应的weightA,weightB相乘,然后将结果累加到输入y上并输出。
-
计算公式:
给定输入张量x,最后一维的长度为2d,函数AddLora进行以下计算:
-
将x根据indices中的索引进行重排,对应同一组权重的x排列在一起。
-
循环每个Lora分组,分别拿相应的x和weightA做矩阵乘:
Z1=xi⋅weightA[i,layerIdx,:,:]Z1 = x_{i} \cdot weightA[i, layerIdx, :, :]
-
得到的Z1继续和weightB做矩阵乘:
Z2=Z1⋅weightB[i,layerIdx,:,:]×scaleZ2 = Z1 \cdot weightB[i, layerIdx, :, :] \times scale
-
最终把Z2输出累加到y上:
out=y[:,yOffset:yOffset+ySliceSize]+Z2\text{out} = y[:, yOffset: yOffset+ySliceSize] + Z2
-
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| y | 输入 | 公式中的输入y。 | FLOAT16 | ND |
| x | 输入 | 公式中的输入x。 | FLOAT16 | ND |
| weightB | 输入 | 公式中的输入weightB。 | FLOAT16 | ND、NZ |
| indices | 输入 | 公式中的输入indices。 | INT32 | ND |
| weightAOptional | 输入 | 公式中的输入weightA。 | FLOAT16 | ND、NZ |
| layerIdx | 属性 |
|
INT | - |
| scale | 属性 | 缩放系数。 | FLOAT | - |
| yOffset | 属性 |
|
INT | - |
| ySliceSize | 属性 |
|
INT | - |
| out | 输出 | 公式中的out。 | FLOAT16 | ND |
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:weightB和weightAOptional的数据格式支持ND。
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_add_lora | 通过aclnnAddLora接口方式调用AddLora算子。 |
| 图模式调用 | test_geir_add_lora | 通过算子IR构图方式调用AddLora算子。 |