CN116957024A - 利用神经网络模型进行推理的方法和装置 - Google Patents

利用神经网络模型进行推理的方法和装置 Download PDF

Info

Publication number
CN116957024A
CN116957024A CN202310887959.0A CN202310887959A CN116957024A CN 116957024 A CN116957024 A CN 116957024A CN 202310887959 A CN202310887959 A CN 202310887959A CN 116957024 A CN116957024 A CN 116957024A
Authority
CN
China
Prior art keywords
precision
neural network
reasoning
module
network model
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.)
Pending
Application number
CN202310887959.0A
Other languages
English (en)
Inventor
杨伟光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202310887959.0A priority Critical patent/CN116957024A/zh
Publication of CN116957024A publication Critical patent/CN116957024A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/16Speech classification or search using artificial neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开提供了一种利用神经网络模型进行推理的方法、装置、设备和计算机可读存储介质。该方法通过分析使用GPU的半精度浮点数格式来加速深度学习模型推理的技术导致用于语音识别的神经网络模型的精度下降的原因,发现了其主要是由于在神经网络模型的残差连接结构中激活张量的相加容易导致精度溢出的问题。该方法提出了混合精度推理和截断式精度推理两种可选方案,用于根据需要从中择一进行神经网络模型的推理,其中,混合精度推理对于神经网络模型中的不同模块采用不同的精度,而截断式精度推理通过分析发生精度溢出的残差连接结构,对张量相加模块的输出值进行截断处理,并调整其后所连接的层归一化模块中的运算顺序,从而解决了精度溢出问题。

Description

利用神经网络模型进行推理的方法和装置
技术领域
本公开涉及人工智能领域,更具体地,涉及一种利用神经网络模型进行推理的方法、装置、设备和存储介质。
背景技术
广告内容审核是投放广告中重要的一环,广告审核的任务在于如何高效准确地识别违规广告内容,以防止这些广告进入大众视野从而引发不良反应。随着互联网时代的数据大爆发,人工审核费时费力,在广告内容审核中对人工智能的使用可以显著提高审核效率。目前的广告内容审核服务可以基于海量标注数据和深度学习算法实现,从语音、文字、视觉等多维度精准识别视频、封面、标题等媒体信息中包含的违禁内容,并且支持广告及二维码识别、标志识别、不良场景识别、语音垃圾识别等多种功能。其中,语音识别是广告内容审核中的重要组成模块,广告内容审核的海量数据和审核精度的特点对语音识别任务提出了高精度、高并发的要求。
为了实现性能更优的语音识别,可以采用优化的用于语音识别的深度学习模型和用于加速深度学习模型推理的技术,以加快模型的响应速度和处理能力。但是,在显著提高深度学习模型的推理速度的同时,用于加速深度学习模型推理的技术在用于语音识别的深度学习模型上的应用也可能导致深度学习模型上出现的一些问题。
因此,需要一种高效的方法来优化用于加速深度学习模型推理的技术在用于语音识别的深度学习模型上的应用,从而优化神经网络模型推理。
发明内容
为了解决上述问题,本公开通过分析用于加速深度学习模型推理的技术导致语音识别模型的精度下降的原因,针对该原因提出了包括混合精度推理和截断式精度推理的解决方案,以解决用于加速深度学习模型推理的技术在用于语音识别的深度学习模型上的应用中出现的精度溢出问题。
本公开的实施例提供了一种利用神经网络模型进行推理的方法、装置、设备和计算机可读存储介质。
本公开的实施例提供了一种利用神经网络模型进行推理的方法,所述方法包括:确定在利用所述神经网络模型进行推理的过程中使用GPU的第一精度格式的值进行计算;以及响应于检测到所述神经网络模型中的模块在推理过程中发生精度溢出,执行以下中的一项或多项:在所述模块的计算过程中使用第二精度格式的值进行计算,其中,所述第一精度小于所述第二精度;或者响应于检测到所述神经网络模型中的残差连接结构的张量相加模块在计算过程中发生精度溢出,对所述张量相加模块中的发生精度溢出的值进行截断处理,并调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序。
本公开的实施例提供了一种利用神经网络模型进行推理的装置,包括:精度确定模块,被配置为确定在利用所述神经网络模型进行推理的过程中使用GPU的第一精度格式的值进行计算;溢出解决模块,被配置为响应于检测到所述神经网络模型中的模块在推理过程中发生精度溢出,执行以下中的一项或多项:在所述模块的计算过程中使用第二精度格式的值进行计算;或者响应于检测到所述神经网络模型中的残差连接结构的张量相加模块在计算过程中发生精度溢出,对所述张量相加模块中的发生精度溢出的值进行截断处理,并调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序。
本公开的实施例提供了一种利用神经网络模型进行推理的设备,包括:一个或多个处理器;以及一个或多个存储器,其中,所述一个或多个存储器中存储有计算机可执行程序,当由所述处理器执行所述计算机可执行程序时,执行如上所述的利用神经网络模型进行推理的方法。
本公开的实施例提供了一种计算机可读存储介质,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现如上所述的利用神经网络模型进行推理的方法。
本公开的实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开的实施例的利用神经网络模型进行推理的方法。
本公开的实施例所提供的方法相比于传统的精度溢出解决方法而言,能够确定神经网络模型中发生精度溢出的重要原因,并针对该原因基于模型结构进行分析来确定解决方案,所确定的解决方案不会放大模型损失,并且不需要对模型进行重新训练,在保证模型精度的同时显著提升了模型的推理速度。
本公开的实施例所提供的方法通过对使用GPU的半精度浮点数格式来加速深度学习模型推理的技术导致用于语音识别的神经网络模型的精度下降的原因进行分析,发现了其主要是由于在神经网络模型的残差连接结构中激活张量的相加容易导致精度溢出的问题。针对所发现的精度溢出问题,本公开的实施例所提供的方法提出了包括混合精度推理和截断式精度推理两种可选方案,用于根据需要从中择一进行神经网络模型的推理,其中,混合精度推理对于神经网络模型中的不同模块采用不同的精度,而截断式精度推理通过分析发生精度溢出的残差连接结构,对张量相加模块的输出值进行截断处理,并调整其后所连接的层归一化模块中的运算顺序,从而解决了精度溢出问题。通过本公开的实施例所提供的方法,能够提供适用于解决不同应用场景下的精度溢出问题的解决方案,在不需要对神经网络模型进行重新训练的情况下,对神经网络模型的精度几乎没有影响,并且能够显著提升模型推理的速度。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对实施例的描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本公开的一些示例性实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是示出根据本公开的实施例的利用神经网络模型进行推理的场景示意图;
图2是示出根据本公开的实施例的利用神经网络模型进行推理的示意图;
图3是示出根据本公开的实施例的利用神经网络模型进行推理的方法的流程图;
图4是示出根据本公开的实施例的变形器(Conformer)模型的编码器结构的示意图;
图5是示出根据本公开的实施例的半精度浮点数格式与单精度浮点数格式的示意图;
图6是示出根据本公开的实施例的神经网络模型的残差连接结构中激活张量的相加导致精度溢出的示意图;
图7是示出根据本公开的实施例的基于混合精度推理方案的神经网络模型的精度设置的示意图;
图8是示出根据本公开的实施例的层归一化模块的输入的标准差的示例直方图;
图9是示出根据本公开的实施例的利用神经网络模型进行推理的装置的示意图;
图10示出了根据本公开的实施例的利用神经网络模型进行推理的设备的示意图;
图11示出了根据本公开的实施例的示例性计算设备的架构的示意图。
具体实施方式
为了使得本公开的目的、技术方案和优点更为明显,下面将参考附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
在本说明书和附图中,具有基本上相同或相似步骤和元素用相同或相似的附图标记来表示,且对这些步骤和元素的重复描述将被省略。同时,在本公开的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性或排序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
为便于描述本公开,以下介绍与本公开有关的概念。
本公开的利用神经网络模型进行推理的方法可以是基于人工智能(Artificialintelligence,AI)的。人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。例如,本公开的利用神经网络模型进行推理的方法可以基于深度学习模型。具体地,针对语音识别任务场景,为了更好地对局部特征和全局上下文信息进行统一建模,从而有效地提取更鲁棒的语音特征,本公开的利用神经网络模型进行推理的方法可以基于Conformer模型。Conformer模型是谷歌公司提出的用于端到端语音识别任务的网络结构,其将卷积网络和Transformer模型进行结合,在Transformer模型的多头注意力(Multi-headed Self-attention,MHSA)层之后引入卷积模块,通过MHSA层捕捉全局上下文信息,通过卷积模块提取局部特征,从而更好地实现全局和局部特征的统一建模。相比于经典的Transformer模型,Conformer模型主要存在三点区别:(1)Conformer块(Conformer Block)引入了卷积模块;(2)Conformer模型采用相对位置编码,Transformer模型采用绝对位置编码;(3)Conformer块采用马卡龙(Macaron)结构,比Transformer模型多一个FFN(Feed Forward Network,前馈网络)模块。
进一步地,本公开的利用神经网络模型进行推理的方法还可以基于MoE(Mixtureof Experts,混合专家)技术。MoE是一个在神经网络中引入若干专家网络(ExpertNetwork)的技术。MoE是在神经网络领域发展起来的一种集成学习(Ensemble Learning)技术。传统的深度学习模型在训练时,对于每个输入样本,整个网络都会参与计算。随着模型越来越大,训练使用的样本数据越来越多,训练的开销越来越难以承受,而MoE可以动态激活部分神经网络,从而实现在不增加计算量的前提下大幅度增加模型参数量。MoE技术目前是训练万亿参数量级模型的关键技术,其将预测建模任务分解为若干子任务,在每个子任务上训练一个专家模型(Expert Model),开发一个门控模型(Gating Model),该模型根据要预测的输入来学习信任哪个专家,并组合预测结果。尽管该技术最初是使用神经网络专家和门控模型来描述的,但它可以推广到使用任何类型的模型。因此,在本公开的利用神经网络模型进行推理的方法中,可以采用Conformer模型与MoE相结合的神经网络模型,通过MoE带来的模型容量提升,改善模型效果。
本公开的利用神经网络模型进行推理的方法基于神经网络模型的推理(inference)。在深度学习中,推理是指神经网络的一次前向传播过程,也就是将输入数据送入神经网络,然后从中得到输出结果的过程。具体来说,经过训练(training)的神经网络可以将其所学的知识应用于数字世界的任务——例如:识别图像、口语词、或者向某人推荐她/他接下来可能要购买的物品等各种各样的应用。这种更快更高效的版本的神经网络可以基于其训练成果对其所获得的新数据进行“推导”,在人工智能领域,这个过程被称为“推理”。在本公开的利用神经网络模型进行推理的方法中,使用电子设备中的图形处理器(GPU)来实现神经网络模型的推理。GPU具备并行计算能力,其既擅长训练,也擅长推理。使用GPU训练的系统可以让计算机在某些案例中实现超过人类水平的模式识别和对象检测。在训练完成后,模型可被部署在需要“推理”(即,对数据分类以“推理”出一个结果)的领域中,而具备并行计算能力的GPU可以基于训练过的网络运行数十亿的计算,从而快速识别出已知的模式或对象。
本公开的利用神经网络模型进行推理的方法还可以基于GPU的半精度浮点数(FP16)推理加速技术来进行神经网络模型推理加速。在深度学习模型推理中,通常需要进行大量的矩阵乘法和卷积运算,这些运算需要大量的计算资源和内存,使用FP16计算可以将计算精度从32位减少到16位,从而减少了计算量和内存占用,同时也提高了计算速度。在本公开的利用神经网络模型进行推理的方法中,可以使用GPU FP16推理加速来显著提高深度学习模型的推理速度,从而加快模型的响应速度和处理能力。这种GPU FP16推理加速技术已经被广泛应用于各种深度学习应用场景,诸如图像识别、语音识别、自然语言处理等。
综上所述,本公开的实施例提供的方案涉及人工智能、神经网络模型推理加速等技术,下面将结合附图对本公开的实施例进行进一步地描述。
图1是示出根据本公开的实施例的利用神经网络模型进行推理的场景示意图。图2是示出根据本公开的实施例的利用神经网络模型进行推理的示意图。
训练完成后的神经网络模型可以被部署在需要推理的环境(例如,服务器、电子设备等)中,以基于经训练的神经网络模型运行大规模计算推理,从而快速识别出已知的模式或对象。如图1所示,对于训练完成后的神经网络模型被部署在服务器中的情况,服务器可以利用神经网络模型基于获取的输入数据(例如,从输入终端获取的新输入数据)进行推理,从而确定与该输入数据相对应的推理结果,并将该推理结果返回至输入终端。可选地,输入终端具体可以包括智能手机、平板电脑、膝上型便携计算机、台式计算机、车载终端、可穿戴设备等等,但并不局限于此,例如该输入终端还可以是图像或视频采集设备等,以将所采集的图像或视频直接发送到处理器端进行处理。输入终端还可以是安装浏览器或各种应用(包括系统应用及第三方应用)的客户端。可选地,网络可以是基于互联网和/或电信网的物联网(Intemet of Things),其可以是有线网也可以是无线网,例如,其可以是局域网(LAN)、城域网(MAN)、广域网(WAN)、蜂窝数据通信网络等能实现信息交换功能的电子网络,输入终端和服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
在服务器中利用神经网络模型进行推理的操作可以如图2所示。对于所获取的新输入数据201(其可以是例如通过图像采集设备(例如,相机等)采集的动物图像),希望通过将该新输入数据201作为经训练的神经网络模型的输入,从神经网络模型输出对该动物图像的准确分类。如图2中的附图标记202所示,在将新输入数据201输入经训练的神经网络模型后,该神经网络模型可以基于新输入数据201进行计算,以确定对该新输入数据201的分类,即输出推理结果203,例如,在图2中即为输入对所采集的动物图像的分类(例如,推理结果为“猫”)。
如前所述,语音识别作为广告内容审核中的重要组成模块,广告内容审核的海量数据和审核精度的特点对语音识别任务提出了高精度、高并发的要求。为了实现性能更优的语音识别,可以采用优化的用于语音识别的深度学习模型和用于加速深度学习模型推理的技术,以加快模型的响应速度和处理能力。
在深度学习模型的推理过程中,常常需要进行大量的矩阵乘法和卷积运算,这些运算需要大量的计算资源和内存。对于深度学习模型的推理,考虑到其对精度的要求与模型训练过程相比较低,通常可以使用低精度的数据进行计算。例如,可以在深度学习模型的推理过程使用FP16而不是FP32进行计算,即将计算精度从32位(float(单精度浮点数)型)减少到16位(half(半精度浮点数)型),从而减少计算量和内存占用,同时提高计算速度。此外,作为示例,英伟达(NVIDIA)公司研发的新型处理核心——张量计算核心(Tensor Core)还可以实现混合精度计算,并能根据精度的降低动态调整算力,在保持准确性的同时提高吞吐量,进一步提高FP16计算的速度。
使用GPU的FP16推理加速技术可以显著提高深度学习模型的推理速度,从而加快模型的响应速度和处理能力。但是,在显著提高深度学习模型的推理速度的同时,用于加速深度学习模型推理的技术在用于语音识别的深度学习模型上的应用也带来了一些问题。
对于本公开的利用神经网络模型进行推理的方法,在采用语音识别模型进行推理时,FP16推理加速将会导致语音识别模型的精度显著下降。这是因为,由于FP16计算的有效数据表示范围与FP32计算的有效数据表示范围相比小很多,使用FP16替换FP32很容易出现数据溢出(例如,包括上溢出(Overflow)和下溢出(Underflow))的情况。其中,数据溢出是指在计算机系统中,当数据的大小超过了数据类型所能表示的范围时,造成数据丢失或错误的现象。数据溢出可能导致计算结果不准确、程序崩溃或系统错误。具体地,在发生数据溢出后,神经网络模型中将会出现非数(NaN),导致模型计算出现错误。
针对上述数据溢出的问题,目前的解决方法可以包括通过混合精度(Mixed-Precision)训练来解决FP16精度溢出。混合精度训练即在模型训练的过程中,同时使用单精度(FP32)和半精度(FP16)进行计算,其中,混合精度训练过程中可以引入权重备份(Weight Backup)、损失放大(Loss Scaling)、精度累加(Precision Accumulated)三种相关的技术,其在训练时在内存中利用FP16来执行存储和乘法从而加速计算,并且利用FP32执行累加以避免舍入误差,从而解决FP16精度溢出的问题。但是,对于混合精度训练,存在以下两个缺陷:(1)损失放大——在一些情况下,即使使用了混合精度训练的方法,在激活梯度的值过小的情况下仍会造成数据下溢,从而导致模型无法收敛的问题;(2)需要重新训练模型——采用混合精度训练方法的时间成本较大,尤其对于大规模神经网络模型,重新训练需要花费更多时间成本。
本公开基于此,提供了一种利用神经网络模型进行推理的方法,通过分析用于加速深度学习模型推理的技术导致语音识别模型的精度下降的原因,针对该原因提出了包括混合精度推理和截断式精度推理的解决方案,以解决用于加速深度学习模型推理的技术在用于语音识别的深度学习模型上的应用中出现的精度溢出问题。
本公开的实施例所提供的方法相比于传统的精度溢出解决方法而言,能够确定神经网络模型中发生精度溢出的重要原因,并针对该原因基于模型结构进行分析来确定解决方案,所确定的解决方案不会放大模型损失,并且不需要对模型进行重新训练,在保证模型精度的同时显著提升了模型的推理速度。
本公开的实施例所提供的方法通过对使用GPU的半精度浮点数格式来加速深度学习模型推理的技术导致用于语音识别的神经网络模型的精度下降的原因进行分析,发现了其主要是由于在神经网络模型的残差连接结构中激活张量的相加容易导致精度溢出的问题。针对所发现的精度溢出问题,本公开的实施例所提供的方法提出了包括混合精度推理和截断式精度推理两种可选方案的解决方案,用于根据需要从中择一进行神经网络模型的推理,其中,混合精度推理对于神经网络模型中的不同模块采用不同的精度,而截断式精度推理通过分析发生精度溢出的残差连接结构,对张量相加模块的输出值进行截断处理,并调整其后所连接的层归一化模块中的运算顺序,从而解决了精度溢出问题。通过本公开的实施例所提供的方法,能够提供适用于解决不同应用场景下的精度溢出问题的解决方案,在不需要对神经网络模型进行重新训练的情况下,对神经网络模型的精度几乎没有影响,并且能够显著提升模型推理的速度。
图3是示出根据本公开的实施例的利用神经网络模型进行推理的方法300的流程图。
在本公开的实施例中,利用神经网络模型进行推理的方法可以在神经网络模型的上线过程中实现,其中,神经网络模型的上线是为了使神经网络模型能够在特定环境中(例如,服务器、电子设备等中)运行,而将神经网络模型部署在该特定环境中并实时进行模型推理的过程。
根据本公开的实施例,所述神经网络模型可以采用Conformer语音识别模型结构,其中,将所述Conformer模型结构中的前馈模块替换为快速混合专家FastMoE结构。
可选地,为了提升神经网络模型在语音识别任务下的性能,本公开的利用神经网络模型进行推理的方法可以采用3M-自动语音识别(ASR)模型,其作为WeNet模型的变型,采用Conformer模型与MoE结构的结合,即,将Conformer模型的前馈模块替换为快速混合专家FastMoE结构。图4是示出根据本公开的实施例的Conformer模型的编码器结构的示意图。为了说明目的示出了Conformer模型的编码器结构中的Conformer块的结构,如图4所示,Conformer块401可以包括前馈模块402、多头自注意力模块403、卷积模块404、前馈模块405、以及层归一化模块406,其中每个模块都使用了残差结构。因此,如上所述,本公开的神经网络模型具体地可以将上述Conformer块中的前馈模块(包括前馈模块402和前馈模块405)替换为快速混合专家FastMoE结构,如图4所示,也就是说,将前馈模块的一个FFN替换为FastMoE结构的多个FFN(即专家1、专家2、...、专家n),其中,由分发器(门网络)来控制每个词元(token)由哪个FFN处理。在引入FastMoE结构后,词元可以根据匹配度而被分发给不同的专家处理,使得神经网络模型学习到的参数更具有代表性。
因此,通过上述模型设计,相较于原始的Conformer模型,本公开所采用的神经网络模型在诸如语音识别任务下的性能有了显著提升。
在步骤301中,可以确定在利用所述神经网络模型进行推理的过程中使用GPU的第一精度格式的值进行计算。
与需要保证前后向传播、每次梯度的更新很小导致要求相对较高的精度的模型训练过程相比,神经网络模型的推理过程对于精度的要求相对较低。低精度的推理计算可以减少推理过程的计算量并提高计算速度,例如,原本计算32位(FP32)的单元在处理16位的数据时,理论上可以达到两倍的计算速度,甚至在处理INT(整型)8格式的数据时理论上可以达到四倍的计算速度。此外,在应用更低的计算精度的情况下,神经网络模型需要的存储空间(不管是权值的存储还是中间值的存储)随之减少,因此神经网络模型的大小也会相应减小。
因此,在本公开的实施例中,可以确定采用GPU FP16推理加速技术来加速本公开的神经网络模型的推理过程。具体地,可以在利用所述神经网络模型进行推理的过程中使用第一精度进行计算。
作为示例,本公开中的第一精度可以是半精度浮点数的精度,并且下文中的第二精度可以是单精度浮点数的精度。
图5是示出根据本公开的实施例的半精度浮点数格式与单精度浮点数格式的示意图。如图5所示,单精度浮点数(FP32)的长度为32位(bit),其中,可以用8位表示指数,23位表示小数,1位表示符号;半精度浮点数(FP16)的长度为16位,其中,可以用5位表示指数,10位表示小数,1位表示符号。相比于单精度浮点数,在利用神经网络模型进行推理的过程中使用单精度浮点数可以将计算精度从32位减少到16位,从而减少计算量和内存占用,同时提高计算速度。
在步骤302中,可以响应于检测到所述神经网络模型中的模块在推理过程中发生精度溢出,执行以下中的一项或多项:步骤3021,在所述模块的计算过程中使用第二精度格式的值进行计算,其中,所述第一精度小于所述第二精度;或者步骤3022,响应于检测到所述神经网络模型中的残差连接结构的张量相加模块在计算过程中发生精度溢出,对所述张量相加模块中的发生精度溢出的值进行截断处理,并调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序。
如上所述,使用GPU的FP16推理加速技术可以显著提高深度学习模型的推理速度,从而加快模型的响应速度和处理能力。但是,在显著提高深度学习模型的推理速度的同时,如图5所示,由于FP16计算的有效数据表示范围远小于FP32计算的有效数据表示范围,FP16可能因其狭窄的表示范围而导致数据溢出错误:在神经网络模型的推理过程中计算的数值可能超出FP16的表示范围,即发生精度溢出。其中,精度溢出(PrecisionOverflow)可以指在计算过程中,当使用有限位数的数据类型进行数值计算时,结果的精度超出了所能表示的范围,导致信息丢失和计算错误的现象。这种情况通常发生在浮点数计算中,特别是在进行大范围数值计算或累积计算时。精度溢出可能导致结果舍入错误、数值精度丢失、计算结果偏差等问题,从而影响计算的准确性和可靠性。在编程中,合理选择数据类型、进行适当的舍入和截断处理以及增加计算精度的技术手段可以帮助避免或减少精度溢出的问题。
可选地,在神经网络模型的推理过程中,可以对其中发生的错误进行检测和定位。在本公开的实施例中,通过对使用上述神经网络模型和FP16推理加速技术的推理过程中的错误进行分析,发现了FP16推理加速技术导致上述神经网络模型(即,3M-ASR模型)的精度显著下降的原因。
图6是示出根据本公开的实施例的神经网络模型的残差连接结构中激活张量的相加导致精度溢出的示意图。
如图6所示,神经网络模型的残差连接结构的一个示例可以包括输入601通过两条路径传入张量相加模块603,其中,一条路径是将该输入601直接传入张量相加模块603,而另一条路径是将输入601通过fast_moe模块(FastMoE模块)602计算后再传入张量相加模块603,以供张量相加模块603对所接收的两个张量输入进行相加,然后将加和通过层归一化模块604进行归一化处理,以加速模型的计算,使其更快地收敛。上述残差连接结构中的fast_moe模块602可以对应于图4中的前馈模块402,即,作为该前馈模块402的替代,而张量相加模块603和层归一化模块604可以对应于该前馈模块402后序连接的相加(图中示为)操作部分。因此,通过利用残差连接结构对张量输入601完成张量相加和层归一化之后,可以进入下一多头自注意力模块403的处理,即对应于图6中的多头自注意力模块605以及另一张量相加模块606和层归一化模块607。
因此,在本公开的实施例中,通过对使用上述神经网络模型和FP16推理加速技术的推理过程中的错误进行分析,发现在图6所示的残差连接结构中的张量相加模块(例如,张量相加模块603)处发生精度溢出的概率较高,这是因为,在利用张量相加模块对输入的激活张量进行相加时,由于所使用的第一精度的有效数据表示范围有限,并且输入601与fast_moe模块602的输出结果的值域相差较大,进行逐元素相加操作容易致使加和的数值超出该表示范围,导致出现精度溢出错误,例如向上溢出或向下溢出,进而使得该张量相加模块输出的值为非数。
针对在此场景下的精度溢出问题,本公开的利用神经网络模型进行推理的方法提出了一组离线解决方案,分别针对不同的性能目标进行权衡,以解决不同性能要求下的精度溢出问题。当然,应当理解,本公开的利用神经网络模型进行推理的方法并不局限于使用上述神经网络模型和FP16推理加速技术的场景,在不脱离本公开的范围的情况下,还可以对诸如神经网络模型的结构、所选用的数据精度格式等进行调整,以使本公开的利用神经网络模型进行推理的方法可以适用于其他场景下的神经网络模型计算。
根据本公开的实施例,响应于检测到所述神经网络模型中的模块在推理过程中发生精度溢出,执行以下中的一项或多项可以包括:根据所述神经网络模型的推理需求确定所述执行,所述推理需求包括纠错速度优先或推理速度优先,其中,所述纠错速度优先对应于以最大化解决所述神经网络模型在推理过程中发生的精度溢出的速度为目标,并且所述推理速度优先对应于以最大化所述推理的速度为目标。
可选地,在本公开的实施例中,可以包括两种用于解决精度溢出的方案,这两种解决方案分别针对不同的推理需求,用于实现不同的优化目标。例如,在优先考虑问题解决的速度的情况下,可以选择两种解决方案中更具普适性和鲁棒性的解决方案,以尽可能快的速度完成纠错,从而尽快实现模型上线。又例如,在优先考虑模型推理速度的情况下,可以对模型中检测到的发生精度溢出的具体结构进行分析,以优化模型的推理过程,从而最大化模型推理的速度。
如上参考步骤3021和步骤3022所述,针对精度溢出的一种解决方案可以是混合精度推理方案,即,在所述模块的计算过程中使用第二精度格式的值进行计算,而另一种解决方案可以是截断式纯精度推理方案,即,响应于检测到所述神经网络模型中的残差连接结构的张量相加模块在计算过程中发生精度溢出,对所述张量相加模块中的发生精度溢出的值进行截断处理,并调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序。
下面对上述步骤3021和步骤3022所涉及的两种解决方案分别进行具体描述。
首先,对于步骤3021所涉及的混合精度推理方案,根据本公开的实施例,在所述模块的计算过程中使用第二精度格式的值进行计算可以包括:对于所述模块,使用第二精度格式的值进行计算,并且所述神经网络模型中的其他模块仍使用第一精度格式的值进行计算,其中,所述模块可以包括所述神经网络模型中发生精度溢出的残差连接结构的张量相加模块和所述张量相加模块后序连接的层归一化模块。
可选地,在本公开的混合精度推理方案中,可以针对神经网络模型中的不同模块选择不同精度格式进行计算。例如,可以针对神经网络模型整体使用第一精度格式的值进行计算,但是,针对其中发生精度溢出的模块,可以改用第二精度格式的值进行计算。
图7是示出根据本公开的实施例的基于混合精度推理方案的神经网络模型的精度设置的示意图。图7所示的结构与图6所示的结构类似。
如图7所示,对于发生精度溢出的张量相加模块705及其后序连接的层归一化模块,可以使用单精度浮点数(图7中示为“float”)格式的值进行计算,而对于未发生精度溢出的其他模块,仍然保持使用半精度浮点数(图7中示为“half”)格式的值进行计算,从而有效解决FP16模式下的精度溢出问题。
根据本公开的实施例,对于所述模块,使用第二精度格式的值进行计算还可以包括:在所述模块的输入和输出中的至少一处增加类型转换模块,以用于实现第一精度格式与第二精度格式之间的转换。
可选地,由于对于同一神经网络模型中的不同模块使用了具有不同精度的数据格式,需要在使用不同数据格式进行计算的相连模块之间附加地设置类型转换模块,用于实现不同数据格式之间的转换。例如,如图7所示,对于因发生精度溢出而使用第二精度格式的值进行计算的张量相加模块705,由于其一端的输入701的数据格式为第一精度,并且另一端由fast_moe模块702输入的数据格式同样为第一精度,因此需要在该张量相加模块705的两个输入端各设置一个类型转换模块,以将第一精度格式的数据转换为第二精度格式的数据(例如,图7中示为“half→float”)用于计算。应当理解,在该场景下,不能仅对发生精度溢出的张量相加模块705第二精度格式的值进行计算,因为该张量相加模块705所生成的计算结果在进行第二精度格式的数据至第一精度格式的类型转换操作时仍会发生溢出。也就是说,除了发生精度溢出的张量相加模块外,还需要对其后序连接的层归一化模块(例如,层归一化模块706)进行精度调整。因此,对于使用第二精度格式的值进行计算的层归一化模块706,其与同样使用第二精度格式的值进行计算的张量相加模块705之间无需设置类型转换模块,但该层归一化模块706的输出端由于需要连接至未发生精度溢出的、使用第一精度格式的值进行计算的张量相加模块709和多头自注意力模块708,因此需要在该层归一化模块706的输出端也设置一个附加的类型转换模块,以将第二精度格式的数据转换为第一精度格式的数据(例如,图7中示为“float→half”)。
因此,在本公开的混合精度推理方案中,为了针对神经网络模型中的不同模块选择不同精度格式进行计算,还需要在神经网络模型中附加地添加多个类型转换模块。如上所述,本公开的混合精度推理方案能够以尽可能快的速度完成纠错,具有较高的普适性和鲁棒性。因此,根据本公开的实施例,确定所述执行可以包括:在所述神经网络模型的推理需求为推理速度优先的情况下,在所述模块的计算过程中使用第二精度格式的值进行计算。也就是说,对于优先考虑问题解决的速度的应用场景,可以优选地使用本公开的混合精度推理方案来解决精度溢出问题。
接下来,对于截断式纯精度推理方案,根据本公开的实施例,对于所述神经网络模型中发生精度溢出的残差连接结构的张量相加模块,对所述张量相加模块中的发生精度溢出的值进行截断处理可以包括:对于所述发生精度溢出的值,在所述值大于第一精度的取值范围中的最大值的情况下,将所述值设置为所述最大值,并且在所述值小于第一精度的取值范围中的最小值的情况下,将所述值设置为所述最小值。
可选地,如上所述,本公开的截断式纯精度推理方案所涉及的截断处理可以指对于发生精度溢出的值(即,超出第一精度的取值范围的数值),将该值设置为该取值范围的对应最值,例如,最大值或最小值。
在对张量相加模块中的发生精度溢出的值进行上述截断处理后,在神经网络模型中还可能发生与该张量相加模块相关的精度溢出。因为对于与该张量相加模块相连接的后序层归一化模块,仍可能发生精度溢出。
具体地,层归一化模块中的计算公式可以表示如下:
如上式(1)所示,对于层归一化模块的输入,假设其维度为[B,S,D],层归一化模块对输入的最后一维D进行归一化操作。在式(1)中,x可以表示维度D中的每一个值,E[x]可以表示数组D的均值,而分母可以表示数组D的标准差,其他字符(γ、β和∈)均为参数。
参考式(1),在对张量相加模块中的所有发生精度溢出的值进行上述截断处理后,这些值已被设置为第一精度的取值范围的最值,而对于式(1)中的x-E[x]部分,在x已被赋以最值的情况下,当E[x]与x的符号相反,则该部分将会再次发生精度溢出。例如,在x通过截断处理被设置为第一精度的取值范围的最大值的情况下,当E[x]为负值,则x-E[x]的值将会再次超出第一精度的取值范围。
因此,针对上述问题,本公开的截断式纯精度推理方案基于对该模型结构的分析,提出了在不需要设置额外的类型转换模块的情况下仅通过对模型的计算方案进行调整来解决精度溢出的方法。
根据本公开的实施例,对于所述神经网络模型中发生精度溢出的残差连接结构的张量相加模块,调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序可以包括:基于所述层归一化模块中的计算公式,确定所述层归一化模块中发生精度溢出的具体位置;以及基于所确定的具体位置,确定能够避免所述层归一化模块发生精度溢出的计算方案,并调整所述计算过程中的运算顺序。
可选地,可以首先分析层归一化模块中的计算公式,以确定该计算公式中具体可能发生精度溢出的部分,例如,上述x-E[x]部分。因此,可以对与该可能发生精度溢出的部分相关的计算进行分析,以确定计算方案。例如,对于上式(1),var[x]为x的方差,sqrt(var[x])为x的标准差。通过对x的方差和标准差的值域进行分析,可以确定x除以其标准差的值将会显著小于x。
图8是示出根据本公开的实施例的层归一化模块的输入的标准差的示例直方图。如图8所示,图8对共有39897帧的测试集进行统计,得出x的标准差sqrt(var[x])的值域基本在2000-3500之间,即x除以其标准差的值将会明显变小。
因此,基于以上分析,可以确定对于上述x-E[x]部分,先计算其中各个数值与分母的比值再基于各自的比值进行计算的计算方案可以避免层归一化模块中发生精度溢出。
根据本公开的实施例,对于所述层归一化模块,经调整的运算顺序可以包括:对所述计算公式的分式中的分子进行拆分,以获得具有相同分母的多个临时分式;对所述多个临时分式中的每个临时分式分别执行除法运算,以获得与所述多个临时分式相对应的多个除法结果;以及基于所述多个除法结果以及所述多个临时分子之间的计算关系,确定所述层归一化模块的输出。其中,临时分式和临时分子是涉及除法计算过程中产生的中间量。
可选地,如上所述,对于上式(1)所示的计算公式,可以首先分别计算x和E[x]各自与分母sqrt(var[x]+∈)的除法,即计算x和E[x]各自与分母sqrt(var[x]+∈)所构成的临时分式,其中,x和E[x]分别作为相应临时分子的临时分子,以减小各部分的数值,从而降低发生精度溢出的概率。接下来,可以对x和E[x]各自与分母sqrt(var[x]+∈)的除法的结果进行减法运算。上述经调整的运算顺序可以有效解决层归一化模块中的精度溢出问题。
因此,在本公开的截断式纯精度推理方案中,不需要在神经网络模型中附加地添加多个类型转换模块,而是通过分析模型的具体结构和计算公式,确定可能发生精度溢出的具体位置,从而通过对应的计算方案调整来解决精度溢出问题。如上所述,本公开的混合精度推理方案能够以尽可能快的速度完成纠错,具有较高的普适性和鲁棒性。因此,根据本公开的实施例,确定所述执行还可以包括:在所述神经网络模型的推理需求为推理速度优先的情况下,对于所述神经网络模型中发生精度溢出的残差连接结构的张量相加模块,对所述张量相加模块中的发生精度溢出的值进行截断处理,并调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序。该截断式纯精度推理方案可以有效解决3M-ASR模型在FP16模式下的精度溢出问题,在对精度几乎没有影响并且不需要模型重训练的情况下,有效提升推理速度。也就是说,对于优先考虑模型推理的速度的应用场景,可以优选地使用本公开的截断式纯精度推理方案来解决精度溢出问题。
如上参考步骤301-302所述,本公开提出了包括混合精度推理和截断式纯精度推理两种可选方案的精度溢出解决方案,以提供适用于解决不同应用场景下的精度溢出问题的解决方案。下表1给出了这两种方案与传统的使用第二精度格式的数据进行模型推理的方法针对不同大小的输入的推理速度。
表1推理速度对比
输入大小 1x206 4x206 8x206
FP32版本 15.238ms 39.6769ms 66.6761ms
混合精度推理 12.7748ms 20.4268ms 31.3765ms
截断式纯精度推理 11.5641ms 16.9486ms 25.0317ms
如上表1所示,针对本公开的神经网络模型在FP16模式下的精度溢出问题,本公开的两种方案在不需要重新训练的情况下,与FP32版本的推理方法相比,均获得了显著的速度提升,其中,例如,对于大小为4x206的输入,混合精度推理方案获得了94%的速度提升,而截断式纯精度推理方案获得了134%的速度提升。
此外,本公开的利用神经网络模型进行推理的方法相比于传统的精度溢出解决方法而言,通过确定神经网络模型中发生精度溢出的重要原因,并针对该原因基于模型结构进行分析来确定解决方案,所确定的解决方案不会放大模型损失,并且不需要对模型进行重新训练,在保证模型精度的同时显著提升了模型的推理速度。
综上所述,本公开的利用神经网络模型进行推理的方法通过对使用GPU的半精度浮点数格式来加速深度学习模型推理的技术导致用于语音识别的神经网络模型的精度下降的原因进行分析,发现了其主要是由于在神经网络模型的残差连接结构中激活张量的相加容易导致精度溢出的问题。针对所发现的精度溢出问题,本公开的方法提出了包括混合精度推理和截断式精度推理两种可选方案的解决方案,用于根据需要从中择一进行神经网络模型的推理,其中,混合精度推理对于神经网络模型中的不同模块采用不同的精度,而截断式精度推理通过分析发生精度溢出的残差连接结构,对张量相加模块的输出值进行截断处理,并调整其后所连接的层归一化模块中的运算顺序,从而解决了精度溢出问题。通过本公开的方法,能够提供适用于解决不同应用场景下的精度溢出问题的解决方案,在不需要对神经网络模型进行重新训练的情况下,对神经网络模型的精度几乎没有影响,并且能够显著提升模型推理的速度。
图9是示出根据本公开的实施例的利用神经网络模型进行推理的装置900的示意图。
根据本公开的实施例,所述利用神经网络模型进行推理的装置900可以包括精度确定模块901和溢出解决模块902。
作为示例而非限制,本公开的利用神经网络模型进行推理的装置可以采用3M-自动语音识别(ASR)模型,其作为WeNet模型的变型,采用Conformer模型与MoE结构的结合,即,将Conformer模型的前馈模块替换为快速混合专家FastMoE结构。通过这样的模型设计,相较于原始的Conformer模型,本公开所采用的神经网络模型在语音识别任务下的性能有了显著提升。
精度确定模块901可以被配置为确定在利用所述神经网络模型进行推理的过程中使用GPU的第一精度格式的值进行计算。可选地,精度确定模块901可以执行如上参考步骤301所描述的操作。与需要保证前后向传播、每次梯度的更新很小导致要求相对较高的精度的模型训练过程相比,神经网络模型的推理过程对于精度的要求相对较低。低精度的推理计算可以减少推理过程的计算量并提高计算速度,例如,原本计算32位(FP32)的单元在处理16位的数据时,理论上可以达到两倍的计算速度,甚至在处理INT(整型)8格式的数据时理论上可以达到四倍的计算速度。此外,在应用更低的计算精度的情况下,神经网络模型需要的存储空间(不管是权值的存储还是中间值的存储)随之减少,因此神经网络模型的大小也会相应减小。因此,在本公开的精度确定模块901中,可以确定采用GPU FP16推理加速技术来加速本公开的神经网络模型的推理过程。具体地,可以在利用所述神经网络模型进行推理的过程中使用第一精度进行计算。
溢出解决模块902可以被配置为溢出解决模块,被配置为响应于检测到所述神经网络模型中的模块在推理过程中发生精度溢出,执行以下中的一项或多项:在所述模块的计算过程中使用第二精度格式的值进行计算;或者响应于检测到所述神经网络模型中的残差连接结构的张量相加模块在计算过程中发生精度溢出,对所述张量相加模块中的发生精度溢出的值进行截断处理,并调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序。可选地,溢出解决模块902可以执行如上参考步骤302所描述的操作。
如上所述,使用GPU的FP16推理加速技术可以显著提高深度学习模型的推理速度,从而加快模型的响应速度和处理能力。但是,在显著提高深度学习模型的推理速度的同时,FP16可能因其狭窄的表示范围而导致数据溢出错误:在神经网络模型的推理过程中计算的数值可能超出FP16的表示范围,即发生精度溢出。可选地,在利用神经网络模型进行推理的过程中,可以对其中发生的错误进行检测和定位。在本公开的实施例中,通过对使用上述神经网络模型和FP16推理加速技术的推理过程中的错误进行分析,发现在神经网络模型的残差连接结构中的张量相加模块处发生精度溢出的概率较高,这是因为,在利用张量相加模块对输入的激活张量进行相加时,由于所使用的第一精度的有效数据表示范围有限,并且输入与fast_moe模块的输出结果的值域相差较大,进行逐元素相加操作容易致使加和的数值超出该表示范围,导致出现精度溢出错误,例如向上溢出或向下溢出,进而使得该张量相加模块输出的值为非数。
因此,针对在此场景下的精度溢出问题,在溢出解决模块902中,可以采用一组离线解决方案,分别针对不同的性能目标进行权衡,以解决不同性能要求下的精度溢出问题。当然,应当理解,本公开的利用神经网络模型进行推理的装置并不局限于使用上述神经网络模型和FP16推理加速技术的场景,在不脱离本公开的范围的情况下,还可以对诸如神经网络模型的结构、所选用的数据精度格式等进行调整,以使本公开的利用神经网络模型进行推理的装置可以适用于其他场景下的神经网络模型计算。
可选地,在溢出解决模块902中,可以采用包括两种用于解决精度溢出的方案,这两种解决方案分别针对不同的推理需求,用于实现不同的优化目标。例如,在优先考虑问题解决的速度的情况下,可以选择两种解决方案中更具普适性和鲁棒性的解决方案,以尽可能快的速度完成纠错,从而尽快实现模型上线。又例如,在优先考虑模型推理速度的情况下,可以对模型中检测到的发生精度溢出的具体结构进行分析,以优化模型的推理过程,从而最大化模型推理的速度。其中,具体地,针对精度溢出的一种解决方案可以是混合精度推理方案,即,在所述模块的计算过程中使用第二精度格式的值进行计算,而另一种解决方案可以是截断式纯精度推理方案,即,响应于检测到所述神经网络模型中的残差连接结构的张量相加模块在计算过程中发生精度溢出,对所述张量相加模块中的发生精度溢出的值进行截断处理,并调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序。
例如,对于溢出解决模块902中所采用的混合精度推理方案,可以针对神经网络模型中的不同模块选择不同精度格式进行计算。例如,可以针对神经网络模型整体使用第一精度格式的值进行计算,但是,针对其中发生精度溢出的模块,可以改用第二精度格式的值进行计算,从而有效解决FP16模式下的精度溢出问题。可选地,由于对于同一神经网络模型中的不同模块使用了具有不同精度的数据格式,还可以在使用不同数据格式进行计算的相连模块之间附加地设置类型转换模块,用于实现不同数据格式之间的转换。
因此,在上述混合精度推理方案中,为了针对神经网络模型中的不同模块选择不同精度格式进行计算,还需要在神经网络模型中附加地添加多个类型转换模块。如上所述,本公开的混合精度推理方案能够以尽可能快的速度完成纠错,具有较高的普适性和鲁棒性。因此,在本公开的溢出解决模块902中,对于优先考虑问题解决的速度的应用场景,可以优选地使用本公开的混合精度推理方案来解决精度溢出问题。
对于截断式纯精度推理方案,可以对于发生精度溢出的值,在所述值大于第一精度的取值范围中的最大值的情况下,将所述值设置为所述最大值,并且在所述值小于第一精度的取值范围中的最小值的情况下,将所述值设置为所述最小值。其中,截断处理可以指对于发生精度溢出的值(即,超出第一精度的取值范围的数值),将该值设置为该取值范围的对应最值,例如,最大值或最小值。
在截断式纯精度推理方案中,在对张量相加模块中的发生精度溢出的值进行截断处理后,可以首先分析层归一化模块中的计算公式,以确定该计算公式中具体可能发生精度溢出的部分,然后可以对与该可能发生精度溢出的部分相关的计算进行分析,以确定层归一化模块中的计算方案。
因此,在上述截断式纯精度推理方案中,不需要在神经网络模型中附加地添加多个类型转换模块,而是通过分析模型的具体结构和计算公式,确定可能发生精度溢出的具体位置,从而通过对应的计算方案调整来解决精度溢出问题。如上所述,本公开的混合精度推理方案能够以尽可能快的速度完成纠错,具有较高的普适性和鲁棒性。因此,该截断式纯精度推理方案可以有效解决3M-ASR模型在FP16模式下的精度溢出问题,在对精度几乎没有影响并且不需要模型重训练的情况下,有效提升推理速度。也就是说,在本公开的溢出解决模块902中,对于优先考虑模型推理的速度的应用场景,可以优选地使用本公开的截断式纯精度推理方案来解决精度溢出问题。
根据本公开的又一方面,还提供了一种利用神经网络模型进行推理的设备。图10示出了根据本公开的实施例的利用神经网络模型进行推理的设备2000的示意图。
如图10所示,所述利用神经网络模型进行推理的设备2000可以包括一个或多个处理器2010,和一个或多个存储器2020。其中,所述存储器2020中存储有计算机可读代码,所述计算机可读代码当由所述一个或多个处理器2010运行时,可以执行如上所述的利用神经网络模型进行推理的方法。
本公开的实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。上述处理器可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是X86架构或ARM架构的。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
例如,根据本公开的实施例的方法或装置也可以借助于图11所示的计算设备3000的架构来实现。如图11所示,计算设备3000可以包括总线3010、一个或多个CPU3020、只读存储器(ROM)3030、随机存取存储器(RAM)3040、连接到网络的通信端口3050、输入/输出组件3060、硬盘3070等。计算设备3000中的存储设备,例如ROM 3030或硬盘3070可以存储本公开提供的利用神经网络模型进行推理的方法的处理和/或通信使用的各种数据或文件以及CPU所执行的程序指令。计算设备3000还可以包括用户界面3080。当然,图11所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图11示出的计算设备中的一个或多个组件。
根据本公开的又一方面,还提供了一种计算机可读存储介质。述计算机存储介质上存储有计算机可读指令。当所述计算机可读指令由处理器运行时,可以执行参照以上附图描述的根据本公开的实施例的利用神经网络模型进行推理的方法。本公开的实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、增强型同步动态随机存取存储器(ESDRAM)、同步连接动态随机存取存储器(SLDRAM)和直接内存总线随机存取存储器(DR RAM)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本公开的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行根据本公开的实施例的利用神经网络模型进行推理的方法。
本公开的实施例提供了一种利用神经网络模型进行推理的方法、装置、设备和计算机可读存储介质。
本公开的实施例所提供的方法相比于传统的精度溢出解决方法而言,能够确定神经网络模型中发生精度溢出的重要原因,并针对该原因基于模型结构进行分析来确定解决方案,所确定的解决方案不会放大模型损失,并且不需要对模型进行重新训练,在保证模型精度的同时显著提升了模型的推理速度。
本公开的实施例所提供的方法通过对使用GPU的半精度浮点数格式来加速深度学习模型推理的技术导致用于语音识别的神经网络模型的精度下降的原因进行分析,发现了其主要是由于在神经网络模型的残差连接结构中激活张量的相加容易导致精度溢出的问题。针对所发现的精度溢出问题,本公开的实施例所提供的方法提出了包括混合精度推理和截断式精度推理两种可选方案的解决方案,用于根据需要从中择一进行神经网络模型的推理,其中,混合精度推理对于神经网络模型中的不同模块采用不同的精度,而截断式精度推理通过分析发生精度溢出的残差连接结构,对张量相加模块的输出值进行截断处理,并调整其后所连接的层归一化模块中的运算顺序,从而解决了精度溢出问题。通过本公开的实施例所提供的方法,能够提供适用于解决不同应用场景下的精度溢出问题的解决方案,在不需要对神经网络模型进行重新训练的情况下,对神经网络模型的精度几乎没有影响,并且能够显著提升模型推理的速度。
需要说明的是,附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含至少一个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
在上面详细描述的本公开的示例实施例仅仅是说明性的,而不是限制性的。本领域技术人员应该理解,在不脱离本公开的原理和精神的情况下,可对这些实施例或其特征进行各种修改和组合,这样的修改应落入本公开的范围内。

Claims (13)

1.一种利用神经网络模型进行推理的方法,所述方法包括:
确定在利用所述神经网络模型进行推理的过程中使用GPU的第一精度格式的值进行计算;以及
响应于检测到所述神经网络模型中的模块在推理过程中发生精度溢出,执行以下中的一项或多项:
在所述模块的计算过程中使用第二精度格式的值进行计算,其中,所述第一精度小于所述第二精度;或者
响应于检测到所述神经网络模型中的残差连接结构的张量相加模块在计算过程中发生精度溢出,对所述张量相加模块中的发生精度溢出的值进行截断处理,并调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序。
2.如权利要求1所述的方法,其中,在所述模块的计算过程中使用第二精度格式的值进行计算包括:
对于所述模块,使用第二精度格式的值进行计算,并且所述神经网络模型中的其他模块仍使用第一精度格式的值进行计算,其中,所述模块包括所述神经网络模型中发生精度溢出的残差连接结构的张量相加模块和所述张量相加模块后序连接的层归一化模块。
3.如权利要求2所述的方法,其中,对于所述模块,使用第二精度格式的值进行计算还包括:
在所述模块的输入和输出中的至少一处增加类型转换模块,以用于实现第一精度格式与第二精度格式之间的转换。
4.如权利要求1所述的方法,其中,对于所述神经网络模型中发生精度溢出的残差连接结构的张量相加模块,对所述张量相加模块中的发生精度溢出的值进行截断处理包括:
对于所述发生精度溢出的值,在所述值大于所述第一精度的取值范围中的最大值的情况下,将所述值设置为所述最大值,并且在所述值小于所述第一精度的取值范围中的最小值的情况下,将所述值设置为所述最小值。
5.如权利要求4所述的方法,其中,对于所述神经网络模型中发生精度溢出的残差连接结构的张量相加模块,调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序包括:
基于所述层归一化模块中的计算公式,确定所述层归一化模块中发生精度溢出的具体位置;以及
基于所确定的具体位置,确定能够避免所述层归一化模块发生精度溢出的计算方案,并调整所述计算过程中的运算顺序。
6.如权利要求5所述的方法,其中,对于所述层归一化模块,经调整的运算顺序包括:
对所述计算公式的分式中的分子进行拆分,以获得具有相同分母的多个临时分式;
对所述多个临时分式中的每个临时分式分别执行除法运算,以获得与所述多个临时分式相对应的多个除法结果;以及
基于所述多个除法结果以及所述多个临时分子之间的计算关系,确定所述层归一化模块的输出。
7.如权利要求1所述的方法,其中,响应于检测到所述神经网络模型中的模块在推理过程中发生精度溢出,执行以下中的一项或多项包括:
根据所述神经网络模型的推理需求确定所述执行,所述推理需求包括纠错速度优先或推理速度优先,其中,所述纠错速度优先对应于以最大化解决所述神经网络模型在推理过程中发生的精度溢出的速度为目标,并且所述推理速度优先对应于以最大化所述推理的速度为目标。
8.如权利要求7所述的方法,其中,确定所述执行包括:
在所述神经网络模型的推理需求为推理速度优先的情况下,在所述模块的计算过程中使用第二精度格式的值进行计算;以及
在所述神经网络模型的推理需求为推理速度优先的情况下,对于所述神经网络模型中发生精度溢出的残差连接结构的张量相加模块,对所述张量相加模块中的发生精度溢出的值进行截断处理,并调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序。
9.如权利要求1所述的方法,其中,所述神经网络模型采用变形器语音识别模型结构,其中,将所述变形器模型结构中的前馈模块替换为快速混合专家结构。
10.一种利用神经网络模型进行推理的装置,包括:
精度确定模块,被配置为确定在利用所述神经网络模型进行推理的过程中使用GPU的第一精度格式的值进行计算;
溢出解决模块,被配置为响应于检测到所述神经网络模型中的模块在推理过程中发生精度溢出,执行以下中的一项或多项:
在所述模块的计算过程中使用第二精度格式的值进行计算;或者
响应于检测到所述神经网络模型中的残差连接结构的张量相加模块在计算过程中发生精度溢出,对所述张量相加模块中的发生精度溢出的值进行截断处理,并调整所述张量相加模块后序连接的层归一化模块的计算过程中的运算顺序。
11.一种利用神经网络模型进行推理的设备,包括:
一个或多个处理器;以及
一个或多个存储器,其中存储有计算机可执行程序,当由所述处理器执行所述计算机可执行程序时,执行权利要求1-9中任一项所述的方法。
12.一种计算机程序产品,所述计算机程序产品存储在计算机可读存储介质上,并且包括计算机指令,所述计算机指令在由处理器运行时使得计算机设备执行权利要求1-9中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机可执行指令,所述指令在被处理器执行时用于实现如权利要求1-9中任一项所述的方法。
CN202310887959.0A 2023-07-18 2023-07-18 利用神经网络模型进行推理的方法和装置 Pending CN116957024A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310887959.0A CN116957024A (zh) 2023-07-18 2023-07-18 利用神经网络模型进行推理的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310887959.0A CN116957024A (zh) 2023-07-18 2023-07-18 利用神经网络模型进行推理的方法和装置

Publications (1)

Publication Number Publication Date
CN116957024A true CN116957024A (zh) 2023-10-27

Family

ID=88452350

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310887959.0A Pending CN116957024A (zh) 2023-07-18 2023-07-18 利用神经网络模型进行推理的方法和装置

Country Status (1)

Country Link
CN (1) CN116957024A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117170622A (zh) * 2023-11-03 2023-12-05 深圳鲲云信息科技有限公司 累加器及用于累加器的方法和芯片电路及计算设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117170622A (zh) * 2023-11-03 2023-12-05 深圳鲲云信息科技有限公司 累加器及用于累加器的方法和芯片电路及计算设备
CN117170622B (zh) * 2023-11-03 2024-03-01 深圳鲲云信息科技有限公司 累加器及用于累加器的方法和芯片电路及计算设备

Similar Documents

Publication Publication Date Title
US20180268533A1 (en) Digital Image Defect Identification and Correction
CN112232346B (zh) 语义分割模型训练方法及装置、图像语义分割方法及装置
CN111783974A (zh) 模型构建及图像处理方法、装置、硬件平台及存储介质
CN113128478B (zh) 模型训练方法、行人分析方法、装置、设备及存储介质
CN113505797B (zh) 模型训练方法、装置、计算机设备和存储介质
CN114549913B (zh) 一种语义分割方法、装置、计算机设备和存储介质
CN113435594B (zh) 安防检测模型训练方法、装置、设备及存储介质
CN113435499B (zh) 标签分类方法、装置、电子设备和存储介质
CN115210719A (zh) 用于执行机器学习模型的自适应量化
CN116957024A (zh) 利用神经网络模型进行推理的方法和装置
CN111898735A (zh) 蒸馏学习方法、装置、计算机设备和存储介质
US20230068381A1 (en) Method and electronic device for quantizing dnn model
CN111783935B (zh) 卷积神经网络构建方法、装置、设备及介质
CN111898544A (zh) 文字图像匹配方法、装置和设备及计算机存储介质
CN111709415A (zh) 目标检测方法、装置、计算机设备和存储介质
CN113780365B (zh) 样本生成方法和装置
CN112667754B (zh) 大数据处理方法、装置、计算机设备及存储介质
CN116433977B (zh) 未知类别图像分类方法、装置、计算机设备及存储介质
CN110889316B (zh) 一种目标对象识别方法、装置及存储介质
CN116703944A (zh) 图像分割方法、图像分割装置、电子设备及存储介质
CN116128073A (zh) 基于域增量学习的模型调优方法、装置、设备及存储介质
CN109583512B (zh) 图像处理方法、装置及系统
CN112418098A (zh) 视频结构化模型的训练方法及相关设备
CN116071375B (zh) 图像分割方法和装置、存储介质及电子设备
CN118312797B (zh) 一种相似度确定方法、装置和设备及计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication