KR20230068963A - 엑셀러레이션을 이용한 신경망 트레이닝 시스템 및 이의 신경망 트레이닝 방법 - Google Patents

엑셀러레이션을 이용한 신경망 트레이닝 시스템 및 이의 신경망 트레이닝 방법 Download PDF

Info

Publication number
KR20230068963A
KR20230068963A KR1020220049570A KR20220049570A KR20230068963A KR 20230068963 A KR20230068963 A KR 20230068963A KR 1020220049570 A KR1020220049570 A KR 1020220049570A KR 20220049570 A KR20220049570 A KR 20220049570A KR 20230068963 A KR20230068963 A KR 20230068963A
Authority
KR
South Korea
Prior art keywords
storage device
processing unit
index
neural network
network training
Prior art date
Application number
KR1020220049570A
Other languages
English (en)
Inventor
시우 리
크리슈나 테자 말라디 말라디
앤드류 창
기양석
Original Assignee
삼성전자주식회사
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20230068963A publication Critical patent/KR20230068963A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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/781On-chip cache; Off-chip memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0499Feedforward networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (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

본 개시의 기술적 사상의 일측면에 따른 신경망 트레이닝 시스템은, 복수의 그래픽 처리 장치를 포함하는 그래픽 처리 유닛 클러스터 및 복수의 연산 저장 장치를 포함하고, 캐시-코히어런트 시스템 인터커넥트(cache-coherent system interconnect)에 의해 그래픽 처리 유닛 클러스터에 연결된 연산 저장 클러스터(computational storage cluster)를 포함하고, 복수의 연산 저장 장치는, 임베딩 테이블을 저장하고, 제1 인덱스 및 제2 인덱스를 포함하는 인덱스 벡터를 수신하고, 제1 인덱스에 대응되는 임베딩 테이블의 제1 로우 및 제2 인덱스에 대응되는 임베딩 테이블의 제2 로우에 기초하여 임베디드 벡터를 계산하는 제1 연산 저장 장치를 포함한다.

Description

엑셀러레이션을 이용한 신경망 트레이닝 시스템 및 이의 신경망 트레이닝 방법{NEURAL NETWORK TRAINING SYSTEM WITH ACCELERATION AND NEURAL NETWORK TRAINING METHOD THEREOF}
본 개시의 기술적 사상은 신경망 트레이닝 방법에 관한 것으로서, 상세하게는 엑셀러레이션을 이용한 신경망 트레이닝 시스템 및 이의 신경망 트레이닝 방법에 관한 것이다.
신경망 트레이닝 동작은 계산적으로 부담될 수 있고, 그러한 동작의 다른 측면은 트레이닝을 위한 시스템에 다른 요구를 할 수 있다. 예를 들어, 연속적인 입력의 첫 번째 세트와 범주형 입력의 두 번째 세트를 수신하는 신경망에서 후자의 처리는 많은 양의 데이터를 저장해야 하는 임베딩 작업으로 수행될 수 있다. 따라서, 신경망 트레이닝을 위한 시스템 및 방법이 요구된다.
본 개시의 기술적 사상이 해결하려는 과제는, 처리 속도가 빠른 신경망 트레이닝 시스템 및 이의 신경망 트레이닝 방법을 제공하는 데 있다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재들로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 개시의 일 실시 예에 따른 신경망 트레이닝 시스템은, 복수의 그래픽 처리 장치를 포함하는 그래픽 처리 유닛 클러스터 및 복수의 연산 저장 장치를 포함하고, 캐시-코히어런트 시스템 인터커넥트(cache-coherent system interconnect)에 의해 그래픽 처리 유닛 클러스터에 연결된 연산 저장 클러스터(computational storage cluster)를 포함하고, 복수의 연산 저장 장치는, 임베딩 테이블을 저장하고, 제1 인덱스 및 제2 인덱스를 포함하는 인덱스 벡터를 수신하고, 제1 인덱스에 대응되는 임베딩 테이블의 제1 로우 및 제2 인덱스에 대응되는 임베딩 테이블의 제2 로우에 기초하여 임베디드 벡터를 계산하는 제1 연산 저장 장치를 포함한다.
본 개시의 일 실시 예에 따른 신경망 트레이닝 방법은, 연산 저장 클러스터에 포함된 제1 연산 저장 장치에 의해 임베딩 테이블을 저장하는 단계, 제1 연산 저장 장치에 의해, 제1 인덱스 및 제2 인덱스를 포함하는 인덱스 벡터를 수신하는 단계 및 제1 연산 저장 장치에 의해, 제1 인덱스에 대응되는 임베딩 테이블의 제1 로우 및 제2 인덱스에 대응되는 임베딩 테이블의 제2 로우에 기초하여, 임베디드 벡터(embedded vector)를 계산하는 단계를 포함하고, 연산 저장 클러스터는, 캐시-코히어런트 시스템 인터커넥트(cache-coherent system interconnect)에 의해 그래픽 처리 장치 클러스터에 연결되고, 그래픽 처리 장치 클러스터는 적어도 하나의 그래픽 처리 장치를 포함한다.
본 개시의 일 실시 예에 따른 시스템은, 적어도 하나의 그래픽 처리 장치를 포함하는 그래픽 처리 유닛 클러스터 및 적어도 하나의 연산 저장 장치를 포함하고, 캐시-코히어런트 시스템 인터커넥트(cache-coherent system interconnect)에 의해 그래픽 처리 유닛 클러스터에 연결된 연산 저장 클러스터(computational storage cluster)를 포함하고, 적어도 하나의 연산 저장 장치는, 영구 스토리지(persistent storage) 및 처리 수단을 포함하는 제1 연산 저장 장치를 포함하고, 처리 수단은, 임베딩 테이블을 저장하고, 제1 인덱스 및 제2 인덱스를 포함하는 인덱스 벡터를 수신하고, 제1 인덱스에 대응되는 임베딩 테이블의 제1 로우 및 제2 인덱스에 대응되는 임베딩 테이블의 제2 로우에 기초하여 임베디드 벡터를 계산하도록 구성된다.
본 개시의 기술적 사상에 따르면, 임베딩 테이블을 저장하고, 제1 인덱스 및 제2 인덱스를 포함하는 인덱스 벡터를 수신하고, 제1 인덱스에 대응되는 임베딩 테이블의 제1 로우 및 상기 제2 인덱스에 대응되는 상기 임베딩 테이블의 제2 로우에 기초하여 임베디드 벡터를 계산하는 제1 연산 저장 장치를 제공함으로써 처리 속도가 빠른 신경망 트레이닝 시스템 및 이의 신경망 트레이닝 방법을 제공할 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도 1a은 예시적인 실시예에 따른 신경망의 기능을 설명하기 위한 블록도이다.
도 1b는 예시적인 실시예에 따른 신경망의 구조를 설명하기 위한 블록도이다.
도 1c는 예시적인 실시예에 따른 GPU 시스템의 블록도이다.
도 1d는 예시적인 실시예에 따른 연산 저장 시스템의 블록도이다.
도 1e는 예시적인 실시예에 따른 기억 조직도이다.
도 1f은 예시적인 실시예에 따른 데이터 레이아웃도이다.
도 1g는 예시적인 실시예에 따른 동작 방법을 설명하기 위한 블록도이다.
도 2a는 예시적인 실시예에 따른 연산 저장 장치의 구조에 대한 블록도이다.
도 2b는 예시적인 실시예에 따른 임베딩 커널(embedding kernel)의 블록도이다.
도 2c는 예시적인 실시예에 따른 그래디언트 업데이팅 회로(gradient updating circuit)의 블록도이다.
도 2d는 예시적인 실시예에 따른 추측성 회복(speculative recovery)의 수치적 예시이다.
도 2e는 예시적인 실시예에 따른 추측성 회복 회로(speculative recovery circuit)의 블록도이다.
도 3은 예시적인 실시예에 따른 제1 방법 및 제2 방법을 설명하기 위한 처리 흐름도이다.
도 4는 예시적인 실시예에 따른 제1 방법의 순서도이다.
도 5는 예시적인 실시예에 따른 제2 방법의 순서도이다.
첨부된 도면과 관련하여 후술하는 상세한 설명은 본 개시에 따라 제공되는 신경망 트레이닝을 위한 시스템 및 방법의 예시적인 실시 예로서 의도되고, 본 개시가 구성되거나 이용될 수 있는 유일한 형태를 나타내도록 의도되지 않는다. 이하에서는 예시된 실시 예와 관련하여 본 개시의 특징을 설명하나, 동일하거나 동등한 기능 및 구조가 본 개시의 범위 내에 포함되도록 의도된 상이한 실시 예에 의해 달성될 수 있음을 이해될 것이다. 본 명세서에서는, 본 명세서의 다른 곳에서 표시된 바와 같이, 유사한 도면 부호는 유사한 구성 또는 특징을 나타내기 위한 것이다.
일부 실시 예에서, 신경망 트레이닝을 수행하기 위한 시스템은 그래픽 처리 장치(GPU, Graphics Processing Unit) 시스템 및 계산 저장 시스템을 포함할 수 있다. GPU 시스템('GPU 클러스터(GPU cluster)'라고 지칭될 수 있음)은 단일 GPU 또는 복수의 GPU를 포함할 수 있다. 연산 저장 시스템('전산 저장 클러스터(computational storage cluster)'로도 지칭될 수 있음)은 단일 연산 저장 장치 또는 복수의 연산 저장 장치를 포함할 수 있다. 신경망은 하부 다층 퍼셉트론(bottom multilayer perceptron), 상부 다층 퍼셉트론(top multilayer perceptron), 및 하나 이상의 임베딩 테이블(embedding tables)을 포함할 수 있다. 하부 다층 퍼셉트론은 연속 입력을 처리할 수 있고, 임베딩 테이블은 범주형 입력을 처리할 수 있다. 하부 다층 퍼셉트론 및 임베딩 테이블의 출력은 출력을 생성하기 위해 상부 다층 퍼셉트론에서 결합 및 추가 처리될 수 있다.
하부 다층 퍼셉트론 및 상부 다층 퍼셉트론은 GPU 시스템에서 구현될 수 있고, 임베딩 테이블은 연산 저장 시스템에서 구현될 수 있다. 연산 저장 시스템은 복수의 연산 저장 장치를 포함할 수 있으며, 각각은 연산 저장 장치와 (i) GPU 시스템 및 (ii) 훈련 동작을 관리할 수 있는 호스트 간의 통신을 위해 개별 메모리(예를 들어, DRAM(Dynamic Random Access Memory))의 일부를 노출할 수 있다. 연산 저장 시스템은 이전 패스 동안 계산된 그래디언트(gradients)에 기초하여 임베딩 테이블이 업데이트될 때까지 기다리지 않고 임베디드 벡터(embedded vectors)를 계산할 수 있다. 연산 저장 시스템은 그 다음 그래디언트(gradients)에 기초하여 계산된 임베디드 벡터(embedded vectors)를 업데이트할 수 있다. 이 접근 방식을 이용하면 처리 시간이 단축될 수 있다.
도 1a는 본 개시의 일 실시예에 따른 신경망을 나타내는 블록도이다. 일부 실시 예에서, 신경망은 딥 러닝 추천 모델(DLRM, Deep Learning Recommendation Model)일 수 있고, 하부 다층 퍼셉트론(105), 하나 이상의 임베딩 테이블(110), 및 상부 다층 퍼셉트론(115)을 포함할 수 있다. 각각의 다층 퍼셉트론은 복수의 완전 연결(FC) 계층을 포함할 수 있다. 이러한 신경망은 사용자의 선호도를 학습할 수 있고, 이러한 선호도와 다른 사용자의 선호도를 기반으로 사용자에게 추천하는 데 매우 적합할 수 있다. 신경망 트레이닝은 많은 트레이닝을 반복적으로 수행하는 것을 포함할 수 있고, 각각은 주어진 가중치 세트에 대한 비용 함수의 값을 계산하기 위해 순방향 패스를 수행하는 것, 가중치에 대한 비용 함수의 하나 이상의 그래디언트(gradients)를 계산하는 것, 및 그래디언트 및 학습률에 기초하여 가중치를 업데이트하는 것을 포함할 수 있다.
추론 및 트레이닝 중 포워드 패스(forward passes) 동작 모두에 대하여, 신경망은 조밀하고(dense) 연속적인(continuous) 입력 및 희소하고(sparse) 카테고리컬한(categorical) 입력을 모두 수신할 수 있다. 조밀한 입력은 하부 다층 퍼셉트론(105)으로 처리될 수 있고, 희소한 입력은 임베딩 작업, 예를 들어, 임베딩 테이블(110)로 처리될 수 있다. 희소한 입력은 인덱스의 벡터일 수 있고, 각 인덱스는 임베딩 매트릭스의 로우(rows)를 식별할 수 있다. 인덱스의 벡터는 구성이 인덱스를 포함하는 벡터(vectors the elements of which include indices)일 수 있다. 하나의 희소 입력 벡터에 대한 임베딩 동작은 희소 입력 벡터의 인덱스에 의해 식별된 로우를 검색하고, 행의 합을 계산하여 "임베디드 벡터"로 지칭될 수 있는 벡터를 형성하는 것을 포함할 수 있다. 하부 다층 퍼셉트론(105) 및 임베딩 테이블(110)의 출력은 피쳐 상호작용 함수(feature interaction function)에서 결합될 수 있고, 신경망의 출력(예를 들어, 예측 클릭률(CTR, predicted Click-Through Rate))을 생성하는 상부 다층 퍼셉트론(115)에 공급될 수 있다.
도 1b는 예시적인 실시예에 따른 신경망의 구조를 설명하기 위한 블록도이다. 도 1b를 참조하면, 신경망은 중앙 처리 장치(CPU, Central Processing Unit) 및 그래픽 처리 장치(GPU, Graphics Processing Unit) 클러스터(125) 및 시스템 인터커넥트(135, system interconnect)를 통해 연산 저장 시스템(130)에 연결된 메인 메모리를 포함하는 호스트(120)를 포함하는 시스템에서 구현될 수 있다. 상기 시스템 인터커넥트(135)는 캐시 코히어런트 시스템 인터커넥트(cache coherent system interconnect), 예를 들어, Compute Express Link(CXL) 시스템 인터커넥트일 수 있다. 연산 저장 시스템(130)은 임베딩 행렬을 저장할 수 있고, 임베딩 동작을 수행할 수 있다. GPU 시스템(125)은 하부 다층 퍼셉트론(105) 및 상부 다층 퍼셉트론(115)을 구현할 수 있다. 호스트(120)는 연산 저장 시스템(130) 및 GPU 시스템(125)의 동작을 관리할 수 있다.
도 1c는 예시적 실시 예에 따른 GPU 시스템(125)의 블록도이다. 도 1c에서 설명의 편의를 위해 GPU 시스템(125)이 4개의 GPU(140)를 포함하는 것으로 도시되나 본 개시가 이에 제한되는 것은 아니며, 일부 실시예에서 GPU 시스템은 더 많거나 더 적은 GPU를 포함할 수 있다. 예를 들어, GPU 시스템(125)은 2개 내지 8개의 GPU를 포함할 수 있다. 각각의 GPU(140)는 연관된 L2 캐시(145, Level 2 cache) 및 연관된 VRAM(150, Video Random Access Memory)를 포함할 수 있다. 각 GPU는 프레임 버퍼에 이미지를 생성하도록 설계된 회로일 수도 있고, 신경망 연산을 수행하기 위한 다른 적절한 회로일 수도 있다. 본 명세서에 사용된 바와 같이, 용어 "GPU"는 "처리 회로"와 동의어일 수 있고, GPU 시스템(125)의 처리 회로와 연산 저장 시스템(130)의 처리 회로의 구별을 용이하게 하기 위해 사용될 수 있다. 모든 L2 캐시(145)는 시스템 인터커넥트 인터페이스 컨트롤러(160)를 통해 시스템 인터커넥트(135)에 연결될 수 있는 코히어런스 에이전트(155)에 연결될 수 있다. 예를 들어, 시스템 인터커넥트 인터페이스 컨트롤러(160)는 CXL 인터페이스일 수 있다. 코히어런스 에이전트는 L2 캐시(145)의 캐시 일관성을 보장하도록 구성된 하드웨어 및 소프트웨어의 임의의 적절한 조합일 수 있다. GPU 시스템(125)은 고대역폭 내부 버스를 가질 수 있다. VRAM(150) 각각은 메모리 스위치(165) 및 시스템 상호접속 인터페이스 컨트롤러(160, system interconnect interface controller)를 통해 시스템 인터커넥트(135, system interconnect)에 연결될 수 있다. GPU 시스템(125)의 시스템 인터커넥트 인터페이스 컨트롤러(160)는 캐시 프로토콜 및 메모리 프로토콜을 지원할 수 있다.
도 1d는 예시적 실시 예에 따른 연산 저장 시스템(도 1b의 130)의 블록도이다. 도 1d를 참조하면, 연산 저장 시스템(130)은 복수의 연산 저장 장치(170)를 포함할 수 있고, 그 중 2개가 도 1d에 도시될 수 있다. 연산 저장 장치(170) 각각은 캐시(175)(예를 들어, DRAM 캐시), 컨트롤러(180) 및 백업 스토리지(185)를 포함할 수 있다. 예를 들어, 캐시(172)는 DRAM 캐시일 수 있다. 예를 들어, 컨트롤러(180)는 FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)일 수 있다. 예를 들어, 백업 스토리지(185)는 SSD(Solid State Drive)와 같은 영구 스토리지(persistent storage)일 수 있다. 연산 저장 장치(170) 각각은 도시된 바와 같이 메모리 스위치(165) 및 시스템 상호접속 인터페이스 컨트롤러(160)를 통해 시스템 인터커넥트(135)에 연결될 수 있다. 시스템 인터커넥트(135)가 CXL 인터커넥트인 실시예에서, 연산 저장 장치(170) 각각은 CXL.io 포트를 통해 직접 연결된 CXL 유형-3 장치로 구성될 수 있다. 연산 저장 시스템(130)의 시스템 상호접속 인터페이스 컨트롤러(160)는 메모리 프로토콜을 지원할 수 있다. 임베딩 테이블은 비교적 클 수 있고, GPU(140)의 스토리지에 쉽게 맞지 않을 수 있다. 예를 들어, 임베딩 테이블은 각각 100GB일 수 있고, GPU(140)의 VRAM(150)에 쉽게 맞지 않을 수 있다. 임베딩 테이블(110)은 연산 저장 장치(170)의 백업 스토리지(185)에 저장될 수 있다.
도 1e는 예시적인 실시예에 따른 기억 조직도이다. 연산 저장 시스템(130)과의 GPU 및 호스트로부터의 통신은 연산 저장 장치(170)의 캐시(175)를 통해 수행될 수 있다. 도 1e에 도시된 바와 같이, 연산 저장 장치(170) 각각은 연산 저장 장치(170)의 캐시(175)의 일부(190)를 노출할 수 있다. 예를 들어, 연산 저장 장치(170) 각각은 연산 저장 장치(170)의 캐시(175)의 1% 내지 50%를 노출할 수 있다. 따라서, 호스트(120) 및 GPU(140) 각각이 노출된 부분으로부터 직접 독출하고 연산 저장 장치(170)의 캐시(175)의 노출된 부분(190)에 직접 기록할 수 있다.
연산 저장 장치(170)의 캐시(175)의 노출된 부분(190) 각각의 크기는 (i) 미해결 임베딩의 수(즉, GPU(140)가 읽기 전에 계산된 임베디드 벡터의 수) (ii) 임베디드 벡터의 길이, (iii) 임베딩 테이블의 수 및 (iv) 훈련이 배치로 수행되는 배치 크기의 곱과 같도록 선택될 수 있다. 시스템 관점에서, 연산 저장 시스템(130)은 메모리의 싱글 연속 영역(single contiguous region)으로 나타날 수 있고, 복수의 연속 영역은 각각 연산 저장 장치(170) 중 하나의 캐시(175)의 노출된 부분(190)일 수 있다. 예를 들어, 도 1f는, 노출된 메모리의 연속 영역의 제1 세트에 저장되고 제1 테이블(T1)에 대한 임베디드 벡터(195) 및 제1 세트와 인접하여 노출된 메모리의 연속 영역의 제2 세트에 저장되고 제2 테이블(T2)에 대한 임베디드 벡터(195)의 데이터 레이아웃도일 수 있다.
동작시, 연산 저장 시스템(130)에 의해 연산된 임베디드 벡터는 연산 저장 장치(170)의 캐시(175)의 노출된 부분(190)(예를 들어, 이터레이션-테이블-아이템 순서로) 저장될 수 있고, GPU(140)에 의해 연산 저장 장치(170)의 캐시(175)의 노출된 부분(190)으로부터 독출될 수 있다. 캐시 코히어런트 시스템 인터커넥트(135)의 사용은 GPU가 임베디드 벡터를 VRAM(150)에 먼저 복사하지 않고 GPU 시스템(125)의 L2 캐시(145)에 직접 복사하는 것을 가능하게 할 수 있다. 이는 시스템의 효율성을 크게 향상시킬 수 있습니다. 예를 들어, 시스템의 속도를 크게 높이고 신경망 작업당 에너지 소비를 줄일 수 있다. GPU 시스템(125)은 데이터 병렬 모드로 동작할 수 있고, 각각의 GPU(140)는 연산 저장 장치(170) 중 하나의 캐시(175)의 노출된 부분(190)으로부터 연산 저장 시스템(130)에 의해 생성된 임베디드 벡터의 각각의 서브 세트를 페치(fetch)하고 처리할 수 있다. 임베딩 테이블(110)의 가중치에 따른 비용 함수의 그래디언트(gradients)는 GPU 시스템(125)에서 구현되는 최상위 다층 퍼셉트론(115)에 의해 계산될 수 있고, GPU 시스템(125)에 의해, GPU(140)에 의해 연산 저장 장치(170)의 캐시(175)의 노출된 부분(190)에 기록될 수 있다. 연산 저장 장치(170)의 컨트롤러(180)는 그 다음 그래디언트에 기초하여 임베딩 테이블(110)을 업데이트할 수 있다.
GPU 시스템(125)의 L2 캐시(145)는, 전술한 바와 같이, GPU 시스템(125)의 코히어런스 에이전트(155)에 연결될 수 있고, 호스트(120)의 메인 메모리로부터 또는 위에서 언급된 바와 같이 연산 저장 장치(170)의 캐시(175)의 노출된 부분(190)으로부터 데이터를 직접 캐시할 수 있다. 각 GPU(140)의 VRAM(150)은 GPU 시스템(125)의 메모리 스위치(165)에 연결될 수 있고, 메모리 스위치(165)는 CXL mem 프로토콜을 통해 시스템 인터커넥트(135)와 통신할 수 있다. 그 결과, 각 GPU(140)의 모든 VRAM(150)이 시스템 인터커넥트(135)를 통해 시스템의 나머지 부분에 노출될 수 있다. 이와 같이, 호스트(120)는 덴스(dense) 입력 피쳐(feature)를 GPU(140)의 VRAM(150)에 직접 기록할 수 있고, GPU(140)의 VRAM(150)으로부터 결과를 읽을 수 있다.
일부 실시예에서, 트레이닝 파이프라인은 호스트(120)의 CPU로부터 시작한다. 입력 데이터의 처리는 호스트(120)에 의해 수행될 수 있는데, 이는 이러한 접근법이 서로 다른 셔플 및 파티션 체계를 구현할 수 있는 유연성을 제공하기 때문이다. 호스트(120)는 (i)GPU(140)가 호스트의 메인 메모리로부터 직접 덴스(dense) 입력 피쳐를 페치(fetch)하도록 GPU(140)를 제어하고, (ii) 입출력(io) 프로토콜을 통해 희소 피쳐(sparse features)를 연산 저장 장치(170)에 보낼 수 있다. 예를 들어, 호스트(120)는 CXL.io를 통해 희소 피쳐(sparse features)를 연산 저장 장치(170)에 보낼 수 있다. 연산 저장 장치(170)는 백업 스토리지(185)로부터 연산 저장 장치(170)의 캐시(175)로 대응하는 로우를 페치(fetch)할 수 있고, 현재 이터레이션에 의해 사용되는 로우를 컨트롤러(180)의 온-칩 캐시(예를 들어, 컨트롤러(180)의 메모리 또는 버퍼)로 로드할 수 있다.
도 1g는 예시적인 실시예에 따른 프로세스 플로우(processing flow)를 도시한 도면이다. 102에서, 최하부 다층 퍼셉트론(105)은 GPU 시스템(125)에서 실행될 수 있고, 동시에 임베딩 동작은 계산 저장 시스템(130)에서 실행될 수 있다. 104에서, 피쳐 인터랙션(feature interaction)은 상부 다층 퍼셉트론(115)에 대한 입력을 형성하기 위해 하부 다층 퍼셉트론(105) 임베딩 연산의 출력을 결합할 수 있다. 예를 들어, 피쳐 인터랙션(feature interaction)은 상부 다층 퍼셉트론(115)에 대한 입력을 형성하기 위해 벡터 내적을 사용하여 하부 다층 퍼셉트론(105) 임베딩 연산의 출력을 결합할 수 있다. 106에서, 상부 다층 퍼셉트론(115)은 GPU 시스템(125)에서 실행될 수 있다. 108에서, 역전파(backward propagation)가 수행될 수 있다. 112에서, 임베딩 테이블을 업데이트하는 데 사용하기 위해 그래디언트가 연산 저장 시스템(130)에 다시 기록될 수 있다.
도 2a는 예시적인 실시예에 따라 계산 저장 장치(170)에 채용될 수 있는 메모리 계층을 도시한 도면이다. 연산 저장 장치(170)의 컨트롤러(180)(예를 들어, FPGA)는 L1 캐시(level 1 cache), 예를 들어 수 메가바이트(MB)의 온-칩 버퍼를 포함할 수 있다. 또한, 연산 저장 장치(170)는 DRAM 캐시로도 지칭될 수 있는 L2 캐시(175, level 2 cache)로서 동작할 수 있는 수 기가바이트(GB)의 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. L2 캐시(175)는 호스트(120)에서 관리되고, 온-칩 버퍼는 컨트롤러(180)에서 관리될 수 있다. L1 및 L2 캐시 모두 후기입 캐시(write-back caches)로 구현될 수 있다. 예를 들어, 데이터는 L2 캐시에서 백업 스토리지로 후기입되거나, 캐시에서 제거될 때 L1 캐시에서 L2 캐시로 후기입될 수 있다.
도 2b는 각각의 연산 저장 장치(170)의 컨트롤러(180)에서 구현될 수 있는 구조 및 프로세스를 도시한 도면이다. 도 2b에 도시된 구조와 프로세스는 "임베딩 커널(embedding kernel)"으로 지칭될 수 있다. 임베딩 커널은 스위칭 컨트롤러(210)에 의해 제어되는 크로스바 스위치(205, cross-bar switch)를 포함할 수 있다. 동작시, 희소 입력 피쳐 벡터(sparse input feature vectors)가 호스트(120)로부터 수신되고 입력 선입선출 구조(215, FIFO, First-In-First-Out structure)로 공급될 수 있다.
현재 입력 피쳐 벡터(current input feature vector)는 결합 회로(225, join circuit)의 입력 피쳐 벡터 레지스터(220, input feature vector registe)에 저장된 이전 입력 피쳐 벡터(previous input feature vector)와 비교될 수 있다. 결합 회로(225, join circuit)는 (i) 첫 번째 출력에서 현재 입력 피쳐 벡터와 이전 입력 피쳐 벡터 모두에 공통인 인덱스 세트 및 (ii) 두 번째 출력에서 이전 입력 피쳐 벡터가 아닌 현재 입력 피쳐 벡터에 존재하는 인덱스 세트를 생성할 수 있다.
임베딩 테이블(110) 각각은 크로스바 스위치(205)에 연결된 복수의 레인(230) 중 각각의 레인(230)에 의해 처리될 수 있다. 복수의 레인(230) 각각은 병렬의 독립적인 처리 경로의 세트 중 하나일 수 있다. 이전 입력 피쳐 벡터(previous input feature vector)에 대응하는 임베딩 테이블의 로우는 온-칩 버퍼에 저장될 수 있고, 이는 복수의 레인 벡터 버퍼로 구성될 수 있다. 복수의 레인 벡터 퍼버 중 하나인 첫 번째 레인(Lane 1)의 레인 버퍼(235, Lane VBuf)는 도 2b에 명시적으로 도시되어 있다. 이와 같이, 현재 입력 피쳐 벡터(current input feature vector)와 이전 입력 피쳐 벡터(previous input feature vector) 모두에 공통된 인덱스 세트에 대응하는 임베딩 테이블의 로우는 L2 캐시(175) 또는 백업 스토리지(185)로부터 페치(fetch)될 필요가 없을 수 있다. 나머지 로우(예를 들어, 이전 입력 피쳐 벡터가 아닌 현재 입력 피쳐 벡터에 있는 인덱스 집합에 해당하는 로우)는 가중치 독출 회로(240, weight reading circuit)에 의해 L2 캐시(175) 또는 백업 스토리지(185)로부터 페치(fetch)될 수 있고, 크로스바 스위치(205)에 공급될 수 있다. 각 레인에서 선택된 로우의 합은 벡터 어큐뮬레이터(245, vector accumulator)를 이용하여 형성될 수 있다. 이러한 방식으로 연산된 임베디드 벡터는 아웃스탠딩 버퍼(250, outstanding buffer)에 저장되어, 후술되는 바와 같이 그래디언트에 대한 변경을 설명하기 위해 가능한 추가 처리를 기다릴 수 있다.
그래디언트에 따른 가중치 업데이트는 다음과 같이 진행될 수 있다. 그래디언트는 GPU 시스템(125)에 의해 저장되었을 수 있는 그라디언트 독출 회로(255, gradient reading circuit)에 의해 연산 저장 장치(170)의 L2 캐시(175)의 노출된 부분(190)으로부터 독출될 수 있다. 후속하여, 그래디언트 업데이트 회로(260)에서 크로스바 스위치(205)에 의해 그래디언트 업데이트 회로(260)에 공급된 임의의 로우의 가중치를 업데이트하기 위해 그래디언트가 사용될 수 있다. 도 2c를 참조하면, 이는 덧셈기(265)에서 각 로우에 그라디언트의 곱셈기(270)에 형성된 곱과 학습률을 더함으로써 달성될 수 있다. 임베딩 테이블(110)의 가중치에 따른 비용 함수의 그래디언트는 상부 다층 퍼셉트론(115)에 의해 계산될 수 있고, 설계 시 학습률은 수렴 과정의 불안정함(instability in the convergence process) 없이 합리적으로 적은 이터레이션으로 가중치 값이 정상 상태로 수렴하도록 선택될 수 있다.
일부 실시예에서, 임베디드 벡터는 이전 로우에 기초하여 연산되고, 그 다음 프로세스는 이전 로우와 업데이트된 로우 사이의 차이에 대한 벡터를 수정하는 데 사용될 수 있다. 상기 프로세스는 "스펙큘러티브 리커버리(speculative recovery)"라고 지칭될 수 있다. 예를 들어, 이전 임베딩 테이블의 로우 세트를 합산하여 형성된 임베디드 벡터는, 업데이트된 임베딩 테이블의 동일한 로우 세트를 합산했을 경우 얻을 수 있는 임베디드 벡터를 형성하기 위해, 그래디언트와 학습률의 곱에 N 배를 더함으로써 형성될 수 있다. 이 때, N은 현재 입력 피쳐 벡터와 입력 피쳐 벡터의 이전 배치(previous batch)에 공통적인 인덱스 수일 수 있다. 이 프로세스는 임베딩 테이블의 업데이트가 완료될 때까지 기다리지 않고 이터레이션에서 포함된 벡터를 연산하는 것을 가능하게 할 수 있다. 결과적으로, 후술되는 바와 같이, 처리 시간이 단축될 수 있다.
도 2d는 예시적 실시예에 따라, 이전 이터레이션과 현재 이터레이션 모두에서 추가된 로우 중 임베딩 테이블의 처음 두 로우가 이러한 이터레이션에서 포함된 벡터를 형성하는 프로세스를 도시한 도면이다. 그래디언트와 학습률의 곱은 현재 입력 피쳐 벡터와 입력 피쳐 벡터의 이전 배치 모두에 공통적인 인덱스 수를 곱할 수 있다. 이는 이전 입력 피쳐 벡터 배치에 해당하는 임베딩 테이블의 로우만 업데이트되고 현재 입력 피쳐 벡터에 해당하는 임베딩 테이블의 로우만 현재 임베디드 벡터를 계산하는 데 사용되기 때문일 수 있다. 입력 피쳐 벡터의 이전 배치와 이 곱은 "아웃스탠딩" 임베디드 벡터(275, "outstanding" embedded vector)에 추가되어 임베디드 벡터를 계산하기 전에 임베디드 테이블이 업데이트 되었더라면 획득되었을 임베디드 벡터(280)를 계산할 수 있다. 상기 아웃스탠딩 임베디드 벡터(275)는 원본 임베딩 테이블(old (or Original) embedding table)을 기반으로 계산될 수 있다.
도 2e는 업데이트를 수행하기 위해 사용될 수 있는 스펙큘러티브 리커버리 회로(speculative recovery circuit)를 도시한 도면이다. 현재 입력 피쳐 벡터와 입력 피쳐 벡터의 이전 배치 모두에 공통되는 기울기, 학습률 및 인덱스 수(binCount)는 곱셈기(270)에서 함께 곱해지고 덧셈기(265)에서 아웃스탠딩 벡터(outstanding vector)에 추가되어 업데이트된 임베디드 벡터를 형성할 수 있다.
다시 도 2b를 참조하면, 임베딩 커널(embedding kernel)에서 이 프로세스는 스펙큘러티브 리커버리 회로(285, speculative recovery circuit)에 의해 수행되고, 업데이트된 임베디드 벡터는 벡터 기록 회로(290, vector writing circuit)에 의해 연산 저장 장치(170)의 L2 캐시(175)의 노출된 부분(190)에 기록될 수 있다. 이 때, 업데이트된 임베디드 벡터는 GPU 시스템(125)에 의해 독출될 수 있다. 업데이트된 임베디드 벡터는 업데이트된 로우를 L2 캐시(175) 또는 백업 스토리지(185)에 기록할 수 있다. 크로스바 선택 로직(crossbar selection logic)은 그래디언트 업데이터(gradient updater)의 로우에 우선순위를 지정할 수 있다. 크로스바 선택 로직은 스위칭 컨트롤러(210)에서 구현될 수 있다. 임베딩 테이블의 로우는 현재 및 이전 입력 피쳐 벡터 사이에 중첩된 인덱스가 있는 경우 크로스바 스위치(205)의 입력으로 다시 포워딩될 수 있다. 또한, 크로스바 선택 로직은 벡터 버퍼(235)에 사용 가능한 공간이 있을 때 미래의 입력을 위해 로우를 프리페치(prefetch)할 수 있다.
도 3은 임베디드 벡터의 다음 이터레이션을 위한 계산을 시작하기 전에 임베딩 테이블이 업데이트될 때까지 기다리는 것을 포함하는 제1 프로세스 플로우(300)를 도시한다. 305에서 GPU 시스템이 역방향 패스(backward pass)를 완료한 후, 310에서 연산 저장 시스템(130)은 행을 업데이트하고, 315에서 임베디드 벡터를 연산할 수 있다. 317에서 매개변수가 업데이트될 수 있다. 318에서 트레이닝 데이터의 현재 배치는 사전 처리될 수 있고, GPU로 전송될 수 있다. 318은 "데이터 로드" 단계로 지칭될 수 있다. 후속하여, 319에서 모델의 정방향 패스(forward pass) 추론이 수행될 수 있다. 또한, 도 3은 330에서 업데이트되는 아웃스탠딩 임베디드 벡터를 계산하기 위해 325에서 스펙큘러티브 임베딩(speculative embedding)이 수행되는 제2 프로세스 플로우(320)를 도시하고 있다. 335에서, 로우들은 업데이트될 수 있다. 도 3에서, 제2 프로세스 플로우(320)는 제1 프로세스 플로우(300)보다 빠르게 완료될 수 있다. 예를 들어, 제2 프로세스 플로우(320)는 제1 프로세스 플로우(300)보다 약 5ms 더 빠르게 완료될 수 있다.
도 4는 예시적인 실시예 따른 제1 방법의 순서도이다. 제1 방법은 단계들(405, 410, 415)을 포함할 수 있다. 405에서, 연산 저장 시스템의 하나 이상의 연산 저장 장치의 제1 연산 저장 장치에 의해 임베딩 테이블을 저장할 수 있다. 410에서, 제1 연산 저장 디바이스에 의해, 제1 인덱스 및 제2 인덱스를 포함하는 인덱스 벡터를 수신할 수 있다. 415에서, 제1 연산 저장 장치에 의해, 제1 인덱스에 대응하는 임베딩 테이블의 제1 로우 및 제2 인덱스에 대응하는 임베딩 테이블의 제2 로우에 기초하여 임베디드 벡터를 계산할 수 있다. 연산 저장 시스템은 캐시-코히어런트 시스템 인터커넥트(cache-coherent system interconnect)에 의해 그래픽 처리 유닛 클러스터에 연결될 수 있고, 그래픽 처리 유닛 클러스터는 하나 이상의 그래픽 처리 장치를 포함할 수 있다.
도 5는 예시적인 실시예에 따른 제2 방법의 순서도이다. 제1 방법은 단계들(405, 410, 420)을 포함할 수 있다. 505에서, 연산 저장 장치가 연산 저장 장치의 백업 스토리지에 신경망 임베딩 동작(neural network embedding operation)을 위한 임베딩 테이블을 저장할 수 있다. 510에서, 연산 저장 디바이스에 의해, 제1 인덱스 및 제2 인덱스를 포함하는 제1 인덱스 벡터를 수신할 수 있다. 515에서, 연산 저장 장치에 의해, 백업 스토리지로부터 연산 저장 장치의 제1 캐시로 제1 인덱스에 대응하는 임베딩 테이블의 제1 로우 및 제2 인덱스에 대응하는 임베딩 테이블의 제2 로우를 검색할 수 있다. 520에서, 연산 저장 장치에 의해, 제1 로우 및 제2 로우에 기초하여 제1 임베디드 벡터를 계산할 수 있다.
본 명세서에 사용된 바와 같이, 어떤 것의 "일부"는 물건의 "적어도 일부"를 의미할 수 있고, 그 자체로 물건의 전부 또는 전부 미만을 의미할 수 있다. 이와 같이, "일부"는 특별한 경우로서 전체를 포함할 수 있고, 전체는 사물의 일부에 대한 예시일 수 있다. 본 명세서에서 사용된 바와 같이, 제2 수량이 제1 수량 X의 "Y 이내"인 경우, 이는 제2 수량이 적어도 X-Y이고 제2 수량은 최대 X+Y임을 의미할 수 있다. 본 명세서에서 사용된 바와 같이, 제2 숫자가 제1 숫자의 "Y% 이내"인 경우, 이는 제2 숫자가 제2 숫자의 최소 (1-Y/100)배이고 제2 숫자가 제1 숫자의 최대 (1+Y/100)배임을 의미할 수 있다. 본 명세서에 사용된 바와 같이, 용어 "또는"은 "및/또는"으로 해석될 수 있고, 예를 들어 "A 또는 B"는 "A" 또는 "B" 또는 "A 및 B" 중 어느 하나를 의미할 수 있다.
본 개시의 배경 부분에서 제공되는 설명은 단지 맥락을 설명하기 위해 포함될 수 있고, 이에 개시된 내용은 선행 기술로 인정되지 않는다. 설명된 구성 중 임의의 것 또는 구성의 임의의 조합(예를 들어, 여기에 포함된 임의의 시스템 다이어그램에서)은 여기에 포함된 임의의 순서도의 단계 중 하나 이상을 수행하는 데 사용될 수 있다. 또한, (i) 단계들은 예시적인 단계일 수 있고, 명시적으로 다루지 않은 다양한 추가 단계를 포함할 수 있으며, (ii) 단계들의 시간적 순서는 변경될 수 있다.
하나 이상의 처리 회로는 여기에 설명된 방법을 수행할 수 있고, 예를 들어, 임의의 연산 저장 장치(170)의 컨트롤러(180)는 처리 회로를 포함하거나 포함할 수 있다. "처리 회로" 및 "처리 수단"이라는 용어는 데이터 또는 디지털 신호를 처리하는 데 사용되는 하드웨어, 펌웨어 및 소프트웨어의 임의의 조합을 의미할 수 있다. 예를 들어, 처리 회로 하드웨어는 application specific integrated circuits (ASICs), general purpose or special purpose central processing units (CPUs), digital signal processors (DSPs), graphics processing units (GPUs), 및 programmable logic devices such as field programmable gate arrays (FPGAs) 중 적어도 하나를 포함할 수 있다. 처리 회로에서 각 기능은 해당 기능을 수행하도록 구성된 하드웨어 또는 비일시적 저장 매체에 저장된 명령을 실행하도록 구성된 CPU와 같은 보다 범용 하드웨어에 의해 수행될 수 있다. 처리 회로는 단일 인쇄 회로 기판(PCB)에서 제조되거나 상호 연결된 복수의 PCB에 분산될 수 있다. 처리 회로는 다른 처리 회로를 포함할 수 있다. 예를 들어, 처리 회로는 PCB에서 상호 연결된 두 개의 처리 회로, FPGA 및 CPU를 포함할 수 있다.
방법 또는 제1 변수가 제2 변수에 "기초하여" 언급되는 경우, 그것은 제2 변수가 방법에 대한 입력이거나 제1 변수에 영향을 미친다는 것을 의미할 수 있다. 예를 들어, 제2 변수는 제1 변수를 계산하는 함수에 대한 입력이거나, 제1 변수는 제2 변수와 동일할 수 있고, 제1 변수와 제2 변수는 메모리의 동일한 위치에 저장될 수 있다. "제1", "제2", "제3" 등이 다양한 구성, 구성, 영역, 층 및/또는 섹션을 설명하기 위해 본 명세서에서 사용될 수 있지만, 이러한 구성, 구성, 영역, 층 및/또는 섹션은 이러한 조건에 의해 제한되지 않는다. 이러한 용어는 하나의 구성, 구성 구성, 영역, 레이어 또는 섹션을 다른 구성, 구성, 영역, 레이어 또는 섹션과 구별하는 데 사용될 수 있다. 따라서, 본 명세서에서 논의되는 제1 구성, 구성, 영역, 층 또는 부분은 본 발명의 사상 및 범위를 벗어나지 않으면서 제2 구성, 구성, 영역, 층 또는 부분으로 명명될 수 있다.
본 명세서에서 사용된 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 본 명세서에 사용된 바와 같이, "실질적으로", "약" 및 유사한 용어는 정도의 용어가 아닌 근사치의 용어로 사용되며, 당업자가 인식할 수 있는 측정 또는 계산된 값의 고유한 편차를 설명하기 위한 것일 수 있다.
"주요 성분"은 조성물 또는 제품에 있는 임의의 다른 단일 성분의 양보다 많은 양으로 조성물, 중합체 또는 제품에 존재하는 성분을 지칭할 수 있다. 대조적으로, "1차 성분"은 조성물, 중합체 또는 제품의 적어도 50 중량% 이상을 구성하는 성분을 지칭할 수 있다. 다수의 항목에 적용될 때 "주요 부분"은 항목의 적어도 절반을 의미할 수 있다. 물질로 "만들어진" 또는 "구성된" 것으로 기술된 모든 구조 또는 층은 (i) 일부 실시양태에서 해당 물질을 우선 구성 구성(primary component)로 포함하거나 (ii) 해당 물질을 주요 구성 구성(major component)로 포함하는 것으로 이해될 수 있다.
단수 형태는 문맥이 명백하게 달리 나타내지 않는 한 복수 형태도 포함하는 것으로 의도될 수 있다. 본 명세서에서 사용될 때 "포함하다" 및/또는 "포함하는"이라는 용어는 언급된 특징, 정수, 단계, 연산, 구성 및/또는 구성의 존재를 지정하는 것으로 추가로 이해될 수 있고, 하나 이상의 다른 특징, 정수, 단계, 연산, 구성, 구성 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않을 수 있다. "및/또는"이라는 용어는 관련된 나열된 항목 중 하나 이상의 모든 조합을 포함할 수 있다. "적어도 다음 중 하나"와 같은 표현은 구성 목록 앞에 올 때 구성의 전체 목록을 수정하고 목록의 개별 구성을 수정하지 않을 수 있다. 또한, 본 발명의 실시 예를 설명할 때 "~할 수 있다"의 사용은 "본 발명의 하나 이상의 실시 예"를 의미할 수 있다. 또한, "예시적인"이라는 용어는 예시 또는 예시를 지칭하기 위한 것일 수 있다. 본 명세서에 사용된 바와 같이, 용어 "사용하다", "사용하는" 및 "사용된"은 각각 용어 "활용하다", "이용하다" 및 "이용하다"와 동의어로 간주될 수 있다.
구성 또는 레이어가 다른 구성 또는 레이어 "상에", "연결되어", "커플링(coupling)되어", 또는 "인접한" 것으로 언급될 때, 다른 구성 또는 층에 직접 연결되거나, 연결되거나, 인접할 수 있거나, 하나 이상의 중간 구성 또는 층이 존재할 수 있다. 대조적으로, 구성 또는 층이 다른 구성 또는 층에 "직접", "직접 연결된", "직접 결합된" 또는 "바로 인접한"으로 언급되는 경우, 중간 구성 또는 층이 존재하지 않을 수 있다.
여기에 인용된 임의의 수치 범위는 인용된 범위 내에 포함된 동일한 수치 정밀도의 모든 하위 범위를 포함하도록 의도될 수 있다. 예를 들어, "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. 복수의 그래픽 처리 장치를 포함하는 그래픽 처리 유닛 클러스터; 및
    복수의 연산 저장 장치를 포함하고, 캐시-코히어런트 시스템 인터커넥트(cache-coherent system interconnect)에 의해 상기 그래픽 처리 유닛 클러스터에 연결된 연산 저장 클러스터(computational storage cluster)를 포함하고,
    상기 복수의 연산 저장 장치는,
    임베딩 테이블을 저장하고, 제1 인덱스 및 제2 인덱스를 포함하는 인덱스 벡터를 수신하고, 상기 제1 인덱스에 대응되는 상기 임베딩 테이블의 제1 로우 및 상기 제2 인덱스에 대응되는 상기 임베딩 테이블의 제2 로우에 기초하여 임베디드 벡터를 계산하는 제1 연산 저장 장치를 포함하는 신경망 트레이닝 시스템.
  2. 제1항에 있어서,
    상기 복수의 연산 저장 장치는 제2 연산 저장 장치를 더 포함하고,
    상기 연산 저장 클러스터는,
    상기 제1 연산 저장 장치, 상기 제2 연산 저장 장치, 및 상기 캐시-코히어런트 시스템 인터커넥트에 연결된 인터페이스 컨트롤러에 연결된 메모리 스위치를 더 포함하는 것을 특징으로 하는 신경망 트레이닝 시스템.
  3. 제2항에 있어서,
    상기 제1 연산 저장 장치는 메모리를 더 포함하고,
    상기 제1 연산 저장 장치는 상기 메모리 스위치 및 상기 인터페이스 컨트롤러를 통해 상기 메모리의 일부를 노출시키도록 구성되는 것을 특징으로 하는 신경망 트레이닝 시스템.
  4. 제3항에 있어서,
    상기 제1 연산 저장 장치는,
    상기 메모리의 일부에 상기 임베디드 벡터를 저장하도록 구성되는 것을 특징으로 하는 신경망 트레이닝 시스템.
  5. 제4항에 있어서,
    상기 복수의 그래픽 처리 장치는,
    상기 메모리의 일부로부터 상기 임베디드 벡터를 독출하도록 구성되는 제1 그래픽 처리 장치를 포함하는 것을 특징으로 하는 신경망 트레이닝 시스템.
  6. 제5항에 있어서,
    상기 제1 그래픽 처리 장치는,
    상기 제1 그래픽 처리 장치의 캐시에 상기 임베디드 벡터를 저장하도록 구성되는 것을 특징으로 하는 신경망 트레이닝 시스템.
  7. 제5항에 있어서,
    상기 제1 그래픽 처리 장치는,
    상기 임베딩 테이블의 제1 로우에 대한 비용 함수의 그래디언트(gradient)를 계산하고, 상기 메모리의 일부에 상기 그래디언트를 저장하도록 구성되는 것을 특징으로 하는 신경망 트레이닝 시스템.
  8. 제7항에 있어서,
    상기 제1 연산 저장 장치는,
    상기 그래디언트에 기초하여 상기 임베딩 테이블의 상기 제1 로우의 구성을 업데이트하도록 구성되는 것을 특징으로 하는 신경망 트레이닝 시스템.
  9. 제1항에 있어서,
    상기 그래픽 처리 유닛 클러스터는,
    제1 다층 퍼셉트론 및 제2 다층 퍼셉트론으로 동작하도록 구성되는 것을 특징으로 하는 신경망 트레이닝 시스템.
  10. 제1항에 있어서,
    상기 캐시-코히어런트 시스템 인터커넥트는,
    Compute Express Link(CXL) 시스템 인터커넥트인 것을 특징으로 하는 신경망 트레이닝 시스템.
  11. 제1항에 있어서,
    상기 그래픽 처리 유닛 클러스터는,
    상기 하나 이상의 그래픽 처리 장치의 제1 그래픽 처리 장치의 캐시, 및 상기 하나 이상의 그래픽 처리 장치의 제2 그래픽 처리 장치의 캐시 사이의 캐시 일관성을 유지하기 위한 코히어런스 에이전트(coherence agent)를 포함하는 것을 특징으로 하는 신경망 트레이닝 시스템.
  12. 연산 저장 클러스터에 포함된 제1 연산 저장 장치에 의해 임베딩 테이블을 저장하는 단계;
    상기 제1 연산 저장 장치에 의해, 제1 인덱스 및 제2 인덱스를 포함하는 인덱스 벡터를 수신하는 단계; 및
    상기 제1 연산 저장 장치에 의해, 상기 제1 인덱스에 대응되는 상기 임베딩 테이블의 제1 로우 및 상기 제2 인덱스에 대응되는 상기 임베딩 테이블의 제2 로우에 기초하여, 임베디드 벡터(embedded vector)를 계산하는 단계를 포함하고,
    상기 연산 저장 클러스터는,
    캐시-코히어런트 시스템 인터커넥트(cache-coherent system interconnect)에 의해 그래픽 처리 장치 클러스터에 연결되고,
    상기 그래픽 처리 장치 클러스터는 적어도 하나의 그래픽 처리 장치를 포함하는 것을 특징으로 하는 신경망 트레이닝 방법.
  13. 제12항에 있어서,
    상기 연산 저장 클러스터는,
    제2 연산 저장 장치 및 메모리 스위치를 더 포함하고,
    상기 메모리 스위치는,
    상기 제1 연산 저장 장치, 상기 제2 연산 저장 장치, 및 캐시-코히어런트 시스템 인터커넥트에 연결된 인터페이스 컨트롤러(interface controller)에 연결되는 것을 특징으로 하는 신경망 트레이닝 방법.
  14. 제13항에 있어서,
    상기 제1 연산 저장 장치는 메모리를 더 포함하고,
    상기 신경망 트레이닝 방법은,
    상기 제1 연산 저장 장치에 의해, 상기 메모리 스위치 및 상기 인터페이스 컨트롤러를 통해 상기 메모리의 일부를 노출시키는 단계를 더 포함하는 것을 특징으로 하는 신경망 트레이닝 방법.
  15. 제14항에 있어서,
    상기 제1 연산 저장 장치에 의해, 상기 메모리의 일부에 임베디드 벡터 (embedded vector)를 저장하는 단계를 더 포함하는 것을 특징으로 하는 신경망 트레이닝 방법.
  16. 제15항에 있어서,
    상기 적어도 하나의 그래픽 처리 장치는,
    상기 메모리의 일부로부터 상기 임베디드 벡터를 독출하도록 구성되는 제1 그래픽 처리 장치를 포함하는 것을 특징으로 하는 신경망 트레이닝 방법.
  17. 제16항에 있어서,
    상기 제1 그래픽 처리 장치는,
    상기 임베디드 벡터를 상기 제1 그래픽 처리 장치의 캐시에 저장하도록 구성되는 것을 특징으로 하는 신경망 트레이닝 방법.
  18. 제16항에 있어서,
    상기 제1 그래픽 처리 장치는,
    상기 임베딩 테이블의 제1 로우에 대한 비용 함수의 그래디언트(gradient)를 연산하고, 상기 메모리의 일부에 상기 그래디언트를 저장하도록 구성되는 것을 특징으로 하는 신경망 트레이닝 방법.
  19. 제18항에 있어서,
    상기 제1 연산 저장 장치는,
    상기 그래디언트에 기초하여 상기 임베딩 테이블의 제1 로우의 구성을 업데이트하도록 구성되는 것을 특징으로 하는 신경망 트레이닝 방법.
  20. 적어도 하나의 그래픽 처리 장치를 포함하는 그래픽 처리 유닛 클러스터; 및
    적어도 하나의 연산 저장 장치를 포함하고, 캐시-코히어런트 시스템 인터커넥트(cache-coherent system interconnect)에 의해 상기 그래픽 처리 유닛 클러스터에 연결된 연산 저장 클러스터(computational storage cluster)를 포함하고,
    상기 적어도 하나의 연산 저장 장치는,
    영구 스토리지(persistent storage) 및 처리 수단을 포함하는 제1 연산 저장 장치를 포함하고,
    상기 처리 수단은,
    임베딩 테이블을 저장하고, 제1 인덱스 및 제2 인덱스를 포함하는 인덱스 벡터를 수신하고, 상기 제1 인덱스에 대응되는 상기 임베딩 테이블의 제1 로우 및 상기 제2 인덱스에 대응되는 상기 임베딩 테이블의 제2 로우에 기초하여 임베디드 벡터를 계산하도록 구성된 시스템.


