一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

深度学习模型推理方法、装置、设备及存储介质与流程

2023-01-15 09:37:14 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及深度学习技术领域,提供一种深度学习模型推理方法、装置、设备及存储介质。


背景技术:

2.随着人工智能(artificial intelligence,ai)技术的不断发展,深度学习(deep learning,dl)模型部署对硬件设备的计算性能的要求越来越高,众多芯片厂商不断推出各自的ai芯片。
3.相关技术中,针对型号众多的ai芯片,通常是针对各ai芯片设计相应的深度学习模型推理(inference)引擎,以此充分发挥ai芯片的算力水平,提高深度学习模型部署效率。并且,相关技术中的深度学习模型推理引擎一般依赖于通用计算单元实现模型推理加速,无法适配型号众多的ai芯片,缺少针对ai芯片的推理引擎会导致模型部署难度加大,严重影响ai芯片的利用效率。


技术实现要素:

4.本技术实施例提供一种深度学习模型推理方法、装置、设备及存储介质,用于使用同一套推理框架对不同的ai芯片进行底层适配,提高ai芯片的资源利用率。
5.一方面,提供一种深度学习模型推理方法,所述方法包括:
6.基于待推理的深度学习模型的模型结构以及参数,生成相应的计算图;其中,所述计算图包含多个算子,每个算子表征所述深度学习模型中的最小计算单元;
7.确定所述深度学习模型推理对应的目标调度策略,并基于所述目标调度策略,构建所述计算图对应的调度流;
8.基于所述计算图以及所述目标调度策略,确定所述深度学习模型推理所需的ai芯片资源量,并向ai芯片申请所需的ai芯片资源量;
9.在资源申请成功时,按照所述调度流指示的所述多个算子之间的调度顺序,采用申请到的ai芯片资源运行所述多个算子,获得所述深度学习模型的推理结果。
10.一方面,提供一种深度学习模型推理装置,应用于推理加速设备中,所述装置包括:
11.模型解析单元,用于基于待推理的深度学习模型的模型结构以及参数,生成相应的计算图;其中,所述计算图包含多个算子,每个算子表征所述深度学习模型中的最小计算单元;
12.调度单元,用于确定所述深度学习模型推理对应的目标调度策略,并基于所述目标调度策略,构建所述计算图对应的调度流;
13.资源申请单元,用于基于所述计算图以及所述目标调度策略,确定所述深度学习模型推理所需的ai芯片资源量,并向ai芯片申请所需的ai芯片资源量;
14.推理执行单元,用于在资源申请成功时,按照所述调度流指示的所述多个算子之
间的调度顺序,采用申请到的ai芯片资源运行所述多个算子,获得所述深度学习模型的推理结果。
15.可选的,所述资源申请单元包括推理引擎子单元、芯片资源管理子单元以及所述ai芯片对应的芯片驱动接口;
16.所述推理引擎子单元,用于基于所述计算图中各个算子之间的关系、各个算子的参数信息,确定所述推理所需的ai芯片资源量;以及,基于所述ai芯片资源量向所述芯片资源管理子单元发起资源申请;
17.所述芯片资源管理子单元,用于调用所述芯片驱动接口,向所述ai芯片发送资源申请请求,以请求所述推理所需的ai芯片资源量。
18.可选的,所述推理引擎子单元,具体用于:
19.基于各个算子对应的输入参数和输出参数,确定所需的中间数据内存量以及临时内存量;
20.基于所述中间数据内存量、所述临时内存量,以及所述各个算子之间的先后运行关系,确定推理所需的最小内存量。
21.可选的,所述调度单元,具体用于:
22.基于所述计算图以及指定的资源限制信息,确定所述深度学习模型推理所需的加速单元数量;
23.若所述加速单元数量为一个,确定目标调度策略为第一调度策略,所述第一调度策略指示按照所述多个算子之间的调度顺序构建单一线程的调度流;或者,
24.若所述加速单元数量为多个,则确定目标调度策略为第二调度策略,所述第二调度策略指示按照所述多个算子之间的调度顺序构建多线程的多个子调度流组成的调度流。
25.可选的,所述调度单元,具体用于:
26.基于所述目标调度策略指示的子调度流的数量,将所述计算图拆分为多个子计算图;
27.针对每个所述子计算图,分别构建相应的子调度流,每个所述子调度流对应一个所述子计算图。
28.可选的,所述推理加速设备还包括计算图调度模块;所述推理执行单元,具体用于:
29.针对多个所述算子中每一个所述算子,分别通过所述计算图调度模块,向芯片资源管理器查询所述算子对应的ai芯片资源的状态;
30.若芯片资源管理器向所述计算图调度模块反馈相应的ai芯片资源为可用状态,则推理引擎调用相应的ai芯片资源,运行所述算子。
31.可选的,所述芯片资源管理子单元,还用于:
32.向所述ai芯片发送ai芯片资源释放请求,以释放所述深度学习模型推理所占用的ai芯片资源。
33.一方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种方法的步骤。
34.一方面,提供一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一种方法的步骤。
35.一方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一种方法的步骤。
36.本技术实施例提供的深度学习模型推理方法、装置、设备及存储介质,针对待推理的深度学习模型,基于其模型结构以及参数生成相应的计算图,并基于计算图,确定深度学习模型推理对应的目标调度策略,以及基于目标调度策略,构建计算图对应的调度流,从而基于计算图以及目标调度策略,确定深度学习模型推理所需的ai芯片资源量,并向ai芯片申请所需的ai芯片资源量,进而在资源申请成功时,按照调度流指示的多个算子之间的调度顺序,采用申请到的ai芯片资源运行多个算子,获得深度学习模型的推理结果。本技术实施例中,通过对模型进行分析来估算推理过程所需的ai芯片资源量,并向ai芯片进行申请,从而只需要按照推理过程所需的资源向ai芯片申请占用即可,实现了对ai芯片的资源管理,提升了对不同类型的ai芯片的适配能力,保证深度学习模型的跨平台复用能力,同时,合理的预测和申请ai芯片资源,能够提高ai芯片的资源利用率,从而提高模型的部署和推理效率。
附图说明
37.为了更清楚地说明本技术实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
38.图1为本技术实施例提供的应推理加速设备的框架示意图;
39.图2为本技术实施例提供的芯片资源管理器的结构示意图;
40.图3为本技术实施例提供的深度学习模型推理方法的流程示意图;
41.图4为本技术实施例提供的深度学习模型的结构示意图;
42.图5为本技术实施例提供的深度学习模型对应的计算图的示意图;
43.图6为本技术实施例提供的使用单个推理加速单元时的调度流的示意图;
44.图7为本技术实施例提供的使用多个推理加速单元时的调度流的示意图;
45.图8为本技术实施例提供的ai芯片内的关系示意图;
46.图9为本技术实施例提供的深度学习模型推理装置的一种结构示意图;
47.图10为本技术实施例提供的一种计算机设备的一种结构示意图;
48.图11为本技术实施例提供的另一种计算机设备的一种结构示意图。
具体实施方式
49.为使本技术的目的、技术方案和优点更加清楚明白,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流
程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
50.为便于理解本技术实施例提供的技术方案,这里先对本技术实施例使用的一些关键名词进行解释:
51.深度学习模型:是指采用机器学习技术采用大量样本数据训练得到的模型。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习等技术。人工神经网络(artificial neural network,ann),从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成,每个节点代表一种特定的输出函数,称为激励函数(activation function),每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆,网络的输出则依网络的连接方式,权重值和激励函数的不同而不同,而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
52.推理加速:模型在推理的时候只有前向计算,无需回传,因此采用一些方法加速模型计算速度,例如采用ai芯片的硬件加速方式,或者考虑到低精度技术对于推理结果并没有特别大的精度损失,因而可以使用低精度数据使得模型需要空间减少,计算速度加快。
53.ai芯片:ai芯片也被称为ai加速器或计算卡,即专门用于处理人工智能应用中的大量计算任务的模块,其他非计算任务仍可以由cpu负责。ai芯片主要分为gpu、fpga、asic。
54.调度流:本技术实施例中,每个计算图或者子计算图需要相应的计算单元及内存资源,对应一个调度流或者子调度流,一个深度学习模型可以转换为一个计算图,一个计算图可能包含一个或者多个子计算图及子计算图间的关系,一个子计算图包含一个或多个算子及算子间的关系。
55.人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
56.人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
57.随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服、车联网、自动驾驶、智慧交通等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
58.随着人工智能技术的不断发展,深度学习模型部署对硬件设备的计算性能的要求越来越高,众多芯片厂商不断推出各自的ai芯片。
59.相关技术中,针对型号众多的ai芯片,通常是针对各ai芯片设计相应的深度学习
模型推理(inference)引擎,以此充分发挥ai芯片的算力水平,提高深度学习模型部署效率。并且,相关技术中的深度学习模型推理引擎一般依赖于通用计算单元实现模型推理加速,无法适配型号众多的ai芯片,缺少针对ai芯片的推理引擎会导致模型部署难度加大,严重影响ai芯片的利用效率。
60.鉴于此,本技术实施例提供一种基于深度学习模型推理方法,在该方法中,针对待推理的深度学习模型,基于其模型结构以及参数生成相应的计算图,并基于计算图,确定深度学习模型推理对应的目标调度策略,以及基于目标调度策略,构建计算图对应的调度流,从而基于计算图以及目标调度策略,确定深度学习模型推理所需的ai芯片资源量,并向ai芯片申请所需的ai芯片资源量,进而在资源申请成功时,按照调度流指示的多个算子之间的调度顺序,采用申请到的ai芯片资源运行多个算子,获得深度学习模型的推理结果。本技术实施例中,通过对模型进行分析来估算推理过程所需的ai芯片资源量,并向ai芯片进行申请,从而只需要按照推理过程所需的资源向ai芯片申请占用即可,实现了对ai芯片的资源管理,提升了对不同类型的ai芯片的适配能力,保证深度学习模型的跨平台复用能力,同时,合理的预测和申请ai芯片资源,能够提高ai芯片的资源利用率,从而提高模型的部署和推理效率。
61.本技术实施例提供的方案可以适用于大多数深度学习模型的推理场景中。如图1所示,为本技术实施例提供的一种推理加速设备的框架示意图,在该框架中,可以包括如下模块。
62.(1)模型解析模块
63.模型解析模块用于读取深度学习模型,结合模型中的参数、输入\输出信息以及网络层结构等信息,将模型使用计算图来进行表示,并用算子表示网络层及层之间的关系。
64.(2)推理引擎
65.推理引擎是指运行深度学习模型所调用的程序接口,用户可以通过相应程序接口完成模型运行的启动、结束与调试。推理引擎可以根据模型解析模块解析得到的计算图,确定完成模型推理过程所需的ai芯片资源,从而向芯片资源管理器申请相应数量的资源占用。
66.(3)芯片驱动模块
67.芯片驱动模块是指ai芯片的供应商提供的可以对ai芯片资源进行调用的一系列程序接口。
68.(4)芯片资源管理器
69.芯片资源管理器是指通过调用芯片驱动模块提供的程序接口,对ai芯片的ai芯片资源进行申请、占用、释放等操作,ai芯片资源可以包含内存资源以及处理器资源等,处理器资源可以包含图像处理器(graphics processing unit,gpu)、中央处理器(central processing unit,cpu)以及视频处理器(video processing unit,vpu)等。
70.参见图2所示,芯片资源管理器可以包括内存资源管理器和计算资源管理器。
71.其中,内存资源管理器用于在开始模型推理过程前,保证模型推理过程所需的内存资源已经准备到位,在准备完成后再进行模型加载。其中,内存资源管理器可以负责统计模型运行所需的最大内存数,包括中间数据内存、临时数据内存等,在完成最大内存统计后,利用芯片驱动完成内存申请及占用。此外,在模型推理结束后还需要对片上资源进行卸
载,对已经占用的内存资源进行释放。
72.通常而言,ai芯片可以提供多个推理加速单元,因此在模型推理前需要由芯片资源管理器保证所需的加速单元已经准备到位,可以供模型推理使用,则计算资源管理器用于实现这一部分的功能,即需要确定模型所需的推理加速单元个数,并利用芯片驱动完成这些加速单元的申请以及占用。同样的,在模型推理结束后也需要对占用的计算资源进行释放。
73.(5)计算图调度器
74.计算图调度器用于推理引擎对计算图中算子运行进行的调度,在计算图调度器中,通过向芯片资源管理器查询算子运行的所需资源是否已经完成,以保证算子的正常运行。
75.在计算图调度时,由计算图调度器根据硬件使用和推理模型选择合适的调度策略构建调度流,并将算子挂载到调度流上运行,在所有算子运行完毕后进行调度流同步,保证算子运行完成。
76.(6)计算图调度流
77.计算图调度流是指由计算图调度器维护的各个算子的运行顺序。计算图调度器按照算子的前后依赖顺序和ai芯片资源状态将算子加载到调度流上,并按照调度顺序依次启动运行。当调度流上的所有算子运行完毕后,调度流执行同步操作,保证算子运行正确,同时向芯片资源管理器报告相关ai芯片资源已经使用完成。
78.算子是指深度学习模型的最小计算单元,用于表示网络层及层之间的关系,通过使用ai芯片资源对算子的运行进行加速,因此需要在调度流启动算子运行前保证算子运行所需的ai芯片资源已经准备到位。
79.当然,本技术实施例提供的方法并不限用于图1所示的架构中,还可以用于其他可能的推理架构,本技术实施例并不进行限制。对于图1所示的架构的各个模块所能实现的功能将在后续的方法实施例中来具体进行描述。
80.本技术各实施例中提供的方法流程,可以通过模型推理设备来执行,该模型推理设备可以为任何具备一定计算能力的计算机设备,例如可以是手机、平板电脑(pad)、笔记本电脑、台式电脑、智能电视、智能车载设备以及智能可穿戴设备等终端设备,也可以是服务器,当为服务器时,可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、即内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。
81.本技术实施例中,模型推理设备包含了至少一个ai芯片,或者连接有至少一个ai芯片,用于对模型推理过程进行加速。
82.参见图3所示,为本技术实施例提供的深度学习模型推理方法的流程示意图,该方法的介绍如下。
83.步骤301:基于待推理的深度学习模型的模型结构以及参数,生成相应的计算图;其中,计算图包含多个算子,每个算子表征深度学习模型中的最小计算单元。
84.本技术实施例中,步骤301的过程可以通过模型解析模块来实现。
85.计算图是指将计算过程通过图形化的方式表示出来,是一种描述方程的语言,既
然是图,则计算图包括有节点和边,计算图中的节点可以表示网络层的处理,即对参数的数学运算。
86.在实际应用中,深度学习模型可以由多个网络层组成,每个网络层的处理实质上可以转化为相应的数学运算,且各个网络层之间的参数是存在一定联系的,例如上一个网络层的输出参数实质上为下一个网络层的输入参数,因而可以通过对深度学习模型的模型结构以及参数进行解析,来将其转换称为相应的计算图,在计算图中由多个算子的形式来表示。
87.参见图4和图5,图4为本技术实施例提供的一种深度学习模型的结构示意图,图5为该深度学习模型对应的计算图的示意图。
88.参见图4所示,该深度学习模型依次包括全连接层1、激活层1、全连接层2和激活层2,输入参数x、输出参数y以及全连接层的权重参数,即权重矩阵1和权重矩阵2。
89.那么,按照该深度学习模型的数据处理过程,则首先需要对输入参数x进行全连接层1的处理,全连接层的处理实际上是一个矩阵乘法,因此,在计算图中用矩阵乘法算子1来进行表示,此外,该矩阵乘法算子1还对应权重矩阵1,将输入参数x和权重矩阵1进行矩阵乘法算子1的计算,即实现了全连接层1的功能,从而全连接层1的输出输入到激活层1,激活层的处理实质上是基于给定的激活函数的处理,在计算图中用激活函数算子来进行表示,进而通过激活函数算子给全连接层1的输出进行计算后,即实现了激活层1的功能,则后续依次实现全连接层2和激活层2的功能即可得到输出参数y,在此不再进行赘述。
90.需要说明的是,图4仅为了说明上述步骤给出的简单模型示例,在实际应用中,可以采用更为复杂的深度学习模型,本技术实施例对此不做限制。
91.本技术实施例中,计算图中每个算子表征深度学习模型中的最小计算单元,最小计算单元可能为深度学习模型中的一个网络层,也可以是一个网络层实现的功能的其中一部分计算,也可以包含深度学习模型中的多个网络层,本技术实施例对此并不进行限制。
92.步骤302:确定所述深度学习模型推理对应的目标调度策略,并基于目标调度策略,构建计算图对应的调度流。
93.本技术实施例中,步骤302的过程可以通过计算图调度器来实现。计算图调度器需要根据硬件使用和推理模型选择合适的调度策略构建调度流,并将算子挂载到调度流上运行,在所有算子运行完毕后进行调度流同步,保证算子运行完成。
94.具体的,可以根据申请的推理加速单元的数量来选择调度策略。即申请的推理加速单元数量为多少个,则选择相应数量的调度策略。
95.在一种可能的实施方式中,推理加速单元的数量可以基于计算图来确定,即可以基于计算图的实际情况估算所需要的推理加速单元的数量,例如可以根据计算图的复杂程度确定所需要的推理加速单元的数量。
96.在一种可能的实施方式中,还可以采用外部指定的方式确定推理加速单元的数量。例如,在进行模型推理前,需要进行模型推理相关的设置工作,例如提供策略选择页面,用户可以设定策略选择的加速单元数量。即可以设定本次模型推理所使用的推理加速单元的数量,数量可以为1到ai芯片包括的推理加速单元的最大数量之间的数值。或者,还可以直接基于选择的调度策略,作为目标调度策略,例如直接在策略选择页面上选择需要的目标调度策略。
97.在一种可能的实施方式中,还可以结合计算图以及外部指定的方式来确定推理加速单元的数量。例如,可以预先指定本次模型推理所使用的推理加速单元的最大数量,并结合计算图的实际情况估算所需要的推理加速单元的数量,若估算的数量大于最大数量,则确定推理加速单元的数量为设定的最大数量,若估算的数量不大于最大数量,则确定推理加速单元的数量为估算的数量。
98.进而,根据确定的推理加速单元的数量来进行调度策略的选择,并以此来构建相应的调度流。
99.在一种可能的实施方式中,若确定的推理加速单元的数量为一个,则确定目标调度策略为第一调度策略,第一调度策略指示按照多个算子之间的调度顺序构建单一线程的调度流。
100.在一种可能的实施方式中,若确定的推理加速单元的数量为多个,则确定目标调度策略为第二调度策略,第二调度策略指示按照多个算子之间的调度顺序构建多线程的多个子调度流组成的调度流。
101.本技术实施例,调度策略的不同,表明了计算图执行时所能调度的并行程度,多调度流的调度策略,则可以并行发起算子的调度。
102.具体的,当目标调度策略为第一调度策略,即单一线程的调度流时,则按照计算图中各算子的顺序依次加载到调度流中。
103.参见图6所示,为使用单个推理加速单元时的调度流的示意图,其中,当只有单个推理加速单元时,则整个调度流为单一线程的调度流,整个计算图独占一个推理加速单元,所有计算均在单个推理加速单元上完成,所有的算子按照顺序依次执行,直至最终全部执行完毕,进行同步。
104.具体的,当目标调度策略为第二调度策略时,在该调度策略中,整个计算图使用多个推理加速单元,需要将计算图拆分为多个计算子图和对应的子调度流,每个计算子图对应一个加速单元,由计算子图负责对应加速单元内的算子调度。
105.那么,可以基于目标调度策略指示的子调度流的数量,将计算图拆分为多个子计算图,并针对多个子计算图中各个子计算图,分别构建相应的子调度流,每个子调度流对应一个子计算图。
106.参见图7所示,为使用多个推理加速单元时的调度流的示意图,其中,当采用多个推理加速单元时,则整个调度流为多线程的调度流,参见图7所示的子调度流1~n,每个子计算图占用一个推理加速单元,一个子计算图内的计算均在单个推理加速单元上完成。但需要说明的是,当时用多个推理加速单元时,需要在整个流程开始前进行一次同步,并在所有子调度流执行完毕后,再进行一次同步,以确保所有算子正确的执行完毕。
107.步骤303:基于计算图以及目标调度策略,确定深度学习模型推理所需的ai芯片资源量,并向ai芯片申请所需的ai芯片资源量。
108.本技术实施例中,步骤304的过程可以通过推理引擎、芯片资源管理器以及芯片驱动模块来实现。其中,ai芯片资源量可以基于解析得到的计算图中各网络层结构与尺寸及外部指定的限制等信息来确定。
109.在一种可能的实施方式中,可以通过推理引擎,基于计算图中各个算子之间的关系、各个算子的参数信息,确定推理所需的ai芯片资源量,进而推理引擎,基于确定的ai芯
片资源量向芯片资源管理器发起资源申请,使得芯片资源管理器,调用芯片驱动模块包括的ai芯片的芯片驱动接口,来向ai芯片发送资源申请请求,以请求推理所需的ai芯片资源量。
110.ai芯片可以包含中央处理器、计算单元和存储器等资源,中央处理器为ai芯片的控制核心,例如常见的如arm核等。从而向ai芯片申请的ai芯片资源可以包含内存资源和计算资源,则ai芯片资源量的确定可以包括内存资源的确定和计算资源的确定。
111.具体的,推理引擎在确定内存资源量时,可以基于各个算子对应的输入参数和输出参数,来确定所需的中间数据内存量以及临时内存量,例如可以根据各参数的数量以及尺寸来确定相应的内容需求,这里的尺寸是指参数的大小,例如对于矩阵而言可以是指矩阵的元素数量。进而,可以基于中间数据内存量、临时内存量,以及各个算子之间的先后运行关系,来估算推理过程所需的最小内存量。
112.在完成最小内存量统计之后,则可以确定向ai芯片申请的内存资源量。例如,可以向ai芯片申请最小内存量的内容资源,或者,还可以在最小内存量的基础上,增加一定的资源冗余量,进而向ai芯片申请考虑了冗余的内存量,以提升推理过程中资源使用的可靠性。
113.具体的,计算资源可以是指ai芯片包含的计算单元,或称为推理加速单元,参见图8所示,ai芯片内的中央处理器与推理加速单元之间的关系示意图,通常而言,ai芯片包含多个推理加速单元,推理加速单元越多,对于推理过程的加速效果肯定更好,但ai芯片的功耗也更高。因而,推理引擎确定计算资源量实质上是确定推理过程所需的计算单元的数量。
114.其中,具体的数量可以由算法方案确定,即可以指定该模型的推理过程可以使用的最大加速单元个数;或者,还可以结合深度学习模型的整体结构,来预测最为合适的加速单元的数量,使得能够在加速效果和功耗之间进行平衡。
115.在一种可能的实施方式中,可以通过推理引擎,基于计算图中各个算子之间的关系、各个算子的参数信息,来给出推理所需的ai芯片资源量的估算值,进而推理引擎将估算值发送给芯片资源管理器,芯片资源管理器可以通过芯片驱动接口获取ai芯片当前的资源状态,进而可以通过芯片资源管理器结合估算值,以及ai芯片当前的资源状态,确定出推理过程的最终资源需求量,并调用芯片驱动模块包括的ai芯片的芯片驱动接口,来向ai芯片发送资源申请请求,以请求推理所需的ai芯片资源量。
116.在一种可能的实施方式中,也可以通过芯片资源管理器,来基于计算图中各个算子之间的关系、各个算子的参数信息,来给出推理所需的ai芯片资源量的估算值,并调用芯片驱动模块包括的ai芯片的芯片驱动接口,来向ai芯片发送资源申请请求,以请求推理所需的ai芯片资源量。
117.步骤304:在资源申请成功时,按照所述调度流指示的所述多个算子之间的调度顺序,采用申请到的ai芯片资源运行所述多个算子,获得所述深度学习模型的推理结果。
118.本技术实施例中,算子的运行可以采用图1所示的计算图调度模块来调度实现。
119.在实际应用过程中,考虑到发起申请的数量可能与实际申请到的数量有所不同,因而可以以资源申请结果指示为准,即芯片资源管理器向ai芯片申请n个推理加速单元数量,而实际ai芯片由于其设备资源状态,可能无法提供n个推理加速单元,从而反馈的资源申请结果中的实际数量可能小于n个,那么则可以等待ai芯片反馈存在足够的空闲资源时,才执行本次模型推理过程。
120.具体的,计算图调度模块按照调度流中的顺序,依次调度各个算子执行,针对每个算子而言,为了确保算子的正确执行,在执行该算子之前,可以通过计算图调度模块,向芯片资源管理器查询该算子对应的ai芯片资源是否已经完成申请,若芯片资源管理器向计算图调度模块反馈已完成申请,则指示推理引擎可以执行,进而推理引擎调用该算子相应的ai芯片资源,运行该算子。
121.本技术实施例中,在所有的算子运行完毕后,需要执行调度流的同步操作,同步操作是指等待串行队列(一个或多个)上的算子任务全部完成运行,目的是保证算子按照其前后关系完成运行,以保证最终推理结果的正确性,当确定各算子均正确完成时,即模型推理结束后需要向ai芯片发送ai芯片资源释放请求,以释放推理所占用的ai芯片资源。
122.具体的,可以通过芯片资源管理器对片上资源进行卸载,对已经占用的内存资源进行释放。
123.综上所述,本技术实施例中,提出了一种基于ai芯片的深度学习模型推理方法,通过将模型推理中所涉及到的ai芯片资源管理部分单独设计为芯片资源管理器,实现了其他模块的复用,保证ai芯片的快速导入与适配,并根据ai芯片和推理模型对计算图进行优化,以此充分利用ai芯片的硬件资源,提高了资源利用率和推理效率,使用芯片资源管理器对模型推理所需的硬件资源在推理开始前进行申请,在推理结束后进行释放,避免了模型运行中对硬件资源的反复申请、释放,进一步提高了运行效率。
124.本技术实施例中,不依赖具体的ai芯片,可以利用资源管理器对不同的ai芯片进行适配,对于其他模块则可以实现复用,保证ai芯片的快速导入与适配,因此具有更好的通用性,并根据ai芯片的设计特点和推理模型的结构特点提供了不同的计算图调度策略。以此可以更充分地利用ai芯片的硬件资源,提高了芯片利用率和推理效率,解决了推理引擎对不同ai芯片的适配能力差的问题,可以使用同一套推理框架对不同的ai芯片进行底层适配,保证深度学习模型的跨平台复用能力,提高ai芯片的资源利用率,从而提高模型的部署和推理效率。
125.请参见图9,基于同一发明构思,本技术实施例还提供了一种深度学习模型推理装置90,该装置包括:
126.模型解析单元901,用于基于待推理的深度学习模型的模型结构以及参数,生成相应的计算图;其中,计算图包含多个算子,每个算子表征深度学习模型中的最小计算单元;
127.调度单元902,用于确定深度学习模型推理对应的目标调度策略,并基于目标调度策略,构建计算图对应的调度流;
128.资源申请单元903,用于基于计算图以及目标调度策略,确定深度学习模型推理所需的ai芯片资源量,并向ai芯片申请所需的ai芯片资源量;
129.推理执行单元904,用于在资源申请成功时,按照调度流指示的多个算子之间的调度顺序,采用申请到的ai芯片资源运行多个算子,获得深度学习模型的推理结果。
130.可选的,资源申请单元903包括推理引擎子单元9031、芯片资源管理子单元9032以及ai芯片对应的芯片驱动接口9033;
131.推理引擎子单元9031,用于基于计算图中各个算子之间的关系、各个算子的参数信息,确定推理所需的ai芯片资源量;以及,基于ai芯片资源量向芯片资源管理子单元9032发起资源申请;
132.芯片资源管理子单元9032,用于调用芯片驱动接口9033,向ai芯片发送资源申请请求,以请求推理所需的ai芯片资源量。
133.可选的,推理引擎子单元9031,具体用于:
134.基于各个算子对应的输入参数和输出参数,确定所需的中间数据内存量以及临时内存量;
135.基于中间数据内存量、临时内存量,以及各个算子之间的先后运行关系,确定推理所需的最小内存量。
136.可选的,调度单元902,具体用于:
137.基于计算图以及指定的资源限制信息,确定深度学习模型推理所需的加速单元数量;
138.若加速单元数量为一个,则确定目标调度策略为第一调度策略,第一调度策略指示按照多个算子之间的调度顺序构建单一线程的调度流;或者,
139.若加速单元数量为多个,则确定目标调度策略为第二调度策略,第二调度策略指示按照多个算子之间的调度顺序构建多线程的多个子调度流组成的调度流。
140.可选的,调度单元902,具体用于:
141.基于目标调度策略指示的子调度流的数量,将计算图拆分为多个子计算图;
142.针对每个子计算图,分别构建相应的子调度流,每个子调度流对应一个子计算图。
143.可选的,所述推理加速设备还包括计算图调度模块;推理执行单元904,具体用于:
144.针对多个算子中每一个算子,分别通过计算图调度模块,向芯片资源管理器查询该算子对应的ai芯片资源的状态;
145.若芯片资源管理器向计算图调度模块反馈相应的ai芯片资源为可用状态,则推理引擎调用相应的ai芯片资源,运行该算子。
146.可选的,芯片资源管理子单元9032,还用于:
147.向ai芯片发送ai芯片资源释放请求,以释放深度学习模型推理所占用的ai芯片资源。
148.通过上述装置,通过将模型推理中所涉及到的ai芯片资源管理部分单独设计为芯片资源管理器,实现了其他模块的复用,保证ai芯片的快速导入与适配,并根据ai芯片和推理模型对计算图进行优化,以此充分利用ai芯片的硬件资源,提高了资源利用率和推理效率,使用芯片资源管理器对模型推理所需的硬件资源在推理开始前进行申请,在推理结束后进行释放,避免了模型运行中对硬件资源的反复申请、释放,进一步提高了运行效率。
149.该装置可以用于执行本技术各实施例中所示的方法,因此,对于该装置的各功能模块所能够实现的功能等可参考前述实施例的描述,不多赘述。
150.请参见图10,基于同一技术构思,本技术实施例还提供了一种计算机设备。在一种实施例中,该计算机设备可以为服务器,该计算机设备如图10所示,包括存储器1001,通讯模块1003以及一个或多个处理器1002。
151.存储器1001,用于存储处理器1002执行的计算机程序。存储器1001可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
152.存储器1001可以是易失性存储器(volatile memory),例如随机存取存储器
(random-access memory,ram);存储器1001也可以是非易失性存储器(non-volatile memory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);或者存储器1001是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1001可以是上述存储器的组合。
153.处理器1002,可以包括一个或多个中央处理单元(central processing unit,cpu)或者为数字处理单元等等。处理器1002,用于调用存储器1001中存储的计算机程序时实现上述深度学习模型推理方法。
154.通讯模块1003用于与其他设备进行通信。
155.本技术实施例中不限定上述存储器1001、通讯模块1003和处理器1002之间的具体连接介质。本技术实施例在图10中以存储器1001和处理器1002之间通过总线1004连接,总线1004在图10中以粗线描述,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1004可以分为地址总线、数据总线、控制总线等。为便于描述,图10中仅用一条粗线描述,但并不描述仅有一根总线或一种类型的总线。
156.存储器1001中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本技术实施例的深度学习模型推理方法。处理器1002用于执行上述各实施例的深度学习模型推理方法。
157.在另一种实施例中,计算机设备也可以是其他计算机设备,如终端设备。在该实施例中,计算机设备的结构可以如图11所示,包括:通信组件1110、存储器1120、显示单元1130、摄像头1140、传感器1150、音频电路1160、蓝牙模块1170、处理器1180等部件。
158.通信组件1110用于与服务器或者其他设备进行通信。在一些实施例中,可以包括电路无线保真(wireless fidelity,wifi)模块,wifi模块属于短距离无线传输技术,计算机设备通过wifi模块可以帮助用户收发信息。
159.存储器1120可用于存储软件程序及数据。处理器1180通过运行存储在存储器1120的软件程序或数据,从而执行终端设备的各种功能以及数据处理。存储器1120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器1120存储有使得终端设备能运行的操作系统。本技术中存储器1120可以存储操作系统及各种应用程序,还可以存储执行本技术实施例深度学习模型推理方法的代码。
160.显示单元1130还可用于显示由用户输入的信息或提供给用户的信息以及终端设备的各种菜单的图形用户界面(graphical user interface,gui)。具体地,显示单元1130可以包括设置在终端设备正面的显示屏1132。其中,显示屏1132可以采用液晶显示器、发光二极管等形式来配置。显示单元1130可以用于显示本技术实施例中的各种页面,例如推理设置页面、推理结果显示页面。
161.显示单元1130还可用于接收输入的数字或字符信息,产生与终端设备的用户设置以及功能控制有关的信号输入,具体地,显示单元1130可以包括设置在终端设备正面的触摸屏1131,可收集用户在其上或附近的触摸操作,例如点击按钮,拖动滚动框等。
162.其中,触摸屏1131可以覆盖在显示屏1132之上,也可以将触摸屏1131与显示屏1132集成而实现终端设备的输入和输出功能,集成后可以简称触摸显示屏。本技术中显示
单元1130可以显示应用程序以及对应的操作步骤。
163.摄像头1140可用于捕获静态图像,用户可以将摄像头1140拍摄的图像通过应用发布评论。摄像头1140可以是一个,也可以是多个。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,ccd)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给处理器1180转换成数字图像信号。
164.终端设备还可以包括至少一种传感器1150,比如加速度传感器1151、距离传感器1152、指纹传感器1153、温度传感器1154。终端设备还可配置有陀螺仪、气压计、湿度计、温度计、红外线传感器、光传感器、运动传感器等其他传感器。
165.音频电路1160、扬声器1161、传声器1162可提供用户与终端设备之间的音频接口。音频电路1160可将接收到的音频数据转换后的电信号,传输到扬声器1161,由扬声器1161转换为声音信号输出。终端设备还可配置音量按钮,用于调节声音信号的音量。另一方面,传声器1162将收集的声音信号转换为电信号,由音频电路1160接收后转换为音频数据,再将音频数据输出至通信组件1110以发送给比如另一终端设备,或者将音频数据输出至存储器1120以便进一步处理。
166.蓝牙模块1170用于通过蓝牙协议来与其他具有蓝牙模块的蓝牙设备进行信息交互。例如,终端设备可以通过蓝牙模块1170与同样具备蓝牙模块的可穿戴计算机设备(例如智能手表)建立蓝牙连接,从而进行数据交互。
167.处理器1180是终端设备的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器1120内的软件程序,以及调用存储在存储器1120内的数据,执行终端设备的各种功能和处理数据。在一些实施例中,处理器1180可包括一个或多个处理单元;处理器1180还可以集成应用处理器和基带处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,基带处理器主要处理无线通信。可以理解的是,上述基带处理器也可以不集成到处理器1180中。本技术中处理器1180可以运行操作系统、应用程序、用户界面显示及触控响应,以及本技术实施例的深度学习模型推理方法。另外,处理器1180与显示单元1130耦接。
168.在一些可能的实施方式中,本技术提供的深度学习模型推理方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本技术各种示例性实施方式的深度学习模型推理方法中的步骤,例如,计算机设备可以执行各实施例的步骤。
169.程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
170.本技术的实施方式的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在计算装置上运行。然而,本技术的程序产品不限于此,在本技术件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置
或者器件使用或者与其结合使用。
171.可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
172.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
173.可以以一种或多种程序设计语言的任意组合来编写用于执行本技术操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算装置上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算装置上部分在远程计算装置上执行、或者完全在远程计算装置或服务器上执行。在涉及远程计算装置的情形中,远程计算装置可以通过任意种类的网络包括局域网(lan)或广域网(wan)连接到用户计算装置,或者,可以连接到外部计算装置(例如利用因特网服务提供商来通过因特网连接)。
174.应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本技术的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
175.此外,尽管在附图中以特定顺序描述了本技术方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
176.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
177.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
178.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献