KR20210111014A - Electronic apparatus and method for controlling thereof - Google Patents
Electronic apparatus and method for controlling thereof Download PDFInfo
- Publication number
- KR20210111014A KR20210111014A KR1020200026010A KR20200026010A KR20210111014A KR 20210111014 A KR20210111014 A KR 20210111014A KR 1020200026010 A KR1020200026010 A KR 1020200026010A KR 20200026010 A KR20200026010 A KR 20200026010A KR 20210111014 A KR20210111014 A KR 20210111014A
- Authority
- KR
- South Korea
- Prior art keywords
- matrix
- data
- values
- input
- weight
- 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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Analysis (AREA)
Abstract
Description
본 개시는 전자 장치 및 그 제어 방법에 관한 것으로, 보다 상세하게는 인공 지능 기술을 기반으로 동작하는 전자 장치 및 그 제어 방법에 관한 것이다.The present disclosure relates to an electronic device and a control method thereof, and more particularly, to an electronic device operating based on artificial intelligence technology and a control method thereof.
최근 인간 수준의 지능을 구현하는 인공 지능 시스템이 개발되고 있다. 인공 지능 시스템은, 기존의 룰(rule) 기반 시스템과 달리 기계가 스스로 학습하고 판단하는 시스템으로써, 음성 인식, 이미지 인식 및 미래 예측 등과 같은 다양한 범위에서 활용되고 있다.Recently, artificial intelligence systems that implement human-level intelligence are being developed. Unlike the existing rule-based system, the artificial intelligence system is a system in which a machine learns and judges by itself, and is used in various fields such as voice recognition, image recognition, and future prediction.
특히, 최근에는 딥 러닝(deep learning)에 기반한 딥 뉴럴 네트워크(deep neural network)를 통해 주어진 문제를 해결하는 인공 지능 시스템이 개발되고 있다. In particular, recently, an artificial intelligence system for solving a given problem through a deep neural network based on deep learning has been developed.
딥 뉴럴 네트워크는 입력 레이어(input layer)와 출력 레이어(output layer) 사이에 다수의 은닉 레이어(hidden layer)을 포함하는 뉴럴 네트워크로써, 각 레이어에 포함된 뉴런을 통해 인공 지능 기술을 구현하는 모델을 의미한다. A deep neural network is a neural network that includes a number of hidden layers between an input layer and an output layer. it means.
이와 같은, 딥 뉴럴 네트워크는 정확한 결과 값을 도출해 내기 위해서 다수의 뉴런을 포함하는 것이 일반적이다.As such, a deep neural network generally includes a plurality of neurons in order to derive an accurate result value.
그런데, 방대한 양의 뉴런들이 존재할 경우, 입력 값에 대한 출력 값의 정확도가 높아지는 것은 별론, 출력 값 도출을 위한 연산에 많은 시간을 소요하는 문제가 있다. However, when there are a large amount of neurons, there is a problem in that it takes a lot of time to calculate the output value, apart from increasing the accuracy of the output value with respect to the input value.
또한, 방대한 양의 뉴런들로 인해서, 딥 뉴럴 네트워크는 제한된 메모리를 가진 스마트 폰과 같은 모바일 장치 등에서는 용량 상의 문제로 이용될 수 없는 문제도 있다.In addition, due to a large amount of neurons, there is a problem in that the deep neural network cannot be used in a mobile device such as a smart phone having a limited memory due to a capacity problem.
본 개시는 상술한 문제점을 해결하기 위해 안출된 것으로, 본 개시의 목적은 빠른 시간 내 입력 값에 대한 출력 값을 정확히 도출하고, 제한된 메모리를 가진 모바일 장치 등에서도 인공 지능 기술을 실현할 수 있도록 하는 전자 장치를 제공함에 있다.The present disclosure has been devised to solve the above problems, and an object of the present disclosure is to accurately derive an output value for an input value within a short time, and to realize artificial intelligence technology in a mobile device with limited memory, etc. to provide the device.
본 개시의 일 실시 예에 따른 신경망 모델의 연산을 수행하는 전자 장치는, 상기 신경망 모델의 양자화된 가중치 값들을 포함하는 가중치 데이터가 저장된 메모리 및 적어도 하나의 비트 값이 서로 다른 이진 데이터 및 입력 데이터에 기초하여 연산 데이터를 획득하고, 상기 이진 데이터에 상기 연산 데이터가 매칭된 룩업 테이블을 생성하며, 상기 룩업 테이블로부터 상기 가중치 데이터에 대응되는 연산 데이터를 획득하고, 상기 획득된 연산 데이터에 기초하여 상기 신경망 모델의 연산을 수행하는 프로세서를 포함한다.An electronic device for performing an operation of a neural network model according to an embodiment of the present disclosure includes a memory in which weight data including quantized weight values of the neural network model is stored, and binary data and input data having at least one bit value different from each other. to obtain operation data based on the calculation data, generate a lookup table in which the operation data is matched to the binary data, obtain operation data corresponding to the weight data from the lookup table, and based on the obtained operation data, the neural network It includes a processor that performs calculations on the model.
여기에서, 상기 이진 데이터 각각은, n 개의 비트 값들로 구성되고, 상기 입력 데이터는, 매트릭스의 복수의 입력 값들을 포함하고, 상기 프로세서는, 상기 매트릭스의 각 컬럼에서 n 개의 입력 값들을 획득하고, 상기 이진 데이터 및 상기 n 개의 입력 값들에 기초하여 상기 이진 데이터 별로 상기 연산 데이터를 획득할 수 있다.wherein each of the binary data consists of n bit values, the input data includes a plurality of input values of a matrix, and the processor obtains n input values from each column of the matrix, The operation data may be obtained for each binary data based on the binary data and the n input values.
그리고, 상기 가중치 데이터는, 매트릭스의 복수의 가중치 값들을 포함하고, 상기 프로세서는, 상기 매트릭스의 각 로우에서 상기 n 개의 입력 값들에 대응되는 n 개의 가중치 값들을 식별하고, 상기 이진 데이터 중 상기 식별된 n 개의 가중치 값들에 대응되는 이진 데이터를 식별하며, 상기 룩업 테이블로부터 상기 식별된 이진 데이터에 대응되는 연산 데이터를 획득하고, 상기 획득된 연산 데이터에 기초하여 상기 신경망 모델의 연산을 수행할 수 있다.And, the weight data includes a plurality of weight values of a matrix, and the processor identifies n weight values corresponding to the n input values in each row of the matrix, and the identified weight values among the binary data. Binary data corresponding to n weight values may be identified, operation data corresponding to the identified binary data may be obtained from the lookup table, and the neural network model may be calculated based on the obtained operation data.
그리고, 상기 프로세서는, 상기 매트릭스의 각 컬럼의 입력 값들에 기초하여 생성된 복수의 룩업 테이블 중에서, 상기 입력 데이터에 대한 출력 매트릭스의 각 컬럼에 대응되는 룩업 테이블을 각각 판단하고, 상기 각각의 룩업 테이블로부터 상기 출력 매트릭스의 각 컬럼의 출력 값들을 획득할 수 있다.In addition, the processor determines, from among a plurality of lookup tables generated based on input values of each column of the matrix, a lookup table corresponding to each column of an output matrix for the input data, and each of the lookup tables Output values of each column of the output matrix may be obtained from
그리고, 상기 프로세서는, 상기 복수의 입력 값들을 포함하는 매트릭스를 기설정된 로우를 기준으로 제1 매트릭스 및 제2 매트릭스로 분할하고, 상기 복수의 가중치 값들을 포함하는 매트릭스를 기설정된 컬럼을 기준으로 제3 매트릭스 및 제4 매트릭스로 분할하며, 상기 제1 매트릭스의 각 컬럼의 입력 값들에 기초하여 복수의 룩업 테이블을 생성하고, 상기 복수의 룩업 테이블로부터 상기 제3 매트릭스의 각 로우에 대응되는 연산 데이터를 획득하고, 상기 제2 매트릭스의 각 컬럼의 입력 값들에 기초하여 복수의 룩업 테이블을 생성하고, 상기 복수의 룩업 테이블로부터 상기 제4 매트릭스의 각 로우에 대응되는 연산 데이터를 획득할 수 있다.Then, the processor divides the matrix including the plurality of input values into a first matrix and a second matrix based on a predetermined row, and divides the matrix including the plurality of weight values based on a predetermined column. It is divided into a third matrix and a fourth matrix, a plurality of lookup tables are generated based on input values of each column of the first matrix, and operation data corresponding to each row of the third matrix are generated from the plurality of lookup tables. obtained, a plurality of lookup tables may be generated based on input values of each column of the second matrix, and operation data corresponding to each row of the fourth matrix may be obtained from the plurality of lookup tables.
그리고, 상기 프로세서는, 상기 매트릭스의 각 컬럼에서 8개의 입력 값들을 획득하고, 상기 이진 데이터 및 상기 8개의 입력 값들에 기초하여 상기 이진 데이터 별로 상기 연산 데이터를 획득할 수 있다.The processor may obtain eight input values from each column of the matrix, and obtain the operation data for each binary data based on the binary data and the eight input values.
그리고, 상기 프로세서는, 상기 이진 데이터 및 상기 n 개의 입력 값들에 기초한 복수의 연산식에서, 동일한 중간 연산식을 가지는 제1 연산식 및 제2 연산식이 있는 경우, 상기 제2 연산식의 연산은 상기 제1 연산식의 연산 값에 기초하여 수행할 수 있다.And, in the plurality of arithmetic expressions based on the binary data and the n input values, the processor may be configured to, when there is a first arithmetic expression and a second arithmetic expression having the same intermediate arithmetic expression, the operation of the second arithmetic expression is performed in the first 1 It can be performed based on the calculation value of the calculation expression.
본 개시의 일 실시 예에 따른 신경망 모델의 연산을 수행하는 전자 장치의 제어 방법은 적어도 하나의 비트 값이 서로 다른 이진 데이터 및 입력 데이터에 기초하여 연산 데이터를 획득하는 단계, 상기 이진 데이터에 상기 연산 데이터가 매칭된 룩업 테이블을 생성하는 단계, 상기 룩업 테이블로부터 상기 신경망 모델의 양자화된 가중치 값들을 포함하는 가중치 데이터에 대응되는 연산 데이터를 획득하는 단계 및 상기 획득된 연산 데이터에 기초하여 상기 신경망 모델의 연산을 수행하는 단계를 포함한다.According to an embodiment of the present disclosure, a control method of an electronic device performing an operation of a neural network model includes: acquiring operation data based on binary data and input data having at least one bit value different from each other; generating a lookup table to which data is matched; obtaining computation data corresponding to weight data including quantized weight values of the neural network model from the lookup table; performing an operation.
여기에서, 상기 이진 데이터 각각은, n 개의 비트 값들로 구성되고, 상기 입력 데이터는, 매트릭스의 복수의 입력 값들을 포함하고, 상기 연산 데이터를 획득하는 단계는, 상기 매트릭스의 각 컬럼에서 n 개의 입력 값들을 획득하고, 상기 이진 데이터 및 상기 n 개의 입력 값들에 기초하여 상기 이진 데이터 별로 상기 연산 데이터를 획득할 수 있다.Here, each of the binary data consists of n bit values, the input data includes a plurality of input values of a matrix, and the obtaining of the operation data includes n input values in each column of the matrix. values may be obtained, and the operation data may be obtained for each binary data based on the binary data and the n input values.
그리고, 상기 가중치 데이터는, 매트릭스의 복수의 가중치 값들을 포함하고, 상기 신경망 모델의 연산을 수행하는 단계는, 상기 매트릭스의 각 로우에서 상기 n 개의 입력 값들에 대응되는 n 개의 가중치 값들을 식별하고, 상기 이진 데이터 중 상기 식별된 n 개의 가중치 값들에 대응되는 이진 데이터를 식별하며, 상기 룩업 테이블로부터 상기 식별된 이진 데이터에 대응되는 연산 데이터를 획득하고, 상기 획득된 연산 데이터에 기초하여 상기 신경망 모델의 연산을 수행할 수 있다.In addition, the weight data includes a plurality of weight values of a matrix, and the operation of the neural network model includes identifying n weight values corresponding to the n input values in each row of the matrix, Identifies binary data corresponding to the identified n weight values among the binary data, obtains computational data corresponding to the identified binary data from the lookup table, and based on the obtained computational data, the neural network model operation can be performed.
그리고, 상기 신경망 모델의 연산을 수행하는 단계는, 상기 매트릭스의 각 컬럼의 입력 값들에 기초하여 생성된 복수의 룩업 테이블 중에서, 상기 입력 데이터에 대한 출력 매트릭스의 각 컬럼에 대응되는 룩업 테이블을 각각 판단하고, 상기 각각의 룩업 테이블로부터 상기 출력 매트릭스의 각 컬럼의 출력 값들을 획득하는 단계를 포함할 수 있다.And, in the operation of the neural network model, a lookup table corresponding to each column of the output matrix for the input data is determined from among a plurality of lookup tables generated based on input values of each column of the matrix. and obtaining output values of each column of the output matrix from the respective lookup tables.
그리고, 상기 연산 데이터를 획득하는 단계는, 상기 복수의 입력 값들을 포함하는 매트릭스를 기설정된 로우를 기준으로 제1 매트릭스 및 제2 매트릭스로 분할하고, 상기 복수의 가중치 값들을 포함하는 매트릭스를 기설정된 컬럼을 기준으로 제3 매트릭스 및 제4 매트릭스로 분할하며, 상기 제1 매트릭스의 각 컬럼의 입력 값들에 기초하여 복수의 룩업 테이블을 생성하고, 상기 복수의 룩업 테이블로부터 상기 제3 매트릭스의 각 로우에 대응되는 연산 데이터를 획득하고, 상기 제2 매트릭스의 각 컬럼의 입력 값들에 기초하여 복수의 룩업 테이블을 생성하고, 상기 복수의 룩업 테이블로부터 상기 제4 매트릭스의 각 로우에 대응되는 연산 데이터를 획득할 수 있다.The obtaining of the operation data may include dividing the matrix including the plurality of input values into a first matrix and a second matrix based on a predetermined row, and dividing the matrix including the plurality of weight values into a predetermined matrix. It is divided into a third matrix and a fourth matrix based on a column, and a plurality of lookup tables are generated based on input values of each column of the first matrix, and from the plurality of lookup tables, each row of the third matrix is Obtaining corresponding operation data, generating a plurality of lookup tables based on input values of each column of the second matrix, and obtaining operation data corresponding to each row of the fourth matrix from the plurality of lookup tables can
그리고, 상기 연산 데이터를 획득하는 단계는, 상기 매트릭스의 각 컬럼에서 8개의 입력 값들을 획득하고, 상기 이진 데이터 및 상기 8개의 입력 값들에 기초하여 상기 이진 데이터 별로 상기 연산 데이터를 획득할 수 있다.In addition, the obtaining of the operation data may include obtaining eight input values from each column of the matrix, and obtaining the operation data for each binary data based on the binary data and the eight input values.
그리고, 상기 룩업 테이블을 생성하는 단계는, 상기 이진 데이터 및 상기 n 개의 입력 값들에 기초한 복수의 연산식에서, 동일한 중간 연산식을 가지는 제1 연산식 및 제2 연산식이 있는 경우, 상기 제2 연산식의 연산은 상기 제1 연산식의 연산 값에 기초하여 수행하는 단계를 포함할 수 있다.In addition, the generating of the lookup table may include, in a plurality of arithmetic expressions based on the binary data and the n input values, when there is a first arithmetic expression and a second arithmetic expression having the same intermediate arithmetic expression, the second arithmetic expression The operation of may include performing the operation based on the operation value of the first expression.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 빠른 시간 내 입력 값에 대한 출력 값을 정확히 도출할 수 있고, 제한된 메모리를 가진 모바일 장치 등에서도 인공 지능 기술을 실현할 수 있다.According to various embodiments of the present disclosure as described above, it is possible to accurately derive an output value for an input value within a short time, and it is possible to realize artificial intelligence technology even in a mobile device having a limited memory.
도 1은 본 개시의 일 실시 예에 따른 전자 장치를 설명하기 위한 블록도이다.
도 2a는 본 개시의 일 실시 예에 따른 입력 데이터에 대응되는 매트릭스를 도시한 도면이다.
도 2b는 본 개시의 일 실시 예에 따른 룩업 테이블을 도시한 도면이다.
도 3a는 본 개시의 일 실시 예에 따른 룩업 테이블을 이용한 신경망 모델의 연산을 설명하기 위한 도면이다.
도 3b는 본 개시의 일 실시 예에 따른 출력 데이터에 대응되는 매트릭스의 컬럼 별로 이용되는 룩업 테이블을 설명하기 위한 도면이다.
도 3c는 본 개시의 일 실시 예에 따른 출력 데이터에 대응되는 매트릭스의 제1 컬럼의 출력 값을 획득하는 실시 예를 설명하기 위한 도면이다.
도 3d는 본 개시의 일 실시 예에 따른 출력 데이터에 대응되는 매트릭스의 제2 컬럼의 출력 값을 획득하는 실시 예를 설명하기 위한 도면이다.
도 3e는 본 개시의 일 실시 예에 따른 출력 데이터에 대응되는 매트릭스의 제3 컬럼의 출력 값을 획득하는 실시 예를 설명하기 위한 도면이다.
도 4a는 본 개시의 일 실시 예에 따른 룩업 테이블 생성에 이용되는 연산식을 설명하기 위한 도면이다.
도 4b는 본 개시의 일 실시 예에 따른 복수의 연산식에 포함된 동일한 중간 연산식을 설명하기 위한 도면이다.
도 4c는 본 개시의 일 실시 예에 따른 복수의 연산식에 포함된 동일한 중간 연산식을 설명하기 위한 도면이다.
도 4d는 본 개시의 일 실시 예에 따른 복수의 연산식에 포함된 동일한 중간 연산식을 설명하기 위한 도면이다.
도 4e는 본 개시의 일 실시 예에 따른 복수의 연산식에 포함된 동일한 중간 연산식을 설명하기 위한 도면이다.
도 4f는 본 개시의 일 실시 예에 따른 동일한 중간 연산식에 기초하여 연산 값을 획득하는 실시 예를 설명하기 위한 도면이다.
도 5는 본 개시의 일 실시 예에 따른 신경망 모델의 연산 방법을 설명하기 위한 도면이다.
도 6은 본 개시의 일 실시 예에 따른 전자 장치를 설명하기 위한 상세 블록도이다.
도 7은 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 순서도이다.1 is a block diagram illustrating an electronic device according to an embodiment of the present disclosure.
2A is a diagram illustrating a matrix corresponding to input data according to an embodiment of the present disclosure.
2B is a diagram illustrating a lookup table according to an embodiment of the present disclosure.
3A is a diagram for explaining the operation of a neural network model using a lookup table according to an embodiment of the present disclosure.
3B is a diagram for describing a lookup table used for each column of a matrix corresponding to output data according to an embodiment of the present disclosure.
3C is a diagram for explaining an embodiment of obtaining an output value of a first column of a matrix corresponding to output data according to an embodiment of the present disclosure;
3D is a diagram for explaining an embodiment of obtaining an output value of a second column of a matrix corresponding to output data according to an embodiment of the present disclosure.
3E is a diagram for describing an example of obtaining an output value of a third column of a matrix corresponding to output data according to an embodiment of the present disclosure;
4A is a diagram for explaining an arithmetic expression used to generate a lookup table according to an embodiment of the present disclosure.
4B is a diagram for explaining the same intermediate expression included in a plurality of expression expressions according to an embodiment of the present disclosure.
4C is a diagram for explaining the same intermediate expression included in a plurality of expression expressions according to an embodiment of the present disclosure.
4D is a diagram for explaining the same intermediate expression included in a plurality of expression expressions according to an embodiment of the present disclosure.
4E is a diagram for explaining the same intermediate expression included in a plurality of expression expressions according to an embodiment of the present disclosure.
4F is a diagram for explaining an embodiment of obtaining an operation value based on the same intermediate operation expression according to an embodiment of the present disclosure.
5 is a diagram for explaining a method of calculating a neural network model according to an embodiment of the present disclosure.
6 is a detailed block diagram illustrating an electronic device according to an embodiment of the present disclosure.
7 is a flowchart illustrating a method of controlling an electronic device according to an embodiment of the present disclosure.
이하, 본 개시의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 개시에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 실시 예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.Hereinafter, various embodiments of the present disclosure will be described with reference to the accompanying drawings. However, this is not intended to limit the technology described in the present disclosure to specific embodiments, and it should be understood that various modifications, equivalents, and/or alternatives of the embodiments of the present disclosure are included. . In connection with the description of the drawings, like reference numerals may be used for like components.
본 개시에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.In the present disclosure, expressions such as “have,” “may have,” “include,” or “may include” indicate the presence of a corresponding characteristic (eg, a numerical value, function, operation, or component such as a part). and does not exclude the presence of additional features.
본 개시에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.In this disclosure, expressions such as “A or B,” “at least one of A and/and B,” or “one or more of A or/and B” may include all possible combinations of the items listed together. . For example, "A or B," "at least one of A and B," or "at least one of A or B" means (1) includes at least one A, (2) includes at least one B; Or (3) it may refer to all cases including both at least one A and at least one B.
본 개시에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. As used in the present disclosure, expressions such as "first," "second," "first," or "second," may modify various elements, regardless of order and/or importance, and refer to one element. It is used only to distinguish it from other components, and does not limit the components.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.A component (eg, a first component) is "coupled with/to (operatively or communicatively)" to another component (eg, a second component) When referring to "connected to", it will be understood that the certain element may be directly connected to the other element or may be connected through another element (eg, a third element). On the other hand, when it is said that a component (eg, a first component) is "directly connected" or "directly connected" to another component (eg, a second component), the component and the It may be understood that other components (eg, a third component) do not exist between other components.
본 개시에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.The expression "configured to (or configured to)" as used in this disclosure depends on the context, for example, "suitable for," "having the capacity to" ," "designed to," "adapted to," "made to," or "capable of." The term “configured (or configured to)” may not necessarily mean only “specifically designed to” in hardware. Instead, in some circumstances, the expression “a device configured to” may mean that the device is “capable of” with other devices or parts. For example, the phrase “a processor configured (or configured to perform) A, B, and C” refers to a dedicated processor (eg, an embedded processor) for performing the operations, or by executing one or more software programs stored in a memory device. , may mean a generic-purpose processor (eg, a CPU or an application processor) capable of performing corresponding operations.
본 개시에서 "모듈" 혹은 "부"는 적어도 하나의 기능이나 동작을 수행하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 "모듈" 혹은 복수의 "부"는 특정한 하드웨어로 구현될 필요가 있는 "모듈" 혹은 "부"를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서(미도시)로 구현될 수 있다.In the present disclosure, a “module” or “unit” performs at least one function or operation, and may be implemented as hardware or software, or a combination of hardware and software. In addition, a plurality of “modules” or a plurality of “units” are integrated into at least one module and implemented with at least one processor (not shown) except for “modules” or “units” that need to be implemented with specific hardware. can be
이하, 첨부된 도면을 참조하여 본 개시를 상세히 설명한다.Hereinafter, the present disclosure will be described in detail with reference to the accompanying drawings.
도 1은 본 개시의 일 실시 예에 따른 전자 장치를 설명하기 위한 블록도이다.1 is a block diagram illustrating an electronic device according to an embodiment of the present disclosure.
도 1을 참조하면, 본 개시의 일 실시 예에 따른 전자 장치(100)는 메모리(110) 및 프로세서(120)를 포함한다.Referring to FIG. 1 , an
본 개시의 일 실시 예에 따른 전자 장치(100)는 신경망 모델(또는, 인공 지능 모델)을 이용하여 입력 데이터에 대한 출력 데이터를 획득하는 장치로써, 예를 들어, 전자 장치(100)는 데스크탑 PC, 노트북, 스마트 폰, 태블릿 PC, 서버 등일 수 있다. 또는, 전자 장치(100)는 클라우딩 컴퓨팅 환경이 구축된 시스템 자체일 수도 있다. 다만, 이에 한정되는 것은 아니며, 전자 장치(100)는 신경망 모델의 연산이 가능한 장치라면 어떠한 장치라도 무방하다.The
메모리(110)는 하드 디스크, 비휘발성 메모리 또는 휘발성 메모리 등으로 구현될 수 있다. 여기에서, 비휘발성 메모리는 OTPROM(one time programmable ROM), PROM(programmable ROM), EPROM(erasable and programmable ROM), EEPROM(electrically erasable and programmable ROM), mask ROM, flash ROM 등이 될 수 있고, 휘발성 메모리는 DRAM(dynamic RAM), SRAM(static RAM), 또는 SDRAM(synchronous dynamic RAM) 등이 될 수 있다. The
한편, 도 1에서는 메모리(110)를 프로세서(120)와 별개의 구성으로 도시하였으나, 메모리(110)는 프로세서(120)에 포함될 수도 있다. 즉, 메모리(110)는 오프 칩 메모리로 구현될 수 있음은 물론, 온 칩 메모리로 구현될 수도 있다.Meanwhile, although the
또한, 도 1에는 하나의 메모리(110)를 도시하였으나, 실시 예에 따라 메모리(110)는 복수 개로 구현될 수도 있다.Also, although one
메모리(110)는 신경망 모델의 가중치 데이터를 저장할 수 있다. 여기에서, 가중치 데이터는 신경망 모델의 연산에 이용되는 데이터로써, 메모리(110)는 신경망 모델을 구성하는 복수의 레이어에 대응되는 복수의 가중치 데이터를 저장할 수 있다. The
특히, 메모리(110)는 양자화 된 가중치 값들을 포함하는 가중치 데이터를 저장할 수 있다. 여기에서, 양자화된 가중치 값은 -1 또는 1이 될 수 있고, 가중치 데이터는 -1 또는 1로 구성된 m×n의 매트릭스로 표현 될 수 있다. 또한, 가중치 값 -1은 0으로 치환되어 메모리(110)에 저장될 수도 있다. 즉, 메모리(110)는 0 또는 1로 구성된 가중치 데이터를 저장할 수도 있다. 실시 예에 따라, -1 또는 1의 가중치 값들을 포함하는 가중치 데이터는 제1 메모리(가령, 하드 디스크)에 저장되고, 0 또는 1의 가중치 값들을 포함하는 가중치 데이터는 제2 메모리(가령, SDRAM)에 저장될 수 있다. 여기에서, 0 또는 1의 가중치 값들은 후술할 신경망 모델의 연산에 이용될 수 있다.In particular, the
한편, 신경망 모델의 양자화는 전자 장치(100)의 프로세서(120)에 수행될 수 있음은 물론, 외부 장치(가령, 서버)에 의해 수행될 수도 있다. 외부 장치에 의해 신경망 모델의 양자화가 수행되는 경우, 프로세서(120)는 외부 장치로부터 양자화 된 가중치 값을 포함하는 가중치 데이터를 수신하고, 이를 메모리(110)에 저장할 수 있다. 신경망 모델의 양자화 방법은 후술한다.Meanwhile, the quantization of the neural network model may be performed by the
이와 같은, 신경망 모델은 뉴럴 네트워크(Neural Network)를 기반으로 하는 모델이 될 수 있다. 일 예로, 신경망 모델은 RNN(Recurrent Neural Network)에 기반한 모델일 수 있다. 여기에서, RNN은 순환 신경망을 의미하며, 시계열 데이터와 같이 시간의 흐름에 따라 변화하는 데이터를 학습하기 위한 딥 러닝 모델의 일종이다.Such a neural network model may be a model based on a neural network. As an example, the neural network model may be a model based on a recurrent neural network (RNN). Here, RNN means a recurrent neural network, and is a kind of deep learning model for learning data that changes over time, such as time series data.
다만, 이에 한정되는 것은 아니며, 신경망 모델은 CNN(Convolutional Neural Network), DNN (Deep Neural Network), RBM (Restricted Boltzmann Machine), DBN (Deep Belief Network) 또는 BRDNN(Bidirectional Recurrent Deep Neural Network) 등과 같은 다양한 네트워크에 기반한 모델이 될 수 있다. 또는, 메모리(110)는 인공 지능 알고리즘을 통해 학습된 모델이 아닌 룰(rule) 기반으로 생성된 모델을 저장할 수도 있으며, 메모리(110)에 저장된 모델에는 특별한 제한이 없다. However, the present invention is not limited thereto, and the neural network model includes a variety of models such as Convolutional Neural Network (CNN), Deep Neural Network (DNN), Restricted Boltzmann Machine (RBM), Deep Belief Network (DBN), or Bidirectional Recurrent Deep Neural Network (BRDNN). It can be a model based on the network. Alternatively, the
프로세서(120)는 전자 장치(100)의 동작을 전반적으로 제어한다. 이를 위해, 프로세서(120)는 하나 또는 복수의 프로세서로 구성될 수 있다. 여기에서, 하나 또는 복수의 프로세서는 중앙처리장치(central processing unit(CPU)) 등과 같은 범용 프로세서가 될 수 있음은 물론, 그래픽 처리 장치(graphic processing unit, GPU) 등과 같은 그래픽 전용 프로세서 또는 신경망 처리 장치(neural network processing unit, NPU)와 같은 인공 지능 전용 프로세서가 될 수 있다. 또한, 프로세서(120)는 SoC(System on Chip)(일 예로, 온 디바이스 인공 지능 칩(On-device AI Chip)), LSI(large scale integration) 또는 FPGA(Field Programmable gate array)가 될 수도 있다.The
프로세서(120)는 신경망 모델의 가중치 값을 양자화 할 수 있다. 구제적으로, 프로세서(120)는 k 비트로 가중치 값을 양자화 하는 경우, 하기 수학식 1을 만족하는 다양한 양자화 알고리즘을 통해 신경망 모델의 가중치 값을 양자화 할 수 있다. The
[수학식 1] [Equation 1]
(여기에서, w는 양자화 전의 가중치 값이고, a는 스케일링 인자(scaling factor)이며, b는 양자화 된 가중치 값으로써 -1 또는 +1이 될 수 있다.)(Here, w is a weight value before quantization, a is a scaling factor, and b is a quantized weight value, which may be -1 or +1.)
일 예로, 프로세서(120)는 그리디 알고리즘을 통해 가중치 값을 양자화 할 수 있다. 이 경우, 프로세서(120)는 상술한 수학식 1에서 k=1인 경우의 스케일링 인자 및 양자화 된 가중치 값을 하기 수학식 2에 기초하여 획득할 수 있다. For example, the
[수학식 2][Equation 2]
(여기에서, w는 양자화 전의 가중치 값이고, a*는 k=1인 경우의 스케일링 인자이며, b*는 k=1인 경우의 양자화 된 가중치 값으로써 -1 또는 +1이고, n은 1이상의 정수가 될 수 있다.)(where w is the weight value before quantization, a* is a scaling factor in the case of k=1, b* is the quantized weight value in the case of k=1, which is -1 or +1, and n is 1 or more It can be an integer.)
그리고, 프로세서(120)는 k= i (1 < i ≤ k)인 경우의 스케일링 인자 및 양자화 된 가중치 값을, 하기 수학식 3을 반복적으로 연산함으로써 획득할 수 있다. 즉, 프로세서(120)는 양자화 전의 가중치 값과 k=1인 경우에 양자화된 가중치 값의 차이인 r 을 이용하여, k= i (1 < i ≤ k)인 경우의 스케일링 인자 및 양자화 된 가중치 값을 획득할 수 있다.In addition, the
[수학식 3][Equation 3]
(여기에서, w는 양자화 전의 가중치 값이고, a는 스케일링 인자이며, b는 양자화 된 가중치 값으로써 -1 또는 +1이고, r은 양자화 전의 가중치 값과 k=1인 경우에 양자화된 가중치 값의 차이가 될 수 있다.)(Where w is the weight value before quantization, a is the scaling factor, b is the quantized weight value, which is -1 or +1, and r is the weight value before quantization and the quantized weight value when k=1. It can make a difference.)
이에 따라, 전자 장치(100)는 스케일링 인자 및, -1 또는 1로 양자화된 가중치 값들을 포함하는 가중치 데이터를 메모리(110)에 저장할 수 있다. 한편, 이상에서는 그리디 알고리즘을 통해 양자화하는 실시 예를 설명하였으나, 가중치 값을 양자화하는 방법에 특별한 제한은 없다. 예를 들어, 양자화는 유니터리 양자화, 적응적 양자화, 균일 양자화, 또는 관리된 반복 양자화(supervised iterative quantization) 등의 다양한 알고리즘을 통해 수행될 수 있다.Accordingly, the
프로세서(120)는 신경망 모델의 양자화 된 가중치 값들에 기초하여, 입력 데이터에 대한 출력 데이터를 획득할 수 있다. 여기에서, 입력 데이터는 텍스트, 이미지 또는 사용자 음성 등이 될 수 있다. 일 예로, 텍스트는 전자 장치(100)의 키보드 또는 터치패드 등과 같은 입력부(미도시)를 통해 입력된 텍스트가 될 수 있고, 이미지는 전자 장치(100)의 카메라를 통해 촬영된 이미지가 될 수 있다. 또한, 사용자 음성은 전자 장치(100)의 마이크에 입력된 사용자 음성이 될 수 있다.The
한편, 출력 데이터는 입력 데이터 및/또는 신경망 모델의 종류에 따라 상이할 수 있다. 즉, 출력 데이터는 어떠한 입력 데이터가 어떠한 신경망 모델에 입력되는지에 따라 상이할 수 있다. 예를 들어, 본 개시의 신경망 모델이 언어 번역을 위한 모델인 경우, 프로세서(120)는 제1 언어로 표현된 입력 데이터에 대해 제2 언어로 표현된 출력 데이터를 획득할 수 있다. 또는, 본 개시의 신경망 모델이 이미지 분석을 위한 모델인 경우, 프로세서(120)는 이미지를 신경망 모델의 입력 데이터로 입력하고, 해당 이미지에서 검출된 오브젝트에 관한 정보를 출력 데이터로 획득할 수 있다. 또한, 본 개시의 신경망 모델이 음성 인식을 위한 모델인 경우, 프로세서(120)는 사용자 음성을 입력 데이터로, 사용자 음성에 대응되는 텍스트를 출력 데이터로 획득할 수도 있다. 한편, 상술한 출력 데이터는 일 실시 예로서, 본 개시의 출력 데이터의 종류가 이에 제한되는 것은 아니라 할 것이다.Meanwhile, the output data may be different according to the type of the input data and/or the neural network model. That is, the output data may be different depending on which input data is input to which neural network model. For example, when the neural network model of the present disclosure is a model for language translation, the
이를 위해, 프로세서(120)는 입력 데이터가 입력되면, 입력 데이터를 복수의 입력 값들을 포함하는 매트릭스(또는, 벡터나 텐서)로 표현할 수 있다. 여기에서, 입력 데이터를 매트릭스(또는, 벡터나 텐서)로 표현하는 방법은 입력 데이터의 종류, 유형에 따라 상이할 수 있다. 일 예로, 프로세서(120)는 입력 데이터로 텍스트(또는, 사용자 음성을 변환한 텍스트)가 입력되는 경우, 원 핫 인코딩(One hot Encoding)을 통해 텍스트를 벡터로 표현하거나, 워드 임베딩(Word Embedding)을 통해 텍스트를 벡터로 표현할 수 있다. 여기에서, 원 핫 인코딩은 특정 단어의 인덱스의 값만 1으로 표현하고 나머지 인덱스의 값은 0으로 표현하는 방식이고, 워드 임베딩은 사용자에 의해 설정된 벡터의 차원(가령, 128차원)으로 단어를 실수로 표현하는 방식이다. 워드 임베딩 방법으로는 일 예로, Word2Vec, FastText, Glove 등이 이용될 수 있다. 한편, 프로세서(120)는 입력 데이터로 이미지가 입력되는 경우이면, 이미지의 각 픽셀을 매트릭스로 표현할 수 있다. 일 예로, 프로세서(120)는 이미지의 각 픽셀을 RGB 컬러별로 0에서 255의 값으로 표현하거나, 0에서 255로 표현된 값을 기설정된 값(가령, 255)로 나눈 값으로 이미지를 매트릭스로 표현할 수 있다. To this end, when input data is input, the
프로세서(120)는 양자화 된 가중치 값들과 입력 데이터의 입력 값에 기초하여, 입력 데이터에 대한 적어도 하나의 중간 데이터를 획득하고, 적어도 하나의 중간 데이터에 대한 출력 데이터를 획득할 수 있다. The
여기에서, 본 개시는 종래의 전자 장치가 양자화 된 복수의 가중치 값들 및 복수의 입력 값들에 대해 matmul 연산을 수행하여 입력 데이터에 대한 출력 데이터를 획득하는 것과 달리, 룩업 테이블을 이용하여 입력 데이터에 대한 출력 데이터를 획득할 수 있다. Here, in the present disclosure, unlike the conventional electronic device in which a matmul operation is performed on a plurality of quantized weight values and a plurality of input values to obtain output data on the input data, a lookup table is used for the input data. Output data can be obtained.
이는, 다수의 matmul 연산시 발생하는 레이턴시(latency) 문제 및 메모리 과부하 현상을 방지하기 위함으로써, 먼저 도 2a 및 도 2b를 참조하여 본 개시의 룩업 테이블에 대해 상세히 설명한다.This is to prevent a latency problem and memory overload phenomenon occurring during multiple matmul operations. First, a lookup table of the present disclosure will be described in detail with reference to FIGS. 2A and 2B .
도 2a 및 도 2b는 본 개시의 일 실시 예에 따른 룩업 테이블을 설명하기 위한 도면이다. 2A and 2B are diagrams for explaining a lookup table according to an embodiment of the present disclosure.
전술한 바와 같이, 프로세서(120)는 복수의 입력 값들을 포함하는 매트릭스(또는, 벡터나 텐서) 형태의 입력 데이터를 획득할 수 있다. 일 예로, 프로세서(120)는 도 2a에 도시된 바와 같이 복수의 입력 값들을 포함하는 4×3의 매트릭스를 획득할 수 있다. 이하, 복수의 입력 값들을 포함하는 매트릭스를 입력 매트릭스(또는, 입력 데이터에 대응되는 매트릭스)라 한다.As described above, the
프로세서(120)는 입력 데이터의 입력 값들 및 이진 데이터에 기초하여 룩업 테이블을 생성할 수 있다. 여기에서, 이진 데이터는 0 또는 1의 값을 갖는 n 개의 비트 값들로 구성된 데이터가 될 수 있다. 그리고, 이진 데이터의 개수는 2^n 개가 될 수 있다. 일 예로, 2 비트의 이진 데이터는 0 또는 1의 값을 갖는 2개의 비트 값들로 구성된 데이터로써, 00, 01, 10, 11 중 하나가 될 수 있다. 다른 예로, 4 비트의 이진 데이터는 0 또는 1의 값을 갖는 4개의 비트 값들로 구성된 데이터로써, 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111 중 하나가 될 수 있다. The
구체적으로, 프로세서(120)는 입력 매트릭스의 각 컬럼에서 n 개의 입력 값들을 획득하고, 이진 데이터의 비트 값들 및 획득한 n 개의 입력 값들에 기초하여 연산 데이터를 획득할 수 있다. 여기에서, 이진 데이터의 비트 값은 상술한 바와 같이 0 또는 1이 될 수 있고, 프로세서(120)는 이진 데이터의 비트 값이 0인 경우는 입력 값에 -1을 연산하고, 이진 데이터의 비트 값이 1인 경우는 입력 값에 1을 연산할 수 있다. 그리고, 프로세서(120)는 이진 데이터 별로 획득한 연산 데이터를 매칭함으로써 룩업 테이블을 생성할 수 있다.Specifically, the
일 예로, 도 2를 참조하면, n = 2인 경우, 프로세서(120)는 입력 매트릭스의 제1 컬럼에서 제1 및 제2 로우의 입력 값들 0.03, -0.17을 획득할 수 있다. 그리고, 프로세서(120)는 -(0.03)-(-0.17)을 연산하여 연산 값 0.14를 획득하고, 연산 값 0.14를 이진 데이터 00에 매칭할 수 있다. 이와 유사하게, 프로세서(120)는 -(0.03)+(-0.17)을 연산하여 연산 값 -0.20을 획득하고, 연산 값 -0.20을 이진 데이터 01에 매칭할 수 있고, (0.03)-(-0.17)을 연산하여 연산 값 0.20을 획득하고, 연산 값 0.20을 이진 데이터 10에 매칭할 수 있으며, (0.03)+(-0.17)을 연산하여 연산 값 -0.14를 획득하고, 연산 값 -0.14를 이진 데이터 11에 매칭할 수 있다. 그리고, 프로세서(120)는 제1 컬럼에서 제3 및 제4 로우의 입력 값들 0.20, -0.17을 획득할 수 있다. 그리고, 프로세서(120)는 -(0.20)-(0.17)을 연산하여 연산 값 -0.37을 획득하고, 연산 값 -0.37를 이진 데이터 00에 매칭할 수 있다. 이와 유사하게, 프로세서(120)는 -(0.20)+(0.17)을 연산하여 연산 값 -0.03을 획득하고, 연산 값 -0.03을 이진 데이터 01에 매칭할 수 있고, (0.20)-(0.17)을 연산하여 연산 값 0.03을 획득하고, 연산 값 0.03을 이진 데이터 10에 매칭할 수 있으며, (0.20)+(0.17)을 연산하여 연산 값 0.37을 획득하고, 연산 값 0.37을 이진 데이터 11에 매칭할 수 있다. 이와 유사한 방식으로, 프로세서(120)는 입력 매트릭스의 제2 컬럼의 입력 값들 및 제3 컬럼의 입력 값들에 대한 연산 값들을 획득할 수 있고, 이진 데이터에 연산 값들을 매칭할 수 있다. 한편, 상술한 n = 2인 경우는 일 실시 예로써, n은 사용자 설정에 따라 변경될 수 있다. For example, referring to FIG. 2 , when n = 2, the
이에 따라, 프로세서(120)는 입력 매트릭스의 컬럼 별로 적어도 하나의 룩업 테이블을 생성할 수 있다. 상술한 바와 같이, 입력 매트릭스가 4×3의 매트릭스이고, n = 2인 경우이면, 프로세서(120)는 도 2b와 같이 입력 매트릭스의 컬럼 별로 두 개의 룩업 테이블, 즉 총 6개의 룩업 테이블을 생성할 수 있다. 만약, n = 4인 경우이면, 프로세서(120)는 입력 매트릭스의 컬럼 별로 하나의 룩업 테이블, 즉 총 3개의 룩업 테이블을 생성할 수 있을 것이다.Accordingly, the
도 3a 내지 도 3e는 본 개시의 일 실시 예에 따른 룩업 테이블을 이용한 신경망 모델의 연산을 설명하기 위한 도면이다.3A to 3E are diagrams for explaining the operation of a neural network model using a lookup table according to an embodiment of the present disclosure.
전술한 바와 같이, 프로세서(120)는 양자화 된 가중치 값들 및 입력 데이터의 입력 값들에 기초하여 출력 데이터를 획득할 수 있다. 구체적으로, 프로세서(120)는 가중치 데이터 W (이는, 스케일링 인자 A 및 양자화 된 가중치 값 B를 포함할 수 있다.) 및 입력 데이터 X의 연산에 기초하여, 입력 데이터 X에 대한 출력 데이터를 획득할 수 있다. 일 예로, 가중치 데이터의 가중치 값들이 3비트로 양자화 된 경우이면, 프로세서(120)는 하기와 같은 수학식 4에 기초하여 입력 데이터 X에 대한 출력 데이터를 획득할 수 있다.As described above, the
[수학식 4][Equation 4]
수학식 4를 매트릭스 형태로 표현하면 하기와 같다.
일 예로, k=1인 경우의 스케일링 인자 Ao 및 양자화 된 가중치 Bo, 그리고 입력 데이터 X는 도 3a와 같은 값들을 가질 수 있다. 여기에서, 종래의 전자 장치가 B*X의 연산 값을 matmul 연산을 통해 획득하는 것과 달리, 본 개시는 룩업 테이블의 참조를 통해 B*X의 연산 값을 획득할 수 있다. 이하, 설명의 편의를 위해 Bo*X의 연산 값을 획득하는 방법에 대해 설명하나, 하기의 기술적 사상은 B1*X, B2*X 등과 같은 Bn*X의 연산 값을 획득하는 경우에도 적용될 수 있다고 볼 것이다.For example, when k=1, the scaling factor Ao, the quantized weight Bo, and the input data X may have values as shown in FIG. 3A . Here, unlike the conventional electronic device that obtains the calculated value of B*X through the matmul operation, the present disclosure may obtain the calculated value of B*X through reference to a lookup table. Hereinafter, for convenience of explanation, a method of obtaining the operation value of Bo*X will be described, but the following technical idea can be applied even when obtaining an operation value of Bn*X such as B1*X, B2*X, etc. will see
도 3b를 참조하면, Bo*X의 연산 값들을 포함하는 출력 매트릭스는 y1 내지 y109의 출력 값들을 가질 수 있다. 여기에서, 프로세서(120)는 출력 값 획득을 위해, 입력 매트릭스의 각 컬럼 별로 생성한 복수의 룩업 테이블 중에서, 출력 매트릭스의 각 컬럼에 대응되는 룩업 테이블을 판단할 수 있다. 구체적으로, 프로세서(120)는 출력 매트릭스의 컬럼과 동일한 컬럼의 입력 매트릭스에 기초하여 생성된 룩업 테이블을, 출력 매트릭스의 출력 값 획득을 위한 룩업 테이블로 판단할 수 있다. 일 예로, 도 3b를 참조하면, 프로세서(120)는 복수의 룩업 테이블 중에서 입력 매트릭스의 제1 컬럼의 입력 값들에 기초하여 생성된 제1 룩업 테이블(311) 및 제2 룩업 테이블(312)을, 출력 매트릭스의 제1 컬럼의 출력 값들을 획득하기 위한 룩업 테이블로 판단할 수 있다.Referring to FIG. 3B , the output matrix including the operation values of Bo*X may have output values of y1 to y109. Here, in order to obtain an output value, the
그리고, 프로세서(120)는 0 또는 1의 가중치 값을 포함하는 가중치 매트릭스의 각 로우에서 n 개의 입력 값들에 대응되는 n 개의 가중치 값을 식별할 수 있다. 즉, 입력 매트릭스의 각 컬럼에서 n 개의 입력 값들을 획득하여 룩업 테이블을 생성한 경우이면, 프로세서(120)는 가중치 매트릭스의 각 로우에서 n 개의 입력 값들에 대응되는 n 개의 가중치 값을 식별할 수 있다. 일 예로, 상술한 바와 같이 n=2인 경우, 프로세서(120)는 가중치 값들을 포함하는 매트릭스(이하, 가중치 매트릭스 또는 가중치 데이터에 대응되는 매트릭스라 한다.)에서, 각 로우 별로 2개의 입력 값들에 대응되는 2개의 가중치 값들을 식별할 수 있다. 즉, 도 3c에서 프로세서(120)는 가중치 매트릭스의 제1 로우에서, 1과 0 및, 0과 1을 식별하고, 제2 로우에서 0과 1 및, 1과 0을 식별하며, 이와 유사하게 나머지 로우에서 2개의 가중치 값들을 식별할 수 있다.In addition, the
그리고, 프로세서(120)는 이진 데이터 중에서 식별된 가중치 값들에 대응되는 이진 데이터를 식별할 수 있다. 여기에서, 식별된 이진 데이터는 가중치 값과 동일한 비트 값을 포함하는 데이터로써, 예를 들어, 도 3c에 도시된 바와 같이, 식별된 가중치 값들이 1과 0이면, 가중치 값들에 대응되는 이진 데이터는 10이 될 수 있고, 식별된 가중치 값들이 0과 1이면, 가중치 값들에 대응되는 이진 데이터는 10이 될 수 있다.Then, the
그리고, 프로세서(120)는 룩업 테이블로부터 식별된 이진 데이터에 대응되는 연산 값을 획득할 수 있다.Then, the
이를 위해, 프로세서(120)는 복수의 룩업 테이블(가령, 상술한 제1 및 제2 룩업 테이블(311, 312)) 중에서, 식별된 가중치 값들에 대응되는 연산 값들을 포함하는 룩업 테이블을 판단할 수 있다. 구체적으로, 프로세서(120)는 식별된 가중치 값들이 가중치 매트릭스의 k 컬럼에 포함된 값이면, 복수의 룩업 테이블 중에서, 입력 매트릭스의 k 로우의 입력 값들에 기초하여 생성된 룩업 테이블을 식별된 가중치 값들에 대응되는 연산 값들을 포함하는 룩업 테이블로 판단할 수 있다. 일 예로, 도 3c를 참조하면, 프로세서(120)는 식별된 가중치 값들이 가중치 매트릭스의 제1 및 제2 컬럼에 포함된 값이면, 제1 및 제2 룩업 테이블(311, 312) 중에서, 입력 매트릭스의 제1 및 제2 로우의 입력 값들에 기초하여 생성된 제1 룩업 테이블(311)을 식별된 가중치 값들에 대응되는 연산 값들을 포함하는 룩업 테이블로 판단하고, 식별된 가중치 값들이 가중치 매트릭스의 제3 및 제4 컬럼에 포함된 값이면, 제1 및 제2 룩업 테이블(311, 312) 중에서, 입력 매트릭스의 제4 및 제4 로우의 입력 값들에 기초하여 생성된 제2 룩업 테이블(312)을 식별된 가중치 값들에 대응되는 연산 값들을 포함하는 룩업 테이블로 판단할 수 있다.To this end, the
그리고, 프로세서(120)는 제1 룩업 테이블(311)로부터 식별된 이진 데이터 10에 매칭된 연산 값 0.20을 획득하고, 제2 룩업 테이블(312)로부터 식별된 이진 데이터 01에 매칭된 연산 값 -0.37을 획득하며, 연산 값 0.20 및 0.37의 합산을 통해 출력 매트릭스의 y1 값을 획득할 수 있다. 마찬가지로, 프로세서(120)는 가중치 매트릭스의 제2 로우의 경우, 제1 룩업 테이블(311)로부터 식별된 이진 데이터 01에 매칭된 연산 값 -0.20을 획득하고, 제2 룩업 테이블(312)로부터 식별된 이진 데이터 10에 매칭된 연산 값 0.37을 획득하며, 연산 값 -0.20 및 0.37의 합산을 통해 출력 매트릭스의 y4 값을 획득할 수 있고, 가중치 매트릭스의 제n 로우의 경우에도 이와 유사한 방식을 통해 출력 값을 획득할 수 있다.Then, the
또한, 출력 매트릭스의 제2 컬럼의 출력 값들의 경우에는, 도 3d에 도시된 바와 같이, 제3 및 제4 룩업 테이블(313, 314)로부터 획득될 수 있고, 출력 매트릭스의 제3 컬럼의 출력 값들의 경우에는, 도 3e에 도시된 바와 같이, 제5 및 제6 룩업 테이블(315, 316)로부터 획득될 수 있다. 여기에서는, 상술한 기술적 사상이 적용될 수 있는 바 구체적인 설명은 생략하기로 한다. In addition, in the case of output values of the second column of the output matrix, as shown in FIG. 3D , it may be obtained from the third and fourth lookup tables 313 and 314 , and output values of the third column of the output matrix In this case, as shown in FIG. 3E , they may be obtained from the fifth and sixth lookup tables 315 and 316 . Here, since the above-described technical idea can be applied, a detailed description will be omitted.
이후, 프로세서(120)는 출력 매트릭스의 출력 값들이 획득되면, 출력 매트릭스 및 스케일링 인자의 연산을 수행하고, 이에 따라 상술한 수학식 4의 결과 값을 획득할 수 있다. 그리고, 프로세서(120)는 획득한 결과 값을 이용하여 최종 출력 데이터를 출력할 수 있다. 여기에서, 출력 데이터는 상술한 바와 같이, 신경망 모델이 언어 번역을 위한 모델이면 입력 데이터로 입력된 텍스트와는 상이한 언어의 텍스트가 될 수 있고, 신경망 모델이 이미지 분석을 위한 모델이면, 이미지에 포함된 오브젝트에 관한 정보를 포함하는 데이터가 될 수 있으나, 반드시 이에 한정되는 것은 아니다.Thereafter, when the output values of the output matrix are obtained, the
이와 같이 본 개시는 양자화 된 가중치 값들 및 입력 데이터의 입력 값들의 matmul 연산 없이, 룩업 테이블 통해 출력 값들을 획득하는 바, 방대한 연산량에 따른 레이턴시(latency) 문제 및 메모리 과부하 현상을 방지할 수 있다.As such, the present disclosure obtains output values through a lookup table without matmul operation of quantized weight values and input values of input data, thereby preventing latency problems and memory overload due to a huge amount of computation.
도 4a 내지 도 4f는 본 개시의 일 실시 예에 따른 룩업 테이블 생성에 이용되는 연산식을 설명하기 위한 도면이다.4A to 4F are diagrams for explaining an arithmetic expression used to generate a lookup table according to an embodiment of the present disclosure.
전술한 바와 같이, 프로세서(120)는 이진 데이터 및 n 개의 입력 값들에 기초한 복수의 연산식을 통해 연산 값들을 획득하고, 이진 데이터 별로 연산 값을 매칭함으로써 룩업 테이블을 생성할 수 있다.As described above, the
여기에서, 이진 데이터 및 n 개의 입력 값들에 기초한 복수의 연산식은 동일한 중간 연산식을 포함할 수 있다. 일 예로, n=8인 경우 8비트의 이진 데이터 및 8개의 입력 값들(x0 내지 x7)에 기초한 복수의 연산식은 도 4a와 같을 수 있다. 즉, n=8인 경우, 이진 데이터 00000000에 대응되는 연산 값 Ro를 획득하기 위한 연산식은 -x0-x1-x2-x3-x4-x5-x6-x7이고, 이진 데이터 00000001에 대응되는 연산 값 R1을 획득하기 위한 연산식은 -x0-x1-x2-x3-x4-x5-x6+x7이며, 이와 유사하게 R2 내지 R255 각각에 대응되는 복수의 연산 값들을 획득하기 위한 복수의 연산식이 있을 수 있다. 이 경우, 프로세서(120)는 복수의 연산식에 기초한 연산 값들을 획득함에 있어서, 복수의 연산식에 동일하게 포함된 중간 연산식의 결과 값을 이용할 수 있다.Here, a plurality of arithmetic expressions based on binary data and n input values may include the same intermediate arithmetic expression. For example, when n=8, a plurality of arithmetic expressions based on 8-bit binary data and 8 input values (x0 to x7) may be as shown in FIG. 4A . That is, when n=8, the formula for obtaining the operation value Ro corresponding to the binary data 00000000 is -x0-x1-x2-x3-x4-x5-x6-x7, and the operation value R1 corresponding to the binary data 00000001 An arithmetic expression for obtaining is -x0-x1-x2-x3-x4-x5-x6+x7, and similarly, there may be a plurality of arithmetic expressions for obtaining a plurality of operation values corresponding to each of R2 to R255. In this case, the
구체적으로, 도 4b를 참조하면, Ro를 획득하기 위한 연산식 -x0-x1-x2-x3-x4-x5-x6-x7 및 R1을 획득하기 위한 연산식 -x0-x1-x2-x3-x4-x5-x6-x7은 동일한 중간 연산식 -x0-x1-x2-x3-x4-x5-x6을 포함한다. 그리고, 도 4c를 참조하면, Ro를 획득하기 위한 연산식 -x0-x1-x2-x3-x4-x5-x6-x7 및 R2를 획득하기 위한 연산식 -x0-x1-x2-x3-x4-x5+x6-x7은 동일한 중간 연산식 -x0-x1-x2-x3-x4-x5-x7을 포함하고, R1을 획득하기 위한 연산식 -x0-x1-x2-x3-x4-x5-x6-x7 및 R3를 획득하기 위한 연산식 -x0-x1-x2-x3-x4-x5+x6+x7는 동일한 중간 연산식 x0-x1-x2-x3-x4-x5+x7을 포함할 수 있다. 또한, 도 4d 및 도 4e에 도시된 바와 같이, 연산 값들을 획득하기 위한 복수의 연산식에는 동일한 중간 연산식을 포함하는 복수의 연산식이 있을 수 있다. Specifically, referring to FIG. 4B , an equation for obtaining Ro -x0-x1-x2-x3-x4-x5-x6-x7 and an equation for obtaining R1 -x0-x1-x2-x3-x4 -x5-x6-x7 contains the same intermediate expression -x0-x1-x2-x3-x4-x5-x6. And, referring to FIG. 4C , an arithmetic expression -x0-x1-x2-x3-x4-x5-x6-x7 for obtaining Ro and an arithmetic expression -x0-x1-x2-x3-x4- for obtaining R2 x5+x6-x7 includes the same intermediate expression -x0-x1-x2-x3-x4-x5-x7, and the expression -x0-x1-x2-x3-x4-x5-x6- for obtaining R1 The arithmetic expressions -x0-x1-x2-x3-x4-x5+x6+x7 for obtaining x7 and R3 may include the same intermediate arithmetic expression x0-x1-x2-x3-x4-x5+x7. Also, as shown in FIGS. 4D and 4E , a plurality of arithmetic expressions for obtaining arithmetic values may include a plurality of arithmetic expressions including the same intermediate arithmetic expression.
이 경우, 프로세서(120)는 동일한 중간 연산식을 가지는 복수의 연산식 중 어느 하나의 연산식의 연산은 다른 하나의 연산식의 연산 값에 기초하여 수행할 수 있다. 즉, 상술한 실시 예와 같이, Ro를 획득하기 위한 연산식 -x0-x1-x2-x3-x4-x5-x6-x7 및 R1을 획득하기 위한 연산식 -x0-x1-x2-x3-x4-x5-x6-x7이 동일한 중간 연산식 -x0-x1-x2-x3-x4-x5-x6을 포함하는 경우, 프로세서(120)는 Ro는 연산식 -x0-x1-x2-x3-x4-x5-x6-x7을 통해 획득하고, R1은 R0의 연산 값에 2*x7을 더함으로써(즉, R1=R0+2x7) 획득할 수 있다. 이와 유사한 방법으로, 프로세서(120)는 R2 내지 R255의 값을 획득할 수 있고, 결론적으로 프로세서(120)는 도 4f에 도시된 복수의 연산식을 통해 연산 값들을 획득할 수 있다. 한편, 여기서는 n이 8인 경우를 실시 예로 설명하였으나, n이 다른 정수인 경우에도 상술한 기술적 사상은 그대로 적용될 수 있다고 볼 것이다.In this case, the
이와 같이, 동일한 중산 연산식을 포함하는 경우이면, 어느 하나의 연산식의 연산을 다른 하나의 연산식의 연산 값을 이용하여 수행함으로써, 본 개시는 룩업 테이블 생성을 위한 프로세서의 연산량을 대폭 줄일 수 있는 효과가 있다. As such, in the case of including the same arithmetic expression, the present disclosure can significantly reduce the amount of computation of the processor for generating the lookup table by performing the operation of one arithmetic expression using the operation value of the other arithmetic expression. there is an effect
도 5는 본 개시의 일 실시 예에 따른 신경망 모델의 연산 방법을 설명하기 위한 도면이다.5 is a diagram for explaining a method of calculating a neural network model according to an embodiment of the present disclosure.
전술한 바와 같이, 프로세서(120)는 룩업 테이블을 생성하고, 룩업 테이블에 기초하여 신경망 모델의 연산을 수행할 수 있다. 여기에서, 프로세서(120)는 입력 데이터의 모든 입력 값들에 대한 복수의 룩업 테이블을 생성하고, 복수의 룩업 테이블에 기초하여 신경망 모델의 연산을 수행할 수 있음은 물론, 입력 데이터의 일부 입력 값들에 대한 일부 룩업 테이블을 생성하고, 일부 룩업 테이블에 기초하여 신경망 모델의 일부 연산을 수행한 뒤, 입력 데이터의 나머지 입력 값들에 대한 일부 룩업 테이블을 생성하고, 일부 룩업 테이블에 기초하여 신경망 모델의 나머지 연산을 수행할 수도 있다.As described above, the
구체적으로, 프로세서(120)는 입력 매트릭스를 기설정된 로우를 기준으로 제1 입력 매트릭스 및 제2 입력 매트릭스로 분할하고, 가중치 매트릭스를 기설정된 컬럼을 기준으로 제3 가중치 매트릭스 및 제4 가중치 매트릭스로 분할할 수 있다. 여기에서, 기설정된 로우는 입력 매트릭스의 로우 수가 n 개이면 n/2 로우가 될 수 있고, 기설정된 컬럼은 가중치 매트릭스의 컬럼 수가 n 개이면 n/2 컬럼이 될 수 있으나, 반드시 이에 한정되는 것은 아니다.Specifically, the
그리고, 프로세서(120)는 제1 입력 매트릭스의 각 컬럼의 입력 값들에 기초하여 복수의 룩업 테이블을 생성하고, 복수의 룩업 테이블로부터 제3 가중치 매트릭스의 각 로우에 대응되는 연산 데이터를 획득한 뒤, 제2 입력 매트릭스의 각 컬럼의 입력 값들에 기초하여 복수의 룩업 테이블을 생성하고, 복수의 룩업 테이블로부터 제4 가중치 매트릭스의 각 로우에 대응되는 연산 데이터를 획득할 수 있다. 여기에서, 룩업 테이블의 생성 및 룩업 테이블에 기초한 연산 데이터의 획득 방법은 상술한 기술적 사상이 적용될 수 있는 바, 구체적인 생략은 생략하기로 한다.Then, the
일 예로, 도 5를 참조하면, 입력 매트릭스의 로우 수 및 가중치 매트릭스의 컬럼 수가 각각 512개인 경우, 프로세서(120)는 입력 매트릭스를 로우 256을 기준으로 입력 매트릭스 X1 및 입력 매트릭스 X2로 분할하고, 가중치 매트릭스를 컬럼 256을 기준으로 가중치 매트릭스 W1 및 가중치 매트릭스 W2로 분할할 수 있다. 그리고, 프로세서(120)는 입력 매트릭스 X1의 입력 값들에 기초하여 룩업 테이블을 생성하고, 룩업 테이블로부터 가중치 매트릭스 W1에 대응되는 연산 값들을 획득한 뒤, 입력 매트릭스 X2의 입력 값들에 기초하여 룩업 테이블을 생성하고, 룩업 테이블로부터 가중치 매트릭스 W2에 대응되는 연산 값들을 획득할 수 있다. 이와 같이 복수의 연산 값들을 분할된 매트릭스를 통해 일부씩 획득함으로써, 본 개시는 메모리 오버헤드 문제를 방지하고 메모리를 효율적으로 이용할 수 있다. 또한, 실시 예에 따라 본 개시의 프로세서(120)가 복수 개로 구현되는 경우이면, 입력 매트릭스 X1에 기초한 룩업 테이블로부터 가중치 매트릭스 W1에 대응되는 연산 값들 및 입력 매트릭스 X2에 기초한 룩업 테이블로부터 가중치 매트릭스 W2에 대응되는 연산 값들을 복수의 프로세서를 통해 병렬적으로 획득함으로써 연산에 소요되는 시간을 축소시킬 수 있다.For example, referring to FIG. 5 , when the number of rows of the input matrix and the number of columns of the weight matrix are 512, the
도 6은 본 개시의 일 실시 예에 따른 전자 장치를 설명하기 위한 상세 블록도이다.6 is a detailed block diagram illustrating an electronic device according to an embodiment of the present disclosure.
도 6을 참조하면, 본 개시의 일 실시 예에 따른 제1 메모리(110), 프로세서(120), 룩업 테이블 생성기(LUT Generator)(130), 제2 메모리(140) 및 멀티플라이어(multiplier)(150)를 포함할 수 있다.Referring to FIG. 6 , a
제1 메모리(110)는 입력 매트릭스, 신경망 모델의 연산을 위한 스케일링 인자 및 가중치 매트릭스를 저장할 수 있다. 여기에서, 입력 매트릭스는 전술한 바와 같이 복수의 입력 값들을 포함할 수 있고, 가중치 매트릭스는 0 또는 1로 양자화 된 가중치 값들을 포함할 수 있다. The
룩업 테이블 생성기(130)는 제1 메모리(110)로부터 입력 매트릭스를 로딩할 수 있다. 그리고, 룩업 테이블 생성기(130)는 이진 데이터 별로 입력 매트릭스의 입력 값들에 대한 연산 값들을 획득할 수 있다. 구체적으로, 룩업 테이블 생성기(130)는 n 비트의 이진 데이터의 룩업 테이블을 생성하는 경우, 입력 매트릭스의 각 컬럼에서 n 개의 입력 값들을 획득하고, 이진 데이터 및 n 개의 입력 값들에 기초하여 이진 데이터 별로 연산 값들을 획득할 수 있다. 그리고, 룩업 테이블 생성기(130)는 룩업 테이블 생성의 기초가 된 입력 매트릭스의 컬럼에 대한 정보 및 로우에 대한 정보를, 룩업 테이블에 매칭하여 저장할 수 있다. 여기에서, 컬럼에 대한 정보는 입력 매트릭스의 각 컬럼 별로 생성된 복수의 룩업 테이블 중에서, 출력 매트릭스의 각 컬럼에 대응되는 룩업 테이블을 판단할 때 이용될 수 있다. 그리고, 로우에 대한 정보는, 출력 매트릭스의 각 컬럼에 대응되는 복수의 룩업 테이블 중에서, 가중치 매트릭스의 각 컬럼에 대응되는 연산 값을 포함하는 룩업 테이블을 판단할 때 이용될 수 있다.The
한편, 실시 예에 따라 룩업 테이블 생성기(130)는 8 비트의 이진 데이터에 기초한 룩업 테이블을 생성할 수 있다. 구체적으로, 룩업 테이블 생성기(130)는 입력 매트릭스의 각 컬럼에서 8개의 입력 값들을 획득하고, 8비트의 이진 데이터 및 8개의 입력 값들에 기초하여 이진 데이터 별로 연산 데이터를 획득할 수 있다. 이는, CPU와 같은 프로세서(120)는 byte 단위로 데이터를 처리함을 고려한 것으로써, 이에 따라 본 개시는 bit 레벨의 데이터를 byte 단위의 데이터로 처리하기 위한 shift 연산 등을 별도로 수행하지 않음으로써 프로세서의 과부하를 방지할 수 있다.Meanwhile, according to an embodiment, the
제2 메모리(140)는 적어도 하나의 룩업 테이블을 저장할 수 있다. 여기에서 제2 메모리(140)는 룩업 테이블과 같은 데이터를 임시로 저장하는 스크래치 패드 메모리(Scratchpad memory, SPM)가 될 수 있으나 반드시 이에 한정되는 것은 아니다.The
프로세서(120)는 제1 메모리(110)에서 가중치 매트릭스를 로딩하고, 제2 메모리(140)에서 룩업 테이블을 로딩할 수 있다. 그리고, 프로세서(120)는 룩업 테이블로부터 가중치 매트릭스의 가중치 값들의 연산 값을 획득하고, 이를 누산기(accumulator)에 누적하며, 누산기에 누적된 연산 값들의 합산에 기초하여 출력 매트릭스의 출력 값(즉, 가중치 매트릭스 B * 입력 매트릭스 X)들을 획득할 수 있다. 그리고, 프로세서(120)는 출력 매트릭스의 출력 값들에 대한 정보를 제1 메모리(110)에 저장할 수 있다. 이후, 멀티플라이어(150)는 제1 메모리(110)에 저장된 출력 값들 및 스케일링 인자를 로딩하고, 출력 값들 및 스케일링 인자의 곱 연산을 수행할 수 있다. The
한편, 도 6에서는 제1 메모리(110) 및 제2 메모리(120)를 별개의 구성으로 도시하였으나, 제1 메모리(110) 및 제2 메모리(120)는 하나의 메모리가 될 수도 있다. 또한, 제1 메모리(110) 및 제2 메모리(120)는 프로세서(120)와 별개의 구성이 될 수 있으나, 프로세서(120) 내부에 포함될 수도 있다. 또한, 룩업 테이블 생성기(130)는 룩업 테이블 생성을 위한 별도의 연산기로 구현될 수 있음은 물론, 룩업 테이블 생성기의 기능은 프로세서(120)에 탑재될 수도 있다. 또한, 멀티플라이어(150)은 룩업 테이블로부터 획득한 연산 값에 스케일링 인자를 곱하는 별도의 연산기로 구현될 수 있음은 물론, 멀티플라이어(150)의 기능은 프로세서(120)에 탑재될 수도 있다.Meanwhile, although the
한편, 이상에서는 입력 데이터의 입력 값에 기초하여 룩업 테이블을 생성하는 실시 예를 설명하였다. 그러나, 본 개시의 일 실시 예에 따른 전자 장치(100)는 상술한 방식을 역으로 적용하여 가중치 데이터의 가중치 값에 기초하여 룩업 테이블을 생성할 수도 있다. 즉, 프로세서(120)는 가중치 값은 그대로 두고(즉, 실수 값으로 처리), 입력 데이터의 입력 값들을 양자화할 수 있다. 그리고, 프로세서(120)는 가중치 값들 및 n 비트의 이진 데이터에 기초하여 이진 데이터 별로 연산 값이 매칭된 룩업 테이블을 생성하고, 룩업 테이블로부터 입력 데이터에 대응되는 연산 데이터를 획득할 수 있다. 이와 같은 가중치 데이터에 기초한 룩업 테이블은 입력 데이터의 크기가 작고 가중치 데이터의 크기가 큰 언어 모델의 연산에 이용될 수 있을 것이다. 한편, 도 2 등에서 전술한 입력 데이터에 기초한 룩업 테이블은 입력 데이터의 크기가 크고 가중치 데이터의 크기가 작은 이미지 모델의 연산에 이용될 수 있을 것이다. Meanwhile, an embodiment of generating a lookup table based on an input value of input data has been described above. However, the
도 7은 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 도면이다.7 is a diagram for explaining a method of controlling an electronic device according to an embodiment of the present disclosure.
전자 장치(100)는 적어도 하나의 비트 값이 서로 다른 이진 데이터 및 입력 데이터에 기초하여 연산 데이터를 획득(S710)할 수 있다. 여기에서, 이진 데이터는 비트 값 0 또는 비트 값 1로 구성된 데이터이고, 입력 데이터는 복수의 입력 값들을 포함하는 데이터이며, 연산 데이터는 복수의 연산 값들을 포함하는 데이터가 될 수 있다. 그리고, 입력 데이터 및 연산 데이터 각각은 매트릭스로 표현될 수 있다. 구체적으로, 전자 장치(100)는 입력 매트릭스의 각 컬럼에서 n 개의 입력 값들을 획득하고, 이진 데이터 및 n 개의 입력 값들에 기초하여 이진 데이터 별로 연산 데이터를 획득할 수 있다.The
그리고, 전자 장치(100)는 이진 데이터에 연산 데이터가 매칭된 룩업 테이블을 생성(S720)하고, 룩업 테이블로부터 가중치 데이터에 대응되는 연산 데이터를 획득(S730)할 수 있다. 여기에서, 가중치 데이터는, 매트릭스의 복수의 가중치 값들을 포함할 수 있다. 구체적으로, 전자 장치(100)는 가중치 매트릭스의 각 로우에서 n 개의 입력 값들에 대응되는 n 개의 가중치 값들을 식별하고, 이진 데이터 중 식별된 n 개의 가중치 값들에 대응되는 이진 데이터를 식별할 수 있다. 그리고, 전자 장치(100)는 룩업 테이블로부터 식별된 이진 데이터에 대응되는 연산 데이터를 획득하고, 획득된 연산 데이터에 기초하여 신경망 모델의 연산을 수행(S740)할 수 있다.Then, the
한편, 상술한 본 개시의 다양한 실시 예들에 따른 방법들은, 기존 전자 장치에 설치 가능한 소프트웨어 또는 어플리케이션 형태로 구현될 수 있다. Meanwhile, the above-described methods according to various embodiments of the present disclosure may be implemented in the form of software or applications that can be installed in an existing electronic device.
또한, 본 개시에 따른 전자 장치의 제어 방법을 순차적으로 수행하는 프로그램이 저장된 비일시적 판독 가능 매체(non-transitory computer readable medium)가 제공될 수 있다. In addition, a non-transitory computer readable medium in which a program for sequentially performing a control method of an electronic device according to the present disclosure is stored may be provided.
비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 어플리케이션 또는 프로그램들은 CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다.The non-transitory readable medium refers to a medium that stores data semi-permanently, rather than a medium that stores data for a short moment, such as a register, cache, memory, etc., and can be read by a device. Specifically, the above-described various applications or programs may be provided by being stored in a non-transitory readable medium such as a CD, DVD, hard disk, Blu-ray disk, USB, memory card, ROM, and the like.
또한, 이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.In addition, although preferred embodiments of the present invention have been illustrated and described above, the present invention is not limited to the specific embodiments described above, and the technical field to which the present invention pertains without departing from the gist of the present invention as claimed in the claims In addition, various modifications are possible by those of ordinary skill in the art, and these modifications should not be individually understood from the technical spirit or perspective of the present invention.
100: 전자 장치
110: 메모리
120: 프로세서100: electronic device
110: memory
120: processor
Claims (14)
상기 신경망 모델의 양자화된 가중치 값들을 포함하는 가중치 데이터가 저장된 메모리; 및
적어도 하나의 비트 값이 서로 다른 이진 데이터 및 입력 데이터에 기초하여 연산 데이터를 획득하고, 상기 이진 데이터에 상기 연산 데이터가 매칭된 룩업 테이블을 생성하며, 상기 룩업 테이블로부터 상기 가중치 데이터에 대응되는 연산 데이터를 획득하고, 상기 획득된 연산 데이터에 기초하여 상기 신경망 모델의 연산을 수행하는 프로세서;를 포함하는 전자 장치.In an electronic device for performing computation of a neural network model,
a memory storing weight data including quantized weight values of the neural network model; and
Obtaining operation data based on binary data and input data having at least one bit value different from each other, generating a lookup table in which the operation data is matched to the binary data, and operation data corresponding to the weight data from the lookup table and a processor configured to perform an operation of the neural network model based on the obtained operation data.
상기 이진 데이터 각각은, n 개의 비트 값들로 구성되고,
상기 입력 데이터는, 매트릭스의 복수의 입력 값들을 포함하고,
상기 프로세서는,
상기 매트릭스의 각 컬럼에서 n 개의 입력 값들을 획득하고,
상기 이진 데이터 및 상기 n 개의 입력 값들에 기초하여 상기 이진 데이터 별로 상기 연산 데이터를 획득하는, 전자 장치.According to claim 1,
Each of the binary data consists of n bit values,
The input data includes a plurality of input values of a matrix,
The processor is
obtain n input values in each column of the matrix,
and acquiring the operation data for each binary data based on the binary data and the n input values.
상기 가중치 데이터는, 매트릭스의 복수의 가중치 값들을 포함하고,
상기 프로세서는,
상기 매트릭스의 각 로우에서 상기 n 개의 입력 값들에 대응되는 n 개의 가중치 값들을 식별하고, 상기 이진 데이터 중 상기 식별된 n 개의 가중치 값들에 대응되는 이진 데이터를 식별하며, 상기 룩업 테이블로부터 상기 식별된 이진 데이터에 대응되는 연산 데이터를 획득하고, 상기 획득된 연산 데이터에 기초하여 상기 신경망 모델의 연산을 수행하는, 전자 장치.3. The method of claim 2,
The weight data includes a plurality of weight values of a matrix,
The processor is
identify n weight values corresponding to the n input values in each row of the matrix, identify binary data corresponding to the identified n weight values among the binary data, and identify the identified binary data from the lookup table Obtaining operation data corresponding to the data, and performing operation of the neural network model based on the obtained operation data.
상기 프로세서는,
상기 매트릭스의 각 컬럼의 입력 값들에 기초하여 생성된 복수의 룩업 테이블 중에서, 상기 입력 데이터에 대한 출력 매트릭스의 각 컬럼에 대응되는 룩업 테이블을 각각 판단하고, 상기 각각의 룩업 테이블로부터 상기 출력 매트릭스의 각 컬럼의 출력 값들을 획득하는, 전자 장치.4. The method of claim 3,
The processor is
From among a plurality of lookup tables generated based on input values of each column of the matrix, a lookup table corresponding to each column of an output matrix for the input data is determined, respectively, and each of the output matrices from the respective lookup tables is determined. An electronic device for obtaining output values of a column.
상기 프로세서는,
상기 복수의 입력 값들을 포함하는 매트릭스를 기설정된 로우를 기준으로 제1 매트릭스 및 제2 매트릭스로 분할하고, 상기 복수의 가중치 값들을 포함하는 매트릭스를 기설정된 컬럼을 기준으로 제3 매트릭스 및 제4 매트릭스로 분할하며,
상기 제1 매트릭스의 각 컬럼의 입력 값들에 기초하여 복수의 룩업 테이블을 생성하고, 상기 복수의 룩업 테이블로부터 상기 제3 매트릭스의 각 로우에 대응되는 연산 데이터를 획득하고,
상기 제2 매트릭스의 각 컬럼의 입력 값들에 기초하여 복수의 룩업 테이블을 생성하고, 상기 복수의 룩업 테이블로부터 상기 제4 매트릭스의 각 로우에 대응되는 연산 데이터를 획득하는, 전자 장치.4. The method of claim 3,
The processor is
The matrix including the plurality of input values is divided into a first matrix and a second matrix based on a predetermined row, and a matrix including the plurality of weight values is divided into a third matrix and a fourth matrix based on a predetermined column is divided into
generating a plurality of lookup tables based on input values of each column of the first matrix, and obtaining operation data corresponding to each row of the third matrix from the plurality of lookup tables;
generating a plurality of lookup tables based on input values of each column of the second matrix, and obtaining operation data corresponding to each row of the fourth matrix from the plurality of lookup tables.
상기 프로세서는,
상기 매트릭스의 각 컬럼에서 8개의 입력 값들을 획득하고,
상기 이진 데이터 및 상기 8개의 입력 값들에 기초하여 상기 이진 데이터 별로 상기 연산 데이터를 획득하는, 전자 장치.3. The method of claim 2,
The processor is
get 8 input values in each column of the matrix,
and acquiring the operation data for each binary data based on the binary data and the eight input values.
상기 프로세서는,
상기 이진 데이터 및 상기 n 개의 입력 값들에 기초한 복수의 연산식에서, 동일한 중간 연산식을 가지는 제1 연산식 및 제2 연산식이 있는 경우, 상기 제2 연산식의 연산은 상기 제1 연산식의 연산 값에 기초하여 수행하는, 전자 장치.3. The method of claim 2,
The processor is
In a plurality of arithmetic expressions based on the binary data and the n input values, when there are a first arithmetic expression and a second arithmetic expression having the same intermediate arithmetic expression, the operation of the second arithmetic expression is the operation value of the first arithmetic expression based on the electronic device.
적어도 하나의 비트 값이 서로 다른 이진 데이터 및 입력 데이터에 기초하여 연산 데이터를 획득하는 단계;
상기 이진 데이터에 상기 연산 데이터가 매칭된 룩업 테이블을 생성하는 단계;
상기 룩업 테이블로부터 상기 신경망 모델의 양자화된 가중치 값들을 포함하는 가중치 데이터에 대응되는 연산 데이터를 획득하는 단계; 및
상기 획득된 연산 데이터에 기초하여 상기 신경망 모델의 연산을 수행하는 단계;를 포함하는 전자 장치의 제어 방법.In the control method of an electronic device for performing calculation of a neural network model,
obtaining operation data based on binary data and input data having at least one bit value different from each other;
generating a lookup table in which the operation data is matched to the binary data;
obtaining computation data corresponding to weight data including quantized weight values of the neural network model from the lookup table; and
and performing an operation of the neural network model based on the obtained operation data.
상기 이진 데이터 각각은, n 개의 비트 값들로 구성되고,
상기 입력 데이터는, 매트릭스의 복수의 입력 값들을 포함하고,
상기 연산 데이터를 획득하는 단계는,
상기 매트릭스의 각 컬럼에서 n 개의 입력 값들을 획득하고,
상기 이진 데이터 및 상기 n 개의 입력 값들에 기초하여 상기 이진 데이터 별로 상기 연산 데이터를 획득하는, 전자 장치의 제어 방법.9. The method of claim 8,
Each of the binary data consists of n bit values,
The input data includes a plurality of input values of a matrix,
The step of obtaining the operation data includes:
obtain n input values in each column of the matrix,
The method for controlling an electronic device, wherein the operation data is obtained for each binary data based on the binary data and the n input values.
상기 가중치 데이터는, 매트릭스의 복수의 가중치 값들을 포함하고,
상기 신경망 모델의 연산을 수행하는 단계는,
상기 매트릭스의 각 로우에서 상기 n 개의 입력 값들에 대응되는 n 개의 가중치 값들을 식별하고, 상기 이진 데이터 중 상기 식별된 n 개의 가중치 값들에 대응되는 이진 데이터를 식별하며, 상기 룩업 테이블로부터 상기 식별된 이진 데이터에 대응되는 연산 데이터를 획득하고, 상기 획득된 연산 데이터에 기초하여 상기 신경망 모델의 연산을 수행하는, 전자 장치의 제어 방법.10. The method of claim 9,
The weight data includes a plurality of weight values of a matrix,
The operation of the neural network model comprises:
identify n weight values corresponding to the n input values in each row of the matrix, identify binary data corresponding to the identified n weight values among the binary data, and identify the identified binary data from the lookup table A method of controlling an electronic device, obtaining computational data corresponding to the data, and performing computation of the neural network model based on the acquired computational data.
상기 신경망 모델의 연산을 수행하는 단계는,
상기 매트릭스의 각 컬럼의 입력 값들에 기초하여 생성된 복수의 룩업 테이블 중에서, 상기 입력 데이터에 대한 출력 매트릭스의 각 컬럼에 대응되는 룩업 테이블을 각각 판단하고, 상기 각각의 룩업 테이블로부터 상기 출력 매트릭스의 각 컬럼의 출력 값들을 획득하는 단계;를 포함하는, 전자 장치의 제어 방법.11. The method of claim 10,
The operation of the neural network model comprises:
From among a plurality of lookup tables generated based on input values of each column of the matrix, a lookup table corresponding to each column of an output matrix for the input data is determined, respectively, and each of the output matrices from the respective lookup tables is determined. A method of controlling an electronic device, comprising: obtaining output values of a column.
상기 연산 데이터를 획득하는 단계는,
상기 복수의 입력 값들을 포함하는 매트릭스를 기설정된 로우를 기준으로 제1 매트릭스 및 제2 매트릭스로 분할하고, 상기 복수의 가중치 값들을 포함하는 매트릭스를 기설정된 컬럼을 기준으로 제3 매트릭스 및 제4 매트릭스로 분할하며,
상기 제1 매트릭스의 각 컬럼의 입력 값들에 기초하여 복수의 룩업 테이블을 생성하고, 상기 복수의 룩업 테이블로부터 상기 제3 매트릭스의 각 로우에 대응되는 연산 데이터를 획득하고,
상기 제2 매트릭스의 각 컬럼의 입력 값들에 기초하여 복수의 룩업 테이블을 생성하고, 상기 복수의 룩업 테이블로부터 상기 제4 매트릭스의 각 로우에 대응되는 연산 데이터를 획득하는, 전자 장치의 제어 방법.11. The method of claim 10,
The step of obtaining the operation data includes:
The matrix including the plurality of input values is divided into a first matrix and a second matrix based on a predetermined row, and a matrix including the plurality of weight values is divided into a third matrix and a fourth matrix based on a predetermined column is divided into
generating a plurality of lookup tables based on input values of each column of the first matrix, and obtaining operation data corresponding to each row of the third matrix from the plurality of lookup tables;
generating a plurality of lookup tables based on input values of each column of the second matrix, and obtaining operation data corresponding to each row of the fourth matrix from the plurality of lookup tables.
상기 연산 데이터를 획득하는 단계는,
상기 매트릭스의 각 컬럼에서 8개의 입력 값들을 획득하고,
상기 이진 데이터 및 상기 8개의 입력 값들에 기초하여 상기 이진 데이터 별로 상기 연산 데이터를 획득하는, 전자 장치의 제어 방법.10. The method of claim 9,
The step of obtaining the operation data includes:
get 8 input values in each column of the matrix,
The method for controlling an electronic device, wherein the operation data is obtained for each binary data based on the binary data and the eight input values.
상기 룩업 테이블을 생성하는 단계는,
상기 이진 데이터 및 상기 n 개의 입력 값들에 기초한 복수의 연산식에서, 동일한 중간 연산식을 가지는 제1 연산식 및 제2 연산식이 있는 경우, 상기 제2 연산식의 연산은 상기 제1 연산식의 연산 값에 기초하여 수행하는 단계;를 포함하는, 전자 장치의 제어 방법.10. The method of claim 9,
Creating the lookup table comprises:
In a plurality of arithmetic expressions based on the binary data and the n input values, when there are a first arithmetic expression and a second arithmetic expression having the same intermediate arithmetic expression, the operation of the second arithmetic expression is the operation value of the first arithmetic expression A method of controlling an electronic device, including;
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200026010A KR20210111014A (en) | 2020-03-02 | 2020-03-02 | Electronic apparatus and method for controlling thereof |
PCT/KR2021/001709 WO2021177617A1 (en) | 2020-03-02 | 2021-02-09 | Electronic apparatus and method for controlling thereof |
US17/171,582 US20210271981A1 (en) | 2020-03-02 | 2021-02-09 | Electronic apparatus and method for controlling thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200026010A KR20210111014A (en) | 2020-03-02 | 2020-03-02 | Electronic apparatus and method for controlling thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210111014A true KR20210111014A (en) | 2021-09-10 |
Family
ID=77463603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200026010A KR20210111014A (en) | 2020-03-02 | 2020-03-02 | Electronic apparatus and method for controlling thereof |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210271981A1 (en) |
KR (1) | KR20210111014A (en) |
WO (1) | WO2021177617A1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11899745B1 (en) * | 2020-08-19 | 2024-02-13 | Meta Platforms Technologies, Llc | Systems and methods for speech or text processing using matrix operations |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226002A (en) * | 1991-06-28 | 1993-07-06 | Industrial Technology Research Institute | Matrix multiplier circuit |
CN109716362B (en) * | 2016-07-21 | 2024-01-09 | 电装It研究所 | Neural network device, vehicle control system, decomposition processing device, and program |
KR102704647B1 (en) * | 2017-10-12 | 2024-09-10 | 삼성전자주식회사 | Electronic apparatus and control method thereof |
EP3667569A1 (en) * | 2017-10-20 | 2020-06-17 | Shanghai Cambricon Information Technology Co., Ltd | Processing method and device, operation method and device |
KR20190093932A (en) * | 2018-02-02 | 2019-08-12 | 한국전자통신연구원 | Arithmetic processing apparatus and method in deep running system |
US10678508B2 (en) * | 2018-03-23 | 2020-06-09 | Amazon Technologies, Inc. | Accelerated quantized multiply-and-add operations |
KR102555057B1 (en) * | 2018-05-09 | 2023-07-12 | 에스케이하이닉스 주식회사 | Method for formatting weight matrix, accelerator using the formatted weight matrix and system including the same |
-
2020
- 2020-03-02 KR KR1020200026010A patent/KR20210111014A/en unknown
-
2021
- 2021-02-09 US US17/171,582 patent/US20210271981A1/en active Pending
- 2021-02-09 WO PCT/KR2021/001709 patent/WO2021177617A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20210271981A1 (en) | 2021-09-02 |
WO2021177617A1 (en) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109754066B (en) | Method and apparatus for generating a fixed-point neural network | |
EP3474194B1 (en) | Method and apparatus with neural network parameter quantization | |
US11928600B2 (en) | Sequence-to-sequence prediction using a neural network model | |
KR102562320B1 (en) | Method and apparatus for processing neural network based on bitwise operation | |
CN106951962B (en) | Complex arithmetic unit, method and electronic device for neural network | |
Akusok et al. | High-performance extreme learning machines: a complete toolbox for big data applications | |
JP6293963B1 (en) | Array control device including neuromorphic element, discretization step size calculation method and program | |
TW201933193A (en) | Method and apparatus for quantizing artificial neural network, and method of quantizing floating-point neural network | |
JP6569755B1 (en) | Neural network device, signal generation method and program | |
KR20200086581A (en) | Method and apparatus for neural network quantization | |
CN109918630B (en) | Text generation method, device, computer equipment and storage medium | |
KR20200049366A (en) | Neural network processor and convolution operation method thereof | |
KR20200144398A (en) | Apparatus for performing class incremental learning and operation method thereof | |
CN113632106A (en) | Hybrid precision training of artificial neural networks | |
JP7536574B2 (en) | Computing device, computer system, and computing method | |
US20220058487A1 (en) | Electronic apparatus and method for controlling thereof | |
KR20210111014A (en) | Electronic apparatus and method for controlling thereof | |
KR102223116B1 (en) | Image analysis method and apparatus | |
Mishra | Cnn and rnn using pytorch | |
Lysechko et al. | Experimental study of optimized face recognition algorithms for resource–constrained | |
CN114254746A (en) | Method and apparatus for performing neural networks | |
US9704065B2 (en) | Dimension reduction apparatus, dimension reduction method, and computer program product | |
KR20190110385A (en) | Apparatus and method for integrating multiple information, and system for integrating and recognizing multiple information with the apparatus | |
KR102689622B1 (en) | Method and apparatus for evaluating quantized artificial neural network | |
CN113298248B (en) | Processing method and device for neural network model and electronic equipment |