KR20190055610A - 뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 - Google Patents

뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 Download PDF

Info

Publication number
KR20190055610A
KR20190055610A KR1020170152508A KR20170152508A KR20190055610A KR 20190055610 A KR20190055610 A KR 20190055610A KR 1020170152508 A KR1020170152508 A KR 1020170152508A KR 20170152508 A KR20170152508 A KR 20170152508A KR 20190055610 A KR20190055610 A KR 20190055610A
Authority
KR
South Korea
Prior art keywords
neural network
operation group
shared
group
neural
Prior art date
Application number
KR1020170152508A
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 KR1020170152508A priority Critical patent/KR20190055610A/ko
Priority to US16/189,206 priority patent/US11704553B2/en
Publication of KR20190055610A publication Critical patent/KR20190055610A/ko

Links

Images

Classifications

    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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/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/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks

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

뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 이 개시된다. 본 개시의 기술적 사상에 따른 뉴럴 네트워크 시스템의 동작 방법은, 프로세서의 제어에 기반하여, 동일한 연산들을 포함하는 제1 뉴럴 네트워크의 제1 연산 그룹 및 제2 뉴럴 네트워크의 제2 연산 그룹을 공유 연산 그룹으로서 병합하는 단계; 상기 프로세서의 제어에 기반하여, 복수의 하드웨어들 중 상기 공유 연산 그룹을 실행할 제1 하드웨어를 선정하는 단계; 및 상기 제1 하드웨어에 의해 상기 공유 연산 그룹을 실행하는 단계를 포함한다.

Description

뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 {Neural network system for single processing common operation group of neural network models, application processor including same, and operation method of neural network system}
본 개시의 기술적 사상은 뉴럴 네트워크에 관한 것으로서, 상세하게는 뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다. 서로 다른 정보를 추출하기 위하여 이용되는 복수의 뉴럴 네트워크들은 동일한 연산 그룹 또는 동일한 뉴럴 네트워크 모델을 포함할 수 있다.
본 개시의 기술적 사상이 해결하려는 과제는, 뉴럴 네트워크 실행 효율을 향상시킬 수 있는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작 방법을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상에 따른 뉴럴네트워크 시스템의 동작 방법은, 프로세서의 제어에 기반하여, 동일한 연산들을 포함하는 제1 뉴럴 네트워크의 제1 연산 그룹 및 제2 뉴럴 네트워크의 제2 연산 그룹을 공유 연산 그룹으로서 병합하는 단계; 상기 프로세서의 제어에 기반하여, 복수의 하드웨어들 중 상기 공유 연산 그룹을 실행할 제1 하드웨어를 선정하는 단계; 및 상기 제1 하드웨어에 의해 상기 공유 연산 그룹을 실행하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 애플리케이션 프로세서는, 프로그램들을 저장하는 메모리; 상기 메모리에 저장된 프로그램들을 실행하는 프로세서; 및 상기 메모리에 로딩 가능한 프로그램들을 포함하는 뉴럴 네트워크 병합 모듈을 구비하고,
상기 프로세서는, 상기 뉴럴 네트워크 병합 모듈을 실행함으로써, 서로 다른 테스크들을 수행하는 복수의 뉴럴 네트워크 간의 공통 뉴럴 네트워크 모델을 판단하고, 상기 공통 뉴럴 네트워크 모델이 단일 처리과정을 통해 실행될 수 있도록 상기 복수의 뉴럴 네트워크 각각에 포함된 상기 공통 뉴럴 네트워크 모델을 병합할 수 있다.
본 개시의 기술적 사상에 따른 뉴럴 네트워크 시스템은, 복수의 프로세서; 및 서로 다른 테스크들을 수행하는 복수의 뉴럴 네트워크에 공통으로 포함되는 연산 그룹을 찾고, 상기 연산 그룹에 공유 아이디 및 리소스 아이디를 부여함으로써, 상기 복수의 뉴럴 네트워크 실행 중에 상기 연산 그룹이 상기 복수의 프로세서 중 하나의 프로세서에서 실행되도록 설정하는 뉴럴 네트워크 병합 모듈을 포함할 수 있다.
본 개시의 기술적 사상에 따른 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작 방법에 따르면, 서로 다른 테스크를 수행하는 뉴럴 네트워크들의 동일한 연산 그룹 또는 동일한 뉴럴 네트워크 모델을 하나의 프로세서를 통하여 단일 처리함으로써, 뉴럴 네트워크 실행 효율을 향상시킬 수 있다.
도 1은 본 개시의 예시적인 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 2는 본 개시의 실시예에 따른 뉴럴 네트워크 병합 모듈의 동작 개념을 설명하는 도면이다.
도 3은 본 개시의 실시예에 따른 뉴럴 네트워크 병합 모듈의 동작 개념을 설명하는 도면이다.
도 4는 본 개시의 실시예에 따른 뉴럴 네트워크 시스템에 적용되는 뉴럴 네트워크의 일 예를 나타낸다.
도 5는 본 개시의 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다.
도 6은 본 개시의 실시예에 따른 뉴럴 네트워크 시스템의 동작을 설명하는 흐름도이다.
도 7a 내지 도 7d는 본 개시의 실시예에 따른 뉴럴 네트워크 병합 및 뉴럴 네트워크 실행을 설명하는 도면이다.
도 8a 내지 도 8d는 본 개시의 실시예에 따른 뉴럴 네트워크 병합 및 뉴럴 네트워크 실행을 설명하는 도면이다.
도 9는 본 개시의 실시예에 따른 뉴럴 네트워크 병합 방법에 대한 일 예를 나타내는 흐름도이다.
도 10은 본 개시의 실시예에 따른 병합된 뉴럴 네트워크에 대한 컴퓨팅 리소스 할당 방법의 일 예를 나타내는 흐름도이다.
도 11은 본 개시의 실시예에 따른 뉴럴 네트워크 병합 모듈의 데이터 흐름도를 나타내는 블록도이다.
도 12 내지 도 14는 본 개시의 실시예에 따른 뉴럴 네트워크 병합을 예시적으로 설명하는 도면이다.
도 15는 본 개시의 예시적인 실시예에 따른 뉴럴 네트워크 병합 모듈이 소프트웨어적으로 구현되는 예를 나타내는 블록도이다.
도 16 및 도 17은 본 개시의 실시예에 따른 뉴럴 네트워크 병합 모듈을 포함하는 뉴럴 네트워크 시스템의 실시예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적인 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 1의 전자 시스템(100)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(100)에 탑재되는 전자 장치의 구성들을 제어할 수 있다.
도 1의 전자 시스템(100)은 모바일 장치에 채용되는 애플리케이션 프로세서(Application Processor, AP)일 수 있다. 또는, 도 1의 전자 시스템(100)은 컴퓨팅 시스템에 해당하거나, 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트 폰, 의료 장치, 모바일 장치, 영상 표시 장치, 계측 장치, IoT(Internet of Things) 장치 등에 해당될 수 있다. 이하에서는, 도 1의 전자 시스템(100)이 애플리케이션 프로세서(AP)에 해당하는 것으로 가정된다.
도 1을 참조하면, 전자 시스템(100)은 프로세서(110), 뉴럴 네트워크 모듈(120), 연산 장치(130), RAM(140)(Random Access Memory) 및 메모리(150)를 포함할 수 있으며, 뉴럴 네트워크 모듈(120)은 뉴럴 네트워크 병합 모듈을 포함할 수 있다(S121). 일 실시예에 있어서, 전자 시스템(100)의 구성들 중 적어도 일부는 하나의 반도체 칩에 탑재될 수 있다.
전자 시스템(100)이 뉴럴 네트워크 연산 기능을 수행하는 점에서, 전자 시스템(100)은 뉴럴 네트워크 시스템(NNS)을 포함하는 것으로 정의될 수 있다. 뉴럴 네트워크 시스템(NNS)은 뉴럴 네트워크 동작과 관련하여, 전자 시스템(100)에 구비되는 구성들 중 적어도 일부를 포함할 수 있다. 일 예로서, 도 1에는 뉴럴 네트워크 시스템(NNS)이 프로세서(110), 뉴럴 네트워크 모듈(120), 연산 장치(130)를 포함하는 것으로 예시되었으나 이에 국한될 필요가 없다. 예컨대, 뉴럴 네트워크 동작에 관여되는 다른 다양한 종류의 구성들이 뉴럴 네트워크 시스템(NNS)에 포함되는 것으로 정의되어도 무방할 것이다.
프로세서(110)는 전자 시스템(100)의 전반적인 동작을 제어한다. 프로세서(110)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(110)는 메모리(150)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일 실시예에 있어서, 프로세서(110)는 메모리(150)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 모듈(120) 및 연산 장치(130)의 기능을 제어할 수 있다.
RAM(140)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(150)에 저장된 프로그램들 및/또는 데이터는 프로세서(110)의 제어 또는 부팅 코드에 따라 RAM(140)에 일시적으로 저장될 수 있다. RAM(140)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
메모리(150)는 전자 시스템(100)을 제어하는 제어 명령어코드, 제어 데이터 또는 사용자 데이터를 저장할 수 있다. 메모리(150)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 예를 들어, 메모리(150)는 DRAM, SRAM, embedded DRAM 등으로 구현될 수 있다.
뉴럴 네트워크 모듈(120)은 다양한 종류의 뉴럴 네트워크를 기초로 뉴럴 네트워크 기반 테스크들을 수행할 수 있다. 뉴럴 네트워크에서 요구되는 연산들은 전자 장치(130)에서 실행될 수 있다. 뉴럴 네트워크 모듈(120)은 수행 결과로서 정보 신호를 생성할 수 있다. 정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다.
뉴럴 네트워크는 GoogLeNet, AlexNet, VGG Network 등과 같은 CNN (Convolution Neural Network), R-CNN (Region with Convolution Neural Network), RPN (Region Proposal Network), RNN (Recurrent Neural Network), S-DNN (Stacking-based deep Neural Network), S-SDNN (State-Space Dynamic Neural Network), Deconvolution Network, DBN (Deep Belief Network), RBM (Restricted Boltzman Machine), Fully Convolutional Network, LSTM (Long Short-Term Memory) Network, Classification Network 등 다양한 종류의 뉴럴 네트워크 모델들을 포함할 수 있으나 이에 제한되지 않는다. 또한, 하나의 테스크를 수행하는 뉴럴 네트워크는 서브 뉴럴 네트워크들을 포함할 수 있으며, 서브 뉴럴 네트워크들은 이종의 뉴럴 네트워크 모델로 구현될 수 있다.
한편, 전자 시스템(100)은 다양한 종류의 애플리케이션들을 실행할 수 있으며, 애플리케이션들은 뉴럴 네트워크 모듈(120)에 동종 또는 이종의 뉴럴 네트워크 기반 테스크들의 수행을 요청할 수 있다. 이때, 테스크들의 수행을 위한 이종의 뉴럴 네트워크들이 동일한 서브 뉴럴 네트워크(즉, 동일한 뉴럴 네트워크 모델)를 포함하거나 또는 동일한 연산 그룹을 포함할 경우, 뉴럴 네트워크 모듈(120)은 이종의 뉴럴 네트워크들 실행 과정에서, 상기 서브 뉴럴 네트워크 또는 상기 연산 그룹이 동일한 연산 장치에서 단일 실행되도록 설정할 수 있다. 이를 위해 뉴럴 네트워크 모듈(120)은 뉴럴 네트워크 병합 모듈(121)을 구비할 수 있다.
뉴럴 네트워크 병합 모듈(121)은 서로 다른 테스크를 처리하는 복수의 뉴럴 네트워크들에 대한 정보, 예컨대 뉴럴 네트워크 모델 정보를 기초로 복수의 뉴럴 네트워크들 간에서 공통되는 연산 그룹(이하, 공통 연산 그룹들이라고 함) 또는 서브 뉴럴 네트워크(이하 공통 뉴럴 네트워크 모델이라고 함)를 찾고 공통 연산 그룹들 또는 공통 서브 뉴럴 네트워크 모델들을 병합할 수 있다. 병합된 공통 연산 그룹들 및 공통 서브 뉴럴 네트워크 모델들은 각각 병합 연산 그룹(또는 공유 연산 그룹) 및 병합 뉴럴 네트워크 모델(공유 뉴럴 네트워크 모델)로 지칭될 수 있다.
뉴럴 네트워크 병합 모듈(121)은 컴퓨팅 리소스, 애플리케이션의 선호 정보, 예컨대 테스크 실행 정책 등을 고려하여, 병합 연산 그룹 또는 병합 뉴럴 네트워크 모델이 실행될 컴퓨팅 리소스, 즉 컴퓨팅 장치를 선정할 수 있다.
뉴럴 네트워크 병합 모듈(121)은 다양한 형태로 구현될 수 있으며, 일 실시예에 따라 뉴럴 네트워크 병합 모듈(121)은 소프트웨어 형태로 구현될 수 있다. 그러나, 이에 제한되는 것은 아니며, 뉴럴 네트워크 병합 모듈(121)은 하드웨어 형태로 구현되거나, 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 실시예에 있어서, 뉴럴 네트워크 병합 모듈(121)은 운영 체제(OS)나 그 하위 단에 소프트웨어 형태로 구현될 수 있으며, 또한 메모리(150)에 로딩 가능한 프로그램들로 구현될 수 있다.
연산 장치(130)는 뉴럴 네트워크 모듈(120)의 제어 하에, 수신되는 입력 데이터에 대하여 연산을 실행(execution)할 수 있다. 연산 장치(130)는 CPU(Central Processing Unit), GPU(Graphic Processing Unit), NPU(Neural Processing Unit), DSP(Digital Signal Processor), FPGA(Field Programmable Gate array), ECU(Electronic Control Unit) 등의 프로세서를 포함할 수 있다. 또한, 연산 장치(130)는 연산 결과를 저장하기 위한 별도의 메모리(미도시)를 포함할 수도 있다. 연산 장치(130)에 포함되는 복수의 하드웨어 장치들 중 하나가 병합된 연산 그룹을 실행할 수 있다.
이하, 도 2를 참조하여, 뉴럴 네트워크 병합 모듈(121)의 뉴럴 네트워크 병합을 보다 상세하게 설명하기로 한다.
도 2는 본 개시의 실시예에 따른 뉴럴 네트워크 병합 모듈의 동작 개념을 설명하는 도면이다.
도 2를 참조하면, 제1 테스크(T1)는 제1 뉴럴 네트워크(NN1)에서 수행되고, 제2 테스크(T2)는 제2 뉴럴 네트워크(NN2)에서 수행될 수 있다. 제1 테스크(T1) 및 제2 테스크(T2)는 동일한 애플리케이션 또는 서로 다른 애플리케이션에서 요청될 수 있다.
예시적으로, 제1 뉴럴 네트워크(NN1)는 순차적으로 수행되는 연산들 OP_A, OP_B, OP_C, OP_D, OP_E 및 OP_F를 포함할 수 있다. 제1 뉴럴 네트워크(NN1)에서 입력을 기초로 연산들 OP_A, OP_B, OP_C, OP_D, OP_E 및 OP_F이 실행되어 제1 테스크(T1)의 출력이 산출될 수 있다.
예시적으로, 제2 뉴럴 네트워크(NN2)는 순차적으로 수행되는 연산들 OP_A, OP_B, OP_G, OP_H, OP_I 및 OP_J를 포함할 수 있다. 제1 뉴럴 네트워크(NN1)에서 입력을 기초로 연산들 OP_A, OP_B, OP_G, OP_H, OP_I 및 OP_J가 실행되어 제2 테스크(T2)의 출력이 산출될 수 있다.
제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)는 연산들 OP_A, OP_B를 공통적으로 포함하며, 연산들 OP_A, OP_B의 실행 순서가 동일하다. 제1 뉴럴 네트워크(NN1)의 연산들 OP_A, OP_B는 제1 연산 그룹(OP1)으로 지칭되고, 제2 뉴럴 네트워크(NN1)의 연산들 OP_A, OP_B는 제2 연산 그룹(OP2)으로 지칭하기로 한다. 제1 테스크(T1) 및 제2 테스크(T2)의 입력들이 같다면, 제1 연산 그룹(OP1) 및 제2 연산 그룹(OP2)의 출력들은 서로 동일할 수 있다.
뉴럴 네트워크 병합 모듈(도 1의 121)은 제1 연산 그룹(OP1) 및 제2 연산 그룹(OP2)을 하나의 연산 그룹, 즉 공유 연산 그룹(SG)으로서 병합하고, 공유 연산 그룹(SG)의 출력이 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 후속 연산(예컨대 연산 OP_C 및 OP_G)에 입력되도록 설정할 수 있다. 이에 따라, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2) 실행 과정에서, 공유 연산 그룹(SG)이 한 번 실행될 수 있다.
제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 실행 과정에서, 제1 연산 그룹(OP1) 및 제2 연산 그룹(OP2)이 각각 실행된다면, 예컨대 서로 다른 컴퓨팅 장치에서 실행되거나 동일한 컴퓨팅 장치에서 두 번 실행된다면, 동일한 연산들이 중복 실행되고, 이에 따라서, 메모리 사용, 전력 소비 및 연산 실행을 위한 소비 시간이 중복하여 발생된다.
그러나, 전술한 바와 같이, 본 개시의 실시예에 따른 뉴럴 네트워크 병합 모듈(121)의 동작 방법, 즉 연산 그룹 병합에 따르면, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 실행 과정에서, 제1 연산 그룹(OP1) 및 제2 연산 그룹(OP2)이 각각 실행되지 않고, 공유 연산 그룹(SG)이 한 번 실행되므로, 연산들의 중복 실행 및 연산들을 실행하기 위한 메모리 사용, 소비 전력 및 소비 시간이 감소될 수 있다. 따라서, 본 개시의 실시예에 따른 전자 시스템(도 1의 100) 또는 뉴럴 네트워크 시스템(도 1의 NNS)의 성능이 향상될 수 있다.
도 3은 본 개시의 실시예에 따른 뉴럴 네트워크 병합 모듈의 동작 개념을 설명하는 도면이다.
뉴럴 네트워크는 복수의 서브 뉴럴 네트워크를 포함할 수 있으며, 복수의 뉴럴 네트워크들이 동일한 서브 뉴럴 네트워크(즉 동일한 뉴럴 네트워크 모델)를 포함하는 경우, 뉴럴 네트워크 병합 모듈(도 1의 121)은 복수의 뉴럴 네트워크들에 각각 구비되는 복수의 서브 뉴럴 네트워크들 중 동일한 서브 뉴럴 네트워크들을 병합할 수 있다.
도 3a를 참조하면, 제1 테스크(T1)는 제1 뉴럴 네트워크(NN1)에서 수행되고, 제2 테스크(T2)는 제2 뉴럴 네트워크(NN2)에서 수행될 수 있다. 예시적으로, 제1 뉴럴 네트워크(NN1)는 순차적으로 수행되는 서브 뉴럴 네트워크들 NNs1, NNs2, NNs3을 포함할 수 있고, 제2 뉴럴 네트워크(NN2)는 순차적으로 수행되는 서브 뉴럴 네트워크들 NNs1 및 NNs4를 포함할 수 있다.
제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)는 서브 뉴럴 네트워크NNs1을 공통적으로 포함한다. 뉴럴 네트워크 병합 모듈(121)은 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)에 포함된 서브 뉴럴 네트워크들 NNs1을 하나의 서브 뉴럴 네트워크, 예컨대 공유 서브 뉴럴 네트워크(SNNs)로 병합하고, 공유 서브 뉴럴 네트워크(SNNs1)의 출력이 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 후속 서브 뉴럴 네트워크(예컨대 서브 뉴럴 네트워크 NNs2 및 NN4S)에 입력되도록 설정할 수 있다. 이에 따라, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2) 실행 과정에서, 공유 서브 뉴럴 네트워크(SNNs)가 단일 실행될 수 있다.
도 4는 본 개시의 실시예에 따른 뉴럴 네트워크 시스템에 적용되는 뉴럴 네트워크의 일 예를 나타낸다.
도 4를 참조하면, 뉴럴 네트워크(1)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가질 수 있다. 뉴럴 네트워크(1)는 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다.
뉴럴 네트워크(1)는 2개 이상의 히든 레이어들을 포함하는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-레이어 뉴럴 네트워크(n-layers neural networks)일 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 뉴럴 네트워크(1)는 입력 레이어(10), 제1 및 제2 히든 레이어(12, 14) 및 출력 레이어(16)를 포함하는 DNN일 수 있다.
뉴럴 네트워크(1)가 DNN 구조를 갖는 경우 유효한 정보를 추출할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(1)는 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(1)는 4개의 레이어들(10, 12, 14, 16)을 포함하는 것으로 도시되었으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(1)는 더 적거나 많은 레이어들을 포함할 수 있다. 또한, 뉴럴 네트워크(1)는 도 4에 도시된 것과는 다른 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(1)에 포함된 레이어들(10, 12, 14, 16) 각각은 복수의 뉴런(neuron)들을 포함할 수 있다. 뉴런은, 프로세싱 엘리먼트(Processing Element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 4에 도시된 바와 같이, 입력 레이어(10)는 2개의 뉴런들(노드들), 제1 및 제2 히든 레이어(12, 14) 각각은 3개의 뉴런들(노드들)을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(1)에 포함된 레이어들 각각은 다양한 개수의 뉴런들(노드들)을 포함할 수 있다.
뉴럴 네트워크(1)에 포함된 레이어들 각각에 포함된 뉴런들은 서로 연결되어 데이터를 교환할 수 있다. 하나의 뉴런은 다른 뉴런들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 뉴런들로 출력할 수 있다.
뉴런들(노드들) 각각의 입력 및 출력은 입력 액티베이션(activation)및 출력 액티베이션으로 지칭될 수 있다. 즉, 액티베이션은 한 뉴런의 출력임과 동시에, 다음 레이어에 포함된 뉴런들의 입력에 해당되는 파라미터일 수 있다. 한편, 뉴런들 각각은 이전 레이어에 포함된 뉴런들로부터 수신된 액티베이션들(예컨대,
Figure pat00001
,
Figure pat00002
등), 웨이트(weight)들(예컨대,
Figure pat00003
,
Figure pat00004
,
Figure pat00005
등) 및 바이어스(예컨대,
Figure pat00006
,
Figure pat00007
,
Figure pat00008
등)에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트 및 바이어스는 각 뉴런에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터들로서, 웨이트는 뉴런들 간의 연결관계에 할당되는 값이며, 바이어스는 개개의 뉴런에 관련된 가중치를 나타낸다.
이와 같이, 뉴런들이 액티베이션을 결정하기 위하여, 즉, 레이어들의 출력을 결정하기 위하여, 레이어들(10, 12, 14, 16)은 적어도 하나의 연산들을 포함할 수 있다. 멀티-레이어 구조를 가지는 뉴럴 네트워크(1)는 복수의 연산을 포함할 수 있으며, 입력 데이터를 처리하여 출력 데이터를 생성하기 위하여 많은 연산량을 필요로 할 수 있다.
도 5는 본 개시의 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다.
도 5를 참조하면, 뉴럴 네트워크 시스템(200)은 뉴럴 네트워크 기반의 복수의 애플리케이션들(211, 212, 213), 딥 러닝 프레임 워크(220), 컨텍스트 매니저(240), 컴퓨팅 리소스 매니저(250) 및 연산 장치(260)를 포함할 수 있다. 애플리케이션들(211, 212, 213), 딥 러닝 프레임 워크(220), 컨텍스트 매니저(240) 및 컴퓨팅 리소스 매니저(250)는 소프트웨어로 구현될 수 있다. 그러나, 이에 제한되는 것은 아니며, 실시예에 있어서, 뉴럴 네트워크 시스템(200)의 상기 구성들은 소프트웨어 및 하드웨어의 조합으로 구현될 수 있다.
연산 장치(260)는 복수의 프로세서들, 즉 복수의 하드웨어 장치들을 포함할 수 있다. 도 5에서 연산 장치(260)는 CPU, GPU, DSP, NPU, FPGA, 및 ECU를 포함하는 것으로 도시되었으나, 이는 예시적인 설명을 위한 것으로써, 이에 제한되는 것은 아니다. 연산 장치(260)는 다른 프로세서를 더 포함할 수 있으며, 또한, 연산 장치(260)는 CPU, GPU, DSP, NPU, FPGA 및 ECU 중 적어도 하나의 프로세서를 포함할 수 있다.
복수의 애플리케이션들(211, 212, 213)은 각각 뉴럴 네트워크 기반의 테스크들의 수행을 요청할 수 있다. 예를 들어, 제1 애플리케이션(211)이 차량의 자율 주행 기능을 제공하는 경우, 제1 애플리케이션은 적어도 한 프레임의 이미지에 대한, 오브젝트 검출, 씬(Scene) 분할 등의 테스크들을 발행할 수 있다. 다른 예로서, 제2 애플리케이션(212)이 음성 인식 기능을 제공하는 경우 음성 신호에 대하여, 화자 인식, 음성-문자 변환 등의 테스크들을 발행할 수 있다. 이 외에도, 복수의 애플리케이션들(211, 212, 213)은 다양한 테스크들을 발행할 수 있다.
딥 러닝 프레임워크(220)는 딥 뉴럴 네트워크 기반의 뉴럴 네트워크 모듈로서, 딥 러닝 알고리즘을 포함하는 복수의 뉴럴 네트워크를 제공하고, 복수의 애플리케이션들(211, 212, 213)로부터 발행된 테스크들을 수행하기 위한 뉴럴 네트워크들 각각의 연산들이 연산 장치(260)에서 수행될 수 있도록 복수의 애플리케이션들(211, 212, 213)과 연산 장치(260) 간에 인터페이스를 제공한다. 딥 러닝 프레임워크(220)는 복수의 뉴럴 네트워크의 실행 전반을 제어할 수 있다.
예를 들어서, 딥 러닝 프레임워크(220)는 스테틱 정보 및 다이나믹 정보를 기초로 복수의 애플리케이션들(211, 212, 213) 중 실행되는 애플리케이션들로부터 발행되는 테스크들이 수행될 복수의 뉴럴 네트워크들의 연산들에 컴퓨팅 리소스를 할당할 수 있다. 스태틱 정보(Static Info.) 및 다이나믹 정보(Dynamic Info.) 각각은 다양한 종류의 정보들을 포함할 수 있다. 일 예로서, 스태틱 정보(Static Info.)는 전자 시스템(도 1의 100) 내의 각종 구성 요소들의 기본 정보들을 포함할 수 있으며, 일 예로 연산 장치(도 1의 150 및 도 5의 220)에 포함되는 프로세서들(하드웨어 장치들)의 성능 및 특성 등의 컴퓨팅 리소스(Computing resource) 정보를 포함할 수 있다. 또한, 다이나믹 정보(Dynamic Info.)는 뉴럴 네트워크 모델을 실행하는 도중에 발생될 수 있는 각종 정보들을 포함하며, 일 예로서 런타임(runtime) 과정에서의 컴퓨팅 컨텍스트(Computing context) 정보를 포함할 수 있다.
딥 러닝 프레임워크(220)는 뉴럴 네트워크 병합 모듈(230)을 포함하며, 뉴럴 네트워크 병합 모듈(230)에 복수의 뉴럴 네트워크의 정보, 즉 뉴럴 네트워크 모델 정보를 제공할 수 있다. 뉴럴 네트워크 모델 정보는 서브 뉴럴 네트워크들의 뉴럴 네트워크 ID, 뉴럴 네트워크(또는 서브 뉴럴 네트워크 각각)에 포함되는 연산 그룹들의 ID(예컨대, 클래그 ID, 워크 스페이스 ID, 서브 그룹 ID 등), 뉴럴 네트워크(또는 서브 뉴럴 네트워크들 각각)의 뎁스(depth) 및 브랜치(branch) 등의 레이어 토폴로지(Layer topology), 압축 방법에 관련된 정보, 각각의 레이어에서의 연산에 관련된 정보(예컨대, 입력 및 출력 사이즈 등의 데이터 특성(Data property) 정보, 커널/필터, 웨이트, 포맷(format), 보안(security), 패딩, 스트라이드 등), 데이터 압축 방법 등의 다양한 정보들을 포함할 수 있다.
뉴럴 네트워크 병합 모듈(230)은 뉴럴 네트워크 병합부(231) 및 뉴럴 네트워크 할당부(232)를 포함할 수 있다. 뉴럴 네트워크 병합부(231)는 서로 다른 테스크를 수행하는 뉴럴 네트워크들에서 공통되는 연산 그룹(공통 연산 그룹) 또는 공통되는 서브 뉴럴 네트워크(공통 서브 뉴럴 네트워크)를 찾고, 뉴럴 네크워크들에 포함된 공통 연산 그룹들 또는 공통 서브 뉴럴 네트워크 모델들을 병합할 수 있다.
뉴럴 네트워크 할당부(232)는 병합된 연산 그룹에 컴퓨팅 리소스를 할당할 수 있다. 뉴럴 네트워크 할당부(232)는 애플리케이션의 선호 정보, 컴퓨팅 리소스 상태 등을 기초로 병합된 연산 그룹이 실행될 컴퓨팅 리소스를 할당할 수 있다. 뉴럴 네트워크 할당부(232)는, 예컨대 연산 장치(260)에 구비되는 CPU, GPU, DSP, NPU, FPGA, 및 ECU 중 하나를 병합된 연산 그룹이 실행될 하드웨어 장치로서 선정할 수 있다. 복수의 애플리케이션들(211, 212, 213)으로부터 발행된 테스크들의 수행을 위하여 뉴럴 네트워크들이 실행되는 과정에서, 병합된 연산 그룹은 할당된 하드웨어 장치에서 단일 처리(실행)될 수 있다.
컨텍스트 매니저(240)는 뉴럴 네트워크 실행 과정에서 생성되는 다이나믹 정보를 관리하고 딥 러닝 프레임워크(220)로 제공할 수 있다. 런타임 도중 뉴럴 네트워크 연산 수행에 관련된 각종 상태나 정보들이 컨텍스트 매니저(240)에 의해 관리될 수 있으며, 일 예로서 출력 정확도(Output accuracy), 레이턴시(latency) 및 영상 처리 속도(Frame Per Second (FPS)) 등에 관련된 정보나, 복수의 애플리케이션들(211, 212, 213)의 선호 정보, 예컨대, 허용 가능한 정확도 손실(Loss), 전력 설정, 요구되는 레이턴시 등과 같이 테스크 실행과 관련된 애플리케이션의 정책이 컨텍스트 매니저(240)를 통해 딥 러닝 프레임워크(220) 제공될 수 있다. 상기와 같은 런타임 관련 다이나믹 정보와 함께, 리소스에 관련된 다이나믹 정보로서 컴퓨팅 리소스 상태의 변동, 파워/온도 정보, 버스(BUS)/메모리/스토리지 상태, 애플리케이션 종류 및 애플리케이션의 라이프 사이클(Lifecycle) 등의 각종 정보들이 컨텍스트 매니저(240)를 통해 프레임 워크(220)로 제공될 수 있다.
도 6은 본 개시의 실시예에 따른 뉴럴 네트워크 시스템의 동작을 설명하는 흐름도이다. 뉴럴 네트워크 시스템의 동작을 도 5의 뉴럴 네트워크 병합 모듈 및 연산 장치의 동작을 중심으로 설명하기로 한다.
도 5 및 도 6을 참조하면, 뉴럴 네트워크 병합부(231)는 서로 다른 테스크들을 수행할 복수의 뉴럴 네트워크에서 공통 연산 그룹을 찾는다(S10).
실시예에 있어서, 뉴럴 네트워크 병합부(231)는 딥 러닝 프레임워크(220)로부터 제공되는 뉴럴 네트워크들의 정보를 기초로 공통 연산 그룹 또는 공통 서브 뉴럴 네트워크를 찾을 수 있다. 예컨대, 뉴럴 네트워크 병합부(231)는 뉴럴 네트워크 각각에 대하여 사전 설정된 ID들(예컨대, 연산 그룹들에 대한 ID, 서브 뉴럴 네트워크 ID 등)을 비교하고, 동일한 ID를 갖는 연산 그룹들 또는 서브 뉴럴 네트워크를 찾을 수 있다.
실시예에 있어서, 뉴럴 네트워크 병합부(231)는 뉴럴 네트워크들의 레이어 토폴로지(Layer topology)(예컨대, prototxt file, graphical topology 등)를 비교하여, 동일한 연산들을 포함하고, 연산들의 실행 순서가 동일한 공통 연산 그룹을 추출할 수 있다.
실시예에 있어서, 뉴럴 네트워크 병합부(231)는 뉴럴 네트워크들이 런타임에 실행되는 연산 과정을 추적하여 연산 히스토리를 생성하고, 연산 히스토리를 기초로 공통 연산 그룹을 추출할 수 있다.
뉴럴 네트워크 병합부(231)는 연산의 토폴로지가 동일하고, 피연산자 예컨대, 연산의 입력 및 출력의 사이즈, 연산 파라미터들(예컨대, 바이어스, 웨이트 등)이 동일한 연산들에 대하여 동일 연산이라고 판단할 수 있다. 그러나 이에 제한되는 것은 아니며, 실시예에 있어서, 뉴럴 네트워크 병합부(231)는 연산의 토폴로지가 동일하나, 피연산자가 상이한 경우, 예컨대 연산의 입력 및 출력이 상이하거나 또는 연산 파라미터들이 유사한 연산들에 대하여 동일 연산이라고 판단할 수 있다. 예컨대, 제1 뉴럴 네트워크의 제1 연산과 제2 뉴럴 네트워크의 제2 연산이 연산 토폴로지가 동일하며, 입력 및 출력이 동일하지만, 제1 연산과 관련된 제1 바이어스의 값과 제2 연산과 관련된 제2 바이어스 값이 상이한 경우, 제1 바이어스 값과 제2 바이어스 값의 유사성을 기초로 제1 연산과 제2 연산의 동일성을 판단할 수 있다. 뉴럴 네트워크 병합부(231)는 제1 바이어스 값과 제2 바이어스 값의 차이가 소정의 기준값 미만이면, 제1 바이어스 값과 제2 바이어스 값이 유사하다고 판단하고, 제1 연산 및 제2 연산이 동일하다고 판단할 수 있다.
뉴럴 네트워크 병합부(231)는 복수의 뉴럴 네트워크들에 포함된 공통 연산 그룹들을 병합할 수 있다(S20). 뉴럴 네트워크 병합부(231)는 공통 연산 그룹들에 공유 ID를 할당함으로써, 공통 연산 그룹들을 공유 연산 그룹(병합된 연산 그룹)으로 설정하고, 공유 연산 그룹들의 최종 레이어의 출력을 연산 장치(260)에 포함되는 복수의 프로세서들(예컨대 CPU, GPU, DSP, NPU, FPGA 및 ECU 중 적어도 두 프로세서) 간의 공유 버퍼(미도시)로 설정할 수 있다. 뉴럴 네트워크 병합부(231)는 공유 카운트를 설정할 수 있다. 예컨대 공유 카운트는 공유 연산 그룹을 포함하는 뉴럴 네트워크들의 개수일 수 있다.
뉴럴 네트워크 병합부(231)는 또한, 뉴럴 네트워크 들의 공유 연산 그룹 이후의 후속 연산들의 입력을 상기 공유 버퍼로 설정할 수 있다. 이에 따라, 뉴럴 네트워크들이 서로 다른 프로세서에서 실행되더라도, 공유 연산 그룹의 실행 결과가 후속 연산들의 입력으로 제공될 수 있다.
실시예에 있어서, 뉴럴 네트워크 병합부(231)는 뉴럴 네트워크들 각각에 포함된 공유 연산 그룹들 중 하나의 공유 연산 그룹을 제외한 나머지 공유 연산 그룹을 삭제할 수 있다. 예컨대, 제1 뉴럴 네트워크 및 제2 뉴럴 네트워크가 각각 공유 ID가 설정된 공유 연산 그룹을 포함할 경우, 뉴럴 네트워크 병합부(231)는 제1 뉴럴 네트워크에 포함되는 공유 연산 그룹을 제외하고, 제2 뉴럴 네트워크에 포함된 공유 연산 그룹을 삭제할 수 있다.
이후, 뉴럴 네트워크 할당부(232)는 병합된 연산 그룹, 즉 공유 연산 그룹에 컴퓨팅 리소스를 할당할 수 있다(S30). 뉴럴 네트워크 할당부(232)는 애플리케이션의 선호 정보, 컴퓨팅 리소스 상태 등을 기초로 공유 연산 그룹이 실행될 컴퓨팅 리소스를 선정하고, 선택된 컴퓨팅 리소스에 대응하는 리소스 아이디를 공유 연산 그룹에 할당할 수 있다.
실시예에 있어서, 뉴럴 네트워크 할당부(232)는 공유 카운트를 기초로 컴퓨팅 리소스를 할당할 수 있다. 예컨대, 뉴럴 네트워크 할당부(232)는 공유 연산 그룹에 대해 설정된 공유 카운트가 소정의 임계값 이상일 경우, 전용 NPU가 공유 연산 그룹을 실행하도록 공유 연산 그룹에 대하여 전용 NPU의 리소스 ID를 할당할 수 있다.
실시예에 있어서, 뉴럴 네트워크 할당부(232)는 공유 연산 그룹에 대해 비선점 값(또는 우선 순위)을 설정할 수 있다. 예컨대, 공유 연산 그룹에 할당된 리소스 ID에 대응하는 프로세서가 다른 연산 실행을 위하여 선점되는 것을 방지하기 위하여 뉴럴 네트워크 할당부(232)는 공유 연산 그룹에 대해 비선점 값을 설정할 수 있다. 이에 따라, 공유 연산 그룹에 할당된 리소스 ID에 대응하는 프로세서는 공유 연산 그룹의 연산을 다른 연산들에 우선하여 실행(computing)할 수 있다.
이후, 컴퓨팅 장치(220)에서, 복수의 뉴럴 네트워크 각각의 입력을 기초로, 복수의 뉴럴 네트워크의 연산들이 실행될 수 있다(S40).
병합된 연산 그룹에 할당된 컴퓨팅 리소스가 병합된 연산 그룹의 연산들을 실행할 수 있다(S41). 예컨대, 리소스 할당 단계(S30)에서, 병합된 연산 그룹에 전용 NPU의 리소스 ID가 할당된 경우, 전용 NPU가 병합된 연산 그룹의 연산들을 실행할 수 있다. 연산 결과는 공유 버퍼로 출력될 수 있다.
전용 NPU 또는 다른 프로세서들이 병합된 연산 그룹의 연산 결과를 기초로 복수의 뉴럴 네트워크들 각각의 후속 연산들을 실행할 수 있다(S42). 예컨대, 제1 뉴럴 네트워크 및 제2 뉴럴 네트워크의 공통 연산 그룹이 병합되고, 제1 뉴럴 네트워크의 병합된 연산 그룹의 후속 연산들에 대하여 GPU의 리소스 ID가 할당되고, 제2 뉴럴 네트워크의 병합된 연산 그룹의 후속 연산들에 대하여 DSP의 리소스 ID가 할당된 경우, 전용 NPU에서 병합된 연산 그룹의 연산 결과가 공유 버퍼에 저장되고, GPU 및 DSP는 공유 버퍼를 엑세스하여 병합된 연산 그룹의 연산 결과를 수신하고, 이를 기초로 각각 제1 뉴럴 네트워크의 후속 연산들 및 제2 뉴럴 네트워크의 후속 연산들을 수행할 수 있다.
도 7a 내지 도 7d는 본 개시의 실시예에 따른 뉴럴 네트워크 병합 및 뉴럴 네트워크 실행을 설명하는 도면이다.
도 7a를 참조하면, 제1 테스크(T1)는 제1 뉴럴 네트워크(NN1)에서 수행되고, 제2 테스크(T2)는 제2 뉴럴 네트워크(NN2)에서 수행될 수 있으며, 입력이 서로 동일할 수 있다. 또한, 제1 뉴럴 네트워크(NN1)의 제1 연산 그룹(OG1)과 제2 뉴럴 네트워크(NN2)의 제2 연산 그룹(OG2)은 서로 동일한 연산들(OP_A, OP_B)을 포함할 수 있다.
도 7b 를 참조하면, 제1 뉴럴 네트워크(NN1)의 제1 연산 그룹(OG1)과 제2 뉴럴 네트워크(NN2)의 제2 연산 그룹(OG2)은 공유 연산 그룹(SOG)으로서 병합될 수 있다. 제1 뉴럴 네트워크(NN1)의 제1 연산 그룹(OG1)과 제2 뉴럴 네트워크(NN2)의 제2 연산 그룹(OG2)에 대하여 공유 아이디(ID_S) 및 공유 카운트(CNT_S)가 설정될 수 있다. 본 실시시예에서 공유 카운트(CNT_S)는 '2'로 설정될 수 있을 것이다. 공유 아이디(ID_R)를 갖는 공유 연산 그룹(SOG)의 출력은 프로세서들 간의 공유 버퍼로 설정되고, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 후속하는 연산들(OP_C, OP_G)의 입력이 공유 버퍼로 설정됨으로써, 공유 연산 그룹(SOG)의 출력이 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 후속하는 연산들(OP_C, OP_G)로 제공될 수 있다. 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 공유 연산 그룹(SOG), 중 하나를 제외한 나머지가 삭제될 수 있다. 예컨대, 도시된 바와 같이, 제2 뉴럴 네트워크(NN2)의 공유 연산 그룹(SOG)은 삭제될 수 있다.
도 7c를 참조하면, 공유 연산 그룹(SOG), 즉 병합된 연산 그룹에 리소스 아이디(ID_R)가 설정될 수 있다. 실시예에 있어서, 공유 연산 그룹(SOG)에 비선점 값(NPPV)(또는 우선권이라고 함)이 추가적으로 설정될 수 있다. 이로써, 공유 연산 그룹(SOG)에 컴퓨팅 리소스, 예컨대 프로세서가 할당될 수 있다. 비선점 값(NPPV)이 설정될 경우, 상기 프로세서에 대한 우선 순위를 공유 연산 그룹(SOG)이 가질 수 있다.
도 7d를 참조하면, 뉴럴 네트워크의 병합 및 컴퓨팅 리소스 할당이 완료되면, 공유 연산 그룹(SOG)에 대하여, 공유 아이디(ID_S), 공유 카운트(CNT_S), 리소스 아이디(ID_R1), 및 비선점 값(NPPV)이 설정될 수 있다. 또한, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 다른 연산들에 대하여도 리소스 아이디(ID_R2, ID_R3)가 설정될 수 있다.
공유 연산 그룹(SOG)에 대한 리소스 아이디(ID_R1), 제1 뉴럴 네트워크(NN1)의 후속 연산들에 대한 리소스 아이디(ID_R2) 및 제2 뉴럴 네트워크(NN2)의 후속 연산들에 대한 리소스 아이디(ID_R3)는 서로 동일하거나 또는 상이할 수 있다. 예컨대, 공유 연산 그룹(SOG)의 실행은 제1 뉴럴 네트워크(NN1)의 후속 연산들이 실행되는 연산 장치 및/또는 제2 뉴럴 네트워크(NN2)의 후속 연산들이 실행되는 연산 장치와 동일한 연산 장치에 할당되거나 또는 다른 연산 장치에 할당될 수 있다. 또한, 제1 뉴럴 네트워크(NN1)의 후속 연산들 및 제2 뉴럴 네트워크(NN2)의 후속 연산들은 동일한 연산 장치 또는 상이한 연산 장치에 할당될 수 있다.
다만, 설명의 편의를 위하여 도 7d에 도시된 바와 같이, 공유 연산 그룹(SOG)에 대한 리소스 아이디(ID_R1), 제1 뉴럴 네트워크(NN1)의 후속 연산들에 대한 리소스 아이디(ID_R2) 및 제2 뉴럴 네트워크(NN2)의 후속 연산들에 대한 리소스 아이디(ID_R3)는 서로 상이한 것으로 가정하고 설명하기로 한다. 공유 연산 그룹(SOG)에 대한 리소스 아이디(ID_R1), 제1 뉴럴 네트워크(NN1)의 후속 연산들에 대한 리소스 아이디(ID_R2) 및 제2 뉴럴 네트워크(NN2)의 후속 연산들에 대한 리소스 아이디(ID_R3)는 제1 연산 장치(CD1), 제2 연산 장치(CD2) 및 제3 연산 장치(CD3)에 각각 대응할 수 있다.
제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 연산들은 하드웨어 레벨, 예컨대 연산 장치에서 실행될 수 있다. 공유 연산 그룹(SOG)은 리소스 아이디(ID_R1)에 기초하여, 제1 연산 장치(CD1)에서 실행될 수 있다. 공유 연산 그룹(SOG)의 연산 결과는 공유 버퍼(SBUF)에 저장될 수 있다. 공유 버퍼(SBUF) 공유 연산 그룹(SOG)의 연산 결과가 저장되면, 공유 버퍼 레디 신호가 발생할 수 있다.
제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 후속 연산들이 할당된 제2 연산 장치(CD2) 및 제3 연산 장치(CD3)는 공유 버퍼 레디 신호가 발생하면, 공유 버퍼(SBUF)로부터 공유 연산 그룹(SOG)의 연산 결과를 수신하고, 이를 기초로 할당된 연산들을 실행할 수 있다. 제2 연산 장치(CD2) 및 제3 연산 장치(CD3)는 동시 또는 이시에 할당된 연산들을 실행할 수 있다.
도 8a 내지 도 8d는 본 개시의 실시예에 따른 뉴럴 네트워크 병합 및 뉴럴 네트워크 실행을 설명하는 도면이다. 도 8a 내지 도 8d의 뉴럴 네트워크 병합 및 뉴럴 네트워크 실행은 도 7a 내지 도 7d의 뉴럴 네트워크 병합 및 뉴럴 네트워크 실행과 유사하다. 다만, 도 8a 내지 도 8d는 뉴럴 네트워크들의 입력이 상이한 경우를 예시적으로 설명한다.
도 8a를 참조하면, 제1 테스크(T1)가 수행되는 제1 뉴럴 네트워크(NN1)의 제1 연산 그룹(OG1)과 제2 테스크(T2)가 수행되는 제2 뉴럴 네트워크(NN2)의 제2 연산 그룹(OG2)은 서로 동일한 연산들(OP_A, OP_B)을 포함할 수 있다. 다만, 제1 테스크(T1)의 입력과 제2 테스크(T2)의 입력이 상이할 수 있다.
도 8b 를 참조하면, 제1 뉴럴 네트워크(NN1)의 제1 연산 그룹(OG1)과 제2 뉴럴 네트워크(NN2)의 제2 연산 그룹(OG2)은 공유 연산 그룹(SOG)으로서 병합될 수 있다. 도 8b를 참조하여 설명한 바와 같이, 제1 뉴럴 네트워크(NN1)의 제1 연산 그룹(OG1)과 제2 뉴럴 네트워크(NN2)의 제2 연산 그룹(OG2)에 대하여 공유 아이디(ID_S) 및 공유 카운트(CNT_S)가 설정될 수 있다. 공유 아이디(ID_R)를 갖는 공유 연산 그룹(SOG)의 출력은 프로세서들 간의 공유 버퍼로 설정되고, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 후속하는 연산들(OP_C, OP_G)의 입력이 공유 버퍼로 설정될 수 있다. 한편, 도 7b와 달리, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 공유 연산 그룹(SOG)은 삭제되지 않는다.
도 8c를 참조하면, 공유 연산 그룹(SOG), 즉 병합된 연산 그룹에 리소스 아이디(ID_R)가 설정될 수 있으며, 공유 연산 그룹(SOG)에 비선점 값(NPPV))이 추가적으로 설정될 수 있다.
도 8d를 참조하면, 뉴럴 네트워크의 병합 및 컴퓨팅 리소스 할당이 완료되면, 공유 연산 그룹(SOG)에 대하여, 공유 아이디(ID_S), 공유 카운트(CNT_S), 리소스 아이디(ID_R1), 및 비선점 값(NPPV)이 설정될 수 있다. 또한, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 다른 연산들에 대하여도 리소스 아이디(ID_R2, ID_R3)가 설정될 수 있다. 공유 연산 그룹(SOG)에 대한 리소스 아이디(ID_R1), 제1 뉴럴 네트워크(NN1)의 후속 연산들에 대한 리소스 아이디(ID_R2) 및 제2 뉴럴 네트워크(NN2)의 후속 연산들에 대한 리소스 아이디(ID_R3)는 서로 상이한 것으로 가정한다.
공유 연산 그룹(SOG)은 리소스 아이디(ID_R1)에 기초하여, 제1 연산 장치(CD1)에서 실행될 수 있다. 공유 연산 그룹(SOG)의 연산 결과는 공유 버퍼(SBUF)에 저장될 수 있다. 한편, 제1 뉴럴 네트워크(NN1)의 제1 입력(Input1) 및 제2 뉴럴 네트워크(NN2)의 제2 입력(Input2)이 서로 상이하므로, 제1 연산 장치(CD1)는 서로 다른 입력에 대하여 공유 연산 그룹(SOG)의 연산이 실행할 수 있다. 제1 입력(Input1) 및 제2 입력(Input2)에 대하여 공유 연산 그룹(SOG)의 연산이 동일한 연산 장치, 즉 제1 연산 장치(CD1)에서 실행되므로 연산 파라미터들, 예컨대, 바이어스 값들, 웨이트 값들이 하나의 연산 장치에 대응하는 메모리에 로딩될 수 있어, 메모리 사용이 감소될 수 있다.
제1 입력(Input1) 및 제2 입력(Input2)을 기초로 하는 공유 연산 그룹(SOG)의 연산 실행이 완료되면, 공유 버퍼 레디 신호가 발생할 수 있다. 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 후속 연산들이 할당된 제2 연산 장치(CD2) 및 제3 연산 장치(CD3)는 공유 버퍼 레디 신호에 응답하여 공유 버퍼(SBUF)로부터 공유 연산 그룹(SOG)의 연산 결과를 수신하고, 이를 기초로 할당된 연산들을 실행할 수 있다.
이상에서, 도 7a 내지 도 8d를 참조하여, 본 개시의 실시예에 따른 뉴럴 네트워크 병합 및 뉴럴 네트워크 실행을 설명하였다. 한편, 도 7a 내지 도 8d에서는 공유 연산 그룹, 즉 제1 뉴럴 네트워크(NN1) 및 제2 뉴를 네트워크(NN2)의 공통된 연산 그룹이 뉴럴 네트워크들(NN1, NN2)의 초기에 배치되어 있는 경우를 예시적으로 설명하였다. 그러나 본 개시의 기술적 사상은 이에 제한되는 것은 아니며, 실시예에 있어서, 공유 연산 그룹은 제1 뉴럴 네트워크(NN1) 및/또는 제2 뉴럴 네트워크(NN2)의 말단 또는 중단에 배치될 수 있다. 이러한 경우, 공유 연산 그룹의 입력은 상이할 것인바, 도 8a 내지 도 8d를 참조하여 설명한 바와 유사하게, 뉴럴 네트워크 병합 및 뉴럴 네트워크 실행이 수행될 수 있을 것이다.
도 9는 본 개시의 실시예에 따른 뉴럴 네트워크 병합 방법에 대한 일 예를 나타내는 흐름도이다. 도 9의 뉴럴 네트워크 병합 방법은 도 5의 뉴럴 네트워크 병합부(231)에서 수행될 수 있다. 따라서, 도 5를 참조하여 설명한 내용은 도 9의 실시예에 적용될 수 있다.
도 9를 참조하면, 테스크들을 수행할 뉴럴 네트워크들의 정보가 수신되면, 뉴럴 네트워크 병합을 위하여 뉴럴 네트워크 해석이 요구되는지 판단할 수 있다(S110). 뉴럴 네트워크 정보들에 미리 설정된(pre-defined) ID, 예컨대, 서브 뉴럴 네트워크들의 ID들, 연산 그룹의 ID들이 포함된 경우, 뉴럴 네트워크 해석이 요구되지 않는다고 판단할 수 있다.
뉴럴 네트워크 해석이 요구되지 않으면, 뉴럴 네트워크들의 정보를 기초로 동일한 뉴럴 네트워크들 간에 동일한 연산 그룹 ID가 있는지 판단할 수 있다(S120).
동일한 연산 그룹 ID가 있다면, 뉴럴 네트워크들에 포함된 동일한 연산 그룹, 즉 공통 연산 그룹에 대하여 공유 아이디를 설정할 수 있다(S170).
한편, 동일한 연산 그룹 ID가 없다면, 뉴럴 네트워크들의 연산 히스토리를 기초로 동일한 연산 그룹이 있는지 판단할 수 있다(S130). 뉴럴 네트워크들의 런타임 시 연산 과정이 추적될 수 있으며 이에 따라서 연산 히스토리가 생성될 수 있다. 뉴럴 네트워크들을 실행하여 런타임 시의 연산 과정을 추적하고, 연산 히스토리를 기초로 동일한 연산 그룹이 있는지 판단할 수 있다.
동일한 연산 그룹이 있다면, 동일한 연산 그룹에 대하여 공유 아이디를 설정할 수 있다(S170), 연산 히스토리를 기초로 판단한 결과 동일한 연산 그룹이 없다면, 뉴럴 네트워크들에서 요구되는 연산들, 즉 뉴럴 네트워크들의 각 레이어에 포함되는 연산 과정을 계속 추적할 수 있다(S140). 이에 따라 런타임에 계속하여 연산 히스토리가 생성될 수 있다.
한편, 뉴럴 네트워크 해석이 요구되는 경우, 뉴럴 네트워크 정보 또는 추적된 연산들, 즉 연산 히스토리를 비교할 수 있다(S150). 예컨대, 뉴럴 네트워크들의 레이어 토폴로지를 비교하거나, 또는 뉴럴 네트워크들의 연산 히스토리를 비교할 수 있다.
상기 비교 결과 뉴럴 네트워크들 간에 동일한 연산 그룹, 즉 병합될 연산 그룹이 있는지 판단할 수 있다(S160). 병합될 연산 그룹이 있다고 판단되면, 동일한 연산 그룹에 대하여 공유 아이디를 설정할 수 있다(S170). 병합될 연산 그룹이 없다고 판단되면, S140 단계에서 계속하여 뉴럴 네트워크에서 요구되는 연산들을 추적할 있다. 이와 같이, 다양한 방법에 의하여 뉴럴 네트워크들 간에 동일한 연산 그룹이 검출될 수 있다.
동일한 연산 그룹에 대하여 공유 아이디가 설정된 후, 공유 아이디를 갖는 공유 연산 그룹의 최종 레이어의 출력을 공유 버퍼로 설정할 수 있다(S180). 이후, 계속하여 S140 단계에서, 뉴럴 네트워크에서 요구되는 연산들을 추적할 수 있다.
한편, 하나의 공유 연산 그룹을 제외하고, 공유 아이디를 갖는 공유 연산 그룹들을 삭제할 수 있다(S190). 예컨대, 제1 뉴럴 네트워크, 제2 뉴럴 네트워크 및 제3 뉴럴 네트워크가 공유 연산 그룹을 포함할 경우, 제1 뉴럴 네트워크를 제외한 제2 및 제3 뉴럴 네트워크의 공유 연산 그룹이 삭제될 수 있다.
또한, 뉴럴 네트워크들 각각에 대하여, 공유 연산 그룹에 후속하는 연산의 입력이 공유 버퍼로 설정될 수 있다(S200). 실시예에 있어서, S190 단계는 S200 단계 이전에 수행되거나 S200 단계와 동시에 수행될 수도 있다.
이후, 전술한 단계들이 뉴럴 네트워크들의 최종 레이어에 대한 것인지 판단할 수 있다(S210). 즉, 뉴럴 네트워크들의 모든 레이어들에 대하여 동일한 연산 그룹이 있는지 판단하고, 동일한 연산 그룹이 병합되었는지 판단할 수 있다. 뉴럴 네트워크의 최종 레이어에 대한 것이라고 판단되면, 즉 뉴럴 네트워크의 모든 레이어들에 대하여 뉴럴 네트워크들 간에 병합될 동일한 연산 그룹이 있는지 확인되었다고 판단되면, 뉴럴 네트워크 병합이 종료될 수 있다. 뉴럴 네트워크의 최종 레이어가 아니라고 판단되면, 즉, 뉴럴 네트워크의 모든 레이어들에 대하여 전술한 단계들이 수행된 것이 아니라고 판단되면, 추가적으로 다른 레이어들에 대하여 전술한 바에 따라서 뉴럴 네트워크들 간에 병합될 동일한 연산 그룹이 있는지 확인할 수 있다.
도 10은 본 개시의 실시예에 따른 병합된 뉴럴 네트워크에 대한 컴퓨팅 리소스 할당 방법의 일 예를 나타내는 흐름도이다. 도 10의 리소스 할당 방법은 도 9를 참조하여 설명한 바와 같이, 뉴럴 네트워크들 간에 동일한 연산 그룹이 병합되면, 도 5의 뉴럴 네트워크 할당부(232)에서 수행될 수 있다. 따라서, 도 5를 참조하여 설명한 내용은 도 10의 실시예에 적용될 수 있다.
도 10을 참조하면, 테스크 실행 정책 및 컴퓨팅 리소스를 체크할 수 있다(S210). 도 5를 참조하여 설명한 바와 같이, 컨텍스트 매니저(240) 및 컴퓨팅 리소스 매니저(250)로부터 제공되는 스테틱 정보 및 다이나믹 정보에서 컴퓨팅 리소스, 및 애플리케이션의 선호 정보, 즉 테스크 실행 정책을 확인할 수 있다.
테스크 실행 정책 및 컴퓨팅 리소스를 기초로 공유 연산 그룹에 대하여 리소스 아이디를 설정할 수 있다(S220). 테스크 실행 정책 및 컴퓨팅 리소스를 기초로 연산 장치의 복수의 프로세서들 중 공유 연산 그룹을 실행할 프로세서를 선택하고, 상기 프로세서에 대한 리소스 아이디를 공유 연산 그룹에 대하여 할당할 수 있다. 실시예에 있어서, 리소스 아이디 설정 시, 공유 카운트를 고려하여 리소스 아이디를 할당할 수 있다. 이후, 공유 연산 그룹이 할당된 프로세서에 대하여 우선순위를 갖도록 공유 연산 그룹에 대하여 비선점 값을 설정할 수 있다(S230).
도 11은 본 개시의 실시예에 따른 뉴럴 네트워크 병합 모듈의 데이터 흐름도를 나타내는 블록도이다.
도 11을 참조하면, 복수의 애플리케이션들(211, 212, 213)에서 발행되는 테스크들을 수행할 복수의 뉴럴 네트워크들 각가에 대한 네트워크 정보(NN_IF1, NN_IF2, NN_IF3)가 뉴럴 네트워크 병합부(231)에 제공될 수 있다. 예컨대, 상기 정보들은 딥 러닝 프레임 워크(도 5의 220)로부터 제공될 수 있다.
뉴럴 네트워크 병합부(231)는 앞서 설명한 바와 같이, 뉴럴 네트워크들의 공유 연산 그룹을 찾고, 공유 연산 그룹을 병합할 수 있다. 이에 따라, 복수의 뉴럴 네트워크들에 대한 뉴럴 네트워크 정보(IF)에 공유 연산 그룹에 할당되는 공유 아이디(ID_S) 및 공유 카운트(CNT_S)가 추가될 수 있다.
뉴럴 네트워크 할당부(232)가 공유 연산 그룹에 리소스 아이디(ID_R) 및 비선점 값(NPPV)을 할당할 수 있다. 이에 따라서, 뉴럴 네트워크 정보(IF)에 공유 아이디(ID_S), 공유 카운트(CNT_S), 리소스 아이디(ID_R) 및 비선점 값(NPPV)이 추가될 수 있다.
도 12 내지 도 14는 본 개시의 실시예에 따른 뉴럴 네트워크 병합을 예시적으로 설명하는 도면이다.
도 12를 참조하면, 제1 테스크(T1) 및 제2 테스크(T2)는 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)에서 각각 수행될 수 있으며, 제1 뉴럴 네트워크(NN1)의 제1 연산 그룹(OG1) 및 제2 뉴럴 네트워크(NN2)의 제2 연산 그룹(OG2)에 포함되는 연산들 및 연산 실행 순서가 동일하다.
제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)에 대하여, 공통되는 연산 그룹, 즉 제1 연산 그룹(OG1) 및 제2 연산 그룹(OG2)이 병합되지 않는다면, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)는 GPU1 과 GPU2에서 각각 실행될 수 있다. 제1 연산 그룹(OG1) 및 제2 연산 그룹(OG2) 또한 GPU1 과 GPU2에서 각각 실행될 수 있다.
그러나, 도시된 바와 같이, 제1 연산 그룹(OG1) 및 제2 연산 그룹(OG2)이 공유 연산 그룹(SOG)으로 병합됨으로써, 제1 연산 그룹(OG1) 및 제2 연산 그룹(OG2)의 중복 수행이 방지될 수 있다. 이에 따라서 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 연산량이 감소되므로, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)는 하나의 프로세서, 즉 GPU1에서 실행될 수 있다.
도 13을 참조하면, 제1 테스크(T1) 및 제2 테스크(T2)는 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)에서 각각 수행되고, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)에서 공통되는 연산 그룹이 공유 연산 그룹(SGO)으로 병합되어 실행되는 과정에서(예컨대 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 런타임 중) 제3 테스크(T3)가 발행될 수 있다. 제3 테스크(T3)는 제3 뉴럴 네트워크(NN3)에서 수행될 수 있으며, 제3 뉴럴 네트워크(NN3)의 제3 연산 그룹(OG3)은 공유 연산 그룹(SOG)와 동일할 수 있다.
따라서, 제3 뉴럴 네트워크(NN3)의 제3 연산 그룹(OG3)이 공유 연산 그룹(SOG)에 병합될 수 있다. 제3 뉴럴 네트워크(NN3)의 제3 연산 그룹(OG3)이 공유 연산 그룹(SOG)에 병합되지 않는 경우, 공유 연산 그룹(SOG)에는 GPU1의 리소스 아이디가 할당될 수 있다. 즉 공유 연산 그룹(SOG)의 연산들은 GPU1에서 실행될 수 있다. 그런데, 제3 뉴럴 네트워크(NN3)의 제3 연산 그룹(OG3)이 공유 연산 그룹(SOG)에 병합됨으로써, 공유 연산 그룹(SOG)의 공유 카운트가 증가할 수 있다. 예컨대, 공유 카운트는 '2'에서 '3'으로 증가할 수 있다. 소정의 임계값이 3으로 설정된 경우, 공유 연산 그룹(SOG)에 전용 NPU의 리소스 아이디가 할당되고, 이후에 공유 연산 그룹(SOG)은 전용 NPU에서 실행될 수 있다.
도 14를 참조하면, 도 13과 같이, 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)에서 공통되는 연산 그룹이 제1 공유 연산 그룹(SOG1)으로 병합되어 실행되는 과정에서(예컨대 제1 뉴럴 네트워크(NN1) 및 제2 뉴럴 네트워크(NN2)의 런타임 중) 제3 뉴럴 네트워크(NN3)에서 수행되는 제3 테스크(T3)가 발행될 수 있다. 제3 뉴럴 네트워크(NN3)의 제4 연산 그룹(OG4) 및 제5 연산 그룹(OG5)은 제1 공유 연산 그룹(SOG1) 및 제2 뉴럴 네트워크(NN2)의 제3 연산 그룹(OG3)과 각각 동일할 수 있다.
따라서, 제3 뉴럴 네트워크(NN3)의 제4 연산 그룹(OG4)이 제1 공유 연산 그룹(SOG)에 병합되고, 제2 뉴럴 네트워크(NN2)의 제3 연산 그룹(OG3)과 제3 뉴럴 네트워크(NN3)의 제5 연산 그룹(OG5)이 제2 공유 연산 그룹(SOG2)로서 병합될 수 있다.
제3 뉴럴 네트워크(NN3)의 제4 연산 그룹(OG4) 및 제5 연산 그룹(OG5)이 제1 공유 연산 그룹(SOG1) 및 제2 뉴럴 네트워크(NN2)의 제3 연산 그룹(OG3)과 각각 병합되지 않는 경우, 제1 뉴럴 네트워크(NN1), 제2 뉴럴 네트워크(NN2) 및 제3 뉴럴 네트워크(NN3)에는 각각 GPU1, GPU2 및 GPU3의 리소스 아이디가 할당되고, 또한 제1 공유 연산 그룹(SOG1)에도 GPU1의 리소스 아이디가 할당될 수 있다. 그러나, 연산 그룹들의 병합에 따라 제1 공유 연산 그룹(SOG1)의 공유 카운트가 증가하고, 제1 뉴럴 네트워크(NN1), 제2 뉴럴 네트워크(NN2) 및 제3 뉴럴 네트워크(NN3)에 대한 연산량이 감소되어, 제1 공유 연산 그룹(SOG1) 및 제1 뉴럴 네트워크(NN1)의 추가 연산들에 대하여 전용 NPU의 리소스 아이디가 할당되고, 2 뉴럴 네트워크(NN2) 및 제3 뉴럴 네트워크(NN3)에 대하여, GPU2의 리소스 아이디가 할당될 수 있다.
도 15는 본 개시의 예시적인 실시예에 따른 뉴럴 네트워크 병합 모듈이 소프트웨어적으로 구현되는 예를 나타내는 블록도이다. 도 15에 도시된 시스템은 애플리케이션 프로세서(300)일 수 있으며, 애플리케이션 프로세서(300)는 반도체 칩으로서 시스템 온 칩(SoC)으로 구현될 수 있다.
애플리케이션 프로세서(300)는 프로세서(310), 동작 메모리(320) 및 연산 장치(330)를 포함할 수 있다. 연산 장치(330)는 다수의 하드웨어 장치, 즉 연산 프로세서들을 포함할 수 있다. 도 15에는 도시되지 않았으나, 애플리케이션 프로세서(300)는 시스템 버스에 연결되는 하나 이상의 IP(Intellectual Property) 모듈들을 더 포함할 수도 있다. 동작 메모리(320)는 애플리케이션 프로세서(300)가 채용되는 시스템의 동작과 관련된 각종 프로그램 및 명령어 등의 소프트웨어를 저장할 수 있으며, 일 예로서 운영 체제(321), 뉴럴 네트워크 병합 모듈(322)을 포함할 수 있다. 예시적인 실시예에 따라, 뉴럴 네트워크 병합 모듈(322)은 운영 체제(321) 내에 구현될 수도 있을 것이다.
뉴럴 네트워크 병합 모듈(322)은 복수의 뉴럴 네트워크들에 공통되는 연산 그룹 또는 서브 뉴럴 네트워크를 병합하고, 병합된 연산 그룹 또는 서브 뉴럴 네트워크에 공유 아이디 및 리소스 아이디를 할당함으로써, 복수의 뉴럴 네트워크 실행 과정에서 병합된 연산 그룹 또는 서브 뉴럴 네트워크가 하나의 연산 프로세서에서 실행되도록 설정할 수 있다.
도 16 및 도 17은 본 개시의 실시예에 따른 뉴럴 네트워크 병합 모듈을 포함하는 뉴럴 네트워크 시스템의 실시예를 나타내는 블록도이다. 도 16은 개체 인식 시스템을 나타내는 블록도이고, 도 17은 자율 운행 시스템을 나타내는 블록도이다.
도 16을 참조하면, 개체 인식 시스템(400), 예컨대 영상 처리 시스템은 개체 인식 모듈(430), 이미지 센서(410), 연산 장치(440) 및 CPU(450)를 포함할 수 있으며. 개체 인식 모듈(430)은 딥 러닝 프레임 워크(431) 및 뉴럴 네트워크 병합 모듈(432)를 포함할 수 있다. 개체 인식 모듈(430)은 CPU의 제어 하에 실행되고, 이미지 센서(410)로부터 수신되는 이미지에서 개체를 인식하고, 정보 신호를 생성할 수 있다. 개체 인식 모듈(430)은 복수의 뉴럴 네트워크를 실행할 수 있으며, 뉴럴 네트워크 병합 모듈(432)은 복수의 뉴럴 네트워크들에 공통되는 연산 그룹 또는 서브 뉴럴 네트워크를 병합하고, 병합된 연산 그룹 또는 서브 뉴럴 네트워크에 공유 아이디 및 리소스 아이디를 할당할 수 있다.
도 17을 참조하면, 자율 운행 시스템(500)은 센서 모듈(510), 네비게이션 모듈(520), 자율 운행 모듈(530), 연산 장치(540) 및 CPU(550)를 포함할 수 있다. 또한, 자율 운행 모듈(530)은 딥 러닝 프레임 워크(531) 및 뉴럴 네트워크 병합 모듈(532)를 포함할 수 있다. 자율 운행 모듈(530)은 센서 모듈(510) 및 네비게이션 모듈(520)로부터 수신되는 영상 정보 및 음성 정보를 이용하여 뉴럴 네트워크 동작을 수행하고, 수행 결과를 기초로 영상 인식 결과 및 음성 인식 결과 등의 정보 신호를 생성할 수 있다. 일 예로서, 센서 모듈(510)은 카메라나 마이크 등의 각종 영상 정보 및 음성 정보를 수집할 수 있는 장치들을 포함하고, 이를 자율 운행 모듈(530)로 제공할 수 있다. 또한, 네비게이션 모듈(520)은 자동차 운행과 관련된 각종 정보(예컨대, 위치 정보 등)를 자율 운행 모듈(530)로 제공할 수 있다. 자율 운행 모듈(530)은 센서 모듈(510) 및/또는 네비게이션 모듈(520)로부터의 정보를 입력으로 하여, 다양한 종류의 뉴럴 네트워크를 실행함으로써 정보 신호를 생성할 수 있다. 뉴럴 네트워크 병합 모듈(432)은 복수의 뉴럴 네트워크들에 공통되는 연산 그룹 또는 서브 뉴럴 네트워크를 병합하고, 병합된 연산 그룹 또는 서브 뉴럴 네트워크에 공유 아이디 및 리소스 아이디를 할당할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 프로세서의 제어에 기반하여, 동일한 연산들을 포함하는 제1 뉴럴 네트워크의 제1 연산 그룹 및 제2 뉴럴 네트워크의 제2 연산 그룹을 공유 연산 그룹으로서 병합하는 단계;
    상기 프로세서의 제어에 기반하여, 복수의 하드웨어들 중 상기 공유 연산 그룹을 실행할 제1 하드웨어를 선정하는 단계; 및
    상기 제1 하드웨어에 의해 상기 공유 연산 그룹을 실행하는 단계를 포함하는 뉴럴 네트워크 시스템의 동작 방법.
  2. 제1 항에 있어서, 상기 병합하는 단계는,
    상기 제1 뉴럴 네트워크의 복수의 연산들 및 상기 제2 뉴럴 네트워크의 복수의 연산들 중 상기 제1 연산 그룹 및 상기 제2 연산 그룹을 검출하는 단계; 및
    상기 제1 연산 그룹 및 상기 제2 연산 그룹에 상기 공유 연산 그룹을 나타내는 공유 아이디를 할당하는 단계를 포함하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작 방법.
  3. 제2 항에 있어서, 상기 제1 연산 그룹 및 상기 제2 연산 그룹을 검출하는 단계는,
    상기 제1 뉴럴 네트워크 및 상기 제2 뉴럴 네트워크들 각각에 대하여 미리 설정된 연산 그룹 아이디들 및 서브 뉴럴 네트워크 아이디 중 적어도 하나를 기초로 상기 제1 연산 그룹 및 상기 제2 연산 그룹을 검출하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작 방법.
  4. 제2 항에 있어서, 상기 제1 연산 그룹 및 상기 제2 연산 그룹을 검출하는 단계는,
    상기 제1 뉴럴 네트워크 및 상기 제2 뉴럴 네트워크 중 적어도 하나의 레이어 토폴로지를 분석하고, 분석 결과를 기초로 상기 제1 연산 그룹 및 상기 제2 연산 그룹을 검출하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작 방법.
  5. 제2 항에 있어서, 상기 제1 연산 그룹 및 상기 제2 연산 그룹을 검출하는 단계는,
    상기 제1 뉴럴 네트워크 및 상기 제2 뉴럴 네트워크 중 적어도 하나의 런타임 시의 연산 과정을 추적함으로써 연산 히스토리를 생성하고, 상기 연산 히스토리의 분석 결과를 기초로 상기 제1 연산 그룹 및 상기 제2 연산 그룹을 검출하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작 방법.
  6. 제2 항에 있어서, 상기 공유 연산 그룹을 실행하는 단계는,
    상기 제1 하드웨어가 상기 공유 연산 그룹의 마지막 연산의 출력을 공유 버퍼에 저장하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작 방법.
  7. 제1 항에 있어서, 상기 공유 아이디를 할당하는 단계는,
    상기 제1 연산 그룹 및 상기 제2 연산 그룹에 상기 공유 아이디를 갖는 연산 그룹들의 개수를 나타내는 공유 카운트를 할당하는 단계를 포함하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작 방법.
  8. 제1 항에 있어서, 상기 제1 하드웨어를 선정하는 단계는,
    애플리케이션 선호 정보, 컴퓨팅 리소스 및 공유 카운트 중 적어도 하나를 기초로 상기 제1 하드웨어를 선택하는 단계; 및
    상기 제1 하드웨어의 리소스 아이디를 상기 공유 연산 그룹에 할당하는 단계를 포함하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작 방법.
  9. 제8 항에 있어서, 상기 제1 하드웨어를 선정하는 단계는,
    상기 공유 연산 그룹에 상기 제1 하드웨어에 대한 유선 순위를 설정하는 단계를 더 포함하는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작 방법.
  10. 제1 항에 있어서, 상기 병합하는 단계 및 상기 제1 하드웨어를 선정하는 단계는,
    상기 제1 뉴럴 네트워크 및 상기 제2 뉴럴 네트워크 중 적어도 하나의 런타임 중 수행되는 것을 특징으로 하는 뉴럴 네트워크 시스템의 동작 방법.
KR1020170152508A 2017-11-15 2017-11-15 뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법 KR20190055610A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170152508A KR20190055610A (ko) 2017-11-15 2017-11-15 뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US16/189,206 US11704553B2 (en) 2017-11-15 2018-11-13 Neural network system for single processing common operation group of neural network models, application processor including the same, and operation method of neural network system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170152508A KR20190055610A (ko) 2017-11-15 2017-11-15 뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법

Publications (1)

Publication Number Publication Date
KR20190055610A true KR20190055610A (ko) 2019-05-23

Family

ID=66433414

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170152508A KR20190055610A (ko) 2017-11-15 2017-11-15 뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법

Country Status (2)

Country Link
US (1) US11704553B2 (ko)
KR (1) KR20190055610A (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11139845B2 (en) 2019-06-07 2021-10-05 Micron Technology, Inc. Wireless devices and systems including examples of mismatch correction scheme
WO2021211565A1 (en) * 2020-04-15 2021-10-21 Micron Technology, Inc. Wireless devices and systems including examples of compensating power amplifier noise with neural networks or recurrent neural networks
US11159188B2 (en) 2018-05-22 2021-10-26 Micron Technology, Inc. Wireless devices and systems including examples of compensating power amplifier noise
US11496341B2 (en) 2020-08-13 2022-11-08 Micron Technology, Inc. Wireless devices and systems including examples of compensating I/Q imbalance with neural networks or recurrent neural networks
WO2023121263A1 (ko) * 2021-12-22 2023-06-29 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법
KR102625801B1 (ko) * 2023-03-06 2024-01-16 주식회사 모레 인공지능 연산을 위한 오퍼레이션 호출 목록 생성 방법및 시스템
US12040920B2 (en) 2022-11-04 2024-07-16 Lodestar Licensing Group Llc Wireless devices and systems including examples of compensating I/Q imbalance with neural networks or recurrent neural networks

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US20190340490A1 (en) * 2018-05-04 2019-11-07 Apple Inc. Systems and methods for assigning tasks in a neural network processor
JP2019195304A (ja) 2018-05-10 2019-11-14 学校法人順天堂 画像解析方法、装置、コンピュータプログラム、及び深層学習アルゴリズムの生成方法
US11609792B2 (en) * 2019-03-19 2023-03-21 Alibaba Group Holding Limited Maximizing resource utilization of neural network computing system
US11699064B2 (en) * 2019-04-23 2023-07-11 Arm Limited Data processing using a neural network system
JP7381003B2 (ja) * 2019-04-26 2023-11-15 学校法人順天堂 疾患解析を支援する方法、装置、及びコンピュータプログラム、並びにコンピュータアルゴリズムを訓練する方法、装置、及びプログラム
US11586895B1 (en) * 2019-06-17 2023-02-21 Green Mountain Semiconductor, Inc. Recursive neural network using random access memory
WO2021225262A1 (en) * 2020-05-07 2021-11-11 Samsung Electronics Co., Ltd. Neural architecture search based optimized dnn model generation for execution of tasks in electronic device
US11824977B2 (en) * 2020-07-28 2023-11-21 Arm Limited Data processing system and method
KR20220118047A (ko) * 2021-02-18 2022-08-25 삼성전자주식회사 어플리케이션의 모델 파일을 초기화하는 프로세서 및 이를 포함하는 전자 장치
US11960927B2 (en) * 2021-07-12 2024-04-16 Dell Products L.P. Task correlation framework
CN114691330A (zh) * 2022-03-28 2022-07-01 北京百度网讯科技有限公司 数据处理方法、装置、电子设备以及存储介质

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295227A (en) * 1991-07-09 1994-03-15 Fujitsu Limited Neural network learning system
US7418123B2 (en) 2002-07-12 2008-08-26 University Of Chicago Automated method and system for computerized image analysis for prognosis
US6968335B2 (en) * 2002-11-14 2005-11-22 Sesint, Inc. Method and system for parallel processing of database queries
US7127083B2 (en) 2003-11-17 2006-10-24 Vidient Systems, Inc. Video surveillance system with object detection and probability scoring based on object class
US7689016B2 (en) 2005-05-27 2010-03-30 Stoecker & Associates, A Subsidiary Of The Dermatology Center, Llc Automatic detection of critical dermoscopy features for malignant melanoma diagnosis
CA2639775A1 (en) 2007-09-24 2009-03-24 Solido Design Automation Inc. Model-building optimization
US9467507B2 (en) * 2011-01-03 2016-10-11 Verizon Patent And Licensing Inc. Wireless network cloud computing resource management
JP5478526B2 (ja) 2011-01-31 2014-04-23 日本電信電話株式会社 データ分析及び機械学習処理装置及び方法及びプログラム
JP5905734B2 (ja) 2012-02-17 2016-04-20 Kddi株式会社 サポートベクトルマシンを構築する方法及び装置
US8984515B2 (en) * 2012-05-31 2015-03-17 International Business Machines Corporation System and method for shared execution of mixed data flows
US9141916B1 (en) 2012-06-29 2015-09-22 Google Inc. Using embedding functions with a deep network
CN104903849B (zh) 2012-09-07 2017-11-28 卡内基·梅隆大学 用于混合gpu/cpu数据处理的方法
US9477753B2 (en) 2013-03-12 2016-10-25 International Business Machines Corporation Classifier-based system combination for spoken term detection
US9275308B2 (en) 2013-05-31 2016-03-01 Google Inc. Object detection using deep neural networks
US9508347B2 (en) 2013-07-10 2016-11-29 Tencent Technology (Shenzhen) Company Limited Method and device for parallel processing in model training
US9665823B2 (en) 2013-12-06 2017-05-30 International Business Machines Corporation Method and system for joint training of hybrid neural networks for acoustic modeling in automatic speech recognition
US9514366B2 (en) 2014-02-03 2016-12-06 Xerox Corporation Vehicle detection method and system including irrelevant window elimination and/or window score degradation
US20150324690A1 (en) * 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
CN104036451B (zh) 2014-06-20 2018-12-11 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置
US9536293B2 (en) 2014-07-30 2017-01-03 Adobe Systems Incorporated Image assessment using deep convolutional neural networks
JP5816771B1 (ja) 2015-06-08 2015-11-18 株式会社Preferred Networks 学習装置ユニット
US9965719B2 (en) 2015-11-04 2018-05-08 Nec Corporation Subcategory-aware convolutional neural networks for object detection
JP6517681B2 (ja) 2015-12-17 2019-05-22 日本電信電話株式会社 映像パターン学習装置、方法、及びプログラム
US10303646B2 (en) * 2016-03-25 2019-05-28 Microsoft Technology Licensing, Llc Memory sharing for working data using RDMA
US11269643B2 (en) * 2017-04-09 2022-03-08 Intel Corporation Data operations and finite state machine for machine learning via bypass of computational tasks based on frequently-used data values
US10534613B2 (en) * 2017-04-28 2020-01-14 Intel Corporation Supporting learned branch predictors
US11087206B2 (en) * 2017-04-28 2021-08-10 Intel Corporation Smart memory handling and data management for machine learning networks
US11741354B2 (en) * 2017-08-25 2023-08-29 Ford Global Technologies, Llc Shared processing with deep neural networks

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11159188B2 (en) 2018-05-22 2021-10-26 Micron Technology, Inc. Wireless devices and systems including examples of compensating power amplifier noise
US11528043B2 (en) 2018-05-22 2022-12-13 Micron Technology, Inc. Wireless devices and systems including examples of compensating power amplifier noise
US11139845B2 (en) 2019-06-07 2021-10-05 Micron Technology, Inc. Wireless devices and systems including examples of mismatch correction scheme
US11716104B2 (en) 2019-06-07 2023-08-01 Micron Technology, Inc. Wireless devices and systems including examples of mismatch correction scheme
WO2021211565A1 (en) * 2020-04-15 2021-10-21 Micron Technology, Inc. Wireless devices and systems including examples of compensating power amplifier noise with neural networks or recurrent neural networks
US11601146B2 (en) 2020-04-15 2023-03-07 Micron Technology, Inc. Wireless devices and systems including examples of compensating power amplifier noise with neural networks or recurrent neural networks
US11496341B2 (en) 2020-08-13 2022-11-08 Micron Technology, Inc. Wireless devices and systems including examples of compensating I/Q imbalance with neural networks or recurrent neural networks
WO2023121263A1 (ko) * 2021-12-22 2023-06-29 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법
US12040920B2 (en) 2022-11-04 2024-07-16 Lodestar Licensing Group Llc Wireless devices and systems including examples of compensating I/Q imbalance with neural networks or recurrent neural networks
KR102625801B1 (ko) * 2023-03-06 2024-01-16 주식회사 모레 인공지능 연산을 위한 오퍼레이션 호출 목록 생성 방법및 시스템

Also Published As

Publication number Publication date
US11704553B2 (en) 2023-07-18
US20190147337A1 (en) 2019-05-16

Similar Documents

Publication Publication Date Title
KR20190055610A (ko) 뉴럴 네트워크 모델들의 공용 연산 그룹을 단일 처리하는 뉴럴 네트워크 시스템, 이를 포함하는 애플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
KR102610820B1 (ko) 뉴럴 네트워크 시스템 및 뉴럴 네트워크 시스템의 동작방법
KR102606825B1 (ko) 뉴럴 네트워크 모델을 변형하는 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US11176438B2 (en) Neural network system, application processor having the same, and method of operating the neural network system
KR102164427B1 (ko) 신경망의 실행 순서 결정
Tang et al. LoPECS: A low-power edge computing system for real-time autonomous driving services
US20210406085A1 (en) Methods and apparatus for allocating a workload to an accelerator using machine learning
US20210373944A1 (en) Scheduler, method of operating the same, and accelerator apparatus including the same
US10782897B2 (en) Memory reduction for neural networks with fixed structures
CN110717574B (zh) 一种神经网络运行方法、装置及异构智能芯片
CN112543918A (zh) 神经网络切分方法、预测方法及相关装置
US11880715B2 (en) Method and system for opportunistic load balancing in neural networks using metadata
US20210319298A1 (en) Compute-based subgraph partitioning of deep learning models for framework integration
Tang et al. Pi-edge: A low-power edge computing system for real-time autonomous driving services
EP3401846B1 (en) Method and device for analyzing sensor data
KR20210023401A (ko) 뉴럴 네트워크 연산 방법 및 이를 포함하는 시스템
CN111523642A (zh) 用于卷积运算的数据重用方法、运算方法及装置、芯片
CN116401052A (zh) 一种数据处理方法、模型处理方法、电子设备及介质
CN106844037B (zh) 一种基于knl的测试方法及系统
Ting et al. System services for reconfigurable hardware acceleration in mobile devices
US11593686B2 (en) Methods, systems and apparatus to improve deep learning resource efficiency
US20200143244A1 (en) Method of managing task in artificial neural network and system including the artificial neural network system using the method
KR20220045828A (ko) 태스크 수행 방법 및 이를 이용하는 전자 장치
KR102559658B1 (ko) 스케줄링 방법 및 장치
US20220147398A1 (en) Method and apparatus for lightweight and parallelization of accelerator task scheduling

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal