MhcPostBackward
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:mhc_post基于一系列计算对MHC(Manifold-Constrained Hyper-Connection)架构中上一层输出htouth_{t}^{out}进行Post Mapping,对上一层的输入xjx_j进行ResMapping,然后对二者进行残差连接,得到下一层的输入xl+1x_{l+1}。该算子实现前述过程的反向功能。
-
计算公式:
grad_x=Hlres×grad_ygrad_h_res=xl×grad_yTgrad\_x = H_{l}^{res} \times grad\_y\\ grad\_h\_res = x_{l} \times {grad\_y}^{T}
grad_h_out=(grad_y∗(Hlpost.unsqueeze(−1))).sum(dim=−2)grad_h_post=(grad_y∗(hlout.unsqueeze(−2))).sum(dim=−1)grad\_h\_out=({grad\_y} * (H_{l}^{post}.unsqueeze(-1))).sum(dim=-2)\\ grad\_h\_post=({grad\_y} * (h_{l}^{out}.unsqueeze(-2))).sum(dim=-1)
参数说明
| 参数名 | 输入/输出 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| grad_y | 输入 | 待计算的数据,表示网络中MHC层的输入数据 | FLOAT16、BFLOAT16 | ND |
| x | 输入 | 待计算的数据,表示网络中MHC层的输入数据 | FLOAT16、BFLOAT16 | ND |
| h_res | 输入 | mHC的h_res变换矩阵 | FLOAT32 | ND |
| h_out | 输入 | Atten/MLP层的输出 | FLOAT16、BFLOAT16 | ND |
| h_post | 输入 | MHC的h_post变换矩阵 | FLOAT32 | ND |
| grad_x | 输出 | 网络中MHC层的输入数据x的梯度 | FLOAT16、BFLOAT16 | ND |
| grad_h_res | 输出 | 网络中MHC层的输入数据h_res的梯度 | FLOAT32 | ND |
| grad_h_out | 输出 | 网络中MHC层的输入数据h_out的梯度 | FLOAT16、BFLOAT16 | ND |
| grad_h_post | 输出 | 网络中MHC层的输入数据h_post的梯度 | FLOAT32 | ND |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_mhc_post_backward | 通过aclnnMhcpostBackward接口方式调用算子。 |