Megatron Transformer-engine
背景与挑战
Transformer Engine (TE) 是一个专门用于加速基于 Transformer 架构的模型进行训练和推理的库。当前的多个第三方框架依赖该加速库提供的API进行推理及训练,MindSpeed需要对这些需求做出对等支持。
解决方法
为了兼容第三方框架对Megatron-TE相关接口的依赖,方便在NPU中进行模型的推理及训练,Mindspeed提供了在Ascend-NPU下等价抽象的TE接口。 目前MindSpeed提供的接口有:
- MindSpeedTELayernorm
- MindSpeedTELayerNormColumnParallelLinear
- MindSpeedTEGroupedLinear
使用场景
在模型的训练、推理及第三方框架需要使用相关API时,使用Megatron transformer_engine相关接口。
使用方法
脚本中设置--transformer-impl transformer_engine,即可使用TE分支。同megatron一致,该参数默认值将设置为transformer_engine, 如需回溯早期版本行为,请在脚本中额外设置--transformer-impl local.
注意
MindSpeedTELayerNormColumnParallelLinear支持与ascend-mc2同时使能,但不支持与ascend-coc同时使能。MindSpeedTEGroupedLinear在部分重构GMM的特性中,如1f1b-overlap等场景下,可能会失效。
使用效果
执行transformer-impl transformer_engine对应逻辑,进行模型的初始化及训练。