KR102653107B1 - 연산 방법 및 장치 - Google Patents

연산 방법 및 장치 Download PDF

Info

Publication number
KR102653107B1
KR102653107B1 KR1020210111118A KR20210111118A KR102653107B1 KR 102653107 B1 KR102653107 B1 KR 102653107B1 KR 1020210111118 A KR1020210111118 A KR 1020210111118A KR 20210111118 A KR20210111118 A KR 20210111118A KR 102653107 B1 KR102653107 B1 KR 102653107B1
Authority
KR
South Korea
Prior art keywords
input data
mantissa
bit width
adjusted
data
Prior art date
Application number
KR1020210111118A
Other languages
English (en)
Other versions
KR20230029073A (ko
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 KR1020210111118A priority Critical patent/KR102653107B1/ko
Priority to CN202210592342.1A priority patent/CN115718585A/zh
Priority to US17/829,838 priority patent/US20230058095A1/en
Priority to EP22190514.4A priority patent/EP4141646B1/en
Priority to JP2022131999A priority patent/JP2023031296A/ja
Publication of KR20230029073A publication Critical patent/KR20230029073A/ko
Application granted granted Critical
Publication of KR102653107B1 publication Critical patent/KR102653107B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers
    • 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
    • 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/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths

Landscapes

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

Abstract

연산 방법 및 장치가 개시된다. 일 실시예에 따른 연산 방법은 부동 소수점(floating point)으로 표현된 복수의 입력 데이터들을 수신하는 단계, 입력 데이터들 각각의 크기에 기초하여 입력 데이터들 각각의 가수(mantissa)의 비트 폭(bit width)을 조정하는 단계 및 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행하는 단계를 포함한다.

Description

연산 방법 및 장치{METHOD AND DEVICE FOR CALCULATION}
아래 실시예들은 연산 방법 및 장치에 관한 것이다.
인공신경망(Artificial Neural Network)은 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조하여 구현된다. 인공신경망 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 인공신경망을 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다. 인공신경망을 처리하는 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 따라서, 인공신경망을 이용하여 대량의 입력 데이터를 실시간으로 분석하여, 원하는 정보를 추출하기 위해서는 인공신경망에 관한 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
일 실시예에 따른 연산 방법은 부동 소수점(floating point)으로 표현된 복수의 입력 데이터들을 수신하는 단계; 상기 입력 데이터들 각각의 크기에 기초하여 상기 입력 데이터들 각각의 가수(mantissa)의 비트 폭(bit width)을 조정하는 단계; 및 상기 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행하는 단계를 포함한다.
상기 가수의 비트 폭을 조정하는 단계는 상기 입력 데이터들 각각의 지수(exponent)의 크기에 기초하여, 상기 입력 데이터들 각각의 가수의 비트 폭을 조정하는 단계를 포함할 수 있다.
상기 가수의 비트 폭을 조정하는 단계는 상기 입력 데이터들 각각의 크기에 비례하여 상기 가수의 비트 폭을 조정하는 단계를 포함할 수 있다.
상기 가수의 비트 폭을 조정하는 단계는 상기 입력 데이터들 각각을 임계값과 비교하는 단계; 및 상기 비교 결과에 기초하여, 가수의 비트 폭을 조정하는 단계를 포함할 수 있다.
상기 임계값은 상기 입력 데이터의 분포(distribution) 및 허용 가능한 오차 범위에 기초하여 결정될 수 있다.
일 실시예에 따른 연산 방법은 상기 복수의 입력 데이터들의 분포를 수신하는 단계; 및 상기 복수의 입력 데이터들의 분포에 기초하여, 상기 복수의 입력 데이터들 각각에 대응하는 임계값을 결정하는 단계를 더 포함할 수 있다.
상기 연산을 수행하는 단계는 상기 비트 폭이 조정된 입력 데이터들이 입력되는 연산기의 위치 및 타이밍을 제어하는 단계를 포함할 수 있다.
상기 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행하는 단계는 상기 입력 데이터들 각각의 상기 조정된 비트 폭에 기초하여, 미리 정해진 수의 연산기에서 수행되는 상기 연산의 싸이클 수를 결정하는 단계; 및 상기 결정된 싸이클 수에 대응하여, 상기 비트 폭이 조정된 입력 데이터들을 상기 연산기에 입력하는 단계를 포함할 수 있다.
상기 연산의 싸이클 수를 결정하는 단계는 상기 입력 데이터들 각각의 상기 조정된 비트 폭 및 상기 연산기가 한 싸이클에 처리할 수 있는 비트 수에 기초하여, 상기 연산의 싸이클 수를 결정하는 단계를 포함할 수 있다.
상기 연산기는 상기 입력 데이터들의 가수의 인티저(integer) 곱셈을 수행하는 곱셈기; 상기 곱셈기의 결과를 시프팅하는 시프터(shifter); 및 상기 시프팅된 결과를 누산하는 누산기(accumulator)를 포함할 수 있다.
상기 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행하는 단계는 상기 입력 데이터들 각각의 상기 조정된 비트 폭에 기초하여, 미리 정해진 수의 상기 연산의 싸이클 내에서 상기 연산을 수행하기 위한 연산기의 수를 결정하는 단계; 및 상기 결정된 연산기의 수에 대응하여, 상기 비트 폭이 조정된 입력 데이터들을 상기 연산기에 입력하는 단계를 포함할 수 있다.
상기 연산기의 수를 결정하는 단계는 상기 입력 데이터들 각각의 상기 조정된 비트 폭 및 상기 연산기가 한 싸이클에 처리할 수 있는 비트 수에 기초하여, 상기 연산기의 수를 결정하는 단계를 포함할 수 있다.
일 실시예에 따른 연산 장치는 부동 소수점(floating point)으로 표현된 복수의 입력 데이터들을 수신하고, 상기 입력 데이터들 각각의 크기에 기초하여 상기 입력 데이터들 각각의 가수(mantissa)의 비트 폭(bit width)을 조정하고, 상기 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행하는 프로세서를 포함한다.
상기 프로세서는 상기 입력 데이터들 각각의 지수(exponent)의 크기에 기초하여, 상기 입력 데이터들 각각의 가수의 비트 폭을 조정할 수 있다.
상기 프로세서는 상기 입력 데이터들 각각의 크기에 비례하여 상기 가수의 비트 폭을 조정할 수 있다.
상기 프로세서는 상기 데이터들 각각을 임계값과 비교하고, 상기 비교 결과에 기초하여 가수의 비트 폭을 조정할 수 있다.
상기 임계값은 상기 입력 데이터의 분포(distribution) 및 허용 가능한 오차 범위에 기초하여 결정될 수 있다.
상기 프로세서는 상기 복수의 입력 데이터들의 분포를 수신하고, 상기 복수의 입력 데이터들의 분포에 기초하여 상기 복수의 입력 데이터들 각각에 대응하는 임계값을 결정할 수 있다.
상기 프로세서는 상기 비트 폭이 조정된 입력 데이터들이 입력되는 연산기의 위치 및 타이밍을 제어할 수 있다.
상기 프로세서는 상기 입력 데이터들 각각의 상기 조정된 비트 폭에 기초하여, 미리 정해진 수의 연산기에서 수행되는 상기 연산의 싸이클 수를 결정하고, 상기 결정된 싸이클 수에 대응하여, 상기 비트 폭이 조정된 입력 데이터들을 상기 연산기에 입력할 수 있다.
상기 프로세서는 상기 입력 데이터들 각각의 상기 조정된 비트 폭 및 상기 연산기가 한 싸이클에 처리할 수 있는 비트 수에 기초하여, 상기 연산의 싸이클 수를 결정할 수 있다.
상기 연산기는 상기 입력 데이터들의 가수의 인티저(integer) 곱셈을 수행하는 곱셈기; 상기 곱셈기의 결과를 시프팅하는 시프터(shifter); 및 상기 시프팅된 결과를 누산하는 누산기(accumulator)를 포함할 수 있다.
상기 프로세서는 상기 입력 데이터들 각각의 상기 조정된 비트 폭에 기초하여, 미리 정해진 수의 상기 연산의 싸이클 내에서 상기 연산을 수행하기 위한 연산기의 수를 결정하고, 상기 결정된 연산기의 수에 대응하여, 상기 비트 폭이 조정된 입력 데이터들을 상기 연산기에 입력할 수 있다.
상기 프로세서는 상기 입력 데이터들 각각의 상기 조정된 비트 폭 및 상기 연산기가 한 싸이클에 처리할 수 있는 비트 수에 기초하여, 상기 연산기의 수를 결정할 수 있다.
일 실시예에 따른 연산 장치는 부동 소수점(floating point)으로 표현된 복수의 입력 데이터들의 분포를 수신하고, 상기 복수의 입력 데이터들의 분포에 기초하여, 상기 복수의 입력 데이터들 각각에 대응하는 임계값을 결정하는 중앙 처리 장치; 및 상기 복수의 입력 데이터들을 수신하고, 상기 입력 데이터들 각각의 크기에 기초하여 상기 입력 데이터들 각각의 가수(mantissa)의 비트 폭(bit width)을 조정하고, 상기 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행하는 하드웨어 가속기를 포함한다.
도 1a는 인공신경망(Artificial Neural Network)를 이용한 딥러닝 연산 방법을 설명하기 위한 도면이다.
도 1b는 딥러닝 연산에서 입력으로 제공되는 입력 특징맵의 데이터와 필터를 설명하기 위한 도면이다.
도 1c는 딥러닝 기반에서 컨볼루션 연산을 수행하는 과정을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 뉴럴 네트워크 장치의 블록도이다.
도 3은 일 실시예에 따른 연산 방법을 설명하기 위한 순서도이다.
도 4는 일 실시예에 따른 동적 부동 소수점을 효율적으로 동작시키는 방법을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 임계값을 이용하여 가수의 비트 폭을 조정하는 구체적인 방법을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 고정된 수의 연산기를 사용하여 연산 싸이클 수를 동적으로 조절하여 동적 부동 소수점의 가수 곱셈 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 7은 고정된 연산 싸이클 내에서 연산에 참여하는 연산기의 수를 동적으로 조절하여 동적 부동 소수점의 가수 곱셈 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 연산 장치를 설명하기 위한 블록도이다.
본 명세서에서 개시되어 있는 특정한 구조적 또는 기능적 내용들은 단지 기술적 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 다양한 다른 형태로 실시될 수 있으며 설명된 구조 또는 기능에 한정되지 않는다.
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~간의"와 "바로~간의" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
실시예들은 데이터 센터, 서버, 퍼스널 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 텔레비전, 스마트 가전 기기, 지능형 자동차, 키오스크, 웨어러블 장치 등 다양한 형태의 제품으로 구현될 수 있다. 이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1a는 인공신경망(Artificial Neural Network)를 이용한 딥러닝 연산 방법을 설명하기 위한 도면이다.
딥러닝(Deep Learning) 등을 포함하는 인공지능(AI) 알고리즘은 인공신경망(Artificial Neural Network, ANN)에 입력 데이터(10)를 입력시키고, 컨볼루션 등의 연산을 통해 출력 데이터(30)를 학습하고, 학습된 인공 신경망을 이용하여 특징을 추출할 수 있다. 인공신경망은 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(Computational Architecture)를 의미할 수 있다. 인공신경망 내에서, 뇌의 뉴런들에 해당되는 노드들은 서로 연결되어 있고, 입력 데이터를 처리하기 위하여 집합적으로 동작한다. 다양한 종류의 뉴럴 네트워크들을 예로 들면, 컨볼루션 뉴럴 네트워크(Convolutional Neural Network, CNN), 회귀 뉴럴 네트워크(Recurrent Neural Network, RNN), 딥 빌리프 네트워크(Deep Belief Network, DBN), 제한된 볼츠만 기계(Restricted Boltzman Machine, RBM) 방식 등이 있으나, 이에 제한되지 않는다. 피드-포워드(feed-forward) 뉴럴 네트워크에서, 뉴럴 네트워크의 뉴런들은 다른 뉴런들과의 연결들(links)을 갖는다. 이와 같은 연결들은 뉴럴 네트워크를 통해, 한 방향으로, 예를 들어 순방향(forward direction)으로 확장될 수 있다.
도 1a는 입력 데이터(10)를 입력 받아 출력 데이터(130)를 출력하는 인공 신경망(예를 들어, 컨볼루션 뉴럴 네트워크(Convolution Neural Network, CNN)(20))의 구조를 도시한다. 인공신경망은 2개 이상의 레이어(layer)를 보유한 딥 뉴럴 네트워크(deep neural network)일 수 있다.
컨볼루션 뉴럴 네트워크(20)는 입력 데이터(10)로부터 테두리, 선 색 등과 같은 "특징들(features)"을 추출하기 위해 이용될 수 있다. 컨볼루션 뉴럴 네트워크(20)는 복수의 레이어를 포함할 수 있다. 각각의 레이어는 데이터를 수신할 수 있고, 해당 레이어에 입력되는 데이터를 처리하여 해당 레이어에서 출력되는 데이터를 생성할 수 있다. 레이어에서 출력되는 데이터는, 컨볼루션 뉴럴 네트워크(20)에 입력된 이미지 또는 입력된 특징맵(feature map)을 필터(filter) 웨이트(weight) 값과 컨볼루션 연산하여 생성한 특징맵일 수 있다. 컨볼루션 뉴럴 네트워크(20)의 초기 레이어들은 입력으로부터 에지들 또는 그레디언트들과 같은 낮은 레벨의 특징들을 추출하도록 동작될 수 있다. 컨볼루션 뉴럴 네트워크(20)의 다음 레이어들은 이미지 내의 눈, 코 등과 같은 점진적으로 더 복잡한 특징들을 추출할 수 있다.
도 1b는 딥러닝 연산에서 입력으로 제공되는 입력 특징맵의 데이터와 필터를 설명하기 위한 도면이다.
도 1b를 참조하면, 입력 특징맵(100)은 인공신경망에 입력되는 이미지의 픽셀 값 또는 수치 데이터의 집합일 수 있으나, 이에 제한되지 않는다. 도 1b에서 입력 특징맵(100)은 인공신경망을 통해 학습 또는 인지해야 할 대상이 되는 이미지의 픽셀 값일 수 있다. 예를 들어, 입력 특징맵(100)은 256×256의 픽셀과 K의 깊이(depth)를 가질 수 있다.
필터(110-1 내지 110-n)은 N개로 형성될 수 있다. 복수의 필터(110-1 내지 110-n) 각각은 n by n(n×n)의 웨이트(weight) 값을 포함할 수 있다. 예를 들어, 복수의 필터(110-1 내지 110-n) 각각은 3×3의 픽셀과 K의 깊이값을 가질 수 있다.
도 1c는 딥러닝 컨볼루션 연산을 수행하는 과정을 설명하기 위한 도면이다.
도 1c를 참조하면, 인공신경망에서 컨볼루션 연산을 수행하는 과정은, 각각의 레이어에서 입력 특징맵(100)과 필터(110)와의 곱셈 및 덧셈 연산을 하여 출력 값을 생성하고, 출력 값을 누적하여 합산함으로써, 출력 특징맵(120)을 생성하는 과정을 의미할 수 있다.
컨볼루션 연산 수행 과정은, 현재 레이어에서 입력 특징맵(100)의 좌측 상단으로부터 우측 하단까지 일정한 크기, 즉 n×n 크기의 필터(110)를 적용하여 곱셈 및 덧셈 연산을 수행하는 과정이다. 이하에서는, 필터(110)의 크기가 3×3인 경우에 컨볼루션 연산을 수행하는 과정을 설명하기로 한다.
예를 들어, 먼저 입력 특징맵(100)의 좌측 상단 제1 영역(101)에서 3×3, 즉 제1 방향으로 3개의 데이터와 제2 방향으로 3개의 데이터를 포함한 총 9개의 데이터(X11 내지 X33)를 각각 필터(110)의 웨이트 값(weight)(W11 내지 W33)과 곱하는 연산을 수행한다. 이후, 곱셈 연산의 출력 값, 즉 X11*W11, X12*W12, X13*W13, X21*W21, X22*W22, X23*W23, X31*W31, X32*W32, X33*W33을 모두 누적하여 합산하면 출력 특징맵(120)의 제1-1 출력 데이터(Y11)가 생성된다.
이후, 입력 특징맵(100)의 좌측 상단의 제1 영역(101)에서 제2 영역(102)으로 데이터의 단위만큼 이동하면서 연산한다. 이 때, 컨볼루션 연산 과정에서 입력 특징맵(100) 내의 데이터가 이동하는 개수를 스트라이드(stride)라고 하며, 스트라이드의 크기에 따라 생성되는 출력 특징맵(120)의 크기가 결정될 수 있다. 예를 들어, 스트라이드가 1인 경우, 제2 영역(102)에 포함된 총 9개의 입력 데이터(X12 내지 X34)를 필터(110)의 웨이트 값(W11 내지 W33)과 곱하는 연산을 수행하고, 곱셈 연산의 출력 값인 X12*W11, X13*W12, X14*W13, X22*W21, X23*W22, X24*W23, X32*W31, X33*W32, X34*W33을 모두 누적하여 합산하면 출력 특징맵(120)의 제1-2 출력 데이터(Y12)가 생성된다.
도 2는 일 실시예에 따른 뉴럴 네트워크 장치의 블록도이다.
도 2를 참조하면, 일 실시예에 따른 뉴럴 네트워크 장치(200)는 호스트(host)(210), 하드웨어 가속기(230) 및 메모리(220)를 포함할 수 있다. 도 2에 도시된 뉴럴 네트워크 장치(200)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(200)는 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
호스트(210)는 뉴럴 네트워크 장치(200)를 제어하기 위한 전반적인 기능을 수행하는 역할을 한다. 호스트(210)는 뉴럴 네트워크 장치(200) 내의 메모리(220)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(200)를 전반적으로 제어한다. 호스트(210)는 뉴럴 네트워크 장치(200) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
호스트(210)는 분류(classification)를 위해 학습된 뉴럴 네트워크를 이용하여 입력 데이터가 클래스들 중 어느 클래스에 해당하는 지에 대한 연산 결과를 출력할 수 있다. 구체적으로, 분류를 위한 뉴럴 네트워크는, 입력 데이터가 클래스들 각각에 해당할 가능성에 대한 연산 결과를, 클래스들 각각에 대한 결과값으로써 출력할 수 있다. 또한, 분류를 위한 뉴럴 네트워크는, 소프트맥스 레이어(softmax layer) 및 손실 레이어(loss layer)를 포함할 수 있다. 소프트맥스 레이어는, 클래스들 각각에 대한 결과값을 확률값으로 변환시킬 수 있고, 손실 레이어는 뉴럴 네트워크의 학습을 위한 목적함수(objective function)로서 손실을 연산할 수 있다.
메모리(220)는 뉴럴 네트워크 장치(200) 내에서 처리된 데이터들 및 처리될 데이터들을 저장하는 하드웨어일 수 있다. 또한, 메모리(220)는 뉴럴 네트워크 장치(200)에 의해 구동될 애플리케이션, 드라이버 등을 저장할 수 있다. 메모리(220)는 DRAM과 같은 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 를 포함할 수 있다.
뉴럴 네트워크 장치(200)는 뉴럴 네트워크 구동을 위한 하드웨어 가속기(230)를 포함할 수 있다. 하드웨어 가속기(230)는 예를 들어, 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등에 해당될 수 있다.
도 3은 일 실시예에 따른 연산 방법을 설명하기 위한 순서도이다.
도 3의 동작은 도시된 순서 및 방식으로 수행될 수 있지만, 도시된 실시예의 사상 및 범위를 벗어나지 않으면서 일부 동작의 순서가 변경되거나 일부 동작이 생략될 수 있다. 도 3에 도시된 다수의 동작은 병렬로 또는 동시에 수행될 수 있다. 도 3의 블록들 및 블록들의 조합은 특정 기능을 수행하는 특수 목적 하드웨어 기반 컴퓨터, 또는 특수 목적 하드웨어 및 컴퓨터 명령들의 조합에 의해 구현될 수 있다.
딥러닝 연산은 많은 레이어들에 대해 반복적인 곱셈 및 덧셈 연산을 처리해야 하므로 많은 계산량을 동반할 수 있다. 아래에서 상세히 설명하겠지만 일 실시예에 따른 연산 장치는 부동 소수점으로 표현된 데이터를 변환하여 딥러닝 계산량을 줄일 수 있다.
단계(310)에서, 하드웨어 가속기는 부동 소수점(floating point)으로 표현된 복수의 입력 데이터들을 수신한다. 하드웨어 가속기는 연산 장치로 지칭될 수도 있다. 입력 데이터는 도 1a 내지 도 1c를 참조하여 설명한 웨이트 값 및 입력 특징맵 데이터를 포함할 수 있다.
일 실시예에 따른 연산 방법을 설명하기에 앞서, 데이터를 부동 소수점으로 표현하는 방법을 선행적으로 설명한다. 부동 소수점은 실수를 근사하여 표현하는 방식으로, 소수점의 위치를 고정하지 않고 유효숫자를 나타내는 가수와 소수점의 위치를 나태내는 지수로 나누어 표현한다. 예를 들어, 10진법으로 표현된 263.3을 2진법으로 표현하면 100000111.0100110…이고, 이를 1.0000011101*28으로 표현할 수 있다. 나아가, 이를 16 비트 부동 소수점으로 표현하면 부호(sign)의 비트(1bit)는 0(양수), 지수(exponent)의 비트(5bit)는 11000(8+16(bias))이고, 가수(mantissa) 비트는 0000011101(10bit)로, 최종적으로 0110000000011101로 표현할 수 있다.
단계(320)에서, 하드웨어 가속기는 입력 데이터들 각각의 크기에 기초하여 가수의 비트 폭을 조정한다. 하드웨어 가속기는 딥러닝 연산 중에 부동 소수점의 가수의 비트 폭을 해당 입력 데이터의 크기에 따라 동적으로 다르게 설정함으로써 부동 소수점으로 표현된 입력 데이터들의 사이의 곱셈 및 덧셈 연산에 필요한 비트 폭을 줄여, 정확도 손실을 최소화 하며 연산 복잡도를 감소시킬 수 있다. 일 실시예에 따른 방법에 따라 조정된 입력 데이터의 표현 방식을 동적 부동 소수점(dynamic floating point number)으로 지칭할 수 있다.
전술한 바와 같이 딥러닝 연산은 많은 레이어에 대해 반복적인 곱셈 및 덧셈 연산을 포함하므로 많은 연산량을 동반하는 바, 많은 연산을 저비용 고효율로 처리하기 위해 다양한 양자화 기법 및 이를 지원하기 위한 하드웨어 가속기가 제안되었다. 양자화 기법은 인공 신경망 파라미터의 프리시전(precision)을 낮춤으로서 연산 속도를 높이는 방법으로, 예를 들어, 32비트 부동 소수점 데이터를 8비트 정수(integer) 데이터로 변환하는 방법일 수 있다.
그러나, 데이터를 양자화할 경우 연산 속도를 높일 수는 있으나 연산 정확도가 떨어지는 바, 연산 정확도를 유지하기 위해서는 재학습(re-training) 과정이 요구될 수 있다. 또한, 실시간으로 연산을 수행할 경우, 배치 정규화(batch normalization) 등 양자화 오차가 큰 연산을 수행 할 때 마다 역양자화(de-quantization)(예를 들어, 8비트 정수 데이터를 32비트 부동 소수점 데이터로 변환)를 수행한 뒤 부동 소수점으로 표현된 데이터로 연산을 수행하고, 이후 이어지는 계산의 연산 복잡도를 줄이기 위해 다시 양자화를 수행하는 역양자화 및 양자화 과정이 필요하므로, 이를 통해 얻을 수 있는 이득이 제한적일 수 있다. 반면에, 일 실시예에 따른 하드웨어 가속기는 정확도 손실과 연산량을 동시에 줄일 수 있다.
크기가 큰 데이터를 근사화할수록 전체 연산 정확도가 떨어지기 때문에, 하드웨어 가속기는 데이터의 크기에 비례하여 가수의 비트 폭을 할당하는 방법을 통해 정확도 손실과 연산량을 동시에 줄일 수 있다.
일 실시예에 따른 하드웨어 가속기는 입력 데이터 전체를 이용하지 않고, 지수만 이용하여 가수의 비트 폭을 조정할 수 있다. 예를 들어, 하드웨어 가속기는 지수의 크기에 비례하여 가수의 비트 폭을 조정할 수 있며, 이 방식은 입력 데이터 전체를 이용하는 것에 비해 액세스(access) 속도 및 연산 속도 측면에서 유리하다. 또한, 지수는 소수점의 위치를 표현하는 바 지수의 크기는 입력 데이터 크기에 절대적인 영향을 미치기 때문에 지수의 크기를 이용하여 가수의 비트 폭을 조정하는 것은 전체 연산 정확도를 크게 저하시키지 않는다. 입력 데이터의 지수의 크기가 작을수록 입력 데이터의 가수가 전체적인 연산의 정확도에 미치는 영향이 작아질 수 있다. 하드웨어 가속기는 지수가 큰 입력 데이터의 가수에 더 큰 비트 폭을 할당하고, 지수가 작은 입력 데이터의 가수에 더 작은 비트 폭을 할당하여, 정확도 손실과 연산 복잡도를 동시에 감소시킬 수 있다.
보다 구체적으로, 하드웨어 가속기는 비교기(comparator)를 이용하여 입력 데이터의 지수를 임계값(threshold)과 비교하여, 지수가 큰 입력 데이터의 가수에 더 큰 비트 폭을 할당하고, 지수가 작은 입력 데이터의 가수에 더 작은 비트 폭을 할당할 수 있다. 실시예에 따른 임계값을 이용하여 가수의 비트 폭을 조정하는 구체적인 방법은 아래에서 도 5를 참조하여 설명된다.
단계(330)에서, 하드웨어 가속기는 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행한다. 하드웨어 가속기는 비트 폭이 조정된 입력 데이터들 사이의 곱셈 및 덧셈 연산을 수행할 수 있다. 예를 들어, 하드웨어 가속기는 비트 폭이 조정된 웨이트 값과 비트 폭이 조정된 입력 특징맵 사이의 곱셈 및 덧셈 연산을 수행할 수 있다.
하드웨어 가속기는 입력 데이터들 각각의 지수 끼리 곱셈, 가수 끼리 곱셈을 수행한 뒤 정규화를 통해 곱셈 연산을 수행할 수 있다. 지수 끼리의 곱셈은 밑이 같은 지수들 끼리의 곱셈이므로 덧셈을 수행하는 것과 동일하며, 가수 끼리의 곱셈은 인티저(integer) 곱셈과 동일한 방식으로 수행될 수 있다. 일 실시예에 따른 비트 폭이 조정된 입력 데이터들 사이의 구체적인 연산 방법은 아래에서 도 6 내지 도 7을 참조하여 설명된다.
하드웨어 가속기는 매 레이어마다 단계들(310 내지 330)을 반복할 수 있다. 하드웨어 가속기는 레이어 별로 해당 레이어에 입력되는 입력 데이터들을 수신하여 입력 데이터 각각의 가수의 비트 폭을 조정하고, 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행할 수 있다. 나아가, 입력 데이터의 지수와 비교되는 임계값 또한 매 레이어 별로 결정될 수 있다.
도 4는 일 실시예에 따른 동적 부동 소수점을 효율적으로 동작시키는 방법을 설명하기 위한 도면이다.
도 4를 참조하면, 일 실시예에 따른 하드웨어 가속기는 동적 부동 소수점 변환 유닛(dynamic floating point conversion unit)(410) 및 혼합 프리시전 연산 유닛(mixed precision arithmetic unit)(420)을 포함할 수 있다.
하드웨어 가속기는 부동 소수점으로 표현된 제1 입력(401)과 제2 입력(402)을 수신할 수 있다. 예를 들어, 제1 입력(401)은 웨이트 값일 수 있고, 제2 입력(402)은 입력 특징맵일 수 있고, 또는 그 반대로 제1 입력(401)은 입력 특징맵이고, 제2 입력(402)는 웨이트 값일 수도 있다.
하드웨어 가속기의 동적 부동 소수점 변환 유닛(410)은 제1 입력(401) 및 제2 입력(402) 각각의 지수 크기에 기초하여 제1 입력(401) 및 제2 입력(402) 가수의 비트 폭을 조정할 수 있다. 즉, 동적 부동 소수점 변환 유닛(410)은 부동 소수점으로 표현된 제1 입력(401) 및 제2 입력(402)을 가수의 비트 폭이 더 작은 형태인 동적 부동 소수점으로 변환할 수 있다.
동적 부동 소수점 변환 유닛(410)은 비교기를 포함할 수 있고, 비교기를 이용하여 입력 데이터의 지수를 임계값(threshold)과 비교하여, 지수가 큰 입력 데이터의 가수에 더 큰 비트 폭을 할당하고, 지수가 작은 입력 데이터의 가수에 더 작은 비트 폭을 할당할 수 있다. 동적 부동 소수점 변환 유닛(410)은 입력 데이터 전체가 아닌 지수만을 이용하여 임계값 비교를 수행하기 때문에, 부동 소수점으로 표현된 데이터를 적은 비용 및 정확도 손실을 지불하고 변환할 수 있다.
동적 부동 소수점 변환 유닛(410)은 입력 데이터 가수에 할당된 비트 폭에 관한 정보를 비트 폭이 조정된 입력 데이터들과 함께 출력할 수 있다. 예를 들어, 동적 부동 소수점 변환 유닛(410)은 제1 입력(401)의 비트 폭에 관한 정보(403) 및 제2 입력(402)의 비트 폭에 관한 정보(404)를 동적 부동 소수점으로 표현된 제1 입력 데이터(405) 및 제2 입력 데이터(406)와 함께 출력할 수 있다.
하드웨어 가속기의 혼합 프리시전 연산 유닛(420)은 동적 부동 소수점으로 표현된 제1 입력 데이터(405) 및 제2 입력 데이터(406) 사이의 연산을 수행할 수 있다. 혼합 프리시전 연산 유닛(420)은 MAC 연산을 수행할 수 있는 연산기를 포함할 수 있다.
하드웨어 가속기는 제1 입력(401)의 비트 폭에 관한 정보(403) 및 제2 입력(402)의 비트 폭에 관한 정보(404)에 기초하여, 동적 부동 소수점으로 표현된 제1 입력 데이터(405) 및 제2 입력 데이터(406)가 혼합 프리시전 연산 유닛(420)에 입력되는 타이밍, 혼합 프리시전 연산 유닛(420)에서 수행되는 연산 싸이클의 수, 동작하는 연산기의 수를 제어할 수 있다.
혼합 프리시전 연산 유닛(420)은 공간 융합(spatial fusion) 방법 및/또는 시간적 융합(temporal fusion) 방법을 사용하여 혼합 프리시전 연산을 지원하며, 가수의 비트 폭이 줄어든 경우 더 높은 처리량(throughput)을 얻을 수 있다. 그 결과 하드웨어 가속기는 기존 부동 소수점 연산 대비 하드웨어 동작 속도 및 소모 전력을 개선할 수 있다. 공간 융합(spatial fusion) 방법 및 시간적 융합(temporal fusion) 방법에 관한 상세한 설명은 아래에서 도 6 내지 도 7을 참조하여 설명된다.
도 5는 일 실시예에 따른 임계값을 이용하여 가수의 비트 폭을 조정하는 구체적인 방법을 설명하기 위한 도면이다.
일 실시예에 따른 뉴럴 네트워크 장치는 매 레이어 별로 입력 데이터의 분포를 수신하여, 레이어 각각의 입력 데이터들에 대응하는 임계값을 결정할 수 있다. 예를 들어, 도 5를 참조하면 일 실시예에 따른 뉴럴 네트워크 장치는 해당 레이어의 입력 데이터에 대응하는 4개의 임계값(, , , )을 결정할 수 있다. 뉴럴 네트워크 장치는 도 2의 뉴럴 네트워크 장치(200)일 수 있다.
도 5에서는 임계값 는 각각이 서로 크기는 동일하나 부호가 상이한 대칭 관계를 가질 수 있지만 실시예에 따라 임계값들 끼리 대칭관계를 갖지 않을 수도 있다, 또한, 도 5에서, 4개의 임계값이 예시로 설명되었으나, 임계값의 수는 이에 한정되지 않고 다양하게 채용될 수 있다. 실시예에 따라 뉴럴 네트워크 장치의 호스트 또는 뉴럴 네트워크 장치의 하드웨어 가속기가 임계값을 결정할 수 있다. 예를 들어, 학습된 웨이트 값의 경우, 뉴럴 네트워크 장치의 호스트에서 웨이트 값에 대한 임계값을 결정하고, 뉴럴 네트워크 장치의 하드웨어 가속기는 호스트로부터 결정된 임계값을 수신할 수 있다. 또한, 입력 특징맵 값의 경우, 뉴럴 네트워크 장치의 하드웨어 가속기에서 입력 특징맵에 대한 임계값을 결정할 수 있다.
입력 데이터의 분포는 웨이트 값의 경우 학습된 인공 신경망의 웨이트 값 분포를, 입력 특징맵의 경우 샘플링(sampling)된 인풋셋(input set)의 분포를 의미할 수 있다.
뉴럴 네트워크 장치는 브루트 포스 알고리즘(brute-force algorithm)을 이용하여 웨이트 값 및 입력 특징맵에 대응하는 임계값을 결정할 수 있다. 뉴럴 네트워크 장치는 모든 임계값 조합들 각각의 연산량 및 연산 정확도를 계산하여, 미리 정해진 기준을 만족하는 임계값 조합을 결정할 수 있다.
보다 구체적으로, 뉴럴 네트워크 장치는 모든 임계값 조합들 각각에 대하여, 브루트 포스 알고리즘을 이용하여 평균 밸류 와이즈 에러(average value-wise error가 미리 정해진 최대 평균 밸류 와이즈 에러(pre-defined maximum average value-wise error)보다 작으면서, 연산 복잡도가 가장 낮은 후보 임계값의 조합을 찾을 수 있다. 다만, 임계값을 결정하는 방법은 앞서 제시된 예시에 한정되지 않고, 연산 정확도를 연산량으로 나눈 값이 최대가 될 수 있는 임계값 조합을 결정할 수 있는 임의의 알고리즘을 포함할 수 있다.
뉴럴 네트워크 장치는 임계값을 결정한 뒤 해당 임계값을 기준으로 입력 데이터의 분포를 복수의 영역으로 나누고, 입력 데이터의 가수에 각각의 영역에 대응하는 비트 폭을 할당할 수 있다. 예를 들어, 뉴럴 네트워크 장치는 입력 데이터의 지수의 크기에 따라 해당 데이터의 가수에 10bit, 8bit, 4bit을 동적으로 할당할 수 있다.
보다 구체적으로, 뉴럴 네트워크 장치는 입력 데이터의 지수가 제1 영역(510)인 에 해당하는 경우, 해당 입력 데이터의 가수에 4bit를 할당할 수 있고, 입력 데이터의 지수가 제2 영역(520)인 ; 에 해당하는 경우, 해당 입력 데이터의 가수에 8bit를 할당할 수 있고, 입력 데이터의 지수가 제3 영역(530)인 ; 에 해당하는 경우, 해당 입력 데이터의 가수에 10bit를 할당할 수 있다. 도 5에서는 설명의 편의를 위해 가수에 할당되는 비트 폭을 4bit, 8bit, 10bit로 설명하였으나, 할당되는 비트 폭은 이에 한정되지 않고 다양한 크기의 비트 폭이 채용될 수 있다. 아래에서, N-bit로 표현된 입력 데이터를 기준으로, 가수에 10bit가 할당된 동적 부동 소수점을 DFP N_L로, 가수에 8bit가 할당된 동적 부동 소수점을 DFP N_M으로, 가수에 4bit가 할당된 동적 부동 소수점을 DFP N_S로, 지칭할 수 있다. 예를 들어, 16bit로 표현된 입력 데이터의 가수에 4bit가 할당되었다면, 해당 동적 부동 소수점은 DPF16_S로 지칭될 수 있다.
도 6은 일 실시예에 따른 고정된 수의 연산기를 사용하여 연산 싸이클 수를 동적으로 조절하여 동적 부동 소수점의 가수 곱셈 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 6을 참조하면, 도면(610)은 시간적 융합(temporal fusion) 방법에 따라 DPF16_L 데이터와 DPF16_S 데이터 사이의 가수 곱셈 연산을 수행하는 방법을 도시한 도면이고, 도면(620)은 시간적 융합 방법에 따라 DPF16_L 데이터와 DPF16_L 데이터 사이의 가수 곱셈 연산을 수행하는 방법을 도시한 도면이다.
혼합 프리시전 연산 유닛은 도 4의 혼합 프리시전 연산 유닛(420)일 수 있고, 4x4 곱셈기, 시프터(shifter) 및 누산기(accumulator)를 포함할 수 있다. 한 세트의 연산기(4x4 곱셈기, 시프터 및 누산기)는 복수의 싸이클에 따라 동작하여 가수 곱셈 연산을 수행할 수 있다.
도면(620)에서 설명된 것처럼 16bit 부동 소수점으로 표현된 두 데이터의 가수 곱셈 연산을 하나의 4x4 곱셈기로 수행할 경우, 해당 입력 데이터의 가수에 고정적으로 10비트가 할당되기 때문에 항상 9싸이클이 소모되는 반면에, 일 실시예에 따른 동적 부동 소수점으로 변환된 입력 데이터를 사용할 경우 성능이 최대 9배까지 개선될 수 있다(예를 들어, DPF16_S 데이터와 DPF16_S 데이터 사이의 연산의 경우 1싸이클만 소모).
예를 들어, 도면(610)에 설명된 것처럼, DPF16_L 데이터와 DPF16_S 데이터 사이의 가수 곱셈 연산은 3싸이클만 소모될 수 있다. 구체적으로, 혼합 프리시전 연산 유닛은 제1 싸이클에서 DPF16_L 데이터의 하위 4bit와 DPF16_S 데이터의 4bit 사이의 곱셈연산을, 제2 싸이클에서 DPF16_L 데이터의 중간 4bit와 DPF16_S 데이터의 4bit 사이의 곱셈연산을, 그리고 제3 싸이클에서 DPF16_L 데이터의 상위 2bit와 DPF16_S 데이터의 4bit 사이의 곱셈연산을 수행하여, DPF16_L 데이터와 DPF16_S 데이터 사이의 가수 곱셈 연산을 완료할 수 있다.
도 7은 고정된 연산 싸이클 내에서 연산에 참여하는 연산기의 수를 동적으로 조절하여 동적 부동 소수점의 가수 곱셈 연산을 수행하는 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 도면(710)은 공간적 융합(spatial fusion) 방법에 따라 DPF16_L 데이터와 DPF16_S 데이터 사이의 가수 곱셈 연산 방법을 도시한 도면이다.
혼합 프리시전 연산 유닛은 도 4의 혼합 프리시전 연산 유닛(420)일 수 있고, 4x4 곱셈기, 시프터(shifter) 및 누산기(accumulator)로 구성된 복수의 연산기를 포함할 수 있다. 예를 들어, 혼합 프리시전 연산 유닛은 9개의 연산기를 포함할 수 있다.
예를 들어, 도면(710)을 참조하면, DPF16_L 데이터와 DPF16_S 데이터 사이의 가수 곱셈 연산의 경우, 9개의 연산기가 1싸이클당 3개의 연산을 수행할 수 있다. 즉, 해당 케이스에서 혼합 프리시전 연산 유닛은 3개의 연산기를 하나의 연산기 세트로 묶어, 1 싸이클에서 하나의 DPF16_L 데이터와 3개의 DPF16_S 데이터(제1 DPF16_S 데이터, 제2 DPF16_S 데이터, 제3 DPF16_S 데이터)의 연산을 수행할 수 있다.
구체적으로, 혼합 프리시전 연산 유닛은 제1 연산기 세트에서 DPF16_L 데이터와 제1 DPF16_S 데이터 사이의 곱셈연산을, 제2 연산기 세트에서 DPF16_L 데이터와 제2 DPF16_S 데이터 사이의 곱셈연산을, 그리고 제3 연산기 세트에서 DPF16_L 데이터와 제3 DPF16_S 데이터 사이의 곱셈연산을 수행하여, 1개의 DPF16_L 데이터와 3개의 DPF16_S 데이터(제1 DPF16_S 데이터, 제2 DPF16_S 데이터, 제3 DPF16_S 데이터) 사이의 가수 곱셈 연산을 완료할 수 있다.
도 8은 일 실시예에 따른 연산 장치를 설명하기 위한 블록도이다.
도 8을 참조하면, 일 실시예에 따른 연산 장치(800)는 프로세서(810), 메모리(830) 및 통신 인터페이스(850)를 포함할 수 있다. 프로세서(810), 메모리(830) 및 통신 인터페이스(850) 는 통신 버스(805)를 통해 서로 통신할 수 있다.
프로세서(810)는 부동 소수점(floating point)으로 표현된 복수의 입력 데이터들을 수신하고, 입력 데이터들 각각의 지수(exponent) 크기에 기초하여 입력 데이터들 각각의 가수(mantissa)의 비트 폭(bit width)을 조정하고, 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행한다.
메모리(830)는 휘발성 메모리 또는 비 휘발성 메모리일 수 있다.
이 밖에도, 프로세서(810)는 도 1a 내지 도 7을 통해 전술한 방법 또는 방법에 대응되는 알고리즘을 수행할 수 있다. 프로세서(810)는 프로그램을 실행하고, 연산 장치(800)를 제어할 수 있다. 프로세서(810)에 의하여 실행되는 프로그램 코드는 메모리(830)에 저장될 수 있다. 연산 장치(800)는 입출력 장치(미도시)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 또는 네트워크)에 연결되고, 데이터를 교환할 수 있다. 연산 장치(800)는 스마트 폰, 테블릿 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터, 텔레비전, 웨어러블 장치, 보안 시스템, 스마트 홈 시스템 등 다양한 컴퓨팅 장치 및/또는 시스템에 탑재될 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 프로세서, 콘트롤러, 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 (26)

  1. 부동 소수점(floating point)으로 표현된 복수의 입력 데이터들을 수신하는 단계;
    상기 입력 데이터들 각각의 지수(exponent)의 크기에 기초하여 상기 입력 데이터들 각각의 가수(mantissa)에 마스킹을 수행하여 가수의 비트 폭(bit width)을 조정하는 단계; 및
    상기 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행하는 단계
    를 포함하고,
    상기 가수의 비트 폭을 조정하는 단계는
    상기 입력 데이터들 각각의 지수의 크기에 비례하여 상기 가수의 비트 폭을 조정하는 단계
    를 포함하는 연산 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 가수의 비트 폭을 조정하는 단계는
    상기 입력 데이터들 각각을 임계값과 비교하는 단계; 및
    상기 비교 결과에 기초하여, 상기 가수의 비트 폭을 조정하는 단계
    를 포함하는, 연산 방법.
  5. 제4항에 있어서,
    상기 임계값은
    상기 입력 데이터의 분포(distribution) 및 허용 가능한 오차 범위에 기초하여 결정되는, 연산 방법.
  6. 제1항에 있어서,
    상기 복수의 입력 데이터들의 분포를 수신하는 단계; 및
    상기 복수의 입력 데이터들의 분포에 기초하여, 상기 복수의 입력 데이터들 각각에 대응하는 임계값을 결정하는 단계
    를 더 포함하는, 연산 방법.
  7. 제1항에 있어서,
    상기 연산을 수행하는 단계는
    상기 비트 폭이 조정된 입력 데이터들이 입력되는 연산기의 위치 및 타이밍을 제어하는 단계
    를 포함하는, 연산 방법.
  8. 제1항에 있어서,
    상기 연산을 수행하는 단계는
    상기 입력 데이터들 각각의 상기 조정된 가수의 비트 폭에 기초하여, 미리 정해진 수의 연산기에서 수행되는 상기 연산의 싸이클 수를 결정하는 단계; 및
    상기 결정된 싸이클 수에 대응하여, 상기 비트 폭이 조정된 입력 데이터들을 상기 연산기에 입력하는 단계
    를 포함하는, 연산 방법.
  9. 제8항에 있어서,
    상기 연산의 싸이클 수를 결정하는 단계는
    상기 입력 데이터들 각각의 상기 조정된 가수의 비트 폭 및 상기 연산기가 한 싸이클에 처리할 수 있는 비트 수에 기초하여, 상기 연산의 싸이클 수를 결정하는 단계
    를 포함하는, 연산 방법.
  10. 제8항에 있어서,
    상기 연산기는
    상기 입력 데이터들의 가수의 인티저(integer) 곱셈을 수행하는 곱셈기;
    상기 곱셈기의 결과를 시프팅하는 시프터(shifter); 및
    상기 시프팅된 결과를 누산하는 누산기(accumulator)
    를 포함하는, 연산 방법.
  11. 제1항에 있어서,
    상기 연산을 수행하는 단계는
    상기 입력 데이터들 각각의 상기 조정된 가수의 비트 폭에 기초하여, 미리 정해진 수의 상기 연산의 싸이클 내에서 상기 연산을 수행하기 위한 연산기의 수를 결정하는 단계; 및
    상기 결정된 연산기의 수에 대응하여, 상기 비트 폭이 조정된 입력 데이터들을 상기 연산기에 입력하는 단계
    를 포함하는, 연산 방법.
  12. 제11항에 있어서,
    상기 연산기의 수를 결정하는 단계는
    상기 입력 데이터들 각각의 상기 조정된 가수의 비트 폭 및 상기 연산기가 한 싸이클에 처리할 수 있는 비트 수에 기초하여, 상기 연산기의 수를 결정하는 단계
    를 포함하는, 연산 방법.
  13. 제1항 및 제4항 내지 제12항 중 어느 한 항의 방법을 수행하기 위한 명령어들을 포함하는 하나 이상의 프로그램을 저장한 컴퓨터 판독 가능 저장매체.
  14. 부동 소수점(floating point)으로 표현된 복수의 입력 데이터들을 수신하고, 상기 입력 데이터들 각각의 지수(exponent)의 크기에 기초하여 상기 입력 데이터들 각각의 가수(mantissa)에 마스킹을 수행하여 가수의 비트 폭(bit width)을 조정하고, 상기 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행하는 프로세서
    를 포함하고,
    상기 프로세서는
    상기 입력 데이터들 각각의 지수의 크기에 비례하여 상기 가수의 비트 폭을 조정하는 연산 장치.
  15. 삭제
  16. 삭제
  17. 제14항에 있어서,
    상기 프로세서는
    상기 입력 데이터들 각각을 임계값과 비교하고, 상기 비교 결과에 기초하여 상기 가수의 비트 폭을 조정하는, 연산 장치.
  18. 제17항에 있어서,
    상기 임계값은
    상기 입력 데이터의 분포(distribution) 및 허용 가능한 오차 범위에 기초하여 결정되는, 연산 장치.
  19. 제14항에 있어서,
    상기 프로세서는
    상기 복수의 입력 데이터들의 분포를 수신하고, 상기 복수의 입력 데이터들의 분포에 기초하여 상기 복수의 입력 데이터들 각각에 대응하는 임계값을 결정하는, 연산 장치.
  20. 제14항에 있어서,
    상기 프로세서는
    상기 비트 폭이 조정된 입력 데이터들이 입력되는 연산기의 위치 및 타이밍을 제어하는, 연산 장치.
  21. 제14항에 있어서,
    상기 프로세서는
    상기 입력 데이터들 각각의 상기 조정된 가수의 비트 폭에 기초하여, 미리 정해진 수의 연산기에서 수행되는 상기 연산의 싸이클 수를 결정하고, 상기 결정된 싸이클 수에 대응하여, 상기 비트 폭이 조정된 입력 데이터들을 상기 연산기에 입력하는, 연산 장치.
  22. 제21항에 있어서,
    상기 프로세서는
    상기 입력 데이터들 각각의 상기 조정된 가수의 비트 폭 및 상기 연산기가 한 싸이클에 처리할 수 있는 비트 수에 기초하여, 상기 연산의 싸이클 수를 결정하는, 연산 장치.
  23. 제21항에 있어서,
    상기 연산기는
    상기 입력 데이터들의 가수의 인티저(integer) 곱셈을 수행하는 곱셈기;
    상기 곱셈기의 결과를 시프팅하는 시프터(shifter); 및
    상기 시프팅된 결과를 누산하는 누산기(accumulator)
    를 포함하는, 연산 장치.
  24. 제14항에 있어서,
    상기 프로세서는
    상기 입력 데이터들 각각의 상기 조정된 가수의 비트 폭에 기초하여, 미리 정해진 수의 상기 연산의 싸이클 내에서 상기 연산을 수행하기 위한 연산기의 수를 결정하고, 상기 결정된 연산기의 수에 대응하여, 상기 비트 폭이 조정된 입력 데이터들을 상기 연산기에 입력하는, 연산 장치.
  25. 제24항에 있어서,
    상기 프로세서는
    상기 입력 데이터들 각각의 상기 조정된 가수의 비트 폭 및 상기 연산기가 한 싸이클에 처리할 수 있는 비트 수에 기초하여, 상기 연산기의 수를 결정하는, 연산 장치.
  26. 부동 소수점(floating point)으로 표현된 복수의 입력 데이터들의 분포를 수신하고, 상기 복수의 입력 데이터들의 분포에 기초하여, 상기 복수의 입력 데이터들 각각에 대응하는 임계값을 결정하는 중앙 처리 장치; 및
    상기 복수의 입력 데이터들을 수신하고, 상기 입력 데이터들 각각의 지수(exponent)의 크기에 기초하여 상기 입력 데이터들 각각의 가수(mantissa)에 마스킹을 수행하여 가수의 비트 폭(bit width)을 조정하고, 상기 비트 폭이 조정된 입력 데이터들 사이의 연산을 수행하는 하드웨어 가속기
    를 포함하고,
    상기 하드웨어 가속기는
    상기 입력 데이터들 각각의 지수의 크기에 비례하여 상기 가수의 비트 폭을 조정하는 연산 장치.
KR1020210111118A 2021-08-23 2021-08-23 연산 방법 및 장치 KR102653107B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020210111118A KR102653107B1 (ko) 2021-08-23 2021-08-23 연산 방법 및 장치
CN202210592342.1A CN115718585A (zh) 2021-08-23 2022-05-27 硬件加速器和用于在硬件加速器中计算的方法
US17/829,838 US20230058095A1 (en) 2021-08-23 2022-06-01 Method and apparatus with calculation
EP22190514.4A EP4141646B1 (en) 2021-08-23 2022-08-16 Method and apparatus with calculation
JP2022131999A JP2023031296A (ja) 2021-08-23 2022-08-22 演算方法及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210111118A KR102653107B1 (ko) 2021-08-23 2021-08-23 연산 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20230029073A KR20230029073A (ko) 2023-03-03
KR102653107B1 true KR102653107B1 (ko) 2024-04-01

Family

ID=82939721

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210111118A KR102653107B1 (ko) 2021-08-23 2021-08-23 연산 방법 및 장치

Country Status (5)

Country Link
US (1) US20230058095A1 (ko)
EP (1) EP4141646B1 (ko)
JP (1) JP2023031296A (ko)
KR (1) KR102653107B1 (ko)
CN (1) CN115718585A (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301803B2 (en) * 2009-10-23 2012-10-30 Samplify Systems, Inc. Block floating point compression of signal data
KR20140101216A (ko) * 2013-02-08 2014-08-19 서보렴 고압방전 살균 및 탈취기
KR20190036998A (ko) * 2017-09-28 2019-04-05 이화여자대학교 산학협력단 혈장 대사체를 이용한 혈관질환 진단용 바이오 마커
KR102564456B1 (ko) * 2017-10-19 2023-08-07 삼성전자주식회사 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ADAPTIVE FLOAT,(2020.02.11.) 1부.*
미국공개특허 제2014-0101216호(2014.04.10.) 1부.*
미국공개특허 제2019-0369988호(2019.12.05.) 1부.*
한국공개특허 제10-2019-0043849호(2019.04.29.) 1부.*

Also Published As

Publication number Publication date
US20230058095A1 (en) 2023-02-23
CN115718585A (zh) 2023-02-28
KR20230029073A (ko) 2023-03-03
JP2023031296A (ja) 2023-03-08
EP4141646A1 (en) 2023-03-01
EP4141646B1 (en) 2024-03-13

Similar Documents

Publication Publication Date Title
CN109754066B (zh) 用于生成定点型神经网络的方法和装置
US11568258B2 (en) Operation method
US10096134B2 (en) Data compaction and memory bandwidth reduction for sparse neural networks
KR102562320B1 (ko) 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
KR102655950B1 (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
EP3788559A1 (en) Quantization for dnn accelerators
EP3907601A1 (en) Accelerating neural networks with low precision-based multiplication and exploiting sparsity in higher order bits
US20240054332A1 (en) Adaptive quantization for neural networks
WO2020074989A1 (en) Data representation for dynamic precision in neural network cores
WO2021053381A1 (zh) 神经网络模型的压缩与加速方法、数据处理方法及装置
Daghero et al. Energy-efficient deep learning inference on edge devices
US11783200B2 (en) Artificial neural network implementation in field-programmable gate arrays
KR20210085461A (ko) 프로세싱 장치 및 프로세싱 장치에서 부동 소수점 연산을 처리하는 방법
KR102653107B1 (ko) 연산 방법 및 장치
US20230143985A1 (en) Data feature extraction method and related apparatus
CN115170381A (zh) 一种基于深度学习的视觉slam加速系统及方法
CN117474045A (zh) 一种模型训练方法及相关设备
US11281470B2 (en) Argmax use for machine learning
KR20230068823A (ko) 인공 신경망 모델을 구동하기 위한 연산 방법 및 연산 장치
KR20220125114A (ko) 인코딩 방법 및 장치
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치
KR20230068698A (ko) 인공 신경망 모델을 구동하기 위한 연산 방법 및 연산 장치
KR20230123309A (ko) 프루닝 방법 및 장치
WO2021036412A1 (zh) 数据处理方法、装置、计算机设备和存储介质
US20230185352A1 (en) Analog mac aware dnn improvement

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant