CN110135589A - 用于机器学习的系统和方法 - Google Patents
用于机器学习的系统和方法 Download PDFInfo
- Publication number
- CN110135589A CN110135589A CN201910054704.XA CN201910054704A CN110135589A CN 110135589 A CN110135589 A CN 110135589A CN 201910054704 A CN201910054704 A CN 201910054704A CN 110135589 A CN110135589 A CN 110135589A
- Authority
- CN
- China
- Prior art keywords
- value
- key
- key value
- memory
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000010801 machine learning Methods 0.000 title claims abstract description 22
- 230000015654 memory Effects 0.000 claims abstract description 90
- 238000012545 processing Methods 0.000 claims abstract description 62
- 238000003860 storage Methods 0.000 claims abstract description 46
- 230000004044 response Effects 0.000 claims abstract description 19
- 238000004891 communication Methods 0.000 claims description 9
- 230000002093 peripheral effect Effects 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 6
- 238000012549 training Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Medical Informatics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Advance Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
- Numerical Control (AREA)
- Feedback Control In General (AREA)
Abstract
本发明提供一种用于机器学习的系统和方法。系统包含具有图形处理单元存储器的图形处理单元,以及连接到图形处理单元存储器的密钥值存储器件。方法包含:利用图形处理单元将密钥值请求写入到图形处理单元存储器的输入‑输出区域中的密钥值请求队列,密钥值请求包含密钥。方法还包含利用密钥值存储器件从密钥值请求队列中读取密钥值请求,以及响应于密钥值请求而利用密钥值存储器件将值写入到图形处理单元存储器的输入‑输出区域,所述值与密钥值请求的密钥相对应。
Description
相关申请案的交叉参考
本申请案要求2018年2月2日提交的名为“利用密钥值SSD进行GPU机器学习训练的数据路径优化(DATA PATH OPTIMIZATION FOR GPU MACHINE LEARNING TRAINING WITHKEY VALUE SSD)”的美国临时申请案第62/625,532号的优先权和权益,所述临时申请案的全部内容以引用的方式并入本文中。
技术领域
根据本公开的实施例的一或多个方面涉及机器学习,且更具体地说,涉及一种用于避免机器学习系统中的串行化密钥值存取的系统和方法。
背景技术
在一些具有块接口的现有技术固态驱动器(solid state drive;SSD)中,对存储在SSD中的数据进行密钥值存取需要涉及中央处理单元(central processing unit;CPU)以在对整个训练数据的子集进行随机采样的随机机器学习训练期间提供密钥值接口。主机CPU执行文件索引查找和文件系统存取,以识别导致串行化密钥值存取的数据的位置。这类串行化密钥值存取可能限制性能。
因此,需要一种改进的系统和方法,所述系统和方法用于执行涉及对数据的密钥值存取的机器学习。
发明内容
根据本发明的一实施例,提供一种用于机器学习的方法,所述方法包含:利用第一图形处理单元将第一密钥值请求写入到第一存储器的第一输入-输出区域中的密钥值请求队列,所述第一存储器连接到第一图形处理单元,所述第一密钥值请求包含密钥;利用连接到第一存储器的第一密钥值存储器件从密钥值请求队列中读取第一密钥值请求;以及响应于第一密钥值请求而利用第一密钥值存储器件将第一值写入到第一存储器的第一输入-输出区域,所述第一值与第一密钥值请求的密钥相对应。
在一个实施例中,方法包含:利用第一密钥值存储器件来在第一密钥值存储器件中执行密钥查找以检索第一值。
在一个实施例中,第一密钥值请求包含返回值区域,所述返回值区域是分配给第一值的区域。
在一个实施例中,将第一值写入到第一存储器的第一输入-输出区域包含将第一值写入到返回值区域。
在一个实施例中,将第一值写入到第一存储器的第一输入-输出区域包含将第一值写入到第一存储器的第一输入-输出区域中的返回值队列。
在一个实施例中,方法包含:利用连接到第一密钥值存储器件且连接到第一图形处理单元的主机来配置:第一密钥值存储器件存取第一存储器的第一输入-输出区域以接收密钥值请求,并响应于密钥值请求而写入值;以及第一图形处理单元将密钥值请求存储在第一存储器的第一输入-输出区域中,并从第一存储器的第一输入-输出区域中读取值。
在一个实施例中,方法包含:利用连接到主机的第二图形处理单元将第二密钥值请求写入到第二存储器的输入-输出区域中的密钥值请求队列,所述第二存储器连接到第二图形处理单元,所述第二密钥值请求包含密钥;利用连接到主机且连接到第二存储器的第二密钥值存储器件从密钥值请求队列中读取第二密钥值请求;以及响应于第二密钥值请求而利用第二密钥值存储器件将第二值写入到第二存储器的输入-输出区域,所述第二值与第二密钥值请求的密钥相对应。
在一个实施例中,方法包含:利用第一密钥值存储器件来在第一密钥值存储器件中执行密钥查找以检索第一值;以及在利用第一密钥值存储器件来执行密钥查找的同时,利用第二密钥值存储器件来在第二密钥值存储器件中执行密钥查找以检索第二值。
在一个实施例中,利用第一密钥值存储器件来读取第一密钥值请求包含经由对等直接存储器存取来读取第一密钥值请求。
在一个实施例中,利用第一密钥值存储器件来写入第一值包含经由对等直接存储器存取来写入第一值。
在一个实施例中,第一密钥值存储器件利用外围组件互连连接来连接到第一图形处理单元。
在一个实施例中,方法包含:在利用第一图形处理单元来写入第一密钥值请求之后,且在利用第一密钥值存储器件来写入第一值之前,利用第一图形处理单元将第二密钥值请求写入到密钥值请求队列。
在一个实施例中,方法包含:利用第一图形处理单元,将第二密钥值请求写入到第一存储器的第二输入-输出区域中的密钥值请求队列,所述第二密钥值请求包含密钥;利用连接到第一存储器的第二密钥值存储器件从第一存储器的第二输入-输出区域的密钥值请求队列中读取第二密钥值请求;以及响应于第二密钥值请求而利用第二密钥值存储器件将第二值写入到第一存储器的第二输入-输出区域,所述第二值与第二密钥值请求的密钥相对应。
在一个实施例中,方法包含:利用第一密钥值存储器件来在第一密钥值存储器件中执行密钥查找以检索第一值;以及在利用第一密钥值存储器件来执行密钥查找的同时,利用第二密钥值存储器件来在第二密钥值存储器件中执行密钥查找以检索第二值。
根据本发明的一实施例,提供一种用于机器学习的系统,所述系统包含:图形处理单元;存储器,连接到图形处理单元;以及密钥值存储器件;所述密钥值存储器件利用外围组件互连连接而连接到图形处理单元;所述图形处理单元配置成在存储器的输入-输出区域中执行存储器映射输入和输出操作,且配置成将一或多个密钥值请求写入到输入-输出区域内的密钥值请求队列;所述密钥值存储器件配置成:在输入-输出区域中执行存储器映射输入和输出操作;从密钥值请求队列中读取一或多个密钥值请求;以及响应于一或多个密钥值请求的密钥值请求而将值写入存储器的输入-输出区域中,所述值与密钥值请求的密钥相对应。
在一个实施例中,密钥值请求包含返回值区域,所述返回值区域是分配给所述值的区域。
在一个实施例中,将所述值写入到存储器的输入-输出区域包含将值写入到返回值区域。
在一个实施例中,将所述值写入到存储器的输入-输出区域包含将值写入到存储器的输入-输出区域中的返回值队列。
根据本发明的一实施例,提供一种用于机器学习的系统,所述系统包含:图形处理单元;密钥值存储器件;以及共享存储器构件,用于在图形处理单元与密钥值存储器件之间通信;所述图形处理单元配置成经由用于通信的共享存储器构件将一或多个密钥值请求发送到密钥值存储器件,所述密钥值存储器件配置成:接收一或多个密钥值请求;以及响应于一或多个密钥值请求的密钥值请求而经由用于通信的共享存储器构件将值发送到图形处理单元,所述值与密钥值请求的密钥相对应。
在一个实施例中,用于通信的共享存储器构件包含存储器,所述存储器连接到图形处理单元,且配置成经由对等直接存储器存取通过外围组件互连连接来由密钥值存储器件存取。
附图说明
将参考本说明书、权利要求书以及附图来了解并理解本公开的这些和其它特征以及优点,其中:
图1是用于机器学习的系统的功能框图。
图2是根据本公开的一实施例的配备有板载SSD的图形卡的框图。
图3是根据本公开的一实施例的数据流程图。
图4是根据本公开的一实施例的时序图。
图5是根据本公开的一实施例的时序图。
附图标号说明
105:主机应用程序;
110:软件密钥值存储;
115:文件系统;
120:块接口;
125:图形处理单元存储器;
205:板载密钥值固态驱动器;
210:图形处理单元;
305:图形处理单元应用程序;
310:密钥值请求队列。
具体实施方式
下文结合附图所阐述的详细描述意图作为对系统和方法的示例性实施例的描述,且并不意图表示本公开可建构或利用的仅有形式,所述系统和方法用于执行涉及对根据本公开所提供的数据进行密钥值存取的机器学习。所述描述结合所示出的实施例来阐述本公开的特征。然而,将理解,可利用不同实施例来实现相同或等效的功能以及结构,所述不同实施例也意图涵盖在本公开的范围内。如本文中其它地方所指示的,相同元件编号意图指示相同元件或特征。
当用于对整个训练数据的子集进行随机采样的随机机器学习训练方法中时,现有技术机器学习平台存在缺点。因为需要涉及CPU以提供密钥值接口以及穿越外围组件互连快速(peripheral component interconnect express;PCIe)总线的数据传输,所以这类机器学习平台可能由于在随机机器学习训练期间进行密钥值存取而遭受低图形处理单元(graphics processing unit;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进行的数据存取的延迟)的现有技术系统不同,具有板载密钥值SSD 205的图形卡可通过利用板载密钥值SSD205与GPU210之间的对等(peer to peer;P2P)直接存储器存取(direct memory access;DMA)且给予GPU 210完全的P2P DMA控制来减少额外负荷。在一些实施例中,板载密钥值SSD205提供密钥值命令作为非标准命令。举例来说,密钥值请求队列(在下文进一步详细论述)可实施为非易失性存储器快速(nonvolatile memory express;NVMe)命令队列,其中NVMe命令是在SSD 205的固件中以及在GPU上的驱动器软件中定义成与密钥值命令(即,用以从SSD 205请求与作为命令的部分而得到的密钥相对应的值的命令)相对应的供应商专有命令。
在一些实施例中,这类系统可用以在板载密钥值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通过对密钥值SSD205执行存储器映射输入-输出并供应所暴露GPU存储器的总线地址来向密钥值SSD 205发出获取请求。在密钥值SSD 205内的固件执行密钥查找以检索与密钥相对应的值之后,所述固件将值写入到映射GPU器件存储器(即写入到GPU存储器的输入-输出区域),而无需主机应用程序105的中转。
在一些实施例中,使用密钥值请求队列(key value request queue;KVRQ)310,且在GPU不必在产生第二后续请求之前等待第一请求的响应的意义上来讲,密钥值存取是无阻挡的。替代地,GPU将密钥值请求放置到密钥值请求队列310中,且所述请求转而由密钥值SSD 205来处理。如此,当GPU应用程序将请求安置到密钥值请求队列310中时,请求操作完成。密钥值请求队列310保存未完成请求,以使得密钥值请求队列310内的条目数量就是密钥值请求的数量。当所述值传输到GPU存储器时,SSD 205内的固件释放与指定密钥相对应的密钥值请求队列条目。
每一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核心的数量的需求。避免这类需求可以得到更好的能量效率。
一些实施例可以使用一个或多个处理电路来建构。术语“处理电路”在本文中用以意指用于处理数据或数字信号的硬件、固件以及软件的任何组合。处理电路硬件可包含(例如)专用集成电路(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。
将理解,虽然可在本文中使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或区段,但这些元件、组件、区域、层和/或区段不应受这些术语限制。这些术语仅用以区分一个元件、组件、区域、层或区段与另一元件、组件、区域、层或区段。因此,本文中所论述的第一元件、组件、区域、层或区段可称为第二元件、组件、区域、层或区段,而并不脱离本发明概念的精神和范围。
本文中所使用的术语仅出于描述特定实施例的目的,且并不意图限制本发明概念。如本文中所使用,术语“基本上”、“约”以及类似术语用作近似术语而不用作程度术语,且意图考虑到本领域普通技术人员将认识到的所测量或所计算的值的固有偏差。如本文中所使用,术语“主要组分”是指以大于任何其它单一组分于组合物或产品中的量而存在于组合物、聚合物或产品中的组分。相比之下,术语“首要组分”是指构成组合物、聚合物或产品的至少50%重量或大于50%重量的组分。如本文中所使用,在应用于多个物件时,术语“主要部分”意指所述物件的至少一半。
如本文中所使用,除非上下文另有明确指示,否则单数形式“一(a/an)”意图也包含复数形式。将进一步理解,当用于本说明书中时,术语“包括(comprises)”和/或“包括(comprising)”指定存在所陈述的特征、整数、步骤、操作、元件和/或组件,但不排除存在或添加一或多个其它特征、整数、步骤、操作、元件、组件和/或其群组。如本文中所使用,术语“和/或”包含相关联的所列项目中的一或多个的任何以及所有组合。当在元件的列表之前时,例如“中的至少一个”的表述修饰元件的整个列表且不修饰列表中的单个元件。此外,当描述本发明概念的实施例时,使用“可”是指“本公开的一或多个实施例”。此外,术语“示例性”意指实例或说明。如本文中所使用,术语“使用(use)”、“正使用(using)”、“被使用(used)”可分别视为与术语“利用(utilize)”、“正利用(utilizing)”、“被利用(utilized)”同义。
将了解,当元件或层称作在另一元件或层“上”,“连接到”、“耦合到”或“邻近于”所述另一元件或层时,其可直接在另一元件或层上,直接连接到、耦合到或邻近于所述另一元件或层,或可存在一或多个介入元件或层。相比之下,当元件或层称作“直接”在另一元件或层“上方”,“直接连接到”、“直接耦合到”或“紧邻”所述另一元件或层时,不存在介入元件或层。
虽然已在本文中具体描述并示出了用于执行涉及对数据进行密钥值存取的机器学习的系统和方法的示例性实施例,但许多修改和变型将对本领域的技术人员显而易见。相应地,应理解,根据本公开的原理所建构的用于执行涉及对数据进行密钥值存取的机器学习的系统和方法可以不按本文中所具体描述的来实施。本发明也定义在以下权利要求书和其等效物中。
Claims (20)
1.一种用于机器学习的方法,所述方法包括:
利用第一图形处理单元将第一密钥值请求写入到第一存储器的第一输入-输出区域中的密钥值请求队列,所述第一存储器连接到所述第一图形处理单元,所述第一密钥值请求包含密钥;
利用连接到所述第一存储器的第一密钥值存储器件从所述密钥值请求队列中读取所述第一密钥值请求,以及
响应于所述第一密钥值请求而利用所述第一密钥值存储器件将第一值写入到所述第一存储器的所述第一输入-输出区域,所述第一值与所述第一密钥值请求的所述密钥相对应。
2.根据权利要求1所述的方法,还包括:利用所述第一密钥值存储器件在所述第一密钥值存储器件中执行密钥查找以检索所述第一值。
3.根据权利要求1所述的方法,其中所述第一密钥值请求包含返回值区域,所述返回值区域是分配给所述第一值的区域。
4.根据权利要求3所述的方法,其中将所述第一值写入到所述第一存储器的所述第一输入-输出区域包括将所述第一值写入到所述返回值区域。
5.根据权利要求1所述的方法,其中将所述第一值写入到所述第一存储器的所述第一输入-输出区域包括将所述第一值写入到所述第一存储器的所述第一输入-输出区域中的返回值队列。
6.根据权利要求1所述的方法,还包括利用连接到所述第一密钥值存储器件且连接到所述第一图形处理单元的主机来配置:
所述第一密钥值存储器件存取所述第一存储器的所述第一输入-输出区域以接收密钥值请求,以及响应于所述密钥值请求而写入值;以及
所述第一图形处理单元将密钥值请求存储在所述第一存储器的所述第一输入-输出区域中,以及从所述第一存储器的所述第一输入-输出区域中读取值。
7.根据权利要求6所述的方法,还包括利用连接到所述主机的第二图形处理单元将第二密钥值请求写入到第二存储器的输入-输出区域中的密钥值请求队列,所述第二存储器连接到所述第二图形处理单元,所述第二密钥值请求包含密钥;
利用连接到所述主机且连接到所述第二存储器的第二密钥值存储器件从所述第二存储器的所述输入-输出区域的所述密钥值请求队列中读取所述第二密钥值请求,以及
响应于所述第二密钥值请求而利用所述第二密钥值存储器件将第二值写入到所述第二存储器的所述输入-输出区域,所述第二值与所述第二密钥值请求的所述密钥相对应。
8.根据权利要求7所述的方法,还包括:
利用所述第一密钥值存储器件来在所述第一密钥值存储器件中执行密钥查找以检索所述第一值,以及
在利用所述第一密钥值存储器件来执行所述密钥查找的同时,利用所述第二密钥值存储器件来在所述第二密钥值存储器件中执行密钥查找以检索所述第二值。
9.根据权利要求1所述的方法,其中利用所述第一密钥值存储器件来读取所述第一密钥值请求包括经由对等直接存储器存取来读取所述第一密钥值请求。
10.根据权利要求1所述的方法,其中利用所述第一密钥值存储器件来写入所述第一值包括经由对等直接存储器存取来写入所述第一值。
11.根据权利要求10所述的方法,其中所述第一密钥值存储器件利用外围组件互连连接来连接到所述第一图形处理单元。
12.根据权利要求1所述的方法,还包括:在利用所述第一图形处理单元来写入所述第一密钥值请求之后,以及在利用所述第一密钥值存储器件来写入所述第一值之前,利用所述第一图形处理单元将第二密钥值请求写入到所述密钥值请求队列。
13.根据权利要求1所述的方法,还包括:
利用所述第一图形处理单元将第二密钥值请求写入到所述第一存储器的第二输入-输出区域中的密钥值请求队列,所述第二密钥值请求包含密钥;
利用连接到所述第一存储器的第二密钥值存储器件从所述第一存储器的所述第二输入-输出区域的所述密钥值请求队列中读取所述第二密钥值请求,以及
响应于所述第二密钥值请求而利用所述第二密钥值存储器件将第二值写入到所述第一存储器的所述第二输入-输出区域,所述第二值与所述第二密钥值请求的所述密钥相对应。
14.根据权利要求13所述的方法,还包括:
利用所述第一密钥值存储器件来在所述第一密钥值存储器件中执行密钥查找以检索所述第一值,以及
在利用所述第一密钥值存储器件来执行所述密钥查找的同时,利用所述第二密钥值存储器件来在所述第二密钥值存储器件中执行密钥查找以检索所述第二值。
15.一种用于机器学习的系统,所述系统包括:
图形处理单元;
存储器,连接到所述图形处理单元;以及
密钥值存储器件;
所述密钥值存储器件利用外围组件互连连接来连接到所述图形处理单元;
所述图形处理单元配置成在所述存储器的输入-输出区域中执行存储器映射输入和输出操作,以及配置成将一或多个密钥值请求写入到所述输入-输出区域内的密钥值请求队列;
所述密钥值存储器件配置成:
在所述输入-输出区域中执行存储器映射输入和输出操作;
从所述密钥值请求队列中读取所述一或多个密钥值请求;以及
响应于所述一或多个密钥值请求中的密钥值请求而将值写入所述存储器的所述输入-输出区域中,所述值与所述密钥值请求的密钥相对应。
16.根据权利要求15所述的系统,其中所述密钥值请求包含返回值区域,所述返回值区域是分配给所述值的区域。
17.根据权利要求16所述的系统,其中将所述值写入到所述存储器的所述输入-输出区域包括将所述值写入到所述返回值区域。
18.根据权利要求15所述的系统,其中将所述值写入到所述存储器的所述输入-输出区域包括将所述值写入到所述存储器的所述输入-输出区域中的返回值队列。
19.一种用于机器学习的系统,所述系统包括:
图形处理单元;
密钥值存储器件;以及
共享存储器构件,用于在所述图形处理单元与所述密钥值存储器件之间通信;
所述图形处理单元配置成经由用于通信的所述共享存储器构件将一或多个密钥值请求发送到所述密钥值存储器件,
所述密钥值存储器件配置成:
接收所述一或多个密钥值请求;以及
响应于所述一或多个密钥值请求中的密钥值请求而经由用于通信的所述共享存储器构件将值发送到所述图形处理单元,所述值与所述密钥值请求的密钥相对应。
20.根据权利要求19所述的系统,其中用于通信的所述共享存储器构件包括存储器,所述存储器连接到所述图形处理单元,且配置成经由对等直接存储器存取通过外围组件互连连接来由所述密钥值存储器件存取。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862625532P | 2018-02-02 | 2018-02-02 | |
US62/625,532 | 2018-02-02 | ||
US15/942,218 US11182694B2 (en) | 2018-02-02 | 2018-03-30 | Data path for GPU machine learning training with key value SSD |
US15/942,218 | 2018-03-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110135589A true CN110135589A (zh) | 2019-08-16 |
Family
ID=67475620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910054704.XA Pending CN110135589A (zh) | 2018-02-02 | 2019-01-21 | 用于机器学习的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11182694B2 (zh) |
JP (1) | JP2019133662A (zh) |
KR (1) | KR102442682B1 (zh) |
CN (1) | CN110135589A (zh) |
TW (1) | TWI778160B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210093531A (ko) * | 2020-01-20 | 2021-07-28 | 에스케이하이닉스 주식회사 | 응용 프로세서와 데이터를 제공하는 데이터 저장 장치를 포함하는 시스템 |
US11972361B2 (en) | 2020-01-29 | 2024-04-30 | Samsung Electronics Co., Ltd. | Performance optimization of object grouping schema in a network key-value storage device using adaptive regression |
US11243694B2 (en) * | 2020-01-29 | 2022-02-08 | Samsung Electronics Co., Ltd. | Grouping key value object IOs to improve IO performance for key-value storage devices |
US12019548B2 (en) | 2022-04-18 | 2024-06-25 | Samsung Electronics Co., Ltd. | Systems and methods for a cross-layer key-value store architecture with a computational storage device |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130212088A1 (en) * | 2012-02-09 | 2013-08-15 | Samsung Electronics Co., Ltd. | Mobile device having a memo function and method for executing a memo function |
US20130275656A1 (en) * | 2012-04-17 | 2013-10-17 | Fusion-Io, Inc. | Apparatus, system, and method for key-value pool identifier encoding |
US20150324118A1 (en) * | 2014-05-07 | 2015-11-12 | HGST Netherlands B.V. | SYSTEM AND METHOD FOR PEER-TO-PEER PCIe STORAGE TRANSFERS |
CN105580027A (zh) * | 2013-09-30 | 2016-05-11 | 高通股份有限公司 | 用于使用不同域特定密钥确保内容安全的方法 |
JP2017076398A (ja) * | 2015-10-14 | 2017-04-20 | 三星電子株式会社Samsung Electronics Co.,Ltd. | インタフェイス制御メカニズムを有する電子システム及びその動作方法 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009148A (en) * | 1998-06-16 | 1999-12-28 | Reeves; Michael | Phone-activated emergency visual signaling system with low power consumption signal light |
US8171177B2 (en) * | 2007-06-28 | 2012-05-01 | Apple Inc. | Enhancements to data-driven media management within an electronic device |
WO2011091399A2 (en) | 2010-01-25 | 2011-07-28 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Systems and methods for providing a neural-machine interface for artificial legs |
US9058675B2 (en) * | 2010-05-29 | 2015-06-16 | Intel Corporation | Non-volatile storage for graphics hardware |
EP2661094A1 (en) * | 2010-12-28 | 2013-11-06 | Volvo Construction Equipment AB | Display integrated control systems and display integrated input device |
JP5524144B2 (ja) * | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
US8849757B2 (en) | 2012-03-29 | 2014-09-30 | Empire Technology Development Llc | Determining user key-value storage needs from example queries |
US9519647B2 (en) * | 2012-04-17 | 2016-12-13 | Sandisk Technologies Llc | Data expiry in a non-volatile device |
US8996781B2 (en) | 2012-11-06 | 2015-03-31 | OCZ Storage Solutions Inc. | Integrated storage/processing devices, systems and methods for performing big data analytics |
CN103902632B (zh) | 2012-12-31 | 2018-01-02 | 华为技术有限公司 | 键值存储系统中构建文件系统的方法、装置及电子设备 |
EP3123356A4 (en) | 2014-03-26 | 2017-09-06 | Microsoft Technology Licensing, LLC | Client intent in integrated search environment |
EP3155758A4 (en) | 2014-06-10 | 2018-04-11 | Sightline Innovation Inc. | System and method for network based application development and implementation |
US10127270B1 (en) * | 2014-06-23 | 2018-11-13 | Amazon Technologies, Inc. | Transaction processing using a key-value store |
US9438426B2 (en) | 2014-10-03 | 2016-09-06 | Seagate Technology Llc | Key-value data storage device with hybrid architecture |
KR102398213B1 (ko) * | 2015-03-09 | 2022-05-17 | 삼성전자주식회사 | 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법 |
US20160283156A1 (en) | 2015-03-23 | 2016-09-29 | Kabushiki Kaisha Toshiba | Key-value drive hardware |
US10452995B2 (en) * | 2015-06-29 | 2019-10-22 | Microsoft Technology Licensing, Llc | Machine learning classification on hardware accelerators with stacked memory |
US20160379686A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Server systems with hardware accelerators including stacked memory |
US10204046B1 (en) * | 2015-11-19 | 2019-02-12 | Netronome Systems, Inc. | High-speed and memory-efficient flow cache for network flow processors |
US10216419B2 (en) * | 2015-11-19 | 2019-02-26 | HGST Netherlands B.V. | Direct interface between graphics processing unit and data storage unit |
US10319374B2 (en) | 2015-11-25 | 2019-06-11 | Baidu USA, LLC | Deployed end-to-end speech recognition |
US20170169358A1 (en) * | 2015-12-09 | 2017-06-15 | Samsung Electronics Co., Ltd. | In-storage computing apparatus and method for decentralized machine learning |
KR101936950B1 (ko) * | 2016-02-15 | 2019-01-11 | 주식회사 맴레이 | 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램 |
US11301422B2 (en) * | 2016-02-23 | 2022-04-12 | Samsung Electronics Co., Ltd. | System and methods for providing fast cacheable access to a key-value device through a filesystem interface |
US10466907B2 (en) * | 2016-03-22 | 2019-11-05 | Toshiba Memory Corporation | Method to efficiently store object data of an object storage service on a magnetic disk drive and magnetic SMR disk drive |
US9965382B2 (en) | 2016-04-04 | 2018-05-08 | Omni Ai, Inc. | Data composite for efficient memory transfer in a behavioral recognition system |
US10387302B2 (en) * | 2016-04-18 | 2019-08-20 | Samsung Electronics Co., Ltd. | Managing database index by leveraging key-value solid state device |
US10515566B2 (en) * | 2016-05-29 | 2019-12-24 | Jang Suk Moon | Electronic system and method for martial arts movement-based language character symbolization and education |
US10261913B2 (en) * | 2017-04-20 | 2019-04-16 | Alibaba Group Holding Limited | Persistent memory for key-value storage |
US10649969B2 (en) * | 2017-06-13 | 2020-05-12 | Western Digital Technologies, Inc. | Memory efficient persistent key-value store for non-volatile memories |
US11468312B2 (en) * | 2018-02-02 | 2022-10-11 | Samsung Electronics Co., Ltd. | Memory management for machine learning training on GPU |
-
2018
- 2018-03-30 US US15/942,218 patent/US11182694B2/en active Active
- 2018-10-10 KR KR1020180120769A patent/KR102442682B1/ko active IP Right Grant
- 2018-10-29 TW TW107138106A patent/TWI778160B/zh active
-
2019
- 2019-01-21 CN CN201910054704.XA patent/CN110135589A/zh active Pending
- 2019-01-30 JP JP2019013888A patent/JP2019133662A/ja active Pending
-
2021
- 2021-11-22 US US17/533,059 patent/US11907814B2/en active Active
-
2024
- 2024-02-09 US US18/437,769 patent/US20240185132A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130212088A1 (en) * | 2012-02-09 | 2013-08-15 | Samsung Electronics Co., Ltd. | Mobile device having a memo function and method for executing a memo function |
US20130275656A1 (en) * | 2012-04-17 | 2013-10-17 | Fusion-Io, Inc. | Apparatus, system, and method for key-value pool identifier encoding |
CN105580027A (zh) * | 2013-09-30 | 2016-05-11 | 高通股份有限公司 | 用于使用不同域特定密钥确保内容安全的方法 |
US20150324118A1 (en) * | 2014-05-07 | 2015-11-12 | HGST Netherlands B.V. | SYSTEM AND METHOD FOR PEER-TO-PEER PCIe STORAGE TRANSFERS |
JP2017076398A (ja) * | 2015-10-14 | 2017-04-20 | 三星電子株式会社Samsung Electronics Co.,Ltd. | インタフェイス制御メカニズムを有する電子システム及びその動作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20220164708A1 (en) | 2022-05-26 |
US20190244140A1 (en) | 2019-08-08 |
US11182694B2 (en) | 2021-11-23 |
KR102442682B1 (ko) | 2022-09-13 |
TWI778160B (zh) | 2022-09-21 |
US20240185132A1 (en) | 2024-06-06 |
US11907814B2 (en) | 2024-02-20 |
TW201935224A (zh) | 2019-09-01 |
KR20190094079A (ko) | 2019-08-12 |
JP2019133662A (ja) | 2019-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110135589A (zh) | 用于机器学习的系统和方法 | |
CN107690622B (zh) | 实现硬件加速处理的方法、设备和系统 | |
CN109062833B (zh) | 计算系统操作方法、计算系统、车辆及计算机可读媒体 | |
WO2021051914A1 (zh) | 基于gpu资源的数据处理方法、电子设备及系统 | |
US10824341B2 (en) | Flash-based accelerator and computing device including the same | |
CN105993009B (zh) | 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置 | |
US20180349194A1 (en) | Accelerated data operations | |
US10852955B2 (en) | Method and system for accessing data objects stored in a storage system using object descriptors allocated by clients | |
US10025533B2 (en) | Logical block addresses used for executing host commands | |
KR102317657B1 (ko) | Nvdimm을 포함하는 장치 및 그것의 엑세스 방법 | |
US20170344398A1 (en) | Accelerator control device, accelerator control method, and program storage medium | |
CN110275840A (zh) | 在存储器接口上的分布式过程执行和文件系统 | |
Hamidouche et al. | Gpu initiated openshmem: correct and efficient intra-kernel networking for dgpus | |
US20170018050A1 (en) | Communication between integrated graphics processing units | |
CN105677491A (zh) | 一种数据传输方法及装置 | |
US10089706B1 (en) | GPU virtual device driver for offload processing in a storage array | |
US11157191B2 (en) | Intra-device notational data movement system | |
CN116010093A (zh) | 数据处理方法、装置、计算机设备和可读存储介质 | |
CN106325377B (zh) | 外部设备扩展卡及输入输出外部设备的数据处理方法 | |
US10936219B2 (en) | Controller-based inter-device notational data movement system | |
CN107025133A (zh) | 多核处理器系统及其管理方法 | |
GB2483884A (en) | Parallel processing system using dual port memories to communicate between each processor and the public memory bus | |
US20220137998A1 (en) | Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same | |
US20210056062A1 (en) | Switch-based inter-device notational data movement system | |
US11620083B2 (en) | Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |