CN117591104A - 模型的生成方法、装置、电子设备及存储介质 - Google Patents

模型的生成方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117591104A
CN117591104A CN202311616190.5A CN202311616190A CN117591104A CN 117591104 A CN117591104 A CN 117591104A CN 202311616190 A CN202311616190 A CN 202311616190A CN 117591104 A CN117591104 A CN 117591104A
Authority
CN
China
Prior art keywords
module
model
modules
file
interface
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.)
Granted
Application number
CN202311616190.5A
Other languages
English (en)
Other versions
CN117591104B (zh
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.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads Technology 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 Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202311616190.5A priority Critical patent/CN117591104B/zh
Publication of CN117591104A publication Critical patent/CN117591104A/zh
Application granted granted Critical
Publication of CN117591104B publication Critical patent/CN117591104B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • 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/04Architecture, e.g. interconnection topology

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及数据处理技术领域,提出一种模型的生成方法、装置、电子设备及存储介质,该方法包括:接收包括多个模块的属性以及模块间连接关系的第一模型信息,以及指示多个模块中的至少一个模块的第二模型信息,根据第一、第二模型信息以及接口文件,生成模型结构文件,并根据模型结构文件生成模型。模型包括至少一个模块,至少一个模块的连接关系与模型结构文件中至少一个模块的实例对象代码间的连接关系相符合。该方法能够自动生成模型,可以降低模块间连接问题的出现概率,提高模型结构文件的稳定性,减少开发资源投入。支持对生成的模型所涉及的模块灵活选择,提高模型与用户需求的适应性。

Description

模型的生成方法、装置、电子设备及存储介质
技术领域
本公开涉及数据处理技术领域,尤其涉及一种模型的生成方法、装置、电子设备及存储介质。
背景技术
随着图形通用计算和人工智能(Artificial Intelligence,AI)领域的发展,集成电路和AI模型的规模也越来越大,涉及的模块越来越多,导致开发、建模耗费的时间越来越多。以集成电路建模开发为例,在电路建模过程中,现有技术通常会通过解析工具先解析出模块的特定形式的接口信息,然后编写各个模块代码,通过建模工程师人工操作将各个模块连接上。
由于模块众多,接口众多,因此一般是每个建模工程师负责固定区域的模块代码编写和连接。如果涉及到自身负责的模块和其他建模工程师负责的区域中的模块的连接,还要求建模工程师熟知其他建模工程师负责的区域中的模块的接口,对于建模工程师来说工作量很大。同时需要建模工程师对接口定义、连接方式、标准规范要求有比较深入的了解,这提高了建模工程师的门槛。对于AI模型的开发也存在着类似的问题。
综上所述,现有技术的方式使得建模需要大量的资源投入,同时人工操作错误率较高,容易导致建模出现漏洞。且生成的模型包括的模块通常是固定的,不能灵活选择,在一些应用场景中与用户的需求的适应性较差。
发明内容
有鉴于此,本公开提出了一种模型的生成方法、装置、电子设备及存储介质,本公开实施例的模型的生成方法能够自动生成模型结构文件,从而基于模型结构文件可以自动生成已确定模块的连接关系的模型,可以降低模块间连接问题的出现概率,提高模型结构文件的稳定性,并减少开发资源投入。同时支持对生成的模型所涉及的模块进行灵活选择,提高生成的模型与用户需求的适应性。
根据本公开的一方面,提供了一种模型的生成方法,所述方法包括:接收第一模型信息,所述第一模型信息包括多个模块的属性以及模块间的连接关系;接收第二模型信息,所述第二模型信息指示所述多个模块中的至少一个模块;根据所述第一模型信息和所述第二模型信息生成模型结构文件,所述模型结构文件包括所述至少一个模块的实例对象代码及所述至少一个模块的实例对象代码间的连接关系;根据所述模型结构文件生成所述模型,所述模型包括所述至少一个模块,所述模型中所述至少一个模块的连接关系与所述模型结构文件中所述至少一个模块的实例对象代码间的连接关系相符合。
在一种可能的实现方式中,所述模型对应于电路,所述多个模块对应于所述电路中的多个硬件模块,所述根据所述模型结构文件生成所述模型,包括:编译所述模型结构文件得到可执行文件;执行所述可执行文件生成所述模型。
在一种可能的实现方式中,所述模型中所述至少一个模块为框架形式。
在一种可能的实现方式中,所述模型对应于神经网络,所述多个模块对应于所述神经网络中的多个算子。
在一种可能的实现方式中,所述根据所述第一模型信息和所述第二模型信息生成模型结构文件,包括:根据所述第一模型信息,生成所述多个模块中的每个模块对应的第一结构文件,所述第一结构文件指示对应的模块的内部结构及功能;根据所述第一模型信息,定义所述多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数;实例化所述第二模型信息指示的至少一个模块对应的第一结构文件和所述连接函数,生成所述模型结构文件。
在一种可能的实现方式中,所述根据所述第一模型信息,生成所述多个模块中的每个模块对应的第一结构文件,包括:根据所述第一模型信息以及预设的模块结构定义规范,生成所述第一结构文件,所述模块结构定义规范记载第一结构文件的数据格式。
在一种可能的实现方式中,所述第一模型信息存储在第二结构文件和/或配置文件中,所述属性包括所述模块的名称、所述模块的接口编号以及对所述模块的功能的描述,其中,所述第一模型信息存储在所述第二结构文件和所述配置文件中时,所述第二结构文件用于存储所述模块的名称、所述模块的接口编号以及所述模块间的连接关系,所述配置文件用于存储对所述模块的功能的描述。
在一种可能的实现方式中,所述第二结构文件的格式包括图片格式。
在一种可能的实现方式中,所述根据所述第一模型信息,定义所述多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数,包括:根据所述模块的接口编号查找接口文件,确定所述接口编号对应的接口允许传输的数据内容和传输方向,所述接口文件包括不同接口编号对应的接口允许传输的数据内容和传输方向;根据确定的数据内容和传输方向,定义所述模块的接口编号对应的接口;根据所述模块间的连接关系,确定所述接口的连接关系,生成用于模块间接口通信的连接函数。
在一种可能的实现方式中,所述根据所述第一模型信息,定义所述多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数之后,所述方法还包括:根据所述接口以及所述连接函数,生成每个模块对应的调试信息,所述调试信息用于对所述模型进行调试,确定所述调试信息对应的模块是否出现异常;所述根据所述模型结构文件生成所述模型之后,所述方法还包括:根据所述调试信息对所述模型进行调试,输出预定义形式的日志,所述日志包括接口编号、接口当前传输数据内容以及所述调试信息中的一种或多种。
在一种可能的实现方式中,所述模型对应于电路、所述多个模块对应于所述电路中的多个硬件模块时,所述电路包括多个模块簇,每个模块簇包括多个模块组,每个模块组包括所述多个硬件模块,所述调试信息包括对应的硬件模块所属的模块组的组编号、该模块组所属的模块簇的簇编号、以及指示调试方式的调试任务编号。
在一种可能的实现方式中,所述编译所述模型结构文件得到可执行文件,包括:根据所述第一模型信息和所述第二模型信息生成编译文件,所述编译文件用于实现编译功能;使用所述编译文件编译所述模型结构文件,得到所述可执行文件。
根据本公开的另一方面,提供了一种模型的生成装置,所述装置包括:第一接收模块,用于接收第一模型信息,所述第一模型信息包括多个模块的属性以及模块间的连接关系;第二接收模块,用于接收第二模型信息,所述第二模型信息指示所述多个模块中的至少一个模块;第一生成模块,用于根据所述第一模型信息和所述第二模型信息生成模型结构文件,所述模型结构文件包括所述至少一个模块的实例对象代码及所述至少一个模块的实例对象代码间的连接关系;第二生成模块,用于根据所述模型结构文件生成所述模型,所述模型包括所述至少一个模块,所述模型中所述至少一个模块的连接关系与所述模型结构文件中所述至少一个模块的实例对象代码间的连接关系相符合。
在一种可能的实现方式中,所述模型对应于电路,所述多个模块对应于所述电路中的多个硬件模块,所述根据所述模型结构文件生成所述模型,包括:编译所述模型结构文件得到可执行文件;执行所述可执行文件生成所述模型。
在一种可能的实现方式中,所述模型中所述至少一个模块为框架形式。
在一种可能的实现方式中,所述模型对应于神经网络,所述多个模块对应于所述神经网络中的多个算子。
在一种可能的实现方式中,所述根据所述第一模型信息和所述第二模型信息生成模型结构文件,包括:根据所述第一模型信息,生成所述多个模块中的每个模块对应的第一结构文件,所述第一结构文件指示对应的模块的内部结构及功能;根据所述第一模型信息,定义所述多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数;实例化所述第二模型信息指示的至少一个模块对应的第一结构文件和所述连接函数,生成所述模型结构文件。
在一种可能的实现方式中,所述根据所述第一模型信息,生成所述多个模块中的每个模块对应的第一结构文件,包括:根据所述第一模型信息以及预设的模块结构定义规范,生成所述第一结构文件,所述模块结构定义规范记载第一结构文件的数据格式。
在一种可能的实现方式中,所述第一模型信息存储在第二结构文件和/或配置文件中,所述属性包括所述模块的名称、所述模块的接口编号以及对所述模块的功能的描述,其中,所述第一模型信息存储在所述第二结构文件和所述配置文件中时,所述第二结构文件用于存储所述模块的名称、所述模块的接口编号以及所述模块间的连接关系,所述配置文件用于存储对所述模块的功能的描述。
在一种可能的实现方式中,所述第二结构文件的格式包括图片格式。
在一种可能的实现方式中,所述根据所述第一模型信息,定义所述多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数,包括:根据所述模块的接口编号查找接口文件,确定所述接口编号对应的接口允许传输的数据内容和传输方向,所述接口文件包括不同接口编号对应的接口允许传输的数据内容和传输方向;根据确定的数据内容和传输方向,定义所述模块的接口编号对应的接口;根据所述模块间的连接关系,确定所述接口的连接关系,生成用于模块间接口通信的连接函数。
在一种可能的实现方式中,所述装置还包括:第三生成模块,用于根据所述接口以及所述连接函数,生成每个模块对应的调试信息,所述调试信息用于对所述模型进行调试,确定所述调试信息对应的模块是否出现异常;输出模块,用于根据所述调试信息对所述模型进行调试,输出预定义形式的日志,所述日志包括接口编号、接口当前传输数据内容以及所述调试信息中的一种或多种。
在一种可能的实现方式中,所述模型对应于电路、所述多个模块对应于所述电路中的多个硬件模块时,所述电路包括多个模块簇,每个模块簇包括多个模块组,每个模块组包括所述多个硬件模块,所述调试信息包括对应的硬件模块所属的模块组的组编号、该模块组所属的模块簇的簇编号、以及指示调试方式的调试任务编号。
在一种可能的实现方式中,所述编译所述模型结构文件得到可执行文件,包括:根据所述第一模型信息和所述第二模型信息生成编译文件,所述编译文件用于实现编译功能;使用所述编译文件编译所述模型结构文件,得到所述可执行文件。
根据本公开的另一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
根据本公开实施例的模型的生成方法,只需第一模型信息和第二模型信息,就可以自动生成模型结构文件,根据模型结构文件可生成模型,从而能自动地生成模型;并且第二模型信息指示多个模块中的至少一个模块时,模型结构文件可以包括至少一个模块的实例对象代码及至少一个模块的实例对象代码间的连接关系,模型中至少一个模块的连接关系与模型结构文件中至少一个模块的实例对象代码间的连接关系相符合,因此支持对模型所涉及的模块进行灵活选择。本公开实施例的模型的生成方法能够自动生成模型结构文件,从而基于模型结构文件可以自动生成已确定模块的连接关系的模型,解耦模块关联度,减少人工参与过程,同时减少连接问题,可以降低模块间连接问题的出现概率,提高模型结构文件的稳定性,并减少开发资源投入。同时支持用户通过提供第二模型信息对生成的模型所涉及的模块进行灵活选择,提高生成的模型与用户需求的适应性。各个用户只需要关注少量的模块内部功能,通过提供第一模型信息就可以完成与其他模块的交互功能,无需再手动进行模块间连接,优化用户的使用体验。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1a示出根据本公开实施例的模型的生成方法的示例性应用场景。
图1b示出根据本公开实施例的模型的生成方法的示例性应用场景。
图2a示出根据本公开实施例的模型的生成方法的流程的示意图。
图2b示出根据本公开实施例的模型的生成方法的流程的示意图。
图3示出根据本公开实施例的模型对应的电路的结构的示例。
图4示出根据本公开实施例生成模型结构文件的流程的示意图。
图5示出根据本公开实施例的模块间的连接关系的一个示例。
图6示出根据本公开实施例的模块间的连接关系的另一个示例。
图7示出根据本公开实施例编译模型结构文件的方法的示意图。
图8示出根据本公开实施例的模型的生成装置的结构的示意图。
图9示出根据本公开实施例的装置1900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
随着图形通用计算和人工智能(Artificial Intelligence,AI)领域的发展,集成电路和AI模型的规模也越来越大,涉及的模块越来越多,导致开发、建模耗费的时间越来越多。
下面以电路模型为例介绍现有技术的建模过程。当新的芯片项目开始时,首先要对芯片的架构进行预演或定义。架构预演或架构基本定义完成时,需要快速建立电路模型。
大规模集成电路开发在建模过程中,通常会通过解析工具先解析出集成电路中各模块的特定形式接口信息,如使用解析工具Excel表格解析出模块的C++形式接口的信息,再根据解析出的接口信息定义模块的接口,然后编写各个模块代码,建模工程师根据接口人工将各个模块的代码连接上。如对于模块A和模块B,需要先使用解析工具定义好模块A的接口,然后编写模块A的代码,编写模块B的代码,再实例化得到模块A和模块B的实例对象,将各个模块的实例对象连接上。现有技术在连接模块的代码时,一般是通过调用方式对两个模块的实例对象进行连接,或者进行事件触发响应处理完成模块A和模块B的实例对象的连接。如果采用调用方式,则模块A连接模块B时需要调用模块B的处理函数。如果进行事件触发响应处理,则模块B需要有足够深的先入先出存储器来接收模块A发过来的事件信号,否则容易导致连接的中止。因此现有技术中各模块的关联度很大,无法完成模块解耦,在集成电路规模很大时,需要很多位建模工程师合作完成电路建模,每个建模工程师至少需要熟悉自身负责的模块以及该模块上游与下游关联的各个模块,同时还需要了解整体结构,才能完成建模过程。
按照现有技术的方案,由于模块连接和模块代码编写过程复杂繁琐,因此开发建模需要大量的资源投入,同时还会面临人工连接模块出现错误导致的模型漏洞,在后续开发建模过程中需要针对漏洞进行调试查找。对于AI模型的开发也存在着类似的问题。
综上所述,现有技术的方式使得建模需要大量的资源投入,同时人工操作错误率较高,容易导致建模出现漏洞。且生成的模型包括的模块通常是固定的,不能灵活选择,在一些应用场景中与用户的需求的适应性较差。
有鉴于此,本公开提出了一种模型的生成方法、装置、电子设备及存储介质,本公开实施例的模型的生成方法能够自动生成模型结构文件,从而基于模型结构文件可以自动生成已确定模块的连接关系的模型,可以降低模块间连接问题的出现概率,提高模型结构文件的稳定性,并减少开发资源投入。同时支持对生成的模型所涉及的模块进行灵活选择,提高生成的模型与用户需求的适应性。
图1a和图1b示出根据本公开实施例的模型的生成方法的示例性应用场景。
如图1a所示,本公开实施例的模型的生成方法用于生成开发中电路的模型。电路可以包括多个硬件模块,如处理器、存储器等。模型可以包括至少一个模块,该至少一个模块可以是软件的模块,与多个硬件模块中的至少一个硬件模块对应。
用户提供第一模型信息和第二模型信息,其中用户可以是上文中所提及的建模工程师,第一模型信息包括多个模块的属性以及模块间的连接关系,第二模型信息指示多个模块中的至少一个模块。
执行模型的生成方法时,根据第一模型信息和第二模型信息可以生成模型。得到的模型可以包括第二模型信息指示的至少一个模块,并且包括各模块的连接关系。因此,得到的模型可以用于对模型涉及的模块的功能进行仿真。
进一步地,后续可以根据调试信息对模型进行调试,输出预定义形式的日志,日志用于记录调试的相关信息,如被调试的模块传输的数据内容。根据日志可以分析模型是否出现异常。
如图1b所示,本公开实施例的模型的生成方法用于生成开发中的神经网络的模型。神经网络可以包括多个模块,每个模块可以包括算子,模型可以包括多个模块中的至少一个模块,也即模型可以包括至少一个算子。
用户提供第一模型信息和第二模型信息,其中用户可以是上文中所提及的建模工程师,第一模型信息包括多个模块的属性以及模块间的连接关系,第二模型信息指示多个模块中的至少一个模块。
执行模型的生成方法时,根据第一模型信息和第二模型信息可以生成模型。得到的模型可以包括第二模型信息指示的至少一个模块,并且包括各模块的连接关系。因此,得到的模型可以用于对模型涉及的模块的功能进行仿真。
进一步地,后续可以根据调试信息对模型进行调试,输出预定义形式的日志,日志用于记录调试的相关信息,如被调试的模块传输的数据内容。根据日志可以分析模型是否出现异常。
图2a和图2b分别示出根据本公开实施例的模型的生成方法的流程的示意图。
如图2a和图2b所示,在一种可能的实现方式中,本公开提出一种模型的生成方法,所述方法包括:
步骤S21,接收第一模型信息,第一模型信息包括多个模块的属性以及模块间的连接关系;
步骤S22,接收第二模型信息,第二模型信息指示多个模块中的至少一个模块;
步骤S23,根据第一模型信息和第二模型信息生成模型结构文件,模型结构文件包括至少一个模块的实例对象代码及至少一个模块的实例对象代码间的连接关系;
步骤S24,根据模型结构文件生成模型,模型包括至少一个模块,模型中至少一个模块的连接关系与模型结构文件中至少一个模块的实例对象代码间的连接关系相符合。
举例来说,在执行模型的生成方法之前,可先准备好第一模型信息。
第一模型信息可包括多个模块的属性以及模块间的连接关系。参见图1a和图1b的相关描述,模块可以对应于电路中的硬件模块,也可以对应于神经网络中的算子。第一模型信息的内容细节可以参见下文对第一模型信息的进一步描述。
在步骤S21中,第一模型信息可以由用户提供,可以是图片格式,也可以是文本格式,或者表格格式,可以是一个文件,也可以是多个文件,其示例性存储方式可以参见下文对第一模型信息的相关描述,只要能够使得根据第一模型信息可以解析出模型中的模块属性以及模块间的连接关系即可,本公开实施例对于第一模型信息的具体存储格式不作限制。
第一模型信息涉及的模块可能比较多,如果生成包括第一模型信息涉及的所有模块的模型,那么模型的数据量会很大。模型是用于对其涉及的模块的功能进行测试,在实际应用中,可能并不需要对所有的模块同时测试,而是希望同时测试其中的特定的某个或某几个模块。对此,用户还可以提供指示多个模块中的至少一个模块的第二模型信息,对于执行本公开实施例的模型的生成方法的处理器来说,即执行步骤S22,接收第二模型信息。
在步骤S23中,根据第一模型信息和第二模型信息可生成模型结构文件,模型结构文件使用的编程语言的类型可以由用户决定,例如编程语言的类型可设置为C++类型,或者Python类型。本公开实施例对于模型结构文件使用的编程语言的类型不作限制。模型结构文件包括至少一个模块的实例对象代码及至少一个模块的实例对象代码间的连接关系。生成模型结构文件的示例性实现方式可以参见后文对步骤S23的进一步描述。
在步骤S24中,可以根据模型结构文件生成模型。模型结构文件使用的编程语言的类型不同时,执行步骤S24的方式可能不同,其示例性执行方式可以参见后文对步骤S24的进一步描述。
在此情况下,生成的模型可包括第二模型信息指示的至少一个模块。且模型中至少一个模块的连接关系与模型结构文件中至少一个模块的实例对象代码间的连接关系相符合。从而使得模型可以用于测试该至少一个模块。在模型对应于电路时,模型中至少一个模块的连接关系可以指电路的硬件模块的连接关系。在模型对应于神经网络时,模型中至少一个模块的连接关系可以指神经网络的算子的连接关系。
根据本公开实施例的模型的生成方法,只需第一模型信息和第二模型信息,就可以自动生成模型结构文件,根据模型结构文件可生成模型,从而能自动地生成模型;并且第二模型信息指示多个模块中的至少一个模块时,模型结构文件可以包括至少一个模块的实例对象代码及至少一个模块的实例对象代码间的连接关系,模型中至少一个模块的连接关系与模型结构文件中至少一个模块的实例对象代码间的连接关系相符合,因此支持对模型所涉及的模块进行灵活选择。本公开实施例的模型的生成方法能够自动生成模型结构文件,从而基于模型结构文件可以自动生成已确定模块的连接关系的模型,解耦模块关联度,减少人工参与过程,同时减少连接问题,可以降低模块间连接问题的出现概率,提高模型结构文件的稳定性,并减少开发资源投入。同时支持用户通过提供第二模型信息对生成的模型所涉及的模块进行灵活选择,提高生成的模型与用户需求的适应性。各个用户只需要关注少量的模块内部功能,通过提供第一模型信息就可以完成与其他模块的交互功能,无需再手动进行模块间连接,优化用户的使用体验。
在一种可能的实现方式中,模型对应于电路,多个模块对应于电路中的多个硬件模块,步骤S24包括:
编译模型结构文件得到可执行文件;
执行可执行文件生成模型。
举例来说,模型可对应于电路,此时本公开实施例的模型的生成方法的应用场景可参见图1a的相关描述。图3示出根据本公开实施例的模型对应的电路的结构的示例。
如图3所示,该电路可以包括顶层模块T、模块簇C0-CN(N是正整数)和缓存模块M0。模块T可以负责根据运算任务构造线程束。每个模块簇都可以对线程进行打包、调度、以及线程所取回指令的译码、分发和执行,将执行的结果存储在缓存模块M0。
以模块簇C1为例,该模块簇可包括负责线程打包、调度、以及线程所取回指令的译码、分发(以及执行)的模块组G0-GM(M是正整数),负责执行指令的模块O、模块P、模块Q。其中模块O和模块P可以与缓存模块M0进行数据交换。
以模块组G1为例,该模块组可以包括负责线程打包、调度的模块A,负责取指令及对所取回指令译码的模块B,负责解除依赖指令的分发的模块H,负责执行指令的模块N。
负责线程的指令执行的不同模块擅长执行的指令可能不同。例如有的模块可能擅长执行浮点运算的指令,有的模块可能擅长执行整型运算的指令,有的模块可能擅长执行特殊数学功能运算(如求倒数、求对数)的指令。通过不同模块分工合作完成运算任务的执行。
下面以图3所示的电路的结构为例,介绍该电路的功能。
举例来说,首先模块T产生特定模块可执行的线程,例如模块O、模块P和模块N可执行的线程。这些线程被发送至模块A处。模块A先对接收到的线程进行打包,调度至模块B处。模块B对线程进行取指令、译码,将译码后的指令发送至模块H处。模块H将指令分发至对应的执行对象,例如将由模块N执行的指令分发至模块N处,将由模块O执行的线程分发至模块O处,将由模块P执行的指令分发至模块P处。其中模块O和模块P执行指令时,可以从缓存模块M0处获取数据,指令执行结果也可以存储至缓存模块M0。
在模型对应于电路时,模型结构文件的编程语言的类型可能预设为C++类型。可以先对模型结构文件进行编译得到可执行文件,然后再执行可执行文件生成模型。编译可以基于现有技术的编译器实现。使用何种编译器可以由用户决定,本公开实施例对于编译器的类型不作限制。
通过这种方式可以在模型结构文件的类型为C++类型时生成所需的模型。
模型对应于图3所示的电路时,第一模型信息包括的模块间的连接关系,可以是图3所示的模块间的连接关系,第一模型信息包括的模块的属性,可以指示以上图3所示的各模块的功能。
本领域技术人员应理解,每个模块组可能包括更多的模块,每个模块簇可能包括更多的模块组,除上述模块簇之外,电路还可以包括更多的模块,本公开实施例对于电路所包括的具体模块不作限制,也对第一模型信息所包括的具体内容不作限制。
在一种可能的实现方式中,模型中所述至少一个模块为框架形式。
举例来说,在模型对应于电路时,用户需求可能是对模块整体进行仿真,包括模块的连接关系和模块的内部的结构和功能的仿真。此时生成的模型包括的模块可以是具备完整功能的模块。用户的需求也可能是只对模块的连接关系进行仿真,在此情况下,仿真可能不会涉及模块内部的功能。在本公开中,模块的内部功能可以指模块具备的、与模块间通信无关的其他功能。
因此可以根据用户需求,生成至少一个模块为框架形式的模型。框架形式表示模块不具备内部功能。
通过这种方式,使得模型的成本更低。
在一种可能的实现方式中,所述模型对应于神经网络,所述多个模块对应于所述神经网络中的多个算子。
举例来说,模型也可能对应于神经网络,此时本公开实施例的模型的生成方法的应用场景可参见图1b的相关描述。模型结构文件的编程语言类型可预设为Python类型。
在此情况下,第一模型信息包括的模块的属性,可以是算子的属性,例如可包括算子的类型(如卷积)、算子的输入尺寸。第一模型信息包括的模块的连接关系,可以是算子的输入输出的关系,例如算子1的输出作为算子2的输入时,可认为算子1与算子2具备连接关系。
本领域技术人员应理解,模型对应于神经网络时,第一模型信息还可以包括与算子有关的更多内容,本公开对此不作限制。
通过这种方式,使得本公开实施例的模型的生成方法的应用场景具备更多选择。
在一种可能的实现方式中,第一模型信息存储在第二结构文件和/或配置文件中,属性包括模块的名称、模块的接口编号以及对模块的功能的描述,
其中,第一模型信息存储在第二结构文件和配置文件中时,第二结构文件用于存储模块的名称、模块的接口编号以及模块间的连接关系,配置文件用于存储对模块的功能的描述。
举例来说,用户提供第一模型信息可以有多种方式。例如可以将第一模型信息存储在第二结构文件中,单独提供第二结构文件,或者将第一模型信息存储在第二结构文件和配置文件中,同时提供第二结构文件和配置文件。此时配置文件可以看作是对第二结构文件的补充。
第一模型信息包括多个模块的属性和模块间的连接关系。属性可以包括模块的名称、模块的接口编号以及对模块的功能的描述。
其中,模型对应于电路时模块的名称可以是硬件模块的名称,模型对应于神经网络时模块的名称可以是算子的名称。
模型对应于电路时,模块的接口编号有两种,一种是用于区分不同模块组或者不同模块簇中的相同模块的接口编号,一种是用于区分同一模块组中相同/不同模块的不同接口的接口编号。可以为接口编号增加对应的标识来确认接口编号属于哪一种。在此情况下,根据第一模型信息中的接口编号,即可确定模块间相连接的接口具体是哪一模块簇、哪一模块组中的哪个模块的哪个接口。通过接口传输数据时可使用接口编号标记传输的数据,因此接口编号还可以作为单笔数据传输的唯一标识。
模型对应于神经网络时,模块的接口编号可以是区分算子的传输对象和传输方向的编号。比如算子1的输出作为算子2的输入,算子0的输出也作为算子2的输入时,算子2可包括2个接口,其中接口编号为91的接口可以是接收算子1的输出的接口,接口编号为90的接口可以是接收算子0的输出的接口。
模型对应于电路时,模块的功能可以是硬件模块的电路功能,如模块对应于处理器时模块的功能可以通过该处理器可使用的具备处理功能的函数来体现。模型对应于神经网络时,模块的功能可以通过算子的代码来体现。
在第一模型信息存储在第二结构文件时,模块的属性和模块间的连接关系都存储在第二结构文件中。在第一模型信息存储在第二结构文件和配置文件中时,存储模块的名称、模块的接口编号以及模块间的连接关系可以存储在第二结构文件中,对模块的功能的描述可以存储在配置文件中。
通过这种方式,使得第一模型信息的存储方式更为灵活,并且利用配置文件可以有效降低第二结构文件的数据量。
在一种可能的实现方式中,第二结构文件的格式包括图片格式。
图片格式的第二结构文件的示例可以参见图3。图片格式的第二结构文件可以作为模型的结构图,用于标识模块所处位置,模块之间的包含关系以及模块上下游连接结构。第二结构文件以图片形式提供时,一方面可以展示模型的结构,方便建模开发,另一方面也可在模型结构文件生成过程使用。
可以理解的是,图片格式的第二结构文件可以仅包括模块的名称及模块间连接关系,还可能包括模块内部的粒度更小的单元的名称和单元间连接关系,本公开实施例对于图片格式的第二结构文件所能够包括的信息量不作限制。
可以理解的是,第二结构文件也可以是除图片格式外的其他格式,只要第二结构文件可以存储第一模型信息即可,本公开对于第二结构文件的具体格式不作限制。
第二结构文件采用图片格式时模型的结构实现可视化,相比其他格式如文本格式、表格格式,使得第二结构文件更为直观。
图4示出根据本公开实施例生成模型结构文件的流程的示意图。
如图4所示,在一种可能的实现方式中,步骤S23包括:
步骤S231,根据第一模型信息,生成多个模块中的每个模块对应的第一结构文件,第一结构文件指示对应的模块的内部结构及功能;
步骤S232,根据第一模型信息,定义多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数;
步骤S233,实例化第二模型信息指示的至少一个模块对应的第一结构文件和连接函数,生成模型结构文件。
举例来说,在生成模型结构文件时,首先可执行步骤S231,根据第一模型信息中的模块的属性,生成多个模块中的每个模块对应的第一结构文件,第一结构文件指示对应的模块的内部结构及功能。即,将第一模型信息中的属性转换为编程语言代码。第一结构文件所指示的模块的功能至少包括模块间的通信功能。可选地,还可以包括上文所述的模块的内部功能。
在一种可能的实现方式中,步骤S231包括:
根据第一模型信息以及预设的模块结构定义规范,生成第一结构文件,第一结构定义规范记载第一结构文件的数据格式。
举例来说,可以预先设置模块结构定义规范,记载第一结构文件的数据格式。示例性地,模块结构定义规范规定下,第一结构文件可包括模块属性描述信息(接口属性成员变量、配置属性成员变量),模块的类结构及基本构造及初始化信息,模块的上下游连接结构代码。
以模块A为例,模块A的模块属性描述信息可能包括模块A的配置属性成员变量、模块A的接口属性成员变量、模块A的自定义属性成员变量。
模块A的类结构及基本构造可能包括模块A的构造函数、模块A的析构函数、模块重置函数。
模块A的初始化信息可能包括初始化函数。
模块A的上下游连接结构代码可能包括模块连接函数、处理自定义功能(如用于根据模块的功能的描述生成第一结构文件)的函数、具备运行模块A的功能的函数、具备接收某接口传输的数据的功能的函数、具备发送数据到某接口的功能的函数。
不同模块的第一结构文件中可以包括通用的函数,例如初始化函数、模块重置函数。对此,在生成模块的第一结构文件时,如果已经有生成完毕的第一结构文件,可以从已生成的第一结构文件中拷贝通用的函数,也可以独立生成符合模块结构定义规范所记载的数据格式的函数。本公开实施例对此不作限制。
通过这种方式,可以生成指示各模块的内部结构及功能的第一结构文件,从而自动完成用户指示的模块的属性到编程语言代码的转换。
接下来,可以执行步骤S232,完成模块的接口定义,生成用于模块间接口通信的连接函数。即,将第一模型信息中的连接关系转换为编程语言代码。
在一种可能的实现方式中,步骤S232包括:
根据模块的接口编号查找接口文件,确定接口编号对应的接口允许传输的数据内容和传输方向,接口文件包括不同接口编号对应的接口允许传输的数据内容和传输方向;
根据确定的数据内容和传输方向,定义模块的接口编号对应的接口;
根据模块间的连接关系,确定接口的连接关系,生成用于模块间接口通信的连接函数。
举例来说,用户可预先设置好接口文件,接口文件包括不同接口编号对应的接口允许传输的数据内容和传输方向,因此根据模块的接口编号以及确定的数据内容,可以定义模块的接口编号对应的接口。
接口文件中可设置有多个接口编号,每个接口编号分别对应数据内容和传输方向。例如接口编号1对应的数据内容可以是浮点型数据,传输方向可以是A_B,表示从模块A传输至模块B。接口编号2对应的数据内容可以是整型数据,传输方向可以是B_A,表示从模块B传输至模块A。
第一模型信息中包括模块的接口编号。以模型对应于电路为例,假设第一模型信息中包括接口编号1,则可以查找接口文件,确定接口编号1对应的接口允许传输的数据内容是浮点型数据,确定传输方向是模块A传输至模块B。则定义接口时,可以为模块A定义一个能够输出浮点型数据的接口,为模块B定义一个能接收浮点型数据的接口。同理,假设第一模型信息中包括接口编号2,则定义接口时,可以为模块A定义一个能够接收浮点型数据的接口,为模块B定义一个能输出浮点型数据的接口。
模型对应于神经网络时接口的定义方式与模型对应于电路时类似,在此不再赘述。
可以理解的是,接口文件中还可包括与接口编号对应的更多信息,相应地,在定义接口时,还可以根据查找到的信息对接口的更多信息进行定义。如接口文件中还可包括与接口编号对应的接口的名称,在定义接口时,还可以对接口的名称进行定义,本公开实施例对于接口文件所包括的具体数据内容以及定义接口时定义的具体内容不作限制。
进一步地,在设置接口文件时,可以为每个模块预留一定的接口编号空间,在项目执行过程中出现接口增加或者减少的变动时,使用预留出的接口编号定义接口,避免出现接口连接错误。
定义好接口之后,根据模块间的连接关系,即可确定接口的连接关系,生成用于模块间接口通信的连接函数。在模型对应于电路时,模块间接口通信的连接函数可以是硬件模块的接口通信的连接函数。在模型对应于神经网络时,模块间接口通信的连接函数可以是用于神经网络的算子间连接的函数。
连接关系可以通过有连接关系的模块名称、传输方向和接口编号来体现。图5示出根据本公开实施例的模块间的连接关系的一个示例。图6示出根据本公开实施例的模块间的连接关系的另一个示例。
假设用户提供图片格式的第二结构文件,其中涉及模块A和模块B的部分如图5所示。在图5的示例中,有连接关系的模块名称分别是模块A和模块B,传输方向是相互的,既包括模块A发送数据到模块B,又包括模块B发送数据到模块A。其中模块A发送数据到模块B的传输方向对应接口编号1(ID1),模块B发送数据到模块A的传输方向对应接口编号2(ID2)。
则根据图5可以确定模块A到模块B可能存在3种连接关系,第一种是模块A连接模块B并且模块A发送数据到模块B,第二种是模块A连接模块B并且模块B发送数据到模块A,第三种是模块A连接模块B并且模块B和模块A互相发送数据。
接口编号的数量可用于确定连接关系的数量。在图5的示例中,每个传输方向对应一个接口编号,表示每个传输方向上有一条传输路线。在其他示例中,同一传输方向也可以对应多个接口编号,此时可以认为该传输方向上有多条传输路线。
假设用户提供图片格式的第二结构文件,其中涉及模块A、模块B和模块C的部分如图6所示。在图6的示例中,有连接关系的模块名称分别是模块A和模块B,模块A和模块C,模块B和模块C,有连接关系的每两个模块的传输方向都是相互的。每个传输方向对应至少一个接口编号。为了简洁,图6中未示出具体的接口编号。
则根据图6可以确定每两个模块之间可能存在的连接关系都有至少3种。图6的示例中展示三个模块之间的4种连接关系。第一种是模块A分别连接模块B和模块C,并且模块A发送数据到模块B和模块C。第二种是模块C分别连接模块B和模块A,并且模块B和模块A发送数据到模块C。第三种是模块A连接模块B,模块B连接模块C,模块A发送数据到模块B,模块B发送数据到模块C。第四种是模块A连接模块B,模块B连接模块C,模块C连接模块A,模块A发送数据到模块B,模块B发送数据到模块C,模块C发送数据到模块A。
由于接口已经定义好,因此根据模块间的连接关系,即可选择合适的接口确定接口的连接关系,从而生成用于模块间接口通信的连接函数。模块间接口通信可通过现有技术的事件触发机制实现,例如可以是对定义好相连接的模块上的接口设置连接标识来实现。
本领域技术人员应理解,生成连接函数也可以采用现有技术的其他方式实现,比如互相调用接口,本公开实施例对于生成连接函数的具体方式不作限制。
在接口定义明确的情况下,用户只需要专注自身关心的模块内部的代码,并通过统一格式的接口传递出对应信息,无需关心上下游模块连接,从而能够解耦各个模块单独开发。
步骤S232执行完毕后,可以执行步骤S233,对第一结构文件和连接函数进行实例化。其中,进行实例化时,可以先根据第一结构文件和连接函数处理得到可以作为实例化对象的代码,再对代码进行实例化。处理得到可以作为实例化对象的代码可以基于现有技术实现,在此不再赘述。可以仅实例化第二模型信息指示的至少一个模块对应的第一结构文件和连接函数。根据实例化后的第一结构文件和连接函数可得到模型结构文件。在此情况下,模型结构文件可以包括至少一个模块的实例对象代码及至少一个模块的实例对象代码间的连接关系。
可以理解的是,在执行步骤S233时也可以实例化更多的第一结构文件和连接函数,只要模型结构文件包括至少一个模块的实例对象代码及至少一个模块的实例对象代码间的连接关系即可,本公开实施例对于被实例化的具体对象不作限制。
通过这种方式,即可自动生成模型结构文件,使得无需人工进行模块的连接。
可以理解的是,模型结构文件还可以包括更多的内容,例如还可定义各模块的分块结构,分块结构可以是一部分模块的组合,本公开实施例对于模型结构文件所包括的具体内容不作限制。
图7示出根据本公开实施例编译模型结构文件的方法的示意图。
在一种可能的实现方式中,编译模型结构文件得到可执行文件,包括:
根据第一模型信息和第二模型信息生成编译文件,编译文件用于实现编译功能;
使用编译文件编译模型结构文件,得到可执行文件。
举例来说,如图7所示,可以根据第一模型信息和第二模型信息自动生成编译文件。编译器对模型结构文件进行编译时,可使用编译文件对模型结构文件进行编译。
通过这种方式使得编译文件可以自动生成并使用,节约人力成本。
可以理解的是,编译文件也可以由用户编写好,本公开实施例对于编译文件的生成方式不作限制。
在一种可能的实现方式中,步骤S232之后,所述方法还包括:
根据接口以及连接函数,生成每个模块对应的调试信息,调试信息用于对模型进行调试,确定调试信息对应的模块是否出现异常;
步骤S24之后,所述方法还包括:
根据调试信息对模型进行调试,输出预定义形式的日志,日志包括接口编号、接口当前传输数据内容以及调试信息中的一种或多种。
举例来说,为了保证模型的准确度,在生成模型后,可以对模型进行调试,确定模型中的模块是否出现异常。对此,在步骤S232之后,还可以根据接口以及连接函数,生成每个模块对应的调试信息,调试信息用于对模型进行调试,确定模型中的模块是否出现异常,例如区分模块间传输的多笔数据中的一笔数据,根据是否能够识别到该笔数据确定发出该笔数据和接收该笔数据的模块是否出现异常。调试信息包括的示例性内容可参见后文的相关描述。
相应地,在执行步骤S24生成模型之后,可以根据调试信息对模型进行调试,调试的结果可以通过日志输出。日志的数据格式可以预先设置,例如设置为包括接口编号、接口当前传输数据内容以及调试信息中的一种或多种。由于调试信息是与模块对应的,因此日志包括的内容也与模块对应,后续可以根据日志的内容定位到模块是否异常。
可以理解的是,日志还可以包括更多的内容,只要是与调试过程相关即可,本公开实施例对于日志所包括的具体内容即日志的具体的数据格式不作限制。
通过这种方式,可以确定模型是否异常,并具体定位到各模块是否异常,使得模型的调试方式更简单。且日志可基于解耦的模块分别输出,输出的方式更灵活。
在一种可能的实现方式中,所述模型对应于电路、所述多个模块对应于所述电路中的多个硬件模块时,所述电路包括多个模块簇,每个模块簇包括多个模块组,每个模块组包括所述多个硬件模块,所述调试信息包括对应的硬件模块所属的模块组的组编号、该模块组所属的模块簇的簇编号、以及指示调试方式的调试任务编号。
举例来说,调试信息可以与电路的层次有关。例如电路层次如图3所示,电路包括多个模块簇,每个模块簇包括多个模块组,每个模块组包括多个硬件模块时,以模块A的调试信息为例,模块A属于模块组G1、模块组G1属于模块簇C1,因此模块A的调试信息可以包括模块簇C1的编号、模块组G1的编号、以及调试任务编号。
可以预先设置好对应不同调试方式的不同调试任务,并确定各调试任务的编号。调试任务可以根据现有技术设置,在此不再对设置调试任务的具体方式进行赘述。
可以理解的是,调试信息还可以包括更多的内容,比如模块所处硬件核编号、指令地址信息,只要与验证模型中模块是否异常有关即可,本公开实施例对于调试信息所包括的具体内容不作限制。
通过这种方式,使得调试信息能够与唯一一个模块相对应,便于后续根据调试任务找到正确的模块进行调试,提高调试效率。
本公开还提供了一种模型的生成装置,图8示出根据本公开实施例的模型的生成装置的结构的示意图。
如图8所示,所述装置包括:
第一接收模块71,用于接收第一模型信息,所述第一模型信息包括多个模块的属性以及模块间的连接关系;
第二接收模块72,用于接收第二模型信息,所述第二模型信息指示所述多个模块中的至少一个模块;
第一生成模块73,用于根据所述第一模型信息和所述第二模型信息生成模型结构文件,所述模型结构文件包括所述至少一个模块的实例对象代码及所述至少一个模块的实例对象代码间的连接关系;
第二生成模块74,用于根据所述模型结构文件生成所述模型,所述模型包括所述至少一个模块,所述模型中所述至少一个模块的连接关系与所述模型结构文件中所述至少一个模块的实例对象代码间的连接关系相符合。
其中,模型的生成装置在实际应用中也可以是系统的形式。
在一种可能的实现方式中,所述模型对应于电路,所述多个模块对应于所述电路中的多个硬件模块,
所述根据所述模型结构文件生成所述模型,包括:
编译所述模型结构文件得到可执行文件;执行所述可执行文件生成所述模型。
在一种可能的实现方式中,所述模型中所述至少一个模块为框架形式。
在一种可能的实现方式中,所述模型对应于神经网络,所述多个模块对应于所述神经网络中的多个算子。
在一种可能的实现方式中,所述根据所述第一模型信息和所述第二模型信息生成模型结构文件,包括:
根据所述第一模型信息,生成所述多个模块中的每个模块对应的第一结构文件,所述第一结构文件指示对应的模块的内部结构及功能;
根据所述第一模型信息,定义所述多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数;
实例化所述第二模型信息指示的至少一个模块对应的第一结构文件和所述连接函数,生成所述模型结构文件。
在一种可能的实现方式中,所述根据所述第一模型信息,生成所述多个模块中的每个模块对应的第一结构文件,包括:
根据所述第一模型信息以及预设的模块结构定义规范,生成所述第一结构文件,所述模块结构定义规范记载第一结构文件的数据格式。
在一种可能的实现方式中,所述第一模型信息存储在第二结构文件和/或配置文件中,所述属性包括所述模块的名称、所述模块的接口编号以及对所述模块的功能的描述,
其中,所述第一模型信息存储在所述第二结构文件和所述配置文件中时,所述第二结构文件用于存储所述模块的名称、所述模块的接口编号以及所述模块间的连接关系,所述配置文件用于存储对所述模块的功能的描述。
在一种可能的实现方式中,所述第二结构文件的格式包括图片格式。
在一种可能的实现方式中,所述根据所述第一模型信息,定义所述多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数,包括:
根据所述模块的接口编号查找接口文件,确定所述接口编号对应的接口允许传输的数据内容和传输方向,所述接口文件包括不同接口编号对应的接口允许传输的数据内容和传输方向;
根据确定的数据内容和传输方向,定义所述模块的接口编号对应的接口;
根据所述模块间的连接关系,确定所述接口的连接关系,生成用于模块间接口通信的连接函数。
在一种可能的实现方式中,所述装置还包括:
第三生成模块,用于根据所述接口以及所述连接函数,生成每个模块对应的调试信息,所述调试信息用于对所述模型进行调试,确定所述调试信息对应的模块是否出现异常;
输出模块,用于根据所述调试信息对所述模型进行调试,输出预定义形式的日志,所述日志包括接口编号、接口当前传输数据内容以及所述调试信息中的一种或多种。
在一种可能的实现方式中,所述模型对应于电路、所述多个模块对应于所述电路中的多个硬件模块时,所述电路包括多个模块簇,每个模块簇包括多个模块组,每个模块组包括所述多个硬件模块,所述调试信息包括对应的硬件模块所属的模块组的组编号、该模块组所属的模块簇的簇编号、以及指示调试方式的调试任务编号。
在一种可能的实现方式中,所述编译所述模型结构文件得到可执行文件,包括:根据所述第一模型信息和所述第二模型信息生成编译文件,所述编译文件用于实现编译功能;使用所述编译文件编译所述模型结构文件,得到所述可执行文件。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
图9示出根据本公开实施例的装置1900的框图。例如,装置1900可以被提供为一电子设备。参照图9,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出接口1958(I/O接口)。装置1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM, LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由装置1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (15)

1.一种模型的生成方法,其特征在于,所述方法包括:
接收第一模型信息,所述第一模型信息包括多个模块的属性以及模块间的连接关系;
接收第二模型信息,所述第二模型信息指示所述多个模块中的至少一个模块;
根据所述第一模型信息和所述第二模型信息生成模型结构文件,所述模型结构文件包括所述至少一个模块的实例对象代码及所述至少一个模块的实例对象代码间的连接关系;
根据所述模型结构文件生成所述模型,所述模型包括所述至少一个模块,所述模型中所述至少一个模块的连接关系与所述模型结构文件中所述至少一个模块的实例对象代码间的连接关系相符合。
2.根据权利要求1所述的方法,其特征在于,所述模型对应于电路,所述多个模块对应于所述电路中的多个硬件模块,
所述根据所述模型结构文件生成所述模型,包括:
编译所述模型结构文件得到可执行文件;
执行所述可执行文件生成所述模型。
3.根据权利要求2所述的方法,其特征在于,所述模型中所述至少一个模块为框架形式。
4.根据权利要求1所述的方法,其特征在于,所述模型对应于神经网络,所述多个模块对应于所述神经网络中的多个算子。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述根据所述第一模型信息和所述第二模型信息生成模型结构文件,包括:
根据所述第一模型信息,生成所述多个模块中的每个模块对应的第一结构文件,所述第一结构文件指示对应的模块的内部结构及功能;
根据所述第一模型信息,定义所述多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数;
实例化所述第二模型信息指示的至少一个模块对应的第一结构文件和所述连接函数,生成所述模型结构文件。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一模型信息,生成所述多个模块中的每个模块对应的第一结构文件,包括:
根据所述第一模型信息以及预设的模块结构定义规范,生成所述第一结构文件,所述模块结构定义规范记载第一结构文件的数据格式。
7.根据权利要求5所述的方法,其特征在于,所述第一模型信息存储在第二结构文件和/或配置文件中,所述属性包括所述模块的名称、所述模块的接口编号以及对所述模块的功能的描述,
其中,所述第一模型信息存储在所述第二结构文件和所述配置文件中时,所述第二结构文件用于存储所述模块的名称、所述模块的接口编号以及所述模块间的连接关系,所述配置文件用于存储对所述模块的功能的描述。
8.根据权利要求7所述的方法,其特征在于,所述第二结构文件的格式包括图片格式。
9.根据权利要求7所述的方法,其特征在于,所述根据所述第一模型信息,定义所述多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数,包括:
根据所述模块的接口编号查找接口文件,确定所述接口编号对应的接口允许传输的数据内容和传输方向,所述接口文件包括不同接口编号对应的接口允许传输的数据内容和传输方向;
根据确定的数据内容和传输方向,定义所述模块的接口编号对应的接口;
根据所述模块间的连接关系,确定所述接口的连接关系,生成用于模块间接口通信的连接函数。
10.根据权利要求7所述的方法,其特征在于,所述根据所述第一模型信息,定义所述多个模块中的每个模块的接口,生成用于模块间接口通信的连接函数之后,所述方法还包括:
根据所述接口以及所述连接函数,生成每个模块对应的调试信息,所述调试信息用于对所述模型进行调试,确定所述调试信息对应的模块是否出现异常;
所述根据所述模型结构文件生成所述模型之后,所述方法还包括:
根据所述调试信息对所述模型进行调试,输出预定义形式的日志,所述日志包括接口编号、接口当前传输数据内容以及所述调试信息中的一种或多种。
11.根据权利要求10所述的方法,其特征在于,所述模型对应于电路、所述多个模块对应于所述电路中的多个硬件模块时,所述电路包括多个模块簇,每个模块簇包括多个模块组,每个模块组包括所述多个硬件模块,
所述调试信息包括对应的硬件模块所属的模块组的组编号、该模块组所属的模块簇的簇编号、以及指示调试方式的调试任务编号。
12.根据权利要求2所述的方法,其特征在于,所述编译所述模型结构文件得到可执行文件,包括:
根据所述第一模型信息和所述第二模型信息生成编译文件,所述编译文件用于实现编译功能;
使用所述编译文件编译所述模型结构文件,得到所述可执行文件。
13.一种模型的生成装置,其特征在于,所述装置包括:
第一接收模块,用于接收第一模型信息,所述第一模型信息包括多个模块的属性以及模块间的连接关系;
第二接收模块,用于接收第二模型信息,所述第二模型信息指示所述多个模块中的至少一个模块;
第一生成模块,用于根据所述第一模型信息和所述第二模型信息生成模型结构文件,所述模型结构文件包括所述至少一个模块的实例对象代码及所述至少一个模块的实例对象代码间的连接关系;
第二生成模块,用于根据所述模型结构文件生成所述模型,所述模型包括所述至少一个模块,所述模型中所述至少一个模块的连接关系与所述模型结构文件中所述至少一个模块的实例对象代码间的连接关系相符合。
14.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1至12中任意一项所述的方法。
15.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至12中任意一项所述的方法。
CN202311616190.5A 2023-11-29 2023-11-29 模型的生成方法、装置、电子设备及存储介质 Active CN117591104B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311616190.5A CN117591104B (zh) 2023-11-29 2023-11-29 模型的生成方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311616190.5A CN117591104B (zh) 2023-11-29 2023-11-29 模型的生成方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117591104A true CN117591104A (zh) 2024-02-23
CN117591104B CN117591104B (zh) 2024-04-12

Family

ID=89909604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311616190.5A Active CN117591104B (zh) 2023-11-29 2023-11-29 模型的生成方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117591104B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020140282A (ja) * 2019-02-27 2020-09-03 日立オートモティブシステムズ株式会社 モジュール取得方法及びモジュール取得装置
CN114444338A (zh) * 2022-04-11 2022-05-06 北京瑞莱智慧科技有限公司 Ai模型组合快速轻量级验证的方法、装置及存储介质
CN116562342A (zh) * 2023-05-05 2023-08-08 北京集度科技有限公司 模型构建方法、装置、设备、车辆及存储介质
CN116594608A (zh) * 2023-04-04 2023-08-15 中国科学院自动化研究所 可视化神经网络模型生成和训练的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020140282A (ja) * 2019-02-27 2020-09-03 日立オートモティブシステムズ株式会社 モジュール取得方法及びモジュール取得装置
CN114444338A (zh) * 2022-04-11 2022-05-06 北京瑞莱智慧科技有限公司 Ai模型组合快速轻量级验证的方法、装置及存储介质
CN116594608A (zh) * 2023-04-04 2023-08-15 中国科学院自动化研究所 可视化神经网络模型生成和训练的方法及装置
CN116562342A (zh) * 2023-05-05 2023-08-08 北京集度科技有限公司 模型构建方法、装置、设备、车辆及存储介质

Also Published As

Publication number Publication date
CN117591104B (zh) 2024-04-12

Similar Documents

Publication Publication Date Title
CN108885545B (zh) 用于实时数据流编程语言的工具和方法
CN108845940B (zh) 一种企业级信息系统自动化功能测试方法和系统
CN112104709B (zh) 智能合约的处理方法、装置、介质及电子设备
CN110188135B (zh) 文件生成方法及设备
CN113900958A (zh) 测试用例脚本的生成方法、系统、介质及电子设备
CN111736840A (zh) 小程序应用的编译方法、运行方法、存储介质及电子设备
CN110737631A (zh) 一种基于Flink引擎的数据解析方法及装置
CN112435072A (zh) 一种模型创建方法、装置、电子设备及存储介质
CN116360735A (zh) 一种表单生成方法、装置、设备和介质
CN113778897A (zh) 接口的自动测试方法、装置、设备及存储介质
CN113836014A (zh) 一种接口测试方法、装置、电子设备和存储介质
CN113238739A (zh) 一种插件开发和数据获取方法、装置、电子设备及介质
CN112631563A (zh) 基于框架的系统开发方法、装置、计算机设备及存储介质
CN117591104B (zh) 模型的生成方法、装置、电子设备及存储介质
US11182272B2 (en) Application state monitoring
CN113885841A (zh) 脚本生成的方法、装置、电子设备和可读介质
CN113867714A (zh) 一种适配多语言的自动代码生成方法
CN111338968A (zh) 项目的功能模块调试方法、装置、介质及电子设备
CN114047923A (zh) 错误代码定位方法、装置、存储介质以及电子设备
CN113760291A (zh) 日志输出的方法和装置
CN105824684A (zh) 一种多模式大数据软件模拟器的实现方法
CN111880775A (zh) 多模块分层架构实现方法、装置、电子设备、存储介质
CN110736920A (zh) 一种基于工程管理测试脚本的卡片测试方法及系统
CN112948266B (zh) 一种数据库语法测试系统、方法、装置、设备及存储介质
CN114755990B (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
GR01 Patent grant
GR01 Patent grant