CN116108916A - 加快的神经网络训练系统及其神经网络训练方法 - Google Patents
加快的神经网络训练系统及其神经网络训练方法 Download PDFInfo
- Publication number
- CN116108916A CN116108916A CN202211397031.6A CN202211397031A CN116108916A CN 116108916 A CN116108916 A CN 116108916A CN 202211397031 A CN202211397031 A CN 202211397031A CN 116108916 A CN116108916 A CN 116108916A
- Authority
- CN
- China
- Prior art keywords
- graphics processing
- computing storage
- neural network
- storage device
- embedded
- 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
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/084—Backpropagation, e.g. using gradient descent
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- 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
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Human Computer Interaction (AREA)
- Algebra (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Complex Calculations (AREA)
Abstract
用于训练神经网络的系统和方法。在一些实施例中,该系统包括:图形处理单元集群;以及通过高速缓存一致系统互连连接到图形处理单元集群的计算存储集群。图形处理单元集群可以包括一个或多个图形处理单元。计算存储集群可以包括一个或多个计算存储设备。一个或多个计算存储设备中的第一计算存储设备可以被配置为(i)存储嵌入表,(ii)接收包括第一索引和第二索引的索引向量;以及(iii)基于嵌入表的对应于第一索引的第一行和嵌入表的对应于第二索引的第二行来计算嵌入的向量。
Description
技术领域
根据本公开的实施例的一个或多个方面涉及神经网络,更具体地,涉及用于训练神经网络的系统和方法。
背景技术
神经网络训练操作在计算上可能是繁重的,并且这些操作的不同方面可能对用于训练的系统提出不同的要求。例如,在接收连续的输入的第一集合和分类的输入的第二集合的神经网络中,后者的处理可以用嵌入操作来执行,这可能需要大量的存储。
因此,需要一种用于训练神经网络的系统和方法。
发明内容
在一些实施例中,用于执行神经网络训练的系统包括图形处理单元(GPU)集群和计算存储系统。神经网络可以包括底部多层感知器、顶部多层感知器和一个或多个嵌入表。底部多层感知器可以处理连续输入,并且嵌入表可以处理分类输入。底部多层感知器和嵌入表的输出可以被组合,并在顶部多层感知器中进一步处理,以产生诸如预测点击率的输出。
底部多层感知器和顶部多层感知器可以在GPU系统中实现,并且嵌入表可以在计算存储系统中实现。计算存储系统可以包括多个计算存储设备,每个计算存储设备可以展示相应随机存取存储器的一部分,用于计算存储设备和(i)GPU系统以及(ii)可以管理训练操作的主机之间的通信。
计算存储系统可以在被称为“推演恢复”的过程中计算嵌入的向量,而无需等待嵌入表被更新(基于在前一次传递(preceding pass)期间计算的梯度)。计算存储系统然后可以基于梯度更新计算的嵌入的向量。这种方法可以减少处理时间。
根据本公开的实施例,提供了一种系统,包括:图形处理单元集群;以及通过高速缓存一致系统互连连接到图形处理单元集群的计算存储集群,其中:图形处理单元集群包括一个或多个图形处理单元,计算存储集群包括一个或多个计算存储设备,并且一个或多个计算存储设备中的第一计算存储设备被配置为:存储嵌入表;接收包括第一索引和第二索引的索引向量;以及基于嵌入表的对应于第一索引的第一行和嵌入表的对应于第二索引的第二行来计算嵌入的向量。
在一些实施例中,计算存储集群包括连接到一个或多个计算存储设备中的第一计算存储设备、第二计算存储设备以及连接到所述高速缓存一致系统互连的接口控制器的存储器交换机。
在一些实施例中,第一计算存储设备包括存储器,并且第一计算存储设备还被配置为通过存储器交换机和通过接口控制器展示存储器的一部分。
在一些实施例中,第一计算存储设备还被配置为将嵌入的向量存储在存储器的该部分中。
在一些实施例中,一个或多个图形处理单元中的图形处理单元被配置为从存储器的该部分读取嵌入的向量。
在一些实施例中,图形处理单元还被配置为将嵌入的向量存储在图形处理单元的高速缓存中。
在一些实施例中,图形处理单元还被配置为:计算成本函数相对于嵌入表的第一行的梯度,并将该梯度存储在存储器的该部分中。
在一些实施例中,第一计算存储设备还被配置为基于梯度更新嵌入表的第一行的元素。
在一些实施例中,图形处理单元集群被配置为作为第一多层感知器和第二多层感知器来操作。
在一些实施例中,高速缓存一致系统互连是快速计算链路系统互连。
在一些实施例中,图形处理单元集群包括一致性代理,以维护一个或多个图形处理单元中的第一图形处理单元的高速缓存和一个或多个图形处理单元中的第二图形处理单元的高速缓存之间的高速缓存一致性。
根据本公开的实施例,提供了一种方法,包括:由计算存储集群的一个或多个计算存储设备中的第一计算存储设备存储嵌入表;由第一计算存储设备接收包括第一索引和第二索引的索引向量;以及由第一计算存储设备基于嵌入表的对应于第一索引的第一行和嵌入表的对应于第二索引的第二行来计算嵌入的向量,其中:计算存储集群通过高速缓存一致系统互连连接到图形处理单元集群,并且图形处理单元集群包括一个或多个图形处理单元。
在一些实施例中,计算存储集群包括连接到一个或多个计算存储设备中的第一计算存储设备、第二计算存储设备以及连接到所述高速缓存一致系统互连的接口控制器的存储器交换机。
在一些实施例中,第一计算存储设备包括存储器,并且该方法还包括由第一计算存储设备通过存储器交换机和通过接口控制器展示存储器的一部分。
在一些实施例中,该方法还包括由第一计算存储设备将嵌入的向量存储在存储器的该部分中。
在一些实施例中,一个或多个图形处理单元中的图形处理单元被配置为从存储器的该部分读取嵌入的向量。
在一些实施例中,图形处理单元被配置为将嵌入的向量存储在图形处理单元的高速缓存中。
在一些实施例中,图形处理单元被配置为:计算成本函数相对于嵌入表的第一行的梯度,并将该梯度存储在存储器的该部分中。
在一些实施例中,第一计算存储设备被配置为基于该梯度更新嵌入表的第一行的元素。
根据本公开的实施例,提供了一种系统,包括:图形处理单元集群;以及通过高速缓存一致系统互连连接到图形处理单元集群的计算存储集群,其中:图形处理单元集群包括一个或多个图形处理单元,计算存储集群包括一个或多个计算存储设备,一个或多个计算存储设备中的第一计算存储设备包括永久存储和用于处理的装置,并且用于处理的装置被配置为:存储嵌入表;接收包括第一索引和第二索引的索引向量;以及基于嵌入表的对应于第一索引的第一行和嵌入表的对应于第二索引的第二行来计算嵌入的向量。
附图说明
参考说明书、权利要求书和附图,将会认识和理解本公开的这些和其他特征和优点,其中:
图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)可以管理训练操作的主机之间的通信。计算存储系统可以计算嵌入的向量,而无需等待嵌入表被更新(基于在前一次传递期间计算的梯度)。计算存储系统然后可以基于梯度更新计算的嵌入的向量。这种方法可以减少处理时间。
图1显示了神经网络。在一些实施例中,这种可以是深度学习推荐模型(DLRM)的神经网络可以包括底部多层感知器(MLP)105、一个或多个嵌入表110和顶部多层感知器(MLP)115。每个多层感知器可以包括多个全连接(FC)层。这种神经网络可能非常适合于学习用户的偏好,并基于这些偏好和其他用户的偏好向用户做出推荐。训练这样的神经网络可以包括执行多次训练迭代,每次训练迭代可以包括执行正向传递以计算成本函数对于给定权重集的值,计算(成本函数相对于权重的)一个或多个梯度,以及基于梯度和基于学习速率更新权重。
在操作中(用于推理和训练期间的正向传递),神经网络可以接收密集(连续)和稀疏(分类)输入。密集输入可以用底部多层感知器105来处理,并且稀疏特征可以用嵌入操作,例如用嵌入表110,来处理。稀疏输入可以是索引向量(即,其元素包括(例如,是)索引的向量),每个索引标识嵌入矩阵的行。对于一个稀疏输入向量,嵌入操作可以包括(例如,由其组成)检索由稀疏输入向量的索引标识的行,并计算这些行的总和,以形成可以被称为“嵌入的向量”的向量。底部多层感知器105和嵌入表110的输出可以在特征交互函数中组合,并被馈送到顶部多层感知器115,顶部多层感知器115生成神经网络的输出(例如,预测点击率(CTR))。
图1B是根据本公开的实施例的神经网络的结构框图。参考图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可以包括关联的二级(L2)高速缓存145和关联的视频随机存取存储器(VRAM)150。每个GPU可以是被设计成在帧缓冲器中创建图像的电路,或者它可以是用于执行神经网络计算的任何其他合适的电路,并且如本文所使用的,术语“GPU”与“处理电路”同义,并且主要用于便于区分GPU系统125中的处理电路和计算存储系统130中的处理电路。所有二级高速缓存145可以连接到一致性代理155,一致性代理155可以通过系统互连接口控制器160(可以是CXL接口)连接到系统互连135。一致性代理可以是被配置为确保二级高速缓存145的高速缓存一致的硬件和软件的任何合适的组合。GPU系统125可以具有高带宽内部总线。VRAM 150中的每个VRAM 150可以通过存储器交换机165和系统互连接口控制器160连接到系统互连135。GPU系统125的系统互连接口控制器160可以支持高速缓存协议和存储器协议。
图1D示出了一些实施例中的计算存储系统130的例子。参考图1D,图1b的计算存储系统130包括多个计算存储设备170,其中两个在图1D中明确示出。计算存储设备170中的每个计算存储设备可以包括高速缓存175(例如,动态随机存取存储器(DRAM)高速缓存)、控制器180(例如,现场可编程门阵列(FPGA)或专用集成电路(ASIC))和后备存储185(可以是永久存储,例如,固态驱动器(SSD))。如图所示,计算存储设备170中的每个计算存储设备可以通过存储器交换机165和系统互连接口控制器160连接到系统互连135。在系统互连135是CXL互连的实施例中,计算存储设备170中的每个计算存储设备可以被配置为CXL类型-3设备,通过CXL.io端口直接连接(如果系统互连135是CXL互连)。计算存储系统130的系统互连接口控制器160可以支持存储器协议。嵌入表可能相对较大,并且它们可能不容易适合GPU140的存储。例如,嵌入表每个可能是100GB,并且它们可能不容易适合GPU 140的VRAM 150。嵌入表110可以存储在如图所示的计算存储设备170的后备存储185中。
与计算存储系统130的通信(来自GPU和主机)可以经由计算存储设备170的高速缓存175进行。如图1E所示,计算存储设备170中的每个计算存储设备可以展示计算存储设备170的高速缓存175的一部分190(例如,在1%和50%之间)。计算存储设备170中的每个计算存储设备可以展示计算存储设备170的高速缓存175的1%到50%之间,使得主机120和GPU140中的每个GPU能够直接从计算存储设备170的高速缓存175的展示部分读取并直接向其写入。
计算存储设备170的高速缓存175的展示部分190中的每个展示部分的大小可以被选择为等于以下各项的乘积:(i)未完成的嵌入的数量(即,在GPU 140读取嵌入的向量之前计算的嵌入的向量的数量),(ii)嵌入的向量的长度,(iii)嵌入表的数量,以及(iv)批量(batch)大小(在按批量执行训练的情况下)。从系统角度来看,计算存储系统130可以表现为存储器的单个连续区域,其中多个连续部分中的每一个都是计算存储设备170之一的高速缓存175的展示部分190。图1F示出了数据布局,例如,第一表(表1)的嵌入的向量195存储在展示存储器的连续区域的第一集合中,以及第二表(表2)的嵌入的向量195存储在与第一集合连续的、展示存储器的连续区域的第二集合中。
在操作中,由计算存储系统130计算的嵌入的向量可以被保存到计算存储设备170的高速缓存175的展示部分190(例如,以迭代表项顺序),并且由GPU 140从计算存储设备170的高速缓存175的展示部分190读取。高速缓存一致系统互连135的使用可以使GPU能够将嵌入的向量直接复制到GPU系统125的二级高速缓存145,而无需首先将它们复制到VRAM150。这可以显著提高系统的效率。例如,它可以显著提高系统的速度并降低每个神经网络操作的能量消耗。GPU系统125可以以数据并行模式操作,并且每个GPU 140可以从计算存储设备170之一的高速缓存175的展示部分190获取并处理由计算存储系统130产生的嵌入的向量的相应子集。(成本函数相对于嵌入表110的权重的)梯度可以由顶部多层感知器115(其在GPU系统125中实现)计算,并且由GPU系统125通过GPU 140写入计算存储设备170的高速缓存175的展示部分190。计算存储设备170的控制器180然后可以基于梯度更新嵌入表110。
如上所述,GPU系统125的二级缓存145可以连接到GPU系统125的一致性代理155,并且能够直接高速缓存来自主机120的主存储器的数据,或者如上所述,直接高速缓存来自计算存储设备170的高速缓存175的展示部分190的数据。每个GPU 140的VRAM 150可以连接到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以通知GPU 140直接从主机的主存储器获取密集特征,以及(ii)通过输入输出(io)协议将稀疏特征发送到计算存储设备170。例如,主机120可以通过CXL.io将稀疏特征发送到计算存储设备170。计算存储设备170可以从后备存储185提取相应的行到计算存储设备170的高速缓存175(如果它还不在那里),并且将当前迭代使用的行加载到控制器180中的片上高速缓存(例如,加载到控制器180中的存储器或缓冲器)。
图1G示出了一些实施例中的处理流程。在102,底部多层感知器105在GPU系统125中运行,同时,嵌入操作在计算存储系统130中运行。在104,特征交互组合(例如,使用矢量点积)底部多层感知器105嵌入操作的输出,以形成顶部多层感知器115的输入。在106,顶部多层感知器115在GPU系统125中运行;在108,执行反向传播,并将梯度写回到计算存储系统130,用于在112更新嵌入表。
图2A示出了在一些实施例中,可以在计算存储设备170中采用的存储器层级。计算存储设备170的控制器180(例如FPGA)可以包括一级高速缓存,例如几兆字节(MB)的片上缓冲器。此外,计算存储设备170可以包括几千兆字节(GB)的动态随机存取存储器(DRAM),其可以作为二级高速缓存175(也可以称为DRAM高速缓存)来操作。二级高速缓存175可以由主机120管理,并且片上缓冲器可以由控制器180管理。两级高速缓存都可以被实现为回写式高速缓存,例如,当数据从高速缓存中被逐出时,数据可以被回写(从二级高速缓存回写到后备存储器,或者从一级高速缓存回写到二级高速缓存)。
图2B示出了可以在每个计算存储设备170的控制器180中实现的结构和过程。这种结构和过程也可以称为“嵌入内核”。嵌入内核可以包括由交换机控制器210控制的交叉交换机205。在操作中,从主机120接收稀疏输入特征向量,并将其馈入输入先进先出结构(FIFO)215。在连接电路225中将当前输入特征向量与先前输入特征向量(存储在输入特征向量寄存器220中)进行比较,其产生(i)在第一输出端,当前输入特征向量和先前输入特征向量共有的索引的集合,以及(ii)在第二输出端,当前输入特征向量中存在而先前输入特征向量中不存在的索引的集合。
嵌入表110中的每个嵌入表可以由连接到交叉交换机205的多个通道230中的相应通道230处理(每个通道可以是并行、独立处理路径的集合中的一个路径)。嵌入表的对应于先前输入特征向量的行可以被保存在片上缓冲器中,该片上缓冲器可以被配置为多个通道向量缓冲器(其中之一,第一通道(通道1)的通道缓冲器(通道VBuf)235,在图2B中被明确示出)。这样,对应于当前输入特征向量和先前输入特征向量所共有的索引的集合的(嵌入表的)行不需要从二级高速缓存175(或从后备存储185)中取出;由权重读取电路240(从二级高速缓存175或从后备存储185)取出剩余的行(即,对应于存在于当前输入特征向量中而不存在于先前输入特征向量中的索引的集合的行),并将其馈送到交叉交换机205。在每个通道中,使用向量累加器245形成所选行的总和。以这种方式计算的嵌入的向量被存储在未完成缓冲器250中,以等待可能的进一步处理来解决梯度的变化,如下面进一步详细讨论的。
基于梯度的权重更新可以如下进行。梯度可以由梯度读取电路255从计算存储设备170的二级高速缓存175的展示部分190读取(其中它可能已经被GPU系统125存储)。然后可以在梯度更新电路260中使用该梯度来更新任何行的权重(由交叉交换机205馈送到梯度更新电路260)。参考图2C,这可以通过(在加法器265中)将梯度和学习率的乘积(在乘法器270中形成)加到每一行来实现。(成本函数相对于嵌入表110的权重的)梯度可以由顶部多层感知器115来计算,并且可以在设计时选择学习率,以使得权重的值在合理的少量迭代中收敛到稳定状态,而没有收敛过程中的不稳定性。
在一些实施例中,基于旧行计算嵌入的向量,然后使用过程来针对旧行和更新的行之间的差异来校正向量。这一过程可称为“推演恢复”。例如,通过对旧嵌入表的行的集合求和而形成的嵌入的向量可能已经向其加上了梯度和学习率的乘积的N倍(其中N是当前输入特征向量和前一批输入特征向量共有的索引的数量),以形成要是将更新的嵌入表的行的相同集合求和就会获得的嵌入的向量。该过程可以使得在迭代中计算嵌入的向量而无需等待嵌入表的更新完成成为可能,从而导致更短的处理时间,如下面进一步详细讨论的。图2D显示了该过程的示例,其中嵌入表的前两行在前一次迭代和当前迭代两者中都在添加的行当中,以在那些迭代中形成嵌入的向量。梯度和学习率的乘积被乘以当前输入特征向量和前一批输入特征向量共有的索引的数量(因为只有对应于前一批输入特征向量的嵌入表的行被更新,并且只有对应于当前输入特征向量的嵌入表的行被用于计算当前嵌入的向量),并且该乘积被加到“未完成”嵌入的向量275(基于旧的(或“原始的”)嵌入表计算的嵌入的向量)以计算要是在嵌入的向量的计算之前更新嵌入表就会获得的嵌入的向量280。
图2E示出了可以用于执行这种更新的推演恢复电路。梯度、学习率和当前输入特征向量和前一批输入特征向量所共有的索引数(binCount)在乘法器270中相乘,并在加法器265中与未完成向量相加,以形成更新的嵌入的向量。
再次参考图2B,在嵌入内核中,该过程由推演恢复电路285完成,并且更新的嵌入的向量由向量写入电路290写入计算存储设备170的二级高速缓存175的展示部分190(在那里它们可以被GPU系统125读取),向量写入电路290还将更新的行写入二级高速缓存175或后备存储185。交叉选择逻辑可以对来自梯度更新器的行进行优先排序。在交换机控制器210中实现的交叉选择逻辑。如果在当前和先前的输入特征向量之间有重叠的索引,则嵌入表的行可以被转发回交叉交换机205的输入。当向量缓冲器235中有可用空间时,交叉选择逻辑也可以预取行用于将来的输入。
图3示出了第一处理流程300,其涉及在开始计算嵌入的向量的下一次迭代之前等待,直到嵌入表已经被更新。在GPU系统在305完成反向传递之后,计算存储系统130在310更新行,然后在315计算嵌入的向量。在317,参数也被更新,并且在318,当前一批训练数据被预处理并被发送到GPU。318可以被称为“加载数据”步骤。然后在319执行模型的推断(正向传递)。图3还示出了第二处理流程320,其中在325执行推演嵌入以计算未完成的嵌入的向量,这些向量在330被更新。然后在335更新这些行。在图3中,可以看出,第二处理流程320可以比第一处理流程300更快地完成。例如,第二处理流程320可以比第一处理流程300快大约5ms完成。
图4是一些实施例中第一方法的流程图。第一方法可以包括步骤405、410和415。该方法包括:在405,由计算存储系统的一个或多个计算存储设备中的第一计算存储设备存储嵌入表;在410,由第一计算存储设备接收包括第一索引和第二索引的索引向量;以及在415,由第一计算存储设备基于嵌入表的对应于第一索引的第一行和嵌入表的对应于第二索引的第二行来计算嵌入的向量。计算存储系统可以通过高速缓存一致系统互连连接到图形处理单元集群,并且图形处理单元集群可以包括一个或多个图形处理单元。
图5是一些实施例中第二方法的流程图。第二方法可以包括步骤505、510、515和520。该方法包括:在505,由计算存储设备在计算存储设备的后备存储中存储用于神经网络嵌入操作的嵌入表;在510,由计算存储设备接收包括第一索引和第二索引的第一索引向量;在515,由计算存储设备从后备存储向计算存储设备的第一高速缓存检索:嵌入表的对应于第一索引的第一行,以及嵌入表的对应于第二索引的第二行;以及在520,由计算存储设备基于第一行和第二行计算第一嵌入的向量。
如本文所使用的,某物的“部分”意指该物的“至少一些”,并且同样可以意指少于该物的全部、或该物的全部。同样地,某物的“部分”包括作为特例的整个该物,即,整个该物是该物的一部分的示例。如本文所用,当第二量在第一量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.根据权利要求3所述的神经网络训练系统,其中所述第一计算存储设备还被配置为将所述嵌入的向量存储在所述存储器的所述部分中。
5.根据权利要求4所述的神经网络训练系统,其中所述多个图形处理单元包括第一图形处理单元,所述第一图形处理单元被配置为从所述存储器的所述部分读取所述嵌入的向量。
6.根据权利要求5所述的神经网络训练系统,其中所述第一图形处理单元还被配置为将所述嵌入的向量存储在所述第一图形处理单元的高速缓存中。
7.根据权利要求5所述的神经网络训练系统,其中所述图形处理单元还被配置为:
计算成本函数相对于所述嵌入表的第一行的梯度,以及
将所述梯度存储在所述存储器的所述部分中。
8.根据权利要求7所述的神经网络训练系统,其中所述第一计算存储设备还被配置为基于所述梯度更新所述嵌入表的第一行的元素。
9.根据权利要求1所述的神经网络训练系统,其中所述图形处理单元集群被配置为作为第一多层感知器和第二多层感知器进行操作。
10.根据权利要求1所述的神经网络训练系统,其中所述高速缓存一致系统互连是快速计算链路CXL系统互连。
11.根据权利要求1所述的神经网络训练系统,其中所述图形处理单元集群包括一致性代理,用于维护以下各项之间的高速缓存一致性:
所述一个或多个图形处理单元中的第一图形处理单元的高速缓存,和
所述一个或多个图形处理单元中的第二图形处理单元的高速缓存。
12.一种神经网络训练方法,包括:
由计算存储集群的第一计算存储设备存储嵌入表;
由所述第一计算存储设备接收包括第一索引和第二索引的索引向量;以及
由所述第一计算存储设备基于以下各项计算嵌入的向量:
所述嵌入表的第一行,对应于所述第一索引,和
所述嵌入表的第二行,对应于所述第二索引,
其中:
所述计算存储集群通过高速缓存一致系统互连连接到图形处理单元集群,并且
所述图形处理单元集群包括至少一个图形处理单元。
13.根据权利要求12所述的神经网络训练方法,其中所述计算存储集群包括第二计算存储设备和存储器交换机,
其中所述存储器交换机连接到:
所述第一计算存储设备,
所述第二计算存储设备,和
接口控制器,连接到所述高速缓存一致系统互连。
14.根据权利要求13所述的神经网络训练方法,其中所述第一计算存储设备还包括存储器,并且所述神经网络训练方法还包括由所述第一计算存储设备通过所述存储器交换机和所述接口控制器展示所述存储器的一部分。
15.根据权利要求14所述的神经网络训练方法,还包括由所述第一计算存储设备将所述嵌入的向量存储在所述存储器的所述部分中。
16.根据权利要求15所述的神经网络训练方法,其中所述至少一个图形处理单元包括第一图形处理单元,所述第一图形处理单元被配置为从所述存储器的所述部分读取所述嵌入的向量。
17.根据权利要求16所述的神经网络训练方法,其中所述第一图形处理单元被配置为将所述嵌入的向量存储在所述第一图形处理单元的高速缓存中。
18.根据权利要求16所述的神经网络训练方法,其中所述第一图形处理单元被配置为:
计算成本函数相对于所述嵌入表的第一行的梯度,以及
将所述梯度存储在所述存储器的所述部分中。
19.根据权利要求18所述的神经网络训练方法,其中所述第一计算存储设备被配置为基于所述梯度更新所述嵌入表的第一行的元素。
20.一种系统,包括:
图形处理单元集群,包括至少一个图形处理单元;以及
计算存储集群,包括至少一个计算存储设备,并且通过高速缓存一致系统互连连接到所述图形处理单元集群,
其中所述至少一个计算存储设备包括
第一计算存储设备,包括永久存储和用于处理的装置,
其中所述用于处理的装置被配置为:
存储嵌入表;
接收包括第一索引和第二索引的索引向量;以及
基于以下各项计算嵌入的向量:
所述嵌入表的第一行,对应于所述第一索引,和
所述嵌入表的第二行,对应于所述第二索引。
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/670,044 US20230147472A1 (en) | 2021-11-11 | 2022-02-11 | Neural network training with acceleration |
US17/670,044 | 2022-02-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116108916A true CN116108916A (zh) | 2023-05-12 |
Family
ID=83506398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211397031.6A Pending CN116108916A (zh) | 2021-11-11 | 2022-11-09 | 加快的神经网络训练系统及其神经网络训练方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230147472A1 (zh) |
EP (1) | EP4180978A1 (zh) |
KR (1) | KR20230068963A (zh) |
CN (1) | CN116108916A (zh) |
TW (1) | TW202324203A (zh) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210311871A1 (en) * | 2020-04-06 | 2021-10-07 | Samsung Electronics Co., Ltd. | System and method for aggregating server memory |
-
2022
- 2022-02-11 US US17/670,044 patent/US20230147472A1/en active Pending
- 2022-04-21 KR KR1020220049570A patent/KR20230068963A/ko unknown
- 2022-09-27 EP EP22198011.3A patent/EP4180978A1/en active Pending
- 2022-10-05 TW TW111137845A patent/TW202324203A/zh unknown
- 2022-11-09 CN CN202211397031.6A patent/CN116108916A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4180978A1 (en) | 2023-05-17 |
TW202324203A (zh) | 2023-06-16 |
US20230147472A1 (en) | 2023-05-11 |
KR20230068963A (ko) | 2023-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860917B2 (en) | Apparatus and method for performing a forward operation of artificial neural networks | |
US11568258B2 (en) | Operation method | |
CN107341547B (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
US20180260709A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
KR102175044B1 (ko) | 인공 신경망 역방향 트레이닝 실행용 장치와 방법 | |
CN109034373B (zh) | 卷积神经网络的并行处理器及处理方法 | |
CN116541647A (zh) | 运算加速器、处理方法及相关设备 | |
JP2017107568A (ja) | マルチコア最適化リカレントニューラルネットワーク用のシステムおよび方法 | |
US11934826B2 (en) | Vector reductions using shared scratchpad memory | |
JP2021506032A (ja) | オンチップの計算ネットワーク | |
CN111819578A (zh) | 使用带有急速更新的分布式参数服务器对神经网络进行优化的异步训练 | |
EP4180979A1 (en) | Neural network training with acceleration | |
CN110580519A (zh) | 一种卷积运算结构及其方法 | |
CN111597501A (zh) | 自适应性矩阵乘法器的系统 | |
EP4180978A1 (en) | Neural network training system with acceleration and neural network training method thereof | |
WO2021119907A1 (en) | Technology to mininimize negative impact of cache conflicts caused by incompatible leading dimensions in matrix multiplication and convolution kernels without dimension padding | |
CN109272112B (zh) | 一种面向神经网络的数据重用指令映射方法、系统及装置 | |
KR102373802B1 (ko) | 신경망 연산 효율 증대를 위한 신경망 가속기 및 그의 동작 방법 | |
CN113238975A (zh) | 优化深度神经网络的参数的内存、集成电路及板卡 | |
Kim et al. | An Asynchronous Inter-Processor Communication Based, Input Recycling Parallel Architecture for Large Scale Neural Network Simulation | |
CN114402304A (zh) | 存储器共享 | |
CN110826704B (zh) | 一种用于防止神经网络过拟合的处理装置及系统 | |
CN116980277B (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
TWI819937B (zh) | 應用於類神經網路的記憶內運算的加速器 | |
US20190073584A1 (en) | Apparatus and methods for forward propagation in neural networks supporting discrete data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |