KR20200083048A - 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법 - Google Patents

폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법 Download PDF

Info

Publication number
KR20200083048A
KR20200083048A KR1020180174269A KR20180174269A KR20200083048A KR 20200083048 A KR20200083048 A KR 20200083048A KR 1020180174269 A KR1020180174269 A KR 1020180174269A KR 20180174269 A KR20180174269 A KR 20180174269A KR 20200083048 A KR20200083048 A KR 20200083048A
Authority
KR
South Korea
Prior art keywords
resource
polling
polling time
time
graph
Prior art date
Application number
KR1020180174269A
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 KR1020180174269A priority Critical patent/KR20200083048A/ko
Priority to DE102019120513.1A priority patent/DE102019120513A1/de
Priority to US16/532,885 priority patent/US11625600B2/en
Priority to CN201911065022.5A priority patent/CN111382865A/zh
Priority to SG10201910549YA priority patent/SG10201910549YA/en
Publication of KR20200083048A publication Critical patent/KR20200083048A/ko
Priority to US18/127,824 priority patent/US20230229914A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/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/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)

Abstract

폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 처리 방법이 개시된다. 본 개시에 따른 제1 연산 처리 그래프를 처리하는 뉴럴 네트워크 시스템은 상기 제1 연산 처리 그래프에 대응하는 적어도 하나의 연산 동작을 수행한 결과 제1 연산 결과를 생성하도록 구성되는 제1 리소스 및 상기 제1 리소스에서 상기 적어도 하나의 연산 동작을 수행하는데 소요되는 시간인 제1 폴링 시간을 계산하고, 계산된 상기 제1 폴링 시간을 기초로 상기 제1 연산 결과를 상기 제1 리소스로부터 폴링하도록 구성되는 태스크 매니저를 포함할 수 있다.

Description

폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법 {NEURAL NETWORK SYSTEM PREDICTING POLLING TIME AND NEURAL NETWORK MODEL PROCESSING METHOD USING THE SAME}
본 개시의 기술적 사상은 뉴럴 네트워크의 연산 처리 그래프를 이용하여 입력 모델에 대한 딥 러닝을 수행하는 뉴럴 네트워크 시스템에 관한 것으로서, 더욱 상세하게는 연산 처리 그래프에 대한 연산 결과를 불러들이기 위한 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용하는 뉴럴 네트워크 모델 처리 방법에 관한 것이다.
인공 뉴럴 네트워크(artificial neural network; ANN)은 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 뉴럴 네트워크에 기초하여 딥러닝(deep learning) 또는 기계 학습(machine learning) 등이 구현될 수 있다. 최근 뉴럴 네트워크를 이용하여 처리해야 할 연산이 비약적으로 증가함에 따라, 뉴럴 네트워크를 이용한 연산 처리를 효율적으로 수행하기 위한 필요성이 요구되고 있다.
본 개시의 기술적 사상이 해결하고자 하는 과제는 리소스가 연산을 완료할 폴링 시간을 미리 예측하고, 예측한 폴링 시간에 리소스로부터 연산 결과를 폴링하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법에 관한 것이다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 제1 연산 처리 그래프를 처리하는 뉴럴 네트워크 시스템은 상기 제1 연산 처리 그래프에 대응하는 적어도 하나의 연산 동작을 수행한 결과 제1 연산 결과를 생성하도록 구성되는 제1 리소스 및 상기 제1 리소스에서 상기 적어도 하나의 연산 동작을 수행하는데 소요되는 시간인 제1 폴링 시간을 계산하고, 계산된 상기 제1 폴링 시간을 기초로 상기 제1 연산 결과를 상기 제1 리소스로부터 폴링하도록 구성되는 태스크 매니저를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 제1 서브 그래프를 포함하는 연산 처리 그래프를 이용하여 뉴럴 네트워크 모델을 처리하는 방법은 제1 서브 그래프에 대한 정보를 기초로 상기 제1 서브 그래프에 대응하는 제1 연산 동작을 수행하는데 소요되는 시간인 제1 폴링 시간을 계산하는 단계, 제1 리소스에서 구동될 수 있도록 상기 제1 서브 그래프를 컴파일 함으로써 제1 실행 데이터를 생성하는 단계, 상기 제1 실행 데이터를 상기 제1 리소스에 출력하는 단계 및 상기 제1 리소스에 상기 제1 실행 데이터를 출력한 시점으로부터 상기 제1 폴링 시간이 소요된 후 상기 제1 리소스로부터 상기 제1 실행 데이터에 대응하는 제1 연산 결과를 폴링하는 단계포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 서브 그래프를 포함하는 연산 처리 그래프를 이용하여 뉴럴 네트워크 모델을 처리하는 방법은 리소스에서 구동될 수 있도록 상기 서브 그래프를 컴파일 함으로써 실행 데이터를 생성하는 단계, 상기 실행 데이터를 상기 리소스에 출력하는 단계, 상기 리소스에 상기 실행 데이터를 출력한 시점으로부터 제1 폴링 시간이 소요된 후, 상기 리소스에 상기 실행 데이터에 대응하는 연산 결과를 폴링하기 위한 제1 폴링 신호를 출력하는 단계 및 상기 제1 폴링 신호를 출력한 시점으로부터 상기 제1 폴링 시간과 상이한 제2 폴링 시간이 소요된 후, 상기 연산 결과를 폴링하기 위한 제2 폴링 신호를 출력하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 뉴럴 네트워크 시스템은 리소스가 연산 처리 그래프에 대응하는 연산에 소요되는 폴링 시간을 예측하고, 예측한 폴링 시간에 리소스로부터 연산 결과를 폴링함으로써 효율적으로 뉴럴 네트워크 모델에 대응하는 연산을 처리하고, 연산 처리에 대한 에러 핸들링 능력을 증가시킬 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다.
도 3은 본 개시의 예시적 실시예에 따른 연산 처리 그래프를 나타내는 도면이다.
도 4는 본 개시의 예시적 실시예에 따른 모델 프로세서의 동작 방법을 나타내는 순서도이다.
도 5는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다.
도 6은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다.
도 7은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다.
도 8은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다.
도 9는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다.
도 10a 및 도 10b는 본 개시의 예시적 실시예에 따른 폴링 시간 계산 방법을 설명하기 위한 도면이다.
도 11은 본 개시의 예시적 실시예에 따른 연산 처리 테이블을 나타내는 표이다.
도 12는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다.
도 13은 본 개시의 예시적 실시예에 따른 폴링 시간 테이블을 나타내는 표이다.
도 14는 본 개시의 예시적 실시예에 따른 모델 프로세서의 동작 방법을 나타내는 순서도이다.
도 15는 본 개시의 예시적 실시예에 따른 모델 프로세서의 동작 방법을 나타내는 순서도이다.
도 16은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다.
도 17은 본 개시의 예시적 실시예에 따른 모델 프로세서의 동작 방법을 나타내는 순서도이다.
도 18a 및 도 18b는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다.
도 19는 본 개시의 예시적 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다.
도 1을 참조하면, 뉴럴 네트워크 시스템(10)은 복수의 어플리케이션들(APP), 모델 프로세서(100) 및 복수의 리소스들(210, 220, 230)을 포함할 수 있다. 복수의 어플리케이션들(APP)은 다양한 API(Application Programming Interface)에 의해 생성될 수 있으며, 뉴럴 네트워크 모델을 이용하여 다양한 작업을 수행할 수 있다. 뉴럴 네트워크 모델은 GoogLeNet, AlexNet, VGG Network 등과 같은 CNN(Convolution Neural Network), R-CNN(Rigion with Convolution Neural Network), RPN(Region Proposal Network), RNN(Recurrent Neural Network), S-DNN(Stacking-based Deep Neural Network), DBM(Deep Belief Network), RBM(Restricted Boltzman Machine), Fully Convolutional Network, LSTM(Long Short Term Memory) Network, Classification Network 등 다양한 종류의 뉴럴 네트워크 모델들을 포함할 수 있으나, 이에 제한되지 않는다. 또한, 하나의 태스크를 수행하는 뉴럴 네트워크 모델은 서브 뉴럴 네트워크들을 포함할 수 있으며, 서브 뉴럴 네트워크들은 이종의 뉴럴 네트워크들을 포함할 수 있으며, 서브 뉴럴 네트워크들은 이종의 뉴럴 네트워크 모델로 구현될 수 있다.
복수의 어플리케이션들(APP)은 모델 프로세서(100)에 입력 모델(IM)을 출력함으로써 뉴럴 네트워크 모델을 이용한 데이터 처리를 수행하도록 모델 프로세서(100)에 요청할 수 있다.
모델 프로세서(100)는 모델 분석기(110), 태스크 매니저(120) 및 복수의 컴파일러들(130)을 포함할 수 있다. 모델 프로세서(100)에 포함된 각각의 구성들은 소프트웨어로 구현될 수 있고, EDEN(Evolutinary Deep Network) 등의 신경망 플랫폼으로 구현될 수 있다. 또 다른 예시에서, 모델 프로세서(100)에 포함되는 구성들은 전자 회로와 같은 하드웨어로 구현될 수 있다. 일 예시에서 모델 프로세서(100)는 뉴럴 네트워크의 프레임 워크(Framework)로 구현될 수 있다.
모델 분석기(110)는 복수의 어플리케이션들(APP)로부터 뉴럴 네트워크를 이용하기 위한 데이터를 포함하는 입력 모델(IM)을 수신하고, 입력 모델(IM)을 분석함으로써 복수의 서브 그래프들로 구성되는 연산 처리 그래프를 생성할 수 있다. 연산 처리 그래프는 복수의 연산 노드들을 포함하는 그래프로 표현되는 데이터 구조를 의미할 수 있다. 모델 분석기(110)는 연산 처리 그래프를 복수의 리소스들(210, 220, 230) 각각이 처리하기에 적당한 구조로 분할함으로써 복수의 서브 그래프들을 생성할 수 있다. 모델 분석기(110)는 연산 처리 그래프 및 복수의 서브 그래프들을 태스크 매니저(120)에 출력할 수 있다.
태스크 매니저(120)는 연산 노드들로 구성되는 복수의 서브 그래프들을 복수의 리소스들(210, 220, 230)에 할당할 수 있다. 태스크 매니저(120)는 복수의 서브 그래프들 각각의 구조적 특징 또는 포함되는 연산의 종류에 기초하여 복수의 서브 그래프들 각각에 대해 적합한 리소스들(210, 220, 230)을 할당할 수 있다. 태스크 매니저(120)는 복수의 서브 그래프들 각각을 할당된 리소스에 대응하는 복수의 컴파일러들(130) 각각에 별도의 통신 패쓰를 통해 출력할 수 있다.
복수의 컴파일러들(130)은 태스크 매니저(120)로부터 수신한 서브 그래프를 리소스가 이해할 수 있는 프로그램 언어로 번역하는 컴파일링을 수행할 수 있다. 복수의 컴파일러들(130) 각각은 하나의 리소스에 대응될 수 있고, 태스크 매니저(120)로부터 수신한 서브 그래프를 대응되는 리소스의 프로그램 언어로 컴파일할 수 있다. 일 예시에서, 복수의 컴파일러들(130) 중 제1 컴파일러는 제1 리소스(210)에 대응되고, 수신한 서브 그래프를 제1 리소스(210)에 대응하는 프로그램 언어로 컴파일할 수 있다. 또한, 복수의 컴파일러들(130) 중 제2 컴파일러는 제2 리소스(210)에 대응되고, 수신한 서브 그래프를 제2 리소스(210)에 대응하는 프로그램 언어로 컴파일할 수 있다. 복수의 컴파일러들(130) 각각은 서브 그래프를 컴파일함으로써 실행 데이터를 생성할 수 있고, 생성한 실행 데이터를 대응되는 리소스(210, 220, 230)에 출력할 수 있다. 일 예시에서, 실행 데이터는 리소스에 대응되는 프로그램 언어로 번역된 프로그램 파일로 구현될 수 있다.
복수의 리소스들(210, 220, 230)은 연산 리소스 및 통신 리소스를 포함할 수 있다. 예를 들어, 연산 리소스들은 CPU(Central Processing Unit), Graphic Processing Unit(GPU), AP(Application Processor), DSP(Digital Signal Processor), FPGA(Field-Programmable Gate Array), NPU(Neural network Processing unit), ECU(Electronic Control Unit), ISP(Image Signal Processor) 등 다양한 연산 처리 장치들을 포함할 수 있다. 연산 리소스는 특정 작업 전용 하드웨어(dedicated hardware)를 포함할 수 있다. 예를 들어, NPU는 뉴럴 네트워크 모델을 이용한 연산을 처리하는데 사용되는 특정 작업 전용 하드웨어가 될 수 있다.
통신 리소스들은 시스템 버스, PCI(Peripheral Component Interconnect), PCIe(PCI express), SATA(Serial ATA), SCSI(Small Computer System Interface), SAS(Serial Attatched SCSI) 등과 같은 내부 통신 및/또는 USB(universal serial bus), Ethernet, WiFi, Bluetooth, NFC(near field communication), RFID(radio frequency identification), 이동 통신(mobile telecommunication) 등과 같은 외부 통신을 지원할 수 있는 리소스일 수 있다.
복수의 리소스들(210, 220, 230)은 이종 리소스들로 구성될 수 있다. 일 예시에서, 제1 리소스(210)는 NPU이고, 제2 리소스(220)는 GPU일 수 있다. 복수의 리소스들(210, 220, 230) 각각은 대응되는 컴파일러로부터 수신한 실행 데이터를 실행시킴으로써 서브 그래프에 대한 연산을 수행할 수 있다. 복수의 리소스들(210, 220, 230)은 실행 데이터를 이용하여 대응되는 연산을 수행함으로써 연산 결과를 생성할 수 있다. 태스크 매니저(120)는 복수의 리소스들(210, 220, 230)에 폴링 신호들(PS1~PSn)을 출력함으로써 연산 결과를 폴링할 수 있다.
본 명세서에서, 폴링(Polling)이란, 제어 장치(예를 들면, 모델 프로세서(100))가 단말 장치(예를 들면, 복수의 리소스들(210, 220, 230))에 대해 송신이 필요한 신호의 유무를 문의하고, 요구가 있는 경우, 송신을 시작하도록 지령하는 것을 의미할 수 있다. 일 예시에서, 모델 프로세서(100)는 복수의 리소스(210, 220, 230)에 폴링 신호(PS1~PSn)를 출력함으로써 연산 결과에 대한 송신 요구의 유무를 문의할 수 있다. 복수의 리소스들(210, 220, 230)이 연산을 완료함으로써 연산 결과에 대한 송신 요구가 있는 경우, 모델 프로세서(100)는 복수의 리소스들(210, 220, 230)에게 송신을 시작하도록 지령함으로써 연산 결과를 폴링할 수 있다. 복수의 리소스들(210, 220, 230)는 모델 프로세서(100)의 폴링에 대응하여 연산 결과를 모델 프로세서(100)에 송신할 수 있다.
본 개시의 기술적 사상에 따른 모델 프로세서(100)는 복수의 리소스들(210, 220, 230)이 실행 데이터에 대응하는 연산을 수행하기 위한 폴링 시간을 예측하고, 예측한 폴링 시간을 기초로 복수의 리소스들(210, 220, 230)로부터 연산 결과를 폴링함으로써 정확한 시점에 연산 결과를 폴링할 수 있다.
도시되지 않았지만, 모델 프로세서(100)는 모델 분석기(110), 태스크 매니저(120) 및 복수의 컴파일러들(130)을 구동시키기 위한 운영 체제를 더 포함할 수 있고, 운영 체제는 다양한 종류의 모바일 운영 체제, 온라인 운영 체제, 오프라인 운영 체제 등을 포함할 수 있다. 일 예시에서 운영 체제는 리눅스(Linux), 리눅스 기반의 안드로이드(Android), 윈도우(Windows), iOS, Mac OS, Chromium OS 등으로 구현될 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다. 도 1과 중복되는 내용은 생략한다.
도 2를 참조하면, 뉴럴 네트워크 시스템(10)은 모델 프로세서(100), 제1 리소스(210) 및 제2 리소스(220)를 포함할 수 있고, 모델 프로세서(100)는 모델 분석기(110), 태스크 매니저(120), 제1 컴파일러(131) 및 제2 컴파일러(132)를 포함할 수 있다. 또한, 모델 분석기(110)는 모델 파서(111), 모델 빌더(112) 및 모델 옵티마이저(113)를 포함할 수 있다. 도 2에서는 두 개의 리소스들(210, 220) 및 두 개의 컴파일러들(131, 132)가 뉴럴 네트워크 시스템(10)에 포함되는 예시가 도시되어 있으나 이는 일 예시이고, 두 개보다 많거나 적은 리소스들 또는 두 개보다 많거나 적은 컴파일러들이 뉴럴 네트워크 시스템(10)에 포함될 수 있다.
모델 파서(111)는 어플리케이션(APP)으로부터 수신한 입력 모델(IM)을 파싱(Parsing)함으로써 모델 정보(Info_M)를 생성할 수 있다. 입력 모델(IM)은 뉴럴 네트워크를 이용하여 어플리케이션(APP)에 프로그램된 인스트럭션들을 수행하기 위한 요청 정보를 포함할 수 있고, 파싱은 입력 모델의 문법적인 구성 또는 구문을 분석하는 과정을 의미할 수 있다. 일 예시에서, 모델 정보(Info_M)는 입력 모델(IM)의 사이즈 정보를 포함하는 메타 데이터를 포함할 수 있다.
모델 빌더(112)는 모델 파서(111)로부터 수신한 모델 정보(Info_M)를 기초로 입력 모델(IM)으로부터 연산 처리 그래프(CPG')를 생성할 수 있다. 연산 처리 그래프(CPG')는 복수의 연산 노드들로 구성되는 그래프를 의미할 수 있다.
모델 옵티마이저(113)는 연산 처리 그래프(CPG')에 대한 최적화 동작을 수행할 수 있고, 최적화 동작 결과 생성된 연산 처리 그래프(CPG)를 태스크 매니저(120)에 출력할 수 있다. 최적화 동작은 연산 처리 그래프(CPG')에 대한 연산 처리량을 최소화 및 최적화 시키는 동작을 의미할 수 있다. 일 실시예에서, 최적화 동작은 연산 처리 그래프(CPG') 중 적어도 일부를 다른 그래프로 대체하는 그래프 대체 동작, 연산 처리 그래프(CPG') 중 적어도 일부를 병합하는 그래프 병합 동작 및 연산 처리 그래프(CPG') 중 적어도 일부를 분할하는 그래프 분할 동작을 포함할 수 있다.
모델 분석기(110)는 최적화된 연산 처리 그래프(CPG)를 제1 서브 그래프(SG1) 및 제2 서브 그래프(SG2)를 포함하는 복수의 서브 그래프들로 구분할 수 있고, 제1 서브 그래프(SG1) 및 제2 서브 그래프(SG2)를 태스크 매니저(120)에 출력할 수 있다.
태스크 매니저(120)는 복수의 컴파일러들(131, 132)에 대해서 연산 처리 그래프(CPG)의 복수의 서브 그래프들(SG1, SG2)을 각각 할당할 수 있다. 복수의 컴파일러들(131, 132) 각각은 하나의 리소스에 대응될 수 있고, 태스크 매니저(120)는 복수의 서브 그래프들(SG1, SG2)을 적합한 리소스에 대응되는 복수의 컴파일러들(131, 132)에 각각 할당할 수 있다. 태스크 매니저(120)는 결정된 리소스에 대응되는 복수의 컴파일러들(131, 132)에 복수의 서브 그래프들(SG1, SG2) 각각을 할당할 수 있다.
도 2의 예시에서, 제1 컴파일러(131)는 제1 리소스(210)에 대응될 수 있고, 제2 컴파일러(132)는 제2 리소스(220)에 대응될 수 있다. 즉, 제1 컴파일러(131)는 수신한 입력을 제1 리소스(210)에서 사용하는 프로그램 언어로 컴파일할 수 있고, 제2 컴파일러(132)는 수신한 입력을 제2 리소스(220)에서 사용하는 프로그램 언어로 컴파일할 수 있다.
태스크 매니저(120)는 리소스 능력에 관한 정보를 기초로 수신한 연산 처리 그래프(CPG)의 제1 서브 그래프(SG1)를 제1 리소스(210)에 할당하고, 제2 서브 그래프(SG2)를 제2 리소스(220)에 할당할 수 있다. 태스크 매니저(120)는 제1 리소스(210)에 할당된 제1 서브 그래프(SG1)를 제1 리소스(210)에 대응되는 제1 컴파일러(131)에 출력하고, 제2 리소스(220)에 할당된 제2 서브 그래프(SG2)를 제2 리소스(220)에 대응되는 제2 컴파일러(132)에 출력할 수 있다. 제1 컴파일러(131)는 제1 서브 그래프(SG1)를 제1 리소스(210)에서 구동될 수 있도록 컴파일함으로써 제1 실행 데이터(ED1)를 생성하고, 제2 컴파일러(132)는 제2 서브 그래프(SG2)를 제2 리소스(220)에서 구동될 수 있도록 컴파일함으로써 제2 실행 데이터(ED2)를 생성할 수 있다.
태스크 매니저(120)는 제1 리소스(210)에 제1 실행 데이터(ED1)를 송신하고, 제2 리소스(220)에 제2 실행 데이터(ED2)를 송신할 수 있다(미도시). 제1 리소스(210)는 제1 실행 데이터(ED1)를 기초로 제1 서브 그래프(SG1)에 대응하는 제1 연산 동작을 수행하고, 제2 리소스(220)는 제2 실행 데이터(ED2)를 기초로 제2 서브 그래프(SG2)에 대응하는 제2 연산 동작을 수행할 수 있다.
본 개시의 기술적 사상에 따르면, 태스크 매니저(120)는 제1 리소스(210)가 제1 연산 동작을 수행하는데 걸리는 제1 폴링 시간을 예측하고, 제2 리소스(220)가 제2 연산 동작을 수행하는데 걸리는 제2 폴링 시간을 예측할 수 있다. 일 실시예에서, 태스크 매니저(120)는 미리 결정된 공식에 서브 그래프(SG1, SG2)에 대응하는 정보를 대입함으로써 폴링 시간을 계산할 수 있다. 일 예시에서, 서브 그래프(SG1, SG2)에 대응하는 정보는 입력 모델(IM)의 사이즈 정보, 서브 그래프(SG1, SG2)의 사이즈 정보, 실행 데이터(ED1, ED2)의 사이즈 정보 및 컴파일러(131, 132)가 컴파일하는데 걸리는 시간을 포함할 수 있다.
일 예시에서, 태스크 매니저(120)는 입력 모델(IM)의 사이즈 정보를 미리 결정된 공식에 대입함으로써 제1 폴링 시간을 계산할 수 있다. 일 예시에서, 태스크 매니저(120)는 제1 서브 그래프(SG1)의 높이 정보 및 너비 정보를 미리 결정된 공식에 대입함으로써 제1 폴링 시간을 계산할 수 있다. 일 예시에서, 태스크 매니저(120)는 제1 서브 그래프(SG1)를 컴파일한 제1 실행 데이터(ED1)의 데이터 길이를 미리 결정된 공식에 대입함으로써 제1 폴링 시간을 계산할 수 있다. 일 예시에서, 태스크 매니저(102)는 제1 컴파일러(131)가 제1 서브 그래프(SG1)를 컴파일하는데 걸리는 시간을 미리 결정된 공식에 대입함으로써 제1 폴링 시간을 계산할 수 있다.
태스크 매니저(120)는 계산한 제1 폴링 시간을 기초로 제1 폴링 신호(PS1)를 제1 리소스(210)에 출력하고, 계산한 제2 폴링 시간을 기초로 제2 폴링 신호(PS2)를 제2 리소스(220)에 출력할 수 있다.
일 실시예에서, 태스크 매니저(120)는 제1 리소스(210)에 제1 실행 데이터(ED1)를 출력한 시점으로부터 제1 폴링 시간만큼 소요된 이후 제1 폴링 신호(PS1)를 제1 리소스(210)에 출력할 수 있다. 제1 폴링 시간은 제1 리소스(210)가 제1 서브 그래프(SG1)에 대응하는 제1 연산 동작을 수행하는데 걸리는 시간을 예측한 값이므로, 제1 리소스(210)는 제1 폴링 신호(PS1)에 대응하여 제1 연산 결과를 태스크 매니저(120)에 출력할 수 있다.
일 실시예에서, 태스크 매니저(120)는 제1 리소스(210)에 제1 실행 데이터(ED1)를 출력한 시점으로부터 제1 폴링 시간 및 제2 폴링 시간이 소요된 후 제2 폴링 신호(PS2)를 제2 리소스(220)에 출력할 수 있다. 일 예시에서, 태스크 매니저(120)는 제1 서브 그래프(SG1)에 대응하는 제1 연산 동작 및 제2 서브 그래프(SG2)에 대응하는 제2 연산 동작이 연속적으로 수행된 제2 연산 결과를 얻기 위해, 제1 폴링 시간 및 제2 폴링 시간만큼 소요된 후 제2 폴링 신호(PS2)를 제2 리소스(220)에 출력할 수 있다. 제1 폴링 시간은 제1 리소스(210)가 제1 연산 동작을 수행하는데 걸리는 시간을 예측한 값이고, 제2 폴링 시간은 제2 리소스(220)가 제2 연산 동작을 수행하는데 걸리는 시간을 예측한 값이므로, 제2 리소스(220)는 제2 폴링 신호(PS2)에 대응하여 제1 연산 동작 및 제2 연산 동작에 따른 제2 연산 결과를 태스크 매니저(120)에 출력할 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 연산 처리 그래프를 나타내는 도면이다.
도 2 및 도 3을 참조하면, 모델 분석기(110)는 입력 모델(IM)을 분석함으로써 제1 서브 연산(OP00) 내지 제14 서브 연산(OP13)을 포함하는 연산 처리 그래프(CPG)를 생성할 수 있다. 제1 서브 연산(OP00) 내지 제14 서브 연산(OP13) 각각은 각종 수학 연산(예를 들면, 컨볼루션 연산, 정정 선형 유닛 연산, 메모리 복사 연산 등)을 나타낼 수 있고, 제1 서브 연산(OP00) 내지 제14 서브 연산(OP13)은 서로 같거나 다른 연산일 수 있다.
모델 분석기(110)는 생성된 연산 처리 그래프(CPG)를 연산의 종류, 연산 선호도, 그래프의 형태 등을 기준으로 복수의 서브 그래프들(SG1, SG2, SG3)로 구분할 수 있다. 도 4의 예시에서, 모델 분석기(110)는 제1 서브 연산(OP00) 내지 제4 서브 연산(OP03)은 제1 서브 그래프(SG1)로 구분하고, 제5 서브 연산(OP04) 내지 제11 서브 연산(OP10)은 제2 서브 그래프(SG2)로 구분하고, 제12 서브 연산(OP11) 내지 제14 서브 연산(OP13)은 제3 서브 그래프(SG3)로 구분할 수 있다.
태스크 매니저(120)는 제1 서브 그래프(SG1) 내지 제3 서브 그래프(SG3)를 포함하는 연산 처리 그래프(CPG)를 수신하고, 제1 서브 그래프(SG1) 내지 제3 서브 그래프(SG3)를 복수의 리소스들에 각각 할당할 수 있다. 일 실시예에서, 태스크 매니저(120)는 복수의 리소스들의 하드웨어 능력을 기초로 제1 서브 그래프(SG1) 내지 제3 서브 그래프(SG3) 각각을 적합한 리소스에 할당할 수 있다.
일 예시에서, 태스크 매니저(120)는 제1 서브 그래프(SG1) 및 제3 서브 그래프(SG3)를 제1 리소스(예를 들면, NPU)에 할당하고, 제2 서브 그래프(SG2)를 제2 리소스(예를 들면, GPU)에 할당할 수 있다. 또 다른 예시에서, 태스크 매니저(120)는 제1 서브 그래프(SG1)를 제1 리소스(예를 들면, NPU)에 할당하고, 제2 서브 그래프(SG2)를 제2 리소스(예를 들면, GPU)에 할당하고, 제3 서브 그래프(SG3)를 제3 리소스(예를 들면, CPU)에 할당할 수 있다.
태스크 매니저(120)는 제1 서브 그래프(SG1) 내지 제3 서브 그래프(SG3)를 각각 할당된 리소스에 대응되는 컴파일러(131, 132)에 출력할 수 있고, 컴파일러(131, 132)는 수신한 서브 그래프(SG1, SG2, SG3)를 컴파일링함으로써 복수의 실행 데이터들을 생성할 수 있다. 또한, 태스크 매니저(120)는 서브 그래프(SG1, SG2, SG3)에 대응하는 정보를 기초로 폴링 시간을 계산하고, 계산된 폴링 시간을 기초로 리소스에 폴링 신호를 출력할 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 모델 프로세서의 동작 방법을 나타내는 순서도이다.
도 2 및 도 4를 참조하면, 모델 프로세서(100)는 입력 모델(IM)을 분석함으로써 서브 그래프(SG1, SG2)를 생성하고(S110), 서브 그래프(SG1, SG2)에 대응하는 정보를 기초로 폴링 시간을 계산할 수 있다(S120). 모델 프로세서(100)는 서브 그래프(SG1, SG2)를 컴파일함으로써 실행 데이터(ED1, ED2)를 생성할 수 있다(S130). 모델 프로세서(100)는 실행 데이터(ED1, ED2)를 대응하는 리소스(210, 220)에 출력할 수 있고, 계산한 폴링 시간에 기초하여 서브 그래프(SG1, SG2)에 대응하는 연산 결과를 리소스(210, 220)로부터 폴링할 수 있다(S150).
도 5는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다. 자세하게는 도 5는 하나의 리소스(210)가 연산을 수행하는 예시를 시간의 흐름에 따라서 나타내는 도면이다.
도 5를 참조하면, 태스크 매니저(120)는 제1 서브 그래프에 대응하는 정보에 기초하여 제1 폴링 시간(PT1)을 계산할 수 있다(T110). 태스크 매니저(120)는 제1 서브 그래프를 컴파일함으로써 생성한 제1 실행 데이터(ED1)를 제1 리소스(210)에 출력할 수 있다(T120). 제1 리소스(210)는 제1 실행 데이터(ED1)를 기초로 제1 서브 그래프에 대응하는 제1 연산 동작을 수행할 수 있다(T130). 태스크 매니저(120)는 제1 실행 데이터(ED1)를 제1 리소스(210)에 출력한 시점으로부터 제1 폴링 시간(PT1)이 지난 후에 제1 리소스(210)에 제1 폴링 신호(PS1)를 출력할 수 있다(T140). 제1 리소스(210)는 제1 연산 동작이 완료된 이후에 제1 폴링 신호(PS1)를 수신하였으므로, 제1 폴링 신호(PS1)에 대응하여 제1 연산 결과(CR1)를 태스크 매니저(120)에 출력할 수 있다(T150).
도 6은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다. 자세하게는 도 6은 두 개의 리소스(210, 220)가 연속적인 연산을 수행하는 예시를 시간의 흐름에 따라서 나타내는 도면이다.
도 6을 참조하면, 태스크 매니저(120)는 제1 서브 그래프에 대응하는 정보에 기초하여 제1 폴링 시간(PT1)을 계산하고, 제2 서브 그래프에 대응하는 정보에 기초하여 제2 폴링 시간(PT2)을 계산할 수 있다(T210). 태스크 매니저(120)는 제1 서브 그래프를 컴파일함으로써 생성한 제1 실행 데이터(ED1)를 제1 리소스(210)에 출력할 수 있다(T220). 제1 리소스(210)는 제1 실행 데이터(ED1)를 기초로 제1 서브 그래프에 대응하는 제1 연산 동작을 수행할 수 있다(T230). 제1 리소스(210)는 제1 연산 동작을 수행한 결과 생성된 제1 연산 결과(CR1)를 제2 리소스(220)에 출력할 수 있다(T240).
제2 리소스(220)는 제1 연산 결과(CR1) 및 제2 실행 데이터를 기초로 제2 서브 그래프에 대응하는 제2 연산 동작을 수행할 수 있다(T250). 도시되지는 않았지만, 이를 위해 제2 리소스(220)는 태스크 매니저(120)로부터 제2 실행 데이터를 더 수신할 수 있다.
태스크 매니저(120)는 제1 실행 데이터(ED1)를 제1 리소스(210)에 출력한 시점으로부터 제1 폴링 시간(PT1) 및 제2 폴링 시간(PT2)이 지난 후에 제2 리소스(220)에 제2 폴링 신호(PS2)를 출력할 수 있다(T260). 제2 리소스(220)는 제2 연산 동작이 완료된 이후에 제2 폴링 신호(PS2)를 수신하였으므로, 제2 폴링 신호(PS2)에 대응하여 제1 연산 동작 및 제2 연산 동작에 따른 제2 연산 결과(CR2)를 태스크 매니저(120)에 출력할 수 있다(T270).
도 7은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다. 자세하게는, 도 7은 하나 이상의 어플리케이션(APP1, APP2)으로부터 복수의 입력 모델들(IM1, IM2)을 수신하는 예시를 나타낸다. 도 2와 중복되는 내용은 생략한다.
도 7을 참조하면, 뉴럴 네트워크 시스템(10)은 모델 프로세서(100), 제1 리소스(210) 및 제2 리소스(220)를 포함할 수 있고, 모델 프로세서(100)는 모델 분석기(110), 태스크 매니저(120), 제1 컴파일러(131) 및 제2 컴파일러(132)를 포함할 수 있다. 모델 분석기(110)는 제1 어플리케이션(APP1)으로부터 제1 입력 모델(IM1)을 수신하고, 제2 어플리케이션(APP2)으로부터 제2 입력 모델(IM2)을 수신할 수 있다.
모델 분석기(110)는 제1 입력 모델(IM1)을 분석함으로써 제1 서브 그래프(SG1) 및 제2 서브 그래프(SG2)를 포함하는 제1 연산 처리 그래프(CPG1)를 생성하고, 제2 입력 모델(IM2)을 분석함으로써 제3 서브 그래프(SG3)를 포함하는 제2 연산 처리 그래프(CPG2)를 생성할 수 있다. 모델 분석기(110)가 제1 연산 처리 그래프(CPG1) 및 제2 연산 처리 그래프(CPG2)를 생성하는 방법은 도 2에서 상술하였는바 자세한 설명은 생략한다.
태스크 매니저(120)는 제1 서브 그래프(SG1) 및 제3 서브 그래프(SG3)를 제1 리소스(210)에 할당할 수 있고, 제1 서브 그래프(SG1) 및 제3 서브 그래프(SG3)를 제1 리소스(210)에 대응하는 제1 컴파일러(131)에 출력할 수 있다. 제1 컴파일러(131)는 제1 서브 그래프(SG1)를 컴파일함으로써 제1 실행 데이터(ED1)를 생성하고, 제3 서브 그래프(SG3)를 컴파일함으로써 제3 실행 데이터(ED3)를 생성할 수 있다.
태스크 매니저(120)는 제2 서브 그래프(SG2)를 제2 리소스(220)에 할당할 수 있고, 제2 서브 그래프(SG2)를 제2 리소스(220)에 대응하는 제2 컴파일러(132)에 출력할 수 있다. 제2 컴파일러(132)는 제2 서브 그래프(SG2)를 컴파일함으로써 제2 실행 데이터(ED2)를 생성할 수 있다.
태스크 매니저(120)는 제1 실행 데이터(ED1) 및 제3 실행 데이터(ED3)를 제1 리소스(210)에 출력하고, 제2 실행 데이터(ED2)를 제2 리소스(220)에 출력할 수 있다. 제1 리소스(210) 및 제2 리소스(220)는 블로킹 방식 및 논-블로킹 방식 중 어느 하나로 동작할 수 있다. 본 명세서에서 블로킹 방식은 하나의 연산 처리 그래프(예를 들면, 제1 연산 처리 그래프(CPG1))에 대응하는 연산이 모두 수행된 이후 다른 연산 처리 그래프(예를 들면, 제2 연산 처리 그래프(CPG2))에 대응하는 연산이 수행되는 방식을 의미하고, 논-블로킹 방식은 하나의 연산 처리 그래프에 대응하는 연산이 모두 수행되지 않았더라도 리소스의 연산 처리 능력이 허용되는 범위 내에서 다른 연산 처리 그래프에 대응하는 연산이 수행되는 것을 의미할 수 있다.
도 7의 예시에서, 블로킹 방식에 따르면, 제1 리소스(210)는 제2 리소스(220)가 제1 연산 처리 그래프(CPG1)에 포함되는 제2 서브 그래프(SG2)에 대응하는 연산을 완료하기 전까지 제3 서브 그래프(SG3)에 대응하는 연산을 수행하지 않을 수 있다. 반면, 논-블로킹 방식에 따르면, 제1 리소스(210)는 제2 리소스(220)가 제2 서브 그래프(SG2)에 대응하는 연산을 완료하기 전이라도, 제3 서브 그래프(SG3)에 대응하는 연산을 수행할 수 있다. 이에 관해서는 도 8 및 도 9에서 후술한다.
태스크 매니저(120)는 제1 서브 그래프(SG1)에 대응하는 정보를 기초로 제1 폴링 시간을 계산하고, 제2 서브 그래프(SG2)에 대응하는 정보를 기초로 제2 폴링 시간을 계산하고, 제3 서브 그래프(SG3)에 대응하는 정보를 기초로 제3 폴링 시간을 계산할 수 있다.
일 예시에서, 태스크 매니저(120)는 제1 실행 데이터(ED1)를 제1 리소스(210)에 출력한 시점으로부터 제1 폴링 시간 및 제2 폴링 시간이 지난 후에 제2 폴링 신호(PS2)를 제2 리소스(220)에 출력함으로써 제2 리소스(220)로부터 연산 결과를 폴링할 수 있다. 이에 따라서 태스크 매니저(120)는 제1 연산 처리 그래프(CPG1)에 대응하는 연산 결과를 획득할 수 있다.
일 예시에서, 블로킹 방식에 따라 연산이 수행되는 경우, 태스크 매니저(120)는 제2 리소스(220)가 제2 실행 데이터(ED2)에 대한 연산을 완료한 시점으로부터 제3 폴링 시간이 지난 후에, 제3 폴링 신호(PS3)를 제1 리소스(210)에 출력함으로써 제1 리소스(210)로부터 연산 결과를 폴링할 수 있다. 이에 따라서, 태스크 매니저(120)는 제2 연산 처리 그래프(CPG2)에 대응하는 연산 결과를 획득할 수 있다. 이에 관해서는 도 8에서 후술한다.
일 예시에서, 논-블로킹 방식에 따라 연산이 수행되는 경우, 태스크 매니저(120)는 제1 리소스(220)가 제1 실행 데이터(ED1)에 대한 연산을 완료한 시점으로부터 제3 폴링 시간이 지난 후에 제3 폴링 신호(PS3)를 제1 리소스(210)에 출력함으로써 제1 리소스(210)로부터 연산 결과를 폴링할 수 있다. 이에 따라서, 태스크 매니저(120)는 제2 연산 처리 그래프(CPG2)에 대응하는 연산 결과를 획득할 수 있다. 이에 관해서는 도 9에서 후술한다.
도 7에서는 서로 다른 어플리케이션(APP1, APP2)으로부터 복수의 입력 모델들(IM1, IM2)을 수신하는 실시예가 도시되어 있으나, 하나의 어플리케이션으로부터 복수의 입력 모델들을 수신하는 실시예에도 본 개시의 기술적 사상이 적용될 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다. 자세하게는 도 8은 두 개의 리소스(210, 220)가 블로킹 방식에 따라서 복수의 입력 모델들에 대응하는 연산을 수행하는 예시를 시간의 흐름에 따라서 나타내는 도면이다.
도 7 및 도 8을 참조하면, 태스크 매니저(120)는 제1 서브 그래프(SG1)에 대응하는 정보에 기초하여 제1 폴링 시간(PT1)을 계산하고, 제2 서브 그래프(SG2)에 대응하는 정보에 기초하여 제2 폴링 시간(PT2)을 계산하고, 제3 서브 그래프(SG3)에 대응하는 정보에 기초하여 제3 폴링 시간(PT3)을 계산할 수 있다(T310). 도 8의 예시에서, 제1 서브 그래프(SG1) 및 제2 서브 그래프(SG2)는 제1 입력 모델(IM1)에 대응하는 제1 연산 처리 그래프(CPG1)에 포함될 수 있고, 제3 서브 그래프(SG3)는 제2 입력 모델(IM2)에 대응하는 제2 연산 처리 그래프(CPG2)에 포함될 수 있다.
태스크 매니저(120)는 제1 서브 그래프(SG1)를 컴파일함으로써 생성한 제1 실행 데이터(ED1) 및 제3 서브 그래프(SG3)를 컴파일함으로써 생성한 제3 실행 데이터(ED3)를 동시 또는 순차적으로 제1 리소스(210)에 출력할 수 있다(T320). 제1 리소스(210)는 제1 실행 데이터(ED1)를 기초로 제1 서브 그래프에 대응하는 제1 연산 동작을 수행할 수 있다(T330). 제1 리소스(210)는 제1 연산 동작을 수행한 결과 생성된 제1 연산 결과(CR1)를 제2 리소스(220)에 출력할 수 있다(T340).
제2 리소스(220)는 제1 연산 결과(CR1) 및 제2 실행 데이터(ED2)를 기초로 제2 서브 그래프(SG2)에 대응하는 제2 연산 동작을 수행할 수 있다(T350). 도시되지는 않았지만, 이를 위해 제2 리소스(220)는 태스크 매니저(120)로부터 제2 실행 데이터(ED2)를 더 수신할 수 있다.
태스크 매니저(120)는 제1 실행 데이터(ED1)를 제1 리소스(210)에 출력한 시점으로부터 제1 폴링 시간(PT1) 및 제2 폴링 시간(PT2)이 지난 후에 제2 리소스(220)에 제2 폴링 신호(PS2)를 출력할 수 있다(T360). 제2 리소스(220)는 제2 연산 동작이 완료된 이후에 제2 폴링 신호(PS2)를 수신하였으므로, 제2 폴링 신호(PS2)에 대응하여 제1 연산 동작 및 제2 연산 동작에 따른 제2 연산 결과(CR2)를 태스크 매니저(120)에 출력할 수 있다(T370).
블로킹 방식에 따르면, 제1 리소스(210)는 제2 리소스(220)의 제2 연산 동작이 완료되기 전까지 제3 실행 데이터(ED3)를 기초로 하는 제3 연산 동작을 수행하지 못한다. 따라서, 제1 리소스(210)는 제2 리소스(220)가 제2 연산 동작을 완료한 이후 제3 실행 데이터(ED3)를 기초로 제3 연산 동작을 수행할 수 있다(T380).
태스크 매니저(120)는 제2 연산 동작에 따른 제2 연산 결과(CR2)를 수신한 시점으로부터 제3 폴링 시간(PT3)이 지난 후에 제1 리소스(210)에 제3 폴링 신호(PS3)를 출력할 수 있다(T390). 제1 리소스(210)는 제3 연산 동작이 완료된 이후에 제2 폴링 신호(PS3)를 수신하였으므로, 제3 폴링 신호(PS3)에 대응하여 제3 연산 동작에 따른 제3 연산 결과(CR3)를 태스크 매니저(120)에 출력할 수 있다(T395).
도 9는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다. 자세하게는 도 9는 두 개의 리소스(210, 220)가 논-블로킹 방식에 따라서 복수의 입력 모델들에 대응하는 연산을 수행하는 예시를 시간의 흐름에 따라서 나타내는 도면이다.
도 9를 참조하면, T410 단계 내지 T470 단계는 도 8의 T310 단계 내지 T 370 단계와 동일하거나 유사할 수 있으므로 그 설명은 생략한다. 논-블로킹 방식에 따르면, 제1 리소스(210)는 제2 리소스(220)의 제2 연산 동작이 완료되기 전이라도 제3 실행 데이터(ED3)를 기초로 하는 제3 연산 동작을 수행할 수 있다. 따라서, 제1 리소스(210)는 제1 실행 데이터(ED1)에 따른 제1 연산 동작을 완료한 직후 제3 실행 데이터(ED3)를 기초로 제3 연산 동작을 수행할 수 있다(T480).
태스크 매니저(120)는 제1 실행 데이터(ED1)를 출력한 시점으로부터 제1 폴링 시간(PT1)이 지난 후가 제1 연산 동작이 완료된 시점이라고 판단할 수 있으므로, 제1 실행 데이터(ED1)를 출력한 시점으로부터 제1 폴링 시간(PT1) 및 제3 폴링 시간(PT3)이 지난 후에 제1 리소스(210)에 제3 폴링 신호(PS3)를 출력할 수 있다(T490). 제1 리소스(210)는 제3 연산 동작이 완료된 이후에 제2 폴링 신호(PS3)를 수신하였으므로, 제3 폴링 신호(PS3)에 대응하여 제3 연산 동작에 따른 제3 연산 결과(CR3)를 태스크 매니저(120)에 출력할 수 있다(T495).
도 10a 및 도 10b는 본 개시의 예시적 실시예에 따른 폴링 시간 계산 방법을 설명하기 위한 도면이다. 자세하게는 도 10a 및 도 10b는 미리 결정된 공식을 이용하여 폴링 시간을 계산하는 방법을 설명하기 위한 도면이다.
도 10a를 참조하면, 실행 데이터(ED)는 메타 영역(Meta_ED) 및 데이터 영역(Data_ED)을 포함할 수 있고, 메타 영역(Meta_ED)은 데이터 영역(Data_ED)의 사이즈 정보(Size_ED)를 포함할 수 있다. 사이즈 정보(Size_ED)를 S, 리소스(예를 들면, NPU, GPU, CPU) 상수를 C1라고 할 때, 정수 n에 대해서 일 예시에 따른 폴링 시간 PT1(S)은 아래와 같은 수학식 1로 결정될 수 있다.
Figure pat00001
도 10b를 참조하면, 일 예시에서 CNN을 사용하는 입력 모델(IM)은 너비(Width_IM) 및 높이(Height_IM)를 가질 수 있고, 입력 모델의 너비(Width_IM)를 W, 입력 모델의 높이(Height_IM)를 H, 리소스 상수를 C2라고 할 때, 일 예시에 따른 폴링 시간 PT2(W, H)은 아래와 같은 수학식 2로 결정될 수 있다.
Figure pat00002
또한, 컴파일러가 서브 그래프를 컴파일 하는데 걸리는 시간을 T, 리소스 상수를 C3라고 할 때, 일 예시에 따른 폴링 시간 PT3(T)은 아래와 같은 수학식 3으로 결정될 수 있다.
Figure pat00003
상술한 수학식들은 일 예시일 뿐이고, 미리 결정된 공식에 서브 그래프에 대응하는 정보(예를 들면, 실행 데이터의 사이즈, 입력 모델의 사이즈, 서브 그래프의 사이즈, 컴파일 시간 등)를 대입함으로써 폴링 시간을 계산하는 실시예에는 본 개시의 기술적 사상이 모두 적용될 수 있음은 이해되어야 할 것이다.
도 11은 본 개시의 예시적 실시예에 따른 연산 처리 테이블을 나타내는 표이다. 자세하게는 도 11는 리소스의 연산 처리 능력을 이용하여 폴링 시간을 계산하는 방법을 설명하기 위한 도면이다.
도 11을 참조하면, 리소스는 미리 결정된 리소스의 연산 처리 능력에 대한 정보를 포함하는 연산 처리 테이블(CPC_RS)을 제공할 수 있다. 연산 처리 테이블(CPC_RS)은 연산 별 처리에 소요되는 시간에 대한 정보를 포함할 수 있다. 연산은컨볼루션 연산, 정정 선형 유닛 연산, 메모리 복사 연산, 병합(Concatenate) 연산 등을 포함할 수 있다.
도 11의 예시에서, 리소스는 제1 사이즈(Size1)의 제1 서브 연산(OP1)을 처리하는데 제1 시간(t1)이 소요되고, 제2 사이즈(Size2)의 제1 서브 연산(OP2)을 처리하는데 제2 시간(t2)이 소요될 수 있다. 또한, 리소스는 제2 서브 연산(OP2)을 처리하는데 제3 시간(t3)이 소요되고, 제3 서브 연산(OP3)을 처리하는데 제4 시간(t4)이 소요될 수 있다.
본 개시의 일 실시예에 따른 태스크 매니저는 연산 처리 테이블(CPC_RS)을 기초로 서브 그래프에 대한 폴링 시간을 계산할 수 있다. 일 예시에서, 서브 그래프에 제1 사이즈(Size1)의 제1 서브 연산(OP1)이 n개, 제2 서브 연산이 m개 포함된다면, 태스크 매니저는 n*t1+m*t3를 폴링 시간으로 계산할 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템을 나타내는 블록도이다. 도 2와 중복되는 내용은 생략한다.
도 12를 참조하면, 뉴럴 네트워크 시스템(10a)은 모델 프로세서(100a), 제1 리소스(210) 및 제2 리소스(220)를 포함할 수 있고, 모델 프로세서(100a)는 모델 분석기(110), 태스크 매니저(120) 및 모델 키퍼(140)를 포함할 수 있다.
모델 키퍼(140)는 서브 그래프(SG1, SG2, SG3) 별 폴링 시간에 대한 대응 정보를 포함하는 폴링 시간 테이블(PTT)을 저장할 수 있다. 이를 위해 모델 키퍼(140)는 적어도 하나의 저장 소자를 포함할 수 있다. 일 예시로써 모델 키퍼(140)는 휘발성 메모리(volatile memory) 및 비휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 비휘발성 메모리는 플래시 메모리, PRAM(Phase-change Random Access Memory), MRAM(Magnetic Random Access Memory), RRAM(Resistive Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등을 포함할 수 있고, 휘발성 메모리는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), SDRAM(Synchronous DRAM), 래치(Latch), 플립-플롭(Flip-Flop), 레지스터(Register) 등을 포함할 수 있다.
태스크 매니저(120)는 폴링 시간 테이블(PTT)을 수신하고, 서브 그래프에 대응하는 폴링 시간을 폴링 시간 테이블(PTT)로부터 검색할 수 있다. 일 예시에서, 태스크 매니저(120)는 제1 서브 그래프(SG1)에 대응하는 제1 폴링 시간을 폴링 시간 테이블(PTT)로부터 검색할 수 있고, 제1 폴링 시간을 폴링 시간 테이블(PTT)에서 발견한 경우, 폴링 시간 테이블(PTT)로부터 획득한 제1 폴링 시간을 이용하여 제1 폴링 신호(PS1)를 제1 리소스(210)에 출력할 수 있다.
일 예시에서, 태스크 매니저(120)는 제2 서브 그래프(SG2)에 대응하는 제2 폴링 시간을 폴링 시간 테이블(PTT)로부터 검색할 수 있고, 제2 폴링 시간을 폴링 시간 테이블(PTT)에서 발견하지 못한 경우, 제2 폴링 시간을 전술한 방법들을 통해 계산할 수 있다. 또한, 태스크 매니저(120)는 계산한 제2 폴링 시간을 폴링 시간 테이블(PTT)에 업데이트할 수 있다.
본 개시의 일 실시예에 따르면, 태스크 매니저(120)는 폴링 시간 테이블(PTT)을 이용하여 폴링 시간을 획득함으로써 불필요한 계산을 방지하고, 효율적으로 연산 결과를 폴링할 수 있다.
도시되지는 않았지만 일 실시예에서, 모델 키퍼(140)는 서브 그래프들(SG1, SG2, SG3)에 대응하는 실행 데이터들을 저장하고, 리소스(210, 220)의 요청에 대응하여 실행 데이터를 리소스에 출력할 수 있다.
도 12에서는 모델 키퍼(140)가 모델 프로세서(100a) 내부 구성으로 도시되어있으나 또 다른 예시에서 모델 키퍼(140)는 모델 프로세서(100a)와 별도의 구성으로 구현될 수 있고, 일 예시에서, 모델 키퍼(140)는 HDD(Hard Disk Drive), SSD(Solid State Drive), CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 Memory Stick 중 적어도 하나를 이용하여 구현될 수 있다. 또한, 모델 키퍼(140)에 대한 접근을 제어하기 위하여 DMA(Direct Memory Access), MDMA(memory DMA), PDMA(peripheral DMA), RDMA(remote DMA), SDMA(smart DMA) 등이 포함될 수 있다.
도 13은 본 개시의 예시적 실시예에 따른 폴링 시간 테이블을 나타내는 표이다.
도 13을 참조하면, 폴링 시간 테이블(PTT)은 서브 그래프 및 리소스 특성(RS Char.) 별 폴링 타임에 대한 매칭 정보를 포함할 수 있다. 리소스 특성(RS Char.)은 각 리소스 별 구동 특성에 관한 것으로써, 예를 들어, 리소스의 종류(예를 들면, NPU, GPU, CPU), 리소스 구동 주파수, 리소스 구동 파워를 포함할 수 있다.
도 13의 예시에서, 제1 서브 그래프(SG1)가 제1 리소스 특성(CH1)에 기초하여 연산되는 경우, 제1 시간(t1)이 폴링 타임으로써 소요될 수 있고, 제1 서브 그래프(SG1)가 제2 리소스 특성(CH2)에 기초하여 연산되는 경우, 제2 시간(t2)이 폴링 타임으로써 소요될 수 있다. 또한, 제2 서브 그래프(SG2)가 제1 리소스 특성(CH1)에 기초하여 연산되는 경우, 제3 시간(t3)이 폴링 타임으로써 소요될 수 있고, 제3 서브 그래프(SG3)가 제3 리소스 특성(CH3)에 기초하여 연산되는 경우, 제4 시간(t4)이 소요될 수 있다.
도 14는 본 개시의 예시적 실시예에 따른 모델 프로세서의 동작 방법을 나타내는 순서도이다. 자세하게는, 도 14는 모델 프로세서가 폴링 시간 테이블을 이용하여 폴링을 수행하는 실시예를 나타낸다.
도 12 및 도 14를 참조하면, 모델 프로세서(100a)는 입력 모델(IM1, IM2)을 분석함으로써 서브 그래프(SG1, SG2, SG3)를 생성하고(S210), 서브 그래프(SG1, SG2, SG3)에 대응하는 폴링 시간을 폴링 시간 테이블(PTT)에서 검색할 수 있다 (S220). 모델 프로세서(100a)는 폴링 시간 테이블(PTT)에서 서브 그래프(SG1, SG2, SG3)에 대응하는 폴링 시간을 발견한 경우(S230), 폴링 시간을 계산하지 않고 폴링 시간 테이블(PTT)로부터 폴링 시간을 획득할 수 있고(S240), 획득한 폴링 시간에 기초하여 서브 그래프에 대응하는 연산 결과를 폴링할 수 있다(S270).
모델 프로세서(100a)는 폴링 시간 테이블(PTT)에서 서브 그래프(SG1, SG2, SG3)에 대응하는 폴링 시간을 발견하지 못한 경우(S230), 서브 그래프에 대한 정보를 기초로 폴링 시간을 계산할 수 있고(S250), 계산한 폴링 시간을 폴링 시간 테이블(PTT)에 업데이트할 수 있다(S260). 또한, 모델 프로세서(100a)는 계산한 폴링 시간에 기초하여 서브 그래프에 대응하는 연산 결과를 폴링할 수 있다(S270).
도 15는 본 개시의 예시적 실시예에 따른 모델 프로세서의 동작 방법을 나타내는 순서도이다. 자세하게는 도 15는 모델 프로세서가 폴링 시간을 적응적으로 조절하면서 폴링을 수행하는 실시예를 나타낸다.
도 12 및 도 15를 참조하면, 모델 프로세서(100a)는 입력 모델을 분석함으로써 서브 그래프(SG1, SG2, SG3)를 생성하고(S310), 서브 그래프(SG1, SG2, SG3)를 컴파일함으로써 실행 데이터를 생성할 수 있다(S320). 모델 프로세서(100a)는 생성한 서브 그래프(SG1, SG2, SG3)를 대응하는 리소스(210, 220)에 출력하고(S330), 미리 결정된 초기 폴링 시간이 소요된 이후 폴링 신호를 리소스(210, 220)에 출력할 수 있다(S340).
모델 프로세서(100a)는 폴링 신호에 대응하여 리소스(210, 220)로부터 연산 결과를 수신하지 못한 경우(S350), 폴링 시간을 변경하고(S360), 변경된 폴링 시간이 소요된 후 폴링 신호를 재출력할 수 있다(S370). 일 실시예에서, 모델 프로세서(100a)는 폴링 시간을 이전보다 단축시킬 수 있다.
모델 프로세서(100a)는 폴링 신호(PS1, PS2, PS3)에 대응하여 리소스(210, 220)로부터 연산 결과를 수신한 경우, 연산 결과를 수신하는데 성공한 폴링 시간을 폴링 시간 테이블(PTT)에 업데이트할 수있다(S380).
본 개시의 일 실시예에 따른 모델 프로세서(100a)는 서로 다른 폴링 시간을 기초로 복수의 폴링 신호를 출력함으로써 서브 그래프에 대한 최적의 폴링 시간을 찾을 수 있고, 효율적인 폴링이 가능할 수 있다.
도 16은 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다. 자세하게는 도 16은 뉴럴 네트워크 시스템이 폴링 시간을 적응적으로 조절하면서 폴링을 수행하는 예시를 시간의 흐름에 따라서 나타낸다. 도 15와 중복되는 내용은 생략한다.
도 16을 참조하면, 모델 프로세서(100a)는 제1 서브 그래프를 컴파일함으로써 제1 실행 데이터(ED1)를 생성하고(T510), 생성된 제1 실행 데이터(ED1)를 제1 리소스(210)에 출력할 수 있다(T520). 제1 리소스(210)는 수신한 제1 실행 데이터(ED1)를 기초로 제1 연산 동작을 수행할 수 있다(T530).
모델 프로세서(100a)는 제1 실행 데이터(ED1)를 출력한 시점으로부터 초기 폴링 시간인 제1 폴링 시간(PT1)이 소요된 뒤 제1 폴링 신호(PS1)를 제1 리소스(210)에 출력할 수 있다(T540). 제1 연산 동작이 아직 완료되기 전이므로, 제1 리소스(210)는 제1 연산 결과를 출력하지 못할 수 있다. 모델 프로세서(100a)는 제1 연산 결과를 수신하지 못하였으므로, 폴링 시간을 제1 폴링 시간(PT1)보다 더 짧은 제2 폴링 시간으로 변경할 수 있다.
모델 프로세서(100a)는 제1 폴링 신호(PS1)를 출력한 시점으로부터 제2 폴링 시간(PT2)이 소요된 뒤 제2 폴링 신호(PS2)를 제1 리소스(210)에 출력할 수 있다(T550). 여전히 제1 연산 동작이 완료되기 전이므로, 제1 리소스(210)는 제1 연산 결과를 출력하지 못할 수 있다. 모델 프로세서(100a)는 제1 연산 결과를 수신하지 못하였으므로, 폴링 시간을 제2 폴링 시간(PT2)보다 더 짧은 제3 폴링 시간으로 변경할 수 있다.
모델 프로세서(100a)는 제2 폴링 신호(PS2)를 출력한 시점으로부터 제3 폴링 시간(PT3)이 소요된 뒤 제3 폴링 신호(PS3)를 제1 리소스(210)에 출력할 수 있다(T560). 제1 연산 동작이 완료되었으므로, 제1 리소스(210)는 제3 폴링 신호(PS3)에 대응하여 제1 연산 결과(CR1)를 모델 프로세서(100a)에 출력할 수 있다(T570). 모델 프로세서(100a)는 폴링에 성공한 폴링 시간(예를 들면, 제1 폴링 시간 내지 제3 폴링 시간을 더한 값(PT1+PT2+PT3))을 폴링 시간 테이블(PTT)에 업데이트할 수 있다(T580).
도 17은 본 개시의 예시적 실시예에 따른 모델 프로세서의 동작 방법을 나타내는 순서도이다. 자세하게는 도 17은 모델 프로세서가 적응적으로 폴링 시간 테이블을 업데이트하는 실시예를 나타낸다.
도 12 및 도 17을 참조하면, 모델 프로세서(100a)는 입력 모델을 분석함으로써 서브 그래프(SG1, SG2, SG3)를 생성하고(T410), 서브 그래프(SG1, SG2, SG3)에 대응하는 제1 폴링 시간을 폴링 시간 테이블(PTT)로부터 발견할 수 있다(S420). 모델 프로세서(100a)는 발견한 제1 폴링 시간보다 더 짧은 제2 폴링 시간을 이용하여 연산 결과를 폴링할 수 있다(T430).
제2 폴링 시간을 이용한 폴링에 대응하여 리소스로부터 연산 결과를 수신한 경우(S440), 모델 프로세서(100a)는 제2 폴링 시간을 폴링 시간 테이블(PTT)에 업데이트할 수 있다(S450). 제2 폴링 시간을 이용한 폴링에 대응하여 리소스로부터 연산 결과를 수신하지 못한 경우(S440), 모델 프로세서(100a)는 제1 폴링 시간을 이용하여 연산 결과를 폴링할 수 있다(S460).
본 개시의 일 실시예에 따른 모델 프로세서(100a)는 폴링 시간 테이블(PTT)에서 발견한 폴링 시간보다 더 짧은 폴링 시간을 이용하여 폴링을 시도함으로써 최적의 폴링 시간을 찾을 수 있고, 효율적인 폴링이 수행될 수 있다.
도 18a 및 도 18b는 본 개시의 예시적 실시예에 따른 뉴럴 네트워크 시스템의 동작을 나타내는 도면이다. 자세하게는 도 18a 및 도 18b는 뉴럴 네트워크 시스템이 적응적으로 폴링 시간 테이블을 업데이트하는 예시를 시간의 흐름에 따라서 나타낸다. 도 17과 중복되는 내용은 생략한다.
도 18a을 참조하면, 태스크 매니저(120)는 폴링 시간 테이블(PTT)로부터 제1 서브 그래프에 대응하는 제1 폴링 시간(PT1)을 발견하고(T610), 제1 서브 그래프를 컴파일한 결과인 제1 실행 데이터(ED1)를 제1 리소스(210)에 출력할 수 있다(T620). 제1 리소스(210)는 수신한 제1 실행 데이터(ED1)를 기초로 제1 연산 동작을 수행할 수 있다(T630).
태스크 매니저(120)는 제1 실행 데이터(ED1)를 출력한 시점으로부터 제2 폴링 시간(PT2)이 소요된 뒤 제1 폴링 신호(PS1)를 제1 리소스(210)에 출력할 수 있다(T640). 제2 폴링 시간(PT2)은 폴링 시간 테이블(PTT)로부터 발견한 제1 폴링 시간(PT1)보다 더 짧을 수 있다.
제1 연산 동작이 완료되었으므로, 제1 리소스(210)는 제1 폴링 신호(PS1)에 대응하여 제1 연산 결과(CR1)를 태스크 매니저(120)에 출력할 수 있다(T650). 태스크 매니저(120)는 폴링에 성공한 제2 폴링 시간(PT2)을 제1 서브 그래프에 대응되도록 폴링 시간 테이블(PTT)에 업데이트할 수 있다(T660).
도 18b를 참조하면, 태스크 매니저(120)는 폴링 시간 테이블(PTT)로부터 제1 서브 그래프에 대응되는 제1 폴링 시간(PT1)을 발견하고(T710), 제1 실행 데이터(ED1)를 제1 리소스(210)에 출력할 수 있다(T720). 제1 리소스(210)는 수신한 제1 실행 데이터(ED1)를 기초로 제1 연산 동작을 수행할 수 있다(T730).
태스크 매니저(120)는 제1 실행 데이터(ED1)를 출력한 시점으로부터 제2 폴링 시간(PT2)이 소요된 뒤 제1 폴링 신호(PS1)를 제1 리소스(210)에 출력할 수 있다(T740). 제1 연산 동작이 아직 완료되지 않았으므로, 제1 리소스(210)는 제1 연산 결과(CR1)를 출력하지 못할 수 있다.
태스크 매니저(120)는 제1 폴링 시간(PT1)에 기초하여(예를 들면, 제1 실행 데이터(ED1)를 출력한 시점으로부터 제1 폴링 시간(PT1)이 소요된 뒤) 제2 폴링 신호(PS2)를 제1 리소스(210)에 출력할 수 있다(T750). 제1 연산 동작이 완료되었으므로, 제1 리소스(210)는 제2 폴링 신호(PS2)에 대응하여 제1 연산 결과(CR1)를 태스크 매니저(120)에 출력할 수 있다(T760). 도 18b의 실시예에서, 제2 폴링 시간(PT2)은 폴링에 실패한 시간이므로 태스크 매니저(120)는 폴링 시간 테이블을 업데이트 하지 않을 수 있다.
도 19는 본 개시의 예시적 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 19를 참조하면, 전자 시스템(1000)은 신경망를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(1000)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예를 들어, 전자 시스템(1000)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(1000)은 프로세서(1010), RAM(1020), 모델 프로세서(1030), 메모리(1040), 센서 모듈(1050) 및 통신 모듈(1060)을 포함할 수 있다. 전자 시스템(1000)의 구성들은 버스를 통해 서로 통신 가능하게 연결될 수 있다. 프로세서(1010)는 전자 시스템(1000)의 전반적인 동작을 제어할 수 있다. 예를 들어, 프로세서(1010)는 RAM(1020)에 저장된 프로그램들을 실행함으로써, 모델 프로세서(1030)의 기능을 제어할 수 있다. 또한, 프로세서(1010)는 RAM(1020), 메모리(1040) 등을 제어함으로써 모델 프로세서(1030)에 신경망을 기초로 딥러닝을 수행할 입력 모델을 출력할 수 있다. RAM(1020)은 프로그램들, 데이터, 어플리케이션(Application) 또는 명령들(instructions)을 일시적으로 저장할 수 있다.
모델 프로세서(1030)는 리소스(1060)를 제어함으로써 신경망의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 일 예시에서, 모델 프로세서(1030)는 시스템 메모리(예를 들면, ROM(Read-Only Memory)에 저장된 소프트웨어로 구현될 수 있고, 프로세서(1010)의 제어에 기초하여 동작할 수 있다. 메모리(1040)는 데이터를 저장하기 위한 저장 장소로서, 예를 들어 모델 프로세서(1030) 및 리소스(1060)의 연산 수행 과정에서 생성된 각종 데이터를 저장할 수 있다. 센서 모듈(1050)은 전자 시스템(1000)의 외부로부터 신호(예를 들어, 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 이를 데이터로 변환할 수 있다. 리소스(1060)는 신경망을 기초로 하는 다수의 연산을 수행하기 위한 연산 리소스 또는 외부 장치와 통신할 수 있는 다양한 유선 또는 무선 인터페이스로 구현되는 통신 리소스를 포함할 수 있다.
본 개시의 일 실시예에 따르면, 모델 프로세서(1030)는 폴링 시간을 예측하고, 예측한 폴링 시간에 리소스(1060)으로부터 연산 결과를 폴링함으로써 연산 처리 과정이 효율적으로 수행될 수 있다.
본 개시의 일 실시예에 따르면, 모델 프로세서(1030)는 동적으로 폴링 시간을 결정하고, 결정한 폴링 시간을 폴링 시간 테이블에 업데이트 함으로써 최적의 폴링 시간을 결정할 수 있고, 이에 따라서 연산 처리 과정이 효율적으로 수행될 수 있다.
한편, 상술한 본 개시의 예시적 실시 예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 본 개시의 예시적 실시 예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 제1 연산 처리 그래프를 처리하는 뉴럴 네트워크 시스템에 있어서,
    상기 제1 연산 처리 그래프에 대응하는 적어도 하나의 연산 동작을 수행한 결과 제1 연산 결과를 생성하도록 구성되는 제1 리소스;및
    상기 제1 리소스에서 상기 적어도 하나의 연산 동작을 수행하는데 소요되는 시간인 제1 폴링 시간을 계산하고, 계산된 상기 제1 폴링 시간을 기초로 상기 제1 연산 결과를 상기 제1 리소스로부터 폴링하도록 구성되는 태스크 매니저;를 포함하는 뉴럴 네트워크 시스템.
  2. 제1항에 있어서,
    상기 제1 연산 처리 그래프는 상기 제1 리소스에서 처리되는 제1 서브 그래프를 포함하고,
    상기 제1 서브 그래프를 상기 제1 리소스에서 구동될 수 있도록 컴파일 함으로써 제1 실행 데이터를 생성하는 제1 컴파일러;를 더 포함하고,
    상기 태스크 매니저는 상기 제1 리소스에 상기 제1 서브 그래프에 대응되는 제1 연산 동작을 수행하기 위해 상기 제1 실행 데이터를 출력하고, 상기 제1 실행 데이터를 출력한 시점부터 상기 제1 폴링 시간만큼 지난 뒤 상기 제1 연산 결과를 상기 제1 리소스로부터 폴링하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  3. 제2항에 있어서,
    상기 제1 연산 처리 그래프는 제2 서브 그래프를 더 포함하고,
    상기 제1 연산 결과 및 제2 실행 데이터를 기초로 상기 제2 서브 그래프에 대응하는 제2 연산 동작을 수행한 결과 제2 연산 결과를 생성하도록 구성되는 제2 리소스;및
    상기 제2 서브 그래프를 상기 제2 리소스에서 구동될 수 있도록 컴파일 함으로써 상기 제2 실행 데이터를 생성하는 제2 컴파일러;를 더 포함하고,
    상기 태스크 매니저는 상기 제2 리소스에서 상기 제2 연산 동작을 수행하는데 소요되는 시간인 제2 폴링 시간을 더 계산하고, 상기 제1 리소스에 상기 제1 실행 데이터를 출력한 시점부터 상기 제1 폴링 시간 및 상기 제2 폴링 시간이 지난 뒤 상기 제2 연산 결과를 상기 제2 리소스로부터 폴링하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  4. 제3항에 있어서,
    제1 입력 모델을 수신하고, 상기 제1 입력 모델을 분석함으로써 상기 제1 연산 처리 그래프를 생성하고, 상기 제1 연산 처리 그래프를 상기 제1 서브 그래프 및 상기 제2 서브 그래프를 포함하는 복수의 서브 그래프들로 구분하도록 구성되는 모델 분석기;를 더 포함하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  5. 제4항에 있어서,
    상기 모델 분석기는 제2 입력 모델을 수신하고, 상기 제2 입력 모델을 분석함으로써 제3 서브 그래프를 포함하는 제2 연산 처리 그래프를 생성하고,
    상기 제1 리소스는 상기 제3 서브 그래프에 대응하는 제3 연산 동작을 수행한 결과 제3 연산 결과를 더 생성하고,
    상기 태스크 매니저는 상기 제1 리소스에서 상기 제3 연산 동작을 수행하는데 소요되는 시간인 제3 폴링 시간을 계산하고, 계산된 상기 제3 폴링 시간을 기초로 상기 제3 연산 결과를 상기 제1 리소스로부터 폴링하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  6. 제5항에 있어서,
    상기 태스크 매니저는 상기 제2 리소스에서 상기 제2 연산 동작이 완료된 시점부터 상기 제3 폴링 시간만큼 지난 뒤 상기 제3 연산 결과를 상기 제1 리소스로부터 폴링하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  7. 제5항에 있어서,
    상기 태스크 매니저는 상기 제1 리소스에서 상기 제1 연산 동작이 완료된 시점부터 상기 제3 폴링 시간만큼 지난 뒤 상기 제3 연산 결과를 상기 제1 리소스로부터 폴링하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  8. 제2항에 있어서,
    상기 태스크 매니저는 미리 결정된 공식에 상기 제1 서브 그래프에 대응하는 정보를 대입함으로써 상기 제1 폴링 시간을 계산하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  9. 제2항에 있어서,
    상기 태스크 매니저는 상기 제1 리소스의 연산 처리 능력에 기초하여 상기 제1 폴링 시간을 계산하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  10. 제2항에 있어서,
    상기 연산 처리 그래프는 복수의 서브 그래프들을 포함하고,
    상기 복수의 서브 그래프들 및 상기 복수의 서브 그래프들에 대응하는 폴링 시간에 대한 대응 정보를 포함하는 폴링 시간 테이블을 저장하도록 구성되는 모델 키퍼;를 더 포함하는 뉴럴 네트워크 시스템.
  11. 제10항에 있어서,
    상기 태스크 매니저는, 상기 제1 서브 그래프에 대한 폴링 시간을 계산하기 전에 상기 제1 서브 그래프에 대응하는 상기 제1 폴링 시간이 상기 폴링 시간 테이블에 저장되어 있는지 판단하고,
    상기 제1 폴링 시간이 상기 폴링 시간 테이블에 저장되어 있는 경우, 상기 폴링 시간 테이블에 저장된 상기 제1 폴링 시간에 기초하여 폴링을 수행하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  12. 제11항에 있어서,
    상기 태스크 매니저는, 상기 제1 폴링 시간이 저장되어 있지 않는 경우, 계산한 상기 제1 폴링 시간을 상기 폴링 시간 테이블에 업데이트하는 것을 특징으로 하는 뉴럴 네트워크 시스템.
  13. 제1 서브 그래프를 포함하는 연산 처리 그래프를 이용하여 뉴럴 네트워크 모델을 처리하는 방법에 있어서,
    제1 서브 그래프에 대한 정보를 기초로 상기 제1 서브 그래프에 대응하는 제1 연산 동작을 수행하는데 소요되는 시간인 제1 폴링 시간을 계산하는 단계;
    제1 리소스에서 구동될 수 있도록 상기 제1 서브 그래프를 컴파일 함으로써 제1 실행 데이터를 생성하는 단계;
    상기 제1 실행 데이터를 상기 제1 리소스에 출력하는 단계;및
    상기 제1 리소스에 상기 제1 실행 데이터를 출력한 시점으로부터 상기 제1 폴링 시간이 소요된 후 상기 제1 리소스로부터 상기 제1 실행 데이터에 대응하는 제1 연산 결과를 폴링하는 단계;를 포함하는 뉴럴 네트워크 모델 처리 방법.
  14. 제13항에 있어서,
    상기 연산 처리 그래프는 제2 서브 그래프를 더 포함하고,
    제2 서브 그래프에 대한 정보를 기초로 상기 제2 서브 그래프에 대응하는 제2 연산 동작을 수행하는데 소요되는 시간인 제2 폴링 시간을 계산하는 단계;
    제2 리소스에서 구동될 수 있도록 상기 제2 서브 그래프를 컴파일 함으로써 제2 실행 데이터를 생성하는 단계;
    상기 제2 실행 데이터를 상기 제2 리소스에 출력하는 단계;및
    제1 리소스에 상기 제1 실행 데이터를 출력한 시점으로부터 상기 제1 폴링 시간 및 상기 제2 폴링 시간이 소요된 후 상기 제2 리소스로부터 상기 제2 실행 데이터에 대응하는 제2 연산 결과를 폴링하는 단계;를 더 포함하는 것을 특징으로 하는 뉴럴 네트워크 모델 처리 방법.
  15. 제13항에 있어서,
    상기 제1 폴링 시간을 계산하는 단계는, 미리 결정된 공식에 상기 제1 서브그래프에 대한 정보를 대입하는 단계를 포함하는 것을 특징으로 하는 뉴럴 네트워크 모델 처리 방법.
  16. 제13항에 있어서,
    상기 제1 폴링 시간을 계산하는 단계는, 상기 제1 리소스의 연산 처리 능력에 기초하여 상기 제1 폴링 시간을 계산하는 단계;를 포함하는 것을 특징으로 하는 뉴럴 네트워크 모델 처리 방법.
  17. 제13항에 있어서,
    상기 제1 폴링 시간을 계산하는 단계는,
    상기 제1 서브 그래프에 대응하는 상기 제1 폴링 시간을 폴링 시간 테이블로부터 검색하는 단계;
    상기 검색하는 단계 결과, 상기 폴링 시간 테이블에서 상기 제1 폴링 시간을 발견하지 못한 경우, 상기 제1 서브 그래프에 대한 정보를 기초로 상기 제1 폴링 시간을 계산하는 단계;
    상기 계산한 제1 폴링 시간을 상기 폴링 시간 테이블에 업데이트 하는 단계;및
    상기 검색하는 단계 결과, 상기 폴링 시간 테이블에서 상기 제1 폴링 시간을 발견한 경우, 상기 폴링 시간 테이블로부터 상기 제1 폴링 시간을 획득하는 단계;를 포함하는 것을 특징으로 하는 뉴럴 네트워크 모델 처리 방법.
  18. 서브 그래프를 포함하는 연산 처리 그래프를 이용하여 뉴럴 네트워크 모델을 처리하는 방법에 있어서,
    리소스에서 구동될 수 있도록 상기 서브 그래프를 컴파일 함으로써 실행 데이터를 생성하는 단계;
    상기 실행 데이터를 상기 리소스에 출력하는 단계;
    상기 리소스에 상기 실행 데이터를 출력한 시점으로부터 제1 폴링 시간이 소요된 후, 상기 리소스에 상기 실행 데이터에 대응하는 연산 결과를 폴링하기 위한 제1 폴링 신호를 출력하는 단계;및
    상기 제1 폴링 신호를 출력한 시점으로부터 상기 제1 폴링 시간과 상이한 제2 폴링 시간이 소요된 후, 상기 연산 결과를 폴링하기 위한 제2 폴링 신호를 출력하는 단계;를 포함하는 뉴럴 네트워크 모델 처리 방법.
  19. 제18항에 있어서,
    상기 제2 폴링 시간은 상기 제1 폴링 시간보다 더 짧은 것을 특징으로 하는 뉴럴 네트워크 모델 처리 방법.
  20. 제18항에 있어서,
    상기 제2 폴링 신호를 출력하는 단계는,
    상기 제1 폴링 신호에 대응하여 상기 연산 결과를 수신하였는지 여부를 판단하는 단계;
    상기 제1 연산 결과를 수신한 경우, 상기 제1 폴링 시간을 폴링 시간 테이블에 업데이트하는 단계;및
    상기 제2 연산 결과를 수신하지 못한 경우, 상기 제2 폴링 시간에 기초하여 상기 제2 폴링 신호를 출력하는 단계;를 포함하는 것을 특징으로 하는 뉴럴 네트워크 모델 처리 방법.
KR1020180174269A 2018-12-31 2018-12-31 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법 KR20200083048A (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020180174269A KR20200083048A (ko) 2018-12-31 2018-12-31 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법
DE102019120513.1A DE102019120513A1 (de) 2018-12-31 2019-07-30 Neurales Netzwerksystem zum Vorhersagen einer Polling-Zeit und neurales Netzwerkmodell-Verarbeitungsverfahren welches dasselbe verwendet
US16/532,885 US11625600B2 (en) 2018-12-31 2019-08-06 Neural network system for predicting polling time and neural network model processing method using the same
CN201911065022.5A CN111382865A (zh) 2018-12-31 2019-11-01 用于预测轮询时间的神经网络系统和神经网络模型处理方法
SG10201910549YA SG10201910549YA (en) 2018-12-31 2019-11-12 Neural Network System For Predicting Polling Time And Neural Network Model Processing Method Using The Same
US18/127,824 US20230229914A1 (en) 2018-12-31 2023-03-29 Method of processing a neural network model

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180174269A KR20200083048A (ko) 2018-12-31 2018-12-31 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법

Publications (1)

Publication Number Publication Date
KR20200083048A true KR20200083048A (ko) 2020-07-08

Family

ID=71079766

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180174269A KR20200083048A (ko) 2018-12-31 2018-12-31 폴링 시간을 예측하는 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법

Country Status (5)

Country Link
US (2) US11625600B2 (ko)
KR (1) KR20200083048A (ko)
CN (1) CN111382865A (ko)
DE (1) DE102019120513A1 (ko)
SG (1) SG10201910549YA (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115686806A (zh) * 2021-07-23 2023-02-03 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5946647A (en) 1996-02-01 1999-08-31 Apple Computer, Inc. System and method for performing an action on a structure in computer-generated data
US6487641B1 (en) * 1999-04-19 2002-11-26 Oracle Corporation Dynamic caches with miss tables
US20030182652A1 (en) * 2001-12-21 2003-09-25 Custodio Gabriel T. Software building and deployment system and method
EP2811678B1 (en) * 2003-03-31 2020-04-22 Apple Inc. A network apparatus, a memory medium and a method of operating the same with polling
US8035636B1 (en) * 2005-09-08 2011-10-11 Oracle America, Inc. Software system for efficient data transport across a distributed system for interactive viewing
JP2008009591A (ja) * 2006-06-28 2008-01-17 Matsushita Electric Ind Co Ltd キャッシュメモリシステム
US7543266B2 (en) * 2006-11-20 2009-06-02 Microsoft Corporation Lock-free state merging in parallelized constraint satisfaction problem solvers
US8392923B2 (en) * 2007-09-28 2013-03-05 International Business Machines Corporation Dynamic polling for completion of asynchronous tasks based on historical task completion times
CN102089752B (zh) * 2008-07-10 2014-05-07 洛克泰克科技有限公司 依赖性问题的有效率的并行计算
US9645866B2 (en) * 2010-09-20 2017-05-09 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US9135181B2 (en) * 2010-10-27 2015-09-15 International Business Machines Corporation Management of cache memory in a flash cache architecture
JP5699731B2 (ja) * 2011-03-24 2015-04-15 富士ゼロックス株式会社 画像処理装置及びプログラム
JP5862351B2 (ja) * 2012-02-16 2016-02-16 富士ゼロックス株式会社 情報処理装置、情報処理システム及び情報処理プログラム
TWI584221B (zh) * 2012-09-28 2017-05-21 輝達公司 適應性調整圖形處理單元之圖框率的方法及使用該方法的電腦系統
JP6127489B2 (ja) 2012-12-11 2017-05-17 株式会社リコー 処理要求装置、処理要求装置の制御プログラム
JP2015056007A (ja) 2013-09-11 2015-03-23 キヤノン株式会社 通信システム、情報処理装置、周辺装置、通信制御方法およびプログラム
US9727942B2 (en) 2013-10-29 2017-08-08 International Business Machines Corporation Selective utilization of graphics processing unit (GPU) based acceleration in database management
KR101594915B1 (ko) 2014-01-23 2016-02-17 서울대학교산학협력단 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템
US9842152B2 (en) * 2014-02-19 2017-12-12 Snowflake Computing, Inc. Transparent discovery of semi-structured data schema
KR102354990B1 (ko) * 2014-09-17 2022-01-24 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US9734098B2 (en) * 2015-03-31 2017-08-15 Sandisk Technologies Llc Memory bus management
US9894400B2 (en) 2015-05-12 2018-02-13 Roku, Inc. Profile driven communication polling for remote control
US10042711B1 (en) * 2015-12-18 2018-08-07 EMC IP Holding Company LLC Distributed data protection techniques with cloning
US10255106B2 (en) 2016-01-27 2019-04-09 Qualcomm Incorporated Prediction-based power management strategy for GPU compute workloads
US10033527B2 (en) * 2016-06-30 2018-07-24 Fortinet, Inc. Dual-mode processing of cryptographic operations
US10325340B2 (en) 2017-01-06 2019-06-18 Google Llc Executing computational graphs on graphics processing units
US10887235B2 (en) * 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US10942938B2 (en) * 2017-08-31 2021-03-09 Sap Se Caching for query processing systems
WO2019055526A1 (en) * 2017-09-15 2019-03-21 Google Llc INCREASE IN NEURAL NETWORKS
US20190205153A1 (en) * 2017-12-29 2019-07-04 Virtual Instruments Corporation System and method of dynamically assigning device tiers based on application
US20190286972A1 (en) * 2018-03-14 2019-09-19 Microsoft Technology Licensing, Llc Hardware accelerated neural network subgraphs
US11249536B2 (en) * 2018-12-17 2022-02-15 Qualcomm Incorporated Reducing power consumption of communication interfaces by clock frequency scaling and adaptive interleaving of polling

Also Published As

Publication number Publication date
DE102019120513A1 (de) 2020-07-02
US20200210827A1 (en) 2020-07-02
US11625600B2 (en) 2023-04-11
US20230229914A1 (en) 2023-07-20
SG10201910549YA (en) 2020-07-29
CN111382865A (zh) 2020-07-07

Similar Documents

Publication Publication Date Title
US11915149B2 (en) System for managing calculation processing graph of artificial neural network and method of managing calculation processing graph by using the same
US11269639B2 (en) Methods and apparatus for intentional programming for heterogeneous systems
US11010145B1 (en) Retargetable compilation for quantum computing systems
US9396033B2 (en) Method of executing parallel application on manycore cluster system and the manycore cluster system
US10908884B2 (en) Methods and apparatus for runtime multi-scheduling of software executing on a heterogeneous system
US11494681B1 (en) Quantum instruction compiler for optimizing hybrid algorithms
US20160117154A1 (en) Automated software include graph and build environment analysis and optimization in compiled language
KR20220054398A (ko) 애플리케이션 그룹에 대한 맞춤형 루트 프로세스
US11625517B2 (en) Information processing method, and information processing apparatus
US20230229914A1 (en) Method of processing a neural network model
CN111435352A (zh) 一种分布式实时计算方法、装置、系统及其存储介质
US11340874B2 (en) Methods and apparatus to recommend instruction adaptations to improve compute performance
US11379712B2 (en) Avoiding cycles in neural networks
KR102238600B1 (ko) 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법
KR20210107531A (ko) 멀티-프로세스 웹 브라우저 환경에서 머신 러닝 모델을 프로세싱하기 위한 방법들 및 장치
Scharnowski et al. Hoedur: Embedded Firmware Fuzzing using Multi-Stream Inputs.
US11900262B2 (en) Neural network device, neural network system, and method of processing neural network model by using neural network system
US10628142B2 (en) Loop break
WO2017135219A1 (ja) 設計支援装置、設計支援方法、および設計支援プログラムを格納した記録媒体
KR20210120937A (ko) 딥 러닝 프레임워크 중의 모드 전환 방법, 장치, 전자 기기, 컴퓨터 저장 매체 및 컴퓨터 프로그램 제품
US10140538B2 (en) Computing control device, computing control method, and computer readable medium
WO2024001861A1 (zh) 模型训练方法、装置、系统及相关设备
KR20200051278A (ko) 인공 신경망에서의 작업 관리 방법 및 이를 포함하는 시스템
US20220237008A1 (en) Embedded computation instruction set optimization
JP2021099787A (ja) プログラマアノテーションを介して異種データ構造選択を行う方法、システム、及び製造物品

Legal Events

Date Code Title Description
A201 Request for examination