昇腾社区首页
中文
注册
开发者
下载

aclnnInplaceFfnWorkerScheduler

产品支持情况

[object Object]undefined

功能说明

  • 算子功能:Attention和FFN分离场景下,FFN侧数据扫描算子。该算子接收AttentionToFFN算子发送的数据,进行扫描并完成数据整理。

    不建议直接使用,需要与AttentionToFFN,FFNWorkerBatching配合使用。

    1. 接收AttentionToFFN算子发送的数据。该数据以ScheduleContext结构体内存排布方式存储。其具体定义参见。该结构体包含CommonArea、ControlArea、AttentionArea、FfnArea域。本接口涉及CommonArea(用于存储配置信息,如session_num、micro_batch_num、micro_batch_size、selected_expert_num),ControlArea(用于上层控制进程是否退出),FfnArea域(负责管理本算子计算过程中所需的输入及输出缓冲区,其中token_info_buf字段用来存储该算子的输入信息)。

    2. 扫描token_info_buf存储的信息,当通信数据准备就绪时,本算子开始进行数据整理。整理如下图所示,将layer id、 session id、micro batch id、expert ids分别写入layer_id_buf、session_id_buf、micro_batch_id_buf、expert_ids_buf的device内存上。

    [object Object]
    1. 完成数据整理后,后续可供FFNWorkerBatching算子使用。
  • 计算公式:

    1. 初始化,根据入参ScheduleContext中的session_num和sync_group_size计算分组个数。
    2. 若分组个数为1,表示全同步处理数据,待全部session数据准备就绪后,进行数据整理。
    3. 若分组个数不为1,表示非全同步处理数据,待group内的session数据准备就绪后,进行数据整理。
$$ \text{Initialize:} \quad\text{group_num} = \frac{\text{session_num}}{\text{sync_group_size}} $$ $$ \text{Process} = \begin{cases} \text{check_all_session_ready()} \quad \text{data_reorganization()} & \text{if } \text{group_num} = 1 \\ \text{check_all_sessions_of_group_ready()} \quad \text{data_reorganization()} & \text{otherwise} \end{cases} $$

函数原型

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

[object Object]
[object Object]

aclnnInplaceFfnWorkerSchedulerGetWorkspaceSize

  • 参数说明:

    [object Object]
  • 返回值:

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

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

    [object Object]

aclnnInplaceFfnWorkerScheduler

  • 参数说明:

    [object Object]
  • 返回值:

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

约束说明

  • aclnnInplaceFfnWorkerScheduler默认为确定性实现,暂不支持非确定性实现,确定性计算配置也不会生效。

调用示例

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

[object Object]