KR20210121946A - 뉴럴 네트워크 양자화를 위한 방법 및 장치 - Google Patents

뉴럴 네트워크 양자화를 위한 방법 및 장치 Download PDF

Info

Publication number
KR20210121946A
KR20210121946A KR1020200039428A KR20200039428A KR20210121946A KR 20210121946 A KR20210121946 A KR 20210121946A KR 1020200039428 A KR1020200039428 A KR 1020200039428A KR 20200039428 A KR20200039428 A KR 20200039428A KR 20210121946 A KR20210121946 A KR 20210121946A
Authority
KR
South Korea
Prior art keywords
neural network
layers
bit precision
quantized
input
Prior art date
Application number
KR1020200039428A
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 KR1020200039428A priority Critical patent/KR20210121946A/ko
Priority to US17/012,181 priority patent/US20210303972A1/en
Publication of KR20210121946A publication Critical patent/KR20210121946A/ko

Links

Images

Classifications

    • G06N3/0454
    • 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/086Learning methods using evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Physiology (AREA)
  • Image Analysis (AREA)

Abstract

일부 실시예에 따르면, 복수의 입력 데이터 세트들 각각에 대해, 제1 비트 정밀도를 갖는 제1 뉴럴 네트워크의 순방향 패스 및 역방향 패스를 수행하는 단계, 역방향 패스를 수행하는 과정에서 제1 뉴럴 네트워크에 포함된 레이어들 각각에 대하여 계산되는 입력 그래디언트들, 웨이트 그래디언트들 및 출력 그래디언트들 중 적어도 하나에 대한 프로파일 정보를 획득하는 단계, 획득된 프로파일 정보에 기초하여, 레이어들 중 제1 비트 정밀도보다 낮은 제2 비트 정밀도로 양자화될 하나 이상의 레이어들을 결정하는 단계, 및 레이어들 중 결정된 레이어들을 상기 제2 비트 정밀도로 양자화함으로써, 제2 뉴럴 네트워크를 생성하는 단계를 포함하는, 뉴럴 네트워크 양자화를 위한 방법을 제공할 수 있다.

Description

뉴럴 네트워크 양자화를 위한 방법 및 장치{Method and apparatus for neural network quantization}
본 개시는 뉴럴 네트워크 양자화를 위한 방법 및 장치에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 장치가 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다. 예를 들어, 스마트폰과 같은, 저전력 고성능 임베디드 시스템은 제한된 리소스를 가지므로, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
다양한 실시예들은 뉴럴 네트워크 양자화를 위한 방법 및 장치를 제공하는데 있다. 본 개시가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
상술한 기술적 과제를 해결하기 위한 수단으로서, 일 측면에 따른 뉴럴 네트워크 양자화를 위한 방법은, 복수의 입력 데이터 세트들 각각에 대해, 제1 비트 정밀도를 갖는 제1 뉴럴 네트워크의 순방향 패스(forward pass) 및 역방향 패스(backward pass)를 수행하는 단계; 상기 역방향 패스를 수행하는 과정에서 상기 제1 뉴럴 네트워크에 포함된 레이어들 각각에 대하여 계산되는 입력 그래디언트(input gradient)들, 웨이트 그래디언트(weight gradient)들 및 출력 그래디언트(output gradient)들 중 적어도 하나에 대한 프로파일 정보를 획득하는 단계; 상기 획득된 프로파일 정보에 기초하여, 상기 레이어들 중 상기 제1 비트 정밀도보다 낮은 제2 비트 정밀도로 양자화될 하나 이상의 레이어들을 결정하는 단계; 및 상기 레이어들 중 상기 결정된 레이어들을 상기 제2 비트 정밀도로 양자화함으로써, 제2 뉴럴 네트워크를 생성하는 단계를 포함할 수 있다.
또한, 다른 측면에 따른 뉴럴 네트워크 양자화를 위한 장치는, 적어도 하나의 프로그램이 저장된 메모리; 및 상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크 양자화를 수행하는 프로세서를 포함하고, 상기 프로세서는, 복수의 입력 데이터 세트들 각각에 대해, 제1 비트 정밀도를 갖는 제1 뉴럴 네트워크의 순방향 패스(forward pass) 및 역방향 패스(backward pass)를 수행하고, 상기 역방향 패스를 수행하는 과정에서 상기 제1 뉴럴 네트워크에 포함된 레이어들 각각에 대하여 계산되는 입력 그래디언트(input gradient)들, 웨이트 그래디언트(weight gradient)들 및 출력 그래디언트(output gradient)들 중 적어도 하나에 대한 프로파일 정보를 획득하며, 상기 획득된 프로파일 정보에 기초하여, 상기 레이어들 중 상기 제1 비트 정밀도보다 낮은 제2 비트 정밀도로 양자화될 하나 이상의 레이어들을 결정하고, 상기 레이어들 중 상기 결정된 레이어들을 상기 제2 비트 정밀도로 양자화함으로써, 제2 뉴럴 네트워크를 생성할 수 있다.
도 1은 일부 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 2는 일부 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 3은 일부 실시예에 따른 뉴럴 네트워크의 순방향 패스(forward pass) 및 역방향 패스(backward pass)를 설명하기 위한 도면이다.
도 4는 일부 실시예에 따른 뉴럴 네트워크 양자화 장치의 하드웨어 구성을 도시한 블록도이다.
도 5는 일부 실시예에 따른 미리 훈련된 뉴럴 네트워크를 양자화하여 하드웨어 가속기에 채용하는 것을 설명하기 위한 도면이다.
도 6은 일부 실시예에 따른 뉴럴 네트워크 양자화를 위한 방법을 나타내는 흐름도이다.
도 7은 일부 실시예에 따라 양자화될 레이어들을 결정하는 방법을 나타내는 흐름도이다.
도 8은 일부 실시예에 따른 뉴럴 네트워크가 양자화되는 과정을 나타내는 개요도이다.
도 9는 일부 실시예에 따른 뉴럴 네트워크 양자화에 이용되는 스케일 팩터를 설명하기 위한 도면이다.
도 10은 종래 기술에 따른, 양자화된 뉴럴 네트워크를 이용하여 추론(inference)을 수행하는 알고리즘을 나타내는 도면이다.
도 11은 일부 실시예에 따른, 양자화된 뉴럴 네트워크를 이용하여 추론을 수행하는 알고리즘을 나타내는 도면이다.
도 12는 일부 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 도는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 '제 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)(또는 로우라고 함) 및 깊이(D)를 가진다. 이때, 깊이(D)는 채널들의 개수에 대응될 수 있다.
컨볼루션 레이어에서, 제 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
의 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 뉴럴 네트워크(2)에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 합(sum)에 액티베이션 함수를 적용한 값을 Rectified Linear Unit (ReLU)을 통과시킴으로써 획득된 값일 수 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(2)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 수많은 연산 과정을 거친다. 따라서, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
도 3은 일부 실시예에 따른 뉴럴 네트워크의 순방향 패스(forward pass) 및 역방향 패스(backward pass)를 설명하기 위한 도면이다.
뉴럴 네트워크의 순방향 패스는 뉴럴 네트워크의 입력 레이어에 입력 데이터가 입력된 후, 입력 레이어, 히든 레이어들 및 출력 레이어 등과 같은 레이어들을 순차적으로 통과하면서 연산이 수행되고, 최종적으로 출력 레이어로부터 출력 데이터가 출력되는 과정에 대응될 수 있다.
예를 들어, 도 3에 도시된 바와 같이, 뉴럴 네트워크의 순방향 패스가 수행됨에 따라 뉴럴 네트워크에 포함되는 레이어들 중 하나인 레이어(30)에 입력 피처 맵 I가 입력될 수 있고, 레이어(30)에 매칭된 웨이트 맵 WM과 입력 피처 맵 I 간의 컨볼루션 연산이 수행될 수 있다. 컨볼루션 연산의 결과로서 출력되는 출력 피처 맵 O는 다음 레이어의 입력 피처 맵으로 이용될 수 있다. 레이어(30)에서 수행되는 컨볼루션 연산은 도 2를 참조하여 전술한 연산에 대응될 수 있다. 뉴럴 네트워크의 순방향 패스가 수행됨에 따라 출력 레이어로부터 출력 데이터가 출력되고, 출력 데이터에 기초하여 인식이 수행되는 과정은 뉴럴 네트워크의 추론(inference)에 대응될 수 있다.
한편, 뉴럴 네트워크의 순방향 패스가 수행된 이후, 뉴럴 네트워크의 역방향 패스가 수행될 수 있다. 뉴럴 네트워크의 역방향 패스는 뉴럴 네트워크의 순방향 패스의 결과로서 출력 레이어로부터 출력되는 출력 데이터와 실제 타겟 데이터(예를 들어, Ground Truth) 간의 차이에 따라 결정되는 손실(loss) L을 순방향 패스와 역순(즉, 출력 레이어, 히든 레이어들 및 입력 레이어 순서)으로 전달하는 과정을 의미할 수 있다. 손실 L은 손실 함수에 의해 결정될 수 있다. 손실 함수는 출력 데이터와 실제 타겟 데이터 간의 차이의 절대값에 기초한 손실을 출력하는 L1 손실 함수이거나 출력 데이터와 실제 타겟 데이터 간의 차이의 절대값의 제곱에 기초한 손실을 출력하는 L2 손실 함수 일수 있으나, 이에 제한되는 것은 아니다.
손실 L이 역방향 패스를 통해 레이어들로 전달됨에 따라 레이어들 각각에서 손실 L에 영향을 주는 파라미터가 계산될 수 있다. 예를 들어, 뉴럴 네트워크의 역방향 패스가 수행됨에 따라 다음 레이어로부터 레이어(30)로, 레이어(30)의 출력 피처 맵 O가 손실 L에 주는 영향을 나타내는 파라미터인 출력 그래디언트(output gradient)
Figure pat00009
가 전달될 수 있다. 레이어(30)에 출력 그래디언트
Figure pat00010
가 전달되면, 입력 피처 맵 I와 출력 그래디언트
Figure pat00011
간의 컨볼루션 연산에 기초하여 웨이트 맵 WM이 손실 L에 주는 영향을 나타내는 파라미터인 웨이트 그래디언트(weight gradient)
Figure pat00012
가 계산될 수 있다.
한편, 레이어(30)에 매칭된 웨이트 맵 WM은 계산된 웨이트 그래디언트
Figure pat00013
에 기초하여 다음과 같은 수학식 2에 따라 업데이트될 수 있다.
Figure pat00014
앞의 수학식 2에서
Figure pat00015
는 학습율(learning rate)에 해당하며, 손실 함수의 최소점을 향해 이동하는 각 반복(iteration)에서의 스텝 크기(step size)를 결정하는 최적화 알고리즘에 의해 조정(tuning)되는 파라미터일 수 있다.
이와 같이, 뉴럴 네트워크의 역방향 패스가 수행되면, 뉴럴 네트워크에 포함된 레이어들에 매칭된 웨이트 맵들이 업데이트됨에 따라 손실 L이 감소되도록 뉴럴 네트워크가 업데이트될 수 있다. 이러한 업데이트 과정은 뉴럴 네트워크의 역전파(back propagation)에 대응되며, 역전파를 통해 뉴럴 네트워크는 훈련(train) 또는 학습(learn)될 수 있다.
한편, 웨이트 맵 WM을 일부 변형한 매트릭스와 출력 그래디언트
Figure pat00016
간의 컨볼루션 연산에 기초하여 입력 피처 맵 I가 손실 L에 주는 영향을 나타내는 파라미터인 입력 그래디언트(input gradient)
Figure pat00017
가 계산될 수 있다. 레이어(30)의 입력 피처 맵 I는 이전 레이어의 출력 피처 캡에 대응되므로, 계산된 입력 그래디언트
Figure pat00018
는 이전 레이어로 전달되어 이전 레이어의 출력 그래디언트로 이용될 수 있다.
도 3에서는 설명의 편의를 위해 순방향 패스를 기준으로 레이어(30)의 이전 레이어 및 다음 레이어를 지칭하였으나, 역방향 패스를 기준으로도 레이어(30)의 이전 레이어 및 다음 레이어가 지칭될 수 있고, 이 경우 순방향 패스를 기준으로 하는 경우와 반대가 될 수 있음을 통상의 기술자는 쉽게 이해할 것이다. 또한, 앞에서 정의한 입력 그래디언트, 웨이트 그래디언트 및 출력 그래디언트가 계산되는 구체적인 과정은 해당 기술분야의 통상의 기술자에게 자명하므로, 설명을 생략한다.
도 4는 일부 실시예에 따른 뉴럴 네트워크 양자화 장치의 하드웨어 구성을 도시한 블록도이다.
도 4를 참고하면, 뉴럴 네트워크 양자화 장치(10)는 프로세서(110) 및 메모리(120)를 포함한다. 도 4에 도시된 뉴럴 네트워크 양자화 장치(10)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 양자화 장치(10)에는 도 4에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
뉴럴 네트워크 양자화 장치(10)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(또는 학습)하거나, 부동 소수점 파라미터를 갖는 뉴럴 네트워크를 고정 소수점 파라미터를 갖는 뉴럴 네트워크로 양자화하거나, 또는 뉴럴 네트워크를 재훈련(retrain)하는 기능들과 같은 다양한 프로세싱 기능들을 갖는 컴퓨팅 디바이스에 해당된다. 예를 들어, 뉴럴 네트워크 양자화 장치(10)는 PC(personal computer), 서버 디바이스, 모바일 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다.
프로세서(110)는 뉴럴 네트워크 양자화 장치(10)를 제어하기 위한 전반적인 기능을 수행하는 역할을 한다. 예를 들어, 프로세서(110)는 뉴럴 네트워크 양자화 장치(10) 내의 메모리(120)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 양자화 장치(10)를 전반적으로 제어한다. 프로세서(110)는 뉴럴 네트워크 양자화 장치(10) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
메모리(120)는 뉴럴 네트워크 양자화 장치(10) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(120)는 뉴럴 네트워크 양자화 장치(10)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(120)는 뉴럴 네트워크 양자화 장치(10)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다.
메모리(120)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(120)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다. 휘발성 메모리는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등을 포함한다. 실시예에 있어서, 메모리(120)는 HDD(Hard Disk Drive), SSD(Solid State Drive), CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
프로세서(110)는 미리 훈련된(pre-trained) 뉴럴 네트워크를 생성하여 메모리(120)에 저장할 수 있다. 다만, 이에 제한되는 것은 아니며, 프로세서(110)는 뉴럴 네트워크 양자화 장치(10)가 아닌 별도의 외부 디바이스에 의해 생성된, 미리 훈련된 뉴럴 네트워크를 수신하여 메모리(120)에 저장할 수도 있다.
미리 훈련된 뉴럴 네트워크는 주어진 초기 뉴럴 네트워크가 반복적으로 훈련(또는 학습)됨으로써 생성된 뉴럴 네트워크를 의미할 수 있다. 이때, 초기 뉴럴 네트워크는 뉴럴 네트워크의 처리 정확도 확보 차원에서 부동 소수점 파라미터들, 예를 들어 32비트 부동 소수점 정밀도(32bit floating point precision)의 파라미터들을 가질 수 있다. 여기서, 파라미터들은 예를 들어 뉴럴 네트워크의 입/출력 액티베이션들, 웨이트들, 바이어스들 등 뉴럴 네트워크에 입/출력되는 다양한 종류의 데이터를 포함할 수 있다. 뉴럴 네트워크의 반복적인 훈련이 진행됨에 따라, 뉴럴 네트워크의 부동 소수점 파라미터들은 주어진 입력에 대해 보다 정확한 출력을 연산하기 위해 조정되거나(tuned) 업데이트될(updated) 수 있다.
다만, 높은 비트 정밀도의 부동 소수점 파라미터들은 낮은 비트 정밀도의 고정 소수점 파라미터들에 비해 상대적으로 많은 연산량과 많은 메모리 액세스 빈도가 요구된다. 또한, 뉴럴 네트워크의 처리에 소요되는 연산량의 대부분은 다양한 파라미터들의 연산을 수행하는 컨볼루션 연산으로 알려져 있다. 따라서, 비교적 처리 성능이 낮은 스마트폰, 태블릿, 웨어러블 디바이스 등과 같은 모바일 디바이스, 임베디드(embedded) 디바이스 등에서는 높은 비트 정밀도의 부동 소수점 파라미터들을 갖는 뉴럴 네트워크의 처리가 원활하지 않을 수 있다. 결국, 이와 같은 디바이스들에서 연산량을 충분히 감소시키면서 허용 가능한 정확도 손실(accuracy loss) 내에서 뉴럴 네트워크를 구동시키기 위해서는, 뉴럴 네트워크에서 처리되는 높은 비트 정밀도의 부동 소수점 파라미터들은 양자화되는 것이 바람직하다. 여기서, 파라미터 양자화는 부동 소수점 파라미터를 고정 소수점 파라미터로 변환하거나, 파라미터의 비트 정밀도를 감소시키는 것을 의미한다.
뉴럴 네트워크 양자화 장치(10)는 뉴럴 네트워크가 채용될(deployed) 디바이스(예를 들어, 모바일 디바이스, 임베디드 디바이스 등)의 처리 성능을 고려하여, 훈련된 뉴럴 네트워크의 파라미터들을 소정 비트 정밀도의 고정 소수점으로 변환하는 양자화를 수행할 수 있다. 뉴럴 네트워크가 채용될 디바이스는 뉴럴 네트워크 양자화 장치(10) 자신일 수도 있고, 뉴럴 네트워크 양자화 장치(10) 외부의 다른 디바이스일 수도 있다. 뉴럴 네트워크 양자화 장치(10)는 양자화된 뉴럴 네트워크를 채용될 디바이스에 전달할 수 있다. 뉴럴 네트워크가 채용될 디바이스는, 구체적인 예시로 뉴럴 네트워크를 이용한 음성 인식, 영상 인식 등을 수행하는 자율주행 자동차, 로보틱스, 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스 등일 수 있으나, 이에 제한되지 않는다.
프로세서(110)는 메모리(120)에 저장된, 부동 소수점들을 이용하여 미리 훈련된 뉴럴 네트워크의 데이터를 획득할 수 있다. 미리 훈련된 뉴럴 네트워크는 높은 비트 정밀도의 부동 소수점 파라미터들로 반복적으로 훈련된 데이터일 수 있다. 뉴럴 네트워크의 훈련은, 훈련 데이터 세트(training dataset)를 입력으로 하여 먼저 반복적으로 훈련되고, 이어서 테스트 데이터 세트(test dataset)로 다시 반복적으로 훈련된 것일 수 있으나, 반드시 이에 제한되지 않는다. 훈련 데이터 세트는 뉴럴 네트워크를 훈련시키기 위한 입력 데이터이고, 테스트 데이터 세트는 훈련 데이터 세트와 겹치지 않는 입력 데이터로서, 훈련 데이터 세트로 훈련된 뉴럴 네트워크의 성능을 측정하면서 훈련시키기 위한 데이터이다.
프로세서(110)에 의해 뉴럴 네트워크에 포함되는 각 레이어가 낮은 비트 정밀도의 고정 소수점으로 양자화되는 방법에 대해서는, 이하 해당 도면들을 참고하여 구체적으로 설명하도록 한다.
한편, 메모리(120)는 예를 들어, 훈련되지 않은 초기 뉴럴 네트워크 데이터, 훈련 과정에서 생성된 뉴럴 네트워크 데이터, 모든 훈련이 완료된 뉴럴 네트워크 데이터, 양자화된 뉴럴 네트워크 데이터 등 프로세서(110)에 의해 처리될 또는 처리된 뉴럴 네트워크 관련 데이터 세트를 저장할 수 있고, 또한 프로세서(110)에 의해 실행될 뉴럴 네트워크의 훈련 알고리즘, 양자화 알고리즘 등에 관련된 다양한 프로그램들을 저장할 수 있다.
도 5는 일부 실시예에 따른 미리 훈련된 뉴럴 네트워크를 양자화하여 하드웨어 가속기에 채용하는 것을 설명하기 위한 도면이다.
도 5를 참고하면, PC, 서버 등과 같은 외부 디바이스의 프로세서는 부동 소수점 (예를 들어, 32비트 부동 소수점 정밀도)의 뉴럴 네트워크(510)를 훈련한 뒤, 훈련된 뉴럴 네트워크(510)를 뉴럴 네트워크 양자화 장치(예를 들어, 도 4의 뉴럴 네트워크 양자화 장치(10))로 전달할 수 있다. 다만 이에 제한되는 것은 아니며, 훈련된 뉴럴 네트워크(510)는 뉴럴 네트워크 양자화 장치의 프로세서(예를 들어, 도 4의 프로세서(110))에 의해 생성될 수도 있다.
미리 훈련된 뉴럴 네트워크(510) 자체는 높은 비트 정밀도의 부동 소수점 파라미터들로 인하여 저전력 또는 저성능의 하드웨어 가속기에서 효율적으로 처리되지 않을 수 있으므로, 뉴럴 네트워크 양자화 장치의 프로세서는 부동 소수점 파라미터들을 갖는 뉴럴 네트워크(510)를 고정 소수점(예를 들어, 16비트 이하의 고정 소수점 정밀도) 파라미터들을 갖는 뉴럴 네트워크(520)로 양자화한다. 하드웨어 가속기는 뉴럴 네트워크(520)의 구동을 위한 전용 하드웨어로서, 비교적 저전력 또는 저성능으로 구현되기 때문에 부동 소수점 연산 보다는 고정 소수점 연산에 보다 적합하게 구현될 수 있다. 하드웨어 가속기는 예를 들어, 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등에 해당될 수 있으나, 이에 제한되지 않는다.
양자화된 뉴럴 네트워크(520)를 구동하는 하드웨어 가속기는, 뉴럴 네트워크 양자화 장치와 동일한 장치 내에 구현될 수 있다. 하지만, 이에 제한되지 않고, 하드웨어 가속기는 뉴럴 네트워크 양자화 장치와는 별도의 독립적인 디바이스에 구현될 수도 있다.
도 6은 일부 실시예에 따른 뉴럴 네트워크 양자화를 위한 방법을 나타내는 흐름도이다. 도 6의 방법은 뉴럴 네트워크 양자화 장치(예를 들어, 도 4의 뉴럴 네트워크 양자화 장치(10))의 프로세서(예를 들어, 도 4의 프로세서(110))에 의해 수행될 수 있다.
단계 610에서, 프로세서는 복수의 입력 데이터 세트들 각각에 대해, 제1 비트 정밀도를 갖는 제1 뉴럴 네트워크의 순방향 패스 및 역방향 패스를 수행할 수 있다. 예를 들어, 프로세서는 복수의 입력 데이터 세트들 중 제1 입력 데이터 세트를 제1 뉴럴 네트워크에 입력하여, 제1 뉴럴 네트워크의 순방향 패스 및 역방향 패스를 수행하고, 제2 입력 데이터 세트를 제1 뉴럴 네트워크에 입력하여, 제1 뉴럴 네트워크의 순방향 패스 및 역방향 패스를 수행할 수 있다. 또한, 프로세서는 나머지 입력 데이터 세트들에 대해서도, 제1 뉴럴 네트워크의 순방향 패스 및 역방향 패스를 수행할 수 있다. 한편, 순방향 패스 및 역방향 패스 각각에 대해서는 도 3을 참조하여 설명하였으므로, 중복되는 설명은 생략한다.
단계 620에서, 프로세서는 역방향 패스를 수행하는 과정에서 제1 뉴럴 네트워크에 포함된 레이어들 각각에 대하여 계산되는 입력 그래디언트들, 웨이트 그래디언트들 및 출력 그래디언트들 중 적어도 하나에 대한 프로파일 정보를 획득할 수 있다. 예를 들어, 프로세서는 제1 뉴럴 네트워크에 포함되는 제1 레이어에 대응되는 프로파일 정보 및 제1 레이어와 상이한 제2 레이어에 대응되는 프로파일 정보를 개별적으로 획득할 수 있다.
프로파일 정보는 입력 그래디언트들, 웨이트 그래디언트들 및 출력 그래디언트들 중 적어도 하나를 인자(factor)로 갖는 통계량에 대응될 수 있다. 프로파일 정보에 대응되는 통계량은 뉴럴 네트워크의 순방향 패스의 결과로서 출력 레이어로부터 출력되는 출력 데이터와 실제 타겟 데이터 간의 차이에 따라 결정되는 손실에 비례 또는 반비례할 수 있다. 따라서, 레이어들 각각의 통계량을 비교 분석하면, 제1 뉴럴 네트워크에 포함되는 레이어들 중 중요도가 상대적으로 낮다고 판단되는 레이어(즉, 손실에 주는 영향이 상대적으로 작은 레이어)들이 결정될 수 있다.
일부 실시예에 있어서, 프로파일 정보는 웨이트 그래디언트들의 값과 웨이트들의 값을 이용하여 정규화된 통계량을 포함할 수 있다. 예를 들어, 프로파일 정보는 웨이트 그래디언트들의 절대 값들의 평균을 웨이트들의 절대 값들의 평균으로 나눈, 정규화된 통계량을 포함할 수 있다. 웨이트 그래디언트들은 앞서 도 3을 참조하여 설명한 바와 같이, 웨이트 맵(또는 웨이트 맵에 포함되는 웨이트들)이 손실에 주는 영향을 나타내는 파라미터이므로, 특정 레이어에 대응되는 웨이트 그래디언트들이 작다는 것은 해당 레이어의 웨이트 맵(또는 웨이트 맵에 포함되는 웨이트들)의 값이 다소 변경되더라도 제1 뉴럴 네트워크의 추론 능력이 크게 변경되지 않음을 의미할 수 있다. 다시 말해, 웨이트 그래디언트들이 상대적으로 작은 값을 갖는 레이어를 양자화할 경우, 웨이트 그래디언트들이 상대적으로 큰 값을 갖는 레이어를 양자화하는 경우보다 제1 뉴럴 네트워크의 정확도 손실이 감소될 수 있다.
다만, 0.1이란 숫자가 1에 미치는 영향과 0.2에 미치는 영향이 다르므로, 웨이트 그래디언트들만을 고려하는 것보다 웨이트 그래디언트들과 웨이트들의 절대 값들을 함께 고려하는 것이 바람직할 수 있다. 따라서, 프로파일 정보로서, 웨이트 그래디언트들의 절대 값들의 평균을 웨이트들의 절대 값들의 평균으로 나눈, 정규화된 통계량이 이용될 수 있다.
일 예에서, i번째 입력 데이터 세트에 대해 제1 뉴럴 네트워크의 순방향 패스 및 역방향 패스를 수행함에 따라 획득되는
Figure pat00019
번째 레이어의 웨이트 그래디언트들의 절대 값들의 평균을
Figure pat00020
라고 표현하고, 웨이트들의 절대 값들의 평균을
Figure pat00021
라고 표현하면, N개의 입력 데이터 세트들에 대응되는 웨이트 그래디언트들을 인자로 하는 통계량은 다음과 같은 수학식 3에 따라 결정될 수 있다.
Figure pat00022
또한, 프로파일 정보는 입력 그래디언트들의 분산(variance) 값과 입력 그래디언트들의 값을 이용하여 정규화된 통계량을 포함할 수 있다. 예를 들어, 프로파일 정보는 입력 그래디언트들의 절대 값들의 분산을 입력 그래디언트들의 절대 값들의 평균으로 나눈 통계량을 더 포함할 수 있다. 웨이트 그래디언트는 입력 피처 맵과 출력 그래디언트에 기초하여 계산되므로, 입력 피처 맵의 변화는 웨이트에 영향을 준다고 해석될 수 있다. 따라서, N개의 입력 데이터 세트들 각각에 대해 계산되는 N개의 웨이트 그래디언트들의 세트들이 순차적으로 누적됨에 따라 발생되는 변화는 웨이트 맵과 출력 그래디언트에 기초하여 계산되는 입력 그래이언트를 통해 확인될 수 있다. 따라서, 프로파일 정보로서, 입력 그래디언트들의 절대 값들의 분산을 입력 그래디언트들의 절대 값들의 평균으로 나눈 통계량이 추가로 이용될 수 있다.
일 예에서, i번째 입력 데이터 세트에 대해 제1 뉴럴 네트워크의 순방향 패스 및 역방향 패스를 수행함에 따라 획득되는
Figure pat00023
번째 레이어의 입력 그래디언트들의 절대 값들의 평균을
Figure pat00024
라고 표현하고, 입력 그래디언트들의 절대 값들의 분산을
Figure pat00025
라고 표현하면, 입력 그래디언트들을 인자로 하는 통계량은 다음과 같은 수학식 4에 따라 결정될 수 있다.
Figure pat00026
앞의 수학식 4는 입력 그래디언트들의 변동계수(coefficient of variance)에 대응될 수 있다.
또한, 프로파일 정보는 레이어들 각각에 대한 웨이트들의 값과 파라미터들의 수를 이용하여 정규화된 통계량을 포함할 수 있다. 예를 들어, 프로파일 정보는 레이어들 각각에 대한 웨이트들의 절대 값들의 분산을 채널 별 파라미터들의 수로 나눈, 정규화된 통계량을 더 포함할 수 있다. 채널 별 양자화가 수행되는 경우, 각 채널 내의 웨이트들의 값의 분포 차이가 클수록 하위 비트 양자화에 따른 양자화 에러가 증가될 수 있다. 따라서, 뉴럴 네트워크 양자화에 있어서, 중요도가 상대적으로 낮다고 판단되는 레이어를 결정하기 위해 웨이트들의 분산도 함께 고려되어야 한다. 또한, 웨이트들의 분산이 뉴럴 네트워크 양자화에 미치는 영향은 채널 별 파라미터들의 수에 따라 달라질 수 있으므로, 웨이트들의 절대 값들의 분산을 채널 별 파라미터들의 수로 나눈, 정규화된 통계량이 이용될 수 있다.
일부 실시예에 따라 프로파일 정보에 대응되는 통계량이 입력 그래디언트들, 웨이트 그래디언트들 및 출력 그래디언트들 모두를 인자로 갖는 경우, 통계량은 다음과 같은 수학식 5로 간단히 표현될 수 있다.
Figure pat00027
앞의 수학식 5에서 "avg"는 평균을, "abs"는 절대 값을, "var"는 분산을, "cnt"는 개수(즉, 카운팅된 값)를 의미할 수 있다.
한편, 입력 피처 맵의 양자화에 있어서, 레이어 별로만 스케일 팩터가 다르게 설정되는 경우, 특정 레이어의 출력 피처 맵에 대해 본래 출력 피처 맵의 채널들의 개수만큼 존재하던 스케일 팩터들이 하나의 스케일 팩터로 표현됨에 따라 손실되는 정보량이 증가할 수 있다. 따라서, 이러한 경우에는 채널 별 웨이트 값들의 분포 차이에 대응되는 통계량(예를 들어, 변동계수)도 추가로 고려되어야 하므로, 통계량은 다음과 같은 수학식 6과 같이 결정될 수 있다.
Figure pat00028
앞의 수학식 6은 앞의 수학식 5와 비교하여, 마지막 항(즉, 채널 별 웨이트 값들의 분포 차이에 대응되는 통계량)이 추가된 점에서만 차이가 있다. 앞의 수학식 6에서 "avg_of_each_ch"은 채널 별 평균을 의미할 수 있다.
한편, 수학식 5 및 6에서는 설명의 편의를 위해 프로파일 정보에 대응되는 통계량이 입력 그래디언트들, 웨이트 그래디언트들 및 출력 그래디언트들 모두를 인자로 갖는 경우에 대해 설명하였으나, 프로파일 정보에 대응되는 통계량은 입력 그래디언트들, 웨이트 그래디언트들 및 출력 그래디언트들 중 일부만을 인자로 가질 수도 있음을 해당 기술분야의 통상의 기술자는 쉽게 이해할 것이다.
단계 630에서, 프로세서는 획득된 프로파일 정보에 기초하여, 레이어들 중 제1 비트 정밀도보다 낮은 제2 비트 정밀도로 양자화될 하나 이상의 레이어들을 결정할 수 있다. 중요도가 상대적으로 낮은 레이어들은 더 낮은 비트 정밀도로 양자화되더라도, 정확도 손실에 상대적으로 작은 영향을 준다. 따라서, 프로세서는 제1 뉴럴 네트워크들에 포함되는 레이어들 중 중요도가 상대적으로 낮은 레이어들을 제2 비트 정밀도로 양자화될 레이어들로 결정할 수 있다.
예를 들어, 프로세서는 프로파일 정보에 대응되는 통계량의 크기의 순서대로 레이어들을 정렬(sort)하고, 정렬된 레이어들 중에서 통계량의 크기가 상대적으로 작은 레이어들을 양자화될 하나 이상의 레이어들로 결정할 수 있다. 단계 620을 참조하여 전술한 통계량의 크기가 작을수록 뉴럴 네트워크의 정확도 손실에 주는 영향이 작으므로, 통계량의 크기가 상대적으로 작은 레이어들이 양자화될 레이어들로 결정되는 것이다.
프로세서는 정렬된 레이어들 중에서 몇 개의 레이어들이 제2 비트 정밀도로 양자화되었을 때 제2 뉴럴 네트워크의 정확도 손실이 제1 뉴럴 네트워크와 비교하여 소정 임계값 이내가 되는지 여부를 탐색함으로써, 양자화될 하나 이상의 레이어들을 결정할 수 있다. 여기서, 정확도 손실이란 뉴럴 네트워크의 인식률에 대한 것일 수 있다. 이하 도 7을 참조하여 양자화될 레이어들을 결정하는 방법을 보다 상세히 설명할 것이다.
단계 640에서, 프로세서는 레이어들 중 결정된 레이어들을 제2 비트 정밀도로 양자화함으로써, 제2 뉴럴 네트워크를 생성할 수 있다. 이와 같이, 프로세서는 제1 뉴럴 네트워크들에 포함되는 레이어들 중 중요도가 상대적으로 낮은 레이어들만을 제2 비트 정밀도로 양자화함으로써, 정확도 손실은 최소화되면서도 연산량은 크게 감소되는 제2 뉴럴 네트워크를 생성할 수 있다.
한편, 일부 실시예에 따르면, 제1 뉴럴 네트워크는 제1 비트 정밀도보다 높은 제3 비트 정밀도의 부동 소수점 파라미터들의 레이어들을 갖는 제3 뉴럴 네트워크로부터 양자화된, 제1 비트 정밀도의 고정 소수점 파라미터들의 레이어들을 갖는 뉴럴 네트워크에 해당할 수 있다. 다시 말해, 제1 뉴럴 네트워크는 제3 뉴럴 네트워크에 대한 양자화가 수행됨에 따라 생성되는, 이미 양자화된 뉴럴 네트워크에 해당할 수 있다.
제2 뉴럴 네트워크는 제1 뉴럴 네트워크에 포함되는 레이어들 중에서 결정된 레이어들은 제2 비트 정밀도의 고정 소수점 파라미터들을 갖고, 나머지 레이어들은 제1 비트 정밀도의 고정 소수점 파라미터들을 갖도록 양자화된 뉴럴 네트워크에 해당할 수 있다.
한편, 프로세서는 획득된 프로파일 정보를 이용하여 재훈련(retraining) 없이 제1 뉴럴 네트워크의 결정된 레이어들에 대한 채널 별 양자화를 수행함으로써, 제2 뉴럴 네트워크를 생성할 수 있다. 프로세서는 복수의 입력 데이터 세트들 각각에 대해 제1 뉴럴 네트워크의 순방향 패스 및 역방향 패스를 수행함으로써, 프로파일 정보만을 획득할 뿐, 제1 뉴럴 네트워크의 순방향 패스 및 역방향 패스의 결과에 기초하여 제1 뉴럴 네트워크를 재훈련하지 않을 수 있다. 따라서, 제1 뉴럴 네트워크를 재훈련하기 위해 필요한 컴퓨팅 리소스, 시간, 복수의 입력 데이터 세트들을 저장하기 위한 메모리 용량 등이 요구되지 않으면서도, 정확도 손실을 최소화하는 양자화가 수행될 수 있다.
도 7은 일부 실시예에 따라 양자화될 레이어들을 결정하는 방법을 나타내는 흐름도이다. 도 7의 방법은 뉴럴 네트워크 양자화 장치(예를 들어, 도 4의 뉴럴 네트워크 양자화 장치(10))의 프로세서(예를 들어, 도 4의 프로세서(110))에 의해 수행될 수 있다. 한편, 도 7의 방법은 도 6의 단계 630이 수행되는 구체적인 방법의 일 예시일 수 있으나, 도 6의 단계 630이 도 7의 방법으로만 제한되는 것은 아니다.
단계 710에서, 프로세서는 통계량에 기초하여 레이어들을 정렬할 수 있다. 예를 들어, 프로세서는 도 6을 참조하여 설명한 프로파일 정보에 대응되는 통계량의 크기에 기초하여 뉴럴 네트워크에 포함되는 레이어들을 오름차순 또는 내림차순으로 정렬할 수 있다.
단계 720에서, 프로세서는 양자화 후보 레이어 목록에 포함되지 않은 레이어들 중 통계량의 크기가 가장 작은 레이어를 양자화 후보 레이어 목록에 포함시킬 수 있다. 후술할 단계 740의 판단 결과에 따라 단계 720이 반복되면, 양자화 후보 레이어 목록에는 레이어가 하나씩 순차적으로 추가될 수 있다.
단계 730에서, 프로세서는 양자화 후보 레이어 목록에 포함된 레이어들을 양자화할 수 있다. 레이어들을 양자화한다는 것은 레이어들 각각에 포함되는 부동 소수점 파라미터들을 고정 소수점 파라미터들로 변환하거나, 파라미터들의 비트 정밀도를 감소시키는 것을 의미한다.
단계 740에서, 프로세서는 뉴럴 네트워크가 양자화됨에 따라 발생되는 정확도 손실이 소정의 임계값보다 작은지 여부를 판단할 수 있다. 프로세서는 정확도 손실이 소정의 임계값보다 작은 경우 단계 720을 다시 수행하고, 정확도 손실이 소정의 임계값보다 큰 경우 단계 750을 수행할 수 있다.
단계 750에서, 프로세서는 마지막으로 양자화 후보 레이어 목록에 포함된 레이어를 제외한 후, 양자화 후보 레이어 목록에 포함된 레이어들을 양자화함으로써 양자화된 뉴럴 네트워크를 생성할 수 있다. 마지막으로 양자화 후보 레이어 목록에 포함된 레이어가 제외됨에 따라, 양자화된 뉴럴 네트워크의 정확도 손실이 소정의 임계값보다 작도록 하면서도 양자화 후보 레이어 목록에 가장 많은 수의 레이어들이 포함될 수 있다.
이와 같이, 프로세서는 중요도가 상대적으로 낮다고 판단되는 레이어들을 순차적으로 양자화 후보 레이어 목록에 포함시킴으로써, 정렬된 레이어들 중에서 몇 개의 레이어들이 양자화되었을 때 양자화된 뉴럴 네트워크의 정확도 손실이 양자화되기 전의 뉴럴 네트워크와 비교하여 소정 임계값 이내가 되는지 여부를 탐색할 수 있다.
도 8은 일부 실시예에 따른 뉴럴 네트워크가 양자화되는 과정을 나타내는 개요도이다.
도 8을 참고하면, 뉴럴 네트워크(810)는 32 비트 부동 소수점 파라미터들을 갖는 N개의 히든 레이어들을 포함한다. 뉴럴 네트워크(810)는 상대적으로 많은 연산량과 메모리 액세스 빈도를 처리할 수 있는 디바이스(예를 들어, 서버 또는 PC 등에 해당할 수 있으나, 이에 제한되지는 않음)에서 32 비트 부동 소수점 파라미터들을 이용하여 학습된 뉴럴 네트워크에 해당할 수 있다.
한편, 뉴럴 네트워크(810)는 뉴럴 네트워크(810)가 채용될 디바이스(예를 들어, 모바일 디바이스, 임베디드 디바이스 등에 해당할 수 있으나, 이에 제한되지는 않음)의 처리 성능을 고려하여, 양자화될 수 있다. 뉴럴 네트워크(810)가 양자화됨에 따라 뉴럴 네트워크(820)가 생성될 수 있다.
뉴럴 네트워크(820)는 뉴럴 네트워크(810)로부터 양자화된, 8 비트 고정 소수점 파라미터들을 갖는 뉴럴 네트워크에 해당할 수 있다. 한편, 에너지 효율 및 추론 속도를 보다 증가시키기 위해 뉴럴 네트워크(820)를 보다 낮은 비트 정밀도로 양자화하는 것이 요구될 수 있다. 다만, 뉴럴 네트워크(820)에 포함되는 모든 레이어들이 더 낮은 비트 정밀도(예를 들어, 4 비트 정밀도)로 양자화되는 경우, 뉴럴 네트워크(810)와 비교하여 훨씬 낮은 정확도(예를 들어, 뉴럴 네트워크(810)의 20% 이하 수준)가 획득될 수 있다.
따라서, 연산량 감소를 통해 에너지 효율 및 추론 속도를 보다 증가시키면서도 정확도 손실을 최소화하기 위해서는 뉴럴 네트워크(820)에 포함되는 레이어들 중 일부(특히, 중요도가 상대적으로 낮은 레이어들)만을 양자화하는 것이 바람직할 수 있다.
프로세서(예를 들어, 도 4의 프로세서(110))는 8 비트 정밀도로 양자화된 뉴럴 네트워크(820)의 순방향 패스 및 역방향 패스를 수행한 결과에 기초하여 레이어 별 통계량을 분석하고, 분석된 통계량에 기초하여 레이어들 중 8 비트 정밀도보다 낮은 4 비트 정밀도로 양자화될 하나 이상의 레이어들을 결정할 수 있다. 이에 따라, 뉴럴 네트워크(820)의 전체 레이어들 중 결정된 일부 레이어들은 4 비트 정밀도로 양자화될 수 있다.
최종적으로, 뉴럴 네트워크(820)는 4 비트 정밀도의 고정 소수점 파라미터들을 갖는 일부 레이어들과 8 비트 정밀도의 고정 소수점 파라미터들을 갖는 나머지 레이어들을 포함하는 뉴럴 네트워크(830)로 양자화될 수 있다.
한편, 도 8에서 설명된 뉴럴 네트워크의 비트 정밀도 수치(32비트, 8비트 또는 4비트) 및 식별 번호들은 설명의 편의를 위하여 예로 든 것일 뿐, 실시예들은 이에 제한되지 않는다. 또한, 도 8에서는 제1 뉴럴 네트워크(810)가 제2 뉴럴 네트워크(820)로 양자화된 후, 제2 뉴럴 네트워크(820)가 제3 뉴럴 네트워크(830)로 양자화되는 2단계의 방식에 대해 설명하였으나, 이에 반드시 제한되는 것은 아니다. 제1 뉴럴 네트워크(810)에 포함되는 레이어들 중 낮은 4 비트 정밀도로 양자화될 하나 이상의 레이어들을 결정되면, 결정된 레이어들은 4 비트 고정 소수점 정밀도로 양자화되고, 나머지 레이어들은 8 비트 고정 소수점 정밀도로 양자화되는 1단계의 방식으로 양자화가 수행될 수도 있다.
도 9는 일부 실시예에 따른 뉴럴 네트워크 양자화에 이용되는 스케일 팩터를 설명하기 위한 도면이다.
일부 실시예에 따르면, 뉴럴 네트워크 양자화를 위해 스케일 팩터가 이용될 수 있다. 스케일 팩터란 양자화된 파라미터 또는 데이터의 값을 소정의 범위 내로 제한하기 위해 양자화된 파라미터 또는 데이터에 곱해지는 계수를 의미할 수 있다. 실제 데이터 값을 R이라 하고, 양자화된 파라미터 또는 데이터의 값을 x라고 할 때, 스케일 팩터 SF는 다음과 같은 수학식 7에 따라 결정될 수 있다.
Figure pat00029
앞의 수학식 7에서 b는 바이어스(bias)로서, R과 x 간의 비례 관계를 맞추기 위해 레이어 별로 또는 채널 별로 결정되는 값일 수 있다. 일반적으로 스케일 팩터 SF는 1보다 매우 크거나, 매우 작은 값을 갖는바, R을 표현하기 위해 필요한 비트들의 개수보다 x를 표현하기 위해 필요한 비트들의 개수가 훨씬 작을 수 있다. 예를 들어, R을 표현하기 위해서는 32 비트 정밀도의 부동 소수점이 요구되나, x를 표현하기 위해서는 8 비트 정밀도의 고정 소수점만이 요구될 수 있다. 따라서, R을 x 및 스케일 팩터 SF만으로 표현하는 것은 파라미터 양자화에 대응될 수 있다.
한편, 채널 별로 다른 스케일 팩터를 적용하는 양자화가 수행되면, 입력 피처 맵과 웨이트 맵 간의 컨볼루션 연산 이후 출력 피처 맵의 각 채널을 위한 부분 합을 계산하는 과정에서 고려되어야 하는 스케일 팩터들의 개수가 입력 피처 맵의 채널들의 개수만큼 증가될 수 있다. 예를 들어, 도 9에 도시된 바와 같이, 입력 피처 맵의 3개의 채널들의 스케일 팩터를 각각
Figure pat00030
,
Figure pat00031
Figure pat00032
라고 하고, 출력 피처 맵의 첫 번째 채널을 획득하기 위해 이용되는 웨이트 맵의 스케일 팩터를
Figure pat00033
라고 하면, 출력 피처 맵의 첫 번째 채널의 스케일 팩터
Figure pat00034
Figure pat00035
,
Figure pat00036
Figure pat00037
중 하나로 선택될 필요가 있다.
이 때, 스케일 팩터
Figure pat00038
Figure pat00039
,
Figure pat00040
Figure pat00041
중 하나의 스케일 팩터로 선택되면, 선택된 스케일 팩터로 통일하여 양자화되는 과정에서 정보 손실이 발생된다. 또한, 발생되는 정보 손실은 입력 피처 맵의 각 채널의 스케일 팩터 간의 차이가 클수록 증가될 수 있다. 이하 도 10 및 도 11을 참조하여 전술한 문제점을 해결하기 위해 종래 기술 및 본 개시의 일부 실시예 각각에서 어떠한 알고리즘을 적용하였는지를 상세히 설명한다.
도 10은 종래 기술에 따른, 양자화된 뉴럴 네트워크를 이용하여 추론을 수행하는 알고리즘을 나타내는 도면이다.
도 10을 참조하면, 종래 기술에 따라 양자화된 뉴럴 네트워크를 이용하여 추론을 수행하는 과정에서 이용되는 알고리즘(1000)이 도시되어 있다. 양자화된 뉴럴 네트워크에 포함되는 파라미터들은 상대적으로 낮은 비트 정밀도로 양자화되어 있으므로, 양자화된 뉴럴 네트워크의 각 레이어의 입력 채널 및 출력 채널도 양자화될 필요가 있다. 한편, 입력 채널의 양자화를 위해 결정되어야 하는 스케일 팩터는 유사 부호(pseudo code) 등을 이용한 프로파일링을 통해 미리 계산될 수 있다.
동작 1010에서, 종래 기술에 따른 알고리즘(1000)은 웨이트에 입력 채널의 스케일 팩터의 역수를 곱함(즉, 웨이트를 입력 채널의 스케일 팩터로 나눔)으로써, 웨이트에 입력 채널의 스케일 팩터를 선반영할 수 있다.
동작 1020에서, 알고리즘(1000)은 입력 채널의 양자화된 액티베이션들과 양자화된 웨이트들 간의 컨볼루션 연산에 수반되는 곱셈 연산을 수행하고, 그 결과를 8 비트 고정 소수점 정밀도로 저장할 수 있다. 이 때, 결과의 저장을 위해 필요한 버퍼의 수는 "입력 채널 커널(웨이트 맵)의 크기 * 입력 채널의 개수 * 출력 채널의 개수"에 대응될 수 있다.
동작 1030에서, 알고리즘(1000)은 컨볼루션 연산에 수반되는 덧셈 연산으로서, 동작 1020에 따른 곱셈 연산의 결과들을 모두 더하고, 그 결과를 16 비트 고정 소수점 정밀도로 저장할 수 있다. 이 때, 결과의 저장을 위해 필요한 버퍼의 수는 "입력 채널의 개수 * 출력 채널의 개수"에 대응될 수 있다.
동작 1040에서, 알고리즘(1000)은 덧셈 연산의 결과들을 모두 더하고, 그 결과를 32 비트 고정 소수점 정밀도로 저장할 수 있다. 이 때, 결과의 저장을 위해 필요한 버퍼의 수는 "출력 채널의 개수"에 대응될 수 있다.
이와 같이, 종래 기술에 따른 알고리즘(1000)은 웨이트에 입력 채널의 스케일 팩터를 선반영함으로써, 출력 피처 맵의 각 채널을 위한 부분 합을 계산하는 과정에서 고려해야 하는 스케일 팩터의 개수가 커널(웨이트 맵)의 스케일 팩터로 감소되도록 할 수 있었다. 다만, 종래 기술에 따른 알고리즘(1000)에 따르면, 웨이트에 입력 채널의 스케일 팩터가 선반영됨에 따라 웨이트의 값들의 범위가 변경되므로, 더 낮은 비트 정밀도로의 양자화에서의 해상도(resolution)에 영향을 주게 되고, 이에 따라, 정확도가 감소되었다.
도 11은 일부 실시예에 따른, 양자화된 뉴럴 네트워크를 이용하여 추론을 수행하는 알고리즘을 나타내는 도면이다.
도 11을 참조하면, 일부 실시예에 따라 양자화된 뉴럴 네트워크를 이용하여 추론을 수행하는 과정에서 이용되는 알고리즘(1100)이 도시되어 있다. 도 11의 알고리즘(1100)은 뉴럴 네트워크 양자화 장치(예를 들어, 도 4의 뉴럴 네트워크 양자화 장치(10))의 프로세서(예를 들어, 도 4의 프로세서(110))에 의해 실행될 수 있다. 다만, 이에 반드시 제한되는 것은 아니며, 뉴럴 네트워크 양자화 장치에 의해 양자화된 뉴럴 네트워크가 다른 디바이스로 전송되는 경우, 알고리즘(1100)은 다른 디바이스의 프로세서에 의해 실행될 수도 있다. 알고리즘(1100)은 양자화된 뉴럴 네트워크(예를 들어, 도 6을 참조하여 설명한 제2 뉴럴 네트워크)를 이용한 추론 과정에서 이용될 수 있다.
동작 1110에서, 일부 실시예에 따른 알고리즘(1100)은 채널 별로 결정되는 스케일 팩터를 이용하여 양자화된 입력 피처 맵 및 웨이트 맵 간의 컨볼루션 연산에 수반되는 곱셈 연산을 수행하고, 그 결과를 8 비트 고정 소수점 정밀도로 저장할 수 있다. 이 때, 결과의 저장을 위해 필요한 버퍼의 수는 "입력 채널 커널(웨이트 맵)의 크기 * 입력 채널의 개수 * 출력 채널의 개수"에 대응될 수 있다.
동작 1120에서, 알고리즘(1100)은 컨볼루션 연산에 수반되는 덧셈 연산으로서, 동작 1110에 따른 곱셈 연산의 결과들을 모두 더하고, 그 결과를 16 비트 고정 소수점 정밀도로 저장할 수 있다. 이 때, 결과의 저장을 위해 필요한 버퍼의 수는 "입력 채널의 개수 * 출력 채널의 개수"에 대응될 수 있다.
동작 1130에서, 알고리즘(1100)은 덧셈 연산의 결과에 입력 채널의 스케일 팩터의 역수를 곱할 수 있다. 다시 말해, 알고리즘(1100)은 출력 피처 맵의 채널 별 부분 합을 계산하기 전에, 컨볼루션 연산의 결과들에 입력 피처 맵의 스케일 팩터를 반영할 수 있다. 또한, 알고리즘(1100)은 스케일 팩터가 반영된 결과를 부동 소수점 정밀도로 저장할 수 있다. 이 때, 결과의 저장을 위해 필요한 버퍼의 수는 "입력 채널의 개수 * 출력 채널의 개수"에 대응될 수 있다. 한편, 입력 채널의 스케일 팩터는 유사 부호 등을 이용한 프로파일링을 통해 미리 계산될 수 있다.
동작 1140에서, 알고리즘(1100)은 입력 피처 맵의 스케일 팩터가 반영된 컨볼루션 연산의 결과들을 채널 별로 누산(accumulation)함으로써, 출력 피처 맵을 획득할 수 있다. 또한, 알고리즘(1100)은 출력 피처 맵을 부동 소수점 정밀도로 저장할 수 있다. 이 때, 결과의 저장을 위해 필요한 버퍼의 수는 "출력 채널의 개수"에 대응될 수 있다.
이와 같이, 일부 실시예에 따르면, 출력 피처 맵의 채널 별 부분 합을 계산하기 전에, 컨볼루션 연산의 결과들에 입력 피처 맵의 스케일 팩터가 반영되므로, 웨이트 값들이 본래의 값으로 표현되므로, 정확도 감소가 방지될 수 있다. 또한, 출력 피처 맵에 대해 별도의 스케일 팩터를 결정하는 과정 없이, 웨이트 맵의 스케일 팩터를 이용하여 출력 피처 맵이 양자화될 수 있으므로, 출력 피처 맵의 스케일 팩터를 결정하는 과정에서 발생되는 정보 손실이 방지될 수 있다.
또한, 일부 실시예에 따르면, 추론 과정에서 채널 별 곱셈 연산의 결과를 입력 채널의 스케일 팩터로 나누어주는 쉬프트(shift) 연산이 요구되지만, 쉬프트 연산은 출력 피처 맵의 스케일 팩터를 결정하는 연산보다 빠르며, "입력 채널의 개수 * 출력 채널의 개수"의 고정 소수점 정밀도의 버퍼가 추가로 요구되지만, 정확도 손실이 방지되는 정도를 고려하면 합리적인 비용으로 생각될 수 있다.
한편, 도 11에서 설명된 뉴럴 네트워크의 비트 정밀도 수치(32비트, 16비트 또는 8비트) 및 파라미터 타입들(부동 소수점 또는 고정 소수점)은 설명의 편의를 위하여 예로 든 것일 뿐, 실시예들은 이에 제한되지 않는다.
상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 본 발명의 실시예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
도 12는 일부 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
도 12를 참고하면, 전자 시스템(1200)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(1200)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 전자 시스템(1200)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(1200)은 프로세서(1210), RAM(1220), 뉴럴 네트워크 장치(1230), 메모리(1240), 센서 모듈(1250) 및 통신 모듈(1260)을 포함할 수 있다. 전자 시스템(1200)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 전자 시스템(1200)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다.
프로세서(1210)는 전자 시스템(1200)의 전반적인 동작을 제어한다. 프로세서(1210)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(1210)는 메모리(1240)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일부 실시예에 있어서, 프로세서(1210)는 메모리(1240)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1230)의 기능을 제어할 수 있다. 프로세서(1210)는 CPU, GPU, AP 등으로 구현될 수 있다.
RAM(1220)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(1240)에 저장된 프로그램들 및/또는 데이터는 프로세서(1210)의 제어 또는 부팅 코드에 따라 RAM(1220)에 일시적으로 저장될 수 있다. RAM(1220)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(1230)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 CNN, RNN, Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(1230)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 학습 또는 훈련하거나, 부동 소수점 파라미터들을 갖는 뉴럴 네트워크를 고정 소수점 파라미터들을 갖는 뉴럴 네트워크로 양자화하거나, 또는 뉴럴 네트워크를 재훈련하는 기능들과 같은 다양한 프로세싱 기능들을 가질 수 있다. 일 예에서, 뉴럴 네트워크 장치(1230)는 앞서 설명된 도 4의 뉴럴 네트워크 양자화 장치(10)일 수 있으며, 양자화된 뉴럴 네트워크를 이용하여 처리를 수행하는 하드웨어로서, 뉴럴 네트워크 전용 하드웨어 가속기 자체 또는 이를 포함하는 장치에 해당될 수도 있다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(1230)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(1200)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(1230)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
메모리(1240)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(1240)는 뉴럴 네트워크 장치(1230)의 연산 수행 과정에서 생성되는 중간 결과들, 예컨대 출력 피처 맵을 출력 피처 리스트 또는 출력 피처 매트릭스 형태로 저장할 수 있다. 실시예에 있어서, 메모리(1240)에는 압축된 출력 피처 맵이 저장될 수 있다. 또한, 메모리(1240)는 뉴럴 네트워크 장치(1230)에서 이용되는 양자화된 뉴럴 네트워크 데이터, 예컨대, 파라미터들, 웨이트 맵 또는 웨이트 리스트를 저장할 수 있다.
메모리(1240)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1240)는 휘발성 메모리 또는 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리(1240)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(1250)은 전자 시스템(1200)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(1250)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(1250)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(1250)은 변환된 데이터를 뉴럴 네트워크 장치(1230)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(1250)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(1230)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(1250)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(1230)에 제공할 수 있다.
통신 모듈(1260)은 외부 디바이스와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(1260)은 유선 근거리통신망(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)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
실시예에 있어서, 통신 모듈(1260)은 외부 디바이스로부터 미리 훈련된 뉴럴 네트워크 또는 양자화된 뉴럴 네트워크에 관한 데이터를 수신할 수 있다. 뉴럴 네트워크 장치(1230)는 외부 디바이스로부터 수신된 뉴럴 네트워크를 그대로 이용하여 추론을 수행할 수도 있고, 외부 디바이스로부터 수신된 뉴럴 네트워크에 대한 양자화를 수행할 수 있다. 예를 들어, 뉴럴 네트워크 장치(1230)는 외부 디바이스로부터 수신된 뉴럴 네트워크에 포함되는 레이어들 중 적어도 일부를 더 낮은 비트 정밀도로 양자화할 수 있다. 양자화된 뉴럴 네트워크 데이터는 메모리(1240)에 저장될 수 있다.
이상에서 실시예들에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.

Claims (23)

  1. 뉴럴 네트워크 양자화를 위한 방법에 있어서,
    복수의 입력 데이터 세트들 각각에 대해, 제1 비트 정밀도를 갖는 제1 뉴럴 네트워크의 순방향 패스(forward pass) 및 역방향 패스(backward pass)를 수행하는 단계;
    상기 역방향 패스를 수행하는 과정에서 상기 제1 뉴럴 네트워크에 포함된 레이어들 각각에 대하여 계산되는 입력 그래디언트(input gradient)들, 웨이트 그래디언트(weight gradient)들 및 출력 그래디언트(output gradient)들 중 적어도 하나에 대한 프로파일 정보를 획득하는 단계;
    상기 획득된 프로파일 정보에 기초하여, 상기 레이어들 중 상기 제1 비트 정밀도보다 낮은 제2 비트 정밀도로 양자화될 하나 이상의 레이어들을 결정하는 단계; 및
    상기 레이어들 중 상기 결정된 레이어들을 상기 제2 비트 정밀도로 양자화함으로써, 제2 뉴럴 네트워크를 생성하는 단계를 포함하는, 방법.
  2. 제 1항에 있어서,
    상기 프로파일 정보는,
    상기 웨이트 그래디언트들의 절대 값들의 평균을 웨이트들의 절대 값들의 평균으로 나눈, 정규화된 통계량을 포함하는, 방법.
  3. 제 1항에 있어서,
    상기 프로파일 정보는,
    상기 웨이트 그래디언트들의 값과 웨이트의 값들을 이용하여 정규화된 통계량을 포함하는, 방법.
  4. 제 1항에 있어서,
    상기 프로파일 정보는,
    상기 입력 그래디언트들의 절대 값들의 분산(variance)을 상기 입력 그래디언트들의 절대 값들의 평균으로 나눈 통계량을 포함하는, 방법.
  5. 제 1항에 있어서,
    상기 프로파일 정보는,
    상기 입력 그래디언트들의 분산(variance) 값과 입력 그래디언트 값들을 이용하여 정규화된 통계량을 포함하는, 방법.
  6. 제 1항에 있어서,
    상기 프로파일 정보는,
    상기 레이어들 각각에 대한 웨이트들의 절대 값들의 분산을 채널 별 파라미터들의 수로 나눈, 정규화된 통계량을 포함하는, 방법.
  7. 제 1항에 있어서,
    상기 프로파일 정보는,
    상기 레이어들 각각에 대한 웨이트들의 값과 파라미터들의 수를 이용하여 정규화된 통계량을 포함하는, 방법.
  8. 제 1항에 있어서,
    상기 방법은,
    상기 획득된 프로파일 정보에 대응되는 통계량의 크기의 순서대로 상기 레이어들을 정렬(sort)하는 단계를 더 포함하고,
    상기 결정하는 단계는,
    상기 정렬된 레이어들 중에서 상기 통계량의 크기가 상대적으로 작은 레이어들을 상기 양자화될 하나 이상의 레이어들로 결정하는, 방법.
  9. 제 8 항에 있어서,
    상기 결정하는 단계는
    상기 정렬된 레이어들 중에서 몇 개의 레이어들이 상기 제2 비트 정밀도로 양자화되었을 때 상기 제2 뉴럴 네트워크의 정확도 손실(accuracy loss)이 상기 제1 뉴럴 네트워크와 비교하여 소정 임계값 이내가 되는지 여부를 탐색함으로써, 상기 양자화될 하나 이상의 레이어들을 결정하는, 방법.
  10. 제 1 항에 있어서,
    상기 제1 뉴럴 네트워크는,
    상기 제1 비트 정밀도보다 높은 제3 비트 정밀도의 부동 소수점(floating point) 파라미터들의 레이어들을 갖는 제3 뉴럴 네트워크로부터 양자화된, 상기 제1 비트 정밀도의 고정 소수점(fixed point) 파라미터들의 레이어들을 갖는 뉴럴 네트워크에 해당하고,
    상기 제2 뉴럴 네트워크는,
    상기 레이어들 중에서 상기 결정된 레이어들은 상기 제2 비트 정밀도의 고정 소수점 파라미터들을 갖고, 나머지 레이어들은 상기 제1 비트 정밀도의 상기 고정 소수점 파라미터들을 갖도록 양자화된 뉴럴 네트워크에 해당하는, 방법.
  11. 제 1항에 있어서,
    상기 방법은,
    상기 획득된 프로파일 정보를 이용하여 재훈련(retraining) 없이 상기 제1 뉴럴 네트워크의 상기 결정된 레이어들에 대한 채널 별 양자화를 수행함으로써, 상기 제2 뉴럴 네트워크를 생성하는, 방법.
  12. 제 1항에 있어서,
    상기 방법은,
    상기 생성된 제2 뉴럴 네트워크를 이용한 추론(inference) 과정에서, 채널 별로 결정되는 스케일 팩터(scale factor)를 이용하여 양자화된 입력 피처 맵 및 웨이트 맵 간의 컨볼루션 연산을 수행하는 단계;
    출력 피처 맵의 채널 별 부분 합(partial sum)을 계산하기 전에, 상기 컨볼루션 연산의 결과들에 상기 입력 피처 맵의 스케일 팩터를 반영하는 단계; 및
    상기 입력 피처 맵의 스케일 팩터가 반영된 컨볼루션 연산의 결과들을 채널 별로 누산(accumulation)함으로써, 상기 출력 피처 맵을 획득하는 단계를 더 포함하는, 방법.
  13. 제 12항에 있어서,
    상기 방법은,
    상기 출력 피처 맵에 대해 별도의 스케일 팩터를 결정하는 과정 없이, 상기 웨이트 맵의 스케일 팩터를 이용하여 상기 출력 피처 맵을 양자화하는 단계를 더 포함하는, 방법.
  14. 뉴럴 네트워크 양자화를 위한 장치에 있어서,
    적어도 하나의 프로그램이 저장된 메모리; 및
    상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크 양자화를 수행하는 프로세서를 포함하고,
    상기 프로세서는,
    복수의 입력 데이터 세트들 각각에 대해, 제1 비트 정밀도를 갖는 제1 뉴럴 네트워크의 순방향 패스(forward pass) 및 역방향 패스(backward pass)를 수행하고,
    상기 역방향 패스를 수행하는 과정에서 상기 제1 뉴럴 네트워크에 포함된 레이어들 각각에 대하여 계산되는 입력 그래디언트(input gradient)들, 웨이트 그래디언트(weight gradient)들 및 출력 그래디언트(output gradient)들 중 적어도 하나에 대한 프로파일 정보를 획득하며,
    상기 획득된 프로파일 정보에 기초하여, 상기 레이어들 중 상기 제1 비트 정밀도보다 낮은 제2 비트 정밀도로 양자화될 하나 이상의 레이어들을 결정하고,
    상기 레이어들 중 상기 결정된 레이어들을 상기 제2 비트 정밀도로 양자화함으로써, 제2 뉴럴 네트워크를 생성하는, 장치.
  15. 제 14항에 있어서,
    상기 프로파일 정보는,
    상기 웨이트 그래디언트들의 절대 값들의 평균을 웨이트들의 절대 값들의 평균으로 나눈, 정규화된 통계량을 포함하는, 장치.
  16. 제 14항에 있어서,
    상기 프로파일 정보는,
    상기 입력 그래디언트들의 절대 값들의 분산(variance)을 상기 입력 그래디언트들의 절대 값들의 평균으로 나눈 통계량을 포함하는, 장치.
  17. 제 14항에 있어서,
    상기 프로파일 정보는,
    상기 레이어들 각각에 대한 웨이트들의 절대 값들의 분산을 채널 별 파라미터들의 수로 나눈, 정규화된 통계량을 포함하는, 장치.
  18. 제 14항에 있어서,
    상기 프로세서는,
    상기 획득된 프로파일 정보에 대응되는 통계량의 크기의 순서대로 상기 레이어들을 정렬(sort)하고,
    상기 정렬된 레이어들 중에서 상기 통계량의 크기가 상대적으로 작은 레이어들을 상기 양자화될 하나 이상의 레이어들로 결정하는, 장치.
  19. 제 18항에 있어서,
    상기 프로세서는,
    상기 정렬된 레이어들 중에서 몇 개의 레이어들이 상기 제2 비트 정밀도로 양자화되었을 때 상기 제2 뉴럴 네트워크의 정확도 손실(accuracy loss)이 상기 제1 뉴럴 네트워크와 비교하여 소정 임계값 이내가 되는지 여부를 탐색함으로써, 상기 양자화될 하나 이상의 레이어들을 결정하는, 장치.
  20. 제 14항에 있어서,
    상기 제1 뉴럴 네트워크는,
    상기 제1 비트 정밀도보다 높은 제3 비트 정밀도의 부동 소수점(floating point) 파라미터들의 레이어들을 갖는 제3 뉴럴 네트워크로부터 양자화된, 상기 제1 비트 정밀도의 고정 소수점(fixed point) 파라미터들의 레이어들을 갖는 뉴럴 네트워크에 해당하고,
    상기 제2 뉴럴 네트워크는,
    상기 레이어들 중에서 상기 결정된 레이어들은 상기 제2 비트 정밀도의 고정 소수점 파라미터들을 갖고, 나머지 레이어들은 상기 제1 비트 정밀도의 상기 고정 소수점 파라미터들을 갖도록 양자화된 뉴럴 네트워크에 해당하는, 장치.
  21. 제 14항에 있어서,
    상기 프로세서는,
    상기 획득된 프로파일 정보를 이용하여 재훈련(retraining) 없이 상기 제1 뉴럴 네트워크의 상기 결정된 레이어들에 대한 채널 별 양자화를 수행함으로써, 상기 제2 뉴럴 네트워크를 생성하는, 장치.
  22. 제 14항에 있어서,
    상기 프로세서는,
    상기 생성된 제2 뉴럴 네트워크를 이용한 추론(inference) 과정에서, 채널 별로 결정되는 스케일 팩터(scale factor)를 이용하여 양자화된 입력 피처 맵 및 웨이트 맵 간의 컨볼루션 연산을 수행하고,
    출력 피처 맵의 채널 별 부분 합(partial sum)을 계산하기 전에, 상기 컨볼루션 연산의 결과들에 상기 입력 피처 맵의 스케일 팩터를 반영하며,
    상기 입력 피처 맵의 스케일 팩터가 반영된 컨볼루션 연산의 결과들을 채널 별로 누산(accumulation)함으로써, 상기 출력 피처 맵을 획득하는, 장치.
  23. 제 22항에 있어서,
    상기 프로세서는,
    상기 출력 피처 맵에 대해 별도의 스케일 팩터를 결정하는 과정 없이, 상기 웨이트 맵의 스케일 팩터를 이용하여 상기 출력 피처 맵을 양자화하는, 장치.
KR1020200039428A 2020-03-31 2020-03-31 뉴럴 네트워크 양자화를 위한 방법 및 장치 KR20210121946A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200039428A KR20210121946A (ko) 2020-03-31 2020-03-31 뉴럴 네트워크 양자화를 위한 방법 및 장치
US17/012,181 US20210303972A1 (en) 2020-03-31 2020-09-04 Method and apparatus with neural network quantization

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200039428A KR20210121946A (ko) 2020-03-31 2020-03-31 뉴럴 네트워크 양자화를 위한 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20210121946A true KR20210121946A (ko) 2021-10-08

Family

ID=77854832

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200039428A KR20210121946A (ko) 2020-03-31 2020-03-31 뉴럴 네트워크 양자화를 위한 방법 및 장치

Country Status (2)

Country Link
US (1) US20210303972A1 (ko)
KR (1) KR20210121946A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240008816A (ko) * 2022-07-12 2024-01-19 오픈엣지테크놀로지 주식회사 신경망 레이어의 출력 액티베이션을 산출하는 신경망연산방법 및 이를 위한 하드웨어 가속기
WO2024135861A1 (ko) * 2022-12-19 2024-06-27 한국전자기술연구원 가변 데이터 표현형을 적용한 딥러닝 학습 방법 및 이를 적용한 모바일 디바이스

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11899518B2 (en) * 2021-12-15 2024-02-13 Microsoft Technology Licensing, Llc Analog MAC aware DNN improvement
CN116561050A (zh) * 2023-04-07 2023-08-08 清华大学 面向rram存算一体芯片的细粒度映射方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201607713D0 (en) * 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
US11551077B2 (en) * 2018-06-13 2023-01-10 International Business Machines Corporation Statistics-aware weight quantization

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240008816A (ko) * 2022-07-12 2024-01-19 오픈엣지테크놀로지 주식회사 신경망 레이어의 출력 액티베이션을 산출하는 신경망연산방법 및 이를 위한 하드웨어 가속기
WO2024135861A1 (ko) * 2022-12-19 2024-06-27 한국전자기술연구원 가변 데이터 표현형을 적용한 딥러닝 학습 방법 및 이를 적용한 모바일 디바이스

Also Published As

Publication number Publication date
US20210303972A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
JP7329455B2 (ja) ニューラルネットワーク量子化のための方法及び装置
CN109389219B (zh) 用于对神经网络的参数进行量化的方法和装置
KR102589303B1 (ko) 고정 소수점 타입의 뉴럴 네트워크를 생성하는 방법 및 장치
US11836603B2 (en) Neural network method and apparatus with parameter quantization
US20220335284A1 (en) Apparatus and method with neural network
US12026611B2 (en) Method and apparatus for quantizing parameters of neural network
KR102526650B1 (ko) 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치
KR20210121946A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
US11816557B2 (en) Method and apparatus with neural network parameter quantization
US11531893B2 (en) Method and apparatus with neural network parameter quantization
US11501166B2 (en) Method and apparatus with neural network operation
KR20210154502A (ko) 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법
US20220114453A1 (en) Method and apparatus with neural network pruning
KR20210053791A (ko) 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치
KR102581471B1 (ko) 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
US11823029B2 (en) Method and apparatus with neural network processing
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치
KR20240035013A (ko) 뉴럴 네트워크의 파라미터 양자화 방법 및 장치