WO2022075600A1 - 전자 장치 및 이의 제어 방법 - Google Patents

전자 장치 및 이의 제어 방법 Download PDF

Info

Publication number
WO2022075600A1
WO2022075600A1 PCT/KR2021/011740 KR2021011740W WO2022075600A1 WO 2022075600 A1 WO2022075600 A1 WO 2022075600A1 KR 2021011740 W KR2021011740 W KR 2021011740W WO 2022075600 A1 WO2022075600 A1 WO 2022075600A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
input
sign
value
module
Prior art date
Application number
PCT/KR2021/011740
Other languages
English (en)
French (fr)
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 삼성전자주식회사
Publication of WO2022075600A1 publication Critical patent/WO2022075600A1/ko
Priority to US18/131,164 priority Critical patent/US20230244441A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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
    • 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/485Adding; Subtracting
    • 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
    • G06F7/5443Sum of products
    • 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/08Learning methods
    • 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

Definitions

  • 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 the model that implements the technology.
  • a deep neural network includes a plurality of weight values in order to derive an accurate result value.
  • FIG. 3 is a view for explaining a process in which an electronic device quantizes weights according to an embodiment of the present disclosure
  • FIG. 5 is a flowchart illustrating a method of controlling an electronic device according to an embodiment of the present disclosure.
  • the memory 110 may store weight data used for calculation of the neural network model. That is, the memory 110 may store a plurality of weight data included in a plurality of layers constituting the neural network model.
  • the processor 120 may be electrically connected to the memory 110 to control overall operations and functions of the electronic device 100 .
  • the processor 120 may include one or a plurality of processors to control the operation of the electronic device 100 .
  • the processor 120 may load data necessary for the first module 10 , the second module 20 , and the third module 30 to perform various operations from the non-volatile memory to the volatile memory.
  • Loading refers to an operation of loading and storing data stored in the non-volatile memory into the volatile memory so that the processor 120 can access it.
  • the processor 120 may determine a value of k based on an accuracy level required when performing an operation of the neural network model. Since the weight can be more accurately expressed as the value of k increases, the value of k may be determined to be large in order to increase the accuracy of output data obtained through the neural network model.
  • the processor 120 identifies a minimum value among exponents of input values included in the first input data through the first module 10, and converts the exponent of the input values included in the first input data into the identified minimum exponent value. to obtain the second input data.
  • the processor 120 may change (or sort) the exponent of the input value included in the input data to a preset value through the first module 10 .
  • the preset value may be a value set by a user and may be variously changed.
  • the processor 120 performs an operation of aligning the exponents of the input data through the first module 10 1000 It can only be done once.
  • the processor 120 may input the first output data obtained through the second module 20 to the third module 30 to normalize an output value included in the first output data.
  • the third module may be expressed as a normalization module.
  • the speaker 150 is configured to output various audio data on which various processing operations such as decoding, amplification, and noise filtering have been performed by an audio processing unit (not shown). Also, the speaker 150 may output various notification sounds or voice messages.
  • the microphone 160 is configured to receive a voice input from a user.
  • the microphone 160 may be provided inside the electronic device 100 , but may be provided outside and electrically connected to the electronic device 100 . Also, when the microphone 160 is provided outside, the microphone 160 may transmit a user voice signal generated through a wired/wireless interface (eg, Wi-Fi, Bluetooth) to the processor 120 .
  • a wired/wireless interface eg, Wi-Fi, Bluetooth
  • FIG. 5 is a flowchart illustrating a method of controlling the electronic device 100 according to an embodiment of the present disclosure.
  • the electronic device 100 applies the first input value with the determined sign and the second input value output from the second operation module disposed above the first operation module in the systolic arrangement to a first operation circuit among the first operation modules.
  • a sum value of the first input value and the second input value may be obtained by inputting to .
  • the electronic device 100 may obtain the second output data by performing a multiplication operation on the data including the normalized output value and the scaling factor data ( S550 ).
  • a component eg, a first component is "coupled with/to (operatively or communicatively)" to another component (eg, a second component);
  • another component eg, a second component
  • the certain element may be directly connected to the other element or may be connected through another element (eg, a third element).
  • a component eg, a first component
  • another component eg, a second component
  • Various embodiments of the present disclosure may be implemented as software including instructions stored in a machine-readable storage media readable by a machine (eg, a computer).
  • a machine eg, a computer
  • it may include the server cloud according to the disclosed embodiments.
  • the processor directly or under the control of the processor executes other components. A function corresponding to the above command can be performed by using it.
  • Each of the components may be composed of a singular or a plurality of entities, and some sub-components of the aforementioned sub-components may be omitted, or other sub-components may be various. It may be further included in the embodiment.
  • some components eg, a module or a program
  • operations performed by a module, program, or other component may be sequentially, parallel, repetitively or heuristically executed, or at least some operations may be executed in a different order, omitted, or other operations may be added.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Nonlinear Science (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

전자 장치 및 이의 제어 방법이 개시된다. 본 개시의 전자 장치는 제1 입력 데이터 및 신경망 모델의 연산에 이용되는 가중치 데이터를 저장하는 메모리 및 가중치 데이터를 부호 데이터와 스케일링 인자 데이터의 조합으로 양자화하여 양자화 데이터를 획득하는 프로세서를 포함하고, 프로세서는 제1 입력 데이터를 제1 모듈에 입력하여 제1 입력 데이터에 포함된 입력 값들의 지수가 동일한 값으로 변환된 제2 입력 데이터를 획득하고, 제2 입력 데이터 및 부호 데이터를 제2 모듈에 입력하여, 제2 입력 데이터에 포함된 입력 값의 부호를 결정하고 부호가 결정된 입력 값 간의 연산을 수행하여 제1 출력 데이터를 획득하고, 제1 출력 데이터를 제3 모듈에 입력하여 제1 출력 데이터에 포함된 출력 값을 정규화하고, 정규화된 출력 값이 포함된 데이터와 스케일링 인자 데이터에 대해 곱 연산을 수행하여 제2 출력 데이터를 획득할 수 있다.

Description

전자 장치 및 이의 제어 방법
본 개시는 전자 장치 및 이의 제어 방법에 관한 것으로서, 더욱 상세하게는 인공 지능 모델 상에서 가중치 및 입력 데이터에 대한 연산을 가속화하는 전자 장치 및 이의 제어 방법에 관한 것이다.
CROSS-REFERENCE RELATED TO APPLICATIONS
본 출원은 2020년 10월 5일에 출원된 대한민국 특허출원 제 10-2020-0127980호에 기초하여 우선권을 주장하며, 해당 출원의 모든 내용은 그 전체가 본 출원에 레퍼런스로 포함된다.
최근, 인간 수준의 지능을 구현하는 인공 지능 시스템에 대한 개발 및 연구가 진행되고 있다. 인공 지능 시스템이란 기존의 룰(rule) 기반 시스템과 달리 신경망 모델에 기반하여 학습 및 추론을 수행하는 시스템을 의미하며, 음성 인식, 이미지 인식 및 미래 예측 등과 같은 다양한 범위에서 활용되고 있다.
특히, 최근에는 딥 러닝(deep learning)에 기반한 딥 뉴럴 네트워크(deep neural network)를 통해 주어진 문제를 해결하는 인공 지능 시스템이 개발되고 있다.
딥 뉴럴 네트워크는 입력 레이어(input layer)와 출력 레이어(output layer) 사이에 다수의 은닉 레이어(hidden layer)을 포함하는 뉴럴 네트워크로써, 각 레이어에 포함된 가중치 값과 입력 데이터 간의 연산을 통해 인공 지능 기술을 구현하는 모델을 의미한다. 딥 뉴럴 네트워크는 정확한 결과 값을 도출해 내기 위해서 다수의 가중치 값들을 포함하는 것이 일반적이다.
한편, 딥 뉴럴 네트워크에 방대한 양의 가중치 값이 포함되어 있다는 점에서, 연산을 위해 필요한 리소스가 점차 커진다는 문제가 발생한다. 또한, 딥 뉴럴 네트워크 상에 연산을 압축 또는 단순화할 경우, 연산의 정확도가 떨어질 수 있다는 문제가 발생한다.
본 개시는 상술한 문제점을 해결하기 위해 안출된 것으로서, 본 개시의 목적은 인공 지능 기술에 기반하여 가중치 데이터와 입력 데이터 간의 연산을 수행하는 전자 장치 및 이의 제어 방법에 관한 것이다.
본 개시의 일 실시예에 따른, 전자 장치는 제1 입력 데이터 및 신경망 모델의 연산에 이용되는 가중치 데이터를 저장하는 메모리 및 상기 가중치 데이터를 부호(sign) 데이터와 스케일링 인자 데이터의 조합으로 양자화하여 양자화 데이터를 획득하는 프로세서를 포함하고, 상기 프로세서는, 상기 제1 입력 데이터를 제1 모듈에 입력하여 상기 제1 입력 데이터에 포함된 입력 값들의 지수(exponent)가 동일한 값으로 변환된 제2 입력 데이터를 획득하고, 상기 제2 입력 데이터 및 상기 부호 데이터를 제2 모듈에 입력하여, 상기 제2 입력 데이터에 포함된 입력 값의 부호를 결정하고 상기 부호가 결정된 입력 값 간의 연산을 수행하여 제1 출력 데이터를 획득하고, 상기 제1 출력 데이터를 제3 모듈에 입력하여 상기 제1 출력 데이터에 포함된 출력 값을 정규화하고, 상기 정규화된 출력 값이 포함된 데이터와 상기 스케일링 인자 데이터에 대해 곱 연산을 수행하여 제2 출력 데이터를 획득할 수 있다.
본 개시의 또 따른 실시예에 따른, 제1 입력 데이터 및 신경망 모델의 연산에 이용되는 가중치 데이터를 저장하는 메모리를 포함하는 전자 장치의 제어 방법에 있어서, 상기 가중치 데이터를 부호(sign) 데이터와 스케일링 인자 데이터의 조합으로 양자화하여 양자화 데이터를 획득하는 단계, 상기 제1 입력 데이터를 제1 모듈에 입력하여 상기 제1 입력 데이터에 포함된 입력 값들의 지수가 동일한 값으로 변환된 제2 입력 데이터를 획득하는 단계, 상기 제2 입력 데이터 및 상기 부호 데이터를 제2 모듈에 입력하여, 상기 제2 입력 데이터에 포함된 입력 값의 부호를 결정하고 상기 부호가 결정된 입력 값 간의 연산을 수행하여 제1 출력 데이터를 획득하는 단계; 상기 제1 출력 데이터를 제3 모듈에 입력하여 상기 제1 출력 데이터에 포함된 출력 값을 정규화하는 단계 및 상기 정규화된 출력 값이 포함된 데이터와 상기 스케일링 인자 데이터에 대해 곱 연산을 수행하여 제2 출력 데이터를 획득하는 단계를 포함할 수 있다.
상술한 바와 같이 본 개시의 다양한 실시예에 의해, 전자 장치는 제한된 리소스를 포함된 단말 장치 상에서 가중치 값과 입력 데이터 간에 연산을 효율적으로 수행할 수 있다.
도 1은 본 개시의 일 실시예에 따른, 전자 장치의 구성을 간략히 도시한 블록도,
도 2는 본 개시의 일 실시예에 따른, 전자 장치가 입력 데이터 및 가중치 데이터 간에 연산을 수행하는 구조 및 동작을 설명하기 위한 도면,
도 3은 본 개시의 일 실시예에 따른, 전자 장치가 가중치를 양자화 하는 과정을 설명하기 위한 도면,
도 4는 본 개시의 일 실시예에 따른, 전자 장치의 구성을 상세히 도시한 블록도,
도 5는 본 개시의 일 실시예에 따른, 전자 장치의 제어 방법을 설명하기 위한 순서도이다.
본 개시는 가중치 데이터에 포함된 가중치 값을 양자화(quantization)하여 양자화 데이터를 획득하고, 전체 입력 데이터의 지수(exponent)를 정렬한 데이터와 양자화 데이터 간의 연산을 수행하여 출력 데이터를 획득하는 전자 장치 및 이의 제어 방법에 관한 것이다.
본 개시의 전자 장치는 가중치 데이터를 부호(sign) 데이터와 스케일링 인자(scaling factor) 데이터로 양자화함으로써, 가중치 데이터와 입력 데이터 간의 연산을 수행하기 위해 필요한 부동 소수점(floating-point) 곱셈 연산 과정을 줄일 수 있다.
또한, 전자 장치는 전체 입력 데이터의 지수를 정렬함으로써 입력 데이터와 가중치 데이터의 연산을 수행하기 위한 연산 모듈에 정수(integer) 기반의 덧셈(add) 회로만을 포함시킬 수 있다. 따라서, 전자 장치는 부동 소수점을 가지는 입력 데이터와 가중치 데이터에 대한 출력 데이터를 획득하는 동안 정수 기반의 덧셈 회로를 주로 사용하여 연산의 효율성을 증가시킬 수 있다.
이하에서는 도면을 참조하여 본 개시에 대해 구체적으로 설명하도록 한다.
도 1은 본 개시의 일 실시예에 따른, 전자 장치(100)의 구성을 간략히 도시한 블록도이다. 도 1에 도시된 바와 같이, 전자 장치(100)는 메모리(110) 및 프로세서(120)를 포함할 수 있다. 다만, 도 1에 도시된 구성은 본 개시의 실시 예들을 구현하기 위한 예시도이며, 통상의 기술자에게 자명한 수준의 적절한 하드웨어 및 소프트웨어 구성들이 전자 장치(100)에 추가로 포함될 수 있다.
한편, 본 개시를 설명함에 있어서, 전자 장치(100)는 신경망 모델(neural network model)(또는, 인공 지능 모델)의 학습, 압축 또는 신경망 모델을 이용하여 입력 데이터에 대한 출력 데이터를 획득하는 장치로써, 예를 들어, 전자 장치(100)는 데스크탑 PC, 노트북, 스마트 폰, 태블릿 PC, 서버 등으로 구현될 수 있다.
또한, 전자 장치(100)가 수행하는 각종 동작은 클라우딩 컴퓨팅 환경이 구축된 시스템에 의해 수행될 수 있다. 예를 들어, 클라우딩 컴퓨팅 환경이 구축된 시스템은 신경망 모델에 포함된 가중치를 양자화하고, 양자화된 데이터와 입력 데이터 간의 연산을 수행할 수 있다.
메모리(110)는 전자 장치(100)의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 그리고, 메모리(110)는 프로세서(120)에 의해 액세스되며, 프로세서(120)에 의한 데이터의 독취/기록/수정/삭제/갱신 등이 수행될 수 있다.
본 개시에서 메모리라는 용어는 메모리(110), 프로세서(120) 내 롬(미도시), 램(미도시) 또는 전자 장치(100)에 장착되는 메모리 카드(미도시)(예를 들어, micro SD 카드, 메모리 스틱)를 포함할 수 있다. 또한, 메모리(110)에는 디스플레이의 디스플레이 영역에 표시될 각종 화면을 구성하기 위한 프로그램 및 데이터 등이 저장될 수 있다.
그리고, 메모리(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) 중 적어도 하나로 구현될 수 있다.
메모리(110)는 신경망 모델의 연산에 이용되는 가중치 데이터를 저장할 수 있다. 즉, 메모리(110)는 신경망 모델을 구성하는 복수의 레이어에 포함된 복수의 가중치 데이터를 저장할 수 있다.
가중치 데이터는 가중치 데이터에 포함된 복수의 가중치 값들을 포함할 수 있다. 이 때, 가중치 값은 n(n은 1 이상의 자연수) 비트의 부동 소수점(floating-point) 형태로 구현될 수 있다. 예를 들면, 가중치 데이터는 32 비트(bit)의 부동 소수점으로 구현될 수 있다. 가중치 데이터는 벡터, 행렬 또는 텐서 중 적어도 하나로 표현될 수 있다.
메모리(110)는 가중치 데이터가 부호(sign) 데이터 및 스케일링 인자 데이터의 조합으로 양자화된 양자화 데이터를 저장할 수 있다. 양자화 데이터는 가중치 데이터의 포맷에 따라 벡터, 매트릭스 또는 텐서 중 적어도 하나로 표현될 수 있다.
부호 데이터는 스케일링 인자의 크기는 변경하지 않고 부호만을 결정할 수 있는 부호 값인 1 또는 -1을 포함할 수 있다. 스케일링 인자 데이터는 가중치 데이터의 형식과 마찬가지로 부동 소수점 형태(예를 들어, 32bit 부동 소수점 형태)로 표현될 수 있다. 가중치 데이터가 양자화되는 방식은 후술하는 부분에서 설명하도록 한다.
메모리(110)는 다양한 유형의 입력 데이터를 저장할 수 있다. 예를 들면, 메모리(110)는 마이크를 통해 입력된 음성 데이터, 입력부(예를 들어, 카메라, 키보드 등)를 통해 입력된 이미지 데이터 또는 텍스트 데이터 등을 저장할 수 있다. 메모리(110)에 저장된 입력 데이터는 외부 장치를 통해 수신된 데이터를 포함할 수 있다.
메모리(110)는 제1 모듈(10), 제2 모듈(20) 및 제3 모듈(30)이 각종 동작을 수행하기 위해 필요한 데이터를 저장할 수 있다. 제1 모듈(10), 제2 모듈(20) 및 제3 모듈(30)이 각종 동작을 수행하기 위해 필요한 데이터는 비휘발성 메모리에 저장되어 있을 수 있다. 각 모듈에 대한 설명은 후술하는 부분에서 설명하도록 한다.
프로세서(120)는 메모리(110)와 전기적으로 연결되어 전자 장치(100)의 전반적인 동작 및 기능을 제어할 수 있다. 프로세서(120)는 전자 장치(100)의 동작을 제어하기 위해 하나 또는 복수의 프로세서로 구성될 수 있다.
프로세서(120)는 제1 모듈(10), 제2 모듈(20) 및 제3 모듈(30)이 각종 동작을 수행하기 위해 필요한 데이터를 비휘발성 메모리에서 휘발성 메모리로 로딩(loading)할 수 있다. 로딩이란 프로세서(120)가 액세스할 수 있도록 비휘발성 메모리에 저장된 데이터를 휘발성 메모리에 불러들여 저장하는 동작을 의미한다.
그리고, 휘발성 메모리는 프로세서(120)의 일 구성 요소로서 프로세서(120)에 포함된 형태로 구현될 수 있으나, 이는 일 실시예에 불과하며, 휘발성 메모리는 프로세서(120)와 별개의 구성 요소로 구현될 수 있다.
프로세서(120)는 가중치 데이터를 양자화하여 양자화 데이터를 획득할 수 있다. 가중치를 양자화한다는 것은 가중치를 효율적으로 활용하기 위하여 가중치의 단위를 단순화하거나 다른 방식으로 표현한다는 것을 의미한다.
예를 들면, 프로세서(120)는 가중치 데이터에 포함된 가중치 값들에 대해 이진 코드(binary coding) 방식의 양자화를 수행하여 양자화 데이터를 획득할 수 있다. 그리고, 프로세서(120)는 획득된 양자화 데이터를 메모리(110)에 저장할 수 있다. 가중치 값들에 대해 이진 코드 방식의 양자화를 수행한다는 것은 가중치 값을 부호 데이터와 스케일링 인자 데이터의 조합으로 양자화한다는 것을 의미한다.
예로, k(k는 1 이상의 자연수) 비트(bit)를 기준으로 가중치 값에 대해 이진 코드 방식의 양자화를 수행한다는 것은, k 개의 부호 값과 스케일링 인자의 곱을 합산하는 방식으로 가중치를 표현하는 것을 의미한다.
k가 3인 경우, 하기 수학식 1과 같이 가중치 데이터가 양자화될 수 있다. 수학식 1에서 W는 가중치 데이터를 의미하고 A는 스케일링 인자 데이터를 의미하며, B는 부호 데이터를 의미한다.
Figure PCTKR2021011740-appb-img-000001
가중치에 대해 이진 코드 방식으로 양자화를 수행할 때, 프로세서(120)는 신경망 모델의 연산을 수행할 때 요구되는 정확도 레벨에 기초하여 k 값을 결정할 수 있다. k 값이 커질수록 가중치를 좀 더 정확히 표현할 수 있으므로, 신경망 모델을 통해 획득하는 출력 데이터의 정확도를 높이기 위해 k 값은 큰 값으로 결정될 수 있다.
따라서, 신경망 모델의 연산을 수행할 때 요구되는 정확도 레벨이 높을 경우, 프로세서(120)는 k 값을 높은 값으로 결정할 수 있다. 신경망 모델의 연산을 수행할 때 요구되는 정확도 레벨은 입력 데이터의 유형에 따라 결정되거나 사용자가 신경망 모델을 설계할 때 결정될 수 있다.
예를 들어, 입력 데이터가 높은 연산의 정확도를 요구하는 언어 데이터 또는 음성 데이터인 경우, 프로세서(120)는 k의 값을 5로 결정하고, 입력 데이터가 비교적 낮은 연산의 정확도를 요구하는 이미지 데이터인 경우, 프로세서(120)는 k의 값을 3으로 결정할 수 있다. 다만, 이는 일 실시예에 불과하며 각 입력 데이터의 유형에 대응되는 k 값이 할당될 수 있으며, 사용자에 의해 자유롭게 변경될 수 있음은 물론이다.
상술한 바와 같이, 가중치 데이터의 양자화는 전자 장치(100)의 프로세서(120)에 수행될 수 있다. 다만, 이에 국한되는 것은 아니며, 가중치 데이터의 양자화는 외부 장치(가령, 서버)에 의해 수행될 수도 있다. 외부 장치에 의해 가중치 데이터의 양자화가 수행되는 경우, 프로세서(120)는 외부 장치로부터 양자화 된 가중치 값들을 포함하는 양자화 데이터를 수신하고, 수신된 양자화 데이터를 메모리(110)에 저장할 수 있다.
프로세서(120)가 양자화 데이터 및 제1 입력 데이터에 기초하여 제2 출력 데이터를 획득하는 과정은 도 2를 참조하여 구체적으로 설명하도록 한다. 도 2는 본 개시의 일 실시예로, 전자 장치(100)의 프로세서(120)가 양자화된 데이터 및 제1 입력 데이터 간의 행렬 곱셈(matrix multiplication)을 가속하는 동작 및 구조를 설명하기 위한 도면이다.
프로세서(120)는 제1 입력 데이터를 제1 모듈(10)에 입력하여 제1 입력 데이터에 포함된 입력 값들의 지수(exponent)가 동일한 값으로 변환된 제2 입력 데이터를 획득할 수 있다.
제1 모듈(10)은 제1 입력 데이터에 포함된 전체 입력 값의 지수를 동일한 값으로 변경(또는, 정렬(alignment))하는 모듈을 의미하며, 지수 정렬 모듈로 표현될 수 있다. 제1 모듈(10)은 하드웨어 모듈로 구현될 수 있으나, 이에 국한되는 것은 아니며 소프트웨어 모듈로도 구현될 수 있다.
프로세서(120)는 제1 모듈(10)을 통해 제1 입력 데이터에 포함된 입력 값들의 지수 중 최소 값을 식별하고, 제1 입력 데이터에 포함된 입력 값들의 지수를 식별된 최소 지수 값으로 변환하여 제2 입력 데이터를 획득할 수 있다.
예를 들어, 입력 값이 2^(-3)*1.25, 2^(-1)*1.75, 2^(1)*1.0인 경우를 가정하면, 프로세서(120)는 제1 모듈(10)을 통해 입력 값들의 지수 중 최소 값은 -3임을 식별할 수 있다. 그리고, 프로세서(120)는 제1 모듈(10)을 통해 입력 값 전체의 지수를 -3으로 변경(또는, 정렬)하여 입력 값 2^(-3)*1.25, 2^(-3)*7.0, 2^(-3)*16을 획득할 수 있다.
다만, 이는 일 실시예에 불과하며, 프로세서(120)는 제1 모듈(10)을 통해 입력 데이터에 포함된 입력 값의 지수를 기설정된 값으로 변경(또는, 정렬)할 수 있다. 기설정된 값은 사용자에 의해 설정된 값일 수 있으며, 다양하게 변경될 수 있음은 물론이다.
기존에는 제1 입력 데이터에 포함된 모든 입력 값의 지수를 연산 모듈에 입력하기 전에 동일한 값으로 정렬하지 않고, 두 입력 값에 대해 합 연산을 수행할 때 두 입력 값의 지수를 동일한 값으로 정렬하는 동작이 매번 수행하였다. 예를 들어, 입력 데이터에 포함된 입력 값이 1000개이고, 각 입력 값의 합 연산이 백만 번 소요되면, 각 입력 데이터의 지수를 정렬하는 동작은 백만 번 수행해야 한다.
다만, 본 개시의 전자 장치(100)의 프로세서(120)는 제1 모듈(10)을 통해 입력 데이터에 포함된 모든 입력 값들의 지수를 동일한 값으로 정렬함으로써, 제2 모듈(20) 상에서 입력 값의 지수를 정렬시키는 회로를 제외시킬 수 있다.
예를 들어, 입력 데이터에 포함된 입력 값이 1000개이고, 각 입력 값의 합 연산이 백만 번 소요되면, 프로세서(120)는 제1 모듈(10)을 통해 입력 데이터의 지수를 정렬하는 동작을 1000번만 수행할 수 있다.
프로세서(120)는 지수가 동일한 값으로 정렬된 제2 입력 데이터와 가중치 데이터 중 양자화된 부호 데이터간의 연산을 수행한 후, 연산 결과 데이터와 출력 데이터와 스케일링 인자 데이터간의 연산을 수행하여 출력 값을 획득할 수 있다.
예를 들면, 하기 수학식 2과 같이 가중치(W)를 3 bit로 이진 코드 방식의 양자화된 경우를 가정한다.
Figure PCTKR2021011740-appb-img-000002
수학식 2에서 A는 스케일링 인자 데이터이고 B는 부호 데이터이며 X는 입력 데이터이다. 프로세서(120)는 분배 법칙에 따라 입력 데이터(X)를 B0, B1, B2 각각에 먼저 연산을 수행하고, 연산 결과 데이터와 스케일링 인자 데이터인 A0, A1, A2과 연산을 수행하여 출력 값을 획득할 수 있다.
이 때, B0, B1, B2는 -1 또는 1인 부호 값으로 포함된 데이터이므로, 입력 데이터(X)과 B0, B1, B2 간의 연산은 입력 데이터의 부호를 결정하는 과정을 의미할 수 있다.
수학식 2에 대한 상황은 도 3의 식별항목 310에 좀 더 구체적으로 도시되어 있다. 310에는 A0, A1, A2가 1 X N 형태의 행렬로 구현된 경우이다. 그리고, 식별항목 320에 도시된 바와 같이, 프로세서(120)는 분배 법칙에 따라 입력 데이터(X)와 B0, B1, B2 각각에 먼저 연산을 수행하여 입력 데이터의 부호를 결정할 수 있다.
이하에서는 프로세서(120)가 제2 모듈(20)을 이용하여 제1 출력 데이터를 획득하는 과정을 설명하도록 한다.
프로세서(120)는 지수를 동일한 값으로 정렬한 제2 입력 데이터 및 가중치 데이터 중 양자화된 부호 데이터를 제2 모듈(20)에 입력하여, 제2 입력 데이터에 포함된 입력 값의 부호를 결정하고, 부호가 결정된 입력 값들 간의 연산을 수행하여 제1 출력 데이터를 획득할 수 있다.
도 2에 도시된 바와 같이, 제2 모듈(20)은 시스톨릭 배열(systolic array)을 가지는 복수의 연산 모듈을 포함할 수 있다. 시스톨릭 배열은 같은 기능을 가지는 모듈 등이 연결 망을 구성하여 동기 신호에 따라 하나의 연산을 수행할 수 있도록 설계된 배열을 의미한다.
제2 모듈(20)에 포함된 연산 모듈(20-1)은 부호 데이터를 이용하여 제2 입력 데이터의 부호를 결정하는 부호 결정 회로(25-1) 및 부호가 결정된 제2 입력 데이터에 포함된 입력 값들 간에 합 연산을 수행하는 연산 회로(25-2)를 포함할 수 있다. 이 때, 연산 회로(25-2)는 정수 기반의 합 연산을 수행하는 회로로 구현될 수 있다.
즉, 기존의 MAC(Multiplier-accumulator Unit)에는 부동 소수점 형태로 이루어진 가중치 값과 입력 값을 곱(multiply)하고 합산(add)하는 연산 회로를 포함한다. 본 개시의 연산 모듈(20-1)은 기존의 MAC에 포함된 연산 회로를 제외하고 정수(integer) 기반의 한 연산을 수행하는 연산 회로만을 포함할 수 있다.
즉, 연산 모듈(20-1)은 기존의 MAC 보다 간단한 연산을 수행하는 연산 회로를 포함하고 있으므로, 연산 모듈(20-1)이 차지하는 면적, 소모되는 전력 및 연산량을 감소시킬 수 있다.
도 2에 도시된 바와 같이, 프로세서(120)는 연산 모듈(20-1) 중 부호 결정 모듈(25-1)에 제2 입력 데이터 중 제1 입력 값(a) 및 부호 데이터 중 연산 모듈(20-1)에 대응되는 부호 값(w)을 입력하여 제1 입력 값(a)의 부호를 결정할 수 있다. 부호 값(w)은 -1 또는 1 중 하나이므로, 제1 입력 값(a)은 음의 부호 또는 양의 부호 중 하나로 결정될 수 있다.
프로세서(120)는 부호가 결정된 제1 입력 값(+a 또는 -a) 및 시스톨릭 배열 상에서 연산 모듈(20-1)의 상위에 배치된 연산 모듈(20-2)에서 출력된 제2 입력 값(b)을 연산 회로(25-2)에 입력하여 제1 입력 값 및 제2 입력 값을 합산 값을 획득할 수 있다.
즉, 가중치 데이터가 부호 데이터로 양자화되어 있으므로, 프로세서(120)는, 스케일링 인자 데이터와 곱 연산을 수행하기 전까지, 부호 데이터에 의해 부호가 결정된 입력 데이터 간에 합 연산만을 수행할 수 있다. 부호가 결정된 합 연산을 수행할 입력 데이터의 지수는 정렬되어 있으므로, 프로세서(120)는 정수 기반의 합 연산 회로(25-2)를 통해 입력 데이터의 가수(mantissa) 부분에 대해 합 연산을 수행함으로써 제1 출력 데이터를 획득할 수 있다.
프로세서(120)는 제2 모듈(20)을 통해 획득된 제1 출력 데이터를 제3 모듈(30)에 입력하여 제1 출력 데이터에 포함된 출력 값을 정규화(normalize)할 수 있다. 제3 모듈은 정규화 모듈로 표현될 수 있다.
구체적으로, 프로세서(120)는 제1 출력 데이터에 포함된 출력 값의 가수의 첫째 자리가 기수(base)보다 작은 한자리 자연수가 되도록 변경하여 제1 출력 데이터에 포함된 출력 값을 정규화할 수 있다. 예를 들면, 출력 값이 -0.8*2^(-1)인 경우, 프로세서(120)는 가수의 첫째 자리가 기수(2)보다 작은 한자리 자연수가 되도록 변경하여 출력값을 -1.6*2^(-2)으로 정규화할 수 있다.
프로세서(120)는 제2 모듈(20)에서 출력된 제1 출력 데이터를 제3 모듈(30)에 입력하여 정규화함으로써 시스톨릭 배열을 가지는 연산 모듈 각각에 정규화를 수행하는 회로를 제외할 수 있다.
즉, 기존에는 복수의 MAC에서 출력된 합산 연산 결과 값을 매번 정규화를 시키는 과정을 수행하였다. 예를 들어, 입력 데이터에 포함된 입력 값이 1000개이고, 각 입력 값의 합 연산이 백만 번 소요되면, 연산 결과 값에 대해 정규화하는 동작은 백만 번 진행해야 한다.
다만, 본 개시의 전자 장치(100)의 프로세서(120)는 제3 모듈을 통해 연산 모듈의 출력 값을 정규화함으로써, 정규화 동작의 횟수를 줄일 수 있다. 예를 들어, 입력 데이터에 포함된 입력 값이 1000개이고, 각 입력 값의 합 연산이 백만 번 소요되면, 프로세서(120)는 제3 모듈(30)을 통해 연산 결과 값에 대해 정규화하는 동작을 1000번만 수행할 수 있다. 이에 따라, 정규화 동작을 수행하는 회로가 차지하는 면적 및 정규화 동작을 수행하는데 필요한 연산량 또는 전력 소모량을 줄일 수 있다.
프로세서(120)는 정규화된 출력 값이 포함된 데이터와 스케일링 인자 데이터에 대해 곱 연산을 수행하여 제2 출력 데이터를 획득할 수 있다. 즉, 프로세서(120)는 제1 모듈(10), 제2 모듈(20) 및 제3 모듈(30)을 이용하여 가중치 데이터와 입력 데이터 간의 연산을 수행하여 제2 출력 데이터를 획득할 수 있다.
한편, 본 개시에 따른 인공지능과 관련된 기능은 프로세서(120)와 메모리(110)를 통해 동작된다. 프로세서(120)는 하나 또는 복수의 프로세서로 구성될 수 있다. 이때, 하나 또는 복수의 프로세서는 CPU(Central Processing Unit), AP(Application Processor), DSP(Digital Signal Processor) 등과 같은 범용 프로세서, GPU(Graphic Processing Unit), VPU(Vision Processing Unit)와 같은 그래픽 전용 프로세서 또는 NPU(Neural Processing Unit)와 같은 인공지능 전용 프로세서일 수 있다.
하나 또는 복수의 프로세서(120)는, 메모리(110)에 저장된 기 정의된 동작 규칙 또는 인공지능 모델에 따라, 입력 데이터를 처리하도록 제어한다. 또는, 하나 또는 복수의 프로세서가 인공지능 전용 프로세서인 경우, 인공지능 전용 프로세서는, 특정 인공지능 모델의 처리에 특화된 하드웨어 구조로 설계될 수 있다.
기 정의된 동작 규칙 또는 인공지능 모델은 학습을 통해 만들어진 것을 특징으로 한다. 여기서, 학습을 통해 만들어진다는 것은, 기본 인공지능 모델이 학습 알고리즘에 의하여 다수의 학습 데이터들을 이용하여 학습됨으로써, 원하는 특성(또는, 목적)을 수행하도록 설정된 기 정의된 동작 규칙 또는 인공지능 모델이 만들어짐을 의미한다. 이러한 학습은 본 개시에 따른 인공지능이 수행되는 기기 자체에서 이루어질 수도 있고, 별도의 서버 및/또는 시스템을 통해 이루어 질 수도 있다.
학습 알고리즘의 예로는, 지도형 학습(supervised learning), 비지도형 학습(unsupervised learning), 준지도형 학습(semi-supervised learning) 또는 강화 학습(reinforcement learning)이 있으나, 전술한 예에 한정되지 않는다.
인공지능 모델은 복수의 인공 신경망을 포함하며, 인공 신경망은 복수의 레이어들로 구성될 수 있다. 복수의 신경망 레이어들 각각은 복수의 가중치들(weight values)을 갖고 있으며, 이전(previous) 레이어의 연산 결과와 복수의 가중치들 간의 연산을 통해 신경망 연산을 수행한다. 복수의 신경망 레이어들이 갖고 있는 복수의 가중치들은 인공지능 모델의 학습 결과에 의해 최적화될 수 있다. 예를 들어, 학습 과정 동안 인공지능 모델에서 획득한 로스(loss) 값 또는 코스트(cost) 값이 감소 또는 최소화되도록 복수의 가중치들이 갱신될 수 있다.
인공 신경망의 예로는, CNN (Convolutional Neural Network), DNN (Deep Neural Network), RNN (Recurrent Neural Network), RBM (Restricted Boltzmann Machine), DBN (Deep Belief Network), BRDNN(Bidirectional Recurrent Deep Neural Network) 및 심층 Q-네트워크 (Deep Q-Networks) 등이 있으며, 본 개시에서의 인공 신경망은 명시한 경우를 제외하고 전술한 예에 한정되지 않는다.
도 4는 본 개시의 일 실시예에 따른, 전자 장치(100)의 구성을 상세히 도시한 블록도이다. 도 4에 도시된 바와 같이, 전자 장치(100)는 메모리(110), 프로세서(120), 통신부(130), 디스플레이(140), 스피커(150), 마이크(160) 및 입력부(170)를 포함할 수 있다. 메모리(110) 및 프로세서(120)는 도 1 및 도 2를 참조하여 구체적으로 설명하였으므로 중복되는 설명은 생략하도록 한다.
통신부(130)는 회로를 포함하며, 외부 장치와 통신을 수행할 수 있다. 이때, 통신부(120)가 외부 장치와 통신 연결되는 것은 제3 기기(예로, 중계기, 허브, 엑세스 포인트, 서버 또는 게이트웨이 등)를 거쳐서 통신하는 것을 포함할 수 있다.
통신부(130)는 외부 장치와 통신을 수행하기 위해 다양한 통신 모듈을 포함할 수 있다. 일 예로, 통신부(120)는 무선 통신 모듈을 포함할 수 있으며, 예를 들면, 5G(5TH Generation), LTE, LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), 등 중 적어도 하나를 사용하는 셀룰러 통신 모듈을 포함할 수 있다.
다른 예로, 무선 통신 모듈은, 예를 들면, WiFi(wireless fidelity), 블루투스, 블루투스 저전력(BLE), 지그비(Zigbee), 라디오 프리퀀시(RF), 또는 보디 에어리어 네트워크(BAN) 중 적어도 하나를 포함할 수 있다. 다만, 이는 일 실시예에 불과하며 통신부(120)는 유선 통신 모듈을 포함할 수 있다.
통신부(130)는 신경망 모델을 구성하는 복수의 레이어에 포함된 복수의 가중치 데이터를 양자화하기 위하여 가중치 데이터를 외부 서버에 전송할 수 있다. 그리고, 통신부(130)는 외부 서버로부터 양자화된 가중치 데이터를 수신할 수 있다.
통신부(130)는 전자 장치(100)와 통신 연결된 외부 장치로부터 각종 제1 입력 데이터를 수신할 수 있다. 예를 들어, 통신부(130)는 전자 장치(100)와 무선 통신 연결된 입력 장치(예를 들어, 카메라, 마이크, 키보드 등) 또는 각종 컨텐츠를 제공할 수 있는 외부 서버로부터 다양한 종류의 제1 입력 데이터를 수신할 수 있다.
디스플레이(140)는 프로세서(120)의 제어에 따라 다양한 정보를 표시할 수 있다. 특히, 디스플레이(140)는 제1 입력 데이터를 표시하거나, 가중치 데이터와 입력 데이터 간에 연산을 수행하여 획득된 제2 출력 데이터를 표시할 수 있다. 여기서, 제2 출력 데이터를 표시한다는 것은 제2 출력 데이터에 기초하여 생성된 텍스트 또는 이미지가 포함된 화면을 표시하는 동작을 포함할 수 있다.
디스플레이(140)는 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diodes), AM-OLED(Active-Matrix Organic Light-Emitting Diode), LcoS(Liquid Crystal on Silicon) 또는 DLP(Digital Light Processing) 등과 같은 다양한 디스플레이 기술로 구현될 수 있다. 또한, 디스플레이(150)는 플렉서블 디스플레이(flexible display)의 형태로 전자 장치(100)의 전면 영역 및, 측면 영역 및 후면 영역 중 적어도 하나에 결합될 수도 있다.
또한, 디스플레이(140)는 터치 센서를 구비한 터치 스크린으로 구현될 수도 있다.
스피커(150)는 오디오 처리부(미도시)에 의해 디코딩이나 증폭, 노이즈 필터링과 같은 다양한 처리 작업이 수행된 각종 오디오 데이터를 출력하는 구성이다. 또한, 스피커(150)는 각종 알림 음이나 음성 메시지를 출력할 수 있다.
예를 들어, 신경망 모델에 의해 가중치 데이터와 입력 데이터 간의 연산 결과 즉, 제2 출력 데이터가 출력되는 경우, 스피커(160)는 출력 데이터가 획득되었다는 알림 음 등을 출력할 수 있다.
마이크(160)는 사용자로부터 음성을 입력받을 수 있는 구성이다. 마이크(160)는 전자 장치(100) 내부에 구비될 수 있으나, 외부에 구비되어 전자 장치(100)와 전기적으로 연결될 수 있다. 또한, 마이크(160)가 외부에 구비된 경우, 마이크(160)는 유/무선 인터페이스(예를 들어, Wi-Fi, 블루투스)을 통해 생성된 사용자 음성 신호를 프로세서(120)에 전송할 수 있다.
마이크(160)는 각종 인공 신경망으로 구성된 인공지능 모델을 활성화시킬 수 있는 웨이크 업 워드(wake-up word)(또는, 트리거 워드(trigger word))가 포함된 사용자 음성을 입력 받을 수 있다. 웨이크 업 워드가 포함된 사용자 음성을 마이크(160)를 통해 입력받으면, 프로세서(120)는 인공 지능 모델을 활성화시키고 사용자 음성을 제1 입력 데이터로 이용하여 가중치 데이터간의 연산을 수행할 수 있다.
입력부(170)는 회로를 포함하며, 전자 장치(100)를 제어하기 위한 사용자 입력을 수신할 수 있다. 특히, 입력부(170)는 사용자 손 또는 스타일러스 펜 등을 이용한 사용자 터치를 입력받기 위한 터치 패널, 사용자 조작을 입력받기 위한 버튼 등이 포함될 수 있다. 또 다른 예로, 입력부(170)는 다른 입력 장치(예로, 키보드, 마우스, 모션 입력부 등)로 구현될 수 있다. 한편, 입력부(170)는 사용자로부터 입력된 제1 입력 데이터를 수신하거나 각종 사용자 명령을 입력받을 수 있다.
도 5는 본 개시의 일 실시예에 따른, 전자 장치(100)의 제어 방법을 설명하기 위한 순서도이다.
전자 장치(100)는 가중치 데이터를 부호 데이터와 스케일링 인자 데이터의 조합으로 양자화하여 양자화 데이터를 획득할 수 있다(S510). 예를 들어, 전자 장치(100)는 가중치 데이터를 k 개의 부호 데이터 및 스케일링 인자 데이터의 곱을 합산하는 방식으로 양자화할 수 있다. k의 크기는 신경망 모델의 연산을 수행할 때 요구되는 정확도 레벨에 기초하여 결정될 수 있다. 그리고, 스케일링 인자는 부동 소수점 형태의 데이터로 구현될 수 있다.
전자 장치(100)는 제1 입력 데이터를 제1 모듈에 입력하여 제1 입력 데이터에 포함된 입력 값들의 지수가 동일한 값으로 변환된 제2 입력 데이터를 획득할 수 있다(S520).
예를 들어, 전자 장치(100)는 제1 모델을 통해 제1 입력 데이터에 포함된 입력 값들의 지수 중 최소 값을 식별하고, 제1 입력 데이터에 포함된 입력 값들의 지수를 식별된 최소 값으로 변환하여 제2 입력 데이터를 획득할 수 있다. 다만, 이는 일 실시예에 불과하며, 전자 장치(100)는 제1 모델을 통해 제1 입력 데이터에 포함된 입력 값들의 지수를 기설정된 값으로 정렬할 수 있다.
전자 장치(100)는 제2 입력 데이터 및 부호 데이터를 제2 모듈에 입력하여 제2 입력 데이터에 포함된 입력 값의 부호를 결정하고 부호가 결정된 입력 값 간의 연산을 수행하여 제1 출력 데이터를 획득할 수 있다(S530).
구체적으로, 전자 장치(100)는 제2 모듈을 통해 부호 데이터에 포함된 -1 또는 1 중 하나를 제2 입력 데이터에 포함된 입력 값에 적용하여 제2 입력 데이터에 포함된 입력 값의 부호를 결정할 수 있다.
예를 들어, 제2 모듈이 시스톨릭 배열을 가지는 복수의 연산 모듈을 포함하고, 복수의 연산 모듈 각각은 부호 데이터를 이용하여 제2 입력 데이터의 부호를 결정하는 부호 결정 회로 및 부호가 결정된 제2 입력 데이터에 포함된 입력 값 간의 합 연산을 수행하는 연산 회로를 포함할 수 있다.
이 때, 전자 장치(100)는 제2 입력 데이터 중 제1 입력 값 및 부호 데이터 중 제1 입력 값에 대응되는 부호 값을 복수의 연산 모듈 중 제1 연산 모듈에 포함된 제1 부호 결정 회로에 입력하여 제1 입력 값의 부호를 결정할 수 있다.
그리고, 전자 장치(100)는 부호가 결정된 제1 입력 값 및 시스톨릭 배열 상에서 제1 연산 모듈의 상위에 배치된 제2 연산 모듈에서 출력된 제2 입력 값을 제1 연산 모듈 중 제1 연산 회로에 입력하여 제1 입력 값 및 제2 입력 값의 합산 값을 획득할 수 있다.
전자 장치(100)는 제1 출력 데이터를 제3 모듈에 입력하여 제1 출력 데이터에 포함된 출력 값 정규화할 수 있다(S540). 구체적으로, 전자 장치(100)는 제3 모델을 통해 제1 출력 데이터에 포함된 출력 값의 가수의 첫째 자리가 기수보다 작은 한자리 자연수가 되도록 변경하여 제1 출력 데이터에 포함된 출력 값을 정규화할 수 있다.
그리고, 전자 장치(100)는 정규화된 출력 값이 포함된 데이터와 스케일링 인자 데이터에 대해 곱 연산을 수행하여 제2 출력 데이터 획득할 수 있다(S550).
한편, 본 개시에 첨부된 도면은 본 개시에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 실시예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 개시에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 개시에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 개시에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 개시에서 사용된 표현 "~하도록 구성된(또는 설정된)(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)를 의미할 수 있다.
본 개시의 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 서버 클라우드를 포함할 수 있다. 상기 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다.
명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적은 저장매체'는 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다. 예로, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.
일 실시 예에 따르면, 본 개시에 개시된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품(예로, 다운로더블 앱(downloadable app))의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.

Claims (15)

  1. 전자 장치에 있어서,
    제1 입력 데이터 및 신경망 모델의 연산에 이용되는 가중치 데이터를 저장하는 메모리; 및
    상기 가중치 데이터를 부호(sign) 데이터와 스케일링 인자(scaling factor) 데이터의 조합으로 양자화(quantization)하여 양자화 데이터를 획득하는 프로세서;를 포함하고,
    상기 프로세서는,
    상기 제1 입력 데이터를 제1 모듈에 입력하여 상기 제1 입력 데이터에 포함된 입력 값들의 지수(exponent)가 동일한 값으로 변환된 제2 입력 데이터를 획득하고,
    상기 제2 입력 데이터 및 상기 부호 데이터를 제2 모듈에 입력하여, 상기 제2 입력 데이터에 포함된 입력 값의 부호를 결정하고 상기 부호가 결정된 입력 값 간의 연산을 수행하여 제1 출력 데이터를 획득하고,
    상기 제1 출력 데이터를 제3 모듈에 입력하여 상기 제1 출력 데이터에 포함된 출력 값을 정규화(normalize)하고,
    상기 정규화된 출력 값이 포함된 데이터와 상기 스케일링 인자 데이터에 대해 곱 연산을 수행하여 제2 출력 데이터를 획득하는 전자 장치.
  2. 제1항에 있어서,
    상기 프로세서는,
    상기 제1 모델을 통해 상기 제1 입력 데이터에 포함된 입력 값들의 지수 중 최소 값을 식별하고, 상기 제1 입력 데이터에 포함된 입력 값들의 지수를 상기 식별된 최소 값으로 변환하여 상기 제2 입력 데이터를 획득하는 전자 장치.
  3. 제1항에 있어서,
    상기 프로세서는,
    상기 제2 모듈을 통해 상기 부호 데이터에 포함된 -1 또는 1 중 하나를 상기 제2 입력 데이터에 포함된 입력 값에 적용하여 상기 제2 입력 데이터에 포함된 입력 값의 부호를 결정하는 전자 장치.
  4. 제1항에 있어서,
    상기 제2 모듈은 시스톨릭 배열(systolic array)을 가지는 복수의 연산 모듈을 포함하고,
    상기 복수의 연산 모듈 각각은 부호 데이터를 이용하여 상기 제2 입력 데이터의 부호를 결정하는 부호 결정 회로 및 상기 부호가 결정된 제2 입력 데이터에 포함된 입력 값 간의 합 연산을 수행하는 연산 회로를 포함하는 전자 장치.
  5. 제4항에 있어서,
    상기 프로세서는,
    상기 제2 입력 데이터 중 제1 입력 값 및 상기 부호 데이터 중 상기 제1 입력 값에 대응되는 부호 값을 상기 복수의 연산 모듈 중 제1 연산 모듈에 포함된 제1 부호 결정 회로에 입력하여 상기 제1 입력 값의 부호를 결정하는 전자 장치.
  6. 제5항에 있어서,
    상기 프로세서는,
    상기 부호가 결정된 제1 입력 값 및 상기 시스톨릭 배열 상에서 상기 제1 연산 모듈의 상위에 배치된 제2 연산 모듈에서 출력된 제2 입력 값을 상기 제1 연산 모듈 중 제1 연산 회로에 입력하여 상기 제1 입력 값 및 상기 제2 입력 값의 합산 값을 획득하는 전자 장치.
  7. 제1항에 있어서,
    상기 프로세서는,
    상기 제1 출력 데이터에 포함된 출력 값의 가수(mantissa)의 첫째 자리가 기수(base)보다 작은 한자리 자연수가 되도록 변경하여 상기 제1 출력 데이터에 포함된 출력 값을 정규화하는 전자 장치.
  8. 제1항에 있어서,
    상기 스케일링 인자 및 상기 제1 입력 데이터 중 적어도 하나는 부동 소수점(floating point) 형태의 데이터로 구현된 것을 특징으로 하는 전자 장치.
  9. 제1항에 있어서,
    상기 프로세서는,
    상기 가중치 데이터를 k 개의 상기 부호 데이터 및 상기 스케일링 인자 데이터의 곱을 합산하는 방식으로 양자화하고,
    상기 k의 크기는 상기 신경망 모델의 연산을 수행할 때 요구되는 정확도 레벨에 기초하여 결정하는 것을 특징으로 하는 전자 장치.
  10. 제1 입력 데이터 및 신경망 모델의 연산에 이용되는 가중치 데이터를 저장하는 메모리를 포함하는 전자 장치의 제어 방법에 있어서,
    상기 가중치 데이터를 부호(sign) 데이터와 스케일링 인자(scaling factor) 데이터의 조합으로 양자화(quantization)하여 양자화 데이터를 획득하는 단계;
    상기 제1 입력 데이터를 제1 모듈에 입력하여 상기 제1 입력 데이터에 포함된 입력 값들의 지수(exponent)가 동일한 값으로 변환된 제2 입력 데이터를 획득하는 단계;
    상기 제2 입력 데이터 및 상기 부호 데이터를 제2 모듈에 입력하여, 상기 제2 입력 데이터에 포함된 입력 값의 부호를 결정하고 상기 부호가 결정된 입력 값 간의 연산을 수행하여 제1 출력 데이터를 획득하는 단계;
    상기 제1 출력 데이터를 제3 모듈에 입력하여 상기 제1 출력 데이터에 포함된 출력 값을 정규화(normalize)하는 단계: 및
    상기 정규화된 출력 값이 포함된 데이터와 상기 스케일링 인자 데이터에 대해 곱 연산을 수행하여 제2 출력 데이터를 획득하는 단계;를 포함하는 제어 방법.
  11. 제10항에 있어서,
    상기 제2 입력 데이터를 획득하는 단계는,
    상기 제1 모델을 통해 상기 제1 입력 데이터에 포함된 입력 값들의 지수 중 최소 값을 식별하고, 상기 제1 입력 데이터에 포함된 입력 값들의 지수를 상기 식별된 최소 값으로 변환하여 상기 제2 입력 데이터를 획득하는 단계;를 포함하는 제어 방법.
  12. 제10항에 있어서,
    상기 제1 출력 데이터를 획득하는 단계는,
    상기 제2 모듈을 통해 상기 부호 데이터에 포함된 -1 또는 1 중 하나를 상기 제2 입력 데이터에 포함된 입력 값에 적용하여 상기 제2 입력 데이터에 포함된 입력 값의 부호를 결정하는 단계;를 포함하는 제어 방법.
  13. 제10항에 있어서,
    상기 제2 모듈은 시스톨릭 배열(systolic array)을 가지는 복수의 연산 모듈을 포함하고,
    상기 복수의 연산 모듈 각각은 부호 데이터를 이용하여 상기 제2 입력 데이터의 부호를 결정하는 부호 결정 회로 및 상기 부호가 결정된 제2 입력 데이터에 포함된 입력 값 간의 합 연산을 수행하는 연산 회로를 포함하는 것을 특징으로 하는 제어 방법.
  14. 제13항에 있어서,
    상기 제1 출력 데이터를 획득하는 단계는,
    상기 제2 입력 데이터 중 제1 입력 값 및 상기 부호 데이터 중 상기 제1 입력 값에 대응되는 부호 값을 상기 복수의 연산 모듈 중 제1 연산 모듈에 포함된 제1 부호 결정 회로에 입력하여 상기 제1 입력 값의 부호를 결정하는 단계;를 포함하는 제어 방법.
  15. 제14항에 있어서,
    상기 제1 출력 데이터를 획득하는 단계는,
    상기 부호가 결정된 제1 입력 값 및 상기 시스톨릭 배열 상에서 상기 제1 연산 모듈의 상위에 배치된 제2 연산 모듈에서 출력된 제2 입력 값을 상기 제1 연산 모듈 중 제1 연산 회로에 입력하여 상기 제1 입력 값 및 상기 제2 입력 값의 합산 값을 획득하는 단계;를 포함하는 제어 방법.
PCT/KR2021/011740 2020-10-05 2021-09-01 전자 장치 및 이의 제어 방법 WO2022075600A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/131,164 US20230244441A1 (en) 2020-10-05 2023-04-05 Electronic device and control method therefor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2020-0127980 2020-10-05
KR1020200127980A KR20220045357A (ko) 2020-10-05 2020-10-05 전자 장치 및 이의 제어 방법

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/131,164 Continuation US20230244441A1 (en) 2020-10-05 2023-04-05 Electronic device and control method therefor

Publications (1)

Publication Number Publication Date
WO2022075600A1 true WO2022075600A1 (ko) 2022-04-14

Family

ID=81126635

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2021/011740 WO2022075600A1 (ko) 2020-10-05 2021-09-01 전자 장치 및 이의 제어 방법

Country Status (3)

Country Link
US (1) US20230244441A1 (ko)
KR (1) KR20220045357A (ko)
WO (1) WO2022075600A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180005111A1 (en) * 2016-06-30 2018-01-04 International Business Machines Corporation Generalized Sigmoids and Activation Function Learning
US20190205746A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
US20190205741A1 (en) * 2017-12-29 2019-07-04 Spero Devices, Inc. Digital Architecture Supporting Analog Co-Processor
KR20200091785A (ko) * 2019-01-23 2020-07-31 주식회사 스트라드비젼 하드웨어 최적화를 통해 모바일 장치 또는 높은 정확도의 소형 네트워크에 사용될 cnn 파라미터 양자화를 최적화하기 위하여 cnn 레이어를 변환하는 방법 및 장치
CN111696149A (zh) * 2020-06-18 2020-09-22 中国科学技术大学 针对基于cnn的立体匹配算法的量化方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180005111A1 (en) * 2016-06-30 2018-01-04 International Business Machines Corporation Generalized Sigmoids and Activation Function Learning
US20190205746A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
US20190205741A1 (en) * 2017-12-29 2019-07-04 Spero Devices, Inc. Digital Architecture Supporting Analog Co-Processor
KR20200091785A (ko) * 2019-01-23 2020-07-31 주식회사 스트라드비젼 하드웨어 최적화를 통해 모바일 장치 또는 높은 정확도의 소형 네트워크에 사용될 cnn 파라미터 양자화를 최적화하기 위하여 cnn 레이어를 변환하는 방법 및 장치
CN111696149A (zh) * 2020-06-18 2020-09-22 中国科学技术大学 针对基于cnn的立体匹配算法的量化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DIPANKAR DAS ET AL: "Mixed Precision Training of Convolutional Neural Networks using Integer Operations", ARXIV.ORG, CORNELL UNIVERSITY LIBRARY, 201 OLIN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 3 February 2018 (2018-02-03), 201 Olin Library Cornell University Ithaca, NY 14853 , pages 1 - 11, XP080857087 *
LI YANG; BAO YUANYUAN; CHEN WAI: "Fixed-Sign Binary Neural Network: An Efficient Design of Neural Network for Internet-of-Things Devices", IEEE ACCESS, IEEE, USA, vol. 8, 9 September 2020 (2020-09-09), USA , pages 164858 - 164863, XP011809874, DOI: 10.1109/ACCESS.2020.3022902 *

