CN115249068A - Nvdla软件栈的推理方法、装置、设备及存储介质 - Google Patents

Nvdla软件栈的推理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115249068A
CN115249068A CN202210964832.XA CN202210964832A CN115249068A CN 115249068 A CN115249068 A CN 115249068A CN 202210964832 A CN202210964832 A CN 202210964832A CN 115249068 A CN115249068 A CN 115249068A
Authority
CN
China
Prior art keywords
algorithm
reasoning
stored
inference
data
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
CN202210964832.XA
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.)
Peng Cheng Laboratory
Original Assignee
Peng Cheng Laboratory
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 Peng Cheng Laboratory filed Critical Peng Cheng Laboratory
Priority to CN202210964832.XA priority Critical patent/CN115249068A/zh
Publication of CN115249068A publication Critical patent/CN115249068A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Biomedical Technology (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Character Input (AREA)

Abstract

本申请公开了一种NVDLA软件栈的推理方法、装置、设备及存储介质,该方法包括:接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法;其中,所述算法库是基于预设的模型算法经过切分、关联、格式转化后的预存算法组合得到的;基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理。在本申请中,将处理后的模型算法进行保存得到算法库,在对推理数据集进行推理时,直接调用算法库中过的预存算法,即可对推理算法数据集中的推理数据依次进行推理,减少了对算法的处理时间,在对多组数据进行推理时,提高了单组数据的平均推理速度。

Description

NVDLA软件栈的推理方法、装置、设备及存储介质
技术领域
本申请涉及深度学习模型技术领域,尤其涉及一种NVDLA软件栈的推理方法、装置、设备及存储介质。
背景技术
随着深度学习技术的应用越来越广泛,在人工智能技术上的应用也是越来越普遍,深度学习技术主要分为训练模型和部署模型,通过深度学习模型,使人工智能能够向人一样具有分析学习的能力,能够解决很多复杂的模式识别难题。
目前为了加快深度学习的速度出现了NVDLA(深度学习加速器),NVDLA是自由开放的架构,促进了设计深度学习推理加速器的标准方式,通过NVDLA软件栈实现了深度学习模型在嵌入式设备上的快速、高效部署需求,但是,目前通过NVDAL软件栈在对识别数据进行推理时,具有冗长的识别步骤,在对多组数据进行推理时,降低了单组数据的平均推理速度。
发明内容
本申请的主要目的在于提供一种NVDLA软件栈的推理方法、装置、设备及存储介质,旨在解决现有技术中NVDAL软件栈在对识别数据进行推理时,具有冗长的识别步骤,在对多组数据进行推理时,降低了单组数据的平均推理速度的技术问题。
为实现上述目的,本申请提供一种NVDLA软件栈的推理方法,所述NVDLA软件栈的推理方法包括:
接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法;
其中,所述算法库是基于预设的模型算法经过切分、关联、格式转化后的预存算法组合得到的;
基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理。
可选地,所述接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法的步骤之前,所述方法包括:
接收推理数据集,并对所述模型算法进行步骤切分,得到NPU类型的神经算法;
对所述神经算法和预设的执行模块进行关联,得到所述神经算法和所述执行模块的关联算法;
基于所述推理数据的应用场景,对所述关联算法进行格式转换,得到对应的格式算法;
基于预设的信息子段,对所述格式算法进行封装保存,得到预存算法,并将预存算法组合成算法库。
可选地,所述基于预设的信息子段,对所述格式算法进行封装保存,得到预存算法的步骤,包括:
基于预设的信息子段,对所述格式算法进行信息分类,确定所述格式算法中与所述信息子段对应的字段算法;
将所述字段算法进行封装保存,得到预存算法。
可选地,所述基于所述推理数据的应用场景,对所述关联算法进行格式转换,得到对应的格式算法的步骤之前,所述方法包括:
对所述关联算法的所述应用场景进行确定;
基于所述应用场景,确定所述关联算法需要转化的格式。
可选地,所述基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理的步骤,包括:
对所述预存算法进行保存判断;
若所述预存算法未保存,则对所述神经算法和预设的执行模块重新编译,直至将所述预存算法保存;
待所述预存算法保存后,调用所述预存算法,对所述推理数据集中的推理数据依次进行推理。
可选地,所述待所述预存算法保存后,调用所述预存算法,对所述推理数据集中的推理数据依次进行推理的步骤,包括:
待所述预存算法保存后,再重新调用所述预存算法;
对所述预存算法进行解析,得到预存算法中的识别信息;
基于所述识别信息,对所述推理数据集中的推理数据依次进行推理。
可选地,所述结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理的步骤之前,所述方法包括:
提取所述推理数据的接收时间;
基于所述接收时间,对所述推理数据进行排序,得到推理顺序。
本申请还提供一种NVDLA软件栈的推理装置,所述NVDLA软件栈的推理装置包括:
调用模块,用于接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法;
其中,所述算法库是基于预设的模型算法经过切分、关联、格式转化后的预存算法组合得到的;
推理模块,用于基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理。
本申请还提供一种NVDLA软件栈的推理设备,所述NVDLA软件栈的推理设备为实体节点设备,所述NVDLA软件栈的推理设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的所述NVDLA软件栈的推理方法的程序,所述NVDLA软件栈的推理方法的程序被处理器执行时可实现如上述的NVDLA软件栈的推理方法的步骤。
本申请还提供一种存储介质,所述存储介质上存储有实现上述NVDLA软件栈的推理方法的程序,所述NVDLA软件栈的推理方法的程序被处理器执行时实现如上述的NVDLA软件栈的推理方法的步骤。
本申请提供一种NVDLA软件栈的推理方法、装置、设备及存储介质,与现有技术中NVDAL软件栈在对识别数据进行推理时,具有冗长的识别步骤,在对多组数据进行推理时,降低了单组数据的平均推理速度相比,在本申请中,接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法;其中,所述算法库是基于预设的模型算法经过切分、关联、格式转化后的预存算法组合得到的;基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理。在本申请中,在接收到推理数据集后,从基于预设的模型算法经过步骤切分、关联、格式转化后得到的算法库中,直接调用预存算法,结合预设的推理顺序对推理数据集中得推理数据依次进行推理,即在本申请中,将处理后的模型算法进行保存得到算法库,在对推理数据集进行推理时,直接调用算法库中过的预存算法,即可对推理算法数据集中的推理数据依次进行推理,减少了对算法的处理时间,在对多组数据进行推理时,提高了单组数据的平均推理速度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请NVDLA软件栈的推理方法第一实施例的流程示意图;
图2为本申请NVDLA软件栈的推理方法第一实施例的模块流程示意图;
图3为本申请实施例方案涉及的硬件运行环境的设备结构示意图;
图4为本申请实施例方案中预设的信息子段示意图;
图5为本申请实施例方案中关联算法的封装保存流程示意图;
图6为本申请实施例方案中预存算法的读取流程示意图;
图7为本申请实施例方案中编译流程示意图。
本申请目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供一种NVDLA软件栈的推理方法,在本申请NVDLA软件栈的推理方法的第一实施例中,参照图1,所述NVDLA软件栈的推理方法包括:
步骤S10,接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法;
其中,所述算法库是基于预设的模型算法经过切分、关联、格式转化后的预存算法组合得到的;
步骤S20,基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理。
本实施例旨在:减少NVDAL软件栈在对识别数据进行推理时的识别步骤,进而在对多组数据进行推理时,提高单组数据的平均推理速度。
在本实施例中,需要说明的是,NVDLA软件栈的推理方法可以应用于NVDLA软件栈的推理装置,该NVDLA软件栈的推理装置从属于NVDLA软件栈的推理设备,该NVDLA软件栈的推理设备属于NVDLA软件栈的推理系统。
其中,NVDLA为深度学习加速器,是一个自由开放的架构,促进了设计深度学习推理加速器的标准方式。凭借其模块化架构,NVDLA具有可扩展性、高度可配置性,并旨在简化集成和可移植性。
在本实施例中,NVDLA软件栈是基于Tengine进行推理的。其中,Tengine可以实现深度学习神经网络模型在嵌入式设备上的快速、高效部署需求。
其中,软件栈可以是一个从上到下提供不同服务的组件,例如,VM(VirtualMachine,虚拟机),VM从下到上的组件分别为OS(Operating System,操作系统)、hypervisor(管理程序)、VM、及VM上运行的软件。
在本实施例中,推理数据可以是图片、文字数据、视频数据等,具体不做限定,在本实施中,以图片为例进行具体举例说明。
在本实施例中,参照图2,图2为本申请NVDLA软件栈的推理方法第一实施例的模块流程示意图。
具体步骤如下:
步骤S10,接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法。
其中,推理数据集对应图2中的图片集,图片集中至少包括一张图片,也即,推理数据集中至少包括一个推理数据。
其中,所述算法库是基于预设的模型算法经过切分、关联、格式转化后的预存算法组合得到的。
在本实施例中,对推理数据集中的推理数据依次进行推理时,只需从算法库中,调用预存算法,以减少每次都对模型算法进行切分、关联、格式转化的步骤。
步骤S20,基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理。
在本实施例中,通过预存算法,对图片集中的图片,按照预设的推理顺序依次进行推理。需要说明的是,由于每个图片在推理完后,后续还需要对推理出的图片内容进行确认,所以每两张图片在推理时具有一定过的时间间隔,此时,对图片的推理的执行模块会进入待机,对下一张图片进行推理时,需要重新从算法库中提取预存算法。
在本实施例中,在对第一张图片进行推理时,对图片的接收和对模型算法的处理可以同时进行,在模型算法中的神经算法被转化成预存算法时,再对第一张图片进行推理,也即,在对第一张图片推理时,执行图2中的“1”、“2”、“3”、“4”、“+1”、“5”、“6”、“7”、“8”、“9”,在对第二张图片及第二张之后的图片进行推理时,直接调用预存算法即可,也即,执行图2中的“+2”、“5”、“6”、“7”、“8”、“9”,减少对算法处理的步骤,提高了单张图片的平均推理速度。
在本实施例中,参照图6,图6为本申请实施例方案中预存算法的读取流程示意图,应用场景是由用户选择确定的,若用户选择批量处理图片的应用场景,则在对图片集中的图片依次进行推理时,调用内存格式的预存算法,且每对一张图片进行推理时需要调用一次预存算法;若用户选择实时采集图片的应用场景,则在对采集图片进行推理时,调用文件格式的预存算法。
在本实施例中,也可以先对模型算法进行处理,得到预存算法,再对图片进行推理,也即,在对第一张图片进行推理时,执行图2中的“+2”、“5”、“6”、“7”、“8”、“9”。
在本实施例中,图2中的“5”是接收图片数据,在接收图片数据后,需要对图片数据进行尺寸统一化,将图片集中图片的尺寸、均值等信息统一大小,方便预存算法对图片的推理。
具体地,所述接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法的步骤之前,所述方法包括:
步骤S100,接收推理数据集,并对所述模型算法进行步骤切分,得到NPU类型的神经算法;
在本实施例中,对推理数据的模型算法进行切分之前,通过Tengine将模型算法的格式转化为Tengine支持的统一格式,例如,tmfile格式等,将转换格式后的模型算法通过Serilalizer(解析器)进行改格式的网络模型参数解析,解析出CPU(通用处理器)类型的通用步骤、GPU(图形处理器)类型的图形步骤、和NPU(神经网络处理器)类型的神经算法。
其中,Tengine支持的模型算法,包括TensorFlow、PyTorch、Caffe、Darknet等,所以需要对模型算法进行格式的统一,方便Serilalizer(解析器)对模型算法的准确解析,减少Serilalizer的运算过程。
在本实施例中,通过Scheduler(调度器)将模型算法,按照处理器的类型进行切分,得到CPU类型的通用步骤、GPU类型的图形步骤、和NPU类型的神经算法,并对模型算进行分配,其中,通用步骤由CPU控制执行,图形步骤由GPU控制执行,神经算法由NPU执行控制。
需要说明的是,NVDLA属于NPU系列,对推理数据进行推理需要用到模型算法中的神经算法。
需要说明的是,通用步骤、图形步骤、和神经算法都为模型算法中的连续步骤,例如,模型神经算法共有100个步骤,通用步骤可以是1至30步,图形步骤可以是31至60步,神经算法可以是61至100步。
步骤S200,对所述神经算法和预设的执行模块进行关联,得到所述神经算法和所述执行模块的关联算法;
其中,关联对应图2中的NVDLA compiler,也即,对所述神经算法和预设的执行模块进行编译。
在本实施例中,参照图7,图7为本申请实施例方案中编译流程示意图,在Scheduler完成对模型算法的切分、模型算法分配等任务后,NPU将神经算法传输至NVDLAcompiler(深度学习加速器的编译流程),通过NVDLA compiler对神经算法和预设的执行模型进行编译,将神经算法的每一步和对应的执行模块互相绑定,使神经算法中的每一步都能有对应的执行模块实现,得到关联算法。
步骤S300,基于所述推理数据的应用场景,对所述关联算法进行格式转换,得到对应的格式算法;
基于所述推理数据的应用场景,对所述关联算法进行保存,得到预存算法;
在本实施例中,应用场景分为批量处理图片和实时采集图片,其中,在批量处理图片的场景下,需要一次输入至少一张图片,也即,将图片集的输入;其中,在实时采集图片的场景下,一次输入一张图片,也即,单张图片的输入。
在本实施例中,参照图5,图5为本申请实施例方案中关联算法的封装保存流程示意图,在编译完成后,对应用场景进行确定,若场景为批量处理图片,则继续申请内存空间,将关联算法暂存在内存空间内,在该场景下关联算法将被转换成内存格式的预存算法;若场景为实时采集图片,则申请磁盘空间,将关联算法FlatBuffers序列化,也即,按照FlatBuffers协议重新格式化结果封装帧,将序列化后的算法写入文件,在该场景下关联算法被转化成文件格式的预存算法。其中,图5中的场景一对应本实施例中批量处理图片的场景,场景二对应本实施例中实时采集图片的场景。
其中,FlatBuffers是一个开源的、跨平台的、高效的、提供了多种编程语言接口的序列化工具库,它将关联算法序列化后存储在缓存中,关联算法既可以存储在文件中,又可以通过网络原样传输,而不需要任何解析开销。
在本实施例中,由于批量处理图片是集中对图片集进行处理,所以,对预存算法提取的时间集中,且有规律,只需将关联算法暂存在内存中,得到预存算法,在对图片集处理完后,对内存中的预存算法进行删除,以释放内存的储存空间,加快下次对图片集推理时模型算法的切分的速度和编译的速度。
在本实施例中,由于实时采集图片是单张图片进行处理,且采集图片的时间没有规律,若在此场景下,将关联算法暂存在内存中,则可能会导致图片还未采集完,内存中预存算法已经被删除,再继续进行处理,需要重新对模型算法进行切分和编写,也即,模型算法需要重新执行图2中的“1”、“2”、“3”、“4”、和“+1”的步骤,对关联算法重新保存,增加对模型算法的处理时间。
在本实施例中,若将关联算法储存在磁盘空间中得到预存算法,可以长时间保存预存算法,且可以无视无时间间隔的采集图片的场景,且由于预存算法的运行实在内存中实现的,将关联算法长时间储存在磁盘空间内,也不会影响预存算法的计算速度,且在图片采集间隔Tengine可能会出现暂时关机或待机,在Tengine重新启动时,储存在内存空间的数据可能会丢失,需要重新对关联算法进行处理,增加图片的推理时间,降低对单张图片的推理速度。
需要说明的是,内存空间可以对关联算法进行暂存,在从内存空间内提取的预存算法将图片集推理完后,即在预设的时间内自动删除,避免占用内存空间,造成预存算法运行时速度降低;磁盘空间可以对关联算法进行较长时间的储存,可以适应无规律的采集间隔,且关联算法在磁盘空间长时间储存,不会影响内存空间对预存算法运行时的速度。
步骤S32,基于预设的信息子段,对所述格式算法进行封装保存,得到预存算法,并将预存算法组合成算法库。
在本实施例中,参照图4,图4为本申请实施例方案中预设的信息子段示意图,信息子段包括版本号、任务列表、内存列表、地址列表、事件列表、储存数据列表、张量列表、重定向列表、和提交列表。关联算法基于不同的应用场景进行对格式转化后,将转化后的关联算法根据信息子段中的信息封装成九个子段明确的预存算法,方便在调用预存算法时,根据这些子段对图片信息将推理,并将预存算法组合成算法库。
其中,版本号可以是记录编译的版本号。
其中,任务列表包括两个任务,一个是对执行模块加速的任务,另一个对针对仿真器的任务。
其中,内存列表可以是关联算法转化的格式,例如,内存格式、文件格式,具体地,内存格式,可以是FAT32、NTFS、EXFAT等;文件格式,可以是FlatBuffers等。
其中,地址列表可以是关联算法储存的位置,和在调用时需要作用的位置,例如,关联算法中一部分算法的储存位置为内存空间的储存区的具体位置,和这部分算法关联的执行模块的位置。
其中,储存数据列表可以是关联算法和对应执行模块的绑定关系等。
具体地,所述基于预设的信息子段,对所述格式算法进行封装保存,得到预存算法的步骤,包括:
步骤S321,基于预设的信息子段,对所述格式算法进行信息分类,确定所述格式算法中与所述信息子段对应的字段算法;
步骤S322,将所述字段算法进行封装保存,得到预存算法。
在本实施例中,根据信息子段中的版本号和八个列表,对格式算法进行信息分类,也即,从格式算法中提取对应的字段算法,并将字段算法对应信息子段进行封装保存,得到预存算法。
在本实施例中,将关联算法中每一步的信息都按照信息子段进行分类,从每一步中都提取出对应信息子段的字段算法,并将字段算法记性封装保存,得到预存算法。
具体地,所述基于所述推理数据的应用场景,对所述关联算法进行格式转换,得到格式算法的步骤之前,所述方法包括:
步骤A10,对所述关联算法的所述应用场景进行确定;
步骤A20,基于所述应用场景,确定所述关联算法需要转化的格式。
在本实施例中,根据用户选择的应用场景,确定关联算法运行的应用场景,基于不同的应用场景,确定关联算法需要转化的格式,若应用场景为批量处理图片,则确定关联算法需要转化的格式为内存格式;若应用场景为实时采集图片,则确定关联算法需要转化的格式为文件格式。
在本实施例中,在对第一张图片进行推理时或在第一张图片进行推理前,对模型算法进行切分和编译,得到关联算法,根据用户选择的应用场景,将关联算法进行对应格式的保存,在对后续的图片进行推理时,可以直接调用预存算法,减少对模型算法的重复处理的时间,以提高对单张图片推理的速度。
本申请提供一种NVDLA软件栈的推理方法、装置、设备及存储介质,与现有技术中NVDAL软件栈在对识别数据进行推理时,具有冗长的识别步骤,在对多组数据进行推理时,降低了单组数据的平均推理速度相比,在本申请中,接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法;基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理;其中,所述算法库是基于预设的模型算法经过切分、关联、格式转化后的预存算法组合得到的。在本申请中,在接收到推理数据集后,从基于预设的模型算法经过步骤切分、关联、格式转化后得到的算法库中,直接调用预存算法,结合预设的推理顺序对推理数据集中得推理数据依次进行推理,即在本申请中,将处理后的模型算法进行保存得到算法库,在对推理数据集进行推理时,直接调用算法库中过的预存算法,即可对推理算法数据集中的推理数据依次进行推理,减少了对算法的处理时间,在对多组数据进行推理时,提高了单组数据的平均推理速度。
进一步地,基于本申请中上述实施例,提供本申请的另一实施例,在该实施例中,基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理的步骤,包括:
步骤B10,对所述预存算法进行保存判断;
步骤B20,若所述预存算法未保存,则对所述神经算法和预设的执行模块重新编译,直至将所述预存算法保存;
步骤B30,待所述预存算法保存后,调用所述预存算法,依次对所述推理数据进行推理。
在本实施例中,由于Tengine可能会处于待机状态,在结束待机状态后,预存算法可能会被自动删除,所以在调用预存算法时,需要先对预存算法进行保存判断,判断在待机状态下预存算法是否被自动删除,若判断结果为预存算法未保存,则对神经算法和执行模块重新编译,直至将编译后的关联算法转化保存为预存算法,再通过预存算法对推理数据进行推理。
在本实施例中,参照图6,图6为本申请实施例方案中预存算法的读取流程示意图,若用户选择的应用场景为场景一,则判断内存空间内是否有预存算法,若存在预存算法,则直接读取内存中的预存算法,若没有预存算法,则重新执行compiler任务,对神经算法和对应的执行模块进行重新编译,得到关联算法,并将关联算法重新转化格式成预存算法,并进行保存;则若用户选择的场景为场景二,判断磁盘空间内是否有预存算法,若存在预存算法,则对FlatBuffer格式的预存算法进行反序列化处理,再通过runtimer对预存算法进行运行,若没有预存算法,则重新执行compiler任务。
具体地,所述待所述预存算法保存后,调用所述预存算法,依次对所述推理数据进行推理的步骤,包括:
步骤B31,待所述预存算法保存后,再重新调用所述预存算法;
步骤B32,对所述预存算法进行解析,得到预存算法中的识别信息;
步骤B33,基于所述识别信息,对所述推理数据集中的推理数据依次进行推理。
在本实施例中,应用场景包括实时处理场景和批量集中处理场景,在应用场景为实时处理场景时,需要将重新编译的关联算法进行序列化处理,格式化成预存算法后,将预存算法储存在磁盘空间内,再对预存算法进行调用,并通过runtimer运行预存算法。
在本实施例中,若在第N组推理数据推理之前判断预存算法不存在,则进行对神经算法和执行模块重新编译后,得到的关联算法格式转化成预存算法后,可以直接应用于第N组推理数据,并可以在对第N组推理数据推理过程中,对预存算法进行储存。
需要说明的是,在本实施例中,批量集中处理场景对应图6中的场景一,实时处理场景对应图6中的场景二。
在本实施例中,在调用预存算法之前先对预存算法是否保存进行判断,以及时监测预存算法的储存状态,可以避免预存算法存在储存错误时,没有可用算法对推理数据进行推理。
进一步地,基于本申请中上述实施例,提供本申请的另一实施例,在该实施例中,所述并结合预设的推理顺序,依次对所述推理数据进行推理的步骤之前,所述方法包括:
步骤C10,提取所述推理数据的接收时间;
步骤C20,基于所述接收时间,对所述推理数据进行排序,得到推理顺序。
其中,接收时间是开始接收推理数据的时间。
在本实施例中,为了满足推理需求,需要提取推理数据的接收时间,根据推理数据的接收时间,对推理数据进行顺序标记,也即,对推理数据进行排序,得到推理顺序,再基于推理顺序依次对推理数据进行推理。
在本实施例中,参照图2,在Scheduler完成调用预存算法和接收推理数据后将NPU任务通过NPU下发至NVDLA runtime(运行),由NVDLA runtime按照预存算法对推理数据进行分析,并将推理任务提交到KMD(内核模式驱动程序)内模块,有KMD驱动装置完成对推理数据的推理工作。
其中,NVDLA runtime主要负责加载预存算法、读取到的推理数据的信息、绑定输入输出张量和内存位置和提交推理任务到KMD内核模块。
在本实施例中,通过NVDLA runtime基于预存算法完成对装置之间的运行控制指令,使预存算法可以实际驱动装置,再由KMD完成对装置的控制。
在本实施例中,由于接收的推理数据是数据集的形式,在接收推理数据前可能用户已经根据优先程度已将排好了顺序,在对推理数据进行推理时,为了不改变推理数据的顺序,则需要确定推理数据的接收顺序,由于接收数据的速度不同,所以可能会出现先接收的推理数据会慢于后接收的推理数据,例如,根据预先排好的顺序,先接收第一推理数据,再第二推理数据被接收,但是第二推理数据接收的速度快于第一推理数据接收的速度,所以可能会出现第二推理数据先完成接收,第一推理数据再完成接收。在确定推理数据的接收顺序时,基于开始接收推理数据的时间为基准,对推理数据进行排序。
在本实施例中,接收推理数据时是根据用户排好的顺序进行接收的,在开始接收第一个推理数据后,再开始接收第二个推理数据,依次类推,直到开始接收所有的推理数据。需要说明的是,在接收推理数据时,不需要在第一个推理数据完成接收后,再开始接收第二个推理数据,只需要按照用户排好的顺序依次开始接收推理数据。在本实施中,通过推理数据的接收时间,对推理数据进行排序,可以避免推理数据推理的顺序混乱。
参照图3,图3是本申请实施例方案涉及的硬件运行环境的设备结构示意图。
如图3所示,该NVDLA软件栈的推理设备可以包括:处理器1001,例如CPU,存储器1005,通信总线1002。其中,通信总线1002用于实现处理器1001和存储器1005之间的连接通信。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储设备。
可选地,该NVDLA软件栈的推理设备还可以包括矩形用户接口、网络接口、摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。矩形用户接口可以包括显示屏(Display)、输入子模块比如键盘(Keyboard),可选矩形用户接口还可以包括标准的有线接口、无线接口。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
本领域技术人员可以理解,图3中示出的NVDLA软件栈的推理设备结构并不构成对NVDLA软件栈的推理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图3所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块以及NVDLA软件栈的推理程序。操作系统是管理和控制NVDLA软件栈的推理设备硬件和软件资源的程序,支持NVDLA软件栈的推理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储器1005内部各组件之间的通信,以及与NVDLA软件栈的推理系统中其它硬件和软件之间通信。
在图3所示的NVDLA软件栈的推理设备中,处理器1001用于执行存储器1005中存储的NVDLA软件栈的推理程序,实现上述任一项所述的NVDLA软件栈的推理方法的步骤。
本申请NVDLA软件栈的推理设备具体实施方式与上述NVDLA软件栈的推理方法各实施例基本相同,在此不再赘述。
本申请还提供一种NVDLA软件栈的推理装置,所述NVDLA软件栈的推理装置包括:
调用模块,用于接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法;
推理模块,用于基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理;
其中,所述算法库是基于预设的模型算法经过切分、关联、格式转化后的预存算法组合得到的。
可选地,所述NVDLA软件栈的推理装置还包括:
切分模块,用于接收推理数据集,并对所述模型算法进行步骤切分,得到NPU类型的神经算法;
关联模块,用于对所述神经算法和预设的执行模块进行关联,得到所述神经算法和所述执行模块的关联算法;
转换模块,用于基于所述推理数据的应用场景,对所述关联算法进行格式转换,得到对应的格式算法;
保存模块,用于基于预设的信息子段,对所述格式算法进行封装保存,得到预存算法,并将预存算法组合成算法库。
可选地,所述保存子模块包括:
分类模块,用于基于预设的信息子段,对所述格式算法进行信息分类,确定所述格式算法中与所述信息子段对应的字段算法;
保存单元,用于将所述字段算法进行封装保存,得到预存算法。
可选地,所述NVDLA软件栈的推理装置还包括:
场景确定模块,用于对所述关联算法的所述应用场景进行确定;
格式确定模块,用于基于所述应用场景,确定所述关联算法需要转化的格式。
可选地,所述推理模块包括:
判断模块,用于对所述预存算法进行保存判断;
编译子模块,用于若所述预存算法未保存,则对所述神经算法和预设的执行模块重新编译,直至将所述预存算法保存;
推理子模块,用于待所述预存算法保存后,调用所述预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理。
可选地,所述推理子模块包括:
调用模块,用于待所述预存算法保存后,再重新调用所述预存算法;
解析模块,用于对所述预存算法进行解析,得到预存算法中的识别信息;
推理单元,用于基于所述识别信息,对所述推理数据集中的推理数据依次进行推理。
可选地,所述推理模块包括:
提取模块,用于提取所述推理数据的接收时间;
排序模块,用于基于所述接收时间,对所述推理数据进行排序,得到推理顺序。
本申请NVDLA软件栈的推理装置的具体实施方式与上述NVDLA软件栈的推理方法各实施例基本相同,在此不再赘述。
本申请实施例提供了一种存储介质,且所述存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序还可被一个或者一个以上的处理器执行以用于实现上述任一项所述的NVDLA软件栈的推理方法的步骤。
本申请存储介质具体实施方式与上述NVDLA软件栈的推理方法各实施例基本相同,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种NVDLA软件栈的推理方法,其特征在于,所述NVDLA软件栈的推理方法包括:
接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法;
其中,所述算法库是基于预设的模型算法经过切分、关联、格式转化后的预存算法组合得到的;
基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理。
2.如权利要求1所述的NVDLA软件栈的推理方法,其特征在于,所述接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法的步骤之前,所述方法包括:
接收推理数据集,并对所述模型算法进行步骤切分,得到NPU类型的神经算法;
对所述神经算法和预设的执行模块进行关联,得到所述神经算法和所述执行模块的关联算法;
基于所述推理数据的应用场景,对所述关联算法进行格式转换,得到对应的格式算法;
基于预设的信息子段,对所述格式算法进行封装保存,得到预存算法,并将预存算法组合成算法库。
3.如权利要求2所述的NVDLA软件栈的推理方法,其特征在于,所述基于预设的信息子段,对所述格式算法进行封装保存,得到预存算法的步骤,包括:
基于预设的信息子段,对所述格式算法进行信息分类,确定所述格式算法中与所述信息子段对应的字段算法;
将所述字段算法进行封装保存,得到预存算法。
4.如权利要求2所述的NVDLA软件栈的推理方法,其特征在于,所述基于所述推理数据的应用场景,对所述关联算法进行格式转换,得到对应的格式算法的步骤之前,所述方法包括:
对所述关联算法的所述应用场景进行确定;
基于所述应用场景,确定所述关联算法需要转化的格式。
5.如权利要求1所述的NVDLA软件栈的推理方法,其特征在于,所述基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理的步骤,包括:
对所述预存算法进行保存判断;
若所述预存算法未保存,则对所述神经算法和预设的执行模块重新编译,直至将所述预存算法保存;
待所述预存算法保存后,调用所述预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理。
6.如权利要求5所述的NVDLA软件栈的推理方法,其特征在于,所述待所述预存算法保存后,调用所述预存算法,对所述推理数据集中的推理数据依次进行推理的步骤,包括:
待所述预存算法保存后,再重新调用所述预存算法;
对所述预存算法进行解析,得到预存算法中的识别信息;
基于所述识别信息,对所述推理数据集中的推理数据依次进行推理。
7.如权利要求1所述的NVDLA软件栈的推理方法,其特征在于,所述结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理的步骤之前,所述方法包括:
提取所述推理数据的接收时间;
基于所述接收时间,对所述推理数据进行排序,得到推理顺序。
8.一种NVDLA软件栈的推理装置,其特征在于,所述NVDLA软件栈的推理装置包括:
切分模块,用于接收推理数据,并对所述推理数据的模型算法进行切分,得到NPU类型的神经算法;
调用模块,用于接收推理数据集,并从预设的算法库中,调用对所述推理数据集推理的预存算法;
其中,所述算法库是基于预设的模型算法经过切分、关联、格式转化后的预存算法组合得到的;
推理模块,用于基于预存算法,结合预设的推理顺序,对所述推理数据集中的推理数据依次进行推理。
9.一种NVDLA软件栈的推理设备,其特征在于,所述NVDLA软件栈的推理设备包括:存储器、处理器以及存储在存储器上的用于实现所述NVDLA软件栈的推理方法的程序,
所述存储器用于存储实现NVDLA软件栈的推理方法的程序;
所述处理器用于执行实现所述NVDLA软件栈的推理方法的程序,以实现如权利要求1至7中任一项所述NVDLA软件栈的推理方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有实现NVDLA软件栈的推理方法的程序,所述实现NVDLA软件栈的推理方法的程序被处理器执行以实现如权利要求1至7中任一项所述NVDLA软件栈的推理方法的步骤。
CN202210964832.XA 2022-08-11 2022-08-11 Nvdla软件栈的推理方法、装置、设备及存储介质 Pending CN115249068A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210964832.XA CN115249068A (zh) 2022-08-11 2022-08-11 Nvdla软件栈的推理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210964832.XA CN115249068A (zh) 2022-08-11 2022-08-11 Nvdla软件栈的推理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN115249068A true CN115249068A (zh) 2022-10-28

Family

ID=83700680

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210964832.XA Pending CN115249068A (zh) 2022-08-11 2022-08-11 Nvdla软件栈的推理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115249068A (zh)

Similar Documents

Publication Publication Date Title
CN111258744A (zh) 一种基于异构计算的任务处理方法及软硬件框架系统
CN86100690A (zh) 处理机输入/输出和中断过滤器
CN110750298B (zh) 一种ai模型编译方法、设备及存储介质
CN111190741A (zh) 基于深度学习节点计算的调度方法、设备及存储介质
WO2023246801A1 (zh) 算法流水线编排方法、装置、电子设备和存储介质
CN115358404A (zh) 基于机器学习模型推理的数据处理方法、装置及设备
CN111352896B (zh) 人工智能加速器、设备、芯片以及数据处理方法
CN114218052B (zh) 一种业务交互图生成方法、装置、设备及存储介质
Cunha et al. Context-aware execution migration tool for data science Jupyter Notebooks on hybrid clouds
CN112099882B (zh) 一种业务处理方法、装置及设备
CN113887442A (zh) Ocr训练数据生成方法、装置、设备及介质
CN113051049A (zh) 任务调度系统、方法、电子设备及可读存储介质
CN112416301A (zh) 深度学习模型开发方法及装置、计算机可读存储介质
CN117271121A (zh) 一种任务处理进度控制方法、装置、设备及其存储介质
US20240161474A1 (en) Neural Network Inference Acceleration Method, Target Detection Method, Device, and Storage Medium
CN115249068A (zh) Nvdla软件栈的推理方法、装置、设备及存储介质
CN111506393A (zh) 一种基于arm的虚拟化装置及其使用方法
WO2020062277A1 (zh) 神经网络中数据预处理阶段的计算资源的管理方法和装置
CN112612427B (zh) 一种车辆停靠点数据处理方法、装置、存储介质及终端
CN114358136A (zh) 一种图像数据处理方法、装置、智能终端及存储介质
CN114443287A (zh) 一种图像分析方法、装置、设备及存储介质
CN112367205A (zh) 一种对http调度请求的处理方法及调度系统
CN111401560A (zh) 推理任务的处理方法、设备和存储介质
CN110837896B (zh) 机器学习模型的存储和调用方法、装置
CN113778458B (zh) 数据处理器功能开发系统、方法及计算设备

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