一种模型部署方法、装置、整车控制器及存储介质
文献发布时间:2023-06-19 18:29:06
技术领域
本发明涉及人工智能技术领域,特别涉及一种模型部署方法、装置、整车控制器及计算机可读存储介质。
背景技术
随着科技的不断发展,终端设备为了实现更为智能化、复杂化的功能,越来越多的终端设备开始搭配神经网络模型,并通过神经网络模型为用户提供服务。
相关技术中,为了保证神经网络模型具有良好的效果,在设计神经网络模型时,通常在神经网络模型的运算过程中会采用精度较高的数据类型,例如单精度浮点类型,在训练神经网络的过程中,为了保证神经网络模型的训练效率,通常并不会过多考虑训练神经网络模式时的运算资源消耗量,会采用性能比较强悍的硬件作为神经网络模型的训练环境,从而训练得到所需的神经网络模型,再将训练好的神经网络模型部署在终端设备上。
在上述方案中,由于采取了精度较高的数据类型对神经网络模型进行训练,最终得到的神经网络模型在运行过程中需要消耗大量的运算资源,但终端设备需要考虑成本和功耗的平衡,通常不具备超高性能的运算能力,容易导致神经网络模型部署在终端设备上后运行速度较慢,甚至出现无法运行的情况。
发明内容
有鉴于此,本发明旨在提出一种模型部署方法、装置、整车控制器及计算机可读存储介质,以解决现有技术中终端设备运行神经网络模型速度较慢、效率较差的问题。
为达到上述目的,本发明的技术方案是这样实现的:
第一方面,本发明提供了一种模型部署方法,所述方法包括:
获取待部署神经网络模型;
基于目标数据类型对所述待部署神经网络模型中的网络层进行调整,得到基于所述目标数据类型进行网络推理的目标神经网络模型;其中,所述目标数据类型的指数位位数与单精度浮点类型的指数位位数相同,所述目标数据类型的尾数位位数小于所述单精度浮点类型的尾数位位数;
将所述目标神经网络模型部署在目标终端,以使得所述目标神经网络模型在所述目标终端中采用所述目标数据类型进行模型推理。
可选地,所述基于目标数据类型对所述待部署神经网络模型中的网络层进行调整,得到基于所述目标数据类型进行网络推理的目标神经网络模型,包括:
从所述待部署神经网络模型中确定卷积层和非卷积层;
将所述卷积层对应的数据类型调整为整型类型,将所述非卷积层对应的数据类型调整为目标数据类型,得到基于所述目标数据类型进行网络推理的目标神经网络模型。
可选地,所述将所述卷积层对应的数据类型调整为整型类型,将所述非卷积层对应的数据类型调整为目标数据类型,包括:
将所述卷积层的网络权重的数据类型调整为整型类型;
将所述非卷积层的网络权重的数据类型调整为目标数据类型。
可选地,所述将所述卷积层对应的数据类型调整为整型类型,将所述非卷积层对应的数据类型调整为目标数据类型,得到基于所述目标数据类型进行网络推理的目标神经网络模型,包括:
将所述待部署神经网络模型输入所述目标终端对应的编译器;
根据所述待部署神经网络模型中各个网络层与数据类型的对应关系,调整所述编译器的量化参数,并使所述编译器基于所述量化参数对所述待部署神经网络模型进行量化,得到基于所述目标数据类型进行网络推理的目标神经网络模型。
可选地,所述基于目标数据类型对所述待部署神经网络模型中的网络层进行调整,包括:
获取所述待部署神经网络模型中的网络层对应的网络权重;
在所述网络权重满足目标预设条件的情况下,基于目标数据类型对所述待部署神经网络模型中的网络层进行调整;
在所述网络权重不满足所述目标预设条件,且所述网络层对应的数据类型为单精度浮点类型的情况下,保持所述待部署神经网络模型中的网络层对应的数据类型为单精度浮点类型。
可选地,所述将所述目标神经网络模型部署在目标终端之后,所述方法还包括:
在所述目标神经网络模型的模型推理过程中,获取数据类型为单精度浮点类型的网络层的输出值;
根据所述数据类型为单精度浮点类型的网络层的下一层网络层对应的数据类型,对所述输出值进行类型转化,得到输入值;
将所述输入值输入所述下一层网络层。
可选地,所述根据所述数据类型为单精度浮点类型的网络层的下一层网络层对应的数据类型,对所述输出值进行类型转化,得到输入值,包括:
在所述下一层网络层对应的数据类型为目标数据类型的情况下,将所述输出值的数据类型转换为目标数据类型,得到输入值;
在所述下一层网络层对应的数据类型为整型类型的情况下,将所述输出值的数据类型转换为整型类型,得到输入值。
可选地,所述目标数据类型为BF16数据类型。
第二方面,本发明提供了一种模型部署装置,所述装置包括:
获取模块,用于获取待部署神经网络模型;
调整模块,用于基于目标数据类型对所述待部署神经网络模型中的网络层进行调整,得到基于所述目标数据类型进行网络推理的目标神经网络模型;其中,所述目标数据类型的指数位位数与单精度浮点类型的指数位位数相同,所述目标数据类型的尾数位位数小于所述单精度浮点类型的尾数位位数;
部署模块,用于将所述目标神经网络模型部署在目标终端,以使得所述目标神经网络模型在所述目标终端中采用所述目标数据类型进行模型推理。
可选地,所述调整模块包括:
确定子模块,用于从所述待部署神经网络模型中确定卷积层和非卷积层;
调整子模块,用于将所述卷积层对应的数据类型调整为整型类型,将所述非卷积层对应的数据类型调整为目标数据类型,得到基于所述目标数据类型进行网络推理的目标神经网络模型。
可选地,所述调整子模块包括:
卷积层调整子模块,用于将所述卷积层的网络权重的数据类型调整为整型类型;
非卷积层调整子模块,用于将所述非卷积层的网络权重的数据类型调整为目标数据类型。
可选地,所述调整子模块包括:
输入子模块,用于将所述待部署神经网络模型输入所述目标终端对应的编译器;
量化子模块,用于根据所述待部署神经网络模型中各个网络层与数据类型的对应关系,调整所述编译器的量化参数,并使所述编译器基于所述量化参数对所述待部署神经网络模型进行量化,得到基于所述目标数据类型进行网络推理的目标神经网络模型。
可选地,所述调整模块包括:
权重获取子模块,用于获取所述待部署神经网络模型中的网络层对应的网络权重;
第一调整子模块,用于在所述网络权重满足目标预设条件的情况下,基于目标数据类型对所述待部署神经网络模型中的网络层进行调整;
第二调整子模块,用于在所述网络权重不满足所述目标预设条件,且所述网络层对应的数据类型为单精度浮点类型的情况下,保持所述待部署神经网络模型中的网络层对应的数据类型为单精度浮点类型。
可选地,所述装置还包括:
输出值获取模块,用于在所述目标神经网络模型的模型推理过程中,获取数据类型为单精度浮点类型的网络层的输出值;
转化模块,用于根据所述数据类型为单精度浮点类型的网络层的下一层网络层对应的数据类型,对所述输出值进行类型转化,得到输入值;
输入模块,用于将所述输入值输入所述下一层网络层。
可选地,所述转化模块包括:
第一转化子模块,用于在所述下一层网络层对应的数据类型为目标数据类型的情况下,将所述输出值的数据类型转换为目标数据类型,得到输入值;
第二转化子模块,用于在所述下一层网络层对应的数据类型为整型类型的情况下,将所述输出值的数据类型转换为整型类型,得到输入值。
第三方面,本发明提供了一种整车控制器,所述整车控制器包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述模型部署方法。
第四方面,本发明提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令由整车控制器的处理器执行时,使得所述整车控制器能够执行上述模型部署方法。
第五方面,本发明提供了一种车辆,包括上述整车控制器。
相对于现有技术,本发明所述的一种模型部署方法、装置、整车控制器及计算机可读存储介质具有以下优势:
综上,本发明实施例提供了一种模型部署方法,包括:获取待部署神经网络模型;基于目标数据类型对待部署神经网络模型中的网络层进行调整,得到基于目标数据类型进行网络推理的目标神经网络模型;其中,目标数据类型的指数位位数与单精度浮点类型的指数位位数相同,目标数据类型的尾数位位数小于单精度浮点类型的尾数位位数;将目标神经网络模型部署在目标终端,以使得目标神经网络模型在目标终端中采用目标数据类型进行模型推理。本发明实施例中,通过将待部署神经网络模型中网络层对应的数据类型调整为目标数据类型,得到目标数据模型,将目标数据模型部署在目标终端上之后,可以采用位数较少的目标数据类型进行模型推理,从而可以降低推理过程所消耗的运算资源,提高目标终端运行神经网络模型的效率。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例提供的一种模型部署方法步骤流程图;
图2为本发明实施例提供的另一种模型部署方法步骤流程图;
图3为本申请实施例提供的一种目标神经网络模型的推理过程示意图;
图4为本发明实施例提供的再一种模型部署方法步骤流程图;
图5为本发明实施例提供的一种模型部署装置的结构框图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面将参考附图并结合实施例来详细说明本发明。
参照图1,示出了本发明实施例提供的一种模型部署方法步骤流程图。
步骤101,获取待部署神经网络模型。
待部署神经网络模型可以是已经完成模型训练,并准备在目标设备上进行部署的神经网络模型,举例来说,很多车辆都装备有自动驾驶功能,通常需要采用神经网络模型实现车辆的自动驾驶功能。在自动驾驶系统的研发阶段,可以对神经网络模型进行训练,并在神经网络模型满足要求后,将神经网络模型部署在车辆上。
为了满足较高的训练精度,实现更好的模型效果,在神经网络模型的训练过程中,模型通常采用的数据类型单精度浮点数(FP32),即,模型中各个网络层之间传递单精度浮点数,并使用单精度浮点数进行计算。单精度浮点数的大小为4个字节,其中1bit表示符号位,8bit表示指数位,23bit表示尾数位。
由于单精度浮点数具有较高的精度和表示范围,因此,采用单精度浮点数进行模型训练可以使模型具有较好的精度。在本申请实施例中,待部署神经网络模型可以是基于单精度浮点数训练得到的神经网络模型。
步骤102,基于目标数据类型对所述待部署神经网络模型中的网络层进行调整,得到基于所述目标数据类型进行网络推理的目标神经网络模型;其中,所述目标数据类型的指数位位数与单精度浮点类型的指数位位数相同,所述目标数据类型的尾数位位数小于所述单精度浮点类型的尾数位位数。
在待部署神经网络模型中,具有多个网络层。举例来说,以基于yolov3网络训练得到的待部署神经网络模型,其使用DarkNet53作为主干网络,每个DarkNet53网络结构中都可以包括卷积层、BN层和激活函数层等。这些网络层采用单精度浮点数进行训练,因此如果直接将待部署神经网络模型部署在目标终端上,这些网络层依然会采用单精度浮点数执行模型推理过程(即模型运算过程),导致模型在推理过程中需要消耗大量的运算资源,而处于体积、成本、功耗等考量,目标终端上可能难以搭载高性能的运算单元,使得待部署神经网络模型无法在目标终端上直接部署运行。
因此,在本申请实施例中,提出一种目标数据类型,该目标数据类型的指数位位数与单精度浮点类型的指数位位数相同。由于目标数据类型的指数位位数与单精度浮点类型的指数位位数相同,因此,两者所能表示的数据范围相同,均为1e
举例来说,在目标数据类型的符号位位数为1bit,指数位位数为8bit,尾数位位数为15bit的情况下,目标数据类型和单精度浮点类型的对比情况可以如下表示1所示:
表1
如表1所示,目标数据类型和单精度浮点由于符号位和指数位相同,因此,两者所能表示的数据范围相同,而目标数据类型的尾数位小于单精度浮点类型,因此,使用目标数据类型作为神经网络的数据类型,可以使神经网络在推理过程中具有更高的运算效率,降低神经网络对硬件性能的需求。
在本申请实施例中,可以对待部署神经网络模型中各个网络层采用的数据类型进行调整,将各个网络层采用的数据类型调整为目标数据类型,调整后的网络层可以接收目标数据类型的数据,并基于目标数据类型的数据进行运算,以降低模型推理过程所需的算力消耗。在对待部署神经网络中各个网络层的数据类型进行转换后,可以得到目标神经网络模型。
步骤103,将所述目标神经网络模型部署在目标终端,以使得所述目标神经网络模型在所述目标终端中采用所述目标数据类型进行模型推理。
在本申请实施例中,目标终端可以是任何可以运行神经网络模型的终端,例如车辆终端、移动通讯终端、服务器终端等。
在一种实施方式中,将目标神经网络模型部署在目标终端可以通过软件部署的方式进行实现,具体地,可以在目标终端上安装目标神经网络模型的代码,从而在目标终端上部署目标神经网络模型。由于目标神经网络模型采用目标数据类型进行运算,可以显著目标神经网络模型在目标终端上进行模型推理时所消耗的运算资源。
在另一种实施方式中,也可以基于目标神经网络模型的模型架构,设计与目标神经网络模型对应的目标处理器,通过目标处理器直接实现目标神经网络模型的功能。由于目标神经网络模型采用目标数据类型进行运算,目标数据类型的运算相较于单精度浮点数的运算可以较大幅度降低需要的运算资源,因此在设计目标处理器时可以通过较少的晶体管满足目标神经网络模型的性能要求,有助于节省目标处理器所需的硅面积,并降低目标处理器所需的制造成本。
举例来说,如果目标神经网络模型是用于实现自动驾驶功能的神经网络,目标终端为车辆终端,则可以采用TensorRT将目标神经网络模型部署在车辆终端上。其中,TensorRT是一款高性能深度学习推理SDK。此SDK包含深度学习推理优化器和运行环境,可为深度学习推理应用提供低延迟和高吞吐量。需要说明的是,技术人员也可以采用其他方式实现对目标神经网络模型的部署,本申请实施例对此并不进行具体限定。
综上,本发明实施例提供了一种模型部署方法,包括:获取待部署神经网络模型;基于目标数据类型对待部署神经网络模型中的网络层进行调整,得到基于目标数据类型进行网络推理的目标神经网络模型;其中,目标数据类型的指数位位数与单精度浮点类型的指数位位数相同,目标数据类型的尾数位位数小于单精度浮点类型的尾数位位数;将目标神经网络模型部署在目标终端,以使得目标神经网络模型在目标终端中采用目标数据类型进行模型推理。本发明实施例中,通过将待部署神经网络模型中网络层对应的数据类型调整为目标数据类型,得到目标数据模型,将目标数据模型部署在目标终端上之后,可以采用位数较少的目标数据类型进行模型推理,从而可以降低推理过程所消耗的运算资源,提高目标终端运行神经网络模型的效率。
参照图2,图2示出了本发明实施例提供的另一种模型部署方法步骤流程图。
步骤201,获取待部署神经网络模型。
此步骤可参见步骤101,本申请实施例不再赘述。
步骤202,获取所述待部署神经网络模型中的网络层对应的网络权重。
由于神经网络模型的特性所致,各个网络层在运算过程中会将输入的数据与该层网络层对应的网络权重(weight)进行复杂运算,从而得到输出的数据。因此,根据网络层对应的网络权重的精度不同,网络层的输出精度可能存在显著差异,举例来说,如果某个网络层对应的网络权重精度较低,该网络层输出数据的精度也较低,使该网络层采用精度较低的目标数据类型进行运算并不会显著影响该网络层的运算精度;而如果某个网络层对应的网络权重精度较高,该网络层输出的精度也较高,可能会超出目标数据类型所能表示的精度极限,在这种情况下如果使该网络层采用精度较低的目标数据类型进行运算可能会对整个模型的精度产生较大影响。
因此,在本申请实施例中,对模型中各个网络层的数据类型进行调整之前,还可以根据各个网络层对应的网络权重判断是否可以对将网络层的数据类型调整为目标数据类型,以在模型的推理效率和推理精度之间取得平衡。
具体地,可以首先从待部署神经网络模型中提取各个网络层对应的网络权重,该网络权重可以由程序自动提取,也可以由技术人员人工进行提取,本申请实施例对网络权重的获取方式并不进行具体限定。
步骤203,在所述网络权重满足目标预设条件的情况下,基于目标数据类型对所述待部署神经网络模型中的网络层进行调整。
目标预设条件可以是网络权重的精度小于某一预设精度,其中,网络权重的精度可以通过小数点后的位数进行表述,举例来说,网络权重A为4.32,网络权重B为5.443,网络权重A小数点后有两位数值,网络权重B小数点后有三维数值,则网络权重A的精度小于网络权重B的精度。
在本申请实施例中,如果某个网络层对应的网络权重满足目标预设条件,则可以将该网络层对应的数据类型调整为目标数据类型。距离来说,如果网络层D的网络权重为343.43556,网络层E的网络权重为763.45827598,目标预设条件为精度小于小数点后7位,由于网络层D的网络权重的精度为小数点后5位,满足目标预设条件,则可以将网络层D的数据类型调整为目标数据类型;而网络层E的网络权重的精度为小数点后7位,不满足目标预设条件,则可以不将网络层E的数据类型调整为目标数据类型。
可选地,步骤203还可以包括:
子步骤2031,从所述待部署神经网络模型中确定卷积层和非卷积层。
在本申请实施例中,考虑到卷积层内进行运算更为复杂,通常消耗的运算资源量较大,因此,在本申请实施例中,还可以对待部署神经网络模型中的卷积层和非卷积层采取不同的数据类型转换方法,将卷积层的数据类型调整为运算速度更快的整型类型,例如INT8类型。
子步骤2032,将所述卷积层对应的数据类型调整为整型类型,将所述非卷积层对应的数据类型调整为目标数据类型,得到基于所述目标数据类型进行网络推理的目标神经网络模型。
在本申请实施例中,从待部署神经网络模型区分出卷积层和非卷积层后,可以将卷积层对应的数据类型调整为整型类型,将非卷积层对应的数据类型调整为目标数据类型,以使得到的目标神经网络模型可以采用混合精度进行模型推理过程,进一步降低目标神经网络模型所消耗的运算资源。
具体地,可以采用以下子步骤20321至子步骤20322的方法对待部署神经网络模型中的卷积层和非卷积层进行数据类型的调整。
可选地,子步骤2032还可以包括:
子步骤20321,将所述卷积层的网络权重的数据类型调整为整型类型。
由于神经网络模型的特性所致,各个网络层在运算过程中会将输入的数据与该层网络层对应的网络权重(weight)进行复杂运算,从而得到输出的数据。也就是说,在神经网络模型的网络层中,采用不同数据类型的网络权重,可以使其使用不同的数据类型进行运算,并输出不同数据类型的结果。因此,在本申请实施例中,为了使卷积层能够采用整型类型进行推理运算,可以将卷积层的网络权重的数据类型调整为整型类型。
子步骤20322,将所述非卷积层的网络权重的数据类型调整为目标数据类型。
在本申请实施例中,为了使非卷积层能够采用目标数据类型进行推理运算,可以将非卷积层的网络权重的数据类型调整为目标数据类型。
步骤204,在所述网络层对应的网络权重不满足目标预设条件,且所述网络层对应的数据类型为单精度浮点类型的情况下,保持所述网络层对应的数据类型为单精度浮点类型。
进一步地,通过固定的目标预设条件,并不一定能非常准确定位到对精度较为敏感的网络层,因此,除上述方法之外,技术人员还可以通过经验、实验等方法从待部署神经网络模型中确定出对精度较为敏感的网络层,并使对精度较为敏感的网络层保持单精度浮点类型。
步骤205,将所述目标神经网络模型部署在目标终端,以使得所述目标神经网络模型在所述目标终端中采用所述目标数据类型进行模型推理。
参照图3,图3示出了本申请实施例提供的一种目标神经网络模型的推理过程示意图,如图3所示,目标神经网络模型可以包括卷积层、BN层和激活函数层,其中BN层和激活函数层为非卷积层。卷积层采用INT8类型的数据进行推理运算,并输出INT32类型的输出值,将卷积层的输出值转换为目标数据类型(此处采用BF16数据类型作为目标数据类型)并输入BN层,BN层采用BF16数据类型进行推理运算并输出数据类型为BF16的输出值,BN层的输出的BF16类型的输出值进入激活函数层,激活函数层同样采用BF16数据类型进行推理运算。使得目标神经网络模型在推理运算过程中无需采用单精度浮点,显著降低了推理运算的资源消耗量,提升了推理速度。
步骤206,在所述目标神经网络模型的模型推理过程中,获取数据类型为单精度浮点类型的网络层的输出值。
由于在步骤204中,出于平衡神经网络模型的推理效率和精度的考虑,某些网络层并未被调整数据类型,其依旧采用单精度浮类型进行推理运算,而数据类型为单精度浮点类型的网络层之后可能连接有目标数据类型的网络层,或整型类型的网络层,因此,这种情况下,需要对数据类型为单精度浮点类型的网络层的输出值进行转换,以便其后的网络层可以正确运算。
具体地,可以在对目标神经网络模型中的网络层进行标注,将单精度浮点类型的网络层标注为目标网络层,并获取目标网络层的每个输出值,以便后续对这些输出值进行数据类型的转换。
步骤207,根据所述数据类型为单精度浮点类型的网络层的下一层网络层对应的数据类型,对所述输出值进行类型转化,得到输入值。
对单精度浮点类型的网络层的输出值进行数据类型转换时,需要根据其后续的下一层网络层对应的数据类型,确定对应的转换方法,具体可以按照子步骤2071至子步骤2072的转换方法进行数据类型的转换。
可选地,步骤207还可以包括:
子步骤2071,在所述下一层网络层对应的数据类型为目标数据类型的情况下,将所述输出值的数据类型转换为目标数据类型,得到输入值。
如果单精度浮点类型的网络层的下一层网络层为目标数据类型,则可以将该单精度浮点类型的网络层的输出值转换为目标数据类型,再将转换后的输出值输入至该目标数据类型的网络层中。
具体地,由于单精度浮点类型和目标数据类型具有相同的符号位和指数位,只有尾数位的位数不同,单精度浮点类型的尾数位多余目标数据类型的尾数位,因此,在将单精度浮点类型的输出值转换为目标数据类型时,只需要对该输出值的尾数位进行“截断”操作,使其尾数位减少到目标数据类型的尾数位数量,即可完成数据类型的转换,无需经过复杂的计算,具有极高的数据转化效率。
举例来说,一个单精度浮点类型的输出值为以下表2所示:
表2
如果目标数据类型为BF16,则对上述表2示出的单精度浮点类型的输出值中的尾数位后16位进行截断后,可以得到如下表3所示的目标数据类型的输出值:
表3
子步骤2072,在所述下一层网络层对应的数据类型为整型类型的情况下,将所述输出值的数据类型转换为整型类型,得到输入值。
此步骤与上述子步骤2071类似,本申请实施例不再赘述。
步骤208,将所述输入值输入所述下一层网络层。
在本申请实施例中,由于采用了仅有尾数位与单精度浮点类型不同的目标数据类型,提升了两者之间的数据转换效率,在目标神经网络模型中同时存在采用目标数据类型的网络层和单精度浮点数据类型的网络层的情况下,可以高效实现两种网络层之间数据类型的转换,在保证目标神经网络模型具有较高推理效率的情况下,依旧保持了较高的精度。
综上,本发明实施例提供了另一种模型部署方法,包括:获取待部署神经网络模型;基于目标数据类型对待部署神经网络模型中的网络层进行调整,得到基于目标数据类型进行网络推理的目标神经网络模型;其中,目标数据类型的指数位位数与单精度浮点类型的指数位位数相同,目标数据类型的尾数位位数小于单精度浮点类型的尾数位位数;将目标神经网络模型部署在目标终端,以使得目标神经网络模型在目标终端中采用目标数据类型进行模型推理。本发明实施例中,通过将待部署神经网络模型中网络层对应的数据类型调整为目标数据类型,得到目标数据模型,将目标数据模型部署在目标终端上之后,可以采用位数较少的目标数据类型进行模型推理,从而可以降低推理过程所消耗的运算资源,提高目标终端运行神经网络模型的效率。
参照图4,图4示出了本发明实施例提供的再一种模型部署方法步骤流程图。
步骤301,获取待部署神经网络模型。
此步骤可参见步骤101,本申请实施例不再赘述。
步骤302,获取所述待部署神经网络模型中各个网络层对应的网络权重。
此步骤可参见步骤202,本申请实施例不再赘述。
步骤303,从所述待部署神经网络模型中确定卷积层和非卷积层。
此步骤可参见子步骤2031,本申请实施例不再赘述。
步骤304,将所述卷积层对应的数据类型调整为整型类型,将所述非卷积层对应的数据类型调整为目标数据类型,得到基于所述目标数据类型进行网络推理的目标神经网络模型。
由于现存的某些通用数据类型可以满足本申请实施例中目标数据类型的要求,例如BF16数据类型,BF16数据类型与单精度浮点类型的符号位、指数位均相同,区别仅在于BF16数据类型的尾数位比单精度浮点类型的尾数位少16位,因此,BF16数据类型可以看作是一种目标数据类型。参照表4,表4对BF16数据类型与单精度浮点类型的数据位进行了比对。
表4
其中,FP32表示单精度浮点类型,S表示1个符号位,E表示一个指数位,M表示一个尾数位,可以看出,BF16数据类型的符号位与单精度浮点类型的符号位均为1bit,BF16数据类型的指数位与单精度浮点类型的指数位均为8bit,BF16数据类型的尾数位为7bit,单精度浮点类型的尾数位为23bit,BF16数据类型的尾数位比单精度浮点类型的尾数位少16bit,因此,两者所能表示的数据范围相同,均为1e
在本申请实施例中,在目标数据类型为现有的数据类型(类似上述BF16)的情况下,除了采用上述子步骤2032中的方法对待部署神经网络模型中的卷积层和非卷积层进行数据类型转换之外,还可以采用目标终端对应的编译器对待部署神经网络中的卷积层和非卷积层进行数据类型转换。具体可以参照以下子步骤3041至子步骤3042。
可选地,步骤304还可以包括:
子步骤3041,将所述待部署神经网络模型输入所述目标终端对应的编译器。
根据目标终端所采用的推理加速引擎的不同,可以选取不同的编译器对待部署神经网络模型进行量化操作,并通过编译器将量化后得到的目标神经网络部署在目标终端上。
举例来说,在目标终端为车辆终端的情况下,车辆终端可以搭载MagicMind推理加速引擎,可以通过TensorFlow Lite、TensorRT等编译器对待部署神经网络模型进行量化操作,得到目标神经网络模型,并将目标神经网络模型部署在车辆终端的MagicMind中。
在通过编译器对待部署神经网络模型进行量化操作时,技术人员可以先将代部署神经网络模型导入编译器中。
子步骤3042,根据所述待部署神经网络模型中各个网络层与数据类型的对应关系,调整所述编译器的量化参数,并使所述编译器基于所述量化参数对所述待部署神经网络模型进行量化,得到基于所述目标数据类型进行网络推理的目标神经网络模型。
在通过编译器对待部署神经网络模型进行量化操作之前,技术人员可以根据实际的量化需要,对编译器的量化参数进行设置,其中,量化参数可以包括对待部署神经网络模型中各个网络层进行数据转换的数据类型,在本申请实施例中,可以对量化参数进行设置,使待部署神经网络模型中卷积层对应的数据类型为INT8,使待部署神经网络模型中非卷积层对应的数据类型为BF16数据类型,从而使编译器可以根据上述量化参数对待部署神经网络模型进行量化操作,并输出卷积层对应的数据类型为INT8数据类型,且非卷积层对应的数据类型为BF16数据类型的目标神经网络模型。
步骤305,将所述目标神经网络模型部署在目标终端,以使得所述目标神经网络模型在所述目标终端中采用所述目标数据类型进行模型推理。
在本申请实施例中,可以直接将编译器与目标终端连接,并通过编译器直接将目标神经网络模型部署在目标终端。
步骤306,在所述目标神经网络模型的模型推理过程中,获取数据类型为单精度浮点类型的网络层的输出值。
此步骤可参见步骤206,本申请实施例不再赘述。
步骤307,根据所述数据类型为单精度浮点类型的网络层的下一层网络层对应的数据类型,对所述输出值进行类型转化,得到输入值。
需要说明的是,可以针对目标神经网络有针对的设计运行芯片,由于目标神经网络模型中目标数据类型与单精度浮点类型之间的转换仅需要进行截断操作,因此,可以通过设计结构较为简单的转换单元对数据在这两种数据类型之间进行转换,降低了芯片所需的硅面积,节省了芯片制造成本。
步骤308,将所述输入值输入所述下一层网络层。
此步骤可参见步骤208,本申请实施例不再赘述。
综上,本发明实施例提供了另一种模型部署方法,包括:获取待部署神经网络模型;基于目标数据类型对待部署神经网络模型中的网络层进行调整,得到基于目标数据类型进行网络推理的目标神经网络模型;其中,目标数据类型的指数位位数与单精度浮点类型的指数位位数相同,目标数据类型的尾数位位数小于单精度浮点类型的尾数位位数;将目标神经网络模型部署在目标终端,以使得目标神经网络模型在目标终端中采用目标数据类型进行模型推理。本发明实施例中,通过将待部署神经网络模型中网络层对应的数据类型调整为目标数据类型,得到目标数据模型,将目标数据模型部署在目标终端上之后,可以采用位数较少的目标数据类型进行模型推理,从而可以降低推理过程所消耗的运算资源,提高目标终端运行神经网络模型的效率。
在上述实施例的基础上,本发明实施例还提供了一种模型部署装置。
参考图5,图5示出了本发明实施例提供的一种模型部署装置的结构框图:
获取模块401,用于获取待部署神经网络模型。
调整模块402,用于基于目标数据类型对待部署神经网络模型中的网络层进行调整,得到基于目标数据类型进行网络推理的目标神经网络模型;其中,目标数据类型的指数位位数与单精度浮点类型的指数位位数相同,目标数据类型的尾数位位数小于单精度浮点类型的尾数位位数。
部署模块403,用于将目标神经网络模型部署在目标终端,以使得目标神经网络模型在目标终端中采用目标数据类型进行模型推理。
可选地,调整模块包括:
确定子模块,用于从待部署神经网络模型中确定卷积层和非卷积层。
调整子模块,用于将卷积层对应的数据类型调整为整型类型,将非卷积层对应的数据类型调整为目标数据类型,得到基于目标数据类型进行网络推理的目标神经网络模型。
可选地,调整子模块包括:
卷积层调整子模块,用于将卷积层的网络权重的数据类型调整为整型类型。
非卷积层调整子模块,用于将非卷积层的网络权重的数据类型调整为目标数据类型。
可选地,调整子模块包括:
输入子模块,用于将待部署神经网络模型输入目标终端对应的编译器。
量化子模块,用于根据待部署神经网络模型中各个网络层与数据类型的对应关系,调整编译器的量化参数,并使编译器基于量化参数对待部署神经网络模型进行量化,得到基于目标数据类型进行网络推理的目标神经网络模型。
可选地,调整模块包括:
权重获取子模块,用于获取待部署神经网络模型中的网络层对应的网络权重。
第一调整子模块,用于在网络权重满足目标预设条件的情况下,基于目标数据类型对待部署神经网络模型中的网络层进行调整。
第二调整子模块,用于在网络权重不满足目标预设条件,且网络层对应的数据类型为单精度浮点类型的情况下,保持待部署神经网络模型中的网络层对应的数据类型为单精度浮点类型。
可选地,装置还包括:
输出值获取模块,用于在目标神经网络模型的模型推理过程中,获取数据类型为单精度浮点类型的网络层的输出值。
转化模块,用于根据数据类型为单精度浮点类型的网络层的下一层网络层对应的数据类型,对输出值进行类型转化,得到输入值。
输入模块,用于将输入值输入下一层网络层。
可选地,转化模块包括:
第一转化子模块,用于在下一层网络层对应的数据类型为目标数据类型的情况下,将输出值的数据类型转换为目标数据类型,得到输入值。
第二转化子模块,用于在下一层网络层对应的数据类型为整型类型的情况下,将输出值的数据类型转换为整型类型,得到输入值。
综上,本发明实施例提供了一种模型部署装置,包括:获取模块,用于获取待部署神经网络模型。调整模块,用于基于目标数据类型对待部署神经网络模型中的网络层进行调整,得到基于目标数据类型进行网络推理的目标神经网络模型;其中,目标数据类型的指数位位数与单精度浮点类型的指数位位数相同,目标数据类型的尾数位位数小于单精度浮点类型的尾数位位数。部署模块,用于将目标神经网络模型部署在目标终端,以使得目标神经网络模型在目标终端中采用目标数据类型进行模型推理。本发明实施例中,通过将待部署神经网络模型中网络层对应的数据类型调整为目标数据类型,得到目标数据模型,将目标数据模型部署在目标终端上之后,可以采用位数较少的目标数据类型进行模型推理,从而可以降低推理过程所消耗的运算资源,提高目标终端运行神经网络模型的效率。
本发明实施例还提供一种整车控制器,整车控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行上述模型部署方法。
本发明实施例还提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由整车控制器的处理器执行时,使得所述整车控制器能够执行上述模型部署方法。
本发明实施例还提供一种车辆,包括上述整车控制器。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述装置实施例中的对应过程,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
- 一种物理裸机的部署方法、装置、电子设备及存储介质
- 一种需求环境的部署方法、装置、存储介质及终端
- 一种文件分布式部署方法、装置、电子设备及存储介质
- 一种文件分布式部署方法、装置、系统及存储介质
- 一种基板管理控制器BMC设置方法、装置和存储介质
- 整车控制器软件的I/O模块模型自动生成方法、装置、设备及存储介质
- 一种车道线修正方法、装置、整车控制器及可读存储介质