掌桥专利:专业的专利平台
掌桥专利
首页

用于机器学习框架的并行迭代器

文献发布时间:2023-06-19 11:32:36


用于机器学习框架的并行迭代器

技术领域

本公开大体上涉及存储器子系统,且更具体来说,涉及用于存储器子系统的机器学习框架的并行数据处理。

背景技术

存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置及易失性存储器装置。大体来说,主机系统可利用存储器子系统以在存储器装置处存储数据并从存储器装置检索数据。

发明内容

在一方面中,本公开涉及一种方法,其包括:由主机系统的处理装置且从在所述主机系统上执行的机器学习(ML)框架接收从存储器子系统的存储器装置检索数据的请求,其中所述数据包括多个逻辑分区;起始一组并行I/O线程以从所述存储器装置检索所述数据,其中所述一组并行I/O线程中的每个I/O线程并行地从所述多个逻辑分区中的不同对应逻辑分区检索所述数据的不同部分,并将所述数据的所述不同部分存储于对应于所述一组I/O线程的一组I/O缓冲器中的I/O缓冲器中;及连续地将来自所述一组I/O缓冲器中的每个I/O缓冲器的所述数据的所述不同部分提供到所述ML框架,其中所述一组并行I/O线程持续地从所述存储器装置检索所述数据,直到来自所述逻辑分区的全部所述数据已被提供到所述ML框架为止。

在另一方面中,本公开涉及一种系统,其包括:存储器装置;及处理装置,其以操作方式与所述存储器装置耦合以执行包括以下各项的操作:接收待存储于存储器子系统的所述存储器装置上的用于机器学习(ML)框架的训练数据,其中所述存储器装置配置有多个并行输入/输出(I/O)队列;基于与所述存储器装置相关联的一或多个属性确定用于所述训练数据的逻辑分区大小;至少部分地基于所述逻辑分区大小及所述训练数据的大小确定用于所述训练数据的逻辑分区数目;及起始一或多个并行I/O线程以跨越所述数目个逻辑分区存储所述训练数据。

在另一方面中,本公开涉及一种包括指令的非暂时性计算机可读媒体,所述指令在由处理装置执行时使所述处理装置执行包括以下各项的操作:由主机系统的处理装置且从在所述主机系统上执行的机器学习(ML)框架接收从存储器子系统的存储器装置检索数据的请求,其中所述数据包括多个逻辑分区;起始一组并行I/O线程以从所述存储器装置检索所述数据,其中所述一组并行I/O线程中的每个I/O线程并行地从所述多个逻辑分区中的不同对应逻辑分区检索所述数据的不同部分,并将所述数据的所述不同部分存储于对应于所述一组I/O线程的一组I/O缓冲器中的I/O缓冲器中;及连续地将来自所述一组I/O缓冲器中的每个I/O缓冲器的所述数据的所述不同部分提供到所述ML框架,其中所述一组并行I/O线程持续地从所述存储器装置检索所述数据,直到来自所述逻辑分区的全部所述数据已被提供到所述ML框架为止。

附图说明

根据下文给出的详细描述及本公开的各种实施方案的附图,将更充分地理解本公开。

图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。

图2为根据一些实施例的用以并行地起始多个I/O线程以检索经逻辑分割数据的实例方法的流程图。

图3A至3D说明根据本公开的一些实施例的并行地起始多个I/O线程以检索经逻辑分割数据。

图4为根据一些实施例的用以逻辑地分割待存储于存储器装置中的训练数据的实例方法的流程图。

图5为本公开的实施方案可在其中操作的实例计算机系统的框图。

具体实施方式

本公开的方面涉及用于存储器子系统中的机器学习框架的并行数据处理。存储器子系统可为存储装置、存储器模块,或存储装置与存储器模块的混合。下文结合图1描述存储装置及存储器模块的实例。大体来说,主机系统可利用包含一或多个存储器组件(例如,存储数据的存储器装置)的存储器子系统。主机系统可提供待存储在存储器子系统处的数据且可请求从存储器子系统检索数据。

存储器子系统可包含可用于存储用于训练机器学习(ML)及人工智能(AI)框架的数据的存储器装置。常规ML/AI框架包含模型,模型为设计成接收作为输入的实例数据并将实例数据分类为特定类型或类别的神经网络的表示。在此类框架中,用于训练ML模型的数据量可能极其大,且可多次执行训练过程循环(例如,多个“时期”)。例如,用于将图像分类为特定类型的图像(例如,人、动物、一种类型的动物的图像等)的ML框架可利用在多个时期循环中反复处理以训练模型的所存储图像的较大数据集。类似地,用于ML/AI工作流的测试及/或推断阶段的数据集可包含极大量数据。

配置成存储用于ML框架的训练数据(或测试/推断数据)的常规存储器子系统通常以单线程方式将数据提供到ML框架。在此类情况下,利用大量数据(例如图像数据)的时期的性能可能在从存储器子系统检索数据所需的经过时间及处理资源两方面都降级。一些常规实施方案提供以较快读取时间实施存储器装置来解决性能问题。在存储器装置在接收及处理数据方面快于ML框架的处理器的一些情况下,可减少存储瓶颈。然而,在模型在数学上并不复杂的许多ML框架中,相比可由单线程数据检索过程提供的数据,框架的处理器常常可快得多地处理数据。

本公开的方面通过实施用于机器学习框架的并行迭代器解决上文及其它不足,所述并行迭代器可将ML训练数据配置到逻辑分区中,接着随后并行地起始多个输入/输出(I/O)线程以检索所存储数据。并行迭代器可被实施为ML框架与所连接存储器子系统之间用以存储数据的接口组件,使得可基于存储器子系统中包含的媒体类型来配置数据的逻辑分区。响应于数据检索请求,并行迭代器可起始针对每个逻辑分区且并行地执行的I/O线程,可从逻辑分区检索待传回到ML框架的数据。

本公开的优势包含但不限于在从配置有存储器装置(配置有多个I/O队列)的存储器子系统检索较大数据集时,吞吐量性能得到明显改进。本公开的并行迭代器的实施可利用多个I/O线程以充分利用存储器装置的多个I/O队列配置,从而改进到ML框架的数据吞吐量。另外,由于存储器装置的数据检索过程的性能得到改进,因此包含存储器装置的存储器子系统的性能也得到改进,这是由于使用了较少资源来执行不需要的调节循环。此外,本公开的方面可防止框架的处理器(例如,CPU/GPU)的处理速度接近超出存储及/或存储器子系统的那些处理速度的水平的瓶颈。

图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或其组合。

存储器子系统110可为存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、安全数字(SD)卡、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器以及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM),及各种类型的非易失性双列直插式存储器模块(NVDIMM)。

计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(IoT)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器及处理装置的此类计算装置。

计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”大体上指代组件之间的连接,其可为间接通信连接或直接通信连接(例如不具有介入组件),无论有线或无线,包含例如电连接、光学连接、磁性连接等连接。

主机系统120可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,NVDIMM控制器),及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110,例如以将数据写入到存储器子系统110及从存储器子系统110读取数据。

主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)、开放NAND快闪接口(ONFI)、双数据速率(DDR)、低功率双数据速率(LPDDR),或任何其它接口。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM高速(NVMe)接口以存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。图1说明存储器子系统110作为实例。大体来说,主机系统120可经由相同通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子系统。

存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。

非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器及就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)及三维NAND(3DNAND)。

存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单电平单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多电平单元(MLC)、三电平单元(TLC)及四电平单元(QLC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或此类单元的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可被分组成页,页可指存储器装置的用以存储数据的逻辑单元。对于一些类型的存储器(例如,NAND),页可被分组以形成块。

尽管描述了非易失性存储器组件,例如3D交叉点非易失性存储器单元阵列及NAND型快闪存储器(例如,2D NAND、3D NAND),但存储器装置130可是基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器,及电可擦除可编程只读存储器(EEPROM)。

存储器子系统控制器115(为简单起见,或为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据,以及其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑以执行本文中所描述的操作的数字电路。存储器子系统控制器115可为微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。

存储器子系统控制器115可包含配置成执行存储在本地存储器119中的指令的处理器117(例如,处理装置)。在所说明的实例中,存储器子系统控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程及例程。

在一些实施例中,本地存储器119可包含存储器寄存器,其存储存储器指针、所提取数据等。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可替代地依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。

大体来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将命令或操作转换成指令或适当命令以实现对存储器装置130的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作,及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理MU地址、物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含主机接口电路以经由物理主机接口与主机系统120通信。主机接口电路可将从主机系统接收的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。

存储器子系统110还可包含未说明的额外电路或组件。在一些实施例中,存储器子系统110可包含高速缓冲存储器或缓冲器(例如,DRAM)及地址电路(例如,行解码器及列解码器),所述地址电路可从存储器子系统控制器115接收地址并对地址进行解码以存取存储器装置130。

在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130为受管理存储器装置,其为与在同一存储器装置封装内用于进行媒体管理的本地控制器(例如,本地控制器135)组合的原始存储器装置。受管理存储器装置的实例为受管理NAND(MNAND)装置。

主机系统110可包含机器学习(ML)框架150以执行一或多个ML模型。在各种实施方案中,ML 150可包含例如Caffe 2、TensorFlow、PyTorch等的框架。主机系统110可另外包含并行迭代器113,其可由ML框架150调用以配置、存储及随后检索由ML框架150利用的训练数据。在一些实施方案中,主机系统110可包含并行迭代器组件113的至少一部分。例如,主机系统可包含配置成执行存储于主机系统120的本地存储器中的指令,以用于执行本文中所描述的操作的处理器(例如,处理装置)。在一些实施例中,并行迭代器组件113为主机系统120、应用程序或操作系统的部分。在一些实施方案中,存储器子系统控制器115包含并行迭代器组件113的至少一部分。例如,存储器子系统控制器115可包含配置成执行存储于本地存储器119中的指令,以用于执行本文中所描述的操作的处理器117(例如,处理装置)。

并行迭代器组件113可接收待存储于存储器子系统110的存储器装置130、140上的用于ML框架150的训练数据。在各种实施方案中,存储器装置130、140可配置有多个并行(I/O)队列(例如,具有较大队列深度的NVMe存储器装置)。并行迭代器组件113可确定所接收数据的逻辑分区,并跨越所确定逻辑分区将数据存储在存储器装置130、140上。随后,并行迭代器组件113可从ML 150接收从存储器装置130、140检索所存储训练数据的请求。并行迭代器组件113可起始一组并行I/O线程以检索数据,其中所述一组并行I/O线程中的每一个从不同对应逻辑分区检索不同数据部分,且可将所述数据存储于对应于特定I/O线程的I/O缓冲器中。并行迭代器组件113可接着以循环方式连续地提供来自I/O缓冲器的数据,直到来自逻辑分区的全部数据已被提供到ML框架150为止。下文描述关于并行迭代器组件113的操作的其它细节。

图2为根据一些实施例的用以针对存储器子系统并行地起始多个I/O线程,以检索经逻辑分割数据的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的并行迭代器组件113执行。尽管以特定序列或次序示出,但除非另外指定,否则可修改所述过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实施例中,可省略一或多个过程。因此,在每一实施例中,并非需要全部过程。其它过程流程是可能的。

如图2中所示,在操作210处,处理逻辑从在主机系统上执行的机器学习(ML)框架接收从存储器子系统的存储器装置检索数据的请求。在一些实施方案中,ML框架发送检索存储器装置上所存储的训练数据以训练ML框架的请求。数据可存储在存储器装置上的配置成用于存储器装置的数据库中。例如,数据可存储于键值数据存储区中,其中键表示到数据元素的指标且值表示待存储的实际数据。如上文所提及,训练数据可配置成包含多个逻辑分区。在一些实施方案中,训练数据可存储于存储器装置上,使得存储于每个逻辑分区中的训练数据部分与识别分区的唯一识别符(或“前缀码”)相关联。分区的前缀码可存储为数据元素的键的部分,以便识别所述数据元素的分区。通过将数据组织于逻辑分区中,可针对配置有多个并行I/O队列的存储器装置(例如,具有较大队列深度的非易失性存储器高速(NVMe)装置)优化数据检索过程。下文关于图4描述用于在此存储器装置上将训练数据配置到逻辑分区中的实例方法。

在操作220处,处理逻辑起始一组并行I/O线程以从存储器装置检索数据。所述一组并行I/O线程中的每个I/O线程从不同对应逻辑分区检索不同数据部分。每个I/O线程随后将其相关联所检索数据部分存储于与特定线程相关联的I/O缓冲器中。在说明性实例中,响应于接收到检索训练数据的请求,处理装置可起始从存储器装置的数据存储区读取数据的过程。在各种实施方案中,处理装置可创建游标以从存储器装置读取数据。数据库游标为使得能够遍历数据库中的记录的控制结构。游标可促进后续额外处理,例如数据库记录的检索、添加及去除。游标可由应用程序使用以处理由数据库系统查询传回的个别行。另外,游标可允许一次操纵整个结果集,这可实现对结果集中的行的顺序处理。创建游标的处理装置随后可起始主迭代器线程的创建以监视I/O缓冲器,并起始并行I/O线程以将数据从分区检索到其相关联的I/O缓冲器中。

在一些实施方案中,处理装置可至少部分地基于媒体装置的媒体类型确定待起始的并行I/O线程的数目。例如,处理装置可确定NVMe装置所支持的并行I/O队列的数目,并基于所述数目设定I/O线程的数目。另外,处理装置可确定与并行I/O队列相关联的队列深度。替代地,处理装置可基于与装置类型相关联的观察到的性能统计选择比NVMe装置所支持的数目少的并行I/O队列数目。例如,如果观察到的类似类型的NVMe装置的历史性能指示在特定数目的并行I/O线程的情况下数据检索被优化,则可将此数目存储于固件(或用于装置的其它配置数据中)并由处理装置加以检索以驱动线程起始过程。

在其它实施方案中,处理逻辑可基于与待检索数据相关联的逻辑分区数目确定待起始的并行线程数目。例如,处理装置可从数据存储区检索指示用于训练数据的逻辑分区数目的信息,并针对逻辑分区中的每一个起始I/O线程。在一些实施方案中,处理逻辑可使用上文因素的组合。例如,处理逻辑可确定由存储器装置的媒体类型所支持的I/O线程数目,接着确定与待检索数据相关联的逻辑分区数目。在分区数目比媒体类型所支持的线程数目少的此类情况下,处理逻辑可将I/O线程数目限于处理数据的可适用逻辑分区所需的线程数目。

在一些实施方案中,与逻辑分区相关联的数据量可大于用于从逻辑分区检索数据的I/O线程的I/O缓冲器的大小。在此类实例中,与逻辑分区相关联的I/O线程可检索所述分区的部分数据,并将其存储于缓冲器中。一旦I/O缓冲器已被填充,其相关联I/O线程可暂停针对所述分区的数据检索过程,直到I/O缓冲器已由主迭代器线程清空并提供到ML框架为止。

在操作230处,处理逻辑连续地将来自所述一组I/O缓冲器的每个I/O缓冲器的不同数据部分提供到ML框架。在各种实施方案中,所述一组并行I/O线程持续地从存储器装置检索数据,直到来自逻辑分区的全部数据已被提供到ML框架为止。如上文所提及,每个I/O线程可从其所指派逻辑分区检索数据部分,并将所述数据部分存储于其相关联I/O缓冲器中。一旦I/O缓冲器已被填充,I/O线程等待清空I/O缓冲器,之后再检索所述逻辑分区的额外数据。

在并行I/O线程从逻辑分区检索数据并将数据存储于相关联I/O缓冲器中时,主迭代器线程可检索存储于每个I/O缓冲器中的数据并将所述数据提供到ML框架。在一些实施方案中,主迭代器线程可以循环调度方案提供来自每个I/O缓冲器的不同数据部分。

在说明性实例中,处理装置可起始第一并行I/O线程以从第一逻辑分区检索数据,并起始第二并行I/O线程以从第二逻辑分区检索数据。第一并行I/O线程可将来自第一逻辑分区的数据部分检索到用于所述线程的I/O缓冲器中。第二并行I/O线程可将来自第二逻辑分区的数据部分检索到用于第二I/O线程的单独I/O缓冲器中。处理装置也可起始主迭代器线程来以循环方式遍历I/O缓冲器,以从缓冲器检索数据并将数据提供到ML框架。例如,主迭代器线程可清空第一I/O缓冲器并将所述数据提供到ML框架。一旦第一缓冲器已被清空,主迭代器线程可行进到第二I/O缓冲器,以将所述缓冲器中的数据提供到ML框架。在迭代器线程正将来自第二I/O缓冲器的数据提供到ML框架时,第一I/O线程可重新开始将来自第一逻辑分区的数据检索到第一I/O缓冲器中。可重复所述过程,直到已从全部逻辑分区检索全部数据并将所述数据提供到ML框架为止。

在替代实例中,主迭代器线程可以循环方式从每个I/O缓冲器逐个地检索来自I/O缓冲器的记录。换句话说,主迭代器线程可从第一I/O缓冲器检索一个数据项(例如,一个数据库记录),将所述记录传回到ML框架,接着从第二I/O缓冲器检索一个数据项(例如,一个数据库记录)等等,直到其已从每个I/O缓冲器检索一个数据项为止。主迭代器线程可接着返回到第一I/O缓冲器并检索另一数据项,接着返回到第二I/O缓冲器以检索另一数据项等等。在一些实施方案中,在主迭代器线程检索记录时,I/O线程可将额外记录添加到I/O缓冲器。替代地,I/O线程可等待,直到I/O缓冲器中的每一个已被清空为止,之后再从相关联分区检索额外数据。

在一些实施方案中,逻辑分区的数目可大于起始的I/O线程数目。例如,对于存储于五个分区中的数据,可起始三个线程。在此类实例中,三个线程将从前三个分区中的每一个检索数据,直到那些分区的全部数据已被提供到ML框架为止。随后,前两个线程可改用于从剩余两个逻辑分区检索数据,直到来自剩余两个分区的全部数据已被提供到ML框架为止。应注意,虽然此实例说明特定数目的线程及逻辑分区,但在其它实施方案中,可使用其它数目的线程及分区。

下文结合图3A至3D说明并行地起始多个I/O线程以检索经逻辑分割数据的实例。

图3A至3D说明根据本公开的一些实施例的并行地起始多个I/O线程以检索经逻辑分割数据。在一些实施例中,此过程可由图1的并行迭代器组件113执行且如上文关于图2所描述。

图3A说明请求存储于存储资源301-A、301-B中的一或多个上的训练数据的ML框架350。在各种实施方案中,ML框架350对应于图1的ML框架150。存储资源301-A、301-B可包含存储器子系统的存储器装置,例如上文关于图1的存储器子系统110及存储器装置130、140所描述的那些子系统及装置。在一些实施方案中,存储资源301-A、301-B可为配置有多个I/O队列以支持对装置上所存储的数据进行I/O处理的支持NVMe的存储器装置。

如图3A中所示,可根据数据布局302存储由ML框架350请求的训练数据。数据布局302可包含多个逻辑分区302-A、302-B、302-C、302-D及302-E。虽然为简单说明起见,仅描绘五个逻辑分区,但在其它实施方案中,较多或较少逻辑分区可用于所存储数据。

响应于从ML框架350接收到请求,并行迭代器组件可并行地起始一组I/O线程305、306及307,以分别从逻辑分区302-A、302-B及302-C检索数据。如上文关于图2所提及,并行迭代器组件可至少部分地基于存储资源301-A、301-B的属性及/或数据布局302中的逻辑分区数目确定待起始的I/O线程数目。虽然描绘三个并行I/O线程,但在其它实施方案中,可起始较多或较少I/O线程。

如所示,每个I/O线程305、306、307可从其相关联逻辑分区检索所存储数据的一部分。每个线程可随后将所检索数据部分存储到用于I/O线程的读取缓冲器310中。线程305可从逻辑分区302-A检索数据部分并将所述部分存储于读取缓冲器310-A中,线程306可从逻辑分区302-B检索数据部分并将所述数据部分存储于读取缓冲器310-B中,且线程307可从逻辑分区302-C检索数据部分并将所述数据部分存储于读取缓冲器310-C中。如上文所描述,I/O线程305、306及307中的每一个可并行地执行数据检索,其中每个I/O线程可使用单独NVMe I/O队列存取存储资源301-A、301-B。每个I/O线程可填充其相关联读取缓冲器310,直到所述缓冲器已满为止。一旦缓冲器已被填充,用于所述缓冲器的I/O线程可暂停数据检索,直到所述缓冲器已被清空(例如,通过将所述缓冲器中的数据提供到ML框架350)为止。

并行迭代器组件可另外起始主迭代器线程315,其可从每个读取缓冲器310检索数据并将来自所述缓冲器的数据提供到ML框架350。如上文所描述,在各种实施方案中,主迭代器线程315可使用循环调度方案提供来自读取缓冲器310-A、310-B及310-C中的每一个的数据。在此类情况下,主迭代器线程315可从读取缓冲器310-A检索数据并将数据提供到ML框架350,直到缓冲器已被清空为止。一旦读取缓冲器310-A已被清空,主迭代器线程315可接着行进到读取缓冲器301-B,且I/O线程305可重新开始从逻辑分区302-A检索数据以将数据存储于读取缓冲器310-A中。

如图3B中所示,主迭代器线程315行进到读取缓冲器310-B以从所述缓冲器检索数据并将数据提供到ML框架350。类似于上文所描述的步骤,一旦读取缓冲器310-B中的全部数据已被提供到ML框架350(例如,读取缓冲器310-B已被清空),主迭代器线程315行进到读取缓冲器310-C,且I/O线程306重新开始从逻辑分区302-B检索数据。

如图3C中所示,主迭代器线程315行进到读取缓冲器310-C以从所述缓冲器检索数据并将数据提供到ML框架350。类似于上文所描述的步骤,一旦读取缓冲器310-C中的全部数据已被提供到ML框架350(例如,读取缓冲器310-C已被清空),主迭代器线程315返回到读取缓冲器310-A,且I/O线程307重新开始从逻辑分区302-C检索数据。在并行地执行额外线程(且存在其它读取缓冲器310)的其它实施方案中,主迭代器线程315将行进到下一可用读取缓冲器。

如上文关于图2所提及,在一些实施方案中,主迭代器线程315可以循环方式从每个缓冲器逐个地检索来自读取缓冲器310的数据。换句话说,主迭代器线程315可从读取缓冲器310-A检索一个数据项(例如,一个数据库记录),将所述记录传回到ML框架350,接着从读取缓冲器310-B检索一个数据项(例如,一个数据库记录),将所述记录传回到ML框架350,接着从读取缓冲器310-C检索一个数据项(例如,一个数据库记录),接着将所述记录传回到ML框架350。主迭代器线程315可接着返回到读取缓冲器310-A(例如,第一I/O缓冲器)并检索另一数据项,接着返回到读取缓冲器310-B(例如,第二I/O缓冲器)以检索另一数据项等等。在一些实施方案中,在主迭代器线程315检索数据并将数据传回到ML框架350时,I/O线程可将额外数据添加到读取缓冲器310。替代地,I/O线程可等待,直到读取缓冲器310中的每一个已被清空为止,之后再从相关联分区检索额外数据。

在已检索逻辑分区的全部数据时,I/O线程可检测指示无额外数据已存储于所述分区中的I/O状态(例如,“文件结束”状态等)。在此类实例中,I/O线程可接着确定是否存在待处理的任何额外逻辑分区。如果是,则I/O线程可从未处理逻辑分区检索数据。如图3D中所示,响应于检测到逻辑分区302-A的文件结束(或其它类似状态指示符),I/O线程305可确定是否存在尚未处理的额外分区。如所示,I/O线程305可确定逻辑分区302-D尚未处理,且将行进到将来自所述分区的数据检索到读取缓冲器310-A中。类似地,I/O线程306可从逻辑分区302-E检索数据以存储于读取缓冲器310-B中。由于未剩余待处理的额外逻辑分区,因此I/O线程307可存储指示其处理完成的状态指示符,接着自终止。在各种实施方案中,状态指示符可与分区(例如,分区302-C)相关联。替代地,由于单个线程可处理多个分区,因此状态指示符可由线程(例如,I/O线程307)管理。主迭代器线程可如上文所描述般继续以提供来自那些剩余逻辑分区的数据,直到来自那些分区的全部数据已被提供到ML框架350为止。

一旦I/O线程中的每一个已完成处理所有可用逻辑分区,主迭代器线程可终止处理并向ML框架350提供指示已提供全部数据的通知。例如,主迭代器线程315可检查I/O线程中的每一个的状态指示符。如果I/O线程中的每一个的状态指示符指示处理已完成(例如,每个线程已达到可适用逻辑分区的“文件结束”),则主迭代器线程可终止。

图4为根据本公开的一些实施例的用以逻辑地分割待存储于存储器装置中的训练数据的实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1的并行迭代器组件113执行。尽管以特定序列或次序示出,但除非另外指定,否则可修改所述过程的次序。因此,所说明实施例应仅作为实例理解,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实施例中,可省略一或多个过程。因此,在每一实施例中,并非需要全部过程。其它过程流程是可能的。

如图4中所示,在操作410处,处理逻辑接收待存储于存储器子系统的存储器装置上的用于机器学习(ML)框架的训练数据,其中存储器装置可配置有多个并行输入/输出(I/O)队列。在各种实施方案中,存储器装置可为配置有多个I/O队列的非易失性存储器高速(NVMe)装置。如上文所提及,在一些实施方案中,训练数据可为用于训练ML框架的极大数据集。例如,数据可为可用于训练ML框架的训练图像集,一旦训练过程已完成,所述ML框架用以识别并分类由ML框架接收的新图像。在其它实施方案中,出于其它类型的分类目的,可接收其它类型的数据。

在操作420处,处理逻辑基于与存储器装置相关联的一或多个属性确定用于训练数据的逻辑分区大小。在一些实施方案中,与存储器装置相关联的属性可包含存储器装置的每存储器单元存储的位数、与存储器装置相关联的层数(例如,对于例如“3D交叉点”的三维存储器装置),或与存储器装置相关联的并行I/O队列数目(例如,对于配置为NVMe装置的存储器装置)中的至少一个。

在操作430处,处理逻辑至少部分地基于逻辑分区大小及训练数据的大小确定用于训练数据的逻辑分区数目。在此类实例中,一旦已确定逻辑分区大小,处理装置可确定训练数据的大小,并通过将训练数据的总大小除以逻辑分区大小来跨越逻辑分区分摊训练数据。

在操作440处,处理逻辑起始一或多个并行I/O线程,以跨越所述数目个逻辑分区存储训练数据。在一些实施方案中,可起始单个线程以跨越逻辑分区存储训练数据。替代地,可起始多个并行I/O线程以存储数据,因此每个分区被指派到专用I/O线程。在此类实例中,并行I/O线程中的每一个可使用存储器装置的单独I/O队列将数据存储到存储器装置。

在说明性实例中,处理装置可选择待存储于逻辑分区中的训练数据部分。处理装置可接着指派用于逻辑分区的唯一识别符,并将选定数据部分更新为包含唯一识别符。在一些实施方案中,唯一识别符可被指派为到所存储数据的键的前缀。指派到分区的训练数据部分的每个数据项通过其分区识别符逻辑地组织于数据存储区内。随后,当待根据其逻辑分区检索数据时,如上文关于图2及图3A至3D所描述的并行迭代器过程可将分区识别符用作键的部分来创建游标。在各种实施方案中,处理装置可使用操作430处确定的逻辑分区数目来设定前缀值的上限,并从分区总数的起始值开始按顺序对逻辑分区进行编号。替代地,可使用其它类型的识别符(例如,字母字符、文数字字符串、一系列二进制值、一系列十六进制值等)。

图5说明计算机系统500的实例机器,在所述实例机器内可执行用于使所述机器执行本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机系统500可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的自适应调节组件113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网及/或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器,或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。

机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥、数字或非数字电路,或能够执行指定待由所述机器进行的动作的指令集(顺序的或以其它方式)的任何机器。此外,虽然说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合个别地或共同地执行一(或多个)指令集以执行本文中所论述的方法中的任何一或多种。

实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器506(例如,快闪存储器、静态随机存取存储器(SRAM)等),及数据存储系统518,它们经由总线530彼此通信。

处理装置502表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置502配置成执行指令526以用于执行本文中所论述的操作及步骤。计算机系统500可进一步包含网络接口装置508以在网络520上通信。

数据存储系统518可包含机器可读存储媒体524(也称为计算机可读媒体),其上存储有一或多个指令集526或体现本文中所描述的任何一或多种方法或功能的软件。指令526还可在其由计算机系统500执行期间完全或至少部分地驻存在主存储器504内及/或处理装置502内,主存储器504及处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518及/或主存储器504可对应于图1的存储器子系统110。

在一个实施例中,指令526包含用以实施对应于并行迭代器组件(例如,图1的并行迭代器组件113)的功能性的指令。虽然在实例实施例中将机器可读存储媒体524示出为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集,且使机器执行本公开的方法中的任何一或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体及磁性媒体。

已关于计算机存储器内的数据位的操作的算法及符号表示而呈现先前详细描述的一些部分。这些算法描述及表示为数据处理领域的技术人员用以将其工作的主旨最有效地传达给本领域的其它技术人员的方式。算法在此处且大体上被认为是产生所要结果的操作的自洽序列。操作为需要对物理量进行物理操纵的操作。这些量通常但未必呈能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。有时,主要出于通用的原因,已证明将这些信号称为位、值、元素、符号、字符、项、数目等是方便的。

然而,应牢记,所有这些及类似术语应与适当物理量相关联,且仅为应用于这些量的方便标签。本公开可指操纵及变换计算机系统的寄存器及存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作及过程。

本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的磁盘(包含软盘、光盘、CD-ROM及磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。

本文中呈现的算法及显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述般呈现多种这些系统的结构。另外,并不参考任何特定编程语言来描述本公开。应了解,可使用多种编程语言来实施如本文中所描述的本公开的教示。

本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。

在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。应显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神及范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。

相关技术
  • 用于机器学习框架的并行迭代器
  • 一种适用于分布式机器学习的自动化任务并行的方法及其系统
技术分类

06120112966350