用于机器学习的系统和方法与流程

文档序号:18451164发布日期:2019-08-17 01:16阅读:163来源:国知局
用于机器学习的系统和方法与流程

本申请案要求2018年2月2日提交的名为“利用密钥值ssd进行gpu机器学习训练的数据路径优化(datapathoptimizationforgpumachinelearningtrainingwithkeyvaluessd)”的美国临时申请案第62/625,532号的优先权和权益,所述临时申请案的全部内容以引用的方式并入本文中。

根据本公开的实施例的一或多个方面涉及机器学习,且更具体地说,涉及一种用于避免机器学习系统中的串行化密钥值存取的系统和方法。



背景技术:

在一些具有块接口的现有技术固态驱动器(solidstatedrive;ssd)中,对存储在ssd中的数据进行密钥值存取需要涉及中央处理单元(centralprocessingunit;cpu)以在对整个训练数据的子集进行随机采样的随机机器学习训练期间提供密钥值接口。主机cpu执行文件索引查找和文件系统存取,以识别导致串行化密钥值存取的数据的位置。这类串行化密钥值存取可能限制性能。

因此,需要一种改进的系统和方法,所述系统和方法用于执行涉及对数据的密钥值存取的机器学习。



技术实现要素:

根据本发明的一实施例,提供一种用于机器学习的方法,所述方法包含:利用第一图形处理单元将第一密钥值请求写入到第一存储器的第一输入-输出区域中的密钥值请求队列,所述第一存储器连接到第一图形处理单元,所述第一密钥值请求包含密钥;利用连接到第一存储器的第一密钥值存储器件从密钥值请求队列中读取第一密钥值请求;以及响应于第一密钥值请求而利用第一密钥值存储器件将第一值写入到第一存储器的第一输入-输出区域,所述第一值与第一密钥值请求的密钥相对应。

在一个实施例中,方法包含:利用第一密钥值存储器件来在第一密钥值存储器件中执行密钥查找以检索第一值。

在一个实施例中,第一密钥值请求包含返回值区域,所述返回值区域是分配给第一值的区域。

在一个实施例中,将第一值写入到第一存储器的第一输入-输出区域包含将第一值写入到返回值区域。

在一个实施例中,将第一值写入到第一存储器的第一输入-输出区域包含将第一值写入到第一存储器的第一输入-输出区域中的返回值队列。

在一个实施例中,方法包含:利用连接到第一密钥值存储器件且连接到第一图形处理单元的主机来配置:第一密钥值存储器件存取第一存储器的第一输入-输出区域以接收密钥值请求,并响应于密钥值请求而写入值;以及第一图形处理单元将密钥值请求存储在第一存储器的第一输入-输出区域中,并从第一存储器的第一输入-输出区域中读取值。

在一个实施例中,方法包含:利用连接到主机的第二图形处理单元将第二密钥值请求写入到第二存储器的输入-输出区域中的密钥值请求队列,所述第二存储器连接到第二图形处理单元,所述第二密钥值请求包含密钥;利用连接到主机且连接到第二存储器的第二密钥值存储器件从密钥值请求队列中读取第二密钥值请求;以及响应于第二密钥值请求而利用第二密钥值存储器件将第二值写入到第二存储器的输入-输出区域,所述第二值与第二密钥值请求的密钥相对应。

在一个实施例中,方法包含:利用第一密钥值存储器件来在第一密钥值存储器件中执行密钥查找以检索第一值;以及在利用第一密钥值存储器件来执行密钥查找的同时,利用第二密钥值存储器件来在第二密钥值存储器件中执行密钥查找以检索第二值。

在一个实施例中,利用第一密钥值存储器件来读取第一密钥值请求包含经由对等直接存储器存取来读取第一密钥值请求。

在一个实施例中,利用第一密钥值存储器件来写入第一值包含经由对等直接存储器存取来写入第一值。

在一个实施例中,第一密钥值存储器件利用外围组件互连连接来连接到第一图形处理单元。

在一个实施例中,方法包含:在利用第一图形处理单元来写入第一密钥值请求之后,且在利用第一密钥值存储器件来写入第一值之前,利用第一图形处理单元将第二密钥值请求写入到密钥值请求队列。

在一个实施例中,方法包含:利用第一图形处理单元,将第二密钥值请求写入到第一存储器的第二输入-输出区域中的密钥值请求队列,所述第二密钥值请求包含密钥;利用连接到第一存储器的第二密钥值存储器件从第一存储器的第二输入-输出区域的密钥值请求队列中读取第二密钥值请求;以及响应于第二密钥值请求而利用第二密钥值存储器件将第二值写入到第一存储器的第二输入-输出区域,所述第二值与第二密钥值请求的密钥相对应。

在一个实施例中,方法包含:利用第一密钥值存储器件来在第一密钥值存储器件中执行密钥查找以检索第一值;以及在利用第一密钥值存储器件来执行密钥查找的同时,利用第二密钥值存储器件来在第二密钥值存储器件中执行密钥查找以检索第二值。

根据本发明的一实施例,提供一种用于机器学习的系统,所述系统包含:图形处理单元;存储器,连接到图形处理单元;以及密钥值存储器件;所述密钥值存储器件利用外围组件互连连接而连接到图形处理单元;所述图形处理单元配置成在存储器的输入-输出区域中执行存储器映射输入和输出操作,且配置成将一或多个密钥值请求写入到输入-输出区域内的密钥值请求队列;所述密钥值存储器件配置成:在输入-输出区域中执行存储器映射输入和输出操作;从密钥值请求队列中读取一或多个密钥值请求;以及响应于一或多个密钥值请求的密钥值请求而将值写入存储器的输入-输出区域中,所述值与密钥值请求的密钥相对应。

在一个实施例中,密钥值请求包含返回值区域,所述返回值区域是分配给所述值的区域。

在一个实施例中,将所述值写入到存储器的输入-输出区域包含将值写入到返回值区域。

在一个实施例中,将所述值写入到存储器的输入-输出区域包含将值写入到存储器的输入-输出区域中的返回值队列。

根据本发明的一实施例,提供一种用于机器学习的系统,所述系统包含:图形处理单元;密钥值存储器件;以及共享存储器构件,用于在图形处理单元与密钥值存储器件之间通信;所述图形处理单元配置成经由用于通信的共享存储器构件将一或多个密钥值请求发送到密钥值存储器件,所述密钥值存储器件配置成:接收一或多个密钥值请求;以及响应于一或多个密钥值请求的密钥值请求而经由用于通信的共享存储器构件将值发送到图形处理单元,所述值与密钥值请求的密钥相对应。

在一个实施例中,用于通信的共享存储器构件包含存储器,所述存储器连接到图形处理单元,且配置成经由对等直接存储器存取通过外围组件互连连接来由密钥值存储器件存取。

附图说明

将参考本说明书、权利要求书以及附图来了解并理解本公开的这些和其它特征以及优点,其中:

图1是用于机器学习的系统的功能框图。

图2是根据本公开的一实施例的配备有板载ssd的图形卡的框图。

图3是根据本公开的一实施例的数据流程图。

图4是根据本公开的一实施例的时序图。

图5是根据本公开的一实施例的时序图。

附图标号说明

105:主机应用程序;

110:软件密钥值存储;

115:文件系统;

120:块接口;

125:图形处理单元存储器;

205:板载密钥值固态驱动器;

210:图形处理单元;

305:图形处理单元应用程序;

310:密钥值请求队列。

具体实施方式

下文结合附图所阐述的详细描述意图作为对系统和方法的示例性实施例的描述,且并不意图表示本公开可建构或利用的仅有形式,所述系统和方法用于执行涉及对根据本公开所提供的数据进行密钥值存取的机器学习。所述描述结合所示出的实施例来阐述本公开的特征。然而,将理解,可利用不同实施例来实现相同或等效的功能以及结构,所述不同实施例也意图涵盖在本公开的范围内。如本文中其它地方所指示的,相同元件编号意图指示相同元件或特征。

当用于对整个训练数据的子集进行随机采样的随机机器学习训练方法中时,现有技术机器学习平台存在缺点。因为需要涉及cpu以提供密钥值接口以及穿越外围组件互连快速(peripheralcomponentinterconnectexpress;pcie)总线的数据传输,所以这类机器学习平台可能由于在随机机器学习训练期间进行密钥值存取而遭受低图形处理单元(graphicsprocessingunit;gpu)利用率。如上文所提及,在一些现有技术系统中,主机中央处理单元(cpu)执行文件索引查找和文件系统存取,以识别导致串行化密钥值存取的数据的位置。相比之下,在一些实施例中,由于cpu并未涉及对存储在板载ssd中的数据进行密钥值存取,因而改进性能。gpu将密钥值命令直接发送到(例如)包含gpu和板载密钥值ssd的图形卡上的板载密钥值存储器件(例如板载密钥值ssd),这实现了异步密钥值存取,从而降低存取延迟的影响。如本文中所使用,“密钥值存储器件”是永久性存储器件(如ssd),所述永久性存储器件配置成通过响应于每一这类请求而返回值来对密钥值请求(各自包含密钥)作出响应,所述值与包含在请求中的密钥相对应。

图1绘示在gpu机器学习训练期间,使用软件密钥值存储对存储在具有块接口的ssd上的数据进行密钥值存取的总体流程。首先,主机应用程序105通过向软件密钥值存储110发送“获取”请求来发起密钥值存取。为了识别某一密钥的数据的位置,软件密钥值存储110对索引表进行存取,所述索引表存储与指定密钥相对应的数据的文件偏移量。随后软件密钥值存储110对具有文件偏移量的文件系统115进行存取,且文件系统115对具有块接口120的ssd进行存取并提取与指定密钥相对应的数据。一旦所述值变为主机应用程序可用,那么主机应用程序便将值传输到gpu存储器125以用于gpu计算,并启动gpu内核。对于具有具备块接口的现有技术ssd的软件密钥值存储,依序执行所有这些操作。

如图1中所示,对具有块接口的ssd的密钥值存取涉及运行于主机上的若干计算步骤以识别与指定密钥相对应的数据的位置。gpu仅在软件密钥值存储的计算完成之后才能够执行相应计算。因为gpu需要等待从其它gpu进行的密钥值存取的完成,所以当在系统中使用较多gpu时,密钥值存取的延迟增加,导致gpu计算的串行化。结果,对具有块接口的现有技术ssd的密钥值存取限制了系统中可以高效使用的gpu的数量。

在一些实施例中,具有具备密钥值接口的板载ssd(或“密钥值ssd”)的图形卡用以克服现有技术系统的一些缺点。图2绘示一种具有这类器件的示例性系统。与其中在存储与gpu之间移动数据需要穿过全局pcie总线进行数据传输(从而增加从gpu进行的数据存取的延迟)的现有技术系统不同,具有板载密钥值ssd205的图形卡可通过利用板载密钥值ssd205与gpu210之间的对等(peertopeer;p2p)直接存储器存取(directmemoryaccess;dma)且给予gpu210完全的p2pdma控制来减少额外负荷。在一些实施例中,板载密钥值ssd205提供密钥值命令作为非标准命令。举例来说,密钥值请求队列(在下文进一步详细论述)可实施为非易失性存储器快速(nonvolatilememoryexpress;nvme)命令队列,其中nvme命令是在ssd205的固件中以及在gpu上的驱动器软件中定义成与密钥值命令(即,用以从ssd205请求与作为命令的部分而得到的密钥相对应的值的命令)相对应的供应商专有命令。

在一些实施例中,这类系统可用以在板载密钥值ssd中提供异步密钥值存取,且一些实施例利用图形卡内的密钥值ssd以进行对训练数据的随机采样。图3绘示了在一些实施例中的机器学习训练期间的密钥值存取的流程。这类实施例与一些现有技术系统之间的显著差异是,在这类实施例中,gpu将密钥值命令直接发送到密钥值ssd205。首先,在执行主机应用程序的初始阶段期间,主机应用程序将特殊gpu器件的存储器映射在外围组件互连(peripheralcomponentinterconnect;pci)基址寄存器(baseaddressregister;bar)存储区域上,从而在密钥值ssd205与gpu之间建立直接通信。利用这一过程来分配成在密钥值ssd205与gpu之间通信(例如利用存储器映射输入-输出)的gpu存储器的区域在本文中可称为gpu存储器的“输入-输出区域”。可由gpu和密钥值ssd205两者直接存取的gpu存储器的输入-输出区域可功能性地操作为共享存储器。gpu应用程序305通过对密钥值ssd205执行存储器映射输入-输出并供应所暴露gpu存储器的总线地址来向密钥值ssd205发出获取请求。在密钥值ssd205内的固件执行密钥查找以检索与密钥相对应的值之后,所述固件将值写入到映射gpu器件存储器(即写入到gpu存储器的输入-输出区域),而无需主机应用程序105的中转。

在一些实施例中,使用密钥值请求队列(keyvaluerequestqueue;kvrq)310,且在gpu不必在产生第二后续请求之前等待第一请求的响应的意义上来讲,密钥值存取是无阻挡的。替代地,gpu将密钥值请求放置到密钥值请求队列310中,且所述请求转而由密钥值ssd205来处理。如此,当gpu应用程序将请求安置到密钥值请求队列310中时,请求操作完成。密钥值请求队列310保存未完成请求,以使得密钥值请求队列310内的条目数量就是密钥值请求的数量。当所述值传输到gpu存储器时,ssd205内的固件释放与指定密钥相对应的密钥值请求队列条目。

每一gpu的单独密钥值存取使得来自多个gpu的密钥值存取交叠。举例来说,在具有各自连接到相应密钥值ssd的两个gpu的系统中,所述两个gpu可同时发出请求,且其相应的密钥值ssd可同时作出响应。图4示出涉及各自连接到对应密钥值ssd的两个gpu的这类实例的操作。图4还示出系统所节省的时间,与其中gpu计算串行化的现有技术方法相比较,在这类实施例中,其中利用两个gpu来执行交叠密钥值存取。在一些实施例中,三个或大于三个(例如任意数目个)gpu可各自连接到相应密钥值ssd并执行交叠(例如同时)密钥值操作。

在一些实施例中,密钥值存取的请求与响应的分离实现异步密钥值存取,例如实现对来自gpu的多个请求的批处理。图5示出在批处理两个密钥值命令时的异步密钥值存取的一实例。与其中gpu计算和ssd器件存取串行化的同步密钥值存取相比较,一些实施例的异步密钥值存取使得有可能利用gpu计算使多个密钥值命令交叠。在这一实例中,gpu持续发出获取请求而不是每次等待前一请求的完成。在一些实施例中,三个或大于三个(例如任意数目个)gpu可各自连接到相应密钥值ssd并执行交叠(例如同时)密钥值操作。

在一些实施例中,当密钥值ssd响应于密钥值请求而检索值时,所述密钥值ssd将所检索的值写入回到密钥值请求队列,即写入回到为这一目的而分配在密钥值请求内的存储器的区域(或“返回值区域”)。在其它实施例中,密钥值ssd而是将所检索的值写入到分配在gpu存储器的输入-输出区域中的单独队列(或“返回值队列”)。在一些实施例中,替代使每一gpu具有单个专用密钥值ssd(每一gpu向单个专用密钥值ssd发送密钥值请求),单个gpu可具有若干密钥值ssd。在这类实施例中,可将各自用于相应密钥值ssd的若干密钥值请求队列分配在gpu存储器中。在其它实施例中,若干gpu可连接到单个密钥值ssd,所述单个密钥值ssd可(例如)以轮选方式服务gpu中的相应密钥值请求队列中的密钥值请求。

在一些实施例中,由主机应用程序所执行的任务仅涉及建立gpu与ssd之间的通信的路径,这通过避免或者可能由主机应用程序对cpu执行的密钥值存取操作所造成的gpu计算的串行化来改进了这些实施例的可扩展性。如此,这些实施例可实现向外扩展多个gpu以加速机器学习训练。通过用简单器件接口替换复杂密钥值软件,一些实施例还降低了或者可能对主机施加的资源需求,所述资源需求包含(例如)对cpu核心的数量的需求。避免这类需求可以得到更好的能量效率。

一些实施例可以使用一个或多个处理电路来建构。术语“处理电路”在本文中用以意指用于处理数据或数字信号的硬件、固件以及软件的任何组合。处理电路硬件可包含(例如)专用集成电路(applicationspecificintegratedcircuit;asic)、通用或专用中央处理单元(cpu)、数字信号处理器(digitalsignalprocessor;dsp)、图形处理单元(gpu)以及如现场可编程门阵列(fieldprogrammablegatearray;fpga)的可编程逻辑器件。如本文中所使用,在处理电路中,每一功能由配置(即硬布线)成执行所述功能的硬件来执行,或由配置成执行存储在非暂时性存储介质中的指令的较通用硬件(如cpu)来执行。处理电路可制造于单个印刷电路板(printedcircuitboard;pcb)上或分布于若干互连pcb上方。处理电路可包含其它处理电路;例如,处理电路可包含在pcb上互连的两个处理电路fpga和cpu。

将理解,虽然可在本文中使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或区段,但这些元件、组件、区域、层和/或区段不应受这些术语限制。这些术语仅用以区分一个元件、组件、区域、层或区段与另一元件、组件、区域、层或区段。因此,本文中所论述的第一元件、组件、区域、层或区段可称为第二元件、组件、区域、层或区段,而并不脱离本发明概念的精神和范围。

本文中所使用的术语仅出于描述特定实施例的目的,且并不意图限制本发明概念。如本文中所使用,术语“基本上”、“约”以及类似术语用作近似术语而不用作程度术语,且意图考虑到本领域普通技术人员将认识到的所测量或所计算的值的固有偏差。如本文中所使用,术语“主要组分”是指以大于任何其它单一组分于组合物或产品中的量而存在于组合物、聚合物或产品中的组分。相比之下,术语“首要组分”是指构成组合物、聚合物或产品的至少50%重量或大于50%重量的组分。如本文中所使用,在应用于多个物件时,术语“主要部分”意指所述物件的至少一半。

如本文中所使用,除非上下文另有明确指示,否则单数形式“一(a/an)”意图也包含复数形式。将进一步理解,当用于本说明书中时,术语“包括(comprises)”和/或“包括(comprising)”指定存在所陈述的特征、整数、步骤、操作、元件和/或组件,但不排除存在或添加一或多个其它特征、整数、步骤、操作、元件、组件和/或其群组。如本文中所使用,术语“和/或”包含相关联的所列项目中的一或多个的任何以及所有组合。当在元件的列表之前时,例如“中的至少一个”的表述修饰元件的整个列表且不修饰列表中的单个元件。此外,当描述本发明概念的实施例时,使用“可”是指“本公开的一或多个实施例”。此外,术语“示例性”意指实例或说明。如本文中所使用,术语“使用(use)”、“正使用(using)”、“被使用(used)”可分别视为与术语“利用(utilize)”、“正利用(utilizing)”、“被利用(utilized)”同义。

将了解,当元件或层称作在另一元件或层“上”,“连接到”、“耦合到”或“邻近于”所述另一元件或层时,其可直接在另一元件或层上,直接连接到、耦合到或邻近于所述另一元件或层,或可存在一或多个介入元件或层。相比之下,当元件或层称作“直接”在另一元件或层“上方”,“直接连接到”、“直接耦合到”或“紧邻”所述另一元件或层时,不存在介入元件或层。

虽然已在本文中具体描述并示出了用于执行涉及对数据进行密钥值存取的机器学习的系统和方法的示例性实施例,但许多修改和变型将对本领域的技术人员显而易见。相应地,应理解,根据本公开的原理所建构的用于执行涉及对数据进行密钥值存取的机器学习的系统和方法可以不按本文中所具体描述的来实施。本发明也定义在以下权利要求书和其等效物中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1