首页> 中国专利> 深度学习神经网络模型负载计算方法、装置、设备及介质

深度学习神经网络模型负载计算方法、装置、设备及介质

摘要

本发明实施例公开了一种深度学习神经网络模型负载计算方法、装置、设备及介质。所述方法包括:对预先构建的网络模型进行解析,将所述网络模型的计算流程分解为至少两个计算任务;对各所述计算任务进行划分,形成至少一个计算子任务;根据各所述资源分配策略分别为所述计算任务关联的全部计算子任务分配资源,得到所述计算任务在各所述资源分配策略下的分配数据集合;统计各所述计算任务在各所述资源分配策略下的分配数据集合,形成所述网络模型的负载矩阵;根据待评估芯片的性能参数集合,计算各计算子任务运行时间,确定性能矩阵。本发明实施例可以提高运行学习网络模型的芯片的性能仿真速度,从而快速找到芯片的架构设计缺陷。

著录项

  • 公开/公告号CN110515739A

    专利类型发明专利

  • 公开/公告日2019-11-29

    原文格式PDF

  • 申请/专利权人 上海燧原智能科技有限公司;

    申请/专利号CN201911008660.3

  • 发明设计人 黎兴民;

    申请日2019-10-23

  • 分类号

  • 代理机构北京品源专利代理有限公司;

  • 代理人孟金喆

  • 地址 201306 上海市浦东新区南汇新城镇环湖西二路888号C楼

  • 入库时间 2024-02-19 15:48:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-31

    授权

    授权

  • 2019-12-24

    实质审查的生效 IPC(主分类):G06F9/50 申请日:20191023

    实质审查的生效

  • 2019-11-29

    公开

    公开

说明书

技术领域

本发明实施例涉及数据处理领域,尤其涉及一种深度学习神经网络模型负载计算方法、装置、设备及介质。

背景技术

人工智能产业的高速发展对于计算机的计算能力提出了更高的要求,各大半导体厂商也在积极研发和推出旨在加速深度学习训练和推理过程的专用芯片。

芯片的研发和制造是一个较为漫长的过程,通常情况下,芯片架构设计的合理性验证以及计算性能的评估需要等到小批量生产并取得样片之后才能进行,从而会极大的增长产品研发的迭代周期,甚至无限期延后产品上市时间,这对于各半导体制造厂商来说是无法接受的。

现有的解决方案是使用专用服务器对芯片架构进行仿真,并由服务方提供一整套配套的软硬件解决方案,基于此进行芯片的性能验证,但此方案造价昂贵,且仿真服务软件运行速度较慢,通常一个简单的测试样例需要运行数小时之久;此外对于支持并行计算的加速芯片架构的验证,计算任务的切分以及对片上硬件资源的调度策略不同会导致芯片的运行负载不同,从而带来不同的性能表现,这些策略的尝试和探索有助于在芯片设计之初找到架构上的缺陷。通常可以采用的策略有成千上万个,这就对探索过程提出了迭代速度的要求,这无法借助复杂的庞大的专用性能仿真服务完成这一工作。

发明内容

本发明实施例提供了一种深度学习神经网络模型负载计算方法、装置、设备及介质,可以提高运行学习网络模型的芯片的性能仿真速度。

第一方面,本发明实施例提供了一种深度学习神经网络模型负载计算方法,包括:

对预先构建的网络模型进行解析,将所述网络模型的计算流程分解为至少两个计算任务;其中,所述至少两个计算任务存在依赖关系;

根据预先配置的至少一个资源分配策略对各所述计算任务进行划分,形成至少一个计算子任务;

根据各所述资源分配策略分别为所述计算任务关联的全部计算子任务分配资源,得到所述计算任务在各所述资源分配策略下的分配数据集合;所述资源包括计算资源和存储资源;

统计各所述计算任务在各所述资源分配策略下的分配数据集合,形成所述网络模型的负载矩阵;

根据待评估芯片的性能参数集合,以及所述负载矩阵,计算所述网络模型分解得到的各计算子任务在各所述资源分配策略下的运行时间,确定性能矩阵,以评价所述芯片运行所述网络模型的性能。

第二方面,本发明实施例提供了一种深度学习神经网络模型负载计算装置,包括:

计算任务解析模块,用于对预先构建的网络模型进行解析,将所述网络模型的计算流程分解为至少两个计算任务;其中,所述至少两个计算任务存在依赖关系;

计算任务划分模块,用于根据预先配置的至少一个资源分配策略对各所述计算任务进行划分,形成至少一个计算子任务;

资源分配模块,用于根据各所述资源分配策略分别为所述计算任务关联的全部计算子任务分配资源,得到所述计算任务在各所述资源分配策略下的分配数据集合;所述资源包括计算资源和存储资源;

负载矩阵生成模块,用于统计各所述计算任务在各所述资源分配策略下的分配数据集合,形成所述网络模型的负载矩阵;

性能矩阵计算模块,用于根据待评估芯片的性能参数集合,以及所述负载矩阵,计算所述网络模型分解得到的各计算子任务在各所述资源分配策略下的运行时间,确定性能矩阵,以评价所述芯片运行所述网络模型的性能。

第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序所述处理器执行所述程序时实现如本发明实施例中任一所述的深度学习神经网络模型负载计算方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的深度学习神经网络模型负载计算方法。

本发明实施例通过对深度学习神经网络模型进行自动解析,形成至少两个计算任务,并根据预先配置的资源分配策略,进一步对计算任务进行划分,形成计算子任务,并按照不同的资源分配策略分别为计算子任务进行资源分配,得到不同资源分配策略下的负载矩阵,并基于待评估芯片的性能参数集合,计算各计算子任务在不同资源分配策略下的运行时间,从而确定芯片运行网络模型的性能矩阵,用于评价芯片运行网络模型的性能,解决了现有技术中芯片仿真运行网络模型的经济成本高,以及效率低的问题,可以提高运行学习网络模型的芯片的性能仿真速度。

附图说明

图1是本发明实施例一中的一种深度学习神经网络模型负载计算方法的流程图;

图2是本发明实施例二中的一种深度学习神经网络模型负载计算方法的流程图;

图3是本发明实施例三中的一种深度学习神经网络模型负载计算装置的结构示意图;

图4是本发明实施例四中的一种计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一中的一种深度学习神经网络模型负载计算方法的流程图,本实施例可适用于对芯片运行网络模型的过程进行仿真的情况,该方法可以由本发明实施例提供的深度学习神经网络模型负载计算装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备中,例如,终端设备或服务器等。如图1所示,本实施例的方法具体包括:

S110,对预先构建的网络模型进行解析,将所述网络模型的计算流程分解为至少两个计算任务;其中,所述至少两个计算任务存在依赖关系。

网络模型可以是指深度学习神经网络模型(Deep Learning Neural Networks)。

网络模型的计算流程用于表示网络模型在运行时需要执行的多个连续的计算步骤。其中,计算流程可以转换为多个连续的计算步骤。

计算任务用于表示某个或某几个计算步骤。每个计算任务均不相同。

两个计算任务之间存在依赖关系,表明一个计算任务的计算结果(或输出)可以作为另外一个计算任务的输入。将多个存在依赖关系的计算任务按照次序组合起来,即为网络模型的计算流程,也就是说,网络模型的计算流程为计算任务序列,计算任务序列中计算任务的排列顺序为计算任务的执行顺序。

实际上,神经网络模型包括有多层数据操作,每一层执行不同的数据处理操作。示例性的,数据处理操作可以包括填充(Padding)、变形(Reshape)、卷积(Convolution)和池化(Pooling)等。

网络模型可以通过预先定义的编程接口进行构建。用户可以通过预先定义的编程接口输入网络模型关联的数据,以建立神经网络模型。示例性的,建立的网络模型为,其中,表示神经网络的某一层。

可以理解的是,用户将网络模型传输到编程接口,可以通过编程接口获取网络模型的结构,也即确定网络模型中的每一层的结构均确定,而且在后续处理中固定不变。实际上,网络模型的计算流程包括各层所做的数据处理过程,从而可以将每一层所做的数据处理过程作为网络模型的计算任务。如前例,相应的,对应S层网络模型结构可以得到S项连续的计算任务序列,其中,从中,计算任务的输入为;方框代表计算任务之间存在依赖关系,即前一项计算任务的输出作为后一项计算任务的输入,S项计算任务顺序执行,以保证计算结果的正确性。

实际上,计算任务是从网络模型的运行时序的角度进行划分,也即计算任务是从时间上对网络模型的计算流程进行划分。

S120,根据预先配置的至少一个资源分配策略对各所述计算任务进行划分,形成至少一个计算子任务。

通常资源分配策略用于分配执行计算任务需要的资源,资源分配策略可以是指资源分配的方式,其中,资源具体可以包括计算资源和存储资源。计算资源用于执行计算任务。存储资源用于存储执行计算任务关联的数据。计算子任务用于组成计算任务,是计算任务中的部分计算。

实际上,计算任务还可以继续划分,例如细分为多个计算子任务。每个计算子任务均不相同,且相互独立,同时全部计算子任务形成完整的计算任务。其中,划分方式可以是,将计算任务的计算量,均等划分为n个计算子任务,其中,n大于等于1,具体可以根据需要进行设定,对此,本发明实施例不做具体限制。示例性的,计算任务为对10个特征图进行卷积计算,可以将计算任务划分为10个计算子任务,每个计算子任务均为对1个特征图进行卷积计算;或者还可以将计算任务划分为5个计算子任务,每个计算子任务为对2个特征图进行卷积计算,其中,每个计算子任务进行卷积计算的特征图互不相同。

如前例,计算任务为,计算任务与计算子任务的关系为:,其中,为计算子任务,每个计算子任务具有相同的下标step代表,各计算子任务共同隶属于计算任务,上标不同代表从计算任务中拆分出来的Q项,花括弧代表各计算子任务之间没有依赖关系,是并行存在的。

可以根据资源分配策略确定对各计算任务的划分方式,也即根据资源分配策略确定对每个计算任务可以被划分成计算子任务的数量,即确定n的数量。

具体的,可以将计算资源中的计算单元作为计算子任务划分的依据。具体的,计算资源包括多个计算单元,将计算单元的数量作为n,也即将计算任务划分为n个计算子任务,从而,一个计算单元执行一个计算子任务。

此外,还可以根据存储资源的空间大小作为计算子任务划分的依据;或者可以根据计算资源和存储资源,综合确定计算子任务的划分方式。具体可以根据需要进行设定,对此,本发明实施例不作具体限制。

综上,计算子任务实际是,在同一时间,将计算任务划分为并行执行的单元任务。也即计算子任务是从空间上对计算任务进行划分。在计算任务的执行时间中,并行执行计算任务划分的多个计算子任务。

S130,根据各所述资源分配策略分别为所述计算任务关联的全部计算子任务分配资源,得到所述计算任务在各所述资源分配策略下的分配数据集合;所述资源包括计算资源和存储资源。

分配数据集合用于描述计算任务划分的各计算子任务的资源分配情况,分配数据集合记录有计算任务划分的各计算子任务与资源的映射关系。

为计算子任务分配资源,实际是为计算子任务分配计算资源和存储资源,也即为计算子任务分配处理器和存储空间。

一般来说,不同资源分配策略的资源分配的方式不同,实际是将计算资源和/或存储资源数值化,并按照不同的数量分配给计算子任务。

具体的,可以将计算资源均等划分为N个计算单元,也即计算资源集合为为一个计算单元。需要说明的是,计算资源通常是指芯片上的处理器,一个计算单元为整数个处理器,其中,一个计算单元可以包括一个处理器,一个计算单元可以包括两个处理器,甚至更多,对此,本发明实施例不作具体限制。获取待检测的芯片,确定处理器的个数,作为计算单元的最大数量。也就是说,计算单元的数量N为整数,且N小于等于待检测的芯片的处理器的个数。

同时将存储资源均匀地划分为M等份,得到存储资源集合为为一个存储单元。存储资源为芯片上用于运行网络模型分配的存储空间,可以将存储空间进行均等划分。需要注意的是,每个存储单元对应的存储空间的大小至少足够存储有执行计算子任务的过程中关联的全部数据。

实际上,一个资源分配策略指定一个计算子任务可以分配得到计算单元的数量,以及存储单元的数量。需要说明的是,每个资源分配策略应当满足限制条件,即保证计算任务划分得到的全部计算子任务恰好分完所有的计算资源C和存储资源D,不能多分,不能少分,且相互之间不能有重叠。

在一个资源分配策略下,计算任务划分得到的每个计算子任务均分配到至少一个计算单元和至少一个存储单元。相应的,在不同资源分配策略下,每个计算子任务分配到不同数目的计算单元,和不同数目的存储单元。将每个资源分配策略下的各计算子任务、各计算子任务分配到的计算单元的数目和各计算子任务分配到的存储单元的数目,作为一个序列,由此,统计不同资源分配策略的数据,可以得到一个集合,该集合实际是计算任务在各资源分配策略下的分配数据集合。

S140,统计各所述计算任务在各所述资源分配策略下的分配数据集合,形成所述网络模型的负载矩阵。

负载矩阵用于描述网络模型在不同资源分配策略下的资源分配情况。负载矩阵记录有网络模型在运行过程中每个计算阶段与资源分配的映射关系。

按照前述方法,得到每个计算任务分别在各资源分配策略下的分配数据集合,形成网络模型的负载矩阵。

S150,根据待评估芯片的性能参数集合,以及所述负载矩阵,计算所述网络模型分解得到的各计算子任务在各所述资源分配策略下的运行时间,确定性能矩阵,以评价所述芯片运行所述网络模型的性能。

性能参数集合用于描述待评估芯片的性能。性能参数集合记录有芯片的性能参数,示例性的,性能参数集合为性能字典(PD)。运行时间用于描述执行计算子任务的耗费的时长。性能矩阵用于评价待评估芯片的运行性能。根据芯片的性能参数,以及每个计算子任务在不同资源分配策略下分配的计算单元和存储单元,计算每个计算子任务的运行时间,形成与负载矩阵对应的性能矩阵。由此,可以确定网络模型分解得到的各计算子任务在不同资源分配策略下的运行时间,也即确定网络模型在不同资源分配策略下的运行时间,从而确定芯片运行网络模型的性能。可以理解的是,网络模型的运行时间越短,芯片运行网络模型的性能越高。

可选的,所述根据待评估芯片的性能参数集合,以及所述负载矩阵,计算所述网络模型分解得到的各计算子任务在各所述资源分配策略下的运行时间,确定性能矩阵,包括:根据待评估芯片的性能参数集合,计算所述负载矩阵中各计算子任务在各所述资源分配策略下的输入数据搬运时间、输入数据的处理消耗时间和结果数据搬运时间;将所述计算子任务在所述资源分配策略下的输入数据搬运时间、输入数据的处理消耗时间和结果数据搬运时间的总和作为所述计算子任务在所述资源分配策略下的运行时间;根据各所述计算子任务在各所述资源分配策略下的运行时间,形成所述网络模型的性能矩阵。

通常一个计算子任务执行完成需要经历从存储空间中读取输入数据,对输入数据进行数据处理,以及将数据处理得到的结果数据写入存储空间中的三个过程。从而相应的,一个计算子任务的运行时间包括输入数据搬运时间、输入数据的处理消耗时间和结果数据搬运时间。

其中,输入数据搬运时间用于描述计算子任务获取输入数据的时长,可以是指将输入数据从分配的存储资源搬运到分配的计算资源中的时长。具体可以基于如下公式计算输入数据搬运时间:

其中,是计算子任务的输入数据的大小,以字节Byte作为统计单位,input bandwidth是从存储资源搬运到计算资源时的数据传输带宽,以Byte/s作为单位,可以从性能参数集合中获得。

输入数据的处理消耗时间用于描述计算子任务对输入数据进行处理对应消耗的时长,可以是指计算资源处理输入数据的时长。具体可以基于如下公式计算输入数据的处理消耗时间:

其中,cost of data processing per byte是指处理每字节数据所消耗的时间。处理每字节数据所消耗的时间可以通过计算任务的特性确定,也可以从性能参数集合中获得。

结果数据搬运时间用于描述计算子任务输出结果数据的时长,可以是指将结果数据从分配的计算资源搬运到分配的存储资源中的时长。具体可以基于如下公式计算结果数据搬运时间:

其中,是计算子任务得到的结果数据的大小,以字节Byte作为统计单位,output bandwidth是从计算资源搬运计算结果数据到存储资源数据传输带宽,以Byte/s作为单位,可以从性能参数集合中获得。

将计算子任务的输入数据搬运时间、输入数据的处理消耗时间和结果数据搬运时间的总和作为计算子任务在资源分配策略下的运行时间。

统计不同计算子任务在不同资源分配策略下的运行时间,将运行时间最长的计算子任务的运行时间作为计算任务的运行时间。可以理解的是,计算任务分解得到的各计算子任务是并行执行的,从而,计算任务的运行时间等于计算子任务中运行时间最长的时长。基于如下公式确定计算任务的运行时间:

其中,为第step步的计算任务的运行时间。

通过计算各计算子任务在各所述资源分配策略下的输入数据搬运时间、输入数据的处理消耗时间和结果数据搬运时间,确定各计算子任务在各所述资源分配策略下的运行时间,准确确定各计算子任务的运行时间,从而,准确统计出整个网络模型运行耗费的时间。

本发明实施例通过对深度学习神经网络模型进行自动解析,形成至少两个计算任务,并根据预先配置的资源分配策略,进一步对计算任务进行划分,形成计算子任务,并按照不同的资源分配策略分别为计算子任务进行资源分配,得到不同资源分配策略下的负载矩阵,并基于待评估芯片的性能参数集合,计算各计算子任务在不同资源分配策略下的运行时间,从而确定芯片运行网络模型的性能矩阵,用于评价芯片运行网络模型的性能,解决了现有技术中芯片仿真运行网络模型的经济成本高,以及效率低的问题,可以提高运行学习网络模型的芯片的性能仿真速度。

实施例二

图2为本发明实施例二中的一种深度学习神经网络模型负载计算方法的流程图,本实施例以上述实施例为基础进行具体化,将对预先构建的网络模型进行解析,将所述网络模型的计算流程分解为至少两个计算任务,具体化为:对所述网络模型进行解析,确定所述网络模型的层次结构,所述网络模型的层次结构包括至少两层;将所述层关联的数据处理操作作为一个计算任务,形成至少两个计算任务。

具体的,本实施例的方法具体包括:

S210,对预先构建的网络模型进行解析,确定所述网络模型的层次结构,所述网络模型的层次结构包括至少两层。

实际上,网络模型为具备层次结构的网络模型,例如,神经网络模型。层次结构可以是指,每层之间存在依赖关系,每层包括多个层单元(如神经元)执行一个数据处理操作。网络模型的层次结构包括至少两层,也即网络模型的计算流程至少可以分解为两个计算任务。

本实施例中的网络模型、计算任务、依赖关系、资源分配策略、计算子任务、分配数据集合、性能参数集合和性能矩阵均可以参考前述实施例的描述。

S220,将所述层关联的数据处理操作作为一个计算任务,形成至少两个计算任务;其中,所述至少两个计算任务存在依赖关系。

可以将层次结构中的层作为节点,网络模型可以是由多个节点形成的网络结构。层关联的数据处理操作作为一个计算任务,即为一个节点执行的数据处理操作作为一个计算任务,一个节点进行数据处理得到的结果传输到下一个节点作为输入,以使下一个节点继续进行数据处理操作。相应的,一个计算任务的计算结果作为下一个计算任务的输入数据。由此,网络模型的计算流程映射为存在依赖关系的多个计算任务。

S230,根据预先配置的至少一个资源分配策略对各所述计算任务进行划分,形成至少一个计算子任务。

可选的,所述根据预先配置的至少一个资源分配策略对各所述计算任务进行划分,形成至少一个计算子任务,包括:根据预先配置的至少一个资源分配策略,确定计算资源的分配数量;按照所述分配数量对各所述计算任务进行划分,形成至少一个计算子任务;其中,每个所述计算任务划分得到的计算子任务的数量小于等于所述分配数量。

具体的,计算资源的分配数量可以是指芯片可以调用的计算资源的数目。通常计算资源的分配数量越多,计算子任务划分的数量越多。分配数量用于确定计算子任务的划分方法。计算资源可以按照分配数量均等划分为多个计算单元,计算单元的数量与分配数量相同,从而分配数量等于各资源分配策略中待分配的计算单元的数量,同样等于各资源分配策略中已分配的计算单元的数量的最大值。可以理解的是,计算资源的分配数据量可以描述芯片的运行性能,从而,分配数量可以从芯片的性能参数集合中获取。

每个计算子任务至少需要一个计算单元执行相应的数据处理。因此,计算任务最多可以划分为分配数量个计算子任务。通常一个计算子任务由一个计算单元执行。分配数量可以大于计算子任务的数量,此时,存在至少一个计算单元空闲,不会执行计算子任务。

通过资源分配策略确定分配数量,并根据分配数量确定计算子任务的数量,实现划分的计算子任务可以适配计算资源,保证计算子任务的正确执行,从而,保证网络模型的正确仿真运行。

可选的,在根据预先配置的至少一个资源分配策略对各所述计算任务进行划分,形成至少一个计算子任务之前,还包括:接收至少一张资源配置表,并解析,得到各所述资源配置表对应的计算资源与存储资源的组合关系;将一张资源配置表对应的计算资源与存储资源的组合关系,作为一种资源分配策略。

其中,资源配置表用于确定计算资源与存储资源的分配方式。资源配置表中记录有计算资源与存储资源的组合关系,其中,组合关系用于确定分配给每个计算子任务的计算资源和存储资源,以及用于描述分别与同一个计算子任务存在映射关系的计算单元和存储单元之间的关系。

实际上,资源配置表中是为每一个计算子任务配置计算资源和存储资源,分配给同一个计算子任务的计算资源和存储资源存在组合关系。

示例性的,资源配置表如下所示:

相应的,计算任务的Q项计算子任务在计算资源和存储资源上的一种资源分配策略为:

其中,

资源配置表可以是测试人员输入的,用于指定待测试的资源分配策略。对接收到的用户输入的资源配置表进行解析,得到资源分配策略。

对所有的分配策略(即各项计算子任务的过程)进行穷举,假设可以得到K种分配方法;由此可以获得一个描述在整个网络模型的第step步时的芯片负载情况的负载矩阵

通过接收资源配置表并解析,确定对各计算子任务的资源分配情况,实现灵活分配资源,增加芯片的负载情况,增加芯片的测试范围,从而提高芯片的性能测试的准确性。

可选的,各所述资源配置表中包括的计算资源的分配数量均等于所述芯片性能参数集合中处理器的数量。其中,计算资源的分配数量为处理器的数量,即计算资源中包括计算单元的数量为处理器的数量。通过将计算资源的分配数量均等于芯片中处理器的数量,可以适配芯片的处理器情况,分配计算资源,提高资源分配的合理性,从而提高芯片的性能测试的准确性。

可选的,所述根据各所述资源分配策略分别为所述计算任务关联的全部计算子任务分配资源,得到所述计算任务在各所述资源分配策略下的分配数据集合,包括:从各所述资源配置表中目标资源配置表起遍历各所述资源配置表,直至全部资源配置表遍历完成;在所述资源配置表的遍历过程中,从所述计算任务的各所述计算子任务中的目标计算子任务起遍历各所述计算子任务,针对遍历到的当前计算子任务,从所述资源配置表对应的组合关系中选择目标计算资源,并获取对应的目标存储资源,建立所述当前计算子任务、目标计算资源以及至少一个目标存储资源的对应关系,直至全部计算子任务遍历完成;其中,所述计算任务的各所述计算子任务对应的计算资源不同,所述计算任务的各所述计算子任务对应的存储资源不同;根据各所述计算子任务对应的计算资源以及对应的存储资源,生成所述计算任务在所述资源配置表下的分配数据集合;在全部资源配置表遍历完成之后,在全部资源配置表遍历完成之后,获取所述计算任务在各所述资源配置表下的分配数据集合。

具体的,目标资源配置表是全部资源配置表中的一个资源配置表,示例性的,目标资源配置表是随机选择的任意一个资源配置表,或者是对全部资源配置表进行编号,按照编号顺序选择资源配置表,例如,选择编号为1的资源配置表。

分配数据用于描述计算任务分解得到的各计算子任务在不同资源配置表下的资源分配情况,即用于确定各计算子任务在不同资源配置表下对应的计算资源和存储资源。

从各资源配置表中遍历资源配置表,用于获取各资源配置表的资源分配情况。

在遍历到当前资源配置表时,选择一个计算资源与存储资源的组合关系,即确定目标计算资源和匹配的存储资源。将目标计算资源和匹配的存储资源分配给任意一个计算子任务。其中,目标计算资源包括至少一个计算单元,存储资源包括至少一个存储单元。遍历当前计算任务的全部计算子任务,并建立每个计算子任务分别与计算资源和存储资源的对应关系,由此,实现为当前计算任务分解得到的每个计算子任务分配计算资源和存储资源,减少遗漏情况。

重复上述步骤,直至全部资源配置表均遍历完成。由此,可以得到各计算子任务的分配数据,从而形成计算任务在不同资源配置表下的分配数据集合,以确定各计算子任务在不同资源配置表下的资源分配情况。

示例性的,第step步的计算任务在一个资源配置表下的分配数据集合如下所示:

通过遍历资源配置表,并在遍历到当前资源配置表时,分别建立计算任务得到的全部计算子任务分别与当前资源配置表配置的计算资源和存储资源的对应关系,实现基于当前资源配置表对计算子任务进行资源分配,保证各计算子任务可以分配到计算资源和存储资源,实现灵活分配资源,以及提高资源分配的精准性,从而提高芯片的性能测试的准确性。

