这就是华为速度:2.69秒完成BERT训练!新发CANN 5.0背后技术公开( 二 )


昇腾CANN 5.0带来哪些新功能?相比于昇腾CANN 3.0,“跨代”的5.0版本带来三大优势:

  • 性能:AI模型训练/推理性能大幅提升,用时更短;
  • 功能:推理引擎ATC Suite1.0首次发布,AI模型推理性能更高、功能更全面;
  • 便捷性:代码开发和调试进一步简化,包括支持混合编程等,使用门槛更低。
在性能上,无论是训练规模大小、场景类型,还是推理效率,均有较大提升。
其中,在MLPerf提供的大规模集群训练场景中测试,结果如下:
这就是华为速度:2.69秒完成BERT训练!新发CANN 5.0背后技术公开
文章插图
△数据来源:昇腾
从上图可见,原本需要6.25秒训练的BERT模型,在CANN 5.0的加持下缩短了一倍多,只需2.69秒就能完成训练;至于在3.0版本上需要28秒训练的ResNet,5.0版本则是“再进化”到了16秒。
至于常用的一些小模型训练场景(分类、检测、语义分割、NLP等),5.0版本的性能提升同样明显:
这就是华为速度:2.69秒完成BERT训练!新发CANN 5.0背后技术公开
文章插图
△数据来源:昇腾
训练以外,5.0版本的推理性能,在不同场景(分类、翻译、检测)下提升效果也非常不错:
这就是华为速度:2.69秒完成BERT训练!新发CANN 5.0背后技术公开
文章插图
△数据来源:昇腾
显然,无论是训练还是推理,CANN 5.0都实现了更高效的任务调度和更好的性能提升。
在功能上,CANN 5.0首次发布了昇腾推理引擎软件包ATC Suite1.0(ATC,Ascend Tensor Compiler,昇腾张量编译器),包括模型压缩、张量编译、智能优化和媒体预处理硬加速等能力。
模型压缩,包括量化、稀疏、张量分解等工具。像其中的AMCT模型压缩工具,就能对浮点数据进行压缩处理,来降低模型大小,加速推理速度;
智能优化,能为用户提供在线调优能力,包括图解析、子图/算子自动调优、模型编译优化等功能,进一步加速ATC的计算速度。
此外,推理引擎还包括Ascend CL(Ascend Computing Language,昇腾统一编程接口)全栈能力调用,即使是多路复杂的音视频处理等特殊场景也能轻松应对,以及ACE(Ascend Computing Execution,昇腾计算执行引擎)运行管理等功能;至于在线/离线切换的推理模式,也让部署场景更加灵活。
在便捷性上,5.0版本又进一步降低了开发者的使用门槛。
例如,无需开发者手工修改代码,5.0版本支持模型自动迁移。
又例如,进一步支持混合编程。相比于3.0的手动加载模型,5.0版本在APP中可以直接调用算子函数,自动完成编译加载并执行:
这就是华为速度:2.69秒完成BERT训练!新发CANN 5.0背后技术公开
文章插图
△3.0版本
这就是华为速度:2.69秒完成BERT训练!新发CANN 5.0背后技术公开
文章插图
△5.0版本
再例如,相比3.0,5.0版本现在还能自动生成算子测试代码,省去不少步骤:
这就是华为速度:2.69秒完成BERT训练!新发CANN 5.0背后技术公开
文章插图
可以说是对开发者新人也很友好了。
然而,相比于表面带来的更高性能、更全面的功能应用,异构计算架构的性能优化,并不如想象中“随便调调参”一般简单,而是需要大量的技术支撑。
性能优化有多难?将原本需要跑上几天的模型训练时间,缩减到几小时甚至几秒,背后绝不仅仅靠的是硬件的堆叠。
其中CANN 5.0的一个关键技术,就是集群训练(采用大量机器共同训练模型,以加速训练时间)。
据金颖介绍,相对于单机训练,增加训练模型的机器数量,往往并不一定能收获线性的效率提升。
在训练过程中,多台机器虽然整体上拥有更多算力,但这些算力是分散的,彼此在进行数据交互的过程中,实际上又降低了训练效率,这也一直是集群训练的一个瓶颈。