KR20190014900A - 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치 - Google Patents

뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치 Download PDF

Info

Publication number
KR20190014900A
KR20190014900A KR1020170098999A KR20170098999A KR20190014900A KR 20190014900 A KR20190014900 A KR 20190014900A KR 1020170098999 A KR1020170098999 A KR 1020170098999A KR 20170098999 A KR20170098999 A KR 20170098999A KR 20190014900 A KR20190014900 A KR 20190014900A
Authority
KR
South Korea
Prior art keywords
fraction
channel
fixed
neural network
length
Prior art date
Application number
KR1020170098999A
Other languages
English (en)
Other versions
KR102601604B1 (ko
Inventor
이준행
이승원
하상원
이원조
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170098999A priority Critical patent/KR102601604B1/ko
Priority to CN201810868446.4A priority patent/CN109389219B/zh
Priority to US16/051,788 priority patent/US11588496B2/en
Priority to JP2018144829A priority patent/JP7072464B2/ja
Priority to EP18187235.9A priority patent/EP3438890B1/en
Publication of KR20190014900A publication Critical patent/KR20190014900A/ko
Priority to US18/084,948 priority patent/US20230117033A1/en
Application granted granted Critical
Publication of KR102601604B1 publication Critical patent/KR102601604B1/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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Nonlinear Science (AREA)
  • Image Analysis (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)

Abstract

뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치는, 미리 훈련된 뉴럴 네트워크의 데이터로부터 부동 소수점 타입의 파라미터 값들에 대한 채널 별 통계적 분포를 분석하고, 채널 별 파라미터의 고정 소수점 표현을 결정하고, 바이어스 및 채널 별 웨이트의 프랙션 길이들을 결정하고, 결정된 프랙션 길이들의 바이어스 및 채널 별 웨이트를 갖는 고정 소수점 타입의 양자화된 뉴럴 네트워크를 생성한다.

Description

뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치 {Method and apparatus for quantizing parameter of neural network}
뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치에 관한다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크를 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다. 뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 따라서, 뉴럴 네트워크를 이용하여 대량의 입력 데이터를 실시간으로 분석하여, 원하는 정보를 추출하기 위해서는 뉴럴 네트워크에 관한 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 뉴럴 네트워크의 파라미터들을 양자화하는 방법은, 부동 소수점들을 이용하여 미리 훈련된 뉴럴 네트워크의 데이터로부터, 피처 맵들 및 커널들 각각에 포함된 각 채널에서 이용된 부동 소수점 타입의 파라미터 값들에 대한 채널 별 통계적 분포를 분석하는 단계; 상기 채널 별 통계적 분포에 기초하여, 상기 파라미터 값들의 분포 범위를 통계적으로 커버하는 상기 채널 별 파라미터의 고정 소수점 표현을 결정하는 단계; 상기 채널 별 고정 소수점 표현의 파라미터로 컨볼루션 연산을 수행한 결과에 기초하여 바이어스 및 상기 채널 별 웨이트의 프랙션 길이들을 결정하는 단계; 및 상기 결정된 프랙션 길이들의 상기 바이어스 및 상기 채널 별 웨이트를 갖는, 고정 소수점 타입의 양자화된 뉴럴 네트워크를 생성하는 단계를 포함한다.
다른 측면에 따르면, 장치는, 적어도 하나의 프로그램이 저장된 메모리; 및 상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크의 파라미터들을 양자화하는 프로세서를 포함하고, 상기 프로세서는 부동 소수점들을 이용하여 미리 훈련된 뉴럴 네트워크의 데이터로부터, 피처 맵들 및 커널들 각각에 포함된 각 채널에서 이용된 부동 소수점 타입의 파라미터 값들에 대한 채널 별 통계적 분포를 분석하고, 상기 채널 별 통계적 분포에 기초하여, 상기 파라미터 값들의 분포 범위를 통계적으로 커버하는 상기 채널 별 파라미터의 고정 소수점 표현을 결정하고, 상기 채널 별 고정 소수점 표현의 파라미터로 컨볼루션 연산을 수행한 결과에 기초하여 바이어스 및 상기 채널 별 웨이트의 프랙션 길이들을 결정하고, 상기 결정된 프랙션 길이들의 상기 바이어스 및 상기 채널 별 웨이트를 갖는, 고정 소수점 타입의 양자화된 뉴럴 네트워크를 생성한다.
도 1은 일 실시예에 따른 산출 그래프(computational graph)의 아키텍처를 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 뉴럴 네트워크 양자화 장치의 하드웨어 구성을 도시한 블록도이다.
도 4는 일 실시예에 따른 미리 훈련된 뉴럴 네트워크를 양자화하여 하드웨어 가속기에 채용하는 것을 설명하기 위한 도면이다.
도 5는 부동 소수점과 고정 소수점을 설명하기 위한 도면이다.
도 6은 고정 소수점에서 프랙션 길이와 정확도 간의 관계를 설명하기 위한 도면이다.
도 7은 뉴럴 네트워크의 파라미터들이 레이어 별로 동일한 고정 소수점 표현으로 양자화되는 경우를 설명하기 위한 도면이다.
도 8은 일 실시예에 따라 뉴럴 네트워크의 파라미터들이 채널 별로 동일한 고정 소수점 표현으로 양자화되는 경우를 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 채널에서 이용된 파라미터들의 통계적 분포를 설명하기 위한 도면이다.
도 10은 다른 실시예에 따른 채널에서 이용된 파라미터들의 통계적 분포를 설명하기 위한 도면이다.
도 11은 일 실시예에 따라 고정 소수점 타입의 일부 파라미터들의 프랙션 길이를 결정하는 것을 설명하기 위한 도면이다.
도 12는 도 11의 방식을 이용하는 뉴럴 네트워크 파라미터의 양자화 알고리즘을 도시한 도면이다.
도 13은 다른 실시예에 따라 고정 소수점 타입의 일부 파라미터들의 프랙션 길이를 결정하는 것을 설명하기 위한 도면이다.
도 14는 도 13의 방식을 이용하는 뉴럴 네트워크 파라미터의 양자화 알고리즘을 도시한 도면이다.
도 15는 도 7에서 설명된 레이어 별 양자화를 설명하기 위한 도면이다.
도 16은 일 실시예에 따라 양자화된 뉴럴 네트워크를 재훈련(retrain)하는 것을 설명하기 위한 도면이다.
도 17은 레이어 별 양자화와 채널 별 양자화의 정확도를 비교한 시뮬레이션 결과를 도시한 도면이다.
도 18은 재훈련에 의한 양자화된 뉴럴 네트워크의 정확도 변화에 대한 시뮬레이션 결과를 도시한 도면이다.
도 19는 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 20은 일 실시예에 따른 뉴럴 네트워크의 파라미터들을 양자화하는 방법의 흐름도이다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 실시예들에서 사용되는 “구성된다” 또는 “포함한다” 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 도는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 산출 그래프(computational graph)의 아키텍처를 설명하기 위한 도면이다.
도 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 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 1의 산출 그래프(1)가 컨볼루션 뉴럴 네트워크를 표현하는 것인 경우, 산출 그래프(1)는 컨볼루션 뉴럴 네트워크 중 일부의 레이어들에 해당될 수 있다. 따라서, 산출 그래프(1)는 컨볼루션 뉴럴 네트워크의, 컨볼루션 레이어, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등에 해당될 수 있다. 다만, 이하에서는 편의상, 산출 그래프(1)가 컨볼루션 뉴럴 네트워크의 컨볼루션 레이어에 해당되는 것으로 가정하여 설명하도록 하겠으나, 이에 제한되지 않고 산출 그래프(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)의 깊이, 즉 웨이트 맵(WM)의 채널 개수는 제 1 피처 맵(FM1)의 깊이와 제 2 피처 맵(FM2)의 깊이를 곱한 값, 즉 제 1 피처 맵(FM1)의 채널 개수와 제 2 피처 맵(FM2)의 채널 개수를 곱한 값과 동일하다. 다만, 웨이트 맵(WM)이 4차원 매트릭스이고 커널의 크기(kernel size)가 k인 경우, 웨이트 맵(WM)의 채널 개수는 “제 1 피처 맵(FM1)의 깊이 * 제 2 피처 맵(FM2)의 깊이 * k * k” 와 같이 계산될 수 있다. 웨이트 맵(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)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어,
Figure pat00001
Figure pat00002
)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어,
Figure pat00003
Figure pat00004
)를 생성할 수 있다.
뉴럴 네트워크(2)는 앞서 설명된 바와 같이, 2개 이상의 히든 레이어들을 포함하는 DNN 또는 n-계층 뉴럴 네트워크일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 뉴럴 네트워크(2)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. 뉴럴 네트워크(2)가 DNN 아키텍처로 구현된 경우 유효한 정보를 처리할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(2)는 싱글 레이어를 갖는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(2)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)는 더 적거나 많은 레이어들을 포함하거나, 더 적거나 많은 채널들을 포함할 수 있다. 즉, 뉴럴 네트워크(2)는 도 2에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(10)에 포함된 레이어들 각각은 복수의 채널들을 포함할 수 있다. 채널은 뉴런(neuron), 프로세싱 엘리먼트(Processing element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, Layer 1은 2개의 채널들(노드들), Layer 2 및 Layer 3 각각은 3개의 채널들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)에 포함된 레이어들 각각은 다양한 개수의 채널들(노드들)을 포함할 수 있다.
뉴럴 네트워크(2)의 레이어들 각각에 포함된 채널들은 서로 연결되어 데이터를 처리할 수 있다. 예를 들어, 하나의 채널은 다른 채널들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 채널들로 출력할 수 있다.
채널들 각각의 입력 및 출력 각각은 입력 액티베이션 및 출력 액티베이션이라고 지칭될 수 있다. 즉, 액티베이션은 한 채널의 출력임과 동시에, 다음 레이어에 포함된 채널들의 입력에 해당되는 파라미터일 수 있다. 한편, 채널들 각각은 이전 레이어에 포함된 채널들로부터 수신된 액티베이션들 및 웨이트들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 채널에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 채널들 간의 연결관계에 할당되는 값일 수 있다.
채널들 각각은 입력을 수신하여 출력 액티베이션을 출력하는 연산 유닛(computational unit) 또는 프로세싱 엘리먼트(processing element)에 의해 처리될 수 있고, 채널들 각각의 입력-출력은 매핑될 수 있다. 예를 들어,
Figure pat00005
는 액티베이션 함수(activation function)이고,
Figure pat00006
는 (i-1) 번째 레이어에 포함된 k 번째 채널로부터 i 번째 레이어에 포함된 j번째 채널로의 웨이트며,
Figure pat00007
는 i 번째 레이어에 포함된 j 번째 채널의 바이어스(bias)이고,
Figure pat00008
는 i 번째 레이어의 j 번째 채널의 액티베이션이라고 할 때, 액티베이션
Figure pat00009
는 다음과 같은 수학식 1을 이용하여 계산될 수 있다.
Figure pat00010
도 2에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 채널(CH 1)의 액티베이션은
Figure pat00011
로 표현될 수 있다. 또한,
Figure pat00012
은 수학식 1에 따라
Figure pat00013
의 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 뉴럴 네트워크(2)에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 합(sum)에 액티베이션 함수를 적용한 값을 Rectified Linear Unit (ReLU)을 통과시킴으로써 획득된 값일 수 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(2)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 수많은 연산 과정을 거친다. 따라서, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
도 3은 일 실시예에 따른 뉴럴 네트워크 양자화 장치의 하드웨어 구성을 도시한 블록도이다.
도 3을 참고하면, 뉴럴 네트워크 양자화 장치(10)는 프로세서(110) 및 메모리(120)를 포함한다. 도 3에 도시된 뉴럴 네트워크 양자화 장치(10)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 양자화 장치(10)에는 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당업자에게 자명하다.
뉴럴 네트워크 양자화 장치(10)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train)(또는 학습(learn))하거나, 부동 소수점 타입의 뉴럴 네트워크를 고정 소수점 타입의 뉴럴 네트워크로 양자화하거나, 또는 뉴럴 네트워크를 재훈련(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일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1940)는 휘발성 메모리(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) 등을 포함한다. 실시예에 있어서, 메모리(1940)는 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)는 주어진 초기 뉴럴 네트워크를 반복적으로 훈련(학습)시킴으로써, 훈련된 뉴럴 네트워크를 생성할 수 있다. 이때, 초기 뉴럴 네트워크는 뉴럴 네트워크의 처리 정확도 확보 차원에서 부동 소수점 타입의 파라미터들, 예를 들어 32비트 부동 소수점 정밀도(32bit floating point precision)의 파라미터들을 가질 수 있다. 여기서, 파라미터들은 예를 들어 뉴럴 네트워크의 입/출력 액티베이션들, 웨이트들, 바이어스들 등 뉴럴 네트워크에 입/출력되는 다양한 종류의 데이터를 포함할 수 있다. 뉴럴 네트워크의 반복적인 훈련이 진행됨에 따라, 뉴럴 네트워크의 부동 소수점 파라미터들은 주어진 입력에 대해 보다 정확한 출력을 연산하기 위해 조정될(tuned) 수 있다.
다만, 부동 소수점은 고정 소수점에 비해 상대적으로 많은 연산량과 많은 메모리 액세스 빈도가 요구된다. 특히, 뉴럴 네트워크의 처리에 소요되는 연산량의 대부분은 다양한 파라미터들의 연산을 수행하는 컨볼루션 연산으로 알려져 있다. 따라서, 비교적 처리 성능이 낮은 스마트폰, 태블릿, 웨어러블 디바이스 등과 같은 모바일 디바이스, 임베디드(embedded) 디바이스 등에서는 부동 소수점 타입의 파라미터들을 갖는 뉴럴 네트워크의 처리가 원활하지 않을 수 있다. 결국, 이와 같은 디바이스들에서 연산량을 충분히 감소시키면서 허용 가능한 정확도 손실 내에서 뉴럴 네트워크를 구동시키기 위해서는, 뉴럴 네트워크에서 처리되는 부동 소수점 타입의 파라미터들은 양자화되는 것이 바람직하다. 여기서, 파라미터 양자화는, 부동 소수점 타입의 파라미터를, 고정 소수점 타입의 파라미터로 변환하는 것을 의미한다.
뉴럴 네트워크 양자화 장치(10)는 뉴럴 네트워크가 채용될(deployed) 디바이스(예를 들어, 모바일 디바이스, 임베디드 디바이스 등)의 처리 성능을 고려하여, 훈련된 뉴럴 네트워크의 파라미터들을 소정 비트들의 고정 소수점 타입으로 변환하는 양자화를 수행하고, 뉴럴 네트워크 양자화 장치(10)는 양자화된 뉴럴 네트워크를 채용될 디바이스에 전달한다. 뉴럴 네트워크가 채용될 디바이스는, 구체적인 예시로 뉴럴 네트워크를 이용한 음성 인식, 영상 인식 등을 수행하는 자율주행 자동차, 로보틱스, 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스 등일 수 있으나, 이에 제한되지 않는다.
프로세서(110)는 메모리(120)에 저장된, 부동 소수점들을 이용하여 미리 훈련된(pre-trained) 뉴럴 네트워크의 데이터를 획득한다. 미리 훈련된 뉴럴 네트워크는 부동 소수점 타입의 파라미터들로 반복적으로 훈련된 데이터일 수 있다. 뉴럴 네트워크의 훈련은, 훈련-세트(train set) 데이터를 입력으로 하여 먼저 반복적으로 훈련되고, 이어서 테스트-세트(test set) 데이터로 다시 반복적으로 훈련된 것일 수 있으나, 반드시 이에 제한되지 않는다. 훈련-세트 데이터는 뉴럴 네트워크를 훈련시키기 위한 입력 데이터이고, 테스트 세트 데이터는 훈련-세트 데이터와 겹치지 않는 입력 데이터로서, 훈련-세트 데이터로 훈련된 뉴럴 네트워크의 성능을 측정하면서 훈련시키기 위한 데이터이다.
프로세서(110)는 미리 훈련된 뉴럴 네트워크 데이터로부터, 피처 맵들 및 커널들 각각에 포함된 각 채널에서 이용된 부동 소수점 타입의 파라미터 값들에 대한 채널 별 통계적 분포를 분석한다. 이때, 프로세서(110)는 뉴럴 네트워크가 미리 훈련되는 동안 각 채널에서 이용되었던 부동 소수점 타입의 액티베이션들, 웨이트들 및 바이어스들의 파라미터 값들에 대한 채널 별 통계량을 구함으로써, 통계적 분포를 분석할 수 있다.
프로세서(110)는 분석된 채널 별 통계적 분포에 기초하여, 파라미터 값들의 분포 범위를 통계적으로 커버하는, 채널 별 파라미터의 고정 소수점 표현을 결정한다. 이로써, 부동 소수점 타입의 뉴럴 네트워크는 고정 소수점 타입의 뉴럴 네트워크로 변환될 수 있다. 본 실시예에 따르면, 부동 소수점 타입으로부터 고정 소수점 타입으로의 변환은 각 채널에 대한 통계적 분포에 기초하여 수행되므로, 각 채널에 할당된 고정 소수점 표현은 채널마다 같거나 또는 서로 다를 수 있다. 즉, 채널 별로 파라미터의 고정 소수점 표현의 프랙션 길이(fraction length)가 제각각일 수 있다.
나아가서, 프로세서(110)는 채널 별 고정 소수점 표현의 파라미터로 피처 맵들 및 커널들 간의 컨볼루션 연산을 수행한 결과에 기초하여 바이어스 및 채널 별 웨이트의 프랙션 길이들을 결정한다. 한편, 바이어스의 프랙션 길이 및 채널 별 웨이트의 프랙션 길이는 양자화된 뉴럴 네트워크의 제약조건(constraint)으로 설정될 수 있다.
프로세서(110)에 의해 각 채널 별 파라미터가 고정 소수점 타입으로 양자화되는 알고리즘에 대해서는, 이하 해당 도면들을 참고하여 구체적으로 설명하도록 한다.
한편, 메모리(120)는 예를 들어, 훈련되지 않은 초기 뉴럴 네트워크 데이터, 훈련 과정에서 생성된 뉴럴 네트워크 데이터, 모든 훈련이 완료된 뉴럴 네트워크 데이터, 양자화된 뉴럴 네트워크 데이터 등 프로세서(110)에 의해 처리될 또는 처리된 뉴럴 네트워크 관련 데이터 세트를 저장할 수 있고, 또한 프로세서(110)에 의해 실행될 뉴럴 네트워크의 훈련 알고리즘, 양자화 알고리즘 등에 관련된 다양한 프로그램들을 저장할 수 있다.
도 4는 일 실시예에 따른 미리 훈련된 뉴럴 네트워크를 양자화하여 하드웨어 가속기에 채용하는 것을 설명하기 위한 도면이다.
도 4를 참고하면, 앞서 설명된 바와 같이, PC, 서버 등과 같은 뉴럴 네트워크 양자화 장치(도 3의 10)에서 프로세서(도 3의 110)는 부동 소수점 타입(예를 들어, 32비트 부동 소수점 타입)의 뉴럴 네트워크(410)를 훈련한다. 미리 훈련된 뉴럴 네트워크(410) 자체는 부동 소수점 타입의 파라미터들로 인하여 저전력 또는 저성능의 하드웨어 가속기에서 효율적으로 처리되지 않을 수 있으므로, 뉴럴 네트워크 양자화 장치(10)의 프로세서(110)는 부동 소수점 타입의 뉴럴 네트워크(410)를 고정 소수점 타입(예를 들어, 16비트 이하의 고정 소수점 타입)의 뉴럴 네트워크(420)로 양자화한다. 하드웨어 가속기는 뉴럴 네트워크(420)의 구동을 위한 전용 하드웨어로서, 비교적 저전력 또는 저성능으로 구현되기 때문에 부동 소수점 연산 보다는 고정 소수점 연산에 보다 적합하게 구현될 수 있다. 하드웨어 가속기는 예를 들어, 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등에 해당될 수 있으나, 이에 제한되지 않는다.
양자화된 뉴럴 네트워크(420)를 구동하는 하드웨어 가속기는, 뉴럴 네트워크 양자화 장치(10)와는 별도의 독립적인 디바이스에 구현될 수 있다. 하지만, 이에 제한되지 않고, 하드웨어 가속기는 뉴럴 네트워크 양자화 장치(10)와 동일한 장치 내에도 구현될 수 있다.
도 5는 부동 소수점과 고정 소수점을 설명하기 위한 도면이다.
도 5의 부동 소수점 예시(510)를 참고하면, 부동 소수점 값은
Figure pat00014
의 형식으로 표현될 수 있고, 여기서 a는 지수부(exponent), b는 가수부(fraction part)에 해당된다. 부동 소수점 값은 1비트의 부호 비트, 8비트들의 지수부 비트들 및 23비트들의 가수부 비트들을 포함하는 32비트들로 표현될 수 있다.
다음으로, 고정 소수점 예시(520)를 참고하면, 고정 소수점은 “Qm,n”으로 표현될 수 있다. (m, n은 자연수) 여기서, “m”은 지수부를 나타내는 비트들의 개수, “n”은 가수부를 나타내는 비트들의 개수이다. 따라서, 고정 소수점의 비트 폭(bit width)은 부호 1 비트, 지수부 m 비트 및 가수부 n 비트를 합하여 1+m+n이다. 고정 소수점 비트들 중 가수부를 나타내는 비트들은 n 비트들이므로, 프랙션 길이(fractional length)는 n이다. 예를 들어, “Q3.4”는 부호 1 비트, 지수부 3 비트들 및 가수부 4 비트들을 갖는 총 8비트들의 고정 소수점 값이고, “Q1.30”는 부호 1 비트, 지수부 1 비트 및 가수부 30 비트들을 갖는 총 32비트들의 고정 소수점 값이고, “Q15.16”은 부호 1 비트, 지수부 15 비트들 및 가수부 16 비트들을 갖는 총 32비트들의 고정 소수점 값이다.
도 6은 고정 소수점에서 프랙션 길이와 정확도 간의 관계를 설명하기 위한 도면이다.
도 6을 참고하면, 고정 소수점에 할당된 총 비트 폭은 3비트들인 것으로 가정하여, 프랙션 길이가 0인 Q2.0의 고정 소수점 표현(610)과 프랙션 길이가 1인 Q1.1의 고정 소수점 표현(620)의 비교가 설명되어 있다.
Q2.0은 지수부가 2비트들 가수부가 0비트 이므로, -4부터 3까지의 고정 소수점 값들이 표현될 수 있고, 표현 가능한 고정 소수점 값들 간의 간격은 1이다. 그리고, Q1.1은 지수부가 1비트 가수부가 1비트 이므로, -4부터 3까지의 고정 소수점 값들이 표현될 수 있고, 표현 가능한 고정 소수점 값들 간의 간격은 0.5이다.
비교하여 보면, Q2.0의 고정 소수점 표현(610)과 Q1.1의 고정 소수점 표현(620)은 동일한 3비트들이 할당되었으나, Q2.0은 보다 넓은 범위의 고정 소수점 값들의 표현이 가능한 대신에 고정 소수점 값들 간의 간격이 넓으므로 정확도는 낮다. 상대적으로, Q1.1은 보다 좁은 범위의 고정 소수점 값들의 표현이 가능한 대신에 고정 소수점 값들 간의 간격이 좁으므로 정확도는 높다. 결국, 고정 소수점 값의 정확도는, 프랙션 길이, 즉 프랙션 비트들의 할당 개수에 의존한다는 점을 알 수 있다.
도 7은 뉴럴 네트워크의 파라미터들이 레이어 별로 동일한 고정 소수점 표현으로 양자화되는 경우를 설명하기 위한 도면이다.
도 7을 참고하면, 뉴럴 네트워크(700)의 k번째 레이어에는 복수의 채널들이 포함될 수 있고, 다양한 부동 소수점 값들(710)이 이용될 수 있다. 만약, k번째 레이어에서 이용된 부동 소수점 값들(710) 중, 최대 부동 소수점 값(712)을 기준으로 고정 소수점 양자화가 수행된다면, 최소 부동 소수점 값(714)으로부터 양자화된 고정 소수점 표현에 대한 정확도는 매우 낮아질 수 있다. 반대로, 최소 부동 소수점 값(714)을 기준으로 고정 소수점 양자화가 수행된다면, 최대 부동 소수점 값(712)으로부터 양자화된 고정 소수점 표현에 대한 정확도 또한 매우 낮아질 수 있다. 따라서, 레이어 별(즉 레이어에 포함된 채널들 모두) 동일한 고정 소수점 표현들로 양자화가 수행되는 경우, 즉 레이어 별 동일한 프랙션 길이들을 갖는 고정 소수점 표현으로 양자화가 수행되는 경우에는, 양자화된 뉴럴 네트워크의 정확도가 낮아질 수 있다.
도 8은 일 실시예에 따라 뉴럴 네트워크의 파라미터들이 채널 별로 동일한 고정 소수점 표현으로 양자화되는 경우를 설명하기 위한 도면이다.
도 8을 참고하면, 뉴럴 네트워크의 레이어들 각각에 포함된 채널 별 고정 소수점 양자화가 수행될 수 있다. 예를 들어, 어느 레이어에서, 채널 1에서 이용된 부동 소수점 파라미터의 값들의 분포 범위와 채널 2에서 이용된 부동 소수점 파라미터의 값들의 분포 범위는 다를 수 있다. 따라서, 채널 1과 채널 2 각각의 부동 소수점 파라미터들이 서로 다른 프랙션 길이들을 갖는 고정 소수점 표현들의 파라미터들로 양자화된다면, 도 7에서 설명된 정확도 손실이 만회될 수 있게 된다.
따라서, 도 3의 프로세서(110)는, 채널 1의 부동 소수점 파라미터들을 채널 1의 부동 소수점 파라미터 값들의 분포 범위가 통계적으로 커버될 수 있는 프랙션 길이의 고정 소수점 표현으로 양자화한다. 또한, 프로세서(110)는 나머지 채널들 각각의 부동 소수점 파라미터들 또한 나머지 채널들 각각의 부동 소수점 파라미터 값들이 통계적으로 커버될 수 있는 프랙션 길이들의 고정 소수점 표현들로 양자화한다. 즉, 부동 소수점 타입의 파라미터를 고정 소수점 타입의 파라미터로 양자화하는 것은, 뉴럴 네트워크의 레이어에 포함된 채널 단위로 수행된다. 프로세서(110)는 미리 훈련된 뉴럴 네트워크에 대해, 이와 같은 방식의 채널 별 양자화를 수행한다.
도 9는 일 실시예에 따른 채널에서 이용된 파라미터들의 통계적 분포를 설명하기 위한 도면이다.
도 9를 참고하면, 부동 소수점 타입의 파라미터들을 갖는 뉴럴 네트워크의 반복적인 훈련에 따라, 레이어에 포함된 각각의 채널마다 고유의 부동 소수점 값들(즉, 파라미터 값들)의 분포가 생성될 수 있다. 도 3의 프로세서(110)는, 미리 훈련된 뉴럴 네트워크 데이터로부터 피처 맵들의 각 채널 별, 커널들의 각 채널 별로 부동 소수점 타입의 파라미터 값들의 통계량에 기초한 채널 별 통계적 분포를 분석한다. 구체적으로, 프로세서(110)는, 각 채널 별 액티베이션, 웨이트 및 바이어스의 값들에 대한 통계량들을 구하고, 각 채널 별 통계량을 각 채널 별 정규 분포(가우시안 분포)(900)의 확률밀도함수(PDF)로 정규화한다. 다만, 도 9에서는 편의상 프로세서(110)가 통계량을 정규 분포(900)의 확률밀도함수(PDF)로 정규화하는 것을 예로 들었으나, 이에 제한되는 것은 아니다. 즉, 프로세서(110)는 정규 분포(900)가 아닌 다른 다양한 종류들의 통계적 분포들 또는 확률 분포들을 이용하여 통계량을 분석할 수 있다. 도 9의 정규 분포(900)는 어느 피처 맵에 포함된 한 채널에서의 부동 소수점 타입의 액티베이션 값들의 분포일 수 있고, 또는 어느 커널에 포함된 한 채널에서의 부동 소수점 타입의 웨이트 값들의 분포일 수 있다.
프로세서(110)는, 정규 분포(900)에 기초하여, 해당 채널의 파라미터들을 어떠한 프랙션 길이를 갖는 고정 소수점 표현으로 양자화할 것인지에 관한 양자화 레벨을 판단할 수 있다. 구체적으로, 프로세서(110)는 정규 분포(900)에서 파라미터들의 통계적 최대 값(Xmax) 및 통계적 최소 값(Xmin)을 구하고, 이 통계적 최대 값(Xmax) 및 통계적 최소 값(Xmin) 사이 범위의 부동 소수점 값들을 통계적으로 커버할 수 있는 고정 소수점 표현을 결정할 수 있다. 이때, 프랙션 길이는 양자화 레벨에 따라 함께 결정될 수 있다.
통계적 최대 값(Xmax) 및 통계적 최소 값(Xmin)은 양자화 에러(quantization error)를 최소화할 수 있는 범위에 기초한 값들일 수 있다. 본 실시예들에 따르면, 통계적 최대 값(Xmax) 및 통계적 최소 값(Xmin)은 다양하게 정의될 수 있다. 예를 들어, 통계적 최대 값(Xmax) 및 통계적 최소 값(Xmin)은 정규 분포(900)에서 파라미터들의 실제 최대 파라미터 값 및 실제 최소 파라미터 값에 해당될 수 있다. 또는, 통계적 최대 값(Xmax) 및 통계적 최소 값(Xmin)은, 정규 분포(900)의 평균, 분산 또는 표준편차 등을 기준으로 구한, 확률적으로 양자화 에러를 최소화시키는 상한 및 하한 범위일 수 있다. 한편, 주어진 정규분포의 확률밀도함수로부터 양자화 에러를 최소화시키기 위한 최적의 범위를 계산하는 방식들은 당해 기술분야에 많이 소개되어 있고, 본 실시예들은 이와 같은 방식들을 적용하여 주어진 정규분포(900)에 적합한 고정 소수점 표현을 결정할 수 있다.
도 10은 다른 실시예에 따른 채널에서 이용된 파라미터들의 통계적 분포를 설명하기 위한 도면이다.
도 10을 참고하면, 도 9의 정규 분포(900) 대신에, 프로세서(110)는 각 채널 별 통계량을 채널 별 라플라스 분포(1000)의 확률밀도함수(PDF)로 정규화할 수 있다. 프로세서(110)는 도 9에서 설명된 바와 마찬가지로, 주어진 라플라스 분포(1000)에 적합한 통계적 최대 값(Xmax) 및 통계적 최소 값(Xmin)을 구함으로써, 해당 채널의 파라미터에 대한 고정 소수점 표현을 결정할 수 있다.
즉, 프로세서(110)는 도 9 또는 도 10에서 설명된 바와 같이, 채널 별 통계적 분포를 분석하고, 분석된 채널 별 통계적 분포에 기초하여 부동 소수점 타입의 뉴럴 네트워크 파라미터들로부터 채널 별 파라미터의 고정 소수점 표현을 결정한다. 프로세서(110)에 의해 이용되는 통계적 분포는 정규 분포 및 라플라스 분포 중 어느 하나로 근사화된 분포에 대응한다. 다만, 앞서 설명된 바와 같이, 프로세서(110)는 정규 분포 및 라플라스 분포 외에도, 다른 다양한 종류들의 통계적 분포들 또는 확률 분포들을 이용하여 통계량을 분석할 수 있다. 이때, 프로세서(110) 채널 별 통계적 분포로부터 획득된 해당 채널에 분포한 파라미터들의 부동 소수점 값들에 대한 평균, 분산, 표준편차, 최대값, 최소값 중 적어도 하나를 이용하여 정의된 채널 별 프랙션 길이에 기초하여 고정 소수점 표현을 결정할 수 있다.
도 11은 일 실시예에 따라 고정 소수점 타입의 일부 파라미터들의 프랙션 길이를 결정하는 것을 설명하기 위한 도면이다.
도 3의 프로세서(110)는 도 8 내지 도 10에서 설명된 뉴럴 네트워크의 파라미터들의 고정 소수점 표현의 결정 이후에 바이어스(1110)의 프랙션 길이를 결정할 수 있다.
도 11을 참고하면, 어느 레이어의 제 1 채널 및 제 2 채널에서 컨볼루션 연산이 수행되는 것이 예시되어 있다. 컨볼루션 연산은, MAC(multiply-accumulate) 연산 및 Add 연산을 수행하는, 복수의 채널들 간의 부분 합(partial sum) 연산을 포함한다. 한편, 입력 피처 맵(IFM) 및 커널에 대해서는 16비트들이 할당되고, 부분 합 연산에 대해서는 48비트들이 할당되고, 출력 피처 맵 연산(OFM-FW)에는 48비트들이 할당되고, 출력 피처 맵(OFM-FW)에는 48비트들이 할당된 것으로 가정한다.
도 11의 부분 합 연산은 입력 피처 맵(IFM)의 제 1 채널의 제 1 입력 액티베이션 i1 및 커널의 제 1 채널의 제 1 웨이트 w11에 대한 제 1 MAC 연산(1101), 입력 피처 맵(IFM)의 제 2 채널의 제 2 입력 액티베이션 i2 및 커널의 제 2 채널의 제 2 웨이트 w12에 대한 제 2 MAC 연산(1102), 및 제 1 MAC 연산(1101)의 결과와 제 2 MAC 연산(1102)의 결과에 대한 Add 연산(1105)을 포함한다. 다만, 도 11에서는 입력 피처 맵(IFM)의 모든 채널들과 커널의 모든 채널들의 연산들에 대해 도시되지 않고, 설명의 편의상 일부 채널들 간의 연산들에 대해 도시되어 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
제 1 입력 액티베이션 i1는 Q9.6의 고정 소수점 표현으로 양자화되고, 제 1 웨이트 w11는 Q11.4의 고정 소수점 표현으로 양자화되고, 제 2 입력 액티베이션 i2는 Q11.4의 고정 소수점 표현으로 양자화되고, 제 2 웨이트 w12는 Q7.8의 고정 소수점 표현으로 양자화된 것으로 가정한다.
프로세서(110)는 제 1 MAC 연산(1101)을 수행함으로써, 제 1 MAC 연산(110)의 결과에 대응하는 제 1 고정 소수점 표현 Q37.10 및 이것의 제 1 프랙션 길이 10을 획득한다. 또한, 프로세서(110)는 제 2 MAC 연산(1102)을 수행함으로써, 제 2 MAC 연산(1102)의 결과에 대응하는 제 2 고정 소수점 표현 Q35.12 및 이것의 제 2 프랙션 길이 12를 획득한다.
프로세서(110)는 제 1 프랙션 길이 및 제 2 프랙션 길이 중에서 최대 프랙션 길이를, Add 연산(1105)의 결과에 대응하는 바이어스(1110)의 프랙션 길이로 결정한다. 이에 따라, 제 1 고정 소수점 표현 및 제 2 고정 소수점 표현 중에서 보다 작은 프랙션 길이를 갖는 고정 소수점 표현의 프랙션 길이는, 제 1 프랙션 길이 및 제 2 프랙션 길이의 차이만큼 비트-쉬프팅된다.
구체적으로, 프로세서(110)는 최대 프랙션 길이인 제 2 프랙션 길이 12를 바이어스(1110)의 프랙션 길이로 결정한다. 프로세서(110)는 Add 연산(1105)을 위하여, 최소 프랙션 길이를 갖는 제 1 고정 소수점 표현 Q38.10의 제 1 프랙션 길이 10을 프랙션 길이 차이 2만큼 비트-쉬프팅한다.
도 11에 따르면, MAC 연산들(1101, 1102)의 결과들에 대한 비트-쉬프팅이 요구될 수 있는바, 프로세서(110)는 하나 이상의 비트-쉬프터들(1103, 1104)을 구비할 수 있다.
프로세서(110)는 바이어스의 프랙션 길이를 결정하고, Add 연산(1105)을 통해 고정 소수점 표현 Q35.12을 결정하고, 비트-쉬프팅(1106)을 통해 출력 피처 맵의 출력 액티베이션 O1의 고정 소수점 표현 Q9.6을 구한다.
도 11의 실시예에 따르면, 프로세서(110)에 의해 결정된 바이어스의 프랙션 길이는 MAC 연산의 결과로 구한 고정 소수점 표현들의 프랙션 길이들 중 최대 프랙션 길이에 대응한다. 다만, 도 11에서 별도로 도시되지 않았지만, 만약 프랙션 길이의 상한이 미리 정의되어 있는 경우에는, 최대 프랙션 길이와 미리 정의된 프랙션 길이의 상한 중에서 보다 작은 값으로, 프랙션 길이가 결정될 수도 있다. (도 12의 1206 내지 1208 단계들 참고)
결국, 프로세서(110)는 제 1 웨이트 w11의 고정 소수점 표현(Q11.4)과 프랙션 길이(4), 제 2 웨이트 w12의 고정 소수점 표현(Q7.8)과 프랙션 길이(8), 바이어스(1110)의 고정 소수점 표현(Q35.12)과 프랙션 길이(12), 및 비트-쉬프터의 비트-쉬프팅의 정도(2비트들 비트-쉬프팅(1103), 0비트 비트-쉬프팅(1104), 6비트들 비트-쉬프팅(1106))에 대한 정보를 포함하는, 양자화된 뉴럴 네트워크의 데이터를 생성한다.
한편, 도 11에서는 2개의 채널들만이 도시되었으나, 보다 많은 채널들이 존재하는 경우에 대해서도 도 11의 방식이 적용될 수 있다.
도 12는 도 11의 방식을 이용하는 뉴럴 네트워크 파라미터의 양자화 알고리즘을 도시한 도면이다.
도 12을 참고하면, 양자화 알고리즘(1200)에서는 바이어스의 프랙션 길이를 결정하기 위해 도 11에서 설명된 방식이 이용될 수 있다.
1201 단계에서, 도 3의 프로세서(110)는 입력으로서, 미리 훈련된 뉴럴 네트워크 데이터의 뉴럴 네트워크 아키텍처 데이터, 뉴럴 네트워크 파라미터 데이터(액티베이션들, 웨이트들, 바이어스들 등), 훈련 데이터를 획득한다.
1202 단계에서, 프로세서(110)는 커널들의 각 채널 별 웨이트들의 통계량, 피처 맵들의 각 채널 별 액티베이션들의 통계량 등에 관한 통계적 분포의 분석 결과를 출력한다.
1203 단계에서, 프로세서(110)는 입력으로서, 채널 별 프랙션 길이를 결정하여 파라미터들을 양자화하기 위하여, 1202 단계에서 획득된 출력 결과를 획득한다.
1204 단계에서, 프로세서(110)는 통계적 분포의 분석 결과에 기초하여, 채널 별 웨이트의 프랙션 길이를 계산하고, 이에 따라 부동 소수점 타입의 웨이트를 고정 소수점 타입으로 변환한다. 또한, 프로세서(110)는 통계적 분포의 분석 결과에 기초하여, 채널 별 액티베이션의 프랙션 길이를 계산하고, 이에 따라 부동 소수점 타입의 액티베이션을 고정 소수점 타입으로 변환한다.
1205 단계에서, 프로세서(110)는 각 채널 별로 MAC 연산을 수행하여 각 채널 별 프랙션 길이들을 획득한다.
1206 단계에서, 프로세서(110)는 각 채널 별 MAC 연산에 따른 프랙션 길이들 중 최대 프랙션 길이를 Add 연산의 결과에 대응되는 프랙션 길이로 결정한다. 만약, 프랙션 길이의 상한이 미리 정의되어 있는 경우에는, 최대 프랙션 길이와 미리 정의된 프랙션 길이의 상한 중에서 보다 작은 값으로, Add 연산의 결과에 대응되는 프랙션 길이를 결정한다.
1207 단계에서, 프로세서(110)는 1206 단계에서 결정된 프랙션 길이를 바이어스의 프랙션 길이로 결정한다.
1208 단계에서, 프로세서(110)는 바이어스의 결정된 프랙션 길이에 따라 각 채널 별 프랙션 길이들을 각각 비트-쉬프팅한다.
1209 단계에서, 프로세서(110)는 출력 피처 맵(OFM)에 할당된 비트 수에 따라 바이어스의 프랙션 길이를 비트-쉬프팅한다. 이에 따라, 출력 액티베이션의 프랙션 길이가 결정된다.
1210 단계에서, 프로세서(110)는 입력 피처 맵(IFM)의 각 채널 별 프랙션 길이, 출력 피처 맵(IFM)의 각 채널 별 프랙션 길이, 커널의 각 채널 별 프랙션 길이, 바이어스의 프랙션 길이, 1208 단계에서의 비트-쉬프팅 횟수, 1209 단계에서의 비트-쉬프팅 횟수 등을 출력한다.
1211 단계에서, 프로세서(110)는 커널의 각 채널 별 프랙션 길이 및 바이어스의 프랙션 길이를 획득한다.
1212 단계에서, 프로세서(110)는 뉴럴 네트워크의 파라미터들을 고정 소수점 타입으로 양자화하고, 고정 소수점 타입으로 양자화된 파라미터들(웨이트들, 바이어스들)을 출력한다.
1213 단계 및 1214에서, 프로세서(110)는 양자화된 뉴럴 네트워크의 정확도를 검증한다(test).
도 13은 다른 실시예에 따라 고정 소수점 타입의 일부 파라미터들의 프랙션 길이를 결정하는 것을 설명하기 위한 도면이다.
도 3의 프로세서(110)는 도 8 내지 도 10에서 설명된 뉴럴 네트워크의 파라미터들의 고정 소수점 표현의 결정 이후에 바이어스(1310)의 프랙션 길이 및 웨이트(1330)의 프랙션 길이를 결정할 수 있다. 한편, 도 13에 따른 프랙션 길이의 결정 방식은 도 11의 비트-쉬프터들(1103, 1104)의 비트 쉬프팅이 요구되지 않으므로, 도 11 및 도 12에서 앞서 설명된 방식과 차이가 있다.
도 13에서 제 1 MAC 연산(1301) 및 제 2 MAC 연산(1302)에 따라 제 1 고정 소수점 표현 Q37.10과 제 2 고정 소수점 표현 Q35.12이 획득되기 까지의 처리 과정은, 도 11에서 설명된 바와 같다.
도 13을 참고하면, 도 11과 달리, 프로세서(110)는 제 1 프랙션 길이 및 제 2 프랙션 길이 중에서 최소 프랙션 길이 10을, Add 연산(1303)의 결과에 대응하는 바이어스(1310)의 프랙션 길이로 결정한다. 이에 따라, 프로세서(110)는 기존 제 2 고정 소수점 표현 Q35.12은 새로운 제 2 고정 소수점 표현(1320) Q37.10으로 조정되는 것으로 결정하고, 기존 제 2 웨이트 W12의 기존 고정 소수점 표현 Q7.8은 새로운 고정 소수점 표현(1330) Q9.6으로 조정되는 것으로 결정한다. 즉, 바이어스(1310)의 결정된 프랙션 길이에 대한 정보가 역전파되고, 이에 따라 웨이트(1330)는 새로운 프랙션 길이로 양자화된다.
비트-쉬프팅(1304)은 도 11에서 설명된 바와 동일하게 수행된다.
도 13의 다른 실시예에 따르면, 프로세서(110)에 의해 결정된 바이어스의 프랙션 길이는 MAC 연산의 결과로 구한 고정 소수점 표현들의 프랙션 길이들 중 최소 프랙션 길이에 대응한다.
결국, 프로세서(110)는 제 1 웨이트 w11의 고정 소수점 표현(Q11.4)과 프랙션 길이(4), 제 2 웨이트(1330) w12의 고정 소수점 표현(Q9.6)과 프랙션 길이(6), 바이어스(1310)의 고정 소수점 표현(Q37.10)과 프랙션 길이(10), 및 비트-쉬프터의 비트-쉬프팅의 정도(4비트들 비트-쉬프팅(1304))에 대한 정보를 포함하는, 양자화된 뉴럴 네트워크의 데이터를 생성한다.
한편, 도 13에서는 2개의 채널들만이 도시되었으나, 보다 많은 채널들이 존재하는 경우에 대해서도 도 13의 방식이 적용될 수 있다.
도 14는 도 13의 방식을 이용하는 뉴럴 네트워크 파라미터의 양자화 알고리즘을 도시한 도면이다.
도 14를 참고하면, 양자화 알고리즘(1400)에서는 바이어스의 프랙션 길이를 결정하기 위해 도 13에서 설명된 방식이 이용될 수 있다.
1401 단계 내지 1405 단계는 도 12의 1201 단계 내지 1205 단계에 대한 설명과 유사하게 수행된다.
1406 단계에서, 프로세서(110)는 각 채널 별 MAC 연산에 따른 프랙션 길이들 중 최소 프랙션 길이를 Add 연산의 결과에 대응되는 프랙션 길이로 결정한다.
1407 단계에서, 프로세서(110)는 1406 단계에서 결정된 프랙션 길이를 바이어스의 프랙션 길이로 결정한다.
1408 단계에서, 프로세서(110)는 바이어스의 결정된 프랙션 길이에 따라 각 채널 별 웨이트들의 프랙션 길이들을 각각 조정함으로써, 각 채널 별 웨이트들의 프랙션 길이들을 업데이트한다.
1409 단계에서, 프로세서(110)는 출력 피처 맵(OFM)에 할당된 비트 수에 따라 바이어스의 프랙션 길이를 비트-쉬프팅한다. 이에 따라, 출력 액티베이션의 프랙션 길이가 결정된다.
1410 단계에서, 프로세서(110)는 입력 피처 맵(IFM)의 각 채널 별 프랙션 길이, 출력 피처 맵(IFM)의 각 채널 별 프랙션 길이, 커널의 각 채널 별 프랙션 길이, 바이어스의 프랙션 길이, 1409 단계에서의 비트-쉬프팅 횟수 등을 출력한다.
1411 단계 내지 1414 단계는 도 12의 1211 단계 내지 1214 단계에 대한 설명과 유사하게 수행된다.
한편, 프로세서(110)는 도 11 및 도 12의 알고리즘 방식 및 도 13 및 도 14의 알고리즘 방식 중 어느 것을 취사 선택하여 뉴럴 네트워크의 양자화를 수행할 수 있다. 예를 들어, 프로세서(110)의 알고리즘 선택 기준은, 양자화된 뉴럴 네트워크가 채용될 디바이스(하드웨어 가속기)의 처리 성능, 하드웨어 아키텍쳐 등에 따라 달라질 수 있으나, 이에 제한되는 것은 아니다.
도 15는 도 7에서 설명된 레이어 별 양자화를 설명하기 위한 도면이다.
도 15를 참고하면, 도 7에서 설명된 바와 같이 레이어 별 양자화에 의해 레이어에 포함된 모든 채널들의 입력 액티베이션들 및 웨이트들은 모두 동일한 고정 소수점 표현 Q11.4로 양자화될 수 있다. 이에 따라, 바이어스(1510)의 고정 소수점 표현은 Q39.8이고 프랙션 길이는 8이다. 즉, 바이어스(1510)의 프랙션 길이는, 앞서 도 11 내지 도 14에서 설명된 두 가지 방식들로부터 결정된 바이어스(1110) 및 바이어스 (1310)의 프랙션 길이들 보다는 짧다. 따라서, 레이어 별 양자화보다 채널 별 양자화가 보다 정확하고 정밀한 파라미터 값을 갖는 뉴럴 네트워크 양자화임을 알 수 있다.
도 16은 일 실시예에 따라 양자화된 뉴럴 네트워크를 재훈련(retrain)하는 것을 설명하기 위한 도면이다.
도 16을 참고하면, 도 3의 프로세서(110)는 부동 소수점 타입의 미리 훈련된 뉴럴 네트워크(1610)를 고정 소수점 타입의 뉴럴 네트워크(1620)로 양자화할 수 있다. 나아가서, 프로세서(110)는 양자화된 뉴럴 네트워크(1620)의 정확도를 보다 높이고자 새로운 또는 기존의 훈련/테스트 세트 데이터를 이용하여 재훈련할 수 있다. 이와 같은 재훈련을 통해 양자화된 뉴럴 네트워크(1620)의 고정 소수점 타입의 파라미터들이 미세 조정(fine-tune)됨에 따라 프로세서(110)는 정확도가 증가한 재훈련된 뉴럴 네트워크(1630)를 획득할 수 있다. 이때, 프로세서(110)는 미세 조정을 위해 바이어스 및 채널 별 웨이트에 대해 결정된 프랙션 길이들을 제약조건(constraint)으로 하여 양자화된 뉴럴 네트워크(1620)를 재훈련할 수 있다. 뉴럴 네트워크 양자화 장치(도 3의 10)는 재훈련된 뉴럴 네트워크(1630)를 뉴럴 네트워크 전용 하드웨어 가속기로 전달할 수 있다.
도 17은 레이어 별 양자화와 채널 별 양자화의 정확도를 비교한 시뮬레이션 결과를 도시한 도면이다.
도 17을 참고하면, 할당된 비트 폭이 많을수록 레이어 별 양자화와 채널 별 양자화의 정확도는 비슷한 값으로 수렴할 수 있다. 하지만, 할당된 비트 폭이 적을수록 레이어 별 양자화와 채널 별 양자화의 정확도는 차이가 두드러지는 것을 알 수 있다. 구체적으로, 비트 폭이 적게 할당된 경우들에서는, 채널 별 양자화의 정확도는 레이어 별 양자화의 정확도보다 월등히 높게 나타난다. 뉴럴 네트워크 전용 하드웨어 가속기의 경우 저성능 및 저전력의 하드웨어로 구현되기 때문에 적은 비트 폭을 이용할 수 밖에 없을 수 있다. 따라서, 하드웨어 가속기를 위하여 채널 별 양자화로 뉴럴 네트워크를 양자화하는 것이 보다 바람직함을 알 수 있다. 한편, 채널 별 양자화 및 레이어 별 양자화 모두, 분포 범위로서 실제 최대 값에 기초한 양자화보다는 최적의 델타 등 양자화 에러를 최소화하는 방식의 양자화 레벨을 이용한 양자화가 보다 높은 정확도를 나타냄을 알 수 있다.
도 18은 재훈련에 의한 양자화된 뉴럴 네트워크의 정확도 변화에 대한 시뮬레이션 결과를 도시한 도면이다.
도 18을 참고하면, 고정 소수점 타입으로 양자화된 뉴럴 네트워크라 할지라도, 재훈련을 통해 정확도가 부동 소수점 타입의 뉴럴 네트워크보다 향상될 수 있음을 알 수 있다.
도 19는 일 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 19를 참고하면, 전자 시스템(1900)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(1900)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 전자 시스템(1900)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(1900)은 프로세서(1910), RAM(1920), 뉴럴 네트워크 장치(1930), 메모리(1940), 센서 모듈(1950) 및 통신 모듈(1960)을 포함할 수 있다. 전자 시스템(1900)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 전자 시스템(1900)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다. 뉴럴 네트워크 장치(1930)는 앞서 설명된 뉴럴 네트워크 전용 하드웨어 가속기 자체 또는 이를 포함하는 장치일 수 있다.
프로세서(1910)는 전자 시스템(1900)의 전반적인 동작을 제어한다. 프로세서(1910)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(1910)는 메모리(1940)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, 프로세서(1910)는 메모리(1940)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(1930)의 기능을 제어할 수 있다. 프로세서(1910)는 CPU, GPU, AP 등으로 구현될 수 있다.
RAM(1920)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(1940)에 저장된 프로그램들 및/또는 데이터는 프로세서(1910)의 제어 또는 부팅 코드에 따라 RAM(1920)에 일시적으로 저장될 수 있다. RAM(1920)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(1930)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(1930)는 앞서 설명된 고정 소수점 타입으로 양자화된 뉴럴 네트워크를 이용하여 처리를 수행하는 하드웨어로서, 앞서 설명된 뉴럴 네트워크 전용 하드웨어 가속기에 해당될 수 있다.
정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(1930)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(1900)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(1930)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
메모리(1940)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(1940)는 뉴럴 네트워크 장치(1930)의 연산 수행 과정에서 생성되는 중간 결과들, 예컨대 출력 피처 맵을 출력 피처 리스트 또는 출력 피처 매트릭스 형태로 저장할 수 있다. 실시예에 있어서, 메모리(1940)에는 압축된 출력 피처 맵이 저장될 수 있다. 또한, 메모리(1940)는 뉴럴 네트워크 장치(1930)에서 이용되는 양자화된 뉴럴 네트워크 데이터, 예컨대, 파라미터들, 웨이트 맵 또는 웨이트 리스트를 저장할 수 있다.
메모리(1940)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(1940)는 휘발성 메모리 또는 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리(1940)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(1950)은 전자 시스템(1900)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(1950)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(1950)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(1950)은 변환된 데이터를 뉴럴 네트워크 장치(1930)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(1950)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(1930)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(1950)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(1930)에 제공할 수 있다.
통신 모듈(1960)은 외부 장치와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(1960)은 유선 근거리통신망(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)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
실시 예에 있어서, 통신 모듈(1960)은 외부로부터 양자화된 뉴럴 네트워크에 관한 데이터를 수신할 수 있다. 여기서, 외부는 도 3의 뉴럴 네트워크 양자화 장치(10)와 같이 방대한 양의 데이터를 기초로 훈련을 수행하고, 훈련된 뉴럴 네트워크를 고정 소수점 타입으로 양자화하고, 양자화된 뉴럴 네트워크 데이터를 전자 시스템(1900)에 제공하는 디바이스일 수 있다. 수신된 양자화된 뉴럴 네트워크 데이터는 메모리(1940)에 저장될 수 있다.
도 20은 일 실시예에 따른 뉴럴 네트워크의 파라미터들을 양자화하는 방법의 흐름도이다. 도 20에 도시된, 뉴럴 네트워크의 파라미터들의 양자화 방법은, 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 20의 방법에도 적용될 수 있다.
2010 단계에서, 프로세서(110)는 부동 소수점들을 이용하여 미리 훈련된 뉴럴 네트워크의 데이터로부터, 피처 맵들 및 커널들 각각에 포함된 각 채널에서 이용된 부동 소수점 타입의 파라미터 값들에 대한 채널 별 통계적 분포를 분석한다.
2020 단계에서, 프로세서(110)는 채널 별 통계적 분포에 기초하여, 파라미터 값들의 분포 범위를 통계적으로 커버하는 채널 별 파라미터의 고정 소수점 표현을 결정한다.
2030 단계에서, 프로세서(110)는 채널 별 고정 소수점 표현의 파라미터로 컨볼루션 연산을 수행한 결과에 기초하여 바이어스 및 채널 별 웨이트의 프랙션 길이들을 결정한다.
2040 단계에서, 프로세서(110)는 결정된 프랙션 길이들의 바이어스 및 채널 별 웨이트를 갖는, 고정 소수점 타입의 양자화된 뉴럴 네트워크를 생성한다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 본 발명의 실시예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 뉴럴 네트워크의 파라미터들을 양자화하는 방법에 있어서,
    부동 소수점들을 이용하여 미리 훈련된 뉴럴 네트워크의 데이터로부터, 피처 맵들 및 커널들 각각에 포함된 각 채널에서 이용된 부동 소수점 타입의 파라미터 값들에 대한 채널 별 통계적 분포를 분석하는 단계;
    상기 채널 별 통계적 분포에 기초하여, 상기 파라미터 값들의 분포 범위를 통계적으로 커버하는 상기 채널 별 파라미터의 고정 소수점 표현을 결정하는 단계;
    상기 채널 별 고정 소수점 표현의 파라미터로 컨볼루션 연산을 수행한 결과에 기초하여 바이어스 및 상기 채널 별 웨이트의 프랙션 길이들을 결정하는 단계; 및
    상기 결정된 프랙션 길이들의 상기 바이어스 및 상기 채널 별 웨이트를 갖는, 고정 소수점 타입의 양자화된 뉴럴 네트워크를 생성하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 분석하는 단계는
    상기 뉴럴 네트워크가 미리 훈련되는 동안 상기 각 채널에서 이용되었던 상기 부동 소수점 타입의 액티베이션들, 웨이트들 및 바이어스들의 상기 파라미터 값들에 대한 상기 채널 별 통계량을 구함으로써, 상기 통계적 분포를 분석하는, 방법.
  3. 제 1 항에 있어서,
    상기 컨볼루션 연산은
    MAC(multiply-accumulate) 연산 및 Add 연산을 수행하는, 복수의 채널들 간의 부분 합(partial sum) 연산을 포함하고,
    상기 프랙션 길이들을 결정하는 단계는
    상기 결정된 고정 소수점 표현에 의한 입력 액티베이션들의 프랙션 길이들 및 웨이트들의 프랙션 길이들에 기초하여, 상기 부분 합 연산의 결과에 대응하는 상기 바이어스의 상기 프랙션 길이를 결정하는, 방법.
  4. 제 3 항에 있어서,
    상기 바이어스의 상기 결정된 프랙션 길이는
    상기 MAC 연산의 결과로 구한 고정 소수점 표현들의 프랙션 길이들 중 최대 프랙션 길이에 기초하여 결정되는, 방법.
  5. 제 4 항에 있어서,
    상기 부분 합 연산은
    제 1 채널의 제 1 입력 액티베이션 및 제 1 웨이트에 대한 제 1 MAC 연산, 제 2 채널의 제 2 입력 액티베이션 및 제 2 웨이트에 대한 제 2 MAC 연산, 및 상기 제 1 MAC 연산의 결과와 상기 제 2 MAC 연산의 결과에 대한 Add 연산을 포함하고,
    상기 프랙션 길이들을 결정하는 단계는
    상기 제 1 MAC 연산의 결과에 대응하는 제 1 고정 소수점 표현의 제 1 프랙션 길이 및 상기 제 2 MAC 연산의 결과에 대응하는 제 2 고정 소수점 표현의 제 2 프랙션 길이를 획득하는 단계; 및
    상기 제 1 프랙션 길이 및 상기 제 2 프랙션 길이 중에서 최대 프랙션 길이에 기초하여, 상기 Add 연산의 결과에 대응하는 상기 바이어스의 상기 프랙션 길이를 결정하는 단계를 포함하는, 방법.
  6. 제 5 항에 있어서,
    상기 프랙션 길이들을 결정하는 단계는
    상기 제 1 고정 소수점 표현 및 상기 제 2 고정 소수점 표현 중에서 보다 작은 프랙션 길이를 갖는 고정 소수점 표현의 프랙션 길이를, 상기 바이어스의 상기 결정된 프랙션 길이에 기초하여 비트-쉬프팅하는 단계를 더 포함하고,
    상기 양자화된 뉴럴 네트워크는, 상기 비트-쉬프팅의 정도에 대한 정보를 포함하는, 방법.
  7. 제 3 항에 있어서,
    상기 바이어스의 상기 결정된 프랙션 길이는 상기 MAC 연산의 결과로 구한 고정 소수점 표현들의 프랙션 길이들 중 최소 프랙션 길이에 대응하고,
    상기 프랙션 길이들을 결정하는 단계는
    상기 고정 소수점 표현들의 상기 프랙션 길이들의 차이만큼 상기 웨이트들 중 적어도 하나의 프랙션 길이를 감소시켜 상기 채널 별 웨이트의 상기 프랙션 길이들을 결정하는, 방법.
  8. 제 7 항에 있어서,
    상기 부분 합 연산은
    제 1 채널의 제 1 입력 액티베이션 및 제 1 웨이트에 대한 제 1 MAC 연산, 제 2 채널의 제 2 입력 액티베이션 및 제 2 웨이트에 대한 제 2 MAC 연산, 및 상기 제 1 MAC 연산의 결과와 상기 제 2 MAC 연산의 결과에 대한 Add 연산을 포함하고,
    상기 프랙션 길이들을 결정하는 단계는
    상기 제 1 MAC 연산의 결과에 대응하는 제 1 고정 소수점 표현의 제 1 프랙션 길이 및 상기 제 2 MAC 연산의 결과에 대응하는 제 2 고정 소수점 표현의 제 2 프랙션 길이를 획득하는 단계; 및
    상기 제 1 프랙션 길이 및 상기 제 2 프랙션 길이 중에서 최소 프랙션 길이를, 상기 Add 연산의 결과에 대응하는 상기 바이어스의 상기 프랙션 길이로 결정하는 단계; 및
    상기 제 1 MAC 연산 및 상기 제 2 MAC 연산 중에서 상기 최소 프랙션 길이를 갖는 고정 소수점 표현을 구한 MAC 연산에 입력된 웨이트의 프랙션 길이를, 상기 제 1 프랙션 길이 및 상기 제 2 프랙션 길이의 차이만큼 감소시켜 조정하는 단계를 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 채널 별 통계적 분포는
    정규 분포 및 라플라스 분포 중 어느 하나로 근사화된 분포에 대응하고,
    상기 고정 소수점 표현을 결정하는 단계는
    상기 채널 별 통계적 분포로부터 획득된 상기 각 채널 별 상기 파라미터 값들의 평균, 분산, 표준편차, 최대값, 최소값 중 적어도 하나를 이용하여 정의된 상기 채널 별 프랙션 길이에 기초하여 상기 고정 소수점 표현을 결정하는, 방법.
  10. 제 1 항에 있어서,
    상기 프랙션 길이들의 상기 결정이 완료된 이후에, 미세 조정(fine-tuning)을 위해 상기 바이어스 및 상기 채널 별 웨이트의 상기 결정된 프랙션 길이들을 제약조건(constraint)으로 하여 상기 양자화된 뉴럴 네트워크를 재훈련(retraining)하는 단계를 더 포함하는, 방법.
  11. 적어도 하나의 프로그램이 저장된 메모리; 및
    상기 적어도 하나의 프로그램을 실행함으로써 뉴럴 네트워크의 파라미터들을 양자화하는 프로세서를 포함하고,
    상기 프로세서는,
    부동 소수점들을 이용하여 미리 훈련된 뉴럴 네트워크의 데이터로부터, 피처 맵들 및 커널들 각각에 포함된 각 채널에서 이용된 부동 소수점 타입의 파라미터 값들에 대한 채널 별 통계적 분포를 분석하고,
    상기 채널 별 통계적 분포에 기초하여, 상기 파라미터 값들의 분포 범위를 통계적으로 커버하는 상기 채널 별 파라미터의 고정 소수점 표현을 결정하고,
    상기 채널 별 고정 소수점 표현의 파라미터로 컨볼루션 연산을 수행한 결과에 기초하여 바이어스 및 상기 채널 별 웨이트의 프랙션 길이들을 결정하고,
    상기 결정된 프랙션 길이들의 상기 바이어스 및 상기 채널 별 웨이트를 갖는, 고정 소수점 타입의 양자화된 뉴럴 네트워크를 생성하는, 장치.
  12. 제 11 항에 있어서,
    상기 프로세서는
    상기 뉴럴 네트워크가 미리 훈련되는 동안 상기 각 채널에서 이용되었던 상기 부동 소수점 타입의 액티베이션들, 웨이트들 및 바이어스들의 상기 파라미터 값들에 대한 상기 채널 별 통계량을 구함으로써, 상기 통계적 분포를 분석하는, 장치.
  13. 제 11 항에 있어서,
    상기 컨볼루션 연산은
    MAC(multiply-accumulate) 연산 및 Add 연산을 수행하는, 복수의 채널들 간의 부분 합(partial sum) 연산을 포함하고,
    상기 프로세서는
    상기 결정된 고정 소수점 표현에 의한 입력 액티베이션들의 프랙션 길이들 및 웨이트들의 프랙션 길이들에 기초하여, 상기 부분 합 연산의 결과에 대응하는 상기 바이어스의 상기 프랙션 길이를 결정하는, 장치.
  14. 제 13 항에 있어서,
    상기 바이어스의 상기 결정된 프랙션 길이는
    상기 MAC 연산의 결과로 구한 고정 소수점 표현들의 프랙션 길이들 중 최대 프랙션 길이에 기초하여 결정되는, 장치.
  15. 제 14 항에 있어서,
    상기 부분 합 연산은
    제 1 채널의 제 1 입력 액티베이션 및 제 1 웨이트에 대한 제 1 MAC 연산, 제 2 채널의 제 2 입력 액티베이션 및 제 2 웨이트에 대한 제 2 MAC 연산, 및 상기 제 1 MAC 연산의 결과와 상기 제 2 MAC 연산의 결과에 대한 Add 연산을 포함하고,
    상기 프로세서는
    상기 제 1 MAC 연산의 결과에 대응하는 제 1 고정 소수점 표현의 제 1 프랙션 길이 및 상기 제 2 MAC 연산의 결과에 대응하는 제 2 고정 소수점 표현의 제 2 프랙션 길이를 획득하고,
    상기 제 1 프랙션 길이 및 상기 제 2 프랙션 길이 중에서 최대 프랙션 길이에 기초하여, 상기 Add 연산의 결과에 대응하는 상기 바이어스의 상기 프랙션 길이를 결정하는, 장치.
  16. 제 15 항에 있어서,
    상기 프로세서는
    상기 제 1 고정 소수점 표현 및 상기 제 2 고정 소수점 표현 중에서 보다 작은 프랙션 길이를 갖는 고정 소수점 표현의 프랙션 길이를, 상기 바이어스의 상기 결정된 프랙션 길이에 기초하여 비트-쉬프팅하는, 장치.
  17. 제 13 항에 있어서,
    상기 바이어스의 상기 결정된 프랙션 길이는 상기 MAC 연산의 결과로 구한 고정 소수점 표현들의 프랙션 길이들 중 최소 프랙션 길이에 대응하고,
    상기 프로세서는
    상기 고정 소수점 표현들의 상기 프랙션 길이들의 차이만큼 상기 웨이트들 중 적어도 하나의 프랙션 길이를 감소시켜 상기 채널 별 웨이트의 상기 프랙션 길이들을 결정하는, 장치.
  18. 제 17 항에 있어서,
    상기 부분 합 연산은
    제 1 채널의 제 1 입력 액티베이션 및 제 1 웨이트에 대한 제 1 MAC 연산, 제 2 채널의 제 2 입력 액티베이션 및 제 2 웨이트에 대한 제 2 MAC 연산, 및 상기 제 1 MAC 연산의 결과와 상기 제 2 MAC 연산의 결과에 대한 Add 연산을 포함하고,
    상기 프로세서는
    상기 제 1 MAC 연산의 결과에 대응하는 제 1 고정 소수점 표현의 제 1 프랙션 길이 및 상기 제 2 MAC 연산의 결과에 대응하는 제 2 고정 소수점 표현의 제 2 프랙션 길이를 획득하고,
    상기 제 1 프랙션 길이 및 상기 제 2 프랙션 길이 중에서 최소 프랙션 길이를, 상기 Add 연산의 결과에 대응하는 상기 바이어스의 상기 프랙션 길이로 결정하고,
    상기 제 1 MAC 연산 및 상기 제 2 MAC 연산 중에서 상기 최소 프랙션 길이를 갖는 고정 소수점 표현을 구한 MAC 연산에 입력된 웨이트의 프랙션 길이를, 상기 제 1 프랙션 길이 및 상기 제 2 프랙션 길이의 차이만큼 감소시켜 조정하는, 장치.
  19. 제 1 항에 있어서,
    상기 채널 별 통계적 분포는
    정규 분포 및 라플라스 분포 중 어느 하나로 근사화된 분포에 대응하고,
    상기 프로세서는
    상기 채널 별 통계적 분포로부터 획득된 상기 각 채널 별 상기 파라미터 값들의 평균, 분산, 표준편차, 최대값, 최소값 중 적어도 하나를 이용하여 정의된 상기 채널 별 프랙션 길이에 기초하여 상기 고정 소수점 표현을 결정하는, 장치.
  20. 제 11 항에 있어서,
    상기 프로세서는
    상기 프랙션 길이들의 상기 결정이 완료된 이후에, 미세 조정(fine-tuning)을 위해 상기 바이어스 및 상기 채널 별 웨이트의 상기 결정된 프랙션 길이들을 제약조건(constraint)으로 하여 상기 양자화된 뉴럴 네트워크를 재훈련(retraining)하는, 장치.
KR1020170098999A 2017-08-04 2017-08-04 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치 KR102601604B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020170098999A KR102601604B1 (ko) 2017-08-04 2017-08-04 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
CN201810868446.4A CN109389219B (zh) 2017-08-04 2018-08-01 用于对神经网络的参数进行量化的方法和装置
US16/051,788 US11588496B2 (en) 2017-08-04 2018-08-01 Method and apparatus for generating fixed-point quantized neural network
JP2018144829A JP7072464B2 (ja) 2017-08-04 2018-08-01 固定小数点量子化ニューラルネットワークのための方法及び装置
EP18187235.9A EP3438890B1 (en) 2017-08-04 2018-08-03 Method and apparatus for generating fixed-point quantized neural network
US18/084,948 US20230117033A1 (en) 2017-08-04 2022-12-20 Method and apparatus for generating fixed-point quantized neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170098999A KR102601604B1 (ko) 2017-08-04 2017-08-04 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20190014900A true KR20190014900A (ko) 2019-02-13
KR102601604B1 KR102601604B1 (ko) 2023-11-13

Family

ID=63407020

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170098999A KR102601604B1 (ko) 2017-08-04 2017-08-04 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치

Country Status (5)

Country Link
US (2) US11588496B2 (ko)
EP (1) EP3438890B1 (ko)
JP (1) JP7072464B2 (ko)
KR (1) KR102601604B1 (ko)
CN (1) CN109389219B (ko)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111079767A (zh) * 2019-12-22 2020-04-28 浪潮电子信息产业股份有限公司 一种用于分割图像的神经网络模型及其图像分割方法
KR20200093404A (ko) * 2019-01-28 2020-08-05 포항공과대학교 산학협력단 신경망 가속기 및 그것의 동작 방법
WO2020175862A1 (ko) * 2019-02-25 2020-09-03 주식회사 딥엑스 인공신경망의 비트 양자화 방법 및 시스템
KR20200104201A (ko) * 2019-02-25 2020-09-03 주식회사 딥엑스 인공신경망의 비트 양자화 방법 및 시스템
KR20210011462A (ko) * 2019-06-12 2021-02-01 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 신경망의 양자화 파라미터 확정방법 및 관련제품
KR20210076554A (ko) * 2019-12-16 2021-06-24 경희대학교 산학협력단 깊은 신경망 내에서의 강화된 배치 정규화를 위한 전자 장치, 방법, 및 컴퓨터 판독가능 매체
KR20220030108A (ko) * 2020-09-02 2022-03-10 네이버 주식회사 인공신경망 모델 학습 방법 및 시스템
WO2022108361A1 (ko) * 2020-11-18 2022-05-27 인텔렉추얼디스커버리 주식회사 신경망 특징맵 양자화 방법 및 장치
KR102466016B1 (ko) * 2021-06-21 2022-11-11 주식회사 크립토랩 동형 암호문을 처리하는 서버 장치 및 그 방법
US11513733B2 (en) 2020-01-07 2022-11-29 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
WO2023080292A1 (ko) * 2021-11-08 2023-05-11 한국전자기술연구원 딥러닝 가속장치를 위한 적응적 파라미터 생성 장치 및 방법
US11836603B2 (en) 2018-04-27 2023-12-05 Samsung Electronics Co., Ltd. Neural network method and apparatus with parameter quantization
US11847451B2 (en) 2020-01-07 2023-12-19 SK Hynix Inc. Processing-in-memory (PIM) device for implementing a quantization scheme
US11908887B2 (en) 2020-10-29 2024-02-20 Samsung Electronics Co., Ltd. Capacitor and semiconductor device including the same

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018176000A1 (en) 2017-03-23 2018-09-27 DeepScale, Inc. Data synthesis for autonomous control systems
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
KR20190044878A (ko) 2017-10-23 2019-05-02 삼성전자주식회사 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
US11195096B2 (en) * 2017-10-24 2021-12-07 International Business Machines Corporation Facilitating neural network efficiency
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11663002B2 (en) 2018-02-13 2023-05-30 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN116991226A (zh) 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
JP7056225B2 (ja) * 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
WO2019168084A1 (ja) * 2018-03-02 2019-09-06 日本電気株式会社 推論装置、畳み込み演算実行方法及びプログラム
US10769526B2 (en) * 2018-04-24 2020-09-08 Intel Corporation Machine learning accelerator architecture
US11215999B2 (en) 2018-06-20 2022-01-04 Tesla, Inc. Data pipeline and deep learning system for autonomous driving
KR102470893B1 (ko) 2018-06-27 2022-11-25 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템
US11361457B2 (en) 2018-07-20 2022-06-14 Tesla, Inc. Annotation cross-labeling for autonomous control systems
US11636333B2 (en) 2018-07-26 2023-04-25 Tesla, Inc. Optimizing neural network structures for embedded systems
US11562231B2 (en) 2018-09-03 2023-01-24 Tesla, Inc. Neural networks for embedded devices
US20200104715A1 (en) * 2018-09-28 2020-04-02 Xilinx, Inc. Training of neural networks by including implementation cost as an objective
CN113039556B (zh) 2018-10-11 2022-10-21 特斯拉公司 用于使用增广数据训练机器模型的系统和方法
US11196678B2 (en) 2018-10-25 2021-12-07 Tesla, Inc. QOS manager for system on a chip communications
US11922314B1 (en) * 2018-11-30 2024-03-05 Ansys, Inc. Systems and methods for building dynamic reduced order physical models
US11816585B2 (en) 2018-12-03 2023-11-14 Tesla, Inc. Machine learning models operating at different frequencies for autonomous vehicles
US11537811B2 (en) 2018-12-04 2022-12-27 Tesla, Inc. Enhanced object detection for autonomous vehicles based on field view
US11847567B1 (en) 2018-12-05 2023-12-19 Perceive Corporation Loss-aware replication of neural network layers
US20200193270A1 (en) * 2018-12-12 2020-06-18 Kneron (Taiwan) Co., Ltd. Low precision and coarse-to-fine dynamic fixed-point quantization design in convolution neural network
CN109754074A (zh) * 2018-12-29 2019-05-14 北京中科寒武纪科技有限公司 一种神经网络量化方法、装置以及相关产品
US11610117B2 (en) 2018-12-27 2023-03-21 Tesla, Inc. System and method for adapting a neural network model on a hardware platform
KR20200086581A (ko) 2019-01-09 2020-07-17 삼성전자주식회사 뉴럴 네트워크 양자화를 위한 방법 및 장치
US10997461B2 (en) 2019-02-01 2021-05-04 Tesla, Inc. Generating ground truth for machine learning from time series elements
EP3857453A1 (en) * 2019-02-08 2021-08-04 Huawei Technologies Co., Ltd. Neural network quantization method using multiple refined quantized kernels for constrained hardware deployment
US11567514B2 (en) 2019-02-11 2023-01-31 Tesla, Inc. Autonomous and user controlled vehicle summon to a target
US10956755B2 (en) 2019-02-19 2021-03-23 Tesla, Inc. Estimating object properties using visual image data
CN109800877B (zh) * 2019-02-20 2022-12-30 腾讯科技(深圳)有限公司 神经网络的参数调整方法、装置及设备
CN109978135B (zh) * 2019-03-04 2022-03-29 清华大学 基于量化的神经网络压缩方法及系统
CN110068302A (zh) * 2019-03-07 2019-07-30 中科院微电子研究所昆山分所 一种基于深度神经网络的车辆测距方法
CN111695671B (zh) * 2019-03-12 2023-08-08 北京地平线机器人技术研发有限公司 训练神经网络的方法及装置、电子设备
JP7188237B2 (ja) * 2019-03-29 2022-12-13 富士通株式会社 情報処理装置、情報処理方法、情報処理プログラム
US20200364552A1 (en) * 2019-05-13 2020-11-19 Baidu Usa Llc Quantization method of improving the model inference accuracy
US11625585B1 (en) 2019-05-21 2023-04-11 Perceive Corporation Compiler for optimizing filter sparsity for neural network implementation configuration
KR20200139909A (ko) 2019-06-05 2020-12-15 삼성전자주식회사 전자 장치 및 그의 연산 수행 방법
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
US11847568B2 (en) * 2019-07-30 2023-12-19 Perceive Corporation Quantizing neural networks using shifting and scaling
CN112446472A (zh) * 2019-08-28 2021-03-05 上海寒武纪信息科技有限公司 用于处理数据的方法、装置以及相关产品
JP7060718B2 (ja) * 2019-08-26 2022-04-26 上海寒武紀信息科技有限公司 データを処理するための方法、装置、及び関連製品
JP7342544B2 (ja) * 2019-09-09 2023-09-12 富士通株式会社 学習プログラムおよび学習方法
CN112488285A (zh) * 2019-09-12 2021-03-12 上海大学 基于神经网络权重数据分布特点的量化方法
JP2021044783A (ja) 2019-09-13 2021-03-18 富士通株式会社 情報処理装置,情報処理方法および情報処理プログラム
JP7322620B2 (ja) * 2019-09-13 2023-08-08 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
DE102019214308B4 (de) * 2019-09-19 2022-07-28 Robert Bosch Gmbh Schnelles quantisiertes Training trainierbarer Module
DE102020123155A1 (de) * 2019-09-24 2021-03-25 Samsung Electronics Co., Ltd. Quantisierungsverfahren eines künstlichen neuronalen Netzwerks und Operationsverfahren unter Verwendung eines künstlichen neuronalen Netzwerks
KR20210043295A (ko) * 2019-10-11 2021-04-21 삼성전자주식회사 뉴럴 네트워크의 데이터를 양자화하는 방법 및 장치
WO2021068249A1 (zh) * 2019-10-12 2021-04-15 深圳鲲云信息科技有限公司 运行时硬件模拟仿真方法、装置、设备及存储介质
CN110472700B (zh) * 2019-10-14 2020-06-16 深兰人工智能芯片研究院(江苏)有限公司 一种基于卷积神经网络的参数填充方法与装置
CN110991649A (zh) * 2019-10-28 2020-04-10 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) 深度学习模型搭建方法、装置、设备和存储介质
US11995555B1 (en) 2019-12-17 2024-05-28 Perceive Corporation Training a neural network with quantized weights
KR20210083935A (ko) * 2019-12-27 2021-07-07 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
WO2021144879A1 (ja) * 2020-01-15 2021-07-22 富士通株式会社 演算処理装置、演算処理プログラム及び演算処理方法
CN113222098A (zh) * 2020-01-21 2021-08-06 上海商汤智能科技有限公司 数据处理方法和相关产品
US11521007B2 (en) * 2020-02-17 2022-12-06 International Business Machines Corporation Accelerator resource utilization by neural networks
CN113298843B (zh) * 2020-02-24 2024-05-14 中科寒武纪科技股份有限公司 数据量化处理方法、装置、电子设备和存储介质
KR20220153001A (ko) * 2020-03-13 2022-11-17 인텔 코포레이션 심층 신경망들의 배치를 위한 저정밀도 추론 모델들의 최적화
CN113496274A (zh) * 2020-03-20 2021-10-12 郑桂忠 基于存储器内运算电路架构的量化方法及其系统
JP7357225B2 (ja) * 2020-03-27 2023-10-06 パナソニックIpマネジメント株式会社 推論実行方法
CN113673664B (zh) * 2020-05-14 2023-09-12 杭州海康威视数字技术股份有限公司 数据溢出检测方法、装置、设备及存储介质
CN113762499B (zh) * 2020-06-04 2024-04-02 合肥君正科技有限公司 一种分通道量化权重的方法
WO2022009433A1 (ja) * 2020-07-10 2022-01-13 富士通株式会社 情報処理装置,情報処理方法および情報処理プログラム
CN111950715A (zh) * 2020-08-24 2020-11-17 云知声智能科技股份有限公司 基于自适应动态移位的8位整型全量化推理方法及装置
CN112446491B (zh) * 2021-01-20 2024-03-15 上海齐感电子信息科技有限公司 神经网络模型实时自动量化方法及实时自动量化系统
WO2022183335A1 (zh) * 2021-03-01 2022-09-09 浙江大学 图像编解码方法、编码器、解码器及存储介质
CN113128116B (zh) * 2021-04-20 2023-09-26 上海科技大学 可用于轻量级神经网络的纯整型量化方法
WO2022239448A1 (ja) * 2021-05-10 2022-11-17 コニカミノルタ株式会社 量子化プログラム、情報処理装置、及び値域決定方法
CN114004347A (zh) 2021-08-30 2022-02-01 平头哥(上海)半导体技术有限公司 用于加速图神经网络属性访问的硬件加速器、系统和方法
US20230214639A1 (en) * 2021-12-31 2023-07-06 Sumant Milind Hanumante Fixed-point multiplication for network quantization
CN114677548B (zh) * 2022-05-26 2022-10-14 之江实验室 基于阻变存储器的神经网络图像分类系统及方法
CN116720563B (zh) * 2022-09-19 2024-03-29 荣耀终端有限公司 一种提升定点神经网络模型精度的方法、装置及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328646A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5257215A (en) * 1992-03-31 1993-10-26 Intel Corporation Floating point and integer number conversions in a floating point adder
DE102006001681B4 (de) * 2006-01-12 2008-07-10 Wismüller, Axel, Dipl.-Phys. Dr.med. Verfahren und Vorrichtung zur Darstellung mehrkanaliger Bilddaten
US10339447B2 (en) 2014-01-23 2019-07-02 Qualcomm Incorporated Configuring sparse neuronal networks
US20160026912A1 (en) 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
CN106575379B (zh) * 2014-09-09 2019-07-23 英特尔公司 用于神经网络的改进的定点整型实现方式
US20160328645A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
US10262259B2 (en) 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
US10417555B2 (en) * 2015-05-29 2019-09-17 Samsung Electronics Co., Ltd. Data-optimized neural network traversal
US20170076195A1 (en) * 2015-09-10 2017-03-16 Intel Corporation Distributed neural networks for scalable real-time analytics
JP6975140B2 (ja) * 2015-10-04 2021-12-01 アトムワイズ,インコーポレイテッド 畳み込みネットワークを空間データに適用するためのシステム及び方法
US10353860B2 (en) 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
CN108427990B (zh) * 2016-01-20 2020-05-22 中科寒武纪科技股份有限公司 神经网络计算系统和方法
KR102565273B1 (ko) * 2016-01-26 2023-08-09 삼성전자주식회사 뉴럴 네트워크에 기초한 인식 장치 및 뉴럴 네트워크의 학습 방법
CN105760933A (zh) 2016-02-18 2016-07-13 清华大学 卷积神经网络的逐层变精度定点化方法及装置
US11755913B2 (en) * 2016-03-11 2023-09-12 Telecom Italia S.P.A Convolutional neural networks, particularly for image analysis
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
US10491239B1 (en) * 2017-02-02 2019-11-26 Habana Labs Ltd. Large-scale computations using an adaptive numerical format
US9916531B1 (en) * 2017-06-22 2018-03-13 Intel Corporation Accumulator constrained quantization of convolutional neural networks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328646A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Sajid Anwar et. al., 'Fixed point optimization of deep convolutional neural networks for object recognition', 2015 IEEE Int. Conf. on acoustics, speech and signal processing (ICASSP), 2015.04.01. *
Takeda, R., et al.,'Acoustic model training based on node-wise weight boundary model increasing speed of discrete neural networks', IEEE Workshop on Automatic Speech Recognition and Understanding,2015 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836603B2 (en) 2018-04-27 2023-12-05 Samsung Electronics Co., Ltd. Neural network method and apparatus with parameter quantization
KR20200093404A (ko) * 2019-01-28 2020-08-05 포항공과대학교 산학협력단 신경망 가속기 및 그것의 동작 방법
WO2020175862A1 (ko) * 2019-02-25 2020-09-03 주식회사 딥엑스 인공신경망의 비트 양자화 방법 및 시스템
KR20200104201A (ko) * 2019-02-25 2020-09-03 주식회사 딥엑스 인공신경망의 비트 양자화 방법 및 시스템
KR20200106475A (ko) * 2019-02-25 2020-09-14 주식회사 딥엑스 인공신경망의 비트 양자화 방법 및 시스템
US11263513B2 (en) 2019-02-25 2022-03-01 Deepx Co., Ltd. Method and system for bit quantization of artificial neural network
KR20210011462A (ko) * 2019-06-12 2021-02-01 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 신경망의 양자화 파라미터 확정방법 및 관련제품
KR20210076554A (ko) * 2019-12-16 2021-06-24 경희대학교 산학협력단 깊은 신경망 내에서의 강화된 배치 정규화를 위한 전자 장치, 방법, 및 컴퓨터 판독가능 매체
CN111079767A (zh) * 2019-12-22 2020-04-28 浪潮电子信息产业股份有限公司 一种用于分割图像的神经网络模型及其图像分割方法
CN111079767B (zh) * 2019-12-22 2022-03-22 浪潮电子信息产业股份有限公司 一种用于分割图像的神经网络模型及其图像分割方法
US11513733B2 (en) 2020-01-07 2022-11-29 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
US11847451B2 (en) 2020-01-07 2023-12-19 SK Hynix Inc. Processing-in-memory (PIM) device for implementing a quantization scheme
KR20220030108A (ko) * 2020-09-02 2022-03-10 네이버 주식회사 인공신경망 모델 학습 방법 및 시스템
US11908887B2 (en) 2020-10-29 2024-02-20 Samsung Electronics Co., Ltd. Capacitor and semiconductor device including the same
WO2022108361A1 (ko) * 2020-11-18 2022-05-27 인텔렉추얼디스커버리 주식회사 신경망 특징맵 양자화 방법 및 장치
KR102466016B1 (ko) * 2021-06-21 2022-11-11 주식회사 크립토랩 동형 암호문을 처리하는 서버 장치 및 그 방법
WO2023080292A1 (ko) * 2021-11-08 2023-05-11 한국전자기술연구원 딥러닝 가속장치를 위한 적응적 파라미터 생성 장치 및 방법

Also Published As

Publication number Publication date
EP3438890A1 (en) 2019-02-06
KR102601604B1 (ko) 2023-11-13
CN109389219A (zh) 2019-02-26
US11588496B2 (en) 2023-02-21
US20190042948A1 (en) 2019-02-07
JP2019032833A (ja) 2019-02-28
US20230117033A1 (en) 2023-04-20
CN109389219B (zh) 2024-04-09
JP7072464B2 (ja) 2022-05-20
EP3438890B1 (en) 2024-01-10

Similar Documents

Publication Publication Date Title
KR20190014900A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
JP7329455B2 (ja) ニューラルネットワーク量子化のための方法及び装置
KR102589303B1 (ko) 고정 소수점 타입의 뉴럴 네트워크를 생성하는 방법 및 장치
KR20190125141A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
KR102526650B1 (ko) 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치
KR20210083935A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
KR20200070831A (ko) 인공 신경망을 압축하기 위한 장치 및 방법
US20200125947A1 (en) Method and apparatus for quantizing parameters of neural network
JP7329352B2 (ja) 分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置
CN116245142A (zh) 用于深度神经网络的混合精度量化的系统和方法
CN114358274A (zh) 训练用于图像识别的神经网络的方法和设备
KR20210121946A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
US20210133570A1 (en) Neural network method and apparatus
KR20210053791A (ko) 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치
KR102581471B1 (ko) 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
US11823029B2 (en) Method and apparatus with neural network processing
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치
KR20240035013A (ko) 뉴럴 네트워크의 파라미터 양자화 방법 및 장치

Legal Events

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