Also Published As

Publication number Publication date
US20230244441A1 (en) 2023-08-03
KR20220045357A (ko) 2022-04-12

Similar Documents

Publication Publication Date Title
US11475298B2 (en) Using quantization in training an artificial intelligence model in a semiconductor solution
US20220093085A1 (en) Always-On Keyword Detector
CN111931922A (zh) 一种提高模型推断精度的量化方法
CN111816162B (zh) 一种语音变化信息检测方法、模型训练方法以及相关装置
US11593628B2 (en) Dynamic variable bit width neural processor
JP7224447B2 (ja) 符号化方法、装置、機器およびプログラム
CN111816159A (zh) 一种语种识别方法以及相关装置
WO2021230470A1 (ko) 전자 장치 및 그 제어 방법
CN111339737A (zh) 实体链接方法、装置、设备及存储介质
CN112748899A (zh) 一种数据处理方法和相关设备
WO2022075600A1 (ko) 전자 장치 및 이의 제어 방법
WO2020246724A1 (en) Electronic apparatus and method of performing operations thereof
WO2022010064A1 (ko) 전자 장치 및 그의 제어 방법
WO2022145676A1 (ko) 전자 장치 및 이의 제어 방법
CN115129877B (zh) 标点符号预测模型的生成方法、装置和电子设备
WO2022097902A1 (ko) 전자 장치 및 이의 제어 방법
US20230394276A1 (en) Subtask storage for streaming convolutions in neural network processor
WO2021242073A1 (ko) 전자 장치 및 이의 제어 방법
WO2022131476A1 (ko) 인공지능 모델을 변환하는 전자 장치 및 그 동작 방법
WO2022177091A1 (ko) 전자 장치 및 이의 제어 방법
WO2022239967A1 (ko) 전자 장치 및 이의 제어 방법
WO2021015403A1 (en) Electronic apparatus and controlling method thereof
WO2021091149A1 (ko) 전자 장치 및 이의 제어 방법
US11614937B1 (en) Accelerator circuit for mathematical operations with immediate values table
CN111800535A (zh) 终端运行状态的评估方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21877852

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21877852

Country of ref document: EP

Kind code of ref document: A1