当前位置: 首页 > 专利查询>辉达公司专利>正文

使用神经网络选择计算内核变量制造技术

技术编号:28980753 阅读:26 留言:0更新日期:2021-06-23 09:28
公开了使用神经网络选择计算内核变量。优化内核选择以执行计算的设备、系统和技术。在至少一个实施例中,训练并利用神经网络来生成内核列表,以便可以识别(例如,最佳的)内核。神经网络接收输入矩阵的特性,并确定可能内核的列表的相关性得分。基于按相关性得分排序的内核列表,从列表中选择一内核,并将其用于执行计算并提供结果。

【技术实现步骤摘要】
使用神经网络选择计算内核变量
本申请总体上涉及选择最佳内核来对一组或更多组数学输入(诸如一个或更多个矩阵)执行计算。对于给定的计算,可以采用多种方法来执行该运算。通常,方法的性能可能取决于影响方法运行时间的多种因素。因此,针对给定的一组约束选择内核会极大地影响请求运算的应用程序的性能。
技术介绍
当对矩阵或一组矩阵执行计算时,许多因素会影响完成计算所花费的时间。因为可能存在多个内核来执行运算,所以通常很难评估要使用哪个内核来执行运算。通过选择效率低下的内核来执行计算,性能可能会低于最佳性能。因此,选择最佳内核对于使计算性能最大化很重要。但是,选择内核的时间和资源成本必须最小化,以防止选择过程占用比使用可能次佳的内核所节省的时间更多的时间。附图说明图1示出了可以在其中实现本文描述的实施例的示例环境;图2示出了根据本文描述的实施例的示例数据流;图3示出了其中可以实现本文描述的实施例的示例环境;图4示出了一个或更多个实施例的流程图;图5示出了一个或更多个实施例的流程图;图6示出了根据至少一个实施例的用于训练可以利用的图像合成网络的系统;图7示出了根据至少一个实施例的可以利用的统计模型的各层;图8示出了根据至少一个实施例的推理和/或训练逻辑;图9示出了根据至少一个实施例的推理和/或训练逻辑。具体实施方式当请求矩阵计算时,应用程序可能不了解可用于执行计算的各种内核。如本文所使用的,“内核”是指对输入数据执行数学计算的任何低级例程。对于给定的运算,可能存在多个内核来执行该运算,并且可以编写每个内核以优化某些输入数据的性能。例如,应用程序可需要通用矩阵乘法(GeMM),而无需对运算的执行方式感兴趣。相反,该应用程序只对尽快执行运算感兴趣。由于许多运算可能具有可用于执行该运算的多个内核,因此选择最佳内核(选择最佳内核所需的时间量最少)可以极大地减少所请求的计算的运行时间。因为许多内核的性能可能受各种因素影响,所以可以将深度神经网络训练为基于输入因子对一组内核进行排名(rank)。输入因子可以包括输入矩阵和/或正在执行内核的硬件的特性(characteristics)。然后,DNN可以基于是用于该计算的最佳内核的可能性来提供被排名的内核列表,并且可以使用基于经排名的列表选择的内核之一来执行该计算。然而,尽管DNN可以改善选择最佳内核来执行运算所花费的时间,但仍需要对DNN进行大量训练才能准确预测内核的相关性。因为训练是一个时间和资源密集的过程,所以提供给DNN的训练数据应限于对DNN训练最重要的那些训练集。因此,训练DNN会提出与选择正确的训练数据来生成相关的其自己的问题。因为输入可以是任何大小(不超过硬件的上限),所以概括有意义的训练集会带来一个难题。因此,准确地预测最佳内核同时仍然有效地进行选择的DNN具有很高的优势。此外,必须选择输入到DNN的训练,以便有效地完成训练,同时在运算时仍保持DNN的准确预测。因此,除了输入数据的初始训练集之外,由DNN做出的预测可以用于识别在预测计算内核方面特别困难的一个或更多个输入集。然后可以使用符合那些故障区域的生成的训练数据对DNN进行进一步的训练。图1是其中可以实现本文描述的实施例的示例环境的图示。该环境包括内核选择系统100、神经网络训练系统120、客户端应用程序130和应用程序编程接口(API)140。应用程序130可以利用API经由网络(例如因特网、局域网(LAN)和/或其他网络)与内核选择系统100进行通信。API140允许应用程序130与内核选择系统100进行通信,而无需应用程序130具有内核选择系统100如何操作的知识。因此,应用程序130可以提交对计算的请求以及一个或更多个参数(例如用于内核的输入数据),并作为响应接收结果。数据库102包括多个内核,这些内核可用于执行应用程序130经由API140请求的一个或更多个运算。每个内核可与特定计算相关联,并可与提供的输入数据一起使用以产生结果。例如,数据库105中存储的内核可以与通用矩阵乘法(GeMM)计算相关联。然后,可以由诸如内核处理器104之类的执行组件来利用GeMM内核,该执行组件可以利用GeMM内核来执行计算。在一些实施例中,数据库102可以包括用于给定计算的多个内核。例如,数据库102可以包括用于执行GeMM计算的内核K1…Kn,每个内核使用用于产生相同结果的不同方法。内核处理器104是执行内核以为给定的一组输入计算计算结果的组件。在一些实施例中,内核处理器104可以是与正在执行内核选择引擎100相同的处理器。在一些实施例中,内核处理器104和正在执行内核选择引擎100的处理器两者都可以是单独的处理器和/或被合并到同一系统中的处理器。例如,内核处理器104可以是在与正在执行内核选择引擎100的一个或更多个单独的处理器相同的系统上运行的图形处理单元(GPU)。候选内核生成器106确定可以由内核处理器104利用以确定结果计算的一个或更多个候选内核。候选内核生成器106识别数据库102中可用于执行在请求中已经接收到的运算的内核以及输入数据的特性。例如,可以将一个或更多个内核限制为可以用作计算结果的输入的矩阵的大小,和/或一个或更多个内核可以是特定于特定计算的。因此,候选内核生成器106可以确定数据库102中存储的内核列表,该内核列表可以用于向应用程序130提供结果。过滤器108从候选内核列表中删除在给定系统的特定限制下不实际和/或不可能执行的任何内核。例如,过滤器108可以识别内核处理器104的硬件约束,并确定对于给定的内核,内核处理器104不具有(或不太可能具有)用于利用该内核处理给定输入的资源。因此,过滤器108可以从候选内核列表中删除该内核,使得神经网络不会将该内核作为潜在的最佳内核进行处理。一旦确定了候选内核列表,就向神经网络110提供该列表以及输入数据。训练神经网络以基于候选内核列表确定每个内核的相关性得分,该相关性得分可预测给定内核将如何对输入数据执行计算。如本文进一步描述的,可以由训练系统120来训练神经网络。排序器(sorter)112基于神经网络的输出,按相关性对候选内核进行排序(sort)。例如,对于具有相关性得分的给定的内核列表,排序器112可以对该列表进行排序,使得列表中的第一内核是用于对输入数据执行计算的最相关的内核。然后选择引擎114从经排序的列表中选择内核,例如具有最高相关性得分的内核。然后将所选择的内核提供给内核处理器104,其可以使用所选择的内核和输入数据来执行计算。然后可以经由API140将内核处理器104的结果提供给应用程序130。参照图2,提供了流程图,该流程图示出了将输入数据处理为经排名的(ranked)内核列表以执行计算。该应用程序首先将输入数据提供给API202。该输入数据可以包括矩阵、矩阵大小和/或描述要执行的输入矩阵或计算的其他输入。在一些实施例中,已经执行了计算。因此,可以维持会话高速缓存204,该会话高速缓本文档来自技高网...

【技术保护点】
1.一种处理器,包括:/n一个或更多个算术逻辑单元(ALU),配置为通过以下步骤执行矩阵计算:/n接收对所述矩阵计算的请求,所述请求包括至少一个矩阵和要执行的所述矩阵计算;/n向神经网络提供所述至少一个矩阵和所述矩阵计算的特性;/n使用所述神经网络生成经排名的内核列表,所述排名基于使用所述神经网络确定的所述经排名的列表中的每个内核的相关性得分;/n从所述经排名的内核列表中选择第一内核;/n使用所述至少一个矩阵和所述第一内核生成所述矩阵计算的结果;以及/n提供所述结果。/n

【技术特征摘要】
20191220 US 16/723,6081.一种处理器,包括:
一个或更多个算术逻辑单元(ALU),配置为通过以下步骤执行矩阵计算:
接收对所述矩阵计算的请求,所述请求包括至少一个矩阵和要执行的所述矩阵计算;
向神经网络提供所述至少一个矩阵和所述矩阵计算的特性;
使用所述神经网络生成经排名的内核列表,所述排名基于使用所述神经网络确定的所述经排名的列表中的每个内核的相关性得分;
从所述经排名的内核列表中选择第一内核;
使用所述至少一个矩阵和所述第一内核生成所述矩阵计算的结果;以及
提供所述结果。


2.根据权利要求1所述的处理器,其中所述一个或更多个ALU进一步配置为通过以下步骤执行所述矩阵计算:
基于所述至少一个矩阵和所述矩阵计算生成候选内核列表;以及
将所述候选内核列表提供给具有所述至少一个矩阵和所述矩阵计算的所述特性的所述神经网络,其中所生成的所述经排名的内核列表仅包括所述候选内核列表中包括的内核。


3.根据权利要求1所述的处理器,其中所述一个或更多个ALU进一步配置为通过以下步骤执行所述矩阵计算:
识别配置为生成所述结果的内核处理器;
基于所述内核处理器的一个或更多个硬件约束从所述候选内核列表中移除一个或更多个内核。


4.根据权利要求1所述的处理器,其中通过应用程序接口(API)接收所述请求。


5.根据权利要求1所述的处理器,其中所述一个或更多个ALU进一步配置为通过以下步骤执行所述矩阵计算:
识别硬件行为信息;以及
将所述硬件行为信息提供给具有所述至少一个矩阵和所述矩阵计算的特性的所述神经网络。


6.根据权利要求1所述的处理器,其中所述矩阵计算是通用矩阵乘法(GeMM)。


7.根据权利要求1所述的处理器,其中所述一个或更多个ALU进一步配置为通过以下步骤执行所述矩阵计算:
确定用于所述至少一个矩阵和所述矩阵计算的第二内核;
由所述神经网络将所述经排名的内核列表与所述第二内核进行比较;以及
基于所述至少一个矩阵和所述第二内核生成用于所述神经网络的附加的训练数据。


8.根据权利要求7所述的处理器,其中生成所述附加的训练数据包括:
确定所述至少一个矩阵的类别;
基于所述类别生成输入;以及
将所述附加的训练数据提供给所述神经网络。


9.一种系统,包括:
一个或更多个处理器,配置为使用一个或更多个神经网络执行:
接收对矩阵计算的请求,所述请求包括至少一个矩阵和要执行的所述矩阵计算;
向神经网络提供所述至少一个矩阵和所述矩阵计算的特性;
使用所述神经网络生成经排名的内核列表,所述排名基于使用所述神经网络确定的所述经排名的列表中的每个内核的相关性得分;
从所述经排名的内核列表中选择第一内核;
使用所述至少一个矩阵和所述第一内核生成所述矩阵计算的结果;以及
提供所述结果;和
一个或更多个存储器,用于存储与所述一个或更多个神经网络相对应的参数。

【专利技术属性】
技术研发人员:J·巴克C·程P·施普林格W·雅布伦斯基
申请(专利权)人:辉达公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1