KR20210154502A - 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법 - Google Patents

부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법 Download PDF

Info

Publication number
KR20210154502A
KR20210154502A KR1020200071589A KR20200071589A KR20210154502A KR 20210154502 A KR20210154502 A KR 20210154502A KR 1020200071589 A KR1020200071589 A KR 1020200071589A KR 20200071589 A KR20200071589 A KR 20200071589A KR 20210154502 A KR20210154502 A KR 20210154502A
Authority
KR
South Korea
Prior art keywords
input
sum
currents
neural network
floating
Prior art date
Application number
KR1020200071589A
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 KR1020200071589A priority Critical patent/KR20210154502A/ko
Priority to US17/084,829 priority patent/US20210390382A1/en
Priority to EP20209682.2A priority patent/EP3923204A3/en
Priority to CN202011402051.9A priority patent/CN113807493A/zh
Priority to JP2021094974A priority patent/JP2021197176A/ja
Publication of KR20210154502A publication Critical patent/KR20210154502A/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • G06N3/065Analogue means
    • 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
    • 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
    • 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
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/12Analogue/digital converters
    • 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/084Backpropagation, e.g. using gradient descent

Landscapes

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

Abstract

일부 실시예에 따르면, 아날로그 크로스바 어레이(analog crossbar array)를 이용하여 블록 부동 소수점 형식의 웨이트 및 입력 액티베이션의 소수부들에 대한 MAC(Multiply-Accumulate) 연산을 수행하고, 디지털 연산 회로를 이용하여 블록 부동 소수점 형식의 웨이트 및 입력 액티베이션의 공유 지수부들에 대한 덧셈 연산을 수행하며, MAC 연산의 결과 및 덧셈 연산의 결과를 조합하여, 부동 소수점 출력 액티베이션의 부분 합을 출력하는, 뉴럴 네트워크 장치가 개시된다.

Description

