KR102659650B1 - 대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델 제공 방법 및 장치 - Google Patents

대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델 제공 방법 및 장치 Download PDF

Info

Publication number
KR102659650B1
KR102659650B1 KR1020240011534A KR20240011534A KR102659650B1 KR 102659650 B1 KR102659650 B1 KR 102659650B1 KR 1020240011534 A KR1020240011534 A KR 1020240011534A KR 20240011534 A KR20240011534 A KR 20240011534A KR 102659650 B1 KR102659650 B1 KR 102659650B1
Authority
KR
South Korea
Prior art keywords
layer
model
partial
neural network
accuracy
Prior art date
Application number
KR1020240011534A
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 KR1020240011534A priority Critical patent/KR102659650B1/ko
Application granted granted Critical
Publication of KR102659650B1 publication Critical patent/KR102659650B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

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)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Abstract

일 실시예에 따른 프로세서에 의해 수행되는 뉴럴 네트워크 모델의 양자화 방법은, 상기 뉴럴 네트워크 모델을, 입력 레이어에서 출력 레이어로의 데이터 전파 경로 상에서 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계, 상기 복수의 부분 모델들 중 상기 제1 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화(quantization)함으로써 양자화된 부분 모델을 생성하는 단계, 상기 양자화된 부분 모델 및 상기 복수의 부분 모델들의 다른 부분 모델들이 결합된 제1 결합 모델을 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제1 정확도를 측정하는 단계, 상기 뉴럴 네트워크 모델을, 상기 제1 레이어 보다 상기 입력 레이어에 더 가깝고 복수의 분기들이 연결되는 제2 레이어에 기초하여 복수의 다른 부분 모델들로 분리하는 단계, 상기 복수의 다른 부분 모델들 중 상기 제2 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화함으로써 양자화된 다른 부분 모델을 생성하는 단계 상기 양자화된 다른 부분 모델 및 상기 복수의 다른 부분 모델들 중 나머지 부분 모델들이 결합된 제2 결합 모델을 상기 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제2 정확도를 측정하는 단계, 및 상기 제1 정확도 및 상기 제2 정확도 중 상기 대상 프로세싱 유닛에 대한 입력된 목표 정확도에 더 근접한 정확도를 갖는 결합 모델을, 상기 대상 프로세싱 유닛에 대한 추천 모델로 제공하는 단계를 포함할 수 있다.

Description

대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델 제공 방법 및 장치{METHOD AND DEVICE FOR PROVIDING QUANTIZED NEURAL NETWORK MODEL SUITABLE FOR TARGET PROCESSING UNIT}
이하, 프로세싱 유닛의 스펙에 적합한 뉴럴 네트워크 모델을 제공하는 기술이 개시된다.
딥 러닝(deep learning)은 이미지 분류, 객체 인식, 음성 인식과 같은 다양한 분야에서 핵심 기술로 활용되고 있다. 이에 따라, CNN(convolution neural network), RNN(recurrent neural network), 트랜스포머(transformer) 기반의 뉴럴 네트워크 모델들이 고안되고 있다. 이러한 뉴럴 네트워크 모델들은 뉴럴 프로세싱 유닛(neural processing unit)(이하, 'NPU')과 같은 프로세싱 유닛에서 실행될 수 있다. 특히 NPU는 일반적으로 빠른 연산과 저전력을 위해 정확도를 일부 희생시키고, 32비트보다 낮은 수의 비트 수 자료형인 INT8로 연산을 수행할 수 있다. NPU는 INT8 연산을 수행함으로써, 실행되는 뉴럴 네트워크 모델의 크기를 줄일 수 있다. NPU를 통해 뉴럴 네트워크 모델을 트레이닝 하고 추론하기 위해서는, NPU의 성능 또는 스펙에 맞게 해당 뉴럴 네트워크 모델을 변환해야한다. 예를 들어, 뉴럴 네트워크 모델에서의 레이어 융합(layer fusion) 또는 양자화(quantization)를 통해 NPU에서의 실행 정확도를 향상하거나 실행 시간을 보다 단축할 수 있다. 다만, NPU의 스펙이 일정한 것은 아니므로, NPU를 사용하여 뉴럴 네트워크 모델을 실행하는 고객들로서는 사용하는 NPU에 맞게 뉴럴 네트워크 모델을 최적화할 수 있는 방법이 요구된다.
일 실시예에 따른 프로세서에 의해 수행되는 뉴럴 네트워크 모델의 양자화 방법은, 상기 뉴럴 네트워크 모델을, 입력 레이어에서 출력 레이어로의 데이터 전파 경로 상에서 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계, 상기 복수의 부분 모델들 중 상기 제1 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화(quantization)함으로써 양자화된 부분 모델을 생성하는 단계, 상기 양자화된 부분 모델 및 상기 복수의 부분 모델들의 다른 부분 모델들이 결합된 제1 결합 모델을 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제1 정확도를 측정하는 단계, 상기 뉴럴 네트워크 모델을, 상기 제1 레이어 보다 상기 입력 레이어에 더 가깝고 복수의 분기들이 연결되는 제2 레이어에 기초하여 복수의 다른 부분 모델들로 분리하는 단계, 상기 복수의 다른 부분 모델들 중 상기 제2 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화함으로써 양자화된 다른 부분 모델을 생성하는 단계 상기 양자화된 다른 부분 모델 및 상기 복수의 다른 부분 모델들 중 나머지 부분 모델들이 결합된 제2 결합 모델을 상기 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제2 정확도를 측정하는 단계, 및 상기 제1 정확도 및 상기 제2 정확도 중 상기 대상 프로세싱 유닛에 대한 입력된 목표 정확도에 더 근접한 정확도를 갖는 결합 모델을, 상기 대상 프로세싱 유닛에 대한 추천 모델로 제공하는 단계를 포함할 수 있다.
일 실시예에 따른 프로세서에 의해 수행되는 뉴럴 네트워크 모델의 양자화 방법은, 상기 뉴럴 네트워크 모델에 대응하는 양자화된 모델(quantized model)을 상기 대상 프로세싱 유닛을 이용하여 실행할 시 측정된 정확도 및 상기 목표 정확도 사이의 오차가 임계 오차 범위를 초과하는 경우, 상기 출력 레이어부터 상기 입력 레이어로 복수의 분기들이 연결되는 레이어를 탐색하는 단계를 더 포함할 수 있다.
상기 대상 프로세싱 유닛은, 뉴럴 프로세싱 유닛(neural processing unit, NPU)일 수 있다.
상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계는, 상기 복수의 분기들 중 제1 분기를 통해 상기 제1 레이어로부터 상기 입력 레이어로의 경로 상에 연결된 제1 서브 부분 모델을 분리하는 단계, 및 상기 복수의 분기들 중 제2 분기를 통해 상기 제1 레이어로부터 상기 입력 레이어로의 경로 상에 연결된 제2 서브 부분 모델을 분리하는 단계를 포함할 수 있다.
상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계는, 상기 대상 프로세싱 유닛에서 실행 가능한 미리 입력된 명령어들에 기초하여, 상기 미리 입력된 명령어들 및 상기 뉴럴 네트워크 모델의 각 레이어에서 수행되는 명령어들 간의 대응 여부로부터 상기 미리 입력된 명령어들에 대응하지 않는 명령어를 포함하는 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계를 포함할 수 있다.
상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계는, 상기 제1 레이어에 연결된 복수의 분기들 중 제1 분기가 상기 제1 레이어 및 이전 레이어와 연결되고, 제2 분기에서 상기 제1 레이어로부터 상기 입력 레이어로의 경로 상에 상기 이전 레이어가 위치하는 경우, 상기 제2 분기 내의 레이어에 대한 분리를 스킵(skip)하는 단계를 포함할 수 있다.
상기 제1 정확도를 측정하는 단계는. 상기 양자화된 부분 모델의 출력을 상기 다른 부분 모델들에 입력하도록, 상기 양자화된 부분 모델과 상기 다른 부분 모델들을 결합하는 단계를 포함할 수 있다.
상기 제1 정확도를 측정하는 단계는 상기 양자화된 부분 모델 및 상기 다른 부분 모델들을 앙상블(ensemble)하는 단계를 포함할 수 있다.
일 실시예에 따른 뉴럴 네트워크 모델 양자화를 위한 전자 장치는, 상기 뉴럴 네트워크 모델을 저장하는 메모리, 및 상기 뉴럴 네트워크 모델을, 입력 레이어에서 출력 레이어로의 데이터 전파 경로에 상에서 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하고, 상기 복수의 부분 모델들 중 상기 제1 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화(quantization)함으로써 양자화된 부분 모델을 생성하며, 상기 양자화된 부분 모델 및 상기 복수의 부분 모델들의 다른 부분 모델들이 결합된 제1 결합 모델을 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제1 정확도를 측정하고, 상기 뉴럴 네트워크 모델을 상기 제1 레이어 보다 상기 입력 레이어에 더 가깝고 복수의 분기들이 연결되는 제2 레이어에 기초하여 복수의 다른 부분 모델들로 분리하며, 상기 복수의 다른 부분 모델들 중 상기 제2 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화함으로써 양자화된 다른 부분 모델을 생성하고, 상기 양자화된 다른 부분 모델 및 상기 복수의 다른 부분 모델들 중 나머지 부분 모델들이 결합된 제2 결합 모델을 상기 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제2 정확도를 측정하며, 상기 제1 정확도 및 상기 제2 정확도 중 상기 대상 프로세싱 유닛에 대한 입력된 목표 정확도에 더 근접한 정확도를 갖는 결합 모델을 상기 대상 프로세싱 유닛에 대한 추천 모델로 제공하는 프로세서를 포함할 수 있다.
상기 프로세서는, 상기 뉴럴 네트워크 모델에 대응하는 양자화된 모델(quantized model)을 상기 대상 프로세싱 유닛을 이용하여 실행할 시 측정된 정확도 및 상기 목표 정확도 사이의 오차가 임계 오차 범위를 초과하는 경우, 상기 출력 레이어로부터 상기 입력 레이어로 복수의 분기들이 연결되는 레이어를 탐색할 수 있다.
상기 프로세서는, 상기 복수의 분기들 중 제1 분기를 통해 상기 제1 레이어로부터 입력 레이어로의 경로 상에 연결된 제1 서브 부분 모델을 분리하고, 상기 복수의 분기들 중 제2 분기를 통해 상기 제1 레이어로부터 상기 입력 레이어로의 경로 상에 연결된 제2 서브 부분 모델을 분리함으로써, 상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리할 수 있다.
상기 프로세서는, 상기 대상 프로세싱 유닛에서 실행 가능한 미리 입력된 명령어들에 기초하여, 상기 미리 입력된 명령어들 및 상기 뉴럴 네트워크 모델의 각 레이어에서 수행되는 명령어들 간의 대응 여부로부터 상기 미리 입력된 명령어들에 대응하지 않는 명령어를 포함하는 레이어에 기초하여 복수의 부분 모델들로 분리함으로써, 상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리할 수 있다.
상기 프로세서는, 상기 제1 레이어에 연결된 복수의 분기들 중 제1 분기가 상기 제1 레이어 및 이전 레이어와 연결되고, 제2 분기에서 상기 제1 레이어로부터 상기 입력 레이어로의 경로 상에 상기 이전 레이어가 위치하는 경우, 상기 제2 분기 내의 레이어에 대한 분리를 스킵(skip)함으로써, 상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리할 수 있다.
상기 프로세서는, 상기 양자화된 부분 모델의 출력을 상기 다른 부분 모델들에 입력하도록, 상기 양자화된 부분 모델과 상기 다른 부분 모델들을 결합함으로써, 상기 제1 정확도를 측정할 수 있다.
상기 프로세서는, 상기 양자화된 부분 모델 및 상기 다른 부분 모델들을 앙상블(ensemble)함으로써, 상기 제1 정확도를 측정할 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크 모델을 양자화하기 위한 전자 장치의 구조를 개략적으로 도시한다.
도 2a 내지 도 2c는 뉴럴 네트워크 모델을 대상 프로세싱 유닛을 통해 실행하는 경우 발생하는 문제를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 전자 장치가 대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델을 제공하는 방법을 설명하는 흐름도이다.
도 4는 일 실시예예 따른 전자 장치가 대칭적으로 구성된 뉴럴 네트워크 모델을 분리하는 방법을 구체적으로 설명하는 도면이다.
도 5는 일 실시예에 따른 전자 장치가 뉴럴 네트워크 모델에 포함된 분기의 분리를 스킵하는 것을 설명하는 도면이다.
도 6a 내지 도 6b는 U-net 구조의 모델을 일 실시예에 따른 전자 장치가 분리하는 방법에 대하여 도시한다.
도 7은 일 실시예에 따른 전자 장치가 부분 모델을 양자화 한 후 다른 부분 모델과 결합하는 것을 도시한 도면이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 뉴럴 네트워크 모델을 양자화하기 위한 전자 장치의 구조를 개략적으로 도시한다.
일 실시예에 따른 전자 장치(100)는 뉴럴 네트워크 모델을 양자화(quantization)할 수 있다. 전자 장치(100)는 뉴럴 네트워크 모델 전체를 양자화 할 수 있고, 해당 모델의 일부만을 양자화 할 수도 있다. 전자 장치(100)는 원본 뉴럴 네트워크 모델을 적어도 부분적으로 양자화함으로써, 양자화된 뉴럴 네트워크 모델을 생성할 수 있다. 전자 장치(100)는 양자화된 뉴럴 네트워크 모델을 프로세싱 유닛에 제공할 수 있다. 프로세싱 유닛은 양자화된 뉴럴 네트워크 모델을 실행할 수 있다. 원본 뉴럴 네트워크 모델은 양자화되지 않은 모델일 수 있다. 양자화된 뉴럴 네트워크 모델은, 뉴럴 네트워크 모델이 지정된(specified) 프로세싱 유닛에서의 실행을 위해 양자화된 모델일 수 있다. 양자화된 뉴럴 네트워크 모델은 지정된 프로세싱 유닛에서 실행될 때 목표 정확도 및/또는 목표 실행 속도를 나타낼 수 있다.
예를 들어, 전자 장치(100)는 원본 뉴럴 네트워크 모델에서 양자화될 부분을 지정된 프로세싱 유닛에 기초하여 결정할 수 있다. 원본 뉴럴 네트워크 모델에서 양자화되는 부분에 따라, 지정된 프로세싱 유닛에 의한 양자화된 뉴럴 네트워크 모델의 실행 정확도 및/또는 실행 속도가 달라질 수 있다. 양자화된 부분이 많을수록 실행 정확도가 감소하고 실행 속도가 증가하며, 양자화된 부분이 적을수록 실행 정확도가 증가하고 실행 속도가 감소할 수 있다. 전자 장치(100)는 원본 뉴럴 네트워크 모델에서 레이어들의 연결 구조 및 각 레이어가 배치된 깊이에 기초하여 양자화의 기준이 되는 레이어(또는 지점)를 결정할 수 있다. 예시적으로 전자 장치(100)는 양자화의 기준이 되는 레이어(또는 지점)을 기준으로, 입력 측 부분을 양자화하고, 출력 측 부분을 유지할 수 있다. 전자 장치(100)는 목표 정확도를 충족하는 범위 내에서 양자화되는 부분을 최대화할 수 있다. 전자 장치(100)는 원본 뉴럴 네트워크 모델의 전체를 양자화한 모델부터 점진적으로 양자화 정도(quantization level)를 감소시킬 수 있다. 전자 장치(100)는 양자화된 결과가 목표 정확도를 충족할 때까지 원본 뉴럴 네트워크 모델 중 양자화되는 부분을 감소시킬 수 있다. 따라서, 전자 장치(100)는 목표 정확도를 충족하면서 최대한 경량화되도록 원본 뉴럴 네트워크 모델을 최적화할 수 있다. 다만, 실행 정확도를 위주로 설명하였으나, 이로 한정하는 것은 아니면, 전자 장치는 목표하는 실행 속도를 구현하도록 뉴럴 네트워크 모델을 양자화할 수도 있다. 다시 말해, 전자 장치(100)는 프로세싱 유닛의 스펙(spec)에 대응하여 목표 성능을 가지도록 뉴럴 네트워크 모델을 양자화 할 수 있다.
참고로, 양자화(quantization)란, 뉴럴 네트워크 모델의 크기를 줄이고 프로세싱 유닛을 통해 뉴럴 네트워크 모델을 실행할 때 추론 속도를 향상하기 위한 방법을 나타낼 수 있다. 양자화는 뉴럴 네트워크 모델의 가중치(weight) 및 활성화(activation)를 낮은 비트 정밀도(예: INT8)로 변환하는 것을 포함할 수 있다. 예를 들어, 양자화는 이미 트레이닝 된 뉴럴 네트워크 모델을 낮은 비트 정밀도로 변환하는 방법인 포스트 트레이닝 양자화(post-training quantization), 트레이닝 과정에서 모델이 낮은 비트 정밀도에서 동작 할 수 있도록 하는 양자화 인식 훈련(quantization-aware training), 또는 가중치 및 활성화를 1비트 또는 2비트로 제한하는 바이너리 양자화(binary quantization) 또는 터너리 양자화(ternary quantization)를 포함할 수 있다.
일 실시예에 따른 전자 장치(100)는 메모리(110) 및 프로세서(120)를 포함할 수 있다.
메모리(110)는 뉴럴 네트워크 모델 및 뉴럴 네트워크 모델과 관련된 정보를 저장할 수 있다. 예를 들어, 메모리(110)는 뉴럴 네트워크 모델을 저장할 수 있다. 뉴럴 네트워크 모델은, 예시적으로, YOLOv5 모델, 및 트랜스포머 기반의 U-net 구조 모델일 수 있다. 메모리(110)는 뉴럴 네트워크 모델의 파라미터(예: 해당하는 모델 구조의 연결 가중치)도 저장할 수 있다. 뉴럴 네트워크 모델의 실행은 하나 이상의 연산들을 수반할 수 있다. 예를 들어, YOLOv5 모델은, 컨볼루션(convolution) 연산, 시그모이드(Sigmoid) 연산, 스플릿(Split) 연산, 및 결합(concatenation) 연산을 포함할 수 있다. 메모리(110)는 뉴럴 네트워크 모델의 실행에 수반되는 연산들을 지시하는 명령어 목록을 사전에(in advance) 입력 받아 저장할 수 있다. 메모리(110)는 전술한 컨볼루션 연산을 지시하는 명령어, 시그모이드 연산을 지시하는 명령어, 스플릿 연산을 지시하는 명령어, 및 결합 연산을 지시하는 명령어를 저장할 수 있다. 다만, 이는 순전히 설명을 위한 것으로, 메모리(110)에 의해 저장될 수 있는 뉴럴 네트워크 모델의 종류 및 뉴럴 네트워크 모델과 관련된 정보들은 이에 제한되는 것은 아니다.
프로세서(120)는 메모리(110)에 저장된 뉴럴 네트워크 모델을 대상 프로세싱 유닛에서 목표 정확도에서 실행되도록 양자화할 수 있다. 예를 들어 프로세서(120)는 전체 뉴럴 네트워크 모델을 양자화할 수 있고, 전체 뉴럴 네트워크 모델을 분리하여 생성된 부분 네트워크 모델을 양자화할 수 있다.
참고로, 뉴럴 네트워크 모델은 복수의 레이어들(layers)을 포함할 수 있다. 예를 들어, 뉴럴 네트워크 모델은 입력 레이어, 은닉 레이어들(hidden layers) 및 출력 레이어를 포함할 수 있다. 뉴럴 네트워크 모델은 입력 데이터를 입력 레이어에서 은닉 레이어들을 거쳐 출력 레이어로 전달할 수 있다. 예를 들어, 입력 데이터가 입력 레이어에 인가된 경우, 입력 레이어에서의 출력 데이터는 은닉 레이어의 입력 데이터(예: 입력 벡터 또는 액티베이션)로 전달될 수 있다. 은닉 레이어의 출력 데이터는 출력 레이어의 입력으로 전달될 수 있다. 본 명세서에서는 입력 레이어로부터 은닉 레이어를 거쳐 출력 레이어로의 데이터 이동 경로를 각 레이어별로 연결된 선으로 표현할 수 있다.
뉴럴 네트워크 모델의 구조에 따라 복수의 데이터 이동 경로들이 존재할 수 있다. 예를 들어, 복수의 레이어들 중 어느 하나의 레이어에 의해 생성된 데이터가 상이한 레이어들에게 전파(propagate)될 수 있다. 전술한 바와 같이, 어느 하나의 레이어에 복수의 레이어들이 연결된 경우, 복수의 레이어들의 각각을 따르는 데이터 전파 경로를 분기(branch)라고도 표현할 수 있다. 후술하는 도 2a를 참조하면, 3개의 분기들이 도시되고, 3개의 분기들의 각각은 스플릿 레이어(Split)에서 3개의 분기들을 가진다. 각 분기를 따라 데이터가 전파되고, 분기들은 결합 레이어(Concat)에서 합쳐진다.
전자 장치(100)는 뉴럴 네트워크 모델에 포함된 복수의 레이어들의 각각에 대응하는 명령어를 통해 연산을 수행할 수 있다. 예를 들어, 뉴럴 네트워크 모델의 컨벌루션(convolution) 레이어(conv)에서는 컨볼루션 명령어에 기초하여, 해당 레이어의 입력 데이터에 대한 컨볼루션 연산이 수행될 수 있다. 뉴럴 네트워크 모델은 해당 레이어에서의 연산 결과를 해당 레이어와 분기로 연결된 다음 레이어로 전달함으로써, 입력 레이어로부터 출력 레이어로 데이터를 전파할 수 있다.
프로세서(120)는 뉴럴 네트워크 모델을, 입력 레이어에서 출력 레이어로의 데이터 전파 경로 상에서 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리할 수 있다. 프로세서(120)는 뉴럴 네트워크 모델에서 역방향으로 복수의 분기들(branches)이 연결되는 레이어를 기준으로 뉴럴 네트워크 모델을 분리할 수 있다. 참고로, 본 명세서에서는 뉴럴 네트워크 모델의 데이터 전파 경로를 따라, 입력 레이어로부터 출력 레이어를 향해 데이터를 전파하는 방향을 순방향, 순방향의 반대 방향을 역방향이라고 나타낼 수 있다.
예를 들어, 프로세서(120)는 뉴럴 네트워크 모델에서 복수의 분기들이 연결된 제1 레이어를 탐색할 수 있다. 제1 레이어는, 복수의 분기들과 연결된 레이어로서, 복수의 레이어들로부터 데이터를 수신하거나, 복수의 레이어들에게 데이터를 전파하는 레이어일 수 있다. 프로세서(120)는 탐색된 제1 레이어를 기준으로 뉴럴 네트워크 모델을 입력 레이어를 포함하는 제1 부분 모델과, 출력 레이어를 포함하는 제2 부분 모델로 분리할 수 있다. 제1 레이어가 복수의 레이어들로부터 데이터를 수신하는 경우, 제1 레이어는 제2 부분 모델에 포함될 수 있다. 다른 예를 들어, 제1 레이어가 복수의 레이어들에게 데이터를 전파하는 경우, 제1 레이어는 제1 부분 모델에 포함될 수 있다. 후술하겠으나, 제1 부분 모델은 양자화된 부분일 수 있다.
프로세서(120)는 복수의 부분 모델들 중 제1 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화(quantization)함으로써 양자화된 부분 모델을 생성할 수 있다. 예를 들어, 프로세서(120)가 뉴럴 네트워크 모델을 제1 레이어를 기준으로 입력 레이어를 포함하는 제1 부분 모델 및 출력 레이어를 포함하는 제2 부분 모델로 분리한 경우, 프로세서(120)는 제1 부분 모델에 포함된 레이어 중 적어도 일부를 양자화함으로써, 제1 부분 모델에 포함된 레이어의 출력 데이터를 정수형 자료형(예: int8)으로 출력하는 양자화된 제1 부분 모델을 생성할 수 있다.
프로세서(120)는 양자화된 부분 모델 및 복수의 부분 모델들의 다른 부분 모델들이 결합된 결합 모델을 대상 프로세싱 유닛(미도시)을 이용하여 실행한 결과로부터 정확도를 측정(또는 평가)할 수 있다. 예를 들어, 프로세서(120)는 위에서 설명한 양자화된 제1 부분 모델과, 제2 부분 모델을 결합함으로써 제1 결합 모델을 생성할 수 있다. 프로세서(120)는 제1 결합 모델을 대상 프로세싱 유닛(미도시)을 통해 실행한 결과로부터 제1 정확도를 측정할 수 있다. 예를 들어, 프로세서(120)는 뉴럴 프로세싱 유닛(neural processing unit)(이하, 'NPU')을 통해 제1 결합 모델이 실행된 결과로부터 제1 정확도를 측정할 수 있다.
참고로, 대상 프로세싱 유닛의 뉴럴 네트워크 모델을 실행한 경우의 정확도는, 뉴럴 네트워크 모델이 데이터에 대하여 정확하게 예측을 수행하는 지를 나타내는 지표에 대응할 수 있다. 예를 들어, 분류 문제에서 뉴럴 네트워크 모델이 올바른 카테고리를 얼마나 자주 선택하는지를 나타낼 수 있다. 다른 예를 들어, NPU와 같은 낮은 비트 정밀도로 동작하는 하드웨어에서의 수치 정확도(numerical accuracy)를 나타낼 수 있다.
전술한 제1 정확도가 목표 정확도를 충족하지 못하거나, 제1 정확도보다 목표 정확도에 보다 근접한 정확도를 나타내는 양자화될 모델이 있을 수 있기 때문에, 프로세서(120)는 추가 탐색을 진행할 수 있다. 참고로, 본 명세서에서 프로세서(120)에 의해 역방향으로 뉴럴 네트워크 모델에 포함된 레이어 중 복수의 분기점과 연결된 레이어를 하나씩 단계적으로 탐색하고 분리할지 여부를 결정하는 방법을 후진 소거법이라 정의할 수 있다.
프로세서(120)는 전술한 제1 레이어 보다 입력 레이어에 더 가까운 레이어 중 복수의 분기들이 연결된 제2 레이어를 탐색할 수 있다. 프로세서(120)는 탐색된 제2 레이어에 기초하여 뉴럴 네트워크 모델을 복수의 다른 부분 모델들로 분리할 수 있다. 프로세서(120)는 제2 레이어에 기초하여 분리된 부분 모델들 중 입력 레이어를 포함하는 모델(예: 제3 부분 모델)을 양자화할 수 있다. 프로세서(120)는 양자화된 제3 부분 모델을 출력 레이어를 포함하는 모델(예: 제4 부분 모델)과 결합함으로써 제2 결합 모델을 생성할 수 있다. 프로세서(120)는 대상 프로세싱 유닛(예: NPU)에 의해 제2 결합 모델이 실행된 결과로부터 제2 정확도를 측정할 수 있다.
프로세서(120)는 제1 정확도 및 제2 정확도 중 대상 프로세싱 유닛(미도시)에 대한 입력된 목표 정확도에 더 근접한 정확도를 갖는 결합 모델을, 대상 프로세싱 유닛에 대한 추천 모델로 제공할 수 있다. 예를 들어, 전자 장치(100)는 대상 프로세싱 유닛을 통해 뉴럴 네트워크 모델을 동작하려는 고객으로부터 해당 모델의 목표 정확도를 입력 받을 수 있다. 예를 들어, 프로세서(120)는 입력된 목표 정확도와 측정된 제1 정확도 간의 오차 또는 목표 정확도와 제2 정확도 간의 오차 각각을 계산할 수 있다. 프로세서(120)는 설정된 임계 오차 이내의 오차 값을 가지는 정확도에 대응하는 결합 모델을 대상 프로세싱 유닛에 대한 추천 모델로 결정하여 제공할 수 있다.
참고로, 본 명세서에서 제1 부분 모델을 양자화하는 예시가 주로 설명되었으나, 이로 한정하는 것은 아니다. 다른 예를 들어, 프로세서(120)는 제1 레이어에 기초하여 뉴럴 네트워크 모델을 분리함으로써 제1 부분 모델과 제2 부분 모델을 생성할 수 있다. 프로세서(120)는 제1 레이어보다 입력 레이어에 더 가깝고, 복수의 분기들과 연결되며, 제1 부분 모델에 포함된 제2 레이어에 기초하여 제1 부분 모델을 추가로 분리함으로써 복수의 다른 부분 모델들을 생성할 수도 있다. 프로세서(120)는 뉴럴 네트워크 모델에 포함된 레이어들을 순차적으로 역방향으로 탐색하여, 레이어들 중 복수의 분기들과 연결되는 레이어를 기준으로 뉴럴 네트워크 모델을 분리할 수 있다.
도 2a 내지 도 2c는 뉴럴 네트워크 모델을 대상 프로세싱 유닛을 통해 실행하는 경우 발생하는 문제를 설명하기 위한 도면이다.
도 2a는 일 예로서 뉴럴 네트워크 모델(200)을 도시한다.
뉴럴 네트워크 모델(200)은 복수의 레이어를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 모델(200)은 컨볼루션 레이어(예: conv), 리쉐이프 레이어(예: reshape), 트랜스포즈 레이어(예: transpose), 시그모이드 레이어(예: sigmoid), 스플릿 레이어(예: split), 곱셉 레이어(예: mul), 덧셈 레이어(예: add), 제곱 레이어(예: pow), 결합 레이어(예: concat), 출력 레이어(예: output0) 등을 포함할 수 있다. 뉴럴 네트워크 모델(200)에 포함된 레이어들 각각에서 해당 레이어에 대응하는 명령어에 따라 해당 레이어에 대한 입력 데이터에 대한 연산이 수행될 수 있다. 예를 들어, 뉴럴 네트워크 모델(200)의 컨볼루션 레이어(예: conv)에서는 컨볼루션 명령어에 기초하여 해당 레이어의 입력 데이터에 대한 컨볼루션 연산 결과가 출력 될 수 있다. 다른 예를 들어, 뉴럴 네트워크 모델(200)의 결합 레이어에서는 결합 명령어에 기초하여 이전 레이어로부터 결합 레이어로 입력된 데이터들을 결합(concatenation)한 결과를 출력할 수 있다.
뉴럴 네트워크 모델(200)은 대상 프로세싱 유닛(미도시)을 통해 실행될 수 있다. 예를 들어, 뉴럴 네트워크 모델(200)은 NPU를 통해 실행될 수 있다. 대상 프로세싱 유닛은 뉴럴 네트워크 모델(200)의 입력 레이어로부터 출력 레이어(예: output0)로의 데이터 전파 방향(210)(이하, '순방향')을 따라 데이터를 전파함으로써 뉴럴 네트워크 모델(200)을 실행할 수 있다. 대상 프로세싱 유닛은 뉴럴 네트워크 모델(200)이 양자화되는 경우, 더욱 빠르게 양자화된 뉴럴 네트워크 모델(200)을 실행할 수 있다. 다만, 뉴럴 네트워크 모델(200)에 포함된 어떤 레이어를 기준으로 양자화를 진행할지에 따라 대상 프로세싱 유닛에서 뉴럴 네트워크 모델을 실행한 결과에 대응하는 실행 정확도에 차이가 있을 수 있다. 따라서, 대상 프로세싱 유닛에서 뉴럴 네트워크 모델(200)의 실행 정확도를 유지하면서 동시에 실행 속도를 향상시키기 위한 양자화 지점을 자동으로 선택할 수 있는 방법이 요구된다.
다른 예를 들어, 대상 프로세싱 유닛은 뉴럴 네트워크 모델(200)을 실행하기 위한 명령어들 중 일부 명령어를 지원하지 않을 수 있다. 예를 들어, 대상 프로세싱 유닛은 리쉐이프 레이어(예: reshape)(210_a, 210_b, 210_c)에서의 리쉐이프 연산을 실행하기 위한 리쉐이프 명령어를 지원하지 않을 수 있다. 구체적으로, 대상 프로세싱 유닛에 대응하는 사피온 X220 및 퓨리오사 Warboy는 리쉐이프 명령어를 지원하지 않을 수 있다. 따라서, 뉴럴 네트워크 모델(200)을 양자화할 때, 리쉐이프 레이어(210_a, 210_b, 210_c)는 대상 프로세싱 유닛에서 실행하기 전에 미리 분리하여 나머지 뉴럴 네트워크 모델을 양자화 하는 것이 필요할 수 있다.
도 2b는 뉴럴 네트워크 모델의 양자화 이후 정확도가 0이 되는 경우를 도시한다.
일 실시예에 따른 뉴럴 네트워크 모델인 YOLOv5 모델에서는, 출력 레이어 이전 레이어로서 결합 레이어(예: concat)를 포함할 수 있다. YOLOv5 모델의 결합 레이어(예: concat)는 서로 다른 3개의 리쉐이프 레이어(예: reshape)(210_a, 210_b, 210_c) 각각의 출력 데이터를 전달받을 수 있다. 리쉐이프 레이어(210_a, 210_b, 210_c) 각각의 출력 데이터들이 결합 레이어를 통해 결합된 출력 데이터는 출력 레이어(예: output0)에 입력될 수 있고, 출력 레이어의 출력 데이터(예: 출력 텐서)는 양자화(220) 될 수 있다. 다만, 리쉐이프 레이어(210_a, 210_b, 210_c) 각각의 출력 데이터들의 분포는 서로 다를 수 있다. 따라서, 결합 레이어(예: concat)의 출력 데이터(예: 출력 텐서)에 존재하는 값들의 분포(250)는 서로 구별될 수 있고, 더 나아가 출력 레이어(예: output0)의 출력 데이터(예: 출력 텐서)에 존재하는 값들의 분포(250)는 서로 구별될 수 있다.
예를 들어, 리쉐이프 레이어(210_a)의 출력 데이터에 대한 양자화된 결과 데이터 분포는 분포(250)에서 가장 왼쪽에 위치하는 정규분포 형상의 그래프에 대응할 수 있다. 리쉐이프 레이어(210_b)의 출력 데이터에 대한 양자화된 결과 데이터 분포는 분포(250)에서 가운데 위치하는 정규분포 형상의 그래프에 대응할 수 있다. 리쉐이프 레이어(210_c)의 출력 데이터에 대한 양자화된 결과 데이터 분포는 분포(250)에서 가장 오른쪽에 위치하는 정규분포 형상의 그래프에 대응할 수 있다. 리쉐이프 레이어(210_a, 210_b, 210_c) 각각의 출력 데이터들에 대하여, 예를 들어, int8의 자료형으로 변환하는 등의 양자화(220)가 수행되는 경우, 양자화된 출력 데이터와 원본 출력 데이터 간의 오차가 커지고, 결과적으로 뉴럴 네트워크 모델의 실행 정확도가 떨어질 수 있다. 따라서, YOLOv5 모델의 경우, 결합 레이어를 양자화에서 제외시키고, 결합 레이어 이전에 양자화를 진행한 후, 결합 레이어에서는 실수 연산을 진행할 필요가 있다.
아래 도 2c 에서 전자 장치는 예를 들어, YOLOv5 모델에서 위에서 설명한 결합 레이어를 양자화에서 제외하고, 양자화가 진행될 레이어를 자동으로 결정할 수 있다.
도 2c는 대상 프로세싱 유닛에 뉴럴 네트워크 모델을 실행하기 위한 명령어를 포함하지 않는 경우 해당 모델의 양자화 방법에 대하여 도시한다.
예를 들어, 뉴럴 네트워크 모델(200)은, 컨볼루션 레이어(예: conv), 리쉐이프 레이어(예: reshape), 트랜스포즈 레이어(예: transpose), 시그모이드 레이어(예: sigmoid), 결합 레이어(예: concat), 출력 레이어(예: output0) 등을 포함할 수 있다. 대상 프로세싱 유닛(미도시)은 뉴럴 네트워크 모델(200)을 실행하기 위한 대부분의 명령어들을 지원할 수 있으나, 일부 명령어들은 지원하지 않을 수 있다.
예를 들어, 대상 프로세싱 유닛(미도시)은 뉴럴 네트워크 모델(200)의 리쉐이프 레이어들(290)에서 리쉐이프 연산을 수행하기 위한 리쉐이프 명령어를 지원하지 않을 수 있다. 따라서, 대상 프로세싱 유닛에서 지원하지 않는 명령어에 기초하여 동작하는 레이어(290)를 포함하여 뉴럴 네트워크 모델(200)을 양자화 하는 것은 대상 프로세싱 유닛을 통해 양자화된 뉴럴 네트워크 모델(200)을 실행하는 성능(예: 정확도, 또는 실행 속도) 측면에서 영향이 미비할 수 있다. 예를 들어, 대상 프로세싱 유닛이 NPU일 때, 뉴럴 네트워크 모델(200)이 NPU에서 지원하지 않는 명령어에 기초하여 동작하는 레이어(290)를 포함하는 경우, NPU는 해당 레이어(290)에서의 연산을 수행하지 못하므로, 해당 레이어(290)에서의 연산은 중앙처리장치(central processing unit, CPU)에서 수행될 수 있다. 해당 예에서는 NPU에서 지원하지 않는 레이어(290)를 처음부터 분리하고, 모델의 나머지 레이어들을 실행하는 것이 NPU를 통한 뉴럴 네트워크 모델(200)의 실행 성능을 향상하는 것에 도움을 줄 수 있다.
전자 장치는, 대상 프로세싱 유닛에서 지원하지 않는 명령어에 기초하여 입력 데이터에 대한 연산이 수행되는 뉴럴 네트워크 모델의 레이어를 분리하고, 분리된 모델에 대한 양자화를 자동으로 수행할 수 있다. 전자 장치는, 대상 프로세싱 유닛에서 실행 가능한 미리 입력된 명령어들에 기초하여, 미리 입력된 명령어들 및 뉴럴 네트워크 모델의 각 레이어에서 수행되는 명령어들 간의 대응 여부로부터 미리 입력된 명령어들에 대응하지 않는 명령어를 포함하는 레이어에 기초하여 복수의 부분 모델들로 분리할 수 있다. 예를 들어, 전자 장치는 대상 프로세싱 유닛(예: NPU)에서 지원하는 명령어들을 고객(또는 사용자)으로부터 미리 입력 받을 수 있다. 예를 들어 전자 장치는 YOLOv5를 실행하기 위해 대상 NPU에서 지원하는 명령어로서 컨볼루션 명령어, 트랜스포즈 명령어, 시그모이드 명령어, 결합 명령어 등을 입력 받을 수 있다. 다만, 대상 NPU는 리쉐이프 명령어를 지원하지 않을 수 있다. 따라서, 전자 장치는, 미리 입력된 명령어들에 대응하지 않는 명령어(예: 리쉐이프 명령어)에 기초하여 동작하는 리쉐이프 레이어(290)를 기준으로 뉴럴 네트워크 모델(200)을 분리할 수 있다. 전자 장치는 리쉐이프 레이어(290)를 기준으로 분리된 부분 모델 중 리쉐이프 레이어(290)와 컨볼루션 레이어를 통해 입력 레이어까지 연결된 부분 모델을 양자화할 수 있다.
도 3은 일 실시예에 따른 전자 장치가 대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델을 제공하는 방법을 설명하는 흐름도이다.
대상 프로세싱 유닛은 뉴럴 네트워크 모델의 데이터 전파 경로를 따라 순방향(예: 도 1에서 설명한, 입력 레이어로부터 출력 레이어를 향해 데이터를 전파하는 방향)으로 데이터를 전파함으로써 뉴럴 네트워크 모델을 실행할 수 있다. 전술한 바와 같이, 대상 프로세싱 유닛의 스펙(예: 지원하는 명령어의 종류, 처리 가능한 데이터의 자료형 등)에 맞추어 뉴럴 네트워크 모델이 양자화될 수 있다. 양자화된 뉴럴 네트워크 모델의, 대상 프로세싱 유닛에 의한, 실행 정확도가 상승 및/또는 보장될 수 있다. 대상 프로세싱 유닛에 적합한 뉴럴 네트워크 모델을 제공하기 위해, 전자 장치는 뉴럴 네트워크 모델에서 양자화 될 지점을 자동으로 탐색하고, 해당 지점에 기초하여 뉴럴 네트워크 모델을 양자화할 필요가 있다.
일 실시예에서, 전자 장치는 뉴럴 네트워크 모델을 양자화하고, 양자화된 뉴럴 네트워크 모델 중 대상 프로세싱 유닛에서 실행되었을 때, 가장 높은 정확도를 가지는 추천 모델을 제공할 수 있다.
구체적으로, 단계(310)에서 전자 장치는 뉴럴 네트워크 모델(예: 도 2a의 뉴럴 네트워크 모델(200))을, 입력 레이어에서 출력 레이어로의 데이터 전파 경로 상에서 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리할 수 있다. 예를 들어, 전자 장치는, 뉴럴 네트워크 모델의 레이어 중 이전 레이어들로부터 복수의 입력 데이터를 입력 받는 레이어를 제1 레이어로 결정하여 복수의 부분 모델들로 분리할 수 있다. 예를 들어, 전자 장치는 도 2a의 뉴럴 네트워크 모델(200)에서 리쉐이프 레이어들(210_a, 210_b, 210_c)로부터 데이터를 입력 받는 결합 레이어(예: concat)를 제1 레이어로 결정할 수 있다. 전자 장치는 결합 레이어를 기준으로, 결합 레이어부터 출력 레이어(예: output 0)를 포함하는 부분 모델과 리쉐이프 레이어들(210_a, 210_b, 210_c)로부터 입력 레이어까지를 모두 포함하는 부분 모델로 뉴럴 네트워크 모델(200)을 분리할 수 있다.
단계(320)에서 전자 장치는 복수의 부분 모델들 중 제1 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화(quantization)함으로써 양자화된 부분 모델을 생성할 수 있다. 예를 들어, 전자 장치는 리쉐이프 레이어(210_a)부터 입력 레이어를 포함하는 부분 모델을 양자화 함으로써 양자화된 부분 모델을 생성할 수 있다. 다른 예를 들어, 전자 장치는 리쉐이프 레이어(210_b)부터 입력 레이어를 포함하는 부분 모델을 양자화 함으로써 양자화된 부분 모델을 생성할 수 있다. 또 다른 예를 들어, 전자 장치는 리쉐이프 레이어(210_c)부터 입력 레이어를 포함하는 부분 모델을 양자화 함으로써 양자화된 부분 모델을 생성할 수 있다. 즉, 뉴럴 네트워크 모델(200)이 제1 레이어(예: 결합 레이어)를 기준으로 3개의 분기에 병렬적으로 연결된 구조인 경우, 전자 장치는 각 분기별로 분리된 부분 모델들에 기초하여 별도로 양자화된 부분 모델을 생성할 수 있다. 다른 예를 들어, 전자 장치는, 분리된 3개의 분기 중 2개의 분기에 연결된 부분 모델들을 양자화할 수 있다. 예를 들어, 전자 장치는 뉴럴 네트워크 모델의 리쉐이프 레이어(210_a) 및 리쉐이프 레이어(210_b) 각각에서부터 입력 레이어까지 포함하는 부분 모델을 양자화함으로써 양자화된 부분 모델을 생성할 수 있다. 정리하면, 제1 레이어에 연결된 복수의 분기들이 3개인 경우, 전자 장치는 3C1 + 3C2 + 3C3의 횟수만큼 제1 레이어의 이전 레이어부터 입력 레이어까지 포함하는 부분 모델들을 양자화 할 수 있다. 이를 확장하면, 제1 레이어에 연결된 복수의 분기들이 n개인 경우, 전자 장치는 nC1+nC2+nC3+??nCn의 횟수만큼 제1 레이어의 이전 레이어부터 입력 레이어까지 포함하는 부분 모델들을 양자화할 수 있다.
단계(330)에서 전자 장치는, 양자화된 부분 모델 및 복수의 부분 모델들의 다른 부분 모델들이 결합된 제1 결합 모델을 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제1 정확도를 측정할 수 있다. 예를 들어, 전자 장치는, 양자화된 부분 모델과 뉴럴 네트워크 모델의 양자화되지 않은 다른 부분 모델들을 결합함으로써 제1 결합 모델을 생성할 수 있다. 예를 들어, 전자 장치는, 도 2a의 뉴럴 네트워크 모델(200)에서 결합 레이어(예: concat)를 제1 레이어로 결정할 수 있다. 전자 장치는 제1 레이어에 연결된 분기 중 리쉐이프 레이어(210_a)와 연결된 분기를 따라 역방향으로 입력 레이어까지 연결된 부분 모델의 적어도 일부 레이어를 양자화함으로써 양자화된 부분 모델을 생성할 수 있다. 전자 장치는 리쉐이프 레이어(210_a)와 연결된 분기를 따라 입력 레이어까지 연결된 양자화된 부분 모델과 나머지 리쉐이프 레이어들(210_b, 210_c)을 포함하고 리쉐이프 레이어들(210_b, 210_c)로부터 입력 레이어까지 연결된 양자화되지 않은 부분 모델들을 결합함으로써 제1 결합 모델을 생성할 수 있다. 전자 장치는 생성된 제1 결합 모델을 대상 프로세싱 유닛을 이용하여 실행할 수 있다. 예를 들어, 전자 장치는 대상 프로세싱 유닛(예: NPU)과 직접 연결되어 대상 프로세싱 유닛을 통해 제1 결합 모델을 실행함으로써 제1 정확도를 측정할 수 있다. 또 다른 예를 들어, 전자 장치는 대상 프로세싱 유닛(예: NPU)에서 지원하는 명령어들을 사전에 입력 받고, 사전 입력된 명령어들에 기초하여 제1 결합 모델을 실행함으로써, 대상 프로세싱 유닛에서 실행될 때의 제1 정확도를 측정할 수 있다.
단계(340)에서 전자 장치는, 뉴럴 네트워크 모델을, 제1 레이어 보다 입력 레이어에 더 가깝고 복수의 분기들이 연결되는 제2 레이어에 기초하여 복수의 다른 부분 모델들로 분리할 수 있다. 예를 들어, 전자 장치는 뉴럴 네트워크 모델에 대하여 역방향으로 순차적으로 복수의 분기들과 연결된 레이어를 탐색할 수 있다. 전자 장치는 탐색된 복수의 분기들과 연결된 레이어들에 기초하여 뉴럴 네트워크 모델을 분리함으로써 복수의 분리 모델들을 생성할 수 있다. 따라서, 전자 장치는 제1 레이어 보다 입력 레이어 쪽에 더 가깝고 복수의 분기들이 연결되는 레이어를 제2 레이어로 결정할 수 있다. 전자 장치는 탐색된 제2 레이어에 기초하여 뉴럴 네트워크 모델을 복수의 다른 부분 모델들로 분리할 수 있다. 예를 들어, 전자 장치는 도 2a의 뉴럴 네트워크 모델(200)에서 리쉐이프 레이어들(210_a, 210_b, 210_c) 각각의 이전 레이어인 결합 레이어들(예: concat)을 제2 레이어로 결정할 수 있다. 전자 장치가 제2 레이어에 기초하여 뉴럴 네트워크 모델(200)을 복수의 다른 부분 모델들로 분리하는 방법은 단계(310)에서의 방법과 중복되므로 생략한다.
단계(350)에서 전자 장치는, 복수의 다른 부분 모델들 중 제2 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화함으로써 양자화된 다른 부분 모델을 생성할 수 있다. 전자 장치가 양자화된 다른 부분 모델을 생성하는 방법은, 단계(320)에서의 방법과 중복되므로 여기서 반복하지 않는다.
단계(360)에서 전자 장치는, 양자화된 다른 부분 모델 및 상기 복수의 다른 부분 모델들 중 나머지 부분 모델들이 결합된 제2 결합 모델을 상기 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제2 정확도를 측정할 수 있다. 전자 장치가 제2 결합 모델의 제2 정확도를 측정하는 방법은, 단계(330)에서의 방법과 중복되므로 여기서 반복하지 않는다.
단계(370)에서 전자 장치는, 제1 정확도 및 제2 정확도 중 대상 프로세싱 유닛에 대한 입력된 목표 정확도에 더 근접한 정확도를 갖는 결합 모델을, 대상 프로세싱 유닛에 대한 추천 모델로 제공할 수 있다. 예를 들어, 전자 장치는 고객, 사용자 등으로부터, 대상 프로세싱 유닛을 이용하여 뉴럴 네트워크 모델을 실행할 때 목표로 하는 정확도 값을 미리 입력 받을 수 있다. 예를 들어, 전자 장치의 사용자가 대상 프로세싱 유닛을 통해 실행되는 뉴럴 네트워크 모델의 목표 정확도를 직접 전자 장치에 입력할 수도 있다. 전자 장치가 전자 장치의 통신부(미도시)를 통해 사용자로부터 목표 정확도를 수신할 수도 있다. 다만, 전자 장치가 목표 정확도를 입력 받는 방식은 이에 제한되는 것은 아니다.
전자 장치는 목표 정확도와 제1 정확도를 뺀 제1 오차를 계산할 수 있다. 또한, 전자 장치는 목표 정확도와 제2 정확도를 뺀 제2 오차를 계산할 수 있다. 전자 장치는 계산된 제1 오차 및 제2 오차 중 더 작은 오차 값을 가지는 정확도에 대응하는 결합 모델을 대상 프로세싱 모델의 추천 모델로 결정할 수 있다. 다만, 전자 장치가 제1 정확도 및 제2 정확도를 비교하는 방법은 이에 제한되는 것은 아니다.
추가로, 전자 장치는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하기에 앞서, 뉴럴 네트워크 모델에 대응하는 양자화된 모델(quantized model)을 대상 프로세싱 유닛을 이용하여 실행할 시 측정된 정확도 및 목표 정확도 사이의 오차가 임계 오차 범위를 초과하는 경우, 출력 레이어부터 입력 레이어로 복수의 분기들이 연결되는 레이어를 탐색할 수 있다. 예를 들어, 전자 장치는 원본 뉴럴 네트워크 모델 전체를 우선 양자화할 수 있다. 전자 장치는 전체 양자화된 뉴럴 네트워크 모델이 대상 프로세싱 유닛에서 실행되는 경우 목표 정확도 이상의 정확도로 실행되는 지 측정할 수 있다. 전자 장치는 전체 양자화된 뉴럴 네트워크 모델이 목표 정확도로 실행되는 경우, 전체 양자화된 뉴럴 네트워크 모델을 추천 모델로 제공할 수 있다. 예를 들어, 전자 장치에 목표 정확도가 80%로 입력되고, 미리 결정된 임계 오차 범위가 5%일 수 있다. 전자 장치는 전체 양자화된 뉴럴 네트워크 모델을 대상 프로세싱 유닛을 이용하여 실행한 정확도가 75% 미만인 경우에만, 원본 뉴럴 네트워크 모델을 부분적으로 양자화할 지 여부를 결정할 수 있다. 전자 장치는 원본 뉴럴 네트워크 모델에 대하여 역방향(예: 도 2a의 순방향(210)의 역방향)으로 복수의 분기들이 연결된 레이어들의 존재 여부를 탐색할 수 있다.
도 4는 일 실시예예 따른 전자 장치가 대칭적으로 구성된 뉴럴 네트워크 모델을 분리하는 방법을 구체적으로 설명하는 도면이다.
일 실시예에서, 전자 장치는 뉴럴 네트워크 모델(400)을 제1 부분 모델 및 제2 부분 모델로 분리할 수 있다. 예를 들어 제1 부분 모델은 제1 분기 지점(410)에서부터, 역방향(411)으로 제1 레이어(401)와 연결된 모델을 나타낼 수 있다. 또한, 제2 부분 모델은 출력 레이어(예: output0) 및 제1 레이어(401)를 포함하는 모델을 나타낼 수 있다.
전자 장치는 제1 부분 모델에서 제1 레이어(401)에 연결된 복수의 분기들 중 적어도 하나의 분기에 위치하는 서브 부분 모델(440, 450)을 분리할 수 있다. 예를 들어, 전자 장치는 제1 부분 모델에서 제1 서브 부분 모델(440)을 분리할 수 있다. 전자 장치는, 제2 서브 부분 모델(450)을 분리할 수 있다. 전자 장치는 제1 부분 모델에서 제1 서브 부분 모델(440) 및 제2 서브 부분 모델(450)을 동시에 분리할 수 있다.
전자 장치는 분리된 제1 부분 모델의 전체를 양자화 할 수 있다. 또한, 전자 장치는 제1 부분 모델을 추가로 서브 부분 모델들(440, 450)로 분리함으로써 일부 모델에 대한 양자화를 수행할 수 있다. 예를 들어, 전자 장치는 제1 서브 부분 모델(440)을 양자화할 수 있다. 다른 예를 들어, 전자 장치는 제1 서브 부분 모델(440) 및 제2 서브 부분 모델(450)을 양자화할 수 있다. 전자 장치는 제1 서브 부분 모델(440) 및 제2 서브 부분 모델(450)을 양자화하고, 양자화된 서브 부분 모델들(440, 450)을 앙상블(ensemble)할 수 있다.
다른 실시예에서 전자 장치는, 뉴럴 네트워크 모델이 대칭적으로 구성된 경우, 공통되는 역방향 깊이(depth)에 위치하는 레이어들에 기초하여 뉴럴 네트워크 모델을 분리할 수 있다.
대칭적으로 구성된 뉴럴 네트워크 모델(400)은 예를 들어, 복수의 분기와 연결된 레이어를 기준으로 각 분기에서 역방향(411)으로 위치된 레이어의 수가 동일하고, 데이터 이동 경로가 유사한 모델을 포함할 수 있다. 뉴럴 네트워크 모델 내의 데이터 이동 경로가 유사하다는 것은 각 분기에서 역방향(411)으로 위치된 레이어에 대응하는 연산이 유사한 것을 나타낼 수 있다. 예를 들어, 뉴럴 네트워크 모델(400)의 제1 분기 상에 역방향(411)으로 리쉐이프 레이어(reshape)-결합 레이어(concat)-곱셈 레이어(mul)-덧셈 레이어(add)-곱셈 레이어(mul)-스플릿 레이어(split)-시그모이드 레이어(예: sigmoid)-트랜스포즈 레이어(transpose)-리쉐이프 레이어(reshape)-컨벌루션 레이어(conv)가 위치되어 총 10개의 레이어가 위치된다. 또한, 뉴럴 네트워크 모델(400)의 제2 분기 상에 역방향(411)으로 리쉐이프 레이어(reshape)-결합 레이어(concat)-곱셈 레이어(mul)-덧셈 레이어(add)-곱셈 레이어(mul)-스플릿 레이어(split)-시그모이드 레이어(예: sigmoid)-트랜스포즈 레이어(transpose)-리쉐이프 레이어(reshape)-컨볼루션 레이어(conv)가 위치되어 총 10개의 레이어가 위치된다. 따라서, 전자 장치는 뉴럴 네트워크 모델(400)의 제1 분기 및 제2 분기 상에 역방향(411)으로 동일한 수의 레이어가 배치되고, 각 레이어별 유사한 연산이 수행되는 것에 기초하여, 뉴럴 네트워크 모델(400)을 대칭적으로 구성된 모델로 파악할 수 있다.
일 실시예에서, 전자 장치는 대칭적인 뉴럴 네트워크 모델의 공통되는 역방향 깊이(depth)에 위치하는 레이어들에 기초하여 뉴럴 네트워크 모델을 분리할 수 있다. 특정 레이어의 역방향 깊이는 출력 레이어로부터 특정 레이어 간에 연결된 레이어들의 개수에 기초하여 결정되는 깊이일 수 있다. 예를 들어, 뉴럴 네트워크 모델에서 특정 레이어는, 출력 레이어로부터 역방향(411)으로 n번째 순서에 배치된 레이어일 수 있다. 이 경우, 특정 레이어의 역방향 깊이는 출력 레이어로부터 배치된 n번째 순번에 대응하는 정보를 나타낼 수 있다. n은 1이상의 정수일 수 있다.
뉴럴 네트워크 모델(400)에서 레이어들은 서로 다른 분기들에 배치될 수 있다. 서로 다른 분기들에 배치된 레이어들 중 해당 분기에 배치된 레이어가 출력 레이어로부터 역방향(411)으로 n번째 순서에 배치된 레이어인 경우 해당 레이어는 n번째 역방향 깊이에 위치하는 레이어를 나타낼 수 있다. 출력 레이어로부터 역방향(411)으로 배치된 순서를 기준으로 서로 다른 분기의 레이어들 각각의 역방향 깊이가 같을 수 있다. 예를 들어, 뉴럴 네트워크 모델(400)에서 제1 분기 상의 리쉐이프 레이어(예: shape<3>에 대응하는 레이어)는 역방향(411)으로 3번째 역방향 깊이에 위치한다고 나타낼 수 있다. 마찬가지로, 제2 분기 상의 리쉐이프 레이어(예: shape<3>에 대응하는 레이어)도 역방향(411)으로 3번째 역방향 깊이에 위치한다고 나타낼 수 있다.
전자 장치는 대칭적 구조의 뉴럴 네트워크 모델(400)에서 동일한 역방향 깊이에 위치하는 레이어들에 기초하여 뉴럴 네트워크 모델(400)을 분리할 수 있다. 예를 들어, 전자 장치는 3번째 역방향 깊이에 위치하는 제1 분기 상의 리쉐이프 레이어 및 제2 분기 상의 리쉐이프 레이어에 기초하여 뉴럴 네트워크 모델(400)을 분리할 수 있다. 예를 들어, 전자 장치는 대칭적인 구조의 뉴럴 네트워크 모델(400)에 대하여, 동일한 역방향 깊이에 위치하는 레이어들에 기초하여 출력 레이어로부터 역방향(411)으로 순차적으로 레이어들의 분기 지점들(410, 420, 430)에서 뉴럴 네트워크 모델(400)을 분리할 수 있다. 예를 들어, 전자 장치는 대칭적인 구조의 뉴럴 네트워크 모델(400)을 제1 분기 지점(410)에 기초하여 분리할 수 있다. 다른 예를 들어, 전자 장치가 같은 역방향 깊이에 위치하는 제1 분기 상의 리쉐이프 레이어 및 제2 분기 상의 리쉐이프 레이어에 기초하여, 제2 분기 지점(420)을 기준으로 뉴럴 네트워크 모델을 분리할 수 있다. 또 다른 예를 들어, 전자 장치가 같은 역방향 깊이에 위치하는 제1 분기 상의 스플릿 레이어(split) 및 제2 분기 상의 스플릿 레이어(split)에 기초하여 제3 분기 지점(430)을 기준으로 복수의 분리된 뉴럴 네트워크 모델을 생성할 수 있다.
도 5는 일 실시예에 따른 전자 장치가 뉴럴 네트워크 모델에 포함된 분기의 분리를 스킵하는 것을 설명하는 도면이다.
일 실시예에서 전자 장치는 레이어(예: 결합 레이어(concat))에 연결된 복수의 분기들 중 제1 분기(530)가 레이어(예: 결합 레이어(concat)) 및 이전 레이어(예: 스플릿 레이어(split))와 연결되고, 제2 분기에서 상기 레이어(예: 결합 레이어(concat))로부터 입력 레이어로의 경로 상에 이전 레이어(예: 스플릿 레이어(split))가 위치하는 경우, 제2 분기 내의 레이어에 대한 분리를 스킵(skip)할 수 있다. 예를 들어, 전자 장치는 역방향(500)으로 복수의 분기들이 연결된 레이어들을 탐색할 수 있다. 예를 들어, 전자 장치는 도 5의 뉴럴 네트워크 모델에서 복수의 분기들(예: 제1 분기(530), 제2 분기 및 제3분기)이 연결된 레이어인 결합 레이어 및 스플릿 레이어를 탐색할 수 있다. 도 5에 도시된 바와 같이, 뉴럴 네트워크 모델은 결합 레이어와 스플릿 레이어가 제1 분기(530)를 통해 연결되고, 제2 분기 내에 역방향(500)으로 곱셈 레이어(mul)-덧셈 레이어(add)-곱셈 레이어(mul)가 연결되며, 제3 분기 내에 역방향(500)으로 곱셈 레이어(mul)-제곱 레이어(pow)-곱셈 레이어(mul)가 연결된다. 전자 장치는, 복수의 분기들이 레이어에 연결된 양 단이 일치하는 경우, 해당 분기 내의 레이어들에 대한 분리를 스킵할 수 있다. 예를 들어, 뉴럴 네트워크 모델의 제1 분기가 제1 분기 지점(520)에서 결합 레이어와 연결되고 제2 분기 지점(540)에서 스플릿 레이어와 연결된다. 마찬가지로, 뉴럴 네트워크 모델의 제2 분기 및 제3 분기도 제1 분기 지점(520)에서 결합 레이어와 연결되고, 제2 분기 지점(540)에서 스플릿 레이어와 연결된다. 따라서, 전자 장치는, 뉴럴 네트워크 모델에서, 레이어와 연결되는 각 분기들의 양 단에 대응하는 분기 지점들(510, 540)이 동일한 경우, 해당 분기 지점(510, 540)들 사이에 위치하는 레이어들(520)에 대한 분리를 스킵할 수 있다.
도 6a 내지 도 6b는 U-net 구조의 모델을 일 실시예에 따른 전자 장치가 분리하는 방법에 대하여 도시한다.
도 6a는 출력 레이어(예:100)를 포함하는 U-net구조의 뉴럴 네트워크 모델(600a)을 도시한다. 일 실시 예에 따른 전자 장치는, 대상 프로세싱 유닛에 최적화되도록 뉴럴 네트워크 모델을 양자화할 지점을 탐색할 수 있다. 예를 들어 전자 장치는 출력 레이어(예: 100)로부터 입력 레이어 방향인 역방향(600)으로, 뉴럴 네트워크 모델의 레이어 중 복수의 분기들과 연결되는 레이어를 탐색할 수 있다. 예를 들어, 전자 장치는 U-net 구조의 뉴럴 네트워크 모델에서 출력 레이어(예: 100)에서 역방향(600)에 위치한 레이어 중 이전 레이어들로부터 복수의 입력 데이터를 전달 받는 제1 concat 레이어를 탐색할 수 있다. 전자 장치는 결정된 제1 concat 레이어에 기초하여 제1 분기 지점(610a)을 기준으로 뉴럴 네트워크 모델을 분리함으로써 복수의 부분 모델들을 생성할 수 있다. 전자 장치는 복수의 부분 모델들 중, 제1 분기 지점(610a)을 기준으로 입력 레이어를 포함하는 부분 모델을 양자화하고, 다른 부분 모델은 양자화 하지 않을 수 있다. 전자 장치는 제1 분기 지점(610a)을 기준으로 양자화된 부분 모델과, 양자화 하지 않은 부분 모델을 결합하여 결합 모델을 생성할 수 있고, 생성된 결합 모델의 대상 프로세싱 유닛을 이용한 정확도를 측정할 수 있다.
다른 예를 들어, 전자 장치는 제1 concat 레이어 보다 역방향(600) 상에 입력 레이어와 더 가깝게 위치하는 제2 concat 레이어를 탐색할 수 있다. 전자 장치는 제1 concat 레이어와 연결된 좌측 분기가 일단(예: 제1 concat 레이어와 연결된 분기 지점(610a))에서 제1 concat 레이어와 연결되고, 제1 concat 레이어보다 입력 레이어에 가까운 이전 레이어에 타단(예: 다른 분기 지점)에서 연결되었으나, 제1 concat 레이어와 연결된 우측 분기가 분기 지점(610a)에서 제1 concat 레이어와 연결되고, 다른 분기 지점(예: 레이어들(620a) 중 입력 레이어와 가까운 일단 지점)에서 연결되므로, 우측 분기에 위치된 레이어들(620a)의 분리를 스킵(skip)하지 않을 수 있다. 다시 말해, 전자 장치는 제1 concat 레이어와 연결된 좌,우측 분기의 끝에 위치하는 레이어가 서로 다르므로, 레이어들(620a)의 분리를 스킵하지 않을 수 있다. 또한, 예를 들어, 전자 장치는 제1 concat 레이어보다 입력 레이어와 더 가까우면서, 복수의 분기들과 연결된 레이어인 제2 concat 레이어를 탐색할 수 있다. 전자 장치는 제2 concat 레이어에 기초하여, 분기 지점(630a)을 기준으로 뉴럴 네트워크 모델을 분리할 수 있다.
도 6b는 입력 레이어(예: input.1)를 포함하는 U-net구조의 뉴럴 네트워크 모델을 도시한다.
일 실시예에 따른 전자 장치는 역방향(600)으로 출력 레이어로부터 입력 레이어로부터 복수의 분기들과 연결된 레이어를 기준으로 뉴럴 네트워크 모델(600b)을 분리한 모델을 생성할 수 있다. 예를 들어, 전자 장치는 역방향(600)으로 순서대로 복수의 분기들과 연결된 레이어를 기준으로 뉴럴 네트워크 모델을 분리할 수 있다. 예를 들어, 전자 장치는 역방향(600)으로 뉴럴 네트워크 모델의 레이어 중 복수의 분기와 연결된 Relu 레이어의 분기 지점(640b)에 기초하여 뉴럴 네트워크 모델을 분리할 수 있다. 전자 장치는 분기 지점(640b)에 기초 분리된 부분 모델들 중 입력 레이어를 포함하는 부분 모델을 양자화하고, 입력 레이어를 포함하지 않은 부분 모델과 양자화된 부분 모델을 결합할 수 있다. 전자 장치는 결합된 모델을 대상 프로세싱 유닛을 이용하여 실행한 결과에 따른 정확도를 측정할 수 있다. 또한, 전자 장치는 위에서 설명한 바와 같이, 분기 지점(640b)에서의 분기 일단과 타단의 분기 지점이 서로 다르므로, 레이어들(641b)의 분리를 스킵하지 않을 수 있다. 전자 장치는, 분기 지점(640b) 보다 입력 레이어에 가까운 분기 지점(650b) 부근의 Relu 레이어에 기초하여 뉴럴 네트워크 모델을 분리할 수 있다. 전자 장치는 분리된 부분 모델들을 위에서 설명한 바와 같이 양자화하고, 결합하여 대상 프로세싱 유닛을 이용하여 실행한 정확도를 측정할 수 있다. 전자 장치는 분기 지점(640b)에 기초하여 생성된 결합 모델과 분기 지점(650b)에 기초하여 생성된 결합 모델의 측정된 정확도를 비교하여, 목표 정확도에 더 가까운 모델을 추천 모델로 제공할 수 있다.
도 7은 일 실시예에 따른 전자 장치가 부분 모델을 양자화 한 후 다른 부분 모델과 결합하는 것을 도시한 도면이다.
일 실시예에 따른 전자 장치는, 양자화된 부분 모델의 출력을 다른 부분 모델들에 입력하도록, 양자화된 부분 모델과 다른 부분 모델들을 결합할 수 있다. 예를 들어, 전자 장치는 뉴럴 네트워크 모델(700)의 분리 기준(710)에 기초하여 뉴럴 네트워크 모델(700)을 분리할 수 있다. 예를 들어, 분리 기준(710)은 복수의 분기들과 연결된 레이어에 기초하여 결정된 지점일 수 있다. 다른 예를 들어, 분리 기준(710)은 대상 프로세싱 유닛에서 지원하지 않는 명령어를 통해 연산이 수행되는 레이어에 기초하여 결정된 지점일 수 있다. 전자 장치는 분리 기준(710)에 기초하여, 뉴럴 네트워크 모델(700)을 분리하여, 입력 레이어(예: input)를 포함하는 부분 모델(720)의 일부 레이어를 양자화 할 수 있다. 전자 장치는, 출력 레이어(예: output)를 포함하는 부분 모델(730)은 양자화 하지 않을 수 있다. 다시 말해, 전자 장치는 입력 레이어로부터 분리 기준(710)까지의 부분 모델(720)의 일부 레이어는 양자화하고, 분리 기준(710)으로부터 출력 레이어 까지는 부분 모델(730)의 일부 레이어를 양자화 하지 않을 수 있다.
전자 장치는, 양자화된 부분 모델(720)과 다른 부분 모델(730)을 결합할 수 있다. 이 때, 전자 장치는, 부분 모델(720)의 출력(예: output0)을 다른 부분 모델(730)의 입력(예: input0)으로 사용하도록 부분 모델(720)과 다른 부분 모델(730)을 결합할 수 있다. 예를 들어 전자 장치는, 부분 모델(720) 및 다른 부분 모델(730) 각각과 부분 모델(720)과 다른 부분 모델(730)이 결합된 결합 모델을 함께 제공할 수 있다. 고객은 전자 장치로부터 부분 모델(720) 및 다른 부분 모델(730) 각각과 부분 모델(720) 및 다른 부분 모델(730)이 결합된 결합 모델을 함께 제공받은 경우, 부분 모델(720)의 출력 데이터(예: output0)에 기초하여, 분리 기준(710)으로부터 코드(code)를 통한 후처리(postprocess)로 추론(inference)를 수행할 지, 또는 부분 모델(720) 및 다른 부분 모델(730)을 앙상블(ensemble)하여 사용할지를 결정할 수 있다. 예를 들어, 다른 부분 모델(730)이 단일 레이어로 구성된 경우, 고객은 다른 부분 모델(730)에 대응하는 연산을 코드를 통해 구현함으로써, 부분 모델(720) 및 다른 부분 모델(730)을 통한 뉴럴 네트워크 모델(700)에 기초한 추론(inference)을 구현할 수 있다. 다른 예를 들어, 고객은 다른 부분 모델(730)이 복수의 레이어를 포함하여, 다른 부분 모델(730)에서의 연산을 구현하기 위한 코드를 짜기 어려운 경우, 부분 모델(720) 및 다른 부분 모델(730)을 앙상블함으로써 뉴럴 네트워크 모델(700)에 기초한 추론을 구현할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 또는 컴퓨터 저장 매체 또는 장치에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", "A 또는 B 중 적어도 하나", "A, B 또는 C", "A, B 및 C 중 적어도 하나", 및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (17)

  1. 프로세서에 의해 수행되는 뉴럴 네트워크 모델의 양자화 방법에 있어서,
    상기 뉴럴 네트워크 모델을, 입력 레이어에서 출력 레이어로의 데이터 전파 경로 상에서 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계;
    상기 복수의 부분 모델들 중 상기 제1 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화(quantization)함으로써 양자화된 부분 모델을 생성하는 단계;
    상기 양자화된 부분 모델 및 상기 복수의 부분 모델들의 다른 부분 모델들이 결합된 제1 결합 모델을 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제1 정확도를 측정하는 단계;
    상기 뉴럴 네트워크 모델을, 상기 제1 레이어 보다 상기 입력 레이어에 더 가깝고 복수의 분기들이 연결되는 제2 레이어에 기초하여 복수의 다른 부분 모델들로 분리하는 단계;
    상기 복수의 다른 부분 모델들 중 상기 제2 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화함으로써 양자화된 다른 부분 모델을 생성하는 단계;
    상기 양자화된 다른 부분 모델 및 상기 복수의 다른 부분 모델들 중 나머지 부분 모델들이 결합된 제2 결합 모델을 상기 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제2 정확도를 측정하는 단계; 및
    상기 제1 정확도 및 상기 제2 정확도 중 상기 대상 프로세싱 유닛에 대한 입력된 목표 정확도에 더 근접한 정확도를 갖는 결합 모델을, 상기 대상 프로세싱 유닛에 대한 추천 모델로 제공하는 단계
    를 포함하고,
    상기 제1 레이어는,
    복수의 레이어들로부터 데이터의 수신 및 복수의 레이어들에게 데이터의 전파 중 적어도 하나를 수행하도록 구성된 레이어를 포함하며,
    상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계는,
    상기 대상 프로세싱 유닛에서 실행 가능한 미리 입력된 명령어들에 기초하여, 상기 미리 입력된 명령어들 및 상기 뉴럴 네트워크 모델의 각 레이어에서 수행되는 명령어들 간의 대응 여부로부터 상기 미리 입력된 명령어들에 대응하지 않는 명령어를 포함하는 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 뉴럴 네트워크 모델에 대응하는 양자화된 모델(quantized model)을 상기 대상 프로세싱 유닛을 이용하여 실행할 시 측정된 정확도 및 상기 목표 정확도 사이의 오차가 임계 오차 범위를 초과하는 경우, 상기 출력 레이어부터 상기 입력 레이어로 복수의 분기들이 연결되는 레이어를 탐색하는 단계
    를 더 포함하는 방법.
  3. 제1항에 있어서
    상기 대상 프로세싱 유닛은,
    뉴럴 프로세싱 유닛(neural processing unit, NPU)인,
    방법.
  4. 제1항에 있어서,
    상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계는,
    상기 복수의 분기들 중 제1 분기를 통해 상기 제1 레이어로부터 상기 입력 레이어로의 경로 상에 연결된 제1 서브 부분 모델을 분리하는 단계; 및
    상기 복수의 분기들 중 제2 분기를 통해 상기 제1 레이어로부터 상기 입력 레이어로의 경로 상에 연결된 제2 서브 부분 모델을 분리하는 단계
    를 포함하는 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는 단계는,
    상기 제1 레이어에 연결된 복수의 분기들 중 제1 분기가 상기 제1 레이어 및 이전 레이어와 연결되고, 제2 분기에서 상기 제1 레이어로부터 상기 입력 레이어로의 경로 상에 상기 이전 레이어가 위치하는 경우, 상기 제2 분기 내의 레이어에 대한 분리를 스킵(skip)하는 단계
    를 포함하는 방법.
  7. 제1항에 있어서,
    상기 제1 정확도를 측정하는 단계는
    상기 양자화된 부분 모델의 출력을 상기 다른 부분 모델들에 입력하도록, 상기 양자화된 부분 모델과 상기 다른 부분 모델들을 결합하는 단계
    를 포함하는 방법.
  8. 제1항에 있어서,
    상기 제1 정확도를 측정하는 단계는
    상기 양자화된 부분 모델 및 상기 다른 부분 모델들을 앙상블(ensemble)하는 단계
    를 포함하는 방법.
  9. 하드웨어와 결합되어 제1항 내지 제4항 및 제6항 내지 제8항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  10. 뉴럴 네트워크 모델 양자화를 위한 전자 장치에 있어서,
    상기 뉴럴 네트워크 모델을 저장하는 메모리; 및
    상기 뉴럴 네트워크 모델을, 입력 레이어에서 출력 레이어로의 데이터 전파 경로 상에서 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하고, 상기 복수의 부분 모델들 중 상기 제1 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화(quantization)함으로써 양자화된 부분 모델을 생성하며, 상기 양자화된 부분 모델 및 상기 복수의 부분 모델들의 다른 부분 모델들이 결합된 제1 결합 모델을 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제1 정확도를 측정하고, 상기 뉴럴 네트워크 모델을 상기 제1 레이어 보다 상기 입력 레이어에 더 가깝고 복수의 분기들이 연결되는 제2 레이어에 기초하여 복수의 다른 부분 모델들로 분리하며, 상기 복수의 다른 부분 모델들 중 상기 제2 레이어를 기준으로 일측에 연결된 부분 모델의 적어도 일부 레이어를 양자화함으로써 양자화된 다른 부분 모델을 생성하고, 상기 양자화된 다른 부분 모델 및 상기 복수의 다른 부분 모델들 중 나머지 부분 모델들이 결합된 제2 결합 모델을 상기 대상 프로세싱 유닛을 이용하여 실행한 결과로부터 제2 정확도를 측정하며, 상기 제1 정확도 및 상기 제2 정확도 중 상기 대상 프로세싱 유닛에 대한 입력된 목표 정확도에 더 근접한 정확도를 갖는 결합 모델을 상기 대상 프로세싱 유닛에 대한 추천 모델로 제공하는 프로세서
    를 포함하고,
    상기 제1 레이어는,
    복수의 레이어들로부터 데이터의 수신 및 복수의 레이어들에게 데이터의 전파 중 적어도 하나를 수행하도록 구성된 레이어를 포함하고,
    상기 프로세서는,
    상기 대상 프로세싱 유닛에서 실행 가능한 미리 입력된 명령어들에 기초하여, 상기 미리 입력된 명령어들 및 상기 뉴럴 네트워크 모델의 각 레이어에서 수행되는 명령어들 간의 대응 여부로부터 상기 미리 입력된 명령어들에 대응하지 않는 명령어를 포함하는 레이어에 기초하여 복수의 부분 모델들로 분리함으로써, 상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는
    전자 장치.
  11. 제10항에 있어서,
    상기 프로세서는,
    상기 뉴럴 네트워크 모델에 대응하는 양자화된 모델(quantized model)을 상기 대상 프로세싱 유닛을 이용하여 실행할 시 측정된 정확도 및 상기 목표 정확도 사이의 오차가 임계 오차 범위를 초과하는 경우, 상기 출력 레이어로부터 상기 입력 레이어로 복수의 분기들이 연결되는 레이어를 탐색하는
    전자 장치.
  12. 제10항에 있어서,
    상기 대상 프로세싱 유닛은,
    뉴럴 프로세싱 유닛(neural processing unit, NPU)인,
    전자 장치.
  13. 제10항에 있어서,
    상기 프로세서는,
    상기 복수의 분기들 중 제1 분기를 통해 상기 제1 레이어로부터 입력 레이어로의 경로 상에 연결된 제1 서브 부분 모델을 분리하고, 상기 복수의 분기들 중 제2 분기를 통해 상기 제1 레이어로부터 상기 입력 레이어로의 경로 상에 연결된 제2 서브 부분 모델을 분리함으로써, 상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는
    전자 장치.
  14. 삭제
  15. 제10항에 있어서,
    상기 프로세서는,
    상기 제1 레이어에 연결된 복수의 분기들 중 제1 분기가 상기 제1 레이어 및 이전 레이어와 연결되고, 제2 분기에서 상기 제1 레이어로부터 상기 입력 레이어로의 경로 상에 상기 이전 레이어가 위치하는 경우, 상기 제2 분기 내의 레이어에 대한 분리를 스킵(skip)함으로써, 상기 복수의 분기들(branches)이 연결되는 제1 레이어에 기초하여 복수의 부분 모델들로 분리하는
    전자 장치.
  16. 제10항에 있어서,
    상기 프로세서는,
    상기 양자화된 부분 모델의 출력을 상기 다른 부분 모델들에 입력하도록, 상기 양자화된 부분 모델과 상기 다른 부분 모델들을 결합함으로써, 상기 제1 정확도를 측정하는
    전자 장치.
  17. 제10항에 있어서,
    상기 프로세서는,
    상기 양자화된 부분 모델 및 상기 다른 부분 모델들을 앙상블(ensemble)함으로써, 상기 제1 정확도를 측정하는
    전자 장치.

