一种深度学习编译处理方法、装置、设备及可读存储介质与流程

文档序号:30451668发布日期:2022-06-18 02:06阅读:103来源:国知局
一种深度学习编译处理方法、装置、设备及可读存储介质与流程

1.本技术涉及深度学习、编译技术、高性能计算交叉技术应用领域,特别是涉及一种深度学习编译处理方法、装置、设备及可读存储介质。


背景技术:

2.人工智能在计算机视觉、语音识别、自动驾驶等诸多领域中,已有广泛应用。例如在自助结算机上需要采用图像分类技术对所选商品进行分类识别,从而给出商品价格;例如ai摄像头通过图像识别来进行包裹分类、好坏果分类等。
3.虽然深度学习在计算机视觉中的识别性能以及远超于传统的机器学习,但在智能停车场、智能卡口以及自动驾驶等实时性要求较高的应用场景中,落地较少。这是因为这些应用场景下所采用的边缘设备往往功耗较小,产生了算力和存储的约束。
4.目前主流深度学习框架caffe、tensorflow以及pytorch等在cpu、gpu端已经有成熟的部署,但面对新型边缘硬件设备,却支持甚少。tvm、glow等深度学习编译器的出现,极大解决了硬件设备兼容问题,但边缘计算端等硬件设备受限于其计算能力,对深度学习编译器的优化提出了更高的要求。针对边缘计算的深度学习编译方案已经被提出,比如intel的open vino,arm的arm nn,nv的tensor rt等,这些深度学习编译器都是针对特定的硬件平台。也有类似glow等针对不同硬件平台优化的深度学习编译器。
5.现有的面向边缘计算的深度学习编译器,其目的旨在适应不同的边缘计算设备。深度学习编译步骤主要包括三步,步骤一:不同深度学习框架的模型文件构建通用的第一中间表示(intermediate representation,ir),即转换为使用图形式表示的第一中间表示;步骤二:计算图优化,即对第一中间表示进行层合并、去掉硬件中无需实现的层等操作,生成第二中间表示;步骤三:指令码的生成,这部分主要是对第二中间表示进行调度优化,最终生成基于硬件平台的执行的指令码。由此,通过粗粒度的第一中间表示和第二中间表示实现与后端硬件无关(或几乎无关)的图优化,随后通过引入细粒度的第三中间表示实现针对硬件的优化并方便其到最终指令码的编译。
6.为适应在能力有限的硬件设备上执行深度学习编译任务,如面向边缘计算的深度学习编译器,在执行步骤一、步骤二时旨在ai芯片开发者无需耗费更多精力处理不同框架的模型文件而可直接生成一个通用的中间表达图,优化效果不明显;在执行步骤三时将每个计算操作编写为多重循环的语言表示以生成适应于特定硬件的指令码。
7.然而,当前的深度学习编译优化方法,还是不能解决硬件设备的能力和深度学习任务需求之间的矛盾。如何在能力有限的硬件设备上满足深度学习任务的执行需求,是本领域技术人员需要解决的技术问题。


技术实现要素:

8.本技术的目的是提供一种深度学习编译处理方法、装置、设备及可读存储介质,用于在能力有限的硬件设备上满足深度学习编译任务的执行需求。
9.为解决上述技术问题,本技术提供一种深度学习编译处理方法,包括:
10.基于深度学习框架生成的模型文件,获取当前计算层的输入数据;
11.若所述当前计算层的输入数据需占用的存储空间大于所在设备的临时存储单元的可用容量,则根据卷积计算原理,对所述计算层进行拆分,生成多个输入数据不大于所述临时存储单元的可用容量的编译推理任务;
12.若所述当前计算层的输入数据需占用的存储空间不大于所述临时存储单元的可用容量,则以所述输入数据为一个所述编译推理任务;
13.依次执行所述编译推理任务。
14.可选的,所述当前计算层的输入数据包括输入特征图和所述输入特征图的训练参数;所述输入特征图的维度包括色彩通道、高度、宽度,所述训练参数的维度包括训练参数数量、色彩通道、高度、宽度;
15.所述根据卷积计算原理,对所述计算层进行拆分,生成多个输入数据不大于所述临时存储单元的可用容量的编译推理任务,具体为:
16.在高度维度或宽度维度对所述输入特征图进行拆分,生成多个所述编译推理任务;
17.相应的,所述执行所述编译推理任务,具体为:
18.根据所述编译推理任务的填充参数、所述编译推理任务的步幅参数执行对拆分后的所述输入特征图的计算。
19.可选的,所述当前计算层的输入数据包括输入特征图和所述输入特征图的训练参数;所述输入特征图的维度包括色彩通道、高度、宽度,所述训练参数的维度包括训练参数数量、色彩通道、高度、宽度;
20.所述根据卷积计算原理,对所述计算层进行拆分,生成多个输入数据不大于所述临时存储单元的可用容量的编译推理任务,具体为:
21.在色彩通道维度同时对所述输入特征图和所述训练参数进行拆分,生成多个所述编译推理任务;
22.相应的,所述执行所述编译推理任务,具体为:
23.读取所述编译推理任务对应的拆分后的训练参数后,执行所述编译推理任务。
24.可选的,所述临时存储单元具体为静态随机存取存储器;
25.所述执行所述编译推理任务,具体包括:
26.根据所述编译推理任务的计算类型和所述静态随机存取存储器的可用容量,将所述编译推理任务拆分为多个子编译推理任务;
27.根据所述子编译推理任务所需输入通道和输出通道的数量之和,将所述静态随机存取存储器的可用空间拆分为多块存储空间;
28.根据各所述子编译推理任务之间的计算关系,将各所述子编译推理任务的输入数据在所述静态随机存取存储器的各存储空间动态擦写。
29.可选的,所述根据各所述子编译推理任务之间的计算关系,将各所述子编译推理任务的输入数据在所述静态随机存取存储器的各存储空间动态擦写,具体为:
30.在执行当前所述子编译推理任务的同时,将下一个所述子编译推理任务的输入数据写入所述静态随机存取存储器上可释放的存储空间。
31.可选的,当下一个所述子编译推理任务对应的所述训练参数与当前所述子编译推理任务的所述训练参数相同时,所述在执行当前所述子编译推理任务的同时,将下一个所述子编译推理任务的输入数据写入所述静态随机存取存储器上可释放的存储空间,具体为:
32.在执行当前所述子编译推理任务时,仅将下一个所述子编译推理任务的所述输入特征图搬移至所述静态随机存取存储器上可释放的存储空间。
33.可选的,当下一个所述子编译推理任务的输入参数为当前所述子编译推理任务的输出参数时,所述在执行当前所述子编译推理任务的同时,将下一个所述子编译推理任务的输入数据写入所述静态随机存取存储器上可释放的存储空间,具体为:
34.在执行当前所述子编译推理任务时,仅将下一个所述子编译推理任务的所述训练参数搬移至所述静态随机存取存储器上可释放的所述存储空间。
35.为解决上述技术问题,本技术还提供一种深度学习编译处理装置,包括:
36.获取单元,用于基于深度学习框架生成的模型文件,获取当前计算层的输入数据;
37.拆分单元,用于若所述当前计算层的输入数据需占用的存储空间大于所在设备的临时存储单元的可用容量,则根据卷积计算原理,对所述计算层进行拆分,生成多个输入数据不大于所述临时存储单元的可用容量的编译推理任务;若所述当前计算层的输入数据需占用的存储空间不大于所述临时存储单元的可用容量,则以所述输入数据为一个所述编译推理任务;
38.执行单元,用于依次执行所述编译推理任务。
39.为解决上述技术问题,本技术还提供一种深度学习编译处理设备,包括:
40.存储器,用于存储计算机程序;
41.处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如上述任意一项所述深度学习编译处理方法的步骤。
42.为解决上述技术问题,本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述深度学习编译处理方法的步骤。
43.本技术所提供的深度学习编译处理方法,在深度学习编译过程中,基于深度学习框架产生的模型文件,获取当前计算层的输入数据,若当前计算层的输入数据需占用的存储空间大于所在设备的临时存储单元的可用容量,则根据卷积计算原理,对计算层进行拆分,生成多个输入数据不大于临时存储单元的可用容量的编译推理任务;若当前计算层的输入数据需占用的存储空间不大于临时存储单元的可用容量,则以输入数据为一个编译推理任务;继而依次执行编译推理任务,能够有效避免硬件资源不足的设备无法执行较大深度学习网络的深度学习编译任务的问题,能够在能力有限的硬件设备上满足不同大小深度学习网络的编译需求。
44.本技术还提供一种深度学习编译处理装置、设备及可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
45.为了更清楚的说明本技术实施例或现有技术的技术方案,下面将对实施例或现有
技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
46.图1为本技术实施例提供的一种深度学习编译处理方法的流程图;
47.图2为本技术实施例提供的一种深度学习编译处理装置的结构示意图;
48.图3为本技术实施例提供的另一种深度学习编译处理装置的结构示意图;
49.图4为本技术实施例提供的一种深度学习编译处理设备的结构示意图。
具体实施方式
50.本技术的核心是提供一种深度学习编译处理方法、装置、设备及可读存储介质,用于在能力有限的硬件设备上满足深度学习编译任务的执行需求。
51.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
52.实施例一
53.图1为本技术实施例提供的一种深度学习编译处理方法的流程图。
54.如图1所示,本技术实施例提供的深度学习编译处理方法包括:
55.s101:基于深度学习框架生成的模型文件,获取当前计算层的输入数据。
56.s102:若当前计算层的输入数据需占用的存储空间大于所在设备的临时存储单元的可用容量,则根据卷积计算原理,对计算层进行拆分,生成多个输入数据不大于临时存储单元的可用容量的编译推理任务。
57.s103:若当前计算层的输入数据需占用的存储空间不大于临时存储单元的可用容量,则以输入数据为一个编译推理任务。
58.s104:依次执行编译推理任务。
59.可以看到,现有的深度学习编译优化方案通常从优化深度学习编译算法本身的角度出发,而对于能力有限的硬件设备,如边缘计算设备,为优化硬件设备的推理速度、功耗比等重要性能,除了需要考虑深度学习网络计算层的合并、去冗余的提高计算速度方法,更重要是的是考虑如何在有限的硬件资源下,推理计算量更大的网络。基于此,本技术实施例在现有的深度学习编译器的基础上,针对不同大小的深度学习网络执行不同的处理方法,该方法主要作用于深度学习编译器的步骤二对计算图的优化过程以及步骤三实现针对硬件的优化过程中。所在设备可以为现场可编程逻辑门阵列(field programmable gate array,fpga),或其他计算能力不足的硬件设备。
60.在具体实施中,对于步骤s101来说,众所周知,深度神经网络的卷积计算往往在整个网络的推理计算时间中所占比例最高,这是由于卷积训练参数大,且全部为乘加运算决定的。在硬件计算中,卷积计算开始之前,先要将输入特征图以及训练参数读入临时存储单元中。一般临时存储单元容量较小,约32k左右。对某些网络,比如resnet50的第3个卷积层,其输入特征图以及卷积的大小超过32k,如果不对该卷积层进行拆分,则该层无法计算,导致resnet50不能推理。则步骤s101中计算层具体可以为卷积计算层,输入数据包括输入特
征图和输入特征图的训练参数。
61.步骤s102和步骤s103为二选一的执行步骤,即判断当前计算层的输入数据是否大于所在设备的临时存储单元的可用容量,如果大于则需要对当前计算层进行拆分,得到多个输入数据不大于临时存储单元的可用容量的编译推理任务,否则作为一个编译推理任务执行即可。
62.针对较常出现计算层较大导致无法执行计算的卷积计算层的问题,当前计算层的输入数据包括输入特征图和输入特征图的训练参数。由于输入特征图所占空间远大于训练参数,因此对输入特征图进行拆分。
63.根据卷积计算原理,通常输入特征图的维度包括色彩通道、高度、宽度(可表示为c
×
hf×
wf),训练参数的维度包括训练参数数量、色彩通道、高度、宽度(可表示为n
×c×hw
×ww
)。
64.步骤s102:根据卷积计算原理,对计算层进行拆分,生成多个输入数据不大于临时存储单元的可用容量的编译推理任务,具体可以为:在高度维度或宽度维度对输入特征图进行拆分,生成多个编译推理任务。相应的,步骤s104:执行编译推理任务,具体为:根据编译推理任务的填充(pad)参数、编译推理任务的步幅(stride)参数执行对拆分后的输入特征图的计算。
65.在高度维度或宽度维度对输入特征图进行拆分,则只需要根据卷积层参数的填充参数和步幅参数计算拆分后的输入特征图大小即可。
66.步骤s102:根据卷积计算原理,对计算层进行拆分,生成多个输入数据不大于临时存储单元的可用容量的编译推理任务,具体还可以为:在色彩通道维度同时对输入特征图和训练参数进行拆分,生成多个编译推理任务。相应的,步骤s104:执行编译推理任务,具体为:读取编译推理任务对应的拆分后的训练参数后,执行编译推理任务。
67.在色彩通道维度上拆分输入特征图,则需要对训练参数也在色彩通道维度上进行拆分,并且在拆分得到n个编译推理任务(卷积计算)后,需要对训练参数读取n遍,故优选采用在高度维度或宽度维度对输入特征图进行拆分。
68.本技术实施例提供的深度学习编译处理方法,在深度学习编译过程中,基于深度学习框架产生的模型文件,获取当前计算层的输入数据,若当前计算层的输入数据需占用的存储空间大于所在设备的临时存储单元的可用容量,则根据卷积计算原理,对计算层进行拆分,生成多个输入数据不大于临时存储单元的可用容量的编译推理任务;若当前计算层的输入数据需占用的存储空间不大于临时存储单元的可用容量,则以输入数据为一个编译推理任务;继而依次执行编译推理任务,能够有效避免硬件资源不足的设备无法执行较大深度学习网络的深度学习编译任务的问题,能够在能力有限的硬件设备上满足不同大小深度学习网络的编译需求。
69.实施例二
70.本技术上述实施例提出根据所在设备的临时存储单元的可用容量的大小来对当前计算层进行拆分,避免在当前计算层的输入数据所需的存储空间超出临时存储单元的可用容量时、当前计算层的运算无法进行。
71.设备的临时存储单元主要有静态随机存取存储器(static random-access memory,sram)、双倍速率(double data rate)同步动态随机存储器(又称内存条)等,前者
的存储空间远小于后者,但前者的读写速率更快。因此,对于计算量较小的网络,比如lenet的网络,可将所有的输入特征图以线性叠加的方法存放在sram上。而对于如resnet50这样较大的网络,若以线性叠加的方法存放在sram上,显然不能全部存放,若全部存放在ddr上,读写速度受限严重。因此,需要提出在sram上处理较大神经网络的编译推理任务的方案。
72.可以理解的是,对于如lenet这样较小的网络,可以不用考虑拆分,而是直接将所有的输入特征图以线性叠加的方法存放在sram上。可以仅对网络较大的编译推理任务进行进一步拆分。
73.具体可以采用平均划分、按需动态擦写的方式将编译推理任务的输入特征图放到sram上。从网络推理计算的原理看,当当前层计算结束后,该层的输入特征图就可释放空间,以此为原理,并结合网络层的计算特征设计以下方案。统计每层特征图占用空间大小,计算得出最大特征(max feature)。则sram需要提供的空间为max feature
×
n,n即为最多所需输入通道和输出通道的数量之和。现有的网络层计算中,只有eltwise需要两个输入一个输出,在实际硬件计算中,一般是按通道计算,即计算完一个通道,则将该通道的结果直接写入存储器(即sram)中,则n可以为3。
74.则在上述实施例的基础上,在本技术实施例提供的深度学习编译处理方法中,采用静态随机存取存储器作为临时存储单元时,步骤s104:执行编译推理任务,具体包括:
75.根据编译推理任务的计算类型和静态随机存取存储器的可用容量,将编译推理任务拆分为多个子编译推理任务;
76.根据子编译推理任务所需输入通道和输出通道的数量之和,将静态随机存取存储器的可用空间拆分为多块存储空间;
77.根据各子编译推理任务之间的计算关系,将各子编译推理任务的输入数据在静态随机存取存储器的各存储空间动态擦写。
78.以resnet50的前两个卷积为例,将sram的空间平均划为三块存储空间,每块大小为max feature,并将这三块存储空间进行标号(如0,1,2)。在第一个卷积计算时,检查每块存储空间的使用状态。并将输入特征图存放在标号为0的存储空间上,输出特征图存放在标号为1的存储空间上。当开启第二个卷积计算时,第一个卷积已经计算结束,因此可将标号为0的存储空间的空间释放,而标号为1的存储空间空间存放的特征图为第二个卷积的输入特征图,不能释放。同时,可将第二个卷积的输出特征图存放在标号为0的存储空间上。以实现存储空间的复用,动态释放和动态开辟。
79.实施例三
80.执行编译推理任务的时间包括计算时间和数据搬移时间。现有的深度学习编译器只有计算层没有数据搬移层,需要在当前层的计算完成后才能搬移下一层的输入数据,在搬移完成后再进行下一层的计算,以此类推。
81.在本技术实施例一中实现了计算层拆分。保证能力不足的硬件设备可以推理计算量更大的网络。在本技术实施例二中,在本技术实施例一的基础上为实现对编译推理任务更快的执行,将编译推理任务进一步拆分为的多个子编译推理任务的输入数据在sram上进行动态擦写,实现了在读写速率更快但存储空间更小的sram上存放输入数据,进一步提高了硬件设备执行深度学习编译处理的速率。
82.而在通常情况下,神经网络的计算中,当前层的计算与下一层的训练参数不存在
耦合关系。因此在上述实施例的基础上,可以设计方案实现当前层计算与下一层的数据搬移同时进行,以达到节约数据传输时间的目的。
83.则在上述实施例的基础上,在本技术实施例提供的深度学习编译处理方法中,根据各子编译推理任务之间的计算关系,将各子编译推理任务的输入数据在静态随机存取存储器的各存储空间动态擦写,具体为:
84.在执行当前子编译推理任务的同时,将下一个子编译推理任务的输入数据写入静态随机存取存储器上可释放的存储空间。
85.具体的,通过本技术实施例一提供的方案对计算层进行拆分后得到的编译推理任务,所有计算节点均在设备上;通过本技术实施例二提供的方案实现内存复用,为每个计算节点分配合适的内存,并使整个网络内存占用更少。进一步在本技术实施例三提供的方案中,实现数据搬移和计算并行,顺序执行网络的每个节点,执行第i个节点时,同时搬移第i+1个节点的数据。
86.基于该方案,以在fpga硬件上实测resnet50网络,其推理速率达到了31.2fps,而在采用本技术实施例提供的深度学习编译处理方法之前,推理速率仅为22.2fps,即本技术实施例提供的深度学习编译处理方法可以将fpga硬件上处理resnet50网络的深度学习编译任务的速率提升40%。
87.在此基础上,根据子编译推理任务的类型,可以进一步减少不必要的重复擦写过程,例如不同卷积计算之间可能是不同的输入特征图采用相同的训练参数,或前一个卷积计算的结果为后一卷积计算的输入参数。
88.故当下一个子编译推理任务对应的训练参数与当前子编译推理任务的训练参数相同时,在执行当前子编译推理任务的同时,将下一个子编译推理任务的输入数据写入静态随机存取存储器上可释放的存储空间,具体为:
89.在执行当前子编译推理任务时,仅将下一个子编译推理任务的输入特征图搬移至静态随机存取存储器上可释放的存储空间。
90.即当前子编译推理任务与下一个子编译推理任务的区别仅仅在于输入特征图不同,则可以仅写入一次训练参数,在后续所需训练参数相同的情况下无需重复擦写。
91.此外,当下一个子编译推理任务的输入参数为当前子编译推理任务的输出参数时,在执行当前子编译推理任务的同时,将下一个子编译推理任务的输入数据写入静态随机存取存储器上可释放的存储空间,具体为:
92.在执行当前子编译推理任务时,仅将下一个子编译推理任务的训练参数搬移至静态随机存取存储器上可释放的存储空间。
93.即当前子编译推理任务的输出参数为下一个子编译推理任务的输入参数时,在将当前子编译推理任务的输出参数写入sram后,无需额外搬移该输出参数。
94.上文详述了深度学习编译处理方法对应的各个实施例,在此基础上,本技术还公开了与上述方法对应的深度学习编译处理装置、设备及计算机可读存储介质。
95.实施例四
96.图2为本技术实施例提供的一种深度学习编译处理装置的结构示意图。
97.如图2所示,本技术实施例提供的深度学习编译处理装置包括:
98.获取单元201,用于基于深度学习框架生成的模型文件,获取当前计算层的输入数
processing unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器420可以集成有图像处理器gpu(graphics processing unit),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器420还可以包括人工智能ai(artificial intelligence)处理器,该ai处理器用于处理有关机器学习的计算操作。
115.存储器410可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器410还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器410至少用于存储以下计算机程序411,其中,该计算机程序411被处理器420加载并执行之后,能够实现前述任一实施例公开的深度学习编译处理方法中的相关步骤。另外,存储器410所存储的资源还可以包括操作系统412和数据413等,存储方式可以是短暂存储或者永久存储。其中,操作系统412可以为windows。数据414可以包括但不限于上述方法所涉及到的数据。
116.在一些实施例中,深度学习编译处理设备还可包括有显示屏430、电源440、通信接口450、输入输出接口460、传感器470以及通信总线480。
117.本领域技术人员可以理解,图4中示出的结构并不构成对深度学习编译处理设备的限定,可以包括比图示更多或更少的组件。
118.本技术实施例提供的深度学习编译处理设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的深度学习编译处理方法,效果同上。
119.实施例七
120.需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
121.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
122.集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。
123.为此,本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如深度学习编译处理方法的步骤。
124.该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器rom(read-only memory)、随机存取存储器ram(random access memory)、磁碟或者光盘等各种可以存储程
序代码的介质。
125.本实施例中提供的计算机可读存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的深度学习编译处理方法的步骤,效果同上。
126.以上对本技术所提供的一种深度学习编译处理方法、装置、设备及计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
127.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1