CN110276454A - 用于机器学习的系统和控制该系统的方法以及电子系统 - Google Patents
用于机器学习的系统和控制该系统的方法以及电子系统 Download PDFInfo
- Publication number
- CN110276454A CN110276454A CN201910066820.3A CN201910066820A CN110276454A CN 110276454 A CN110276454 A CN 110276454A CN 201910066820 A CN201910066820 A CN 201910066820A CN 110276454 A CN110276454 A CN 110276454A
- Authority
- CN
- China
- Prior art keywords
- memory
- segment
- data object
- recently used
- user level
- 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 81
- 238000010801 machine learning Methods 0.000 title claims abstract description 27
- 230000015654 memory Effects 0.000 claims abstract description 171
- 230000008569 process Effects 0.000 claims abstract description 54
- 238000012545 processing Methods 0.000 claims abstract description 36
- 238000009826 distribution Methods 0.000 claims abstract description 27
- 230000004044 response Effects 0.000 claims abstract description 17
- 238000013528 artificial neural network Methods 0.000 claims description 19
- 230000004913 activation Effects 0.000 claims description 12
- 230000005012 migration Effects 0.000 claims description 11
- 238000013508 migration Methods 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 7
- 230000002093 peripheral effect Effects 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 3
- 238000012549 training Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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/0626—Reducing size or complexity of storage systems
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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 Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Human Computer Interaction (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Neurology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)
- Feedback Control In General (AREA)
Abstract
用于机器学习的系统和控制该系统的方法以及电子系统。该方法使用处理电路执行操作系统,所述处理电路连接到第一存储器和第二存储器。在一些实施例中,所述方法包括:通过用户级进程向操作系统请求第一存储器的第一存储器分配,第一存储器分配包括多个第一段,所述多个第一段中的第一段具有足以存储第一种数据对象的大小;通过用户级进程确定第一计算的结果将是第一种数据对象;响应于确定第一计算的结果将是第一种数据对象:通过用户级进程确定第一段都被使用。
Description
本申请要求于2018年3月14日提交的第62/642,994号美国临时专利申请和于2018年5月10日提交的第15/976,765号美国专利申请的优先权和权益,所述专利申请的全部内容通过引用包含于此。
技术领域
根据本发明的实施例的一个或多个方面涉及存储器系统,更具体地讲,涉及一种用于机器学习的存储器管理的系统和方法。
背景技术
以数据为中心的机器学习训练检查大量数据中的模式以学习模型。在一些系统中,计算单元和存储单元是分开的,并且大量数据通过慢速接口从固态驱动器(SSD)传送到中央处理器(CPU),这导致性能和能量低效率。具有嵌入式图形处理器(GPU)的存储中的机器学习训练可以是将数据移动得更接近代码的改进方案,从而减少一些相关领域架构的低效率。
然而,在SSD内集成GPU可引入与GPU动态随机存取存储器(DRAM)大小相关的新挑战。SSD的功率和能量约束可限制SSD内的DRAM大小,从而降低嵌入在SSD内的GPU上的机器学习训练的效率。针对可使用页粒度(page granularity)管理存储器的GPU的相关技术异构存储器管理方案可能在机器学习训练操作中表现不佳,增加存储器管理开销。
因此,需要一种有效的存储器管理方案来实现存储中的机器学习训练。此外,针对与存储中的机器学习训练类似的需要将数据移动得更接近代码的方案和/或应用,同样需要有效的存储器管理方案。
发明内容
根据本发明的实施例,提供一种用于机器学习的方法,该方法使用处理电路执行操作系统,所述处理电路连接到第一存储器和第二存储器,所述方法包括:通过在所述处理电路上运行的用户级进程向操作系统请求来自第一存储器的第一存储器分配,第一存储器分配包括多个第一段,所述多个第一段中的一个第一段具有足以存储第一种数据对象的大小;通过用户级进程确定第一计算的结果将是第一种数据对象;响应于确定第一计算的结果将是第一种数据对象:通过用户级进程确定所有的第一段都在使用中,响应于通过用户级进程确定所有的第一段都在使用中,识别所述多个第一段之中的最近最少使用的第一段,最近最少使用的第一段具有物理地址,通过用户级进程将最近最少使用的第一段的内容复制到第二存储器;执行第一计算;将第一计算的结果存储在最近最少使用的第一段中。
在一个实施例中,第一种数据对象是神经网络中的前向激活。
在一个实施例中,第一种数据对象是神经网络中的后向传播激活。
在一个实施例中,所述方法包括:通过用户级进程将第一虚拟指针实例化为虚拟指针类的实例,其中,通过用户级进程确定所有的第一段都在使用中的步骤包括:执行虚拟指针类的用于确定是否所有的第一段都在使用中的成员函数。
在一个实施例中,将第一计算的结果存储在最近最少使用的第一段中的步骤包括:将最近最少使用的第一段的物理地址分配给第一虚拟指针的成员变量。
在一个实施例中,通过用户级进程将最近最少使用的第一段的内容复制到第二存储器的步骤包括:将第二虚拟指针的成员变量的值从最近最少使用的第一段的物理地址改变为第二存储器中的物理地址。
在一个实施例中,所述方法包括:通过用户级进程向操作系统请求来自第一存储器的第二存储器分配,第二存储器分配包括多个第二段,所述多个第二段中的一个第二段具有足以存储第二种数据对象的大小;通过用户级进程确定第二计算的结果将是第二种数据对象;响应于确定第二计算的结果将是第二种数据对象:通过用户级进程确定所述多个第二段都被使用;响应于通过用户级进程确定所述多个第二段都被使用,识别所述多个第二段之中的最近最少使用的第二段,最近最少使用的第二段具有物理地址,通过用户级进程将最近最少使用的第二段的内容复制到第二存储器;执行第二计算;将第二计算的结果存储在最近最少使用的第二段中。
在一个实施例中,第二种数据对象包括神经网络中的权重。
在一个实施例中,第二种数据对象还包括神经网络中的权重梯度。
在一个实施例中,所述处理电路是图形处理器。
在一个实施例中,第一存储器是图形处理器的存储器总线上的存储器。
在一个实施例中,第二存储器通过外围组件互连快速(PCIe)连接而连接到图形处理器。
根据本发明的实施例,提供一种用于机器学习的系统,所述系统包括:处理电路;第一存储器,连接到所述处理电路;第二存储器,连接到所述处理电路;非暂时性计算机可读存储介质,存储有指令,当由所述处理电路执行所述指令时,使得所述处理电路:执行操作系统;在操作系统内启动用户级进程,其中,用户级进程被配置为:向操作系统请求来自第一存储器的第一存储器分配,第一存储器分配包括多个第一段,每个第一段具有足以存储第一种数据对象的大小;确定第一计算的结果将是第一种数据对象;响应于确定第一计算的结果将是第一种数据对象:确定所述多个第一段都被使用;响应于确定所述多个第一段都被使用,识别所述多个第一段之中的最近最少使用的第一段,最近最少使用的第一段具有物理地址,将最近最少使用的第一段的内容复制到第二存储器;执行第一计算;将第一计算的结果存储在最近最少使用的第一段中。
在一个实施例中,第一种数据对象是神经网络中的前向激活。
在一个实施例中,第一种数据对象是神经网络中的后向传播激活。
在一个实施例中,所述处理电路是图形处理器。
在一个实施例中,第一存储器是通过存储器管理单元连接到图形处理器的存储器。
在一个实施例中,第二存储器是通过外围组件互连快速(PCIe)连接而连接到图形处理器的存储器。
根据本发明的实施例,提供一种系统,包括:图形处理器;第一存储器,通过存储器管理单元连接到图形处理器;主机,通过外围组件互连快速(PCIe)连接而连接到第一存储器,主机包括:中央处理器和第二存储器,其中,图形处理器连接到存储有指令的非暂时性计算机可读存储介质,当由图形处理器执行所述指令时,使得图形处理器:执行操作系统;在操作系统内启动用户级进程,其中,用户级进程被配置为:向操作系统请求来自第一存储器的第一存储器分配,第一存储器分配包括多个第一段,每个第一段具有足以存储第一种数据对象的大小;确定第一计算的结果将是第一种数据对象;响应于确定第一计算的结果将是第一种数据对象:确定所述多个第一段都被使用;响应于确定所述多个第一段都被使用,识别所述多个第一段之中的最近最少使用的第一段,最近最少使用的第一段具有物理地址,将最近最少使用的第一段的内容复制到第二存储器;执行第一计算;将第一计算结的果存储在最近最少使用的第一段中。
在一个实施例中,第一种数据对象是神经网络中的前向激活。
附图说明
参考说明书、权利要求和附图,本发明的这些和其他特征以及优点将被理解和了解,其中:
图1是根据本发明的实施例的用于机器学习的系统的框图;
图2是根据本发明的实施例的用于对图形处理器的存储器访问的流程图;
图3是根据本发明的实施例的存储器示图;
图4是根据本发明的实施例的基于slab的存储器管理的说明;
图5是根据本发明的实施例的存储器对象迁移的说明。
具体实施方式
以下结合附图阐述的具体实施方式意在作为根据本发明提供的用于机器学习训练的基于slab的存储器管理的系统和方法的示例性实施例的描述,并且不意在表示可构造或利用本发明的唯一形式。该描述结合所示实施例阐述本发明的特征。然而,将理解,相同或等同的功能和结构可通过也意在包含在本发明的范围内的不同的实施例来实现。如在此其他地方所示,相同的元件编号意在指示相同的元件或特征。
对于一些使用图形处理器(GPU)的应用(例如,特定机器学习应用)主要性能瓶颈是有限的GPU存储器。利用与快速GPU存储器结合的较慢但较大的存储器向GPU提供大存储器空间的异构存储器管理可用于降低性能瓶颈的性能影响;然而,这样的方法可能不太适合机器学习应用。这样,在一些实施例中,用于高效机器学习训练的机器学习训练的独特特点用于提供适于机器学习应用的存储器管理系统。然而,根据本发明的示例实施例的存储器管理系统并不限于应用于机器学习应用,并且可应用于需要使用快速GPU存储器和与快速GPU存储器结合的较慢但较大的存储器二者且遭受上述性能瓶颈的任何其他应用。为了简明和清楚,以下描述主要结合用于执行机器学习操作的系统来进行,然而,如上所述,该系统可应用于除机器学习之外的其他应用。
图1示出一些实施例中的用于执行机器学习操作的系统。该系统包括主机,其中,该主机包括通过存储器管理单元(MMU)115连接到主机中央处理器(CPU)110的系统存储器105。GPU 120使用从GPU存储器125检索的数据执行计算并将运算的结果存储在GPU存储器125中。GPU 120对GPU存储器125的访问通过输入输出存储器管理单元(IOMMU)130,其中,输入输出存储器管理单元(IOMMU)130可以是如CPU 110和GPU 120一样的处理电路(在下面进一步详细讨论)。外围组件互连快速(PCIe)总线和PCIe开关135形成存储器管理单元115、系统存储器105、GPU存储器125和输入输出存储器管理单元130之间的连接。CPU 110的存储器访问使用虚拟存储器地址(VA)来执行,即,通过MMU 115将任何给定的虚拟地址转换为物理存储器地址(PA)。GPU 120的存储器访问可在支持统一的虚拟寻址时使用虚拟存储器寻址来执行,或者在不支持统一的寻址时使用装置存储器地址(DA)来执行。通过连接到GPU 120的输入输出存储器管理单元130将给定地址转换为对应的物理存储器地址。
用于访问存储器中的数据对象的互连可依赖于计算单元和数据对象的位置。系统存储器总线用于CPU 110对分配在系统存储器105上的数据对象的访问,并且GPU存储器总线用于GPU 120对分配在GPU存储器125上的数据对象的访问。对于CPU 110对GPU存储器125上的数据对象的访问以及对于GPU 120对系统存储器105上的数据对象的访问,经由PCIe总线执行数据对象迁移。
图2示出当使用主机上的系统存储器105作为低速存储器时在一些实施例中的数据对象迁移的总体流程。低速存储器不需要是主机上的系统存储器,它可以是任何类型的存储器装置(诸如,非易失性存储器快速(NVMe)固态驱动器(SSD)或可经由SSD内部互连访问的SSD装置内的内部闪存阵列)。例如,SSD装置内的GPU可通过经由SSD内部互连与闪存控制器进行通信来直接访问SSD装置的闪存阵列。如图2中所示,在执行访问(读取或写入)数据对象的GPU代码之前,系统采用以步骤205开始的方法。系统首先在步骤210检查数据对象是否在GPU存储器中。如果数据对象驻留在GPU存储器中,则系统在步骤215继续执行GPU代码。如果数据对象未驻留在GPU存储器中,则系统在步骤220为访问的数据对象保留GPU存储器中的空间。在保留GPU存储器中的空间之前,系统在步骤225检查GPU存储器中是否有足够的空间,如果没有,则在步骤230将其他数据对象迁移到主机存储器(例如,系统存储器105)。可基于最近最少使用来完成到主机存储器的迁移(或“驱逐”),即,当GPU存储器125中需要空间时,GPU存储器中的最近最少使用的数据对象可被迁移到主机存储器。在保留空间之后,系统在步骤235检查数据对象是否被分配在主机上的低速存储器(诸如,系统存储器105)上;如果是,则系统在步骤240执行数据对象从低速存储器到GPU存储器的迁移,并且在步骤215继续执行GPU代码。如果数据对象未被分配在例如系统存储器105上,则系统在步骤215继续执行GPU代码(假设访问是写入访问)。
在一些实施例中,在GPU上执行的用户级进程(例如,对深度神经网络执行机器学习训练操作的用户进程)可向在CPU 110上运行的操作系统(例如,向执行操作系统级存储器管理的内核级进程)请求GPU存储器125中的一个或多个存储器分配,并且以用户进程级执行基于slab的存储器管理(下面进一步详细讨论),而不是通过操作系统分配和解除分配各个数据对象,从而避免在通过操作系统执行存储器分配和解除分配时产生的开销,并避免或减少存储器碎片。
图3示出用户级进程如何保留由操作系统分配的用于随后分配给数据对象的存储器。代替机器学习框架中的具有仅指示GPU数据对象(即,如可以是相关领域实施方式中的情况,直接指向GPU存储器125中的位置)的指针的每个张量,每个张量保持可指示GPU存储器段(即,针对存储在GPU存储器125中的数据对象)或低速存储器段(即,存储在例如系统存储器105的低速存储器中的数据对象)的虚拟指针。如在此所使用的,存储器“段”是足够大的用于存储数据对象的连续的存储器的区域。如图3中所示,当因为预期不重新使用数据对象,所以由张量指向的GPU数据对象不需要被保持时,系统将存储数据对象的GPU存储器段标记为“空闲”,即,用户级进程改变存储器段的状态(而不是经由GPU装置驱动应用编程接口(API)取消分配数据对象),使得GPU存储器段可被其他张量回收(即,被用户级进程用于存储其他张量)。
在一些实施例中,用户级进程利用深度神经网络的如下特性来使用基于slab的存储器管理(代替如可通过一些相关技术系统来完成的使用页粒度管理数据对象):多个数据对象共享一个共同类型(和大小),在单个神经网络内仅存在有限数量的数据对象类型。图4示出在一些实施例中用户级进程如何执行基于slab的存储器管理。用户级进程保持一组列表,每个列表是相同类型的GPU数据对象的列表。在每个列表中标识空闲存储器段,以便它们可被重新用于相同类型的对象的随后分配。
例如,每个数据对象可由虚拟指针标识,虚拟指针是虚拟指针类的实例。在一个示例中,虚拟指针可通过用户级进程而被实例化为虚拟指针类的实例。虚拟指针可包括如下内容作为成员变量:(i)可作为深度神经网络的张量的数据(例如,权重、权重的梯度、前向激活或后向传播激活),(ii)指向物理存储器中(例如,GPU存储器125中或低速存储器中(例如,系统存储器105中))的位置的指针。例如,当存储在GPU存储器125的最近最少使用的段中的数据对象被迁移到低速存储器时,该数据对象的虚拟指针的成员变量的值可从最近最少使用的段的物理地址改变为低速存储器中的存储该数据对象的物理地址。例如,当存储在低速存储器中的具有特定大小的第一种数据对象被迁移到GPU存储器125中的最近最少使用的段时,该最近最少使用的段的物理地址可被分配给第一种数据对象的虚拟指针的成员变量。
可针对第一大小(可被称为第一段大小)的虚拟指针保持第一列表。在用户级进程向操作系统请求第一分配(以容纳具有等于第一大小的大小的多个第一种数据对象)之后,用户级进程创建均指向区域的第一地址的“物理指针”的列表或者足够大的用于存储第一大小的数据对象之一的物理存储器的“段”。用户级进程将每个物理指针与以下项相关联:(i)指示存储器是在使用中还是空闲的标志,并且如果段在使用中,则(ii)指向虚拟指针的指针,其中,虚拟指针指向(即,已经保留的)段,以及(iii)最近使用的时间。该列表被需要GPU存储器125中的空间的任何虚拟指针指示,以保留已经空闲的存储器段,或者驱逐最近最少使用的数据对象,然后保留由驱逐释放的段。可以以与请求例如系统存储器105的第一分配用于在从GPU存储器125驱逐时存储多个数据对象的用户级进程相同的方式执行主机上的存储器的管理。参照图4,多个大小为A kb的对象被存储在GPU存储器125中的多个第一段中,其中,A为正数。多个大小为B kb的对象被存储在GPU存储器125中的多个第二段中的部分第二段中,其中,B为不同于A正数,且第一段的段大小不同于第二段的段大小。在图4中,MRU可表示最近最多使用。
用户级进程可针对多个第二种数据对象构建类似的第二列表,每个第二种数据对象具有第二大小,并且用户级进程可针对其他种并具有其他大小的数据对象构建其他类似列表。例如,在深度神经网络中,权重、权重的梯度都可具有相同的大小(例如,第一大小)。前向激活和后向传播激活也都可具有相同的大小(例如,第二大小)。
虚拟指针可具有用于执行图2的操作(例如,当GPU存储器125中的具有期望的段大小的虚拟指针的数据被最近最少使用时,将数据迁移到系统存储器105)的函数作为成员函数。在一个示例中,虚拟指针的成员函数可用于确定是否GPU存储器125中的所有的具有期望的段大小的段都在使用中。虚拟指针可使用与数据对象的大小相应的粒度执行存储器迁移。图4示出系统针对每个列表利用最近最少使用(LRU)的数据对象替换策略的示例。图4示出当需要在GPU存储器中分配相同类型的GPU数据对象时并且当在GPU存储器中没有空闲或“未使用的”相同类型的段时,特定数据对象类型的列表内的最近最少使用的GPU数据对象被迁移到低速存储器。
图5示出LRU替换策略如何在GPU存储器可保存两个数据对象的简化示例中操作。在这个示例中,存在四个在GPU计算中使用的数据对象;这些数据对象在图5中被标记为“1”至“4”。在执行将使用数据对象“3”的GPU代码之前,系统(在处理510)将数据对象“3”迁移到GPU存储器(即,从主机“H”迁移到装置(GPU)“D”)以用于将被执行的下一GPU计算。由于GPU存储器可保存两个数据对象,因此,系统执行数据对象“1”从GPU存储器到低速存储器(主机上的系统存储器105)的迁移。如图5的处理520中所示,数据对象“1”在被使用之前被迁移回到GPU存储器。
在一些实施例中,系统通过性能分析(profiling)来决定slab大小。系统利用在机器学习训练期间的数据对象的大小和数量在不同迭代中保持相同的特点。在机器学习训练的第一次迭代期间,系统收集存储器使用模式(诸如,数据对象的类型和具有每种类型的数据对象的数量)。在开始第二次迭代之前,系统使用仿真确定每个列表内的条目的最佳数量以实现最佳预测性能。在这样的实施例中,slab大小对于每个神经网络是专用的,从而实现机器学习训练的最佳性能。
术语“处理电路”在此用于表示用于处理数据或数字信号的硬件、固件和软件的任何组合。例如,处理电路硬件可包括专用集成电路(ASIC)、通用或专用中央处理器(CPU)、数字信号处理器(DSP)、图形处理器(GPU)和诸如现场可编程门阵列(FPGA)的可编程逻辑装置。在处理电路中,如在此所使用的,每个功能由被配置为执行该功能的硬件(即,硬连线)来执行,或者由被配置为执行存储在非暂时性存储介质中的指令的更多个通用硬件(诸如,CPU)来执行。处理电路可被制造在单个印刷电路板(PCB)上或分布在几个互连的PCB上。处理电路可包含其他处理电路;例如,处理电路可包括在PCB上互连的两个处理电路FPGA和CPU。
将理解,尽管在此可使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开来。因此,在不脱离本发明构思的精神和范围的情况下,在此讨论的第一元件、第一组件、第一区域、第一层或第一部分可被称为第二元件、第二组件、第二区域、第二层或第二部分。
在此使用的术语仅用于描述特定实施例的目的,并不意在限制本发明构思。如在此所使用的,术语“基本上”、“大约”和类似术语用作近似的术语而不是程度的术语,并且意在考虑将被本领域普通技术人员所了解的测量值或计算值中的固有偏差。如在此所使用的,术语“主要组分”是指组合物、聚合物或产品中存在的量大于组合物或产品中任何其他单个组分的量的组分。相反,术语“基本组分”是指构成组合物、聚合物或产品的至少50%重量或更多的组分。如在此所使用的,当术语“主要部分”应用于多个项时,表示所述多个项的至少一半。
如在此所使用的,除非上下文明确另有指示,否则单数形式也意在包括复数形式。还将理解,当在本说明书中使用术语“包括”和/或“包含”时,指定存在叙述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。如在此所使用的,术语“和/或”包括一个或多个相关所列项的任何和所有组合。当诸如“……中的至少一个”的表述在一列元素之后时,修饰整列元素,而不是修饰列中的单个元素。此外,当描述本发明构思的实施例时,“可”的使用是指“本发明的一个或多个实施例”。此外,术语“示例性”意在表示示例或说明。如在此所使用的,术语“使用”可被认为与术语“利用”同义。
将理解,当元件或层被称为“在”另一元件或层“上”或者“连接到”、“结合到”或“邻近于”另一元件或层时,所述元件或层可“直接在”所述另一元件或层“上”或者“直接连接到”、“直接结合到”或“直接邻近于”所述另一元件或层,或者可存在一个或多个中间元件或层。相反,当元件或层被称为“直接在”另一元件或层“上”或者“直接连接到”、“直接结合到”或“直接邻近于”另一元件或层时,不存在中间元件或层。
在此列举的任何数值范围意在包括所述范围内包含的相同数值精度的所有子范围。例如,“1.0到10.0”的范围意在包括列举的最小值1.0与列举最大值10.0之间(并且包括)的所有子范围(诸如,2.4至7.6),即,具有等于或大于1.0的最小值,并且等于或小于10.0的最大值。在此列举的任何最大数值限制意在包括其中包含的所有较低的数值限制,并且本说明书中列举的任何最小数值限制意在包括其中包含的所有较高的数值限制。
尽管在此已经具体描述并示出用于机器学习训练的基于slab的存储器管理的系统和方法的示例性实施例,但是许多修改和变化对本领域的技术人员来说将是清楚。因此,将理解,根据本发明的原理构建的用于机器学习训练的基于slab的存储器管理的系统和方法可不同于在此具体描述的方式实施。本发明还在所附权利要求及其等同物中限定。
Claims (20)
1.一种控制用于机器学习的系统的方法,所述系统包括执行操作系统的处理电路,所述处理电路连接到第一存储器和第二存储器,所述方法包括:
通过在所述处理电路上运行的用户级进程向操作系统请求来自第一存储器的第一存储器分配,第一存储器分配包括第一存储器的多个第一段的分配,每个第一段具有足以存储第一种数据对象的大小;
通过用户级进程确定第一计算是否将使用第一种数据对象;
响应于确定第一计算将使用第一种数据对象:
通过用户级进程确定所有的第一段是否都在使用中,
响应于通过用户级进程确定所有的第一段都在使用中,
识别所述多个第一段之中的最近最少使用的第一段,最近最少使用的第一段具有物理地址,
通过用户级进程将最近最少使用的第一段的内容迁移到第二存储器,
将第一种数据对象存储在最近最少使用的第一段中;
基于存储在最近最少使用的第一段中的第一种数据对象执行第一计算。
2.根据权利要求1所述的方法,其中,第一种数据对象是神经网络中的前向激活。
3.根据权利要求1所述的方法,其中,第一种数据对象是神经网络中的后向传播激活。
4.根据权利要求1所述的方法,还包括:通过用户级进程将第一虚拟指针实例化为虚拟指针类的实例,
其中,通过用户级进程确定所有的第一段是否都在使用中的步骤包括:执行虚拟指针类的用于确定是否所有的第一段都在使用中的成员函数。
5.根据权利要求4所述的方法,其中,将第一种数据对象存储在最近最少使用的第一段中的步骤包括:将最近最少使用的第一段的物理地址分配给第一虚拟指针的成员变量。
6.根据权利要求5所述的方法,其中,通过用户级进程将最近最少使用的第一段的内容迁移到第二存储器的步骤包括:将第二虚拟指针的成员变量的值从最近最少使用的第一段的物理地址改变为第二存储器中的物理地址。
7.根据权利要求1所述的方法,还包括:
通过用户级进程向操作系统请求来自第一存储器的第二存储器分配,第二存储器分配包括第一存储器的多个第二段的分配,每个第二段具有足以存储第二种数据对象的大小;
通过用户级进程确定第二计算是否将使用第二种数据对象;
响应于确定第二计算将使用第二种数据对象:
通过用户级进程确定所述多个第二段是否都被使用;
响应于通过用户级进程确定所述多个第二段都被使用,
识别所述多个第二段之中的最近最少使用的第二段,最近最少使用的第二段具有物理地址,
通过用户级进程将最近最少使用的第二段的内容迁移到第二存储器,
将第二种数据对象存储在最近最少使用的第二段中;
基于存储在最近最少使用的第二段中的第二种数据对象执行第二计算。
8.根据权利要求7所述的方法,其中,第二种数据对象包括神经网络中的权重。
9.根据权利要求8所述的方法,其中,第二种数据对象还包括神经网络中的权重梯度。
10.根据权利要求1所述的方法,其中,所述处理电路是图形处理器。
11.根据权利要求10所述的方法,其中,第一存储器是通过存储器管理单元连接到图形处理器的存储器。
12.根据权利要求11所述的方法,其中,第二存储器通过外围组件互连快速连接而连接到图形处理器。
13.一种用于机器学习的系统,所述系统包括:
处理电路;
第一存储器,连接到所述处理电路;
第二存储器,连接到所述处理电路;
非暂时性计算机可读存储介质,存储有指令,当由所述处理电路执行所述指令时,使得所述处理电路:
执行操作系统;
在操作系统内启动用户级进程,
其中,用户级进程被配置为:
向操作系统请求来自第一存储器的第一存储器分配,第一存储器分配包括第一存储器的多个第一段的分配,每个第一段具有足以存储第一种数据对象的大小;
确定第一计算是否将使用第一种数据对象;
响应于确定第一计算将使用第一种数据对象:
确定所述多个第一段是否都被使用;
响应于确定所述多个第一段都被使用,
识别所述多个第一段之中的最近最少使用的第一段,最近最少使用的第一段具有物理地址,
将最近最少使用的第一段的内容迁移到第二存储器,
将第一种数据对象存储在最近最少使用的第一段中;
基于存储在最近最少使用的第一段中的第一种数据对象执行第一计算。
14.根据权利要求13所述的系统,其中,第一种数据对象是神经网络中的前向激活。
15.根据权利要求13所述的系统,其中,第一种数据对象是神经网络中的后向传播激活。
16.根据权利要求13所述的系统,其中,所述处理电路是图形处理器。
17.根据权利要求16所述的系统,其中,第一存储器是通过存储器管理单元连接到图形处理器的存储器。
18.根据权利要求16所述的系统,其中,第二存储器是通过外围组件互连快速连接而连接到图形处理器的存储器。
19.一种电子系统,包括:
图形处理器;
第一存储器,通过存储器管理单元连接到图形处理器;
主机,通过外围组件互连快速连接而连接到第一存储器,主机包括:
中央处理器,
第二存储器,
其中,图形处理器连接到存储有指令的非暂时性计算机可读存储介质,当由图形处理器执行所述指令时,使得图形处理器:
执行操作系统;
在操作系统内启动用户级进程,
其中,用户级进程被配置为:
向操作系统请求来自第一存储器的第一存储器分配,第一存储器分配包括第一存储器的多个第一段的分配,每个第一段具有足以存储第一种数据对象的大小;
确定第一计算是否将使用第一种数据对象;
响应于第一计算将使用第一种数据对象:
确定所述多个第一段是否都被使用;
响应于确定所述多个第一段都被使用,
识别所述多个第一段之中的最近最少使用的第一段,最近最少使用的第一段具有物理地址,
将最近最少使用的第一段的内容迁移到第二存储器,
将第一种数据对象存储在最近最少使用的第一段中;
基于存储在最近最少使用的第一段中的第一种数据对象执行第一计算。
20.根据权利要求19所述的电子系统,其中,第一种数据对象是神经网络中的前向激活。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862642994P | 2018-03-14 | 2018-03-14 | |
US62/642,994 | 2018-03-14 | ||
US15/976,765 US11461869B2 (en) | 2018-03-14 | 2018-05-10 | Slab based memory management for machine learning training |
US15/976,765 | 2018-05-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110276454A true CN110276454A (zh) | 2019-09-24 |
Family
ID=67905772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910066820.3A Pending CN110276454A (zh) | 2018-03-14 | 2019-01-24 | 用于机器学习的系统和控制该系统的方法以及电子系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11461869B2 (zh) |
JP (1) | JP7311981B2 (zh) |
KR (1) | KR20190108471A (zh) |
CN (1) | CN110276454A (zh) |
TW (1) | TWI788476B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11704572B1 (en) * | 2018-10-17 | 2023-07-18 | Zoox, Inc. | Offloading for gradient computation |
US11188454B2 (en) * | 2019-03-25 | 2021-11-30 | International Business Machines Corporation | Reduced memory neural network training |
EP4111379A1 (en) * | 2020-02-28 | 2023-01-04 | 3M Innovative Properties Company | Deep causal learning for data storage and processing power management |
US20220215235A1 (en) * | 2021-01-07 | 2022-07-07 | Micron Technology, Inc. | Memory system to train neural networks |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104036451A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
CN104200004A (zh) * | 2014-07-28 | 2014-12-10 | 东北大学 | 一种优化的基于神经网络的桥梁损伤识别方法 |
CN105205014A (zh) * | 2015-09-28 | 2015-12-30 | 北京百度网讯科技有限公司 | 一种数据存储方法和装置 |
US20170032487A1 (en) * | 2015-07-30 | 2017-02-02 | International Business Machines Corporation | Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units |
US20170083997A1 (en) * | 2015-09-17 | 2017-03-23 | Qualcomm Incorporated | Storing bandwidth-compressed graphics data |
CN107003940A (zh) * | 2014-12-04 | 2017-08-01 | 高通股份有限公司 | 用于在非统一存储器架构中提供改进的延迟的系统和方法 |
US20170286284A1 (en) * | 2016-04-04 | 2017-10-05 | Omni Ai, Inc. | Data composite for efficient memory transfer in a behavioral recognition system |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657706B2 (en) | 2003-12-18 | 2010-02-02 | Cisco Technology, Inc. | High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory |
US7672790B2 (en) | 2006-11-02 | 2010-03-02 | Siemens Medical Solutions Usa, Inc. | System and method for stochastic DT-MRI connectivity mapping on the GPU |
US8806503B2 (en) | 2011-01-24 | 2014-08-12 | Nec Laboratories America, Inc. | Method and system for memory aware runtime to support multitenancy in heterogeneous clusters |
US9274595B2 (en) | 2011-08-26 | 2016-03-01 | Reincloud Corporation | Coherent presentation of multiple reality and interaction models |
US9864638B2 (en) | 2012-06-22 | 2018-01-09 | Intel Corporation | Techniques for accessing a graphical processing unit memory by an application |
US9373182B2 (en) | 2012-08-17 | 2016-06-21 | Intel Corporation | Memory sharing via a unified memory architecture |
US9304730B2 (en) | 2012-08-23 | 2016-04-05 | Microsoft Technology Licensing, Llc | Direct communication between GPU and FPGA components |
JPWO2016063482A1 (ja) | 2014-10-23 | 2017-08-17 | 日本電気株式会社 | アクセラレータ制御装置、アクセラレータ制御方法およびコンピュータプログラム |
US11061682B2 (en) | 2014-12-15 | 2021-07-13 | Hyperion Core, Inc. | Advanced processor architecture |
US9928034B2 (en) | 2014-12-17 | 2018-03-27 | Nvidia Corporation | Work-efficient, load-balanced, merge-based parallelized consumption of sequences of sequences |
US10223635B2 (en) | 2015-01-22 | 2019-03-05 | Qualcomm Incorporated | Model compression and fine-tuning |
US10296074B2 (en) | 2016-08-12 | 2019-05-21 | Qualcomm Incorporated | Fine-grained power optimization for heterogeneous parallel constructs |
WO2018184208A1 (en) * | 2017-04-07 | 2018-10-11 | Intel Corporation | Methods and apparatus for deep learning network execution pipeline on multi-processor platform |
US10614356B2 (en) * | 2017-04-24 | 2020-04-07 | International Business Machines Corporation | Local multicast in single-host multi-GPU machine for distributed deep learning systems |
US11093140B2 (en) * | 2018-01-19 | 2021-08-17 | Micron Technology, Inc. | Performance allocation among users for accessing non-volatile memory devices |
-
2018
- 2018-05-10 US US15/976,765 patent/US11461869B2/en active Active
- 2018-11-20 KR KR1020180143982A patent/KR20190108471A/ko active IP Right Grant
- 2018-12-10 TW TW107144253A patent/TWI788476B/zh active
-
2019
- 2019-01-24 CN CN201910066820.3A patent/CN110276454A/zh active Pending
- 2019-02-27 JP JP2019034564A patent/JP7311981B2/ja active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104036451A (zh) * | 2014-06-20 | 2014-09-10 | 深圳市腾讯计算机系统有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
CN104200004A (zh) * | 2014-07-28 | 2014-12-10 | 东北大学 | 一种优化的基于神经网络的桥梁损伤识别方法 |
CN107003940A (zh) * | 2014-12-04 | 2017-08-01 | 高通股份有限公司 | 用于在非统一存储器架构中提供改进的延迟的系统和方法 |
US20170032487A1 (en) * | 2015-07-30 | 2017-02-02 | International Business Machines Corporation | Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units |
US20170083997A1 (en) * | 2015-09-17 | 2017-03-23 | Qualcomm Incorporated | Storing bandwidth-compressed graphics data |
CN105205014A (zh) * | 2015-09-28 | 2015-12-30 | 北京百度网讯科技有限公司 | 一种数据存储方法和装置 |
US20170286284A1 (en) * | 2016-04-04 | 2017-10-05 | Omni Ai, Inc. | Data composite for efficient memory transfer in a behavioral recognition system |
Also Published As
Publication number | Publication date |
---|---|
KR20190108471A (ko) | 2019-09-24 |
JP7311981B2 (ja) | 2023-07-20 |
TWI788476B (zh) | 2023-01-01 |
JP2019160306A (ja) | 2019-09-19 |
US20190286991A1 (en) | 2019-09-19 |
US11461869B2 (en) | 2022-10-04 |
TW201939515A (zh) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110276454A (zh) | 用于机器学习的系统和控制该系统的方法以及电子系统 | |
US8806103B2 (en) | System and method for interleaving memory | |
TWI710912B (zh) | 記憶體系統及實施於記憶體系統中之方法,以及非暫時性電腦儲存媒體 | |
US11726707B2 (en) | System and method of writing to nonvolatile memory using write buffers | |
US11176032B2 (en) | Memory system and method of controlling nonvolatile memory | |
US10705951B2 (en) | Shared fabric attached memory allocator | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
KR20170092536A (ko) | 다수의 순차적 기입 스트림을 관리하는 기술 | |
CN103577345A (zh) | 提高由多个系统共享的存储高速缓存灵活性的方法和结构 | |
KR102434170B1 (ko) | 하이브리드 메모리 시스템 | |
CN102346682A (zh) | 信息处理装置及信息处理方法 | |
US20190004968A1 (en) | Cache management method, storage system and computer program product | |
JP2021033848A (ja) | メモリシステムおよび制御方法 | |
JP6042170B2 (ja) | キャッシュ制御装置及びキャッシュ制御方法 | |
CN116342365A (zh) | 用于经由使用可用设备存储器扩展系统存储器的技术 | |
US11513849B2 (en) | Weighted resource cost matrix scheduler | |
KR20200117032A (ko) | 하이브리드 메모리 시스템 | |
KR101823983B1 (ko) | 메모리 디바이스들 및 방법들 | |
CN106155910A (zh) | 一种实现内存访问的方法、装置和系统 | |
US10861580B2 (en) | Memory system for controlling nonvolatile memory | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
CN106339330A (zh) | 高速缓存刷新的方法及系统 | |
US20170052899A1 (en) | Buffer cache device method for managing the same and applying system thereof | |
CN106469020B (zh) | 高速缓存元件与控制方法及其应用系统 | |
CN107807851A (zh) | 一种虚拟机内存在numa节点间的迁移方法和装置 |
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 |