KR1020240011534A 2024-01-25 2024-01-25 대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델 제공 방법 및 장치 KR102659650B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020240011534A KR102659650B1 (ko) 2024-01-25 2024-01-25 대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델 제공 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020240011534A KR102659650B1 (ko) 2024-01-25 2024-01-25 대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델 제공 방법 및 장치

Publications (1)

Publication Number Publication Date
KR102659650B1 true KR102659650B1 (ko) 2024-04-23

Family

ID=90880831

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020240011534A KR102659650B1 (ko) 2024-01-25 2024-01-25 대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델 제공 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102659650B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10643124B2 (en) * 2016-08-12 2020-05-05 Beijing Deephi Intelligent Technology Co., Ltd. Method and device for quantizing complex artificial neural network
KR20200086581A (ko) * 2019-01-09 2020-07-17 삼성전자주식회사 뉴럴 네트워크 양자화를 위한 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10643124B2 (en) * 2016-08-12 2020-05-05 Beijing Deephi Intelligent Technology Co., Ltd. Method and device for quantizing complex artificial neural network
KR20200086581A (ko) * 2019-01-09 2020-07-17 삼성전자주식회사 뉴럴 네트워크 양자화를 위한 방법 및 장치

Similar Documents

Publication Publication Date Title
CN111699498B (zh) 作为问答的多任务学习
US20220043972A1 (en) Answer generating device, answer learning device, answer generating method, and answer generating program
KR102167719B1 (ko) 언어 모델 학습 방법 및 장치, 음성 인식 방법 및 장치
KR20160143505A (ko) 신경망의 연산량을 줄이는 방법 및 시스템
Zhang et al. Lattice transformer for speech translation
KR20200127946A (ko) 문장, 문서 특징값 및 문장 가중치 간의 상관관계를 학습한 인공 신경망에 의해 생성된 설명이 부가된 문서 분류 방법
CN112905772B (zh) 语义相关性分析方法、装置及相关产品
Demidovskij et al. Effective post-training quantization of neural networks for inference on low power neural accelerator
CN116029359A (zh) 计算机可读记录介质、机器学习的方法以及信息处理设备
KR102659650B1 (ko) 대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델 제공 방법 및 장치
JP7425216B2 (ja) サブ-カーネルサーチングモジュールを利用してオン-デバイスニューラルネットワークモデルを最適化する方法及び装置
KR20220098628A (ko) 관계성 학습을 이용한 자연어 처리 시스템 및 방법
KR20220032861A (ko) 하드웨어에서의 성능을 고려한 뉴럴 아키텍처 서치 방법 빛 장치
KR101928208B1 (ko) 뉴럴 네트워크의 디버깅 방법, 장치 및 시스템
US11928429B2 (en) Token packing for sequence models
US11275882B1 (en) System, method, and computer program product for group and isolation prediction using machine learning and applications in analog placement and sizing
KR102610429B1 (ko) 인공신경망과 연산 가속기 구조 통합 탐색 장치 및 방법
US11429858B2 (en) Deep learning experiment content generation based on single design
KR20200120595A (ko) 언어 모델 학습 방법 및 장치, 음성 인식 방법 및 장치
Wang et al. Multilingual Speech Emotion Recognition With Multi-Gating Mechanism and Neural Architecture Search
US20240185072A1 (en) Computer-readable recording medium having stored therein machine learning program, method for machine learning, and information processing apparatus
KR102248975B1 (ko) 심층 콘볼루션 신경망의 학습 방법 및 그 장치
US20240220802A1 (en) Computer-readable recording medium having stored therein machine learning program, method for machine learning, and information processing apparatus
KR102575034B1 (ko) 시퀀스 레이블링 기반의 의존 구문 분석 방법, 컴퓨팅장치 및 컴퓨터-판독가능 매체
KR102576797B1 (ko) 다중 손실 함수를 활용한 문장 유사도 성능 향상 방법 및 장치

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant