KR20190128795A - 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 - Google Patents
웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 Download PDFInfo
- Publication number
- KR20190128795A KR20190128795A KR1020180052920A KR20180052920A KR20190128795A KR 20190128795 A KR20190128795 A KR 20190128795A KR 1020180052920 A KR1020180052920 A KR 1020180052920A KR 20180052920 A KR20180052920 A KR 20180052920A KR 20190128795 A KR20190128795 A KR 20190128795A
- Authority
- KR
- South Korea
- Prior art keywords
- weight matrix
- row
- information
- neural network
- value
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- 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/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Complex Calculations (AREA)
Abstract
본 기술에 의한 웨이트 매트릭스 포맷 방법은 하나 또는 둘 이상의 레이어를 포함하는 신경망에서 어느 한 레이어의 웨이트 매트릭스를 포맷하는 방법으로서, 웨이트 매트릭스의 행 별로 0이 아닌 원소의 개수를 기준으로 행 길이를 산출하는 단계; 행 길이 순서로 행을 정렬한 결과를 포함하는 재배열 정보를 저장하는 단계; 재배열 정보를 이용하여 웨이트 매트릭스에 대해서 행 변환 또는 행 변환 및 열 변환을 수행하는 단계; 변환된 웨이트 매트릭스의 각 행을 다수의 단위 처리 회로에 할당하는 단계; 및 다수의 단위 처리 회로 각각에서 처리할 웨이트 매트릭스의 값과 열 정보를 포함하는 그룹 데이터를 포함하는 포맷 데이터를 생성하는 단계를 포함한다.
Description
본 발명은 신경망 연산에 사용되는 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템에 관한 것이다.
음성 인식, 이미지 인식, 기계 번역 등의 인공 지능 기술 분야에서 다양한 종류의 신경망이 사용되고 있다.
신경망은 다수의 레이어로 구성되고 각 레이어는 다수의 뉴런을 포함하며 뉴런들은 시냅스로 연결된다.
시냅스에는 각각 가중치(웨이트)가 부여되는데 다수의 웨이트를 행과 열로 배열한 것을 웨이트 매트릭스로 지칭한다.
웨이트 매트릭스를 구성하는 웨이트들은 학습과정을 통해 미리 결정된다.
메모리 부하를 줄이기 위하여 웨이트 매트릭스의 데이터 크기를 줄이기 위해 다양한 기술이 개발되고 있다.
예를 들어서 웨이트 프루닝(pruning) 기술을 적용하여 웨이트 매트릭스에서 일부 웨이트를 0으로 만든다.
프루닝된 웨이트 매트릭스에서 0에 해당하는 웨이트는 실질적으로 계산 결과에 영향을 주지 않으므로 이를 메모리에 로드하지 않기 위해 웨이트 매트릭스를 일정한 형태로 포맷할 수 있다.
일반적으로 사용되는 포맷 기술로서 CSR(Compressed Sparse Row), CSC(Compressed Sparse Column), CISR(Compressed Interleaved Sparse Row) 기술이 있다.
그러나 이들 기술을 적용하여 포맷된 웨이트 매트릭스는 신경망 처리 회로에 포함되는 다수의 단위 처리 회로(PE: Processing Element)에 부하를 균일하게 부여하는 것이 불가능하여 신경망 연산 시간이 길어지는 문제가 있다.
이에 따라 단위 처리 회로들에 부하를 균등하게 배치할 수 있도록 웨이트 매트릭스 포맷 기술이 요구되고 있다.
본 기술은 다수의 단위 처리 회로에 부하를 균등하게 분포시킬 수 있도록 웨이트 매트릭스를 포맷하는 방법, 이를 이용한 가속기 및 이를 포함한 시스템을 제공한다.
본 발명의 일 실시예에 의한 웨이트 매트릭스 포맷 방법은 하나 또는 둘 이상의 레이어를 포함하는 신경망에서 어느 한 레이어의 웨이트 매트릭스를 포맷하는 방법으로서, 웨이트 매트릭스의 행별로 0이 아닌 원소의 개수를 기준으로 행 길이를 산출하는 단계; 행 길이 순서로 행을 정렬한 결과를 포함하는 재배열 정보를 저장하는 단계; 재배열 정보를 이용하여 웨이트 매트릭스에 대해서 행 변환 또는 행 변환 및 열 변환을 수행하는 단계; 변환된 웨이트 매트릭스의 각 행을 다수의 단위 처리 회로에 할당하는 단계; 및 다수의 단위 처리 회로 각각에서 처리할 웨이트 매트릭스의 값과 열 정보를 포함하는 그룹 데이터를 포함하는 포맷 데이터를 생성하는 단계를 포함한다.
본 발명의 일 실시예에 의한 가속기는 다수의 단위 처리 회로를 구비한 처리 회로 어레이; 처리 회로 어레이의 출력 벡터를 저장하는 출력 레지스터; 처리 회로 어레이에 입력 벡터를 제공하는 입력 레지스터; 및 다수의 단위 처리 회로에서 처리할 행들의 행 길이의 합이 균등하게 할당되도록 웨이트 매트릭스를 포맷한 포맷 데이터를 상기 처리 회로 어레이에 제공하는 제어 회로를 포함하되, 포맷 데이터는 다수의 처리 회로 각각에 제공할 값과 상기 값에 대응하는 열 번호를 포함하고 값에 대응하는 행 번호를 도출할 수 있는 행 정보를 포함한다.
본 발명의 일 실시예에 의한 시스템은 다수의 단위 처리 회로를 포함하는 가속기; 및 웨이트 매트릭스를 다수의 단위 처리 회로에서 처리할 행들의 행 길이의 합이 균등하게 할당되도록 포맷한 포맷 데이터와 입력 신호로부터 생성된 입력 벡터를 가속기에 제공하여 추론 동작을 제어하는 신경망 응용 회로를 포함한다.
본 기술에 의하여 포맷된 웨이트 매트릭스는 데이터를 줄이는 동시에 다수의 단위 처리 회로에 부하를 균등하게 부여함으로써 전체적인 신경망 연산 속도를 향상시킬 수 있다.
도 1은 LSTM 네트워크의 구조를 나타내는 블록도.
도 2는 본 발명의 일 실시예에 의한 웨이트 매트릭스 포맷 방법을 나타내는 순서도.
도 3은 본 발명의 일 실시예에 의한 웨이트 매트릭스 배치 방법을 나타낸 설명도.
도 4는 포맷되기 전의 웨이트 매트릭스의 일 예를 나타낸 도표.
도 5는 웨이트 매트릭스의 행을 재배열하는 방법을 설명하는 도표.
도 6은 웨이트 매트릭스에서 행 변환을 수행한 결과를 나타내는 도표.
도 7은 웨이트 매트릭스에서 열 변환을 수행한 결과를 나타내는 도표.
도 8은 웨이트 매트릭스의 행을 단위 처리 회로에 할당하는 방법을 나타낸 도표.
도 9는 웨이트 매트릭스의 포맷 결과를 나타낸 도표.
도 10은 본 발명의 일 실시예에 의한 가속기를 포함하는 신경망 시스템의 블록도.
도 11은 본 발명의 효과를 설명하는 그래프.
도 2는 본 발명의 일 실시예에 의한 웨이트 매트릭스 포맷 방법을 나타내는 순서도.
도 3은 본 발명의 일 실시예에 의한 웨이트 매트릭스 배치 방법을 나타낸 설명도.
도 4는 포맷되기 전의 웨이트 매트릭스의 일 예를 나타낸 도표.
도 5는 웨이트 매트릭스의 행을 재배열하는 방법을 설명하는 도표.
도 6은 웨이트 매트릭스에서 행 변환을 수행한 결과를 나타내는 도표.
도 7은 웨이트 매트릭스에서 열 변환을 수행한 결과를 나타내는 도표.
도 8은 웨이트 매트릭스의 행을 단위 처리 회로에 할당하는 방법을 나타낸 도표.
도 9는 웨이트 매트릭스의 포맷 결과를 나타낸 도표.
도 10은 본 발명의 일 실시예에 의한 가속기를 포함하는 신경망 시스템의 블록도.
도 11은 본 발명의 효과를 설명하는 그래프.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다.
본 개시에서는 LSTM(Long Short-Term Memory) 네트워크를 신경망의 일예로 사용한다. 그러나 본 기술이 적용될 수 있는 신경망은 LSTM 네트워크에 한정되지 않으며 완전 연결된(FC: Fully Connected) 레이어(layer)를 포함하는 신경망에는 모두 적용될 수 있다.
도 1은 본 발명의 일 실시예에 의한 LSTM 네트워크의 구조를 나타내는 블록도이다.
본 실시예에서 LSTM 네트워크는 다수의 LSTM 레이어(10)를 포함한다.
도면에서 x는 입력 벡터, h는 출력 벡터를 나타내고, 아래 첨자에서 t는 현재 시간, t-1은 이전 시간을 나타내며, 위 첨자에서 (0)은 첫 번째 레이어, (1)은 두번째 레이어를 나타낸다.
LSTM 레이어(10)는 입력 게이트(11), 셀 게이트(12), 망각 게이트(13), 출력 게이트(14)를 포함한다.
각각의 게이트는 제 1 웨이트 매트릭스(Wx)와 입력 벡터(xt)를 연산하고, 제 2 웨이트 매트릭스(Wh)와 이전 시간의 출력 벡터(ht-1)를 연산한다.
제 1 및 제 2 웨이트 매트릭스(Wx, Wh)는 입력되는 게이트에 따라서 구별된다.
이하에서 입력 게이트(11)에 사용되는 웨이트 매트릭스(Wxi, Whi)는 아래 첨자 i를 사용하고, 셀 게이트(12)에 사용되는 웨이트 매트릭스(Wxc, Whc)는 아래 첨자 c를 사용하고, 망각 게이트(13)에 사용되는 웨이트 매트릭스(Wxf, Whf)는 아래 첨자 f를 사용하고, 출력 게이트(14)에 사용되는 웨이트 매트릭스(Wxo, Who)는 아래 첨자 o를 사용한다.
LSTM 레이어(10)는 전술한 게이트들(11 - 14)에서 출력되는 벡터 신호들을 연산하여 출력 벡터(ht)를 출력한다.
LSTM 레이어(10)에서 출력 벡터를 생성하는 구체적인 연산식은 잘 알려진 것이므로 구체적인 설명을 생략한다.
LSTM 레이어(10)에는 도 3(A)에 도시된 바와 같이 제 1 웨이트 매트릭스 4개와 제 2 웨이트 매트릭스 4개를 포함하는 웨이트 매트릭스와 입력 벡터 및 출력 벡터로 구성된 매트릭스의 곱셈 연산을 수행하게 된다.
트레이닝이 종료된 후 웨이트 매트릭스에 대해서 프루닝을 수행하면 웨이트 매트릭스는 스파스(sparse) 매트릭스의 형태가 된다.
본 발명에서는 프루닝 된 웨이트 매트릭스에서 데이터 크기를 줄이고 다수의 단위 처리 회로에 부하를 균등하게 분배시키기 위한 웨이트 매트릭스 포맷 방법을 제공한다.
도 2는 본 발명의 일 실시예에 의한 포맷 방법을 나타내는 순서도이다.
먼저 모든 레이어에서 웨이트 매트릭스를 배치한다(S100).
도 3은 본 발명의 일 실시예에 의한 웨이트 매트릭스 배치 방법을 나타낸다.
도 3(A)는 일반적으로 배치된 웨이트 매트릭스를 나타낸다.
본 발명에서는 전체 제 1 웨이트 매트릭스와 제 2 웨이트 매트릭스를 수평으로 배치한다.
도 3(B)에 개시된 실시예에서는 입력 게이트 순서대로 제 1 웨이트 매트릭스와 제 2 매트릭스를 번갈아가며 배치한다.
도 3(C)에 개시된 실시예에서는 모든 입력 게이트에 대한 제 1 웨이트 매트릭스를 배치하고 그 이후 모든 입력 게이트에 대한 제 2 웨이트 매트릭스를 배치한다.
제 1 웨이트 매트릭스와 제 2 웨이트 매트릭스를 배치하는 방법은 도 3(B)와 도 3(C)를 참조하여 다양하게 변형될 수 있으나 이하에서는 편의상 도 3(C)와 같이 배치된 것으로 가정한다.
도 2로 돌아가 다음으로 웨이트 매트릭스의 행별로 0이 아닌 원소 개수를 기준으로 행 길이를 산출한다(S110).
도 4는 제 1 웨이트 매트릭스와 제 2 웨이트 매트릭스가 수평으로 배치된 상태를 나타내는 도표이다.
도 4 이하에서는 제 1 웨이트 매트릭스를 Wx로 표시하고 제 2 웨이트 매트릭스를 Wh로 표시한다.
웨이트 매트릭스가 도 3(B)와 같이 배치된 경우 도 4의 제 1 웨이트 매트릭스(Wx)는 Wxi, Wxc, Wxf, 또는 Wxo를 나타내고 이에 대응하여 제 2 웨이트 매트릭스(Wh)는 Whi, Whc, Whf, 또는 Who를 나타낼 수 있다.
이 경우 도 4는 전체 웨이트 매트릭스의 1/4 부분에 해당하며 실제 웨이트 매트릭스는 도 4에 도시된 것과 같은 매트릭스 4개가 수평으로 이어진 것으로 이해할 수 있다.
웨이트 매트릭스가 도 3(C)와 같이 배치된 경우 도 4의 제 1 웨이트 매트릭스(Wx)는 [Wxi Wxc Wxf Wxo]를 나타내고 이에 대응하여 제 2 웨이트 매트릭스(Wh)는 [Whi Whc Whf Who]를 나타낼 수 있다.
이하에서는 후자와 같이 도 3(C)와 같이 배치된 경우를 가정하나 다른 형태로 배치된 경우에 대해서는 본 개시를 통해 통상의 기술자가 용이하게 알 수 있을 것이다.
도 4의 웨이트 매트릭스에 대해서 행 별로 0이 아닌 원소의 개수를 추출한 결과가 도 5(A)에 도시되어 있다.
도 5(A)에서 RID는 행 번호를 나타내고 RLEN은 행에 포함된 0이 아닌 원소의 개수 즉 행 길이를 나타낸다.
도 2로 돌아가 원소 개수의 내림차순으로 행을 정렬한 결과를 포함하는 행의 재배열 정보를 저장한다(S120).
도 5(B)는 도 5(A)를 행 길이(RLEN)를 기준으로 내림차순으로 정렬한 결과를 나타낸다.
도 5(C)는 행의 재배열 정보를 나타내는 표로서 스위칭된 매트릭스의 행 번호(RID)와 본래의 행 번호(ORID)를 포함한다.
본 실시예에서 행 번호(RID)는 항상 현재 매트릭스의 행 번호를 나타내므로 따로 저장하지 않아도 무방하다.
도 2로 돌아가 이후 행의 재배열 정보를 이용하여 도 4의 웨이트 매트릭스에 대해서 행 변환 및 열 변환을 수행한다(S130).
행 변환은 도 5(C)의 재배열 정보에 따라 웨이트 매트릭스의 행을 실제로 변환하는 것을 의미한다.
도 6은 도 4의 웨이트 매트릭스에 대해서 행 변환을 수행한 결과를 나타낸다.
행 변환은 전체 웨이트 매트릭스에 대해서 수행된다.
도 6의 맨 왼쪽 필드는 현재 매트릭스의 행 번호(RID)이고 그 다음 필드는 정렬되기 전의 행 번호(ORID)를 나타낸다.
도 6의 맨 위쪽 필드는 현재 매트릭스의 열 번호(CID)이고 그 다음 필드는 제 1 웨이트 매트릭스와 제 2 웨이트 매트릭스 별로 열 번호를 구별하여 나타낸 것이다.
전술한 바와 같이 LSTM 레이어(10)의 제 2 웨이트 매트릭스(Wh)는 이전 출력 벡터(ht-1)와 곱해진다.
출력 벡터의 행은 웨이트 매트릭스의 행에 의해서 결정되므로 웨이트 매트릭스의 행이 재배열되면 출력 벡터 역시 이를 반영하여 자동으로 재배열된다.
이에 따라 본 실시예에서는 행의 재배열을 반영하여 이전 출력 벡터(ht-1)와 곱해지는 제 2 웨이트 매트릭스(Wh)의 열을 재배열한다.
또한 본 실시예에서는 현재 레이어의 행의 재배열을 반영하여 현재 레이어의 출력 벡터(ht)와 곱해지는 다음 레이어의 제 1 웨이트 매트릭스(Wx)의 열을 재배열한다.
도 7은 도 6과 같이 행 변환된 웨이트 매트릭스에 대해서 열 변환을 수행한 결과를 나타낸다.
도 7의 맨 위쪽 필드는 열 번호(CID)이고 그 다음 필드는 제 1 웨이트 매트릭스와 제 2 웨이트 매트릭스 별로 열 번호를 구별하여 나타낸 것으로서 열 변환을 수행하기 이전의 열 번호(OCID)를 나타낸다.
도 7은 첫 번째 LSTM 레이어를 가정한 것이다. 이 경우 열 변환은 제 2 웨이트 매트릭스(Wh) 부분에 한정되며 도 7에 도시된 바와 같이 제 2 웨이트 매트릭스의 열은 현재 레이어에서의 행 변환을 반영하여 재배열된다.
제 2 웨이트 매트릭스(Wh)에 대해서 열 변환이 수행되는 것은 LSTM 레이어가 출력을 다시 입력으로 사용하는 재귀적 구조 때문이다.
만일 두 번째 이후의 LSTM 레이어라면 열 변환은 제 1 웨이트 매트릭스(Wx) 및 제 2 웨이트 매트릭스(Wh) 부분에 동시에 수행되어야 한다.
이때 제 1 웨이트 매트릭스(Wx)는 이전 레이어의 출력 벡터가 입력 벡터로 입력되어 매트릭스 곱셈이 수행된다.
이전 레이어의 출력 벡터는 이전 레이어의 웨이트 매트릭스의 행 재배열을 반영하여 원소들의 순서가 바뀐 상태이다.
이에 따라 두 번째 이후의 LSTM 레이어의 제 1 웨이트 매트릭스(Wx)는 이전 레이어의 행 재배열을 반영하여 열 변환을 수행해야 한다.
두 번째 이후의 LSTM 레이어의 제 2 웨이트 매트릭스(Wh)는 첫 번째 LSTM 레이어에서와 마찬가지로 현재 LSTM 레이어의 행 재배열을 반영하여 열 변환을 수행해야 한다.
도 2로 돌아가 이후 다수의 단위 처리 회로(PE: Processing Element)가 연산할 행을 균등하게 분배한다(S140).
본 실시예에서는 다수의 행을 다수의 단위 처리 회로에 최대한 균등하게 할당함으로써 할당된 행 길이의 합의 최대값이 최소가 되도록 한다.
이를 통해 어느 한 단위 처리 회로에서 연산이 끝날 때까지 필요한 대기 시간을 최소화할 수 있다.
도 8(A)는 행을 4개의 단위 처리 회로에 할당하는 방법을 나타낸 일 예이다.
도 8에서는 행 재배열 이전의 행 번호(ORID)를 사용하였다.
먼저 행 길이(RLEN)가 6으로 가장 긴 4번 행을 0번 단위 처리 회로에 할당하고 이후 0, 2, 3번 행을 각각 1, 2, 3번 단위 처리 회로에 할당한다.
이후의 행들은 기존에 할당된 행 길이의 합이 가장 작은 단위 처리 회로에 순차적으로 할당한다.
행 길이가 가장 작은 단위 처리 회로가 다수인 경우 이들 중 임의의 하나를 선택할 수 있다.
행 길이가 4인 5번 행은 행 길이의 합이 가장 짧은 단위 처리 회로 중 하나인 3번 단위 처리 회로에 할당한다.
이후 행 길이가 3인 1번 행은 행 길이의 합이 가장 짧은 단위 처리 회로인 2번 단위 처리 회로에 할당한다.
이후 행 길이가 3인 6번 행은 행 길이의 합이 가장 짧은 단위 처리 회로인 1번 단위 처리 회로에 할당한다.
마지막으로 행 길이가 3인 7번 행은 행 길이의 합이 가장 짧은 단위 처리 회로인 0번 단위 처리 회로에 할당한다.
도 8(B)는 단위 회로에 할당된 행들과 각 행들에 포함된 값들과 행 길이의 합을 나타낸 도표이다.
이후 웨이트 매트릭스를 일정한 형태로 포맷한다(S150).
도 9는 웨이트 매트릭스를 포맷한 결과를 나타낸 도표이다.
본 실시예에서는 데이터의 크기를 줄이는 동시에 다수의 단위 처리 회로에서의 균등한 병렬 처리를 고려하여 웨이트 매트릭스를 포맷한다.
본 실시예에서는 다수의 단위 처리 회로의 병렬 처리 성능을 높이기 위하여 포맷된 데이트를 다수의 그룹 데이터로 나누되 하나의 그룹 데이터는 최대한의 단위 처리 회로에서 동시에 연산을 수행할 수 있도록 설정된다.
본 실시예에서 각각의 그룹 데이터들은 클록에 동기하여 전송할 수 있다.
대역폭과 메모리가 충분한 실시예의 경우라면 다수의 그룹 데이터를 하나의 클록에 동기하여 전송할 수도 있을 것이다.
도 9는 총 9개의 그룹으로 포맷된 데이터를 도시하며 이들이 순차적으로 클록에 동기하여 전송되는 실시예를 나타낸다.
이때 9개의 그룹은 도 8(B)에 도시된 바와 같이 단위 처리 회로에 할당된 행 길이의 최대값에 대응한다.
도 9에서 0번 클록에 전송되는 단위 데이터에는 다수의 단위 처리 회로(PE)에 제공될 웨이트 매트릭스의 값(VAL)과 열 번호(CID)가 포함된다.
도 9에서 열 번호는 도 7의 웨이트 매트릭스의 열 번호(CID)를 나타낸다.
이에 따라 0번 클록에 전송되는 그룹 데이터는 대응하는 단위 처리 회로의 순서를 고려하여 {(I,2), (A, 0), (D, 4), (F, 1)}와 같은 형태를 가진다.
1번 클록에서 6번 클록에 전송되는 그룹 데이터는 도 8(B)와 같이 할당된 값들과 도 7의 웨이트 매트릭스를 고려하여 위와 유사한 형태로 생성될 수 있다.
7번 클록에 전송되는 그룹 데이터에서는 0번과 1번 단위 처리 회로에 대한 값만 포함하고 있으므로 {(P, 6), (m, 9), NULL, NULL}과 같은 형태가 되고, 8번 클록에 전송되는 그룹 데이터에서는 0번 단위 처리 회로에 대한 값만 포함하고 있으므로 {(p, 14), NULL, NULL, NULL}과 같은 형태가 된다.
도 9(A)에서는 각 값들의 열 번호만 포함하고 있으나 단위 처리 회로는 각 값들의 행 번호(RID)를 알아야 한다.
이를 위하여 도 9(B)와 같이 각 값들의 행 번호(RID)를 알 수 있는 정보를 추가로 포함해야 한다.
기본적으로 도 9의 각 값들에 대해서 대응하는 행 번호(RID)를 추가할 수 있다. 이때 행 번호(RID)는 도 7의 웨이트 매트릭스의 행 번호(RID)에 대응한다.
이 경우 동일한 행 번호(RID)가 중복하여 여러 번 포함하게 되므로 데이터 크기를 줄이기 위하여 일정한 방식으로 행 번호(RID)를 디코딩할 수 있는 인코딩 정보를 보낼 수 있다.
도 9(B)와 도 9(C)에 도시된 데이터는 이러한 예를 나타낸다.
도 9(B)의 인코딩 정보는 0번 행부터 7번 행까지의 행 번호(RID)에 대응하여 총 8개의 행 길이(RLEN)를 포함한다.
이를 수신하는 디코더는 도 8과 같이 다수의 행을 다수의 단위 처리 회로에 균등하게 배치하는 규칙을 동일하게 적용하여 각 단위 처리 회로에 순차적으로 제공되는 데이터의 행 번호를 도출할 수 있다.
도 9(C)의 인코딩 정보는 도 9(B)의 인코딩 정보를 약간 변형한 것으로서 각 행의 포인터 값을 포함한다.
도 9(C)에서는 0번 행의 포인터를 0으로 가정하고, 그 다음 행의 포인터는 이전 행까지의 행 길이(RLEN)를 누적하여 생성한다.
도 9에는 도시되지 않았으나 각 LSTM 레이어에서 행의 재배열 규칙 즉 도 5(C)의 정보를 함께 전송한다.
이를 통해 현재 행 번호와 재배열 되기 이전의 행 번호의 관계를 알 수 있으며, 또한 제 2 웨이트 매트릭스의 현재 열 번호와 열 변환 이전의 열 번호의 관계를 알 수 있다.
도 9(A)의 데이터를 제외한 나머지 데이터는 별도의 클록에 동기하여 전송할 수도 있고, 데이터의 크기를 고려하여 도 9(A)의 데이터 중 어느 하나와 함께 전송할 수도 있다.
도 2로 돌아가 다음 레이어가 존재하는지 판단한다(S160).
다음 레이어가 존재하면 다음 레이어에 대해서 단계(S110) 이하를 반복하여 수행한다.
다음 레이어가 존재하지 않으면 포맷 동작을 종료한다.
웨이트 매트릭스의 포맷 결과는 이를 이용하는 가속기에 출력될 수 있다.
포맷된 데이터는 레이어 별로 포맷을 완료하는 시점에서 개별적으로 출력될 수도 있고 전체 레이어에 대해서 포맷이 완료될 때까지 기다려 한 번에 출력할 수도 있다.
도 10은 본 발명의 일 실시예에 의한 가속기를 포함하는 신경망 시스템의 블록도이다.
본 발명의 일 실시예에 의한 신경망 시스템은 신경망 생성 회로(100), 신경망 포맷 회로(200), 메모리 장치(300), 신경망 응용 회로(500), 및 가속기(400)를 포함한다.
신경망 생성 회로(100)는 신경망 트레이닝 동작을 수행하여 신경망의 웨이트 매트릭스를 결정하여 신경망을 생성한다. 또한 웨이트 매트릭스를 프루닝하여 스파스한 형태의 웨이트 매트릭스를 생성한다.
신경망 포맷 회로(200)는 도 2 내지 도 9를 참조하여 설명한 포맷 동작을 수행하여 웨이트 매트릭스를 도 9와 같은 형태로 포맷한다.
메모리 장치(300)는 포맷된 데이터를 저장한다.
신경망 응용 회로(500)는 외부에서 입력된 입력 신호로부터 입력 벡터를 생성하고 가속기(400)를 제어하여 출력 벡터를 생성하는 동작을 제어하며 그 결과를 외부에 출력하는 전반적인 동작을 제어한다.
신경망 응용 회로(500)는 신경망 포맷 회로(200)와 통신하여 직접 신경망 포맷 결과에 대한 정보를 송수신하고 이를 메모리 장치(300)에 저장할 수 있다.
가속기(400)는 신경망 포맷 회로(200)에서 포맷한 데이터를 수신하고 신경망 응용 회로(500)에서 제공되는 입력 벡터를 수신하여 신경망 연산 동작을 수행하고 그 결과 생성된 출력 벡터를 신경망 응용 회로에 제공한다.
실시예에 따라서 가속기(400)는 DMA 기술을 이용하여 메모리 장치(300)에 저장된 웨이트 매트릭스 포맷 데이터를 직접 읽을 수도 있고, 신경망 응용 회로(500)를 통해 웨이트 매트릭스 포맷 데이터를 수신할 수 있다.
도 10의 가속기(400)는 전술한 LSTM 네트워크를 신경망으로 사용하는 경우를 전제한다.
본 실시예에서 가속기(400)는 제어 회로(410), 처리 회로 어레이(420), 디코더(430), 입력 레지스터(440), 출력 레지스터(450), 상태 레지스터(460)를 포함한다.
처리 회로 어레이(420)는 다수의 단위 처리 회로(421)를 포함하는데 본 실시예에서는 도시된 바와 같이 4개의 단위 처리 회로를 도시하였다.
가속기(400)에 포함된 단위 처리 회로의 개수는 도 9의 데이터 포맷에 영향을 주는 단위 처리 회로의 개수와 일치하여야 한다.
제어 회로(410)는 포맷된 웨이트 매트릭스를 이용하여 다른 구성 요소들을 제어하며 레이어 순서로 신경망 연산 동작을 제어한다.
이하의 개시에서는 가속기(400)가 클록마다 도 9(A)에 도시된 데이터들에 대해서 순차적으로 연산을 수행한다.
도 9(B)의 행 길이 정보와 도 5(C)의 행 재배열 정보는 도 9(A)의 데이터에 앞서 미리 가속기(400)에 제공된 것으로 가정한다.
제어 회로(420)는 포맷된 데이터에서 도 9(B)의 행 길이 정보(RLEN)를 디코더(420)에 제공한다.
디코더(420)는 행 길이 정보(RLEN)를 이용하여 도 8(B)에 도시된 바와 동일한 방식으로 단위 처리 회로에 할당된 행 번호(RID)를 식별하고 포맷된 데이터를 통해 순차적으로 제공되는 값(VAL)에 대응하는 행 번호(RID)를 식별한다.
제어 회로(410)는 도 9(A)와 같이 포맷된 각 그룹 데이터를 처리 회로 어레이(420)에 순차적으로 제공한다.
그룹 데이터에는 도시된 바와 같이 각 단위 처리 회로(421)에 할당될 값(VAL)과 열 번호(CID)를 포함한다.
값(VAL)에 대응하는 행 번호(RID)는 디코더(430)로부터 제공될 수 있다.
입력 레지스터(440)는 입력 벡터(xt)와 이전 출력 벡터(ht-1)를 처리 회로 어레이(420)에 제공한다.
다수의 단위 처리 회로 각각은 행 번호(RID)와 열 번호(CID)를 통해 현재 제공된 값(VAL)과 곱할 입력 벡터(xt)와 이전 출력 벡터(ht-1)의 값을 식별하여 곱셈 연산을 수행한다.
다수의 단위 처리 회로(421) 각각은 곱셈 연산 결과를 이전 클록에서의 곱셈 결과와 누적할 수 있다.
이에 따라 다수의 단위 처리 회로 각각은 9번째 클록 이후에 웨이트 매트릭스의 지정된 행과 입력 벡터(xt) 및 이전 출력 벡터(ht-1) 사이의 연산 결과를 완료하고 이에 따라 처리 회로 어레이는 웨이트 매트릭스와 입력 벡터(xt) 및 이전 출력 벡터(ht-1) 사이의 곱셈 연산을 완료한다.
본 발명에서는 다수의 단위 처리 회로(421)에서 수행할 연산 개수를 균등하게 배치하므로 어느 한 단위 처리 회로(421)에서의 처리 시간을 대기하는데 필요한 지연 시간이 최소화될 수 있다.
처리 회로 어레이(420)에서는 웨이트 매트릭스와 입력 벡터(xt) 및 이전 출력 벡터(ht-1) 사이의 곱셈 결과에 대해서 추가적인 연산을 수행하여 출력 벡터(ht)를 생성할 수 있다.
이를 위하여 다수의 단위 처리 회로(421)는 추가적인 연산 회로를 구비할 수 있다.
추가 연산 회로의 종류는 LSTM 레이어에서 수행하는 연산의 종류에 따라 결정되는데 이에 대한 내용은 전술한 바와 같이 잘 알려진 것이므로 추가 연산 회로의 구체적인 내용에 대해서는 개시를 생략한다.
출력 벡터(ht)는 출력 레지스터(450)에 제공되고 출력 레지스터(450)는 출력 벡터(ht)를 저장하여 이전 출력 벡터(ht-1)로서 출력한다.
연산 초기에 이전 출력 벡터(ht-1)는 임의의 값으로 초기화될 수 있다.
입력 레지스터(440)는 현재 레이어를 위한 연산을 위해서는 수신한 이전 출력 벡터(ht-1)를 이전 출력 벡터(ht-1)로서 출력하고, 다음 레이어를 위한 연산을 위해서는 수신한 이전 출력 벡터(ht-1)를 입력 벡터(xt)로서 출력한다.
상태 레지스터(460)는 처리 회로 어레이(420)에서 연산을 수행하는 도중에 생성된 값들을 임시로 저장하고 임시로 저장한 정보를 다시 처리 회로 어레이(420)에 제공할 수 있다.
제어 회로(410)는 하나의 LSTM 레이어에 대해서 연산이 종료되면 다음 LSTM 레이어에 대해서 연산을 진행한다.
최종 레이어에 대한 연산이 완료되었을 때 생성된 출력 벡터(ht)는 다수의 레이어에서 수행된 행 변환과 열 변환을 반영한다.
이에 따라 출력 벡터(ht)의 원소 순서를 입력 벡터(xt)에 대응하도록 재배열해야 한다.
본 실시예와 같이 포맷을 수행하는 경우 이전 레이어에 대한 행 재배열 정보는 다음 레이어의 열 변환에 반영된다.
이에 따라 본 실시예의 제어 회로(410)는 최종 레이어에 대한 행 재배열 정보를 이용하여 최종 레이어에 대한 연산이 완료된 후 출력 레지스터(450)에서 출력된 이전 출력 벡터(ht-1)를 재정렬하고 이를 최종적인 출력 벡터로서 신경망 응용 회로(500)에 출력할 수 있다.
신경망 응용 회로(500)는 가속기(400)에서 출력된 출력 벡터를 이용하여 추론 동작을 완료할 수 있다.
도 10은 신경망 시스템은 클라이언트 서버 구조로 배치될 수 있다.
예를 들어 신경망 생성 회로(100)와 신경망 포맷 회로(200)는 서버 단에 위치하고 메모리 장치(300), 가속기(400) 및 신경망 응용 회로(500)는 클라이언트 단에 위치할 수 있다.
예를 들어 서버에서 생성되어 포맷이 완료된 웨이트 매트릭스 데이터를 모바일 기기에서 수신하여 저장하고 모바일 기기는 마이크 등으로부터 입력되는 문장을 실시간으로 번역하는 시스템을 기계 번역 시스템을 구성할 수 있다.
이때 서버에 위치한 신경망 포맷 회로(200)는 모바일 기기와 통신하며 포맷을 생성할 수 있다. 예를 들어 모바일 기기에서 단위 처리 회로 개수를 서버에 제공하면 서버에 위치한 신경망 포맷 회로(200)는 그 개수에 따라 모바일 기기에 대응하는 포맷 데이터를 생성하여 송신할 수도 있다.
통상의 기술자라면 전술한 개시를 참조하여 다양한 실시예의 시스템을 도출할 수 있을 것이다.
도 11은 본 발명의 효과를 설명하는 그래프이다.
도 11은 가로축은 세 가지 LSTM 네트워크에 대해서 종래 기술에 의한 포맷 방법을 적용한 경우와 본 실시예에 의한 포맷 방법을 적용한 경우를 비교하여 나타낸 것이다.
TIMIT-450, TIMIT-512, Penn Treebank는 LSTM 네트워크의 종류를 나타낸다.
종래기술 1은 CSC/CSR 포맷 기술을 적용한 경우를 나타내고 종래기술 2는 CISR 포맷 기술을 적용한 경우이다.
세로축은 추론 시간을 정규화하여 나타낸 것이다.
세 가지 LSTM 네트워크 모두에서 본 실시예에 의한 포맷 기술을 적용한 경우에 실행시간이 대폭 감소되었는데 이는 포맷 과정에서 다수의 단위 처리 회로에 부하를 균등하게 배분하기 때문이다.
본 발명의 권리범위는 이상의 개시로 한정되는 것은 아니다. 본 발명의 권리범위는 청구범위에 문언적으로 기재된 범위와 그 균등범위를 기준으로 해석되어야 한다.
10: LSTM 레이어
11: 입력 게이트
12: 셀 게이트
13: 망각 게이트
14: 출력 게이트
100: 신경망 생성 회로
200: 신경망 포맷 회로
300: 메모리 장치
400: 가속기
410: 제어 회로
420: 처리 회로 어레이
421: 단위 처리 회로
430: 디코더
440: 입력 레지스터
450: 출력 레지스터
460: 상태 레지스터
500: 신경망 응용 회로
11: 입력 게이트
12: 셀 게이트
13: 망각 게이트
14: 출력 게이트
100: 신경망 생성 회로
200: 신경망 포맷 회로
300: 메모리 장치
400: 가속기
410: 제어 회로
420: 처리 회로 어레이
421: 단위 처리 회로
430: 디코더
440: 입력 레지스터
450: 출력 레지스터
460: 상태 레지스터
500: 신경망 응용 회로
Claims (22)
- 하나 또는 둘 이상의 레이어를 포함하는 신경망에서 어느 한 레이어의 웨이트 매트릭스를 포맷하는 방법으로서,
웨이트 매트릭스의 행 별로 0이 아닌 원소의 개수를 기준으로 행 길이를 산출하는 단계;
행 길이 순서로 행을 정렬한 결과를 포함하는 재배열 정보를 저장하는 단계;
재배열 정보를 이용하여 웨이트 매트릭스에 대해서 행 변환 또는 행 변환 및 열 변환을 수행하는 단계;
변환된 웨이트 매트릭스의 각 행을 다수의 단위 처리 회로에 할당하는 단계; 및
다수의 단위 처리 회로 각각에서 처리할 웨이트 매트릭스의 값과 열 정보를 포함하는 그룹 데이터를 포함하는 포맷 데이터를 생성하는 단계
를 포함하는 웨이트 매트릭스 포맷 방법. - 청구항 1에 있어서, 상기 할당하는 단계는 할당된 행 길이의 합의 최대값이 최소가 되도록 하는 웨이트 매트릭스 포맷 방법.
- 청구항 1에 있어서, 상기 행 변환은 상기 재배열 정보에 따라 상기 웨이트 매트릭스의 행 순서를 재배열하는 단계를 포함하는 웨이트 매트릭스 포맷 방법.
- 청구항 3에 있어서, 현재 레이어와 이전 레이어를 포함하는 경우 상기 열 변환은 이전 레이어에서의 재배열 정보에 따라 현재 레이어의 웨이트 매트릭스의 열의 순서를 재배열하는 단계를 포함하는 웨이트 매트릭스 포맷 방법.
- 청구항 3에 있어서, 상기 열 변환은 상기 재배열 정보에 따라 웨이트 매트릭스 중 일부의 열의 순서를 재배열하는 단계를 포함하는 웨이트 매트릭스 포맷 방법.
- 청구항 1에 있어서, 상기 포맷 데이터는 상기 값에 대응하는 행 정보를 더 포함하는 웨이트 매트릭스 포맷 방법.
- 청구항 1에 있어서, 상기 행 정보는 상기 값에 대응하는 행 번호 또는 상기 재배열 정보를 참조하여 상기 행 번호를 유추할 수 있는 인코딩 정보를 포함하는 웨이트 매트릭스 포맷 방법.
- 청구항 7에 있어서, 상기 인코딩 정보는 웨이트 매트릭스의 각 행의 행 길이를 포함하는 웨이트 매트릭스 포맷 방법.
- 청구항 1에 있어서, 상기 신경망은 하나 또는 둘 이상의 레이어를 포함하는 LSTM 네트워크인 웨이트 매트릭스 포맷 방법.
- 청구항 9에 있어서, 상기 웨이트 매트릭스는 입력 벡터와 곱셈되는 제 1 웨이트 매트릭스와 이전 출력 벡터와 곱셈되는 제 2 웨이트 매트릭스를 포함하고,
상기 제 1 웨이트 매트릭스와 상기 제 2 웨이트 매트릭스를 행 방향으로 수평하게 배치하는 단계를 더 포함하는 웨이트 매트릭스 포맷 방법. - 청구항 10에 있어서, 상기 행 변환은 상기 재배열 정보에 따라 상기 웨이트 매트릭스의 행 순서를 재배열하는 단계를 포함하는 웨이트 매트릭스 포맷 방법.
- 청구항 11에 있어서, 상기 열 변환은 상기 재배열 정보에 따라 웨이트 매트릭스 중 제 2 웨이트 매트릭스 부분의 열의 순서를 재배열하는 단계를 포함하는 웨이트 매트릭스 포맷 방법.
- 청구항 12에 있어서, 현재 레이어와 이전 레이어를 포함하는 경우 상기 열 변환은 이전 레이어에서의 재배열 정보에 따라 현재 레이어의 제 1 웨이트 매트릭스의 열의 순서를 재배열하는 단계를 더 포함하는 웨이트 매트릭스 포맷 방법.
- 다수의 단위 처리 회로를 구비한 처리 회로 어레이;
상기 처리 회로 어레이의 출력 벡터를 저장하는 출력 레지스터;
상기 처리 회로 어레이에 입력 벡터를 제공하는 입력 레지스터; 및
상기 다수의 단위 처리 회로에서 처리할 행들의 행 길이의 합이 균등하게 할당되도록 웨이트 매트릭스를 포맷한 포맷 데이터를 상기 처리 회로 어레이에 제공하는 제어 회로;
를 포함하되,
상기 포맷 데이터는 상기 다수의 처리 회로 각각에 제공할 값과 상기 값에 대응하는 열 번호를 포함하고 상기 값에 대응하는 행 번호를 도출할 수 있는 행 정보를 포함하는 가속기. - 청구항 14에 있어서, 상기 행 정보로부터 상기 값에 대응하는 행 번호를 도출할 수 있는 디코더를 더 포함하는 가속기.
- 청구항 14에 있어서, 상기 처리 회로 어레이의 연산 결과를 임시 저장하고 임시 저장된 정보를 상기 처리 회로 어레이에 제공하는 상태 레지스터를 더 포함하는 가속기.
- 청구항 14에 있어서, 상기 제어 회로는 상기 포맷 데이터는 다수의 그룹 데이터를 포함하고 상기 다수의 그룹 데이터 각각은 상기 다수의 단위 처리 회로에 제공할 값과 값에 대응하는 열 번호를 포함하는 가속기.
- 청구항 17에 있어서, 상기 제어 회로는 상기 다수의 그룹 데이터를 순차적으로 상기 처리 회로 어레이에 제공하는 가속기.
- 다수의 단위 처리 회로를 포함하는 가속기; 및
웨이트 매트릭스를 상기 다수의 단위 처리 회로에서 처리할 행들의 행 길이의 합이 균등하게 할당되도록 포맷한 포맷 데이터와 입력 신호로부터 생성된 입력 벡터를 상기 가속기에 제공하여 추론 동작을 제어하는 신경망 응용 회로
를 포함하는 시스템. - 청구항 19에 있어서, 상기 가속기는
상기 다수의 단위 처리 회로를 포함하는 처리 회로 어레이;
상기 처리 회로 어레이의 출력 벡터를 저장하는 출력 레지스터;
상기 처리 회로 어레이에 입력 벡터를 제공하는 입력 레지스터; 및
상기 포맷 데이터를 상기 처리 회로 어레이에 제공하는 제어 회로;
를 포함하되,
상기 포맷 데이터는 상기 다수의 처리 회로 각각에 제공할 값과 상기 값에 대응하는 열 번호를 포함하고 상기 값에 대응하는 행 번호를 도출할 수 있는 행 정보를 포함하는 시스템. - 청구항 19에 있어서,
신경망을 트레이닝하고 도출된 웨이트 매트릭스를 프루닝하여 출력하는 신경망 생성 회로; 및
상기 포맷 데이터를 생성하는 신경망 포맷 회로;
를 더 포함하는 시스템. - 청구항 21에 있어서, 상기 신경망 포맷 회로는 상기 다수의 단위 처리 회로의 개수를 수신한 후 상기 포맷 데이터를 생성하는 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180052920A KR102555057B1 (ko) | 2018-05-09 | 2018-05-09 | 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 |
US16/362,398 US11651224B2 (en) | 2018-05-09 | 2019-03-22 | Method for formatting a weight matrix, accelerator using the formatted weight matrix, and system including the accelerator |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180052920A KR102555057B1 (ko) | 2018-05-09 | 2018-05-09 | 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190128795A true KR20190128795A (ko) | 2019-11-19 |
KR102555057B1 KR102555057B1 (ko) | 2023-07-12 |
Family
ID=68464759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180052920A KR102555057B1 (ko) | 2018-05-09 | 2018-05-09 | 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11651224B2 (ko) |
KR (1) | KR102555057B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112991142A (zh) * | 2021-03-31 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
WO2022040618A1 (en) * | 2020-08-21 | 2022-02-24 | MemryX Inc. | Matrix multiplication engines |
US11361052B2 (en) | 2019-02-12 | 2022-06-14 | SK Hynix Inc. | Method of formatting a weight matrix, an accelerator using the formatted weight matrix, and a system including the accelerator |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3108151C (en) | 2017-02-23 | 2024-02-20 | Cerebras Systems Inc. | Accelerated deep learning |
US11037330B2 (en) | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
US11488004B2 (en) | 2017-04-17 | 2022-11-01 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
EP3607503B1 (en) | 2017-04-17 | 2022-03-09 | Cerebras Systems Inc. | Task activating for accelerated deep learning |
US11042797B2 (en) * | 2019-01-08 | 2021-06-22 | SimpleMachines Inc. | Accelerating parallel processing of data in a recurrent neural network |
US11126690B2 (en) | 2019-03-29 | 2021-09-21 | Intel Corporation | Machine learning architecture support for block sparsity |
US11544540B2 (en) * | 2019-05-10 | 2023-01-03 | Hewlett Packard Enterprise Development Lp | Systems and methods for neural network training and deployment for hardware accelerators |
US11663452B2 (en) * | 2019-09-25 | 2023-05-30 | Intel Corporation | Processor array for processing sparse binary neural networks |
KR20210051920A (ko) * | 2019-10-31 | 2021-05-10 | 삼성전자주식회사 | 신경망의 커널들을 정렬하는 전자 장치 및 이의 동작 방법 |
KR20210111014A (ko) * | 2020-03-02 | 2021-09-10 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
CN111582467B (zh) * | 2020-05-14 | 2023-12-22 | 上海商汤智能科技有限公司 | 人工智能加速器和电子设备 |
WO2022034542A1 (en) * | 2020-08-14 | 2022-02-17 | Cerebras Systems Inc. | Weight sparsity techniques for accelerated deep learning |
CN115115018A (zh) * | 2021-03-19 | 2022-09-27 | 南京大学 | 一种用于长短记忆神经网络的加速系统 |
CN115660035B (zh) * | 2022-12-28 | 2023-08-11 | 南京南瑞信息通信科技有限公司 | 一种用于lstm网络的硬件加速器及lstm模型 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040044253A (ko) * | 2002-11-20 | 2004-05-28 | 삼성전자주식회사 | 고속 역 이산 여현 변환 방법 및 장치 |
KR20120030079A (ko) * | 2009-06-02 | 2012-03-27 | 새프런 테크놀로지, 아이엔씨 | 분산된 연관 메모리 베이스를 제공하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품 |
KR101400577B1 (ko) * | 2013-03-11 | 2014-06-19 | 한양대학교 산학협력단 | Gpu를 이용한 희소행렬 곱셈 방법 |
US9367519B2 (en) | 2013-08-30 | 2016-06-14 | Microsoft Technology Licensing, Llc | Sparse matrix data structure |
KR20160142791A (ko) * | 2015-06-03 | 2016-12-13 | 삼성전자주식회사 | 뉴럴 네트워크 실시 방법 및 장치 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9830302B1 (en) * | 2014-04-16 | 2017-11-28 | Knowles Electronics, Llc | Sparse matrix vector multiplication |
US10810484B2 (en) * | 2016-08-12 | 2020-10-20 | Xilinx, Inc. | Hardware accelerator for compressed GRU on FPGA |
WO2018070376A1 (ja) * | 2016-10-11 | 2018-04-19 | 日本電気株式会社 | 領域確保装置、領域確保方法、及び、領域確保プログラムが記録された記録媒体 |
US10127495B1 (en) * | 2017-04-14 | 2018-11-13 | Rohan Bopardikar | Reducing the size of a neural network through reduction of the weight matrices |
US20190087729A1 (en) * | 2017-09-18 | 2019-03-21 | Intel Corporation | Convolutional neural network tuning systems and methods |
US10354733B1 (en) * | 2017-10-17 | 2019-07-16 | Xilinx, Inc. | Software-defined memory bandwidth reduction by hierarchical stream buffering for general matrix multiplication in a programmable IC |
-
2018
- 2018-05-09 KR KR1020180052920A patent/KR102555057B1/ko active IP Right Grant
-
2019
- 2019-03-22 US US16/362,398 patent/US11651224B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040044253A (ko) * | 2002-11-20 | 2004-05-28 | 삼성전자주식회사 | 고속 역 이산 여현 변환 방법 및 장치 |
KR20120030079A (ko) * | 2009-06-02 | 2012-03-27 | 새프런 테크놀로지, 아이엔씨 | 분산된 연관 메모리 베이스를 제공하기 위한 방법, 시스템 및 컴퓨터 프로그램 제품 |
KR101400577B1 (ko) * | 2013-03-11 | 2014-06-19 | 한양대학교 산학협력단 | Gpu를 이용한 희소행렬 곱셈 방법 |
US9367519B2 (en) | 2013-08-30 | 2016-06-14 | Microsoft Technology Licensing, Llc | Sparse matrix data structure |
KR20160142791A (ko) * | 2015-06-03 | 2016-12-13 | 삼성전자주식회사 | 뉴럴 네트워크 실시 방법 및 장치 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11361052B2 (en) | 2019-02-12 | 2022-06-14 | SK Hynix Inc. | Method of formatting a weight matrix, an accelerator using the formatted weight matrix, and a system including the accelerator |
WO2022040618A1 (en) * | 2020-08-21 | 2022-02-24 | MemryX Inc. | Matrix multiplication engines |
CN112991142A (zh) * | 2021-03-31 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
CN112991142B (zh) * | 2021-03-31 | 2023-06-16 | 腾讯科技(深圳)有限公司 | 图像数据的矩阵运算方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20190347555A1 (en) | 2019-11-14 |
US11651224B2 (en) | 2023-05-16 |
KR102555057B1 (ko) | 2023-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102555057B1 (ko) | 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 | |
EP3579150B1 (en) | Operation apparatus and method for a neural network | |
US11900260B2 (en) | Methods, devices and media providing an integrated teacher-student system | |
US20200026992A1 (en) | Hardware neural network conversion method, computing device, compiling method and neural network software and hardware collaboration system | |
US5506998A (en) | Parallel data processing system using a plurality of processing elements to process data and a plurality of trays connected to some of the processing elements to store and transfer data | |
CN112381211B (zh) | 基于异构平台执行深度神经网络的系统及方法 | |
US20210295168A1 (en) | Gradient compression for distributed training | |
EP4035080A1 (en) | Pipelined neural network processing with continuous and asynchronous updates | |
EP3975056A1 (en) | Neural network weight distribution using a tree direct-memory access (dma) bus | |
KR102163209B1 (ko) | 컨볼루션 신경망 훈련의 다차원 병렬화 방법과 이를 수행하는 장치 사이의 재구성 가능한 연결 구조 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN108304926B (zh) | 一种适用于神经网络的池化计算装置及方法 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN115017178A (zh) | 数据到文本生成模型的训练方法和装置 | |
JPWO2019135274A1 (ja) | ニューラル・ネットワークを有するデータ処理システム | |
US20240256475A1 (en) | Batch matrix multiplication operations in a machine learning accelerator | |
US20220036190A1 (en) | Neural network compression device | |
US20190164035A1 (en) | Device for reorganizable neural network computing | |
KR102543413B1 (ko) | 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템 | |
US20220044370A1 (en) | Image processing methods | |
JPH05197705A (ja) | ニューラルネットワークの学習システム | |
CN115906936A (zh) | 一种神经网络训练及推理方法、装置、终端及存储介质 | |
US20210142153A1 (en) | Resistive processing unit scalable execution | |
US12130886B1 (en) | Tensor automatic differentiation | |
KR20200023155A (ko) | 뉴럴 네트워크의 학습을 가속하는 방법 및 뉴럴 네트워크 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |