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
组件架构 说明
编译器前端 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多变的现象。

联系我们

如果您有AI加速AIACC相关的问题或需求,欢迎使用钉钉搜索群号33617640加入阿里云神龙AI加速AIACC外部支持群。(钉钉通讯客户端下载地址