KR20240003619A - 신경망 연산 시스템 및 신경망 모델 실행 방법 - Google Patents

신경망 연산 시스템 및 신경망 모델 실행 방법 Download PDF

Info

Publication number
KR20240003619A
KR20240003619A KR1020220081422A KR20220081422A KR20240003619A KR 20240003619 A KR20240003619 A KR 20240003619A KR 1020220081422 A KR1020220081422 A KR 1020220081422A KR 20220081422 A KR20220081422 A KR 20220081422A KR 20240003619 A KR20240003619 A KR 20240003619A
Authority
KR
South Korea
Prior art keywords
neural network
network model
node
execution time
amount
Prior art date
Application number
KR1020220081422A
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 KR1020220081422A priority Critical patent/KR20240003619A/ko
Priority to US18/112,769 priority patent/US20240004774A1/en
Priority to EP23174078.8A priority patent/EP4300368A1/en
Priority to CN202310781371.7A priority patent/CN117332828A/zh
Publication of KR20240003619A publication Critical patent/KR20240003619A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • 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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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
    • 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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Feedback Control In General (AREA)

Abstract

신경망 연산 시스템은, 신경망 모델을 실행하는 복수의 이기종 연산 장치들을 포함하는 프로세서; 상기 신경망 모델의 입력 데이터 및 출력 데이터를 버퍼링하는 메모리; 상기 메모리의 데이터 입출력을 제어하는 메모리 컨트롤러; 및 상기 프로세서와 상기 메모리 컨트롤러 간 통신을 지원하는 시스템 버스를 포함하고, 상기 프로세서는 상기 신경망 모델의 목표 실행시간에 기초하여 상기 신경망 모델에 포함되는 복수의 노드들의 노드 별 목표 실행시간을 결정하고, 상기 복수의 노드들 각각이 실행될 노드 별 타겟 연산 장치, 상기 노드 별 일의 양 및 상기 노드 별 목표 실행시간에 기초하여 상기 복수의 이기종 연산 장치들, 상기 메모리 컨트롤러 및 상기 시스템 버스를 포함하는 복수의 하드웨어 장치들의 동작 주파수를 각각 제어하고, 상기 제어된 동작 주파수로 동작하여 상기 신경망 모델을 실행한다.

Description

신경망 연산 시스템 및 신경망 모델 실행 방법{NEURAL NETWORK COMPUTING SYSTEM AND NEURAL NETWORK MODEL EXECUTION METHOD}
본 발명은 신경망 연산 시스템 및 신경망 모델 실행 방법에 관한 것이다.
최근, 인간의 뇌가 정보를 처리하는 학습 능력을 모사한 신경망(neural network)에 대한 연구가 활발하게 진행되고 있다. 신경망 기반의 연산을 이용하면, 음성, 이미지 및 비디오 등과 같은 다양한 사용자 데이터로부터 객체 또는 특정 정보가 정확하게 인식되고, 판별될 수 있다.
한편, 프로세서는 이기종 연산 장치들을 포함할 수 있다. 이기종 연산 장치들에는 범용성이 높은 CPU(Central Processing Unit), 신경망 연산에 최적화된 NPU(Neural Processing Unit) 등이 포함될 수 있다. 신경망 연산을 수행하기 위해 NPU뿐만 아니라 CPU 등의 연산 장치들이 함께 이용될 수 있다. 이기종 연산 장치들을 비롯한 다양한 하드웨어 장치들을 이용하여 신경망 연산을 수행하는 경우, 전력 소모량이 증가할 수 있다.
본 발명은 신경망 모델이 목표 실행시간 내에 실행될 수 있도록 하면서 하드웨어 장치들의 전력 소모량을 줄일 수 있는 신경망 연산 시스템 및 신경망 모델 실행 방법을 제공하고자 한다.
본 발명의 실시 예에 따른 신경망 연산 시스템은, 신경망 모델을 실행하는 복수의 이기종 연산 장치들을 포함하는 프로세서; 상기 신경망 모델의 입력 데이터 및 출력 데이터를 버퍼링하는 메모리; 상기 메모리의 데이터 입출력을 제어하는 메모리 컨트롤러; 및 상기 프로세서와 상기 메모리 컨트롤러 간 통신을 지원하는 시스템 버스를 포함하고, 상기 프로세서는 상기 신경망 모델의 목표 실행시간에 기초하여 상기 신경망 모델에 포함되는 복수의 노드들의 노드 별 목표 실행시간을 결정하고, 상기 복수의 노드들 각각이 실행될 노드 별 타겟 연산 장치, 상기 노드 별 일의 양 및 상기 노드 별 목표 실행시간에 기초하여 상기 복수의 이기종 연산 장치들, 상기 메모리 컨트롤러 및 상기 시스템 버스를 포함하는 복수의 하드웨어 장치들의 동작 주파수를 각각 제어하고, 상기 제어된 동작 주파수로 동작하여 상기 신경망 모델을 실행한다.
본 발명의 실시 예에 따른 신경망 연산 시스템은, 신경망 모델을 실행하는 복수의 이기종 연산 장치들을 포함하는 프로세서; 상기 신경망 모델의 입력 데이터 및 출력 데이터를 버퍼링하는 메모리; 상기 메모리의 데이터 입출력을 제어하는 메모리 컨트롤러; 및 상기 프로세서와 상기 메모리 컨트롤러 간 통신을 지원하는 시스템 버스를 포함하고, 상기 프로세서는 상기 신경망 모델의 목표 실행시간을 포함하여 상기 신경망 모델의 실행 결과에 독립적인 정적 분석 데이터를 입력으로 하여 상기 복수의 이기종 연산 장치들, 상기 메모리 및 상기 메모리 컨트롤러를 포함하는 하드웨어 장치들 각각의 동작 주파수를 결정하는 피드포워드 제어부, 상기 결정된 동작 주파수에 따라 상기 하드웨어 장치들을 제어하고, 상기 신경망 모델을 실행하며, 상기 신경망 모델의 실제 실행시간을 출력하는 신경망 모델 실행부, 및 상기 실제 실행시간을 포함하여 상기 신경망 모델의 실행 결과에 의존하는 동적 분석 데이터에 기초하여 상기 하드웨어 장치들 각각의 동작 주파수를 조정하는 피드백 제어부를 구동한다.
본 발명의 실시 예에 따른 신경망 모델 실행 방법은, 신경망 모델의 실행이 트리거되면 상기 신경망 모델에 포함되는 복수의 노드들의 노드 별 일의 양을 추정하는 단계; 상기 신경망 모델의 목표 실행시간에 기초하여 상기 복수의 노드들의 노드 별 목표 실행시간을 결정하는 단계; 상기 신경망 모델을 실행하기 위한 복수의 이기종 연산 장치들에 대해서, 상기 노드 별 타겟 연산 장치, 노드 별 일의 양, 및 상기 노드 별 목표 실행시간에 기초하여 이기종 연산 장치 별 동작 주파수를 제어하는 단계; 상기 동작 주파수에 따라 동작하는 상기 복수의 이기종 연산 장치들을 이용하여 상기 신경망 모델을 실행하는 단계; 및 상기 신경망 모델의 실제 실행 시간에 기초하여 상기 신경망 모델을 실행하기 위한 상기 복수의 이기종 연산 장치들의 동작 주파수를 조정하는 단계를 포함한다.
본 발명의 실시 예에 따른 신경망 연산 시스템은, 신경망 모델의 종단간 목표 실행시간에 기초하여 상기 신경망 모델의 노드 별 목표 실행시간을 결정하고, 상기 노드 별 목표 실행시간에 기초하여 하드웨어 장치들의 동작 주파수를 개별적으로 제어함으로써 하드웨어 장치들의 전력 소모량을 줄일 수 있다.
본 발명의 실시 예에 따른 신경망 연산 시스템은, 신경망 모델의 실행에 앞서 개방 루프 제어를 수행하여 하드웨어 장치들의 동작 주파수를 제어할 수 있다. 따라서, 폐쇄 루프 제어를 수행하기 위해 신경망 모델의 실제 실행시간에 대한 피드백을 받기 전에도 신경망 모델의 목표 실행시간을 준수할 수 있다. 따라서, 사용자 응답성(user responsiveness)이 개선될 수 있다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 신경망 연산 시스템을 나타내는 블록도이다.
도 2a 내지 도 2c는 하드웨어 장치들의 동작 주파수에 따른 신경망 모델의 실행시간을 나타내는 그래프들이다.
도 3은 신경망 모델의 구성을 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 신경망 연산 시스템을 개략적으로 나타내는 블록도이다.
도 5는 본 발명의 실시 예에 따른 신경망 연산 시스템의 계층구조를 나타내는 블록도이다.
도 6은 본 발명의 실시 예에 따른 신경망 연산 시스템의 시스템 소프트웨어 계층을 상세히 나타내는 블록도이다.
도 7 내지 도 10은 도 6을 참조하여 설명된 신경망 연산 시스템의 소프트웨어 구성들을 구체적으로 설명하기 위한 도면들이다.
도 11은 본 발명의 실시 예에 따른 신경망 모델 실행 방법을 나타내는 도면이다.
도 12는 본 발명의 실시 예에 따른 신경망 연산 시스템이 적용된 전자 장치를 나타내는 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 신경망 연산 시스템을 나타내는 블록도이다.
도 1을 참조하면, 신경망 연산 시스템(100)이 도시된다. 신경망 연산 시스템(100)은 신경망(neural network) 모델을 실행할 수 있다. 신경망 모델은 인간의 뇌가 정보를 처리하는 학습 방식을 모델링한 것으로서, 음성, 이미지, 비디오 등과 같은 다양한 사용자 데이터에서 객체 또는 특정 정보를 정확하게 인식하고 판별할 수 있는 모델을 지칭할 수 있다.
신경망 연산 시스템(100)은 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 신경망 연산 시스템(100)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
신경망 연산 시스템(100)은 프로세서(111), 메모리 컨트롤러(117), 메모리(118) 및 시스템 버스(119) 등의 복수의 하드웨어 장치들을 포함할 수 있다. 시스템 버스(119)는 프로세서(111), 메모리 컨트롤러(117) 및 메모리(118) 간의 통신을 지원할 수 있다.
프로세서(111)는 메모리(118)에 저장된 데이터를 이용하여 신경망 연산을 수행할 수 있다. 예를 들어, 신경망 연산은 신경망 모델에 포함되는 노드 별 데이터 및 가중치를 읽고, 상기 데이터 및 가중치의 컨볼루션 연산을 수행하며, 연산 결과를 저장하거나 출력하는 동작을 포함할 수 있다.
메모리(118)는 프로세서(111)가 신경망 연산을 수행하기 위해 필요한 데이터를 저장할 수 있다. 예를 들어, 메모리(118)에는 프로세서(111)에 의해 실행될 수 있는 하나 이상의 신경망 모델이 로드될 수 있다. 또한, 메모리(118)에는 신경망 모델의 입력 데이터 및 출력 데이터가 저장될 수 있다. 메모리(118)는 DRAM(Dynamic Random Access Memory), SDRAM(Synchronous DRAM), SRAM(Static RAM), RRAM(Resistive RAM) 등과 같은 휘발성 메모리를 포함할 수 있으며, 플래시 메모리와 같은 비휘발성 메모리를 포함할 수도 있다.
메모리 컨트롤러(117)는 프로세서(111)로부터 수신된 데이터를 메모리(118)에 저장하는 동작 및 메모리(118)에 저장된 데이터를 프로세서(111)로 출력하는 동작을 제어할 수 있다.
프로세서(111)는 CPU(Central Processing Unit; 112), GPU(Graphic Processing unit; 113), NPU(Neural Processing Unit; 114), DSP(Digital Signal Processor; 115), 가속기(116) 등과 같이 데이터의 처리 및 연산을 수행하는 이기종 연산 장치들을 포함할 수 있다.
구체적으로, CPU(112)는 범용성이 높은 연산 장치일 수 있다. GPU(113)는 그래픽 처리와 같은 병렬 연산에 최적화된 연산 장치일 수 있다. NPU(114)는 신경망 연산에 최적화된 연산 장치로서, 컨볼루션 연산과 같이 신경망 연산에 주로 사용되는 단위 연산을 실행하기 위한 논리 블록들을 포함할 수 있다. DSP(115)는 아날로그 신호의 실시간 디지털 처리에 최적화된 연산 장치일 수 있다. 그리고, 가속기(116)는 특정 기능을 신속하게 수행하기 위한 연산 장치일 수 있다.
프로세서(111)가 신경망 모델을 실행할 때 다양한 하드웨어 장치들이 함께 동작할 수 있다. 예를 들어, 신경망 모델을 실행하기 위해서 NPU(114)뿐만 아니라 CPU(112), GPU(113) 등의 이기종 연산 장치들이 함께 동작할 수 있다. 뿐만 아니라, 신경망 모델의 입력 데이터를 읽고, 출력 데이터를 저장하기 위해 메모리 컨트롤러(117) 및 데이터 버스(119)가 동작할 수 있다.
도 2a 내지 도 2c는 하드웨어 장치들의 동작 주파수에 따른 신경망 모델의 실행시간을 나타내는 그래프들이다.
도 2a의 그래프는 NPU(114)의 동작 주파수에 따른 신경망 모델의 표준화된 실행시간을 나타낸다. 신경망 모델의 실행시간은 신경망 모델이 데이터를 입력 받고 상기 데이터의 처리를 완료하기까지 소요되는 시간을 지칭할 수 있다.
도 2a에서 표준화된 실행시간은, NPU(114)가 최저 동작 주파수로 동작하여 신경망 모델을 실행할 때 소요되는 실행시간을 '1'로 설정하여 동작 주파수별 실행시간을 표준화한 것을 지칭할 수 있다. 예를 들어, 하드웨어 장치들의 동작 주파수는 바이너리 코드 값에 따라 이산적으로 조정될 수 있으며, 하드웨어 장치들 각각이 가질 수 있는 동작 주파수들 중 최저 동작 주파수와 최고 동작 주파수가 포함될 수 있다. 도 2a의 예에서, NPU(114)는 160MHz의 최저 동작 주파수 및 1066MHz의 최고 동작 주파수를 가질 수 있다.
도 2a의 그래프를 참조하면, NPU(114)의 동작 주파수가 높아질수록 표준화된 실행시간이 점차 짧아지는 추세를 보이며, NPU(114)의 동작 주파수가 935MHz인 경우 표준화된 실행시간은 0.42 수준으로 가장 짧아질 수 있다. 요컨대, 신경망 모델의 실행 시간은 NPU(114)의 동작 주파수에 영향을 받을 수 있다.
도 2b의 그래프는 CPU(112)의 동작 주파수에 따른 신경망 모델의 표준화된 실행시간을 나타낸다. 도 2b에서 표준화된 실행시간은, CPU(112)가 최저 동작 주파수로 동작할 때의 신경망 모델의 실행시간을 기준으로, 동작 주파수별 실행시간을 표준화한 것을 지칭할 수 있다. 도 2b의 그래프는 CPU(112)의 동작 주파수가 높아질수록 표준화된 실행시간이 점차 짧아지는 추세를 보이며, CPU(112)의 동작 주파수가 2208MHz인 경우 표준화된 실행시간은 0.4 수준으로 가장 짧아질 수 있다. 요컨대, 신경망 모델의 실행 시간은 NPU(114)의 동작 주파수뿐만 아니라 CPU(112)의 동작 주파수에도 영향을 받을 수 있다.
도 2c의 그래프는 메모리 컨트롤러(117)의 동작 주파수에 따른 신경망 모델의 표준화된 실행시간을 나타낸다. 도 2c에서 표준화된 실행시간은, 메모리 컨트롤러(117)가 최저 동작 주파수로 동작할 때의 신경망 모델의 실행시간을 기준으로, 동작 주파수별 실행시간을 표준화한 것을 지칭할 수 있다. 도 2c의 그래프는 메모리 컨트롤러(117)의 동작 주파수가 높아질수록 표준화된 실행시간이 점차 짧아지는 추세를 보이며, 메모리 컨트롤러(117)의 동작 주파수가 2730MHz인 경우 표준화된 실행시간은 0.18 수준으로 가장 짧아질 수 있다. 요컨대, 신경망 모델의 실행 시간은 NPU(114), CPU(112) 등의 이기종 연산 장치들의 동작 주파수뿐만 아니라, 메모리 컨트롤러(117)의 동작 주파수에도 큰 영향을 받을 수 있다.
신경망 연산 시스템(100)의 사용자 체감 성능을 보장하기 위해서, 신경망 모델별로 목표 실행시간이 정해질 수 있다. 예를 들어, 신경망 연산 시스템(100)의 카메라 어플리케이션으로부터 이미지 프레임을 입력 받아서 객체를 감지하기 위한 신경망 모델에는 10ms의 목표 실행시간이 정해질 수 있다. 그리고, 상기 객체가 무엇인지 식별하기 위한 신경망 모델에는 15ms의 목표 실행시간이 정해질 수 있다. 이러한 신경망 모델들을 목표 실행시간 이내에 실행하기 위해서는, NPU(114)뿐만 아니라, CPU(112), GPU(113), DSP(115) 등 이기종 연산 장치들을 통해 신경망 모델의 실행을 가속하는 이기종 컴퓨팅이 요구된다.
신경망 모델을 실행하기 위해 하드웨어 장치들이 동시에 높은 동작 주파수로 동작한다면, 전력 소모량이 증가할 수 있다. 신경망 연산 시스템(100)의 전력 소모량을 줄이기 위해, 동작 전압과 동작 주파수를 동적으로 스케일링할 수 있는 DVFS(Dynamic Voltage Frequency Scaling) 메커니즘이 제안되고 있다. 예를 들어, 리눅스 커널의 가버너(governor)는 이기종 연산 장치들 각각에 대해서, 과거 사용률에 기초하여 미래의 사용률을 예측하고, 예측된 미래의 사용률에 기초하여 동작 주파수를 결정할 수 있다.
그러나, 신경망 연산 시스템이 신경망 모델의 목표 실행시간을 고려하지 않고 이기종 연산 장치들 각각의 사용률에 기초하여 동작 주파수를 결정하는 경우, 신경망 모델의 목표 실행시간을 준수하기 어려울 수 있다. 또한, 신경망 연산 시스템이 과거의 사용률을 피드백 받아서 동작 주파수를 결정하는 폐쇄 루프 제어 방식을 이용하는 경우, 피드백 주기는 수 내지 수십 밀리세컨드(ms)에 달할 수 있다. 따라서, 상기 폐쇄 루프 제어 방식이 이용되는 경우 신경망 모델의 실행 중이나 신경망 모델의 실행 완료 후에 뒤늦게 피드백을 받을 수 있으므로 동작 주파수를 신속하게 결정하기 어려울 수 있다. 결과적으로, 신경망 모델이 목표 실행시간 내에 완료되어 사용자에게 응답을 제공할 수 있는 성질인 사용자 응답성이 떨어질 수 있다.
본 발명의 실시 예에 따르면, 신경망 연산 시스템(100)은 폐쇄 루프 제어뿐만 아니라 개방 루프 제어를 이용함으로써 신경망 모델의 실행에 앞서 이기종 연산 장치별 동작 주파수를 결정할 수 있다. 구체적으로, 신경망 연산 시스템(100)은 신경망 모델의 목표 실행시간을 입력 받아서 상기 이기종 연산 장치들의 동작 주파수를 각각 제어하는 개방 루프 제어를 이용함으로써 신경망 모델의 목표 실행시간을 준수할 수 있다. 따라서, 신경망 연산 시스템(100)의 사용자 응답성이 개선될 수 있다.
도 3은 신경망 모델의 구성을 설명하기 위한 도면이다.
도 3을 참조하면, 신경망 모델(200)은 복수의 노드들(201-208) 및 복수의 에지들(211-218)을 포함할 수 있다. 신경망 모델(200)은 방향 비순환 그래프(directed acyclic graph)로 표현될 수 있다. 방향 비순환 그래프는 개별 요소들이 특정한 방향을 향하고 있으며, 서로 순환하지 않는 구조로 짜인 그래프를 지칭한다.
복수의 노드들(201-208) 각각은 신경계의 기본 단위의 뉴런을 모델링한 것이다. 복수의 노드들(201-208) 각각은 실행될 연산을 지시하는 소스 코드들을 포함할 수 있다. 복수의 노드들(201-208)은 소스 코드들이 실행될 타겟 연산 장치를 지시하는 속성 값을 더 포함할 수 있다. 도 3의 예에서, 제1 노드(201)가 실행될 타겟 연산 장치는 NPU(114)일 수 있으며, 제2 내지 제8 노드들(202-208)이 실행될 타겟 연산 장치는 CPU(112)일 수 있다.
복수의 노드들(201-208) 각각의 입출력 관계는 복수의 에지들(211-218)로 표현될 수 있다. 예를 들어, 제1 에지(211)는 제1 노드(201)의 출력 데이터가 제2 노드(202)로 입력되는 관계를 나타낸다. 구체적으로, NPU(114)가 제1 노드(201)를 실행함으로써 생성된 출력 데이터는 메모리 컨트롤러(117)를 통해 메모리(118)에 저장될 수 있다. CPU(112)는 메모리 컨트롤러(117)를 통해 메모리(118)에 저장된 출력 데이터를 획득하여 제2 노드(202)를 실행할 수 있다.
본 발명의 실시 예에 따르면, 신경망 연산 시스템(100)은 신경망 모델의 목표 실행시간을 분해하여 신경망 모델의 노드들에 분배하고, 노드 별 목표 실행시간 및 노드 별 타겟 연산 장치에 기초하여 이기종 연산 장치들을 비롯한 하드웨어 장치들의 동작 주파수를 각각 제어할 수 있다. 신경망 연산 시스템(100)은 하드웨어 장치들의 동작 주파수를 각각 제어함으로써 신경망 모델의 목표 실행시간을 준수하면서 소비 전력량을 줄일 수 있다.
도 4는 본 발명의 실시 예에 따른 신경망 연산 시스템을 개략적으로 나타내는 블록도이다.
도 4를 참조하면, 신경망 연산 시스템(300)은 피드포워드 제어부(301), 피드백 제어부(302) 및 신경망 모델 실행부(303)를 포함할 수 있다. 도 4의 신경망 연산 시스템(300)은 도 1의 신경망 연산 시스템(100)에 대응할 수 있다. 피드포워드 제어부(301), 피드백 제어부(302) 및 신경망 모델 실행부(303)는 소프트웨어로 구현될 수 있으며, 도 1을 참조하여 설명된 것과 같은 하드웨어 장치들에 의해 구동될 수 있다.
피드포워드 제어부(301)는 신경망 모델의 목표 실행시간을 입력 받고, 상기 목표 실행시간에 기초하여 신경망 모델을 실행하기 위한 하드웨어 장치 별 동작 주파수를 결정할 수 있다. 피드포워드 제어부(301)는 상기 하드웨어 장치 별 동작 주파수를 제어하기 위한 제어신호를 신경망 모델 실행부(303)로 제공할 수 있다.
피드포워드 제어부(301)는 상기 하드웨어 장치 별 동작 주파수를 결정하기 위해, 정적 분석 데이터를 더 수신할 수 있다. 정적 분석 데이터는 신경망 모델에 포함되는 노드들에 연관된 정적 데이터를 분석함으로써 얻어질 수 있다. 정적 데이터는 신경망 모델의 실행 결과에 독립적인 데이터로서, 신경망 모델의 실행 전에 결정될 수 있다. 예를 들어, 정적 데이터는 노드들의 사전에 결정된 소스 코드들을 분석함으로써 얻어질 수 있다.
피드포워드 제어부(301)는 신경망 모델 실행부(303)의 출력을 피드백 받지 않고 신경망 모델의 목표 실행시간, 정적 분석 데이터 등의 입력만으로 제어신호를 생성하여 동작 주파수를 제어할 수 있다. 피드포워드 제어부(301)의 제어 방식은 개방 루프 제어 방식으로 지칭될 수 있다.
신경망 모델 실행부(303)는 피드포워드 제어부(301)로부터의 제어신호에 기초하여 신경망 연산 시스템(300)에 포함되는 하드웨어 장치들의 동작 주파수를 제어하고, 하드웨어 장치들이 상기 동작 주파수로 신경망 모델을 실행하도록 제어할 수 있다. 그리고, 신경망 모델 실행부(303)는 신경망 모델의 실제 실행시간을 출력할 수 있다.
피드백 제어부(302)는 신경망 모델 실행부(303)로부터 상기 실제 실행시간을 피드백 받고, 피드포워드 제어부(301)에 의해 결정된 하드웨어 장치 별 동작 주파수를 상기 실제 실행시간에 기초하여 조정할 수 있다. 신경망 모델 실행부(303)의 출력을 피드백 받아서 동작 주파수를 제어하는 피드백 제어부(302)의 제어 방식은 폐쇄 루프 제어 방식으로 지칭될 수 있다.
피드백 제어부(302)는 신경망 모델의 실행 결과에 의존하는 동적 데이터에 기초하여 동적 분석 데이터를 생성할 수 있다. 예를 들어, 피드백 제어부(302)는 신경망 모델이 실행되는 동안의 하드웨어 자원들의 사용률을 분석하고 하드웨어 장치들의 자원경합 여부를 분석할 수 있다. 피드백 제어부(302)는 상기 하드웨어 장치 별 동작 주파수를 조정하기 위해, 동적 분석 데이터를 상기 신경망 모델의 실제 실행시간과 함께 이용할 수 있다.
도 4를 참조하면, 제어신호는 피드포워드 제어부(301)로부터의 출력 및 피드백 제어부(302)로부터의 출력을 합하여 결정될 수 있다. 즉, 하드웨어 장치들의 동작 주파수는 개방 루프 제어 및 폐쇄 루프 제어를 통해 결정될 수 있다.
본 발명의 실시 예에 따르면, 신경망 모델 실행부(300)는 신경망 모델의 목표 실행시간을 이용하는 개방 루프 제어를 수행함으로써, 피드백 신호를 받기 전에도 목표 실행 시간을 달성할 수 있도록 이기종 연산 장치들의 동작 주파수를 제어할 수 있다. 또한, 신경망 모델 실행부(300)는 신경망 모델 실행부(303)의 신경망 모델 실행 결과를 피드백 받아서 폐쇄 루프 제어를 수행함으로써, 신경망 모델의 실행 시간과 전력 소모량을 최적화할 수 있다.
도 5는 본 발명의 실시 예에 따른 신경망 연산 시스템의 계층구조를 나타내는 블록도이다.
신경망 연산 시스템(400)은 하드웨어 계층(410), 시스템 소프트웨어 계층(420) 및 어플리케이션 계층(430)을 포함하는 계층구조를 가질 수 있다.
하드웨어 계층(410)은 신경망 연산 시스템(400)의 최하위 계층으로서, 프로세서(411), 메모리 컨트롤러(417) 및 시스템 버스(419) 등의 하드웨어 장치들을 포함할 수 있다. 프로세서(411)는 이기종 연산 장치들, 예를 들어 CPU(412), GPU(413), NPU(414), DSP(415) 및 기타 가속기(416)를 포함할 수 있다. 도 5의 하드웨어 계층(410)에 포함되는 하드웨어 장치들은 도 1을 참조하여 설명된 신경망 연산 시스템(100)의 하드웨어 장치들에 대응할 수 있다. 다만, 메모리 컨트롤러(417)의 제어 하에 데이터를 입출력하는 메모리는 도 5에서 생략된다.
시스템 소프트웨어 계층(420)은 하드웨어 계층(410)의 하드웨어 장치들을 관리하고, 추상화된 플랫폼을 제공할 수 있다. 예를 들어, 시스템 소프트웨어 계층(420)은 리눅스와 같은 커널을 구동할 수 있다.
시스템 소프트웨어 계층(420)은 DVFS부(421) 및 신경망 모델 실행기(422)를 포함할 수 있다. 본 발명의 실시 예예 따르면, DVFS부(421)는 개방 루프 제어 및 폐쇄 루프 제어를 실행함으로써 하드웨어 장치들의 동작 주파수를 결정할 수 있다.
그리고, 신경망 모델 실행기(422)는 DVFS부(421)에 의해 결정된 동작 주파수로 동작하는 하드웨어 장치들을 이용하여 신경망 모델을 실행할 수 있다. 그리고, 신경망 모델 실행기(422)는 신경망 모델 실행 결과로서 신경망 모델의 실제 실행시간을 출력할 수 있다. 상기 실제 실행시간은 DVFS부(421)의 폐쇄 루프 제어를 위해 DVFS부(421)로 피드백될 수 있다.
한편, 시스템 소프트웨어 계층(420)은 프로세서(411)에 의해 구동될 수 있다. 예를 들어, 시스템 소프트웨어 계층(420)은 CPU(412)에 의해 구동될 수 있다. 그러나, 시스템 소프트웨어 계층(420)이 구동될 수 있는 연산 장치는 CPU(412)로 제한되지 않는다.
어플리케이션 계층(430)은 시스템 소프트웨어 계층(420) 상에서 실행될 수 있으며, 복수의 신경망 모델들(431-43N) 및 기타 어플리케이션들(439)을 포함할 수 있다. 예를 들어, 기타 어플리케이션들(439)에는 카메라 어플리케이션이 포함될 수 있다. 그리고, 복수의 신경망 모델들(431-43N)에는 카메라 어플리케이션에 의해 획득된 이미지 프레임에 포함된 객체를 감지하는 모델, 상기 감지된 객체가 무엇인지 식별하는 모델, 상기 이미지 프레임에서 대상 영역을 감지하는 모델, 상기 감지된 대상 영역을 식별하는 모델, 식별된 대상 영역들을 사람, 자동차, 나무와 같은 의미에 따라 분류하는 모델 등이 포함될 수 있다. 그러나, 신경망 모델들(431-43N) 및 기타 어플리케이션들(439)의 종류는 이에 제한되지 않는다.
본 발명의 실시 예에 따르면, 시스템 소프트웨어 계층(420)은 신경망 모델들(431-43N)을 실행하기 위해 신경망 모델들(431-43N) 각각의 목표 실행시간에 기초하여 하드웨어 장치들의 동작 주파수를 제어할 수 있다.
한편, 신경망 모델이 실행될 때 기타 어플리케이션이 동시에 실행될 수 있으며, 복수의 신경망 모델들이 동시에 실행될 수도 있다. 예를 들어, 신경망 연산 시스템(100)이 모바일 시스템인 경우, 카메라 어플리케이션을 실행하는 것과 동시에 객체를 감지하기 위한 신경망 모델이 실행될 수 있다. 신경망 모델을 비롯하여 복수의 어플리케이션들이 동시에 실행되는 경우, 하드웨어 장치들에서 자원경합이 발생할 수 있다.
시스템 소프트웨어 계층(420)은 신경망 모델들(431-43N)의 실제 실행시간 및 동시에 실행되는 어플리케이션들에 의한 하드웨어 장치들의 자원경합 정도에 기초하여 상기 하드웨어 장치들의 동작 주파수를 조정할 수 있다. 본 발명의 실시 예에 따르면, 신경망 연산 시스템(400)은 하드웨어 장치들의 전력 소모량을 줄이면서, 신경망 모델들(431-43N) 각각의 목표 실행시간을 달성할 수 있다.
도 6은 본 발명의 실시 예에 따른 신경망 연산 시스템의 시스템 소프트웨어 계층을 상세히 나타내는 블록도이다.
도 6을 참조하면, 시스템 소프트웨어 계층(500)은 DVFS부(510) 및 신경망 모델 실행부(520)를 포함할 수 있다. 도 6의 DVFS부(510) 및 신경망 모델 실행부(520)는 도 4의 DVFS부(421) 및 신경망 모델 실행부(422)에 대응할 수 있다.
도 6을 참조하면, DVFS부(510)는 외부에서 신경망 모델의 목표 실행시간 및 정적 분석 데이터를 수신하여 하드웨어 장치 별 동작 주파수를 결정하는 개방 루프 제어를 수행함으로써 신경망 모델 실행부(520)를 제어할 수 있다. 그리고, DVFS부(510)는 신경망 모델 실행부(520)로부터 출력된 신경망 모델의 실제 실행시간을 피드백 받아서 하드웨어 장치 별 동작 주파수를 조정하는 폐쇄 루프 제어를 수행할 수 있다.
DVFS부(510)는 목표 실행 시간 분배기(511), 일의 양 추정기(512), 동작 주파수 결정기(513), 동적 분석기(514)를 포함할 수 있다.
목표 실행 시간 분배기(511)는 신경망 모델의 목표 실행시간을, 신경망 모델에 포함된 복수의 노드들에 분배하여 노드 별 목표 실행시간을 결정할 수 있다. 목표 실행 시간 분배기(511)는 상기 노드 별 목표 실행시간을 결정하기 위해, 일의 양 추정기(512)로부터 획득한 노드 별 일의 양을 이용할 수 있다.
일의 양 추정기(512)는 신경망 모델의 정적 데이터에 기초하여 생성된 정적 분석 데이터에 기초하여 신경망 모델의 노드 별 일의 양을 추정할 수 있다. 상기 추정된 노드 별 일의 양은 목표 실행 시간 분배기(511)로 입력될 수 있다. 일의 양 추정기(512)는 노드 별 일의 양을 추정하기 위해 신경망 모델의 실제 실행 결과에 기초하여 생성된 동적 분석 데이터의 일종인 신경망 모델 동적 분석 데이터를 더 이용할 수 있다.
동작 주파수 결정기(513)는 목표 실행 시간 분배기(511)로부터 출력된 노드 별 목표 실행시간과 일의 양 추정기(512)로부터 출력된 노드 별 일의 양을 수신하여 이기종 연산 장치들, 메모리 컨트롤러 및 시스템 버스 등을 포함하는 하드웨어 장치들의 동작 주파수를 결정할 수 있다. 동작 주파수 결정기(513)가 하드웨어 장치들의 동작 주파수를 결정하기 위해, 하드웨어 장치들의 성능 및 노드 별 타겟 연산 장치 등이 더 고려될 수 있다.
DVFS부(510)는 하드웨어 장치 별로 결정된 동작 주파수에 기초하여, 하드웨어 장치들로 동작 클럭 신호를 제공함으로써 하드웨어 장치들의 동작 주파수를 제어할 수 있다. 신경망 모델 실행기(520)는 DVFS부(510)에 의해 제어되는 동작 주파수로 동작하는 하드웨어 장치들을 이용하여 신경망 모델을 실행할 수 있다. 신경망 모델 실행기(520)는 신경망 모델의 실제 실행시간을 측정 및 출력할 수 있다.
동적 분석기(515)는 하드웨어 장치들의 자원 사용률 등을 분석하고, 상기 신경망 모델의 실제 실행시간을 이용하여 신경망 모델 동작 분석 데이터 및 자원경합 동적 분석 데이터를 생성할 수 있다. 동적 분석기(515)는 신경망 모델 동적 분석 데이터를 일의 양 추정기(512)로 피드백할 수 있으며, 자원경합 동적 분석 데이터를 동작 주파수 결정기(513)로 피드백할 수 있다.
도 7 내지 도 10은 도 6을 참조하여 설명된 신경망 연산 시스템의 소프트웨어 구성들을 구체적으로 설명하기 위한 도면들이다.
도 7은 도 6을 참조하여 설명된 목표 실행시간 분배기(511)를 구체적으로 설명하기 위한 도면이다.
목표 실행시간 분배기(511)는 신경망 모델의 노드 별 일의 양에 기초하여 신경망 모델의 목표 실행시간을 복수의 노드들에 분배할 수 있다. 도 7을 참조하면, 도 3을 참조하여 설명된 신경망 모델(200)이 도시된다.
방향 비순환 그래프로 표현되는 신경망 모델(200)의 노드들(201-208)은 정해진 순서대로 실행될 수 있다. 예를 들어, 제2 노드(202)는 제1 노드(201)가 실행 완료된 후에 실행될 수 있다. 그리고, 제3 노드(203)는 제2 노드(202)가 실행 완료된 후에 실행될 수 있으며, 제4 내지 제7 노드(204-207)는 제2 노드(202)가 실행 완료된 후에 순차적으로 실행될 수 있다. 제3 노드(203)는 제4 내지 제7 노드(204-207)와 병렬로 실행될 수 있다. 그리고, 제8 노드(208)는 제3 노드(203) 및 제7 노드(207)가 실행 완료된 후에 실행될 수 있다.
노드의 실행 시간은, 타겟 연산 장치에 노드를 실행하기 위한 데이터가 메모리로부터 입력되고, 상기 데이터가 처리된 후 처리된 데이터가 상기 타겟 연산 장치에서 출력되어 메모리에 저장되기까지의 시간을 포함할 수 있다. 신경망 모델(200)의 목표 실행시간은 신경망 모델(200)의 첫번째 노드(201)의 실행이 시작될 때부터 마지막 노드(208)의 실행이 완료될 때까지의 시간을 포함할 수 있다.
신경망 모델(200)의 목표 실행시간은 사전에 결정될 수 있다. 예를 들어, 하드웨어 장치들을 제어하는 디바이스 드라이버는 신경망 모델 별 목표 실행시간을 설정할 수 있는 API(Application Programming Interface)를 제공할 수 있다. 신경망 모델 별 목표 실행시간은 API를 통해 입력될 수 있다.
목표 실행시간 분배기(511)는 도 4를 참조하여 설명된 피드포워드 제어부(301)에 포함될 수 있다. 도 7의 예에서, 목표 실행시간 분배기(511)는 목표 실행시간 10ms 이내에 모든 노드들(201-208)이 수행되도록 노드들(201-208) 각각에 목표 실행시간을 분배할 수 있다.
목표 실행시간 분배기(511)는 복수의 노드들(201-208) 및 복수의 에지들(211-218)의 연결관계에 기초하여 복수의 노드들(201-208)의 실행 순서 및 병렬적 실행 여부를 결정하고, 상기 신경망 모델의 목표 실행시간을 순차적으로 실행되는 노드들에 상기 노드 별 일의 양에 비례하여 분배함으로써 노드 별 목표 실행시간을 결정할 수 있다.
제3 노드(203)와 제4 내지 제7 노드(204-207)는 서로 병렬로 실행될 수 있다. 목표 실행시간 분배기(511)는 순차적으로 실행되는 제1 노드(201), 제2 노드(202), 제3 내지 제7 노드(203-207) 및 제8 노드(208)의 실행시간의 합이 10ms가 될 수 있도록 목표 실행시간을 노드들(201-208)에 분배할 수 있다.
예를 들어, 제1 노드(201), 제2 노드(202), 제3 내지 제7 노드(203-207) 및 제8 노드(208)의 일의 양에 비례하여 실행 시간이 7ms, 1ms, 1ms, 1ms씩 분배될 수 있다. 제3 내지 제7 노드(203-207)에 1ms의 실행시간이 분배되는 경우, 서로 병렬로 실행되는 제3 노드(203)와 제4 내지 제7 노드(204-207)에는 각각 1ms의 실행시간이 분배될 수 있다. 그리고, 제4 내지 제7 노드(204-207)에는 제4 내지 제7 노드(204-207)의 일의 양에 비례하여, 1ms의 목표 실행시간이 0.25ms씩 분배될 수 있다.
도 8은 도 6을 참조하여 설명된 일의 양 추정기(512)를 자세히 설명하기 위한 도면이다.
일의 양 추정기(512)는 일의 양 정적 추정기(5121) 및 일의 양 동적 추정기(5122)를 포함할 수 있다. 일의 양 정적 추정기(5121)는 정적 분석 데이터에 기초하여 노드 별 일의 양을 추정할 수 있으며, 도 4를 참조하여 설명된 피드포워드 제어부(301)에 포함될 수 있다. 일의 양 동적 추정기(5122)는 신경망 모델 동적 분석 데이터에 기초하여 상기 추정된 노드 별 일의 양을 조정할 수 있으며, 도 4를 참조하여 설명된 피드백 제어부(302)에 포함될 수 있다.
정적 분석 데이터는 노드 별 정적 분석 데이터 및 엣지 별 정적 분석 데이터를 포함할 수 있다. 노드 별 정적 분석 데이터에 기초하여 노드 별 타겟 연산 장치의 일의 양이 결정될 수 있으며, 엣지 별 정적 분석 데이터에 기초하여 메모리 접근의 양이 결정될 수 있다. 상기 노드 별 일의 양은 노드 별 타겟 연산 장치의 일의 양 및 메모리 접근의 양을 포함할 수 있다.
노드 별 정적 분석 데이터는 사전에 측정된 노드의 실행 시간, 노드가 실행될 타겟 연산 장치, 노드의 연산 인스트럭션(arithmetic instruction) 개수, 노드의 메모리 인스트럭션(memory instruction) 개수, 및 컴파일러의 최적화 옵션 등을 포함할 수 있다. 노드의 연산 인스트럭션 개수, 메모리 인스트럭션 개수는 상기 노드가 포함하는 소스 코드들을 분석함으로써 결정될 수 있다. 상기 소스 코드들을 타겟 연산 장치가 실행할 수 있는 기계어로 변환하는 컴파일러의 최적화 옵션에 따라, 상기 타겟 연산 장치의 일의 양이 추정될 수 있다.
엣지 별 정적 분석 데이터는 사전에 측정된 메모리 대역폭 요구량, 노드의 입력 데이터의 크기 및 노드의 출력 데이터의 크기를 포함할 수 있다. 메모리 대역폭 요구량은 상기 메모리 인스트럭션 개수, 노드의 입력 데이터의 크기 및 출력 데이터의 크기에 기초하여 결정될 수 있다. 예를 들어, 입력 데이터의 크기 또는 출력 데이터의 크기가 동일한 서로 다른 노드들에서, 노드의 메모리 인스트럭션 개수가 많을수록 메모리 대역폭 요구량이 커질 수 있다. 엣지 별 정적 분석 데이터에 기초하여, 상기 엣지에 연결된 노드들을 실행하기 위해 메모리 접근의 양이 추정될 수 있다. 메모리 접근의 양은 메모리 컨트롤러의 일의 양 및 시스템 버스의 일의 양을 포함할 수 있다.
노드 별 일의 양은, 노드 별 정적 분석 데이터에 기초하여 결정되는 타겟 연산 장치의 일의 양, 그리고 엣지 별 정적 분석 데이터에 기초하여 결정되는 메모리 컨트롤러와 시스템 버스에서 수행될 일의 양을 포함할 수 있다.
정적 분석 데이터에 기초하여 일의 양 정적 추정기(5121)에서 추정된 노드 별 일의 양에는 오차가 있을 수 있다. 예를 들어, 신경망 모델(200)에서 노드들의 연결관계에 따라 동일한 타겟 연산 장치에서 병렬로 실행되는 노드들이 있을 수 있다. 따라서, 타겟 연산 장치, 메모리 컨트롤러 및 시스템 버스 등에서 노드 별 정적 분석 데이터 및 엣지 별 정적 분석 데이터에 기초하여 예상하지 못한 오버헤드가 발생할 수 있다.
일의 양 동적 추정기(5122)는 신경망 모델 동적 분석 데이터에 기초하여 상기 노드 별 일의 양을 조정할 수 있다. 신경망 모델 동적 분석 데이터는 신경망 모델의 실제 실행시간, 신경망 모델의 실제 메모리 대역폭 사용량, 신경망 모델의 실제 시스템 버스 대역폭 사용량, 노드 별 실제 실행시간, 노드 간의 통신 오버헤드 등을 포함할 수 있다.
도 9는 도 6을 참조하여 설명된 동작 주파수 결정기(513)를 상세히 나타내는 도면이다.
동작 주파수 결정기(513)는 이기종 연산 장치들의 동작 주파수를 결정하는 이기종 연산 장치 동작 주파수 결정기(5131), 메모리 컨트롤러의 동작 주파수를 결정하는 메모리 컨트롤러 동작 주파수 결정기(5132) 및 시스템 버스의 동작 주파수를 결정하는 시스템 버스 동작 주파수 결정기(5133)를 포함할 수 있다.
동작 주파수 결정기(513)는 노드 별 목표 실행시간, 노드 별 일의 양, 하드웨어 성능 및 자원경합 동적 분석 데이터에 기초하여 이기종 연산 장치들, 메모리 컨트롤러 및 시스템 버스를 비롯한 하드웨어 장치들의 동작 주파수를 결정할 수 있다.
동작 주파수 결정기(513)는 일의 양 추정기(512)로부터 획득된 노드 별 일의 양에 기초하여 신경망 모델을 수행하기 위해 하드웨어 장치 별로 요구되는 일의 양을 결정할 수 있다. 앞서 설명된 바와 같이, 노드 별 일의 양은 타겟 연산 장치의 일의 양과 메모리 컨트롤러 및 시스템 버스의 일의 양을 포함할 수 있다. 노드들의 일의 양을 하드웨어 장치 별 일의 양으로 분해하고, 하드웨어 장치 별로 분해된 일의 양을 합함으로써 신경망 모델을 수행하기 위해 하드웨어 장치 별 일의 양을 결정할 수 있다.
그리고, 동작 주파수 결정기(513)는 목표 실행시간 분배기(511)로부터 획득된 노드 별 목표 실행시간에 기초하여 하드웨어 장치 별 목표 실행 시간을 결정할 수 있다. 그리고, 동작 주파수 결정기(513)는 하드웨어 성능, 하드웨어 장치 별 일의 양, 하드웨어 장치 별 목표 실행 시간에 기초하여 하드웨어 장치 별로 최적 동작 주파수를 결정할 수 있다.
하드웨어 장치의 소비 전력량은 상기 하드웨어 장치의 동작 주파수의 제곱에 비례할 수 있다. 즉, 하드웨어 장치의 동작 주파수가 낮아질수록 하드웨어 장치의 소비 전력량은 낮아질 수 있다. 따라서, 하드웨어 장치들 각각이 목표 실행 시간에 맞춰서 정해진 일의 양을 수행할 수 있는 동작 주파수들 중 최저의 동작 주파수를 최적 동작 주파수로 결정할 수 있다. 하드웨어 장치들 각각이 최적 동작 주파수에서 동작하는 경우, 신경망 모델의 목표 실행 시간을 준수하면서 하드웨어 장치들의 소비 전력량이 최소화될 수 있다.
동작 주파수 결정기(513)는 노드 별 일의 양, 노드 별 목표 실행시간 및 하드웨어 성능에 기초하여 결정된 하드웨어 장치들의 동작 주파수를, 상기 하드웨어 장치들의 자원경합을 고려하여 조정할 수 있다. 하드웨어 장치들의 자원경합은, 어떤 신경망 모델과 동시에 실행되는 다른 신경망 모델이나 기타 어플리케이션과의 관계에서 발생할 수 있다. 자원경합 동적 분석 데이터는 신경망 모델을 실제로 실행한 결과를 분석하여 얻어질 수 있다.
상기 자원경합 동적 분석 데이터는 신경망 모델을 실행할 때 하드웨어 장치들에서 발생하는 자원경합의 정도를 나타낼 수 있다. 동작 주파수 결정기(513)는 상기 자원경합의 정도에 따라, 하드웨어 장치 별 동작 주파수를 상향 조정 또는 하향 조정할 수 있다.
예를 들어, 어떤 하드웨어 장치의 사용률에서 신경망 모델이 차지하는 사용률이 상대적으로 낮다면, 다른 어플리케이션과의 자원경합이 상대적으로 자주 발생하는 것으로 예측될 수 있다. 자원경합이 자주 발생하는 경우 상기 하드웨어 장치가 상기 신경망 모델의 정적 데이터에 기초하여 예측된 동작 주파수로 동작하더라도 상기 신경망 모델이 목표 실행시간 내에 실행되기 어려울 수 있다. 따라서, 자원경합이 자주 발생하는 경우 상기 하드웨어 장치의 동작 주파수를 상향 조정할 수 있다.
도 10은 도 6을 참조하여 설명된 동적 분석기(514)를 자세히 설명하기 위한 도면이다.
동적 분석기(514)는 신경망 모델 분석기(5141) 및 시스템 분석기(5142)를 포함할 수 있다. 신경망 모델 분석기(5141)는 신경망 모델의 실제 실행시간 및 상기 신경망 모델의 실행 결과에 의존하는 동적 데이터에 기초하여 신경망 모델 동적 분석 데이터를 생성 및 출력할 수 있다. 마찬가지로, 시스템 분석기(5142)는 상기 실제 실행시간 및 상기 동적 데이터에 기초하여 자원경합 동적 분석 데이터를 생성하 출력할 수 있다. 신경망 모델 동적 분석 데이터의 예들은 도 8을 참조하여 설명되었다.
자원경합 동적 분석 데이터는 이기종 연산 장치들의 자원경합, 메모리 컨트롤러 자원경합 및 시스템 버스 자원경합 동적 분석 데이터를 포함할 수 있다. 이기종 연산 장치들의 자원경합 동적 분석 데이터는, 연산 장치들의 전체 사용률, 연산 장치들에서 신경망 모델이 차지하는 사용률, 연산 장치들의 리퀘스트 큐의 지연 시간 등을 포함할 수 있다.
메모리 컨트롤러 자원경합 동적 분석 데이터는, 메모리 컨트롤러의 전체 사용률, 이기종 연산 장치 별 메모리 사용률, 이기종 연산 장치 별 메모리 접근 횟수, 그리고 프론트/백 캐시, L1 캐시, L2 캐시, L3 캐시 및 LLC(Last Level Cache) 각각의 캐시 히트/미스 비율, 대기 중인 메모리 리퀘스트 개수(the number of outstanding memory requests) 등을 포함할 수 있다.
시스템 버스 자원경합 동적 분석 데이터에는 시스템 버스의 전체 사용률, 이기종 연산 장치 별 시스템 버스 사용률 및 이기종 연산 장치 별 버스 접근 횟수 등이 포함될 수 있다.
한편, 신경망 모델이 실행될 때마다 신경망 모델 동적 분석 데이터 및 자원경합 동적 분석 데이터는 누적될 수 있다. 동적 분석기(514)는 평균값 연산, 누적 평균 연산, 단순 이동 평균 연산, 가중 이동 평균 연산, 지수 이동 평균 연산 등을 이용하여 누적된 데이터를 가공할 수 있다.
도 6 내지 도 10을 참조하여 설명된 신경망 연산 시스템의 시스템 소프트웨어 계층은 개방 루프 제어 및 폐쇄 루프 제어를 수행함으로써, 신경망 모델이 실행될 때의 하드웨어 장치별 동작 주파수를 제어할 수 있다. 시스템 소프트웨어 계층은 신경망 모델별 목표 수행시간을 달성하면서, 하드웨어 장치들의 전력 소모량을 최소화할 수 있다.
도 11은 본 발명의 실시 예에 따른 신경망 모델 실행 방법을 나타내는 도면이다.
단계 S11에서, 신경망 모델의 실행이 트리거될 수 있다. 예를 들어, 사용자의 선택에 의해 카메라 어플리케이션이 실행되면, 객체를 감지하는 신경망 모델의 실행이 트리거될 수 있다.
단계 S12에서, 상기 신경망 모델의 노드 별 일의 양이 추정될 수 있다. 도 8을 참조하여 설명된 것과 같이, 노드 별 일의 양은 노드 별 소스 코드 등의 정적 데이터를 분석함으로써 추정될 수 있고, 신경망 모델의 실제 실행 결과에 기초하여 조정될 수 있다.
단계 S13에서, 상기 신경망 모델의 노드 별 목표 실행시간이 결정될 수 있다. 도 7을 참조하여 설명된 것과 같이, 노드 별 목표 실행시간은 노드들의 연결구조, 상기 노드 별 일의 양에 기초하여 신경망 모델의 목표 실행시간을 노드들에 분배함으로써 결정될 수 있다.
단계 S14에서, 하드웨어 장치 별 동작 주파수가 결정될 수 있다. 도 9를 참조하여 설명된 것과 같이, 하드웨어 장치 별 동작 주파수는 노드 별 목표 실행시간, 노드 별 일의 양 및 하드웨어 성능에 기초하여 결정될 수 있으며, 신경망 모델의 실제 실행결과에 따른 자원경합 동적 분석 데이터에 기초하여 조정될 수 있다.
단계 S15에서, 상기 결정된 동작 주파수에 따라 하드웨어 장치들의 동작 주파수가 설정될 수 있다.
단계 S16에서, 상기 설정된 동작 주파수로 동작하는 하드웨어 장치들을 이용하여 신경망 모델을 실행할 수 있다.
단계 S17에서, 상기 신경망 모델의 실행이 완료되면, 상기 설정된 동작 주파수를 해제할 수 있다. 상기 설정된 동작 주파수를 해제하는 것은, 하드웨어 장치들의 동작 주파수를 초기화하거나, 상기 동작 주파수를 상기 신경망 모델이 실행되기 이전의 동작 주파수로 되돌리는 것 등을 포함할 수 있다. 구현에 따라, 도 6을 참조하여 설명된 신경망 모델 실행부(520)가 상기 동작 주파수를 해제할 수 있다.
단계 S18에서, 상기 신경망 모델의 실제 실행시간이 피드백될 수 있다. 상기 신경망 모델의 실제 실행시간에 기초하여 설정된 동작 주파수가 조정될 수 있다. 조정된 동작 주파수는, 이후에 동일한 신경망 모델의 실행이 트리거될 때 이용될 수 있다.
본 발명의 실시 예에 따르면, 신경망 모델의 실행이 트리거되면 상기 신경망 모델의 목표 실행시간 및 정적 분석 데이터를 이용하는 개방 루프 제어를 수행함으로써 하드웨어 장치 별 동작 주파수를 제어할 수 있다. 따라서, 사용자 응답성이 개선될 수 있다.
본 발명의 실시 예에 따르면, 신경망 모델의 목표 실행시간은 노드 별 목표 실행시간으로 분해될 수 있으며, 정적 분석 데이터에 기초하여 노드 별 일의 양이 추정될 수 있다. 노드 별 목표 실행시간 내에 노드 별 일의 양을 처리할 수 있는 하드웨어 장치 별 최적 동작 주파수가 결정될 수 있다.
본 발명의 실시 예에 따르면, 신경망 모델의 실행 결과에 기초하여 폐쇄 루프 제어를 수행함으로써 하드웨어 장치 별 동작 주파수가 조정될 수 있다. 신경망 모델을 처리하기 위해 하드웨어 장치들 각각이 최적 동작 주파수로 동작할 수 있으므로, 전력 소모량이 절감되면서도 신경망 모델의 목표 실행시간을 준수할 수 있다.
도 12는 본 발명의 실시 예에 따른 신경망 연산 시스템이 적용된 전자 장치를 나타내는 도면이다.
도 12를 참조하면, 모바일 시스템(1000)은 카메라(1100), 디스플레이(1200), 오디오 처리부(1300), 모뎀(1400), DRAM(1500a, 1500b), 플래시 메모리 장치(1600a, 1600b), I/O 디바이스(1700a, 1700b), 및 어플리케이션 프로세서(Application Processor, 이하 "AP")(1800)를 포함할 수 있다.
모바일 시스템(1000)은 랩탑(laptop) 컴퓨터, 휴대용 단말기, 스마트폰, 태블릿 PC, 웨어러블 기기, 헬스케어 기기, 또는 IoT(Internet-of-Things) 기기로 구현될 수 있다. 또한, 모바일 시스템(1000)은 서버, 또는 개인용 컴퓨터로 구현될 수도 있다.
카메라(1100)는 사용자의 제어에 따라 정지 영상 또는 동영상을 촬영할 수 있다. 모바일 시스템(1000)은 카메라(1100)로 촬영한 정지 영상/동영상을 이용하여 특정 정보를 획득하거나, 정지 영상/동영상을 문자 등과 같은 다른 형태의 데이터로 변환하여 저장할 수 있다. 또는, 모바일 시스템(1000)은 카메라(1100)로 촬영한 정지 영상/동영상에 포함되는 문자열을 인식하여 해당 문자열에 대응하는 텍스트나 오디오 번역본을 제공할 수도 있다. 이와 같이 모바일 시스템(1000)에서 카메라(1100)의 활용 분야는 점점 다양해지는 추세이다. 일 실시예에서, 카메라(1100)는 MIPI 표준에 따른 D-Phy 또는 C-Phy 인터페이스에 따라 정지 영상/동영상 등의 데이터를 AP(1800)로 전송할 수 있다.
디스플레이(1200)는 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diodes) 디스플레이, AM-OLED(Active-Matrix Organic Light-Emitting Diode), PDP(Plasma Display Panel), FED(Field Emission Display), 전자 종이 등과 같은 다양한 형태로 구현될 수 있다. 일 실시예에서 디스플레이(1200)는 터치스크린 기능을 제공하여 모바일 시스템(1000)의 입력장치로도 사용될 수 있다. 또한, 디스플레이(1200)는 지문 센서 등과 일체로 제공되어 모바일 시스템(1000)의 보안 기능을 제공할 수도 있다. 일 실시예에서, AP(1800)는, MIPI 표준에 따른 D-Phy 또는 C-Phy 인터페이스에 따라 디스플레이(1200)에 표시하고자 하는 영상 데이터를 디스플레이(1200)로 전송할 수 있다.
오디오 처리부(1300)는 플래시 메모리 장치(1600a, 1600b)에 저장된 오디오 데이터나 모뎀(1400) 또는 I/O 디바이스(1700a, 1700b) 등을 통해 외부에서 수신한 컨텐츠에 포함되는 오디오 데이터를 처리할 수 있다. 예를 들어, 오디오 처리부(1300)는 오디오 데이터에 대한 코딩/디코딩, 증폭, 노이즈 필터링 등과 같은 다양한 처리를 수행할 수 있다.
모뎀(1400)은 유/무선데이터 송수신을 위하여 신호를 변조하여 송신하는 한편, 외부로부터 수신한 신호를 복조하여 원래 신호를 복구할 수 있다. I/O 디바이스(1700a, 1700b)는 디지털 입출력을 제공하는 장치로서, 외부의 기록 매체와 연결 가능한 포트(port), 터치 스크린이나 기계식 버튼 키 등과 같은 입력 장치, 햅틱 등의 방식으로 진동을 출력할 수 있는 출력 장치 등을 포함할 수 있다. 일부 예에서, I/O 디바이스(1700a, 1700b)는 USB, 라이트닝 케이블, SD 카드, 마이크로 SD 카드, DVD, 네트워크 어댑터 등과 같은 포트를 통해 외부의 기록 매체와 연결될 수 있다.
AP(1800)는 모바일 시스템(1000)의 전반적인 동작을 제어할 수 있다. 구체적으로, AP(1800)는 플래시 메모리 장치(1600a, 1600b)에 저장된 컨텐츠의 일부가 화면에 표시되도록 디스플레이(1200)를 제어할 수 있다. 또한, AP(1800)는 I/O 디바이스(1700a, 1700b) 등을 통해 사용자 입력이 수신되면, 사용자 입력에 대응하는 제어 동작을 수행할 수 있다.
AP(1800)는 응용 프로그램, 운영 체제(Operating System, OS) 등을 구동하는 시스템 온 칩(System-on-Chip, 이하 "SoC")으로 제공될 수 있다. 또한, AP(1800)는 모바일 시스템(1000)에 포함되는 다른 장치들, 예를 들어 DRAM(1500a), 플래시 메모리(1620) 및/또는 메모리 컨트롤러(1610)등과 하나의 반도체 패키지에 포함될 수도 있다. 예를 들어, PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지 형태로, AP(1800)와 다른 적어도 하나의 장치가 제공될 수 있다. AP(1800)상에서 구동되는 운영 체제의 커널(Kernel)에는 입출력 스케줄러(I/O Scheduler) 및 플래시 메모리 장치(1600a, 1600b)를 제어하기 위한 장치 드라이버(Device Driver)가 포함될 수 있다. 장치 드라이버는 입출력 스케줄러에서 관리되는 동기 큐의 수를 참조하여 플래시 메모리 장치(1600a, 1600b)의 액세스 성능을 제어하거나, SoC 내부의 CPU 모드, DVFS(Dynamic Voltage and Frequency Scaling) 레벨 등을 제어할 수 있다.
일 실시예에서, AP(1800)는 연산을 실행하거나, 응용 프로그램 및/또는 운영 체제를 구동하는 프로세서 블록, 프로세서 블록과 시스템 버스를 통해 연결되는 다른 다양한 주변 구성 요소들을 포함할 수 있다. 주변 구성 요소들에는 메모리 컨트롤러, 내부 메모리, 전원 관리 블록, 에러 검출 블록, 모니터링 블록 등이 포함될 수 있다. 프로세서 블록은 하나 이상의 코어를 포함할 수 있으며, 프로세서 블록에 복수의 코어들이 포함되는 경우 코어들 각각은 캐시 메모리를 포함하고, 코어들이 공유하는 공통 캐시가 프로세서 블록에 포함될 수 있다.
일 실시예에서, AP(1800)는 AI 데이터 연산을 위한 전용 회로인 Accelerator 블록(1820)을 포함할 수도 있다. 또는, 실시예들에 따라, 별도의 Accelerator 칩이 AP(1800)와 분리되어 제공될 수도 있으며, Accelerator 블록(1820) 또는 Accelerator 칩에는 DRAM(1500b)이 추가로 연결될 수 있다. Accelerator 블록(1820)은 AP(1800)의 특정 기능을 전문적으로 수행하는 기능 블록으로서, 그래픽 데이터 처리를 전문적으로 수행하는 기능블럭인 GPU(Graphics Processing Unit), AI 계산과 인퍼런스(Inference)를 전문적으로 수행하기 위한 블럭인 NPU(Neural Processing Unit), 데이터 전송을 전문적으로 하는 블록인 DPU(Data Processing Unit) 등을 포함할 수 있다.
실시예에 따라, 모바일 시스템(1000)은 복수의 DRAM(1500a, 1500b)을 포함할 수 있다. 일 실시예에서, AP(1800)는 DRAM(1500a, 1500b)을 제어하기 위한 컨트롤러(1810)를 포함할 수 있고, DRAM(1500a)은 AP(1800)와 직접 연결될 수 있다.
AP(1800)는 JEDEC 표준 규격에 맞는 커맨드와 모드 레지스터 셋(Mode Register Set: MRS)을 설정하여 DRAM을 제어하거나, 저전압/고속/신뢰성 등 모바일 시스템(1000)에서 요구하는 스펙과 기능 및 CRC/ECC를 위한 DRAM 인터페이스 규약을 설정하여 통신할 수 있다. 예를 들어, AP(1800)는 LPDDR4, LPDDR5 등의 JEDEC표준 규격에 맞는 인터페이스로 DRAM(1500a)과 통신할 수 있다. 또는, AP(1800)는 Accelerator 블록(1820) 또는 AP(1800)와 별도로 마련되는 Accelerator 칩이 DRAM(1500a)보다 높은 대역폭을 가지는 Accelerator용 DRAM(1500b)을 제어하기 위하여 새로운 DRAM 인터페이스 규약을 설정하여 통신할 수도 있다.
도 31에서는 DRAM(1500a, 1500b)만을 도시하였으나, 모바일 시스템(1000)의 구성이 반드시 이와 같은 형태로 한정되는 것은 아니며, AP(1800)나 Accelerator 블록(1820)의 대역폭과 반응 속도, 전압 조건에 따라 DRAM(1500a, 1500b)이 아닌 다른 메모리들도 모바일 시스템(1000)에 포함될 수 있다. 일례로, 컨트롤러(1810) 및/또는 Accelerator 블록(1820)은 PRAM이나 SRAM, MRAM, RRAM, FRAM, Hybrid RAM등과 같은 다양한 메모리들을 제어할 수 있다. DRAM(1500a, 1500b)은 I/O 디바이스(1700a, 1700b)나 플래시 메모리 장치(1600a, 1600b)보다 상대적으로 작은 레이턴시(latency)와 높은 대역폭(bandwidth)을 가지고 있다. DRAM(1500a, 1500b)은 모바일 시스템(1000)의 파워 온 시점에 초기화될 수 있으며, 운영 체제와 어플리케이션 데이터가 로딩되면 운영 체제와 어플리케이션 데이터의 임시 저장 장소로 사용되거나 각종 소프트웨어 코드의 실행 공간으로 사용될 수 있다.
DRAM(1500a, 1500b) 내에서는 더하기/빼기/곱하기/나누기 사칙연산과 벡터 연산, 어드레스 연산, 또는 FFT 연산 데이터가 저장될 수 있다. 또 다른 실시예로 DRAM(1500a, 1500b)은 연산기능을 탑재한 PIM(Processing in memory)로 제공될 수도 있다. 일례로 DRAM(1500a, 1500b) 내에서 인퍼런스(inference)에 사용되는 수행을 위한 함수기능(function)이 수행될 수 있다. 여기서, 인퍼런스는 인공 신경망(artificial neural network)을 이용한 딥러닝 알고리즘에서 수행될 수 있다. 딥러닝 알고리즘은 다양한 데이터를 통해 모델을 학습하는 트레이닝(training) 단계와 학습된 모델로 데이터를 인식하는 인퍼런스 단계를 포함할 수 있다. 예를 들어, 인퍼런스에 사용되는 함수는 쌍곡선 탄젠트(hyperbolic tangent) 함수, 시그모이드(sigmoid) 함수, ReLU(Rectified Linear Unit) 함수 등을 포함할 수 있다.
실시예로서, 사용자가 카메라(1100)를 통해 촬영한 이미지는 신호처리되어 DRAM(1500b) 내에 저장될 수 있으며, Accelerator 블록(1820) 또는 Accelerator 칩은 DRAM(1500b)에 저장된 데이터와 인퍼런스에 사용되는 함수를 이용하여 데이터를 인식하는 AI 데이터 연산을 수행할 수 있다.
실시예에 따라, 모바일 시스템(1000)은 DRAM(1500a, 1500b)보다 큰 용량을 가진 복수의 스토리지 또는 복수의 플래시 메모리 장치(1600a, 1600b)를 포함할 수 있다. 플래시 메모리 장치(1600a, 1600b)는 컨트롤러(1610)와 플래시 메모리(1620)를 포함할 수 있다. 컨트롤러(1610)는 AP(1800)로부터 제어 커맨드와 데이터 등을 수신하며, 제어 커맨드에 응답하여 플래시 메모리(1620)에 데이터를 기록하거나, 플래시 메모리(1620)에 저장된 데이터를 읽어와서 AP(1800)에 전송할 수 있다.
실시예에 따라 Accelerator 블록(1820) 또는 Accelerator 칩은 플래시 메모리 장치(1600a, 1600b)를 이용하여 트레이닝(training) 단계와 AI 데이터 연산을 수행할 수 있다 일 실시예로 플래시 메모리 장치(1600a, 1600b)의 내부에 소정의 연산을 실행할 수 있는 블록이 구현될 수 있으며, 해당 블록은 플래시 메모리(1620)에 저장된 데이터를 이용하여 AP(1800) 및/또는 Accelerator 블록(1820)이 수행하는 트레이닝(training) 단계와 인퍼런스 AI 데이터 연산 중 적어도 일부를 대신 실행할 수도 있다.
일 실시예에서, AP(1800)는 인터페이스(1830)를 포함할 수 있고, 이에 따라, 플래시 메모리 장치(1600a, 1600b)는 AP(1800)와 직접 연결될 수 있다. 예를 들어, AP(1800)는 SoC로 구현될 수 있고, 플래시 메모리 장치(1600a)는 AP(1800)와 다른 별도의 칩으로 구현될 수 있으며, AP(1800)와 플래시 메모리 장치(1600a)는 하나의 패키지(package)에 탑재될 수 있다. 그러나, 본 발명의 실시예들은 이에 한정되지 않으며, 복수의 플래시 메모리 장치(1600a, 1600b)는 커넥션(connection)을 통하여 모바일 시스템(1000)에 전기적으로 연결될 수 있다.
플래시 메모리 장치(1600a, 1600b)는 카메라(1100)가 촬영한 정지 영상/동영상 등의 데이터를 저장하거나, 통신 네트워크 및/또는 I/O 디바이스(1700a, 1700b)에 포함된 포트 등을 통해 수신한 데이터를 저장할 수 있다. 예를 들어, 증강 현실(Augmented Reality)/가상 현실(Virtual Reality), HD(High Definition) 또는 UHD(Ultra High Definition) 컨텐츠를 저장할 수 있다.
본 발명의 실시 예에 따르면, AP(1800)는 카메라(1100)를 추상화하여 사용자가 카메라(1100)를 사용할 수 있도록 하는 카메라 어플리케이션을 구동할 수 있다. AP(1800)는 상기 카메라 어플리케이션이 실행되는 동시에, 상기 카메라 어플리케이션에 의해 생성된 이미지 프레임에서 객체를 감지하는 신경망 모델, 상기 객체가 무엇인지 결정하는 신경망 모델 등을 구동할 수 있다.
본 발명의 실시 예에 따르면, AP(1800)는 다양한 신경망 모델 각각에 대해서, 신경망 모델별 목표 실행시간에 기초하여 하드웨어 장치들 각각의 동작 주파수를 제어할 수 있다. 따라서, 모바일 시스템(1000)은 신경망 모델별 목표 실행시간을 준수하면서 소비 전력량을 절감할 수 있다.
본 발명은 상술한 실시형태 및 첨부된 도면에 의해 한정되는 것이 아니며 첨부된 청구범위에 의해 한정하고자 한다. 따라서, 청구범위에 기재된 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 당 기술분야의 통상의 지식을 가진 자에 의해 다양한 형태의 치환, 변형 및 변경이 가능할 것이며, 이 또한 본 발명의 범위에 속한다고 할 것이다.
100, 300, 400: 신경망 연산 시스템
200: 신경망 모델
500: 시스템 소프트웨어 계층
1000: 모바일 시스템

Claims (20)

  1. 신경망 연산 시스템에 있어서,
    신경망 모델을 실행하는 복수의 이기종 연산 장치들을 포함하는 프로세서;
    상기 신경망 모델의 입력 데이터 및 출력 데이터를 버퍼링하는 메모리;
    상기 메모리의 데이터 입출력을 제어하는 메모리 컨트롤러; 및
    상기 프로세서와 상기 메모리 컨트롤러 간 통신을 지원하는 시스템 버스를 포함하고,
    상기 프로세서는
    상기 신경망 모델의 목표 실행시간에 기초하여 상기 신경망 모델에 포함되는 복수의 노드들의 노드 별 목표 실행시간을 결정하고, 상기 복수의 노드들 각각이 실행될 노드 별 타겟 연산 장치, 상기 노드 별 일의 양 및 상기 노드 별 목표 실행시간에 기초하여 상기 복수의 이기종 연산 장치들, 상기 메모리 컨트롤러 및 상기 시스템 버스를 포함하는 복수의 하드웨어 장치들의 동작 주파수를 각각 제어하고, 상기 제어된 동작 주파수로 동작하여 상기 신경망 모델을 실행하는
    신경망 연산 시스템.
  2. 제1항에 있어서,
    상기 프로세서는
    상기 신경망 모델의 실제 실행시간에 기초하여 상기 노드 별 일의 양 및 상기 노드 별 목표 실행시간을 조정하고, 상기 조정된 노드 별 일의 양 및 상기 노드 별 목표 실행시간에 기초하여 상기 복수의 하드웨어 장치들 각각의 동작 주파수를 조정하는
    신경망 연산 시스템.
  3. 제1항에 있어서,
    상기 프로세서는
    상기 신경망 모델에 포함되는 상기 복수의 노드들 및 복수의 에지들의 연결관계에 기초하여 상기 복수의 노드들의 실행 순서 및 병렬적 실행 여부를 결정하고, 상기 신경망 모델의 목표 실행시간을 순차적으로 실행되는 노드들에 상기 노드 별 일의 양에 비례하여 분배함으로써 상기 노드 별 목표 실행시간을 결정하는
    신경망 연산 시스템.
  4. 제1항에 있어서,
    상기 프로세서는
    상기 복수의 노드들 각각의 연산 인스트럭션 개수, 메모리 인스트럭션 개수, 컴파일러의 옵션, 메모리 대역폭 요구량, 상기 노드 별 입력 데이터의 크기 및 상기 노드 별 출력 데이터의 크기에 기초하여 상기 노드 별 일의 양을 결정하는
    신경망 연산 시스템.
  5. 제4항에 있어서,
    상기 복수의 노드들 각각의 연산 인스트럭션 개수 및 메모리 인스트럭션 개수는 상기 복수의 노드들 각각이 포함하는 소스 코드들을 분석함으로써 결정되는
    신경망 연산 시스템.
  6. 제4항에 있어서,
    상기 메모리 대역폭 요구량은 상기 메모리 인스트럭션 개수, 상기 노드 별 입력 데이터의 크기 및 상기 노드 별 출력 데이터의 크기에 기초하여 결정되는
    신경망 연산 시스템.
  7. 제4항에 있어서,
    상기 노드 별 일의 양은
    상기 복수의 노드들 각각의 연산 인스트럭션 개수, 메모리 인스트럭션 개수, 컴파일러의 옵션에 기초하여 결정되는 상기 타겟 연산 장치의 일의 양, 및
    메모리 대역폭 요구량, 입력 데이터의 크기 및 출력 데이터의 크기에 기초하여 결정되는 메모리 접근의 양을 포함하는
    신경망 연산 시스템.
  8. 제7항에 있어서,
    상기 프로세서는
    노드 별 상기 타겟 연산 장치의 일의 양에 기초하여 상기 신경망 모델을 실행하기 위해 요구되는 상기 이기종 연산 장치의 일의 양을 결정하며, 상기 노드 별 메모리 접근의 양에 기초하여 상기 신경망 모델을 실행하기 위해 요구되는 상기 메모리 컨트롤러의 일의 양 및 시스템 버스의 일의 양을 결정하는
    신경망 연산 시스템.
  9. 제8항에 있어서,
    상기 프로세서는
    상기 신경망 모델의 하드웨어 장치 별 성능 및 상기 하드웨어 장치 별 일의 양에 기초하여, 상기 하드웨어 장치 별로 선택될 수 있는 복수의 동작 주파수들 중 상기 노드 별 목표 실행시간을 준수할 수 있는 최저(minimum) 동작 주파수를 결정하고, 상기 결정된 하드웨어 장치 별 최저 동작 주파수에 기초하여 상기 하드웨어 장치들의 동작 주파수를 각각 제어하는
    신경망 연산 시스템.
  10. 제1항에 있어서,
    상기 복수의 이기종 연산 장치들은
    CPU(Central Processing Unit), NPU(Neural Processing Unit), GPU(Graphic Processing Unit), 및 DSP(Digital Signal Processor) 및 가속기를 포함하는
    신경망 연산 시스템.
  11. 제1항에 있어서,
    상기 프로세서는
    상기 신경망 모델의 목표 실행시간을 API(Application Programming Interface)를 통해 입력 받는
    신경망 연산 시스템.
  12. 신경망 연산 시스템에 있어서,
    신경망 모델을 실행하는 복수의 이기종 연산 장치들을 포함하는 프로세서;
    상기 신경망 모델의 입력 데이터 및 출력 데이터를 버퍼링하는 메모리;
    상기 메모리의 데이터 입출력을 제어하는 메모리 컨트롤러; 및
    상기 프로세서와 상기 메모리 컨트롤러 간 통신을 지원하는 시스템 버스를 포함하고,
    상기 프로세서는
    상기 신경망 모델의 목표 실행시간을 포함하여 상기 신경망 모델의 실행 결과에 독립적인 정적 분석 데이터를 입력으로 하여 상기 복수의 이기종 연산 장치들, 상기 메모리 및 상기 메모리 컨트롤러를 포함하는 하드웨어 장치들 각각의 동작 주파수를 결정하는 피드포워드 제어부,
    상기 결정된 동작 주파수에 따라 상기 하드웨어 장치들을 제어하고, 상기 신경망 모델을 실행하며, 상기 신경망 모델의 실제 실행시간을 출력하는 신경망 모델 실행부, 및
    상기 실제 실행시간을 포함하여 상기 신경망 모델의 실행 결과에 의존하는 동적 분석 데이터에 기초하여 상기 하드웨어 장치들 각각의 동작 주파수를 조정하는 피드백 제어부를 구동하는
    신경망 연산 시스템.
  13. 제12항에 있어서,
    상기 피드백 제어부는
    상기 신경망 모델이 실행되는 동안의 상기 하드웨어 자원들 각각의 사용률을 분석함으로써 상기 신경망 모델과 동시에 실행되는 어플리케이션과의 자원경합의 정도를 결정하고, 상기 자원경합의 정도에 기초하여 상기 하드웨어 장치들 각각의 동작 주파수를 조정하는
    신경망 연산 시스템.
  14. 제13항에 있어서,
    상기 피드백 제어부는
    상기 하드웨어 자원들 각각의 사용률 중 상기 신경망 모델이 차지하는 사용률이 낮을수록, 상기 하드웨어 자원들 각각의 동작 주파수를 더욱 크게 조정하는
    신경망 연산 시스템.
  15. 제13항에 있어서,
    상기 신경망 연산 시스템은 카메라를 더 포함하고,
    상기 어플리케이션은 상기 카메라를 이용하여 이미지 프레임을 생성하는 카메라 어플리케이션이며,
    상기 신경망 모델은 상기 이미지 프레임에서 객체를 감지하기 위한 모델, 상기 객체가 무엇인지 식별하기 위한 모델 중 적어도 어느 하나인
    신경망 연산 시스템.
  16. 제12항에 있어서,
    상기 피드백 제어부는
    상기 신경망 모델이 반복 실행될 때마다 생성되는 동적 분석 데이터를 누적하고, 상기 동적 분석 데이터의 평균 연산, 누적 평균 연산, 단순 이동 평균 연산, 가중 이동 평균 연산 및 지수 이동 평균 연산 중 어느 하나를 이용하여 상기 누적된 데이터를 가공하는
    신경망 연산 시스템.
  17. 제12항에 있어서,
    상기 피드포워드 제어부는
    상기 신경망 모델에 포함된 복수의 노드들에 대해서, 상기 정적 분석 데이터를 이용하여 노드 별 타겟 연산 장치의 일의 양 및 노드 별 메모리 접근의 양을 추정하고, 상기 신경망 모델의 목표 실행 시간에 기초하여 상기 노드 별 목표 실행시간을 결정하며, 상기 노드 별 타겟 연산 장치의 일의 양에 기초하여 상기 이기종 연산 장치들의 일의 양을 추정하고, 상기 노드 별 메모리 접근의 양에 기초하여 상기 메모리 컨트롤러와 시스템 버스의 일의 양을 추정하며, 상기 하드웨어 장치들 각각의 성능에 기초하여 상기 하드웨어 장치들 각각의 동작 주파수를 결정하는
    신경망 연산 시스템.
  18. 제17항에 있어서,
    상기 피드포워드 제어부는
    상기 하드웨어 장치들 각각이 가질 수 있는 동작 주파수들 중에서, 상기 노드 별 목표 실행시간을 준수할 수 있으면서 전력 소비가 최소화될 수 있는 동작 주파수를 상기 하드웨어 장치들 각각의 동작 주파수로 결정하는
    신경망 연산 시스템.
  19. 제12항에 있어서,
    상기 신경망 모델 실행부는
    상기 신경망 모델의 실행이 완료되면 상기 하드웨어 장치들 각각의 동작 주파수를 해제하는
    신경망 연산 시스템.
  20. 신경망 모델 실행 방법에 있어서,
    신경망 모델의 실행이 트리거되면 상기 신경망 모델에 포함되는 복수의 노드들의 노드 별 일의 양을 추정하는 단계;
    상기 신경망 모델의 목표 실행시간에 기초하여 상기 복수의 노드들의 노드 별 목표 실행시간을 결정하는 단계;
    상기 신경망 모델을 실행하기 위한 복수의 이기종 연산 장치들에 대해서, 상기 노드 별 타겟 연산 장치, 노드 별 일의 양, 및 상기 노드 별 목표 실행시간에 기초하여 이기종 연산 장치 별 동작 주파수를 제어하는 단계;
    상기 동작 주파수에 따라 동작하는 상기 복수의 이기종 연산 장치들을 이용하여 상기 신경망 모델을 실행하는 단계; 및
    상기 신경망 모델의 실제 실행 시간에 기초하여 상기 신경망 모델을 실행하기 위한 상기 복수의 이기종 연산 장치들의 동작 주파수를 조정하는 단계
    를 포함하는 신경망 모델 실행 방법.

KR1020220081422A 2022-07-01 2022-07-01 신경망 연산 시스템 및 신경망 모델 실행 방법 KR20240003619A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020220081422A KR20240003619A (ko) 2022-07-01 2022-07-01 신경망 연산 시스템 및 신경망 모델 실행 방법
US18/112,769 US20240004774A1 (en) 2022-07-01 2023-02-22 Neural network computing system and method of executing neural network model
EP23174078.8A EP4300368A1 (en) 2022-07-01 2023-05-17 Neural network computing system and method of executing neural network model
CN202310781371.7A CN117332828A (zh) 2022-07-01 2023-06-28 神经网络计算系统与执行神经网络模型的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220081422A KR20240003619A (ko) 2022-07-01 2022-07-01 신경망 연산 시스템 및 신경망 모델 실행 방법

Publications (1)

Publication Number Publication Date
KR20240003619A true KR20240003619A (ko) 2024-01-09

Family

ID=86386612

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220081422A KR20240003619A (ko) 2022-07-01 2022-07-01 신경망 연산 시스템 및 신경망 모델 실행 방법

Country Status (4)

Country Link
US (1) US20240004774A1 (ko)
EP (1) EP4300368A1 (ko)
KR (1) KR20240003619A (ko)
CN (1) CN117332828A (ko)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11334399B2 (en) * 2019-08-15 2022-05-17 Intel Corporation Methods and apparatus to manage power of deep learning accelerator systems

Also Published As

Publication number Publication date
US20240004774A1 (en) 2024-01-04
EP4300368A1 (en) 2024-01-03
CN117332828A (zh) 2024-01-02

Similar Documents

Publication Publication Date Title
JP7412438B2 (ja) 外部メモリを機械学習アクセラレータにとってローカルとする仮想化
EP3612991B1 (en) Power-efficient deep neural network module configured for executing a layer descriptor list
US8335935B2 (en) Power management based on automatic workload detection
CN110678846A (zh) 神经网络的动态任务分配
US20230177350A1 (en) Compiling models for dedicated hardware
JP7268063B2 (ja) 低電力のリアルタイムオブジェクト検出用のシステム及び方法
KR20210103367A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치
US12020065B2 (en) Hierarchical processor selection
KR20240003619A (ko) 신경망 연산 시스템 및 신경망 모델 실행 방법
US20190354833A1 (en) Method and system for reducing communication frequency in neural network systems
US20220044101A1 (en) Collaborative sensor data processing by deep learning accelerators with integrated random access memory
Kachris et al. SPynq: Acceleration of machine learning applications over Spark on Pynq
KR20210106635A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
US20230266815A1 (en) Dvfs controlling method, semiconductor device and semiconductor system using the dvfs controlling method
US20240061492A1 (en) Processor performing dynamic voltage and frequency scaling, electronic device including the same, and method of operating the same
US11347544B1 (en) Scheduling work items based on declarative constraints
US20230229493A1 (en) Electronic system, operating method thereof, and operating method of memory device
WO2024058810A1 (en) Reducing memory bank conflicts in a hardware accelerator
KR20220049294A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치
Kachris et al. on FPGAs
CN114116165A (zh) 任务处理方法、装置、电子设备及存储介质