KR20230068992A - 가속을 통한 신경망 훈련 - Google Patents

가속을 통한 신경망 훈련 Download PDF

Info

Publication number
KR20230068992A
KR20230068992A KR1020220125169A KR20220125169A KR20230068992A KR 20230068992 A KR20230068992 A KR 20230068992A KR 1020220125169 A KR1020220125169 A KR 1020220125169A KR 20220125169 A KR20220125169 A KR 20220125169A KR 20230068992 A KR20230068992 A KR 20230068992A
Authority
KR
South Korea
Prior art keywords
row
vector
index
storage device
embedding
Prior art date
Application number
KR1020220125169A
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 KR20230068992A publication Critical patent/KR20230068992A/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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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
    • 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
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06F18/2148Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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/09Supervised learning
    • 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
    • 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)
  • 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

신경망을 훈련하기 위한 시스템 및 방법이 제공된다. 시스템은 백업 저장소를 포함하는 계산 저장 장치를 포함한다. 계산 저장 장치는, 신경망 임베딩 연산을 위한 임베딩 테이블을 백업 저장소에 저장하고, 제 1 인덱스 및 제 2 인덱스를 포함하는 제 1 인덱스 벡터를 수신하고, 백업 저장소로부터, 제 1 인덱스에 대응하는 임베딩 테이블의 제 1 행, 및 제 2 인덱스에 대응하는 임베딩 테이블의 제 2 행을 검색하고, 및 제 1 행과 제 2 행에 기반하는 제 1 임베딩된 벡터를 계산하도록 구성된다.

Description

가속을 통한 신경망 훈련{NEURAL NETWORK TRAINING WITH ACCELERATION}
본 개시에 따른 실시 예의 하나 이상의 측면은 신경망에 관한 것으로, 특히 신경망을 훈련하기 위한 시스템 및 방법에 관한 것이다.
신경망 훈련 연산은 계산적으로 부담이 될 수 있고, 이러한 연산의 상이한 측면은 훈련을 위한 시스템에 상이한 요구를 가할 수 있다. 예를 들어, 연속형인 제 1 입력 세트와 범주형인 제 2 입력 세트를 수신하는 신경망에서, 후자의 처리는 많은 양의 저장을 필요로 할 수 있는 임베딩 연산으로 수행될 수 있다.
따라서, 신경망 훈련을 위한 시스템 및 방법에 대한 필요성이 대두되고 있다.
본 발명이 해결하고자 하는 과제는 성능이 향상된 신경망 훈련을 위한 시스템 및 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
일부 실시 예에서, 신경망 훈련을 수행하기 위한 시스템은 그래픽 처리 장치(GPU) 클러스터 및 계산 저장 시스템을 포함한다. 신경망은 하부 다층 퍼셉트론, 상부 다층 퍼셉트론, 및 하나 이상의 임베딩 테이블을 포함할 수 있다. 하부 다층 퍼셉트론은 연속형 입력을 처리할 수 있고 임베딩 테이블은 범주형 입력을 처리할 수 있다. 하부 다층 퍼셉트론 및 임베딩 테이블의 출력은 결합되고 상부 다층 퍼셉트론에서 추가 처리되어 예측된 클릭률과 같은 출력을 생성할 수 있다.
하부 다층 퍼셉트론 및 상부 다층 퍼셉트론은 GPU 시스템에서 구현될 수 있고, 임베딩 테이블은 계산 저장 시스템에서 구현될 수 있다. 계산 저장 시스템은 복수의 연산 저장 장치를 포함할 수 있으며, 각각은 계산 저장 장치와 (i) GPU 시스템 및 (ii) 훈련 연산을 관리할 수 있는 호스트 간의 통신을 위해, 각각의 랜덤 액세스 메모리의 일부를 노출할 수 있다.
계산 저장 시스템은 "추론적 복구"로 지칭될 수 있는 프로세스에서 (이전 패스 동안 계산된 그라디언트에 기초하여) 임베딩 테이블이 업데이트될 때까지 기다리지 않고 임베딩된 벡터를 계산할 수 있다. 다음에 계산 저장 시스템은 그라디언트에 기초하는 계산된 임베딩된 벡터를 업데이트할 수 있다. 이 접근 방식을 사용하면 처리 시간을 단축할 수 있다.
본 개시의 일 실시 예에 따르면, 백업 저장소를 포함하는 계산 저장 장치를 포함하는 시스템을 제공하고 있으며, 상기 계산 저장 장치는: 신경망 임베딩 연산을 위한 임베딩 테이블을 상기 백업 저장소에 저장하고; 제 1 인덱스 및 제 2 인덱스를 포함하는 제 1 인덱스 벡터를 수신하고; 상기 백업 저장소로부터: 상기 제 1 인덱스에 대응하는 상기 임베딩 테이블의 제 1 행, 및 상기 제 2 인덱스에 대응하는 상기 임베딩 테이블의 제 2 행을 검색하고; 및 상기 제 1 행과 상기 제 2 행에 기반하는 제 1 임베딩된 벡터를 계산하도록 구성된다.
일부 실시 예에서, 상기 시스템은 그래픽 처리 유닛를 더 포함하고, 상기 계산 저장 장치는 메모리를 더 포함하고; 상기 계산 저장 장치는 상기 그래픽 처리 유닛에 의한 액세스를 위해 상기 메모리의 일부를 노출하도록 더욱 구성된다.
일부 실시 예에서, 상기 계산 저장 장치는 상기 메모리의 상기 일부에 상기 제 1 임베딩된 벡터를 저장하도록 더욱 구성되고; 상기 그래픽 처리 유닛은 메모리의 일부로부터 제 1 임베딩된 벡터를 판독하도록 구성된다.
일부 실시 예에서, 상기 계산 저장 장치는: 그라디언트 벡터를 수신하고; 업데이트된 행을 형성하기 위해 상기 그라디언트 벡터에 기반하여 상기 임베딩 테이블의 행을 업데이트하도록 더욱 구성된다.
일부 실시 예에서, 상기 계산 저장 장치는 업데이트된 제 1 임베딩된 벡터를 형성하기 위해, 상기 그라디언트 벡터에 기반하여 상기 제 1 임베딩된 벡터를 업데이트하도록 더욱 구성된다.
일부 실시 예에서, 상기 제 1 임베딩된 벡터의 업데이트하는 단계는: 오버랩 수를 계산하는 단계를 포함하고, 상기 오버랩 수는 상기 제 1 인덱스 벡터와 인덱스 벡터의 이전 배치에 모두 존재하는 요소의 수이다.
일부 실시 예에서, 상기 제 1 임베딩된 벡터를 계산하는 단계는 상기 제 1 행 및 상기 제 2 행을 합산하는 단계를 포함한다.
일부 실시 예에서, 상기 제 1 임베딩된 벡터를 업데이트하는 단계는: 상기 오버랩 수, 상기 그라디언트 벡터 및 학습률의 곱을 상기 제 1 임베딩된 벡터에 추가하는 단계를 더 포함한다.
일부 실시 예에서, 제 2 인덱스 벡터는 상기 제 1 인덱스를 포함하고; 상기 계산 저장 장치는: 상기 계산 저장 장치의 캐시에 상기 제 1 행을 저장하고, 상기 제 1 행에 기반하여 제 2 임베딩된 벡터를 계산하도록 더욱 구성된다.
본 개시의 일 실시 예에 따르면, 계산 저장 장치에 의해, 상기 계산 저장 장치의 백업 저장소에 신경망 임베딩 연산을 위한 임베딩 테이블을 저장하는 단계; 상기 계산 저장 장치에 의해, 제1 인덱스 및 제2 인덱스를 포함하는 제1 인덱스 벡터를 수신하는 단계; 상기 연산 저장 장치에 의해, 상기 백업 저장소로부터, 상기 연산 저장 장치의 제 1 캐시에: 상기 제 1 인덱스에 대응하는 상기 임베딩 테이블의 제 1 행, 및 상기 제 2 인덱스에 대응하는 상기 임베딩 테이블의 제 2 행을 검색하는 단계; 및 상기 계산 저장 장치에 의해, 상기 제 1 행과 상기 제 2 행에 기반하는 제 1 임베딩된 벡터를 계산하는 단계를 포함하는, 방법을 제공하고 있다.
일부 실시 예에서, 상기 방법은 그라디언트 벡터를 수신하는 단계; 업데이트된 행을 형성하기 위해 상기 그라디언트 벡터에 기반하여 상기 임베딩 테이블의 행을 업데이트하는 단계를 더 포함한다.
일부 실시 예에서, 상기 방법은 업데이트된 제 1 임베딩된 벡터를 형성하기 위해, 상기 그라디언트 벡터에 기반하여 상기 제 1 임베딩된 벡터를 업데이트하는 단계를 더 포함한다.
일부 실시 예에서, 상기 제 1 임베딩된 벡터를 업데이트하는 단계는: 오버랩 수를 계산하는 단계를 포함하고, 상기 오버랩 수는 상기 제 1 인덱스 벡터와 인덱스 벡터의 이전 배치에 모두 존재하는 요소의 수이다.
일부 실시 예에서, 상기 제 1 임베딩된 벡터를 계산하는 단계는 상기 제 1 행 및 상기 제 2 행을 합산하는 단계를 포함한다.
일부 실시 예에서, 상기 제 1 임베딩된 벡터를 업데이트하는 단계는: 상기 오버랩 수, 상기 그라디언트 벡터, 및 학습률의 곱을 상기 제 1 임베딩된 벡터에 추가하는 단계를 더 포함한다.
일부 실시 예에서, 상기 방법은 상기 업데이트된 제 1 임베딩된 벡터를 제 2 캐시에 저장하는 단계를 더 포함한다.
일부 실시 예에서, 제 2 인덱스 벡터는 상기 제 1 인덱스를 포함하고; 상기 방법은: 상기 제 1 캐시에 상기 제 1 행을 저장하는 단계, 상기 제 1 행에 기반하여 제 2 임베딩된 벡터를 계산하는 단계를 더 포함한다.
일부 실시 예에서, 상기 방법은 상기 업데이트된 행을 상기 백업 저장소에 저장하는 단계를 더 포함한다.
본 개시의 일 실시 예에 따르면, 처리를 위한 수단; 제1 캐시; 및 백업 저장소를 포함하는 계산 저장 장치를 포함하는 시스템을 제공하고 있고, 상기 처리를 위한 수단은: 신경망 임베딩 연산을 위한 임베딩 테이블을, 상기 백업 저장소에 저장하고; 제1 인덱스 및 제2 인덱스를 포함하는 제1 인덱스 벡터를 수신하고; 상기 백업 저장소로부터, 상기 제 1 캐시로: 상기 제 1 인덱스에 대응하는 상기 임베딩 테이블의 제 1 행, 및 상기 제 2 인덱스에 대응하는 상기 임베딩 테이블의 제2 행을 검색하고, 상기 제 1 행과 상기 제 2 행에 기빈하여 제 1 임베딩된 벡터를 계산하도록 구성된다.
일부 실시 예에서, 상기 처리를 위한 수단은: 그라디언트 벡터를 수신하고; 상기 그라디언트 벡터에 기반하여 상기 임베딩 테이블의 행을 업데이트하도록 더욱 구성된다.
본 개시의 이들 및 기타 특징 및 이점은 명세서, 청구범위 및 첨부된 도면을 참조하여 잘 이해될 것이다:
도 1a는 본 개시의 일 실시 예에 따른 신경망의 기능 블록도이다;
도 1b는 본 개시의 일 실시 예에 따른 신경망의 구조적 블록도이다;
도 1c는 본 개시의 일 실시 예에 따른 GPU 시스템의 블록도이다;
도 1d는 본 개시의 일 실시 예에 따른 컴퓨터 저장 시스템의 블록도이다;
도 1e는 본 개시의 일 실시 예에 따른 메모리 구성도이다;
도 1f는 본 개시의 일 실시 예에 따른 데이터 레이아웃도이다;
도 1g는 본 개시의 일 실시 예에 따른 프로세스 흐름도이다;
도 2a는 본 개시의 실시 예에 따른, 계산 저장 장치의 구조적 블록도이다;
도 2b는 본 개시의 일 실시 예에 따른 임베딩 커널의 블록도이다;
도 2c는 본 개시의 일 실시 예에 따른 그라디언트 갱신 회로의 블록도이다;
도 2d는 본 개시의 일 실시 예에 따른 투기적 회복의 수치적 예이다;
도 2e는 본 개시의 일 실시 예에 따른 추론적 복구 회로의 블록도이다;
도 3은 본 개시의 일 실시 예에 따른 2개의 처리 흐름을 나타내는 처리 흐름도이다;
도 4는 본 개시의 일 실시 예에 따른 제 1 방법의 흐름도이다; 및
도 5는 본 개시의 일 실시 예에 따른 제 2 방법의 흐름도이다.
첨부된 도면과 관련하여 아래에 설명된 상세한 설명은 본 개시에 따라 제공되는 신경망을 훈련하기 위한 시스템 및 방법의 예시적인 실시 예의 설명으로 의도되며 본 개시 내용이 구성되거나 활용될 수 있는 유일한 형태를 나타내는 것은 아니다. 설명은 예시된 실시 예와 관련하여 본 개시의 특징을 설명한다. 그러나, 동일하거나 동등한 기능 및 구조가 본 개시의 범위 내에 또한 포함되도록 하는 상이한 실시 예에 의해서도 달성될 수 있다는 것이 이해될 것이다. 본 명세서의 다른 곳에서 나타낸 바와 같이, 유사한 요소 번호는 유사한 요소 또는 특징을 나타내도록 의도된다.
일부 실시 예에서, 신경망 훈련을 수행하기 위한 시스템은 그래픽 처리 유닛(GPU) 시스템 및 계산 저장 시스템을 포함한다. GPU 시스템("GPU 클러스터"라고도 함)은 단일 GPU 또는 복수의 GPU를 포함할 수 있다. 계산 저장 시스템("연산 저장 클러스터"로도 지칭될 수 있음)은 단일 계산 저장 장치 또는 복수의 계산 저장 장치를 포함할 수 있다. 신경망은 하부 다층 퍼셉트론, 상부 다층 퍼셉트론, 및 하나 이상의 임베딩 테이블을 포함할 수 있다. 하부 다층 퍼셉트론은 연속형 입력을 처리할 수 있고, 임베딩 테이블은 범주형 입력을 처리할 수 있다. 하부 다층 퍼셉트론 및 임베딩 테이블의 출력은 출력을 생성하기 위해 상부 다층 퍼셉트론에서 결합되고 더욱 처리될 수 있다.
하부 다층 퍼셉트론 및 상부 다층 퍼셉트론은 GPU 시스템에서 구현될 수 있고, 임베딩 테이블은 계산 저장 시스템에서 구현될 수 있다. 계산 저장 시스템은 복수의 계산 저장 장치를 포함할 수 있으며, 이들 각각은 계산 저장 장치와 (i) GPU 시스템 및 (ii) 훈련 작업을 관리할 수 있는 호스트 간의 통신을 위해, 각각의 메모리(예: 동적 랜덤 액세스 메모리)의 일부를 노출할 수 있다. 계산 저장 시스템은 (이전 전달 동안 계산된 그라디언트를 기반으로 하여) 임베딩 테이블이 업데이트되기를 기다리지 않고 임베딩된 벡터를 계산할 수 있다. 계산 저장 시스템은 그 다음 그라디언트에 기초하여 계산된 임베딩된 벡터를 업데이트할 수 있다. 이 접근 방식을 사용하면 처리 시간이 단축될 수 있다.
도 1은 신경망을 나타낸다.
일부 실시 예에서, 딥 러닝 추천 모델(DLRM; Deep Learning Recommendation Model)일 수 있는 이러한 신경망은 하부 다중층 퍼셉트론(MLP; Multi-Layer Perceptron)(105), 하나 이상의 임베딩 테이블(110), 및 상부 다중층 퍼셉트론(MLP)(115)을 포함할 수 있다. 각각의 다층 퍼셉트론은 복수의 완전 연결(FC) 계층을 포함할 수 있다. 이러한 신경망은 사용자의 선호도를 학습하고 이들 선호도 및 다른 사용자의 선호도를 기반으로 사용자에게 추천하는 데 매우 적합할 수 있다. 그러한 신경망을 훈련하는 단계는 많은 훈련 반복 회수를 수행하는 단계를 포함할 수 있고, 이들 각각은 주어진 가중치 세트에 대한 비용 함수의 값을 계산하기 위해 순방향 전달을 수행하는 단계, (가중치에 대한 비용 함수의) 하나 이상의 그라디언트를 계산하는 단계, 그라디언트 및 학습률에 기반하여 가중치를 업데이트하는 단계를 포함할 수 있다.
연산시 (추론 및 훈련 동안 순방향 전달 모두에 대해), 신경망은 밀집(연속형) 및 희소(범주형) 입력 모두를 수신할 수 있다. 밀집 입력은 하부 다층 퍼셉트론(105)으로 처리될 수 있고, 희소 특징은 임베딩 연산, 예를 들어, 임베딩 테이블(110)로 처리될 수 있다. 희소 입력은 인덱스 벡터 (즉, 요소가 인덱스를 포함하는 벡터)일 수 있으며, 각 인덱스는 임베딩 행렬스의 행을 식별한다. 하나의 희소 입력 벡터에 대한 임베딩 연산은 희소 입력 벡터의 인덱스로 식별되는 행을 검색하는 단계, "임베딩된 벡터"로 지칭될 수 있는 벡터를 형성하기 위해서 행의 합을 계산하는 단계를 포함한다(로 이루어진다). 하부 다층 퍼셉트론(105) 및 임베딩 테이블(110)의 출력은 특징 상호작용 함수에서 결합되어 상부 다층 퍼셉트론(115)에 공급될 수 있으며, 이는 신경망의 출력(예: 예측되는 클릭류(CTR: click-through rate))을 생성한다.
도 1b를 참조하면, 신경망은 그래픽 처리 유닛(GPU) 클러스터(125) 및 시스템 인터커넥트(135)를 통해 계산 저장 시스템(130)(캐시 코히어런트 시스템 상호 연결, 예를 들어 컴퓨팅 익스프레스 링크(CXL) 인터커넥트일 수 있음)에 연결되는 호스트(120)(중앙 처리 장치(CPU) 및 주 메모리를 포함함)를 포함하는 시스템에서 구현될 수 있다.
계산 저장 시스템(130)은 임베딩 행렬을 저장하고 임베딩 계산을 수행할 수 있고, GPU 시스템(125)은 하부 다층 퍼셉트론(105) 및 상부 다층 퍼셉트론(115)을 구현할 수 있다. 호스트(120)는 계산 저장 시스템(130) 및 GPU 시스템(125)의 연산을 관리할 수 있다.
도 1c는 일부 실시 예에서 GPU 시스템(125)의 예를 도시한다.
GPU 시스템(125)은 예시의 용이함을 위해 4개의 GPU(140)를 포함하는 것으로 도시되며; 일부 실시 예에서 GPU 시스템은 더 많거나 더 적은 GPU, 예를 들어 2 내지 8개의 GPU를 포함할 수 있다. 각각의 GPU(140)는 연관된 레벨 2(L2) 캐시(145) 및 연관된 비디오 랜덤 액세스 메모리(VRAM)(150)를 가질 수 있다. 각 GPU는 프레임 버퍼에 이미지를 생성하도록 설계된 회로일 수 있거나, 신경망 계산을 수행하기 위한 다른 적절한 회로일 수 있으며, 본 명세서에서 사용된 "GPU"라는 용어는 "처리 회로"와 동의어이며 GPU 시스템(125)의 처리 회로와 계산 저장 시스템(130)의 처리 회로의 구별을 용이하게 하기 위해 주로 사용된다.
모든 레벨 2 캐시(145)는 시스템 인터커넥트 인터페이스 컨트롤러(160)(CXL 인터페이스일 수 있음)를 통해 시스템 인터커넥트(135)에 연결될 수 있는 코히어런스 에이전트(155)에 연결될 수 있다. 코히어런스 에이전트(155)는 레벨 2 캐시(145)의 캐시 코히어런스를 보장하도록 구성된 하드웨어 및 소프트웨어의 임의의 적절한 조합일 수 있다. GPU 시스템(125)은 고대역폭 내부 버스를 가질 수 있다. VRAM(150) 각각은 메모리 스위치(165)를 통해 그리고 시스템 인터커넥트 인터페이스 컨트롤러(160)를 통해 시스템 인터커넥트(135)에 연결될 수 있다. GPU 시스템(125)의 시스템 인터커넥트 인터페이스 컨트롤러(160)는 캐시 프로토콜 및 메모리 프로토콜을 지원할 수 있다.
도 1d는 일부 실시 예에서 계산 저장 시스템(130)의 예를 도시한다.
계산 저장 시스템(130)은 복수의 계산 저장 장치(170)를 포함하며, 그 중 2개가 도 1d에 명시적으로 도시되어 있다. 계산 저장 장치(170) 각각은 캐시(175)(예를 들어, 동적 랜덤 액세스 메모리(DRAM) 캐시), 컨트롤러(180)(예를 들어, 필드 프로그래머블 게이트 어레이(FPGA) 또는 주문형 집적 회로(ASIC)), 및 백업 저장소(185)(영구 저장소, 예를 들어, 솔리드 스테이트 드라이브(SSD)일 수 있음)를 포함한다. 계산 저장 장치(170) 각각은 도시된 바와 같이 메모리 스위치(165) 및 시스템 인터커넥트 인터페이스 컨트롤러(160)를 통해 시스템 인터커넥트(135)에 연결될 수 있다. 시스템 인터커넥트(135)가 CXL 인터커넥트인 실시 예에서, 계산 저장 장치(170) 각각은 (시스템 인터커넥트(135)이 CXL 인터커넥트인 경우) CXL.io 포트를 통해 직접 연결된 CXL 유형-3 장치로서 구성될 수 있다. 계산 저장 시스템(130)의 시스템 인터커넥트 인터페이스 컨트롤러(160)는 메모리 프로토콜을 지원할 수 있다. 임베딩 테이블은 비교적 커서(예를 들어, 각각 100 GB) GPU(140)의 스토리지(예를 들어, VRAM(150))에 쉽게 맞지 않을 수 있다. 이와 같이, 임베딩 테이블(110)은 도시된 바와 같이 계산 저장 장치(170)의 백업 저장소(185)에 저장될 수 있다.
(GPU 및 호스트로부터) 계산 저장 시스템(130)과의 통신은 계산 저장 장치(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 테이블(표 1)에 대한 임베딩된 벡터(195)가 노출된 메모리의 제 1 연속 영역 세트에 저장되고, 제 2 테이블(표 2)에 대한 임베딩된 벡터(195)는 제 1 세트와 인접한 노출된 메모리의 제 2 인접 영역 세트에 저장되어 있는, 데이터 레이아웃을 보여준다.
연산 중에, 계산 저장 시스템(130)에 의해 계산된 임베딩된 벡터는 계산 저장 장치(170)의 캐시(175)의 노출된 부분(190)에 (예를 들어, 반복 테이블-항목 순서로) 저장될 수 있고, GPU(140)에 의해 계산 저장 장치(170)의 캐시(175)의 노출된 부분(190)으로부터 판독된다. 캐시 코히어런트 시스템 인터커넥트(135)의 사용은 VRAM(150)에 먼저 복사하지 않고, GPU가 임베딩된 벡터를 GPU 시스템(125)의 레벨 2 캐시(145)에 직접 복사하는 것을 가능하게 할 수 있다. 이것은 시스템의 효율성을 크게 향상시킬 수 있다(예를 들어, 속도를 크게 높이고 신경망 작업당 에너지 소비를 줄일 수 있다). GPU 시스템(125)은 데이터 병렬 모드로 동작할 수 있으며, 각각의 GPU(140)는 계산 저장 장치(170) 중 하나의 캐시(175)의 노출된 부분(190)으로부터 가져오고, 계산 저장 시스템(130)에 의해 생성된 임베딩된 벡터의 각각의 서브세트를 처리한다. (임베딩 테이블(110)의 가중치에 대한 비용 함수의) 그라디언트는 상부 다층 퍼셉트론(115)(GPU 시스템(125)에서 구현됨)에 의해 계산되고 GPU(140)에 의해 계산 저장 장치(170)의 캐시(175)의 노출된 부분(190)에 GPU 시스템(125)에 의해 기록될 수 있다. 계산 저장 장치(170)의 컨트롤러(180)는 그 다음 그라디언트에 기초하여 임베딩 테이블(110)을 업데이트할 수 있다.
GPU 시스템(125)의 레벨 2 캐시(145)는 전술한 바와 같이 GPU 시스템(125)의 코히어런스 에이전트(155)에 연결될 수 있고, 호스트(120)의 메인 메모리로부터, 또는 위에서 언급한 바와 같이, 계산 저장 장치(170)의 캐시(175)의 노출된 부분(190)으로부터 데이터를 직접 캐싱할 수 있다. 각 GPU(140)의 VRAM(150)은 GPU 시스템(125)의 메모리 스위치(165)에 연결될 수 있고; 이 메모리 스위치는 각 GPU(140)의 모든 VRAM(150)이 시스템 인터커넥트(135)를 통해 시스템의 나머지 부분에 노출될 수 있다는 효과와 함께, CXL mem 프로토콜을 통해 시스템 상호 연결(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에서, 특징 상호작용은 상부 다층 퍼셉트론(115)에 대한 입력을 형성하기 위해 하부 다층 퍼셉트론(105) 임베딩 연산의 출력을 (예를 들어, 벡터 내적을 사용하여) 결합한다.
106에서, 상부 다층 퍼셉트론(115)은 GPU 시스템(125)에서 실행되고; 108에서, 역전파가 수행되고 그라디언트는 112에서 임베딩 테이블을 업데이트하는 데 사용하기 위해 계산 저장 시스템(130)에 다시 기록된다.
도 2a는 일부 실시 예에서 계산 저장 장치(170)에서 사용될 수 있는 메모리 계층 구조를 도시한다.
계산 저장 장치(170)의 컨트롤러(180)(예를 들어, FPGA)는 레벨 1 캐시, 예를 들어 수 메가바이트(MB)의 온칩 버퍼를 포함할 수 있다. 또한, 계산 저장 장치(170)는 레벨 2 캐시(175)(DRAM 캐시로도 지칭될 수 있음)로서 동작할 수 있는 수 기가바이트(GB)의 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. 레벨 2 캐시(175)는 호스트(120)에서 관리되고, 온칩 버퍼는 컨트롤러(180)에 의해 관리될 수 있다. 두 수준의 캐시 모두 후기입 캐시로 구현될 수 있으며, 예를 들어 데이터는 캐시에서 제거될 때 (레벨 2 캐시에서 백업 저장소로, 또는 레벨 1 캐시에서 레벨 2 캐시로) 다시 기록될 수 있다.
도 2b는 각각의 계산 저장 장치(170)의 제어기(180)에서 구현될 수 있는 구조 및 프로세스를 도시한다.
이 구조와 프로세스는 "임베딩 커널"이라고도 한다. 임베딩 커널은 스위칭 컨트롤러(210)에 의해 제어되는 크로스바 스위치(205)를 포함할 수 있다. 동작 시, 희소 입력 특징 벡터가 호스트(120)로부터 수신되고 입력 선입선출 구조(FIFO)(215)에 공급된다. 현재 입력 특징 벡터는 (i) 제 1 출력에서 현재 입력 특징 벡터와 이전 입력 특징 벡터 모두에 공통인 인덱스 세트, 및 (ii) 제 2 출력에서 이전 입력 특징 벡터가 아닌 현재 입력 특징 벡터에 존재하는 인덱스 세트를 생성하는 결합 회로(225)에서, (입력 특징 벡터 레지스터(220)에 저장된) 이전 입력 특징 벡터와 비교된다.
임베딩 테이블(110) 각각은 크로스바 스위치(205)에 연결되는 복수의 레인(230) 중 각각의 레인(230)에 의해 처리될 수 있다(각각은 병렬의 독립적인 처리 경로 세트 중 하나일 수 있음). 이전 입력 특징 벡터에 대응하는 임베딩 테이블의 행은 복수의 레인 벡터 버퍼로 구성될 수 있는 온칩 버퍼에 저장될 수 있다(그 중 하나인, 제 1 레인(Lane 1)의 레인 버퍼(Lane VBuf)(235)는 도 2b에 명시적으로 도시되어 있다). 이와 같이, 현재 입력 특징 벡터와 이전 입력 특징 벡터 모두에 공통된 인덱스 세트에 대응하는 행(임베딩 테이블의)은 레벨 2 캐시(175)(또는 백업 저장소(185))로부터 가져올 필요가 없으며; 나머지 행(즉, 이전 입력 특징 벡터가 아닌 현재 입력 특징 벡터에 있는 인덱스 집합에 해당하는 행)은 가중치 판독 회로(240)에 의해 (레벨 2 캐시(175) 또는 백업 저장소(185)로부터) 가져와 크로스바 스위치(205)에 공급된다. 각 레인에서 선택된 행의 합은 벡터 누산기(245)를 이용하여 형성된다. 이러한 방식으로 계산된 임베딩된 벡터는 미해결 버퍼(250)에 저장되어 아래에서 더 자세히 논의되는 바와 같이, 그라디언트에 대한 변경을 설명하기 위한 가능한 추가 처리를 기다린다.
그라디언트에 따른 가중치 업데이트는 다음과 같이 진행될 수 있다. 그라디언트는 그라디언트 판독 회로(255)에 의해 계산 저장 장치(170)(여기에 GPU 시스템(125)에 의해 저장됨)의 레벨 2 캐시(175)의 노출된 부분(190)으로부터 판독될 수 있다. 그 다음, 그라디언트는 그라디언트 업데이트 회로(260)에서 (크로스바 스위치(205)에 의해 그라디언트 업데이트 회로(260)에 공급되는) 임의의 행의 가중치를 업데이트하기 위해 사용될 수 있다. 도 2c를 참조하면, 이것은 그라디언트와 학습률의 곱(승산기(270)에서 형성됨)을 각 행에 (가산기(265)에서) 더함으로써 달성될 수 있다. (임베딩 테이블(110)의 가중치에 대한 비용 함수의) 그라디언트는 상부 다층 퍼셉트론(115)에 의해 계산될 수 있으며, 학습률은 가중치의 값이 수렴 과정의 불안정 없이 합리적으로 적은 수의 반복으로 안정 상태로 수렴할 수 있도록 디자인 시간에 선택될 수 있다.
일부 실시 예에서, 임베딩 벡터는 이전 행을 기반으로 계산되고 프로세스 ("추론적 복구"라고 할 수 있음)는 이전 행과 업데이트된 행 간의 차이에 대한 벡터를 수정하는 데 사용된다. 예를 들어, 이전 임베딩 테이블의 행 세트를 합산하여 형성된 임베딩된 벡터가 그라디언트와 학습률의 곱의 N 배에 가산되어(여기서 N은 현재 입력 특징 벡터와 입력 특징 벡터의 이전 배치에 공통된 인덱스 수임), 업데이트된 임베딩 테이블의 동일한 행의 집합이 합산되는 경우 획득되는 임베딩된 벡터를 형성한다. 이 프로세스는 임베딩 테이블의 업데이트가 완료될 때까지 기다리지 않고 반복에서 임베딩된 벡터를 계산하는 것을 가능하게 하고, 그 결과 아래에서 더 자세히 논의되는 바와 같이 처리 시간이 단축된다. 도 2d는 임베딩 테이블의 처음 두 행은 이전 반복과 현재 반복 모두에서 추가된 행 사이에 포함되어 해당 반복에서 임베딩된 벡터를 형성하는, 이 프로세스의 예를 보여준다. 그라디언트와 학습률의 곱은 현재 입력 특징 벡터와 입력 특징 벡터의 이전 배치 모두에 공통적인 인덱스 수를 곱하고 (이전 입력 특성 벡터 배치에 해당하는 임베딩 테이블의 행만 업데이트되고 현재 입력 특성 벡터에 해당하는 임베딩 테이블의 행만 현재 임베딩 벡터를 계산하는 데 사용되기 때문) 이 곱은 임베딩된 벡터를 계산하기 전에 임베딩 테이블이 업데이트되는 경우 획득된 임베딩된 벡터(280)를 계산하기 위해 "미해결" 임베딩된 벡터(275)(이전(또는 "원본") 임베딩 테이블을 기반으로 계산된 임베딩된 벡터)에 추가된다.
도 2e는 이러한 업데이트를 수행하기 위해 사용될 수 있는 추론적 복구 회로를 도시한다.
현재 입력 특징 벡터와 입력 특징 벡터의 이전 배치 모두에 공통적인 그라디언트, 학습률 및 인덱스 수(binCount)는 승산기(270)에서 함께 곱해지고 가산기(265)에서 미해결 벡터에 추가되어 업데이트된 임베딩된 벡터를 형성할 수 있다.
다시 도 2b를 참조하면, 임베딩 커널에서, 이 프로세스는 추론적 복구 회로(285)에 의해 수행되고 업데이트된 임베딩된 벡터는 레벨 2 캐시(175) 또는 백업 저장소(185)에도 업데이트된 행을 기록하는 벡터 기록 회로(290)에 의해 계산 저장 장치(170)의 레벨 2 캐시(175)의 노출된 부분(190)에 기록된다(여기서 이들은 GPU 시스템(125)에 의해 판독될 수 있음). 크로스바 선택 로직(스위칭 컨트롤러(210)에서 구현됨)은 항상 그라디언트 업데이터에서 행의 우선 순위를 지정할 수 있다. 현재 및 이전 입력 특징 벡터 사이에 겹치는 인덱스가 있는 경우 임베딩 테이블의 행은 크로스바 스위치(205)의 입력으로 다시 전달될 수 있다. 크로스바 선택 로직은 또한 벡터 버퍼(235)에 사용 가능한 공간이 있을 때 미래의 입력을 위해 행을 미리 가져올 수 있다.
도 3은 임베딩된 벡터의 다음 반복을 위한 계산을 시작하기 전에 임베딩 테이블이 업데이트될 때까지 기다리는 것을 포함하는 제 1 처리 흐름(300)을 도시한다.
GPU 시스템이 305에서 역방향 전달을 완료한 후, 계산 저장 시스템(130)은 310에서 행을 업데이트하고 315에서 임베딩된 벡터를 계산한다. 매개변수도 317에서 업데이트되고, 318에서 ("데이터 로드" 단계에서) 훈련 데이터의 현재 배치가 사전 처리되어 GPU로 전송된다. 그런 다음 319에서 모델의 추론(정방향 전달)이 수행된다. 도 3은 또한 제 2 처리 흐름(320)을 나타내고, 이 때 추론적 임베딩이 미해결 임베딩된 벡터를 계산하기 위해 325에서 실행되고, 이 벡터는 330에서 업데이트된다. 그 다음 행은 335에서 업데이트된다. 제 2 처리 흐름(320)은 제 1 처리 흐름(300)보다 약 5ms 더 빠르게 완료될 수 있음을 알 수 있다.
도 4는 일부 실시 예에서 제 1 방법의 흐름도이다.
방법은 405에서, 계산 저장 시스템의 하나 이상의 계산 저장 장치의 제 1 계산 저장 장치에 의해 임베딩 테이블을 저장하는 단계; 410에서, 제 1 계산 저장 장치에 의해, 제 1 인덱스 및 제 2 인덱스를 포함하는 인덱스 벡터를 수신하는 단계; 및 415에서, 제 1 계산 저장 장치에 의해, 제 1 인덱스에 대응하는 임베딩 테이블의 제 1 행 및 제 2 인덱스에 대응하는 임베딩 테이블의 제 2 행에 기반하여 임베딩된 벡터를 계산하는 단계를 포함한다. 계산 저장 시스템은 캐시 코히어런트 시스템 인터커넥트에 의해 그래픽 처리 유닛 클러스터에 연결될 수 있으며, 그래픽 처리 유닛 클러스터는 하나 이상의 그래픽 처리 유닛을 포함할 수 있다.
도 5는 일부 실시 예에서 제 2 방법의 흐름도이다.
방법은 505에서, 계산 저장 장치가 계산 저장 장치의 백업 저장소에 신경망 임베딩 연산을 위한 임베딩 테이블을 저장하는 단계; 510에서, 계산 저장 장치에 의해, 제 1 인덱스 및 제 2 인덱스를 포함하는 제 1 인덱스 벡터를 수신하는 단계; 515에서, 계산 저장 장치에 의해, 백업 저장소로부터 계산 저장 장치의 제 1 캐시로 제 1 인덱스에 대응하는 임베딩 테이블의 제 1 행 및 제 2 인덱스에 대응하는 임베딩 테이블의 제 2 행을 검색하는 단계: 및 상기 계산 저장 장치에 의해, 상기 제 1 행 및 상기 제 2 행에 기초하여 제 1 임베딩된 벡터를 계산하는 단계를 포함한다.
본 명세서에서 사용되는, 무언가의 "일부"는 사물의 "적어도 일부"를 의미하고, 따라서 사물의 전부 보다 적음을 의미할 수 있다. 이와 같이, 사물의 "일부"는 전체 사물을 특별한 경우로 포함하는데, 즉, 사물 전체는 사물의 일부의 일 예가 된다. 본 명세서서 사용되는 바와 같이, 제 2 수치가 제 1 수치의 "Y % 이내"인 경우, 이 제 2 수치는 제 1 수치의 최소 (1-Y/100) 배이고 제 2 수치는 제 1 수치의 최대 (1+Y/100) 배이다. 본 명세서에서 사용되는 바와 같이, 용어 "또는"은 "및/또는"으로 해석되어야 하므로, 예를 들어 "A 또는 B"는 "A" 또는 "B" 또는 "A 및 B"중 어느 하나를 의미한다.
본 개시 부분의 배경 부분에서 제공되는 배경은 단지 맥락을 설정하기 위해 포함되며, 이 부분의 내용은 선행 기술로 인정되지 않는다. 설명된 구성 요소 또는 구성 요소의 조합(예: 여기에 포함된 시스템 다이어그램)은 본 명세서에서 포함된 임의의 흐름도의 동작 중 하나 이상을 수행하는 데 사용될 수 있다. 또한, (i) 작업은 예시적인 작업이며, 명시적으로 다루지 않은 다양한 추가 단계를 포함할 수 있으며, (ii) 작업의 시간적 순서는 변경될 수 있다.
하나 이상의 처리 회로는 여기에 설명된 방법을 수행할 수 있으며, 예를 들어, 계산 저장 장치(170) 중 임의의 것의 제어기(180)는 처리 회로일 수 있다(또는 포함할 수 있다). 본 명세서 사용되는 바와 같이 용어 "처리 회로" 및 "처리를 위한 수단"은 데이터 또는 디지털 신호를 처리하는 데 사용되는 하드웨어, 펌웨어 및 소프트웨어의 임의의 조합을 의미하는 것으로 사용된다. 처리 회로 하드웨어에는 예를 들어 주문형 집적 회로(ASIC), 범용 또는 특수 목적 중앙 처리 장치(CPU), 디지털 신호 프로세서(DSP), 그래픽 처리 유닛(GPU) 및 필드 프로그래머블 게이트 어레이(FPGA)와 같은 프로그래밍 가능 논리 장치가 포함될 수 있다. 본 명세서에 사용된 처리 회로에서 각 기능은 해당 기능을 수행하도록 구성된, 즉 하드와이어된 하드웨어, 또는 비일시적 저장 매체에 저장된 명령을 실행하도록 구성된 CPU와 같은 보다 범용적인 하드웨어에 의해 실행된다. 처리 회로는 단일 인쇄 회로 기판(PCB)에 제작되거나 여러 개의 상호 연결된 PCB에 분산될 수 있다. 처리 회로는 다른 처리 회로를 포함할 수 있는데, 예를 들어, 처리 회로는 PCB상에서 상호 연결된 두 개의 처리 회로, FPGA 및 CPU를 포함할 수 있다.
본 명세서에서 사용된 바와 같이, 방법 (예를 들어, 조정) 또는 제 1 수치 (예를 들어, 제 1 변수)가 제 2 수치 (예를 들어, 제 2 변수)에 "기반"되는 것으로 언급될 때, 이는 제 2 수치가 방법에 대한 입력이거나 제 1 수치에 영향을 미친다는 것을 의미하는데, 예를 들어, 제 2 수치는 제 1 수치를 계산하는 함수에 대한 입력 (예를 들어, 유일한 입력 또는 여러 입력 중 하나)일 수 있거나, 제 1 수치는 제 2 수치와 같을 수 있거나, 제 1 수치는 제 2 수치와 동일할 수 있다 (예를 들어, 메모리의 동일한 위치 또는 위치에 저장될 수 있다).
비록 용어 "제 1", "제 2", "제3" 등이 본 명세서에서 다양한 요소를 설명하기 위해 사용될 수 있지만, 구성 요소, 영역, 층 및/또는 섹션, 이러한 요소, 구성 요소, 영역, 층 및/또는 섹션은 이러한 용어에 의해 제한되어서는 안된다는 것이 이해될 것이다. 이러한 용어는 한 요소, 구성 요소, 영역, 층 또는 섹션을 다른 요소, 구성 요소, 영역, 층 또는 섹션과 구별하는 데만 사용된다. 따라서, 본 명세서에서 논의된 제 1 요소, 구성 요소, 영역, 층 또는 섹션은 본 개시의 개념의 사상 및 범위를 벗어나지 않고 제 2 요소, 구성 요소, 영역, 층 또는 섹션으로 지칭될 수 있다.
본 명세서에서 사용된 용어는 특정 실시 예를 설명하기 위한 것이며 본 개시의 개념을 제한하려는 것은 아니다. 본 명세서에서 사용되는 용어 "실질적으로", "약" 및 유사한 용어는 정도의 용어가 아니라 근사값의 용어로 사용되며, 당업자들에 의해 인식되는 측정 또는 계산된 값의 고유한 편차를 설명하기 위한 것이다.
본원에 사용된 바와 같이, 용어 "주요 성분"은 조성물 또는 제품에 있는 임의의 다른 단일 성분의 양보다 많은 양으로 조성물, 중합체 또는 제품에 존재하는 성분을 지칭한다. 대조적으로, 용어 "1차 성분"은 조성물, 중합체 또는 제품의 적어도 50 중량% 이상을 구성하는 성분을 지칭한다. 본 명세서에 사용된 바와 같이, 용어 "주요 부분"은 복수의 항목에 적용될 때, 항목의 적어도 절반을 의미한다. 본 명세서에 사용된 바와 같이, 성분으로로 "만들어진" 또는 "구성된" 것으로 기술된 모든 구조 또는 층은 (i) 일부 구체예에서, 그 물질을 주요 성분으로 함유하거나, (ii) 일부 구체예에서, 그 물질을 주성분으로 함유하는 것으로 이해되어야 한다.
본 명세서에서 사용된 바와 같이, 단수 형태는 문맥 상 명백하게 달리 나타내지 않는 한 복수 형태도 포함하는 것이다. 용어 "포함하다" 및/또는 "포함하는"은 본 명세서에서 사용될 때, 언급된 특징, 정수, 단계, 계산, 요소 및/또는 구성 요소의 존재를 지정하지만, 하나 이상의 다른 특징, 정수, 단계, 계산, 요소, 구성 요소 및/또는 그 그룹의 존재 또는 추가를 배제하지 않는다. 본 명세서에서 사용되는 바와 같이, 용어 "및/또는"은 하나 이상의 연관된 열거 항목의 임의의 및 모든 조합을 포함한다. "적어도 하나 이상"과 같은 표현이 요소의 목록 앞에 올 때, 전체 요소의 목록을 수정하고 목록의 개별 요소를 수정하지는 않는다. 또한, 본 개시의 실시 예를 설명할 때 "할 수 있다"라는 용어는 "본 개시의 하나 이상의 실시 예"를 의미한다. 또한, "예시적인"이라는 용어는 예 또는 예시를 나타내는 것으로 의도된다. 본 명세서에서 사용되는 용어 "사용하다", "사용하는" 및 "사용할"는 각각 "활용하다", "활용하는" 및 "활용할"라는 용어와 동의어로 간주될 수 있다.
요소 또는 레이어가 다른 요소 또는 레이어에 "on", "connected to", "coupled to" 또는 "adjacent to"로 언급될 때, 그것은 다른 요소 또는 층에 직접 연결되거나, 연결되거나, 인접할 수 있거나, 하나 이상의 중간 요소 또는 층이 존재할 수 있다는 것이 이해될 것이다. 대조적으로, 요소 또는 층이 다른 요소 또는 층에 "직접", "직접 연결됨", "직접 결합됨" 또는 "바로 인접함"으로 언급될 때, 중간 요소 또는 층이 존재하지 않는다.
본 명세서에 인용된 임의의 수치 범위는 인용된 범위 내에 포함된 동일한 수치 정밀도의 모든 하위 범위를 포함하도록 의도된다. 예를 들어, "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) x 10)와 인용된 최대값 13.5(즉, (1 + 35/100) x 10) 사이(이들을 포함), 즉 즉, 6.5 이상인 최소값과 예를 들어 7.4 내지 10.6과 같은 13.5 이하인 최대값을 갖는, 모든 하위 범위를 포함하기 위한 것이다. 본 명세서에 언급된 임의의 최대 수치 제한은 그 안에 포함된 모든 더 낮은 수치 제한을 포함하도록 의도되고, 본 명세서에 언급된 임의의 최소 수치 제한은 거기에 포함된 모든 더 높은 수치 제한을 포함하도록 의도된다.
신경망을 훈련하기 위한 시스템 및 방법의 예시적인 실시 예들이 본 명세서에서 구체적으로 설명되고 예시되었지만, 많은 수정 및 변형이 당업자에게 명백할 것이다. 따라서, 본 개시의 원리에 따라 구성된 신경망을 훈련하기 위한 시스템 및 방법은 본 명세서에서 구체적으로 설명된 것과 다르게 구현될 수 있음을 이해해야 한다. 본 개시은 또한 다음의 청구 범위 및 그 등가물에서 정의된다.

Claims (20)

  1. 신경망 훈련을 위한 시스템으로서,
    백업 저장소를 포함하는 계산 저장 장치를 포함하고,
    상기 계산 저장 장치는:
    신경망 임베딩 연산을 위한 임베딩 테이블을 상기 백업 저장소에 저장하고;
    제 1 인덱스 및 제 2 인덱스를 포함하는 제 1 인덱스 벡터를 수신하고;
    상기 백업 저장소로부터,
    상기 제 1 인덱스에 대응하는 상기 임베딩 테이블의 제 1 행과,
    상기 제 2 인덱스에 대응하는 상기 임베딩 테이블의 제 2 행을 검색하고; 및
    상기 제 1 행과 상기 제 2 행에 기반하는 제 1 임베딩된 벡터를 계산하도록구성되는, 시스템.
  2. 제 1 항에 있어서,
    그래픽 처리 유닛을 더 포함하고,
    상기 계산 저장 장치는 메모리를 더 포함하고,
    상기 계산 저장 장치는 상기 그래픽 처리 유닛에 의한 액세스를 위해 상기 메모리의 일부를 노출하도록 더욱 구성되는, 시스템.
  3. 제 2 항에 있어서,
    상기 계산 저장 장치는 상기 메모리의 상기 일부에 상기 제 1 임베딩된 벡터를 저장하도록 더욱 구성되고;
    상기 그래픽 처리 유닛은 메모리의 일부로부터 제 1 임베딩된 벡터를 판독하도록 구성되는, 시스템.
  4. 제 1 항에 있어서,
    상기 계산 저장 장치는:
    그라디언트 벡터를 수신하고;
    업데이트된 행을 형성하기 위해 상기 그라디언트 벡터에 기반하여 상기 임베딩 테이블의 행을 업데이트하도록 더욱 구성되는, 시스템.
  5. 제 4 항에 있어서,
    상기 계산 저장 장치는 업데이트된 제 1 임베딩된 벡터를 형성하기 위해, 상기 그라디언트 벡터에 기반하여 상기 제 1 임베딩된 벡터를 업데이트하도록 더욱 구성되는, 시스템.
  6. 제 5 항에 있어서,
    상기 제 1 임베딩된 벡터의 업데이트하는 것은, 오버랩 수(overlap count)를 계산하는 것을 포함하고,
    상기 오버랩 수는 상기 제 1 인덱스 벡터와 인덱스 벡터의 이전 배치(batch)에 둘 다 존재하는 요소(element)의 수(count)인, 시스템.
  7. 제 6 항에 있어서,
    상기 제 1 임베딩된 벡터를 계산하는 것은 상기 제 1 행 및 상기 제 2 행을 합산하는 것을 포함하는, 시스템.
  8. 제 7 항에 있어서,
    상기 제 1 임베딩된 벡터를 업데이트하는 것은,
    상기 오버랩 수,
    상기 그라디언트 벡터 및
    학습률의 곱을 상기 제 1 임베딩된 벡터에 추가하는 것을 더 포함하는, 시스템.
  9. 제 1 항에 있어서,
    제 2 인덱스 벡터는 상기 제 1 인덱스를 포함하고,
    상기 계산 저장 장치는,
    상기 계산 저장 장치의 캐시에 상기 제 1 행을 저장하고,
    상기 제 1 행에 기반하여 제 2 임베딩된 벡터를 계산하도록 더욱 구성되는, 시스템.
  10. 신경망 훈련을 위한 방법으로서,
    계산 저장 장치에 의해, 상기 계산 저장 장치의 백업 저장소에 신경망 임베딩 연산을 위한 임베딩 테이블을 저장하는 단계;
    상기 계산 저장 장치에 의해, 제1 인덱스 및 제2 인덱스를 포함하는 제1 인덱스 벡터를 수신하는 단계;
    상기 연산 저장 장치에 의해, 상기 백업 저장소로부터, 상기 연산 저장 장치의 제 1 캐시에,
    상기 제 1 인덱스에 대응하는 상기 임베딩 테이블의 제 1 행, 및
    상기 제 2 인덱스에 대응하는 상기 임베딩 테이블의 제 2 행을 검색하는 단계; 및
    상기 계산 저장 장치에 의해, 상기 제 1 행과 상기 제 2 행에 기반하는 제 1 임베딩된 벡터를 계산하는 단계를 포함하는, 방법.
  11. 제 10 항에 있어서,
    그라디언트 벡터를 수신하는 단계;
    업데이트된 행을 형성하기 위해 상기 그라디언트 벡터에 기반하여 상기 임베딩 테이블의 행을 업데이트하는 단계를 더 포함하는, 방법.
  12. 제 11 항에 있어서,
    업데이트된 제 1 임베딩된 벡터를 형성하기 위해, 상기 그라디언트 벡터에 기반하여 상기 제 1 임베딩된 벡터를 업데이트하는 단계를 더 포함하는, 방법.
  13. 제 12 항에 있어서,
    상기 제 1 임베딩된 벡터를 업데이트하는 단계는,
    오버랩 수를 계산하는 단계를 포함하고, 상기 오버랩 수는 상기 제 1 인덱스 벡터와 인덱스 벡터의 이전 배치에 모두 존재하는 요소의 수인, 방법.
  14. 제 13 항에 있어서,
    상기 제 1 임베딩된 벡터를 계산하는 단계는 상기 제 1 행 및 상기 제 2 행을 합산하는 단계를 포함하는, 방법.
  15. 제 14 항에 있어서,
    상기 제 1 임베딩된 벡터를 업데이트하는 단계는,
    상기 오버랩 수,
    상기 그라디언트 벡터, 및
    학습률의 곱을 상기 제 1 임베딩된 벡터에 추가하는 단계를 더 포함하는, 방법.
  16. 제 15 항에 있어서,
    상기 업데이트된 제 1 임베딩된 벡터를 제 2 캐시에 저장하는 단계를 더 포함하는, 방법.
  17. 제 13 항에 있어서,
    제 2 인덱스 벡터는 상기 제 1 인덱스를 포함하고,
    상기 방법은,
    상기 제 1 캐시에 상기 제 1 행을 저장하는 단계,
    상기 제 1 행에 기반하여 제 2 임베딩된 벡터를 계산하는 단계를 더 포함하는, 방법.
  18. 제 11 항에 있어서,
    상기 업데이트된 행을 상기 백업 저장소에 저장하는 단계를 더 포함하는, 방법.
  19. 신경망 훈련을 위한 시스템으로서,
    처리를 위한 수단;
    제1 캐시; 및
    백업 저장소를 포함하는 계산 저장 장치를 포함하고,
    상기 처리를 위한 수단은:
    신경망 임베딩 연산을 위한 임베딩 테이블을, 상기 백업 저장소에 저장하고;
    제1 인덱스 및 제2 인덱스를 포함하는 제1 인덱스 벡터를 수신하고;
    상기 백업 저장소로부터, 상기 제 1 캐시로,
    상기 제 1 인덱스에 대응하는 상기 임베딩 테이블의 제 1 행, 및
    상기 제 2 인덱스에 대응하는 상기 임베딩 테이블의 제2 행을 검색하고;
    상기 제 1 행과 상기 제 2 행에 기빈하여 제 1 임베딩된 벡터를 계산하도록 구성되는, 시스템.
  20. 제 19 항에 있어서,
    상기 처리를 위한 수단은,
    그라디언트 벡터를 수신하고,
    상기 그라디언트 벡터에 기반하여 상기 임베딩 테이블의 행을 업데이트하도록 더욱 구성되는, 시스템.
KR1020220125169A 2021-11-11 2022-09-30 가속을 통한 신경망 훈련 KR20230068992A (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/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
KR20230068992A true KR20230068992A (ko) 2023-05-18

Family

ID=84044702

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220125169A KR20230068992A (ko) 2021-11-11 2022-09-30 가속을 통한 신경망 훈련

Country Status (5)

Country Link
US (1) US20230146611A1 (ko)
EP (1) EP4180979A1 (ko)
KR (1) KR20230068992A (ko)
CN (1) CN116108881A (ko)
TW (1) TW202319964A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
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 (8)

* Cited by examiner, † Cited by third party
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
WO2021061159A1 (en) * 2019-09-27 2021-04-01 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
US20210311897A1 (en) * 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. Memory with cache-coherent interconnect
KR20220087922A (ko) * 2020-12-18 2022-06-27 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
KR20220145656A (ko) * 2021-04-22 2022-10-31 에스케이하이닉스 주식회사 호스트 및 이를 포함하는 컴퓨팅 시스템

Also Published As

Publication number Publication date
TW202319964A (zh) 2023-05-16
EP4180979A1 (en) 2023-05-17
US20230146611A1 (en) 2023-05-11
CN116108881A (zh) 2023-05-12

Similar Documents

Publication Publication Date Title
US10592241B2 (en) Apparatus and methods for matrix multiplication
US10410112B2 (en) Apparatus and method for performing a forward operation of artificil neural networks
KR102175044B1 (ko) 인공 신경망 역방향 트레이닝 실행용 장치와 방법
KR101959376B1 (ko) 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법
US20190065934A1 (en) Apparatus and methods for forward propagation in fully connected layers of convolutional neural networks
CN111667051A (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
US20160196488A1 (en) Neural network computing device, system and method
US11934826B2 (en) Vector reductions using shared scratchpad memory
JP2022130363A (ja) 機械学習モデルを改良して局所性を改善させること
CN110580519B (zh) 一种卷积运算装置及其方法
EP4180979A1 (en) Neural network training with acceleration
CN111752879B (zh) 一种基于卷积神经网络的加速系统、方法及存储介质
US20240160909A1 (en) Shared scratchpad memory with parallel load-store
CN114970803A (zh) 对数系统中的机器学习训练
KR20200102332A (ko) 기계 학습 및 심층 학습 응용들을 위한 적응적 행렬 곱셈 가속기
US20190130274A1 (en) Apparatus and methods for backward propagation in neural networks supporting discrete data
CN109272112B (zh) 一种面向神经网络的数据重用指令映射方法、系统及装置
EP4180978A1 (en) Neural network training system with acceleration and neural network training method thereof
JP2024512843A (ja) メモリチャネルコントローラのオンチップ相互接続
KR102373802B1 (ko) 신경망 연산 효율 증대를 위한 신경망 가속기 및 그의 동작 방법
KR20220049325A (ko) 가속기 및 이를 포함한 전자 장치
CN110826704B (zh) 一种用于防止神经网络过拟合的处理装置及系统
US20210288650A1 (en) Semiconductor device and circuit layout method
US20190073584A1 (en) Apparatus and methods for forward propagation in neural networks supporting discrete data
CN115205092A (zh) 使用访问请求响应动态批处理组件的图形执行