KR20210043295A - 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치 - Google Patents

뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치 Download PDF

Info

Publication number
KR20210043295A
KR20210043295A KR1020190126298A KR20190126298A KR20210043295A KR 20210043295 A KR20210043295 A KR 20210043295A KR 1020190126298 A KR1020190126298 A KR 1020190126298A KR 20190126298 A KR20190126298 A KR 20190126298A KR 20210043295 A KR20210043295 A KR 20210043295A
Authority
KR
South Korea
Prior art keywords
data
local
global
maximum value
output
Prior art date
Application number
KR1020190126298A
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 KR1020190126298A priority Critical patent/KR20210043295A/ko
Priority to US15/931,362 priority patent/US20210110270A1/en
Priority to EP20183579.0A priority patent/EP3805994A1/en
Priority to CN202011086791.6A priority patent/CN112651485A/zh
Publication of KR20210043295A publication Critical patent/KR20210043295A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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
    • 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/0495Quantised networks; Sparse networks; Compressed 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
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/95Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors

Landscapes

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

Abstract

뉴럴 네트워크의 데이터를 양자화하는 방법은, 현재 레이어의 연산의 출력 데이터를 복원한 후 1차 양자화함으로써 로컬 양자화 데이터를 획득하고, 로컬 양자화 데이터를 복원한 후 2차 양자화함으로써 글로벌 양자화 데이터를 획득하고, 글로벌 양자화 데이터를 다음 레이어의 연산을 위한 입력 데이터로 제공한다.

Description

뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치{Method and apparatus for quantizing data of neural network}
뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치에 관한다.
뉴럴 네트워크는 컴퓨터 과학적 아키텍처(computational architecture)를 참조하여 구현된 컴퓨팅 시스템이다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하고 있다.
뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 장치가 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다. 특히, 스마트폰과 같은, 저전력 고성능 임베디드 시스템은 제한된 리소스를 가지므로, 복잡한 입력 데이터를 처리하는데 필요한 리소스를 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
다양한 실시예들은 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치를 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다. 본 개시가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따른 뉴럴 네트워크의 데이터를 양자화하는 방법은, 이전 레이어에 대응하는 글로벌 최대값에 기초하여 현재 레이어의 연산의 출력 데이터로부터 복원된 글로벌 복원 데이터를 상기 현재 레이어의 출력 채널 별 로컬 최대값에 기초하여 1차 양자화함으로써, 로컬 양자화 데이터를 획득하는 단계; 다음 레이어의 연산을 수행하기 위하여, 상기 로컬 양자화 데이터를 메모리에 저장하는 단계; 상기 출력 채널 별 상기 로컬 최대값에 기초하여 상기 로컬 양자화 데이터로부터 복원된 로컬 복원 데이터를 상기 현재 레이어에 대응하는 글로벌 최대값에 기초하여 2차 양자화함으로써, 글로벌 양자화 데이터를 획득하는 단계; 및 상기 글로벌 양자화 데이터를 상기 다음 레이어의 연산을 위한 입력 데이터로 제공하는 단계를 포함한다.
다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 기록매체를 포함할 수 있다.
또 다른 측면에 따른 장치는, 적어도 하나의 프로그램이 저장된 메모리; 및 상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크의 데이터를 양자화하는 프로세서를 포함하고, 상기 프로세서는, 이전 레이어에 대응하는 글로벌 최대값에 기초하여 현재 레이어의 연산의 출력 데이터로부터 복원된 글로벌 복원 데이터를 상기 현재 레이어의 출력 채널 별 로컬 최대값에 기초하여 1차 양자화함으로써, 로컬 양자화 데이터를 획득하고, 다음 레이어의 연산을 수행하기 위하여, 상기 로컬 양자화 데이터를 메모리에 저장하고, 상기 출력 채널 별 상기 로컬 최대값에 기초하여 상기 로컬 양자화 데이터로부터 복원된 로컬 복원 데이터를 상기 현재 레이어에 대응하는 글로벌 최대값에 기초하여 2차 양자화함으로써, 글로벌 양자화 데이터를 획득하고, 상기 글로벌 양자화 데이터를 상기 다음 레이어의 연산을 위한 입력 데이터로 제공한다.
도 1은 뉴럴 네트워크의 일 예를 설명하기 위한 도면이다.
도 2는 뉴럴 네트워크의 아키텍처의 일 예를 설명하기 위한 도면이다.
도 3은 순전파 및 역전파의 일 예를 설명하기 위한 도면이다.
도 4는 순전파 및 역전파에서 컨벌루션 레이어의 연산의 일 예를 설명하기 위한 도면이다.
도 5는 뉴럴 네트워크 학습기 및 뉴럴 네트워크 추론기의 일 예를 설명하기 위한 도면이다.
도 6은 뉴럴 네트워크에서 데이터를 양자화하는 일 예를 설명하는 도면이다.
도 7은 뉴럴 네트워크의 데이터를 양자화하는 방법의 일 예를 도시한 흐름도이다.
도 8은 로컬 최대값 및 글로벌 최대값을 저장하는 일 예를 도시한 흐름도이다.
도 9는 뉴럴 네트워크의 데이터를 양자화하는 일 예를 설명하는 도면이다.
도 10은 로컬 최대값 및 글로벌 최대값을 획득하는 일 예를 설명하는 도면이다.
도 11은 출력 채널 별로 1차 양자화 및 2차 양자화하는 일 예를 설명하는 도면이다.
도 12는 도 7의 방식을 이용하는 뉴럴 네트워크의 데이터의 양자화 알고리즘을 도시한 도면이다.
도 13은 뉴럴 네트워크의 데이터를 양자화하는 일 예를 설명하는 도면이다.
도 14는 뉴럴 네트워크 장치 장치의 일 예를 도시한 구성도이다.
실시 예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 명세서의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...유닛" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 실시 예에 대하여 상세히 설명한다. 그러나 실시 예는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 예에 한정되지 않는다.
이하에서는 도면을 참조하여 실시 예들을 상세히 설명한다.
도 1은 뉴럴 네트워크의 일 예를 설명하기 위한 도면이다.
도 1에 도시된 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, 이하 'DNN'이라고 함)의 일 예일 수 있으나, 이에 한정되지 않는다. 예를 들어, 뉴럴 네트워크(1)는 입력 레이어(Layer 1), 복수의 히든 레이어들(Layer 2, Layer 3, Layer 4, Layer 5) 및 출력 레이어(Layer 6)를 포함하는 DNN일 수 있다.
뉴럴 네트워크(1)가 DNN으로 구현된 경우, 유효한 정보를 처리할 수 있는 많은 레이어들을 포함할 수 있다. 따라서, 뉴럴 네트워크(1)에 의하면, 싱글 레이어를 포함하는 뉴럴 네트워크보다 복잡한 데이터 집합들이 처리될 수 있다. 한편, 도 1에는 뉴럴 네트워크(1)가 6개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과하다. 다시 말해, 뉴럴 네트워크(1)는 도 1에 도시된 것보다 더 적거나 많은 레이어들을 포함할 수 있다. 즉, 뉴럴 네트워크(1)는 도 1에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
도 2는 뉴럴 네트워크의 아키텍처의 일 예를 설명하기 위한 도면이다.
도 2에는 뉴럴 네트워크(2)에서의 일부의 컨볼루션 레이어들이 도시되었지만, 뉴럴 네트워크(2)는 도시된 컨볼루션 레이어들 외에도, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등을 더 포함할 수 있다.
뉴럴 네트워크(2)는 피처맵들(feature maps)을 출력하는 복수 레이어들을 갖는 아키텍처로 구현될 수 있다. 뉴럴 네트워크(2)에서 입력 이미지는 커널(kernel)이라 불리는 필터와의 연산이 수행되고, 그 결과 피처맵들이 출력된다. 이때 생성된 출력 피처맵들은 입력 피처맵들로서 다시 필터와의 연산이 수행되고, 새로운 피처맵들이 출력된다. 이와 같은 연산이 반복적으로 수행된 결과, 최종적으로는 뉴럴 네트워크(2)를 통한 입력 이미지의 특징들에 대한 인식 결과가 출력될 수 있다.
예를 들어, 도 2의 뉴럴 네트워크(2)에 24x24 픽셀 크기의 이미지가 입력된 경우, 입력 이미지는 필터와의 연산을 통해 20x20 픽셀 크기를 갖는 4채널의 피처맵들로 출력될 수 있다. 즉 4개의 출력 채널 별로 피처맵들이 출력될 수 있다. 출력된 4채널의 피처맵들은 서브-샘플링(또는 풀링) 연산을 통해 10x10 픽셀 크기를 갖는 4채널의 피처맵들로 출력될 수 있다. 이후에도, 피처맵들은 필터와의 반복적인 연산 및 서브-샘플링(또는 풀링) 연산을 통해 크기가 줄어들면서, 최종적으로는 1x1 픽셀 크기의 특징들이 출력될 수 있다. 뉴럴 네트워크(2)는 여러 레이어들에서 연산 및 서브-샘플링(또는 풀링) 연산을 반복적으로 수행함으로써 입력 이미지로부터 이미지 전체를 대표할 수 있는 강인한 특징들을 필터링하여 출력하고, 출력된 최종 특징들을 통해 입력 이미지의 인식 결과를 도출할 수 있다.
도 3 및 도 4를 참조하여, 순전파(forward propagation) 및 역전파(backward propagation)를 설명한다.
도 3은 순전파 및 역전파의 일 예를 설명하기 위한 도면이다.
도 3에는 컨볼루션 레이어(3)의 일부가 도시되어 있다. 도 3의 컨볼루션 레이어(3)는 입력 피처맵(X), 필터(F), 및 출력 피처맵(O)을 포함한다.
입력 피처맵(X), 필터(F), 출력 피처맵(O)은 각각 입력 액티베이션들, 가중치(weight)들, 출력 액티베이션들을 포함할 수 있다. 순전파를 통해 입력 피처맵(X)과 필터(F)의 컨볼루션 연산이 수행되고, 그 결과 출력 피처맵(O)이 생성될 수 있다.
예를 들어, 필터(F)와 입력 피처맵(X)은 슬라이딩 윈도우(sliding window) 방식에 의하여 컨볼루션 연산이 수행될 수 있다. 구체적으로, 제1 윈도우 내의 입력 액티베이션들과 가중치들이 각각 곱해진 후 더해진다. 그리고, 제1 윈도우가 어느 축 방향(예를 들어, x축, y축 또는 z축)으로 이동하여 제2 윈도우를 구성한다. 그리고, 제2 윈도우 내의 입력 액티베이션들과 가중치들이 각각 곱해진 후 더해진다. 이러한 방식으로 컨볼루션 연산이 연속으로 수행됨에 따라, 출력 피처맵(O)이 생성된다.
도 3에는 하나의 입력 피처맵(X) 및 하나의 필터(F)만이 도시되어 있으나, 복수의 입력 피처맵(X)들과 복수의 필터(F)들의 컨볼루션 연산이 수행되어, 출력 피처맵(O)을 생성할 수도 있다.
최총 출력 피처맵이 생성되면, 최총 출력 피처맵이 기대 결과와 비교됨으로써 손실 함수(loss function)가 생성될 수 있다. 뉴럴 네트워크를 훈련시키는 과정은 손실 함수의 값(loss)을 최소화시키는 방향으로 이루어질 수 있다.
손실 함수의 값(loss)을 최소화시키기 위해서, 로스 그레디언트(loss gradient,
Figure pat00001
)가 역전파될 수 있다. 이때 로스 그레디언트는 액티베이션의 그레디언트(gradient of activation)를 의미할 수 있다.
역전파된 로스 그레디언트(
Figure pat00002
)와 엘리먼트들이 재배열된 필터의 컨볼루션 연산이 수행되고, 그 결과 다음 레이어로 역전파되기 위한 로스 그레디언트(
Figure pat00003
)가 생성될 수 있다.
로스 그레디언트(
Figure pat00004
)와 입력 피처맵(X)의 컨볼루션 연산이 수행되고, 그 결과 가중치 그레디언트(gradient of weight,
Figure pat00005
)가 생성될 수 있다.
도 4는 순전파 및 역전파에서 컨벌루션 레이어의 연산의 일 예를 설명하기 위한 도면이다.
순전파를 통해 입력 피처맵(X)과 필터(F)가 컨볼루션 연산됨으로써 출력 피처맵(O)이 생성될 수 있다. 구체적으로, 입력 피처맵(X)의 액티베이션과 필터(F)의 가중치를 이용하여 MAC(multiplication and accumulation)연산이 수행되면, 출력 피처맵(O)의 액티베이션이 생성될 수 있다.
예를 들어, 입력 피처맵
Figure pat00006
및 필터
Figure pat00007
의 출력 피처맵
Figure pat00008
은 수학식 1에 의해 생성될 수 있다.
Figure pat00009
Figure pat00010
Figure pat00011
Figure pat00012
xii는 입력 피처맵(X)의 액티베이션, fii는 필터(F)의 가중치, oii는 출력 피처맵(O)의 액티베이션을 나타낸다.
역전파된 로스 그레디언트(
Figure pat00013
)와 엘리먼트들이 재배열된 필터(F')가 컨볼루션 연산 됨으로써, 다음 레이어로 역전파되기 위한 로스 그레디언트(
Figure pat00014
)가 생성될 수 있다. 구체적으로, 로스 그레디언트(
Figure pat00015
)의 엘리먼트와 필터(F')의 가중치를 이용하여 MAC연산이 수행되면, 로스 그레디언트(
Figure pat00016
)의 엘리먼트가 생성될 수 있다.
예를 들어, 역전파된 로스 그레디언트
Figure pat00017
, 엘리먼트들이 재배열된 필터
Figure pat00018
로부터 다음 레이어로 역전파되기 위한 로스 그레디언트
Figure pat00019
은 수학식 2에 의해 생성될 수 있다.
Figure pat00020
Figure pat00021
Figure pat00022
Figure pat00023
Figure pat00024
Figure pat00025
Figure pat00026
Figure pat00027
Figure pat00028
역전파된 로스 그레디언트(
Figure pat00029
)와 입력 피처맵(X)이 컨볼루션 연산 됨으로써, 가중치 그레디언트(
Figure pat00030
)가 생성될 수 있다. 구체적으로, 로스 그레디언트(
Figure pat00031
)의 엘리먼트와 입력 피처맵(X)의 액티베이션을 이용하여 MAC연산이 수행되면, 가중치 그레디언트(
Figure pat00032
)의 엘리먼트가 생성될 수 있다.
예를 들어, 입력 피처맵
Figure pat00033
및 이전 레이어로부터 역전파된 로스 그레디언트
Figure pat00034
로부터 다음 레이어로 역전파되기 위한 가중치 그레디언트
Figure pat00035
은 수학식 3에 의해 생성될 수 있다.
Figure pat00036
Figure pat00037
Figure pat00038
Figure pat00039
도 5는 뉴럴 네트워크 학습기 및 뉴럴 네트워크 추론기의 일 예를 설명하기 위한 도면이다.
도 5를 참조하면, 뉴럴 네트워크 학습기(51, neural network learning device)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train)(또는 학습(learn))하거나, 뉴럴 네트워크의 데이터를 양자화하거나, 또는 뉴럴 네트워크를 재훈련(retrain)하는 기능들과 같은 다양한 프로세싱 기능들을 갖는 컴퓨팅 디바이스에 해당된다. 예를 들어, 뉴럴 네트워크 학습기(51)는 PC(personal computer), 서버 디바이스, 모바일 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다.
뉴럴 네트워크 학습기(51)는 주어진 초기 뉴럴 네트워크를 반복적으로 훈련(학습)시킴으로써, 훈련된 뉴럴 네트워크(52)를 생성할 수 있다. 훈련 과정에서 부동 소수점 포맷의 데이터가 고정 소수점 포맷으로 양자화되거나 고정 소수점 포맷의 데이터가 연산 과정을 거친 후 다시 고정 소수점 포맷으로 양자화될 수 있다.
뉴럴 네트워크 학습기(51)는 훈련된 뉴럴 네트워크(52)를 뉴럴 네트워크 추론기(53, neural network inference device)와 같은 하드웨어 가속기에 전달할 수 있다. 뉴럴 네트워크 추론기(53)는 모바일 디바이스, 임베디드(embedded) 디바이스 등에 포함될 수 있다. 뉴럴 네트워크 추론기(53)는 뉴럴 네트워크(54)의 구동을 위한 하드웨어로서, 비교적 저전력 또는 저성능으로 구현되기 때문에 부동 소수점 연산 보다는 고정 소수점 연산에 보다 적합하게 구현될 수 있다. 뉴럴 네트워크 추론기(53)의 기능은 뉴럴 네트워크(54)를 구동하는 것에 제한되지 않으며, 뉴럴 네트워크 학습기(51)의 기능들을 포함할 수 있다.
한편, 뉴럴 네트워크 추론기(53)는 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(Neural Processing Unit), TPU(Tensor Processing Unit), Neural Engine 등에 해당될 수 있으나, 이에 제한되지 않는다. 또한 뉴럴 네트워크 추론기(53)는, 구체적인 예시로 뉴럴 네트워크를 이용한 음성 인식, 영상 인식 등을 수행하는 자율주행 자동차, 로보틱스, 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스 등에 포함될 수 있으나, 이에 제한되지 않는다.
도 6은 뉴럴 네트워크에서 데이터를 양자화하는 일 예를 설명하는 도면이다.
뉴럴 네트워크를 구동하거나 훈련하는 데에 있어, 연산기(61)가 현재 레이어의 연산을 수행하고, 연산 결과 출력되는 데이터가 양자화되고, 양자화된 데이터가 메모리(62)에 저장되고, 메모리(62)에 저장된 데이터가 독출되어 다음 레이어의 연산에 이용되도록 연산기(61)에 입력되는 프로세스가 수행될 수 있으며, 상기 프로세스는 반복적으로 수행될 수 있다.
순전파의 경우, 연산 결과 출력되는 데이터는 액티베이션을 포함할 수 있다. 또한 역전파의 경우, 연산 결과 출력되는 데이터는 로스 그레디언트 및 가중치 그레디언트를 포함할 수 있다.
한편, 양자화에 앞서 연산 결과 출력되는 데이터가 캐시(cache)의 역할을 하는 온-칩(on-chip) 메모리에 저장될 수 있다.
비교적 처리 성능이 낮은 스마트폰, 태블릿, 웨어러블 디바이스 등에 포함된 뉴럴 네트워크 추론기에서는 온-칩 메모리의 공간이 제한적일 수 있다. 결국, 제한적 리소스를 갖는 뉴럴 네트워크 추론기에서 뉴럴 네트워크를 구동하거나 훈련하기 위해서는, 온-칩 메모리의 사용 공간을 충분히 감소시키면서 데이터가 양자화되는 것이 바람직하다.
도 7 및 도 8을 참조하여, 뉴럴 네트워크의 데이터를 양자화하는 방법을 설명한다.
도 7은 뉴럴 네트워크의 데이터를 양자화하는 방법의 일 예를 도시한 흐름도이다.
도 7에 도시된 흐름도는 도 14를 참조하여 후술할 뉴럴 네트워크 장치(1400)에서 시계열적으로 처리되는 단계들로 구성된다. 또한, 이하에서 기술되는 내용은 뉴럴 네트워크 장치(1400)에 적용될 수 있다.
710 단계에서, 뉴럴 네트워크 장치(1400)의 프로세서(1420)는 이전 레이어(previous layer)에 대응하는 글로벌 최대값(global maximum value)에 기초하여 현재 레이어(current layer)의 연산의 출력 데이터로부터 복원된 글로벌 복원 데이터(global recovery data)를 현재 레이어의 출력 채널 별 로컬 최대값(local maximum value)에 기초하여 1차 양자화함으로써, 로컬 양자화 데이터(local quantization data)를 획득할 수 있다.
이전 레이어 및 현재 레이어는 DNN의 입력 레이어, 히든 레이어, 출력 레이어 등 일 수 있으나, 이에 한정되지 않는다. 또한 이전 레이어 및 현재 레이어는 컨볼루션 뉴럴 네트워크(convolutional neural network)에 포함되는 레이어일 수 있으나, 이에 한정되지 않는다. 또한 이전 레이어 및 현재 레이어는 컨볼루션 레이어, 풀링 레이어, 플레튼(flatten) 레이어, 정규화(normalization) 레이어, 풀리 커넥티드 레이어 등 일 수 있으나, 이에 한정되지 않는다.
뉴럴 네트워크 장치(1400)가 순전파를 통하여 뉴럴 네트워크를 구동하는 경우, 현재 레이어의 연산의 출력 데이터는 액티베이션을 포함할 수 있다. 또는 뉴럴 네트워크 장치(1400)가 역전파를 통하여 뉴럴 네트워크를 훈련시키는 경우, 현재 레이어의 연산의 출력 데이터는 로스 그레디언트 또는 가중치 그레디언트를 포함할 수 있다.
프로세서(1420)는 현재 레이어의 연산의 출력 데이터를 이전 레이어에 대응하는 글로벌 최대값에 기초하여 복원함으로써, 글로벌 복원 데이터를 생성할 수 있다. 데이터가 복원된다는 것은 양자화되기 이전의 스케일로 역양자화되는 것을 의미할 수 있다.
프로세서(1420)는 현재 레이어의 연산의 출력 데이터를 이전 레이어에 대응하는 글로벌 최대값에 기초하여 복원하고, 복원된 데이터에 대하여 풀링 연산, 배치 정규화, 액티베이션 함수를 이용한 활성화 등의 서브 연산을 수행함으로써, 글로벌 복원 데이터를 생성할 수 있다.
프로세서(1420)는 현재 레이어의 연산의 출력 데이터에 노이즈를 부가함으로써, 글로벌 복원 데이터를 생성할 수 있다. 노이즈를 부가하여 생성된 글로벌 복원 데이터에 대하여 1차 양자화를 수행함으로써, 뉴럴 네트워크의 학습 성능을 향상시킬 수 있다. 노이즈는 가우시안 노이즈(Gaussian noise), 유니폼 노이즈(uniform noise), 화이트 토이즈(white noise) 등 일 수 있으나, 이에 제한되는 것은 아니다.
이전 레이어에 대응하는 글로벌 최대값은 이전 레이어의 연산의 출력 데이터에 기초하여 생성되는 값일 수 있다. 예를 들어, 이전 레이어에 대응하는 글로벌 최대값은 이전 레이어의 연산의 출력 데이터가 복원되었을 때, 복원된 출력 데이터의 최대값일 수 있다.
현재 레이어의 연산의 출력 데이터는 수학식 4에 기초하여 복원될 수 있다. 현재 레이어의 연산의 출력 데이터를 복원하기 위하여, 수학식 4의
Figure pat00040
로서 이전 레이어에 대응하는 글로벌 최대값이 사용될 수 있고,
Figure pat00041
로서 현재 레이어의 연산의 출력 데이터가 사용될 수 있다.
Figure pat00042
프로세서(1420)는 현재 레이어의 연산의 출력 데이터를 현재 레이어의 출력 채널 별로 복원할 수 있다. 현재 레이어의 연산의 출력 데이터가 현재 레이어의 출력 채널 별로 복원됨에 따라, 현재 레이어의 출력 채널 별로 글로벌 복원 데이터가 생성될 수 있다. 현재 레이어의 출력 채널 별로 생성된 글로벌 복원 데이터는 현재 레이어의 출력 채널 별로 별개의 기준값에 기초하여 양자화될 수 있다.
프로세서(1420)는 현재 레이어의 연산의 출력 데이터를 현재 레이어의 출력 채널 별로 순차적으로 복원할 수 있다. 예를 들어, 현재 레이어가 3개의 출력 채널을 포함하는 경우, 프로세서(1420)는 1번째 출력 채널의 출력 데이터를 복원한 후 2번째 출력 채널의 출력 데이터를 복원한 후 3번째 출력 채널의 출력 데이터를 복원할 수 있다.
프로세서(1420)는 글로벌 복원 데이터를 현재 레이어의 출력 채널 별 로컬 최대값에 기초하여 1차 양자화함으로써, 로컬 양자화 데이터(local quantization data)를 생성할 수 있다. 현재 레이어의 출력 채널 별 로컬 최대값에 기초하여 1차 양자화를 수행하는 것은 현재 레이어의 출력 채널 별로 별개의 기준값에 기초하여 양자화를 수행하는 것을 의미할 수 있다. 로컬 최대값은 글로벌 복원 데이터의 현재 레이어의 출력 채널 별 최대값일 수 있다.
글로벌 복원 데이터는 수학식 5 및 수학식 6에 기초하여 양자화될 수 있다. 글로벌 복원 데이터를 1차 양자화하기 위하여, 수학식 5의
Figure pat00043
로서 현재 레이어의 출력 채널 별 로컬 최대값이 사용될 수 있고,
Figure pat00044
로서 글로벌 복원 데이터의 값이 사용될 수 있다. 수학식 5 및 수학식 6에서 n은 양자화하고자 하는 레벨의 비트(bit)수이다.
Figure pat00045
Figure pat00046
프로세서(1420)는 글로벌 복원 데이터를 현재 레이어의 출력 채널 별로 순차적으로 1차 양자화할 수 있다. 예를 들어, 현재 레이어가 3개의 출력 채널을 포함하는 경우, 프로세서(1420)는 1번째 출력 채널의 글로벌 복원 데이터를 양자화한 후 2번째 출력 채널의 글로벌 복원 데이터를 양자화한 후 3번째 출력 채널의 글로벌 복원 데이터를 양자화할 수 있다. 글로벌 복원 데이터가 출력 채널 별로 순차적으로 양자화됨으로써, 양자화 프로세스를 위한 온-칩 메모리의 리소스 사용량이 감소될 수 있다.
프로세서(1420)는 현재 레이어의 연산의 출력 데이터의 복원 및 1차 양자화를 현재 레이어의 출력 채널 별로 순차적으로 수행할 수 있다. 예를 들어, 현재 레이어가 3개의 출력 채널을 포함하는 경우, 프로세서(1420)는 1번째 출력 채널의 출력 데이터를 복원하고 양자화한 후 2번째 출력 채널의 출력 데이터를 복원하고 양자화한 후 3번째 출력 채널의 출력 데이터를 복원하고 양자화할 수 있다.
720 단계에서 프로세서(1420)는 다음 레이어(next layer)의 연산을 수행하기 위하여, 로컬 양자화 데이터를 메모리에 저장할 수 있다. 메모리는 뉴럴 네트워크 장치(1400)의 메모리(1410)이거나 프로세서(1420)에 포함된 온-칩 메모리일 수 있다.
다음 레이어는 DNN의 입력 레이어, 히든 레이어, 출력 레이어 등 일 수 있으나, 이에 한정되지 않는다. 또한 다음 레이어는 컨볼루션 뉴럴 네트워크에 포함되는 레이어일 수 있으나, 이에 한정되지 않는다. 또한 다음 레이어는 컨볼루션 레이어, 풀링 레이어, 플레튼 레이어, 정규화 레이어, 풀리 커넥티드 레이어 등 일 수 있으나, 이에 한정되지 않는다.
730 단계에서 프로세서(1420)는 출력 채널 별 상기 로컬 최대값에 기초하여 로컬 양자화 데이터로부터 복원된 로컬 복원 데이터(local recovery data)를 현재 레이어에 대응하는 글로벌 최대값에 기초하여 2차 양자화함으로써, 글로벌 양자화 데이터(global quantization data)를 획득할 수 있다.
프로세서(1420)는 로컬 양자화 데이터를 출력 채널 별 로컬 최대값에 기초하여 복원함으로써, 로컬 복원 데이터를 생성할 수 있다. 로컬 양자화 데이터는 1차 양자화 되었을 때와 동일한 로컬 최대값에 기초하여 출력 채널 별로 복원될 수 있다. 로컬 양자화 데이터는 출력 채널 별 로컬 최대값에 기초하여 복원됨으로써 양자화되기 이전의 스케일로 역양자화될 수 있다. 예를 들어, 로컬 복원 데이터는 글로벌 복원 데이터와 동일할 수 있다.
로컬 양자화 데이터는 상기 수학식 4에 기초하여 복원될 수 있다. 로컬 양자화 데이터를 복원하기 위하여, 상기 수학식 4의
Figure pat00047
로서 현재 레이어의 출력 채널 별 로컬 최대값이 사용될 수 있고,
Figure pat00048
로서 로컬 양자화 데이터가 사용될 수 있다.
프로세서(1420)는 로컬 양자화 데이터를 현재 레이어의 출력 채널 별로 순차적으로 복원할 수 있다. 예를 들어, 현재 레이어가 3개의 출력 채널을 포함하는 경우, 프로세서(1420)는 1번째 출력 채널의 로컬 양자화 데이터를 복원한 후 2번째 출력 채널의 로컬 양자화 데이터를 복원한 후 3번째 출력 채널의 로컬 양자화 데이터를 복원할 수 있다.
프로세서(1420)는 로컬 복원 데이터를 현재 레이어에 대응하는 글로벌 최대값에 기초하여 2차 양자화함으로써, 글로벌 양자화 데이터를 생성할 수 있다.
현재 레이어에 대응하는 글로벌 최대값은 글로벌 복원 데이터의 최대값일 수 있다. 현재 레이어에 대응하는 글로벌 최대값은 현재 레이어의 출력 채널 별 로컬 최대값에 기초하여 산출될 수 있다. 예를 들어, 현재 레이어에 대응하는 글로벌 최대값은 현재 레이어의 모든 출력 채널에 대한 로컬 최대값들의 최대값일 수 있다.
로컬 복원 데이터는 상기 수학식 5 및 상기 수학식 6에 기초하여 2차 양자화될 수 있다. 로컬 복원 데이터를 2차 양자화하기 위하여, 상기 수학식 5의
Figure pat00049
로서 현재 레이어에 대응하는 글로벌 최대값이 사용될 수 있다.
프로세서(1420)는 로컬 복원 데이터를 현재 레이어의 출력 채널 별로 순차적으로 2차 양자화할 수 있다. 예를 들어, 현재 레이어가 3개의 출력 채널을 포함하는 경우, 프로세서(1420)는 1번째 출력 채널의 로컬 복원 데이터를 양자화한 후 2번째 출력 채널의 로컬 복원 데이터를 양자화한 후 3번째 출력 채널의 로컬 복원 데이터를 양자화할 수 있다.
프로세서(1420)는 로컬 양자화 데이터의 복원 및 2차 양자화를 현재 레이어의 출력 채널 별로 순차적으로 수행할 수 있다. 예를 들어, 현재 레이어가 3개의 출력 채널을 포함하는 경우, 프로세서(1420)는 1번째 출력 채널의 로컬 양자화 데이터를 복원하고 양자화한 후 2번째 출력 채널의 로컬 양자화 데이터를 복원하고 양자화한 후 3번째 출력 채널의 로컬 양자화 데이터를 복원하고 양자화할 수 있다.
740 단계에서 프로세서(1420)는 글로벌 양자화 데이터를 다음 레이어의 연산을 위한 입력 데이터로 제공할 수 있다.
도 8은 로컬 최대값 및 글로벌 최대값을 저장하는 일 예를 도시한 흐름도이다.
810 단계에서 프로세서(1420)는 현재 레이어의 모든 출력 채널에 대한 로컬 최대값들을 프로세서(1420)의 레지스터(registor)에 저장할 수 있다. 예를 들어, 프로세서(1420)는 로컬 최대값들을 레지스터 파일(registor file)에 저장할 수 있다.
프로세서(1420)는 현재 레이어의 모든 출력 채널에 대하여 글로벌 복원 데이터의 출력 채널 별 최대값을 산출함으로써, 로컬 최대값들을 획득할 수 있다.
프로세서(1420)는 로컬 최대값들을 순차적으로 레지스터에 저장할 수 있다. 예를 들어, 현재 레이어가 3개의 출력 채널을 포함하는 경우, 프로세서(1420)는 1번째 출력 채널의 글로벌 복원 데이터로부터 산출된 로컬 최대값을 레지스터에 저장하고, 2번째 출력 채널의 글로벌 복원 데이터로부터 산출된 로컬 최대값을 레지스터에 저장하고, 3번째 출력 채널의 글로벌 복원 데이터로부터 산출된 로컬 최대값을 레지스터에 저장할 수 있다.
프로세서(1420)는 이후의 프로세스에서 로컬 양자화 데이터를 복원하기 위하여 레지스터에 저장된 로컬 최대값들을 독출할 수 있다.
820 단계에서 프로세서(1420)는 로컬 최대값들의 최대값인 현재 레이어에 대응하는 글로벌 최대값을 레지스터에 저장할 수 있다.
프로세서(1420)는 현재 레이어의 모든 출력 채널에 대한 로컬 최대값들의 최대값을 산출함으로써, 현재 레이어에 대응하는 글로벌 최대값을 획득할 수 있다.
프로세서(1420)는 이후의 프로세스에서 로컬 복원 데이터를 2차 양자화하기 위하여 레지스터에 저장된 글로벌 최대값을 독출할 수 있다.
도 9는 뉴럴 네트워크의 데이터를 양자화하는 일 예를 설명하는 도면이다.
뉴럴 네트워크에서 연산기(910, calculator)는 컨볼루션 연산을 수행할 수 있다. 이하에서 설명되는 연산기들은 프로세서(1420)의 프로세싱 유닛에 포함될 수 있다. 연산기(910)는 현재 레이어의 연산을 수행한 후 다음 레이어의 연산을 수행할 수 있다. 현재 레이어의 연산의 출력 데이터는 1차 양자화 및 2차 양자화의 프로세스를 거친 후 다음 레이어의 연산에 이용될 수 있다.
뉴럴 네트워크가 순전파를 통해 작동하는 경우, 현재 레이어의 연산의 출력 데이터(940)는 액티베이션을 포함할 수 있다. 뉴럴 네트워크가 역전파를 통해 훈련되는 경우, 현재 레이어의 연산의 출력 데이터(940)는 로스 그레디언트 또는 가중치 그레디언트를 포함할 수 있다.
프로세서(1420)는 출력 데이터(940)를 이전 레이어에 대응하는 글로벌 최대값에 기초하여 복원함으로써, 글로벌 복원 데이터(950)를 생성할 수 있다. 또는 프로세서(1420)는 출력 데이터(940)를 이전 레이어에 대응하는 글로벌 최대값에 기초하여 복원하고, 복원된 데이터에 대하여 풀링 연산, 배치 정규화, 액티베이션 함수를 이용한 활성화 등의 서브 연산을 수행함으로써, 글로벌 복원 데이터(950)를 생성할 수 있다. 또는 프로세서(1420)는 출력 데이터(940)에 노이즈를 부가함으로써, 글로벌 복원 데이터를 생성할 수 있다.
프로세서(1420)는 출력 데이터(940)를 현재 레이어의 출력 채널 별로 복원할 수 있다. 또한 프로세서(1420)는 출력 데이터(940)를 현재 레이어의 출력 채널 별로 순차적으로 복원할 수 있다. 예를 들어, 현재 레이어의 출력 채널이 n개인 경우, 프로세서(1420)는 1번째 출력 채널의 출력 데이터(941)를 복원한 후, 2번째 출력 채널의 출력 데이터(942)를 복원할 수 있고, 최종적으로 n번째 출력 채널의 출력 데이터(943)를 복원할 수 있다.
프로세서(1420)는 글로벌 복원 데이터(950)로부터 로컬 최대값들(Local Max #1, Local Max #2, ... Local Max #n)을 산출할 수 있다. 예를 들어, 현재 레이어의 출력 채널이 n개인 경우, 프로세서(1420)는 1번째 출력 채널의 글로벌 복원 데이터(951)의 최대값을 로컬 최대값(Local Max #1)으로 산출하고, 2번째 출력 채널의 글로벌 복원 데이터(952)의 최대값을 로컬 최대값(Local Max #2)으로 산출할 수 있고, 최종적으로 n번째 출력 채널의 글로벌 복원 데이터(953)의 최대값을 로컬 최대값(Local Max #n)으로 산출할 수 있다. 산출된 로컬 최대값들(Local Max #1, Local Max #2, ... Local Max #n)은 프로세서(1420)의 레지스터(930)에 저장될 수 있다.
프로세서(1420)는 로컬 최대값들(Local Max #1, Local Max #2, ... Local Max #n)로부터 현재 레이어에 대응하는 글로벌 최대값(Global Max)을 산출할 수 있다. 예를 들어, 프로세서(1420)는 로컬 최대값들(Local Max #1, Local Max #2, ... Local Max #n)의 최대값을 현재 레이어에 대응되는 글로벌 최대값(Global Max)으로 산출할 수 있다. 산출된 글로벌 최대값(Global Max)은 레지스터(930)에 저장될 수 있다.
프로세서(1420)는 글로벌 복원 데이터(950)를 로컬 최대값들(Local Max #1, Local Max #2, ... Local Max #n)에 기초하여 1차 양자화함으로써, 로컬 양자화 데이터(960)를 생성할 수 있다.
프로세서(1420)는 글로벌 복원 데이터(950)를 현재 레이어의 출력 채널 별로 1차 양자화할 수 있다. 또한 프로세서(1420)는 글로벌 복원 데이터(950)를 현재 레이어의 출력 채널 별로 순차적으로 1차 양자화할 수 있다. 예를 들어, 현재 레이어의 출력 채널이 n개인 경우, 프로세서(1420)는 1번째 출력 채널의 글로벌 복원 데이터(951)를 로컬 최대값(Local Max #1)에 기초하여 양자화한 후, 2번째 출력 채널의 글로벌 복원 데이터(952)를 로컬 최대값(Local Max #2)에 기초하여 양자화할 수 있고, 최종적으로 n번째 출력 채널의 글로벌 복원 데이터(953)를 로컬 최대값(Local Max #n)에 기초하여 양자화할 수 있다.
로컬 양자화 데이터(960)는 다음 레이어의 연산에 이용되기 위하여 메모리(920)에 저장될 수 있다. 메모리(920)는 뉴럴 네트워크 장치(1400)의 메모리(1410)이거나 프로세서(1420)에 포함된 온-칩 메모리일 수 있다.
프로세서(1420)는 메모리(920)로부터 로컬 양자화 데이터(970)를 로드하고, 로드된 로컬 양자화 데이터(970)를 현재 레이어의 출력 채널 별 로컬 최대값에 기초하여 복원함으로써, 로컬 복원 데이터(980)를 생성할 수 있다. 현재 레이어의 출력 채널 별 로컬 최대값은 레지스터(930)로부터 독출될 수 있다.
프로세서(1420)는 로컬 양자화 데이터(970)를 현재 레이어의 출력 채널 별로 복원할 수 있다. 또한 프로세서(1420)는 로컬 양자화 데이터(970)를 현재 레이어의 출력 채널 별로 순차적으로 복원할 수 있다. 예를 들어, 현재 레이어의 출력 채널이 n개인 경우, 프로세서(1420)는 1번째 출력 채널의 로컬 양자화 데이터(971)를 로컬 최대값(Local Max #1)에 기초하여 복원한 후, 2번째 출력 채널의 로컬 양자화 데이터(972)를 로컬 최대값(Local Max #2)에 기초하여 복원할 수 있고, 최종적으로 n번째 출력 채널의 로컬 양자화 데이터(973)를 로컬 최대값(Local Max #n)에 기초하여 복원할 수 있다.
로컬 복원 데이터(980)는 글로벌 복원 데이터(950)와 동일할 수 있다. 예를 들어, 현재 레이어의 출력 채널이 n개인 경우, 1번째 출력 채널의 글로벌 복원 데이터(951)와 로컬 복원 데이터(981)가 동일하고, 2번째 출력 채널의 글로벌 복원 데이터(952)와 로컬 복원 데이터(982)가 동일하고, 최종적으로 n번째 출력 채널의 글로벌 복원 데이터(953)와 로컬 복원 데이터(983)가 동일할 수 있다.
프로세서(1420)는 로컬 복원 데이터(980)를 현재 레이어에 대응하는 글로벌 최대값(Global Max)에 기초하여 2차 양자화함으로써, 글로벌 양자화 데이터(990)를 생성할 수 있다. 현재 레이어에 대응하는 글로벌 최대값(Global Max)은 레지스터(930)로부터 독출될 수 있다.
프로세서(1420)는 로컬 복원 데이터(980)를 현재 레이어의 출력 채널 별로 2차 양자화할 수 있다. 또한 프로세서(1420)는 로컬 복원 데이터(980)를 현재 레이어의 출력 채널 별로 순차적으로 2차 양자화할 수 있다. 예를 들어, 현재 레이어의 출력 채널이 n개인 경우, 프로세서(1420)는 1번째 출력 채널의 로컬 복원 데이터(981)를 글로벌 최대값(Global Max)에 기초하여 양자화한 후, 2번째 출력 채널의 로컬 복원 데이터(982)를 글로벌 최대값(Global Max)에 기초하여 양자화할 수 있고, 최종적으로 n번째 출력 채널의 로컬 복원 데이터(983)를 글로벌 최대값(Global Max)에 기초하여 양자화할 수 있다.
프로세서(1420)는 모든 출력 채널에 대한 로컬 복원 데이터(980)를 글로벌 최대값(Global Max)에 기초하여 2차 양자화 함으로써, 로컬 복원 데이터(980)를 동일한 스케일로 양자화할 수 있다.
글로벌 양자화 데이터(990)는 다음 레이어의 연산에 이용되기 위하여 연산기(910)로 입력될 수 있다.
도 10은 로컬 최대값 및 글로벌 최대값을 획득하는 일 예를 설명하는 도면이다.
현재 레이어가 4개의 출력 채널을 포함하면, 4개의 출력 채널 별 로컬 최대값이 산출될 수 있다.
프로세서(1420)는 1번째 출력 채널의 글로벌 복원 데이터(1010)로부터 1번째 출력 채널에 대한 로컬 최대값(Local Max #1)을 산출할 수 있다. 예를 들어, 프로세서(1420)는 1번째 출력 채널의 글로벌 복원 데이터(1010) 중 최대값인 6을 로컬 최대값(Local Max #1)으로 산출할 수 있다.
마찬가지로 프로세서(1420)는 2번째, 3번째, 4번째 출력 채널에 대한 로컬 최대값들(1020, 1030, 1040)로부터 각각 2번째, 3번째, 4번째 출력 채널에 대한 로컬 최대값(Local Max #2, Local Max #3, Local Max #4)을 산출할 수 있다.
프로세서(1420)는 로컬 최대값들(Local Max #1, Local Max #2, Local Max #3, Local Max #4)로부터 현재 레이어에 대응하는 글로벌 최대값(Global Max)을 산출할 수 있다. 예를 들어, 프로세서(1420)는 로컬 최대값들(Local Max #1, Local Max #2, Local Max #3, Local Max #4)의 최대값인 18을 글로벌 최대값(Global Max)으로 산출할 수 있다.
도 11은 출력 채널 별로 1차 양자화 및 2차 양자화하는 일 예를 설명하는 도면이다.
구체적으로, 도 11은 2개의 출력 채널을 포함하는 현재 레이어의 연산의 출력 데이터(1111, 1121)를 8비트로 1차 양자화 및 2차 양자화하는 일 예를 나타낸다.
프로세서(1420)는 1번째 채널의 출력 데이터(1111)를 복원함으로써 1번째 채널의 글로벌 복원 데이터(1112)를 생성할 수 있다. 프로세서(1420)는 1번째 출력 채널의 출력 데이터(1111)를 이전 레이어에 대응하는 글로벌 최대값(Global Max@Previous Layer)에 기초하여 복원할 수 있다. 예를 들어, 출력 데이터(1111)는 상기 수학식 4에 기초하여 복원될 수 있으며, 구체적으로 출력 데이터(1111) 중 144/28의 값을 갖는 데이터가 이전 레이어에 대응하는 글로벌 최대값(Global Max@Previous Layer)인 64에 기초하여 복원됨으로써, 8의 값을 갖는 글로벌 복원 데이터가 생성될 수 있다.
프로세서(1420)는 1번째 채널에 대한 로컬 최대값(Local Max #1)을 산출할 수 있다. 예를 들어, 프로세서(1420)는 글로벌 복원 데이터(1112)의 최대값인 8을 로컬 최대값(Local Max #1)으로 산출할 수 있다.
프로세서(1420)는 1번째 채널의 글로벌 복원 데이터(1112)를 1번째 채널에 대한 로컬 최대값(Local Max #1)에 기초하여 1차 양자화함으로써, 1번째 채널의 로컬 양자화 데이터(1113)를 생성할 수 있다. 예를 들어, 글로벌 복원 데이터(1112)는 상기 수학식 5 및 상기 수학식 6에 기초하여 1차 양자화될 수 있으며, 구체적으로 글로벌 복원 데이터(1112) 중 2의 값을 갖는 데이터가 1번째 채널에 대한 로컬 최대값(Local Max #1)인 8에 기초하여 1차 양자화됨으로써 160/28의 값을 갖는 로컬 양자화 데이터가 생성될 수 있다.
마찬가지로 프로세서(1420)는 2번째 채널의 출력 데이터(1121)를 복원함으로써 2번째 채널의 글로벌 복원 데이터(1122)를 생성할 수 있다. 프로세서(1420)는 출력 데이터(1121)를 이전 레이어에 대응하는 글로벌 최대값(Global Max@Previous Layer)에 기초하여 복원할 수 있다. 예를 들어, 출력 데이터(1121) 중 384/28의 값을 갖는 데이터가 이전 레이어에 대응하는 글로벌 최대값(Global Max@Previous Layer)인 64에 기초하여 복원됨으로써, 128의 값을 갖는 글로벌 복원 데이터가 생성될 수 있다.
마찬가지로 프로세서(1420)는 2번째 채널에 대한 로컬 최대값(Local Max #2)을 산출할 수 있다. 예를 들어, 프로세서(1420)는 글로벌 복원 데이터(1122)의 최대값인 128을 로컬 최대값(Local Max #2)으로 산출할 수 있다.
마찬가지로 프로세서(1420)는 2번째 채널의 글로벌 복원 데이터(1122)를 2번째 채널에 대한 로컬 최대값(Local Max #2)에 기초하여 1차 양자화함으로써, 2번째 채널의 로컬 양자화 데이터(1123)를 생성할 수 있다. 예를 들어, 글로벌 복원 데이터(1122) 중 32의 값을 갖는 데이터가 2번째 채널에 대한 로컬 최대값(Local Max #1)인 8에 기초하여 1차 양자화됨으로써, 160/28의 값을 갖는 로컬 양자화 데이터가 생성될 수 있다.
프로세서(1420)는 1번째 채널에 대한 로컬 최대값(Local Max #1) 및 2번째 채널에 대한 로컬 최대값(Local Max #2)으로부터 현재 레이어에 대응하는 글로벌 최대값(Global Max@Current Layer)을 산출할 수 있다. 예를 들어, 프로세서(1420)는 1번째 채널에 대한 로컬 최대값(Local Max #1) 및 2번째 채널에 대한 로컬 최대값(Local Max #2)의 최대값인 128을 현재 레이어에 대응하는 글로벌 최대값(Global Max@Current Layer)으로 산출할 수 있다.
1번째 채널에 대한 로컬 최대값(Local Max #1), 2번째 채널에 대한 로컬 최대값(Local Max #2), 및 현재 레이어에 대응하는 글로벌 최대값(Global Max@Current Layer)은 프로세서(1420)의 레지스터에 저장될 수 있다.
프로세서(1420)는 1번째 채널의 로컬 양자화 데이터(1113)를 복원함으로써 1번째 채널의 로컬 복원 데이터(1114)를 생성할 수 있다. 프로세서(1420)는 1번째 출력 채널의 로컬 양자화 데이터(1113)를 1번째 채널에 대한 로컬 최대값(Local Max #1)에 기초하여 복원할 수 있다. 예를 들어, 로컬 양자화 데이터(1113)는 상기 수학식 4에 기초하여 복원될 수 있으며, 로컬 양자화 데이터(1113) 중 144/28의 값을 갖는 데이터가 1번째 채널에 대한 로컬 최대값(Local Max #1)인 8에 기초하여 복원됨으로써, 1의 값을 갖는 로컬 복원 데이터가 생성될 수 있다.
프로세서(1420)는 1번째 채널의 로컬 복원 데이터(1114)를 현재 레이어에 대응하는 글로벌 최대값(Global Max@Current Layer)에 기초하여 2차 양자화함으로써, 1번째 채널의 글로벌 양자화 데이터(1115)를 생성할 수 있다. 예를 들어, 로컬 복원 데이터(1114)는 상기 수학식 5 및 상기 수학식 6에 기초하여 2차 양자화될 수 있으며, 로컬 복원 데이터(1114) 중 4의 값을 갖는 데이터가 현재 레이어에 대응하는 글로벌 최대값(Global Max@Current Layer)인 128에 기초하여 2차 양자화됨으로써 132/28의 값을 갖는 글로벌 양자화 데이터가 생성될 수 있다.
마찬가지로 프로세서(1420)는 2번째 채널의 로컬 양자화 데이터(1123)를 복원함으로써 2번째 채널의 로컬 복원 데이터(1124)를 생성할 수 있다. 프로세서(1420)는 2번째 출력 채널의 로컬 양자화 데이터(1123)를 2번째 채널에 대한 로컬 최대값(Local Max #2)에 기초하여 복원할 수 있다. 예를 들어, 로컬 양자화 데이터(1123) 중 144/28의 값을 갖는 데이터가 2번째 채널에 대한 로컬 최대값(Local Max #1)인 128에 기초하여 복원됨으로써, 16의 값을 갖는 로컬 복원 데이터가 생성될 수 있다.
프로세서(1420)는 2번째 채널의 로컬 복원 데이터(1124)를 현재 레이어에 대응하는 글로벌 최대값(Global Max@Current Layer)에 기초하여 2차 양자화함으로써, 2번째 채널의 글로벌 양자화 데이터(1125)를 생성할 수 있다. 예를 들어, 로컬 복원 데이터(1124) 중 64의 값을 갖는 데이터가 현재 레이어에 대응하는 글로벌 최대값(Global Max@Current Layer)인 128에 기초하여 2차 양자화됨으로써 192/28의 값을 갖는 글로벌 양자화 데이터가 생성될 수 있다.
도 12는 도 7의 방식을 이용하는 뉴럴 네트워크의 데이터의 양자화 알고리즘을 도시한 도면이다.
도 12를 참고하면, 양자화 알고리즘(1200)에서는 역전파되는 로스 그레디언트를 양자화한다.
1201 단계에서, 프로세서(1420)는 현재 레이어의 입력 채널 별로 로컬 양자화 데이터(loss_gradientG)를 복원함으로써, 로컬 복원 데이터(loss_gradient)를 생성한다. 이때, 현재 레이어의 입력 채널은 순전파에서의 출력 채널에 해당한다. 프로세서(1420)는 로컬 양자화 데이터(loss_gradientG)를 로컬 최대값(local_maxcin)에 기초하여 복원할 수 있다.
1202 단계에서, 프로세서(1420)는 현재 레이어의 입력 채널 별로 로컬 복원 데이터(loss gradient)를 양자화함으로써, 글로벌 양자화 데이터(loss_gradientG)를 생성한다. 프로세서(1420)는 로컬 복원 데이터(loss gradient)를 글로벌 최대값(global_maxl)에 기초하여 양자화함으로써, 글로벌 양자화 데이터(loss_gradientG)를 생성할 수 있다.
1203 단계에서, 프로세서(1420)는 글로벌 양자화 데이터(loss_gradientG)에 대하여 컨볼루션 연산을 수행한다.
1204 단계에서, 프로세서(1420)는 현재 레이어의 연산의 출력 데이터(loss_gradientG)를 현재 레이어의 출력 채널 별로 복원한다. 이때, 현재 레이어의 출력 채널은 순전파에서의 입력 채널에 해당한다. 출력 데이터(loss_gradientG)는 글로벌 최대값(global_maxl)에 기초하여 복원될 수 있다.
1205 단계에서, 프로세서(1420)는 복원된 데이터에 대하여 배치 정규화, 풀링 연산, 또는 액티베이션 함수를 이용한 활성화 등의 서브 연산을 수행함으로써, 글로벌 복원 데이터를 생성한다.
1206 단계에서, 프로세서(1420)는 현재 레이어의 출력 채널 별로 로컬 최대값(local_maxcout)을 산출한다.
1207 단계에서, 프로세서(1420)는 현재 레이어의 출력 채널 별로 글로벌 복원 데이터(loss_gradient)를 양자화함으로써, 로컬 양자화 데이터(loss_gradientG)를 생성한다. 프로세서(1420)는 글로벌 복원 데이터(loss_gradient)를 로컬 최대값(local_maxcout)에 기초하여 양자화함으로써, 로컬 양자화 데이터(loss_gradientG)를 생성할 수 있다.
1208 단계에서, 프로세서(1420)는 현재 레이어의 모든 출력 채널에 대하여 획득된 로컬 최대값들(local_maxc1, local_maxc2, ...)로부터 글로벌 최대값(global_maxl-1)을 산출한다.
도 13은 뉴럴 네트워크의 데이터를 양자화하는 일 예를 설명하는 도면이다.
뉴럴 네트워크에서 연산기(1310)는 컨볼루션 연산을 수행할 수 있다. 연산기(1310)는 현재 레이어의 연산을 수행한 후 다음 레이어의 연산을 수행할 수 있다. 현재 레이어의 연산의 출력 데이터는 양자화의 프로세스를 거친 후 다음 레이어의 연산에 이용될 수 있다.
뉴럴 네트워크가 순전파를 통해 작동하는 경우, 현재 레이어의 연산의 출력 데이터(1330)는 액티베이션을 포함할 수 있다. 뉴럴 네트워크가 역전파를 통해 훈련되는 경우, 현재 레이어의 연산의 출력 데이터(1330)는 로스 그레디언트 또는 가중치 그레디언트를 포함할 수 있다.
프로세서(1420)는 출력 데이터(1330)를 복원하기 위한 글로벌 최대값을 예측할 수 있다. 예를 들어, 프로세서(1420)는 이전 레이어의 연산의 출력 데이터에 기초하여 글로벌 최대값을 예측할 수 있다. 예를 들어, 프로세서(1420)는 양자화 프로세스에서 데이터가 변화하는 양상에 기초하여 글로벌 최대값을 예측할 수 있다.
프로세서(1420)는 출력 데이터(1330)를 예측된 글로벌 최대값에 기초하여 복원함으로써, 글로벌 복원 데이터(1340)를 생성할 수 있다. 또는 프로세서(1420)는 출력 데이터(1330)를 예측된 글로벌 최대값에 기초하여 복원하고, 복원된 데이터에 대하여 풀링 연산, 배치 정규화, 액티베이션 함수를 이용한 활성화 등의 서브 연산을 수행함으로써, 글로벌 복원 데이터(1340)를 생성할 수 있다. 또는 프로세서(1420)는 출력 데이터(1330)를 예측된 글로벌 최대값에 기초하여 복원하고, 복원된 데이터에 노이즈를 부가함으로써, 글로벌 복원 데이터(1340)를 생성할 수 있다.
프로세서(1420)는 출력 데이터(1330)를 현재 레이어의 출력 채널 별로 복원할 수 있다. 또한 프로세서(1420)는 출력 데이터(1330)를 현재 레이어의 출력 채널 별로 순차적으로 복원할 수 있다. 예를 들어, 현재 레이어의 출력 채널이 n개인 경우, 프로세서(1420)는 1번째 출력 채널의 출력 데이터(1331)를 복원한 후, 2번째 출력 채널의 출력 데이터(1332)를 복원할 수 있고, 최종적으로 n번째 출력 채널의 출력 데이터(1333)를 복원할 수 있다.
프로세서(1420)는 글로벌 복원 데이터(1340)로부터 로컬 최대값들을 산출할 수 있다. 예를 들어, 현재 레이어의 출력 채널이 n개인 경우, 프로세서(1420)는 1번째 출력 채널의 글로벌 복원 데이터(1341)의 최대값을 1번째 출력 채널에 대한 로컬 최대값으로 산출하고, 2번째 출력 채널의 글로벌 복원 데이터(1342)의 최대값을 2번째 출력 채널에 대한 로컬 최대값으로 산출할 수 있고, 최종적으로 n번째 출력 채널의 글로벌 복원 데이터(1343)의 최대값을 n번째 출력 채널에 대한 로컬 최대값으로 산출할 수 있다.
프로세서(1420)는 글로벌 복원 데이터(1340)를 로컬 최대값들에 기초하여 양자화함으로써, 로컬 양자화 데이터(1350)를 생성할 수 있다.
프로세서(1420)는 글로벌 복원 데이터(1340)를 현재 레이어의 출력 채널 별로 양자화할 수 있다. 또한 프로세서(1420)는 글로벌 복원 데이터(1340)를 현재 레이어의 출력 채널 별로 순차적으로 양자화할 수 있다. 예를 들어, 현재 레이어의 출력 채널이 n개인 경우, 프로세서(1420)는 1번째 출력 채널의 글로벌 복원 데이터(1341)를 1번째 로컬 최대값에 기초하여 양자화한 후, 2번째 출력 채널의 글로벌 복원 데이터(1342)를 2번째 출력 채널에 대한 로컬 최대값에 기초하여 양자화할 수 있고, 최종적으로 n번째 출력 채널의 글로벌 복원 데이터(1343)를 n번째 출력 채널에 대한 로컬 최대값에 기초하여 양자화할 수 있다.
프로세서(1420)는 현재 레이어의 출력 채널 별 로컬 최대값과 예측된 글로벌 최대값의 차이에 기초하여, 로컬 양자화 데이터(1350)를 보상함으로써, 글로벌 양자화 데이터(1360)를 생성할 수 있다. 예를 들어, 출력 채널 별 로컬 최대값과 예측된 글로벌 최대값이 동일한 경우, 프로세서(1420)는 로컬 양자화 데이터(1350)를 그대로 글로벌 양자화 데이터(1360)로 설정할 수 있다. 예를 들어, 출력 채널 별 로컬 최대값이 예측된 글로벌 최대값보다 작은 경우, 프로세서(1420)는 로컬 양자화 데이터(1350)를 로컬 최대값과 예측된 글로벌 최대값의 차이에 비례하여 작아지도록 보상함으로써, 글로벌 양자화 데이터(1360)를 생성할 수 있다.
프로세서(1420)는 로컬 양자화 데이터(1350)를 현재 레이어의 출력 채널 별로 보상할 수 있다. 또한 프로세서(1420)는 로컬 양자화 데이터(1350)를 현재 레이어의 출력 채널 별로 순차적으로 보상할 수 있다. 예를 들어, 현재 레이어의 출력 채널이 n개인 경우, 프로세서(1420)는 1번째 출력 채널의 로컬 양자화 데이터(1351)를 1번째 로컬 최대값과 예측된 글로벌 최대값의 차이에 기초하여 보상한 후, 2번째 출력 채널의 로컬 양자화 데이터(1352)를 2번째 로컬 최대값과 예측된 글로벌 최대값의 차이에 기초하여 보상할 수 있고, 최종적으로 n번째 출력 채널의 로컬 양자화 데이터(1353)를 n번째 로컬 최대값과 예측된 글로벌 최대값의 차이에 기초하여 보상할 수 있다.
프로세서(1420)가 로컬 최대값들을 레지스터에 저장하지 않으면서 글로벌 양자화 데이터(1360)를 생성하므로, 양자화 프로세스에서 레지스터의 리소스 사용량이 감소될 수 있다.
글로벌 양자화 데이터(1360)는 메모리(1320)에 저장된 후 독출되어, 다음 레이어의 연산에 이용되기 위하여 연산기(1310)에 입력될 수 있다. 메모리(1320)는 뉴럴 네트워크 장치(1400)의 메모리(1410)이거나 프로세서(1420)에 포함된 온-칩 메모리일 수 있다.
도 14는 뉴럴 네트워크 장치 장치의 일 예를 도시한 구성도이다.
도 14를 참조하면, 뉴럴 네트워크 장치(1400)는 메모리(1410) 및 프로세서(1420)를 포함한다. 또한, 도 14에는 도시되지 않았으나, 뉴럴 네트워크 장치(1400)는 외부 메모리와 연결될 수도 있다. 도 14의 뉴럴 네트워크 장치(1400)에는 본 실시예와 관련된 구성요소들 만이 도시되어 있다. 따라서, 도 14에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 뉴럴 네트워크 장치(1400)에 더 포함될 수 있음은 통상의 기술자에게 자명하다.
뉴럴 네트워크 장치(1400)는 도 1 및 도 2를 참조하여 상술한 뉴럴 네트워크가 구현된 장치일 수 있다. 예를 들어, 뉴럴 네트워크 장치(1400)는 PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다. 구체적인 예로서, 뉴럴 네트워크 장치(1400)는 뉴럴 네트워크를 이용한 음성 인식, 영상 인식, 영상 분류 등을 수행하는 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등에 포함될 수 있으나, 이에 제한되지 않는다. 또한, 뉴럴 네트워크 장치(1400)는 상술한 디바이스에 탑재되는 전용 하드웨어 가속기(HW accelerator)에 해당될 수 있고, 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU, TPU, Neural Engine 등과 같은 하드웨어 가속기일 수도 있다. 또한, 뉴럴 네트워크 장치(1400)는 도 5의 뉴럴 네트워크 학습기(51) 또는 뉴럴 네트워크 추론기(53)일 수도 있다.
메모리(1410)는 뉴럴 네트워크 장치(1400) 내에서 처리되는 각종 데이터들을 저장한다. 예를 들어, 메모리(1410)는 뉴럴 네트워크 장치(1400)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(1410)는 뉴럴 네트워크 장치(1400)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다.
예를 들어, 메모리(1410)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다.
프로세서(1420)는 뉴럴 네트워크 장치(1400)에서 뉴럴 네트워크를 구동하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 프로세서(1420)는 메모리(1410)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1400)를 전반적으로 제어한다. 프로세서(1420)는 뉴럴 네트워크 장치(1400) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
프로세서(1420)는 메모리(1410)로부터 데이터(예를 들어, 이미지 데이터, 피처맵 데이터, 커널 데이터 등)를 리드/라이트(read/write)하고, 리드/라이트된 데이터를 이용하여 뉴럴 네트워크를 실행한다. 뉴럴 네트워크가 실행될 때, 프로세서(1420)는 내부에 포함된 프로세싱 유닛들을 구동시켜, 출력 피처맵에 관한 데이터를 생성하기 위한 입력 피처맵과 커널 간의 연산을 반복적으로 수행한다. 이때, 입력 피처맵의 채널 수, 커널의 채널 수, 입력 피처맵의 크기, 커널의 크기, 값의 정밀도(precision) 등의 다양한 팩터들에 의존하여 연산의 연산량이 결정될 수 있다.
예를 들어, 프로세싱 유닛은 연산을 위한 로직 회로를 포함할 수 있다. 구체적으로, 프로세싱 유닛은 곱셈기(multiplier), 덧셈기(adder) 및 누산기(accumulator)의 조합으로 구현된 연산기를 포함할 수 있다. 또한, 곱셈기는 다수의 서브-곱셈기들의 조합으로 구현될 수 있고, 덧셈기도 다수의 서브-덧셈기들의 조합으로 구현될 수 있다.
프로세서(1420)는 연산을 처리하기 위해, 레지스터(또는 레지스터 파일), 캐시(cache)의 기능을 담당하는 온-칩 메모리, 및 입력 피처맵의 픽셀값들 또는 필터들의 가중치값들과 같은 다양한 오퍼랜드(operand)들을 디스패치하기 위한 디스패처(dispatcher)를 더 포함할 수 있다. 예를 들어, 디스패처는 메모리(1410)에 저장되어 있는 데이터로부터 프로세싱 유닛이 수행할 연산에 필요한 픽셀값들 및 가중치값들 등의 오퍼랜드들을 온-칩 메모리에 디스패치한다. 그리고, 디스패처는 온-칩 메모리에 디스패치된 오퍼랜드들을 연산을 위해 프로세싱 유닛에 다시 디스패치한다.
한편, 상술한 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 실시예들에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 실시예가 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 실시예에 포함된 것으로 해석되어야 할 것이다.

Claims (19)

  1. 뉴럴 네트워크의 데이터를 양자화하는 방법에 있어서,
    이전 레이어에 대응하는 글로벌 최대값에 기초하여 현재 레이어의 연산의 출력 데이터로부터 복원된 글로벌 복원 데이터를 상기 현재 레이어의 출력 채널 별 로컬 최대값에 기초하여 1차 양자화함으로써, 로컬 양자화 데이터를 획득하는 단계;
    다음 레이어의 연산을 수행하기 위하여, 상기 로컬 양자화 데이터를 메모리에 저장하는 단계;
    상기 출력 채널 별 상기 로컬 최대값에 기초하여 상기 로컬 양자화 데이터로부터 복원된 로컬 복원 데이터를 상기 현재 레이어에 대응하는 글로벌 최대값에 기초하여 2차 양자화함으로써, 글로벌 양자화 데이터를 획득하는 단계; 및
    상기 글로벌 양자화 데이터를 상기 다음 레이어의 연산을 위한 입력 데이터로 제공하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 로컬 양자화 데이터를 획득하는 단계는,
    상기 이전 레이어의 연산의 출력 데이터를 복원하여 획득된 데이터에 기초하여 생성되는 상기 이전 레이어에 대응하는 상기 글로벌 최대값에 기초하여, 상기 출력 채널 별로 상기 현재 레이어의 연산의 출력 데이터를 복원함으로써, 상기 글로벌 복원 데이터를 획득하는 단계를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 로컬 양자화 데이터를 획득하는 단계는,
    상기 글로벌 복원 데이터의 상기 출력 채널 별 최대값이 동일한 값으로 양자화되도록, 상기 출력 채널 별 상기 글로벌 복원 데이터의 최대값인 상기 로컬 최대값에 기초하여, 상기 출력 채널 별로 상기 글로벌 복원 데이터를 1차 양자화함으로써, 상기 로컬 양자화 데이터를 획득하는 단계를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 글로벌 양자화 데이터를 획득하는 단계는,
    상기 로컬 양자화 데이터가 상기 1차 양자화되기 이전으로 복원되도록, 상기 출력 채널 별 상기 글로벌 복원 데이터의 최대값인 상기 로컬 최대값에 기초하여, 상기 출력 채널 별로 상기 로컬 양자화 데이터를 복원함으로써, 상기 로컬 복원 데이터를 획득하는 단계를 포함하는, 방법.
  5. 제1항에 있어서,
    상기 글로벌 양자화 데이터를 획득하는 단계는,
    상기 로컬 복원 데이터가 동일한 스케일로 양자화 되도록, 상기 로컬 복원 데이터의 최대값인 상기 글로벌 최대값에 기초하여, 상기 출력 채널 별로 상기 로컬 복원 데이터를 2차 양자화함으로써, 상기 글로벌 양자화 데이터를 획득하는 단계를 포함하는, 방법.
  6. 제1항에 있어서,
    상기 로컬 양자화 데이터를 획득하는 단계는,
    상기 현재 레이어의 연산의 출력 데이터를 상기 이전 레이어에 대응하는 글로벌 최대값에 기초하여 복원하는 단계;
    상기 복원된 데이터에 대하여 풀링 연산을 수행함으로써 상기 글로벌 복원 데이터를 획득하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서,
    상기 현재 레이어의 모든 출력 채널에 대하여 상기 글로벌 복원 데이터의 상기 출력 채널 별 최대값을 산출함으로써 획득된 상기 로컬 최대값들을 레지스터에 저장하는 단계;
    상기 로컬 최대값들의 최대값을 산출함으로써 획득된 상기 현재 레이어에 대응하는 글로벌 최대값을 레지스터에 저장하는 단계를 포함하는, 방법.
  8. 제1항에 있어서,
    상기 로컬 양자화 데이터를 획득하는 단계는 상기 출력 채널 별로 순차적으로 수행되는, 방법.
  9. 제1항에 있어서,
    상기 현재 레이어의 연산 및 상기 다음 레이어의 연산은 역전파에 기초하고,
    상기 데이터는 액티베이션, 로스 그레디언트, 및 가중치 그레디언트 중 적어도 어느 하나를 포함하는, 방법.
  10. 제1항 내지 제9항 중에 어느 한 항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  11. 뉴럴 네트워크의 데이터를 양자화하는 장치에 있어서,
    적어도 하나의 프로그램이 저장된 메모리; 및
    상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크의 데이터를 양자화하는 프로세서를 포함하고,
    상기 프로세서는,
    이전 레이어에 대응하는 글로벌 최대값에 기초하여 현재 레이어의 연산의 출력 데이터로부터 복원된 글로벌 복원 데이터를 상기 현재 레이어의 출력 채널 별 로컬 최대값에 기초하여 1차 양자화함으로써, 로컬 양자화 데이터를 획득하고,
    다음 레이어의 연산을 수행하기 위하여, 상기 로컬 양자화 데이터를 메모리에 저장하고,
    상기 출력 채널 별 상기 로컬 최대값에 기초하여 상기 로컬 양자화 데이터로부터 복원된 로컬 복원 데이터를 상기 현재 레이어에 대응하는 글로벌 최대값에 기초하여 2차 양자화함으로써, 글로벌 양자화 데이터를 획득하고,
    상기 글로벌 양자화 데이터를 상기 다음 레이어의 연산을 위한 입력 데이터로 제공하는, 장치.
  12. 제11항에 있어서,
    상기 프로세서는,
    상기 이전 레이어의 연산의 출력 데이터를 복원하여 획득된 데이터에 기초하여 생성되는 상기 이전 레이어에 대응하는 상기 글로벌 최대값에 기초하여, 상기 출력 채널 별로 상기 현재 레이어의 연산의 출력 데이터를 복원함으로써, 상기 글로벌 복원 데이터를 획득하는, 장치.
  13. 제11항에 있어서,
    상기 프로세서는,
    상기 글로벌 복원 데이터의 상기 출력 채널 별 최대값이 동일한 값으로 양자화되도록, 상기 출력 채널 별 상기 글로벌 복원 데이터의 최대값인 상기 로컬 최대값에 기초하여, 상기 출력 채널 별로 상기 글로벌 복원 데이터를 1차 양자화함으로써, 상기 로컬 양자화 데이터를 획득하는, 장치.
  14. 제11항에 있어서,
    상기 프로세서는,
    상기 로컬 양자화 데이터가 상기 1차 양자화되기 이전으로 복원되도록, 상기 출력 채널 별 상기 글로벌 복원 데이터의 최대값인 상기 로컬 최대값에 기초하여, 상기 출력 채널 별로 상기 로컬 양자화 데이터를 복원함으로써, 상기 로컬 복원 데이터를 획득하는, 장치.
  15. 제11항에 있어서,
    상기 프로세서는,
    상기 로컬 복원 데이터가 동일한 스케일로 양자화 되도록, 상기 로컬 복원 데이터의 최대값인 상기 글로벌 최대값에 기초하여, 상기 출력 채널 별로 상기 로컬 복원 데이터를 2차 양자화함으로써, 상기 글로벌 양자화 데이터를 획득하는, 장치.
  16. 제11항에 있어서,
    상기 프로세서는,
    상기 현재 레이어의 연산의 출력 데이터를 상기 이전 레이어에 대응하는 글로벌 최대값에 기초하여 복원하고,
    상기 복원된 데이터에 대하여 풀링 연산을 수행함으로써 상기 글로벌 복원 데이터를 획득하는, 장치.
  17. 제11항에 있어서,
    상기 프로세서는,
    상기 현재 레이어의 모든 출력 채널에 대하여 상기 글로벌 복원 데이터의 상기 출력 채널 별 최대값을 산출함으로써 획득된 상기 로컬 최대값들을 레지스터에 저장하고,
    상기 로컬 최대값들의 최대값을 산출함으로써 획득된 상기 현재 레이어에 대응하는 글로벌 최대값을 레지스터에 저장하는, 장치.
  18. 제11항에 있어서,
    상기 프로세서는,
    상기 출력 채널 별로 순차적으로 상기 로컬 양자화 데이터를 획득하는, 장치.
  19. 제11항에 있어서,
    상기 프로세서는,
    역전파에 기초하여, 상기 현재 레이어의 연산 및 상기 다음 레이어의 연산을 수행하고,
    상기 데이터는 액티베이션, 로스 그레디언트, 및 가중치 그레디언트 중 적어도 어느 하나를 포함하는, 장치.
KR1020190126298A 2019-10-11 2019-10-11 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치 KR20210043295A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190126298A KR20210043295A (ko) 2019-10-11 2019-10-11 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치
US15/931,362 US20210110270A1 (en) 2019-10-11 2020-05-13 Method and apparatus with neural network data quantizing
EP20183579.0A EP3805994A1 (en) 2019-10-11 2020-07-02 Method and apparatus with neural network data quantizing
CN202011086791.6A CN112651485A (zh) 2019-10-11 2020-10-12 识别图像的方法和设备以及训练神经网络的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190126298A KR20210043295A (ko) 2019-10-11 2019-10-11 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20210043295A true KR20210043295A (ko) 2021-04-21

Family

ID=71452074

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190126298A KR20210043295A (ko) 2019-10-11 2019-10-11 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치

Country Status (4)

Country Link
US (1) US20210110270A1 (ko)
EP (1) EP3805994A1 (ko)
KR (1) KR20210043295A (ko)
CN (1) CN112651485A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113238988B (zh) * 2021-06-08 2023-05-30 中科寒武纪科技股份有限公司 优化深度神经网络的参数的处理系统、集成电路及板卡
WO2022257920A1 (zh) * 2021-06-08 2022-12-15 中科寒武纪科技股份有限公司 优化深度神经网络的参数的处理系统、集成电路及板卡
CN113657584B (zh) * 2021-08-31 2024-04-09 安谋科技(中国)有限公司 神经网络模型计算方法、数据处理方法、电子设备及介质
CN117009729B (zh) * 2023-10-08 2024-01-26 之江实验室 基于softmax的数据处理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102601604B1 (ko) * 2017-08-04 2023-11-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치

Also Published As

Publication number Publication date
US20210110270A1 (en) 2021-04-15
CN112651485A (zh) 2021-04-13
EP3805994A1 (en) 2021-04-14

Similar Documents

Publication Publication Date Title
US10909418B2 (en) Neural network method and apparatus
US20210166112A1 (en) Method for neural network and apparatus performing same method
KR20210043295A (ko) 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치
US20190340499A1 (en) Quantization for dnn accelerators
US10977338B1 (en) Reduced-area circuit for dot product computation
JP2020009444A (ja) ニューラルネットワークにおいてパラメータを処理する方法及び装置
KR20180073118A (ko) 컨볼루션 신경망 처리 방법 및 장치
US20200364552A1 (en) Quantization method of improving the model inference accuracy
CN111652368A (zh) 一种数据处理方法及相关产品
KR102452951B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
EP3789892A1 (en) Method and apparatus for processing data
EP3528181B1 (en) Processing method of neural network and apparatus using the processing method
KR20210076691A (ko) 프레임워크 간 뉴럴 네트워크의 학습을 검증하는 방법 및 장치
US11853888B2 (en) Method and apparatus with neural network convolution operations
KR20200095300A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
US20240095522A1 (en) Neural network generation device, neural network computing device, edge device, neural network control method, and software generation program
EP3882823A1 (en) Method and apparatus with softmax approximation
US20210406690A1 (en) Efficient weight clipping for neural networks
JP7000586B2 (ja) データ処理システムおよびデータ処理方法
KR102424538B1 (ko) 영상 복원 방법 및 장치
US20210248472A1 (en) Neural Network Layers with a Controlled Degree of Spatial Invariance
KR102384588B1 (ko) 신경망 연산방법 및 신경망 가중치 생성방법
US20230058095A1 (en) Method and apparatus with calculation
CN114254746A (zh) 执行神经网络的方法和设备
Randive et al. Evaluation of Model Compression Techniques

Legal Events

Date Code Title Description
A201 Request for examination