AIACC-AGSpeed(AIACC 2.0-AIACC Graph Speeding)是阿里云推出的一个基于PyTorch深度学习框架研发的计算优化编译器,用于优化PyTorch深度学习模型在阿里云GPU异构计算实例上的计算性能,相比原始的神龙AI加速引擎AIACC,AIACC-AGSpeed是AIACC 2.0产品的实现,是完全独立的产品形态,可以实现无感的计算优化功能。
AIACC-AGSpeed介绍
AIACC-AGSpeed简称为AGSpeed,AGSpeed作为阿里云自研的AI训练计算优化编译器,对PyTorch深度学习框架训练过程中的计算性能进行深度优化,具有其显著的计算性能优势。
AGSpeed的组件架构图如下所示:
组件架构 |
说明 |
编译器前端 |
AGSpeed编译器前端集成了由神龙AI训练性能和加速团队进行深度优化后的TorchDynamo,您无需修改任何模型代码,AGSpeed前端直接从PyTorch Eager API中抓取计算图,并将计算图交给AGSpeed Backend Autotuner处理,Autotuner会自动选择性能优化效果最佳的后端实现,为您提供了最佳的性能体验。 |
编译器后端 |
AGSpeed编译器后端集成了由神龙AI训练性能和加速团队为TorchScript IR研发的IR优化Pass,用于启用更多融合操作来提升性能。另外,AGSpeed后端还集成了由神龙AI训练性能和加速团队进行深度优化后的NvFuser,相比原生NvFuser具有更强的鲁棒性和优化性能。 |
受限场景说明
在AGSpeed编译器前端,如果使用Dynamic Tensor Shape会触发Re-capture、Re-optimize、Re-compile动作,可能会导致AGSpeed的计算优化性能回退,建议您尽可能使用agspeed.optimize()接口优化模型的静态部分。具体原因和建议如下所示:
说明:静态指的是输入Tensor的shape不变,模型在向前传播过程中计算得到的中间变量的shape也保持不变。
- 原因
- 在AGSpeed编译器前端,如果存在Dynamic Tensor Shape,可能会导致TorchDynamo重新抓取计算图并且重新执行convert frame,对优化性能产生较大影响。
- 在AGSpeed编译器后端,如果存在Dynamic Tensor Shape,会导致TorchScript重新specialize graph,并重新执行所有的优化Pass。另外,NvFuser后端也有可能会为新的Tensor Shape重新编译新的kernel,这些都会对性能产生较大影响。
- 建议
使用agspeed.optimize()接口优化模型的静态部分可以有效避免上述限制。例如,针对目标检测模型,仅使用agspeed.optimize()优化深度学习的backbone,避免封装检测头,因为检测头部分计算的中间变量存在shape多变的现象。
好啦!小弹的分享到此为止。我们更欢迎您分享您对阿里云产品的设想、对功能的建议或者各种吐槽,请扫描提交问卷并获得社区积分或精美礼品一份。https://survey.aliyun.com/apps/zhiliao/P4y44bm_8
【扫码填写上方调研问卷】
欢迎每位来到弹性计算的开发者们来反馈问题哦~