S240,根据各所述资源分配策略分别为所述计算任务关联的全部计算子任务分配资源,得到所述计算任务在各所述资源分配策略下的分配数据集合;所述资源包括计算资源和存储资源。

S250,统计各所述计算任务在各所述资源分配策略下的分配数据集合,形成所述网络模型的负载矩阵。

如前例,统计第step步的计算任务在K个资源配置表下的分配数据集合,得到负载矩阵如下所示:

S260,根据待评估芯片的性能参数集合,以及所述负载矩阵,计算所述网络模型分解得到的各计算子任务在各所述资源分配策略下的运行时间,确定性能矩阵,以评价所述芯片运行所述网络模型的性能。

示例性的,性能参数集合为PD。

基于如下公式,计算第step步计算任务在第k个资源配置表下的分配数据集合的运行时间

进而,基于如下公式计算性能矩阵

其中,每一行元素

具有相同step项,即代表从整个网络模型的计算流程中分解得到出来的第step(0,1,…,S-1)项计算任务,分别在K种不同的资源分配策略上运行时长。

每一列元素代表整个神经网络计算任务在第k个资源分配策略下逐项计算任务的运行时间,每个计算任务之间存在依赖关系,对此列求和即可得到在第k个分配策略下的网络模型的整体运行时间。

可选的,所述根据待评估芯片的性能参数集合,以及所述负载矩阵,计算所述网络模型分解得到的各计算子任务在各所述资源分配策略下的运行时间,确定性能矩阵,包括:根据待评估芯片的性能参数集合,计算所述负载矩阵中各计算子任务的输入数据搬运时间、输入数据的处理消耗时间和结果数据搬运时间;将所述计算子任务的输入数据搬运时间、输入数据的处理消耗时间和结果数据搬运时间的总和作为所述计算子任务在资源分配策略下的运行时间;根据各所述计算子任务在各所述资源分配策略下的运行时间,形成所述网络模型的性能矩阵。

本发明实施例通过对网络模型进行网络结构解析,确定层次结构中包括的层,并将每个层关联的数据处理操作分别作为计算任务,形成至少两个计算任务,实现自动将网络模型的计算流程分解为计算任务,不需要依靠特定的硬件设备支撑网络模型的仿真,降低网络模型仿真运行的成本,同时通过对网络结构进行分界得到计算任务,可以提高网络模型的计算流程的分解的准确率。

实施例三

图3为本发明实施例三中的一种深度学习神经网络模型负载计算装置的示意图。实施例四是实现本发明上述实施例提供的深度学习神经网络模型负载计算方法的相应装置,该装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备等。

相应的,本实施例的装置可以包括:

计算任务解析模块310,用于对预先构建的网络模型进行解析,将所述网络模型的计算流程分解为至少两个计算任务;其中,所述至少两个计算任务存在依赖关系;

计算任务划分模块320,用于根据预先配置的至少一个资源分配策略对各所述计算任务进行划分,形成至少一个计算子任务;

资源分配模块330,用于根据各所述资源分配策略分别为所述计算任务关联的全部计算子任务分配资源,得到所述计算任务在各所述资源分配策略下的分配数据集合;所述资源包括计算资源和存储资源;

负载矩阵生成模块340,用于统计各所述计算任务在各所述资源分配策略下的分配数据集合,形成所述网络模型的负载矩阵;

性能矩阵计算模块350,用于根据待评估芯片的性能参数集合,以及所述负载矩阵,计算所述网络模型分解得到的各计算子任务在各所述资源分配策略下的运行时间,确定性能矩阵,以评价所述芯片运行所述网络模型的性能。

本发明实施例通过对深度学习神经网络模型进行自动解析,形成至少两个计算任务,并根据预先配置的资源分配策略,进一步对计算任务进行划分,形成计算子任务,并按照不同的资源分配策略分别为计算子任务进行资源分配,得到不同资源分配策略下的负载矩阵,并基于待评估芯片的性能参数集合,计算各计算子任务在不同资源分配策略下的运行时间,从而确定芯片运行网络模型的性能矩阵,用于评价芯片运行网络模型的性能,解决了现有技术中芯片仿真运行网络模型的经济成本高,以及效率低的问题,可以提高运行学习网络模型的芯片的性能仿真速度。

进一步的,所述计算任务解析模块310,包括:网络模型层次结构解析单元,用于对所述网络模型进行解析,确定所述网络模型的层次结构,所述网络模型的层次结构包括至少两层;将所述层关联的数据处理操作作为一个计算任务,形成至少两个计算任务。

进一步的,所述计算任务划分模块320,包括:资源分配策略划分单元,用于根据预先配置的至少一个资源分配策略,确定计算资源的分配数量;按照所述分配数量对各所述计算任务进行划分,形成至少一个计算子任务;其中,每个所述计算任务划分得到的计算子任务的数量小于等于所述分配数量。

进一步的,所述深度学习神经网络模型负载计算装置,还包括:资源配置表接收模块,用于在根据预先配置的至少一个资源分配策略对各所述计算任务进行划分,形成至少一个计算子任务之前, 接收至少一张资源配置表,并解析,得到各所述资源配置表对应的计算资源与存储资源的组合关系;将一张资源配置表对应的计算资源与存储资源的组合关系,作为一种资源分配策略。

进一步的,所述资源分配模块330,包括:资源配置表遍历解析单元,用于从各所述资源配置表中目标资源配置表起遍历各所述资源配置表,直至全部资源配置表遍历完成;在所述资源配置表的遍历过程中,从所述计算任务的各所述计算子任务中的目标计算子任务起遍历各所述计算子任务,针对遍历到的当前计算子任务,从所述资源配置表对应的组合关系中选择目标计算资源,并获取对应的目标存储资源,建立所述当前计算子任务、目标计算资源以及至少一个目标存储资源的对应关系,直至全部计算子任务遍历完成;其中,所述计算任务的各所述计算子任务对应的计算资源不同,所述计算任务的各所述计算子任务对应的存储资源不同;根据各所述计算子任务对应的计算资源以及对应的存储资源,生成所述计算任务在所述资源配置表下的分配数据集合;在全部资源配置表遍历完成之后,获取所述计算任务在各所述资源配置表下的分配数据集合。

进一步的,所述性能矩阵计算模块350,包括:运行时间计算单元,用于根据待评估芯片的性能参数集合,计算所述负载矩阵中各计算子任务在各所述资源分配策略下的输入数据搬运时间、输入数据的处理消耗时间和结果数据搬运时间;将所述计算子任务在所述资源分配策略下的输入数据搬运时间、输入数据的处理消耗时间和结果数据搬运时间的总和作为所述计算子任务在所述资源分配策略下的运行时间;根据各所述计算子任务在各所述资源分配策略下的运行时间,形成所述网络模型的性能矩阵。

进一步的,各所述资源配置表中包括的计算资源的分配数量均等于所述芯片性能参数集合中处理器的数量。

上述深度学习神经网络模型负载计算装置可执行本发明实施例所提供的深度学习神经网络模型负载计算方法,具备执行的深度学习神经网络模型负载计算方法相应的功能模块和有益效果。

实施例四

图4为本发明实施例四中的一种计算机设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图4显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。计算机设备12可以是挂接在总线上的设备。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture ,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。

计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM),数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local AreaNetwork,LAN),广域网(Wide Area Network,WAN)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图4中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、(Redundant Arrays of Inexpensive Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明任意实施例所提供的一种深度学习神经网络模型负载计算方法。

实施例五

本发明实施例五提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的深度学习神经网络模型负载计算方法:也即,该程序被处理器执行时实现:对预先构建的网络模型进行解析,将所述网络模型的计算流程分解为至少两个计算任务;其中,所述至少两个计算任务存在依赖关系;根据预先配置的至少一个资源分配策略对各所述计算任务进行划分,形成至少一个计算子任务;根据各所述资源分配策略分别为所述计算任务关联的全部计算子任务分配资源,得到所述计算任务在各所述资源分配策略下的分配数据集合;所述资源包括计算资源和存储资源;统计各所述计算任务在各所述资源分配策略下的分配数据集合,形成所述网络模型的负载矩阵;根据待评估芯片的性能参数集合,以及所述负载矩阵,计算所述网络模型分解得到的各计算子任务在各所述资源分配策略下的运行时间,确定性能矩阵,以评价所述芯片运行所述网络模型的性能。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、RAM、只读存储器(Read OnlyMemory ,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、无线电频率(Radio Frequency,RF)等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括LAN或WAN——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号