KR20220157619A - 하드웨어 가속기에서의 비선형 함수 계산 방법 및 장치 - Google Patents

하드웨어 가속기에서의 비선형 함수 계산 방법 및 장치 Download PDF

Info

Publication number
KR20220157619A
KR20220157619A KR1020210065369A KR20210065369A KR20220157619A KR 20220157619 A KR20220157619 A KR 20220157619A KR 1020210065369 A KR1020210065369 A KR 1020210065369A KR 20210065369 A KR20210065369 A KR 20210065369A KR 20220157619 A KR20220157619 A KR 20220157619A
Authority
KR
South Korea
Prior art keywords
value
lookup table
nonlinear function
input data
hardware accelerator
Prior art date
Application number
KR1020210065369A
Other languages
English (en)
Inventor
박준기
유준상
장준우
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020210065369A priority Critical patent/KR20220157619A/ko
Priority to US17/499,149 priority patent/US20220383103A1/en
Priority to CN202210115706.7A priority patent/CN115374916A/zh
Publication of KR20220157619A publication Critical patent/KR20220157619A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/491Computations with decimal numbers radix 12 or 20.
    • G06F7/498Computations with decimal numbers radix 12 or 20. using counter-type accumulators
    • G06F7/4983Multiplying; Dividing
    • G06F7/4988Multiplying; Dividing by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Abstract

하드웨어 가속기 및 하드웨어 가속기에서의 비선형 함수 계산 방법이 개시된다. 일 실시예에 따른 하드웨어 가속기에서의 비선형 함수 계산 방법은 입력 데이터를 수신하는 단계, 룩업 테이블을 로드하는 단계, 입력 데이터를 비교기에 입력하여, 룩업 테이블의 어드레스를 결정하는 단계, 어드레스에 기초하여, 입력 데이터에 대응하는 룩업 테이블 값(value)을 획득하는 단계 및 룩업 테이블 값에 기초하여, 입력 데이터에 대응하는 비선형 함수 값을 계산하는 단계를 포함하고, 룩업 테이블은 비선형 함수 값을 출력하는 뉴럴 네트워크의 웨이트에 기초하여 결정된다.

Description

