aclnnInplaceFfnWorkerScheduler
产品支持情况
功能说明
算子功能:Attention和FFN分离场景下,FFN侧数据扫描算子。该算子接收AttentionToFFN算子发送的数据,进行扫描并完成数据整理。
不建议直接使用,需要与AttentionToFFN,FFNWorkerBatching配合使用。
接收AttentionToFFN算子发送的数据。该数据以ScheduleContext结构体内存排布方式存储。其具体定义参见。该结构体包含CommonArea、ControlArea、AttentionArea、FfnArea域。本接口涉及CommonArea(用于存储配置信息,如session_num、micro_batch_num、micro_batch_size、selected_expert_num),ControlArea(用于上层控制进程是否退出),FfnArea域(负责管理本算子计算过程中所需的输入及输出缓冲区,其中token_info_buf字段用来存储该算子的输入信息)。
扫描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]- 完成数据整理后,后续可供FFNWorkerBatching算子使用。
计算公式:
- 初始化,根据入参ScheduleContext中的session_num和sync_group_size计算分组个数。
- 若分组个数为1,表示全同步处理数据,待全部session数据准备就绪后,进行数据整理。
- 若分组个数不为1,表示非全同步处理数据,待group内的session数据准备就绪后,进行数据整理。
函数原型
每个算子分为,必须先调用“aclnnInplaceFfnWorkerSchedulerGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnInplaceFfnWorkerScheduler”接口执行计算。
[object Object]
[object Object]
aclnnInplaceFfnWorkerSchedulerGetWorkspaceSize
aclnnInplaceFfnWorkerScheduler
约束说明
- aclnnInplaceFfnWorkerScheduler默认为确定性实现,暂不支持非确定性实现,确定性计算配置也不会生效。
调用示例
[object Object]