同步操作将从 Ascend/MindSpeed 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
DeepSpeed MoE的token重排采用了两个BatchMatmul实现,时间复杂度为o(s^2),而token重排进行计算时由于矩阵的稀疏性导致一些不必要的计算在内,存在一些优化空间。
重排操作可以通过等价的pytorch API: index_select来实现,降低计算时间复杂度到o(s),从而提高训练性能。
重排过程:top1gating/top2gating 函数计算出每个专家选择的token的索引:expert_select_token_idx,shape为: [E*C],MoE前向过程中根据此索引通过index_select API实现token的重排;
反重排过程:top1gating/top2gating 函数同时需要计算每个token在各个专家输出的索引位置:token_rearrange_ec_idx,shape为:[S,]。在MoE前向过程中,token经过专家输出后通过index_select API 从[E*C, M]的专家输出中恢复token的输出:[S, M],最后乘以token选择对应专家的权重,得到MoE layer的输出。
进MoE层时实际序列长度8K以上。
设置--enable-token-rearrange-opt
,即可调用该算法。
预期性能收益在2%~3%左右。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。