当前位置: 首页 > 专利查询>四川大学专利>正文

CANN计算架构下AI处理器算子溢出优化方法及系统技术方案

技术编号:35440428 阅读:17 留言:0更新日期:2022-11-03 11:50
本发明专利技术涉及一种CANN计算架构下AI处理器算子溢出优化方法及系统,属于AI处理器技术领域,找出导致溢出问题的算子,并将其设置为使用32位浮点数计算,从根本上避免了算子溢出。通过识别昇腾AI处理器的算子溢出表现形式,找到溢出算子并对其数据进行记录。提出了一种对NPU的算子溢出数据进行分析的方法,以一种保守的策略找到导致溢出问题的根源算子,以在最大程度地维持NPU计算性能的同时,逐渐解决算子溢出导致的精度问题。提出了一种调整算子优化策略的方法,首先应用华为CANN计算架构对NPU算子的内置优化策略,在此基础上,将仍存在溢出问题的算子添加到黑名单中,强制指定其使用32位浮点数进行运算,可以提高整个流程解决溢出问题的效率。溢出问题的效率。溢出问题的效率。

【技术实现步骤摘要】
CANN计算架构下AI处理器算子溢出优化方法及系统


[0001]本专利技术属于AI处理器
,具体涉及一种CANN计算架构下AI处理器算子溢出优化方法及系统。

技术介绍

[0002]CANN(Compute Architecture for Neural Networks)是华为公司针对AI场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。其中,模型开发是CANN提供的重要基础功能之一。CANN提供了在昇腾AI处理器(NPU)上使用TensorFlow网络框架进行深度神经网络模型训练的功能。
[0003]在NPU上进行深度神经网络模型训练的过程中,算子是NPU支持神经网络计算的基本单元,包括卷积操作、池化操作等等,用于支撑神经网络训练和推理加速。由于硬件本身条件的限制,数据通常由16位浮点数或32位浮点数存储。因此,每一个算子都需要事先定义运算的数据类型,比如16位浮点数或32位浮点数。其中,使用16位浮点数进行运算可以加快处理器的计算速度,但是当存储的数据过大或过小而无法用16位浮点数存储时,不可避免地会出现数据溢出的问题,这将会使模型训练的精度变差,甚至可能完全破坏模型的训练过程。而使用32位浮点数进行运算时,虽然能保证模型训练的精度,但是又不可避免地增加了NPU的计算开销,降低了计算性能。
[0004]为了在保证NPU计算性能的同时尽量避免算子数据溢出的问题,在华为CANN计算架构下已经提出了两个解决方案:1、使用混合精度2、使能损失缩放。/>[0005]其中使用混合精度指的是通过混合使用16位浮点数和32位浮点数数据类型来加速深度神经网络训练的过程,并减少内存使用和存取,从而可以训练更大的神经网络,同时又能基本保持使用32位浮点数进行训练所能达到的网络精度。
[0006]使能损失缩放指的是在深度神经网络模型前向计算过程中,将计算得到的损失乘上损失缩放系数,起到在反向梯度计算过程中达到放大梯度的作用,从而最大程度规避浮点计算中较小梯度值无法用16位浮点数表达而出现的溢出问题,再在参数梯度聚合之后以及优化器更新参数之前,将聚合后的参数梯度值除以损失缩放系数还原。
[0007]虽然上述两个方案都有助于在保证NPU计算性能的同时尽量避免算子数据溢出的问题,但他们都没有从本质上解决由于数据存储类型导致的数据溢出问题,数据溢出问题依然存在。其中,使用混合精度需要指定每个算子使用的数据类型,但是在实践中,用户往往不能提前知道哪些算子使用16位浮点数存储会导致溢出,不论是使用内置的优化策略还是用户手动指定,都有可能把会导致数据溢出的算子指定为使用16位浮点数进行运算,这就会导致模型训练的精度问题。而使能损失缩放可以最大程度规避浮点计算中较小梯度值无法用16位浮点数表示的溢出问题,但是无法解决较大梯度值无法用16位浮点数表示的溢出问题。因此,现阶段需设计一种方法,从根本上解决CANN计算架构下昇腾AI处理器算子数
据溢出问题。

技术实现思路

[0008]本专利技术目的在于提供一种CANN计算架构下AI处理器算子溢出优化方法及系统,用于解决上述现有技术中存在的技术问题,即,从根本上解决CANN计算架构下昇腾AI处理器算子数据溢出问题。
[0009]为实现上述目的,本专利技术的技术方案是:CANN计算架构下AI处理器算子溢出优化方法,包括以下步骤:S1:通过溢出检测来找出存在溢出问题的算子;S2:对步骤S1中找出的算子进行溢出数据分析,判断该算子是否为数据异常的根源算子;S3:在步骤S2的基础上修改算子黑白灰名单,从而调整算子优化策略;其中,步骤S1

