开发者
下载
[object Object]

[object Object][object Object]undefined
[object Object]
  • 接口功能:Attention与FFN分离部署场景下,Attention侧的数据融合算子。该算子将多个计算单元处理的注意力token数据进行融合,结合专家权重对结果进行加权,输出最终的注意力融合结果,并更新层ID。

    该算子不建议单独使用,建议与AttentionWorkerScheduler等算子配合使用,形成完整的工作流。

    1. 接收FFN侧回传的数据。该数据以ScheduleContext结构体内存排布方式存储。其具体定义参见。该结构体包含CommonArea、ControlArea、AttentionArea、FfnArea域。本接口从AttentionArea的token_data_buf中读取token数据。

    2. 结合expert_scales对token数据进行加权融合,输出最终注意力结果y。

    3. 根据输入layer_id计算并输出next_layer_id,指示下一个要处理的层ID。

  • 计算公式:

    y[i]=k=0K1expert_scales[i][k]×token_data[i][k]y[i] = \sum_{k=0}^{K-1} \text{expert\_scales}[i][k] \times \text{token\_data}[i][k] next_layer_id=layer_id+1\text{next\_layer\_id} = \text{layer\_id} + 1
[object Object]

每个算子分为,必须先调用“aclnnAttentionWorkerCombineGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnAttentionWorkerCombine”接口执行计算。

[object Object]
[object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

    第一段接口会完成入参校验,出现以下场景时报错:

    [object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

[object Object]
  • schedule_context为1D的Tensor,shape固定为(1024)。
  • expert_scales为2D的Tensor,shape为(BS, K),其中K ≤ 64。
  • y为2D的Tensor,shape为(BS, hiddenSize),即第二维由参数hiddenSize确定。
  • layer_id和next_layer_id为1D的Tensor,shape为(1)。
  • 确定性计算:
    • aclnnAttentionWorkerCombine默认确定性实现。
[object Object]

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]