技术领域
[0002] 根据本公开的实施例的一或多个方面涉及机器学习,且更具体地说,涉及一种用于避免机器学习系统中的串行化密钥值存取的系统和方法。
相关背景技术
[0003] 在一些具有块接口的现有技术固态驱动器(solid state drive;SSD)中,对存储在SSD中的数据进行密钥值存取需要涉及中央处理单元(central processing unit;CPU)以在对整个训练数据的子集进行随机采样的随机机器学习训练期间提供密钥值接口。主机CPU执行文件索引查找和文件系统存取,以识别导致串行化密钥值存取的数据的位置。这类串行化密钥值存取可能限制性能。
[0004] 因此,需要一种改进的系统和方法,所述系统和方法用于执行涉及对数据的密钥值存取的机器学习。
具体实施方式
[0041] 下文结合附图所阐述的详细描述意图作为对系统和方法的示例性实施例的描述,且并不意图表示本公开可建构或利用的仅有形式,所述系统和方法用于执行涉及对根据本公开所提供的数据进行密钥值存取的机器学习。所述描述结合所示出的实施例来阐述本公开的特征。然而,将理解,可利用不同实施例来实现相同或等效的功能以及结构,所述不同实施例也意图涵盖在本公开的范围内。如本文中其它地方所指示的,相同元件编号意图指示相同元件或特征。
[0042] 当用于对整个训练数据的子集进行随机采样的随机机器学习训练方法中时,现有技术机器学习平台存在缺点。因为需要涉及CPU以提供密钥值接口以及穿越外围组件互连快速(peripheral component interconnect express;PCIe)总线的数据传输,所以这类机器学习平台可能由于在随机机器学习训练期间进行密钥值存取而遭受低图形处理单元(graphics processing unit;GPU)利用率。如上文所提及,在一些现有技术系统中,主机中央处理单元(CPU)执行文件索引查找和文件系统存取,以识别导致串行化密钥值存取的数据的位置。相比之下,在一些实施例中,由于CPU并未涉及对存储在板载SSD中的数据进行密钥值存取,因而改进性能。GPU将密钥值命令直接发送到(例如)包含GPU和板载密钥值SSD的图形卡上的板载密钥值存储器件(例如板载密钥值SSD),这实现了异步密钥值存取,从而降低存取延迟的影响。如本文中所使用,“密钥值存储器件”是永久性存储器件(如SSD),所述永久性存储器件配置成通过响应于每一这类请求而返回值来对密钥值请求(各自包含密钥)作出响应,所述值与包含在请求中的密钥相对应。
[0043] 图1绘示在GPU机器学习训练期间,使用软件密钥值存储对存储在具有块接口的SSD上的数据进行密钥值存取的总体流程。首先,主机应用程序105通过向软件密钥值存储110发送“获取”请求来发起密钥值存取。为了识别某一密钥的数据的位置,软件密钥值存储
110对索引表进行存取,所述索引表存储与指定密钥相对应的数据的文件偏移量。随后软件密钥值存储110对具有文件偏移量的文件系统115进行存取,且文件系统115对具有块接口
120的SSD进行存取并提取与指定密钥相对应的数据。一旦所述值变为主机应用程序可用,那么主机应用程序便将值传输到GPU存储器125以用于GPU计算,并启动GPU内核。对于具有具备块接口的现有技术SSD的软件密钥值存储,依序执行所有这些操作。
[0044] 如图1中所示,对具有块接口的SSD的密钥值存取涉及运行于主机上的若干计算步骤以识别与指定密钥相对应的数据的位置。GPU仅在软件密钥值存储的计算完成之后才能够执行相应计算。因为GPU需要等待从其它GPU进行的密钥值存取的完成,所以当在系统中使用较多GPU时,密钥值存取的延迟增加,导致GPU计算的串行化。结果,对具有块接口的现有技术SSD的密钥值存取限制了系统中可以高效使用的GPU的数量。
[0045] 在一些实施例中,具有具备密钥值接口的板载SSD(或“密钥值SSD”)的图形卡用以克服现有技术系统的一些缺点。图2绘示一种具有这类器件的示例性系统。与其中在存储与GPU之间移动数据需要穿过全局PCIe总线进行数据传输(从而增加从GPU进行的数据存取的延迟)的现有技术系统不同,具有板载密钥值SSD 205的图形卡可通过利用板载密钥值SSD 205与GPU 210之间的对等(peer to peer;P2P)直接存储器存取(direct memory access;
DMA)且给予GPU 210完全的P2P DMA控制来减少额外负荷。在一些实施例中,板载密钥值SSD
205提供密钥值命令作为非标准命令。举例来说,密钥值请求队列(在下文进一步详细论述)可实施为非易失性存储器快速(nonvolatile memory express;NVMe)命令队列,其中NVMe命令是在SSD 205的固件中以及在GPU上的驱动器软件中定义成与密钥值命令(即,用以从SSD 205请求与作为命令的部分而得到的密钥相对应的值的命令)相对应的供应商专有命令。
[0046] 在一些实施例中,这类系统可用以在板载密钥值SSD中提供异步密钥值存取,且一些实施例利用图形卡内的密钥值SSD以进行对训练数据的随机采样。图3绘示了在一些实施例中的机器学习训练期间的密钥值存取的流程。这类实施例与一些现有技术系统之间的显著差异是,在这类实施例中,GPU将密钥值命令直接发送到密钥值SSD 205。首先,在执行主机应用程序的初始阶段期间,主机应用程序将特殊GPU器件的存储器映射在外围组件互连(peripheral component interconnect;PCI)基址寄存器(base address register;BAR)存储区域上,从而在密钥值SSD 205与GPU之间建立直接通信。利用这一过程来分配成在密钥值SSD 205与GPU之间通信(例如利用存储器映射输入‑输出)的GPU存储器的区域在本文中可称为GPU存储器的“输入‑输出区域”。可由GPU和密钥值SSD 205两者直接存取的GPU存储器的输入‑输出区域可功能性地操作为共享存储器。GPU应用程序305通过对密钥值SSD 205执行存储器映射输入‑输出并供应所暴露GPU存储器的总线地址来向密钥值SSD 205发出获取请求。在密钥值SSD 205内的固件执行密钥查找以检索与密钥相对应的值之后,所述固件将值写入到映射GPU器件存储器(即写入到GPU存储器的输入‑输出区域),而无需主机应用程序105的中转。
[0047] 在一些实施例中,使用密钥值请求队列(key value request queue;KVRQ)310,且在GPU不必在产生第二后续请求之前等待第一请求的响应的意义上来讲,密钥值存取是无阻挡的。替代地,GPU将密钥值请求放置到密钥值请求队列310中,且所述请求转而由密钥值SSD 205来处理。如此,当GPU应用程序将请求安置到密钥值请求队列310中时,请求操作完成。密钥值请求队列310保存未完成请求,以使得密钥值请求队列310内的条目数量就是密钥值请求的数量。当所述值传输到GPU存储器时,SSD 205内的固件释放与指定密钥相对应的密钥值请求队列条目。
[0048] 每一GPU的单独密钥值存取使得来自多个GPU的密钥值存取交叠。举例来说,在具有各自连接到相应密钥值SSD的两个GPU的系统中,所述两个GPU可同时发出请求,且其相应的密钥值SSD可同时作出响应。图4示出涉及各自连接到对应密钥值SSD的两个GPU的这类实例的操作。图4还示出系统所节省的时间,与其中GPU计算串行化的现有技术方法相比较,在这类实施例中,其中利用两个GPU来执行交叠密钥值存取。在一些实施例中,三个或大于三个(例如任意数目个)GPU可各自连接到相应密钥值SSD并执行交叠(例如同时)密钥值操作。
[0049] 在一些实施例中,密钥值存取的请求与响应的分离实现异步密钥值存取,例如实现对来自GPU的多个请求的批处理。图5示出在批处理两个密钥值命令时的异步密钥值存取的一实例。与其中GPU计算和SSD器件存取串行化的同步密钥值存取相比较,一些实施例的异步密钥值存取使得有可能利用GPU计算使多个密钥值命令交叠。在这一实例中,GPU持续发出获取请求而不是每次等待前一请求的完成。在一些实施例中,三个或大于三个(例如任意数目个)GPU可各自连接到相应密钥值SSD并执行交叠(例如同时)密钥值操作。
[0050] 在一些实施例中,当密钥值SSD响应于密钥值请求而检索值时,所述密钥值SSD将所检索的值写入回到密钥值请求队列,即写入回到为这一目的而分配在密钥值请求内的存储器的区域(或“返回值区域”)。在其它实施例中,密钥值SSD而是将所检索的值写入到分配在GPU存储器的输入‑输出区域中的单独队列(或“返回值队列”)。在一些实施例中,替代使每一GPU具有单个专用密钥值SSD(每一GPU向单个专用密钥值SSD发送密钥值请求),单个GPU可具有若干密钥值SSD。在这类实施例中,可将各自用于相应密钥值SSD的若干密钥值请求队列分配在GPU存储器中。在其它实施例中,若干GPU可连接到单个密钥值SSD,所述单个密钥值SSD可(例如)以轮选方式服务GPU中的相应密钥值请求队列中的密钥值请求。
[0051] 在一些实施例中,由主机应用程序所执行的任务仅涉及建立GPU与SSD之间的通信的路径,这通过避免或者可能由主机应用程序对CPU执行的密钥值存取操作所造成的GPU计算的串行化来改进了这些实施例的可扩展性。如此,这些实施例可实现向外扩展多个GPU以加速机器学习训练。通过用简单器件接口替换复杂密钥值软件,一些实施例还降低了或者可能对主机施加的资源需求,所述资源需求包含(例如)对CPU核心的数量的需求。避免这类需求可以得到更好的能量效率。
[0052] 一些实施例可以使用一个或多个处理电路来建构。术语“处理电路”在本文中用以意指用于处理数据或数字信号的硬件、固件以及软件的任何组合。处理电路硬件可包含(例如)专用集成电路(application specific integrated circuit;ASIC)、通用或专用中央处理单元(CPU)、数字信号处理器(digital signal processor;DSP)、图形处理单元(GPU)以及如现场可编程门阵列(field programmable gate array;FPGA)的可编程逻辑器件。如本文中所使用,在处理电路中,每一功能由配置(即硬布线)成执行所述功能的硬件来执行,或由配置成执行存储在非暂时性存储介质中的指令的较通用硬件(如CPU)来执行。处理电路可制造于单个印刷电路板(printed circuit board;PCB)上或分布于若干互连PCB上方。处理电路可包含其它处理电路;例如,处理电路可包含在PCB上互连的两个处理电路FPGA和CPU。
[0053] 将理解,虽然可在本文中使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或区段,但这些元件、组件、区域、层和/或区段不应受这些术语限制。这些术语仅用以区分一个元件、组件、区域、层或区段与另一元件、组件、区域、层或区段。因此,本文中所论述的第一元件、组件、区域、层或区段可称为第二元件、组件、区域、层或区段,而并不脱离本发明概念的精神和范围。
[0054] 本文中所使用的术语仅出于描述特定实施例的目的,且并不意图限制本发明概念。如本文中所使用,术语“基本上”、“约”以及类似术语用作近似术语而不用作程度术语,且意图考虑到本领域普通技术人员将认识到的所测量或所计算的值的固有偏差。如本文中所使用,术语“主要组分”是指以大于任何其它单一组分于组合物或产品中的量而存在于组合物、聚合物或产品中的组分。相比之下,术语“首要组分”是指构成组合物、聚合物或产品的至少50%重量或大于50%重量的组分。如本文中所使用,在应用于多个物件时,术语“主要部分”意指所述物件的至少一半。
[0055] 如本文中所使用,除非上下文另有明确指示,否则单数形式“一(a/an)”意图也包含复数形式。将进一步理解,当用于本说明书中时,术语“包括(comprises)”和/或“包括(comprising)”指定存在所陈述的特征、整数、步骤、操作、元件和/或组件,但不排除存在或添加一或多个其它特征、整数、步骤、操作、元件、组件和/或其群组。如本文中所使用,术语“和/或”包含相关联的所列项目中的一或多个的任何以及所有组合。当在元件的列表之前时,例如“中的至少一个”的表述修饰元件的整个列表且不修饰列表中的单个元件。此外,当描述本发明概念的实施例时,使用“可”是指“本公开的一或多个实施例”。此外,术语“示例性”意指实例或说明。如本文中所使用,术语“使用(use)”、“正使用(using)”、“被使用(used)”可分别视为与术语“利用(utilize)”、“正利用(utilizing)”、“被利用(utilized)”同义。
[0056] 将了解,当元件或层称作在另一元件或层“上”,“连接到”、“耦合到”或“邻近于”所述另一元件或层时,其可直接在另一元件或层上,直接连接到、耦合到或邻近于所述另一元件或层,或可存在一或多个介入元件或层。相比之下,当元件或层称作“直接”在另一元件或层“上方”,“直接连接到”、“直接耦合到”或“紧邻”所述另一元件或层时,不存在介入元件或层。
[0057] 虽然已在本文中具体描述并示出了用于执行涉及对数据进行密钥值存取的机器学习的系统和方法的示例性实施例,但许多修改和变型将对本领域的技术人员显而易见。相应地,应理解,根据本公开的原理所建构的用于执行涉及对数据进行密钥值存取的机器学习的系统和方法可以不按本文中所具体描述的来实施。本发明也定义在以下权利要求书和其等效物中。