S3迭代进行,直至昇腾AI处理器算子数据溢出完全解决。
[0010]进一步的,步骤S1具体如下:在NPU中将数据存储为16位浮点数时,数据溢出包括两种情况,即输入或输出值中存在65504,这是由于65504是16位浮点数所能表示的最大的数,出现这种情况意味着数据过大无法用16位浮点数表示,出现上溢出;输入或输出值中存在Nan,这是由于零除以零、无穷大除以无穷大、无穷大减无穷大、无穷大乘零无法计算的情况引起,其本质是因为数据存在溢出情况导致计算的过程中出现零和无穷大;通过在模型训练的过程中检测每一个算子的输入或输入数据中是否存在65504或者Nan,即可判断该算子是否存在数据溢出的情况;如果存在溢出,则记录下存在溢出的算子数据并将输出传递到下一个算子;如果不存在溢出,则不记录算子数据并将输出传递到下一个算子。
[0011]进一步的,步骤S2具体如下:首先查看溢出数据的输入数据值,如果输入数据存在65504或Nan,说明当前算子的溢出数据存在由前向算子传递而来的可能,此时不能确定当前算子是否导致数据溢出,需要转而分析前向算子;如果输入数据不存在65504或Nan,则查看输出数据值进行进一步分析;如果此时输出数据值存在65504或Nan,说明当前算子导致数据溢出,对该算子进行记录,反之则不记录。
[0012]进一步的,步骤S3具体如下:在华为CANN计算架构下使用NPU进行深度神经网络训练时,算子的优化策略通过黑名单、白名单、灰名单来配置;其中,黑名单指的是不允许将当前32位浮点数类型的算子,降低精度到16位浮点数;白名单指的是允许将当前32位浮点数类型的算子,降低精度到16位浮点数;灰名单指的是当前算子的混合精度处理机制和前一个算子保持一致,即如果前一个算子支持降精度处理,当前算子也支持降精度;如果前一个算子不允许降精度,当前算子也不支持降精度;根据算子溢出分析结果,通过修改算子黑名单调整算子优化策略,将导致溢出问
题的算子设置为使用32位浮点数进行运算,从而在根本上解决CANN计算架构下AI处理器算子数据溢出的问题。
[0013]进一步的,CANN计算架构下AI处理器具体为华为CANN计算架构下昇腾AI处理器。
[0014]CANN计算架构下AI处理器算子溢出优化系统,用于实现如上述的CANN计算架构下AI处理器算子溢出优化方法。
[0015]与现有技术相比,本专利技术所具有的有益效果为:本方案其中一个有益效果在于,提出一种在华为CANN计算架构下解决NPU算子数据溢出问题的方法,找出导致溢出问题的算子,并将其设置为使用32位浮点数计算,从根本上避免了算子溢出。提出一种在华为CANN计算架构下对NPU的算子进行溢出检测的方法,通过识别昇腾AI处理器的算子溢出表现形式,找到溢出算子并对其数据进行记录。提出了一种对NPU的算子溢出数据进行分析的方法,以一种保守的策略找到导致溢出问题的根源算子,以在最大程度地维持NPU计算性能的同时,逐渐解决算子溢出导致的精度问题。提出了一种调整算子优化策略的方法,首先应用华为CANN计算架构对NPU算子的内置优化策略,在此基础上,将仍存在溢出问题的算子添加到黑名单中,强制指定其使用32位浮点数进行运算,可以提高整个流程解决溢出问题的效率。
附图说明
[0016]图1为本申请实施例的方法总体流程示本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.CANN计算架构下AI处理器算子溢出优化方法,其特征在于,包括以下步骤:S1:通过溢出检测来找出存在溢出问题的算子;S2:对步骤S1中找出的算子进行溢出数据分析,判断该算子是否为数据异常的根源算子;S3:在步骤S2的基础上修改算子黑白灰名单,从而调整算子优化策略;其中,步骤S1

S3迭代进行,直至昇腾AI处理器算子数据溢出完全解决。2.如权利要求1所述的CANN计算架构下AI处理器算子溢出优化方法,其特征在于,步骤S1具体如下:在NPU中将数据存储为16位浮点数时,数据溢出包括两种情况,即输入或输出值中存在65504,这是由于65504是16位浮点数所能表示的最大的数,出现这种情况意味着数据过大无法用16位浮点数表示,出现上溢出;输入或输出值中存在Nan,这是由于零除以零、无穷大除以无穷大、无穷大减无穷大、无穷大乘零无法计算的情况引起,其本质是因为数据存在溢出情况导致计算的过程中出现零和无穷大;通过在模型训练的过程中检测每一个算子的输入或输入数据中是否存在65504或者Nan,即可判断该算子是否存在数据溢出的情况;如果存在溢出,则记录下存在溢出的算子数据并将输出传递到下一个算子;如果不存在溢出,则不记录算子数据并将输出传递到下一个算子。3.如权利要求2所述的CANN计算架构下AI处理器算子溢出优化方法,其特征在于,步骤S2具体如下:首先查看溢出数据的输入数据值,如果输入数据存在65504或Nan,说明当前算子的溢出数据存在由前向算子传...

【专利技术属性】
技术研发人员:孙亚楠欧玉威
申请(专利权)人:四川大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1