CN116431421B - 神经网络生成方法及生成器、验证方法及系统、存储介质 - Google Patents

神经网络生成方法及生成器、验证方法及系统、存储介质 Download PDF

Info

Publication number
CN116431421B
CN116431421B CN202310692612.0A CN202310692612A CN116431421B CN 116431421 B CN116431421 B CN 116431421B CN 202310692612 A CN202310692612 A CN 202310692612A CN 116431421 B CN116431421 B CN 116431421B
Authority
CN
China
Prior art keywords
operator
neural network
tensor
chip
tensors
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.)
Active
Application number
CN202310692612.0A
Other languages
English (en)
Other versions
CN116431421A (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.)
Chengdu Denglin Technology Co ltd
Original Assignee
Chengdu Denglin 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 Chengdu Denglin Technology Co ltd filed Critical Chengdu Denglin Technology Co ltd
Priority to CN202310692612.0A priority Critical patent/CN116431421B/zh
Publication of CN116431421A publication Critical patent/CN116431421A/zh
Application granted granted Critical
Publication of CN116431421B publication Critical patent/CN116431421B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请涉及一种神经网络生成方法及生成器、验证方法及系统、存储介质,该神经网络生成方法包括:获取目标神经网络的配置信息,其中,目标神经网络能够用于AI芯片的功能验证,该配置信息包括AI芯片能够支持的算子层数、算子列表和算子生成权重;根据配置信息生成目标神经网络,其中目标神经网络包括AI芯片能够支持的算子以及用于表征各算子之间的连接关系的拓扑结构。由此,本申请可以在尽可能全的验证空间中完成现有甚至是未来可能出现的各种神经网络的验证,增强了AI芯片的验证空间的覆盖率,确保了AI芯片的设计能够兼容多种结构和大小的神经网络,进而可以提高AI芯片的兼容性并且可以延长AI芯片的市场生命周期。

Description

神经网络生成方法及生成器、验证方法及系统、存储介质
技术领域
本申请涉及芯片技术领域,尤其涉及一种神经网络生成方法及生成器、验证方法及系统、存储介质。
背景技术
人工智能(英文:Artificial Intelligence,简称:AI)芯片最重要的设计功能是能够正确运行各种神经网络,例如包括但不限于:深度卷积神经网络VGG16和ResNet50、以及BERT神经网络。因此,在芯片验证中,除了需要对单算子(英文:Operation,简称:OP)功能以及指令集架构(英文:Instruction Set Architecture,简称:ISA)进行验证以外,通常还会选取各种神经网络进行芯片验证,验证AI芯片是否能够正确运行所选取的神经网络。
然而,即使对现有的神经网络都进行了验证,也不能保证AI芯片在运行新的神经网络时不出现“兼容性”问题。这是因为,虽然AI芯片能够支持新的神经网络所使用的算子,但是新的神经网络通常会定义更多的算子层数和不同的拓扑结构(图结构)。如果在AI芯片验证时没有在这些条件下进行测试,则可能遇到AI芯片Bug而出现AI芯片不支持这些算子层数和拓扑结构的情况。
从测试角度而言,现有存在并支持的(其中的算子AI芯片都支持的)神经网络也只是AI芯片架构设计下、能够支持的神经网络中的一个子集。因此,需要一种方法,能够在现有以及未来可能出现的神经网络中,在当前的AI芯片算子功能支持的前提下,完成尽可能多的不同结构、不同层数的神经网络的验证。
相关技术中,在AI芯片的ISA层面,进行各种组合的随机验证,但是,在神经网络层面,则使用尽可能多的现有的已知结构的神经网络来完成验证。
然而,上述方式只能在神经网络的有限验证空间中(对有限的神经网络)完成AI芯片的功能验证,对于现在未测试或者未来可能出现的神经网络,并不能做一些预见性的验证,从而导致AI芯片的“兼容性”不足,缩短了AI芯片的市场生命周期。
发明内容
有鉴于此,本申请提出了一种神经网络生成方法及生成器、芯片验证方法及系统、存储介质,根据配置信息随机生成包括AI芯片能够支持的所有算子以及用于表征各算子之间的连接关系的拓扑结构的神经网络,从而可以在尽可能全的验证空间中完成现有甚至是未来可能出现的各种神经网络的验证,有利于提高AI芯片的兼容性并且延长AI芯片的市场生命周期。
第一方面,本申请实施例提供一种神经网络生成方法,应用于神经网络生成器,该神经网络生成方法包括:获取目标神经网络的配置信息,其中,所述目标神经网络能够用于AI芯片的功能验证,所述配置信息包括所述AI芯片能够支持的算子层数、算子列表和算子生成权重;根据所述配置信息生成所述目标神经网络,其中所述目标神经网络包括所述AI芯片能够支持的算子以及用于表征各算子之间的连接关系的拓扑结构。
第二方面,本申请实施例提供一种神经网络生成器,包括:获取模块,用于获取目标神经网络的配置信息,其中,所述目标神经网络能够用于AI芯片的功能验证,所述配置信息包括所述AI芯片能够支持的算子层数、算子列表和算子生成权重;生成模块,用于根据所述配置信息生成所述目标神经网络,其中所述目标神经网络包括所述AI芯片能够支持的算子以及用于表征各算子之间的连接关系的拓扑结构。
第三方面,本申请实施例提供一种神经网络生成器,包括:存储器和处理器;所述存储器中存储有处理器可执行指令,所述处理器被配置为在执行所述存储器存储的指令时实现上述第一方面提供的神经网络生成方法。
第四方面,本申请实施例提供一种芯片验证方法,包括:使用上述第一方面提供的神经网络生成方法来生成所述目标神经网络;将所述目标神经网络转换为中间表示IR,并且根据所述IR生成第三方AI框架运行模块运行所述目标神经网络所需要的第一数据、以及芯片模拟器运行所述目标神经网络所需要的第二数据;根据所述第一数据来在所述第三方AI框架上运行所述目标神经网络以获得第一运算结果;根据所述第二数据来在所述芯片模拟器上运行所述目标神经网络以获得第二运算结果;比对所述第一运算结果和所述第二运算结果,以判断所述第一运算结果与所述第二运算结果是否一致;若所述第一运算结果与所述第二运算结果一致,则验证为所述AI芯片能够正确运行所述目标神经网络。
第五方面,本申请实施例提供一种芯片验证系统,包括:根据上述第二方面或第三方面提供的神经网络生成器,用于生成所述目标神经网络;驱动模块,用于将所述目标神经网络转换为中间表示IR,并且根据所述IR生成第三方AI框架运行模块运行所述目标神经网络所需要的第一数据、以及芯片模拟器运行所述目标神经网络所需要的第二数据;第三方AI框架运行模块,用于接收所述第一数据,并根据所述第一数据来在所述第三方AI框架上运行所述目标神经网络以获得第一运算结果;芯片模拟器,用于接收所述第二数据,并根据所述第二数据来在所述芯片模拟器上运行所述目标神经网络以获得第二运算结果,其中,比对所述第一运算结果和所述第二运算结果,若所述第一运算结果与所述第二运算结果一致,则验证为所述AI芯片能够正确运行所述目标神经网络。
第六方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述第一方面提供的神经网络生成方法。
第七方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述第四方面提供的芯片验证方法。
本申请实施例采用的上述至少一个技术方案能够达到的有益效果为:相较于现有技术仅验证AI芯片是否能够正确运行现有的各种神经网络,本申请可根据配置信息随机生成包括AI芯片能够支持的所有算子以及各种拓扑结构的神经网络,可验证AI芯片是否能够正确运行随机生成的各种神经网络(其涵盖了未来可能出现的神经网络),这样,除了进行现有的神经网络的验证以外,本申请还增加了未来可能出现的神经网络的验证,从而可以在尽可能全的验证空间中完成现有甚至是未来可能出现的各种神经网络的芯片验证,使得可以增强AI芯片的验证空间的覆盖率,有利于确保AI芯片的设计能够兼容多种结构和大小的神经网络,进而可以提高AI芯片的兼容性并且可以延长AI芯片的市场生命周期。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1示出了本申请实施例提供的一种神经网络生成方法的流程图。
图2示出了本申请实施例提供的另一种神经网络生成方法的流程图。
图3示出了按照本申请实施例提供的图1或图2所示的神经网络生成方法所生成的一种目标神经网络的示意图。
图4示出了本申请实施例提供的一种芯片验证方法的流程图。
图5示出了本申请实施例提供的一种神经网络生成器的框图。
图6示出了本申请实施例提供的一种芯片验证系统的框图。
实施方式
以下将参考附图详细说明本申请的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件、描述对象。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
神经网络(英文:Neural Network,简称:NN)是人工智能应用的基础,已经在语音识别、图像识别、视频处理、自动驾驶等各种应用领域中普及,甚至在很多领域,神经网络的精确性已经超过了人类。通常通过神经网络技术建立神经网络模型来对各种信息进行处理。神经网络可以是各种结构的神经网络,例如循环神经网络(英文:Rerrent NeuralNetwork,简称:RNN)、卷积神经网络(英文:Convolution Neural Network,简称:CNN)、深度神经网络(英文:Deep Neural Networks,简称:DNN)、长短期记忆(英文:Long Short TermMemory,简称:LSTM)神经网络等。可以将各种结构的神经网络部署于AI芯片上,并且可以通过验证AI芯片是否能够正确运行其上所部署的神经网络来验证AI芯片的功能。
神经网络是由不同算子组成的计算网络,每个算子可以完成相应的计算量。算子是指网络中的计算单元,例如在神经网络中使用的卷积算子、池化算子、激活函数算子、全连接算子等。神经网络可以包括多个算子以及用于表征各算子之间的连接关系的拓扑结构,每个算子可以具有对应的输入张量和输出张量。
如背景技术部分所述的,相关技术中,仅能够验证AI芯片是否能够正确运行现有的神经网络,而无法验证AI芯片是否能够正确运行未来可能出现的神经网络,因此,只能在神经网络的有限验证空间中完成AI芯片的功能验证,从而导致AI芯片的“兼容性”不足,AI芯片的市场生命周期较短。
为此,考虑到如果能够随机生成神经网络,则随机生成的神经网络可能涵盖了现有的神经网络以及未来可能出现的神经网络,因此,如果采用随机生成的神经网络来验证AI芯片的功能,则能够验证AI芯片是否能够正确运行现有的神经网络以及未来可能出现的神经网络,这样,应能够在尽可能全的验证空间中完成现有甚至是未来可能出现的各种神经网络的验证,从而可以增强AI芯片的验证空间的覆盖率,进而可以确保AI芯片的设计能够兼容多种结构和大小的神经网络,由此可以提高AI芯片的兼容性并且可以延长AI芯片的市场生命周期,因此可以解决前文所描述的问题。
另外,考虑到神经网络模型包括多个算子,并且算子之间存在相应的连接关系,因此,如果构建出神经网络模型的所有算子以及各算子之间的连接关系,则相当于构建出神经网络,因而可以通过随机生成神经网络的各层算子以及各层算子之间的连接关系来随机生成该神经网络。
基于此,本申请实施例提供了一种神经网络生成方法,应用于神经网络生成器,包括:获取目标神经网络的配置信息,其中,所述目标神经网络能够用于AI芯片的功能验证,所述配置信息包括所述AI芯片能够支持的算子层数、算子列表和算子生成权重;根据所述配置信息生成所述目标神经网络,其中所述目标神经网络包括所述AI芯片能够支持的算子以及用于表征各算子之间的连接关系的拓扑结构。
另外,本申请实施例还提供了一种芯片验证方法,使用前述的神经网络生成方法来生成所述目标神经网络;将所述目标神经网络转换为中间表示IR,并且根据所述IR生成第三方AI框架运行模块运行所述目标神经网络所需要的第一数据、以及芯片模拟器运行所述目标神经网络所需要的第二数据;根据所述第一数据来在所述第三方AI框架上运行所述目标神经网络以获得第一运算结果;根据所述第二数据来在所述芯片模拟器上运行所述目标神经网络以获得第二运算结果;比对所述第一运算结果和所述第二运算结果,以判断所述第一运算结果与所述第二运算结果是否一致;若所述第一运算结果与所述第二运算结果一致,则验证为所述AI芯片能够正确运行所述目标神经网络。
本申请实施例中,根据配置信息随机生成包括AI芯片能够支持的所有算子以及拓扑结构的神经网络,由此,相较于仅验证AI芯片是否能够正确运行现有的各种神经网络,本申请验证AI芯片是否能够正确运行随机生成的各种神经网络(其涵盖了未来可能出现的神经网络),这样,除了进行现有的神经网络的验证以外,本申请还增加了未来可能出现的神经网络的验证,从而可以在尽可能全的验证空间中完成现有甚至是未来可能出现的各种神经网络的验证,使得可以增强AI芯片的验证空间的覆盖率,确保了AI芯片的设计能够兼容多种结构和大小的神经网络,进而可以提高AI芯片的兼容性并且可以延长AI芯片的市场生命周期。
基于上述构思,提出图1和图2所示的神经网络生成方法以及图4所示的芯片验证方法。本申请实施例提供的方案可以被应用于多种技术领域,示例性的,可应用于自动驾驶、智能安防、人脸识别、自然语言处理、语音识别、视频审核、智能客服等技术领域的产品或技术。
在一种可能的实现方式中,可以由神经网络生成器来执行图1和图2所示的本申请实施例提供的神经网络生成方法。
请参阅图1,该神经网络生成方法可以包括如下步骤:
在步骤S110中,获取目标神经网络的配置信息,其中,所述目标神经网络能够用于AI芯片的功能验证,所述配置信息包括所述AI芯片能够支持的算子层数、算子列表和算子生成权重。
其中,目标神经网络是指使用本申请实施例提供的神经网络生成方法随机生成的神经网络。在生成该目标神经网络之后,可以验证AI芯片是否能够正确运行该目标神经网络。
本实施例中,可以根据待验证的AI芯片的验证需求,来配置要用于验证该AI芯片的功能的神经网络(即,目标神经网络)的参数,相应地,神经网络生成器可以读取到所配置的参数以作为配置信息。应能够理解,由于所配置的参数是根据待验证的AI芯片的验证需求而配置的参数,并且要生成的目标神经网络用于AI芯片的功能验证,因此该配置信息是目标神经网络的配置信息。
应能够理解,配置信息所包括的AI芯片能够支持的算子层数net_op_num、算子列表op_list和算子生成权重op_gen_weights需要满足待验证的AI芯片的验证需求,以确保根据配置信息生成的目标神经网络能够满足待验证的AI芯片的验证需求,从而能够更好地验证AI芯片的功能。
其中,算子层数可以表示神经网络所包括的所有算子的层数。在一些应用场景下,神经网络的算子层数相当于神经网络的算子个数。例如,假设神经网络的算子层数是200层,则该神经网络包括200个算子。算子层数可以表征神经网络的大小,对于算子层数不同的神经网络,这些神经网络的大小是不同的。
算子列表用于列出神经网络所包括的AI芯片能够支持的所有算子,根据算子列表可以确定出神经网络包括哪些算子。在一种可能的实现方式中,算子列表可以记录神经网络所包括的所有算子各自的算子标识,根据算子列表可以确定出神经网络包括与多个算子标识各自相对应的多个算子。
算子生成权重表示生成神经网络的相应算子的权重。在一种可能的实现方式中,相较于算子生成权重低的算子,优先生成算子生成权重高的算子。
应能够理解,配置信息除了可以包括算子层数、算子列表和算子生成权重以外,还可以包括满足待验证的AI芯片的验证需求的其它参数,例如,子网最大层数maximum_subnet_op_num、张量的大小(英文:shape)、张量的数据类型(英文:data type)、张量的内存格式、各类型的张量(英文:tensor)的配比、张量的选取权重tensor_weights、以及其它功能开关对应的配置和权重。
其中,子网最大层数表示神经网络的相应子网(英文:subnet)能够支持的算子的最大层数。各类型的张量的配比例如为:5-D张量占5成、卷积(英文:convolution)算子中的张量占3成、卷积后面做偏置相加(英文:bias-add)的张量占2成等。对于张量的大小,举例而言,一个4维的张量若为(2, 224, 224, 3),这表示第一个维度2个元素,第二个维度224个元素,第三个维度224个元素,第四个维度3个元素,这个4维的张量总共包含2乘以224乘以224乘以3等于301056个元素。
张量的数据类型可以包括但不限于float16、float32、int8、int16、int32等。对于张量的内存格式,举例而言,卷积输入的格式例如NCHW数据格式和NHWC数据格式、以及卷积权重的格式例如HWIO数据格式和OHWI数据格式等,其中,N、C、H、W、I、O分别表示数量、通道、高度、宽度、输入通道、输出通道。
在一种可能的实现方式中,可以根据验证需求来设置各类型的张量在随机使用时的初始的选取权重。换言之,张量的选取权重可能随着验证需求的改变而改变。
对于其它开关对应的配置和权重,举例而言,在AI芯片包括卷积算子时,支持压缩和稀疏化的输入(compression,sparsity),根据AI芯片的验证需求,在随机生成的目标神经网络中,可以随机开关这些功能,其中,可以通过配置这些功能的开关的权重,来配置这些功能的开关的概率。
应能够理解,本申请实施例对配置信息具体包括的参数不作具体限制,任何能够满足待验证的AI芯片的验证需求且能够用于生成目标神经网络的参数应均可以用作本申请实施例的配置信息。
在获取到目标神经网络的配置信息之后,可以继续执行下述步骤S120。
在步骤S120中,根据所述配置信息生成所述目标神经网络,其中所述目标神经网络包括所述AI芯片能够支持的算子以及用于表征各算子之间的连接关系的拓扑结构。
本实施例中,由于算子列表列出目标神经网络所包括的AI芯片能够支持的各算子,并且算子生成权重包括这些算子各自的生成权重,因此可以根据算子列表和算子生成权重来生成具有相应的生成权重的算子列表中所列出的各算子,由此可以生成包括AI芯片能够支持的所有算子的神经网络。应能够理解,各算子之间可能存在依赖关系、逻辑关系等,因此,可以根据各算子之间的依赖关系、逻辑关系等,确定出各算子之间的连接关系,从而可以确定出拓扑结构。
若完成目标神经网络所包括的各算子以及拓扑结构的生成,则完成了包括这些算子和拓扑结构的目标神经网络的生成处理,即,已经生成包括这些算子和拓扑结构的目标神经网络。
根据本申请实施例,根据配置信息随机生成包括AI芯片能够支持的所有算子以及拓扑结构的神经网络,由此,相较于仅验证AI芯片是否能够正确运行现有的各种神经网络,本申请验证AI芯片是否能够正确运行随机生成的各种神经网络(其涵盖了未来可能出现的神经网络),这样,除了进行现有的神经网络的验证以外,本申请还增加了未来可能出现的神经网络的验证,从而可以在尽可能全的验证空间中完成现有甚至是未来可能出现的各种神经网络的验证,使得可以增强AI芯片的验证空间的覆盖率,确保了AI芯片的设计能够兼容多种结构和大小的神经网络,进而可以提高AI芯片的兼容性并且可以延长AI芯片的市场生命周期。
在一种可能的实现方式中,在步骤S110之后且在步骤S120之前,还包括:根据所述配置信息来初始化所述神经网络生成器。
本实施例中,在获取到配置信息之后,可以初始化神经网络生成器,以便于神经网络生成器能够更好地根据配置信息生成目标神经网络。
在一种可能的实现方式中,根据所述配置信息来初始化所述神经网络生成器,包括:根据所述配置信息来初始化所述神经网络生成器的与所述配置信息相对应的参数;根据所述配置信息中的张量相关信息来生成包括随机数据的张量,将所述张量加入相应的张量集合中,并且初始化所述张量集合中的每个张量的选取权重,其中,所述张量相关信息包括张量的大小、张量的数据类型以及张量的内存格式。
本实施例中,神经网络生成器的初始化可以包括神经网络生成器的参数初始化以及初始张量的生成。其中,参数初始化可以包括将神经网络生成器的算子层数、算子列表和算子生成权重初始化为配置信息所包括的算子层数、算子列表和算子生成权重。初始张量的生成可以包括生成具有张量相关信息中的张量的大小、数据类型为张量相关信息中的张量的数据类型、并且采用张量相关信息中的张量的内存格式的张量。
在生成初始张量之后,可以将所生成的张量加入相应的张量集合(tensor_set)中。考虑到在生成目标神经网络时需要根据张量集合中的张量的选取权重(tensor_gen_weights)来从该张量集合中选取所生成的算子的张量,并且该选取权重为初始权重,可以在将所生成的张量加入相应的张量集合之后初始化该张量的选取权重。在一种可能的实现方式中,每个张量的初始选取权重是相同的。在另一种可能的实现方式中,每个张量的初始选取权重是不同的。
因此,可以根据配置信息中的张量相关信息例如张量的大小、张量的数据类型、张量的内存格式,来生成一系列包含随机数据的张量,其中张量的个数可以根据配置信息来设定,然后将这些张量按照一定规则添加到不同的张量集合中,并且初始化每个张量的选取权重。在一种可能的实现方式中,该一定规则可以包括但不限于:按照张量的大小来将张量顺次放入相应的张量集合、按照张量的数据类型来将张量顺次放入相应的张量集合等。
在一种可能的实现方式中,将所述张量加入相应的张量集合中,包括:将张量的大小和数据类型均相同的张量加入同一个张量集合中。
本实施例中,可以将大小和数据类型相同的张量放入同一个张量集合中,以便于后续的element-wise运算的算子使用。换言之,在后续的element-wise运算中,可以使用被放入同一个张量集合中的大小和数据类型相同的张量。
图2示出了本申请实施例提供的一种神经网络生成方法的流程图,可以由神经网络生成器来执行该神经网络生成方法以生成目标神经网络。请参阅图2,该神经网络生成方法可以包括如下步骤:
在步骤S210中,获取目标神经网络的配置信息,其中,所述目标神经网络能够用于AI芯片的功能验证,所述配置信息包括所述AI芯片能够支持的算子层数、算子列表和算子生成权重。
针对步骤S210的说明,可以参阅前文关于步骤S110的具体描述,受篇幅所限,此处不再赘述。
在步骤S220中,针对第i层,根据所述算子列表和所述算子生成权重来生成该层的算子。其中,i为正整数。
本实施例中,可以获取算子列表op_list和算子生成权重op_gen_weights,然后可以按照算子列表中的各算子对应的生成权重来随机生成各算子op_i。
在一种可能的实现方式中,步骤S220可以包括:根据在验证所述AI芯片是否能够正确运行所述目标神经网络时的测试场景,选择满足所述测试场景的要求的算子列表和算子生成权重;根据所选择的算子列表和算子生成权重来生成该层的算子。
本实施例中,可以根据测试场景来选取算子列表op_list和算子生成权重op_gen_weights。示例性的,假设测试场景是一个类似卷积神经网络的网络,则可以选取卷积算子并将所选取的卷积算子加入到算子列表中,同时,考虑到类似卷积神经网络的网络可能更需要卷积算子,因此,为了在整个神经网络中选取更多的卷积算子,可以提高卷积算子对应的算子生成权重,以将卷积算子对应的算子生成权重设置为高于其它类型的算子对应的算子生成权重。如果需要,可以将卷积算子对应的算子生成权重设置得比其它类型的算子对应的算子生成权重高出很多。
同理,假设测试场景是一个以matmul函数为主的神经网络例如循环神经网络,则可以选取matmul算子并将所选取的matmul算子加入到算子列表中,同时提高matmul算子对应的算子生成权重。
在根据测试场景选取出算子列表和算子生成权重之后,可以根据所选取的算子列表和算子生成权重来生成第i层的算子op_i。
在步骤S230中,针对第i层,根据所述算子的类型来确定所述算子的输入张量个数以及输入张量。
本实施例中,算子op_i的类型不同,则算子的输入张量个数和要求不一样,其处理方式也不一样。示例性的,一般的element-wise运算的算子,例如,加法(英文:add)、减法(英文:subtract)、乘法(英文:multiply)等运算,对于输入张量的要求包括:多个输入张量的大小必须是可广播的(英文:broadcastable)、并且多个输入张量的数据类型必须相同(例如,数据类型都是fp16或者fp32而不能混合不同数据类型的张量),则根据该类型的算子的前述要求,可以确定在大小和数据类型都相同的张量集合中按照张量的选取权重来选取张量。
在一种可能的实现方式中,根据所述算子的类型来确定所述算子的输入张量个数以及输入张量值,包括:根据所述算子的类型,确定所述算子的输入张量个数;根据所述算子对应的选取权重,从所述算子对应的张量集合中选择输入张量。
本实施例中,可以根据在步骤S220中生成的算子op_i的类型,确定算子op_i的输入张量个数,为每个输入张量input_i确定其随机需要的张量集合tensor_set_k,在对应的张量集合中根据对应的选取权重,随机选取一个张量作为算子op_i的输入张量。
在一种可能的实现方式中,如果所述算子为卷积算子,则所述卷积算子的输入张量个数为2,所述卷积算子的输入张量值包括当前层卷积运算的输入值input和当前层卷积运算的模型权重weight,其中,根据所述卷积算子对应的选取权重从所述卷积算子对应的张量集合中选择所述输入值,并且根据所述输入值的属性来生成与所述输入值有关的所述模型权重。
在一种可能的实现方式中,如果所述算子为卷积算子,则所述卷积算子的输入张量个数为3,所述卷积算子的输入张量包括当前层卷积运算的输入值input、当前层卷积运算的模型权重weight以及当前层卷积运算的偏置值bias,其中,根据所述卷积算子对应的选取权重从所述卷积算子对应的张量集合中选择所述输入值,并且根据所述输入值的属性来生成与所述输入值有关的所述模型权重和所述偏置值。
本实施例中,假设算子op_i为卷积算子,则算子op_i的输入张量可能是张量input和张量weight这2个输入张量,也可能是张量input、张量weight和张量bias这3个输入张量。对于该卷积算子,先在张量集合中按照对应的选取权重随机选取一个张量input_i,而剩下的张量weight和张量bias并非从张量集合中选取,而是根据张量input_i的大小、数据类型等属性来临时随机生成。这是因为,神经网络中的每个卷积算子的张量weight和张量bias一般是不同的,并且跟张量input_i的属性相关。例如,张量weight中的宽度(英文:width)和高度(英文:height)的维度要求需要比张量input_i的宽度和高度的维度小或者相同,而两者的输入通道的维度需要相同,并且两者的数据类型一般也需要相同。
在一种可能的实现方式中,在确定所述输入张量之后,还包括:按照预设规则来更新所述算子对应的张量集合中的各张量的选取权重。
本实施例中,在选取算子op_i的输入张量之后,可以按照预设规则来更新张量集合中的各张量的选取权重。应能够理解,该预设规则一般是某种策略,可以用于控制从张量集合中选取算子的输入张量的“倾向”。换言之,可以根据从张量集合中选取输入张量的倾向来更新张量集合中的各张量的选取权重。
在一种可能的实现方式中,所述预设规则包括:降低所述输入张量值在所述算子对应的张量集合中的选取权重,并且增加所述算子对应的张量集合中未被选中的张量的选取权重。
本实施例中,在选取完算子op_i的输入张量之后,可以重新更新张量集合中的各张量的选取权重,预设规则可以包括但不限于:降低当前选取到的张量的选取权重,增加未被选取到的张量的选取权重。其目的是,尽量让不同的张量都能够被选取到,同时也允许同一个张量被神经网络中的多个算子使用,用于模拟算子之间存在多条边的网络结构,同时因为概率原因,在网络结构中,很多层之前的张量也可能被选取到,用来模拟神经网络中那些跨越多层算子的长边。
在一种可能的实现方式中,所述预设规则包括:降低所述算子对应的张量集合中的使用次数少的张量的选取权重,并且增加所述算子对应的张量集合中的使用次数多的张量的选取权重。
本实施例中,为了使得张量集合中的各张量都尽量被使用到,其中张量集合中的张量包括每次新产生的张量,当然也可以在每次更新张量集合中的各张量的选取权重时,按照“使用次数越小,应该使其选取权重越大”的原则,增加使用次数少的张量的选取权重,并且降低使用次数多的张量的选取权重。
在确定出算子op_i的输入张量个数以及输入张量之后,继续执行下述步骤S240。
在步骤S240中,针对第i层,将所述算子的输出张量加入到所述算子对应的张量集合中,并初始化所述输出张量的选取权重。
在一种可能的实现方式中,初始化所述输出张量的选取权重包括:将所述输出张量的选取权重初始化为大于预设值的第一值。
本实施例中,可以将随机生成的算子op_i的输出张量output_i加入到张量集合tensor_set中,并且将其对应的选取权重初始化为较大的值(例如,初始化为大于预设值的第一值),以便后续生成算子能够优先将其作为输入张量,从而将不同的算子“链接”起来。其中,本申请对输出张量的个数不作具体限制,既可以将一个输出张量加入到张量集合中,也可以将多个输出张量加入到张量集合中。
在一种可能的实现方式中,将所述算子的输出张量加入到所述算子对应的张量集合中,包括:根据所述算子的行为,按照规则从所述算子对应的张量集合中移除符合条件的张量,并将所述算子的输出张量加入到所述张量集合中的位置处,其中所述位置是从所述张量集合中移除的张量在所述张量集合中的位置。
本实施例中,有些算子在随机生成时,会随机生成“in place”的行为,即算子的输出张量output_i会选择使用该算子的某一个输入的储存空间,作为输出的储存空间,概念上输出张量output_i会“覆盖”某一个输入张量input_i。所以“in place”发生时,会将已经消亡的输入张量从张量集合中删除掉,而输出张量output_i本身会加入张量集合,相当于替换掉了之前的输入张量input_i。
换言之,可以根据算子op_i的行为,按照一定规则,移除掉张量集合中的某些符合条件的张量。本实施例中,移除掉张量集合中的某些符合条件的张量与算子的行为相关。如果该算子的操作是“in place”发生的,即输入张量虽然是一个新产生的张量,但是其使用的内存位置被部分或者全部覆盖,此时输入张量将不能作为输入给其它算子使用了。这是因为其使用的内存已经被新生成的输出张量覆盖,因此需要在张量集合中将其移除,避免后续生成的新的算子使用该输入张量。
可以将算子的输出张量output_i按照一定规则加入到输入张量的某个张量集合中。一般来说,所有新输出的张量(相当于新产生的张量),都会加入到同一张量集合中以便后续新生成的算子使用。但是,有些特殊的算子,其产生的输出张量并不是一般的算子可以使用的。这是因为有些AI芯片是一个异构架构,虽然几乎所有使用张量的算子都是运行在同一硬件模块上(张量处理器),但是还是有少部分算子运行在RISC-V的CPU处理器上。这些算子产生的输出实际上是希望同样运行在RISC-V上的算子来处理,因此会把这些张量通过放到不同的张量集合来区分开,以便在生成RISC-V上的算子时能够拿到正确的输入张量。
可以根据一定算法来更新张量集合中的张量的选取权重。本实施例中,可以按照“使用次数越少的张量,应该使其选取权重越大”的策略来更新张量集合中的张量的选取权重。其中,对于新输出的张量,可以认为是使用次数为0次的输入张量,可以将其选取权重更新为最大。
在步骤S250中,确定所生成的该层的算子是否能够加入当前的子网。
如果判断为“是”,则执行下述步骤S260;否则,执行下述步骤S270。
在步骤S260中,将所述算子加入所述子网,并更新所述子网的参数。
在步骤S270中,创建新的子网,将所述算子加入所述新的子网,并更新所述新的子网的参数。
本实施例中,考虑到AI芯片出于硬件资源的原因,在每次执行任务时,只能将有限的算子划分到一个子网上以作为一次执行任务的命令提交给AI芯片。多个子网的命令在AI硬件上排队执行,前一个子网执行完毕后,会将该子网所占用的资源全部释放给下一个子网使用。因此,需要检查算子op_i是否能够加入当前的子网,其中当前的子网是执行当前任务时的子网。
如果算子op_i不能加入当前的子网,则创建一个新的子网,将算子op_i加入该新的子网,并且更新该新的子网的参数。反之,如果算子op_i能够加入当前的子网,则将算子op_i加入当前的子网,并且更新当前的子网的参数。其中,子网的参数可以包括但不限于被划分到该子网的算子的数量、使用的各种资源数目和状态。更新子网的参数以用于判断下一个算子能否加入该子网。
在一种可能的实现方式中,确定所生成的该层的算子是否能够加入当前的子网,包括:确定所述算子使用的张量所占用的片上内存是否超出最大片上内存容量;确定所述算子对应的硬件指令条数是否超出一次任务总指令条数;确定所述算子占用的各类寄存器数量是否超出硬件资源的最大限制;确定所述算子是否满足硬件计算资源的限制条件。
本实施例中,AI芯片为了打破内存墙,提高能效比,往往会在芯片内加一个速度很快的本地存储,其特点是速度快但容量有限(比如100M)。如果单次子网任务的张量容量超过了片上内存限制,则新生成的算子会被放入一个全新的子网中。换言之,如果算子op_i使用的张量所占用的片上内存超出最大片上内存容量,则步骤S250判断为“否”,执行步骤S270。
一次任务总指令条数以及算子占用的各类寄存器数量是硬件跟程序相关的常用资源,AI芯片为了简化硬件设计不会支持无限指令和寄存器溢出(英文:spill),因此,在子网上面也会有这些限制。如果单次子网任务的指令条数超出一次任务总指令条数,和/或,算子占用的寄存器数量超出硬件资源的最大限制,则步骤S250判断为“否”,执行步骤S270。
硬件计算资源与具体的一些算子的类型和AI芯片的具体实现相关。举例而言,对于卷积算子,若在AI芯片上面只有一个专门固化的硬件模块(mac单元)实现,并且只有一套对应的专用寄存器,如果出现两个卷积算子、并且这两个卷积算子需要不同的配置,则1个划分的子网中只允许存在一个卷积算子。在该情况下,如果当前的子网中已经存在一个卷积算子,则可以确定为所生成的该层的卷积算子不能加入当前的子网;如果当前的子网中并不存在卷积算子,则可以确定为所生成的该层的卷积算子能够加入当前的子网。
应能够理解,其它的大部分算子比较简单,不需要专用寄存器配合,因此1个划分的子网中可以允许存在多个算子。在该情况下,如果1个子网允许存在N个算子,则可以通过判断该子网中存在的算子的个数是否达到N来确定所生成的算子是否能够加入该子网。假设该子网中已经存在M个算子,若N≥M+1,则可以确定为所生成的算子能够加入该子网;若N<M+1,则可以确定为所生成的算子不能加入该子网。其中,N和M为正整数。
在算子op_i加入当前的子网之后,可以更新当前的子网使用的各种资源数目和状态,以判断下一个算子能否加入当前子网。
在步骤S280中,更新i,即,使i=i+1。
在步骤S290中,判断i是否大于或等于算子层数。
本实施例中,如果在步骤S290中判断为“是”,则表示已经生成AI芯片能够支持的所有算子以及拓扑结构,换言之,已经完成了目标神经网络的生成,因此可以结束图2所示的流程。反之,如果在步骤S290中判断为“否”,则表示尚未生成AI芯片能够支持的所有算子以及拓扑结构,返回继续重复执行步骤S220~S280,直至已经生成AI芯片能够支持的所有算子以及拓扑结构为止。
根据本申请实施例,针对每一层算子,根据算子列表和算子生成权重来生成该层的算子;根据该算子的类型确定出该算子对应的输入张量及其个数;将该算子的输出张量加入到该算子对应的张量集合中并初始化该输出张量的选取权重;判断该算子是否能够加入当前的子网;如果判断为能够加入当前的子网,则将该算子加入当前的子网,并更新子网的相应参数;反之,如果判断为无法加入当前的子网,则创建新的子网,将该算子加入所创建的子网中并更新所创建的子网的相应参数。
由此,可以生成包括AI芯片能够支持的所有算子以及拓扑结构的神经网络,从而可以在尽可能全的验证空间中完成现有甚至是未来可能出现的各种神经网络的验证,增强了AI芯片的验证空间的覆盖率,确保了AI芯片的设计能够兼容多种结构和大小的神经网络,进而可以提高AI芯片的兼容性并且可以延长AI芯片的市场生命周期。
需要说明的是,对于目标神经网络所包括的算子而言,该算子所包括的输入张量可以是从初始的张量集合中选取的张量,也可以是该目标神经网络所包括的其它算子的输出张量(计算结果)。如果将目标神经网络的一个算子的输出张量作为该目标神经网络的另一个算子的输入张量,则可以将该一个算子的输出张量连接至该另一个算子的输入张量。因此,根据目标神经网络所包括的所有算子、以及各算子之间的连接关系,可以确定出目标神经网络所包括的拓扑结构。
举例而言,按照图1或图2所示的神经网络生成方法可以生成图3所示的目标神经网络。请参阅图3,目标神经网络6包括算子611、算子621~622、算子631~633,并且目标神经网络6包括如下拓扑结构:子网61中存在算子611,子网62中存在算子621~622,子网63中存在算子631~633,其中,算子611包括输入张量6111~6114和输出张量6115~6118,输入张量6111~6114是从初始的张量集合中选取的张量,输出张量6115~6118是算子611的计算结果并且输出张量6115~6118均被加入到张量集合中。
继续上述示例,算子621包括输入张量6211和输出张量6212,从加入了输出张量6115~6118的张量集合中选取输出张量6115作为算子621的输入张量6211,输出张量6212是算子621的计算结果并且输出张量6212被加入到张量集合中。算子622包括输入张量6221~6223和输出张量6224~6226,从加入了输出张量6115~6118、6212的张量集合中,选取输出张量6212作为算子622的输入张量6223并且选取两个张量作为算子622的输入张量6221和6222,输出张量6224~6226是算子622的计算结果并且输出张量6224~6226被加入到张量集合中。
继续上述示例,算子631包括输入张量6311和输出张量6312,算子632包括输入张量6321和输出张量6322,算子633包括输入张量6331和输出张量6332。从加入了输出张量6115~6118、6212、6224~6226的张量集合中,选取输出张量6224作为算子631的输入张量6311、选取一个张量作为算子632的输入张量6321、并且选取一个张量作为算子633的输入张量6331,输出张量6312是算子631的计算结果,输出张量6322是算子632的计算结果,输出张量6332是算子633的计算结果,并且输出张量6312、6322和6332被加入到张量集合中。
基于同样的发明构思,本申请还提供一种芯片验证方法。图4示出了本申请实施例提供的一种芯片验证方法的流程图,如图4所示,该芯片验证方法可以包括如下步骤。
在步骤S310中,使用根据图1或图2所示的神经网络生成方法来生成所述目标神经网络。
本实施例中,神经网络生成器根据图1或图2所示的神经网络生成方法,在AI芯片功能尽可能全的“验证空间”中,生成待验证的目标神经网络。其中,如前文所述的,可以根据不同的验证需求,对神经网络生成器进行不同的参数配置,以便生成不同大小(算子层数)、不同结构(拓扑结构不同)并且符合要求(各种参数,例如算子比重等)的目标神经网络。然后,可以将随机生成的目标神经网络发送给驱动模块进行处理。
在步骤S320中,将所述目标神经网络转换为IR,并且根据所述IR生成第三方AI框架运行模块运行所述目标神经网络所需要的第一数据、以及芯片模拟器运行所述目标神经网络所需要的第二数据。
本实施例中,驱动模块可以包括AI芯片的驱动程序,经过一系列的处理之后,生成能够在不同的运行模块运行的可执行数据。应能够理解,该可执行数据可以包括第一数据和第二数据。其中,该不同的运行模块包括第三方AI框架运行模块和芯片模拟器运行模块。其中,驱动程序可以将目标神经网络转化为自定义的IR(英文:intermediaterepresentations,中间表示)。驱动程序的编译模块在生成的IR上,进行各种优化,包括:张量的数据类型以及张量的大小的推断、公共子表达式消除、常量折叠、死代码移除、表达式简化等。驱动程序可以根据优化后的IR为不同的后端(运行模块,例如芯片模拟器运行模块和第三方AI框架运行模块)准备运行时需要的数据,该数据可以包括相应的硬件资源和相应的参数。例如,对于运行AI芯片的芯片模拟器的运行模块(芯片模拟器运行模块),需要为张量分配片上内存、寄存器、指令buffer、命令参数等。
在步骤S330中,根据所述第一数据来在所述第三方AI框架上运行所述目标神经网络以获得第一运算结果。
本实施例中,第三方AI框架运行模块可以接收驱动模块准备好的第一数据(例如状态、参数、指令流等),根据第一数据将目标神经网络在第三方AI框架上运行以得到网络运算结果(第一运算结果)。其中,第三方AI框架可以包括但不限于主流框架tensorflow、pytorch等。
在步骤S340中,根据所述第二数据来在所述芯片模拟器上运行所述目标神经网络以获得第二运算结果。
本实施例中,芯片模拟器运行模块可以接收驱动模块准备好的第二数据,根据第二数据将目标神经网络在芯片模拟器上运行以得到网络运算结果(第二运算结果)。其中,芯片模拟器是指在真实的AI芯片回片之前,用来代替真实的AI芯片,其功能与AI芯片是一样的,用软件建模的一个模块。芯片模拟器可以包括但不限于cmodel。
在步骤S350中,比对所述第一运算结果和所述第二运算结果,以判断所述第一运算结果与所述第二运算结果是否一致。
在步骤S360中,验证为所述AI芯片能够正确运行所述目标神经网络。
在步骤S370中,验证为所述AI芯片无法正确运行所述目标神经网络。
本实施例中,可以将目标神经网络在第三方AI框架上运行所得到的运算结果与在芯片模拟器上运行所得到的运算结果进行对比,如果两者一致,则验证为AI芯片的设计功能是正确的,AI芯片能够正确运行目标神经网络,否则,验证为AI芯片的设计功能是错误的,AI芯片无法正确运行目标神经网络。
根据本申请实施例,除了可以进行现有的神经网络的验证,还可以进行未来可能出现的神经网络的验证,因此,可以完成尽量全的神经网络验证,覆盖了更丰富的验证场景,从而可以确保AI芯片能够兼容不同大小、不同结构的各种神经网络,进而可以增强AI芯片的市场生命周期。
基于同样的发明构思,本申请还提供一种神经网络生成器。图5示出了本申请实施例提供的一种神经网络生成器的框图,如图5所示,该神经网络生成器400可以包括获取模块410和生成模块420。获取模块410用于获取目标神经网络的配置信息,其中,所述目标神经网络能够用于AI芯片的功能验证,所述配置信息包括所述AI芯片能够支持的算子层数、算子列表和算子生成权重。生成模块420与获取模块410连接,并且用于根据所述配置信息生成所述目标神经网络,其中所述目标神经网络包括所述AI芯片能够支持的算子以及用于表征各算子之间的连接关系的拓扑结构。
在一种可能的实现方式中,生成模块420被配置为:针对所述算子层数中的每一层,根据所述算子列表和所述算子生成权重来生成该层的算子;根据所述算子的类型来确定所述算子的输入张量个数以及输入张量;将所述算子的输出张量加入到所述算子对应的张量集合中,并初始化所述输出张量的选取权重。
在一种可能的实现方式中,生成模块420被配置为:根据在验证所述AI芯片是否能够正确运行所述目标神经网络时的测试场景,选择满足所述测试场景的要求的算子列表和算子生成权重;根据所选择的算子列表和算子生成权重来生成该层的算子。
在一种可能的实现方式中,生成模块420被配置为:根据所述算子的类型,确定所述算子的输入张量个数;根据所述算子对应的选取权重,从所述算子对应的张量集合中选择输入张量。
在一种可能的实现方式中,如果所述算子为卷积算子,则所述卷积算子的输入张量个数为2,所述卷积算子的输入张量值包括当前层卷积运算的输入值和当前层卷积运算的模型权重,其中,根据所述卷积算子对应的选取权重从所述卷积算子对应的张量集合中选择所述输入值,并且根据所述输入值的属性来生成与所述输入值有关的所述模型权重。
在一种可能的实现方式中,如果所述算子为卷积算子,则所述卷积算子的输入张量个数为3,所述卷积算子的输入张量值包括当前层卷积运算的输入值、当前层卷积运算的模型权重以及当前层卷积运算的偏置值,其中,根据所述卷积算子对应的选取权重从所述卷积算子对应的张量集合中选择所述输入值,并且根据所述输入值的属性来生成与所述输入值有关的所述模型权重和所述偏置值。
在一种可能的实现方式中,生成模块420被配置为:在确定所述输入张量值之后,按照预设规则来更新所述算子对应的张量集合中的各张量的选取权重。
在一种可能的实现方式中,所述预设规则包括:降低所述输入张量值在所述算子对应的张量集合中的选取权重,并且增加所述算子对应的张量集合中未被选中的张量的选取权重。
在一种可能的实现方式中,所述预设规则包括:降低所述算子对应的张量集合中的使用次数少的张量的选取权重,并且增加所述算子对应的张量集合中的使用次数多的张量的选取权重。
在一种可能的实现方式中,生成模块420被配置为:将所述输出张量的选取权重初始化为大于预设值的第一值。
在一种可能的实现方式中,生成模块420被配置为:根据所述算子的行为,按照规则从所述算子对应的张量集合中移除符合条件的张量,并将所述算子的输出张量加入到所述张量集合中的位置处,其中所述位置是从所述张量集合中移除的张量在所述张量集合中的位置。
在一种可能的实现方式中,生成模块420被配置为:针对所述算子层数中的每一层,确定所生成的该层的算子是否能够加入当前的子网;如果所述算子能够加入所述子网,则将所述算子加入所述子网,并更新所述子网的参数;如果所述算子不能加入所述子网,则创建新的子网,将所述算子加入所述新的子网,并更新所述新的子网的参数。
在一种可能的实现方式中,生成模块420被配置为:确定所述算子使用的张量所占用的片上内存是否超出最大片上内存容量;确定所述算子对应的硬件指令条数是否超出一次任务总指令条数;确定所述算子占用的各类寄存器数量是否超出硬件资源的最大限制;确定所述算子是否满足硬件计算资源的限制条件。
在一种可能的实现方式中,神经网络生成器400还可以包括初始化模块(未示出),用于根据所述配置信息来初始化所述神经网络生成器。
在一种可能的实现方式中,初始化模块被配置为:初始化所述目标神经网络的各参数;根据所述配置信息中的张量相关信息来生成包括随机数据的张量,将所述张量加入相应的张量集合中,并且初始化所述张量集合中的每个张量的选取权重,其中,所述张量相关信息包括张量的大小、张量的数据类型以及张量的内存格式。
在一种可能的实现方式中,初始化模块被配置为:将张量的大小和数据类型均相同的张量加入同一个张量集合中。
基于同样的发明构思,本申请还提供一种芯片验证系统。图6示出了本申请实施例提供的一种芯片验证系统的框图,如图6所示,该芯片验证系统500可以包括神经网络生成器400、驱动模块520、第三方AI框架运行模块530和芯片模拟器运行模块540。
神经网络生成器400用于生成所述目标神经网络。驱动模块520与神经网络生成器400连接,并且用于将所述目标神经网络转换为IR,并且根据所述IR生成第三方AI框架运行模块运行所述目标神经网络所需要的第一数据、以及芯片模拟器运行所述目标神经网络所需要的第二数据。
第三方AI框架运行模块530与驱动模块520连接,并且用于接收所述第一数据,并根据所述第一数据来在所述第三方AI框架上运行所述目标神经网络以获得第一运算结果。
芯片模拟器运行模块540与驱动模块520连接,并且用于接收所述第二数据,并根据所述第二数据来在所述芯片模拟器上运行所述目标神经网络以获得第二运算结果,其中,比对所述第一运算结果和所述第二运算结果,若所述第一运算结果与所述第二运算结果一致,则验证为所述AI芯片能够正确运行所述目标神经网络。
关于上述实施例中的装置及系统,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
可以理解,本申请提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本申请不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
在本申请各实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分,这些功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。
因此,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述提供的方法。本申请实施例还提供了一种计算机程序产品,包括用于实现上述方法的软件功能模块,当这些软件功能模块对应的计算机可读的程序指令在电子设备的处理器中运行时,执行上述的方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分(实现原理及产生的技术效果)互相参见即可。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (16)

1.一种神经网络生成方法,应用于神经网络生成器,其特征在于,包括:
获取目标神经网络的配置信息,其中,所述目标神经网络能够用于AI芯片的功能验证,所述配置信息包括所述AI芯片能够支持的算子层数、算子列表和算子生成权重;
根据所述配置信息生成所述目标神经网络,其中所述目标神经网络包括所述AI芯片能够支持的算子以及用于表征各算子之间的连接关系的拓扑结构,
其中,根据所述配置信息生成所述目标神经网络,包括:
针对所述算子层数中的每一层,
根据所述算子列表和所述算子生成权重来生成该层的算子;
根据所生成的算子的类型来确定所述算子的输入张量个数以及输入张量;
将所述算子的输出张量加入到所述算子对应的张量集合中,并初始化所述输出张量的选取权重;
其中,根据所生成的算子的类型来确定所述算子的输入张量个数以及输入张量,包括:
根据所生成的算子的类型,确定所述算子的输入张量个数;
根据所述算子对应的选取权重,从所述算子对应的张量集合中选择输入张量。
2.根据权利要求1所述的神经网络生成方法,其特征在于,在确定所述输入张量之后,还包括:
按照预设规则来更新所述算子对应的张量集合中的各张量的选取权重。
3.根据权利要求2所述的神经网络生成方法,其特征在于,所述预设规则包括:降低所述输入张量在所述算子对应的张量集合中的选取权重,并且增加所述算子对应的张量集合中未被选中的张量的选取权重。
4.根据权利要求2所述的神经网络生成方法,其特征在于,所述预设规则包括:降低所述算子对应的张量集合中的使用次数少的张量的选取权重,并且增加所述算子对应的张量集合中的使用次数多的张量的选取权重。
5.根据权利要求1所述的神经网络生成方法,其特征在于,将所述算子的输出张量加入到所述算子对应的张量集合中,包括:
根据所述算子的行为,按照规则从所述算子对应的张量集合中移除符合条件的张量,并将所述算子的输出张量加入到所述张量集合中的位置处,其中所述位置是从所述张量集合中移除的张量在所述张量集合中的位置。
6.根据权利要求1~5中任一项所述的神经网络生成方法,其特征在于,根据所述配置信息生成所述目标神经网络,包括:
针对所述算子层数中的每一层,
确定所生成的该层的算子是否能够加入当前的子网;
如果所述算子能够加入所述子网,则将所述算子加入所述子网,并更新所述子网的参数;
如果所述算子不能加入所述子网,则创建新的子网,将所述算子加入所述新的子网,并更新所述新的子网的参数。
7.根据权利要求6所述的神经网络生成方法,其特征在于,确定所生成的该层的算子是否能够加入当前的子网,包括:
确定所述算子使用的张量所占用的片上内存是否超出所述AI芯片的最大片上内存容量;
确定所述算子对应的硬件指令条数是否超出所述AI芯片的一次任务总指令条数;
确定所述算子占用的各类寄存器数量是否超出所述AI芯片的硬件资源的最大限制;
确定所述算子是否满足所述AI芯片的硬件计算资源的限制条件。
8.根据权利要求1~5中任一项所述的神经网络生成方法,其特征在于,在获取所述配置信息之后并且在生成所述目标神经网络之前,所述神经网络生成方法还包括:根据所述配置信息来初始化所述神经网络生成器。
9.根据权利要求8所述的神经网络生成方法,其特征在于,根据所述配置信息来初始化所述神经网络生成器,包括:
根据所述配置信息来初始化所述神经网络生成器的与所述配置信息相对应的参数;
根据所述配置信息中的张量相关信息来生成包括随机数据的张量,将所述张量加入相应的张量集合中,并且初始化所述张量集合中的每个张量的选取权重,
其中,所述张量相关信息包括张量的大小、张量的数据类型以及张量的内存格式。
10.根据权利要求9所述的神经网络生成方法,其特征在于,将所述张量加入相应的张量集合中,包括:
将张量的大小和数据类型均相同的张量加入同一个张量集合中。
11.一种神经网络生成器,其特征在于,包括:
获取模块,用于获取目标神经网络的配置信息,其中,所述目标神经网络能够用于AI芯片的功能验证,所述配置信息包括所述AI芯片能够支持的算子层数、算子列表和算子生成权重;
生成模块,用于根据所述配置信息生成所述目标神经网络,其中所述目标神经网络包括所述AI芯片能够支持的算子以及用于表征各算子之间的连接关系的拓扑结构,
其中,根据所述配置信息生成所述目标神经网络,包括:
针对所述算子层数中的每一层,
根据所述算子列表和所述算子生成权重来生成该层的算子;
根据所生成的算子的类型来确定所述算子的输入张量个数以及输入张量;
将所述算子的输出张量加入到所述算子对应的张量集合中,并初始化所述输出张量的选取权重,
其中,根据所生成的算子的类型来确定所述算子的输入张量个数以及输入张量,包括:
根据所生成的算子的类型,确定所述算子的输入张量个数;
根据所述算子对应的选取权重,从所述算子对应的张量集合中选择输入张量。
12.一种神经网络生成器,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1~10中任一项所述的神经网络生成方法。
13.一种芯片验证方法,其特征在于,包括:
使用根据权利要求1~10中任一项所述的神经网络生成方法来生成目标神经网络;
将所述目标神经网络转换为中间表示IR,并且根据所述IR生成第三方AI框架运行模块运行所述目标神经网络所需要的第一数据、以及芯片模拟器运行所述目标神经网络所需要的第二数据;
根据所述第一数据来在所述第三方AI框架上运行所述目标神经网络以获得第一运算结果;
根据所述第二数据来在所述芯片模拟器上运行所述目标神经网络以获得第二运算结果;
比对所述第一运算结果和所述第二运算结果,以判断所述第一运算结果与所述第二运算结果是否一致;
若所述第一运算结果与所述第二运算结果一致,则验证为所述AI芯片能够正确运行所述目标神经网络。
14.一种芯片验证系统,其特征在于,包括:
权利要求11或12所述的神经网络生成器,用于生成所述目标神经网络;
驱动模块,用于将所述目标神经网络转换为中间表示IR,并且根据所述IR生成第三方AI框架运行模块运行所述目标神经网络所需要的第一数据、以及芯片模拟器运行所述目标神经网络所需要的第二数据;
第三方AI框架运行模块,用于接收所述第一数据,并根据所述第一数据来在所述第三方AI框架上运行所述目标神经网络以获得第一运算结果;
芯片模拟器运行模块,用于接收所述第二数据,并根据所述第二数据来在所述芯片模拟器上运行所述目标神经网络以获得第二运算结果,
其中,比对所述第一运算结果和所述第二运算结果,若所述第一运算结果与所述第二运算结果一致,则验证为所述AI芯片能够正确运行所述目标神经网络。
15.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1~10中任一项所述的神经网络生成方法。
16.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求13所述的芯片验证方法。
CN202310692612.0A 2023-06-13 2023-06-13 神经网络生成方法及生成器、验证方法及系统、存储介质 Active CN116431421B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310692612.0A CN116431421B (zh) 2023-06-13 2023-06-13 神经网络生成方法及生成器、验证方法及系统、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310692612.0A CN116431421B (zh) 2023-06-13 2023-06-13 神经网络生成方法及生成器、验证方法及系统、存储介质

Publications (2)

Publication Number Publication Date
CN116431421A CN116431421A (zh) 2023-07-14
CN116431421B true CN116431421B (zh) 2023-08-29

Family

ID=87081865

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310692612.0A Active CN116431421B (zh) 2023-06-13 2023-06-13 神经网络生成方法及生成器、验证方法及系统、存储介质

Country Status (1)

Country Link
CN (1) CN116431421B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110428046A (zh) * 2019-08-28 2019-11-08 腾讯科技(深圳)有限公司 神经网络结构的获取方法及装置、存储介质
CN112200304A (zh) * 2020-09-30 2021-01-08 北京市商汤科技开发有限公司 神经网络搜索方法、装置、电子设备和存储介质
CN113287121A (zh) * 2018-10-31 2021-08-20 莫维迪厄斯有限公司 神经网络的自动生成
WO2021238006A1 (zh) * 2020-05-29 2021-12-02 上海商汤智能科技有限公司 人工智能芯片验证
CN113988272A (zh) * 2021-11-08 2022-01-28 上海商汤智能科技有限公司 一种生成神经网络的方法、装置、计算机设备和存储介质
CN114638185A (zh) * 2022-03-23 2022-06-17 山东云海国创云计算装备产业创新中心有限公司 一种芯片验证方法、装置及存储介质
CN114818600A (zh) * 2022-04-29 2022-07-29 上海阵量智能科技有限公司 一种芯片验证方法、装置、电子设备以及存储介质
CN115952758A (zh) * 2023-03-10 2023-04-11 成都登临科技有限公司 芯片验证方法、装置、电子设备及存储介质
CN116227565A (zh) * 2023-02-20 2023-06-06 南京大学 一种编译优化系统及精度可变的神经网络加速器

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113287121A (zh) * 2018-10-31 2021-08-20 莫维迪厄斯有限公司 神经网络的自动生成
CN110428046A (zh) * 2019-08-28 2019-11-08 腾讯科技(深圳)有限公司 神经网络结构的获取方法及装置、存储介质
WO2021238006A1 (zh) * 2020-05-29 2021-12-02 上海商汤智能科技有限公司 人工智能芯片验证
CN113742202A (zh) * 2020-05-29 2021-12-03 上海商汤智能科技有限公司 Ai芯片验证系统、方法、设备及存储介质
CN112200304A (zh) * 2020-09-30 2021-01-08 北京市商汤科技开发有限公司 神经网络搜索方法、装置、电子设备和存储介质
CN113988272A (zh) * 2021-11-08 2022-01-28 上海商汤智能科技有限公司 一种生成神经网络的方法、装置、计算机设备和存储介质
CN114638185A (zh) * 2022-03-23 2022-06-17 山东云海国创云计算装备产业创新中心有限公司 一种芯片验证方法、装置及存储介质
CN114818600A (zh) * 2022-04-29 2022-07-29 上海阵量智能科技有限公司 一种芯片验证方法、装置、电子设备以及存储介质
CN116227565A (zh) * 2023-02-20 2023-06-06 南京大学 一种编译优化系统及精度可变的神经网络加速器
CN115952758A (zh) * 2023-03-10 2023-04-11 成都登临科技有限公司 芯片验证方法、装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
单发多框目标检测算法的研究及芯片级验证;吴健勤;《中国优秀硕士学位论文全文数据库 信息科技辑 》(第第08期期);I135-113 *

Also Published As

Publication number Publication date
CN116431421A (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
CN110908667B (zh) 神经网络联合编译的方法、装置和电子设备
CN112232497A (zh) 一种编译ai芯片的方法、系统、设备及介质
CN112101525A (zh) 一种通过nas设计神经网络的方法、装置和系统
CN115186821A (zh) 面向芯粒的神经网络推理开销估计方法及装置、电子设备
CN116151363B (zh) 分布式强化学习系统
CN111738435A (zh) 一种基于移动设备的在线稀疏训练方法及系统
KR20200052417A (ko) 타겟 디바이스의 추론 모듈 선택 장치 및 방법
JP6325762B1 (ja) 情報処理装置、情報処理方法、および情報処理プログラム
CN113961267B (zh) 一种业务处理方法、装置及设备
CN113705813B (zh) 基于遗传算法的变异规则补充方法及装置
CN116431421B (zh) 神经网络生成方法及生成器、验证方法及系统、存储介质
CN110069284A (zh) 一种基于opu指令集的编译方法及编译器
Varshosaz et al. Modeling and verification of probabilistic actor systems using pRebeca
WO2023222047A1 (zh) 神经网络计算图的处理方法及处理单元、设备、介质
CN112990461B (zh) 构建神经网络模型的方法、装置、计算机设备和存储介质
US20230229528A1 (en) Parameter Configuration Method and Related System
CN115412401B (zh) 训练虚拟网络嵌入模型及虚拟网络嵌入的方法和装置
CN115168241B (zh) 一种基于组合功能覆盖率的测试方法和系统
CN116149855A (zh) 一种微服务架构下中性能资源成本优化方法及系统
WO2022252694A1 (zh) 神经网络优化方法及其装置
CN116048521A (zh) 一种多阵列粗粒度可重构架构的多层级并行性开发方法
CN113992520B (zh) 一种虚拟网络资源的部署方法和系统
CN112988275B (zh) 一种基于任务感知的移动边缘计算多用户计算卸载方法
CN116933841A (zh) 算子融合方法及装置、电子设备、计算机可读介质
CN114610445A (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