부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법{NEURAL NETWORK APPARATUS PERFORMING FLOATING POINT OPERATION AND OPERATING METHOD OF THE SAME}
부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법에 관한다.
뉴럴 네트워크 연산들을 수행하는 뉴로모픽 프로세서(neuromorphic processor)에 관한 관심이 증대되고 있다. 예를 들어, 뉴런 회로 및 시냅스 회로를 포함하는 뉴로모픽 프로세서를 구현하고자 하는 연구가 진행되고 있다. 이와 같은 뉴로모픽 프로세서는 Convolutional Neural Network(CNN), Recurrent Neural Network(RNN), Feedforward Neural Network(FNN) 등과 같은 다양한 뉴럴 네트워크들을 구동하기 위한 뉴럴 네트워크 장치로 이용될 수 있고, 데이터 분류(classification) 또는 이미지 인식(recognition)을 포함하는 분야들에서 활용될 수 있다.
부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법을 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치의 동작 방법은, 웨이트 커널(weight kernel)들 각각에 대해, 웨이트 커널에 포함되는 웨이트들을 대표하는 제1 공유 지수부(shared exponent)를 결정하고, 상기 제1 공유 지수부에 기초하여 조정된 제1 소수부(fraction)를 포함하는 제1 블록 부동 소수점(block floating point) 형식의 웨이트를 획득하는 단계; 입력 피처 맵(Input feature map)에 포함되는 복수의 입력 스트라이프(stripe)들 각각에 대해, 입력 스트라이프에 포함되는 입력 액티베이션들을 대표하는 제2 공유 지수부를 결정하고, 상기 제2 공유 지수부에 기초하여 조정된 제2 소수부를 포함하는 제2 블록 부동 소수점 형식의 입력 액티베이션을 획득하는 단계; 아날로그 크로스바 어레이(analog crossbar array)를 이용하여 상기 제1 소수부 및 상기 제2 소수부에 대한 MAC(Multiply-Accumulate) 연산을 수행하고, ADC(Analog-Digital Converter)를 이용하여 상기 MAC 연산의 결과를 디지털 신호로 변환하는 단계; 및 디지털 연산 회로를 이용하여 상기 제1 공유 지수부 및 상기 제2 공유 지수부에 대한 덧셈 연산을 수행하고, 상기 MAC 연산의 결과 및 상기 덧셈 연산의 결과를 조합하여, 출력 피처 맵(Output feature map)의 채널에 포함되는 부동 소수점 출력 액티베이션의 부분 합을 출력하는 단계를 포함할 수 있다.
다른 측면에 따르면, 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치는, 웨이트 커널들 각각에 대해, 웨이트 커널에 포함되는 웨이트들을 대표하는 제1 공유 지수부를 결정하고, 상기 제1 공유 지수부에 기초하여 조정된 제1 소수부를 포함하는 제1 블록 부동 소수점 형식의 웨이트를 획득하고, 입력 피처 맵에 포함되는 복수의 입력 스트라이프들 각각에 대해, 입력 스트라이프에 포함되는 입력 액티베이션들을 대표하는 제2 공유 지수부를 결정하고, 상기 제2 공유 지수부에 기초하여 조정된 제2 소수부를 포함하는 제2 블록 부동 소수점 형식의 입력 액티베이션을 획득하는 적어도 하나의 제어 회로; 상기 제1 소수부 및 상기 제2 소수부에 대한 MAC 연산을 수행하는 아날로그 크로스바 어레이, 및 상기 MAC 연산의 결과를 디지털 신호로 변환하는 ADC를 포함하는 인 메모리 컴퓨팅(In-memory computing) 회로; 및 상기 제1 공유 지수부 및 상기 제2 공유 지수부에 대한 덧셈 연산을 수행하고, 상기 MAC 연산의 결과 및 상기 덧셈 연산의 결과를 조합하여, 출력 피처 맵의 채널에 포함되는 부동 소수점 출력 액티베이션의 부분 합을 출력하는 디지털 연산 회로를 포함할 수 있다.
도 1은 일부 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 2는 일부 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 3은 일부 실시예에 따른 인 메모리 컴퓨팅 회로를 나타내는 도면이다.
도 4는 일부 실시예에 따른 뉴럴 네트워크 장치가 부동 소수점 연산을 수행하는 전체적인 과정을 도시한 개요도이다.
도 5는 일부 실시예에 따른 뉴럴 네트워크 장치가 웨이트들을 블록 부동 소수점으로 변환하는 과정을 설명하는 도면이다.
도 6a는 일부 실시예에 따라 블록 부동 소수점으로 변환된 웨이트들이 저장되는 방식을 설명하기 위한 도면이고, 도 6b는 다른 실시예에 따라 블록 부동 소수점으로 변환된 웨이트들이 저장되는 방식을 설명하기 위한 도면이다.
도 7은 일부 실시예에 따른 뉴럴 네트워크 장치가 입력 액티베이션들을 블록 부동 소수점으로 변환하는 과정을 설명하는 도면이다.
도 8은 아날로그 크로스바 어레이가 부호를 갖는 입력 및 웨이트를 지원하는 일부 실시예에 따라 부동 소수점 연산이 수행되는 과정을 설명하기 위한 도면이다.
도 9a 및 도 9b는 아날로그 크로스바 어레이가 부호를 갖는 웨이트를 지원하나, 부호를 갖지 않는 입력을 지원하는 일부 실시예들에 따라 부동 소수점 연산이 수행되는 과정을 설명하기 위한 도면이다.
도 10은 아날로그 크로스바 어레이가 부호를 갖지 않는 입력 및 웨이트를 지원하는 일부 실시예에 따라 부동 소수점 연산이 수행되는 과정을 설명하기 위한 도면이다.
도 11은 일부 실시예에 따른 아날로그 크로스바 어레이의 연산 결과가 디지털 연산 회로의 연산 결과와 조합됨에 따라 부동 소수점 연산의 최종 출력이 출력되는 과정을 설명하기 위한 도면이다.
도 12는 일부 실시예에 따른 뉴럴 네트워크 장치의 동작 방법을 나타내는 흐름도이다.
도 13은 일부 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한, 본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 도는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 1은 일부 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 1을 참고하면, 뉴럴 네트워크(1)는 노드들과 에지들을 이용하여 수학적 모델로 표현될 수 있다. 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. DNN 또는 n-계층 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN), Deep Belief Networks, Restricted Boltzman Machines 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 1의 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크 중 일부의 레이어들에 해당될 수 있다. 따라서, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크의 컨볼루션 레이어, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등에 해당될 수 있다. 다만, 이하에서는 편의상, 뉴럴 네트워크(1)가 컨볼루션 뉴럴 네트워크의 컨볼루션 레이어에 해당되는 것으로 가정하여 설명한다.
컨볼루션 레이어에서, 제 1 피처 맵(feature map 1, FM1)은 입력 피처 맵에 해당될 수 있고, 제 2 피처 맵(FM2)은 출력 피처 맵에 해당될 수 있다. 피처 맵은 입력 데이터의 다양한 특징이 표현된 데이터 세트를 의미할 수 있다. 피처 맵들(FM1, FM2)은 2차원 이상의 고차원 매트릭스일 수 있고, 각각의 액티베이션(activation) 파라미터들을 갖는다. 피처 맵들(FM1, FM2)이 예를 들어 3차원 피처 맵들에 해당되는 경우, 피처 맵들(FM1, FM2)은 너비(W)(또는 칼럼이라고 함), 높이(H)(또는 로우라고 함) 및 깊이(C)를 가진다. 이때, 깊이(C)는 채널들의 개수에 대응될 수 있다.
제 1 피처 맵(FM1)은 복수의 입력 스트라이프(input stripe)들을 포함할 수 있다. 예를 들어, 제 1 피처 맵(FM1)은 H x W 개의 입력 스트라이프들을 포함할 수 있다. 입력 스트라이프란 입력 피처 맵의 하나의 스페이스에 대한 채널 방향 입력 데이터로서, 1 x 1 x C의 크기를 가질 수 있다. 예를 들어, 입력 스트라이프는 C 개의 입력 액티베이션들을 포함할 수 있다.
컨볼루션 레이어에서, 제 1 피처 맵(FM1) 및 웨이트 맵(WM)에 대한 컨볼루션 연산이 수행될 수 있고, 그 결과 제 2 피처 맵(FM2)이 생성될 수 있다. 웨이트 맵(WM)은 제 1 피처 맵(FM1)을 필터링할 수 있으며, 웨이트 필터 또는 웨이트 커널(kernel)로 지칭된다. 일 예에서, 웨이트 맵(WM)의 깊이, 즉 채널 개수는 제 1 피처 맵(FM1)의 깊이, 즉 채널 개수와 동일하다. 웨이트 맵(WM)은 제1 피처 맵(FM1)을 슬라이딩 윈도로 하여 횡단하는 방식으로 시프트된다. 각 시프트 동안, 웨이트 맵(WM)에 포함되는 웨이트들 각각이 제 1 피처 맵(FM1)과 중첩된 영역에서의 모든 피처 값과 곱해지고 더해질 수 있다. 제 1 피처 맵(FM1)과 웨이트 맵(WM)이 컨볼루션됨에 따라, 제 2 피처 맵(FM2)의 하나의 채널이 생성될 수 있다.
도 1에는 하나의 웨이트 맵(WM)이 표시되었으나, 실질적으로는 복수의 웨이트 맵들이 제 1 피처 맵(FM1)과 컨볼루션 되어, 제 2 피처 맵(FM2)의 복수의 채널들이 생성될 수 있다. 한편, 컨벌루션 레이어의 제 2 피처 맵(FM2)은 다음 레이어의 입력 피처 맵이 될 수 있다. 예를 들어, 제 2 피처 맵(FM2)는 풀링(pooling) 레이어의 입력 피처 맵이 될 수 있다. 다만, 이에 제한되는 것은 아니다.
도 2는 일부 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 2를 참조하면, 뉴럴 네트워크(2)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 연산 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다.
뉴럴 네트워크(2)는 앞서 설명된 바와 같이, 2개 이상의 히든 레이어들을 포함하는 DNN 또는 n-계층 뉴럴 네트워크일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 뉴럴 네트워크(2)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. 뉴럴 네트워크(2)가 DNN 아키텍처로 구현된 경우 유효한 정보를 처리할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(2)는 싱글 레이어를 갖는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(2)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)는 더 적거나 많은 레이어들을 포함하거나, 더 적거나 많은 채널들을 포함할 수 있다. 즉, 뉴럴 네트워크(2)는 도 2에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(2)에 포함된 레이어들 각각은 복수의 채널들을 포함할 수 있다. 채널은 뉴런(neuron), 프로세싱 엘리먼트(Processing element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, Layer 1은 2개의 채널들(노드들), Layer 2 및 Layer 3 각각은 3개의 채널들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)에 포함된 레이어들 각각은 다양한 개수의 채널들(노드들)을 포함할 수 있다.
뉴럴 네트워크(2)의 레이어들 각각에 포함된 채널들은 서로 연결되어 데이터를 처리할 수 있다. 예를 들어, 하나의 채널은 다른 채널들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 채널들로 출력할 수 있다.
채널들 각각의 입력 및 출력 각각은 입력 액티베이션 및 출력 액티베이션이라고 지칭될 수 있다. 즉, 액티베이션은 한 채널의 출력임과 동시에, 다음 레이어에 포함된 채널들의 입력에 해당되는 파라미터일 수 있다. 한편, 채널들 각각은 이전 레이어에 포함된 채널들로부터 수신된 액티베이션들 및 웨이트들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 채널에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 채널들 간의 연결관계에 할당되는 값일 수 있다.
채널들 각각은 입력을 수신하여 출력 액티베이션을 출력하는 연산 유닛(computational unit) 또는 프로세싱 엘리먼트(processing element)에 의해 처리될 수 있고, 채널들 각각의 입력-출력은 매핑될 수 있다. 예를 들어, σ는 액티베이션 함수(activation function)이고,
Figure pat00001
는 (i-1) 번째 레이어에 포함된 k 번째 채널로부터 i 번째 레이어에 포함된 j번째 채널로의 웨이트며,
Figure pat00002
는 i 번째 레이어에 포함된 j 번째 채널의 바이어스(bias)이고,
Figure pat00003
는 i 번째 레이어의 j 번째 채널의 액티베이션이라고 할 때, 액티베이션
Figure pat00004
는 다음과 같은 수학식 1을 이용하여 계산될 수 있다.
Figure pat00005
도 2에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 채널(CH 1)의 액티베이션은
Figure pat00006
로 표현될 수 있다. 또한,
Figure pat00007
은 수학식 1에 따라
Figure pat00008
의 값을 가질 수 있다. 액티베이션 함수 σ는 Rectified Linear Unit (ReLU)일 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 액티베이션 함수 σ는 시그모이드(Sigmoid), 하이퍼볼릭 탄젠트(tanh), 맥스아웃(Maxout) 등일 수도 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(2)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 연산 과정을 거친다. 이와 같은 연산 과정에서 수많은 MAC(Multiply-accumulate) 연산들이 수행되며, MAC 연산의 피연산자인 액티베이션 및 웨이트를 적절한 시점에 로드(load)하기 위한 수많은 메모리 접근 동작들이 함께 수행되어야 한다.
한편, 일반적인 디지털 컴퓨터는 연산부와 메모리가 분리되고, 분리된 두 블록들 간의 데이터 전달을 위한 공통의 데이터 버스를 포함하는 폰 노이만(Von Neumann) 구조를 이용한다. 따라서, 데이터의 이동과 연산이 계속해서 반복되는 뉴럴 네트워크(2)를 실시하는 과정에서 데이터 전달을 위해 많은 시간이 소요되고, 과도한 전력이 소모될 수 있다. 이러한 문제를 극복하기 위해, MAC 연산을 수행하기 위한 메모리와 연산부를 하나로 통합시키는 아키텍쳐로서, 인 메모리 컴퓨팅(In-memory Computing) 회로가 제안되었다. 이하 도 3을 참조하여 인 메모리 컴퓨팅 회로에 대해 보다 상세히 설명한다.
도 3은 일부 실시예에 따른 인 메모리 컴퓨팅 회로를 나타내는 도면이다.
도 3을 참조하면, 인 메모리 컴퓨팅 회로(3)는 아날로그 크로스바 어레이(Analog crossbar array)(30) 및 ADC(Analog to Digital Converter)(40)를 포함할 수 있다. 다만, 도 3에 도시된 인 메모리 컴퓨팅 회로(3)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 인 메모리 컴퓨팅 회로(3)에는 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
아날로그 크로스바 어레이(30)는 복수의 로우 라인들(310), 복수의 칼럼 라인들(320) 및 복수의 메모리 셀(330)들을 포함할 수 있다. 복수의 로우 라인들(310)은 입력 데이터를 수신하기 위해 이용될 수 있다. 예를 들어, 복수의 로우 라인들(310)이 N개(N은 임의의 자연수)의 로우 라인들인 경우, N개의 로우 라인들에는 입력 액티베이션들에 대응되는 전압들 V1, V2, ... , VN이 인가될 수 있다. 복수의 칼럼 라인들(320)은 복수의 로우 라인들(310)과 교차할 수 있다. 예를 들어, 복수의 칼럼 라인들(320)이 M개(M은 임의의 자연수)의 칼럼 라인들인 경우, 복수의 칼럼 라인들(320)과 복수의 로우 라인들(310)은 N x M 개의 교차점들에서 교차할 수 있다.
한편, 복수의 로우 라인들(310) 및 복수의 칼럼 라인들(320)의 교차점들에는 복수의 메모리 셀(330)들이 배치될 수 있다. 복수의 메모리 셀(330)들 각각은 웨이트들을 저장하기 위해 ReRAM(Resistive RAM), eFlash 등의 비휘발성 메모리로 구현될 수 있으나, 이에 반드시 제한되는 것은 아니다. 복수의 메모리 셀(330)들 각각은 SRAM(Static Random Access Memory)와 같은 휘발성 메모리일 수도 있다.
도 3에 도시된 예시에 있어서, 복수의 메모리 셀(330)들은 웨이트들에 대응되는 컨턱턴스(Conductance)들 G11, ... , GNM을 가지는바, 복수의 로우 라인들(310) 각각에 입력 액티베이션에 대응되는 전압이 인가되면, 옴(Ohm)의 법칙에 따라 I = V x G의 크기를 갖는 전류가 각 메모리 셀(330)을 통해 출력될 수 있다. 하나의 칼럼 라인을 따라 배치되는 메모리 셀들로부터 출력된 전류들은 서로 합쳐지므로, 복수의 칼럼 라인들(320)을 따라 전류 합 I1, ... , IM이 출력될 수 있다. 전류 합 I1, ... , IM은 아날로그 방식으로 수행된 MAC 연산의 결과에 대응될 수 있다.
ADC(40)는 아날로그 크로스바 어레이(30)로부터 출력된 아날로그 MAC 연산의 결과(즉, 전류 합 I1, ... , IM)를 디지털 신호로 변환할 수 있다. 디지털 신호로 변환된 MAC 연산의 결과는 ADC(40)로부터 출력되어 이후의 뉴럴 네트워크 연산 과정에 이용될 수 있다.
한편, 도 3에 도시된 바와 같은, 인 메모리 컴퓨팅 회로(3)는 디지털 컴퓨터에 비해 코어 연산부의 복잡도가 낮고, 전력 소모가 적으며, 회로의 크기도 작다는 장점들을 가지나, 고정 소수점(Fixed point) 기반의 연산만을 수행 가능할 뿐, 큰 동적 범위(dynamic range)를 지원하는 부동 소수점(Floating point) 기반의 연산을 수행하기 어려울 수 있다.
이에 따라, 종래 기술들은 부동 소수점 기반으로 뉴럴 네트워크에 대한 학습을 수행 한 뒤에, 학습된 뉴럴 네트워크를 양자화(Quantization)하여 고정 소수점 형식으로 변환하였고, 양자화된 뉴럴 네트워크를 실시하는 과정에서만 인 메모리 컴퓨팅 회로(3)를 이용하였다. 다만, 종래 기술들에 따르면 뉴럴 네트워크를 양자화하는 과정에서 정확도 손실이 발생되거나, 정확도 손실을 최소화하기 위한 재학습이 요구될 수도 있었다. 또한, 특정 어플레이케이션을 구현하는 뉴럴 네트워크는 파라미터들의 동적 범위가 매우 커서, 정확도 손실을 최소화하면서 양자화하는 것이 불가능하였다.
본 개시에 따르면, 다양한 장점들을 갖는 인 메모리 컴퓨팅 회로(3)를 활용하면서도 부동 소수점 기반의 연산이 가능한 뉴럴 네트워크 장치가 제공될 수 있다. 이하 도면들을 참조하여 본 개시에 따른 뉴럴 네트워크 장치가 부동 소수점 연산을 수행하는 방법을 상세히 설명한다.
도 4는 일부 실시예에 따른 뉴럴 네트워크 장치가 부동 소수점 연산을 수행하는 전체적인 과정을 도시한 개요도이다.
도 4를 참조하면, 뉴럴 네트워크 장치(4)는 적어도 하나의 제어 회로(410), 인 메모리 컴퓨팅 회로(420) 및 디지털 연산 회로(430)를 포함할 수 있다. 다만, 도 4에 도시된 뉴럴 네트워크 장치(4)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(4)에는 도 4에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
적어도 하나의 제어 회로(410)는 뉴럴 네트워크 장치(4)를 제어하기 위한 전반적인 기능을 수행한다. 예를 들어, 적어도 하나의 제어 회로(410)는 인 메모리 컴퓨팅 회로(420) 및 디지털 연산 회로(430)의 동작을 제어할 수 있다. 한편, 적어도 하나의 제어 회로(410)는 다수의 논리 게이트들의 어레이로 구현될 수 있고, 범용적인 마이크로 프로세서와 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다.
적어도 하나의 제어 회로(410)는 웨이트 커널들 각각에 대해, 웨이트 커널에 포함되는 웨이트들을 대표하는 제1 공유 지수부(shared exponent)를 결정하고, 제1 공유 지수부에 기초하여 조정된 제1 소수부(fraction)를 포함하는 제1 블록 부동 소수점(block floating point) 형식의 웨이트를 획득할 수 있다. 이하 도 5, 도 6a 및 도 6b를 참조하여 적어도 하나의 제어 회로(410)가 블록 부동 소수점 웨이트를 획득하는 방법을 보다 상세히 설명한다.
도 5는 일부 실시예에 따른 뉴럴 네트워크 장치가 웨이트들을 블록 부동 소수점으로 변환하는 과정을 설명하는 도면이다.
도 5를 참조하면, 웨이트 커널의 높이를 R, 웨이트 커널의 너비를 Q, 웨이트 커널의 깊이(즉, 채널들의 개수)를 C, 웨이트 커널들의 개수를 K라고 할 때, 웨이트 커널들에 포함되는 CRQK 개의 웨이트들이 블록 부동 소수점 형태로 변환되는 과정이 도시되어 있다.
본 개시에 따른 뉴럴 네트워크 장치는 고정 소수점 기반의 연산만을 수행할 수 있는 인 메모리 컴퓨팅 회로(예를 들어, 도 4의 인 메모리 컴퓨팅 회로(420))를 활용하여 저전력으로 부동 소수점 연산을 수행하고자 하므로, 부동 소수점 웨이트들에서 인 메모리 컴퓨팅 회로를 활용한 연산이 가능한 부분을 분리할 필요가 있다.
한편, 웨이트 커널들에 포함되는 웨이트들은 부동 소수점 형식의 데이터로서, 각각이 나타내는 값의 크기에 따라 서로 동일하거나 상이한 지수부(exponent)를 가질 수 있는데, 효율적인 연산을 위해서는 특정 크기의 블록 별로 지수부를 공유하는 블록 부동 소수점 형식이 이용될 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 웨이트 커널 별로 공유 지수부가 추출될 수 있고, 하나의 웨이트 커널 내에 포함되는 웨이트들은 동일한 지수부를 공유할 수 있다. 한편, 공유 지수부는 웨이트 커널 내에 포함되는 웨이트들을 모두 표현하기 위해, 웨이트들의 기존의 지수부들 중 최대값으로 결정될 수 있으나, 반드시 이에 제한되는 것은 아니다. 웨이트의 지수부가 기존의 지수부에서 공유 지수부로 변경됨에 따라, 웨이트의 소수부도 대응되는 쉬프트 연산을 통해 조정될 수 있다.
도 5에 도시된 바와 같이, CRQK 개의 웨이트들이 웨이트 커널 단위의 블록 부동 소수점 형태로 변환되면, CRQK 개의 부호 비트들, K개의 공유 지수부들 및 CRQK개의 소수부들만으로 표현될 수 있다. K개의 공유 지수부들은 디지털 연산 회로(430)에 입력되어 디지털 연산에 이용되고, CRQK개의 소수부들은 인 메모리 컴퓨팅 회로(420)에 입력되어 아날로그 연산에 이용될 수 있다. 이하 도 6a 및 도 6b를 참조하여 공유 지수부들 및 소수부들이 각각 디지털 연산 및 아날로그 연산에 이용되기 위해 저장되는 방식을 상세히 설명한다.
도 6a는 일부 실시예에 따라 블록 부동 소수점으로 변환된 웨이트들이 저장되는 방식을 설명하기 위한 도면이고, 도 6b는 다른 실시예에 따라 블록 부동 소수점으로 변환된 웨이트들이 저장되는 방식을 설명하기 위한 도면이다.
한편, 도 6a의 아날로그 크로스바 어레이(610) 및 도 6b의 아날로그 크로스바 어레이(615) 각각은 도 3의 아날로그 크로스바 어레이(30)에 대응되고, 도 6a의 디지털 연산 회로(620) 및 도 6b의 디지털 연산 회로(625) 각각은 도 4의 디지털 연산 회로(430)에 대응되므로, 중복되는 설명은 생략한다.
도 6a를 참조하면, 도 5에서 설명한 바와 같이, 웨이트들이 웨이트 커널 별로 공유 지수부를 갖도록 변환된 경우 특정 레이어에 대해 웨이트들의 공유 지수부들 및 소수부들이 저장되는 방식이 도시되어 있다.
일 예에서, n 번째 레이어, i 번째 입력 채널 및 k 번째 웨이트 커널에 포함되는 웨이트를 나타내는
Figure pat00009
는 다음의 수학식 2와 같이 표현될 수 있다.
Figure pat00010
앞의 수학식 2에서
Figure pat00011
는 웨이트의 부호 비트(sign bit),
Figure pat00012
는 웨이트의 공유 지수부,
Figure pat00013
는 웨이트의 소수부를 나타낸다. 웨이트가 16비트 부동 소수점인 예시에서는 부호 비트는 1 비트로 구성되고, 공유 지수부는 e개의 비트들로 구성되며, 소수부는 f개의 비트들로 구성될 수 있다(1+e+f=16). 한편, 앞의 수학식 2에서는 설명의 간결성을 위해 지수부 바이어스(exponent bias)가 포함되지 않으나, 지수부 바이어스
Figure pat00014
가 포함되는 경우, 앞의 수학식 2에서
Figure pat00015
Figure pat00016
로 수정될 수 있다. 한편, 입력 액티베이션에도 지수부 바이어스가 포함될 수 있으며, 이 경우 웨이트에 지수부 바이어스가 포함되는 경우와 동일한 방식으로 후술할 수학식 3이 수정될 수 있다. 또한, 수학식 2 및 3이 지수부 바이어스들을 고려하여 수정될 경우, 후술할 수학식 4도 수학식 2 및 3의 수정에 대응되도록 수정될 수 있음을 해당 기술분야의 통상의 기술자라면 쉽게 이해할 것이다.
블록 부동 소수점 형식의 웨이트들의 소수부
Figure pat00017
은 아날로그 크로스바 어레이(610)에 저장될 수 있다. 예를 들어, 아날로그 크로스바 어레이(610)가 M 개의 칼럼 라인들을 포함한다고 할 때, M개의 칼럼 라인들 각각은 M개의 웨이트 커널들 각각에 대응될 수 있고, 웨이트 커널에 포함되는 웨이트들은 대응되는 칼럼 라인을 따라 배치되는 메모리 셀들에 저장될 수 있다. 각각이 f 개의 비트들로 구성되는 웨이트들이 N의 크기를 갖는 스트라이프 단위로 커널들의 개수(즉, M개)만큼 저장되는 것이다.
한편, 웨이트들로부터 추출된 공유 지수부
Figure pat00018
은 디지털 연산 회로(620)에 별도로 저장될 수 있다. 디지털 연산 회로(620)는 공유 지수부들에 대응되는 디지털 값들을 저장하기 위한 레지스터 또는 메모리를 포함할 수 있다. 각각이 e개의 비트들로 구성되는 공유 지수부들은 커널들의 개수(즉, M개)만큼 저장되는바, 총 e x M개의 비트들이 저장되는 것이다.
아날로그 크로스바 어레이(610)가 부호를 갖는 웨이트를 지원하는 경우,
Figure pat00019
만 별도로 디지털 연산 회로(620)의 저장 공간에 저장되고, 웨이트의 부호 비트
Figure pat00020
는 아날로그 크로스바 어레이(610)에 저장될 수 있다. 다만, 아날로그 크로스바 어레이(610)가 부호를 갖지 않는 웨이트를 지원하는 경우,
Figure pat00021
Figure pat00022
와 같이, 아날로그 크로스바 어레이(610) 외에 별도의 디지털 연산 회로(620)의 저장 공간에 저장될 수 있다.
이상에서 웨이트들이 웨이트 커널 별로 공유 지수부를 갖도록 변환된 경우에 대해 도 6a를 참조하여 설명하였으나, 이는 하나의 예시에 불과할 뿐이다. 웨이트들은 웨이트 커널 별이 아니라 소정의 그룹 별로 공유 지수부를 갖도록 변환될 수도 있다. 예를 들어, 도 6b에 도시된 바와 같이, 아날로그 크로스바 어레이(615)에 포함되는 특정 개수의 칼럼들(즉, 웨이트 커널들)이 하나의 그룹으로 묶일 수 있고, 각 그룹 별로 공유 지수부가 추출될 수 있다. 이 경우 전체 웨이트들을 나타내기 위한 공유 지수부들의 개수가 감소되고, 아날로그 크로스바 어레이(615)의 출력을 최종 출력으로 변환하는 과정에서의 연산량이 감소될 수 있다.
다만, 지나치게 많은 수의 칼럼들을 하나의 그룹으로 묶는 경우, 정확도 손실이 증가될 수 있는바, 그룹들의 개수는 정확도 손실 및 연산량 간의 트레이드 오프를 고려하여 적절하게 설정될 수 있다. 일 예에서, 웨이트들은 뉴럴 네트워크 장치가 미리 알고 있는 데이터에 해당하므로, 뉴럴 네트워크 장치는 사전에 시뮬레이션을 통해 적절한 그룹들의 개수를 결정할 수 있다. 다만, 이에 반드시 제한되는 것은 아니며, 그룹들의 개수는 실시간으로 결정될 수도 있다. 또한, 그룹들의 개수뿐만 아니라 하나의 그룹에 포함되는 칼럼들의 종류도 함께 결정될 수 있다.
한편, 웨이트들로부터 추출된 공유 지수부들은 디지털 연산 회로(625)에 별도로 저장될 수 있다. 디지털 연산 회로(625)는 공유 지수부들에 대응되는 디지털 값들을 저장하기 위한 레지스터 또는 메모리를 포함할 수 있다. 공유 지수부들은 그룹들의 개수(즉, G개)만큼 저장될 수 있다.
일부 실시예에 따라 아날로그 크로스바 어레이(615)가 센싱되는 전류 또는 입력되는 전압 등을 소정의 증폭률로 증폭 가능한 경우, 특정 그룹들 간의 공유 지수부 차이에 대응되는 부분을 아날로그 크로스바 어레이(615)의 증폭률에 할당하고, 해당 그룹들 간의 공유 지수부를 통일시킬 수 있다. 예를 들어, 아날로그 크로스바 어레이(615)가 센싱되는 전류를 2배 증폭 가능하고, 제1 그룹에 할당될 공유 지수부와 제2 그룹에 할당될 공유 지수부 간의 차이가 1인 경우, 제1 그룹 및 제2 그룹에 서로 다른 공유 지수부들을 할당하는 대신 서로 동일한 공유 지수부를 할당하되, 제1 그룹에 대응되는 전류 합을 획득할 때 센싱되는 전류를 2배로 증폭할 수 있다. 이에 따라, 전체 웨이트들을 나타내기 위한 공유 지수부들의 개수가 추가로 감소될 수 있다.
한편, 앞선 예시에 제한되는 것은 아니며, 센싱되는 전류를 증폭하는 대신 입력되는 전압을 증폭하거나, 센싱되는 전류 및 입력되는 전압을 모두 증폭할 수 있고, 증폭률 또한 2배 대신 4배, 8배 등등으로 다양하게 설정할 수 있음을 해당 기술분야의 통상의 기술자라면 쉽게 이해할 것이다. 센싱되는 전류 및 입력되는 전압 각각을 증폭 가능하고, 증폭률 또한 여러 증폭률들 중 하나를 선택할 수 있다면, 전체 웨이트들을 나타내기 위한 공유 지수부들의 개수는 더욱 더 감소될 수 있을 것이다.
다시 도 4로 돌아와서, 적어도 하나의 제어 회로(410)는 입력 피처 맵에 포함되는 복수의 입력 스트라이프들 각각에 대해, 입력 스트라이프에 포함되는 입력 액티베이션들을 대표하는 제2 공유 지수부를 결정하고, 제2 공유 지수부에 기초하여 조정된 제2 소수부를 포함하는 제2 블록 부동 소수점 형식의 입력 액티베이션을 획득할 수 있다. 이하 도 7을 참조하여 적어도 하나의 제어 회로(410)가 블록 부동 소수점 입력 액티베이션을 획득하는 방법을 보다 상세히 설명한다.
도 7은 일부 실시예에 따른 뉴럴 네트워크 장치가 입력 액티베이션들을 블록 부동 소수점으로 변환하는 과정을 설명하는 도면이다.
도 7을 참조하면, 입력 피처 맵(IFM)의 높이를 H, 입력 피처 맵(IFM)의 너비를 W, 입력 피처 맵(IFM)의 깊이(즉, 채널들의 개수)를 C라고 할 때, 입력 피처 맵(IFM)에 포함되는 HWC 개의 입력 액티베이션들이 블록 부동 소수점 형태로 변환되는 과정이 도시되어 있다.
입력 피처 맵(IFM)에 포함되는 입력 액티베이션들은 입력 스트라이프 단위로 블록 부동 소수점 형태로 변환될 수 있다. 예를 들어, 도 7에 도시된 바와 같이, 입력 액티베이션들이 입력 스트라이프 단위의 블록 부동 소수점 형태로 변환되면, 하나의 입력 스트라이프에 포함되는 입력 액티베이션들은 1 개의 공유 지수부만으로 표현될 수 있다. 하나의 입력 스트라이프에 대응되는 1개의 공유 지수부는 디지털 연산 회로(430)에 입력되어 디지털 연산에 이용되고, 하나의 입력 스트라이프에 대응되는 C개의 소수부들은 인 메모리 컴퓨팅 회로(420)에 입력되어 아날로그 연산에 이용될 수 있다. 하나의 입력 스트라이프에 대응되는 C개의 부호 비트들은 크로스바 아날로그 어레이의 특성(예를 들어, 부호를 갖는 입력을 지원하는지 여부)에 따라 디지털 연산 회로(430)에 입력되어 디지털 연산에 이용되거나, 인 메모리 컴퓨팅 회로(420)에 입력되어 아날로그 연산에 이용될 수 있다.
한편, 입력 액티베이션들의 블록 부동 소수점 변환은 부동 소수점 입력 피처 맵(IFM)이 입력됨에 따라 실시간으로 수행될 수 있다. 하나의 입력 스트라이프를 대표하는 공유 지수부는 해당 입력 스트라이프에 포함되는 입력 액티베이션들의 기존의 지수부들 중 최대값으로 결정될 수 있으나, 반드시 이에 제한되는 것은 아니다. 공유 지수부는 사전에 정의된 규칙에 따라 적절하게 결정될 수 있다.
또한, 입력 액티베이션의 지수부가 기존의 지수부에서 공유 지수부로 변경됨에 따라, 입력 액티베이션의 소수부도 대응되는 쉬프트 연산을 통해 조정될 수 있다. 일 예에서, n 번째 레이어 및 i 번째 입력 채널에 대해, 블록 부동 소수점으로 변환된 입력 액티베이션
Figure pat00023
은 다음의 수학식 3과 같이 표현될 수 있다.
Figure pat00024
앞의 수학식 3에서
Figure pat00025
는 입력 액티베이션의 부호 비트를,
Figure pat00026
는 입력 액티베이션의 공유 지수부를,
Figure pat00027
는 입력 액티베이션의 소수부를 나타낸다.
한편, 도 7에서는 입력 액티베이션들이 입력 스트라이프 단위로 블록 부동 소수점 형태로 변환되는 예시에 대해 설명하였으나, 이에 반드시 제한되는 것은 아니다. 예를 들어, 하나의 입력 스트라이프에 대응되는 채널들의 개수인 C가 인 메모리 컴퓨팅 회로(420)에 포함되는 아날로그 크로스바 어레이의 복수의 로우 라인들의 개수인 ROW보다 큰 경우, 하나의 입력 스트라이프는 각각 C0 및 C1의 길이를 갖는 스트라이프 부분들로 분할될 수 있다(C = C0 + C1 where C0 < ROW, C1 < ROW).
이 경우 입력 액티베이션들은 스트라이프 부분 단위로 블록 부동 소수점 형태로 변환될 수 있다. 다만, 이에 제한되는 것은 아니며, 입력 액티베이션들 기존과 같이 입력 스트라이프 단위로 블록 부동 소수점 형태로 변환되고, 인 메모리 컴퓨팅 회로(420)에만 스트라이프 부분 단위로 입력될 수도 있다.
다시 도 4로 돌아와서, 적어도 하나의 제어 회로(410)는 블록 부동 소수점 형식의 웨이트 및 입력 액티베이션을 이용하여 뉴럴 네트워크 연산을 수행할 수 있다. 예를 들어, 적어도 하나의 제어 회로(410)는 인 메모리 컴퓨팅 회로(420) 및 디지털 연산 회로(430)를 이용하여 뉴럴 네트워크 연산을 수행할 수 있다.
인 메모리 컴퓨팅 회로(420)는 도 3의 인 메모리 컴퓨팅 회로(3)를 참조하여 설명한 바와 같이, 아날로그 크로스바 어레이 및 ADC를 포함할 수 있다. 아날로그 크로스바 어레이는 복수의 로우 라인들, 복수의 로우 라인들과 교차하는 복수의 칼럼 라인들, 및 복수의 로우 라인들 및 복수의 칼럼 라인들의 교차점들에 배치되는 복수의 메모리 셀들을 포함할 수 있다.
적어도 하나의 제어 회로(410)는 웨이트 커널에 포함되는 웨이트들 각각에 대응되는 제1 소수부를 복수의 칼럼 라인들 중 웨이트 커널에 대응되는 칼럼 라인을 따라 배치되는 메모리 셀들에 저장하고, 입력 스트라이프에 포함되는 입력 액티베이션들 각각에 대응되는 제2 소수부를 복수의 로우 라인들에 입력할 수 있다. 이에 따라, 아날로그 크로스바 어레이는 아날로그 방식으로 제1 소수부(웨이트에 대응) 및 제2 소수부(입력 액티베이션에 대응)에 대한 MAC 연산을 수행할 수 있고, MAC 연산의 결과가 복수의 칼럼 라인들을 따라 출력될 수 있다. 한편, ADC는 MAC 연산의 결과를 디지털 신호로 변환함으로써, 추후 디지털 연산 회로(430)에서 MAC 연산의 결과에 대한 디지털 연산이 가능하도록 할 수 있다.
디지털 연산 회로(430)는 제1 공유 지수부 및 제2 공유 지수부에 대한 덧셈 연산을 수행하고, MAC 연산의 결과 및 덧셈 연산의 결과를 조합하여, 출력 피처 맵의 채널에 포함되는 부동 소수점 출력 액티베이션의 부분 합(Partial-sum)을 출력할 수 있다. 예를 들어, 디지털 연산 회로(430)는 하나의 입력 스트라이프에 대응되는 MAC 연산의 결과 및 덧셈 연산의 결과를 조합하여, 부동 소수점 출력 액티베이션을 계산하는데 이용되는 부분 합을 획득할 수 있다. 디지털 연산 회로(430)는 입력 피처 맵에 포함되는 모든 입력 스트라이프들에 대응되는 부분 합들이 획득되면, 획득된 부분 합들을 이용하여 출력 피처 맵의 채널에 포함되는 부동 소수점 출력 액티베이션을 계산할 수 있다.
한편, 웨이트가 앞의 수학식 2와 같이 표현되고, 입력 액티베이션이 앞의 수학식 3과 같이 표현되는 경우, k 번째 웨이트 커널에 대해 계산되는 부분합은 다음의 수학식 4와 같이 표현될 수 있다.
Figure pat00028
앞의 수학식 4에서
Figure pat00029
는 디지털 연산 회로(430)의 덧셈 연산을 통해 간단히 계산될 수 있다. 다만,
Figure pat00030
는 웨이트 및 입력 액티베이션 각각의 부호 비트가 고려되어야 하는바, 인 메모리 컴퓨팅 회로(420)에 포함되는 아날로그 크로스바 어레이가 부호를 갖는 웨이트 또는 입력을 지원하는지 여부에 따라 상이한 방식으로 계산될 수 있다. 이하 도 8 내지 도 10을 참조하여 아날로그 크로스바 어레이가 부호를 갖는 웨이트 또는 입력을 지원하는지 여부에 따른 연산 과정을 상세히 설명한다.
도 8은 아날로그 크로스바 어레이가 부호를 갖는 입력 및 웨이트를 지원하는 일부 실시예에 따라 부동 소수점 연산이 수행되는 과정을 설명하기 위한 도면이다.
일부 실시예에 따라 아날로그 크로스바 어레이가 부호를 갖는 입력을 지원하는 경우, 적어도 하나의 제어 회로(410)는 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트(예를 들어, IFM signs)를 제2 소수부(예를 들어, IFM Fractions)와 함께 복수의 로우 라인들에 입력할 수 있다. 또한, 아날로그 크로스바 어레이가 부호를 갖는 웨이트를 지원하는 경우, 적어도 하나의 제어 회로(410)는 제1 블록 부동 소수점 형식의 웨이트의 부호 비트를 제1 소수부와 함께 메모리 셀들에 저장할 수 있다.
아날로그 크로스바 어레이가 부호를 갖는 입력 및 웨이트를 모두 지원하므로, 아날로그 크로스바 어레이에 단순히 입력 액티베이션 및 웨이트의 부호 비트들을 소수부들과 함께 입력하면, 입력 액티베이션의 부호 및 웨이트의 부호를 모두 고려한 MAC 연산이 수행될 수 있다. 예를 들어, k번째 웨이트 커널에 대응되는 아날로그 크로스바 어레이의 출력
Figure pat00031
는 다음의 수학식 5와 같이 계산될 수 있다.
Figure pat00032
도 9a 및 도 9b는 아날로그 크로스바 어레이가 부호를 갖는 웨이트를 지원하나, 부호를 갖지 않는 입력을 지원하는 일부 실시예들에 따라 부동 소수점 연산이 수행되는 과정을 설명하기 위한 도면이다.
일부 실시예에 따르면, 아날로그 크로스바 어레이가 부호를 갖는 웨이트를 지원하므로, 적어도 하나의 제어 회로(410)는 앞서 도 8을 참조하여 설명한 바와 같이, 제1 블록 부동 소수점 형식의 웨이트의 부호 비트를 제1 소수부와 함께 메모리 셀들에 저장할 수 있다. 이에 따라, 아날로그 크로스바 어레이에는 부호가 양수인 웨이트들뿐만 아니라 부호가 음수인 웨이트들도 함께 저장될 수 있다.
한편, 아날로그 크로스바 어레이가 부호를 갖지 않는 입력을 지원하는 경우, 적어도 하나의 제어 회로(410)는 우선적으로 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트가 제1 값인 로우 라인들만 활성화함으로써, 복수의 칼럼 라인들 각각을 따라 출력되는 제1 전류 합을 획득할 수 있다. 이후 적어도 하나의 제어 회로(410)는 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트가 제2 값인 로우 라인들만 활성화함으로써, 복수의 칼럼 라인들 각각을 따라 출력되는 제2 전류 합을 획득할 수 있다. 제1 값 및 제2 값은 0 또는 1일 수 있고, 서로 다른 값을 가질 수 있다.
이와 같이, 적어도 하나의 제어 회로(410)는 적어도 2개의 사이클들(예를 들어, cycle 0 및 cycle 1)에 걸쳐, 양수의 입력 액티베이션들에 대응되는 제1 전류 합 및 음수의 입력 액테베이션들에 대응되는 제2 전류 합을 개별적으로 획득할 수 있다. 한편, 인 메모리 컴퓨팅 회로(420)의 구성에 따라 제1 전류 합 및 제2 전류 합이 조합되는 방식은 상이할 수 있다.
일 예에서는, 도 9a에 도시된 바와 같이, 제1 전류 합 및 제2 전류 합이 조합되기 이전에 디지털 변환이 먼저 수행될 수 있다. 예를 들어, ADC는 제1 전류 합을 제1 디지털 신호로 변환하고, 제2 전류 합을 제2 디지털 신호로 변환할 수 있다. 제1 전류 합이 제1 디지털 신호로 변환되는 시점 및 제2 전류 합이 제2 디지털 신호로 변환되는 시점은 서로 상이할 수 있으나, 이에 제한되는 것은 아니다.
한편, 해당 예시에서 뉴럴 네트워크 장치는 디지털 어큐물레이터(910)를 더 포함할 수 있다. 디지털 어큐물레이터(910)는 제1 디지털 신호 및 제2 디지털 신호를 조합함으로써, MAC 연산의 결과에 대응되는 디지털 신호를 출력할 수 있다. 예를 들어, 디지털 어큐물레이터(910)는 양수의 입력 액티베이션들에 대응되는 제1 디지털 신호는 가산하고, 음수의 입력 액티베이션들에 대응되는 제2 디지털 신호는 감산함으로써, 제1 디지털 신호 및 제2 디지털 신호를 조합할 수 있다.
다른 예에서는, 도 9b에 도시된 바와 같이, 제1 전류 합 및 제2 전류 합의 조합이 디지털 변환 이전에 수행될 수도 있다. 해당 예시에서 뉴럴 네트워크 장치는 아날로그 어큐물레이터(920)를 더 포함할 수 있다. 아날로그 어큐물레이터(920)는 제1 전류 합 및 제2 전류 합을 조합함으로써, 최종 전류 합을 출력할 수 있다. 예를 들어, 아날로그 어큐물레이터(920)는 양수의 입력 액티베이션들에 대응되는 제1 전류 합은 가산하고, 음수의 입력 액티베이션들에 대응되는 제2 전류 합은 감산함으로써, 최종 전류 합을 출력할 수 있다. ADC는 아날로그 어큐물레이터(920)로부터 출력되는 최종 전류 합을 MAC 연산의 결과에 대응되는 디지털 신호로 변환할 수 있다.
한편, 도 9a에서는 디지털 어큐뮬레이터(910)가 인 메모리 컴퓨팅 회로(420) 외부에 위치하고, 도 9b에서는 아날로그 어큐뮬레이터(920)가 인 메모리 컴퓨팅 회로(430) 내부에 위치하는 것으로 도시하였으나, 이에 제한되는 것은 아니다. 디지털 어큐뮬레이터(910) 및 아날로그 어큐뮬레이터(920) 각각은 인 메모리 컴퓨팅 회로(420) 내부 또는 외부의 임의의 적절한 위치에 배치될 수 있다.
도 10은 아날로그 크로스바 어레이가 부호를 갖지 않는 입력 및 웨이트를 지원하는 일부 실시예에 따라 부동 소수점 연산이 수행되는 과정을 설명하기 위한 도면이다.
아날로그 크로스바 어레이가 부호를 갖지 않는 웨이트를 지원하는 경우, 적어도 하나의 제어 회로(410)는 부호 비트가 제1 값인 웨이트들 각각에 대응되는 제1 소수부를 아날로그 크로스바 어레이의 제1 칼럼 라인들을 따라 배치되는 메모리 셀들에 저장하고, 부호 비트가 제2 값인 웨이트들 각각에 대응되는 제1 소수부를 아날로그 크로스바 어레이의 제2 칼럼 라인들을 따라 배치되는 메모리 셀들에 저장할 수 있다.
인 메모리 컴퓨팅 회로(420)는 제1 칼럼 라인들 각각을 따라 출력되는 제1 전류 합과 제2 칼럼 라인들 각각을 따라 출력되는 제2 전류 합을 조합함으로써, 최종 전류 합을 출력할 수 있다. 이와 같이, 인 메모리 컴퓨팅 회로(420)에 포함되는 아날로그 크로스바 어레이는 2개의 크로스바 어레이들(즉, 양수의 웨이트들을 저장하는 제1 크로스바 어레이(1010) 및 음수의 웨이트들을 저장하는 제2 크로스바 어레이(1020))을 포함하는 것처럼 동작할 수 있다.
인 메모리 컴퓨팅 회로(420)는 가산/감산(ADD/SUB) 모듈(1030)을 이용하여 제1 칼럼 라인들 각각을 따라 출력되는 제1 전류 합과 제2 칼럼 라인들 각각을 따라 출력되는 제2 전류 합을 조합함으로써, 최종 전류 합을 출력할 수 있다. 예를 들어, 가산/감산(ADD/SUB) 모듈(1030)은 제1 크로스바 어레이(1010)로부터 출력되는 제1 전류합은 가산하고, 제2 크로스바 어레이(1020)로부터 출력되는 제2 전류 합은 감산함으로써, 최종 전류 합을 출력할 수 있다.
한편, 아날로그 크로스바 어레이가 부호를 갖지 않는 입력을 지원하므로, 적어도 하나의 제어 회로(410)는 앞서 도 9a 및 도 9b를 참조하여 설명한 바와 같이, 2개의 사이클들(예를 들어, cycle 0 및 cycle 1)에 걸쳐, 양수의 입력 액티베이션들 및 음수의 입력 액테베이션들을 개별적으로 인 메모리 컴퓨팅 회로(420)에 입력할 수 있다. 이에 따라, 양수의 입력 액티베이션들에 대응되는 최종 전류 합은 cycle 0에서 아날로그 크로스바 어레이로부터 출력되며, 음수의 입력 액티베이션들에 대응되는 최종 전류 합은 cycle 1에서 아날로그 크로스바 어레이로부터 출력될 수 있다.
어큐뮬레이터(1040)는 양수의 입력 액티베이션들에 대응되는 최종 전류 합 및 음수의 입력 액티베이션들에 대응되는 최종 전류 합을 조합하여, 소수부들의 부분 합을 획득할 수 있다. 예를 들어, 어큐뮬레이터(1040)는 양수의 입력 액티베이션들에 대응되는 최종 전류 합은 가산하고, 음수의 입력 액티베이션들에 대응되는 최종 전류 합은 감산함으로써, 소수부들의 부분 합을 획득할 수 있다.
한편, 도 10에서는 아날로그 크로스바 어레이가 부호를 갖지 않는 웨이트 및 입력을 지원하는 예시에 대해 설명하였으나, 아날로그 크로스바 어레이는 부호를 갖지 않는 웨이트를 지원하되, 부호를 갖는 입력을 지원할 수도 있다. 이 경우 입력 액티베이션들의 부호를 고려하여 2개의 사이클들에 걸친 입력이 요구되지 않으므로, 부호 상관 없이 모든 입력 액티베이션들이 1개의 사이클에 입력될 수 있으며, 어큐뮬레이터(1040)의 구성이 생략될 수 있다.
이상에서 도 8 내지 도 10을 참조하여 인 메모리 컴퓨팅 회로(420)에 포함되는 아날로그 크로스바 어레이가 부호를 갖는 웨이트 또는 입력을 지원하는지 여부에 따라 소수부들의 부분 합을 계산하는 방법을 상세히 설명하였다. 아날로그 크로스바 어레이로부터 출력되는 소수부들의 부분 합은 디지털 연산 회로(430)에 입력되어 최종 출력을 계산하는데 이용될 수 있다. 이하 도 11을 참조하여 디지털 연산 회로(430)가 최총 출력을 계산하는 방법을 상세히 설명한다.
도 11은 일부 실시예에 따른 아날로그 크로스바 어레이의 연산 결과가 디지털 연산 회로의 연산 결과와 조합됨에 따라 부동 소수점 연산의 최종 출력이 출력되는 과정을 설명하기 위한 도면이다.
디지털 연산 회로(430)는 아날로그 크로스바 어레이로부터 출력된 MAC 연산의 결과에 대해 최상위 비트가 1이 되도록 쉬프트 연산을 수행함으로써, 제3 소수부를 획득할 수 있다. 디지털 연산 회로(430)는 쉬프트 연산을 수행하기 위한 쉬프트 오퍼레이터(1110)를 포함할 수 있다. 쉬프트 연산이 수행된 제3 소수부는 출력 액티베이션의 부분 합의 소수부에 대응될 수 있다.
디지털 연산 회로(430)는 제1 공유 지수부(즉, 웨이트의 공유 지수부) 및 제2 공유 지수부(즉, 입력 액티베이션의 공유 지수부)에 대한 덧셈 결과에 앞서 쉬프트 연산이 수행된 횟수를 가산 또는 감산하는 변환 동작을 수행함으로써, 제3 지수부를 획득할 수 있다. 변환 동작이 수행된 제3 지수부는 출력 액티베이션의 부분 합의 지수부에 대응될 수 있다. 이에 따라, 디지털 연산 회로(430)는 제3 소수부 및 제3 지수부를 포함하는 부동 소수점 출력 액티베이션의 부분 합을 출력할 수 있다.
디지털 연산 회로(430)는 입력 피처 맵에 포함되는 하나의 입력 스트라이프에 대응되는 출력 액티베이션의 부분 합을 계산한 이후, 나머지 입력 스트라이프들에 대응되는 출력 액티베이션의 부분 합들도 순차적으로 계산할 수 있다. 입력 피처 맵에 포함되는 모든 입력 스트라이프들에 대응되는 부분 합들이 계산되면, 디지털 연산 회로(430)는 계산된 부분 합들에 기초하여 최종 출력 액티베이션을 획득할 수 있다.
한편, 뉴럴 네트워크 장치는 디지털 연산 회로(430)에서 MAC 연산의 결과 및 덧셈 연산의 결과를 조합하여 부동 소수점 출력 액티베이션을 획득하는 과정의 내부 또는 이전에, 선택적으로 활성 함수를 적용할 수 있다. 일 예에서, 음수가 입력되면 0이 출력되는 ReLU가 활성 함수로 적용되는 경우, 뉴럴 네트워크 장치는 MAC 연산의 결과에 포함되는 부호 비트에 기초하여 출력 액티베이션이 음수인지 여부를 판단하고, 출력 액티베이션이 음수라고 판단되는 경우, 쉬프트 연산 및 변환 동작을 생략하고, 출력 액티베이션을 0으로 출력할 수 있다. 이에 따라, 불필요한 연산 및 동작이 생략될 수 있다.
디지털 연산 회로(430)로부터 최종적으로 출력되는 부동 소수점 출력 액티베이션은 다음 레이어의 입력 액티베이션으로 이용될 수 있다. 다음 레이어에서도 전술한 과정들이 반복될 수 있고, 뉴럴 네트워크 장치에 의해 구현되는 뉴럴 네트워크의 레이어들을 따라 순방향 패스 또는 역방향 패스가 수행될 수 있다. 또한, 순방향 패스 또는 역방향 패스가 수행됨에 따라 뉴럴 네트워크 장치에 의해 구현되는 뉴럴 네트워크에 대한 학습이 수행되거나, 뉴럴 네트워크를 이용한 추론(inference)이 수행될 수 있다.
본 개시에 따른 뉴럴 네트워크 장치는 입력 액티베이션들 및 웨이트들을 블록 부동 소수점 형식으로 변환한 후, 정확도가 중요한 지수부에 대한 연산은 디지털로 수행하고, 많은 연산이 요구되는 소수부에 대한 연산에는 기존의 고정 소수점 기반 아날로그 크로스바 어레이를 활용함으로써, 소모 전력 및 정확도 손실을 최소화하면서 부동 소수점 연산을 수행할 수 있다.
도 12는 일부 실시예에 따른 뉴럴 네트워크 장치의 동작 방법을 나타내는 흐름도이다.
도 12를 참조하면, 뉴럴 네트워크 장치의 동작 방법은 도 4에 도시된 뉴럴 네트워크 장치(4)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 4 내지 도 11에 관하여 이상에서 기술된 내용은 도 12의 뉴럴 네트워크 장치의 동작 방법에도 적용됨을 알 수 있다.
단계 1210에서, 뉴럴 네트워크 장치는 웨이트 커널들 각각에 대해, 웨이트 커널에 포함되는 웨이트들을 대표하는 제1 공유 지수부를 결정하고, 제1 공유 지수부에 기초하여 조정된 제1 소수부를 포함하는 제1 블록 부동 소수점 형식의 웨이트를 획득할 수 있다.
단계 1220에서, 뉴럴 네트워크 장치는 입력 피처 맵에 포함되는 복수의 입력 스트라이프들 각각에 대해, 입력 스트라이프에 포함되는 입력 액티베이션들을 대표하는 제2 공유 지수부를 결정하고, 제2 공유 지수부에 기초하여 조정된 제2 소수부를 포함하는 제2 블록 부동 소수점 형식의 입력 액티베이션을 획득할 수 있다.
단계 1230에서, 뉴럴 네트워크 장치는 아날로그 크로스바 어레이를 이용하여 제1 소수부 및 제2 소수부에 대한 MAC 연산을 수행하고, ADC를 이용하여 MAC 연산의 결과를 디지털 신호로 변환할 수 있다.
뉴럴 네트워크 장치는 웨이트 커널에 포함되는 웨이트들 각각에 대응되는 제1 소수부를 아날로그 크로스바 어레이의 복수의 칼럼 라인들 중 웨이트 커널에 대응되는 칼럼 라인을 따라 배치되는 메모리 셀들에 저장할 수 있다. 또한, 뉴럴 네트워크 장치는 입력 스트라이프에 포함되는 입력 액티베이션들 각각에 대응되는 제2 소수부를 아날로그 크로스바 어레이의 복수의 로우 라인들에 입력할 수 있다. 이에 따라, 제1 소수부 및 제2 소수부에 대한 MAC 연산이 아날로그 방식으로 수행될 수 있다.
일부 실시예에 따라 아날로그 크로스바 어레이가 부호를 갖는 입력을 지원하는 경우, 뉴럴 네트워크 장치는 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트를 제2 소수부와 함께 복수의 로우 라인들에 입력할 수 있다. 이에 따라, 아날로그 크로스바 어레이로부터 입력 액티베이션의 부호 비트를 고려한 MAC 연산의 결과가 출력될 수 있다.
다만, 다른 실시예에 따라 아날로그 크로스바 어레이가 부호를 갖지 않는 입력을 지원하는 경우, 뉴럴 네트워크 장치는 우선적으로 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트가 제1 값인 로우 라인들만 활성화함으로써, 복수의 칼럼 라인들 각각을 따라 출력되는 제1 전류 합을 획득할 수 있다. 이후 뉴럴 네트워크 장치는 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트가 제2 값인 로우 라인들만 활성화함으로써, 복수의 칼럼 라인들 각각을 따라 출력되는 제2 전류 합을 획득할 수 있다. 제1 값 및 제2 값은 0 또는 1일 수 있고, 서로 다른 값을 가질 수 있다.
이와 같이, 뉴럴 네트워크 장치는 적어도 2개의 사이클들에 걸쳐, 양수의 입력 액티베이션들에 대응되는 제1 전류 합 및 음수의 입력 액테베이션들에 대응되는 제2 전류 합을 개별적으로 획득할 수 있다. 한편, 아날로그 크로스바 어레이를 포함하는 인 메모리 컴퓨팅 회로의 구성에 따라 제1 전류 합 및 제2 전류 합이 조합되는 방식은 상이할 수 있다.
일 예에서, 뉴럴 네트워크 장치는 제1 전류 합 및 제2 전류 합이 조합되기 이전에 디지털 변환을 먼저 수행할 수 있다. 뉴럴 네트워크 장치는 ADC를 이용하여 제1 전류 합을 제1 디지털 신호로 변환하고, ADC를 이용하여 제2 전류 합을 제2 디지털 신호로 변환할 수 있다. 뉴럴 네트워크 장치는 디지털 어큐물레이터를 이용하여 제1 디지털 신호 및 제2 디지털 신호를 조합함으로써, MAC 연산의 결과에 대응되는 디지털 신호를 출력할 수 있다. 제1 값이 0이고, 제2 값이 1인 예시에서, 뉴럴 네트워크 장치는 제1 디지털 신호로부터 제2 디지털 신호를 감산함으로써, MAC 연산의 결과에 대응되는 디지털 신호를 출력할 수 있다.
다른 예에서, 뉴럴 네트워크 장치는 제1 전류 합 및 제2 전류 합의 조합을 디지털 변환 이전에 수행할 수 있다. 뉴럴 네트워크 장치는 아날로그 어큐물레이터를 이용하여 제1 전류 합 및 제2 전류 합을 조합함으로써, 최종 전류 합을 출력할 수 있다. 제1 값이 0이고, 제2 값이 1인 예시에서, 뉴럴 네트워크 장치는 제1 전류 합으로부터 제2 전류 합을 감산함으로써, 최종 전류 합을 출력할 수 있다. 뉴럴 네트워크 장치는 ADC를 이용하여 최종 전류 합을 MAC 연산의 결과에 대응되는 디지털 신호로 변환할 수도 있다.
한편, 일부 실시예에 따라 크로스바 어레이가 부호를 갖는 웨이트를 지원하는 경우, 뉴럴 네트워크 장치는 제1 블록 부동 소수점 형식의 웨이트의 부호 비트를 제1 소수부와 함께 메모리 셀들에 저장할 수 있다. 이에 따라, 아날로그 크로스바 어레이로부터 웨이트의 부호 비트를 고려한 MAC 연산의 결과가 출력될 수 있다.
다른 실시예에 따라 아날로그 크로스바 어레이가 부호를 갖지 않는 웨이트를 지원하는 경우, 뉴럴 네트워크 장치는 부호 비트가 제1 값인 웨이트들 각각에 대응되는 제1 소수부를 아날로그 크로스바 어레이의 제1 칼럼 라인들을 따라 배치되는 메모리 셀들에 저장하고, 부호 비트가 제2 값인 웨이트들 각각에 대응되는 제1 소수부를 아날로그 크로스바 어레이의 제2 칼럼 라인들을 따라 배치되는 메모리 셀들에 저장할 수 있다. 제1 값 및 제2 값은 0 또는 1일 수 있고, 서로 다른 값을 가질 수 있다.
뉴럴 네트워크 장치는 제1 칼럼 라인들 각각을 따라 출력되는 제1 전류 합과 제2 칼럼 라인들 각각을 따라 출력되는 제2 전류 합을 조합함으로써, 최종 전류 합을 출력할 수 있다. 이와 같이, 뉴럴 네트워크 장치에 포함되는 아날로그 크로스바 어레이는 2개의 크로스바 어레이들(즉, 웨이트의 부호 비트가 제1 값인 제1 크로스바 어레이 및 웨이트의 부호 비트가 제2 값인 제2 크로스바 어레이)을 포함하는 것처럼 동작할 수 있다.
단계 1240에서, 뉴럴 네트워크 장치는 디지털 연산 회로를 이용하여 제1 공유 지수부 및 제2 공유 지수부에 대한 덧셈 연산을 수행하고, MAC 연산의 결과 및 덧셈 연산의 결과를 조합하여, 출력 피처 맵의 채널에 포함되는 부동 소수점 출력 액티베이션의 부분 합을 출력할 수 있다.
예를 들어, 뉴럴 네트워크 장치는 MAC 연산의 결과에 대해 최상위 비트가 1이 되도록 쉬프트 연산을 수행함으로써, 제3 소수부를 획득할 수 있다. 또한, 뉴럴 네트워크 장치는 덧셈 연산의 결과에 쉬프트 연산이 수행된 횟수를 가산 또는 감산하는 변환 동작을 수행함으로써, 제3 지수부를 획득할 수 있다. 이에 따라, 뉴럴 네트워크 장치는 제3 소수부 및 제3 지수부를 포함하는 부동 소수점 출력 액티베이션의 부분 합을 출력할 수 있다.
뉴럴 네트워크 장치는 입력 피처 맵에 포함되는 하나의 입력 스트라이프에 대응되는 출력 액티베이션의 부분 합을 계산한 이후, 나머지 입력 스트라이프들에 대응되는 출력 액티베이션의 부분 합들도 순차적으로 계산할 수 있다. 입력 피처 맵에 포함되는 모든 입력 스트라이프들에 대응되는 부분 합들이 계산되면, 뉴럴 네트워크 장치는 계산된 부분 합들에 기초하여 최종 출력 액티베이션을 획득할 수 있다.
한편, 뉴럴 네트워크 장치는 MAC 연산의 결과 및 덧셈 연산의 결과를 조합하여 부동 소수점 출력 액티베이션을 획득하는 과정의 내부 또는 이전에, 선택적으로 활성 함수를 적용할 수 있다. 일 예에서, 음수가 입력되면 0이 출력되는 ReLU가 활성 함수로 적용되는 경우, 뉴럴 네트워크 장치는 MAC 연산의 결과에 포함되는 부호 비트에 기초하여 출력 액티베이션이 음수인지 여부를 판단하고, 출력 액티베이션이 음수라고 판단되는 경우, 쉬프트 연산 및 변환 동작을 생략하고, 출력 액티베이션을 0으로 출력할 수 있다. 이에 따라, 불필요한 연산 및 동작이 생략될 수 있다.
본 개시에 따른 뉴럴 네트워크 장치의 동작 방법은 입력 액티베이션들 및 웨이트들을 블록 부동 소수점 형식으로 변환한 후, 정확도가 중요한 지수부에 대한 연산은 디지털로 수행하고, 많은 연산이 요구되는 소수부에 대한 연산에는 기존의 고정 소수점 기반 아날로그 크로스바 어레이를 활용함으로써, 소모 전력 및 정확도 손실을 최소화하면서 부동 소수점 연산을 수행할 수 있다.
한편, 도 12의 단계들은 뉴럴 네트워크 장치의 동작 방법의 전반적인 흐름을 설명하기 위해 순서대로 기재되어 있을 뿐이며, 반드시 기재된 순서에 따라 수행되지 않을 수 있다. 예를 들어, 단계 1210이 수행되고, 입력 피처 맵에 포함되는 하나의 입력 스트라이프에 대해 단계 1220 내지 단계 1240가 수행된 이후, 다시 단계 1210이 수행되지 않을 수 있다. 단계 1210이 다시 수행되는 대신에, 입력 피처 맵에 포함되는 나머지 입력 스트라이프들에 대해 단계 1220 내지 단계 1240이 반복적으로 수행될 수 있다.
또한, 하나의 입력 피처 맵에 포함되는 모든 입력 스트라이프들에 대해 단계 1220 내지 단계 1240이 수행됨에 따라 해당 입력 피처 맵에 대응되는 출력 액티베이션이 출력된 이후, 다른 입력 피처 맵에 대응되는 출력 액티베이션을 출력하기 위한 부동 소수점 연산이 시작되는 경우에도 단계 1210의 수행은 생략될 수 있다. 예를 들어, 모든 입력 피처 맵들에 대한 부동 소수점 연산을 수행하는 과정에서 단계 1210은 최초 1회만 수행될 수 있다. 다만, 이 또한 예시에 불과할 뿐이며, 단계 1210은 부동 소수점 연산에 이용되는 웨이트들의 변경이 필요한 임의의 시점에 다시 수행될 수도 있다. 또한, 단계 1220 내지 단계 1240 각각도 상황에 따라 적절한 시점에 수행될 수 있다.
도 13은 일부 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
도 13을 참고하면, 전자 시스템(1300)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나, 전자 시스템(1300)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 전자 시스템(1300)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(1300)은 프로세서(1310), RAM(1320), 뉴럴 네트워크 장치(1330), 메모리(1340), 센서 모듈(1350) 및 통신 모듈(1360)을 포함할 수 있다. 전자 시스템(1300)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 전자 시스템(1300)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다.
프로세서(1310)는 전자 시스템(1300)의 전반적인 동작을 제어한다. 프로세서(1310)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(1310)는 메모리(1340)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일부 실시예에 있어서, 프로세서(1310)는 메모리(1340)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1330)의 기능을 제어할 수 있다. 프로세서(1310)는 CPU, GPU, AP 등으로 구현될 수 있다.
RAM(1320)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(1340)에 저장된 프로그램들 및/또는 데이터는 프로세서(1310)의 제어 또는 부팅 코드에 따라 RAM(1320)에 일시적으로 저장될 수 있다. RAM(1320)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(1330)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 CNN, RNN, FNN, Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(1330)는 뉴럴 네트워크 전용 하드웨어 가속기 자체 또는 이를 포함하는 장치로서, 앞서 설명된 뉴럴 네트워크 장치(예를 들어, 도 4의 뉴럴 네트워크 장치(4))에 해당할 수 있다.
뉴럴 네트워크 장치(1330)는 전력 소모를 상당히 감소시킬 수 있는 인 메모리 컴퓨팅 회로를 활용하면서도 부동 소수점 연산을 수행할 수 있다. 또한, 뉴럴 네트워크 장치(1330)는 에러(error)에 민감한 지수부에 대한 연산을 디지털 방식으로 처리함으로써, 정확도 손실을 최소화할 수 있다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(1330)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(1300)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(1330)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
메모리(1340)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(1340)는 뉴럴 네트워크 장치(1330)의 연산 수행 과정에서 생성되는 중간 결과들을 저장할 수 있다.
메모리(1340)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1340)는 휘발성 메모리 또는 비휘발성 메모리 중 적어도 하나를 포함할 수 있다. 비휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리(1340)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(1350)은 전자 시스템(1300)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(1350)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(1350)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(1350)은 변환된 데이터를 뉴럴 네트워크 장치(1330)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(1350)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(1330)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(1350)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(1330)에 제공할 수 있다.
통신 모듈(1360)은 외부 디바이스와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(1360)은 유선 근거리통신망(Local Area Network; LAN), Wi-fi(Wireless Fidelity)와 같은 무선 근거리 통신망 (Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB (Wireless Universal Serial Bus), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC(Power Line communication), 또는 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution) 등 이동 통신망(mobile cellular network)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 본 발명의 실시예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치의 동작 방법에 있어서,
    웨이트 커널(weight kernel)들 각각에 대해, 웨이트 커널에 포함되는 웨이트들을 대표하는 제1 공유 지수부(shared exponent)를 결정하고, 상기 제1 공유 지수부에 기초하여 조정된 제1 소수부(fraction)를 포함하는 제1 블록 부동 소수점(block floating point) 형식의 웨이트를 획득하는 단계;
    입력 피처 맵(Input feature map)에 포함되는 복수의 입력 스트라이프(stripe)들 각각에 대해, 입력 스트라이프에 포함되는 입력 액티베이션들을 대표하는 제2 공유 지수부를 결정하고, 상기 제2 공유 지수부에 기초하여 조정된 제2 소수부를 포함하는 제2 블록 부동 소수점 형식의 입력 액티베이션을 획득하는 단계;
    아날로그 크로스바 어레이(analog crossbar array)를 이용하여 상기 제1 소수부 및 상기 제2 소수부에 대한 MAC(Multiply-Accumulate) 연산을 수행하고, ADC(Analog-Digital Converter)를 이용하여 상기 MAC 연산의 결과를 디지털 신호로 변환하는 단계; 및
    디지털 연산 회로를 이용하여 상기 제1 공유 지수부 및 상기 제2 공유 지수부에 대한 덧셈 연산을 수행하고, 상기 MAC 연산의 결과 및 상기 덧셈 연산의 결과를 조합하여, 출력 피처 맵(Output feature map)의 채널에 포함되는 부동 소수점 출력 액티베이션의 부분 합(Partial sum)을 출력하는 단계를 포함하는, 방법.
  2. 제 1항에 있어서,
    상기 방법은,
    상기 웨이트 커널에 포함되는 상기 웨이트들 각각에 대응되는 상기 제1 소수부를 상기 아날로그 크로스바 어레이의 복수의 칼럼(column) 라인들 중 상기 웨이트 커널에 대응되는 칼럼 라인을 따라 배치되는 메모리 셀들에 저장하는 단계; 및
    상기 입력 스트라이프에 포함되는 상기 입력 액티베이션들 각각에 대응되는 상기 제2 소수부를 상기 아날로그 크로스바 어레이의 복수의 로우(row) 라인들에 입력하는 단계를 더 포함하는, 방법.
  3. 제 2항에 있어서,
    상기 아날로그 크로스바 어레이가 부호를 갖는(signed) 입력을 지원하는 경우, 상기 입력하는 단계는,
    상기 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트를 상기 제2 소수부와 함께 상기 복수의 로우 라인들에 입력하는, 방법.
  4. 제 2항에 있어서,
    상기 아날로그 크로스바 어레이가 부호를 갖지 않는(unsigned) 입력을 지원하는 경우, 상기 방법은,
    상기 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트가 제1 값인 로우 라인들만 활성화함으로써, 상기 복수의 칼럼 라인들 각각을 따라 출력되는 제1 전류 합을 획득하는 단계; 및
    상기 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트가 제2 값인 로우 라인들만 활성화함으로써, 상기 복수의 칼럼 라인들 각각을 따라 출력되는 제2 전류 합을 획득하는 단계를 더 포함하는, 방법.
  5. 제 4항에 있어서,
    상기 방법은,
    상기 ADC를 이용하여 상기 제1 전류 합을 제1 디지털 신호로 변환하는 단계;
    상기 ADC를 이용하여 상기 제2 전류 합을 제2 디지털 신호로 변환하는 단계; 및
    디지털 어큐물레이터(accumulator)를 이용하여 상기 제1 디지털 신호 및 상기 제2 디지털 신호를 조합함으로써, 상기 MAC 연산의 결과에 대응되는 상기 디지털 신호를 출력하는 단계를 더 포함하는, 방법.
  6. 제 4항에 있어서,
    상기 방법은,
    아날로그 어큐물레이터를 이용하여 상기 제1 전류 합 및 상기 제2 전류 합을 조합함으로써, 최종 전류 합을 출력하는 단계; 및
    상기 ADC를 이용하여 상기 최종 전류 합을 상기 MAC 연산의 결과에 대응되는 상기 디지털 신호로 변환하는 단계를 더 포함하는, 방법.
  7. 제 2항에 있어서,
    상기 아날로그 크로스바 어레이가 부호를 갖는 웨이트를 지원하는 경우, 상기 저장하는 단계는,
    상기 제1 블록 부동 소수점 형식의 웨이트의 부호 비트를 상기 제1 소수부와 함께 상기 메모리 셀들에 저장하는, 방법.
  8. 제 2항에 있어서,
    상기 아날로그 크로스바 어레이가 부호를 갖지 않는 웨이트를 지원하는 경우, 상기 방법은,
    부호 비트가 제1 값인 웨이트들 각각에 대응되는 제1 소수부를 상기 아날로그 크로스바 어레이의 제1 칼럼 라인들을 따라 배치되는 메모리 셀들에 저장하는 단계;
    부호 비트가 제2 값인 웨이트들 각각에 대응되는 제1 소수부를 상기 아날로그 크로스바 어레이의 제2 칼럼 라인들을 따라 배치되는 메모리 셀들에 저장하는 단계; 및
    상기 제1 칼럼 라인들 각각을 따라 출력되는 제1 전류 합과 상기 제2 칼럼 라인들 각각을 따라 출력되는 제2 전류 합을 조합함으로써, 최종 전류 합을 출력하는 단계를 더 포함하는, 방법.
  9. 제 1항에 있어서,
    상기 출력하는 단계는,
    상기 MAC 연산의 결과에 대해 최상위 비트가 1이 되도록 쉬프트(shift) 연산을 수행함으로써, 제3 소수부를 획득하는 단계;
    상기 덧셈 연산의 결과에 상기 쉬프트 연산이 수행된 횟수를 가산 또는 감산하는 변환 동작을 수행함으로써, 제3 지수부를 획득하는 단계; 및
    상기 제3 소수부 및 상기 제3 지수부를 포함하는 상기 부동 소수점 출력 액티베이션의 부분 합을 출력하는 단계를 포함하는, 방법.
  10. 제 9항에 있어서,
    상기 방법은,
    상기 MAC 연산의 결과에 포함되는 부호 비트에 기초하여 상기 부동 소수점 출력 액티베이션이 음수인지 여부를 판단하는 단계; 및
    상기 부동 소수점 출력 액티베이션이 음수라고 판단되는 경우, 상기 쉬프트 연산 및 상기 변환 동작을 생략하고, 상기 부동 소수점 출력 액티베이션을 0으로 출력하는 단계를 더 포함하는, 방법.
  11. 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치에 있어서,
    웨이트 커널들 각각에 대해, 웨이트 커널에 포함되는 웨이트들을 대표하는 제1 공유 지수부를 결정하고, 상기 제1 공유 지수부에 기초하여 조정된 제1 소수부를 포함하는 제1 블록 부동 소수점 형식의 웨이트를 획득하고, 입력 피처 맵에 포함되는 복수의 입력 스트라이프들 각각에 대해, 입력 스트라이프에 포함되는 입력 액티베이션들을 대표하는 제2 공유 지수부를 결정하고, 상기 제2 공유 지수부에 기초하여 조정된 제2 소수부를 포함하는 제2 블록 부동 소수점 형식의 입력 액티베이션을 획득하는 적어도 하나의 제어 회로;
    상기 제1 소수부 및 상기 제2 소수부에 대한 MAC 연산을 수행하는 아날로그 크로스바 어레이, 및 상기 MAC 연산의 결과를 디지털 신호로 변환하는 ADC를 포함하는 인 메모리 컴퓨팅(In-memory computing) 회로; 및
    상기 제1 공유 지수부 및 상기 제2 공유 지수부에 대한 덧셈 연산을 수행하고, 상기 MAC 연산의 결과 및 상기 덧셈 연산의 결과를 조합하여, 출력 피처 맵의 채널에 포함되는 부동 소수점 출력 액티베이션의 부분 합을 출력하는 디지털 연산 회로를 포함하는, 뉴럴 네트워크 장치.
  12. 제 11항에 있어서,
    상기 아날로그 크로스바 어레이는,
    복수의 로우 라인들;
    상기 복수의 로우 라인들과 교차하는 복수의 칼럼 라인들; 및
    상기 복수의 로우 라인들 및 상기 복수의 칼럼 라인들의 교차점들에 배치되는 복수의 메모리 셀들을 포함하고,
    상기 적어도 하나의 제어 회로는,
    상기 웨이트 커널에 포함되는 상기 웨이트들 각각에 대응되는 상기 제1 소수부를 상기 복수의 칼럼 라인들 중 상기 웨이트 커널에 대응되는 칼럼 라인을 따라 배치되는 메모리 셀들에 저장하고, 상기 입력 스트라이프에 포함되는 상기 입력 액티베이션들 각각에 대응되는 상기 제2 소수부를 상기 복수의 로우 라인들에 입력하는, 뉴럴 네트워크 장치.
  13. 제 12항에 있어서,
    상기 아날로그 크로스바 어레이가 부호를 갖는 입력을 지원하는 경우, 상기 적어도 하나의 제어 회로는,
    상기 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트를 상기 제2 소수부와 함께 상기 복수의 로우 라인들에 입력하는, 뉴럴 네트워크 장치.
  14. 제 12항에 있어서,
    상기 아날로그 크로스바 어레이가 부호를 갖지 않는 입력을 지원하는 경우, 상기 적어도 하나의 제어 회로는,
    상기 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트가 제1 값인 로우 라인들만 활성화함으로써, 상기 복수의 칼럼 라인들 각각을 따라 출력되는 제1 전류 합을 획득하고, 상기 제2 블록 부동 소수점 형식의 입력 액티베이션의 부호 비트가 제2 값인 로우 라인들만 활성화함으로써, 상기 복수의 칼럼 라인들 각각을 따라 출력되는 제2 전류 합을 획득하는, 뉴럴 네트워크 장치.
  15. 제 14항에 있어서,
    상기 ADC는,
    상기 제1 전류 합을 제1 디지털 신호로 변환하고, 상기 제2 전류 합을 제2 디지털 신호로 변환하며,
    상기 뉴럴 네트워크 장치는,
    상기 제1 디지털 신호 및 상기 제2 디지털 신호를 조합함으로써, 상기 MAC 연산의 결과에 대응되는 상기 디지털 신호를 출력하는 디지털 어큐물레이터를 더 포함하는, 뉴럴 네트워크 장치.
  16. 제 14항에 있어서,
    상기 뉴럴 네트워크 장치는,
    상기 제1 전류 합 및 상기 제2 전류 합을 조합함으로써, 최종 전류 합을 출력하는 아날로그 어큐물레이터를 더 포함하고,
    상기 ADC는,
    상기 최종 전류 합을 상기 MAC 연산의 결과에 대응되는 상기 디지털 신호로 변환하는, 뉴럴 네트워크 장치.
  17. 제 12항에 있어서,
    상기 아날로그 크로스바 어레이가 부호를 갖는 웨이트를 지원하는 경우, 상기 적어도 하나의 제어 회로는,
    상기 제1 블록 부동 소수점 형식의 웨이트의 부호 비트를 상기 제1 소수부와 함께 상기 메모리 셀들에 저장하는, 뉴럴 네트워크 장치.
  18. 제 12항에 있어서,
    상기 아날로그 크로스바 어레이가 부호를 갖지 않는 웨이트를 지원하는 경우, 상기 적어도 하나의 제어 회로는,
    부호 비트가 제1 값인 웨이트들 각각에 대응되는 제1 소수부를 상기 아날로그 크로스바 어레이의 제1 칼럼 라인들을 따라 배치되는 메모리 셀들에 저장하고, 부호 비트가 제2 값인 웨이트들 각각에 대응되는 제1 소수부를 상기 아날로그 크로스바 어레이의 제2 칼럼 라인들을 따라 배치되는 메모리 셀들에 저장하며,
    상기 인 메모리 컴퓨팅 회로는,
    상기 제1 칼럼 라인들 각각을 따라 출력되는 제1 전류 합과 상기 제2 칼럼 라인들 각각을 따라 출력되는 제2 전류 합을 조합함으로써, 최종 전류 합을 출력하는, 뉴럴 네트워크 장치.
  19. 제 11항에 있어서,
    상기 디지털 연산 회로는,
    상기 MAC 연산의 결과에 대해 최상위 비트가 1이 되도록 쉬프트(shift) 연산을 수행함으로써, 제3 소수부를 획득하고, 상기 덧셈 연산의 결과에 상기 쉬프트 연산이 수행된 횟수를 가산 또는 감산하는 변환 동작을 수행함으로써, 제3 지수부를 획득하며, 상기 제3 소수부 및 상기 제3 지수부를 포함하는 상기 부동 소수점 출력 액티베이션의 부분 합을 출력하는, 뉴럴 네트워크 장치.
  20. 제 19항에 있어서,
    상기 디지털 연산 회로는,
    상기 MAC 연산의 결과에 포함되는 부호 비트에 기초하여 상기 부동 소수점 출력 액티베이션이 음수인지 여부를 판단하고, 상기 부동 소수점 출력 액티베이션이 음수라고 판단되는 경우, 상기 쉬프트 연산 및 상기 변환 동작을 생략하고, 상기 부동 소수점 출력 액티베이션을 0으로 출력하는, 뉴럴 네트워크 장치.
KR1020200071589A 2020-06-12 2020-06-12 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법 KR20210154502A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020200071589A KR20210154502A (ko) 2020-06-12 2020-06-12 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법
US17/084,829 US20210390382A1 (en) 2020-06-12 2020-10-30 Neural network apparatus performing floating-point operation and operating method of the same
EP20209682.2A EP3923204A3 (en) 2020-06-12 2020-11-25 Neural network apparatus performing floating-point operation and operating method of the same
CN202011402051.9A CN113807493A (zh) 2020-06-12 2020-12-02 执行浮点运算的神经网络设备及其操作方法
JP2021094974A JP2021197176A (ja) 2020-06-12 2021-06-07 浮動小数点演算を行うニューラルネットワーク装置及びその動作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200071589A KR20210154502A (ko) 2020-06-12 2020-06-12 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210154502A true KR20210154502A (ko) 2021-12-21

Family

ID=73597867

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200071589A KR20210154502A (ko) 2020-06-12 2020-06-12 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법

Country Status (5)

Country Link
US (1) US20210390382A1 (ko)
EP (1) EP3923204A3 (ko)
JP (1) JP2021197176A (ko)
KR (1) KR20210154502A (ko)
CN (1) CN113807493A (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11539370B2 (en) * 2020-02-23 2022-12-27 Tetramem Inc. Analog to analog quantizer in crossbar array circuits for in-memory computing
US11914973B2 (en) * 2020-11-19 2024-02-27 Apple Inc. Performing multiple bit computation and convolution in memory
US11462268B1 (en) * 2021-04-30 2022-10-04 Hewlett Packard Enterprise Development Lp Generating hash codes for locality sensitive hashing
KR20230010155A (ko) * 2021-07-09 2023-01-18 삼성디스플레이 주식회사 표시 장치
CN114707647B (zh) * 2022-03-08 2023-10-24 南方科技大学 适用于多精度神经网络的精度无损存算一体装置及方法
US20240176586A1 (en) * 2022-11-28 2024-05-30 Stmicroelectronics S.R.L. In-memory computation system with compact storage of signed computational weight data

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9910827B2 (en) * 2016-07-01 2018-03-06 Hewlett Packard Enterprise Development Lp Vector-matrix multiplications involving negative values
US10891538B2 (en) * 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US10528321B2 (en) * 2016-12-07 2020-01-07 Microsoft Technology Licensing, Llc Block floating point for neural network implementations
US11521046B2 (en) * 2017-11-08 2022-12-06 Samsung Electronics Co., Ltd. Time-delayed convolutions for neural network device and method
WO2019133829A1 (en) * 2017-12-29 2019-07-04 Spero Devices, Inc. Digital architecture supporting analog co-processor
US10747502B2 (en) * 2018-09-19 2020-08-18 Xilinx, Inc. Multiply and accumulate circuit
US11061646B2 (en) * 2018-09-28 2021-07-13 Intel Corporation Compute in memory circuits with multi-Vdd arrays and/or analog multipliers

Also Published As

Publication number Publication date
US20210390382A1 (en) 2021-12-16
EP3923204A2 (en) 2021-12-15
CN113807493A (zh) 2021-12-17
EP3923204A3 (en) 2022-01-19
JP2021197176A (ja) 2021-12-27

Similar Documents

Publication Publication Date Title
KR20210154502A (ko) 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법
CN109754066B (zh) 用于生成定点型神经网络的方法和装置
CN109389219B (zh) 用于对神经网络的参数进行量化的方法和装置
JP7304148B2 (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
US20190138891A1 (en) Apparatus and method with neural network
KR20200086581A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
KR20190125141A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
US11868874B2 (en) Two-dimensional array-based neuromorphic processor and implementing method
KR20220010362A (ko) 뉴럴 네트워크 장치 및 그의 동작 방법
US11513770B2 (en) Neural network method and apparatus with floating point processing
US20210117781A1 (en) Method and apparatus with neural network operation
US20240086694A1 (en) Neuromorphic method and apparatus with multi-bit neuromorphic operation
KR20210083935A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
US11853869B2 (en) Neural network apparatus and method of processing variable-resolution operation by the same
KR20210121946A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
US11823029B2 (en) Method and apparatus with neural network processing
KR20230090849A (ko) 뉴럴 네트워크 장치 및 이를 포함하는 전자 시스템
US20220343147A1 (en) Apparatus and method with neural network operations
US11989531B2 (en) Device and method with multi-bit operation
KR20240025827A (ko) Imc(in memory computing) 프로세서 및 imc 프로세서의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination