接口功能:Attention与FFN分离部署场景下,FFN worker侧的token重排算子。Attention将token按专家路由发送到对应FFN worker的预分配数据区,本接口从该数据区中扫描调度信息,按专家维度聚合并重排token,产出各专家对应的连续token数据块。
该算子不建议单独使用,建议与FfnWorkerScheduler等算子配合使用,形成完整的工作流。
接收Attention侧发送的数据。该数据以ScheduleContext结构体内存排布方式存储。其具体定义参见。该结构体包含CommonArea、ControlArea、AttentionArea、FfnArea域。本接口从FfnArea中读取token_info_buf和token_data_buf获取待重排的token数据与描述信息,并获取layer_id、session_id、micro_batch_id、expert_ids等路由信息。
对
[object Object]中所有token的专家ID进行排序(被mask的token初始化为大值),生成gather索引。多核并行按gather索引从
[object Object]中提取token的hidden states和dynamic scale,同时查表得到对应的session_id、micro_batch_id、token_id。单核扫描排序后的专家ID序列,查找跳变点,生成
[object Object](每个专家处理的token起止偏移)。
其中 , 为Attention worker数量, 为micro batch size, 为topK加共享专家数。
计算公式:
每个算子分为,必须先调用“aclnnFfnWorkerBatchingGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnFfnWorkerBatching”接口执行计算。
- 参数A(Attention worker数量)支持 ≤ 1024。
- 参数M(micro batch数量)支持 ≤ 64。
- 参数K(topK数)支持 ≤ 64。
- 参数BS(micro batch size)和Y支持泛化,无硬上限(受内存限制)。
- 参数H(hidden size)支持泛化。
- tokenDtype为2时,输入int8数据与fp32 scale连续排布。
- 确定性计算:
- aclnnFfnWorkerBatching默认确定性实现。