하드웨어 가속기에서의 비선형 함수 계산 방법 및 장치{METHOD AND APPARATUS FOR CALCULATING NONLINEAR FUNCTIONS IN HARDWARE ACCELERATORS}
아래 실시예들은 하드웨어 가속기의 동작 방법에 관한 것으로, 구체적으로는 하드웨어 가속기(예를 들어, NPU)에서의 비선형 함수 계산을 수행하는 방법에 관한 것이다.
뉴럴 네트워크(neural network)는 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조하여 구현된다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크를 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다. 뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 따라서, 뉴럴 네트워크를 이용하여 대량의 입력 데이터를 실시간으로 분석하여, 원하는 정보를 추출하기 위해서는 뉴럴 네트워크에 관한 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
일 실시예에 따른 하드웨어 가속기에서의 비선형 함수 계산 방법은 입력 데이터를 수신하는 단계; 룩업 테이블을 로드하는 단계; 상기 입력 데이터를 비교기에 입력하여, 상기 룩업 테이블의 어드레스를 결정하는 단계; 상기 어드레스에 기초하여, 상기 입력 데이터에 대응하는 룩업 테이블 값(value)을 획득하는 단계; 및 상기 룩업 테이블 값에 기초하여, 상기 입력 데이터에 대응하는 비선형 함수 값을 계산하는 단계를 포함하고, 상기 룩업 테이블은 상기 비선형 함수 값을 출력하는 뉴럴 네트워크의 웨이트에 기초하여 결정된다.
상기 어드레스를 결정하는 단계는 상기 비교기에서, 상기 입력 데이터와 미리 결정된 하나 이상의 레인지(range) 값을 비교하는 단계; 및 상기 입력 데이터에 대응하는 레인지 값에 기초하여, 상기 어드레스를 결정하는 단계를 포함할 수 있다.
상기 룩업 테이블 값을 획득하는 단계는 상기 어드레스에 대응하는 제1 값 및 제2 값을 획득하는 단계를 포함할 수 있다.
상기 비선형 함수 값을 계산하는 단계는 상기 입력 데이터 및 상기 제1 값을 곱하는 제1 연산을 수행하는 단계; 및 상기 제1 연산의 결과에 상기 제2 값을 더하는 제2 연산을 수행하는 단계를 할 수 있다.
일 실시예에 따른 하드웨어 가속기에서의 비선형 함수 계산 방법은 상기 비선형 함수 값에 기초하여 소프트맥스 연산을 수행하는 단계를 더 할 수 있다.
상기 비선형 함수 값을 계산하는 단계는 상기 소프트맥스 연산을 위한 복수의 입력 데이터 각각의 지수 함수(exponent) 값을 계산하는 단계를 포함하고, 일 실시예에 따른 하드웨어 가속기에서의 비선형 함수 계산 방법은 상기 각각의 지수 함수 값을 메모리에 저장하는 단계를 더 포함할 수 있다.
상기 소프트맥스 연산을 수행하는 단계는 상기 각각의 지수 함수 값을 누산하는 단계; 및 상기 누산된 값을 상기 메모리에 저장하는 단계를 더 포함할 수 있다.
상기 소프트맥스 연산을 수행하는 단계는 상기 누산된 값을 상기 비교기에 입력하여, 상기 누산된 값의 역수 값을 계산하는 단계; 및 상기 역수 값을 상기 메모리에 저장하는 단계를 더 포함할 수 있다.
상기 소프트맥스 연산을 수행하는 단계는 상기 지수 함수 값가 상기 역수 값을 곱하는 단계를 더 포함할 수 있다.
일 실시예에 따른 비선형 함수 계산을 위한 룩업 테이블 생성 방법은 제1 레이어, 활성화 함수 및 제2 레이어로 구성된 뉴럴 네트워크를 생성하는 단계; 비선형 함수 값을 출력하도록 상기 뉴럴 네트워크를 학습하는 단계; 상기 학습된 뉴럴 네트워크의 상기 제1 레이어 및 상기 제2 레이어를 하나의 통합 레이어로 변환하는 단계; 및 상기 통합 레이어에 기초하여, 상기 비선형 함수 계산을 위한 룩업 테이블을 생성하는 단계를 포함한다.
상기 룩업 테이블을 생성하는 단계는 상기 제1 레이어의 웨이트 및 바이어스에 기초하여, 상기 룩업 테이블의 어드레스를 결정하는 단계; 및 상기 통합 레이어의 웨이트에 기초하여, 상기 어드레스에 대응하는 룩업 테이블 값을 결정하는 단계를 포함할 수 있다.
상기 어드레스를 결정하는 단계는 상기 룩업 테이블의 레인지 값을 결정하는 단계; 및 상기 레인지 값에 대응하는 상기 어드레스를 결정하는 단계를 포함할 수 있다.
상기 룩업 테이블 값을 결정하는 단계는 상기 통합 레이어의 상기 웨이트에 기초하여 제1 값을 결정하는 단계; 및 상기 통합 레이어의 상기 웨이트 및 제1 레이어의 상기 바이어스에 기초하여 제2 값을 결정하는 단계를 포함할 수 있다.
일 실시예에 따른 하드웨어 가속기는 입력 데이터를 수신하고, 룩업 테이블을 로드하고, 상기 입력 데이터를 비교기에 입력하여, 상기 룩업 테이블의 어드레스를 결정하고, 상기 어드레스에 기초하여, 상기 입력 데이터에 대응하는 룩업 테이블 값(value)을 획득하고, 상기 룩업 테이블 값에 기초하여, 상기 입력 데이터에 대응하는 비선형 함수 값을 계산하는 프로세서를 포함하고, 상기 룩업 테이블은 상기 비선형 함수 값을 출력하는 뉴럴 네트워크의 웨이트에 기초하여 결정된다.
상기 프로세서는 상기 비교기에서, 상기 입력 데이터와 미리 결정된 하나 이상의 레인지(range) 값을 비교하고, 상기 입력 데이터에 대응하는 레인지 값에 기초하여, 상기 어드레스를 결정할 수 있다.
상기 프로세서는 상기 어드레스에 대응하는 제1 값 및 제2 값을 획득할 수 있다.
상기 프로세서는 상기 입력 데이터 및 상기 제1 값을 곱하는 제1 연산을 수행하고, 상기 제1 연산의 결과에 상기 제2 값을 더하는 제2 연산을 수행할 수 있다.
상기 프로세서는 상기 비선형 함수 값에 기초하여 소프트맥스 연산을 수행할 수 있다.
상기 프로세서는 상기 소프트맥스 연산을 위한 복수의 입력 데이터 각각의 지수 함수(exponent) 값을 계산할 수 있다.
상기 프로세서는 상기 각각의 지수 함수 값을 누산하고, 상기 누산된 값을 상기 메모리에 저장할 수 있다.
상기 프로세서는 상기 누산된 값을 상기 비교기에 입력하여, 상기 누산된 값의 역수 값을 계산하고, 상기 역수 값을 상기 메모리에 저장할 수 있다.
상기 프로세서는 상기 지수 함수 값가 상기 역수 값을 곱할 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 2는 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 3은 일 실시예에 따른 비선형 함수 연산을 수행하기 위한 뉴럴 네트워크 장치의 동작을 설명하기 위한 순서도이다.
도 4a 내지 도 4c는 일 실시예에 따른 비선형 함수 연산을 위한 룩업 테이블 생성 방법을 설명하기 위한 도면이다.
도 5a 내지 도 5b는 일 실시예에 따른 하드웨어 가속기에서 비선형 함수 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 5c는 일 실시예에 따른 하드웨어 가속기에서 소프트맥스 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 하드웨어 가속기의 블록도이다.
본 명세서에서 개시되어 있는 특정한 구조적 또는 기능적 설명들은 단지 기술적 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 실시예들은 다양한 다른 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~간의에"와 "바로~간의에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
실시예들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 텔레비전, 스마트 가전 기기, 지능형 자동차, 키오스크, 웨어러블 장치 등 다양한 형태의 제품으로 구현될 수 있다. 이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 예시를 나타내는 도면이다.
도 1을 참조하면, 일부 실시예에 따른 뉴럴 네트워크(10)가 도시되어 있다. 뉴럴 네트워크(10)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다.
뉴럴 네트워크(10)는 1개 이상의 히든 레이어를 포함하는 딥 뉴럴 네트워크(Deep Neural Network: DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)일 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 뉴럴 네트워크(10)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. DNN은 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나, 이에 제한되지 않는다.
뉴럴 네트워크(10)가 DNN 구조를 갖는 경우 유효한 정보를 추출할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(10)는 종래의 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(10)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(10)는 더 적거나 많은 레이어들을 포함할 수 있다. 또한, 뉴럴 네트워크(10)는 도 1에 도시된 것과는 다른 다양한 구조의 레이어들을 포함할 수 있다. 예를 들어, 뉴럴 네트워크(10)는 딥 뉴럴 네트워크로써, 컨볼루션 레이어(convolution layer), 풀링 레이어(pooling layer), 및 풀리 커넥티드(fully connected) 레이어를 포함할 수 있다.
뉴럴 네트워크(10)에 포함된 레이어들 각각은 "뉴런(neuron)", "프로세싱 엘리먼트(Processing element: PE)", "유닛(unit)" 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들을 포함할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, Layer 1은 2개의 노드들, Layer 2는 3개의 노드들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(10)에 포함된 레이어들 각각은 다양한 개수의 노드들을 포함할 수 있다.
뉴럴 네트워크(10)에 포함된 레이어들 각각에 포함된 노드들은 서로 연결되어 데이터를 교환할 수 있다. 예를 들어, 하나의 노드는 다른 노드들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 노드들로 출력할 수 있다.
노드들 각각의 출력 값은 액티베이션(activation)이라고 불릴 수 있다. 액티베이션은 한 노드의 출력 값이면서, 다음 레이어에 포함된 노드들의 입력 값일 수 있다. 한편, 노드들 각각은 이전 레이어에 포함된 노드들로부터 수신된 액티베이션들 및 웨이트(weight)들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 노드에서의 액티베이션을 계산하기 위해 이용되는 파라미터로서, 노드들 간의 연결관계에 할당되는 값일 수 있다.
노드들 각각은 입력을 받아 액티베이션을 출력하는 연산 유닛(computational unit)일 수 있고, 입력-출력을 매핑할 수 있다. 예를 들어, σ는 활성화 함수(activation function)이고,
Figure pat00001
는 (i-1) 번째 레이어에 포함된 k 번째 노드로부터 i 번째 레이어에 포함된 j번째 노드로의 웨이트이며,
Figure pat00002
는 i 번째 레이어에 포함된 j 번째 노드의 바이어스(bias) 값이고,
Figure pat00003
는 i 번째 레이어의 j 번째 노드의 액티베이션이라고 할 때, 액티베이션
Figure pat00004
는 다음과 같은 수학식 1을 따를 수 있다.
Figure pat00005
도 1에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 노드의 액티베이션은
Figure pat00006
로 표현될 수 있다. 또한,
Figure pat00007
는 수학식 1에 따라
Figure pat00008
의 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 뉴럴 네트워크에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 가중 합계(weighted sum)에 활성화 함수를 적용한 값을 Rectified Linear Unit (ReLU)을 통과시킴으로써 획득된 값일 수도 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(10)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 수많은 연산 과정을 거친다. 따라서, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
도 2는 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 2를 참조하면, 일 실시예에 따른 뉴럴 네트워크 장치(200)는 호스트(host)(210), 하드웨어 가속기(230) 및 메모리(220)를 포함한다. 도 2에 도시된 뉴럴 네트워크 장치(200)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(200)는 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
뉴럴 네트워크 장치(200)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train)(또는 학습(learn))시키거나, 부동 소수점 타입의 뉴럴 네트워크를 고정 소수점 타입의 뉴럴 네트워크로 양자화하거나, 또는 뉴럴 네트워크를 재훈련(retrain)하는 기능들과 같은 다양한 프로세싱 기능들을 갖는 컴퓨팅 디바이스에 해당된다. 예를 들어, 뉴럴 네트워크 장치(200)는 PC(personal computer), 서버 디바이스, 모바일 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다.
호스트(210)는 뉴럴 네트워크 장치(200)를 제어하기 위한 전반적인 기능을 수행하는 역할을 한다. 예를 들어, 호스트(210)는 뉴럴 네트워크 장치(200) 내의 메모리(120)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(200)를 전반적으로 제어한다. 호스트(210)는 뉴럴 네트워크 장치(200) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
호스트(210)는 비선형 함수 연산(Non-Linear Function)을 수행하기 위한 뉴럴 네트워크를 생성할 수 있으며, 해당 뉴럴 네트워크를 훈련시킬 수 있다. 나아가, 호스트(210)는 해당 뉴럴 네트워크에 기초하여, 비선형 함수 연산을 위한 룩업 테이블(LUT; lookup table)을 생성할 수 있다.
메모리(220)는 뉴럴 네트워크 장치(200) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(220)는 뉴럴 네트워크 장치(200)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(220)는 뉴럴 네트워크 장치(200)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(220)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(220)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다.
뉴럴 네트워크 장치(200)는 뉴럴 네트워크 구동을 위한 하드웨어 가속기(230)를 포함할 수 있다. 하드웨어 가속기(230)는 예를 들어, 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등에 해당될 수 있으나, 이에 제한되지 않는다.
일 실시예에 따른 하드웨어 가속기(230)는 호스트(210)에서 생성한 룩업 테이블을 이용하여 비선형 함수 연산을 수행할 수 있다. 버트(Bert), 트랜스포머(Transformer) 계열의 모델은 매 레이어 연산 마다 GeLU, 소프트맥스(Softmax), 레이어 정규화(Layer normalization)와 같은 연산이 필수적이다. 기존의 하드웨어 가속기(예를 들어, NPU)는 이를 연산할 수 있는 방법이 없어, 호스트(210)와 같은 외부 프로세서에서 연산을 진행해야 했다. 이에, 일 실시예에 따른 하드웨어 가속기(230)는 룩업 테이블을 이용하여 비선형 함수 연산을 수행할 수 있다.
도 3은 일 실시예에 따른 비선형 함수 연산을 수행하기 위한 뉴럴 네트워크 장치의 동작을 설명하기 위한 순서도이다. 단계들(310 내지 330)은 도 2의 뉴럴 네트워크 장치(200)에 의해 수행될 수 있다. 뉴럴 네트워크 장치(200)는 하나 또는 그 이상의 하드웨어 모듈, 하나 또는 그 이상의 소프트웨어 모듈, 또는 이들의 다양한 조합에 의하여 구현될 수 있다.
단계(310)에서, 일 실시예에 따른 호스트(210)는 비선형 함수를 모사하기 위한 뉴럴 네트워크를 학습할 수 있다. 보다 구체적으로, 호스트(210)는 뉴럴 네트워크를 학습할 입력 데이터를 생성할 수 있다. 나아가, 호스트(210)는 비선형 함수를 모사하기 위한 뉴럴 네트워크를 구성하고, 입력 데이터를 이용하여 뉴럴 네트워크가 특정 비선형 함수 연산을 수행할 수 있도록 학습할 수 있다. 일 실시예에 따른 뉴럴 네트워크는 제1 레이어, 활성화 함수(예를 들어, ReLU 함수) 및 제2 레이어로 구성될 수 있다. 일 실시예에 따른 뉴럴 네트워크를 학습하는 구체적인 방법은 아래에서 도 4b를 참조하여 설명된다.
단계(320)에서, 일 실시예에 따른 호스트(210)는 학습된 뉴럴 네트워크를 이용하여 룩업 테이블을 생성할 수 있다. 일 실시예에 따른 호스트(210)는 단계(310)에서 학습된 뉴럴 네트워크의 제1 레이어 및 제2 레이어를 하나의 통합 레이어로 변환하고, 통합 레이어에 기초하여 비선형 함수 계산을 위한 룩업 테이블을 생성할 수 있다. 일 실시예에 따른 룩업 테이블을 생성하는 구체적인 방법은 아래에서 도 4c를 참조하여 설명된다.
단계(330)에서, 일 실시예에 따른 하드웨어 가속기(230)(예를 들어, NPU)는 단계(320)에서 생성된 룩업 테이블을 이용하여 비선형 함수 연산을 수행할 수 있다. 여기서 비선형 함수 연산을 수행하는 것의 의미는, 룩업 테이블을 이용하여 입력 데이터에 대응하는 비선형 함수 값을 결정하는 것을 의미할 수 있다.
도 4a 내지 도 4c는 일 실시예에 따른 비선형 함수 연산을 위한 룩업 테이블 생성 방법을 설명하기 위한 도면이다.
도 4a를 참조하면, 단계들(410 내지 430)은 도 2의 호스트(210)에 의해 수행될 수 있다. 호스트(210)는 하나 또는 그 이상의 하드웨어 모듈, 하나 또는 그 이상의 소프트웨어 모듈, 또는 이들의 다양한 조합에 의하여 구현될 수 있다.
단계(410)에서, 일 실시예에 따른 호스트(210)는 제1 레이어, 활성화 함수(예를 들어, ReLU) 및 제2 레이어로 구성된 뉴럴 네트워크를 생성할 수 있다.
단계(420)에서, 일 실시예에 따른 호스트(210)는 비선형 함수 값을 출력하도록 뉴럴 네트워크를 학습할 수 있다.
도 4b를 참조하면, 일 실시예에 따른 호스트(210)는 학습을 위한 입력 데이터를 생성할 수 있다. 예를 들어, 일 실시예에 따른 호스트(210)는 -x 부터 x까지 N개의 데이터를 등 간격으로 생성한 후 노말 디스트리뷰션(normal distribution)을 따르는 랜덤 노이즈(random noise)를 더해서 학습을 위한 입력 데이터를 생성할 수 있다.
일 실시예에 따른 호스트(210)는 제1 레이어, 활성화 함수(예를 들어, ReLU 함수) 및 제2 레이어로 구성된 뉴럴 네트워크를 생성할 수 있다.
일 실시예에 따른 호스트(210)는 생성된 뉴럴 네트워크를 입력 데이터를 이용하여 비선형 함수를 모사하도록 학습할 수 있다. 예를 들어, 일 실시예에 따른 호스트(210)는 손실 함수(Loss Function)로 MSE(Mean square error)를 사용하여 해당 뉴럴 네트워크의 출력 디스트리뷰션(output distribution)과 오리지널 함수의 오차가 최소화 될 수 있도록 학습할 수 있다.
다시 도 4a를 참조하면, 단계(430)에서, 일 실시예에 따른 호스트(210)는 학습된 뉴럴 네트워크의 제1 레이어 및 제2 레이어를 하나의 통합 레이어로 변환할 수 있다.
나아가, 단계(440)에서, 일 실시예에 따른 호스트(210)는 통합 레이어에 기초하여, 비선형 함수 계산을 위한 룩업 테이블을 생성할 수 있다.
도 4c는 히든 뉴런(hidden neuron)이 16개인 경우를 예시로 학습된 뉴럴 네트워크를 이용하여 비선형 함수 계산을 위한 룩업 테이블을 생성하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 입력 데이터는 x, 제1 레이어의 웨이트 및 바이어스는 각각 n, b이고, 제2 레이어의 입력 액티베이션, 웨이트 및 출력 액티베이션은 각각 y', m, z일 수 있다. 나아가, 도 4c에서 액티베이션 함수(σ)는 ReLU 함수일 수 있다. 이 때, 제2 레이어의 출력 액티베이션은 아래 수학식 2와 같이 표현할 수 있다.
Figure pat00009
나아가, 수학식 2에서,
Figure pat00010
를 수학식 3과 같이 밖으로 뺄 수 있다.
Figure pat00011
이후, 수학식 3을 아래 수학식 4와 같이 간략화할 수 있다.
Figure pat00012
ReLU 함수는 양수의 입력에서 원래 값을 그대로 출력하고, 음수의 입력에서 0을 출력하기 때문에, 수학식 4에서 ni는 수학식 5와 같은 조건으로 ReLU 함수를 밖으로 값을 빼낼 수 있다.
Figure pat00013
일 실시예에 따른 Xi의 부호는 x와 bi/ni를 더한 값으로 결정될 수 있다. bi/ni의 값은 학습 시 미리 계산될 수 있다. 일 실시예에 따른 호스트(210)는 미리 계산된 bi/ni 값을 작은 값부터 큰 값 순으로 오름차순 정렬할 수 있다. x와 b0/n0를 더한 값이 양수이면 그 뒤에 값인 x+b1/n1, …, x+b15/n15 모두 양수임을 보장할 수 있다.
전술한 바와 같이, ReLU 함수는 양수의 입력에서 원래 값을 그대로 출력하기 ‹š문에, x+b0/n0, …, x+b15/n15에 곱해지는 m0n0, …, m15n15 값은 ni>0 일 때 값이 곱해져야 한다. i번째 ni의 값이 양수일 때만 그 값을 그대로 반영 하라는 의미를 ni +와 같이 표현할 수 있다. 반대로, ni -의 의미는 ni 값이 음수일 때 만 그 값을 그대로 반영하고 만약 ni 값이 양수이면 0으로 반영하라는 의미일 수 있다. 이를 수식으로 표현하면 수학식 6과 같다.
Figure pat00014
X0가 양수일 경우, 제2 레이어의 출력 액테베이션 값을 표현하면 수학식 7과 같다.
Figure pat00015
수학식 7에서, x0의 공통 인수를 묶으면 빨간 점선과 같이 s0와 t0로 값을 치환할 수 있다.
마찬가지로, x와 b0/n0를 더한 값은 음수이지만, x+b1/n1이 양수이면 x+b2/n2, …, x+b15/n15는 모두 양수이다. 또한, x+b0/n0 < 0 인 부분은 ni<0 일 때 값이 곱해 져야 하기 때문에 m0n0 -이 xb0/n0에 곱해진다. x+b2/n2, …, x+b15/n15는 양수이므로 m0n0 +가 곱해진다. 이를 수식으로 표현하면 수학식 8과 같다.
Figure pat00016
마찬가지 방법으로, 나머지 히든 뉴런 연산에 모두 적용하면 x의 범위에 따라 총 16가지의 s, t 경우가 도출될 수 있다. 일 실시예에 따른 하드웨어 가속기(230)는 bi/ni를 비교기의 기준으로 사용하고 si, ti 값을 룩업 테이블의 값(value)으로 사용할 수 있고, 이를 수식으로 표현하면 수학식 9와 같다.
Figure pat00017
아래에서, 설명의 편의를 위하여 si 및 ti는 각각 제1값 및 제2값으로 지칭될 수 있다.
도 5a 내지 도 5b는 일 실시예에 따른 하드웨어 가속기에서 비선형 함수 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 5a를 참조하면, 단계들(510 내지 540)는 도 1 내지 도 4c를 참조하여 전술한 하드웨어 가속기에 의해 수행될 수 있다.
단계(510)에서, 일 실시예에 따른 하드웨어 가속기(230)는 입력 데이터를 수신한다.
단계(520)에서, 일 실시예에 따른 하드웨어 가속기(230)는 룩업 테이블을 로드한다.
단계(530)에서, 일 실시예에 따른 하드웨어 가속기(230)는 입력 데이터를 비교기에 입력하여, 룩업 테이블의 어드레스를 결정한다.
단계(540)에서, 일 실시예에 따른 하드웨어 가속기(230)는 어드레스에 기초하여, 입력 데이터에 대응하는 룩업 테이블 값(value)을 획득한다.
단계(550)에서, 일 실시예에 따른 하드웨어 가속기(230)는 룩업 테이블 값에 기초하여, 입력 데이터에 대응하는 비선형 함수 값을 계산한다.
보다 구체적으로, 도 5b를 참조하면 일 실시예에 따른 하드웨어 가속기(230)는 비교기에서, 입력 데이터와 미리 결정된 하나 이상의 레인지(range) 값을 비교하고, 입력 데이터에 대응하는 레인지 값에 기초하 어드레스를 결정할 수 있다. 미리 결정된 하나 이상의 레인지(range) 값은 도 4a 내지 도 4c를 참조하여 설명한 bi/ni에 기초하여 결정되는 레인지 값일 수 있다. 예를 들어, bi/ni 값은 비교기의 입력이 되고, 일 실시예에 따른 하드웨어 가속기(230)는 x의 값과 -b0/n0부터 오름차순으로 x와 비교를 할 수 있다. -b0/n0보다 x가 크면. -b1/n1<x<-b0/n0를 비교할 수 있다. 일 실시예에 따른 하드웨어 가속기(230)는 x를 비교하다 조건식이 만족하는 경우 해당 레인지에 대응하는 어드레스를 결정할 수 있다.
일 실시예에 따른 하드웨어 가속기(230)는 어드레스에 대응하는 제1 값(예를 들어, si) 및 제2 값(예를 들어, ti)을 획득할 수 있다.
나아가, 일 실시예에 따른 하드웨어 가속기(230)는 입력 데이터 및 제1 값을 곱하는 제1 연산을 수행하고, 제1 연산의 결과에 제2 값을 더하는 제2 연산을 수행하여 입력 데이터에 대응하는 비선형 함수 값을 계산할 수 있다.
도 5c는 일 실시예에 따른 하드웨어 가속기에서 소프트맥스 연산을 수행하는 방법을 설명하기 위한 도면이다.
일 실시예에 따른 하드웨어 가속기(230)는 제1 먹스(560), 비교기(565), 제2 먹스(570), 곱셈기(575), 디먹스(580), 피드백 회로(590) 및 메모리(595)를 포함할 수 있다,
일 실시예에 따른 하드웨어 가속기(230)는 룩업 테이블을 이용하여 수학식 10과 같은 소프트맥스 연산을 수행할 수 있다.
Figure pat00018
보다 구체적으로, 일 실시예에 따른 하드웨어 가속기(230)는 도 5a 내지 도 5b에서 설명한 방법을 통해 소프트맥스 연산을 위한 복수의 입력 데이터 각각의 지수 함수(exponent) 값(예를 들어, ezi)을 계산할 수 있다. 다시 말해, 지수 함수 연산 또한 비선형 함수인 바, 호스트(210)는 지수 함수 연산을 출력하는 뉴럴 네트워크를 학습하고, 학습된 뉴럴 네트워크를 이용하여 룩업 테이블을 생성할 수 있으며, 하드웨어 가속기(230)는 룩업 테이블을 이용하여 복수의 입력 데이터 각각의 지수 함수(exponent) 값(예를 들어, ezi)을 계산할 수 있다. 나아가, 일 실시예에 따른 하드웨어 가속기(230)는 지수 함수 값을 메모리에 저장할 수 있다.
일 실시예에 따른 하드웨어 가속기(230)는 피드백 회로(590)를 이용하여 각각의 지수 함수 값을 누산하고, 누산된 값(
Figure pat00019
)을 메모리(595)에 저장할 수 있다.
일 실시예에 따른 하드웨어 가속기(230)는 누산된 값을 비교기(565)에 입력하여, 누산된 값의 역수 값(1/
Figure pat00020
)을 계산할 수 있다. 다시 말해, 역수 값을 계산하는 함수 또한 비선형 함수로, 하드웨어 가속기(230)는 해당 함수에 대응하는 룩업 테이블을 이용하여 누산된 값의 역수 값(1/
Figure pat00021
)을 계산할 수 있다. 나아가, 일 실시예에 따른 하드웨어 가속기(230)는 누산된 값의 역수 값(1/
Figure pat00022
)을 메모리에 저장할 수 있다.
일 실시예에 따른 제1 먹스는 해당하는 지수 함수 값(예를 들어, ezi)을 출력하고, 제2 먹스는 누산된 값의 역수 값(1/
Figure pat00023
)을 출력할 수 있고, 곱셈기(575)는 해당하는 지수 함수 값(예를 들어, ezi)과 누산된 값의 역수 값(1/
Figure pat00024
)을 곱하고, 디먹스(580)는 해당하는 지수 함수 값(예를 들어, ezi)과 누산된 값의 역수 값(1/
Figure pat00025
)을 곱하여 획득한 소프트맥스 연산 결과를 출력할 수 있다.
일 실시예에 따르면, 다양한 비선형 함수를 하나의 프레임 워크로 근사화 가능하고, 매번 함수 마다 수치 해석을 통해 최적의 레인지 및 변수를 찾을 필요 없으며, 프레임 워크가 동작하면 최적의 레인지 및 변수(예를 들어, 룩업 테이블의 주소 및 값)가 구해질 수 있다.
기존의 방식은 균일한 방식으로 레인지를 나눠 오차가 큰 반면, 일 실시예에 따른 방법은 함수를 더 세밀하게 구간을 나눠 근사화 해야 하는 부분을 뉴럴 네트워크 학습을 통해 찾기 때문에 오차가 적다는 장점이 있을 수 있다.
도 6은 일 실시예에 따른 하드웨어 가속기의 블록도이다.
도 6을 참조하면, 일 실시예에 따른 하드웨어 가속기(600)는 프로세서(610), 메모리(630) 및 통신 인터페이스(650)를 포함한다. 프로세서(610), 메모리(630), 통신 인터페이스(650)는 통신 버스(605)를 통해 서로 통신할 수 있다.
프로세서(610)는 도 1 내지 도 5c을 통해 전술한 적어도 하나의 방법 또는 적어도 하나의 방법에 대응되는 알고리즘을 수행할 수 있다. 프로세서(610)는 프로그램을 실행하고, 하드웨어 가속기를 제어할 수 있다. 프로세서(610)에 의하여 실행되는 프로그램 코드는 메모리(630)에 저장될 수 있다.
프로세서(610)는 제입력 데이터를 수신하고, 룩업 테이블을 로드하고, 상기 입력 데이터를 비교기에 입력하여, 상기 룩업 테이블의 어드레스를 결정하고, 상기 어드레스에 기초하여, 상기 입력 데이터에 대응하는 룩업 테이블 값(value)을 획득하고, 상기 룩업 테이블 값에 기초하여, 상기 입력 데이터에 대응하는 비선형 함수 값을 계산한다.
메모리(630)는 프로세서(610)가 처리한 데이터를 저장한다. 예를 들어, 메모리(630)는 프로그램을 저장할 수 있다. 저장되는 프로그램은 음성 인식을 수행할 수 있도록 코딩되어 프로세서(610)에 의해 실행 가능한 신텍스(syntax)들의 집합일 수 있다. 메모리(630)는 휘발성 메모리 또는 비 휘발성 메모리일 수 있다.
통신 인터페이스(650)는 프로세서(610) 및 메모리(630)와 연결되어 데이터를 송수신할 수 있다. 통신 인터페이스(650)는 외부의 다른 장치와 연결되어 데이터를 송수신할 수 있다. 이하에서 "A"를 송수신한다라는 표현은 "A를 나타내는 정보(information) 또는 데이터"를 송수신하는 것을 나타낼 수 있다.
통신 인터페이스(650)는 하드웨어 가속기(600) 내의 회로망(circuitry)으로 구현될 수 있다. 예를 들어, 통신 인터페이스(650)는 내부 버스(internal bus) 및 외부 버스(external bus)를 포함할 수 있다. 다른 예로, 통신 인터페이스(650)는 출력 토큰 결정 장치와 외부의 장치를 연결하는 요소일 수 있다. 통신 인터페이스(650)는 외부의 장치로부터 데이터를 수신하여, 프로세서(610) 및 메모리(630)에 데이터를 전송할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (23)

  1. 입력 데이터를 수신하는 단계;
    룩업 테이블을 로드하는 단계;
    상기 입력 데이터를 비교기에 입력하여, 상기 룩업 테이블의 어드레스를 결정하는 단계;
    상기 어드레스에 기초하여, 상기 입력 데이터에 대응하는 룩업 테이블 값(value)을 획득하는 단계; 및
    상기 룩업 테이블 값에 기초하여, 상기 입력 데이터에 대응하는 비선형 함수 값을 계산하는 단계
    를 포함하고,
    상기 룩업 테이블은
    상기 비선형 함수 값을 출력하는 뉴럴 네트워크의 웨이트에 기초하여 결정되는, 하드웨어 가속기에서의 비선형 함수 계산 방법.
  2. 제1항에 있어서,
    상기 어드레스를 결정하는 단계는
    상기 비교기에서, 상기 입력 데이터와 미리 결정된 하나 이상의 레인지(range) 값을 비교하는 단계; 및
    상기 입력 데이터에 대응하는 레인지 값에 기초하여, 상기 어드레스를 결정하는 단계
    를 포함하는, 하드웨어 가속기에서의 비선형 함수 계산 방법.
  3. 제1항에 있어서,
    상기 룩업 테이블 값을 획득하는 단계는
    상기 어드레스에 대응하는 제1 값 및 제2 값을 획득하는 단계
    를 포함하는, 하드웨어 가속기에서의 비선형 함수 계산 방법.
  4. 제3항에 있어서,
    상기 비선형 함수 값을 계산하는 단계는
    상기 입력 데이터 및 상기 제1 값을 곱하는 제1 연산을 수행하는 단계; 및
    상기 제1 연산의 결과에 상기 제2 값을 더하는 제2 연산을 수행하는 단계
    를 포함하는, 하드웨어 가속기에서의 비선형 함수 계산 방법.
  5. 제1항에 있어서,
    상기 비선형 함수 값에 기초하여 소프트맥스 연산을 수행하는 단계
    를 더 포함하는, 하드웨어 가속기에서의 비선형 함수 계산 방법.
  6. 제5항에 있어서,
    상기 비선형 함수 값을 계산하는 단계는
    상기 소프트맥스 연산을 위한 복수의 입력 데이터 각각의 지수 함수(exponent) 값을 계산하는 단계
    를 포함하고,
    상기 각각의 지수 함수 값을 메모리에 저장하는 단계
    를 더 포함하는, 하드웨어 가속기에서의 비선형 함수 계산 방법.
  7. 제6항에 있어서,
    상기 소프트맥스 연산을 수행하는 단계는
    상기 각각의 지수 함수 값을 누산하는 단계; 및
    상기 누산된 값을 상기 메모리에 저장하는 단계
    를 더 포함하는, 하드웨어 가속기에서의 비선형 함수 계산 방법.
  8. 제7항에 있어서,
    상기 소프트맥스 연산을 수행하는 단계는
    상기 누산된 값을 상기 비교기에 입력하여, 상기 누산된 값의 역수 값을 계산하는 단계; 및
    상기 역수 값을 상기 메모리에 저장하는 단계
    를 더 포함하는, 하드웨어 가속기에서의 비선형 함수 계산 방법.
  9. 제8항에 있어서,
    상기 소프트맥스 연산을 수행하는 단계는
    상기 지수 함수 값가 상기 역수 값을 곱하는 단계
    를 더 포함하는, 하드웨어 가속기에서의 비선형 함수 계산 방법.
  10. 제1 레이어, 활성화 함수 및 제2 레이어로 구성된 뉴럴 네트워크를 생성하는 단계;
    비선형 함수 값을 출력하도록 상기 뉴럴 네트워크를 학습하는 단계;
    상기 학습된 뉴럴 네트워크의 상기 제1 레이어 및 상기 제2 레이어를 하나의 통합 레이어로 변환하는 단계; 및
    상기 통합 레이어에 기초하여, 상기 비선형 함수 계산을 위한 룩업 테이블을 생성하는 단계
    를 포함하는 비선형 함수 계산을 위한 룩업 테이블 생성 방법.
  11. 제10항에 있어서,
    상기 룩업 테이블을 생성하는 단계는
    상기 제1 레이어의 웨이트 및 바이어스에 기초하여, 상기 룩업 테이블의 어드레스를 결정하는 단계; 및
    상기 통합 레이어의 웨이트에 기초하여, 상기 어드레스에 대응하는 룩업 테이블 값을 결정하는 단계
    를 포함하는, 비선형 함수 계산을 위한 룩업 테이블 생성 방법.
  12. 제11항에 있어서,
    상기 어드레스를 결정하는 단계는
    상기 룩업 테이블의 레인지 값을 결정하는 단계; 및
    상기 레인지 값에 대응하는 상기 어드레스를 결정하는 단계
    를 포함하는, 비선형 함수 계산을 위한 룩업 테이블 생성 방법.
  13. 제11항에 있어서,
    상기 룩업 테이블 값을 결정하는 단계는
    상기 통합 레이어의 상기 웨이트에 기초하여 제1 값을 결정하는 단계; 및
    상기 통합 레이어의 상기 웨이트 및 제1 레이어의 상기 바이어스에 기초하여 제2 값을 결정하는 단계
    를 포함하는, 비선형 함수 계산을 위한 룩업 테이블 생성 방법.
  14. 하드웨어와 결합되어 제1항 내지 제13항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
  15. 입력 데이터를 수신하고, 룩업 테이블을 로드하고, 상기 입력 데이터를 비교기에 입력하여, 상기 룩업 테이블의 어드레스를 결정하고, 상기 어드레스에 기초하여, 상기 입력 데이터에 대응하는 룩업 테이블 값(value)을 획득하고, 상기 룩업 테이블 값에 기초하여, 상기 입력 데이터에 대응하는 비선형 함수 값을 계산하는
    프로세서
    를 포함하고,
    상기 룩업 테이블은
    상기 비선형 함수 값을 출력하는 뉴럴 네트워크의 웨이트에 기초하여 결정되는, 하드웨어 가속기.
  16. 제15항에 있어서,
    상기 프로세서는
    상기 비교기에서, 상기 입력 데이터와 미리 결정된 하나 이상의 레인지(range) 값을 비교하고, 상기 입력 데이터에 대응하는 레인지 값에 기초하여, 상기 어드레스를 결정하는, 하드웨어 가속기.
  17. 제15항에 있어서,
    상기 프로세서는
    상기 어드레스에 대응하는 제1 값 및 제2 값을 획득하는, 하드웨어 가속기.
  18. 제17항에 있어서,
    상기 프로세서는
    상기 입력 데이터 및 상기 제1 값을 곱하는 제1 연산을 수행하고, 상기 제1 연산의 결과에 상기 제2 값을 더하는 제2 연산을 수행하는, 하드웨어 가속기.
  19. 제15항에 있어서,
    상기 프로세서는
    상기 비선형 함수 값에 기초하여 소프트맥스 연산을 수행하는, 하드웨어 가속기.
  20. 제19항에 있어서,
    상기 프로세서는
    상기 소프트맥스 연산을 위한 복수의 입력 데이터 각각의 지수 함수(exponent) 값을 계산하고, 상기 각각의 지수 함수 값을 메모리에 저장하는, 하드웨어 가속기.
  21. 제20항에 있어서,
    상기 프로세서는
    상기 각각의 지수 함수 값을 누산하고, 상기 누산된 값을 상기 메모리에 저장하는, 하드웨어 가속기.
  22. 제21항에 있어서,
    상기 프로세서는
    상기 누산된 값을 상기 비교기에 입력하여, 상기 누산된 값의 역수 값을 계산하고, 상기 역수 값을 상기 메모리에 저장하는, 하드웨어 가속기.
  23. 제20항에 있어서,
    상기 프로세서는
    상기 지수 함수 값가 상기 역수 값을 곱하는, 하드웨어 가속기.
KR1020210065369A 2021-05-21 2021-05-21 하드웨어 가속기에서의 비선형 함수 계산 방법 및 장치 KR20220157619A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210065369A KR20220157619A (ko) 2021-05-21 2021-05-21 하드웨어 가속기에서의 비선형 함수 계산 방법 및 장치
US17/499,149 US20220383103A1 (en) 2021-05-21 2021-10-12 Hardware accelerator method and device
CN202210115706.7A CN115374916A (zh) 2021-05-21 2022-02-07 硬件加速器和硬件加速器方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210065369A KR20220157619A (ko) 2021-05-21 2021-05-21 하드웨어 가속기에서의 비선형 함수 계산 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220157619A true KR20220157619A (ko) 2022-11-29

Family

ID=84060794

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210065369A KR20220157619A (ko) 2021-05-21 2021-05-21 하드웨어 가속기에서의 비선형 함수 계산 방법 및 장치

Country Status (3)

Country Link
US (1) US20220383103A1 (ko)
KR (1) KR20220157619A (ko)
CN (1) CN115374916A (ko)

Also Published As

Publication number Publication date
CN115374916A (zh) 2022-11-22
US20220383103A1 (en) 2022-12-01

Similar Documents

Publication Publication Date Title
Nakahara et al. A lightweight YOLOv2: A binarized CNN with a parallel support vector regression for an FPGA
JP7273108B2 (ja) モデルトレーニング方法、装置、電子デバイス、記憶媒体、プログラム
KR102399548B1 (ko) 뉴럴 네트워크를 위한 방법 및 그 방법을 수행하는 장치
US20180018555A1 (en) System and method for building artificial neural network architectures
KR102410820B1 (ko) 뉴럴 네트워크를 이용한 인식 방법 및 장치 및 상기 뉴럴 네트워크를 트레이닝하는 방법 및 장치
WO2022068623A1 (zh) 一种模型训练方法及相关设备
KR102655950B1 (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
US20230196202A1 (en) System and method for automatic building of learning machines using learning machines
CN116415654A (zh) 一种数据处理方法及相关设备
WO2023150912A1 (zh) 算子的调度运行时间比较方法、装置及存储介质
CN113434699A (zh) Bert模型的预训练方法、计算机装置和存储介质
CN113935489A (zh) 基于量子神经网络的变分量子模型tfq-vqa及其两级优化方法
CN111667069A (zh) 预训练模型压缩方法、装置和电子设备
CN114358274A (zh) 训练用于图像识别的神经网络的方法和设备
KR20210116182A (ko) 소프트맥스 연산 근사화 방법 및 장치
KR20220157619A (ko) 하드웨어 가속기에서의 비선형 함수 계산 방법 및 장치
US11704562B1 (en) Architecture for virtual instructions
KR20190127510A (ko) 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
CN110852361B (zh) 基于改进深度神经网络的图像分类方法、装置与电子设备
KR102090109B1 (ko) 학습 및 추론 장치 및 그 방법
WO2020054402A1 (ja) ニューラルネットワーク処理装置、コンピュータプログラム、ニューラルネットワーク製造方法、ニューラルネットワークデータの製造方法、ニューラルネットワーク利用装置、及びニューラルネットワーク小規模化方法
Zhou A Method of Converting ANN to SNN for Image Classification
KR20220040234A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
CN109754066B (zh) 用于生成定点型神经网络的方法和装置
Westby FPGA Acceleration on Multilayer Perceptron (MLP) Neural Network for Handwritten Digit Recognition

Legal Events

Date Code Title Description
A201 Request for examination