CN116108881A - 具有加速度的神经网络训练 - Google Patents
具有加速度的神经网络训练 Download PDFInfo
- Publication number
- CN116108881A CN116108881A CN202211368810.3A CN202211368810A CN116108881A CN 116108881 A CN116108881 A CN 116108881A CN 202211368810 A CN202211368810 A CN 202211368810A CN 116108881 A CN116108881 A CN 116108881A
- Authority
- CN
- China
- Prior art keywords
- vector
- embedded
- index
- row
- storage device
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 37
- 238000012549 training Methods 0.000 title claims abstract description 25
- 230000001133 acceleration Effects 0.000 title description 3
- 239000013598 vector Substances 0.000 claims abstract description 146
- 238000000034 method Methods 0.000 claims abstract description 52
- 238000012545 processing Methods 0.000 claims description 43
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000011084 recovery Methods 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 239000000126 substance Substances 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
- G06F18/2148—Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of 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/04—Architecture, e.g. interconnection topology
- G06N3/0499—Feedforward 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
-
- 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/09—Supervised learning
-
- 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
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于训练神经网络的系统和方法。在一些实施例中,该系统包括计算存储设备,该计算存储设备包括后备储存。计算存储设备可以被配置为:在后备储存中存储用于神经网络嵌入操作的嵌入表;接收包括第一索引和第二索引的第一索引向量;从后备储存中检索与第一索引相对应的嵌入表的第一行以及与第二索引相对应的嵌入表的第二行;以及基于第一行和第二行来计算第一嵌入向量。
Description
相关申请的交叉引用
本申请要求于2021年11月11日提交的题目为“NEAR STORAGE ACCELERATION OFTHE PERSONALIZED RECOMMENDATION MODEL TRAINING”的第63/278,381号美国临时申请的优先权和权益,并且本申请要求于2021年11月12日提交的题目为“FPGA-BASED EMBEDDINGFOR PERSONALIZED RECOMMENDATION MODEL TRAINING”的第63/278,799号美国临时申请的优先权和权益;本段中指出的两个临时申请的全部内容通过引用被并入本文。
技术领域
根据本公开的实施例的一个或多个方面涉及神经网络,并且更具体地涉及用于训练神经网络的系统和方法。
背景技术
神经网络训练操作可以是计算量繁重的,并且这种操作的不同方面可以对训练系统提出不同的要求。例如,在接收第一组连续输入和第二组分类输入的神经网络中,后者的处理可以通过嵌入操作来执行,这可以需要大量存储。
因此,需要一种用于训练神经网络的系统和方法。
发明内容
在一些实施例中,用于执行神经网络训练的系统包括图形处理单元(GPU)集群和计算存储系统。神经网络可以包括底部多层感知器、顶部多层感知器和一个或多个嵌入表。底部多层感知器可以处理连续输入,并且嵌入表可以处理分类输入。底部多层感知器和嵌入表的输出可以被组合并在顶部多层感知器中被进一步处理以产生诸如预测的点击率的输出。
底部多层感知器和顶部多层感知器可以在GPU系统中实现,并且嵌入表可以在计算存储系统中实现。计算存储系统可以包括多个计算存储设备,每个计算存储设备可以暴露相应随机存取存储器的一部分,用于计算存储设备和(i)GPU系统和(ii)可以管理训练操作的主机之间的通信。
计算存储系统可以在可以被称为“推测恢复”的过程中计算嵌入向量,而无需等待嵌入表被更新(基于在前一传递期间计算的梯度)。然后计算存储系统可以基于梯度来更新计算的嵌入向量。这种方法可以导致处理时间的减少。
根据本公开的实施例,提供了一种系统,包括:计算存储设备,包括后备储存,其中,计算存储设备被配置为:在后备储存中存储用于神经网络嵌入操作的嵌入表;接收包括第一索引和第二索引的第一索引向量;从后备储存中检索与第一索引相对应的嵌入表的第一行和与第二索引相对应的嵌入表的第二行;并基于第一行和第二行来计算第一嵌入向量。
在一些实施例中,该系统还包括图形处理单元,其中,计算存储设备还包括存储器;并且计算存储设备还被配置为暴露存储器的一部分以供图形处理单元访问。
在一些实施例中:计算存储设备还被配置为将第一嵌入向量存储在存储器的一部分中;并且图形处理单元被配置为从存储器的一部分读取第一嵌入向量。
在一些实施例中,计算存储设备还被配置为:接收梯度向量;并基于梯度向量来更新嵌入表的行以形成更新的行。
在一些实施例中,计算存储设备还被配置为基于梯度向量更新第一嵌入向量以形成更新的第一嵌入向量。
在一些实施例中,第一嵌入向量的更新包括:计算重叠计数,该重叠计数是存在于第一索引向量和前一批索引向量两者中的元素的计数。
在一些实施例中,第一嵌入向量的计算包括对第一行和第二行求和。
在一些实施例中,第一嵌入向量的更新还包括向第一嵌入向量添加以下的乘积:重叠计数、梯度向量和学习速率。
在一些实施例中,第二索引向量包括第一索引;计算存储设备还被配置为:将第一行存储在计算存储设备的高速缓存器中,以及基于第一行来计算第二嵌入向量。
根据本公开的实施例,提供了一种方法,包括:由计算存储设备在该计算存储设备的后备储存中存储用于神经网络嵌入操作的嵌入表;由计算存储设备接收包括第一索引和第二索引的第一索引向量;由计算存储设备从后备储存向计算存储设备的第一高速缓存器检索与第一索引相对应的嵌入表的第一行和与第二索引相对应的嵌入表的第二行;由计算存储设备基于第一行和第二行计算第一嵌入向量。
在一些实施例中,该方法还包括:接收梯度向量;基于梯度向量来更新嵌入表的行以形成更新的行。
在一些实施例中,该方法还包括基于梯度向量来更新第一嵌入向量以形成更新的第一嵌入向量。
在一些实施例中,第一嵌入向量的更新包括:计算重叠计数,该重叠计数是存在于第一索引向量和前一批索引向量两者中的元素的计数。
在一些实施例中,计算第一嵌入向量包括对第一行和第二行求和。
在一些实施例中,第一嵌入向量的更新还包括向第一嵌入向量添加以下的乘积:重叠计数、梯度向量和学习速率。
在一些实施例中,该方法还包括将更新的第一嵌入向量存储在第二高速缓存器中。
在一些实施例中,第二索引向量包括第一索引;并且该方法还包括将第一行存储在第一高速缓存器中并且基于第一行来计算第二嵌入向量。
在一些实施例中,该方法还包括将更新的行存储在后备储存中。
根据本公开的实施例,提供了一种系统,包括:计算存储设备,该计算存储设备包括:用于处理的部件、第一高速缓存器和后备储存,其中,用于处理的部件被配置为:在后备储存中存储用于神经网络嵌入操作的嵌入表;接收包括第一索引和第二索引的第一索引向量;从后备储存向第一高速缓存器检索与第一索引相对应的嵌入表的第一行和与第二索引相对应的嵌入表的第二行;以及基于第一行和第二行来计算第一嵌入向量。
在一些实施例中,用于处理的部件还被配置为:接收梯度向量;以及基于梯度向量来更新嵌入表的行。
附图说明
参考说明书、权利要求和附图将理解和明白本公开的这些和其他特征和优点,其中:
图1A是根据本公开实施例的神经网络的功能框图;
图1B是根据本公开实施例的神经网络的结构框图;
图1C是根据本公开实施例的GPU系统的框图;
图1D是根据本公开实施例的计算存储系统的框图;
图1E是根据本公开实施例的存储器组织图;
图1F是根据本公开实施例的数据布局图;
图1G是根据本公开实施例的处理流程图;
图2A是根据本公开实施例的计算存储设备的结构框图;
图2B是根据本公开实施例的嵌入核的框图;
图2C是根据本公开实施例的梯度更新电路的框图;
图2D是根据本公开实施例的推测恢复的数值示例;
图2E是根据本公开实施例的推测恢复电路的框图;
图3是示出根据本公开实施例的两个处理流程的处理流程图;
图4是根据本公开实施例的第一方法的流程图;以及
图5是根据本公开实施例的第二方法的流程图。
具体实施方式
下面结合附图阐述的详细描述旨在作为对根据本公开提供的用于训练神经网络的系统和方法的示例性实施例的描述,并且不旨在表示可以构建或利用本公开内容的形式。描述结合所示实施例阐述了本公开的特征。然而,应当理解,相同或等效的功能和结构可以通过也旨在包含在本公开范围内的不同实施例来实现。如本文别处所指出的,相似的元素编号旨在表示相似的元素或特征。
在一些实施例中,用于执行神经网络训练的系统包括图形处理单元(GPU)系统和计算存储系统。GPU系统(也可以称为“GPU集群”)可以包括单个GPU或多个GPU。计算存储系统(也可以称为“计算存储集群”)可以包括单个计算存储设备或多个计算存储设备。神经网络可以包括底部多层感知器、顶部多层感知器和一个或多个嵌入表。底部多层感知器可以处理连续输入,并且嵌入表可以处理分类输入。底部多层感知器和嵌入表的输出可以被组合并在顶部多层感知器中被进一步处理以产生输出。
底部多层感知器和顶部多层感知器可以在GPU系统中实现,并且嵌入表可以在计算存储系统中实现。计算存储系统可以包括多个计算存储设备,每个计算存储设备可以暴露相应存储器(例如,动态随机存取存储器)的一部分,用于计算存储设备和(i)GPU系统和(ii)可以管理训练操作的主机之间的通信。计算存储系统可以计算嵌入向量而无需等待嵌入表被更新(基于在前一传递期间计算的梯度)。然后计算存储系统可以基于梯度来更新计算的嵌入向量。这种方法可以导致处理时间的减少。
图1A示出了神经网络。在一些实施例中,可以是深度学习推荐模型(DLRM)的这种神经网络可以包括底部多层感知器(MLP)105、一个或多个嵌入表110和顶部多层感知器(MLP)115。每个多层感知器可以包括多个全连接(FC)层。这种神经网络可以非常适合学习用户的偏好并基于这些偏好和其他用户的偏好向用户做出推荐。训练这样的神经网络可以包括执行多个训练迭代,每个训练迭代可以包括:执行前向传递以计算给定权重集合的成本函数的值;计算(相对于权重的成本函数的)一个或多个梯度;及基于梯度和学习速率来更新权重。
在操作中(对于训练期间的推理和前向传递),神经网络可以接收密集(连续)和稀疏(分类)输入。密集输入可以用底部多层感知器105处理,稀疏特征可以用嵌入操作处理,例如用嵌入表110。稀疏输入可以是索引向量(即,元素的向量,该元素包括(例如,是)索引),每个索引标识嵌入矩阵的行。对于一个稀疏输入向量,嵌入操作可以包括(例如,由其构成)检索由稀疏输入向量的索引标识的行并且计算这些行的和以形成可以被称为“嵌入向量”的向量。底部多层感知器105和嵌入表110的输出可以在特征交互函数中被组合并馈送到顶部多层感知器115,顶部多层感知器115生成神经网络的输出(例如,预测的点击率(CTR))。
参考图1B,神经网络可以在包括主机120(其包括中央处理单元(CPU)和主存储器)的系统上实现,该主机120通过系统互连135(可以是高速缓存器相干系统互连,例如计算快速链路(CXL)互连)连接到图形处理单元(GPU)集群125和计算存储系统130。计算存储系统130可以存储嵌入矩阵并执行嵌入操作,并且GPU系统125可以实现底部多层感知器105和顶部多层感知器115。主机120可以管理计算存储系统130和GPU系统125的操作。
图1C示出了在一些实施例中的GPU系统125的示例。为了便于说明,GPU系统125被示为包括四个GPU 140;在一些实施例中,GPU系统可以包括更多或更少的GPU,例如其可以包括2到8之间数目的GPU。每个GPU 140可以具有相关联的2级(L2)高速缓存器145和相关联的视频随机存取存储器(VRAM)150。每个GPU可以是被设计为在帧缓冲器中创建图像的电路,或者其可以是任何其他合适的执行神经网络计算的电路,并且如本文所用,术语“GPU”与“处理电路”同义并且主要被用于促进区分GPU系统125中的处理电路和计算存储系统130中的处理电路。所有的2级高速缓存器145都可以连接到一致性代理155,一致性代理155可以通过系统互连接口控制器160(可以是CXL接口)连接到系统互连135。一致性代理155可以是硬件和软件的任何适当组合,其被配置为确保2级高速缓存器145的高速缓存器一致性。GPU系统125可以具有高带宽内部总线。每个VRAM 150可以通过存储器开关165和系统互连接口控制器160连接到系统互连135。GPU系统125的系统互连接口控制器160可以支持高速缓存器协议和存储器协议。
图1D示出了一些实施例中的计算存储系统130的示例。计算存储系统130包括多个计算存储设备170,其中两个在图1D中被明确示出。每个计算存储设备170可以包括高速缓存器175(例如,动态随机存取存储器(DRAM)高速缓存器)、控制器180(例如,现场可编程门阵列(FPGA)或专用集成电路(ASIC))和后备储存185(其可以是持久存贮器,例如固态驱动器(SSD))。如图所示,每个计算存储设备170可以通过存储器开关165和通过系统互连接口控制器160连接到系统互连135。在系统互连135是CXL互连的实施例中,每个计算存储设备170可以被配置为通过CXL.i.o.端口直接连接(如果系统互连135是CXL互连)的CXL类型3设备。计算存储系统130的系统互连接口控制器160可以支持存储器协议。嵌入表可能相对较大(例如,每个100GB)并且它们可能不容易适合GPU 140的存贮器(例如,VRAM 150)。因此,嵌入表110可以被存储在计算存储设备170的后备储存185中,如图所示。
与计算存储系统130的通信(来自GPU和主机)可以经由计算存储设备170的高速缓存器175进行。如图1E所示,每个计算存储设备170可以暴露计算存储设备170的高速缓存器175的一部分190(例如在1%和50%之间),使得主机120和每个GPU 140可以能够直接从暴露部分读取并直接写入计算存储设备170的高速缓存器175的暴露部分190。
计算存储设备170的高速缓存器175的每个暴露部分190的大小可以被选择为等于(i)未完成的嵌入的数量(即,在GPU 140读取嵌入向量之前计算的嵌入向量的数量)、(ii)嵌入向量的长度、(iii)嵌入表的数量以及(iv)批量大小(其中以批量执行训练)的乘积。从系统的角度来看,计算存储系统130可以表现为单个连续的存储器区域,该存储器区域具有多个连续部分,每个连续部分是计算存储设备170中的一个的高速缓存器175的暴露部分190。图1F示出了数据布局,具有例如存储在暴露的存储器的第一组连续区域中的第一表(表1)的嵌入向量195和存储在暴露的存储器的与第一组连续的第二组连续区域的第二表(表2)的嵌入向量195。
在操作中,由计算存储系统130计算的嵌入向量可以被保存到计算存储设备170的高速缓存器175的暴露部分190(例如,以迭代-表-项目的顺序)并由GPU 140从计算存储设备170的高速缓存器175的暴露部分190读取。高速缓存器相干系统互连135的使用可以使GPU能够将嵌入向量直接复制到GPU系统125的2级高速缓存器145,而无需首先将它们复制到VRAM 150。这可以明显提高系统的效率(例如,其可以明显提高速度并降低每个神经网络操作的能耗)。GPU系统125可以以数据并行模式操作,并且每个GPU 140可以从计算存储设备170中的一个的高速缓存器175的暴露部分190取得并处理由该计算存储设备170产生的嵌入向量的相应子集。(相对于嵌入表110的权重的成本函数的)梯度可以由(在GPU系统125中实现的)顶部多层感知器115计算,并由GPU 140写入到计算存储设备170的高速缓存器175的暴露部分190。然后计算存储设备170的控制器180可以基于梯度更新嵌入表110。
如上所述,GPU系统125的2级高速缓存器145可以连接到GPU系统125的一致性代理155,并且能够直接高速缓存来自主机120的主存储器的数据,或者如上所述,能够直接高速缓存来自计算存储设备170的高速缓存器175的暴露部分190的数据。每个GPU 140的VRAM150可以连接到GPU系统125的存储器开关165;该存储器开关可以通过CXL.mem协议与系统互连135通信,其效果是每个GPU 140的所有VRAM 150可以通过系统互连135而暴露给系统的其余部分。因此,主机120可以直接将密集输入特征写入GPU 140的VRAM 150并且能够从GPU 140的VRAM 150读取结果。
在一些实施例中,训练流水线从主机120的CPU开始。输入数据的处理可以由主机120执行,因为这种方法提供了实现不同混洗和分区方案的灵活性。主机120可以(i)通知GPU 140直接从主机的主存储器取得密集特征以及(ii)通过输入-输出(io)协议(例如,通过CXL.io)将稀疏特征发送到计算存储设备170。计算存储设备170可以从后备储存185将对应的行取到计算存储设备170的高速缓存器175(如果它不是已经存在的话),并且将当前迭代使用的行加载到控制器180中的片上高速缓存器(例如,到控制器180中的存储器或缓冲器)。
图1G示出了在一些实施例中的处理流程。在102,底部多层感知器105在GPU系统125中运行,并且同时嵌入操作在计算存储系统130中运行。在104,特征交互组合(例如,使用向量点积)底部多层感知器105和嵌入操作110的输出以形成顶部多层感知器115的输入。在106,顶部多层感知器115在GPU系统125中运行;在108,执行反向传播并将梯度写回到计算存储系统130,以用于在112更新嵌入表。
图2A示出了在一些实施例中可以在计算存储设备170中采用的存储器层次结构。计算存储设备170的控制器180(例如,FPGA)可以包括1级高速缓存器,例如若干兆字节(MB)的片上缓冲器。此外,计算存储设备170可以包括若干千兆字节(GB)的动态随机存取存储器(DRAM),其可以作为2级高速缓存器175(也可以被称为DRAM高速缓存器)来操作。2级高速缓存器175可以由主机120管理并且片上缓冲器可以由控制器180管理。两个级的高速缓存器均可以被实现为回写高速缓存器,例如,当数据从高速缓存器被逐出时,它可被写回(到2级高速缓存器的后备储存,或1级高速缓存器的2级高速缓存器)。
图2B示出了可以在每个计算存储设备170的控制器180中实现的结构和过程。此结构和过程也可以被称为“嵌入核”。嵌入核可以包括由开关控制器210控制的交叉开关205。在操作中,稀疏输入特征向量从主机120被接收并被馈送到输入先进先出结构(FIFO)215。在连接电路225中将当前输入特征向量与前一输入特征向量(其被存储在输入特征向量寄存器220中)进行比较,该比较(i)在第一输出处产生当前输入特征向量和前一输入特征向量两者的公共索引集合并且(ii)在第二输出处产生当前输入特征向量中存在而前一输入特征向量中不存在的索引集合。
每个嵌入表110可以由连接到交叉开关205的多个通道230(每个通道可以是并行、独立处理路径集合中的一个)中的相应通道230处理。与前一输入特征向量相对应的嵌入表的行可以被保存在片上缓冲器中,该缓冲器可以配置为多个通道向量缓冲器(其中一个,第一通道(通道1)的通道缓冲器(通道VBuf)235在图2B中被明确示出)。因此,与当前输入特征向量和前一输入特征向量两者公共的索引集合相对应的(嵌入表的)行不需要从2级高速缓存器175(或从后备储存185)中取得;剩余的行(即,与当前输入特征向量中存在的而前一输入特征向量中不存在的索引集合相对应的行)由权重读取电路240(从2级高速缓存器175或后备储存185)取得并被馈送到交叉开关205。在每个通道中,使用向量累加器245形成所选行的和。以这种方式计算的嵌入向量被存储在未完成的缓冲器250中以等待可能的进一步处理以考虑梯度的变化,如下面进一步详细讨论的。
基于梯度的权重更新可以如下进行。梯度可以由梯度读取电路255从计算存储设备170的2级高速缓存器175的暴露部分190(其可以已经被GPU系统125存储)读取。然后梯度可以在梯度更新电路260中被使用,以更新任意行的权重(由交叉开关205馈送到梯度更新电路260)。参考图2C,这可以通过将梯度和学习速率的乘积(在乘法器270中形成)添加(在加法器265中)到每一行来实现。(相对于嵌入表110的权重的成本函数)的梯度可以由顶部多层感知器115计算,并且学习速率可以在设计时选择以使得权重的值在合理少的迭代中收敛到稳定状态而在该收敛过程没有不稳定。
在一些实施例中,嵌入向量是基于旧的行计算的,并且然后使用一个过程(其可以被称为“推测恢复”)来校正旧的行和更新的行之间的差异的向量。例如,通过对旧嵌入表的行的集合求和所形成的嵌入向量可以已经加上N倍的梯度和学习速率的乘积(其中N是当前输入特征和前一批输入特征向量公共的索引数目),以形成若对更新的嵌入表的相同行的集合求和而获得的嵌入向量。该过程使得可能在迭代中计算嵌入向量而无需等待嵌入表的更新完成,其结果是导致更短的处理时间,如下文进一步详细讨论的。图2D示出了此过程的示例,其中嵌入表的前两行是在前一迭代和当前迭代两者中添加的行,以在这些迭代中形成嵌入向量。梯度和学习速率的乘积乘以当前输入特征向量和前一批输入特征向量公共的索引数目(因为只有与前一批输入特征向量相对应的嵌入表的行被更新,并且仅使用与当前输入特征向量相对应的嵌入表的行来计算当前嵌入向量)并将这个乘积添加到“未完成的”嵌入向量275(基于旧的(或“原始的”)嵌入表计算的嵌入向量)以计算若计算该嵌入表之前已经更新而已经获得的嵌入向量280。
图2E示出了可以用于执行该更新的推测恢复电路。当前输入特征向量和前一批输入特征向量两者公共的梯度、学习速率和索引的数目(binCount)在乘法器270中相乘并在加法器265中与未完成的向量相加以形成更新的嵌入向量。
再次参考图2B所示,在嵌入核中,该过程由推测恢复电路285完成,并且更新的嵌入向量由向量写入电路290写入计算存储设备170的2级高速缓存器175的暴露部分190(其中它们可以被GPU系统125读取),向量写入电路290还将更新的行写入到2级高速缓存器175或后备储存185。交叉开关选择逻辑(在开关控制器210中实现)可以总是优先考虑来自梯度更新器的行。如果当前和前一输入特征向量之间存在重叠索引,则可以将嵌入表的行转发回交叉开关205的输入。当向量缓冲器235中有可用空间时,交叉开关选择逻辑还可以预取将来输入的行。
图3示出了第一处理流程300,其涉及直到嵌入表已被更新为止才开始嵌入向量的下一次迭代的计算。在GPU系统在305完成反向传递之后,计算存储系统130在310更新行然后在315计算嵌入向量。在317,参数也被更新,并且当前批的训练数据被预处理并在318倍发送到GPU(在“加载数据”步骤)。然后在319执行模型的推断(前向传递)。图3还示出了第二处理流程320,其中在325执行推测嵌入以计算在330更新的未完成的嵌入向量。然后在335更新行。可以看出,第二处理流程320可以比第一处理流程300快约5ms完成。
图4是在一些实施例中的第一方法的流程图。该方法包括:在405,由计算存储系统的一个或多个计算存储设备的第一计算存储设备存储嵌入表;在410,由第一计算存储设备接收包括第一索引和第二索引的索引向量;以及在415,由第一计算存储设备基于与第一索引相对应的嵌入表的第一行和与第二索引相对应的嵌入表的第二行来计算嵌入向量。计算存储系统可以通过高速缓存器相干系统互连连接到图形处理单元集群,并且图形处理单元集群可以包括一个或多个图形处理单元。
图5是在一些实施例中的第二方法的流程图。该方法包括:在505,由计算存储设备在计算存储设备的后备储存中存储用于神经网络嵌入操作的嵌入表;在510,由计算存储设备接收包括第一索引和第二索引的第一索引向量;在515,计算存储设备从后备储存向计算存储设备的第一高速缓存器检索与第一索引相对应的嵌入表的第一行以及与第二索引相对应的嵌入表的第二行;由计算存储设备基于第一行和第二行来计算第一嵌入向量。
如本文所用,某物的“一部分”表示该物的“至少一些”,并且因此可以表示少于该物的全部或该物的全部。因此,该物的“一部分”包括作为特例的整个物,即整个物是该物的一部分的示例。如本文所用,当第二数量在第一数量X的“Y之内”时,意味着第二数量至少是X-Y并且第二数量最多是X+Y。如本文所用,当第二数量在第一数量的“Y%以内”时,意味着第二数量至少是第一数量的(1-Y/100)倍,并且第二数量最多是(1+Y)/100)乘以第一数量。如本文所用,术语“或”应解释为“和/或”,例如,“A或B”表示“A”或“B”或“A和B”中的任何一个。
本公开的背景部分提供的背景只是为了设置情境,本部分的内容不属于现有技术。所描述的任何组件或组件的任何组合(例如,在本文包括的任何系统图中)可以用于执行本文包括的任何流程图的一个或多个操作。此外,(i)操作是示例操作并且可以涉及未明确涵盖的各种附加步骤,并且(ii)操作的时间顺序可以改变。
一个或多个处理电路可以执行本文描述的方法,并且例如,任何计算存储设备170的控制器180可以是(或包括)处理电路。术语“处理电路”和“用于处理的部件”在本文中用于表示用于处理数据或数字信号的硬件、固件和软件的任何组合。处理电路硬件可以包括例如专用集成电路(ASIC)、通用或专用中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)和诸如现场可编程门阵列(FPGA)的可编程逻辑设备,。在本文使用的处理电路中,每个功能或者由被配置为执行该功能的硬件(即硬接线)执行,或者由诸如CPU的被配置为执行存储在非临时存储介质中的指令的多个通用硬件执行。处理电路可以在单个印刷电路板(PCB)上制造或分布在多个互连的PCB上。处理电路可以包含其他处理电路;例如,处理电路可以包括在PCB上互连的两个处理电路FPGA和CPU。
如本文所用,当方法(例如,调整)或第一量(例如,第一变量)被称为“基于”第二量(例如,第二变量)时,意味着第二量是该方法的输入或影响第一量,例如,第二量可以是计算第一量的函数的输入(例如,唯一输入或若干输入中的一个)或者第一量可以等于第二量或者第一量可以与第二量相同(例如,存储在存储器中的相同位置或多个位置)。
应当理解,尽管术语“第一”、“第二”、“第三”等可以在本文中用于描述各种元素、组件、区域、层和/或部分,但这些元素、组件、区域、层和/或部分不应受这些术语的限制。这些术语仅用于将一个元素、组件、区域、层或部分与另一元素、组件、区域、层或部分区分开来。因此,本文讨论的第一元素、组件、区域、层或部分可以称为第二元素、组件、区域、层或部分,而不脱离本发明构思的精神和范围。
本文使用的术语仅出于描述特定实施例的目的,并不旨在限制本发明概念。如本文所用,术语“基本上”、“大约”和类似术语用作近似术语而不是程度术语,旨在说明测量值或计算值的固有偏差,这些偏差将被本领域普通技术人员理解。
如本文所用,术语“首要分量”是指以大于组合物或产品中任何其他单一组分的量的量存在于组合物、聚合物或产品中的分量。相反,术语“主要分量”是指构成组合物、聚合物或产品的至少50重量%或更多的分量。如本文所用,术语“首要部分”在应用于多个项目时是指至少一半的项目。如本文所用,描述为由物质“制成”或“由物质组成”的任何结构或层应理解为(i)在一些实施例中,包含该物质作为主要分量或(ii)在一些实施例中,含有该物质作为首要分量。
如本文所用,单数形式“一”旨在也包括复数形式,除非上下文另有明确指示。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定了所述特征、整数、步骤、操作、元素和/或组件的存在,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、组件和/或它们的组合。如本文所用,术语“和/或”包括一个或多个相关列出的项目的任何和所有组合。诸如“至少一个”的表达式在元素列表之前时,会修改整个元素列表,而不是修改列表中的单个元素。此外,在描述本发明构思的实施例时使用的“可以”是指“本公开的一个或多个实施例”。此外,术语“示例性”旨在指代示例或说明。如本文所用,术语“使用””和“被使用”可以被认为分别与术语“利用””和“被利用”同义。
应当理解,当元素或层被称为“在其上”、“连接到”、“耦合到”或“相邻于”另一元素或层时,它可以直接在其上、连接到、耦合到到或者相邻于另一元素或层,或者可以存在一个或多个中间元素或层。相反,当一个元素或层被称为“直接在其上”、“直接连接到”、“直接耦合到”或“紧邻”另一元素或层时,不存在中间元素或层。
本文所述的任何数值范围旨在包括包含在所述范围内的具有相同数值精度的所有子范围。例如,“1.0到10.0”或“1.0到10.0之间”的范围旨在包括所列举的最小值1.0和所列举的最大值10.0之间(并包括)的所有子范围,即最小值等于或大于1.0且最大值等于或小于10.0,诸如,例如2.4至7.6。类似地,描述为“在10的35%以内”的范围旨在包括所列举的最小值6.5(即(1–35/100)乘以10)和所列举的最大值13.5(即(1+35/100)乘以10)之间(并包括)的所有子范围,即最小值等于或大于6.5且最大值等于或小于13.5,诸如,例如7.4至10.6。本文中引用的任何最大数值限制旨在包括其中包含的所有较低数值限制,并且本说明书中引用的任何最小数值限制旨在包括其中包含的所有较高数值限制。
尽管本文已经具体描述和说明了用于训练神经网络的系统和方法的示例性实施例,但是许多修改和变化对于本领域技术人员来说将是显而易见的。因此,应当理解,用于训练根据本公开的原理构建的神经网络的系统和方法可以以不同于本文具体描述的方式实施。本发明也在所附权利要求及其等价物中定义。
Claims (20)
1.一种用于训练神经网络的系统,包括:
计算存储设备,包括后备储存,
其中,计算存储设备被配置为:
在后备储存中存储用于神经网络嵌入操作的嵌入表;
接收包括第一索引和第二索引的第一索引向量;
从后备储存中检索:
与第一索引相对应的嵌入表的第一行,和
与第二索引相对应的嵌入表的第二行;以及
基于第一行和第二行来计算第一嵌入向量。
2.如权利要求1所述的系统,还包括图形处理单元,其中:
计算存储设备还包括存储器;以及
计算存储设备还被配置为暴露存储器的一部分以供图形处理单元访问。
3.如权利要求2所述的系统,其中:
计算存储设备还被配置为将第一嵌入向量存储在存储器的所述部分中;以及
图形处理单元被配置为从存储器的所述部分读取第一嵌入向量。
4.如权利要求1所述的系统,其中,计算存储设备还被配置为:
接收梯度向量;以及
基于梯度向量更新嵌入表的行以形成更新的行。
5.如权利要求4所述的系统,其中,计算存储设备还被配置为基于梯度向量来更新第一嵌入向量以形成更新的第一嵌入向量。
6.如权利要求5所述的系统,其中,第一嵌入向量的更新包括:
计算重叠计数,重叠计数是存在于第一索引向量和前一批索引向量两者中的元素的计数。
7.如权利要求6所述的系统,其中,第一嵌入向量的计算包括将第一行和第二行求和。
8.如权利要求7所述的系统,其中所述第一嵌入向量的更新还包括向第一嵌入向量添加以下的乘积:
重叠计数,
梯度向量,以及
学习速率。
9.如权利要求1所述的系统,其中:
第二索引向量包括第一索引;以及
计算存储设备还被配置为:
将第一行存储在计算存储设备的高速缓存器中,和
基于第一行来计算第二嵌入向量。
10.一种用于训练神经网络的方法,包括:
由计算存储设备在计算存储设备的后备储存中存储用于神经网络嵌入操作的嵌入表;
由计算存储设备接收包括第一索引和第二索引的第一索引向量;
由计算存储设备从后备储存向计算存储设备的第一高速缓存器检索:
与第一索引相对应的嵌入表的第一行,和
与第二索引相对应的嵌入表的第二行;以及
由计算存储设备基于第一行和第二行来计算第一嵌入向量。
11.如权利要求10所述的方法,还包括:
接收梯度向量;以及
基于梯度向量来更新嵌入表的行以形成更新的行。
12.如权利要求11所述的方法,还包括基于梯度向量更新第一嵌入向量以形成更新的第一嵌入向量。
13.如权利要求12所述的方法,其中,第一嵌入向量的更新包括:
计算重叠计数,重叠计数是存在于第一索引向量和前一批索引向量两者中的元素的计数。
14.如权利要求13所述的方法,其中,第一嵌入向量的计算包括将第一行和第二行求和。
15.如权利要求14所述的方法,其中,第一嵌入向量的更新还包括向第一嵌入向量添加以下的乘积:
重叠计数,
梯度向量,以及
学习速率。
16.如权利要求15所述的方法,还包括将更新的第一嵌入向量存储在第二高速缓存器中。
17.如权利要求13所述的方法,其中:
第二索引向量包括第一索引;以及
所述方法还包括:
将第一行存储在第一高速缓存器中,和
基于第一行来计算第二嵌入向量。
18.如权利要求11所述的方法,还包括将更新的行存储在后备储存中。
19.一种用于训练神经网络的系统,包括:
计算存储设备,包括:
用于处理的部件;
第一高速缓存器;以及
后备储存,
其中,用于处理的部件被配置为:
在后备储存中存储用于神经网络嵌入操作的嵌入表;
接收包括第一索引和第二索引的第一索引向量;
从后备储存中向第一高速缓存器检索:
与第一索引相对应的嵌入表的第一行,和
与第二索引相对应的嵌入表的第二行;以及
基于第一行和第二行来计算第一嵌入向量。
20.如权利要求19所述的系统,其中,用于处理的部件还被配置为:
接收梯度向量;以及
基于梯度向量来更新嵌入表的行。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163278381P | 2021-11-11 | 2021-11-11 | |
US63/278,381 | 2021-11-11 | ||
US202163278799P | 2021-11-12 | 2021-11-12 | |
US63/278,799 | 2021-11-12 | ||
US17/668,345 | 2022-02-09 | ||
US17/668,345 US20230146611A1 (en) | 2021-11-11 | 2022-02-09 | Neural network training with acceleration |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116108881A true CN116108881A (zh) | 2023-05-12 |
Family
ID=84044702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211368810.3A Pending CN116108881A (zh) | 2021-11-11 | 2022-11-03 | 具有加速度的神经网络训练 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230146611A1 (zh) |
EP (1) | EP4180979A1 (zh) |
KR (1) | KR20230068992A (zh) |
CN (1) | CN116108881A (zh) |
TW (1) | TW202319964A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11809323B1 (en) * | 2022-06-22 | 2023-11-07 | Seagate Technology Llc | Maintaining real-time cache coherency during distributed computational functions |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10997219B1 (en) * | 2017-08-10 | 2021-05-04 | Snap Inc. | Node embedding in multi-view feature vectors |
US20190073580A1 (en) * | 2017-09-01 | 2019-03-07 | Facebook, Inc. | Sparse Neural Network Modeling Infrastructure |
US20220405580A1 (en) * | 2019-09-27 | 2022-12-22 | Visa International Service Association | Mapping User Vectors Between Embeddings For A Machine Learning Model |
US11651209B1 (en) * | 2019-10-02 | 2023-05-16 | Google Llc | Accelerated embedding layer computations |
US11442866B2 (en) * | 2019-12-20 | 2022-09-13 | Meta Platforms, Inc. | Computer memory module processing device with cache storage |
GB202003257D0 (en) * | 2020-03-06 | 2020-04-22 | Myrtle Software Ltd | Memory processing optimisation |
US20210311871A1 (en) * | 2020-04-06 | 2021-10-07 | Samsung Electronics Co., Ltd. | System and method for aggregating server memory |
KR20220087922A (ko) * | 2020-12-18 | 2022-06-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그 동작 방법 |
KR20220145656A (ko) * | 2021-04-22 | 2022-10-31 | 에스케이하이닉스 주식회사 | 호스트 및 이를 포함하는 컴퓨팅 시스템 |
-
2022
- 2022-02-09 US US17/668,345 patent/US20230146611A1/en active Pending
- 2022-09-30 KR KR1020220125169A patent/KR20230068992A/ko unknown
- 2022-11-03 CN CN202211368810.3A patent/CN116108881A/zh active Pending
- 2022-11-08 TW TW111142487A patent/TW202319964A/zh unknown
- 2022-11-08 EP EP22205992.5A patent/EP4180979A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20230068992A (ko) | 2023-05-18 |
EP4180979A1 (en) | 2023-05-17 |
TW202319964A (zh) | 2023-05-16 |
US20230146611A1 (en) | 2023-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11568258B2 (en) | Operation method | |
CN111164617B (zh) | 具有交叉连接优化的脉动神经网络引擎 | |
US10860917B2 (en) | Apparatus and method for performing a forward operation of artificial neural networks | |
CN107729990B (zh) | 支持离散数据表示的用于执行正向运算的装置及方法 | |
US20180260709A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
US20200050453A1 (en) | Apparatus and methods for matrix multiplication | |
CN116541647A (zh) | 运算加速器、处理方法及相关设备 | |
CN111860812A (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
US11182159B2 (en) | Vector reductions using shared scratchpad memory | |
CN111819578A (zh) | 使用带有急速更新的分布式参数服务器对神经网络进行优化的异步训练 | |
CN110580519A (zh) | 一种卷积运算结构及其方法 | |
US20230041850A1 (en) | Adaptive matrix multiplication accelerator for machine learning and deep learning applications | |
EP4180979A1 (en) | Neural network training with acceleration | |
US20190130274A1 (en) | Apparatus and methods for backward propagation in neural networks supporting discrete data | |
EP4180978A1 (en) | Neural network training system with acceleration and neural network training method thereof | |
Kim et al. | An Asynchronous Inter-Processor Communication Based, Input Recycling Parallel Architecture for Large Scale Neural Network Simulation | |
KR20200142200A (ko) | 신경망 연산 효율 증대를 위한 신경망 가속기 및 그의 동작 방법 | |
CN116980277B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN113362878A (zh) | 用于存储器内计算的方法和用于计算的系统 | |
CN110826704A (zh) | 一种用于防止神经网络过拟合的处理装置及系统 | |
CN112561046A (zh) | 人工智能处理器的处理元件的再使用 | |
CN111291884A (zh) | 神经网络剪枝方法、装置、电子设备及计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |