KR102656567B1 - 다양한 유형의 신경망 모델을 변환 및 활용할 수 있도록 하는 방법 및 장치 - Google Patents

다양한 유형의 신경망 모델을 변환 및 활용할 수 있도록 하는 방법 및 장치 Download PDF

Info

Publication number
KR102656567B1
KR102656567B1 KR1020220189571A KR20220189571A KR102656567B1 KR 102656567 B1 KR102656567 B1 KR 102656567B1 KR 1020220189571 A KR1020220189571 A KR 1020220189571A KR 20220189571 A KR20220189571 A KR 20220189571A KR 102656567 B1 KR102656567 B1 KR 102656567B1
Authority
KR
South Korea
Prior art keywords
format
neural network
input data
network model
neural
Prior art date
Application number
KR1020220189571A
Other languages
English (en)
Other versions
KR20230104037A (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 주식회사 에임퓨처
Publication of KR20230104037A publication Critical patent/KR20230104037A/ko
Application granted granted Critical
Publication of KR102656567B1 publication Critical patent/KR102656567B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

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)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Document Processing Apparatus (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 개시에 따르면, 신경망 모델을 획득하는 단계; 신경망 모델의 변환을 위한 기준 포맷을 결정하는 단계; 및 신경망 모델을 기준 포맷의 모델로 변환하는 단계를 포함하고, 기준 포맷으로 변환된 모델이 신경 처리 장치에서 실행되는 전자 장치에서 정보를 처리하는 방법이 개시된다.

Description

다양한 유형의 신경망 모델을 변환 및 활용할 수 있도록 하는 방법 및 장치 {APPARATUS FOR ENABLING THE CONVERSION AND UTILIZATION OF VARIOUS FORMATS OF NEURAL NETWORK MODELS AND METHOD THEREOF}
본 개시는 본 발명은 딥러닝 프레임워크에 따라 다양한 형태로 구현될 수 있는 신경망 모델의 변환을 가능하게 하는 방법 및 장치에 관한 것이다. 본 개시에서 신경망 모델은 신경 처리 장치(NPU)에서 실행되는 특정 포맷으로 변환될 수 있고, 한편으로는 신경망 모델의 최적의 신경망 성능(neural network performance)을 확보하도록 시도할 수 있다.
신경망 모델이 설계된 후 신경망 모델은 일반적으로 딥 러닝 프레임워크에서 구현될 수 있다. 각각의 프레임워크에 대해 특정 신경망 포맷을 활용하는 다양한 딥 러닝 프레임워크가 있기 때문에 신경망 모델은 여러 포맷으로 표현될 수 있다. 신경망 모델을 다양한 변환이전 포맷(pre-conversion format)으로부터 신경 처리 장치(NPU)에서 실행할 수 있는 포맷으로 변환하기 위해 일련의 변환 도구 및 최적화 기술이 활용될 수 있으며, 또한, 각각의 변환이전 포맷으로부터 생성된 신경망 모델이 최적의 신경망 성능을 가지도록 하는 변환 방법을 결정할 필요가 있다.
ONNX 및 NNEF는 다양한 신경망 모델 포맷 간의 변환을 용이하게 하는 신경망의 교환 가능한 포맷에 대한 예시들에 해당할 수 있다. 관련하여, Jin, Tian, Gheorghe-Teodor Bercea, Tung D. Le, Tong Chen, Gong Su, Haruki Imai, Yasushi Negishi et al. "Compiling ONNX Neural Network Models Using MLIR." arXiv preprint arXiv:2008.08272 (2020) (이하 Jin, et al.) 은 훈련된 신경망 모델을 특정 하드웨어 가속기에 대한 기본 코드로 다시 작성하는 컴파일러를 제안하기 위해 ONNX 포맷을 활용하는 예시적인 접근 방식에 대한 논의를 포함한다. 다만, 본 개시는 신규한 컴파일러를 제안하는 것이 아니므로 Jin, et al.과는 상이한 내용을 포함할 수 있다. 또한, 본 개시는 확장 가능하고 유연한 신경 처리 장치(NPU, Neural Processing Unit)을 구현하기 위해 다양한 변환 및 하드웨어 명령 매핑 도구(conversion and hardware instruction mapping tool)을 사용하는 더 높은 레벨의 모델 포맷 변환 접근 방식을 제안하며, 사용하는 변환 및 하드웨어 명령 맵핑 도구은 ONNX 포맷을 포함할 수 있으나 이에 한정되지 않는다.
Lin, Wei-Fen, Der-Yu Tsai, Luba Tang, Cheng-Tao Hsieh, Cheng-Yi Chou, Ping-Hao Chang, and Luis Hsu. "ONNC: A compilation framework connecting ONNX to proprietary deep learning accelerators." In 2019 IEEE International Conference on Artificial Intelligence Circuits and Systems (AICAS), pp. 214-218. IEEE, 2019, (이하 Lin, et al.)은 하드웨어 가속기를 위한 ONNX 기반 컴파일 프레임워크에 대한 논의를 포함한다. Lin, et al. 에 따르면 컴파일러에 ONNX를 직접 적용하면 메모리 소비 및 속도 향상 측면에서 딥 러닝 가속기의 성능이 향상될 수 있다. Lin, et al. 에서는 신경망 모델이 ONNX 기반 포맷으로 준비되었다고 가정하고 ONNX 기반 신경망 모델 포맷을 번역하기 위한 예시적인 접근 방식에 대해 설명합니다. 본 발명은 ONNX 기반 포맷이 존재하지 않거나, 혹은 특정 유형의 신경망 모델에 최적화되어 있지 않을 수 있는 신경망 모델을 변환하는 관점에 대한 논의를 포함하며, 이 경우 하드웨어 가속기를 위한 신경망 모델과 관련하여 낮은 레벨(low-level)의 명령을 위한 별도 변환기(converter) 및 하강 모듈(lowering module)이 필요하므로, Lin, et al. 과는 상이한 내용을 포함할 수 있다.
Ambrosi, Joao, Aayush Ankit, Rodrigo Antunes, Sai Rahul Chalamalasetti, Soumitra Chatterjee, Izzat El Hajj, Guilherme Fachini et al. "Hardware-software co-design for an analog-digital accelerator for machine learning." In 2018 IEEE International Conference on Rebooting Computing (ICRC), pp. 1-13. IEEE, 2018, (이하 J. Ambrosi et al.)은 하드웨어 가속기용 소프트웨어 스택의 일부로 ONNX를 적용하는 방법에 대한 논의를 포함한다. J. Ambrosi et al.은 신경망 모델을 가져오기(importing) 위하여 백엔드(backend)로 ONNX를 임베딩하는(embed) 접근 방식을 제안할 수 있다. J. Ambrosi et al.은 다양한 유형의 신경망 모델에 적응하는 작업을 ONNX에만 의존하고 다른 포맷의 변환 방법에 대해서는 논의하지 않는다. 본 발명은 포맷 변환 과정에서 더 큰 유연성을 제공하기 위해 다른 신경망 모델 포맷 변환 접근법이 ONNX 포맷 변환과 혼합되는 하이브리드 접근법에 대한 제안을 포함하므로 J. Ambrosi et al.과는 상이한 내용을 포함할 수 있다.
박상민, 허준영, "ONNX기반 스파이킹 심층 신경망 변환 도구", 한국인터넷방송통신학회 논문지(JIIBC), 2020, vol.20, no.2, pp. 165-170, (이하, Park et al)은 기존 신경망 모델을 스파이크 신경망 모델로 변환하는 과정에서 스파이킹 심층 신경망을 효율적으로 표현하기 위한 도구로 ONNX를 활용하는 방법에 대한 논의를 포함한다. Park, et al.은 AI 프레임워크마다 신경망 그래프를 표현하는 방식이 다름을 원인으로 하여 발생하는 변환 과정의 필요성에 대해 논의한다. 동일한 신경망 모델을 다른 프레임워크를 사용하여 ONNX로 변환하는 경우 각 프레임워크마다 계산 과정에서 손실이 다른데, 본 발명은 손실을 분석하여 가장 효율적인 프레임워크를 선택하는 방법을 제안하므로, Park, et al.보다 진보한 내용을 포함할 수 있다.
관련하여, CN114092313A 건이나 CN112328674A 건 등의 선행문헌들을 더 참조할 수 있다.
본 실시 예가 해결하고자 하는 과제는, 신경망 모델을 획득하고, 신경망 모델의 변환을 위한 기준 포맷을 결정하고, 신경망 모델을 기준 포맷의 모델로 변환하고, 기준 포맷으로 변환된 모델이 신경 처리 장치(NPU, Neural Processing Unit)에서 실행되는 전자 장치 및 그 방법을 제공하는 데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일실시예에 따른 전자 장치에서 정보를 처리하는 방법은 신경망 모델을 획득하는 단계; 상기 신경망 모델의 변환을 위한 기준 포맷을 결정하는 단계; 및 상기 신경망 모델을 상기 기준 포맷의 모델로 변환하는 단계를 포함하고, 상기 기준 포맷으로 변환된 모델이 신경 처리 장치(NPU, Neural Processing Unit)에서 실행된다.
일실시예에 따르면, 상기 신경망 모델이 부동 소수점 데이터를 포함하는 경우, 상기 기준 포맷의 모델로 변환하는 단계는 설정된 Q-넘버(Q-number)에 기초하여 상기 신경망 모델이 포함하는 데이터 중 적어도 일부를 양자화하는(quantize) 단계를 포함할 수 있다.
일실시예에 따르면, 상기 정보를 처리하는 방법은, 복수의 후보 Q-넘버 별로, 각 후보 Q-넘버를 이용하는 경우의 상기 변환의 정밀도(precision)를 판단하는 단계; 및 상기 정밀도를 판단한 결과에 기초하여, 상기 Q-넘버를 결정하는 단계를 더 포함할 수 있다.
일실시예에 따르면, 상기 변환의 정밀도를 판단하는 단계는 상기 각 후보 Q-넘버를 이용하는 경우의 평균제곱오차(MSE, Mean Squred Error)를 확인하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 변환의 정밀도를 판단하는 단계는 테스트 신경망 모델을 획득하는 단계; 및 상기 테스트 신경망 모델에 대하여 상기 변환의 정밀도를 확인하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 테스트 신경망 모델을 획득하는 단계는 상기 신경망 모델에 비해 레이어 별 노드의 개수가 더 적은 제1조건, 상기 신경망 모델에 비해 레이어의 노드 별 가중치가 더 작은 제2조건 및 상기 신경망 모델에 비해 실행을 위하여 필요한 입출력 데이터의 개수가 적은 제3조건 중 적어도 하나를 만족하는 모델을 획득하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 정보를 처리하는 방법은, 상기 기준 포맷으로 변환된 모델을 상기 신경 처리 장치에서 실행하기 위한 입력 데이터의 크기를 결정하는 단계를 더 포함할 수 있다.
일실시예에 따르면, 상기 입력 데이터의 크기를 결정하는 단계는 상기 신경 처리 장치의 계산반복(calculation iteration)을 최소화하는 입력 데이터의 크기를 판단하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 기준 포맷으로 변환된 모델의 실행을 위하여 복수의 신경 처리 장치가 이용되는 경우, 상기 입력 데이터의 크기를 결정하는 단계는 상기 복수의 신경 처리 장치 별로, 한 번의 계산을 통하여 처리 가능한 데이터의 수를 판단하는 단계; 상기 복수의 신경 처리 장치 별로 할당되는 입력 데이터의 수를 판단하는 단계; 상기 복수의 신경 처리 장치 중, 상기 처리 가능한 데이터의 수 대비 상기 할당되는 입력 데이터의 수의 비율이 최대가 되는 신경 처리 장치를 확인하는 단계; 및 상기 확인한 신경 처리 장치에 대하여, 계산반복을 최소화하는 입력 데이터의 크기를 판단하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 기준 포맷을 결정하는 단계는 상기 신경 처리 장치에서 실행 가능한 포맷을 확인하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 신경 처리 장치에서 실행 가능한 포맷이 복수인 경우, 상기 정보를 처리하는 방법은, 상기 복수의 포맷 별로, 각 포맷을 이용하여 상기 신경망 모델을 변환하는 경우의 상기 신경 처리 장치에서의 추론(inference) 결과를 확인하는 단계; 및 상기 추론 결과에 기초하여 상기 기준 포맷을 결정하는 단계를 더 포함할 수 있다.
일실시예에 따르면, 상기 기준 포맷의 모델로 변환하는 단계는 상기 신경망 모델을 상기 기준 포맷의 모델로 직접적으로(directly) 변환 가능한지 여부를 판단하는 단계; 상기 신경망 모델을 상기 기준 포맷의 모델로 직접적으로 변환 가능한 경우, 상기 신경망 모델을 상기 기준 포맷의 모델로 직접적으로 변환하는 단계; 및 상기 신경망 모델을 상기 기준 포맷의 모델로 직접적으로 변환 가능하지 않은 경우, 상기 신경망 모델을 중간(intermediate) 포맷의 모델로 변환하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 중간 포맷은 YAML 포맷을 포함할 수 있다.
일실시예에 따른 정보를 처리하는 전자 장치는 명령어를 저장하는 메모리 및 프로세서를 포함하고, 상기 프로세서는, 상기 메모리와 연결되어, 신경망 모델을 획득하고, 상기 신경망 모델의 변환을 위한 기준 포맷을 결정하고, 상기 신경망 모델을 상기 기준 포맷의 모델로 변환하고, 상기 기준 포맷으로 변환된 모델이 신경 처리 장치에서 실행된다.
기타 실시 예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 개시에 따르면, 정보를 처리하는 전자 장치 및 그 방법은 신경망 모델을 변환함으로써 신경 처리 장치에서 실행이 가능하도록 할 수 있다.
또한, 본 개시의 일실시예에 따르면, 정보를 처리하는 전자 장치 및 그 방법은 신경망 모델이 최적의 신경망 성능을 확보하도록 할 수 있다.
발명의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당해 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 일실시예에 따른 본 개시의 내용을 개략적으로 설명하기 위한 도면이다.
도 2는 NMP(Neuromorphic Processor) 변환 및 매핑 도구의 세트가 이용되어 신경 처리 장치에서 실행 가능한 최종 포맷으로 변환되며, ONNX 기반 변환 도구가 NMP 변환 불가능 포맷(non-NMP-convertible format)을 NMP 변환 가능 포맷(NMP-convertible format)으로 변환하기 위한 보충적 도구로 이용되는 내용을 설명하기 위한 도면이다.
도 3은 NMP 변환 가능 포맷의 데이터 및 NMP 변환 불가능 포맷의 데이터 중 적어도 하나를 포함하는 다양한 신경망 포맷을 ONNX 변환 도구를 이용하여 변환하는, 2단계(two-step)의 변환 방법을 설명하기 위한 도면이다.
도 4는 일실시예에 따른 다양한 신경망 포맷이 ONNX 포맷 기반의 중간 표현(intermediate representation)으로 변환되고 중간 표현이 NMP 지원 포맷(NMP-supported format)으로 변환되어 신경 처리 장치에서 실행될 수 있는 최종 실행 파일로 변환되는 방법을 설명하기 위한 도면이다.
도 5는 신경 처리 장치의 개수를 고려하여 신경망 계층에서 계산을 최소화하기 위해 입력 데이터의 최적 크기를 계산하는 방법을 설명하기 위한 도면이다.
도 6은 신경 처리 장치와 기계학습 프레임워크(ML Framework) 간의 추론(inference) 결과를 비교하여 양자화를 위한 최적의 Q 값(Q-Value) 또는 Q-넘버(Q-number)를 찾기 위해 작은 테스트 신경망 모델(test NN model)을 설계하는 방법을 설명하기 위한 도면이다.
도 7은 원본 데이터 포맷의 신경망 모델을 이용하여 테스트 세트를 추론하는 경우와 ONNX에 기반하여 PyTorch 데이터 포맷에서 TensorFlow 데이터 포맷 및 Caffe 데이터 포맷 중 적어도 하나로 변환된 신경망 모델을 이용하여 동일 테스트 세트를 추론하는 경우의 결과를 비교함으로써 최적의 신경망 모델 포맷을 찾는 방법을 설명하기 위한 도면이다.
도 8은 원본 데이터 포맷의 신경망 모델을 이용하여 테스트 세트를 추론하는 경우와 ONNX에 기반하여 PyTorch 데이터 포맷에서 TensorFlow 데이터 포맷 및 Caffe 데이터 포맷 중 적어도 하나로 변환된 신경망 모델을 이용하여 동일 테스트 세트를 추론하되 TensorFlow 데이터 포맷 및 Caffe 데이터 포맷 중 적어도 하나가 NMP 지원 포맷으로 더 변환되는 경우의 추론 결과를 비교함으로써 최적의 신경망 모델 포맷을 찾는 방법을 설명하기 위한 도면이다.
도 9는 일실시예에 따른 전자 장치의 정보 처리 방법의 동작 흐름도이다.
도 10은 일실시예에 따른 정보를 처리하기 위한 전자 장치의 구성의 예시도이다.
실시 예들에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “...부”, “...모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
명세서 전체에서 기재된 “a, b, 및 c 중 적어도 하나”의 표현은, 'a 단독', 'b 단독', 'c 단독', 'a 및 b', 'a 및 c', 'b 및 c', 또는 'a,b,c 모두'를 포괄할 수 있다.
이하에서 언급되는 "단말"은 네트워크를 통해 서버나 타 단말에 접속할 수 있는 컴퓨터나 휴대용 단말로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop) 등을 포함하고, 휴대용 단말은 예를 들어, 휴대성과 이동성이 보장되는 무선 통신 장치로서, IMT(International Mobile Telecommunication), CDMA(Code Division Multiple Access), W-CDMA(W-Code Division Multiple Access), LTE(Long Term Evolution) 등의 통신 기반 단말, 스마트폰, 태블릿 PC 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 1은 일실시예에 따른 본 개시의 내용을 개략적으로 설명하기 위한 도면이다.
기계 학습(ML)은 계층과 노드가 있는 그래프 구조를 설계하고 추론 결정을 내리기 위해 그래프 구조에 있는 노드의 가중치와 편향을 대량의 교육 데이터 세트에 기초하여 교육하는 통계적 접근 방식을 포함한다.
신경망 모델이 설계된 후, 신경망 모델은 일반적으로 훈련 데이터를 기반으로 훈련되기 이전에 딥 러닝 프레임워크에서 실행될 수 있다. 자신의 프레임워크 각각에 대해 특정 신경망 포맷을 활용하는 다수의 상이한 딥 러닝(deep learning) 프레임워크가 존재할 수 있으므로, 신경망 모델(101)은 도 1에 도시된 바와 같이 다수의 상이한 포맷으로 표현될 수 있다(102).
본 개시에서는 신경망 모델을 다양한 사전 변환 포맷으로부터 신경 처리 장치에서 실행될 수 있는 포맷으로 변환하기 위해 일련의 변환 도구 및 최적화 기술을 활용한다. 변환 도구 세트는 신경망 그래프를 구문 분석(parse)하고 이후의 하위 레벨의 신경 처리 장치에서 직렬화(serialize) 및 처리(process)할 수 있는 중간 표현을 생성할 수 있다. 예시적인 실시예에서, 신경망의 중간 표현을 저장하기 위해 YAML 유형의 마크업 언어 파일이 사용될 수 있다.
일부 실시예에서, "유닛"이라는 용어는 임의의 전기 회로, 특징, 부품, 전자 부품의 조립체 등을 포함할 수 있다. 즉, "장치"는 마이크로컨트롤러, 집적 회로, 칩, 마이크로칩, 축소 명령 세트 컴퓨터(RISC, Reduced Instruction Set Computers), 특정 용도용 집적 회로(ASIC, Application-Specific Integrated Circuit), 필드 프로그래머블 게이트 어레이(FPGA, Field Programmable Gate Array), 그래픽 처리 장치(GPU), 논리 회로 및 본 개시에서 설명되는 다양한 작업 및 기능을 실행할 수 있는 기타 회로 또는 프로세서를 포함하는, 임의의 프로세서 기반 또는 마이크로프로세서 기반의 시스템을 포함할 수 있다. 또한, 상기 예시는 단지 예시일 뿐이므로 "유닛"라는 용어의 정의나 의미를 어떤 식으로든 제한하려는 의도가 아니다.
일부 실시예에서, 본 명세서에 기술된 다양한 유닛은 마이크로프로세서, 마이크로컨트롤러 등과 같은 처리 회로에 포함되거나, 포함 외의 다른 방식에 따라 실행(또는 구현)될 수 있다.
본 개시는 신경망 모델에 대한 최적의 신경망 성능을 찾기 위한 시도도 포함한다. 신경망 모델은 딥 러닝 프레임워크에 따라 다양한 사전 변환된 포맷으로 존재할 수 있다. 양자화(quantization)는 파라미터의 데이터 크기를 작게 하여 처리 속도를 줄임으로써 신경망의 최적 성능을 달성하기 시도 중 하나이다. 예를 들어, 양자화는 부동 소수점 데이터(floating-point data)를 고정 소수점 데이터(fixed-point data)로 변환하고 부동 소수점 데이터의 가변 소수점 값을 불연속 유한 값(discrete finite values)의 세트에 매핑하는 프로세스를 포함할 수 있다. 양자화된 데이터는 일부 정밀도(precision)의 손실을 가져올 수 있지만 양자화된 데이터의 크기는 일반적으로 더 작기 때문에 전체 파라미터 세트의 크기가 더 작아지고 메모리 공간을 덜 사용하도록 할 수 있다. 더 적은 메모리 공간의 소비는 하드웨어 장치의 로드 및 저장 반복 횟수를 줄일 수 있는데, 이는, 파티션된 데이터 블롭의 수가 더 적게 생성될 수 있으므로, 예컨대 신경 처리 장치(NPU)의 메모리 블롭과 시스템 메모리 공간 사이의 저장 반복 횟수가 줄어드는 것을 포함할 수 있다. 또한, 데이터가 양자화되는 경우, 양자화된 파라미터 데이터 세트에 연관되는 네트워크는 그 크기가 작고, 하드웨어에서 일반적으로 고정 소수점 산술(fixed-point arithmetic)을 처리하기 위한 계산 시간 및 지연 시간은 부동 소수점 산술(floating-point arithmetic)을 처리하기 위한 계산 시간 및 지연 시간보다 적으므로, 계산 및 처리 시간의 합을 줄이는 데 도움이 될 수 있다.
이와 같이 NMP(104)에서의 연산을 위해서 양자화 및 최적화를 위한 NMP 변환기(NMP-Converter with Quantization and Optimization)(103)를 사용하여 신경망 포맷의 변환, 양자화 및 최적화를 수행할 수 있다.
본 개시의 전반적인 내용의 일 예시는, 다양한 유형의 신경망 모델을 변환하고, 신경망 모델들을 어셈블리 레벨의 명령어에 맵핑하고, 어셈블리 레벨의 명령어를 신경 처리 장치에 맵핑하고, 어셈블리 레벨의 명령어를 활용하여 입력 데이터 벡터를 하이퍼 파라미터 세트에 곱하고 곱셈의 결과에 다른 바이어스(bias)의 세트를 더하는 과정을 신경망의 각 내부 레이어에 대하여 수행함으로써 입력 데이터를 프로세싱하며, 곱셈 및 더하기의 결과로 생성된 확률적 결과(probabilistic result)에 기반하여 최종 결과(outcome)를 추론하는 과정 중 적어도 일부를 포함할 수 있다.
도 2 내지 도 4에서는 본 개시에 따라 변환 프로세스가 적용되는 다양한 접근 예시들이 설명된다. 예를 들어, 도 2는 NMP 변환 및 매핑 도구의 세트가 이용되어 NMP 포맷으로 변환되어 신경 처리 장치에서 실행 가능하게 되고, ONNX 기반 변환 도구가 NMP 변환 불가능 포맷을 NMP 변환 가능 포맷으로 변환하기 위한 보충적 도구로 이용되는 접근 방법을 설명한다. 관련하여, NMP 변환 가능 포맷은 최종적으로 NMP 포맷(NMP format)으로 변환 가능 포맷에 해당할 수 있다. 또한, ONNX는 개별 신경망 프레임워크를 NMP 변환 가능 포맷으로 변환하는 도구를 포함할 수 있다.
먼저, 명확한 설명을 위해, 신경망 포맷과 관련하여 본 개시 전반에서 사용되는 일련의 용어를 다음과 같이 정의할 수 있다.
- NMP 포맷: NMP(Neuromorphic Processor) 하드웨어 가속기에서 실행 가능한 신경망 데이터 포맷.
- NMP 변환 가능 포맷: NMP 변환기에 의해 NMP 포맷으로 변환 가능한 신경망 데이터 포맷.
- NMP 변환 불가능 포맷(non-NMP-convertible format): NMP 변환기에 의해 NMP 포맷으로 직접 변환할 수 없는 신경망 데이터 포맷
- Pre-NMP 포맷: NMP 포맷으로 직접 변환할 수 있는지 여부와 상관없이, NMP 포맷으로 변환되기 전의 신경망 데이터 포맷
신경망 모델을 설계한 후 다양한 딥러닝 프레임워크를 사용하여 신경망 모델을 구현할 수 있다. 예를 들어 TensorFlow, Caffe, Sonnet 또는 PyTorch는 오늘날 자주 사용되는 딥 러닝 프레임워크 중 일부일 수 있다. 이러한 각 딥 러닝 프레임워크는 각 딥 러닝 프레임워크에 고유한 데이터 포맷의 출력을 생성할 수 있다. 예를 들어 TensorFlow는 확장자가 '.h5'인 HDF5 파일로 저장할 수 있는 모델 출력을 생성하고 TensorFlow Lite 모델은 파일 확장자가 '.tflite'인 FlatBuffer 포맷으로 저장되며, Caffe 모델은 파일 확장자는 '.caffemodel'인 파일로 저장되고, PyTorch 모델은 대표적으로 파일 확장자가 '.pt' 또는 '.pth'인 파일에 저장될 수 있다. 딥러닝 프레임워크에 특화된 데이터 포맷을 변환하기 위해 일련의 변환 도구(예: NMP 변환기) 및 매핑 도구(예: NMP-맵퍼(Mapper), 어댑터(Adapter))를 사용할 수 있다. 구체적으로, 딥러닝 프레임워크에 특화된 Pre-NMP 포맷을 NMP 포맷으로 변환하고 이러한 변환 및 매핑 소프트웨어 도구 세트를 사용할 수 있는 경우 NMP 포맷을 하위 레벨의(lower-level) 기계 명령어(machine instructions)에 매핑할 수 있다. 도 2의 예시에서, TensorFlow와 Caffe의 출력은 NMP 변환기 및 맵퍼에 의해 변환 가능하며, NMP 변환기 및 맵퍼에 의해 직접 처리되어 1단계 변환 프로세스(1 step conversion process)에 의해 NMP 포맷의 신경망 데이터(예를 들어 '.nmp' 확장자를 사용하는 파일)이 생성될 수 있다.
도 2에서는 이해를 돕기 위하여 - NMP 변환 가능 포맷으로 TensorFlow(TF), Caffe를, - NMP 변환 불가능 포맷으로 PyTorch를 예시로 들었을 뿐, 반드시 이에 한정하여 본 개시의 범위가 해석될 필요는 없다. 한편 실시예 전반에서 TF로 설명되는 NMP 포맷은 TFLite일 수 있다.
실시예들에 따르면, 1단계 변환 프로세스(1 step conversion process)와 2단계 변환 프로세스(2 step conversion process)는 실시예들에서 전체 신경망 모델 또는 전체 신경망 모델을 구성하는 각 신경망 프레임워크마다 자동적으로 결정되어 수행될 수 있다.
전체 신경망 모델은 A) 하나의 신경망 모델 포맷(파일)로 구성될 수도 있지만, B) 복수의 신경망 모델 포맷(파일)들의 조합으로 구성될 수도 있다. "A)"의 경우 실시예들에서는 1 단계 변환 동작 및 2 단계 변환 동작 중 하나를 선택할 수 있다. "B)"의 경우, 실시예들에서는 각 신경망 모델 포맷(파일) 마다 1 단계 변환 동작 및 2 단계 변환 동작 중 하나를 선택할 수 있다.
도 2의 실시예에서(200), 특정 pre-NMP 포맷에 대한 직접적인 변환 및 매핑 방법이 존재하지 않는 경우(예: 'NMP 변환 불가능 포맷'의 예인 PyTorch 출력 데이터 포맷) ONNX 기반 변환 도구가 'NMP 변환 불가능 포맷'을 'NMP 변환 가능 포맷'(예컨대 본 예시의 경우 TensorFlow 데이터 포맷)으로 변환하기 위해 사용될 수 있다. 이러한 중간 포맷은 결국 NMP 하드웨어 가속기에서 실행되는 NMP 포맷으로 변환될 수 있다. 이러한 두 단계에 따른 변환 프로세스가 2단계 변환 프로세스에 해당할 수 있다.
두 가지 유형의 'Pre-NMP 포맷' 데이터가 최종적으로 'NMP 포맷' 데이터로 변환된 후, 변환된 NMP 포맷을 이용하여 신경 처리 장치(예컨대 NMP)에서 최종 실행 파일을 실행할 수 있다.
도 3은 NMP 변환 가능 포맷의 데이터 및 NMP 변환 불가능 포맷의 데이터 중 적어도 하나를 포함하는 다양한 신경망 포맷을 ONNX 변환 도구를 이용하여 변환하는 변환 방법을 설명하기 위한 도면이다(300). 본 개시의 변환 및 매핑 도구(예를 들어, 도 3의 NMP 변환기)의 사용에 기초하여, 중간(intermediate)의 'NMP 변환 가능 포맷' 데이터는 결국 최종적으로 NMP 포맷으로 변환될 수 있다. 이것은 임의의 'Pre-NMP 포맷' 신경망 데이터가 먼저 중간의 'NMP 변환 가능 포맷' 데이터로 변환된 다음 'NMP 포맷' 데이터로 변환되는 일부 예시적인 실시예(예를 들어, 2단계 변환 프로세스) 중 하나일 수 있다.
2단계 프로세스의 두 단계는 다음과 같이 요약될 수 있다.
1) 첫 번째 단계: 'NMP-변환 가능 포맷' 또는 'NMP-변환 불가능 포맷'으로 존재할 수 있는 다양한 신경망 포맷을 중간의(intermediate) 'NMP-변환 가능 포맷'(중간 표현, intermediate representation)으로 변환함
2) 두 번째 단계: 중간의 'NMP 변환 가능 포맷'을 'NMP 포맷'으로 변환(변환 및 매핑)
첫 번째 단계에서는 ONNX 기반 변환 도구가 이용될 수 있다.
두 번째 단계에서는 NMP 하드웨어 가속기를 위해 특정적으로(specifically) 설계 및 개발된 일련의 NMP 변환 및 매핑 도구가 중간 'NMP 변환 가능 포맷'에 이용될 수 있다.
첫 번째 'NMP 변환 가능 포맷'은 NMP 포맷으로 직접 변환할 수 있지만, 그럼에도 불구하고 두 번째 중간 'NMP 변환 가능 포맷'으로 변환하는 것이 여러 가지 이유로 때때로 필요할 수 있다. 예를 들어, 특히 최적화 목적을 위해 상세한 신경망 모델 구조를 두 번째 중간 'NMP 변환 가능 포맷'의 형태로 검증해야 하는 경우, 중간 포맷으로의 변환 과정을 거치는 것이 유용할 수 있다. 중간 포맷의 데이터는 신경 처리 장치에서 실행할 수 있는 최종 바이너리 실행 파일(final binary executable)을 생성하기 위해 최종적으로는 NMP 포맷 데이터로 변환된다.
한편 실시 예에서 모든 신경망 모델을 TensorFlow 데이터로 변환하는 것으로 설명하였으나 이는 설명의 편의를 위한 것으로 본 개시의 범위가 이에 제한되지 않으며, 신경 처리 장치의 구성에 따라 변환되는 모델은 상이할 수 있다.
도 4는 일실시예에 따른 다양한 신경망 포맷이 ONNX 포맷 기반의 중간 표현으로 변환되고 중간 표현이 NMP 포맷으로 변환되어 신경 처리 장치에서 실행될 수 있는 최종 실행 파일로 변환되는 방법을 설명하기 위한 도면이다(400).
본 개시는 중간 표현을 NMP 포맷 요건의 사양과 정렬하기 위해 NMP 변환기와의 인터페이스를 이용할 수 있다. 어댑터는 소프트웨어 모듈로서, 어댑터에 의해 낮아진(lowered) 기계 명령어가 NMP 하드웨어 가속기의 사용 가능한 고유 함수 호출을 기반으로 하도록 하는 방식으로 설계된 모듈일 수 있다. 어댑터 사용을 더 확장하면, NMP 변환 및 매핑 도구 세트를 ONNX 포맷 기반 중간 표현과 관련하여 사용할 수 있도록 하는 다양한 하이브리드 접근 방식이 가능해질 수 있고, 그 후에는 중간 표현이 NMP 포맷으로 조정될(adapted) 수 있다.
중간 표현은 예를 들어, 인터페이스(변환 인터페이스, 예를 들어 ONNX)에 의해 생성/출력된 신경망 모델 파일(들)이 NMP 변환기에 의해 NMP 포맷으로 변환된 데이터 포맷을 의미할 수 있다.
어댑터는 중간 표현 구성을 어셈블리에 적용하기 위한 기계 명령어를 포함하도록 NMP 포맷으로 변환할 수 있다.
도 3의 NMP 변환기는 도 4의 NMP 변환기 및 NMP 맵퍼를 포함할 수 있다.
도 5는 신경 처리 장치의 개수를 고려하여 신경망 계층에서 계산을 최소화하기 위해 입력 데이터의 최적 크기를 계산하는 방법을 설명하기 위한 도면이다(500). 도 5의 동작의 일부 또는 전부는 도 1의 103 구성에서 수행될 수 있다.
도 5의 실시예에서, 본 개시는 신경 처리 장치의 개수를 고려하여 입력 데이터를 분할한 후, 각 신경 처리 장치에서 한 번에 처리할 수 있는 데이터의 크기를 선택할 수 있다. 본 개시에서는 각 신경 처리 장치를 이용하여 변환된 모델의 각 레이어를 순서대로 처리할 수 있다. 입력 데이터는 여러 세그먼트 세그먼트(segment)로 나뉘고 세그먼트는 신경 처리 장치에 할당될 수 있다. 다음 단계는 가장 많은 수의 입력 데이터 세그먼트를 처리하는 신경 처리 장치를 찾는 것일 수 있다. 그런 다음, 본 개시에서는 입력 데이터 세그먼트의 크기를 변경하여 가장 많은 수의 입력 데이터 세그먼트를 처리하는 신경 처리 장치의 계산 반복을 최소화하는 입력 데이터 크기를 결정할 수 있다. 단, 신경 처리 장치 별로 데이터 처리 속도가 상이한 경우에는, 가장 많은 수의 입력 데이터 세그먼트를 처리하는 신경 처리 장치의 계산 반복을 최소화하는 대신, 실질적으로 신경망에서 하나의 레이어 또는 하나의 시퀀스에서 전달되는 데이터에 대하여 데이터를 처리하는데 소요되는 시간이 가장 많이 필요한 신경 처리 장치를 판단하고, 해당 신경 처리 장치의 처리시간을 최소화하는 입력 데이터 크기를 결정할 수도 있다.(이는 가장 많은 수의 입력 데이터 세그먼트를 처리하는 신경 처리 장치의 데이터 처리 속도에 비해, 다른 신경 처리 장치의 데이터 처리속도가 느릴 경우 더 적은 수의 입력 데이터 세그먼트를 처리함에도 더 많은 데이터 처리 시간이 필요할 수 있기 때문이다.)
즉, 실시예는 신경 처리 장치의 처리 시간을 최소화하기 위해 신경 처리 장치에 배정되는 입력 데이터 세그먼트의 단위의 크기를 설정함으로써, 학습 데이터의 구조와 신경망 모델의 구조를 반영하여 유동적으로 신경 처리 장치의 처리 속도를 최적화할 수 있는 효과가 있다. 한편 실시 예에서 이와 같이 입력 데이터 세그먼트의 크기를 설정할 때, 신경 처리 장치의 메모리 크기 및 동시에 병렬 처리 가능한 신경 처리 장치의 숫자 등을 고려할 수 있다.
일실시예에 따르면, 본 개시에서는 쿼드 트리 방법(Quad Tree Method)를 이용하여 입력 데이터를 분할하는 효과적인 방법을 찾을 수 있으며, 일 예시에 따르면 해당 방법은 아래와 같다.
입력의 크기가 W x H x C인 경우,
첫 번째 단계) 신경 처리 장치가 한번에 처리할 수 있는 데이터의 개수를 M개, 이 신경 처리 장치에 할당된 입력 데이터의 개수를 N개라고 가정하면, 이 신경 처리 장치의 데이터 처리 횟수 NP는 다음의 수학식 1과 같다.
두 번째 단계) 입력 데이터를 나누어 각 신경 처리 장치에 할당할 때 가장 처리 횟수가 많은 신경 처리 장치의 처리 횟수를 P로 정의한다.
세 번째 단계) 하나의 신경 처리 장치에 할당된 데이터의 형태 W x H x C인 경우, 입력 데이터는 각 차원의 크기를 복수의 데이터 세그먼트로 분할하고(e.g. W/2 x H x C, W/2 x H/2 x C/2 ... ), W', H', C'를 계산할 수 있다. 입력 데이터는 W' x H' x C'의 유닛으로 분할되고, 각 신경 처리 장치에 할당되고, 두 번째 단계의 P를 계산할 수 있다. 아래의 수학식 2는 입력 데이터를 1회 분할한 방법의 예시이다.
네 번째 단계) 두 번째 단계의 W', H', C'를 절반으로 분할하고, P2를 세 번재 단계의 수학식 2와 마찬가지 방법으로 계산한다.
다섯 번째 단계) P > P2 를 만족하는 가장 작은 단위로 입력 데이터를 분할하도록 세 번째 단계 및 네 번째 단계를 반복 수행한다.
여섯 번째 단계) P > P2 를 만족하는 가장 작은 단위의 P와 관련하여, W(P) ~ W(P2) 범위에서 W를 결정하고, H(P) ~ H(P2) 범위에서 H를 결정하고, C(P) ~ C(P2) 범위에서 C를 결정한다(W(P)는 해당 P 값에 대응되는 W 값을 의미하고, W(P2)는 해당 P2 값에 대응되는 W' 값을 의미하며, H 및 C와 관련해서도 마찬가지로 이해할 수 있다).
도 6은 신경 처리 장치와 기계학습 프레임워크 간의 추론 결과를 비교하여 양자화를 위한 최적의 Q 값(또는 Q-넘버)를 찾기 위해 작은 테스트 신경망 모델을 설계하는 방법을 설명하기 위한 도면이다(600).
도 6의 동작은 도 1의 103 구성 중에서 양자화를 수행하기 위한 한 가지 방법이 될 수 있다.
신경 처리 장치가 32비트 부동 소수점 데이터와 같은 부동 소수점 데이터를 지원하도록 설계되지 않은 경우 부동 소수점 입력 값을 Q-포맷으로 표현된 값으로 변경하기 위해(예컨대 32비트 부동 소수점 입력 값을 16비트 Q-포맷으로 표현된 값으로 변경하기 위해) 양자화가 수행될 수 있다. Q-포맷은 고정 소수점 숫자 포맷의 파라미터를 지정하는 간결한 방법의 일 예시이다. 양자화를 수행하기 위해서는 각 레이어 파라미터에 대한 최적의 Q 값을 찾아야 하며, 이 Q 값은 신경 처리 장치에서 추론에 사용된다. 기계학습 프레임워크 및 신경 처리 장치의 각 신경망 계층 유형에 따라 구현(또는 실행) 방법이 상이할 수 있으므로, Q 값을 변경하면서 동일한 입력에 대해 기계학습 프레임워크와 신경 처리 장치의 출력 결과 오차를 비교하여 오차가 가장 작은 최적의 Q 값을 결정할 필요가 있다.
한편, 본 개시의 설명에서 Q 값은 Q 넘버와 상호 대응되는 개념으로 이해될 수 있으며, 양쪽 용어가 혼용되더라도 동일한 의미로 이해될 수 있다.
본 개시에서, 최적의 Q 값을 찾는 예시적인 프로세스는 아래와 같다.
첫 번째 단계) 특정 레이어에 대해 레이어의 파라미터를 양자화하지 않고 입력 데이터를 계산하여 얻은 출력 데이터를 얻는다.
두 번째 단계) 해당 레이어의 파라미터 값의 최대값과 최소값을 찾아 적절한 Q 값을 계산한다.
세 번째 단계) 두 번째 단계에서 결정된 Q 값을 사용하여 1단계에서 레이어의 파라미터를 양자화하고 이 레이어로 구성된 작은 테스트 신경망 모델을 생성한다. 그런 다음 해당 모델을 NMP에서 작동하는 포맷으로 변환한다. 이후, 1단계와 동일한 입력이 NMP에 입력되고 모델의 출력이 생성된다.
네 번째 단계) 평균 제곱 오차(MSE, Mean Square Error)와 같은 오차 측정 기능을 사용하여 첫 번째 단계의 출력과 세 번째 단계의 출력 간의 오차 정도를 측정한다.
다섯 번째 단계) 두 번째 단계에서 Q 값을 1씩 증가 또는 감소(즉, +- 1)시키고 세 번째 단계의 과정을 다시 수행한 후 새로 수행한 세 번째 단계의 출력 데이터와 첫 번째 단계에서 획득한 출력 데이터 간의 오차를 측정하고(즉 네 번째 단계를 다시 수행), 측정된 오차를 바로 직전의(즉 Q 값을 변경한 가장 최근의 동작 이전의) Q 값을 이용했을 때의 오차와 비교한다. 그 오류가 증가하면 두 번째 내지 네 번째 단계의 반복이 종료된다. 그 오류가 감소하거나 유지되면 다섯 번째 단계를 다시 수행하면서 Q 값을 더 변화시킨다.
여섯 번째 단계) 오차가 가장 작은 최적의 Q 값을 결정하고 해당 레이어를 결정된 최적의 Q 값에 기초하여 양자화한다.
대상 데이터의 특성이 다를 경우 부동 소수점 데이터의 변환 방식에 따라 정확도가 달라질 수 있는데, 이와 같은 도 6에서의 비교를 통해 처리하고자 하는 대상 데이터의 연산을 위한 최적의 Q 값을 결정할 수 있다. 최적의 Q 값을 결정함으로써 양자화 및 최적화를 위한 NMP 변환기의 동작을 최적화 할 수 있으며, 결과적으로 신경 처리 장치에서 보다 나은 연산을 수행할 수 있다.
도 7은 원본 데이터 포맷의 신경망 모델을 이용하여 테스트 세트를 추론하는 경우와 ONNX에 기반하여 PyTorch 데이터 포맷에서 TensorFlow 데이터 포맷 및 Caffe 데이터 포맷 중 적어도 하나로 변환된 신경망 모델을 이용하여 동일 테스트 세트를 추론하는 경우의 결과를 비교함으로써 최적의 신경망 모델 포맷을 찾는 방법을 설명하기 위한 도면이다(700).
동일한 입력 데이터에 대해 'NMP 변환 가능 포맷'이 어떻게 구성되어 있는지에 따라 추론 결과의 정확도가 다를 수 있다. 따라서 'NMP 변환 불가능 포맷'의 신경망 모델은 ONNX 포맷의 데이터로 변환되고, ONNX 포맷의 데이터는 신경망 모델을 위한 여러 유형의 'NMP 변환 가능 포맷' 데이터로 변환될 수 있다. 동일한 입력 데이터에 대해 'NMP 변환 불가능 포맷'을 사용한 추론 결과와 여러 유형의 'NMP 변환 가능 포맷' 데이터 각각을 사용한 추론 결과를 비교할 수 있다. 그 다음, 오류가 가장 적은 'NMP 변환 가능한 포맷'을 선택하고, 선택한 데이터를 최종적으로 "NMP 포맷"으로 변환할 수 있다. 오류가 적은 'NMP 변환 가능 포맷'을 찾으려면 추가 계산 프로세스가 필요합니다. 하지만, 'NMP 변환 가능 포맷'은 NMP에서 신경망 모델을 실행하기 전 준비 단계에서 한 번만 실행된다. 반면, 최적의 'NMP 변환 가능 포맷'을 이용하여 생성된 최종 'NMP 포맷'은 NMP를 이용한 추론 단계에서 반복적으로 활용될 수 있다.
보충하면, 도 7에서 각각의 결과는 신경망 모델이 변환 인터페이스에 의해 변환되어 출력된, NMP 변환 가능한 서로 다른 형태의 데이터 포맷(예를 들어, Tensorflow 포맷, Caffe 포맷 등)을 의미할 수 있다. 각 결과들과 변환되기 전의 신경망 모델 포맷을 비교하여 최적의 연산 처리 능력이 확인되는 데이터 포맷이 선택될 수 있다.
예시 프로세스의 세부적 단계는 아래와 같다.
첫 번째 단계) 'NMP 변환 가능 포맷'(e.g. PyTorch 포맷) 중 하나인 원시 포맷(raw format)으로 신경망 모델을 준비한다.
두 번째 단계) Step1의 신경망 모델을 ONNX 포맷으로 변환한다. 신경망 모델을 다양한 NMP-변환 가능 포맷으로 변환한 결과물(result, e.g. TensorFlow 포맷, Caffe 포맷… )을 생성한다.
세 번째 단계) 동일한 입력 데이터셋을 사용하여 원시 포맷의 신경망 모델과 결과 포맷의 신경망 모델을 사용하여 각 추론 결과를 얻고 결과 간의 평균 제곱 오차(실시예에 따라 다른 오차 측정 함수가 이용될 수 있음)를 계산한다. 결과 포맷의 신경망 모델과 원시 포맷의 신경망 모델에 학습 데이터를 각각 학습시키고 추론을 수행하여 처리 속도 및 정확도를 비교한다.
네 번째 단계) 세 번째 단계 에서 에러가 더 적은 최적의 'NMP 변환 가능 포맷'을 선택한다. 에러의 비교는 결과 값들에 대한 비교를 통해 수행될 수 있으며, 이와 같은 비교를 통해 PyTorch와 같은 원시 포맷을 사용한 결과 값과, TF, Caffe 등을 사용하여 도출된 결과 값들과 비교하여 보다 성능이 나은 포맷을 선택할 수 있다. 또한, 이를 통해 연산 상황에 따라 최적의 변환 포맷을 결정할 수 있으며, 선택된 포맷으로 변환하여 NMP에서 연산을 수행하도록 할 수 있다. 한편 실시 예에서 TF, Caffe를 예시로 들고 있으나 본 개시의 범위가 이에 제한되지 않고, NMP에서 사용 가능한 포맷이 복수개일 경우 각각의 포맷에 대한 결과 값과 변환 전의 포맷을 사용했을때의 결과 값을 비교하여 보다 나은 성능의 포맷을 사용하여 변환을 수행하도록 할 수 있다.
도 8은 원본 데이터 포맷의 신경망 모델을 이용하여 테스트 세트를 추론하는 경우와 ONNX에 기반하여 PyTorch 데이터 포맷에서 TensorFlow 데이터 포맷 및 Caffe 데이터 포맷 중 적어도 하나로 변환된 신경망 모델을 이용하여 동일 테스트 세트를 추론하되 TensorFlow 데이터 포맷 및 Caffe 데이터 포맷 중 적어도 하나가 NMP 지원 포맷으로 더 변환되는 경우의 추론 결과를 비교함으로써 최적의 신경망 모델 포맷을 찾는 방법을 설명하기 위한 도면이다(800).
최적의 'NMP 변환 가능 포맷'을 찾기 위해 여러 NMP 변환 가능 포맷에서 각각 생성된 여러 NMP 포맷을 사용한 추론 결과를 비교하는 또 다른 접근 방식을 시도할 수 있다. 이는 NMP 변환 가능한 포맷을 NMP 포맷으로 변환한 후에도 NMP 변환 가능한 포맷을 이용한 추론 결과와 NMP 포맷의 추론 결과가 서로 상이한 경우가 있을 수 있기 때문이다. 따라서, 이러한 접근법에서 본 개시는 'NMP 변환 불가능 포맷'을 여러 유형의 NMP 변환 가능 포맷으로 변환한 다음 NMP 포맷으로 변환할 수 있다. 다음으로, 본 개시에서는 변환된 각 NMP 포맷을 사용한 추론 결과를 동일한 입력 데이터에 대해 서로 비교할 수 있다. 마지막으로 오류가 가장 적은 'NMP 포맷'에 대응되는 'NMP 변환 불가능 포맷'이 최적의 'NMP 변환 가능 포맷'에 연관되는 포맷으로 선정될 수 있다.
예시 프로세스의 자세한 단계는 다음과 같다.
첫 번째 단계) 'NMP 변환 불가능 포맷'(e.g. PyTorch 포맷) 중 하나인 원시 포맷의 신경망 모델을 준비한다.
두 번째 단계) 첫 번째 단계의 신경망 모델을 ONNX 포맷으로 NMP 변환 가능 포맷으로 변환합니다.
세 번째 단계) 두 번째 단계의 ONNX 모델을 'NMP 변환 가능 포맷' 중 하나인 제1포맷(e.g. TensorFlow 포맷)으로 변환하고 NMP 변환기와 맵퍼를 이용하여 '제1포맷' 기반의 NMP 포맷으로 변환한다.
네 번째 단계) 두 번째 단계의 ONNX 모델을 'NMP 변환 가능 포맷' 중 하나인 제2포맷(e.g. Caffe 포맷)으로 변환하고 NMP 변환기와 맵퍼를 이용하여 '제2포맷' 기반의 NMP 포맷으로 변환한다.
다섯 번째 단계) 동일한 입력 데이터 셋으로 원시 포맷의 신경망 모델과 '제1포맷' 기반의 NMP 포맷(신경 처리 장치 사용)의 신경망 모델을 이용하여 각각의 추론 결과를 얻고 결과 간의 평균 제곱 오차를 계산한다(실시예에 따라, 다른 오차 측정 함수가 이용될 수 있음). .
여섯 번째 단계) 동일한 입력 데이터 셋으로 원시 포맷의 신경망 모델과 '제2포맷' 기반의 NMP 포맷(신경 처리 장치 사용)의 신경망 모델을 이용하여 각각의 추론 결과를 구하고 결과 간의 평균 제곱 오차를 계산한다(실시예에 따라, 다른 오차 측정 함수가 이용될 수 있음).
일곱 번째 단계) 다섯 번째 단계와 여섯 번째 단계 중 오차가 적은 최적의 'NMP 변환 가능 포맷'을 선택한다.
이와 같이 변환한 포맷을 사용하여 NMP에서 결과 값을 도출하고, PyTorch와 같이 변환 전의 포맷에 기초하여 일반적인 프로세서를 사용하여 도출된 결과 값과 비교함으로써, 변환에 사용할 포맷을 최종적으로 결정할 수 있다.
도 9는 일실시예에 따른 전자 장치의 정보 처리 방법의 동작 흐름도이다.
도 9를 참조하면, 일실시예에 따른 본 개시의 동작 주체인 전자 장치는 신경망 모델을 획득한다(910). 획득한 신경망 모델은 최종적으로 신경 처리 장치에서 실행하는 것이 그 목표이다.
전자 장치는 신경망 모델의 변환을 위한 기준 포맷을 결정한다(920). 전자 장치는 신경 처리 장치에서 실행 가능한 포맷을 확인하여 기준 포맷을 결정할 수 있다. 보다 구체적으로, 일실시예에 따른 전자 장치는 신경 처리 장치에서 실행 가능한 신경망 데이터 포맷을 기준 포맷으로 결정할 수 있다. 관련하여, 일실시예에 따른 기준 포맷은 NMP 하드웨어 가속기에서 실행 가능한 신경망 데이터 포맷인 NMP 포맷을 포함할 수 있다.
신경 처리 장치에서 실행 가능한 포맷이 복수인 경우, 전자 장치는 복수의 포맷 별로 각 포맷을 이용하여 신경망 모델을 변환하는 경우의 신경 처리 장치에서의 추론(inference) 결과를 확인하고, 확인한 추론 결과에 기초하여 기준 포맷을 결정할 수 있다.
한편, 전자 장치가 신경망 모델을 기준 포맷의 모델로 변환함에 있어서, 신경망 모델을 중간 포맷(전술한 'NMP 변환 가능 포맷' 및 전술한 '중간 표현' 중 적어도 하나를 포함할 수 있음)으로 먼저 변환한 이후 중간 포맷을 기준 포맷으로 변환하는 과정을 거치는 동작과 관련해서도, 전자 장치는 복수의 포맷 별로 각 포맷을 중간 포맷으로 하여 신경망 모델을 변환하는 경우의 신경 처리 장치에서의 추론 결과를 확인하고, 확인한 추론 결과에 기초하여 중간 포맷을 결정할 수 있는데, 이와 관련한 동작의 상세한 예시는 도 7 및 도 8에서 전술하였다.
전자 장치는 신경망 모델을 기준 포맷의 모델로 변환한다(930). 일실시예에 따른 전자 장치는 신경망 모델을 기준 포맷의 모델로 직접적으로(directly) 변환 가능한지 여부를 판단할 수 있다. 신경망 모델을 기준 포맷의 모델로 직접적으로 변환 가능한 경우, 전자 장치는 신경망 모델을 기준 포맷의 모델로 직접적으로 변환할 수 있다. 반면, 신경망 모델을 기준 포맷의 모델로 직접적으로 변환 가능하지 않은 경우, 전자 장치는 신경망 모델을 중간 포맷의 모델로 변환할 수 있다. 즉, 일실시예에 따른 전자 장치는 신경망 모델을 기준 포맷의 모델로 직접적으로 변환 가능한 경우 전술한 1단계 변환 프로세스(1 step conversion process)를 수행하고, 신경망 모델을 기준 포맷의 모델로 직접적으로 변환 가능하지 않은 경우 전술한 2단계 변환 프로세스(2 step conversion process)를 수행할 수 있다. 이와 관련한 동작의 상세한 예시는 도 2에서 전술하였다.
실시예에 따라, 전자 장치는 신경망 모델을 기준 포맷의 모델로 직접적으로 변환 가능한지 여부와는 무관하게 일괄적으로 중간 포맷으로 변환하고, 변환한 중간 포맷의 모델을 최종적으로 기준 포맷의 모델로 변환할 수 있다. 이 경우, 기준 포맷으로 직접 변환 가능한 데이터도 중간 포맷으로 한 번 더 변환되어 동작에 일부 비효율이 초래될 수 있으나, 프로세스의 논리가 보다 간결해지고 신경망 모델 구조를 중간 포맷의 형태로 검증할 수 있는 등의 이점이 있을 수 있다. 이와 관련한 동작의 상세한 예시는 도 3에서 전술하였다.
한편, 중간 포맷은 YAML 포맷을 포함할 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다.
또한, 설명의 편의를 위해 중간 포맷을 거쳐 기준 포맷으로 변환되는 예시를 설명하였으나, 실시예에 따라서는 복수의 중간 포맷들을 순차적으로 거쳐서 기준 포맷으로 최종 변환이 이루어질 수도 있다. 예컨대, 신경망 모델이 중간 포맷 1로 변환되고, 중간 포맷 1의 모델은 중간 포맷 2의 모델로 변환되며, 중간 포맷 2의 모델이 최종적으로 기준 포맷으로 변환될 수 있다. 다만, 이렇게 복수의 중간 포맷들을 순차적으로 거치는 경우에도, 본 개시의 전반적인 설명을 준용하여 이해 및 해석이 가능하다.
신경 처리 장치가 32비트 부동 소수점 데이터와 같은 부동 소수점 데이터를 지원하도록 설계되지 않은 경우, 부동 소수점 입력 값을 Q-포맷으로 표현된 값으로 변경하기 위해(예컨대 32비트 부동 소수점 입력 값을 16비트 Q-포맷으로 표현된 값으로 변경하기 위해) 양자화가 수행될 수 있다. 보다 구체적으로, 일실시예에 따르면, 신경망 모델이 부동 소수점 데이터를 포함하는 경우 전자 장치는 설정된 Q-넘버(Q-number)에 기초하여 신경망 모델이 포함하는 데이터 중 적어도 일부를 양자화할 수 있다. 이러한 양자화 동작은 신경망 모델을 기준 포맷의 모델로 변환하는 과정에서 이루어질 수 있으나 본 개시의 범위가 이에 한정되는 것은 아니다. 또한, 신경망 모델이 부동 소수점 데이터를 포함한다는 것의 의미는 신경망 모델이 포함하는 각 레이어의 파라미터 중 적어도 일부가 부동 소수점 데이터를 포함한다는 의미로 해석될 수 있으나, 본 개시의 범위가 이에 한정되는 것은 아니다.
일실시예에 따른 전자 장치는 설정된 Q-넘버를 그대로 이용하는 대신 Q-넘버를 직접 설정할 수도 있다. 예컨대, 전자 장치는 복수의 후보 Q-넘버 별로 각 후보 Q-넘버를 이용하는 경우의 변환의 정밀도(precision)를 판단하고, 정밀도를 판단한 결과에 기초하여 이용할 Q-넘버를 결정할 수 있다. 예컨대, 여러 Q-넘버에 대하여 신경 처리 장치의 출력 결과 오차를 비교하고, 오차가 가장 작은(즉 정밀도가 가장 높은) Q-넘버를 최적의 Q 값으로 결정할 수 있다.
관련하여, 일 예시에 따르면, 전자 장치는 각 후보 Q-넘버를 이용하는 경우의 평균제곱오차(MSE, Mean Squred Error)를 확인함으로써 정밀도를 판단할 수 있다.
일실시예에 따르면, 전자 장치는 테스트 신경망 모델을 획득하고, 획득한 테스트 신경망 모델에 대하여 변환의 정밀도를 확인함으로써 양자화를 위한 최적의 Q-넘버를 찾을 수 있다. 관련하여, 전자 장치는 단계 910에서 획득한 신경망 모델보다 더 '작은' 모델을 획득하여 테스트에 이용함으로써, 테스트에 소요되는 리소스 및 시간을 절약할 수 있다. 구체적으로, 전자 장치는 신경망 모델에 비해 레이어 별 노드의 개수가 더 적은 제1조건, 신경망 모델에 비해 레이어의 노드 별 가중치가 더 작은 제2조건 및 신경망 모델에 비해 실행을 위하여 필요한 입출력 데이터의 개수가 적은 제3조건 중 적어도 하나를 만족하는 테스트 모델을 획득할 수 있으며, 그 외에도 입력 데이터의 크기가 더 작은 조건 등 여러 조건을 더 고려하여 실질적으로 테스트에 유용한 모델을 획득할 수 있다.
실시예에 따라서는, 단계 910에서 획득한 모델에 대하여 단일 Q 값을 적용하는 대신, 복수의 Q 값들이 적용될 수 있으며, 이는 예컨대 모델이 포함하는 복수 레이어를 둘 이상의 그룹으로 나누고 각 그룹에 대하여 최적의 Q-넘버를 결정하는 예시를 포함할 수 있다(예를 들어 각 레이어 별로 최적의 Q-넘버를 별도로 결정할 수 있음). 이러한 경우, 테스트 모델 또한 각 그룹 별로 별개의 모델이 획득될 수 있으며, 획득된 테스트 모델들을 기초로 그룹 별 최적의 Q-넘버를 확인할 수 있다.
한편, 실시예에 따라 전자 장치는 정밀도 외에도 메모리 공간을 얼마나 더 절약할 수 있는지, 네트워크의 크기를 얼마나 줄일 수 있는지(또한 이에 따라 계산 및 처리 시간을 얼마나 줄일 수 있는지) 등을 더 고려하거나, 그 이외에도 다양한 요소를 고려하는 등의 방법에 따라 최적의 Q-넘버를 결정할 수도 있다. 예컨대, Q1을 이용하는 경우 Q2를 이용하는 경우에 비하여 정밀도가 약간 더 높더라도, Q2를 이용하는 경우 메모리 공간을 절약하고 계산 시간을 줄일 수 있는 효과가 확연히 더 큰 경우에는 Q2를 최적의 Q-넘버로 결정할 수 있다.
최적의 Q-넘버를 찾는 과정과 관련한 상세한 예시는 도 6에서 전술하였다.
전자 장치는 기준 포맷으로 변환된 모델을 신경 처리 장치에서 실행하기 위한 입력 데이터의 크기를 결정할 수도 있다. 일실시예에 따르면, 전자 장치는 신경 처리 장치의 데이터 처리 성능을 고려하여 입력 데이터의 크기를 결정할 수 있다. 예컨대, 전자 장치는 신경 처리 장치의 계산반복(calculation iteration)을 최소화하는 입력 데이터의 크기를 판단할 수 있다.
보다 구체적인 예시로, 기준 포맷으로 변환된 모델의 실행을 위하여 복수의 신경 처리 장치가 이용되는 경우, 전자 장치는 복수의 신경 처리 장치 별로 한 번의 계산을 통하여 처리 가능한 데이터의 수를 판단하고, 복수의 신경 처리 장치 별로 할당되는 입력 데이터의 수를 판단하여, 복수의 신경 처리 장치 중 처리 가능한 데이터의 수 대비 할당되는 입력 데이터의 수의 비율이 최대가 되는 신경 처리 장치를 확인하며, 확인한 신경 처리 장치에 대하여 계산반복을 최소화하는 입력 데이터의 크기를 판단할 수 있다.
한편, 실시예에 따라, 전자 장치는 복수의 신경 처리 장치 별로 처리 가능한 데이터의 수 대비 할당되는 입력 데이터의 수의 비율을 일일이 계산하는 대신, 복수의 신경 처리 장치 중 할당되는 입력 데이터의 수가 가장 많은 신경 처리 장치를 확인하고 해당 신경 처리 장치에 대하여 계산반복을 최소화하는 입력 데이터의 크기를 판단할 수도 있다. 예컨대 신경 처리 장치 별로 한 번의 계산을 통하여 처리 가능한 데이터의 수에 차이가 작거나 없는 경우에는 이러한 방법에 따라 입력 데이터의 크기를 판단할 수 있다.
입력 데이터의 크기를 판단하는 과정과 관련한 상세한 예시는 도 5에서 전술하였다.
도 10은 일실시예에 따른 영역 정보를 획득하기 위한 전자 장치의 구성의 예시도이다.
도 10을 참조하면, 전자 장치는 프로세서(1020) 및 메모리(1030)를 포함한고, 실시예에 따라 트랜시버(1010)를 더 포함할 수 있다. 전자 장치(110)는 트랜시버(1010)를 통하여 외부 장치 등과 연결되고, 데이터를 교환할 수 있다.
프로세서(1020)는 도 1 내지 도 9를 통하여 전술한 적어도 하나의 장치들을 포함하거나, 도 1 내지 도 9를 통하여 전술한 적어도 하나의 방법을 수행할 수 있다. 메모리(1030)는 도 1 내지 도 9를 통하여 전술한 적어도 하나의 방법을 수행하기 위한 정보를 저장할 수 있다. 메모리(1030)는 휘발성 메모리 또는 비휘발성 메모리일 수 있다.
프로세서(1020)는 프로그램을 실행하고, 정보를 제공하기 위한 전자 장치를 제어할 수 있다. 프로세서(1020)에 의하여 실행되는 프로그램의 코드는 메모리(1030)에 저장될 수 있다.
또한 일실시예의 전자 장치는 사용자에게 정보를 제공할 수 있는 인터페이스를 더 포함할 수 있다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
전술한 실시예들에 따른 전자 장치 또는 단말은, 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-Access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 집적 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler), 파이썬(Python) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
전술한 실시예들은 일 예시일 뿐 후술하는 청구항들의 범위 내에서 다른 실시예들이 구현될 수 있다.

Claims (15)

  1. 전자 장치에서 정보를 처리하는 방법에 있어서,
    신경망 모델을 획득하는 단계;
    상기 신경망 모델의 변환을 위한 기준 포맷을 결정하는 단계
    상기 신경망 모델을 상기 기준 포맷의 모델로 변환하는 단계; 및
    상기 기준 포맷으로 변환된 모델에 연관되는 복수의 입력 데이터를 복수의 신경 처리 장치(NPU, Neural Processing Unit)에서 실행하기 위한 입력 데이터 세그먼트(segment)의 크기를 결정하는 단계를 포함하고,
    상기 입력 데이터 세그먼트의 크기를 결정하는 단계는
    입력 데이터를 분할하기 위한 제1방법에 기초하여, 복수의 제1크기의 입력 데이터 세그먼트를 획득하는 단계;
    상기 복수의 신경 처리 장치 별로, 상기 제1크기의 입력 데이터 세그먼트의 처리 능력을 판단하는 단계;
    상기 복수의 신경 처리 장치 별로 상기 제1크기의 입력 데이터 세그먼트가 할당되는 개수를 판단하는 단계;
    상기 처리 능력 및 상기 제1크기의 입력 데이터 세그먼트가 할당되는 개수에 기초하여, 상기 복수의 신경 처리 장치 중 할당되는 상기 제1크기의 입력 데이터 세그먼트의 처리를 위하여 가장 많은 시간이 소요되는 신경 처리 장치를 확인하는 단계; 및
    상기 확인한 신경 처리 장치에 대하여, 입력 데이터의 처리를 위하여 소요되는 시간을 최소화하기 위한, 입력 데이터를 분할하기 위한 제2방법을 판단하는 단계를 포함하고,상기 제2방법은 복수의 제2크기의 입력 데이터 세그먼트를 획득하기 위한 방법이고,
    상기 입력 데이터 세그먼트의 처리 능력은, 한 번의 시퀀스에서 처리 가능한 상기 제1크기의 입력 데이터 세그먼트의 개수 및 상기 한 번의 시퀀스를 처리하기 위하여 소요되는 시간 중 하나 이상을 포함하는, 정보를 처리하는 방법.
  2. 제1항에 있어서,
    상기 신경망 모델이 부동 소수점 데이터를 포함하는 경우,
    상기 기준 포맷의 모델로 변환하는 단계는
    설정된 Q-넘버(Q-number)에 기초하여 상기 신경망 모델이 포함하는 데이터 중 적어도 일부를 양자화하는(quantize) 단계를 포함하는 것을 특징으로 하는, 정보를 처리하는 방법.
  3. 제2항에 있어서,
    복수의 후보 Q-넘버 별로, 각 후보 Q-넘버를 이용하는 경우의 상기 변환의 정밀도(precision)를 판단하는 단계; 및
    상기 정밀도를 판단한 결과에 기초하여, 상기 Q-넘버를 결정하는 단계
    를 더 포함하는 것을 특징으로 하는, 정보를 처리하는 방법.
  4. 제3항에 있어서,
    상기 변환의 정밀도를 판단하는 단계는
    상기 각 후보 Q-넘버를 이용하는 경우의 평균제곱오차(MSE, Mean Squred Error)를 확인하는 단계를 포함하는 것을 특징으로 하는, 정보를 처리하는 방법.
  5. 제3항에 있어서,
    상기 변환의 정밀도를 판단하는 단계는
    테스트 신경망 모델을 획득하는 단계; 및
    상기 테스트 신경망 모델에 대하여 상기 변환의 정밀도를 확인하는 단계를 포함하는 것을 특징으로 하는, 정보를 처리하는 방법.
  6. 제5항에 있어서,
    상기 테스트 신경망 모델을 획득하는 단계는
    상기 신경망 모델에 비해 레이어 별 노드의 개수가 더 적은 제1조건,
    상기 신경망 모델에 비해 레이어의 노드 별 가중치가 더 작은 제2조건 및
    상기 신경망 모델에 비해 실행을 위하여 필요한 입출력 데이터의 개수가 적은 제3조건
    중 적어도 하나를 만족하는 모델을 획득하는 단계를 포함하는 것을 특징으로 하는, 정보를 처리하는 방법.
  7. 삭제
  8. 삭제
  9. 삭제
  10. 제1항에 있어서,
    상기 기준 포맷을 결정하는 단계는
    상기 복수의 신경 처리 장치에서 실행 가능한 포맷을 확인하는 단계를 포함하는 것을 특징으로 하는, 정보를 처리하는 방법.
  11. 제10항에 있어서,
    상기 복수의 신경 처리 장치에서 실행 가능한 포맷이 복수인 경우,
    상기 복수의 포맷 별로, 각 포맷을 이용하여 상기 신경망 모델을 변환하는 경우의 상기 복수의 신경 처리 장치에서의 추론(inference) 결과를 확인하는 단계; 및
    상기 추론 결과에 기초하여 상기 기준 포맷을 결정하는 단계
    를 더 포함하는 것을 특징으로 하는, 정보를 처리하는 방법.
  12. 제1항에 있어서,
    상기 기준 포맷의 모델로 변환하는 단계는
    상기 신경망 모델을 상기 기준 포맷의 모델로 직접적으로(directly) 변환 가능한지 여부를 판단하는 단계;
    상기 신경망 모델을 상기 기준 포맷의 모델로 직접적으로 변환 가능한 경우, 상기 신경망 모델을 상기 기준 포맷의 모델로 직접적으로 변환하는 단계; 및
    상기 신경망 모델을 상기 기준 포맷의 모델로 직접적으로 변환 가능하지 않은 경우, 상기 신경망 모델을 중간(intermediate) 포맷의 모델로 변환하는 단계를 포함하는 것을 특징으로 하는, 정보를 처리하는 방법.
  13. 제12항에 있어서,
    상기 중간 포맷은 YAML 포맷을 포함하는 것을 특징으로 하는, 정보를 처리하는 방법.
  14. 제1항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적 기록매체.
  15. 정보를 처리하는 전자 장치에 있어서,
    명령어를 저장하는 메모리 및 프로세서를 포함하고,
    상기 프로세서는, 상기 메모리와 연결되어,
    신경망 모델을 획득하고,
    상기 신경망 모델의 변환을 위한 기준 포맷을 결정하고,
    상기 신경망 모델을 상기 기준 포맷의 모델로 변환하고,
    상기 기준 포맷으로 변환된 모델에 연관되는 복수의 입력 데이터를 복수의 신경 처리 장치에서 실행하기 위한 입력 데이터 세그먼트의 크기를 결정하고,
    상기 입력 데이터의 크기를 결정하기 위하여, 상기 프로세서는,
    입력 데이터를 분할하기 위한 제1방법에 기초하여, 복수의 제1크기의 입력 데이터 세그먼트를 획득하고,
    상기 복수의 신경 처리 장치 별로, 상기 제1크기의 입력 데이터 세그먼트의 처리 능력을 판단하고,
    상기 복수의 신경 처리 장치 별로 상기 제1크기의 입력 데이터 세그먼트가 할당되는 개수를 판단하고,
    상기 처리 능력 및 상기 제1크기의 입력 데이터 세그먼트가 할당되는 개수에 기초하여, 상기 복수의 신경 처리 장치 중 할당되는 상기 제1크기의 입력 데이터 세그먼트의 처리를 위하여 가장 많은 시간이 소요되는 신경 처리 장치를 확인하고,
    상기 확인한 신경 처리 장치에 대하여, 입력 데이터의 처리를 위하여 소요되는 시간을 최소화하기 위한, 입력 데이터를 분할하기 위한 제2방법을 판단하고,
    상기 제2방법은 복수의 제2크기의 입력 데이터 세그먼트를 획득하기 위한 방법이고,
    상기 입력 데이터 세그먼트의 처리 능력은, 한 번의 시퀀스에서 처리 가능한 상기 제1크기의 입력 데이터 세그먼트의 개수 및 상기 한 번의 시퀀스를 처리하기 위하여 소요되는 시간 중 하나 이상을 포함하는, 전자 장치.
KR1020220189571A 2021-12-30 2022-12-29 다양한 유형의 신경망 모델을 변환 및 활용할 수 있도록 하는 방법 및 장치 KR102656567B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202163295044P 2021-12-30 2021-12-30
US63/295,044 2021-12-30

Publications (2)

Publication Number Publication Date
KR20230104037A KR20230104037A (ko) 2023-07-07
KR102656567B1 true KR102656567B1 (ko) 2024-04-12

Family

ID=86991796

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220189571A KR102656567B1 (ko) 2021-12-30 2022-12-29 다양한 유형의 신경망 모델을 변환 및 활용할 수 있도록 하는 방법 및 장치

Country Status (2)

Country Link
US (1) US20230214638A1 (ko)
KR (1) KR102656567B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309486B (zh) * 2018-08-10 2024-01-12 中科寒武纪科技股份有限公司 转换方法、装置、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111753948A (zh) * 2020-06-23 2020-10-09 展讯通信(上海)有限公司 模型处理方法及相关设备
CN112328674A (zh) * 2020-11-17 2021-02-05 深圳力维智联技术有限公司 跨数据格式的模型转化加速方法及装置
KR102298766B1 (ko) * 2021-02-15 2021-09-07 주식회사 딥이티 타겟 디바이스에 대한 딥러닝 모델 변환 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111753948A (zh) * 2020-06-23 2020-10-09 展讯通信(上海)有限公司 模型处理方法及相关设备
CN112328674A (zh) * 2020-11-17 2021-02-05 深圳力维智联技术有限公司 跨数据格式的模型转化加速方法及装置
KR102298766B1 (ko) * 2021-02-15 2021-09-07 주식회사 딥이티 타겟 디바이스에 대한 딥러닝 모델 변환 장치 및 방법

Also Published As

Publication number Publication date
KR20230104037A (ko) 2023-07-07
US20230214638A1 (en) 2023-07-06

Similar Documents

Publication Publication Date Title
US10140099B2 (en) Systems and methods for generating code from executable models with floating point data
US20240005135A1 (en) Accelerating neural networks with low precision-based multiplication and exploiting sparsity in higher order bits
CN108089882B (zh) 编码和解码可变长度指令
KR102656567B1 (ko) 다양한 유형의 신경망 모델을 변환 및 활용할 수 있도록 하는 방법 및 장치
CN109740737B (zh) 卷积神经网络量化处理方法、装置及计算机设备
CN113283613A (zh) 深度学习模型的生成方法、优化方法、装置、设备及介质
US20230394110A1 (en) Data processing method, apparatus, device, and medium
Mahmoud et al. Goldeneye: A platform for evaluating emerging numerical data formats in dnn accelerators
CN110309877B (zh) 一种特征图数据的量化方法、装置、电子设备及存储介质
CN115146485A (zh) 基于gpu加速的射频链路仿真方法
US10599803B2 (en) High level synthesis apparatus, high level synthesis method, and computer readable medium
US20210157485A1 (en) Pattern-based cache block compression
CN115081607A (zh) 基于嵌入算子的反向计算方法、装置、设备以及存储介质
KR20230076641A (ko) 부동-소수점 연산을 위한 장치 및 방법
CN117291128B (zh) 用于芯片设计工程自动化的方法、计算机设备及介质
Ayhan et al. A power efficient system design methodology employing approximate arithmetic units
JP6495842B2 (ja) 変換方法、変換プログラムおよび変換装置
Wanna et al. Multiplier Optimization via E-Graph Rewriting
CN115469931B (zh) 一种循环程序的指令优化方法、装置、系统、设备及介质
CN115951936B (zh) 向量化编译程序的芯片适配方法、装置、设备及介质
Ma et al. Efficiently emulating high-bitwidth computation with low-bitwidth hardware
CN110084362B (zh) 一种面向神经网络的对数量化装置及方法
Cuni Deploying Deep Learning on FPGA: an assessment of ConvNets performance on Xilinx Zynq MPSoC using Vitis-AI development platform
CN114972955A (zh) 一种数据处理方法、装置及存储介质
FPGA-based SmartNIC for Distributed Machine Learning

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right