CN117827523B - 一种模型的异常处理方法、装置、电子设备及存储介质 - Google Patents
一种模型的异常处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117827523B CN117827523B CN202410250990.8A CN202410250990A CN117827523B CN 117827523 B CN117827523 B CN 117827523B CN 202410250990 A CN202410250990 A CN 202410250990A CN 117827523 B CN117827523 B CN 117827523B
- Authority
- CN
- China
- Prior art keywords
- operator
- target
- model
- tensor
- target operator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 59
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000005856 abnormality Effects 0.000 claims description 68
- 238000012795 verification Methods 0.000 claims description 50
- 230000002159 abnormal effect Effects 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 27
- 238000012549 training Methods 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 15
- 238000013024 troubleshooting Methods 0.000 claims description 2
- 238000013473 artificial intelligence Methods 0.000 abstract description 6
- 238000003672 processing method Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 12
- 230000004927 fusion Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000002474 experimental method Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请公开一种模型的异常处理方法、装置、电子设备及存储介质,属于人工智能技术领域,该方法中,当模型在训练或推理的过程中出现异常时,从模型的多个算子中查找异常对应的目标算子,基于获取的目标算子的输入描述信息,对目标算子进行多次正确性校验,基于多次正确性校验中校验不通过的目标校验对应的输出张量tensor,确定目标算子校验不通过的原因,进而基于目标算子校验不通过的原因,处理模型出现的异常,提供了一种能够自动处理模型异常的方案,异常处理效率也比较高。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种模型的异常处理方法、装置、电子设备及存储介质。
背景技术
在人工智能领域,模型的功能越来越强大,模型包含的算子也越来越多,这导致当模型在训练或推理的过程中出现异常时,解决模型的异常也越来越难。相关技术中,是由开发人员基于自身经验手动尝试解决模型的异常,异常处理效率比较低。
发明内容
本申请实施例提供一种模型的异常处理方法、装置、电子设备及存储介质,用以解决相关技术中开发人员手动处理模型异常的方式存在的异常处理效率比较低的问题。
第一方面,本申请实施例提供一种模型的异常处理方法,包括:
当模型在训练或推理的过程中出现异常时,从所述模型的多个算子中查找所述异常对应的目标算子;
基于获取的所述目标算子的输入描述信息,对所述目标算子进行多次正确性校验;
基于所述多次正确性校验中校验不通过的目标校验对应的输出张量tensor,确定所述目标算子校验不通过的原因;
基于所述目标算子校验不通过的原因,处理所述异常。
在一些实施例中,从所述模型的多个算子中查找与所述异常对应的目标算子,包括:
转存所述模型在出现所述异常前预设步数内的tensor信息,所述tensor信息至少包括所述模型中多个算子的输入输出tensor;
基于所述异常,扫描所述多个算子的输入输出tensor;
将计算次序最靠前的疑似算子确定为所述目标算子,所述疑似算子是指输入输出tensor与所述异常匹配的算子。
在一些实施例中,在转存所述模型在出现所述异常前预设步数内的tensor信息之后,还包括:
根据所述tensor信息,判断所述模型是否存在数值溢出情况;
若确定不存在数值溢出问题,或者,存在的数值溢出情况未包含在预设的数值溢出情况中,则基于所述异常,扫描所述多个算子的输入输出tensor。
在一些实施例中,若存在的数值溢出情况包含在预设的数值溢出情况中,则还包括:
提高所述模型的输入数据的精度;
若将提高精度后的输入数据输入所述模型后所述模型出现所述异常,则执行从所述模型的多个算子中查找所述异常对应的目标算子的步骤;
若将提高精度后的输入数据输入所述模型后所述模型正常,则确定所述目标算子校验不通过的原因是数据精度不足。
在一些实施例中,当模型在训练或推理的过程中出现异常时,还包括:
若确定所述模型运行在多个芯片上,则将所述模型转换成在单个芯片上运行的简化模型;
若在单个芯片上运行所述简化模型时出现所述异常,则执行从所述模型的多个算子中查找所述异常对应的目标算子的步骤;
若在单个芯片上运行所述简化模型时未出现所述异常,则确定出现所述异常的原因是芯片间的通信问题。
在一些实施例中,针对每次正确性校验,根据以下步骤确定所述目标算子是否校验通过:
获取部署在待测试芯片上的所述目标算子针对本次正确性校验时输入tensor的第一输出tensor,以及部署在参考芯片上的所述目标算子针对所述输入tensor的第二输出tensor;
若所述第一输出tensor与所述第二输出tensor的差的二范数,与所述第二输出tensor的二范数的比值不小于预设值,则确定所述目标算子本次校验不通过。
在一些实施例中,基于所述目标校验对应的输出tensor,确定所述目标算子校验不通过的原因,包括:
基于所述目标校验对应的输出tensor,确定所述目标算子是否符合算子实现错误的表现特征;
若符合,则确定所述目标算子校验不通过的原因是算子实现错误。
在一些实施例中,当所述目标算子是内核复杂度高于设定值的融合算子时,所述目标校验对应的输出tensor是所述目标校验中目标单算子的输出tensor,所述目标单算子是指融合算子拆分得到的至少两个单算子中计算次序最靠前、且校验不通过的单算子;
当所述目标算子不是内核复杂度高于所述设定值的融合算子时,所述目标校验对应的输出tensor是所述目标校验中所述目标算子的输出tensor。
在一些实施例中,在基于所述目标校验对应的输出tensor,确定所述目标算子校验不通过的原因之前,还包括:
对所述目标算子的源码进行完整性检查;
确定完整性检查通过。
在一些实施例中,基于所述目标算子校验不通过的原因,处理所述异常,包括:
若所述目标算子校验不通过的原因是数据精度不足,则通过提高所述模型的输入数据的精度的方式处理所述异常;
若所述目标算子校验不通过的原因是芯片间的通信问题,则通过排查芯片间通信的方式处理所述异常;
若所述目标算子校验不通过的原因是算子实现错误,则通过排查算子实现的方式处理所述异常。
在一些实施例中,通过排查算子实现的方式处理所述异常,包括:
排查所述目标算子的主机代码和内核代码是否存在逻辑错误;
若不存在,则确定实现所述目标算子所需的多个对象,基于所述多个对象的排查规则,对所述多个对象进行错误排查。
第二方面,本申请实施例提供一种模型的异常处理装置,包括:
算子查找模块,用于当模型在训练或推理的过程中出现异常时,从所述模型的多个算子中查找所述异常对应的目标算子;
正确性校验模块,用于基于获取的所述目标算子的输入描述信息,对所述目标算子进行多次正确性校验;
原因确定模块,用于基于所述多次正确性校验中校验不通过的目标校验对应的输出张量tensor,确定所述目标算子校验不通过的原因;
异常处理模块,用于基于所述目标算子校验不通过的原因,处理所述异常。
在一些实施例中,算子查找模块具体用于:
转存所述模型在出现所述异常前预设步数内的tensor信息,所述tensor信息至少包括所述模型中多个算子的输入输出tensor;
基于所述异常,扫描所述多个算子的输入输出tensor;
将计算次序最靠前的疑似算子确定为所述目标算子,所述疑似算子是指输入输出tensor与所述异常匹配的算子。
在一些实施例中,算子查找模块,还用于:
在转存所述模型在出现所述异常前预设步数内的tensor信息之后,根据所述tensor信息,判断所述模型是否存在数值溢出情况;
若确定不存在数值溢出问题,或者,存在的数值溢出情况未包含在预设的数值溢出情况中,则基于所述异常,扫描所述多个算子的输入输出tensor。
在一些实施例中,原因确定模块,还用于:
若存在的数值溢出情况包含在预设的数值溢出情况中,则提高所述模型的输入数据的精度;
若将提高精度后的输入数据输入所述模型后所述模型出现所述异常,则执行从所述模型的多个算子中查找所述异常对应的目标算子的步骤;
若将提高精度后的输入数据输入所述模型后所述模型正常,则确定所述目标算子校验不通过的原因是数据精度不足。
在一些实施例中,还包括:
转换模块,用于当模型在训练或推理的过程中出现异常时,若确定所述模型运行在多个芯片上,则将所述模型转换成在单个芯片上运行的简化模型;
原因确定模块,还用于若在单个芯片上运行所述简化模型时出现所述异常,则执行从所述模型的多个算子中查找所述异常对应的目标算子的步骤;
若在单个芯片上运行所述简化模型时未出现所述异常,则确定出现所述异常的原因是芯片间的通信问题。
在一些实施例中,正确性校验模块具体用于针对每次正确性校验,根据以下步骤确定所述目标算子是否校验通过:
获取部署在待测试芯片上的所述目标算子针对本次正确性校验时输入tensor的第一输出tensor,以及部署在参考芯片上的所述目标算子针对所述输入tensor的第二输出tensor;
若所述第一输出tensor与所述第二输出tensor的差的二范数,与所述第二输出tensor的二范数的比值不小于预设值,则确定所述目标算子本次校验不通过。
在一些实施例中,原因确定模块具体用于:
基于所述目标校验对应的输出tensor,确定所述目标算子是否符合算子实现错误的表现特征;
若符合,则确定所述目标算子校验不通过的原因是算子实现错误。
在一些实施例中,当所述目标算子是内核复杂度高于设定值的融合算子时,所述目标校验对应的输出tensor是所述目标校验中目标单算子的输出tensor,所述目标单算子是指融合算子拆分得到的至少两个单算子中计算次序最靠前、且校验不通过的单算子;
当所述目标算子不是内核复杂度高于所述设定值的融合算子时,所述目标校验对应的输出tensor是所述目标校验中所述目标算子的输出tensor。
在一些实施例中,原因确定模块还用于:
在基于所述目标校验对应的输出tensor,确定所述目标算子校验不通过的原因之前,对所述目标算子的源码进行完整性检查;
确定完整性检查通过。
在一些实施例中,异常处理模块具体用于:
若所述目标算子校验不通过的原因是数据精度不足,则通过提高所述模型的输入数据的精度的方式处理所述异常;
若所述目标算子校验不通过的原因是芯片间的通信问题,则通过排查芯片间通信的方式处理所述异常;
若所述目标算子校验不通过的原因是算子实现错误,则通过排查算子实现的方式处理所述异常。
在一些实施例中,异常处理模块具体用于:
排查所述目标算子的主机代码和内核代码是否存在逻辑错误;
若不存在,则确定实现所述目标算子所需的多个对象,基于所述多个对象的排查规则,对所述多个对象进行错误排查。
第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中:
存储器存储有可被至少一个处理器执行的计算机程序,该计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述任一模型的异常处理方法。
第四方面,本申请实施例提供一种存储介质,当所述存储介质中的计算机程序由电子设备的处理器执行时,所述电子设备能够执行上述任一模型的异常处理方法。
本申请实施例中,当模型在训练或推理的过程中出现异常时,从模型的多个算子中查找异常对应的目标算子,基于获取的目标算子的输入描述信息,对目标算子进行多次正确性校验,基于多次正确性校验中校验不通过的目标校验对应的输出tensor,确定目标算子校验不通过的原因,进而基于目标算子校验不通过的原因,处理模型出现的异常,从而提供了一种能够自动处理模型异常的方案,异常处理效率也比较高。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种模型的异常处理方法的流程图;
图2为本申请实施例提供的一种正确性校验的示意图;
图3为本申请实施例提供的一种从模型中查找异常对应的目标算子的流程图;
图4为本申请实施例提供的一种对目标算子多次进行正确性校验的流程图;
图5为本申请实施例提供的一种确定目标算子校验不通过的原因的流程图;
图6为本申请实施例提供的一种单算子mma的输出tensor中前17个相差最大的异常数据的示意图;
图7为本申请实施例提供的一种模型的异常处理装置的结构示意图;
图8为本申请实施例提供的一种用于实现模型的异常处理方法的电子设备的硬件结构示意图。
具体实施方式
为了解决相关技术中开发人员手动处理模型异常的方式存在的异常处理效率比较低的问题,本申请实施例提供了一种模型的异常处理方法、装置、电子设备及存储介质。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
为了便于理解本申请,本申请涉及的技术术语中:
模型,一般指人工智能(Artificial Intelligence,AI)模型,可以是大模型也可以不是大模型,可包括多个算子,且可以部署在单个芯片如通用图形处理器(General-Purpose Graphics Processing Unit,GPGPU)上(对应单机驱动场景),也可以部署在多个芯片上(对应多机驱动场景)。并且,模型的种类比较多,比如模型可以是图像处理模型、文本处理模型、音频处理模型、对象推荐模型等。
张量(Tensor),深度学习模型中的一个基础概念,一般是针对图形处理器(Graphics Processing Unit,GPU)设计的,可以运行在GPU上来加快计算效率。在AI模型中,tensor可以看做一个多维数组(Multidimensional Array)。
算子的正确性校验,以在GPGPU上实现算子正确性校验为例,一般是将算子同时部署在GPGPU和中央处理器(Central Processing Unit,CPU)上,GPGPU上算子的输出结果和CPU上算子的输出结果进行精度比较,从而得到算子正确性校验通过与否的结论,其中,算子正确性校验不通过时也可以叫做出现正确性问题。实际上,算子实现结果的精度与AI芯片厂商的架构、及算子实现过程中数据节点的精度支持策略有关系,受这两方面影响,算子正确性校验不通过时外在表现出正确性问题,实则可能是算子精度问题也可能是算子实现问题。当模型中的算子出现上述情况时,会影响模型训练或推理,从而导致模型出现异常。但当复杂类算子尤其是融合算子出现正确性问题时,到底是精度问题还是实现错误非常难以界定。
在人工智能领域,模型的功能越来越强大,模型包含的算子也越来越多,这导致当模型在训练或推理的过程中出现异常时,处理模型的异常也越来越难。相关技术中,是由开发人员基于自身经验手动尝试处理模型的异常,异常的处理效率比较低。
为此,本申请实施例提供一种能够自动处理异常的方案,参见图1,图1为本申请实施例提供的一种模型的异常处理方法的流程图,该方法包括以下步骤。
在步骤101中,当模型在训练或推理的过程中出现异常时,从模型的多个算子中查找异常对应的目标算子。
其中,模型在训练过程中出现的异常如损失(loss)曲线异常、训练中断、loss值为无穷大(INF)、不是一个数字(Not-A-Number,NAN)、数据跳变等,模型在推理过程中出现的异常如推理不出结果、推理结果明显出错等。
为了从模型的多个算子中查找到与异常对应的目标算子,当模型在训练或推理的过程中出现异常时,可先转存模型在出现异常前预设步数如2个步数内的tensor信息,tensor信息可包括模型中多个算子的输入输出tensor(即输入tensor和输出tensor)、中间tensor、输入数据范围等。其中,在训练过程中,预设步数可以表现为预设迭代次数(或者叫模型处理的样本个数);在推理过程中,预设步数可以表现为预设推理次数(或者叫模型处理的数据条数)。
然后,可基于异常,扫描这多个算子的输入输出tensor,进而将计算次序最靠前的疑似算子确定为目标算子,其中,疑似算子是指输入输出tensor与异常匹配的算子。
以异常是数据跳变为例,若某个算子的多个输入输出tensor中有至少一个输入输出tensor中的数据存在跳变,则可认为这个算子是疑似算子。一般地,模型中的算子之间是有先后计算关系的,前面的算子出现问题后面的算子一般也会出现问题,而计算次序最靠前的算子才是真正引起异常的算子,因此,可将最靠前的疑似算子确定为目标算子。
考虑到模型有时会存在数值溢出情况,因此,在一些实施例中,当转存模型在出现异常前预设步数内的tensor信息之后,还可以根据tensor信息,判断模型是否存在数值溢出情况,当不存在数值溢出问题,或者,存在数值溢出情况但该数值溢出情况未包含在预设的数值溢出情况中时,再基于异常扫描多个算子的输入输出tensor。其中,预设的数值溢出情况可由算子开发人员在开发算子时指定,记录的就是符合开发人员预期的数值溢出情况。
这样,借助于数值溢出情况可以有条件地扫描多个算子的输入输出tensor,而不必每次都扫描多个算子的输入输出tensor,利于提升异常处理速度、也利于节省扫描所需的软硬件资源。
并且,当存在的数值溢出情况且该数值溢出情况包含在预设的数值溢出情况中时,还可以提高模型的输入数据的精度,并将提高精度后的输入数据输入模型,若模型仍然出现上述异常,则可从模型的多个算子中查找最近这次异常对应的目标算子,并执行后续步骤;若模型恢复正常,则可确定目标算子校验不通过的原因是数据精度不足,从而提供了一种发现由于数据精度不足而引起目标算子出现正确性问题的方案。
在步骤102中,基于获取的目标算子的输入描述信息,对目标算子进行多次正确性校验。
一般地,目标算子的输入描述信息随目标算子的应用场景不同而不同,目标算子的输入描述信息如算子的输入tensor的大小、输入tensor是否进行转置、输入tensor的数据范围等。基于目标算子的输入描述信息,可生成多组输入tensor,利用多组输入tensor对目标算子进行多次正确性校验,以期望目标算子能够复现目标问题,目标问题是指在模型出现异常时算子所出现的问题。
针对每次正确性校验,可根据以下步骤确定目标算子是否校验通过:
获取部署在待测试芯片上的目标算子针对本次正确性校验时输入tensor的第一输出tensor,以及部署在参考芯片上的目标算子针对所述输入tensor的第二输出tensor,若第一输出tensor与第二输出tensor的差的二范数,与第二输出tensor的二范数的比值不小于预设值,则确定目标算子本次校验不通过,反之,则可确定目标算子本次校验通过。
以待测试芯片是GPGPU、参考芯片是CPU为例,参见图2,图2为本申请实施例提供的一种正确性验证的示意图,其中,GPGPU 核(kernel)和CPU实现(Implement)上均部署有目标算子,输入 Input表示GPGPU kernel和CPU Implement的输入tensor,输出Output1表示GPGPU kernel上目标算子的输出tensor,Output2表示CPU Implement上目标算子的输出tensor,通过比较Output1和Output2的精度可确定目标算子本次校验是否通过。
比如,可采用如下二范数精度门限标准对Output1和Output2进行精度比较:
误差err=| |Output1 - Output2| | / | | Output2| |,
当err小于预设值时,确定目标算子本次校验不通过,即出现正确性问题;当err不小于预设值时,确定目标算子本次校验通过。
在对真实数据加噪声的反向测试中,发现上述通过二范数判断正确性校验是否通过的方式,与相关技术的判断方式(对待测试芯片上算子的输出tensor和参考芯片上算子的输出tensor中相同位置上的元素逐个判断是否小于门限:atol + rtol*|ref|,有一个不小于则判定校验不通过,atol为预设的绝对误差、rtol为预设的相对误差,ref为参考芯片上算子的输出tensor在相同位置上元素的取值)可达到同等判断准确率;在数据截断对二阶范数的影响实验中,发现上述通过二范数判断正确性校验是否通过的方式,可以避免硬件截断导致的误报(这是相关技术的判断方式无法做到的),还可以克服相关技术中由于逐个元素判断的方式过于严苛而导致的误报;在输入随机数据时的用例概率性失败实验中,发现上述通过二范数判断正确性校验的方式不会出现随机误报,而相关技术的判断方式会出现随机误报。
由此可见,二阶范数可以更加精确和稳定地表达正确性校验时的精度门限。并且,基于大量的精度实验提炼出的数据表现更好的二范数精度门限标准,可大幅提升精度界定效率,减小端到端以及单算子的精度误报问题发生。
在步骤103中,基于多次正确性校验中校验不通过的目标校验对应的输出tensor,确定目标算子校验不通过的原因。
当目标算子不是内核复杂度高于设定值的融合算子时,目标校验对应的输出tensor可以是目标校验中目标算子的输出tensor。即,当目标算子不复杂时,可以直接基于目标校验时目标算子的输出tensor,确定目标算子校验不通过的原因。
而当目标算子是内核复杂度高于设定值的融合算子时,目标校验对应的输出tensor可以是目标校验中目标单算子的输出tensor,目标单算子是指融合算子拆分得到的至少两个单算子中计算次序最靠前、且校验不通过的单算子。即,当目标算子比较复杂时,可以先将目标算子拆分成至少两个单算子,再从这至少两个单算子中查找计算次序最靠前、且校验不通过的目标单算子,进而基于目标校验时目标单算子的输出tensor,确定目标算子校验不通过的原因。这样,可降低目标算子校验不通过原因的查找难度,提升原因查找成功率。
具体实施时,在确定目标算子校验不通过的原因时,可基于目标校验对应的输出tensor,确定目标算子是否符合算子实现错误的表现特征,若符合,则可确定目标算子校验不通过的原因是算子实现错误。
在步骤104中,基于目标算子校验不通过的原因,处理模型出现的异常。
比如,若目标算子校验不通过的原因是数据精度不足,则可通过提高模型的输入数据的精度的方式解决异常;若目标算子校验不通过的原因是芯片间的通信问题,则可通过排查芯片间通信的方式解决异常。
而若目标算子校验不通过的原因是算子实现错误,则可通过排查算子实现的方式处理解决异常。
具体的,可先排查目标算子的主机代码和内核代码是否存在逻辑错误,比如,排查目标算子的主机代码的输入参数是否异常、排查目标算子的内核代码是否明显的存在逻辑错误等。在确定目标算子的主机代码和内核代码不存在相应错误后,可确定实现目标算子所需的多个对象,基于多个对象的排查规则,对多个对象进行错误排查。假设实现目标算子所需的多个对象包括软件栈、编译器和硬件,则可基于目标算子对应的软件栈排查规则,对软件栈进行错误排查,基于目标算子对应的编译器排查规则,对编译器进行错误排查,基于目标算子对应的硬件排查规则,对硬件进行硬件限制或硬件错误排查。另外,如果目标算子的内核代码很大(即大于设定值),还可能出现裁剪问题,此时可通过c模型(cmodel)、诊断(Diag)、除错汇流排(debugbus)等方式进行错误排查。
本申请实施例的方案主要包括:当模型在训练或推理的过程中出现异常时,从模型包含的多个算子中查找异常对应的目标算子,对目标算子进行多次正确性校验,以期望目标算子能复现模型在出现上述异常时其所出现的问题,以及基于校验不通过的目标校验对应的输出tensor,确定目标算子校验不通过的原因,并基于目标算子校验不通过的原因,处理模型出现的异常。
下面对这四个步骤进行详细介绍。
一、当模型在训练或推理的过程中出现异常时,从模型包含的多个算子中查找异常对应的目标算子。
参见图3,图3为本申请实施例提供的一种从模型中查找异常对应的目标算子的流程图,包括以下步骤。
在步骤301中,当模型在训练或推理的过程中出现异常时,判断模型是否为多机场景,若是,则进入302,若否,则进入305。
其中,多机场景是指模型运行在多个芯片如GPGPU上。
在步骤302中,通过简化模型结构的方式将模型转换成单机运行的简化模型。
即,将模型的多机场景转换为等效的单机场景。
在步骤303中,判断在单机上运行简化模型时异常是否复现,若否,则进入304,若是,进入步骤305。
在步骤304中,确定是多机间的通信问题。
在步骤305中,转存模型在出现异常前预设步数内的tensor信息,tensor信息至少包括模型中多个算子的输入输出tensor。
在步骤306中,根据tensor信息,判断模型是否存在数值溢出情况,若是,则进入步骤307,若否,则进入步骤311。
比如,将tensor信息与数值溢出特征进行匹配,以确定模型是否存在数值溢出问题。
在步骤307中,根据数值溢出情况关联的算子的输入输出tensor,判断数值溢出情况是否包含在预设的数值溢出情况中,若是,则进入步骤308,若否,进入步骤311。
实际应用中,在设计算子时有些情况的溢出是可以预期的,比如,超出算子的计算范围预期就会出现数值溢出问题,再比如,算子会对输入tensor进行截断处理后预期也会出现数值溢出问题。这些预期的数值溢出可以通过提高模型能处理的输入数据的数据精度来进行验证。
在步骤308中,提高模型的输入数据的精度。
其中,提高后模型的输入数据的精度高于提高前模型的输入数据的精度,比如提高前模型能处理的数据是16位的,提高后模型能处理的数据可以是32位的。需要说明的是,初始时,提高前模型的输入数据的精度是指在模型训练或推理过程中输入数据的精度。
在步骤309中,将提高精度后的输入数据输入模型,若模型复现上述异常,则返回执行步骤305,若模型运行正常,则进入步骤310。
在步骤310中,确定目标算子出现正确性问题的原因是数据精度不足。
在步骤311中,扫描模型中多个算子的输入输出tensor,将扫描到的输入输出tensor与异常匹配且计算次序最靠前的算子,确定为目标算子。
在步骤312中,执行对目标算子多次进行正确性校验的流程。
即按照图4的流程处理。
二、对目标算子多次进行正确性校验。
参见图4,图4为本申请实施例提供的一种对目标算子多次进行正确性校验的流程图,包括以下步骤。
在步骤401中,获取目标算子的输入描述信息。
其中,输入描述信息如输入tensor的规模大小、输入tensor的数据范围、输入tensor是否进行转置等。
在步骤402中,基于目标算子的输入描述信息,生成多个随机数种子。
在步骤403中,利用多个随机数种子,生成多组输入tensor。
其中,每个随机数种子可生成一组输入tensor,多个随机数种子和多组输入tensor之间是一一对应的。
在步骤404中,利用多组输入tensor,对目标算子进行多次正确性校验。
在步骤405中,保存正确性校验不通过的目标校验对应的随机数种子。
三、基于校验不通过的目标校验对应的输出tensor,确定目标算子校验不通过的原因。
参见图5,图5为本申请实施例提供的一种确定目标算子校验不通过的原因的流程图,包括以下步骤。
在步骤501中,基于目标校验对应的随机数种子和目标算子的内核复杂度,确定目标校验对应的输出tensor。
一种情况,目标算子是内核复杂度高于设定值的融合算子,可将融合算子拆分成至少两个单算子,从这至少两个单算子中查找计算次序最靠前、且正确性校验不通过的单算子,作为目标单算子,然后,基于目标校验对应的随机数种子重新生成一组输入tensor,将这组输入tensor重新输入目标算子中,之后,取目标单算子的输出tensor作为目标校验对应的输出tensor。
另一种情况,目标算子不是内核复杂度高于设定值的融合算子,可基于目标校验对应的随机数种子重新生成一组输入tensor,将这组输入tensor输入目标算子,之后,取目标算子的输出tensor作为目标校验对应的输出tensor。这样,后续通过融合算子中比较简单的单算子的输出tensor,确定融合算子出现正确性问题的原因,可降低找到融合算子出现正确性问题的原因的难度,提升找到问题原因的成功率。
在步骤502中,对目标算子的源码进行完整性检查。
其中,完整性检查如扫描目标算子的源码,以检查是否存在资源踩踏、无明显同步、内存泄露等基础问题。
在步骤503中,判断完整性检查是否通过,若否,则进入步骤504,若是,则进入步骤505。
在步骤504中,将完整性检查未通过的基础问题,确定为目标算子校验不通过的原因。
比如,检查出目标算子的源码存在内存泄露问题,则可确定目标算子校验不通过的原因即是内存泄露;再比如,检查出目标算子的源码存在资源踩踏问题,则可确定目标算子校验不通过的原因即是资源踩踏。
在步骤505中,基于目标校验对应的输出tensor,确定目标算子是否符合算子实现错误的表现特征。
其中,算子实现错误的表现特征如异常的一致性(指不同目标校验对应的输出tensor出现同样的数值异常情况,和/或,不同目标校验对应的输出tensor在相同元素位置上出现异常)、有奇异值如INF、NAN、非正规(denormal)等。
在步骤506中,若符合,则确定目标算子校验不通过的原因是算子实现错误。
需要说明的是,上述步骤501和步骤502-步骤503之间没有严格的先后顺序关系。
四、基于目标算子校验不通过的原因,处理模型出现的异常。
一般地,若目标算子校验不通过的原因是数据精度不足,则可提高模型的输入数据的精度来解决异常;若目标算子校验不通过的原因是芯片间的通信问题,则可保留异常时多机通信连接的输入输出数据包,根据这些输入输出数据包验证通信库的精度,以找到具体原因;若目标算子校验不通过的原因是算子实现错误,则可通过编译调试工具排查具体原因:代码实现问题、软件栈问题、编译器问题、硬件限制还是硬件问题等。如果目标算子的计算内核很大,还可裁剪问题,此时可通过comdel、Diag、debugbus等方式进行错误排查。
下面结合具体例子对本申请实施例的方案进行介绍。
以大模型为例,假设大模型在首次迭代中出现loss曲线不收敛现象(即出现异常),首次迭代就出现loss曲线异常,可定位为前向问题,所以可从大模型包含的多个前向算子中找到与loss曲线不收敛现象有关的目标算子,并假设找到的目标算子是单算子mma(一个实现矩阵乘法的算子)。那么,可按照如下步骤处理异常。
a)、收集单算子mma的输入描述信息:计算规模:左矩阵大小为m*k,右矩阵为k*n ,m=1025,n=1024,k=8193,输入数据范围为(0~0.01);
b)、基于单算子mma的输入数据范围(0~0.01)及计算规模,生成多个随机数种子(浮点数);
c)、利用多个随机数种子,生成多组输入tensor;
d)、利用多组输入tensor,对目标算子进行多次正确性校验,即对单算子mma进行单元测试(Unit Testing,ut)。
比如,利用多组输入tensor,对单算子mma进行1000次正确性校验。
e)、针对正确性校验不通过的目标校验,保存目标校验时的输入输出tensor和随机数种子;
即保存目标校验时的输入tensor、输出tensor和随机数种子。
f)、由于mma是单算子,复杂度相对较低,目标校验对应的输出tensor即是目标校验时目标算子的输出tensor,而上面e)中已保存了目标校验时目标算子的输出tensor,因此,可以不再用随机数种子生成目标校验的输出tensor;
g)、进行完整性检查(Sanity Checks),可扫描单算子mma的源码,检测有无资源踩踏、内存泄漏等基础代码问题,本例中mma没有这些问题;
h)、对目标校验中单算子mma的输出tensor进行分析,如输出tensor中不满足精度要求的点位占比,输出tensor中前32个相差最大的异常数据是否有奇异值等。
参见图6,图6为本申请实施例提供的一种单算子mma的输出tensor中前17个相差最大的异常数据的示意图,其中,i表示单算子mma的输出tensor中元素的位置(或者叫点位),a表示待测试芯片上部署的单算子mma在i点位上的输出数据,b表示参考芯片上部署的单算子mma在i点位上的输出数据,abs(a-b)表示a和b之间差值的绝对值。可以看到图6中点位的不匹配率接近100%,异常数据之间差距是比较大的。
i)、由于单算子mma的输出tensor中所有点位的数据均有误差,所以进一步检查e)步保存的目标校验时的输入输出tensor,以及内核代码逻辑,发现内核代码缺少数据对齐逻辑,定位到根因。
j)、对单算子mma增加数据对齐的代码逻辑后,单算子mma的ut通过,大模型loss曲线不收敛现象也消失。
本申请实施例中,从单算子到模型端到端定位精度问题的方法,总体来说归纳为以下三个方面:
1、无论是模型驱动还是单算子驱动,本质上是把精度问题从一个很大的规模裁剪到一个研发环境可以复现的小规模问题。例如从模型端到端来看,精度问题经常体现在loss曲线异常或者溢出,那么,根据loss曲线异常的特点如首次迭代异常、次迭代异常还是后续整体异常来界定是前向问题、反向权重更新问题,还是上一个迭代的问题。通常做法是在距离精度问题发生相近的一个迭代存检查点(checkpoint),转存算子的输入输出tensor,扫描出首个异常算子,从而将模型问题缩小到子算子问题。
2、复杂的单算子精度问题涉及软件栈到硬件的每个环节。由于芯片厂商的架构实现方式的差异,很难保证所有的计算能够位(bit)一致,融合算子在这点上更为明显,融合算子通常可以通过中间tensor与相应单算子的输出进行bit比较发现首次异常点。
3、在对算子进行正确性验证时精度门限的置信度是提高精度定界问题(即正确性校验准确性)的核心。本申请实施例中,在真实数据的基础上,通过引入噪声的方式观察精度门限的表现,通过多次数据实验,发现二阶范数可以更加精确和稳定地表达精度门限。
基于相同的技术构思,本申请实施例还提供一种模型的异常处理装置,模型的异常处理装置解决问题的原理与上述模型的异常处理方法相似,因此模型的异常处理装置的实施可参见模型的异常处理方法的实施,重复之处不再赘述。
图7为本申请实施例提供的一种模型的异常处理装置的结构示意图,包括。
算子查找模块701,用于当模型在训练或推理的过程中出现异常时,从所述模型的多个算子中查找所述异常对应的目标算子;
正确性校验模块702,用于基于获取的所述目标算子的输入描述信息,对所述目标算子进行多次正确性校验;
原因确定模块703,用于基于所述多次正确性校验中校验不通过的目标校验对应的输出张量tensor,确定所述目标算子校验不通过的原因;
异常处理模块704,用于基于所述目标算子校验不通过的原因,处理所述异常。
在一些实施例中,算子查找模块701具体用于:
转存所述模型在出现所述异常前预设步数内的tensor信息,所述tensor信息至少包括所述模型中多个算子的输入输出tensor;
基于所述异常,扫描所述多个算子的输入输出tensor;
将计算次序最靠前的疑似算子确定为所述目标算子,所述疑似算子是指输入输出tensor与所述异常匹配的算子。
在一些实施例中,算子查找模块701,还用于:
在转存所述模型在出现所述异常前预设步数内的tensor信息之后,根据所述tensor信息,判断所述模型是否存在数值溢出情况;
若确定不存在数值溢出问题,或者,存在的数值溢出情况未包含在预设的数值溢出情况中,则基于所述异常,扫描所述多个算子的输入输出tensor。
在一些实施例中,原因确定模块703,还用于:
若存在的数值溢出情况包含在预设的数值溢出情况中,则提高所述模型的输入数据的精度;
若将提高精度后的输入数据输入所述模型后所述模型出现所述异常,则执行从所述模型的多个算子中查找所述异常对应的目标算子的步骤;
若将提高精度后的输入数据输入所述模型后所述模型正常,则确定所述目标算子校验不通过的原因是数据精度不足。
在一些实施例中,还包括:
转换模块705,用于当模型在训练或推理的过程中出现异常时,若确定所述模型运行在多个芯片上,则将所述模型转换成在单个芯片上运行的简化模型;
原因确定模块703,还用于若在单个芯片上运行所述简化模型时出现所述异常,则执行从所述模型的多个算子中查找所述异常对应的目标算子的步骤;
若在单个芯片上运行所述简化模型时未出现所述异常,则确定出现所述异常的原因是芯片间的通信问题。
在一些实施例中,正确性校验模块702具体用于针对每次正确性校验,根据以下步骤确定所述目标算子是否校验通过:
获取部署在待测试芯片上的所述目标算子针对本次正确性校验时输入tensor的第一输出tensor,以及部署在参考芯片上的所述目标算子针对所述输入tensor的第二输出tensor;
若所述第一输出tensor与所述第二输出tensor的差的二范数,与所述第二输出tensor的二范数的比值不小于预设值,则确定所述目标算子本次校验不通过。
在一些实施例中,原因确定模块703具体用于:
基于所述目标校验对应的输出tensor,确定所述目标算子是否符合算子实现错误的表现特征;
若符合,则确定所述目标算子校验不通过的原因是算子实现错误。
在一些实施例中,当所述目标算子是内核复杂度高于设定值的融合算子时,所述目标校验对应的输出tensor是所述目标校验中目标单算子的输出tensor,所述目标单算子是指融合算子拆分得到的至少两个单算子中计算次序最靠前、且校验不通过的单算子;
当所述目标算子不是内核复杂度高于所述设定值的融合算子时,所述目标校验对应的输出tensor是所述目标校验中所述目标算子的输出tensor。
在一些实施例中,原因确定模块703还用于:
在基于所述目标校验对应的输出tensor,确定所述目标算子校验不通过的原因之前,对所述目标算子的源码进行完整性检查;
确定完整性检查通过。
在一些实施例中,异常处理模块704具体用于:
若所述目标算子校验不通过的原因是数据精度不足,则通过提高所述模型的输入数据的精度的方式处理所述异常;
若所述目标算子校验不通过的原因是芯片间的通信问题,则通过排查芯片间通信的方式处理所述异常;
若所述目标算子校验不通过的原因是算子实现错误,则通过排查算子实现的方式处理所述异常。
在一些实施例中,异常处理模块704具体用于:
排查所述目标算子的主机代码和内核代码是否存在逻辑错误;
若不存在,则确定实现所述目标算子所需的多个对象,基于所述多个对象的排查规则,对所述多个对象进行错误排查。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,本申请各实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。各个模块相互之间的耦合可以是通过一些接口实现,这些接口通常是电性通信接口,但是也不排除可能是机械接口或其它的形式接口。因此,作为分离部件说明的模块可以是或者也可以不是物理上分开的,既可以位于一个地方,也可以分布到同一个或不同设备的不同位置上。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
在介绍了本申请示例性实施方式的模型的异常处理方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的电子设备。
下面参照图8来描述根据本申请的这种实施方式实现的电子设备130。图8显示的电子设备130仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,电子设备130以通用电子设备的形式表现。电子设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(ROM)1323。
存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
电子设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备130交互的设备通信,和/或与使得该电子设备130能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口135进行。并且,电子设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于电子设备130的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在示例性实施例中,还提供了一种存储介质,当存储介质中的计算机程序由电子设备的处理器执行时,电子设备能够执行上述模型的异常处理方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,本申请的电子设备可以至少包括至少一个处理器,以及与这至少一个处理器通信连接的存储器,其中,存储器存储有可被这至少一个处理器执行的计算机程序,计算机程序被这至少一个处理器执行时可使这至少一个处理器执行本申请实施例提供的任一模型的异常处理方法的步骤。
在示例性实施例中,还提供一种计算机程序产品,当计算机程序产品被电子设备执行时,电子设备能够实现本申请提供的任一示例性方法。
并且,计算机程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、RAM、ROM、可擦式可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、闪存、光纤、光盘只读存储器(Compact Disk Read Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请实施例中用于模型的异常处理的程序产品可以采用CD-ROM并包括程序代码,并可以在计算设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、射频(Radio Frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络如局域网(Local AreaNetwork,LAN)或广域网(Wide Area Network,WAN)连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也包含这些改动和变型在内。
Claims (13)
1.一种模型的异常处理方法,其特征在于,包括:
当模型在训练或推理的过程中出现异常时,从所述模型的多个算子中查找所述异常对应的目标算子;
基于获取的所述目标算子的输入描述信息,对所述目标算子进行多次正确性校验;
基于所述多次正确性校验中校验不通过的目标校验对应的输出张量tensor,确定所述目标算子校验不通过的原因;
基于所述目标算子校验不通过的原因,处理所述异常;
从所述模型的多个算子中查找与所述异常对应的目标算子,包括:
转存所述模型在出现所述异常前预设步数内的tensor信息,所述tensor信息至少包括所述模型中多个算子的输入输出tensor;
基于所述异常,扫描所述多个算子的输入输出tensor;
将计算次序最靠前的疑似算子确定为所述目标算子,所述疑似算子是指输入输出tensor与所述异常匹配的算子。
2.如权利要求1所述的方法,其特征在于,在转存所述模型在出现所述异常前预设步数内的tensor信息之后,还包括:
根据所述tensor信息,判断所述模型是否存在数值溢出情况;
若确定不存在数值溢出问题,或者,存在的数值溢出情况未包含在预设的数值溢出情况中,则基于所述异常,扫描所述多个算子的输入输出tensor。
3.如权利要求2所述的方法,其特征在于,若存在的数值溢出情况包含在预设的数值溢出情况中,则还包括:
提高所述模型的输入数据的精度;
若将提高精度后的输入数据输入所述模型后所述模型出现所述异常,则执行从所述模型的多个算子中查找所述异常对应的目标算子的步骤;
若将提高精度后的输入数据输入所述模型后所述模型正常,则确定所述目标算子校验不通过的原因是数据精度不足。
4.如权利要求1所述的方法,其特征在于,当模型在训练或推理的过程中出现异常时,还包括:
若确定所述模型运行在多个芯片上,则将所述模型转换成在单个芯片上运行的简化模型;
若在单个芯片上运行所述简化模型时出现所述异常,则执行从所述模型的多个算子中查找所述异常对应的目标算子的步骤;
若在单个芯片上运行所述简化模型时未出现所述异常,则确定出现所述异常的原因是芯片间的通信问题。
5.如权利要求1所述的方法,其特征在于,针对每次正确性校验,根据以下步骤确定所述目标算子是否校验通过:
获取部署在待测试芯片上的所述目标算子针对本次正确性校验时输入tensor的第一输出tensor,以及部署在参考芯片上的所述目标算子针对所述输入tensor的第二输出tensor;
若所述第一输出tensor与所述第二输出tensor的差的二范数,与所述第二输出tensor的二范数的比值不小于预设值,则确定所述目标算子本次校验不通过。
6.如权利要求1所述的方法,其特征在于,基于所述目标校验对应的输出tensor,确定所述目标算子校验不通过的原因,包括:
基于所述目标校验对应的输出tensor,确定所述目标算子是否符合算子实现错误的表现特征;
若符合,则确定所述目标算子校验不通过的原因是算子实现错误。
7.如权利要求1-6任一所述的方法,其特征在于,
当所述目标算子是内核复杂度高于设定值的融合算子时,所述目标校验对应的输出tensor是所述目标校验中目标单算子的输出tensor,所述目标单算子是指融合算子拆分得到的至少两个单算子中计算次序最靠前、且校验不通过的单算子;
当所述目标算子不是内核复杂度高于所述设定值的融合算子时,所述目标校验对应的输出tensor是所述目标校验中所述目标算子的输出tensor。
8.如权利要求1-6任一所述的方法,其特征在于,在基于所述目标校验对应的输出tensor,确定所述目标算子校验不通过的原因之前,还包括:
对所述目标算子的源码进行完整性检查;
确定完整性检查通过。
9.如权利要求1-6任一所述的方法,其特征在于,基于所述目标算子校验不通过的原因,处理所述异常,包括:
若所述目标算子校验不通过的原因是数据精度不足,则通过提高所述模型的输入数据的精度的方式处理所述异常;
若所述目标算子校验不通过的原因是芯片间的通信问题,则通过排查芯片间通信的方式处理所述异常;
若所述目标算子校验不通过的原因是算子实现错误,则通过排查算子实现的方式处理所述异常。
10.如权利要求9所述的方法,其特征在于,通过排查算子实现的方式处理所述异常,包括:
排查所述目标算子的主机代码和内核代码是否存在逻辑错误;
若不存在,则确定实现所述目标算子所需的多个对象,基于所述多个对象的排查规则,对所述多个对象进行错误排查。
11.一种模型的异常处理装置,其特征在于,包括:
算子查找模块,用于当模型在训练或推理的过程中出现异常时,从所述模型的多个算子中查找所述异常对应的目标算子;
正确性校验模块,用于基于获取的所述目标算子的输入描述信息,对所述目标算子进行多次正确性校验;
原因确定模块,用于基于所述多次正确性校验中校验不通过的目标校验对应的输出张量tensor,确定所述目标算子校验不通过的原因;
异常处理模块,用于基于所述目标算子校验不通过的原因,处理所述异常;
所述算子查找模块,具体用于转存所述模型在出现所述异常前预设步数内的tensor信息,所述tensor信息至少包括所述模型中多个算子的输入输出tensor;基于所述异常,扫描所述多个算子的输入输出tensor;将计算次序最靠前的疑似算子确定为所述目标算子,所述疑似算子是指输入输出tensor与所述异常匹配的算子。
12.一种电子设备,其特征在于,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中:
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-10任一所述的方法。
13.一种存储介质,其特征在于,当所述存储介质中的计算机程序由电子设备的处理器执行时,所述电子设备能够执行如权利要求1-10任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410250990.8A CN117827523B (zh) | 2024-03-05 | 2024-03-05 | 一种模型的异常处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410250990.8A CN117827523B (zh) | 2024-03-05 | 2024-03-05 | 一种模型的异常处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117827523A CN117827523A (zh) | 2024-04-05 |
CN117827523B true CN117827523B (zh) | 2024-05-14 |
Family
ID=90506108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410250990.8A Active CN117827523B (zh) | 2024-03-05 | 2024-03-05 | 一种模型的异常处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117827523B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021190127A1 (zh) * | 2020-03-27 | 2021-09-30 | 华为技术有限公司 | 一种数据处理方法和数据处理设备 |
CN114385694A (zh) * | 2021-12-22 | 2022-04-22 | 湖南财信数字科技有限公司 | 一种数据加工处理方法、装置、计算机设备及存储介质 |
CN117273171A (zh) * | 2023-09-25 | 2023-12-22 | 中科曙光国际信息产业有限公司 | 深度学习框架适配方法、装置、计算机设备和存储介质 |
CN117421171A (zh) * | 2023-10-16 | 2024-01-19 | 天翼数字生活科技有限公司 | 一种大数据任务监控方法、系统、装置及存储介质 |
-
2024
- 2024-03-05 CN CN202410250990.8A patent/CN117827523B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021190127A1 (zh) * | 2020-03-27 | 2021-09-30 | 华为技术有限公司 | 一种数据处理方法和数据处理设备 |
CN114385694A (zh) * | 2021-12-22 | 2022-04-22 | 湖南财信数字科技有限公司 | 一种数据加工处理方法、装置、计算机设备及存储介质 |
CN117273171A (zh) * | 2023-09-25 | 2023-12-22 | 中科曙光国际信息产业有限公司 | 深度学习框架适配方法、装置、计算机设备和存储介质 |
CN117421171A (zh) * | 2023-10-16 | 2024-01-19 | 天翼数字生活科技有限公司 | 一种大数据任务监控方法、系统、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117827523A (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10423522B2 (en) | System and method for detecting an error in software | |
US9588876B2 (en) | Estimating likelihood of code changes introducing defects | |
US9983984B2 (en) | Automated modularization of graphical user interface test cases | |
CN113032195A (zh) | 芯片仿真验证方法、系统、设备及存储介质 | |
US8645761B2 (en) | Precise fault localization | |
US9792204B2 (en) | System and method for coverage-based automated test case augmentation for design models | |
US20070277163A1 (en) | Method and tool for automatic verification of software protocols | |
CN111104335B (zh) | 一种基于多层次分析的c语言缺陷检测方法及装置 | |
US11327874B1 (en) | System, method, and computer program for orchestrating automatic software testing | |
US8578311B1 (en) | Method and system for optimal diameter bounding of designs with complex feed-forward components | |
CN114399019A (zh) | 神经网络编译方法、系统、计算机设备及存储介质 | |
US20180276321A1 (en) | Method and apparatus for testing design of satellite wiring harness and signal processing units | |
Calinescu et al. | Efficient parametric model checking using domain knowledge | |
US6539345B1 (en) | Symbolic simulation using input space decomposition via Boolean functional representation in parametric form | |
US8479169B1 (en) | Code analysis via ranged values | |
CN112860587B (zh) | Ui自动测试方法和装置 | |
US7543274B2 (en) | System and method for deriving a process-based specification | |
CN117827523B (zh) | 一种模型的异常处理方法、装置、电子设备及存储介质 | |
CN112988578A (zh) | 一种自动化测试方法和装置 | |
Sottile et al. | Static analysis techniques for semiautomatic synthesis of message passing software skeletons | |
CN111309382B (zh) | 基于神经网络的指令推送方法、系统、设备及存储介质 | |
EP2782005A1 (en) | Verifying state reachability in a statechart model having computer program code embedded therein | |
US20110225457A1 (en) | System for Testing a Multitasking Computation Architecture Based on Communication Data between Processors and Corresponding Test Method | |
US20240176722A1 (en) | Automated public certification of specifications and software | |
CN113221126B (zh) | 一种TensorFlow程序漏洞检测方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |