如何基于CANN进行训练优化

举报
佳菲猫 发表于 2022/05/06 21:53:19 2022/05/06
【摘要】 随着深度学习领域带来的技术性突破,人工智能(artificial intelligence,AI)无论在科研还是在产业应用方面都取得了快速的发展。人工智能算法一般以深度学习算法为主,需要大量的矩阵乘加运算,对大规模并行计算能力有很高的要求,CPU和传统计算架构无法满足对于并行计算能力的需求,需要特殊定制的芯片,也就孕育了AI芯片。

随着深度学习领域带来的技术性突破,人工智能(artificial intelligenceAI)无论在科研还是在产业应用方面都取得了快速的发展。人工智能算法一般以深度学习算法为主,需要大量的矩阵乘加运算,对大规模并行计算能力有很高的要求,CPU和传统计算架构无法满足对于并行计算能力的需求,需要特殊定制的芯片,也就孕育了AI芯片。

AI芯片当前的核心是利用乘加计算(multiplier and accumulationMAC)阵列来实现卷积神经网络中最主要的卷积运算的加速。MAC阵列的大量运算,会造成功耗的增加,如何达到优异的性能功耗比是AI芯片研发的一个重要目标。

深度学习算法中参与计算的数据和模型参数很多,数据量庞大,导致内存带宽成为了整个系统的一个瓶颈“,Memory Wall”也是需要优化和突破的主要问题。

除了芯片本身硬件的设计以外,软件对于AI芯片性能的发挥也有着十分重要的作用,编译器和工具链软件的优化能力、易用性现在也得到越来越多的重视。

CANN就是解决上述人工智能算法关键问题而存在的,集框架、调度、编译器、算子等模块于一身块,充分释放Ascend系列AI芯片澎湃算力;

人工智能算法有数据集标注、模型搭建、模型训练、模型推理几个重要过程,模型训练;而模型训练是最为关键的一部,其定义是“对大量的数据在平台上进行学习,并形成具备特定功能的神经网络模型”,可以这么理解,通过海量数据集来解一个方程y=wx参数为Nw,求解是一个不断拟合过程,不是我们常用的直接求解;

模型训练的顶层是算法设计,诸如上期所说的Resnet50网络,大家习惯使用TensorFlowPytorch框架,当然你也可以使用MIndspore(晟思)框架。在Ascend硬件平台下,框架层之下就是CANN软件栈了,通过adapter层适配,将模型训练的拟合计算过程运行在AI芯片上。想了解具体适配迁移过程的,请参考我们昇腾社区相关内容;

接下来,我们讲讲CANN软件栈上如何进行训练性能分析和优化。上一期我们了解了进行HostDevice并行对性能的巨大收益,也是性能提升的关键所在;那么如何基于CANN进行各种并行优化呢?

首先你需要输出一份这样的profiling文件,来识别你训练网络的性能瓶颈;


从这个网络的性能打点图上看,会发现:

1、左侧开始的时候又一段空白什么也没有执行计算,看下前后算子逻辑你就会发现是数据预处理更不上device的时间了,这个时候我们应该采取的措施就是优化Host侧的数据预处理,采用训练循环下成方式,使用pretch方式把Host部分过程转移到device-CPU上执行,来平衡两者并行度;

2、在最后有一段AR_1的梯度交互是单独执行的,这里就是HCCL未并行的部分,那优化措施自然就是采用自动梯度切分工具,搜索到与计算并行度更高的切分点;

3、当训练模型涉及CPU算子执行时,CANN提供了device侧的AICPU引擎,让数据留在device侧就能实现复杂逻辑的cpu算子计算,同时呢还能和张量核心并行起来;例如模型有dropout操作时,CANN提供了npu_ops.dropout()接口;

4、随着CANN包含算子个数不断累积,已经支持超过2000个算子,而且提供了丰富的融合算子原型,使得卷积计算和向量计算并行流水更丰富,Ascend 系列芯片中的CUBEVectorCore利用效率大大提升;融合算子的被使能,有两种途径,一个是通过npu_opsAPI,另外就是算子融合技术,在Ascend910平台下,我们更多是使用CANN版本自带的算子融合技术;

5、除了完成训练任务在执行器上的最大限度并行,CANN提供了一套完备的混合精度模式,保证整网精度的同时,通过降低数据量来提升训练性能;

6、针对不同类型的训练模型,CANN十八般武艺,面面俱到;如上一期说的resnet50,典型的CANN网络,对卷积正则化层的性能要求非常高,我们的应对策略自然是提升CUBE利用率,保证Ascend910-256T算子的最大发挥。

上面说到的训练性能分析和优化点,对于各种类型的网络都是有普适性的;而针对具体的网络结构也会有不同的优化措施,CANN也提供不同的性能优化模块;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。