KR1020220049570A 2021-11-11 2022-04-21 엑셀러레이션을 이용한 신경망 트레이닝 시스템 및 이의 신경망 트레이닝 방법 KR20230068963A (ko)

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
KR20230068963A true KR20230068963A (ko) 2023-05-18

Family

ID=83506398

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220049570A KR20230068963A (ko) 2021-11-11 2022-04-21 엑셀러레이션을 이용한 신경망 트레이닝 시스템 및 이의 신경망 트레이닝 방법

Country Status (5)

Country Link
US (1) US20230147472A1 (ko)
EP (1) EP4180978A1 (ko)
KR (1) KR20230068963A (ko)
CN (1) CN116108916A (ko)
TW (1) TW202324203A (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210311897A1 (en) * 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. Memory with cache-coherent interconnect

Also Published As

Publication number Publication date
US20230147472A1 (en) 2023-05-11
TW202324203A (zh) 2023-06-16
CN116108916A (zh) 2023-05-12
EP4180978A1 (en) 2023-05-17

Similar Documents

Publication Publication Date Title
JP6348561B2 (ja) マルチコア最適化リカレントニューラルネットワーク用のシステムおよび方法
CN111164617B (zh) 具有交叉连接优化的脉动神经网络引擎
KR102175044B1 (ko) 인공 신경망 역방향 트레이닝 실행용 장치와 방법
US10410112B2 (en) Apparatus and method for performing a forward operation of artificil neural networks
US20160196488A1 (en) Neural network computing device, system and method
CN111819578A (zh) 使用带有急速更新的分布式参数服务器对神经网络进行优化的异步训练
US20190138922A1 (en) Apparatus and methods for forward propagation in neural networks supporting discrete data
JP2022130363A (ja) 機械学習モデルを改良して局所性を改善させること
CN115136115A (zh) 使用共享便笺式存储器的向量简化
CN110580519B (zh) 一种卷积运算装置及其方法
EP4180979A1 (en) Neural network training with acceleration
US20190130274A1 (en) Apparatus and methods for backward propagation in neural networks supporting discrete data
TWI758223B (zh) 具有動態最小批次尺寸之運算方法,以及用於執行該方法之運算系統及電腦可讀儲存媒體
KR20230068963A (ko) 엑셀러레이션을 이용한 신경망 트레이닝 시스템 및 이의 신경망 트레이닝 방법
JP2022511581A (ja) フレキシブルケーブル接続に基づく分散型aiトレーニングトポロジー
JP2024512843A (ja) メモリチャネルコントローラのオンチップ相互接続
KR102373802B1 (ko) 신경망 연산 효율 증대를 위한 신경망 가속기 및 그의 동작 방법
CN116980277B (zh) 数据处理方法、装置、计算机设备及存储介质
TWI819937B (zh) 應用於類神經網路的記憶內運算的加速器
CN116781484B (zh) 数据处理方法、装置、计算机设备及存储介质
CN110826704B (zh) 一种用于防止神经网络过拟合的处理装置及系统
CN116805155B (zh) 一种lstm网络处理方法、装置、设备及可读存储介质
US20210288650A1 (en) Semiconductor device and circuit layout method
WO2020044407A1 (ja) 学習装置、学習方法および学習プログラム
US20190073584A1 (en) Apparatus and methods for forward propagation in neural networks supporting discrete data