KR20190052893A - 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법 - Google Patents

뉴럴 네트워크 연산을 위한 전처리 장치 및 방법 Download PDF

Info

Publication number
KR20190052893A
KR20190052893A KR1020170148723A KR20170148723A KR20190052893A KR 20190052893 A KR20190052893 A KR 20190052893A KR 1020170148723 A KR1020170148723 A KR 1020170148723A KR 20170148723 A KR20170148723 A KR 20170148723A KR 20190052893 A KR20190052893 A KR 20190052893A
Authority
KR
South Korea
Prior art keywords
data
input
neuron
weight
output
Prior art date
Application number
KR1020170148723A
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 삼성전자주식회사
Priority to KR1020170148723A priority Critical patent/KR20190052893A/ko
Priority to US16/106,902 priority patent/US11403516B2/en
Publication of KR20190052893A publication Critical patent/KR20190052893A/ko
Priority to US17/848,007 priority patent/US20220335284A1/en

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/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/04Architecture, e.g. interconnection topology
    • 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/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/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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/044Recurrent networks, e.g. Hopfield 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/047Probabilistic or stochastic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Abstract

뉴럴 네트워크 연산을 위한 전처리 장치는 복수의 뉴런 레인 각각에 접속되고, 입력 뉴런 데이터를 소정의 크기로 분할저장하고, 인덱스별로 출력하는 복수의 뉴런 입력 버퍼, 복수의 웨이트 레인 각각에 접속되고, 웨이트를 저장하여 출력하는 복수의 웨이트 버퍼, 소정의 크기에 상응하도록 뉴런 입력 버퍼에서 출력된 입력 뉴런 데이터의 제1 분할 데이터를 뉴럴 네트워크 연산을 위한 연산회로에 출력하는 멀티플렉서 및 멀티플렉서로부터 출력된 입력 뉴런 데이터의 제2 분할 데이터를 시프트시켜 연산회로에 출력하는 시프터를 포함한다.

Description

뉴럴 네트워크 연산을 위한 전처리 장치 및 방법{Method and apparatus for preprocessing an operation of neural network}
뉴럴 네트워크 연산을 위한 전처리 장치 및 방법에 관한다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍처(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크를 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다. 뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 따라서, 뉴럴 네트워크를 이용하여 대량의 입력 데이터를 실시간으로 분석하여, 원하는 정보를 추출하기 위해서는 뉴럴 네트워크에 관한 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
뉴럴 네트워크 연산을 위한 전처리 장치 및 방법을 제공하는 데 있다. 본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 뉴럴 네트워크 연산을 위한 전처리 장치는 복수의 뉴런 레인 각각에 접속되고, 입력 뉴런 데이터를 소정의 크기로 분할저장하고, 인덱스별로 출력하는 복수의 뉴런 입력 버퍼; 복수의 웨이트 레인 각각에 접속되고, 웨이트를 저장하여 출력하는 복수의 웨이트 버퍼; 상기 소정의 크기에 상응하도록 상기 뉴런 입력 버퍼에서 출력된 상기 입력 뉴런 데이터의 제1 분할 데이터를 상기 뉴럴 네트워크 연산을 위한 연산회로에 출력하는 멀티플렉서; 및 상기 멀티플렉서로부터 출력된 상기 입력 뉴런 데이터의 제2 분할 데이터를 시프트시켜 상기 연산회로에 출력하는 시프터를 포함한다.
다른 측면에 따르면, 뉴럴 네트워크 연산 장치는 복수의 뉴런 레인 각각에 접속되고, 입력 뉴런 데이터를 소정의 크기로 분할 저장하고, 인덱스별로 출력하는 복수의 뉴런 입력 버퍼; 복수의 웨이트 레인 각각에 접속되고, 웨이트를 저장하여 출력하는 복수의 웨이트 버퍼; 상기 소정의 크기에 상응하도록 상기 뉴런 입력 버퍼에서 출력된 상기 입력 뉴런 데이터의 제1 분할 데이터를 출력하는 멀티플렉서; 및 상기 멀티플렉서로부터 출력된 상기 입력 뉴런 데이터의 제2 분할 데이터를 시프트시켜 상기 연산회로에 출력하는 시프터를 포함하는 전처리 장치; 및 상기 전처리 장치로부터 출력된 제1 분할 데이터 및 제2 분할 데이터와, 상기 복수의 웨이트 버퍼로부터 출력된 웨이트를 컨볼루션 연산하는 연산회로를 포함한다.
또 다른 측면에 따르면, 멀티 사이클 동작을 수행하는 뉴럴 네트워크 연산 장치는 소정 크기의 뉴런 입력 데이터 및 웨이트를 적어도 2 이상으로 분할 저장하고, 상기 분할된 뉴런 입력 데이터 및 상기 분할된 웨이트의 심볼 데이터를 기초로 출력하는 전처리 장치; 상기 전처리 장치로부터 출력된 상기 분할된 뉴런 입력 데이터 및 상기 분할된 웨이트에 대해 컨볼루션 연산하는 연산 회로; 및 상기 연산회로로부터 출력된 출력 데이터를 시프트시키는 시프터를 포함한다.
또 다른 측면에 따르면, 뉴럴 네트워크 연산을 위한 전처리 방법은 복수의 뉴런 레인 각각에 접속된 복수의 뉴런 입력 버퍼에 입력 뉴런 데이터를 인덱스별로 소정의 크기로 분할 저장하고, 복수의 웨이트 버퍼에 복수의 웨이트 레인 각각에 접속된 복수의 웨이트 버퍼에 웨이트를 저장하는 단계; 멀티플렉서에서, 상기 소정의 크기에 상응하도록 상기 뉴런 입력 버퍼에서 출력된 상기 입력 뉴런 데이터의 제1 분할 데이터를 상기 뉴럴 네트워크 연산을 위한 연산회로에 출력하는 단계; 및 시프터에서, 상기 멀티플렉서로부터 출력된 상기 입력 뉴런 데이터의 제2 분할 데이터를 시프트시켜 상기 연산회로에 출력하는 단계를 포함한다.
도 1은 일 실시 예에 따른 산출 그래프(computational graph)의 아키텍처를 설명하기 위한 도면이다.
도 2는 일 실시 예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 3은 일 실시 예에 따른 컨볼루션 연산 장치(10)를 나타내는 개략적인 블록 도이다.
도 4는 도 3에 도시된 컨볼루션 연산 장치(10)를 나타내는 구체적인 블록 도이다.
도 5는 도 3에 도시된 인풋 프로세서 유닛(210)의 개략 도이다.
도 6은 다른 실시 예에 따른 컨볼루션 연산 장치를 나타내는 개략 도이다.
도 7 및 8은 도 6에 도시된 전처리 장치(200)의 개략적인 블록 도이다.
도 9는 도 6에 도시된 컨볼루션 연산 장치를 나타내는 예시 도이다.
도 10은 도 6에 도시된 전처리 장치(200)에서 입력 뉴런 데이터를 처리하는 방법을 설명하기 위한 예시 도들이다.
도 11은 또 다른 실시 예에 따른 컨볼루션 연산을 위한 전처리 방법을 설명하기 위한 흐름 도이다.
도 12 및 13은 또 다른 실시 예에 따른 컨볼루션 연산 장치를 설명하기 위한 예시 도들이다.
도 14는 도 13에 도시된 입력 뉴런 데이터 및 웨이트에 대한 심볼 데이터의 예시 도이다.
도 15는 또 다른 실시 예에 따른 전자 시스템을 나타내는 개략적인 블록 도이다.
본 실시 예들에서 사용되는 용어는 본 실시 예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시 예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시 예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시 예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시 예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 실시 예들에서 사용되는 “구성된다” 또는 “포함한다” 등의 용어는 명세서상에 기재된 여러 구성 요소들, 도는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시 예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시 예에 따른 산출 그래프(computational graph)의 아키텍처를 설명하기 위한 도면이다.
도 1을 참고하면, 산출 그래프(1)는 노드들과 에지들을 이용하여 표현된 수학적 모델을 나타내는 그래프이다. 산출 그래프(1)의 아키텍처는 뉴럴 네트워크의 아키텍처에 해당될 수 있으나, 이 밖에도 다양한 모델들을 표현할 수 있다. 여기서, 뉴럴 네트워크는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. DNN 또는 n-계층 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN), Deep Belief Networks, Restricted Boltzman Machines 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 1의 산출 그래프(1)가 컨볼루션 뉴럴 네트워크를 표현하는 것인 경우, 산출 그래프(1)는 컨볼루션 뉴럴 네트워크 중 일부의 레이어들에 해당될 수 있다. 따라서, 산출 그래프(1)는 컨볼루션 뉴럴 네트워크의, 컨볼루션 레이어, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등에 해당될 수 있다. 다만, 이하에서는 편의상, 산출 그래프(1)가 컨볼루션 뉴럴 네트워크의 컨볼루션 레이어에 해당되는 것으로 가정하여 설명하도록 하겠으나, 이에 제한되지 않고 산출 그래프(1)는 다른 수학적 모델들의 표현에 해당될 수도 있다.
컨볼루션 레이어에서, 제 1 피처 맵(feature map 1, FM1)은 입력 피처 맵에 해당될 수 있고, 제 2 피처 맵(FM2)는 출력 피처 맵에 해당될 수 있다. 피처 맵은 입력 데이터의 다양한 특징이 표현된 데이터 세트를 의미할 수 있다. 피처 맵들(FM1, FM2)은 2차원 이상의 고차원 매트릭스일 수 있고, 각각의 액티베이션(activation) 파라미터들을 갖는다. 피처 맵들(FM1, FM2)이 예를 들어 3차원 피처 맵들에 해당되는 경우, 피처 맵들(FM1, FM2)은 너비(W)(또는 칼럼이라고 함), 높이(H)(또는 로우라고 함) 및 깊이(D)를 가진다. 이때, 깊이(D)는 채널들의 개수로 지칭될 수 있다.
컨볼루션 레이어에서, 제 1 피처 맵(FM1) 및 웨이트 맵(WM)에 대한 컨볼루션 연산이 수행될 수 있고, 그 결과 제 2 피처 맵(FM2)이 생성될 수 있다. 웨이트 맵(WM)은 제 1 피처 맵(FM1)을 필터링할 수 있으며, 필터 또는 커널(kernel)로 지칭된다. 웨이트 맵(WM)의 깊이, 즉 웨이트 맵(WM)의 채널 개수는 제 1 피처 맵(FM1)의 깊이와 제 2 피처 맵(FM2)의 깊이를 곱한 값, 즉 제 1 피처 맵(FM1)의 채널 개수와 제 2 피처 맵(FM2)의 채널 개수를 곱한 값과 동일하다. 다만, 웨이트 맵(WM)이 4차원 매트릭스이고 커널의 크기(kernel size)가 k인 경우, 웨이트 맵(WM)의 채널 개수는 “제 1 피처 맵(FM1)의 깊이 * 제 2 피처 맵(FM2)의 깊이 * k * k” 와 같이 계산될 수 있다. 웨이트 맵(WM)은 제1 입력 피처 맵(FM1)을 슬라이딩 윈도로 하여 횡단하는 방식으로 시프트된다. 각 시프트 동안, 웨이트 맵(WM)에 포함되는 웨이트들 각각이 제 1 피처 맵(FM1)과 중첩된 영역에서의 모든 피처 값과 곱해지고 더해질 수 있다. 제 1 피처 맵(FM1)과 웨이트 맵(WM)이 컨볼루션됨에 따라, 제 2 피처 맵(FM2)의 하나의 채널이 생성될 수 있다. 도 1에는 하나의 웨이트 맵(WM)이 표시되었으나, 실질적으로는 복수의 웨이트 맵들이 제 1 피처 맵(FM1)과 컨볼루션 되어, 제 2 피처 맵(FM2)의 복수의 채널들이 생성될 수 있다.
한편, 컨벌루션 레이어의 제 2 피처 맵(FM2)은 다음 레이어의 입력 피처 맵이 될 수 있다. 예를 들어, 제 2 피처 맵(FM2)는 풀링(pooling) 레이어의 입력 피처 맵이 될 수 있다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 2를 참조하면, 뉴럴 네트워크(2)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어,
Figure pat00001
Figure pat00002
)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어,
Figure pat00003
Figure pat00004
)를 생성할 수 있다.
뉴럴 네트워크(2)는 앞서 설명된 바와 같이, 2개 이상의 히든 레이어들을 포함하는 DNN 또는 n-계층 뉴럴 네트워크일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 뉴럴 네트워크(2)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. 뉴럴 네트워크(2)가 DNN 아키텍처로 구현된 경우 유효한 정보를 처리할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(2)는 싱글 레이어를 갖는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(2)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)는 더 적거나 많은 레이어들을 포함하거나, 더 적거나 많은 채널들을 포함할 수 있다. 즉, 뉴럴 네트워크(2)는 도 2에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(10)에 포함된 레이어들 각각은 복수의 채널들을 포함할 수 있다. 채널은 뉴런(neuron), 프로세싱 엘리먼트(Processing element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, Layer 1은 2개의 채널들(노드들), Layer 2 및 Layer 3 각각은 3개의 채널들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)에 포함된 레이어들 각각은 다양한 개수의 채널들(노드들)을 포함할 수 있다.
뉴럴 네트워크(2)의 레이어들 각각에 포함된 채널들은 서로 연결되어 데이터를 처리할 수 있다. 예를 들어, 하나의 채널은 다른 채널들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 채널들로 출력할 수 있다.
채널들 각각의 입력 및 출력 각각은 입력 액티베이션 및 출력 액티베이션이라고 지칭될 수 있다. 즉, 액티베이션은 한 채널의 출력임과 동시에, 다음 레이어에 포함된 채널들의 입력에 해당되는 파라미터일 수 있다. 한편, 채널들 각각은 이전 레이어에 포함된 채널들로부터 수신된 액티베이션들 및 웨이트들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 채널에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 채널들 간의 연결관계에 할당되는 값일 수 있다.
채널들 각각은 입력을 수신하여 출력 액티베이션을 출력하는 연산 유닛(computational unit) 또는 프로세싱 엘리먼트(processing element)에 의해 처리될 수 있고, 채널들 각각의 입력-출력은 매핑될 수 있다. 예를 들어,
Figure pat00005
는 액티베이션 함수(activation function)이고,
Figure pat00006
는 (i-1) 번째 레이어에 포함된 k 번째 채널로부터 i 번째 레이어에 포함된 j번째 채널로의 웨이트며,
Figure pat00007
는 i 번째 레이어에 포함된 j 번째 채널의 바이어스(bias)이고,
Figure pat00008
는 i 번째 레이어의 j 번째 채널의 액티베이션이라고 할 때, 액티베이션
Figure pat00009
는 다음과 같은 수학식 1을 이용하여 계산될 수 있다.
Figure pat00010
도 2에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 채널(CH 1)의 액티베이션은
Figure pat00011
로 표현될 수 있다. 또한,
Figure pat00012
은 수학식 1에 따라
Figure pat00013
의 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 뉴럴 네트워크(2)에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 합(sum)에 액티베이션 함수를 적용한 값을 Rectified Linear Unit (ReLU)을 통과시킴으로써 획득된 값일 수 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(2)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 수많은 연산 과정을 거친다. 따라서, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
도 3은 일 실시 예에 따른 컨볼루션 연산 장치(10)를 나타내는 개략적인 블록 도이다.
도 3을 참조하면, 연산 장치(10)는 제1 메모리(110), 제2 메모리(120), 제3 메모리(130), 인풋 데이터 프로세서(200), 연산기(300) 및 포스트 프로세서(400)를 포함할 수 있다. 연산 장치(10)는 두 개의 데이터를 수신하고, 양 데이터에 대한 컨볼루션 연산을 수행할 수 있다. 일 실시 예에서, 연산 장치(10)는 컨볼루션 신경망(Convolution Neural Network; CNN)에서 사용되는 인풋 데이터(ID) 또는 입력 뉴런 데이터(예를 들면, 컨볼루션 신경망에서 학습되는 이미지 데이터)와 웨이트 데이터(WD)(예를 들면, 컨볼루션 신경망에 사용되는 필터 데이터)를 수신하고, 인풋 데이터(ID) 및 웨이트 데이터(WD)에 대한 컨볼루션 연산을 수행하여 누적 아웃풋 데이터(AOD')를 생성할 수 있다.
제1 메모리(110)는 인풋 데이터(ID)를 저장할 수 있고, 제2 메모리(120)는 웨이트 데이터(WD)를 저장할 수 있다. 또한, 제3 메모리(130)는 인풋 데이터(ID)와 웨이트 데이터(WD)를 컨볼루션 연산한 결과인 누적 아웃풋 데이터(AOD')를 저장할 수 있다. 제1 메모리(110), 제2 메모리(120) 및 제3 메모리(130) 각각은 동적 랜덤 억세스 메모리(DRAM)(예를 들면, DDR SDRAM (Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power Double Data Rate) SDRAM, GDDR (Graphics Double Data Rate) SDRAM, RDRAM (Rambus Dynamic Random Access Memory)), 정적 랜덤 억세스 메모리(SRAM), 래치(Latch), 플립플롭(Flip-Flop), 레지스터(Register) 등과 같은 휘발성 메모리 장치일 수 있고, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(RRAM), 상변화 메모리(PRAM), 자기저항 메모리(MRAM), 강유전체 메모리(FRAM), 스핀주입 자화반전 메모리(STT-RAM) 등과 같은 비휘발성 메모리 장치일 수 있다. 본 명세서에서는 제1 메모리(110), 제2 메모리(120) 및 제3 메모리(130)가 정적 랜덤 억세스 메모리(SRAM)인 것으로 설명되나 본 개시의 기술적 사상은 이에 제한되지 않는다.
도 3에서, 제1 메모리(110), 제2 메모리(120) 및 제3 메모리(130)가 서로 별개의 블록으로 도시되어 있으나, 이는 일 실시 예에 불과하고, 또 다른 실시 예에서 제1 메모리(110), 제2 메모리(120) 및 제3 메모리(130) 중 적어도 두 개는 하나의 물리적 메모리로 구성될 수 있다. 또한, 도 3에서 제1 메모리(110), 제2 메모리(120) 및 제3 메모리(130)는 연산 장치(10)의 내부에 포함되는 것으로 도시되어 있으나 이는 일 실시 예일 뿐이고, 본 개시의 기술적 사상은 제1 메모리(110), 제2 메모리(120) 및 제3 메모리(130)가 연산 장치(10)의 외부에 포함되는 메모리로 구성되는 경우에도 적용될 수 있다.
인풋 데이터 프로세서(200)는 인풋 데이터(ID) 및 웨이트 데이터(WD)를 수신하고, 이를 기초로 인덱스(Idx)를 계산할 수 있다. 일 실시 예에서, 인풋 데이터 프로세서(200)는 인풋 데이터(ID)에 대응되는 아웃풋 데이터의 데이터 어드레스를 기초로 인덱스(Idx)를 계산할 수 있고, 인덱스(Idx)는 인풋 데이터(ID) 및 이에 대응하는 아웃풋 데이터의 데이터 어드레스에 대응될 수 있다. 인풋 데이터 프로세서(200)는 인풋 데이터(ID) 및 웨이트 데이터(WD)를 이에 대응하는 인덱스(Idx)와 함께 연산기(300)로 전송할 수 있다.
일 실시 예에서, 인풋 데이터 프로세서(200)는 인풋 데이터(ID) 및 웨이트 데이터(WD)에 대한 연산이 필요한 지 여부를 나타내는 밸리드를 생성하고, 생성한 밸리드를 연산기(300)에 출력할 수 있다. 일 예시에서, 밸리드는 인풋 데이터(ID) 및 웨이트 데이터(WD) 중 적어도 하나의 값이 '0'인지 나타낼 수 있고, 연산기(300)는 밸리드에 기초하여 인풋 데이터(ID) 및 웨이트 데이터(WD)가 모두 '0'이 아닌 경우에만 연산을 수행할 수 있다.
연산기(300)는 인풋 데이터(ID) 및 웨이트 데이터(WD)에 대해서 누적곱 연산(Mutiply-Accumulation)을 수행할 수 있다. 일 예시에서 연산기(300)는 누적곱 연산기(Mutiply-Accumulation Calculator; MAC) 역할을 수행할 수 있다. 본 개시의 기술적 사상에 따르면, 연산기(300)는 인풋 데이터(ID) 및 웨이트 데이터(WD)를 각각 곱하고, 인덱스(Idx)에 기초하여 곱한 값에 대한 누적합을 수행함으로써 누적 아웃풋 데이터(AOD)를 생성할 수 있다. 연산기(300)는 생성한 누적 아웃풋 데이터(AOD)를 포스트 프로세서(400)에 출력할 수 있다. 또한, 본 개시의 기술적 사상에 따르면, 연산기(300)는 버터플라이 구조를 가질 수 있다. 포스트 프로세서(400)는 누적 아웃풋 데이터(AOD)에 대한 후처리를 수행하고, 제3 메모리(130)에 저장할 수 있다.
본 개시의 기술적 사상에 따르면, 연산기(300)가 인덱스(Idx)에 기초하여 누적합을 수행함으로써 인풋 데이터 프로세서(200)가 복수의 인덱스(Idx)에 대응되는 인풋 데이터(ID)를 연산기 입력 전에 별도의 인덱스(Idx) 정렬없이 동시에 처리할 수 있고, 이에 따라서 연산 처리 속도가 빨라질 수 있다. 또한, 연산기(300)가 버터플라이 구조를 가지고, 인덱스(Idx)에 기초하여 누적합을 수행함으로서 누적합 연산에 필요한 덧셈기의 개수가 감소할 수 있다.
도 4는 도 3에 도시된 컨볼루션 연산 장치(10)를 나타내는 구체적인 블록 도이다.
도 4는 연산 장치(10) 중 제1 메모리(110), 제2 메모리(120), 인풋 데이터 프로세서(200) 및 연산기(300)를 나타내는 블록도이다. 도 3과 중복되는 내용에 대한 설명은 생략한다.
도 3 및 4를 참조하면, 연산 장치(10)는 제1 메모리(110), 제2 메모리(120), 인풋 데이터 프로세서(200) 및 연산기(300)를 포함할 수 있고, 인풋 데이터 프로세서(200)는 제1 내지 제N 인풋 데이터 프로세서 유닛(210_1~210_N)을 포함할 수 있다.
제1 내지 제N 인풋 데이터 프로세서 유닛(210_1~210_N) 각각은 제1 메모리(110)로부터 제1 내지 제N 인풋 데이터(ID1~IDN)를 수신하고, 제2 메모리(120)로부터 제1 내지 제N 웨이트 데이터(WD1~N)를 수신할 수 있다. 제1 내지 제N 인풋 데이터 프로세서 유닛(210_1~210_N) 각각은 제1 내지 제N 인풋 데이터(ID1~IDN)의 데이터 어드레스를 기초로 각각 제1 내지 제N 인덱스(Idx1~IdxN)을 생성하고, 생성한 제1 내지 제N 인덱스(Idx1~IdxN)을 제1 내지 제N 인풋 데이터(ID1~IDN) 및 제1 내지 제N 웨이트 데이터(WD1~N)와 함께 독립적으로 연산기(300)에 출력할 수 있다. 일 예시에서, 데이터 어드레스는 제1 내지 제N 인풋 데이터 프로세서 유닛(210_1~210_N) 각각이 처리하는 인풋 데이터가 전체 데이터에서 차지하는 위치를 나타낼 수 있다.
연산기(300)는 복수의 곱셈기(MP), 합산 회로(310) 및 제1 내지 제M 누적 회로(320_1~320_M)를 포함할 수 있다. 복수의 곱셈기들(MP) 각각은 제1 내지 제N 인풋 데이터 프로세서 유닛(210_1~210_N)로부터 수신한 제1 내지 제N 인풋 데이터(ID1~N) 및 제1 내지 제N 웨이트 데이터(WD1~N)를 곱함으로서 레인 데이터를 생성할 수 있다. 레인 데이터는 제1 내지 제N 레인(LN1~LNN)을 통해 합산 회로(310)에 각각 입력될 수 있다. 레인 데이터는 제1 내지 제N 인풋 데이터(ID1~N) 및 제1 내지 제N 웨이트 데이터(WD1~N)를 곱한 값이기 때문에 제1 내지 제N 인덱스(Idx1~N)에 각각 대응될 수 있다. 본 명세서에서 레인 데이터는 인풋 데이터(ID1~N)와 웨이트 데이터(WD1~N)를 각각 곱한 수치를 칭한다. 즉, 제1 레인 데이터는 제1 레인(LN1)으로 수신되는 제1 인풋 데이터(LD1)와 제1 웨이트 데이터(WD1)를 곱한 상수일 수 있다.
합산 회로(310)는 곱셈기(MP) 및 이에 대응되는 제1 내지 제N 인풋 데이터 프로세서 유닛(210_1~210_N)와 각각 연결된 제1 내지 제N 레인(LN1~LNN)과 연결될 수 있고, 제1 내지 제N 레인(LN1~LNN)을 통해 각각 레인 데이터를 수신할 수 있다. 합산 회로(310)는 레인 데이터를 각각 대응되는 인덱스(Idx1~IdxN)를 비교하고 합산할 수 있고, 인덱스별로 분류되고 합산함으로써 생성한 레인 데이터를 데이터 어드레스별로 소팅할 수 있다. 합산 회로(310)는 소팅 결과 생성된 M(M은 1이상의 자연수)개의 아웃풋 데이터를 제1 내지 제M 누적 회로(320_1~320_M)로 출력할 수 있다.
제1 내지 제M 누적 회로(320_1~320_M)는 각각 덧셈기(AD) 및 레지스터(321)를 포함할 수 있다. 덧셈기(AD)는 레지스터(321)로부터 누적 아웃풋 데이터를 수신하고, 합산 회로(310)로부터 수신한 아웃풋 데이터를 누적 아웃풋 데이터에 더할 수 있다. 덧셈기(AD)는 수신한 아웃풋 데이터를 더한 누적 아웃풋 데이터를 레지스터(321)에 저장할 수 있다. 레지스터(321)는 누적 아웃풋 데이터를 저장하고, 포스트 프로세서(400)에 저장된 누적 아웃풋 데이터를 출력할 수 있다.
도 5는 도 3에 도시된 인풋 프로세서 유닛(210)의 개략 도이다.
도 5를 참조하면, 인풋 데이터 프로세서 유닛(210)은 패처(211) 및 디스패처(212)를 포함할 수 있다. 패처(211)는 제1 메모리(110)로부터 인풋 데이터(ID)를 수신하고, 이에 기초하여 데이터 어드레스(DA)를 생성할 수 있다. 패처(211)는 인풋 데이터(ID)와 이를 기초로 생성한 데이터 어드레스(DA)를 디스패처(212)에 출력할 수 있다. 디스패처(212)는 제2 메모리(120)로부터 웨이트 데이터(WD)를 더 수신하고, 데이터 어드레스(WD)를 기초로 인덱스(Idx)를 생성할 수 있다. 인덱스(Idx)는 데이터 어드레스(WD)와 대응될 수 있다. 디스패처(212)는 인풋 데이터(ID) 및 웨이트 데이터(WD)를 생성한 인덱스(Idx)와 함께 연산기(300)에 출력할 수 있다.
일 실시 예에서, 디스패처(212)는 밸리드를 더 생성할 수 있다. 밸리드는 인풋 데이터(ID) 및 웨이트 데이터(WD)에 대한 연산이 필요한 지 여부를 나타낼 수 있고, 일 예시에서, 밸리드는 인풋 데이터(ID) 및 웨이트 데이터(WD) 중 적어도 하나의 값이 0인지 나타낼 수 있다. 일 예시에서, 디스패처(212)는 인풋 데이터(ID) 및 웨이트 데이터(WD) 중 적어도 하나가 데이터 값으로서 '0'을 갖고 있는 경우 밸리드로서 '0'을 출력할 수 있고, 인풋 데이터(ID) 및 웨이트 데이터(WD)가 모두 '0'이 아닌 경우 밸리드로서 '1'을 출력할 수 있다. 또 다른 예시에서, 디스패처(212)는 인풋 데이터(ID) 및 웨이트 데이터(WD) 중 적어도 하나가 데이터 값으로서 '0'을 갖고 있는 경우 밸리드로서 '1'을 출력할 수 있고, 인풋 데이터(ID) 및 웨이트 데이터(WD)가 모두 '0'이 아닌 경우 밸리드로서 '0'을 출력할 수 있다.
도 6은 다른 실시 예에 따른 컨볼루션 연산 장치(1000)를 나타내는 개략 도이다.
도 6을 참조하면, 컨볼루션 연산 장치(100)는 메모리(100), 전처리장치(200) 및 연산장치(300)를 포함한다. 메모리(100)는 도 3에 도시된 메모리(110 내지 130)에 대응되고, 연산장치(300)는 도 3에 도시된 연산기(300), MAC 또는 연산기(300) 및 포스트 프로세서(400)에 대응될 수 있다. 실시 예에서, 전처리 장치(200)는 도 3에 도시된 인풋 프로세서 유닛(200)에 대응될 수 있다.
실시 예에 따른 전처리 장치(200)는 뉴런 입력 버퍼들과, 웨이트 버퍼들, 멀티플렉서 및 시프터를 포함하여 구성할 수 있다. 전처리 장치(200)는 도 3에 도시된 인풋 프로세서 유닛(200), 특히, 도 5에 도시된 디스패처(212)에 대응될 수 있다. 전처리 장치(200)는 복수의 뉴런 레인 각각에 접속되고, 입력 뉴런 데이터를 소정의 크기로 분할저장하고, 인덱스별로 출력하는 복수의 뉴런 입력 버퍼, 복수의 웨이트 레인 각각에 접속되고, 웨이트를 저장하여 출력하는 복수의 웨이트 버퍼, 소정의 크기에 상응하도록 뉴런 입력 버퍼에서 출력된 입력 뉴런 데이터의 제1 분할 데이터를 뉴럴 네트워크 연산을 위한 연산회로에 출력하는 멀티플렉서, 멀티플렉서로부터 출력된 입력 뉴런 데이터의 제2 분할 데이터를 시프트시켜 연산회로에 출력하는 시프터를 포함하여 구성할 수 있다.
실시 예에 따른 전처리 장치(200)는 뉴런 입력 데이터, 예를 들면 피처 맵들과 웨이트들에 대한 입력 버퍼단을 디-커플링 구조(de-coupling structure)로 구현함으로써 MAC에서 다양한 출력 인덱스를 갖는 입력 뉴런들에 대한 부분적인 출력값들을 스톨(Stall)없이 합산할 수 있도록 한다.
실시 예에 따른 전처리 장치(200)는 입력 뉴런 데이터가 N 비트 크기인 경우, N/D 비트 단위로 분할할 수 있다. 여기서, N은 자연수이고, D는 N 값을 나누는 디바이더로서, N/D의 값이 1이 될 때까지 증가시킬 수 있고, N/D는 정수이어야 한다. 전처리 장치(200)는 입력 뉴런 데이터를 1/2, 1/3, 1/4 등의 크기로 분할하여 입력 뉴런 버퍼에 저장하고, 서로 다른 출력 인덱스끼리 맞춰서 출력한다. 예를 들면, 16비트를 처리하는 MAC 구조에서, 16 비트크기의 입력 뉴런 데이터와 웨이트를 입력 버퍼상에 8비트로 분할하여 저장한 뒤 MAC에 출력하는 경우, 2배의 효율을 얻을 수 있다. 따라서, 실시 예에 따른 전처리 장치를 통해, MAC 구조는 컨볼루션 레이어에 따라 다양한 정밀도(Precision) 또는 동적 고정 포인트(Dynamic fixed point)를 갖는 입력을 효율적으로 처리할 수 있다.
전처리 장치(200)의 구체적인 구성에 대해서는 도 7 및 8을 참조하여 후술한다.
도 7 및 8은 도 6에 도시된 전처리 장치(200)의 개략적인 블록 도이다.
도 7을 참조하면, 입력 뉴런 버퍼(710)에 저장된 입력 뉴런 데이터에 대해 1/2 크기로 분할하여 처리하는 것이 설명되어 있다. 전처리 장치(200)는 도 4에 도시된 메모리(100)로부터 입력 뉴런 데이터를 가져와서 입력 뉴런 버퍼(710)에 분할 저장한다. 예시적으로, 8비트의 입력 뉴런 데이터를 가져와서 4비트씩 분할하여 저장한 후 연산 장치(300)에 출력하는 것을 설명한다.
도 7에 도시된 것처럼, 인덱스별로 하위 4비트(701 및 702)의 입력 뉴런 데이터를 멀티플렉서(720)에 출력하면 멀티플렉서는 인덱스별로 연산장치(300)에 4비트의 입력 뉴런 데이터를 출력한다. 도 8에 도시된 것처럼, 인덱스별로 상위 4비트(703 및 704)의 입력 뉴런 데이터를 멀티플렉서(720)에 출력하면, 시프터(730)는 4비트를 시프트시켜 연산장치(300)에 출력한다.
도 9는 도 6에 도시된 컨볼루션 연산 장치를 나타내는 예시 도이다.
도 7 내지 9를 참조하면, 전처리 장치(900)와 연산장치(910)가 도시되어 있다. 전처리 장치(900)는 도 7 및 8에 도시된 것처럼, 입력 뉴런 버퍼(710)와 웨이터 버퍼(750), 멀티플렉서(720) 및 시프터(730)를 포함하고, 연산장치(910)는 다수의 곱셉기, 다수의 덧셈기, 다수의 분배기 및 소터를 포함할 수 있다.
입력 뉴런 버퍼(710)는 다수의 입력 뉴런 레인(NL0 내지 NL3)과 접속되어 있으며, 도 7 및 8에 도시된 바와 같이, 8비트의 입력 뉴런 데이터를 분할 저장하고 있다. 웨이트 버퍼(750)는 다수의 웨이트 레인(SL0 내지 SL3)과 접속되어 있으며, 8비트의 웨이트를 저장하고 있다.
제1 입력 뉴런 레인(NL0)과 접속된 제1 입력 뉴런 버퍼에 저장된 8비트 입력 뉴런 데이터에 대해 하위 4비트의 입력 뉴런 데이터(701)가 멀티플렉서(720)를 통해 제1 레인(901)에 접속된 곱셉기에 출력된다. 한편, 제1 입력 뉴런 버퍼에 저장된 8비트 입력 뉴런 데이터에 대해 상위 4비트의 입력 뉴런 데이터(703)가 멀티플렉서(720)를 통해 시프터(730)에서 4비트 시프트되어 제2 레인(902)에 접속된 곱셈기에 출력된다. 제1 웨이트 레인(SL0)에 접속된 제1 웨이트 버퍼에서 출력된 8비트의 웨이트가 제1 레인(901) 및 제2 레인(902)에 접속된 곱셈기에 출력된다. 여기서, 전처리 장치(900)는 제1 입력 뉴런 버퍼에 저장된 8비트의 입력 뉴런 데이터의 하위 4비트 및 상위 4비트의 입력 뉴런 데이터의 인덱스를 인덱스 0으로 맞춰서 출력한다.
제2 입력 뉴런 레인(NL1)과 접속된 제2 입력 뉴런 버퍼에 저장된 8비트 입력 뉴런 데이터에 대해 하위 4비트의 입력 뉴런 데이터(702)가 멀티플렉서(720)를 통해 제3 레인(903)에 접속된 곱셉기에 출력된다. 한편, 제2 입력 뉴런 버퍼에 저장된 8비트 입력 뉴런 데이터에 대해 상위 4비트의 입력 뉴런 데이터(704)가 멀티플렉서(720)를 통해 시프터(730)에서 4비트 시프트되어 제4 레인(904)에 접속된 곱셈기에 출력된다. 제2 웨이트 레인(SL1)에 접속된 제2 웨이트 버퍼에서 출력된 8비트의 웨이트가 제3 레인(903) 및 제4 레인(904)에 접속된 곱셈기에 출력된다. 여기서, 전처리 장치(900)는 제2 입력 뉴런 버퍼에 저장된 8비트의 입력 뉴런 데이터의 하위 4비트 및 상위 4비트의 입력 뉴런 데이터의 인덱스를 인덱스 1로 맞춰서 출력한다. 전처리 장치(900)는 입력 뉴런 버퍼에 저장된 입력 뉴런 데이터에 대해 동일한 방식으로 전처리하여 연산장치(910)에 출력한다.
제3 입력 뉴런 레인(NL2)과 접속된 제3 입력 뉴런 버퍼에 저장된 8비트 입력 뉴런 데이터와 제4 입력 뉴런 레인(NL3)과 접속된 제4 입력 뉴런 버퍼에 저장된 8비트 입력 뉴런 데이터에 대해서는 전술한 전처리 과정을 통해 제5 레인 내지 제 8 레인에 각각 출력된다.
연산장치(910)는 제1 내지 제8 레인(901 내지 908)의 레인 값, 즉 입력 뉴런 데이터와 웨이트의 곱한 값을 덧셈기를 통해 합산하여 소터에 출력한다. 소터는 인덱스별로 합산하여 누적한다. 여기서, 인덱스는 출력버퍼에 저장되는 위치를 가리키는 것이다.
제1 레인(901)의 레인 값과 제2 레인(902)의 레인 값은 동일한 인덱스 0이므로 서로 비교하지 않는다. 따라서, 제1 레인(901)의 레인 값은 제3 내지 제8 레인(903 내지 908)의 분배기 또는 비교기에 출력된다. 제2 레인(902)의 레인 값은 제3 레인(903), 제4 레인(904), 제5 레인(905) 및 제6 레인(906)의 분배기에 출력된다. 이러한 방식을 통해 모든 레인의 레인 값들이 분배기, 멀티플렉서 및 10개의 덧셈기를 통해 컨볼루션 연산이 이루어진다. 여기서, 분배기는 동일한 인덱스를 갖는 경우에는 해당 레인 값을 덧셈기에 출력하고, 해당 레인 값은 0으로 설정하고, 서로 다른 인덱스를 갖는 경우에는 덧셈기에 0을 출력하고, 해당 레인의 레인 값을 유지한다. 예를 들면, 도 9에 도시된 것처럼, 제6 레인(906)의 인덱스 2와 제8 레인의 인덱스 3이 서로 다르기 때문에, 덧셈기에는 0을 출력하고, 제8 레인(908)의 레인 값을 유지한다.
이러한 방식을 통해 8비트의 입력 뉴런 데이터를 4비트로 분할하여 서로 다른 출력 인덱스끼리 맞춰서 연산장치(910)에 출력함으로써, 연산장치(910)의 덧셈기의 숫자를 10개로 줄일 수 있다. 하지만, 종래기술에 따라 8비트의 입력 뉴런 데이터를 처리하는 경우에는 28개의 덧셈기가 필요할 수 밖에 없다.
도 10은 도 6에 도시된 전처리 장치(200)에서 입력 뉴런 데이터를 처리하는 방법을 설명하기 위한 예시 도들이다.
전처리 장치(200)는 입력 뉴런 데이터의 비트 크기가 나눠지는 크기 단위로 0이 채워져 있을 경우에, 스킵핑하거나 외부 메모리로부터 해당 영역의 데이터를 가져오지 않을 수 있다. 따라서, 스킵핑된 영역은 전처리 장치(200)의 버퍼 영역 또는 외부 메모리로부터 동일한 인덱스를 갖는 다음 입력 뉴런 데이터를 채울 수 있다.
도 10a에 도시된 것처럼, 8비트 크기의 입력 뉴런 데이터에 대해 4비트 단위로 나눠서 연산할 경우, 입력 뉴런 데이터가 0 내지 15의 범위의 값인 경우, MSB(Most Significant Bit, 이하 MSB라 한다) 4비트(1010)는 0의 값을 가지므로 스킵한다.
도 10b에 도시된 것처럼, 8비트 크기의 입력 뉴런 데이터에 대해 4비트 단위로 나눠서 연산할 경우, 입력 뉴런 데이터가 16의 배수 값인 경우, LSB(Least Significant Bit, 이하 LSB라 한다) 4비트(1020)는 0의 값을 가지므로 스킵한다.
도 10c에 도시된 것처럼, 전체 8비트(1030)가 0인 경우에는 전체 8비트를 스킨한다.
따라서, 실시 예에 따른 전처리 장치(200)는 입력 뉴런 데이터를 분할하는 경우, 부분적인 O인 값을 가지는 영역에 대해 스킵핑하여 MAC 연산 속도를 단축시킬 수 있다.
도 11은 또 다른 실시 예에 따른 컨볼루션 연산을 위한 전처리 방법을 설명하기 위한 흐름 도이다.
도 11을 참조하면, 단계 1100에서, 복수의 뉴런 레인 각각에 접속된 복수의 뉴런 입력 버퍼에 입력 뉴런 데이터를 인덱스별로 소정의 크기로 분할 저장하고, 복수의 웨이트 버퍼에 복수의 웨이트 레인 각각에 접속된 복수의 웨이트 버퍼에 웨이트를 저장한다. 입력 뉴런 데이터를 분할하는 경우, MAC 처리 비트 수를 고려할 수 있다. 예를 들면 16비트를 처리하는 MAC 구조에 대해 입력 뉴런 또는 웨이트 버퍼 상에 8비트로 나누어 연속처리(concatenating)하여 연산기를 통과함으로써 2배의 효율을 얻을 수 있다. 여기서, 소정의 크기는 연산기의 처리 비트에 따라 1/2, 1/3, 1/4로 분할할 수 있음은 물론이다. 즉, 8비트로 설계된 연산기의 예에서, 4비트의 입력이 들어오면 1/2로 분할할 수 있고, 2비트 입력이 들어오면 1/4로 분할할 수 있다.
단계 1102에서, 멀티플렉서는, 소정의 크기에 상응하도록 뉴런 입력 버퍼에서 출력된 입력 뉴런 데이터의 제1 분할 데이터를 뉴럴 네트워크 연산을 위한 연산회로에 출력한다.
단계 1104에서, 시프터에서, 멀티플렉서로부터 출력된 입력 뉴런 데이터의 제2 분할 데이터를 시프트시켜 연산회로에 출력한다.
실시 예에 따른 전처리 방법을 통해 컨볼루션 뉴럴 네트워크를 위한 MAC 구조의 복잡도를 줄일 수 있다.
도 12 및 13은 또 다른 실시 예에 따른 컨볼루션 연산 장치를 설명하기 위한 예시 도들이다. 도 12 및 13을 참조하여 멀티 사이클 동작 시에, 입력단에서 전처리를 통하여 경량화를 구현하는 것을 설명한다. 8비트 입력 처리가 능한 MAC 구조에서 16비트 연산을 수행하는 경우 4번의 멀티 사이클 동작이 필요하다. 종래의 컨볼루션 연산 장치는 도 12에 도시된 바와 같다. 도 12에 도시된 것처럼 8비트의 뉴런 입력 데이터와 8비트의 웨이트를 곱하여 출력된 16비트의 출력 데이터에 대해 16비트 시프트 시켜 출력된 32비트에 대해 덧셈 연산을 수행한다. 따라서, 종래기술에서는, 곱셈 연산 후에 최대 16비트까지 비트 시프트를 해야 하기 때문에, 덧셈기 트리(adder tree)상에 덧셈기의 크기가 커질 수 밖에 없다.
도 13을 참조하면, MAC 연산기에 입력하기 전에, 전처리 장치에서, 도 14에 도시된 것처럼, 4개의 단계로 나누어 데이터를 출력한다. 여기서, 각각 8비트의 입력 뉴런 데이터와 웨이트를 2단계로 나누는 경우, L은 LSB 4비트이고, H는 MSB 4비트이다. 따라서, 전처리 장치에서, 도 14에 도시된 것처럼, 심볼 데이터를 이용하여 입력단에서, L 또는 H에 맞춰서 MAC 연산기에 출력한다.
제1 사이클에서, MSB 4비트의 뉴런 입력 데이터와 MSB 4비트의 웨이트를 MAC 연산기에 출력하고, 연산기가 컨볼루션 연산 결과 데이터를 출력하는 경우, 16비트 시프트시킨다.
제2 사이클에서, LSB 4비트의 뉴런 입력 데이터와 MSB 4비트의 웨이트를 MAC 연산기에 출력하고, 연산기가 컨볼루션 연산 결과 데이터를 출력하는 경우, 8비트 시프트시킨다.
제3 사이클에서, MSB 4비트의 뉴런 입력 데이터와 LSB 4비트의 웨이트를 MAC연산기에 출력하고, 연산기가 컨볼루션 연산 결과 데이터를 출력하는 경우, 8비트 시프트시킨다.
제4 사이클에서, LSB 4비트의 뉴런 입력 데이터와 LSB 4비트의 웨이트를 MAC 연산기에 출력한다.
실시 예에 따른 전처리 장치를 통해, 기존 MAC 구조에 비해 덧셈 트리를 절반으로 감소시킬 수 있다.
실시 예에서, 8비트 입력에 대해 2단(H 및 L)으로 나누는 경우에 대해서 설명하였지만, 16비트 입력에 대해, 4단으로 나누는 경우, H, MH, ML, L을 포함하는 심볼 데이터를 기준으로 덧셈기의 크기를 더욱 줄일 수도 있다.
도 15는 또 다른 실시 예에 따른 전자 시스템을 나타내는 개략적인 블록 도이다.
도 15를 참고하면, 전자 시스템(1500)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(1500)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 전자 시스템(1500)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(1500)은 프로세서(1510), RAM(1520), 뉴럴 네트워크 장치(1530), 메모리(1540), 센서 모듈(1550) 및 통신 모듈(1560)을 포함할 수 있다. 전자 시스템(1500)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 전자 시스템(1500)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다. 뉴럴 네트워크 장치(1530)는 앞서 설명된 뉴럴 네트워크 전용 하드웨어 가속기 자체 또는 이를 포함하는 장치일 수 있다.
프로세서(1510)는 전자 시스템(1500)의 전반적인 동작을 제어한다. 프로세서(1510)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(1510)는 메모리(1540)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, 프로세서(1510)는 메모리(1540)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1530)의 기능을 제어할 수 있다. 프로세서(1510)는 CPU, GPU, AP 등으로 구현될 수 있다.
RAM(1520)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(1940)에 저장된 프로그램들 및/또는 데이터는 프로세서(1510)의 제어 또는 부팅 코드에 따라 RAM(1520)에 일시적으로 저장될 수 있다. RAM(1920)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(1530)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(1530)는 뉴럴 네트워크를 이용하여 처리를 수행하는 하드웨어로서, 앞서 설명된 뉴럴 네트워크 연산을 위한 전처리 장치를 포함할 수 있다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(1530)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(1500)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(1530)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
메모리(1540)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시 예에 있어서, 메모리(1540)는 뉴럴 네트워크 장치(1530)의 연산 수행 과정에서 생성되는 중간 결과들, 예컨대 출력 피처 맵을 출력 피처 리스트 또는 출력 피처 매트릭스 형태로 저장할 수 있다. 실시예에 있어서, 메모리(1540)에는 압축된 출력 피처 맵이 저장될 수 있다. 또한, 메모리(1540)는 뉴럴 네트워크 장치(1530)에서 이용되는 양자화된 뉴럴 네트워크 데이터, 예컨대, 파라미터들, 웨이트 맵 또는 웨이트 리스트를 저장할 수 있다.
메모리(1540)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1540)는 휘발성 메모리 또는 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리(1540)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(1550)은 전자 시스템(1500)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(1550)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(1550)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(1550)은 변환된 데이터를 뉴럴 네트워크 장치(1530)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(1550)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(1530)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(1550)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(1530)에 제공할 수 있다.
통신 모듈(1560)은 외부 장치와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(1560)은 유선 근거리통신망(Local Area Network; LAN), Wi-fi(Wireless Fidelity)와 같은 무선 근거리 통신망 (Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB (Wireless Universal Serial Bus), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC(Power Line communication), 또는 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution) 등 이동 통신망(mobile cellular network)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
실시 예에 있어서, 통신 모듈(1560)은 외부로부터 뉴럴 네트워크에 관한 데이터를 수신할 수 있다.
한편, 상술한 실시 예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 실시 예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 뉴럴 네트워크 연산을 위한 전처리 장치로서,
    복수의 뉴런 레인 각각에 접속되고, 입력 뉴런 데이터를 소정의 크기로 분할저장하고, 인덱스별로 출력하는 복수의 뉴런 입력 버퍼;
    복수의 웨이트 레인 각각에 접속되고, 웨이트를 저장하여 출력하는 복수의 웨이트 버퍼;
    상기 소정의 크기에 상응하도록 상기 뉴런 입력 버퍼에서 출력된 상기 입력 뉴런 데이터의 제1 분할 데이터를 상기 뉴럴 네트워크 연산을 위한 연산회로에 출력하는 멀티플렉서; 및
    상기 멀티플렉서로부터 출력된 상기 입력 뉴런 데이터의 제2 분할 데이터를 시프트시켜 상기 연산회로에 출력하는 시프터를 포함하는 전처리 장치.
  2. 제 1 항에 있어서,
    상기 전처리 장치는,
    상기 입력 뉴런 데이터의 비트 크기가 나눠지는 크기 단위로 제로 값이 포함된 경우, 상기 제로 값을 포함하는 영역을 스킵(skip)하는 것을 특징으로 하는 전처리 장치.
  3. 제 2 항에 있어서,
    상기 전처리 장치는,
    상기 스킵된 영역에 대해, 동일한 인덱스를 갖는 다음 입력 뉴런 데이터의 부분 데이터를 이용하여 대체하는 것을 특징으로 하는 전처리 장치.
  4. 제 2 항에 있어서,
    상기 입력 뉴런 데이터가 N(N은 자연수) 비트 크기인 경우, N/D(D는 N/D의 값이 1이 될 때까지 증가시킬 수 있고, N/D는 정수임) 비트 단위로 분할하는 것을 특징으로 하는 전처리 장치.
  5. 제 4 항에 있어서,
    상기 입력 뉴런 데이터가 0 내지 15 범위의 값인 경우, 최상위(MSB) N/D 비트에 대한 영역을 스킵하는 것을 특징으로 하는 전처리 장치.
  6. 제 4 항에 있어서,
    상기 입력 뉴런 데이터가 16 배수의 값인 경우, 최하위(LSB) N/D 비트에 대한 영역을 스킵하는 것을 특징으로 하는 전처리 장치.
  7. 제 4 항에 있어서,
    상기 입력 뉴런 데이터가 전체 0인 경우, N 비트를 스킵하는 것을 특징으로 하는 전처리 장치.
  8. 제 1 항에 있어서,
    상기 전처리 장치는,
    상기 입력 뉴런 데이터의 비트 크기가 나눠지는 크기 단위로 제로 값이 포함된 경우, 상기 제로 값을 포함하는 영역을 외부 메모리로부터 가져오지 않는 것을 특징으로 하는 전처리 장치.
  9. 뉴럴 네트워크 연산 장치에 있어서,
    복수의 뉴런 레인 각각에 접속되고, 입력 뉴런 데이터를 소정의 크기로 분할 저장하고, 인덱스별로 출력하는 복수의 뉴런 입력 버퍼; 복수의 웨이트 레인 각각에 접속되고, 웨이트를 저장하여 출력하는 복수의 웨이트 버퍼; 상기 소정의 크기에 상응하도록 상기 뉴런 입력 버퍼에서 출력된 상기 입력 뉴런 데이터의 제1 분할 데이터를 출력하는 멀티플렉서; 및 상기 멀티플렉서로부터 출력된 상기 입력 뉴런 데이터의 제2 분할 데이터를 시프트시켜 상기 연산회로에 출력하는 시프터를 포함하는 전처리 장치; 및
    상기 전처리 장치로부터 출력된 제1 분할 데이터 및 제2 분할 데이터와, 상기 복수의 웨이트 버퍼로부터 출력된 웨이트를 컨볼루션 연산하는 연산회로를 포함하는 뉴럴 네트워크 연산 장치.
  10. 멀티 사이클 동작을 수행하는 뉴럴 네트워크 연산 장치에 있어서,
    소정 크기의 뉴런 입력 데이터 및 웨이트를 적어도 2 이상으로 분할 저장하고, 상기 분할된 뉴런 입력 데이터 및 상기 분할된 웨이트의 심볼 데이터를 기초로 출력하는 전처리 장치;
    상기 전처리 장치로부터 출력된 상기 분할된 뉴런 입력 데이터 및 상기 분할된 웨이트에 대해 컨볼루션 연산하는 연산 회로; 및
    상기 연산 회로로부터 출력된 출력 데이터를 시프트시키는 시프터를 포함하는 뉴럴 네트워크 연산 장치.
  11. 제 10 항에 있어서,
    상기 전처리 장치는, 제1 사이클 동작에서, 상기 심볼 데이터를 기초로 제1 뉴런 입력 데이터 및 제1 웨이트를 출력하고,
    상기 시프터는 상기 출력 데이터를 상기 소정 크기의 2배만큼 시프트시키고,
    상기 전처리 장치는, 제2 사이클 동작에서, 상기 심볼 데이터를 기초로 제2 뉴런 입력 데이터 및 상기 제1 웨이트를 출력하고,
    상기 시프터는 상기 출력 데이터를 상기 소정 크기만큼 시프트시키고,
    상기 전처리 장치는, 제3 사이클 동작에서, 상기 심볼 데이터를 기초로 제1 뉴런 입력 데이터 및 상기 제2 웨이트를 출력하고,
    상기 시프터는 상기 출력 데이터를 상기 소정 크기만큼 시프트시키고,
    상기 전처리 장치는, 제4 사이클 동작에서, 상기 심볼 데이터를 기초로 상기 제2 뉴런 입력 데이터 및 상기 제2 웨이트를 출력하는 것을 특징으로 하는 뉴럴 네트워크 연산 장치.
  12. 제 11 항에 있어서,
    상기 소정 크기가 N(N은 2 이상의 자연수)비트인 경우,
    상기 제1 뉴런 입력 데이터 및 상기 제1 웨이트는 최상위(MSB) N/2비트이고,
    상기 제2 뉴런 입력 데이터 및 상기 제2 웨이트는 최하위(LSB) N/2비트인 것을 특징으로 하는 뉴럴 네트워크 연산 장치.
  13. 뉴럴 네트워크 연산을 위한 전처리 방법으로서,
    복수의 뉴런 레인 각각에 접속된 복수의 뉴런 입력 버퍼에 입력 뉴런 데이터를 인덱스별로 소정의 크기로 분할 저장하고, 복수의 웨이트 레인 각각에 접속된 복수의 웨이트 버퍼에 웨이트를 저장하는 단계;
    멀티플렉서에서, 상기 소정의 크기에 상응하도록 상기 뉴런 입력 버퍼에서 출력된 상기 입력 뉴런 데이터의 제1 분할 데이터를 상기 뉴럴 네트워크 연산을 위한 연산회로에 출력하는 단계; 및
    시프터에서, 상기 멀티플렉서로부터 출력된 상기 입력 뉴런 데이터의 제2 분할 데이터를 시프트시켜 상기 연산회로에 출력하는 단계를 포함하는 전처리 방법.
  14. 제 13 항에 있어서,
    상기 입력 뉴런 데이터의 비트 크기가 나눠지는 크기 단위로 제로 값이 포함된 경우, 상기 제로 값을 포함하는 영역을 스킵(skip)하는 단계를 더 포함하는 것을 특징으로 하는 전처리 방법.
  15. 제 14 항에 있어서,
    상기 스킵된 영역에 대해, 동일한 인덱스를 갖는 다음 입력 뉴런 데이터의 부분 데이터를 이용하여 대체하는 단계를 더 포함하는 것을 특징으로 하는 전처리 방법.
  16. 제 13 항에 있어서,
    상기 입력 뉴런 데이터가 N(N은 자연수) 비트 크기인 경우, N/D(D는 N/D의 값이 1이 될 때까지 증가시킬 수 있고, N/D는 정수임) 비트 단위로 분할하는 것을 특징으로 하는 전처리 방법.
  17. 제 16 항에 있어서,
    상기 입력 뉴런 데이터가 0 내지 15 범위의 값인 경우, 최상위(MSB) N/D 비트에 대한 영역을 스킵하는 것을 특징으로 하는 전처리 방법.
  18. 제 16 항에 있어서,
    상기 입력 뉴런 데이터가 16 배수의 값인 경우, 최하위(LSB) N/D 비트에 대한 영역을 스킵하는 것을 특징으로 하는 전처리 방법.
  19. 제 16 항에 있어서,
    상기 입력 뉴런 데이터가 전체 0인 경우, N비트를 스킵하는 것을 특징으로 하는 전처리 방법.
  20. 제 13 항에 있어서,
    상기 입력 뉴런 데이터의 비트 크기가 나눠지는 크기 단위로 제로 값이 포함된 경우, 상기 제로 값을 포함하는 영역을 외부 메모리로부터 가져오지 않는 것을 특징으로 하는 전처리 방법.
KR1020170148723A 2017-11-09 2017-11-09 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법 KR20190052893A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170148723A KR20190052893A (ko) 2017-11-09 2017-11-09 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법
US16/106,902 US11403516B2 (en) 2017-11-09 2018-08-21 Apparatus and method for processing convolution operation of neural network
US17/848,007 US20220335284A1 (en) 2017-11-09 2022-06-23 Apparatus and method with neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170148723A KR20190052893A (ko) 2017-11-09 2017-11-09 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20190052893A true KR20190052893A (ko) 2019-05-17

Family

ID=66328695

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170148723A KR20190052893A (ko) 2017-11-09 2017-11-09 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법

Country Status (2)

Country Link
US (2) US11403516B2 (ko)
KR (1) KR20190052893A (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110796245A (zh) * 2019-10-25 2020-02-14 浪潮电子信息产业股份有限公司 卷积神经网络模型的计算方法及装置
KR102258566B1 (ko) * 2021-03-22 2021-06-01 리벨리온 주식회사 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기
KR20210082081A (ko) * 2019-12-24 2021-07-02 서울대학교산학협력단 음수값을 갖는 활성화 함수에서 제로 스키핑을 제공하는 방법 및 장치
KR102339896B1 (ko) * 2021-05-24 2021-12-16 리벨리온 주식회사 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기
KR102412872B1 (ko) * 2021-06-17 2022-06-27 리벨리온 주식회사 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기
KR20220143333A (ko) * 2021-04-16 2022-10-25 포항공과대학교 산학협력단 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11481612B1 (en) 2018-04-20 2022-10-25 Perceive Corporation Storage of input values across multiple cores of neural network inference circuit
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11521047B1 (en) * 2018-04-20 2022-12-06 Brown University Deep neural network
US10740434B1 (en) 2018-04-20 2020-08-11 Perceive Corporation Reduced dot product computation circuit
US11501138B1 (en) 2018-04-20 2022-11-15 Perceive Corporation Control circuits for neural network inference circuit
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US11586910B1 (en) 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
US11966835B2 (en) 2018-06-05 2024-04-23 Nvidia Corp. Deep neural network accelerator with fine-grained parallelism discovery
US11769040B2 (en) 2018-09-10 2023-09-26 Nvidia Corp. Scalable multi-die deep learning system
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US10565471B1 (en) * 2019-03-07 2020-02-18 Capital One Services, Llc Systems and methods for transfer learning of neural networks
US11270197B2 (en) * 2019-03-12 2022-03-08 Nvidia Corp. Efficient neural network accelerator dataflows
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
CN110489077B (zh) * 2019-07-23 2021-12-31 瑞芯微电子股份有限公司 一种神经网络加速器的浮点乘法运算电路和方法
CN110689115B (zh) * 2019-09-24 2023-03-31 安徽寒武纪信息科技有限公司 神经网络模型处理方法、装置、计算机设备及存储介质
EP4036810A4 (en) * 2019-09-24 2023-10-18 Anhui Cambricon Information Technology Co., Ltd. NEURAL NETWORK PROCESSING METHOD AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIUM
CN111797977B (zh) * 2020-07-03 2022-05-20 西安交通大学 一种用于二值化神经网络的加速器结构及循环展开方法
CN114692833B (zh) * 2022-03-30 2023-11-21 广东齐芯半导体有限公司 一种卷积计算电路、神经网络处理器以及卷积计算方法
US20240121443A1 (en) * 2022-10-06 2024-04-11 Sharp Kabushiki Kaisha Systems and methods for signaling neural network post-filter information updates in video coding

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4885757A (en) * 1987-06-01 1989-12-05 Texas Instruments Incorporated Digital adaptive receiver employing maximum-likelihood sequence estimation with neural networks
KR100313501B1 (ko) 1999-01-12 2001-11-07 김영환 Cbfp알고리즘을 갖는 fft프로세서
KR100585967B1 (ko) 2004-12-14 2006-06-01 한국전자통신연구원 고속 하다마드 변환을 선택적으로 수행하는 고속 푸리에변환 장치 및 그를 이용한 cck 변/복조 장치
US7634137B2 (en) 2005-10-14 2009-12-15 Microsoft Corporation Unfolded convolution for fast feature extraction
US8213503B2 (en) * 2008-09-05 2012-07-03 Microsoft Corporation Skip modes for inter-layer residual video coding and decoding
KR101463744B1 (ko) 2012-10-10 2014-11-21 우송대학교 산학협력단 영상 인식 하드웨어 고속화장치 및 방법
US9582726B2 (en) 2015-06-24 2017-02-28 Qualcomm Incorporated Systems and methods for image processing in a deep convolution network
US11244225B2 (en) * 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
GB201607713D0 (en) * 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
KR101722215B1 (ko) 2016-05-10 2017-03-31 고려대학교 산학협력단 이산 여현 변환 장치 및 방법
US20180046898A1 (en) * 2016-08-11 2018-02-15 Vivante Corporation Zero Coefficient Skipping Convolution Neural Network Engine
US10891538B2 (en) * 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US10997496B2 (en) * 2016-08-11 2021-05-04 Nvidia Corporation Sparse convolutional neural network accelerator
US10936941B2 (en) * 2016-08-12 2021-03-02 Xilinx, Inc. Efficient data access control device for neural network hardware acceleration system
US10096134B2 (en) * 2017-02-01 2018-10-09 Nvidia Corporation Data compaction and memory bandwidth reduction for sparse neural networks
US10726514B2 (en) * 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
KR102356708B1 (ko) 2017-09-28 2022-01-27 삼성전자주식회사 컨볼루션 연산을 수행하는 연산 장치 및 연산 방법

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110796245A (zh) * 2019-10-25 2020-02-14 浪潮电子信息产业股份有限公司 卷积神经网络模型的计算方法及装置
CN110796245B (zh) * 2019-10-25 2022-03-22 浪潮电子信息产业股份有限公司 卷积神经网络模型的计算方法及装置
KR20210082081A (ko) * 2019-12-24 2021-07-02 서울대학교산학협력단 음수값을 갖는 활성화 함수에서 제로 스키핑을 제공하는 방법 및 장치
KR102258566B1 (ko) * 2021-03-22 2021-06-01 리벨리온 주식회사 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기
KR20220143333A (ko) * 2021-04-16 2022-10-25 포항공과대학교 산학협력단 분산 sram 아키텍쳐를 가지는 모바일넷 하드웨어 가속기 및 상기 가속기의 채널 정상 데이터 플로우 설계 방법
KR102339896B1 (ko) * 2021-05-24 2021-12-16 리벨리온 주식회사 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기
KR102412872B1 (ko) * 2021-06-17 2022-06-27 리벨리온 주식회사 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기

Also Published As

Publication number Publication date
US20220335284A1 (en) 2022-10-20
US11403516B2 (en) 2022-08-02
US20190138891A1 (en) 2019-05-09

Similar Documents

Publication Publication Date Title
KR20190052893A (ko) 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법
JP7329455B2 (ja) ニューラルネットワーク量子化のための方法及び装置
JP7304148B2 (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
US20190122100A1 (en) Method and apparatus with neural network parameter quantization
US20240036820A1 (en) Semiconductor memory device employing processing in memory (pim) and method of operating the semiconductor memory device
JP7117280B2 (ja) ニューラルネットワークのパラメータを量子化する方法及びその装置
KR20190125141A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
US20200012936A1 (en) Neural network method and apparatus
Yang et al. ConDinet++: Full-scale fusion network based on conditional dilated convolution to extract roads from remote sensing images
US20240046082A1 (en) Method and device with neural network implementation
US11531893B2 (en) Method and apparatus with neural network parameter quantization
KR20210045225A (ko) 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치
US11816557B2 (en) Method and apparatus with neural network parameter quantization
US11663451B2 (en) Two-dimensional array-based neuromorphic processor and implementing method
KR20180101978A (ko) 뉴럴 네트워크 프로세서, 뉴럴 네트워크 프로세서의 동작 방법, 및 뉴럴 네트워크 장치
US20210350230A1 (en) Data dividing method and processor for convolution operation
KR20220045424A (ko) 인공 신경망을 압축하는 방법 및 장치
EP3859535A1 (en) Streaming access memory device, system and method
KR20210121946A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
CN114358274A (zh) 训练用于图像识别的神经网络的方法和设备
CN102713974B (zh) 学习装置、识别装置、学习识别***和学习识别装置
CN110443347B (zh) 神经网络方法和装置
US20200159495A1 (en) Processing apparatus and method of processing add operation therein
US10997497B2 (en) Calculation device for and calculation method of performing convolution
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal