KR20180101978A - Neural network device, Neural network processor and method of operating neural network processor - Google Patents
Neural network device, Neural network processor and method of operating neural network processor Download PDFInfo
- Publication number
- KR20180101978A KR20180101978A KR1020170041160A KR20170041160A KR20180101978A KR 20180101978 A KR20180101978 A KR 20180101978A KR 1020170041160 A KR1020170041160 A KR 1020170041160A KR 20170041160 A KR20170041160 A KR 20170041160A KR 20180101978 A KR20180101978 A KR 20180101978A
- Authority
- KR
- South Korea
- Prior art keywords
- weight
- input feature
- input
- map
- neural network
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/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/04—Architecture, e.g. interconnection topology
Abstract
Description
본 개시는 뉴럴 네트워크 프로세서, 뉴럴 네트워크 프로세서의 동작 방법, 및 뉴럴 네트워크 장치에 관한 것이다.The present disclosure relates to a neural network processor, a method of operating a neural network processor, and a neural network device.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.A neural network refers to a computational architecture that models a biological brain. Recently, with the development of neural network technology, various kinds of electronic systems have been actively studied for analyzing input data and extracting valid information using a neural network device.
뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 장치가 고화질 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다.Neural network devices require large amounts of computation for complex input data. There is a need for a technique capable of efficiently processing neural network operations in order to analyze high-quality input in real time and extract information.
뉴럴 네트워크 프로세서, 뉴럴 네트워크 프로세서의 동작 방법, 및 뉴럴 네트워크 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.A neural network processor, a method of operating a neural network processor, and a neural network apparatus. The technical problem to be solved by this embodiment is not limited to the above-mentioned technical problems, and other technical problems can be deduced from the following embodiments.
일 측면에 따라, 뉴럴 네트워크 프로세서는, 입력 피처 맵(input feature map)의 복수의 입력 피처들 각각이 비제로(non-zero)값을 갖는지 여부를 나타내는 입력 피처 정보 및 웨이트 맵(weight map)의 복수의 웨이트들 각각이 비제로값을 갖는지 여부를 나타내는 웨이트 정보를 획득하고, 획득된 입력 피처 정보 및 웨이트 정보에 기초하여, 복수의 입력 피처들 및 복수의 웨이트들 중에서 컨벌루션 연산이 수행될 입력 피처 및 웨이트를 결정하는, 페치 컨트롤러(fetch controller); 및 결정된 웨이트 및 입력 피처에 대해 컨벌루션 연산을 수행하여 출력 피처 맵을 생성하는 데이터 연산 회로;를 포함할 수 있다.In accordance with one aspect, the neural network processor includes input feature information that indicates whether each of a plurality of input features of an input feature map has a non-zero value, Acquiring weight information indicating whether each of the plurality of weights has a nonzero value, calculating, based on the obtained input feature information and weight information, a plurality of input features and an input feature And a fetch controller for determining a weight; And a data operation circuit that performs a convolution operation on the determined weight and the input feature to generate an output feature map.
또한, 데이터 연산 회로는, 복수의 입력 피처들 및 복수의 웨이트들 중에서 결정된 웨이트 및 입력 피처에 대해서만 컨벌루션 연산을 선택적으로 수행할 수 있다.The data operation circuit may also selectively perform a convolution operation only for a weight and an input feature determined among a plurality of input features and a plurality of weights.
또한, 페치 컨트롤러는, 입력 피처 정보 및 웨이트 정보에 대한 연산을 수행하여, 비제로값을 갖는 입력 피처 및 웨이트를 검출하고, 데이터 연산 회로는, 검출된 입력 피처 및 웨이트에 대해 컨벌루션 연산을 수행할 수 있다.The fetch controller also performs an operation on input feature information and weight information to detect input features and weights having nonzero values and the data operation circuit performs a convolution operation on the detected input features and weights .
또한, 입력 피처 정보는, 제로값을 갖는 피처는 0으로 표시되고, 비제로값을 갖는 피처는 1로 표시되는 입력 피처 벡터를 포함하고, 웨이트 정보는, 제로값을 갖는 웨이트는 0으로 표시되고, 비제로값을 갖는 웨이트는 1로 표시되는 웨이트 벡터를 포함할 수 있다.Further, the input feature information includes a feature having a zero value represented by 0, a feature having a non-zero value includes an input feature vector represented by 1, and the weight information is expressed by a weight having a zero value as 0 , And a weight having a non-zero value may include a weight vector denoted by 1.
또한, 결정된 입력 피처 및 웨이트가, 제 1 입력 피처 및 제 1 웨이트, 및 제 2 입력 피처 및 제 2 웨이트인 경우, 데이터 연산 회로는, 현재 사이클에서, 제 1 입력 피처 및 제 1 웨이트를 입력 피처 맵 및 웨이트 맵으로부터 읽어 내어 컨벌루션 연산을 수행하고, 다음 사이클에서, 제 2 입력 피처 및 제 2 웨이트를 입력 피처 맵 및 웨이트 맵으로부터 읽어 내어 컨벌루션 연산을 수행할 수 있다.In addition, when the determined input features and weights are the first input feature and the first weight, and the second input feature and the second weight, the data operation circuit, in the current cycle, converts the first input feature and the first weight into input features From the map and weight map to perform the convolution operation, and in the next cycle, perform the convolution operation by reading the second input feature and the second weight from the input feature map and the weight map.
다른 측면에 따른, 뉴럴 네트워크 프로세서의 동작 방법은 입력 피처 맵(input feature map)의 복수의 입력 피처들 각각이 비제로(non-zero)값을 갖는지 여부를 나타내는 입력 피처 정보 및 웨이트 맵의 복수의 웨이트들 각각이 비제로값을 갖는지 여부를 나타내는 웨이트 정보를 획득하는 단계; 획득된 입력 피처 정보 및 웨이트 정보에 기초하여, 복수의 입력 피처들 및 복수의 웨이트들 중에서 컨벌루션 연산이 수행될 입력 피처 및 웨이트를 결정하는 단계; 및 결정된 웨이트 및 입력 피처에 대해 컨벌루션 연산을 수행하여 출력 피처 맵을 생성하는 단계를 포함할 수 있다.According to another aspect, a method of operation of a neural network processor includes input feature information indicating whether each of a plurality of input features of an input feature map has a non-zero value, Obtaining weight information indicating whether each of the weights has a non-zero value; Determining input features and weights to be convoluted among the plurality of input features and the plurality of weights based on the obtained input feature information and weight information; And performing a convolution operation on the determined weight and the input feature to generate an output feature map.
또 다른 측면에 따라, 뉴럴 네트워크 장치는, 복수의 뉴럴 네트워크 프로세서들을 포함하는 프로세서 어레이; 입력 피처 맵 및 복수의 웨이트 맵들을 저장하는 메모리; 및 입력 피처 맵 및 복수의 웨이트 맵들을 프로세서 어레이에 할당하는 컨트롤러를 포함하고, 컨트롤러는, 웨이트 맵 내에서 비제로값을 갖는 웨이트의 비율을 기준으로, 복수의 웨이트 맵들을 복수의 웨이트 그룹들로 그룹화하고, 복수의 웨이트 그룹들 각각을 프로세서 어레이에 할당할 수 있다.According to another aspect, a neural network device comprises: a processor array including a plurality of neural network processors; A memory for storing an input feature map and a plurality of weight maps; And a controller for assigning the input feature map and the plurality of weight maps to the processor array, wherein the controller is configured to assign the plurality of weight maps to the plurality of weight groups based on the ratio of the weights having non-zero values in the weight map Group, and assign each of the plurality of weight groups to the processor array.
또한, 컨트롤러는, 웨이트 그룹에 포함된 웨이트 맵들 각각의 비제로 값을 갖는 웨이트 비율이 균등해지도록, 복수의 웨이트 맵들을 복수의 웨이트 그룹들로 그룹화할 수 있다.The controller may also group the plurality of weight maps into a plurality of weight groups so that the weight ratios with non-zero values of each of the weight maps included in the weight group become equal.
또한, 컨트롤러는, 복수의 뉴럴 네트워크 프로세서들을 복수의 프로세서 그룹들로 그룹화하고, 복수의 웨이트 그룹들 각각을 순차적으로 상기 복수의 프로세서 그룹들 각각에 할당할 수 있다.The controller may also group the plurality of neural network processors into a plurality of processor groups and sequentially assign each of the plurality of weight groups to each of the plurality of processor groups.
또한, 컨트롤러는, 입력 피처 맵의 입력 피처들 각각이 비제로값을 갖는지 여부를 나타내는 입력 피처 정보 및, 복수의 웨이트 맵들의 웨이트들 각각이 비제로값을 갖는지 여부를 나타내는 웨이트 정보를 프로세서 어레이에 제공하고, 프로세서 어레이는, 입력 피처 정보 및 웨이트 정보에 기초하여, 입력 피처 맵 및 복수의 웨이트 맵들에 대한 컨벌루션 연산을 수행하여 출력 피처 맵을 생성할 수 있다.The controller also includes input feature information that indicates whether each of the input features of the input feature map has a nonzero value and weight information that indicates whether each of the weights of the plurality of weight maps has a non- And the processor array may perform a convolution operation on the input feature map and the plurality of weight maps based on the input feature information and weight information to generate an output feature map.
또 다른 측면에 따라, 뉴럴 네트워크 프로세서의 동작 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체가 제공된다.According to another aspect, there is provided a computer-readable recording medium having recorded thereon a program for implementing a method of operating a neural network processor.
본 실시예들에 따르면, 뉴럴 네트워크 프로세서는 비제로값을 갖는 입력 피처 및 웨이트에 대한 컨벌루션 연산을 선택적으로 수행할 수 있는 바, 입력 피처 및 웨이트에 대한 컨벌루션 연산에 있어서 연산량 및 연산 시간을 감소시킬 수 있다.According to these embodiments, the neural network processor can selectively perform convolution operations on input features and weights having a nonzero value, thereby reducing the amount of computation and computation time in convolution computation on input features and weights .
또한, 본 실시예들에 따르면, 뉴럴 네트워크 장치는 비제로값을 갖는 웨이트의 비율를 기준으로 그룹화된 복수의 웨이트 그룹들 각각을 순차적으로 프로세서 어레이에 할당하는 바, 프로세서 어레이의 컨벌루션 연산 속도를 향상시킬 수 있다.In addition, according to the embodiments, the neural network apparatus sequentially allocates each of the plurality of weight groups grouped based on the ratio of the weights having the non-zero value to the processor array, thereby improving the convolution operation speed of the processor array .
도 1은 뉴럴 네트워크 구조의 일 예시를 나타낸다.
도 2는 일 실시예에 따른 뉴럴 네트워크 프로세서를 나타내는 블록도이다.
도 3은 뉴럴 네트워크 프로세서가 선택적 컨벌루션을 수행하는 구체적인 실시예를 나타낸다.
도 4는 일 실시예에 따른 뉴럴 네트워크 프로세서의 동작 방법을 설명하기 위한 도면이다.
도 5는 뉴럴 네트워크 장치의 일 실시예를 나타낸다.
도 6은 뉴럴 네트워크 장치가 복수의 웨이트 맵을 복수의 웨이트 그룹들로 그룹화하는 실시예를 나타낸다.
도 7a 및 7b는 뉴럴 네트워크 장치가 입력 피처 맵 및 웨이트 맵을 처리하는 실시예를 나타낸다.
도 8은 일 실시예에 따라, 뉴럴 네트워크 장치의 동작 방법을 설명하기 위한 도면이다.
도 9는 본 개시의 실시예에 따른 전자 시스템을 나타내는 블록도이다.1 shows an example of a neural network structure.
2 is a block diagram illustrating a neural network processor in accordance with one embodiment.
3 shows a specific embodiment in which the neural network processor performs selective convolution.
4 is a diagram for explaining a method of operating a neural network processor according to an embodiment of the present invention.
5 shows an embodiment of a neural network device.
6 shows an embodiment in which a neural network device groups a plurality of weight maps into a plurality of weight groups.
7A and 7B show an embodiment in which a neural network device processes an input feature map and a weight map.
8 is a diagram for explaining a method of operating a neural network device according to an embodiment.
9 is a block diagram illustrating an electronic system according to an embodiment of the present disclosure.
이하 첨부된 도면을 참조하면서 오로지 예시를 위한 실시예를 상세히 설명하기로 한다. 하기 실시예는 기술적 내용을 구체화하기 위한 것일 뿐 권리 범위를 제한하거나 한정하는 것이 아님은 물론이다. 상세한 설명 및 실시예로부터 해당 기술분야의 전문가가 용이하게 유추할 수 있는 것은 권리범위에 속하는 것으로 해석된다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Exemplary embodiments will now be described in detail with reference to the accompanying drawings. It is to be understood that the following embodiments are for the purpose of describing the technical contents, but do not limit or limit the scope of the rights. Those skilled in the art can easily deduce from the detailed description and examples that the scope of the present invention falls within the scope of the right.
본 명세서에서 사용되는 '구성된다' 또는 '포함한다' 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.As used herein, the terms " comprising " or " comprising " and the like should not be construed as necessarily including the various elements or steps described in the specification, May not be included, or may be interpreted to include additional components or steps.
또한, 본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. In addition, terms including ordinals such as 'first' or 'second' used in this specification can be used to describe various elements, but the elements should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another.
본 실시예들은 큐브 맵이라는 텍스쳐를 처리하는 방법 및 장치에 관한 것으로서 이하의 실시예들이 속하는 기술 분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서는 자세한 설명을 생략한다.The present invention relates to a method and apparatus for processing a texture called a cubemap, and a detailed description thereof will be omitted with respect to matters widely known to those skilled in the art to which the following embodiments belong.
도 1은 뉴럴 네트워크 구조의 일 예시를 나타낸다.1 shows an example of a neural network structure.
도 1은 뉴럴 네트워크 구조의 일 예로서, 컨볼루션 뉴럴 네트워크의 구조를 나타낸다. 일 실시예에 따라, 도 1에서는 컨볼루션 뉴럴 네트워크 중 컨볼루션 레이어(10)가 도시되었지만, 컨볼루션 뉴럴 네트워크는, 컨볼루션 레이어(10)에 이어, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등을 더 포함할 수 있다.1 shows a structure of a convolutional neural network as an example of a neural network structure. 1, a
컨볼루션 레이어(10)에서, 제 1 피처 맵(FM1)은 입력 피처 맵이 될 수 있고, 제 2 피처 맵(FM2)는 출력 피처 맵이 될 수 있다. 피처 맵은 입력 데이터의 다양한 특징이 표현된 데이터를 의미한다. 피처 맵들(FM1, FM2)은 2차원 매트릭스 또는 3차원 매트릭스 형태를 가질 수 있다. 이러한 다차원 매트릭스 형태를 가지는 피처 맵들(FM1, FM2)은 피처 텐서(tensor)로 지칭될 수 있다. 또한, 입력 피처 맵은 액티베이션(activation)으로 지칭될 수 있다. 피처 맵들(FM1, FM2)은 너비(W)(또는 칼럼이라고 함), 높이(H)(또는 로우라고 함) 및 깊이(D)를 가지며, 이는 좌표상의 x축, y축 및 z축에 각각 대응할 수 있다. 이때, 깊이(D)는 채널 수로 지칭될 수 있다. In the
컨볼루션 레이어(10)에서, 제1 피처 맵(FM1) 및 웨이트 맵(WM)에 대한 컨볼루션 연산이 수행될 수 있고, 그 결과 제2 피처 맵(FM2)이 생성될 수 있다. 웨이트 맵(WM)은 제1 피처 맵(FM1)을 필터링할 수 있으며, 필터 또는 커널로 지칭될 수 있다. 웨이트 맵(WM)의 깊이, 즉 채널 개수는 제1 피처 맵(FM1)의 깊이, 즉 채널 개수와 동일하며, 웨이트 맵(WM)과 제1 피처 맵(FM1)의 동일한 채널끼리 컨볼루션될 수 있다. 웨이트 맵(WM)이 제1 입력 피처 맵(FM1)을 슬라이딩 윈도로 하여 횡단하는 방식으로 시프트된다. 시프트되는 양은 "스트라이드(stride) 길이" 또는 "스트라이드"로 지칭될 수 있다. 각 시프트동안, 웨이트 맵(WM)에 포함되는 웨이트 각각이 제1 피처 맵(FM1)과 중첩된 영역에서의 모든 피처값과 곱해지고 더해질 수 있다. 제1 피처 맵(FM1)과 웨이트 맵(WM)이 컨볼루션 됨에 따라, 제2 피처 맵(FM2)의 하나의 채널이 생성될 수 있다. 도 1에는 하나의 웨이트 맵(WM)이 표시되었으나, 실질적으로는 복수개의 웨이트 맵이 제1 피처 맵(FM1)과 컨볼루션 되어, 제2 피처 맵(FM2)의 복수개의 채널이 생성될 수 있다. 다시 말해, 제2 피처 맵(FM2)의 채널의 수는 웨이트 맵의 개수에 대응할 수 있다.In the
또한, 컨벌루션 레이어(10)의 제 2 피처 맵(FM2)은 다른 레이어의 입력 피처 맵이 될 수 있다. 예를 들어, 제 2 피처 맵(FM2)는 풀링(pooling) 레이어의 입력 피처 맵이 될 수 있다.In addition, the second feature map FM2 of the
도 2는 일 실시예에 따른 뉴럴 네트워크 프로세서를 나타내는 블록도이다.2 is a block diagram illustrating a neural network processor in accordance with one embodiment.
뉴럴 네트워크 프로세서(100)는 하드웨어 회로들로 구현될 수 있다. 예를 들어, 뉴럴 네트워크 프로세서(100)는 집적 회로(Integrated Circuit)로 구현될 수 있다. 뉴럴 네트워크 프로세서(100)는, CPU(Central Processing Unit), 멀티-코어 CPU, 어레이 프로세서(array processor), 벡터 프로세서(vector processor), DSP(Digital Signal Processor), FPGA(Field-Programmable Gate Array), PLA(Programmable Logic Array), ASIC(Application Specific Integrated Circuit), 프로그램 가능한 논리 회로(programmable logic circuitry), VPU(Video Processing Unit) 및 GPU(Graphics Processing Unit) 등 중 적어도 하나를 포함할 수 있으나 이에 제한되지 않는다.The
뉴럴 네트워크 프로세서(100)는 페치 컨트롤러(fetch controller)(112), 및 데이터 연산 회로(114)를 포함할 수 있다. 도 2에 도시된 뉴럴 네트워크 프로세서(100)는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.The
페치 컨트롤러(112)는, 입력 피처 맵의 복수의 입력 피처들 각각이 제로값을 갖는지 여부를 나타내는 입력 피처 정보, 및 웨이트 맵의 복수의 웨이트들 각각이 제로값을 갖는지 여부를 나타내는 웨이트 정보를 획득할 수 있다. 일 실시예에 따라, 페치 컨트롤러(112)는 외부로부터 입력 피처 정보 및 웨이트 정보를 수신할 수 있다. 또한, 다른 실시예에 따라, 페치 컨트롤러(112)는 입력 피처 맵으로부터 입력 피처 정보를 생성할 수 있고, 웨이트 맵으로부터 웨이트 정보를 생성할 수 있다.The fetch
페치 컨트롤러(112)는 입력 피처 정보 및 웨이트 정보에 기초하여, 복수의 입력 피처들 및 복수의 웨이트들 중에서 컨벌루션 연산이 수행될 입력 피처 및 웨이트를 결정할 수 있다. 일 실시예에 따라, 페치 컨트롤러(112)는 입력 피처 정보 및 웨이트 정보를 이용하여, 복수의 입력 피처들 및 복수의 웨이트들 중 서로 대응되는 위치에서 동일하게 비제로값을 갖는 입력 피처 및 웨이트를 검출할 수 있고, 검출된 입력 피처 및 웨이트를 컨벌루션 연산이 수행될 입력 피처 및 웨이트로 결정할 수 있다. 예를 들어, 입력 피처 정보 및 웨이트 정보 각각이, 제로값을 갖는 피처 또는 웨이트는 0으로 표시되고, 비제로값을 갖는 피처 또는 웨이트는 1로 표시되는 비트 벡터인 경우, 페치 컨트롤러(112)는 입력 피처 정보 및 웨이트 정보에 대한 AND 연산을 수행하여, 컨벌루션 연산이 수행될 입력 피처 및 웨이트를 결정할 수 있다. 일 실시예에 따라, 페치 컨트롤러(112)는 산술 연산 회로를 포함할 수 있다.The fetch
데이터 연산 회로(114)는 페치 컨트롤러(112)에 의해 결정된 입력 피처 및 웨이트에 대한 컨벌루션 연산을 수행할 수 있다. 다시 말해, 데이터 연산 회로(114)는 입력 피처 맵의 복수의 입력 피처들 및 웨이트 맵의 복수의 웨이트들 중에서, 페치 컨트롤러(112)에 의해 결정된 입력 피처 및 웨이트에 대해서만 컨벌루션 연산을 선택적으로 수행할 수 있다. 구체적으로, 데이터 연산 회로(114)는 복수의 입력 피처들 및 복수의 웨이트들 중에서, 서로 대응되는 위치에서 동일하게 비제로값을 갖는 입력 피처 및 웨이트에 대해서만 컨벌루션 연산을 선택적으로 수행할 수 있다. 예를 들어, 데이터 연산 회로(114)는 입력 피처값과 웨이트값을 곱하여 컨벌루션 연산을 수행할 수 있다. 일 실시예에 따라, 데이터 연산 회로(114)는 산술 연산 회로로 구현될 수 있다. 또한, 데이터 연산 회로(114)는 입력 피처 및 웨이트에 대한 컨벌루션 연산을 수행하여 출력 피처값을 생성할 수 있다. 따라서, 데이터 연산 회로(114)는 서로 대응되는 위치에서 비제로값을 갖는 입력 피처 및 웨이트를 기준으로, 입력 피처 맵 및 웨이트 맵에 대해 선택적 컨벌루션을 수행할 수 있고, 그 결과 출력 피처 맵을 생성할 수 있다.
일 실시예에 따라, 뉴럴 네트워크 프로세서(100)는 내부 메모리를 더 포함할 수 있다. 내부 메모리는 뉴럴 네트워크 프로세서(100)의 캐시 메모리일 수 있다. 내부 메모리는 SRAM(Static random access Memory)일 수 있다. 그러나, 이에 제한되는 것은 아니며, 내부 메모리는 뉴럴 네트워크 프로세서(100)의 단순 버퍼, 캐시 메모리, 또는 뉴럴 네트워크 프로세서(100)의 다른 종류의 메모리로 구현될 수 있다. 내부 메모리는 데이터 연산 회로(114)에서 수행되는 연산 동작에 따라 생성되는 데이터, 예컨대 출력 피처값, 출력 피처 맵, 또는 연산 과정에서 생성되는 다양한 종류의 데이터 등을 저장할 수 있다. According to one embodiment, the
뉴럴 네트워크 프로세서(100)는 데이터 연산 회로(114)에 의해 생성되는 출력 피처 맵을 내부 메모리에 저장하거나 외부로 출력할 수 있다.The
따라서, 본 개시에 따르면, 뉴럴 네트워크 프로세서(100)는 비제로값을 갖는 입력 피처 및 웨이트에 대한 컨벌루션 연산을 선택적으로 수행할 수 있는 바, 출력 피처에 영향을 미치지 않는 의미 없는 연산을 생략할 수 있다. 따라서, 뉴럴 네트워크 프로세서(100)는 입력 피처 및 웨이트에 대한 컨벌루션 연산에 있어서 연산량 및 연산 시간을 감소시킬 수 있다.Thus, according to the present disclosure, the
도 3은 뉴럴 네트워크 프로세서가 선택적 컨벌루션을 수행하는 구체적인 실시예를 나타낸다.3 shows a specific embodiment in which the neural network processor performs selective convolution.
페치 컨트롤러(112)는 입력 피처 맵의 복수의 입력 피처들 각각이 제로값을 갖는지 여부를 나타내는 입력 피처 벡터 및 웨이트 맵의 복수의 웨이트들 각각이 제로값을 갖는지 여부를 나타내는 웨이트 벡터를 획득할 수 있다. 입력 피처 벡터는, 입력 피처들 각각의 값이 비제로값인 경우 1로 표시되고, 제로값인 경우 0으로 표시되는 비트-벡터이고, 웨이트 벡터 또한, 웨이트들 각각의 값이 비제로값인 경우 1로 표시되고, 제로값인 경우 0으로 표시되는 비트-벡터이다. 다시 말해, 도 3에 개시되어 있듯이, 입력 피처 벡터는 5개의 입력 피처들 중 0번째 입력 피처, 3번째 입력 피처, 및 4번째 입력 피처가 비제로값을 가지므로 1로 표시되고, 1번째 입력 피처 및 2번째 입력 피처는 제로값을 가지므로 0으로 표시되는 벡터이다. 또한, 웨이트 벡터는 5개의 입력 웨이트들 중 0번째 웨이트, 1번째 웨이트, 및 3번째 웨이트가 비제로값을 가지므로 1로 표시되고, 2번째 웨이트 및 4번째 웨이트는 제로값을 가지므로 0으로 표시되는 벡터이다. 도 3에서는 5개의 입력 피처들에 대한 입력 피처 맵 및 입력 피처 벡터, 및 5개의 웨이트들에 대한 웨이트 맵 및 웨이트 벡터가 도시되었지만, 개수는 이에 제한되지 않는다. 또한, 도 3에서 도시되는 입력 피처 맵 및 웨이트 맵은 전체 입력 피처 맵 및 전체 웨이트 맵 중 일부분에 해당하는 입력 피처 맵 및 웨이트 맵일 수 있다.The fetch
페치 컨트롤러(112)는 입력 피처 벡터 및 웨이트 벡터에 대한 AND 연산을 통해, 컨벌루션 연산이 수행될 입력 피처 및 웨이트를 결정할 수 있다. 구체적으로, 페치 컨트롤러(112)는 입력 피처 벡터 및 웨이트 벡터에 대한 AND 연산을 통해, 복수의 입력 피처들 및 복수의 웨이트들 중 서로 대응되는 위치에서 동일하게 비제로값을 갖는 입력 피처 및 웨이트를 검출할 수 있다. 도 3에 도시되어 있듯이, 페치 컨트롤러(112)는 입력 피처 벡터 및 웨이트 벡터에 대한 AND 연산을 수행할 수 있고, 그 결과가 1이 되는 0번째 입력 피처 및 웨이트, 및 3번째 입력 피처 및 웨이트를 검출할 수 있다. 따라서, 페치 컨트롤러(112)는 검출된 입력 피처 및 웨이트를 컨벌루션 연산이 수행될 입력 피처 및 웨이트로 결정할 수 있다.The fetch
데이터 연산 회로(114)는 페치 컨트롤러(112)에 의해 결정된 입력 피처 및 웨이트에 대한 컨벌루션 연산을 수행할 수 있다. 데이터 연산 회로(114)는 입력 피처맵 및 웨이트 맵으로부터 순차적으로 입력 피처 및 웨이트를 읽어내어 컨벌루션 연산을 수행할 수 있다. 다시 말해, 데이터 연산 회로(114)는 현재 사이클에서 입력 피처 맵의 n번째 입력 피처 및 웨이트 맵의 n번째 웨이트를 읽어내어 컨벌루션 연산을 수행한 후, 다음 사이클에서 입력 피처 맵의 n+1번째 입력 피처 및 웨이트 맵의 n+1번째 웨이트를 읽어내어 컨벌루션 연산을 수행할 수 있다. 이 때, 데이터 연산 회로(114)는 페치 컨트롤러(112)에 의해 결정된 입력 피처 및 웨이트에 대해서는 컨벌루션 연산을 수행할 수 있고, 페치 컨트롤러(112)에 의해 결정되지 않은 입력 피처 및 웨이트에 대해서는 컨벌루션 연산을 생략할 수 있다. 도 3에 도시되어 있듯이, 데이터 연산 회로(114)는 현재 사이클에서 0번째 입력 피처 및 0번째 웨이트에 대한 컨벌루션 연산을 수행하고, 다음 사이클에서, 1번째 입력 피처 및 1번째 웨이트, 및 2번째 입력 피처 및 2번째 웨이트에 대한 컨벌루션 연산을 생략한 채, 3번째 입력 피처 및 3번째 웨이트에 대한 컨벌루션 연산을 수행할 수 있다. 다시 말해, 데이터 연산 회로(114)는 입력 피처 맵 및 웨이트 맵에서 서로 대응되는 위치에서 비제로값을 갖는 입력 피처 및 웨이트에 대해서만 컨벌루션 연산을 수행할 수 있다.
데이터 연산 회로(114)는 페치 컨트롤러(112)에 의해 결정된 입력 피처 및 웨이트에 대한 컨벌루션 연산을 수행하여 출력 피처 맵을 생성할 수 있다. 또한, 데이터 연산 회로(114)는, 웨이트 맵과 다른 입력 피처 맵에 대한 컨벌루션 연산을 통해 기 생성된 출력 피처 맵에, 도 3의 컨벌루션 연산 결과를 누적하여 출력 피처 맵을 생성할 수 있다.
도 4는 일 실시예에 따른 뉴럴 네트워크 프로세서의 동작 방법을 설명하기 위한 도면이다.4 is a diagram for explaining a method of operating a neural network processor according to an embodiment of the present invention.
도 4에 도시된 방법은, 도 2의 뉴럴 네트워크 프로세서(100)의 각 구성요소에 의해 수행될 수 있고, 중복되는 설명에 대해서는 생략한다.The method shown in FIG. 4 may be performed by each component of the
단계 s410에서, 뉴럴 네트워크 프로세서(100)는, 입력 피처 맵(input feature map)의 복수의 입력 피처들 각각이 비제로(non-zero)값을 갖는지 여부를 나타내는 입력 피처 정보 및 웨이트 맵의 복수의 웨이트들 각각이 비제로값을 갖는지 여부를 나타내는 웨이트 정보를 획득할 수 있다. 일 실시예에 따라, 뉴럴 네트워크 프로세서(100)는 외부로부터 입력 피처 정보 및 웨이트 정보를 수신할 수 있다. 또한, 다른 실시예에 따라, 뉴럴 네트워크 프로세서(100)는 입력 피처 맵으로부터 입력 피처 정보를 생성할 수 있고, 웨이트 맵으로부터 웨이트 정보를 생성할 수 있다.At step S410, the
단계 s420에서, 뉴럴 네트워크 프로세서(100)는, s410에서 획득된 입력 피처 정보 및 웨이트 정보에 기초하여, 복수의 입력 피처들 및 복수의 웨이트들 중에서 컨벌루션 연산이 수행될 입력 피처 및 웨이트를 결정할 수 있다. 일 실시예에 따라, 뉴럴 네트워크 프로세서(100)는 입력 피처 정보 및 웨이트 정보에 대한 연산을 수행하여, 비제로값을 갖는 입력 피처 및 웨이트를 검출할 수 있고, 검출된 입력 피처 및 웨이트를 컨벌루션 연산이 수행될 입력 피처 및 웨이트로 결정할 수 있다.At step s420, the
단계 s430에서, 뉴럴 네트워크 프로세서(100)는, s420에서 결정된 웨이트 및 입력 피처에 대해 컨벌루션 연산을 수행하여 출력 피처 맵을 생성할 수 있다. 다시 말해, 뉴럴 네트워크 프로세서(100)는 입력 피처 맵의 복수의 입력 피처들 및 웨이트 맵의 복수의 웨이트들 중에서, s420에서 결정된 입력 피처 및 웨이트에 대해서만 컨벌루션 연산을 선택적으로 수행할 수 있다. 구체적으로, 뉴럴 네트워크 프로세서(100)는 복수의 입력 피처들 및 복수의 웨이트들 중에서, 서로 대응되는 위치에서 동일하게 비제로값을 갖는 입력 피처 및 웨이트에 대해서만 컨벌루션 연산을 선택적으로 수행할 수 있다. 또한, 뉴럴 네트워크 프로세서(100)는 입력 피처 및 웨이트에 대한 컨벌루션 연산을 수행하여 출력 피처값을 생성할 수 있다. 따라서, 뉴럴 네트워크 프로세서(100)는 서로 대응되는 위치에서 비제로값을 갖는 입력 피처 및 웨이트를 기준으로, 입력 피처 맵 및 웨이트 맵에 대해 선택적 컨벌루션을 수행할 수 있고, 그 결과 출력 피처 맵을 생성할 수 있다.At step s430,
도 5는 뉴럴 네트워크 장치의 일 실시예를 나타낸다.5 shows an embodiment of a neural network device.
뉴럴 네트워크 장치(1000)는 컨트롤러(1010), 프로세서 어레이(1020) 및 메모리(1030)를 포함할 수 있다. 뉴럴 네트워크 장치(1000)의 구성 요소들(1010,1020,1030)은 시스템 버스를 통해 통신할 수 있다. 실시예에 있어서, 뉴럴 네트워크 장치(1000)는 하나의 반도체 칩으로 구현될 수 있으며, 예컨대 시스템 온 칩(SoC) 으로서 구현될 수 있다. 그러나 이에 제한되는 것은 아니며, 뉴럴 네트워크 장치(1000)는 복수의 반도체 칩으로 구현될 수 있다. The
컨트롤러(1010)는 CPU(central processing unit), 마이크로 프로세서 등으로 구현될 수 있으며, 뉴럴 네트워크 장치(1000)의 전반적인 동작을 제어할 수 있다. 컨트롤러(1010)는 프로세서 어레이(1020) 및 메모리(1030)의 동작을 제어할 수 있다. 예컨대, 컨트롤러(1010)는 프로세서 어레이(1020)가 뉴럴 네트워크의 레이어들을 정상적으로 실행할 수 있도록 파라미터들을 세팅하고 관리할 수 있다. 또한, 일 실시예에 따라, 컨트롤러(1010)는 ReLU(Rectifier linear Unit) 모듈을 포함할 수 있다.The
프로세서 어레이(1020)는 복수의 뉴럴 네트워크 프로세서들을 포함할 수 있다. 또한, 프로세서 어레이(1020)는 복수의 뉴럴 네트워크 프로세서들이 어레이의 형태로 구현될 수 있다. 일 실시예에 따라, 프로세서 어레이(1020)에 포함된 복수의 뉴럴 네트워크 프로세서들 각각은 도 2 및 3의 뉴럴 네트워크 프로세서(100)가 될 수 있다. 또한, 복수의 뉴럴 네트워크 프로세서들은 병렬적으로 동시에 동작되도록 구현될 수 있다. 나아가, 복수의 뉴럴 네트워크 프로세서들 각각은 독립적으로 동작할 수 있다. 예를 들어, 각각의 뉴럴 네트워크 프로세서는 각각이 인스트럭션들을 실행할 수 있는 코어 회로로서 구현될 수 있다.The
메모리(1030)는 RAM(Random Access Memory), 예컨대 DRAM(Dynamic RAM), SRAM 등으로 구현될 수 있다. 메모리(1030)는 각종 프로그램들 및 데이터를 저장할 수 있다. 일 실시예에 따라, 메모리(1030)는 외부 장치, 예컨대, 서버 또는 외부 메모리 등으로부터 제공되는 웨이트 맵들 또는 입력 피처 맵들을 저장할 수 있다.The
컨트롤러(1010)는, 메모리(1030)에 저장된 입력 피처 맵 및 웨이트 맵을 프로세서 어레이(1020)에 할당할 수 있다.The
또한, 컨트롤러(1010)는 입력 피처 맵으로부터, 입력 피처 맵의 복수의 입력 피처들 각각이 비제로값을 갖는지 여부를 나타내는 입력 피처 정보를 생성할 수 있다. 또한, 컨트롤러(1010)는 웨이트 맵으로부터, 웨이트 맵의 복수의 웨이트들 각각이 비제로값을 갖는지 여부를 나타내는 웨이트 정보를 생성할 수 있다. 또한, 컨트롤러(1010)는 입력 피처 정보 및 웨이트 정보를 프로세서 어레이(1020)에 제공할 수 있다. 또한, 다른 실시예에 따라, 컨트롤러(1010)는 외부로부터 입력 피처 정보 및 웨이트 정보를 수신할 수 있다.In addition, the
프로세서 어레이(1020)의 각 뉴럴 네트워크 프로세서는 할당된 입력 피처 맵 및 웨이트 맵에 대한 컨벌루션 연산을 수행하여 출력 피처 맵을 생성할 수 있다. 또한, 프로세서 어레이(1020)는 입력 피처 정보 및 웨이트 정보에 기초하여, 입력 피처 맵 및 웨이트 맵에 대한 컨벌루션 연산을 수행하여 출력 피처 맵을 생성할 수 있다. 구체적으로, 프로세서 어레이(1020)는 비제로값을 갖는 입력 피처 및 웨이트에 대해 선택적으로 컨벌루션을 수행하여, 출력 피처 맵을 생성할 수 있다.Each neural network processor of the
컨트롤러(1020)는 입력 피처 맵을 공간적 차원(spatial dimension)에 따라 분할할 수 있다. 예를 들어, 컨트롤러(1020)는 웨이트 맵의 크기를 기준으로 입력 피처 맵을 분할할 수 있다. 이어서, 컨트롤러(1020)는 분할된 입력 피처 맵들을 프로세서 어레이(1020)에 할당할 수 있다.The
컨트롤러(1010)는 프로세서 어레이(1020)의 복수의 뉴럴 네트워크 프로세서들을 복수의 프로세서 그룹들로 그룹화할 수 있다. 다시 말해, 컨트롤러(1010)는 기 설정된 개수의 뉴럴 네트워크 프로세서들을 하나의 프로세서 그룹으로 그룹화하여, 결과적으로 복수의 프로세서 그룹들을 결정할 수 있다. 예를 들어, 복수의 뉴럴 네트워크 프로세서들이 100개 존재하는 경우, 컨트롤러(1010)는 10개의 뉴럴 네트워크 프로세서들을 1개의 프로세서 그룹으로 그룹화하여 결과적으로 10개의 프로세서 그룹들을 결정할 수 있다.The
컨트롤러(1020)는 분할된 입력 피처 맵들 각각을 프로세서 어레이(1020)의 각 프로세서 그룹에 할당할 수 있다. 또한, 컨트롤러(1020)는 복수의 웨이트 맵들을 프로세서 어레이(1020)의 각 프로세서 그룹에 할당할 수 있다. 따라서, 프로세서 어레이(1020)의 프로세서 그룹에 포함되는 뉴럴 네트워크 프로세서들 각각은 동일한 입력 피처 맵을 할당 받을 수 있고, 서로 다른 웨이트 맵을 할당 받을 수 있다.The
일 실시예에 따라, 메모리(1030)는 프로세서 어레이(1020)가 실행할 레이어에 대응하는 웨이트 맵들을 버퍼링할 수 있다. 프로세서 어레이(1020)에서 웨이트 맵을 이용하여 연산을 수행하는 경우, 사용되는 웨이트 맵은 외부 메모리로부터 출력되어 프로세서 어레이(1020)의 뉴럴 네트워크 프로세서의 내부 메모리에 저장될 수 있다. 메모리(1030)는 외부 메모리로부터 출력된 웨이트 맵들이 프로세서 어레이(1020)의 뉴럴 네트워크 프로세서의 내부 메모리에 제공되기 전에 웨이트 맵들을 임시로 저장할 수 있다. 또한, 일 실시예에 따라, 메모리(1030)는 프로세서 어레이(1020)에서 출력되는 출력 피처 맵을 임시 저장할 수 있다.According to one embodiment, the
일 실시예에 따라, 컨트롤러(1010)는, 웨이트 맵 내에서 비제로값을 갖는 웨이트의 비율를 기준으로, 복수의 웨이트 맵들을 복수의 웨이트 그룹들로 그룹화할 수 있다. 구체적으로, 컨트롤러(1010)는, 웨이트 그룹에 포함된 웨이트 맵들 각각의 비제로값을 갖는 웨이트 비율이 서로 균등해지도록, 복수의 웨이트 맵들을 복수의 웨이트 그룹들로 그룹화할 수 있다. 예를 들어, 컨트롤러(1010)는, 웨이트 맵의 전체 웨이트들 중에서 비제로값을 갖는 웨이트의 비율를 기준으로, 오름차순으로 복수의 웨이트 맵들을 정렬할 수 있고, 정렬된 복수의 웨이트 맵들을 순서대로 기 설정된 개수 단위로 그룹화하여 복수의 웨이트 그룹들을 결정할 수 있다. 일 실시예에 따라, 컨트롤러(1010)는 프로세서 어레이(1020)의 하나의 프로세서 그룹에 포함된 뉴럴 네트워크 프로세서들의 개수를 기준으로, 복수의 웨이트 맵들을 복수의 웨이트 맵 그룹들로 그룹화할 수 있다. 예를 들어, 복수의 웨이트 맵들이 381개이고 프로세서 어레이(1020)의 하나의 그룹에 포함된 뉴럴 네트워크 프로세서들의 개수가 40개인 경우, 컨트롤러(1010)는 10개의 그룹으로 복수의 웨이트 맵들을 그룹화할 수 있다. 다시 말해, 컨트롤러(1010)는 40개의 웨이트 맵들을 포함하는 9개의 웨이트 맵 그룹과 21개의 웨이트 맵들을 포함하는 1개의 웨이트 맵 그룹을 결정할 수 있다.According to one embodiment, the
컨트롤러(1010)는 복수의 웨이트 그룹들을 프로세서 어레이(1020)에 할당할 수 있다. 구체적으로, 컨트롤러(1010)는 복수의 웨이트 그룹들 각각을 순차적으로 프로세서 어레이(1020)의 각 프로세서 그룹에 할당할 수 있다. 예를 들어, 컨트롤러(1010)는 복수의 웨이트 그룹들 중 제 0 웨이트 그룹에 포함되는 웨이트 맵들을 프로세서 어레이(1020)의 프로세서 그룹들 각각에 할당할 수 있다. 제 0 웨이트 그룹에 대해 프로세서 어레이(1020)에 의한 컨벌루션 연산이 완료된 후, 컨트롤러(1020)는 복수의 웨이트 그룹들 중 제 1 웨이트 그룹에 포함되는 웨이트 맵들을 프로세서 어레이(1020)의 프로세서 그룹들 각각에 할당할 수 있다. The
따라서, 본 개시에 따르면, 뉴럴 네트워크 장치(1000)는, 비제로값을 갖는 웨이트의 비율를 기준으로 그룹화된 복수의 웨이트 그룹들 각각을 순차적으로 프로세서 어레이(1020)에 할당하는 바, 프로세서 어레이(1020)의 컨벌루션 연산 속도를 향상시킬 수 있다. 다시 말해, 프로세서 어레이(1020)의 각 프로세서 그룹에 할당되는 웨이트 맵들의 비제로값을 갖는 웨이트 비율이 균등한 바, 프로세서 그룹 내 뉴럴 네트워크 프로세서들 간의 컨벌루션 연산 속도가 균등해질 수 있으므로, 결과적으로 프로세서 어레이(1020)의 컨벌루션 연산 속도를 향상시킬 수 있다. Thus, according to the present disclosure, the
도 6은 뉴럴 네트워크 장치가 복수의 웨이트 맵들을 복수의 웨이트 그룹들로 그룹화하는 실시예를 나타낸다.6 shows an embodiment in which a neural network device groups a plurality of weight maps into a plurality of weight groups.
일 실시예에 따라, 그래프(610)는 메모리(1030)에 저장된 복수의 웨이트 맵들 각각이 갖는 비제로값 웨이트의 비율을 나타낸다. 컨트롤러(1010)는, 그래프(610)와 같이, 메모리(1030)에 저장된 복수의 웨이트 맵들 각각마다 비제로값을 갖는 웨이트의 비율을 검출할 수 있고, 비제로값을 갖는 웨이트의 비율을 기준으로, 그래프(620)와 같이, 복수의 웨이트 맵들을 정렬할 수 있다. 그래프(620)는, 비제로값을 갖는 웨이트의 비율를 기준으로, 오름차순으로 복수의 웨이트 맵들이 정렬된 것을 나타낸다. 컨트롤러(1010)는 정렬된 복수의 웨이트 맵들을 복수의 웨이트 맵 그룹들로 그룹화할 수 있다. 예를 들어, 컨트롤러(1010)는 그래프(620)에 표시된 바와 같이, 정렬된 복수의 웨이트 맵들을 순서대로 기 설정된 개수 단위로 그룹화하여 10개의 웨이트 맵 그룹들을 결정할 수 있다. 다시 말해, 컨트롤러(1010)는 웨이트 맵 그룹 0 내지 9를 결정할 수 있다. 따라서, 10개의 웨이트 맵 그룹들 각각에 포함되는 웨이트 맵들의 비제로값 웨이트의 비율은 균등해 질 수 있다. According to one embodiment,
도 7a 및 7b는 뉴럴 네트워크 장치가 입력 피처 맵 및 웨이트 맵을 처리하는 실시예를 나타낸다.7A and 7B show an embodiment in which a neural network device processes an input feature map and a weight map.
컨트롤러(1010)는 너비(W), 높이(H), 및 채널(C)을 갖는 입력 피처 맵을 공간적 차원(spatial dimension)에 따라 분할할 수 있고, 분할된 입력 피처 맵들을 순차적으로 프로세서 어레이(1020)의 각 프로세서 그룹에 할당할 수 있다. 일 실시예에 따라, 도 7b의 화살표를 참조하면, 컨트롤러(1010)는 분할된 입력 피처 맵들을 지그재그(zig-zag) 방향으로 프로세서 어레이(1020)의 각 프로세서 그룹에 할당할 수 있다.The
도 7a를 살펴보면, 컨트롤러(1010)는 분할된 입력 피처 맵 A0 및 A1 각각을 프로세서 어레이(1020)의 제 0 프로세서 그룹 및 제 1 프로세서 그룹 각각에 할당할 수 있다.Referring to FIG. 7A, the
또한, 컨트롤러(1010)는 복수의 웨이트 그룹들을 순차적으로 프로세서 어레이(1020)의 각 프로세서 그룹에 할당할 수 있다. 예를 들어, 컨트롤러(1010)는 제 0 웨이트 그룹의 웨이트 맵 K0 및 K1을 프로세서 어레이(1020)의 제 0 프로세서 그룹 및 제 1 프로세서 그룹 각각에 할당할 수 있다. 또한, 프로세서 어레이(1020)가 제 0 웨이트 그룹과 분할된 모든 입력 피처 맵들에 대한 컨벌루션 연산을 완료하는 경우, 컨트롤러(1010)는 제 1 웨이트 그룹을 프로세서 어레이(1020)에 할당할 수 있다.Further, the
프로세서 어레이(1020)의 프로세서 그룹은 할당 받은 입력 피처 맵 및 웨이트 맵에 대한 컨벌루션 연산을 수행하여 출력 피처 맵을 생성할 수 있다. 예를 들어, 제 0 프로세서 그룹의 제 0 뉴럴 네트워크 프로세서는 입력 피처 맵 A0 및 웨이트 맵 K0에 대한 컨벌루션 연산을 수행하여 출력 피처 맵(Psum0)을 생성할 수 있다. 다시 말해, 제 0 뉴럴 네트워크 프로세서는, 전체 입력 피처 맵의 일부에 해당하는 입력 피처 맵 A0에 대한 출력 피처 맵(Psum0)을 생성할 수 있다. 또한, 제 0 프로세서 그룹의 제 1 뉴럴 네트워크 프로세서는, 입력 피처 맵 A0 및 웨이트 맵 K1에 대한 컨벌루션 연산을 수행하여 출력 피처 맵(Psum1)을 생성할 수 있다. 마찬가지로, 제 1 프로세서 그룹의 제 0 뉴럴 네트워크 프로세서는 입력 피처 맵 A1 및 웨이트 맵 K0에 대한 컨벌루션 연산을 수행하여 출력 피처 맵(Psum0)을 생성할 수 있다. 또한, 제 1 프로세서 그룹의 제 1 뉴럴 네트워크 프로세서는 입력 피처 맵 A1 및 웨이트 맵 K1에 대한 컨벌루션 연산을 수행하여 출력 피처 맵(Psum1)을 생성할 수 있다.The processor group of the
다음으로 도 7b를 살펴보면, 분할된 입력 피처 맵 A0 및 A1에 대한 컨벌루션 연산이 완료된 후에, 컨트롤러(1010)는 다른 분할된 입력 피처 맵 A2 및 A3를 프로세서 어레이(1020)의 제 0 프로세서 그룹 및 제 1 프로세서 그룹 각각에 할당할 수 있다. 이어서, 프로세서 어레이(1020)의 제 0 프로세서 그룹은 기 할당 받은 웨이트 맵 K0 및 K1과 입력 피처 맵 A2에 대한 컨벌루션 연산을 수행하여 출력 피처 맵 Psum0 및 Psum1을 생성할 수 있다. 또한, 프로세서 어레이(1020)의 제 1 프로세서 그룹은 기 할당 받은 웨이트 맵 K0 및 K1과 입력 피처 맵 A3에 대한 컨벌루션 연산을 수행하여 출력 피처 맵 Psum0 및 Psum1을 생성할 수 있다.Next, referring to FIG. 7B, after the convolution operation for the divided input feature maps A0 and A1 is completed, the
도 8은 일 실시예에 따라, 뉴럴 네트워크 장치의 동작 방법을 설명하기 위한 도면이다.8 is a diagram for explaining a method of operating a neural network device according to an embodiment.
도 8에 도시된 방법은, 도 5의 뉴럴 네트워크 장치(1000)의 각 구성요소에 의해 수행될 수 있고, 중복되는 설명에 대해서는 생략한다.The method shown in Fig. 8 can be performed by each component of the
단계 s810에서, 뉴럴 네트워크 장치(1000)는, 웨이트 맵 내에서 비제로값을 갖는 웨이트의 비율을 기준으로, 복수의 웨이트 맵들을 복수의 웨이트 그룹들로 그룹화할 수 있다. 구체적으로, 뉴럴 네트워크 장치(1000)는, 웨이트 그룹에 포함된 웨이트 맵들 각각의 비제로값을 갖는 웨이트 비율이 서로 유사하도록, 복수의 웨이트 맵들을 복수의 웨이트 그룹들로 그룹화할 수 있다.In step s810, the
또한, 뉴럴 네트워크 장치(1000)는 복수의 뉴럴 네트워크 프로세서들을 복수의 프로세서 그룹들로 그룹화할 수 있다. 다시 말해, 뉴럴 네트워크 장치(1000)는 기 설정된 개수의 뉴럴 네트워크 프로세서들을 하나의 프로세서 그룹으로 그룹화하여, 결과적으로 복수의 프로세서 그룹들을 결정할 수 있다.In addition, the
단계 s820에서, 뉴럴 네트워크 장치(1000)는, 복수의 웨이트 그룹들 각각과 입력 피처 맵을 복수의 뉴럴 네트워크 프로세서들에 할당할 수 있다. 구체적으로, 뉴럴 네트워크 장치(1000)는 복수의 웨이트 그룹들 각각을 순차적으로 복수의 프로세서 그룹들 각각에 할당할 수 있다.In step s820, the
따라서, 복수의 프로세서 그룹들 각각은 할당된 웨이트 그룹 및 입력 피처 맵에 대한 컨벌루션 연산을 수행하여 출력 피처 맵을 생성할 수 있다.Thus, each of the plurality of processor groups may perform a convolution operation on the assigned weight group and the input feature map to generate an output feature map.
도 9는 본 개시의 실시예에 따른 전자 시스템을 나타내는 블록도이다.9 is a block diagram illustrating an electronic system according to an embodiment of the present disclosure.
본 개시의 실시예에 따른 전자 시스템(1)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(1)이 탑재되는 전자 장치의 구성들을 제어할 수 있다. 예컨대 전자 시스템(1)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트 폰, 의료 장치, 모바일 장치, 영상 표시 장치, 계측 장치, IoT(Internet of Things) 장치 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 장치 중 하나에 탑재될 수 있다. The
도 1을 참조하면, 전자 시스템(1)은 CPU(Central Processing Unit)(110), RAM(Random Access memory)(120), 뉴럴 네트워크 장치(130), 메모리(140), 센서 모듈(150) 및 통신 모듈(160)을 포함할 수 있다. 전자 시스템(1)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 실시예에 있어서, 전자 시스템(1)의 구성들(CPU(110), RAM(120), 뉴럴 네트워크 장치(130), 메모리(140), 센서 모듈(150) 및 통신 모듈(160)) 중 일부는 하나의 반도체 칩에 탑재될 수 있다. 또한, 뉴럴 네트워크 장치(130)는 도 5의 뉴럴 네트워크 장치(1000)와 대응될 수 있다.1, the
CPU(110)는 전자 시스템(1)의 전반적인 동작을 제어한다. CPU(110)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. CPU(110)는 메모리(140)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, CPU(110)는 메모리(140)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(130)의 기능을 제어할 수 있다. The
RAM(120)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(140)에 저장된 프로그램들 및/또는 데이터는 CPU(110)의 제어 또는 부팅 코드에 따라 RAM(120)에 일시적으로 저장될 수 있다. RAM(120)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.The
뉴럴 네트워크 장치(130)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크 의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. The
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(130)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(1)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(130)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.The information signal may include one of various kinds of recognition signals such as a speech recognition signal, an object recognition signal, an image recognition signal, a biometric information recognition signal, and the like. For example, the
메모리(140)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(140)는 뉴럴 네트워크 장치(130)의 연산 수행 과정에서 생성되는 중간 결과들, 예컨대 출력 피처 맵을 출력 피처 리스트 또는 출력 피처 매트릭스 형태로 저장할 수 있다. 실시예에 있어서, 메모리(140)에는 압축된 출력 피처 맵이 저장될 수 있다. 또한, 메모리(140)는 뉴럴 네트워크 장치(130)에서 이용되는 각종 파라미터들, 예컨대 웨이트 맵 또는 웨이트 리스트를 저장할 수 있다. The
메모리(140)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(140)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다. 휘발성 메모리는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등을 포함한다. 실시예에 있어서, 메모리(14)는 HDD(Hard Disk Drive), SSD(Solid State Drive), CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 Memory Stick 중 적어도 하나를 포함할 수 있다. The
센서 모듈(150)은 전자 시스템(1)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(150)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(150)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다. The
센서 모듈(150)은 변환된 데이터를 뉴럴 네트워크 장치(130)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(150)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(130)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(150)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(130)에 제공할 수 있다. The
통신 모듈(160)은 외부 장치와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(160)은 유선 근거리통신망(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)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.The
실시 예에 있어서, 통신 모듈(160)은 외부 서버로부터 웨이트 맵을 수신할 수 있다. 외부 서버는 방대한 양의 학습 데이터를 기초로 트레이닝을 수행하고, 트레이닝된 웨이트를 포함하는 웨이트 맵을 전자 시스템(1)에 제공할 수 있다. 수신된 웨이트 맵은 메모리(1400)에 저장될 수 있다.In an embodiment, the
상기 살펴 본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다. The apparatus according to the above embodiments may include a processor, a memory for storing and executing program data, a permanent storage such as a disk drive, a communication port for communicating with an external device, a touch panel, a key, The same user interface device, and the like. Methods implemented with software modules or algorithms may be stored on a computer readable recording medium as computer readable codes or program instructions executable on the processor. Here, the computer-readable recording medium may be a magnetic storage medium such as a read-only memory (ROM), a random-access memory (RAM), a floppy disk, a hard disk, ), And a DVD (Digital Versatile Disc). The computer-readable recording medium may be distributed over networked computer systems so that computer readable code can be stored and executed in a distributed manner. The medium is readable by a computer, stored in a memory, and executable on a processor.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단", "구성"과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.This embodiment may be represented by functional block configurations and various processing steps. These functional blocks may be implemented in a wide variety of hardware and / or software configurations that perform particular functions. For example, embodiments may include integrated circuit components such as memory, processing, logic, look-up tables, etc., that may perform various functions by control of one or more microprocessors or other control devices Can be employed. Similar to how components may be implemented with software programming or software components, the present embodiments may be implemented in a variety of ways, including C, C ++, Java (" Java), an assembler, and the like. Functional aspects may be implemented with algorithms running on one or more processors. In addition, the present embodiment can employ conventional techniques for electronic environment setting, signal processing, and / or data processing. Terms such as "mechanism", "element", "means", "configuration" may be used broadly and are not limited to mechanical and physical configurations. The term may include the meaning of a series of routines of software in conjunction with a processor or the like.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. The specific implementations described in this embodiment are illustrative and do not in any way limit the scope of the invention. For brevity of description, descriptions of conventional electronic configurations, control systems, software, and other functional aspects of such systems may be omitted. Also, the connections or connecting members of the lines between the components shown in the figures are illustrative of functional connections and / or physical or circuit connections, which may be replaced or additionally provided by a variety of functional connections, physical Connection, or circuit connections.
본 명세서(특히 특허청구범위에서)에서 "상기"의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.In this specification (particularly in the claims), the use of the terms "above" and similar indication words may refer to both singular and plural. In addition, when a range is described, it includes the individual values belonging to the above range (unless there is a description to the contrary), and the individual values constituting the above range are described in the detailed description. Finally, if there is no explicit description or contradiction to the steps constituting the method, the steps may be performed in an appropriate order. It is not necessarily limited to the description order of the above steps. The use of all examples or exemplary terms (e. G., The like) is merely intended to be illustrative of technical ideas and is not to be limited in scope by the examples or the illustrative terminology, except as by the appended claims. It will also be appreciated by those skilled in the art that various modifications, combinations, and alterations may be made depending on design criteria and factors within the scope of the appended claims or equivalents thereof.
Claims (15)
입력 피처 맵(input feature map)의 복수의 입력 피처들 각각이 비제로(non-zero)값을 갖는지 여부를 나타내는 입력 피처 정보 및 웨이트 맵(weight map)의 복수의 웨이트들 각각이 비제로값을 갖는지 여부를 나타내는 웨이트 정보를 획득하고, 상기 획득된 입력 피처 정보 및 웨이트 정보에 기초하여, 상기 복수의 입력 피처들 및 복수의 웨이트들 중에서 컨벌루션 연산이 수행될 입력 피처 및 웨이트를 결정하는, 페치 컨트롤러(fetch controller); 및
상기 결정된 웨이트 및 입력 피처에 대해 컨벌루션 연산을 수행하여 출력 피처 맵을 생성하는 데이터 연산 회로;를 포함하는, 뉴럴 네트워크 프로세서.A neural network processor comprising:
Input feature information indicating whether each of a plurality of input features of an input feature map has a non-zero value and a plurality of weights of a weight map each having a non- And determining a weight and an input feature to be convoluted among the plurality of input features and the plurality of weights based on the obtained input feature information and weight information, (fetch controller); And
And a data operation circuit that performs a convolution operation on the determined weight and the input feature to produce an output feature map.
상기 데이터 연산 회로는,
상기 복수의 입력 피처들 및 상기 복수의 웨이트들 중에서 상기 결정된 웨이트 및 입력 피처에 대해서만 컨벌루션 연산을 선택적으로 수행하는, 뉴럴 네트워크 프로세서.The method according to claim 1,
The data operation circuit comprising:
And selectively perform a convolution operation only on the determined weight and input feature among the plurality of input features and the plurality of weights.
상기 페치 컨트롤러는,
상기 입력 피처 정보 및 상기 웨이트 정보에 대한 연산을 수행하여, 비제로값을 갖는 입력 피처 및 웨이트를 검출하고,
상기 데이터 연산 회로는,
상기 검출된 입력 피처 및 웨이트에 대해 컨벌루션 연산을 수행하는, 뉴럴 네트워크 프로세서.The method according to claim 1,
The fetch controller includes:
Performing an operation on the input feature information and the weight information to detect input features and weights having non-zero values,
The data operation circuit comprising:
And performs a convolution operation on the detected input features and weights.
상기 입력 피처 정보는,
제로값을 갖는 피처는 0으로 표시되고, 비제로값을 갖는 피처는 1로 표시되는 입력 피처 벡터를 포함하고,
상기 웨이트 정보는,
제로값을 갖는 웨이트는 0으로 표시되고, 비제로값을 갖는 웨이트는 1로 표시되는 웨이트 벡터를 포함하는, 뉴럴 네트워크 프로세서.The method according to claim 1,
Wherein the input feature information comprises:
A zero-valued feature is represented by 0, a non-zero-valued feature includes an input feature vector denoted by 1,
The weight information includes:
A weight having a zero value is represented by 0, and a weight having a non-zero value includes a weight vector denoted by 1.
상기 결정된 입력 피처 및 웨이트가, 제 1 입력 피처 및 제 1 웨이트, 및 제 2 입력 피처 및 제 2 웨이트인 경우,
상기 데이터 연산 회로는,
현재 사이클에서, 제 1 입력 피처 및 제 1 웨이트를 상기 입력 피처 맵 및 상기 웨이트 맵으로부터 읽어 내어 컨벌루션 연산을 수행하고,
다음 사이클에서, 제 2 입력 피처 및 제 2 웨이트를 상기 입력 피처 맵 및 상기 웨이트 맵으로부터 읽어 내어 컨벌루션 연산을 수행하는, 뉴럴 네트워크 프로세서.The method according to claim 1,
If the determined input features and weights are a first input feature and a first weight, and a second input feature and a second weight,
The data operation circuit comprising:
In the current cycle, a first input feature and a first weight are read from the input feature map and the weight map to perform a convolution operation,
And in a subsequent cycle, reads a second input feature and a second weight from the input feature map and the weight map to perform a convolution operation.
입력 피처 맵(input feature map)의 복수의 입력 피처들 각각이 비제로(non-zero)값을 갖는지 여부를 나타내는 입력 피처 정보 및 웨이트 맵의 복수의 웨이트들 각각이 비제로값을 갖는지 여부를 나타내는 웨이트 정보를 획득하는 단계;
상기 획득된 입력 피처 정보 및 웨이트 정보에 기초하여, 상기 복수의 입력 피처들 및 복수의 웨이트들 중에서 컨벌루션 연산이 수행될 입력 피처 및 웨이트를 결정하는 단계; 및
상기 결정된 웨이트 및 입력 피처에 대해 컨벌루션 연산을 수행하여 출력 피처 맵을 생성하는 단계를 포함하는, 방법.A method of operating a neural network processor,
Input feature information indicating whether each of a plurality of input features of an input feature map has a non-zero value and whether or not each of the plurality of weights of the weight map has a non- Obtaining weight information;
Determining input features and weights to be convoluted among the plurality of input features and the plurality of weights based on the obtained input feature information and weight information; And
And performing a convolution operation on the determined weight and the input feature to generate an output feature map.
상기 생성하는 단계는,
상기 복수의 입력 피처들 및 상기 복수의 웨이트들 중에서 상기 결정된 웨이트 및 입력 피처에 대해서만 컨벌루션 연산을 선택적으로 수행하는 단계를 포함하는, 방법.The method according to claim 6,
Wherein the generating comprises:
And selectively performing a convolution operation only on the determined weight and input feature among the plurality of input features and the plurality of weights.
상기 결정하는 단계는,
상기 입력 피처 정보 및 상기 웨이트 정보에 대한 연산을 수행하여, 비제로값을 갖는 입력 피처 및 웨이트를 검출하는 단계를 포함하고,
상기 생성하는 단계는,
상기 검출된 입력 피처 및 웨이트에 대해 컨벌루션 연산을 수행하는 단계를 포함하는, 방법.The method according to claim 6,
Wherein the determining comprises:
Performing an operation on the input feature information and the weight information to detect input features and weights having non-zero values,
Wherein the generating comprises:
And performing a convolution operation on the detected input features and weights.
상기 입력 피처 정보는,
제로값을 갖는 피처는 0으로 표시되고, 비제로값을 갖는 피처는 1로 표시되는 입력 피처 벡터를 포함하고,
상기 웨이트 정보는,
제로값을 갖는 웨이트는 0으로 표시되고, 비제로값을 갖는 웨이트는 1로 표시되는 웨이트 벡터를 포함하는, 방법.The method according to claim 6,
Wherein the input feature information comprises:
A zero-valued feature is represented by 0, a non-zero-valued feature includes an input feature vector denoted by 1,
The weight information includes:
Wherein a weight having a zero value is represented by 0, and a weight having a non-zero value includes a weight vector denoted by 1.
상기 결정된 입력 피처 및 웨이트가, 제 1 입력 피처 및 제 1 웨이트, 및 제 2 입력 피처 및 제 2 웨이트인 경우,
상기 생성하는 단계는,
현재 사이클에서, 제 1 입력 피처 및 제 1 웨이트를 상기 입력 피처 맵 및 상기 웨이트 맵으로부터 읽어 내어 컨벌루션 연산을 수행하는 단계; 및,
다음 사이클에서, 제 2 입력 피처 및 제 2 웨이트를 상기 입력 피처 맵 및 상기 웨이트 맵으로부터 읽어 내어 컨벌루션 연산을 수행하는 단계를 포함하는, 방법.The method according to claim 1,
If the determined input features and weights are a first input feature and a first weight, and a second input feature and a second weight,
Wherein the generating comprises:
Reading a first input feature and a first weight from the input feature map and the weight map in a current cycle to perform a convolution operation; And
And in the next cycle, reading a second input feature and a second weight from the input feature map and the weight map and performing a convolution operation.
복수의 뉴럴 네트워크 프로세서들을 포함하는 프로세서 어레이;
입력 피처 맵 및 복수의 웨이트 맵들을 저장하는 메모리; 및
상기 입력 피처 맵 및 복수의 웨이트 맵들을 상기 프로세서 어레이에 할당하는 컨트롤러를 포함하고,
상기 컨트롤러는,
웨이트 맵 내에서 비제로값을 갖는 웨이트의 비율을 기준으로, 상기 복수의 웨이트 맵들을 복수의 웨이트 그룹들로 그룹화하고, 상기 복수의 웨이트 그룹들 각각을 상기 프로세서 어레이에 할당하는, 뉴럴 네트워크 장치.In a neural network device,
A processor array including a plurality of neural network processors;
A memory for storing an input feature map and a plurality of weight maps; And
And a controller for assigning the input feature map and the plurality of weight maps to the processor array,
The controller comprising:
Grouping the plurality of weight maps into a plurality of weight groups and assigning each of the plurality of weight groups to the processor array based on a ratio of a weight having a non-zero value in the weight map.
상기 컨트롤러는,
웨이트 그룹에 포함된 웨이트 맵들 각각의 상기 비율이 균등해지도록, 상기 복수의 웨이트 맵들을 복수의 웨이트 그룹들로 그룹화하는, 뉴럴 네트워크 장치.12. The method of claim 11,
The controller comprising:
And groups the plurality of weight maps into a plurality of weight groups so that the ratio of each of the weight maps included in the weight group is equalized.
상기 컨트롤러는,
상기 복수의 뉴럴 네트워크 프로세서들을 복수의 프로세서 그룹들로 그룹화하고, 상기 복수의 웨이트 그룹들 각각을 순차적으로 상기 복수의 프로세서 그룹들 각각에 할당하는, 뉴럴 네트워크 장치.12. The method of claim 11,
The controller comprising:
Group the plurality of neural network processors into a plurality of processor groups and sequentially assign each of the plurality of weight groups to each of the plurality of processor groups.
상기 컨트롤러는,
상기 입력 피처 맵의 입력 피처들 각각이 비제로값을 갖는지 여부를 나타내는 입력 피처 정보 및, 상기 복수의 웨이트 맵들의 웨이트들 각각이 비제로값을 갖는지 여부를 나타내는 웨이트 정보를 상기 프로세서 어레이에 제공하고,
상기 프로세서 어레이는,
상기 입력 피처 정보 및 상기 웨이트 정보에 기초하여, 상기 입력 피처 맵 및 상기 복수의 웨이트 맵들에 대한 컨벌루션 연산을 수행하여 출력 피처 맵을 생성하는, 뉴럴 네트워크 장치.12. The method of claim 11,
The controller comprising:
Input feature information indicating whether each of the input features of the input feature map has a nonzero value and weight information indicating whether each of the weights of the plurality of weight maps has a nonzero value is provided to the processor array ,
The processor array comprising:
And performs a convolution operation on the input feature map and the plurality of weight maps based on the input feature information and the weight information to generate an output feature map.
A computer-readable recording medium storing a program for causing a computer to execute the method according to any one of claims 6 to 10.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/870,767 US20180253636A1 (en) | 2017-03-06 | 2018-01-12 | Neural network apparatus, neural network processor, and method of operating neural network processor |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170028545 | 2017-03-06 | ||
KR20170028545 | 2017-03-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180101978A true KR20180101978A (en) | 2018-09-14 |
KR102390379B1 KR102390379B1 (en) | 2022-04-26 |
Family
ID=63599721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170041160A KR102390379B1 (en) | 2017-03-06 | 2017-03-30 | Neural network device, Neural network processor and method of operating neural network processor |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102390379B1 (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200098121A (en) * | 2019-02-12 | 2020-08-20 | 에스케이하이닉스 주식회사 | Method for formatting weight matrix, accelerator using the formatted weight matrix and system including the same |
KR20210029595A (en) * | 2019-09-06 | 2021-03-16 | 주식회사 하이퍼커넥트 | Keyword Spotting Apparatus, Method and Computer Readable Recording Medium Thereof |
US11409675B2 (en) | 2020-12-22 | 2022-08-09 | Samsung Electronics Co., Ltd. | Data transmission method for convolution operation, fetcher, and convolution operation apparatus |
US11494630B2 (en) | 2019-01-15 | 2022-11-08 | Electronics And Telecommunications Research Institute | Neuromorphic arithmetic device and operating method thereof |
US11501166B2 (en) | 2019-10-16 | 2022-11-15 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network operation |
US11681915B2 (en) | 2019-12-26 | 2023-06-20 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
WO2023149662A1 (en) * | 2022-02-04 | 2023-08-10 | 삼성전자 주식회사 | Data processing method and data processing device |
US11836971B2 (en) | 2018-08-23 | 2023-12-05 | Samsung Electronics Co., Ltd. | Method and device with convolution neural network processing |
US11900262B2 (en) | 2019-01-21 | 2024-02-13 | Samsung Electronics Co., Ltd. | Neural network device, neural network system, and method of processing neural network model by using neural network system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150206048A1 (en) * | 2014-01-23 | 2015-07-23 | Qualcomm Incorporated | Configuring sparse neuronal networks |
KR20160034814A (en) * | 2014-09-22 | 2016-03-30 | 삼성전자주식회사 | Client device with neural network and system including the same |
KR20160142791A (en) * | 2015-06-03 | 2016-12-13 | 삼성전자주식회사 | Method and apparatus for implementing neural network |
KR20160145482A (en) * | 2015-06-10 | 2016-12-20 | 삼성전자주식회사 | Method and apparatus of implementing spiking neural network |
-
2017
- 2017-03-30 KR KR1020170041160A patent/KR102390379B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150206048A1 (en) * | 2014-01-23 | 2015-07-23 | Qualcomm Incorporated | Configuring sparse neuronal networks |
KR20160034814A (en) * | 2014-09-22 | 2016-03-30 | 삼성전자주식회사 | Client device with neural network and system including the same |
KR20160142791A (en) * | 2015-06-03 | 2016-12-13 | 삼성전자주식회사 | Method and apparatus for implementing neural network |
KR20160145482A (en) * | 2015-06-10 | 2016-12-20 | 삼성전자주식회사 | Method and apparatus of implementing spiking neural network |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11836971B2 (en) | 2018-08-23 | 2023-12-05 | Samsung Electronics Co., Ltd. | Method and device with convolution neural network processing |
US11494630B2 (en) | 2019-01-15 | 2022-11-08 | Electronics And Telecommunications Research Institute | Neuromorphic arithmetic device and operating method thereof |
US11900262B2 (en) | 2019-01-21 | 2024-02-13 | Samsung Electronics Co., Ltd. | Neural network device, neural network system, and method of processing neural network model by using neural network system |
KR20200098121A (en) * | 2019-02-12 | 2020-08-20 | 에스케이하이닉스 주식회사 | Method for formatting weight matrix, accelerator using the formatted weight matrix and system including the same |
KR20210029595A (en) * | 2019-09-06 | 2021-03-16 | 주식회사 하이퍼커넥트 | Keyword Spotting Apparatus, Method and Computer Readable Recording Medium Thereof |
US11501166B2 (en) | 2019-10-16 | 2022-11-15 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network operation |
US11763153B2 (en) | 2019-10-16 | 2023-09-19 | Samsung Electronics Co., Ltd. | Method and apparatus with neural network operation |
US11681915B2 (en) | 2019-12-26 | 2023-06-20 | Samsung Electronics Co., Ltd. | Neural network method and apparatus |
US11409675B2 (en) | 2020-12-22 | 2022-08-09 | Samsung Electronics Co., Ltd. | Data transmission method for convolution operation, fetcher, and convolution operation apparatus |
US11797461B2 (en) | 2020-12-22 | 2023-10-24 | Samsung Electronics Co., Ltd. | Data transmission method for convolution operation, fetcher, and convolution operation apparatus |
WO2023149662A1 (en) * | 2022-02-04 | 2023-08-10 | 삼성전자 주식회사 | Data processing method and data processing device |
Also Published As
Publication number | Publication date |
---|---|
KR102390379B1 (en) | 2022-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102390379B1 (en) | Neural network device, Neural network processor and method of operating neural network processor | |
US11295195B2 (en) | Neural network devices and methods of operating the same | |
US20220335284A1 (en) | Apparatus and method with neural network | |
CN109754064B (en) | Method and apparatus for performing deconvolution of neural networks | |
US20200234124A1 (en) | Winograd transform convolution operations for neural networks | |
KR102610820B1 (en) | Neural network system, and Operating method of neural network system | |
JP7304148B2 (en) | Method and apparatus for processing convolution operation in neural network | |
CN111258495A (en) | Semiconductor memory device and method of operating the same | |
US20210174177A1 (en) | Method and device with neural network implementation | |
KR20200086581A (en) | Method and apparatus for neural network quantization | |
US11562046B2 (en) | Neural network processor using dyadic weight matrix and operation method thereof | |
US11763153B2 (en) | Method and apparatus with neural network operation | |
US11531893B2 (en) | Method and apparatus with neural network parameter quantization | |
US20230076169A1 (en) | Neural network apparatus and method of processing variable-resolution operation by the same | |
JP7329352B2 (en) | Method and apparatus for processing parameters in neural networks for classification | |
US20200159495A1 (en) | Processing apparatus and method of processing add operation therein | |
US20200074286A1 (en) | Neuromorphic method and apparatus with multi-bit neuromorphic operation | |
KR20200062014A (en) | Apparatus for accelerating neural network using weight with dyadic matrix form and operation method thereof | |
US20220188612A1 (en) | Npu device performing convolution operation based on the number of channels and operating method thereof | |
CN112990453A (en) | Method and apparatus for processing using neural networks | |
KR20200056898A (en) | Processing apparatus and method for processing add operation thereof | |
US20240061649A1 (en) | In-memory computing (imc) processor and operating method of imc processor | |
CN115204377A (en) | Apparatus and method with multi-bit operation | |
JP2020095463A (en) | Information processing device, on-vehicle control device, and vehicle control system |
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 |