KR20190043419A - 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템 - Google Patents

조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템 Download PDF

Info

Publication number
KR20190043419A
KR20190043419A KR1020170135461A KR20170135461A KR20190043419A KR 20190043419 A KR20190043419 A KR 20190043419A KR 1020170135461 A KR1020170135461 A KR 1020170135461A KR 20170135461 A KR20170135461 A KR 20170135461A KR 20190043419 A KR20190043419 A KR 20190043419A
Authority
KR
South Korea
Prior art keywords
layer
operations
neural network
early
depthwise
Prior art date
Application number
KR1020170135461A
Other languages
English (en)
Other versions
KR102521054B1 (ko
Inventor
양승수
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170135461A priority Critical patent/KR102521054B1/ko
Priority to US16/025,546 priority patent/US11586903B2/en
Publication of KR20190043419A publication Critical patent/KR20190043419A/ko
Application granted granted Critical
Publication of KR102521054B1 publication Critical patent/KR102521054B1/ko

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/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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Abstract

심층 신경망의 연산 제어 방법에서, 복수의 레이어들을 포함하는 심층 신경망의 네트워크 구조를 분석한다. 네트워크 구조 및 심층 신경망을 구동하기 위한 시스템의 실시간 상황 정보에 기초하여, 조기 중단 기능을 수행하는데 이용되는 하이퍼 파라미터를 설정한다. 하이퍼 파라미터에 기초하여, 복수의 연산들을 각각 포함하는 복수의 뎁스 와이즈 작업들을 시스템에 포함되는 복수의 리소스들에 할당하고 실행한다. 복수의 뎁스 와이즈 작업들을 실행하는 도중에 복수의 레이어들 중 제1 레이어에 대한 조기 중단 이벤트가 발생하는 경우에, 제1 레이어보다 먼저 배치되는 적어도 하나의 제2 레이어에 포함되는 복수의 제1 연산들 중 일부만을 수행하고 나머지를 중단한다.

Description

조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템{METHOD OF CONTROLLING COMPUTING OPERATIONS BASED ON EARLY-STOP IN DEEP NEURAL NETWORK}
본 발명은 인공 신경망에 관한 것으로서, 더욱 상세하게는 조기 중단(early-stop) 방식에 기초하여 심층 신경망에서 복수의 연산들을 제어하는 방법 및 상기 방법을 수행하는 시스템에 관한 것이다.
인공 신경망(artificial neural network; ANN)이란 연결 선으로 연결된 많은 수의 인공 뉴런들을 사용하여 생물학적인 시스템의 계산 능력을 모방하는 소프트웨어나 하드웨어로 구현된 연산 모델을 나타낸다. 인공 신경망에서는 생물학적인 뉴런의 기능을 단순화시킨 인공 뉴런을 사용하게 된다. 그리고 연결 강도를 갖는 연결 선을 통해 상호 연결시켜 인간의 인지 작용이나 학습 과정을 수행하게 된다. 심층 신경망(deep neural network; DNN)은 인공 신경망의 한 종류이며, 상대적으로 복잡한 레이어(layer) 및 뎁스(depth)를 가질 수 있다. 최근 심층 신경망에 기초한 딥 러닝(deep learning) 기술이 연구되고 있으며, 딥 러닝 서비스와 관련하여 심층 신경망의 성능을 향상시킬 수 있는 다양한 방안에 대한 연구가 진행되고 있다.
본 발명의 일 목적은 조기 중단 방식에 기초하여 심층 신경망에서 복수의 연산들을 효과적으로 제어하는 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 심층 신경망의 연산 제어 방법을 수행하는 시스템을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 방법에서, 복수의 레이어(layer)들을 포함하는 심층 신경망(deep neural network; DNN)의 네트워크 구조를 분석한다. 상기 네트워크 구조 및 상기 심층 신경망을 구동하기 위한 시스템의 실시간 상황(real-time context) 정보에 기초하여, 조기 중단(early-stop) 기능을 수행하는데 이용되는 하이퍼 파라미터(hyper parameter)를 설정한다. 상기 하이퍼 파라미터에 기초하여, 복수의 연산(computing)들을 각각 포함하는 복수의 뎁스 와이즈 작업(depth-wise job)들을 상기 시스템에 포함되는 복수의 리소스들에 할당하고 실행한다. 상기 복수의 뎁스 와이즈 작업들을 실행하는 도중에 상기 복수의 레이어들 중 제1 레이어에 대한 조기 중단 이벤트가 발생하는 경우에, 상기 제1 레이어보다 먼저 배치되는 적어도 하나의 제2 레이어에 포함되는 복수의 제1 연산들 중 일부만을 수행하고 나머지를 중단한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 시스템은 제1 모델 분석기, 제1 조기 중단 제어기, 제1 작업 할당기 및 복수의 리소스들을 포함한다. 상기 제1 모델 분석기는 복수의 레이어(layer)들을 포함하는 심층 신경망(deep neural network; DNN)의 네트워크 구조를 분석한다. 상기 제1 조기 중단 제어기는 상기 네트워크 구조 및 상기 심층 신경망을 구동하기 위한 시스템의 실시간 상황(real-time context) 정보에 기초하여, 조기 중단(early-stop) 기능을 수행하는데 이용되는 하이퍼 파라미터(hyper parameter)를 설정한다. 상기 제1 작업 할당기는 상기 하이퍼 파라미터에 기초하여, 복수의 연산(computing)들을 각각 포함하는 복수의 뎁스 와이즈 작업(depth-wise job)들을 할당한다. 상기 복수의 리소스들은 상기 복수의 뎁스 와이즈 작업들을 실행하고, 상기 복수의 뎁스 와이즈 작업들을 실행하는 도중에 상기 복수의 레이어들 중 제1 레이어에 대한 조기 중단 이벤트가 발생하는 경우에, 상기 제1 레이어보다 먼저 배치되는 적어도 하나의 제2 레이어에 포함되는 복수의 제1 연산들 중 일부만을 수행하고 나머지를 중단한다.
상기와 같은 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 방법 및 시스템에서, 풀링 레이어의 이전 레이어에 대한 연산을 미리 정해진 것보다 일찍 중단함으로써, 정확도를 유지하면서 연산량이 감소될 수 있고, 시스템의 성능, 전력 소모, 메모리 풋프린트, 메모리 대역폭 등 대부분의 지표가 개선될 수 있다. 상술한 조기 중단 기능을 하이퍼 파라미터로 설정할 수 있으며, 어플리케이션의 요구사항, 하드웨어의 용량, 상황 정보 인지 등에 기초하여, 합리적인 정확도와 레이턴시를 설정하고 정확도와 비용 사이의 트레이드 오프를 조절함으로써, 심층 신경망을 최적화시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 방법을 나타내는 순서도이다.
도 2 및 3은 본 발명의 실시예들에 따른 심층 신경망의 네트워크 구조를 설명하기 위한 도면들이다.
도 4는 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 시스템을 나타내는 블록도이다.
도 5는 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 방법을 구체적으로 나타내는 순서도이다.
도 6a 및 6b는 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 방법에서 조기 중단 이벤트가 발생하는 제1 레이어의 예들을 설명하기 위한 도면들이다.
도 7은 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 심층 신경망(deep neural network; DNN)의 연산 제어 방법에서, 상기 심층 신경망의 네트워크 구조를 분석한다(단계 S100). 상기 심층 신경망은 복수의 레이어(layer)들을 포함하여 구현된다. 상기 심층 신경망의 네트워크 구조에 대해서는 도 2 및 3을 참조하여 상세하게 설명하도록 한다.
상기 네트워크 구조 및 실시간 상황(real-time context) 정보에 기초하여 하이퍼 파라미터(hyper parameter)를 설정한다(단계 S200). 상기 심층 신경망은 복수의 리소스(resource)들을 포함하는 시스템(예를 들어, 도 4의 100)에 의해 구동되며, 상기 실시간 상황 정보는 상기 심층 신경망을 구동하기 위한 시스템의 동작 상태, 요구 조건, 성능 등을 나타낸다. 상기 하이퍼 파라미터는 조기 중단(early-stop) 기능을 수행하는데 이용된다. 상기 조기 중단 기능은, 연산량을 감소시키기 위하여 특정 레이어(예를 들어, 단계 S400의 제1 레이어)의 이전 레이어에 대한 연산을 일찍(early) 중단하는 것을 나타낸다.
상기 하이퍼 파라미터에 기초하여 복수의 뎁스 와이즈 작업(depth-wise job)들을 상기 시스템에 포함되는 상기 복수의 리소스들에 할당하고 실행한다(단계 S300). 상기 복수의 뎁스 와이즈 작업들은 복수의 연산(computing 또는 computing operation)들을 각각 포함한다. 단계 S300은 상기 심층 신경망이 실제로 구동되는 동작을 나타낼 수 있다. 상기 복수의 뎁스 와이즈 작업들 및 상기 복수의 연산들에 대해서는 도 2 및 3을 참조하여 후술하도록 한다.
상기 복수의 뎁스 와이즈 작업들을 실행하는 도중에 상기 복수의 레이어들 중 제1 레이어에 대한 조기 중단 이벤트가 발생하는 경우에, 상기 하이퍼 파라미터에 기초하여 상기 제1 레이어보다 먼저 배치되는 적어도 하나의 제2 레이어에 포함되는 복수의 제1 연산들 중 일부만을 수행하고 나머지를 중단한다(단계 S400). 다시 말하면, 상기 제1 레이어보다 선행하는 상기 제2 레이어에 대한 연산을 미리 정해진 것보다 일찍 중단함으로써, 상기 시스템의 전체적인 연산량을 감소시킬 수 있다.
일 실시예에서, 상기 제1 레이어는 풀링(pooling) 레이어일 수 있다. 상기 풀링 레이어는 입력 데이터를 샘플링(예를 들어, down-sampling, sub-sampling, down-sizing 또는 re-sizing)하여 상기 입력 데이터보다 작은 크기의 출력 데이터를 발생할 수 있다. 도 6a 및 6b를 참조하여 후술하는 것처럼, 상기 풀링 레이어는 최대 값을 선택하는 최대 값 풀링(max pooling) 레이어 및 평균 값을 획득하는 평균 값 풀링(average pooling 또는 mean pooling) 레이어를 포함할 수 있다.
도 2 및 3은 본 발명의 실시예들에 따른 심층 신경망의 네트워크 구조를 설명하기 위한 도면들이다.
도 2를 참조하면, 일반적인 신경망은 입력 레이어(IL), 복수의 히든 레이어들(HL1, HL2, ..., HLn) 및 출력 레이어(OL)를 포함할 수 있다.
입력 레이어(IL)는 i(i는 자연수)개의 입력 노드들(x1, x2, ..., xi)을 포함할 수 있고, 길이가 i인 벡터 입력 데이터(IDAT)가 각 입력 노드에 입력될 수 있다.
복수의 히든 레이어들(HL1, HL2, ..., HLn)은 히든 노드들(h1 1, h1 2, h1 3, ..., h1 m, h2 1, h2 2, h2 3, ..., h2 m, hn 1, hn 2, hn 3, ..., hn m)을 포함할 수 있다. 예를 들어, 히든 레이어(HL1)는 m(m은 자연수)개의 히든 노드들(h1 1, h1 2, h1 3, ..., h1 m)을 포함할 수 있고, 히든 레이어(HL2)는 m개의 히든 노드들(h2 1, h2 2, h2 3, ..., h2 m)을 포함할 수 있으며, 히든 레이어(HLn)는 m개의 히든 노드들(hn 1, hn 2, hn 3, ..., hn m)을 포함할 수 있다.
출력 레이어(240)는 분류할 클래스에 대응하는 j(j는 자연수)개의 출력 노드들(y1, y2, ..., yj)을 포함할 수 있고, 입력 데이터(IDAT)에 대하여 각 클래스 별로 결과(예를 들어, 점수 또는 class score)를 출력할 수 있다. 출력 레이어(240)는 fully connected 레이어라고 부를 수 있으며, 예를 들어 입력 데이터(IDAT)가 자동차에 대응할 확률을 수치로 나타낼 수 있다.
도 2에 도시된 신경망의 네트워크 구조는, 두 개의 노드들 사이에 직선으로 도시된 노드들 간의 연결(branch)과, 도시되지는 않았지만 각 연결에서 사용되는 가중치(weight)를 포함할 수 있다. 이 때, 하나의 레이어 내의 노드들 간에는 연결이 되지 않을 수 있고, 서로 다른 레이어들에 포함되는 노드들은 완전하게 혹은 부분적으로 연결될 수 있다.
도 2의 각 노드(예를 들어, h1 1)는 이전 노드(예를 들어, x1)의 출력을 입력 받아 연산할 수 있고, 연산 결과를 이후 노드(예를 들어, h2 1)에 출력할 수 있다. 이 때, 각 노드는 입력된 값을 특정 함수, 예를 들어 비선형 함수에 적용하여 출력할 값을 연산할 수 있다.
일반적으로 신경망의 네트워크 구조는 미리 결정되어 있으며, 노드들 간의 연결에 따른 가중치들은 이미 어떤 클래스에 속할지 정답이 알려진 데이터들을 이용하여 적절한 값을 산정하게 된다. 이와 같이 이미 정답이 알려진 데이터들을 '학습 데이터'라고 하고, 가중치를 결정하는 과정을 '학습'이라고 한다. 또한, 독립적으로 학습이 가능한 구조와 가중치의 묶음을 '모델'이라고 가정하고, 가중치가 결정된 모델이 입력 데이터가 어느 클래스에 속할지를 예측하여 그 예측값을 출력하는 것을 '테스트' 과정이라고 한다.
신경망의 구동 및 동작과 관련하여, 레이어 와이즈(layer-wise) 작업은, 하나의 레이어(예를 들어, HL1)에 대한 모든 연산을 수행한 이후에 다음 레이어(예를 들어, HL2)에 대한 모든 연산을 수행하는 방식, 즉 레이어 단위로 작업을 할당하는 것을 나타낸다. 다만, 레이어 와이즈 작업의 경우에 리소스 낭비의 우려가 있으므로, 복수의 레이어들에 포함되는 연산들 중 일부(예를 들어, x1, h1 1, h2 1, hn 1)를 하나의 작업(JOB1)으로 할당하고 다른 일부(예를 들어, x2, ..., xi, h1 3, h2 3)를 다른 하나의 작업(JOB2)으로 할당하여 연산을 수행하는 경우에, 신경망이 보다 효율적으로 구동될 수 있다.
한편, 도 2에 도시된 일반적인 신경망은 각 노드(예를 들어, h1 1)가 앞쪽 레이어(previous layer)(예를 들어, IL)의 모든 노드들(예를 들어, x1, x2, ..., xi)과 연결되어 있어, 입력 데이터(IDAT)가 영상(또는 음성)인 경우에 영상의 크기가 증가할수록 필요한 가중치의 개수가 기하급수적으로 증가하며, 따라서 영상을 다루기에 적절하지 않을 수 있다. 이에 따라, 신경망에 필터 기술을 병합하여, 신경망이 2차원 영상을 잘 습득할 수 있도록 구현된 컨볼루션(convolutional) 신경망이 연구되고 있다.
도 3을 참조하면, 컨볼루션 신경망은 복수의 레이어들(CONV1, RELU1, CONV2, RELU2, POOL1, CONV3, RELU3, CONV4, RELU4, POOL2, CONV5, RELU5, CONV6, RELU6, POOL3, FC)을 포함할 수 있다.
일반적인 신경망과 다르게, 컨볼루션 신경망의 각 레이어는 가로(또는 폭, width), 세로(또는 높이, height), 깊이(depth)의 3개의 차원을 가질 수 있다. 이에 따라, 각 레이어에 입력되는 데이터 또한 가로, 세로, 깊이의 3개의 차원을 가지는 볼륨 데이터일 수 있다. 예를 들어, 도 3에서 입력 영상이 가로 32, 세로 32의 크기를 가지고 세 개의 컬러 채널(R, G, B)을 가지는 경우에, 상기 입력 영상에 대응하는 입력 데이터(IDAT)는 32*32*3의 크기를 가질 수 있다. 도 3의 입력 데이터(IDAT)는 입력 볼륨 데이터 또는 입력 액티베이션 볼륨(activation volume)이라 부를 수 있다.
한편, 여기에서 말하는 깊이는, 컨볼루션 신경망의 전체 깊이, 즉 레이어들의 전체 개수를 나타내는 것이 아니며, 하나의 레이어, 하나의 볼륨 데이터 또는 하나의 액티베이션 볼륨에서의 세 번째 차원을 나타내며, 하나의 레이어에 포함되는 채널의 개수에 대응할 수 있다.
컨볼루션 레이어들(CONV1, CONV2, CONV3, CONV4, CONV5, CONV6)은 입력에 대한 컨볼루션 연산을 수행할 수 있다. 영상 처리에서 컨볼루션이란 가중치를 갖는 마스크를 이용하여 데이터를 처리하는 것을 의미할 수 있으며, 입력 값과 마스크의 가중치를 곱한 후에 그 합을 출력 값으로 정하는 것을 나타낼 수 있다. 이 때, 마스크를 필터(filter), 윈도우(window) 또는 커널(kernel)이라고 부를 수 있다.
구체적으로, 각 컨볼루션 레이어의 파라미터들은 일련의 학습 가능한 필터들로 이루어져 있을 수 있다. 각 필터는 가로/세로 차원으로는 각 레이어의 전체 크기보다 작지만 깊이 차원으로는 각 레이어의 전체 깊이를 아우를 수 있다. 예를 들어, 각 필터를 입력 볼륨의 가로/세로 차원으로 슬라이딩 시키며(정확히는 convolve 시키며) 필터와 입력의 요소들 사이의 내적 연산(dot product)을 수행하여 2차원의 액티베이션 맵(activation map)을 생성할 수 있고, 이러한 액티베이션 맵을 깊이 차원을 따라 쌓아서 출력 볼륨을 생성할 수 있다. 예를 들어, 컨볼루션 레이어(CONV1)가 32*32*3의 크기의 입력 볼륨 데이터(IDAT)에 네 개의 필터들을 제로 패딩(zero-padding)과 함께 적용하면, 컨볼루션 레이어(CONV1)의 출력 볼륨은 32*32*12의 크기를 가질 수 있다 (즉, 깊이 증가).
RELU 레이어들(RELU1, RELU2, RELU3, RELU4, RELU5, RELU6)은 입력에 대한 정정 선형 유닛(rectified linear unit) 연산을 수행할 수 있다. 예를 들어, 정정 선형 유닛 연산은 max(0, x)와 같이 음수에 대해서만 0으로 처리하는 함수를 나타낼 수 있다. 예를 들어, RELU 레이어(RELU1)가 컨볼루션 레이어(CONV1)로부터 제공된 32*32*12의 크기의 입력 볼륨에 정정 선형 유닛 연산을 수행하면, RELU 레이어(RELU1)의 출력 볼륨은 32*32*12의 크기를 가질 수 있다 (즉, 볼륨 유지).
풀링 레이어들(POOL1, POOL2, POOL3)은 입력 볼륨의 가로/세로 차원에 대해 다운 샘플링을 수행할 수 있다. 예를 들어, 2*2 필터를 적용하는 경우에 2*2 영역의 네 개의 입력들을 하나의 출력으로 변환할 수 있다. 구체적으로, 2*2 최대 값 풀링과 같이 2*2 영역의 네 개의 입력들 중 최대 값을 선택하거나, 2*2 평균 값 풀링과 같이 2*2 영역의 네 개의 입력들의 평균 값을 연산할 수 있다. 예를 들어, 풀링 레이어(POOL1)가 32*32*12의 크기의 입력 볼륨에 2*2 필터를 적용하면, 풀링 레이어(POOL1)의 출력 볼륨은 16*16*12의 크기를 가질 수 있다 (즉, 가로/세로 감소, 깊이 유지, 볼륨 감소).
일반적으로 컨볼루션 신경망에서는 하나의 컨볼루션 레이어(예를 들어, CONV1)와 하나의 RELU 레이어(예를 들어, RELU1)가 한 쌍을 형성할 수 있고, 컨볼루션/RELU 레이어들의 쌍이 반복 배치될 수 있으며, 컨볼루션/RELU 레이어들의 쌍이 반복 배치되는 중간 중간에 풀링 레이어를 삽입함으로써, 영상을 줄여나가면서 영상의 특징을 추출할 수 있다.
출력 레이어 또는 fully connected 레이어(FC)는 입력 볼륨 데이터(IDAT)에 대하여 각 클래스 별로 결과를 출력할 수 있다. 예를 들어, 컨볼루션 및 서브 샘플링을 반복 수행함에 따라 2차원 영상에 대응하는 입력 볼륨 데이터(IDAT)가 1차원 행렬(또는 벡터)로 변환될 수 있다. 예를 들어, fully connected 레이어(FC)는 입력 볼륨 데이터(IDAT)가 자동차(CAR), 트럭(TRUCK), 비행기(AIRPLANE), 배(SHIP), 말(HORSE)에 대응할 확률을 수치로 나타낼 수 있다.
한편, 도 3에서는 컨볼루션 신경망이 6개의 컨볼루션 레이어들(CONV1, CONV2, CONV3, CONV4, CONV5, CONV6), 6개의 RELU 레이어들(RELU1, RELU2, RELU3, RELU4, RELU5, RELU6) 및 3개의 풀링 레이어들(POOL1, POOL2, POOL3)을 포함하는 것으로 도시하였으나, 컨볼루션 신경망에 포함되는 레이어들의 종류 및 개수는 실시예에 따라서 다양하게 변경될 수 있다. 또한, 도시하지는 않았지만, 실시예에 따라서 컨볼루션 신경망은 예측된 결과인 점수(score) 값을 확률 값으로 변환하는 Softmax 레이어, 바이어스(bias)를 추가하는 Bias add 레이어 등을 더 포함할 수 있다.
본 명세서에서, 심층 신경망은 도 3에 도시된 컨볼루션 신경망을 기반으로 하고 상대적으로 복잡한 레이어 및 뎁스를 가지는 신경망을 나타낼 수 있다.
또한 본 명세서에서, 뎁스 와이즈 작업은 도 2에 도시된 것처럼 복수의 레이어들에 포함되는 연산들 중 일부(예를 들어, x1, h1 1, h2 1, hn 1)를 하나의 작업(JOB1)으로 할당하는 것과, 도 3을 참조하여 상술한 것처럼 각 레이어 및 각 레이어에 의해 처리되는 볼륨 데이터가 가로, 세로, 깊이의 3개의 차원을 가지는 것(즉, 깊이를 가지는 볼륨 데이터를 처리하는 것) 모두를 포괄하는 개념을 나타낼 수 있다.
도 4는 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 시스템을 나타내는 블록도이다.
도 4를 참조하면, 심층 신경망의 연산 제어 시스템(100)은 모델 분석기(model parser)(110), 조기 중단 제어기(early-stopper)(120), 작업 할당기(job assigner)(130) 및 복수의 리소스들(142, 143, 144, 145, 146, 147)을 포함한다. 심층 신경망의 연산 제어 시스템(100)은 리소스 관리기(resource manager)(141) 및 컨텍스트 관리기(context manager)(150)를 더 포함할 수 있다.
모델 분석기(110)는 복수의 레이어들을 포함하는 심층 신경망의 네트워크 구조(NSI)를 분석한다. 예를 들어, 상기 네트워크 구조는 상기 심층 신경망의 사양(specification) 및 요구사항(requirement)(예를 들어, 레이턴시 및 전력) 등을 포함할 수 있다. 상기 인공 신경망의 사양 및 요구사항은, 뎁스(depth), 브랜치(branch)와 같은 레이어 토폴로지(layer topology); 전지 작업(pruning)과 같은 네트워크 압축 방식; BLAS, conv, pooling, relu와 같은 각 레이어의 연산들의 종류; 포맷, 보안, 크기, 입력 소스의 종류, 물리적 위치, 가상 위치 등과 같은 데이터 성질; 패딩(padding), 스트라이드(stride), 입력, 데이터 차원 성질, 커널(kernel)/필터 및 출력의 오퍼랜드(operand)에 대한 메모리 레이아웃; 양자화, LZ(Lempel Ziv), Huffman 등과 같은 데이터 압축 방식 등을 포함할 수 있다.
조기 중단 제어기(120)는 네트워크 구조(NSI) 및 실시간 상황 정보(CI)에 기초하여, 조기 중단 기능을 수행하는데 이용되는 하이퍼 파라미터(HP)를 설정한다. 예를 들어, 조기 중단 제어기(120)는 네트워크 구조(NSI) 및 실시간 상황 정보(CI)의 초기 값에 기초하여 하이퍼 파라미터(HP)의 초기 값을 설정할 수 있고, 상기 심층 신경망의 구동에 따라 업데이트된 실시간 상황 정보(CI)에 기초하여 하이퍼 파라미터(HP)를 실시간으로 업데이트할 수 있다.
작업 할당기(130)는 하이퍼 파라미터(HP)에 기초하여, 복수의 연산들을 각각 포함하는 복수의 뎁스 와이즈 작업들을 할당한다. 예를 들어, 작업 할당기(130)는 하이퍼 파라미터(HP)에 기초하여 상기 복수의 뎁스 와이즈 작업들에 대한 복수의 뎁스 와이즈 커맨드들(DWJC)을 발생할 수 있고, 복수의 뎁스 와이즈 커맨드들(DWJC)에 기초하여 상기 복수의 뎁스 와이즈 작업들이 복수의 리소스들(142, 143, 144, 145, 146, 147)에 할당될 수 있다. 예를 들어, 상기 복수의 뎁스 와이즈 작업들을 할당할 때 하드웨어(예를 들어 각 리소스)의 용량(capacity)이 고려될 수 있다.
복수의 리소스들(142, 143, 144, 145, 146, 147)은 복수의 뎁스 와이즈 커맨드들(DWJC)에 기초하여 상기 복수의 뎁스 와이즈 작업들을 실행하고, 상기 복수의 뎁스 와이즈 작업들을 실행하는 도중에 상기 복수의 레이어들 중 제1 레이어에 대한 조기 중단 이벤트가 발생하는 경우에, 하이퍼 파라미터(HP)에 기초하여 상기 제1 레이어보다 먼저 배치되는 적어도 하나의 제2 레이어에 포함되는 복수의 제1 연산들 중 일부만을 수행하고 나머지를 중단한다. 이러한 조기 중단 기능에 대해서는 도 5, 6a 및 6b를 참조하여 상세하게 후술하도록 한다.
일 실시예에서, 복수의 리소스들(142, 143, 144, 145, 146, 147)은 특정 계산들 또는 태스크들과 같은 다양한 기능들을 실행하는 연산 리소스(computing resource)들일 수 있고, 이종의(heterogeneous) 리소스들일 수 있다. 예를 들어, 복수의 리소스들(142, 143, 144, 145, 146, 147)은 중앙 처리 장치(central processing unit; CPU)(142), 그래픽 처리 장치(graphic processing unit; GPU)(143), 디지털 신호 프로세서(digital signal processor; DSP)(144), 영상 신호 프로세서(image signal processor; ISP)(145), 특정 작업 전용 하드웨어(dedicated hardware; DHW)(146), 신경 처리 장치(neural processing unit; NPU)(147)를 포함할 수 있다. 예를 들어, 특정 작업 전용 하드웨어들(146)은 비전 처리 장치(vision processing unit; VPU), 비전 IP(vision intellectual property; VIP) 등을 포함할 수 있다.
리소스 관리기(141)는 복수의 리소스들(142, 143, 144, 145, 146, 147)의 성능 및 이용 상태를 나타내는 리소스 상태(status) 정보(RSI)를 발생할 수 있고, 리소스 상태 정보(RSI)를 컨텍스트 관리기(150)에 피드백할 수 있다. 예를 들어, 리소스 상태 정보(RSI)는 CONV, RELU 등의 연산(operation), 3*3, 5*5 등의 커널 구조, 가중치 등의 데이터 플로우(flow), 데이터 재사용, 데이터 레이아웃을 포함하는 각 리소스의 선호 정보(preference information for accelerated); 성능/전력(performance/power), 지원되는 알고리즘(arithmetic algorithm), 알고리즘 구현(implementation) 등을 포함하는 각 리소스의 용량(capacity); 원하지 않는 데이터 종류 및 데이터 레이아웃, 압축 방식을 포함하는 각 리소스의 제한(limitation) 등의 정보를 포함할 수 있다.
리소스 관리기(141) 및 복수의 리소스들(142, 143, 144, 145, 146, 147)은 리소스부(140)를 형성할 수 있다.
일 실시예에서, 리소스 관리기(141)는 생략될 수 있으며, 이 경우 리소스 상태 정보(RSI)는 복수의 리소스들(142, 143, 144, 145, 146, 147)로부터 직접 수집될 수 있다.
컨텍스트 관리기(150)는 시스템(100)의 동작 상태에 기초하여 실시간 상황 정보(CI)를 업데이트할 수 있다. 예를 들어, 실시간 상황 정보(CI)는 리소스 상태 정보(RSI)에 포함되는 복수의 리소스들(142, 143, 144, 145, 146, 147)의 성능(예를 들어, latency) 및 이용 상태(utilization), 상기 복수의 뎁스 와이즈 작업들의 정확도(accuracy), 및 시스템(100)의 전력 공급 상태 등을 포함할 수 있다.
예를 들어, 컨텍스트 관리기(150)는 정보 및 상태(state)와 관련된 연산들, 정확도/성능의 동적 손실(dynamic loss) 및 허용 오차(tolerance), 어플리케이션 ID; 어플리케이션, 프로세스, 스레드(thread), 액티비티(activity)의 수명(lifecycle) 등을 포함하는 상기 심층 신경망의 런타임 상태(runtime or online status)를 파악할 수 있다. 또한, 컨텍스트 관리기(150)는 정확도/성능의 정적 손실(static loss) 및 허용 오차, 연산 리소스의 상태 변화, 전력 및 발열 상태, 메모리 및 저장 공간의 상태 등을 포함하는 리소스 관련 정보를 파악할 수 있다.
일 실시예에서, 심층 신경망의 연산 제어 시스템(100)에 포함되는 구성요소들(110, 120, 130, 140, 141, 142, 143, 144, 145, 146, 147, 150)은 심층 신경망 기능이 내장된(built-in) 하나의 제1 전자 기기에 포함될 수 있다. 상기 제1 전자 기기는 사용자 경험(user experience)이 직접적으로 수행되는 전자 기기일 수 있다. 예를 들어, 상기 제1 전자 기기는 개인용 컴퓨터(personal computer; PC), 노트북(laptop), 휴대폰(mobile phone), 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), PMP(portable multimedia player), 디지털 카메라(digital camera), 캠코더(camcoder), 음악 재생기(music player), 휴대용 게임 콘솔(portable game console), 네비게이션(navigation), 웨어러블(wearable) 기기, 가상 현실(virtual reality; VR) 기기, 증강 현실(augmented reality; AR) 기기 등과 같은 임의의 컴퓨팅 기기 및/또는 모바일 기기일 수 있다.
다른 실시예에서, 복수의 리소스들(142, 143, 144, 145, 146, 147) 중 적어도 일부는 상기 제1 전자 기기와 다른 제2 전자 기기에 포함될 수 있다. 이 때, 상기 제1 전자 기기를 로컬(local) 기기라고 부를 수 있고, 상기 제2 전자 기기를 리모트(remote) 기기라고 부를 수 있다. 상기 제2 전자 기기는 상기 제1 전자 기기와 물리적으로 분리되며, 상기 제1 전자 기기와 연동하여 동작하는 임의의 컴퓨팅 기기 및/또는 모바일 기기일 수 있다. 예를 들어, 상기 제2 전자 기기는 병렬 처리 장치(parallel processing element; PE) 등과 같은 컴패니언 칩(companion chip) 또는 오프 칩(off-chip)일 수 있다. 다른 예에서, 상기 제2 전자 기기는 웨어러블(wearable) 기기(예를 들어, 스마트 워치(smart watch))와 같이 상기 제1 전자 기기에 종속하여 동작하는 컴패니언 기기일 수 있다. 또 다른 예에서, 상기 제2 전자 기기는 사물 인터넷(internet of things: IoT) 기기, 만물 인터넷(internet of everything: IoE) 기기 등을 제어하는 홈 게이트웨이(home gateway)와 같은 내부 서버(in-house server), 또는 클라우드 서버(cloud server)와 같은 외부 서버(outside server)일 수 있다.
한편, 도시하지는 않았지만, 상기 복수의 리소스들은 마이크로프로세서(microprocessor), 어플리케이션 프로세서(application processor; AP), 맞춤형 하드웨어(customized hardware), 압축용 하드웨어(compression hardware) 등을 더 포함할 수 있다. 또한, 도시하지는 않았지만, 심층 신경망의 연산 제어 시스템(100)은 메모리를 더 포함할 수도 있고, DMA(direct memory access), 통신부(connectivity), 메모리 복사 가능한 리소스들(memory copy capable resources) 등과 같은 통신 리소스를 더 포함할 수도 있다. 예를 들어, 상기 DMA부는 MDMA(memory DMA), PDMA(peripheral DMA), RDMA(remote DMA), SDMA(smart DMA) 등을 포함할 수 있다. 상기 통신부는 유/무선으로 통신을 수행할 수 있고, 시스템 버스, PCI(peripheral component interconnect), PCIe(PCI express) 등과 같은 내부 통신 및/또는 USB(universal serial bus), Ethernet, WiFi, Bluetooth, NFC(near field communication), RFID(radio frequency identification), 이동 통신(mobile telecommunication) 등과 같은 외부 통신을 지원할 수 있다.
도 5는 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 방법을 구체적으로 나타내는 순서도이다. 도 6a 및 6b는 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 방법에서 조기 중단 이벤트가 발생하는 제1 레이어의 예들을 설명하기 위한 도면들이다.
도 4 및 5를 참조하면, 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 방법에서, 모델 분석기(110)는 상기 심층 신경망의 네트워크 구조(NSI)를 분석한다(단계 S100). 도 5의 단계 S100은 도 1의 단계 S100과 실질적으로 동일할 수 있다.
조기 중단 제어기(120)는 네트워크 구조(NSI) 및 실시간 상황 정보(CI)의 초기 값에 기초하여 하이퍼 파라미터(HP)의 초기 값을 설정한다(단계 S200a). 도 5의 단계 S200a는 도 1의 단계 S200의 일부에 대응할 수 있다.
작업 할당기(130)는 하이퍼 파라미터(HP)의 초기 값에 기초하여 복수의 뎁스 와이즈 커맨드들(DWJC)을 발생한다(단계 S310). 복수의 뎁스 와이즈 커맨드들(DWJC)에 기초하여 복수의 뎁스 와이즈 작업들이 복수의 리소스들(142, 143, 144, 145, 146, 147)에 할당된다.
복수의 리소스들(142, 143, 144, 145, 146, 147)은 상기 복수의 뎁스 와이즈 작업들을 실행한다. 모든 뎁스 와이즈 작업들이 완료되지 않고 일부 작업이 남아있는 경우에(단계 S320: 예), 조기 중단 이벤트의 발생 여부에 따라서 작업을 실행하거나 중단(stop) 또는 생략(skip)한다.
구체적으로, 제1 레이어에 대한 조기 중단 이벤트가 발생하는 경우에(단계 S410: 예), 상기 제1 레이어보다 먼저 배치되는 적어도 하나의 제2 레이어에 대해 일부 연산만을 수행하고 나머지 연산을 중단하며, 상기 복수의 제1 연산들 중 수행된 상기 일부의 결과만을 활용하도록 상기 복수의 제1 연산들과 관련된 작업을 완료한 것으로 처리한다(단계 S420).
도 1을 참조하여 상술한 것처럼, 상기 제1 레이어는 풀링 레이어일 수 있다. 이 때, 풀링(pooling) 또는 샘플링(sampling)될 데이터의 위치(depth-wise)를 미리(early) 파악하여, 하이퍼 파라미터(HP)로 조기 중단 시그널링(signaling) 할 수 있다. 한편, 상기 제2 레이어는 컨볼루션 레이어일 수 있으나, 이에 한정되지 않으며, 다양한 연산 레이어들 중 하나일 수 있다.
일 실시예에서, 상기 제1 레이어는 최대 값 풀링(max pooling) 레이어일 수 있다. 이 경우, 상기 제1 레이어는 상기 제1 레이어에 입력되는 데이터(제1 볼륨 데이터)의 미리 정해진 영역에 포함되는 복수의 특성 값들 중에서 최대 값을 선택할 수 있다.
구체적으로, 도 6a에 도시된 것처럼, 4*4의 데이터에 대하여 2*2 최대 값 필터를 적용하는 경우에, 좌측 상단의 2*2 영역의 값들 중 최대 값인 6이 선택되고, 우측 상단의 2*2 영역의 값들 중 최대 값인 8이 선택되고, 좌측 하단의 2*2 영역의 값들 중 최대 값인 3이 선택되며, 우측 하단의 2*2 영역의 값들 중 최대 값인 4가 선택될 수 있다. 결과적으로, 4*4의 데이터가 2*2의 데이터로 축소될 수 있다.
상술한 것처럼, 상기 제1 레이어가 최대 값 풀링 레이어인 경우에, 상기 복수의 특성 값들 중 하나를 상기 최대 값으로 선택하므로, 상기 최대 값의 위치를 미리 파악하는 것이 필요하다. 상기 제1 레이어보다 앞서는 상기 제2 레이어에서 상기 최대 값의 위치를 결정하는데 하기와 같은 두 가지 방식이 이용될 수 있다.
먼저, 상기 복수의 뎁스 와이즈 작업들을 실행하기 전에(즉, 상기 심층 신경망을 실제로 구동하기 전에), 트레이닝(training) 동작을 수행하여 상기 최대 값의 위치를 미리 결정하는 방식을 적용할 수 있다. 예를 들어, 상기 트레이닝 동작을 수행하는 도중에 상기 최대 값의 위치를 추적(tracking)하여 확률을 저장하고, 상기 확률이 미리 정의된 문턱(threshold) 확률 이상을 유지하는 경우에, 상기 최대 값의 위치를 저장할 수 있다. 다른 예에서, 상기 트레이닝 동작을 수행하는 도중에 상기 최대 값의 위치를 임의로 선정할 수도 있다.
다음에, 상기 복수의 뎁스 와이즈 작업들을 실행하는 도중에(즉, 상기 심층 신경망을 구동하는 도중에), 상기 제2 레이어를 실시간 추적(runtime tracking)하여 상기 최대 값의 위치를 결정하는 방식(즉, 추론(inference) 방식)을 적용할 수 있다. 예를 들어, 임의 지점의 뎁스까지만 뎁스 와이즈 연산을 수행한 후에 실시간 추적하여 상기 최대 값의 위치를 파악하고, 상기 최대 값의 위치에 대응하는 뎁스 와이즈 연산만을 전체 뎁스까지 수행하고 나머지는 연산을 멈출 수 있다. 또한, 미리 정의된 문턱 횟수 이상의 횟수로 상기 최대 값의 위치가 유지되면, 이후에는 이미 파악된 상기 최대 값의 위치에 대해서만 연산을 수행하고 더 이상 추적하지 않을 수 있다.
예를 들어, 상기 복수의 특성 값들 중에서 가장 큰 X(X는 자연수)개의 특성 값들을 추적하여 상기 최대 값을 선택할 수 있다. 다시 말하면, 추적할 최대 값의 후보의 개수는 1개 이상이고 최대 값 필터의 입력 개수보다 작을 수 있다. 예를 들어, 2*2 최대 값 필터를 적용하는 경우에, 가장 큰 하나, 두 개 또는 세 개의 최대 값을 선택적으로 추적할 수 있다(즉, 1부터 (풀링 입력 크기-1)까지 가능).
예를 들어, 상기 최대 값의 위치를 추적하는데 있어서, 상기 제2 레이어의 특정 뎁스에 대해서만 추적을 수행할 수 있다. 구체적으로, 상기 제2 레이어 또는 상기 제2 레이어에 입력되는 데이터(제2 볼륨 데이터)는 제1 내지 제N(N은 2 이상의 자연수) 뎁스들을 포함할 수 있다. 예를 들어, 상기 제1 내지 제N 뎁스들 중 연속하는 K(K는 2 이상 N 이하의 자연수)개의 뎁스들만 연산될 수 있다. 다시 말하면, 임의의 I번째 뎁스부터 (I+K-1)번째 뎁스까지만 연산될 수 있다. 다른 예에서, 상기 제1 내지 제N 뎁스들 중 서로 이격하는 M(M은 2 이상 N 이하의 자연수)개의 뎁스들만 연산될 수 있고, 이 때 미리 정해진 간격, 횟수 또는 비율에 기초하여 상기 M개의 뎁스들을 선택할 수 있다. 다시 말하면, 홀수번째 또는 짝수번째 뎁스들만 연산되거나, 서로 이격하는 임의의 개수의 뎁스들만 연산되거나, 전체 레이어들 중 1/4, 2/4, 3/4 진행될 때마다 가장 작은 값을 하나씩 버리는(kick out) 방식으로 연산될 수도 있다.
다른 실시예에서, 상기 제1 레이어는 평균 값 풀링(average pooling) 레이어일 수 있다. 이 경우, 상기 제1 레이어는 상기 제1 레이어에 입력되는 데이터(제1 볼륨 데이터)의 미리 정해진 영역에 포함되는 복수의 특성 값들의 평균 값을 획득할 수 있다.
구체적으로, 도 6b에 도시된 것처럼, 4*4의 데이터에 대하여 2*2 평균 값 필터를 적용하는 경우에, 좌측 상단의 2*2 영역의 값들에 대한 평균 값인 3이 획득되고, 우측 상단의 2*2 영역의 값들에 대한 평균 값인 5가 획득되고, 좌측 하단의 2*2 영역의 값들에 대한 평균 값인 2가 획득되며, 우측 하단의 2*2 영역의 값들에 대한 평균 값인 2가 획득될 수 있다. 결과적으로, 4*4의 데이터가 2*2의 데이터로 축소될 수 있다.
다만, 평균 값을 획득하는 방식은 도 6b의 예에 한정되지 않을 수 있으며, 상기 평균 값에 가장 근사한 값을 선택하거나 중앙 값(median) 또는 중간 값을 선택할 수도 있으며, 그 밖에 구현 가능한 다양한 방식(즉, 플로우)이 존재할 수 있다. 예를 들어, 상기 평균 값을 획득하기 위한 복수의 플로우(flow)들 중에서 Y(Y는 자연수)개의 플로우를 선정하여 상기 평균 값을 획득할 수 있다. 선정된 연산 플로우만 계속 수행하고 나머지는 연산을 멈출 수 있다. 예를 들어, 랜덤으로 선택하거나, 최소/최대 값을 제외하고 선택하거나, 비슷한 값을 가지는 플로우들을 선택하는 등, 다양한 방식으로 플로우를 선정할 수 있다.
상기 최대 값의 위치를 추적하는 과정과 유사하게, 상기 제2 레이어의 특정 뎁스에 대해서만 상기 선정된 연산 플로우를 수행할 수 있다.
상술한 단계 S410 및 S420을 수행하는데 있어서, 즉 조기 중단 기능을 수행하는데 있어서 사용되는 모든 변수들(variables)은 하이퍼 파라미터(HP)로 설정될 수 있다. 예를 들어, 연산하고자 하는 특징 뎁스의 위치, 범위 및/또는 개수(즉, K 또는 M), 상기 최대 값을 선택하는데 있어서 추적할 최대 값의 후보의 개수(즉, X), 상기 평균 값을 획득하는데 있어서 선정된 연산 플로우의 개수(즉, Y) 등이 하이퍼 파라미터(HP)에 의해 설정될 수 있다.
다시 말하면, 하이퍼 파라미터(HP)를 미세 조절 가능한 손잡이(fine tunable knob)로 이용할 수 있으며, 정확도와 비용(cost)(즉, 전력/성능) 사이의 트레이드 오프(trade-off)를 조절할 수 있다. 어플리케이션의 정확도, 레이턴시 등의 요구사항, 하드웨어(즉, 각 리소스)의 용량, 상황 정보 인지(context-awareness) 등에 기초하여 심층 신경망을 최적화시킬 수 있다.
다시 도 4 및 5를 참조하면, 모든 뎁스 와이즈 작업들이 완료되지 않고 일부 작업이 남아있는 경우(단계 S320: 예), 및 상기 제1 레이어에 대한 상기 조기 중단 이벤트가 발생하지 않은 경우에(단계 S410: 아니오), 남아 있는 나머지 작업을 실행한다(단계 S330).
이 때, 단계 S410 및 S420이 이미 수행된 적이 있는 경우라면, 즉 상기 제2 레이어에 포함되는 상기 복수의 제1 연산들 중 상기 일부만을 수행하고 상기 나머지를 중단한 적이 있는 경우라면, 작업 할당기(130)는 상기 복수의 제1 연산들 중 수행된 상기 일부의 결과를 기초로 상기 복수의 뎁스 와이즈 작업들 중 남아있는 작업을 할당할 수 있고, 이에 기초하여 남아있는 작업을 계속 실행할 수 있다.
구체적으로, 상기 제2 레이어가 컨볼루션 레이어인 경우에, 미리 정의된 임의의 위치에 풀링 데이터(예를 들어, 최대 값)를 기입할 수 있으며, 나머지 값들은 기입하지 않거나 0을 기입(zeroing)할 수 있다. 또한, RELU, Bias add, 풀링과 같은 액티베이션 함수(activation function)를 통합 처리할 수 있다. 예를 들어, 상기 제1 및 제2 레이어들 이후에 배치되는 Bias add 레이어는 미리 정의된 풀링 데이터 위치에 대해서만 add 연산을 수행할 수 있고, 상기 제1 및 제2 레이어들 이후에 배치되는 최대 값 풀링 레이어는 미리 정의된 풀링 데이터 위치를 출력에 복사할 수 있다.
한편, 모든 뎁스 와이즈 작업들이 완료된 경우에(단계 S320: 아니오), 이후에 수행될 다른 작업들을 위해 컨텍스트 관리기(150)는 시스템(100)의 동작 상태에 기초하여 실시간 상황 정보(CI)를 업데이트할 수 있고(단계 S500), 조기 중단 제어기(120)는 업데이트된 실시간 상황 정보(CI)에 기초하여 하이퍼 파라미터(HP)를 실시간으로 업데이트할 수 있다(단계 S600).
이후에 다른 뎁스 와이즈 작업들을 실행하고자 하는 경우에, 작업 할당기(130)는 업데이트된 하이퍼 파라미터(HP)에 기초하여 다른 뎁스 와이즈 커맨드들을 발생하고(단계 S310), 상기 다른 뎁스 와이즈 커맨드들(DWJC)에 기초하여 상기 다른 뎁스 와이즈 작업들이 복수의 리소스들(142, 143, 144, 145, 146, 147)에 할당되며, 복수의 리소스들(142, 143, 144, 145, 146, 147)은 상기 다른 뎁스 와이즈 작업들을 실행한다.
도 5의 단계 S310, S320 및 S330은 도 1의 단계 S300에 대응할 수 있다. 도 5의 단계 S410 및 S420은 도 1의 단계 S400에 대응할 수 있다.
상술한 본 발명들의 실시예들에 따른 심층 신경망의 연산 제어 방법을 적용하였을 때 구현 가능한 시나리오의 예들을 하기와 같이 예시할 수 있다.
일 실시예에서, 심층 신경망은 제1 풀링 레이어를 포함할 수 있다. 상기 제1 풀링 레이어는 4*4 최대 값 필터를 이용하는 최대 값 풀링 레이어일 수 있다.
심층 신경망의 동작 초기에, 상기 제1 풀링 레이어에 대해서 추적할 개수가 2개이고 추적할 뎁스의 범위가 70%가 되도록 하이퍼 파라미터(HP)의 초기 값(default)을 설정할 수 있다. 구체적으로, 상기 제1 풀링 레이어보다 먼저 배치되는 제1 컨볼루션 레이어의 첫 번째 뎁스부터 70% 지점의 뎁스까지만 연산을 수행하여 16개의 값들 중 가장 큰 두 개의 값들의 위치를 파악한 후에, 상기 가장 큰 두 개의 값들에 대해서만 연산을 지속하고 나머지는 연산을 멈출 수 있다.
심층 신경망을 구동하는 동안에, 시스템에 전력을 공급하는 배터리의 잔량이 부족하고 어플리케이션의 요구사항보다 높은 정확도를 제공하는 것으로 실시간 상황 정보(CI)가 수집될 수 있다. 이러한 실시간 상황 정보(CI)에 기초하여, 상기 제1 풀링 레이어에 대해서 추적할 개수가 2개이고 추적할 뎁스의 범위가 30%가 되도록 하이퍼 파라미터(HP)를 업데이트할 수 있다.
다른 실시예에서, 심층 신경망은 제2 풀링 레이어를 포함할 수 있다. 상기 제2 풀링 레이어는 3*3 평균 값 필터를 이용하는 평균 값 풀링 레이어일 수 있다.
심층 신경망의 동작 초기에, 상기 제2 풀링 레이어에 대해서 평균을 포함할 플로우의 개수가 5개이고 플로우 선정 방법은 중간 값이 되도록 하이퍼 파라미터(HP)의 초기 값을 설정할 수 있다. 구체적으로, 상기 제2 풀링 레이어보다 먼저 배치되는 제2 컨볼루션 레이어의 평균 값을 구하기 위한 9개의 플로우들 중 5번째 플로우가 연산 완료되면 나머지 4개의 플로우들에 대한 연산을 멈추며, 연산 완료된 5개의 플로우들 중 중간 값만 연산을 지속할 수 있다.
심층 신경망을 구동하는 동안에, 각 리소스의 이용 상태가 상대적으로 낮고 레이턴시가 상대적으로 긴 것으로 실시간 상황 정보(CI)가 수집될 수 있다. 이러한 실시간 상황 정보(CI)에 기초하여, 상기 제2 풀링 레이어에 대해서 평균을 포함할 플로우의 개수가 7개이고 플로우 선정 방법은 3% 이하의 세 개의 차이 값들이 되도록 하이퍼 파라미터(HP)를 업데이트할 수 있다.
본 발명의 실시예들에 따른 심층 신경망의 연산 제어 방법 및 시스템에서, 풀링 레이어의 이전 레이어에 대한 연산을 미리 정해진 것보다 일찍 중단함으로써, 정확도를 유지하면서 연산량이 감소될 수 있고, 시스템의 성능, 전력 소모, 메모리 풋프린트(footprint), 메모리 대역폭(bandwidth) 등 대부분의 지표가 개선될 수 있다. 상술한 조기 중단 기능을 하이퍼 파라미터로 설정할 수 있으며, 어플리케이션의 요구사항, 하드웨어의 용량, 상황 정보 인지 등에 기초하여, 합리적인 정확도와 레이턴시를 설정하고 정확도와 비용 사이의 트레이드 오프를 조절함으로써, 심층 신경망을 최적화시킬 수 있다.
본 발명에 따르면, 종래 기술 대비 연산량이 감소하고 레이턴시가 개선(즉, 감소)되며 정확도는 동등하거나 개선될 수 있다. 한편, 상기 제2 레이어보다 더 이전의 레이어들에 대해서는 사용하지 않는 데이터를 위한 모든 연산이 불필요할 수 있고, 2*2 최대 값 풀링 레이어를 기준으로 연산량 및 메모리 독출량이 약 1/4로 감소할 수 있다. 한편, 심층 신경망에 포함되는 풀링 레이어의 개수가 증가하고 풀링 레이어마다 본 발명을 적용하였을 때 본 발명에 의한 효과가 보다 클 수 있다.
도 7은 본 발명의 실시예들에 따른 심층 신경망의 연산 제어 시스템을 나타내는 블록도이다.
도 7을 참조하면, 심층 신경망의 연산 제어 시스템(100a)은 제1 모델 분석기(110), 제1 조기 중단 제어기(120), 제1 작업 할당기(130) 및 복수의 리소스들(142, 143, 144, 145, 146, 147)을 포함한다. 심층 신경망의 연산 제어 시스템(100a)은 리소스 관리기(141), 컨텍스트 관리기(150), 제2 모델 분석기(210), 제2 조기 중단 제어기(220) 및 제2 작업 할당기(230)를 더 포함할 수 있다.
제2 모델 분석기(210), 제2 조기 중단 제어기(220) 및 제2 작업 할당기(230)를 더 포함하는 것을 제외하면, 도 7의 심층 신경망의 연산 제어 시스템(100a)은 도 4의 심층 신경망의 연산 제어 시스템(100)과 실질적으로 동일할 수 있다. 도 7의 제1 모델 분석기(110), 제1 조기 중단 제어기(120), 제1 작업 할당기(130), 복수의 리소스들(142, 143, 144, 145, 146, 147), 리소스 관리기(141) 및 컨텍스트 관리기(150)는 도 4의 모델 분석기(110), 조기 중단 제어기(120), 작업 할당기(130), 복수의 리소스들(142, 143, 144, 145, 146, 147), 리소스 관리기(141) 및 컨텍스트 관리기(150)와 각각 실질적으로 동일할 수 있다.
제2 모델 분석기(210)는 심층 신경망의 네트워크 구조(NSI)를 분석할 수 있다. 제2 조기 중단 제어기(220)는 네트워크 구조(NSI) 및 실시간 상황 정보(CI)에 기초하여 하이퍼 파라미터(HP')를 설정할 수 있다. 제2 작업 할당기(230)는 하이퍼 파라미터(HP')에 기초하여 상기 복수의 뎁스 와이즈 작업들을 할당하기 위한 복수의 뎁스 와이즈 커맨드들(DWJC')을 발생할 수 있다.
일 실시예에서, 제2 모델 분석기(210), 제2 조기 중단 제어기(220) 및 제2 작업 할당기(230)는 상기 심층 신경망의 동작 초기에 이용될 수 있고, 제1 모델 분석기(110), 제1 조기 중단 제어기(120) 및 제1 작업 할당기(130)는 상기 심층 신경망이 구동되는 동안에 이용될 수 있다. 예를 들어, 제2 모델 분석기(210), 제2 조기 중단 제어기(220) 및 제2 작업 할당기(230)는 하이퍼 파라미터(HP')의 초기 값을 설정하는데 이용될 수 있고, 제1 모델 분석기(110), 제1 조기 중단 제어기(120) 및 제1 작업 할당기(130)는 하이퍼 파라미터(HP)를 실시간으로 업데이트하는데 이용될 수 있다.
일 실시예에서, 제1 모델 분석기(110), 제1 조기 중단 제어기(120), 제1 작업 할당기(130), 복수의 리소스들(142, 143, 144, 145, 146, 147), 리소스 관리기(141) 및 컨텍스트 관리기(150)는 제1 기기(101)에 포함될 수 있고, 제2 모델 분석기(210), 제2 조기 중단 제어기(220) 및 제2 작업 할당기(230)는 제2 기기(201)에 포함될 수 있다. 제2 기기(201)는 제1 기기(101)와 물리적으로 구분될 수 있다.
실시예에 따라서, 도 4 및 7에 도시된 모델 분석기들(110, 210), 조기 중단 제어기들(120, 220), 작업 할당기들(130, 230), 리소스 관리기(141) 및 컨텍스트 관리기(150)의 일부 또는 전부는 하드웨어의 형태로 구현될 수도 있고, 소프트웨어(즉, 프로그램)의 형태로 구현되어 저장 장치에 저장될 수도 있다.
실시예에 따라서, 본 발명의 심층 신경망의 연산 제어 방법은, 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 포함하는 제품 등의 형태로 구현될 수도 있다. 상기 컴퓨터로 판독 가능한 프로그램 코드는 다양한 컴퓨터 또는 다른 데이터 처리 장치의 프로세서로 제공될 수 있다. 상기 컴퓨터로 판독 가능한 매체는 컴퓨터로 판독 가능한 신호 매체 또는 컴퓨터로 판독 가능한 기록 매체일 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 명령어 실행 시스템, 장비 또는 장치 내에 또는 이들과 접속되어 프로그램을 저장하거나 포함할 수 있는 임의의 유형적인 매체일 수 있다.
본 발명은 인공 신경망이 구현될 수 있는 다양한 장치 및 시스템에 적용될 수 있다. 예를 들어, 본 발명은 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular), 스마트폰(smart phone), MP3 플레이어, PDA(personal digital assistants), PMP(portable multimedia player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, 사물 인터넷(internet of things; IoT) 기기, VR(virtual reality) 기기, AR(augmented reality) 기기 등과 같은 다양한 전자 기기에 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 복수의 레이어(layer)들을 포함하는 심층 신경망(deep neural network; DNN)의 네트워크 구조를 분석하는 단계;
    상기 네트워크 구조 및 상기 심층 신경망을 구동하기 위한 시스템의 실시간 상황(real-time context) 정보에 기초하여, 조기 중단(early-stop) 기능을 수행하는데 이용되는 하이퍼 파라미터(hyper parameter)를 설정하는 단계;
    상기 하이퍼 파라미터에 기초하여, 복수의 연산(computing)들을 각각 포함하는 복수의 뎁스 와이즈 작업(depth-wise job)들을 상기 시스템에 포함되는 복수의 리소스들에 할당하고 실행하는 단계; 및
    상기 복수의 뎁스 와이즈 작업들을 실행하는 도중에 상기 복수의 레이어들 중 제1 레이어에 대한 조기 중단 이벤트가 발생하는 경우에, 상기 제1 레이어보다 먼저 배치되는 적어도 하나의 제2 레이어에 포함되는 복수의 제1 연산들 중 일부만을 수행하고 나머지를 중단하는 단계를 포함하는 심층 신경망의 연산 제어 방법.
  2. 제 1 항에 있어서,
    상기 시스템의 동작 상태에 기초하여 상기 실시간 상황 정보를 업데이트하는 단계; 및
    상기 업데이트된 실시간 상황 정보에 기초하여 상기 하이퍼 파라미터를 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 심층 신경망의 연산 제어 방법.
  3. 제 1 항에 있어서, 상기 제1 레이어는,
    상기 제1 레이어에 입력되는 제1 볼륨 데이터의 미리 정해진 영역에 포함되는 복수의 특성 값들 중에서 최대 값을 선택하는 최대 값 풀링(max pooling) 레이어인 것을 특징으로 하는 심층 신경망의 연산 제어 방법.
  4. 제 3 항에 있어서,
    상기 복수의 뎁스 와이즈 작업들을 실행하기 전에, 트레이닝(training) 동작을 수행하여 상기 최대 값의 위치를 미리 결정하는 것을 특징으로 하는 심층 신경망의 연산 제어 방법.
  5. 제 3 항에 있어서,
    상기 복수의 뎁스 와이즈 작업들을 실행하는 도중에, 상기 제2 레이어를 실시간 추적하여(tracking) 상기 최대 값의 위치를 결정하는 것을 특징으로 하는 심층 신경망의 연산 제어 방법.
  6. 제 1 항에 있어서, 상기 제1 레이어는,
    상기 제1 레이어에 입력되는 제1 볼륨 데이터의 미리 정해진 영역에 포함되는 복수의 특성 값들의 평균 값을 획득하는 평균 값 풀링(average pooling) 레이어인 것을 특징으로 하는 심층 신경망의 연산 제어 방법.
  7. 제 1 항에 있어서,
    상기 복수의 제1 연산들 중 상기 일부만을 수행하고 상기 나머지를 중단한 이후에, 상기 복수의 제1 연산들 중 수행된 상기 일부의 결과를 기초로 상기 복수의 뎁스 와이즈 작업들 중 남아있는 작업을 계속 실행하는 것을 특징으로 하는 심층 신경망의 연산 제어 방법.
  8. 복수의 레이어(layer)들을 포함하는 심층 신경망(deep neural network; DNN)의 네트워크 구조를 분석하는 제1 모델 분석기;
    상기 네트워크 구조 및 상기 심층 신경망을 구동하기 위한 시스템의 실시간 상황(real-time context) 정보에 기초하여, 조기 중단(early-stop) 기능을 수행하는데 이용되는 하이퍼 파라미터(hyper parameter)를 설정하는 제1 조기 중단 제어기;
    상기 하이퍼 파라미터에 기초하여, 복수의 연산(computing)들을 각각 포함하는 복수의 뎁스 와이즈 작업(depth-wise job)들을 할당하는 제1 작업 할당기; 및
    상기 복수의 뎁스 와이즈 작업들을 실행하고, 상기 복수의 뎁스 와이즈 작업들을 실행하는 도중에 상기 복수의 레이어들 중 제1 레이어에 대한 조기 중단 이벤트가 발생하는 경우에, 상기 제1 레이어보다 먼저 배치되는 적어도 하나의 제2 레이어에 포함되는 복수의 제1 연산들 중 일부만을 수행하고 나머지를 중단하는 복수의 리소스들을 포함하는 심층 신경망의 연산 제어 시스템.
  9. 제 8 항에 있어서,
    상기 네트워크 구조를 분석하는 제2 모델 분석기;
    상기 네트워크 구조 및 상기 실시간 상황 정보에 기초하여 상기 하이퍼 파라미터를 설정하는 제2 조기 중단 제어기; 및
    상기 하이퍼 파라미터에 기초하여 상기 복수의 뎁스 와이즈 작업들을 할당하는 제2 작업 할당기를 더 포함하는 것을 특징으로 하는 심층 신경망의 연산 제어 시스템.
  10. 제 9 항에 있어서,
    상기 제2 모델 분석기, 상기 제2 조기 중단 제어기 및 상기 제2 작업 할당기는 상기 하이퍼 파라미터의 초기 값을 설정하는데 이용되고,
    상기 제1 모델 분석기, 상기 제1 조기 중단 제어기 및 상기 제1 작업 할당기는 상기 하이퍼 파라미터를 실시간으로 업데이트하는데 이용되는 것을 특징으로 하는 심층 신경망의 연산 제어 시스템.
KR1020170135461A 2017-10-18 2017-10-18 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템 KR102521054B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170135461A KR102521054B1 (ko) 2017-10-18 2017-10-18 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템
US16/025,546 US11586903B2 (en) 2017-10-18 2018-07-02 Method and system of controlling computing operations based on early-stop in deep neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170135461A KR102521054B1 (ko) 2017-10-18 2017-10-18 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20190043419A true KR20190043419A (ko) 2019-04-26
KR102521054B1 KR102521054B1 (ko) 2023-04-12

Family

ID=66096547

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170135461A KR102521054B1 (ko) 2017-10-18 2017-10-18 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템

Country Status (2)

Country Link
US (1) US11586903B2 (ko)
KR (1) KR102521054B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102147912B1 (ko) * 2019-08-13 2020-08-25 삼성전자주식회사 프로세서 칩 및 그 제어 방법들
US11511772B2 (en) 2021-04-30 2022-11-29 Deepx Co., Ltd. NPU implemented for artificial neural networks to process fusion of heterogeneous data received from heterogeneous sensors
US11562220B2 (en) 2021-04-14 2023-01-24 Deepx Co., Ltd. Neural processing unit capable of reusing data and method thereof

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10572773B2 (en) * 2017-05-05 2020-02-25 Intel Corporation On the fly deep learning in machine learning for autonomous machines
US11562200B2 (en) * 2019-02-04 2023-01-24 Intel Corporation Deep learning inference efficiency technology with early exit and speculative execution
US11216731B2 (en) * 2019-04-10 2022-01-04 Alexander Fairhart Apparatus and process for visual recognition
CN110163295A (zh) * 2019-05-29 2019-08-23 四川智盈科技有限公司 一种基于提前终止的图像识别推理加速方法
GB2604640A (en) * 2021-03-12 2022-09-14 Samsung Electronics Co Ltd Performing a processing task instructed by an application
US20230308467A1 (en) * 2022-03-24 2023-09-28 At&T Intellectual Property I, L.P. Home Gateway Monitoring for Vulnerable Home Internet of Things Devices

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170228639A1 (en) * 2016-02-05 2017-08-10 International Business Machines Corporation Efficient determination of optimized learning settings of neural networks

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2044842A (en) 1931-06-22 1936-06-23 Ncr Co Accounting machine
US2243473A (en) 1936-07-08 1941-05-27 Ibm Dividing machine
US3363331A (en) 1963-02-21 1968-01-16 Gen Precision Systems Inc Flight simulator
US3434115A (en) 1966-07-15 1969-03-18 Ibm Timed operation sequence controller
US3753234A (en) 1972-02-25 1973-08-14 Reliance Electric Co Multicomputer system with simultaneous data interchange between computers
US4930102A (en) 1983-04-29 1990-05-29 The Regents Of The University Of California Dynamic activity-creating data-driven computer architecture
US4613941A (en) 1985-07-02 1986-09-23 The United States Of America As Represented By The Secretary Of The Army Routing method in computer aided customization of a two level automated universal array
US4827462A (en) 1987-03-26 1989-05-02 International Business Machines Corporation Modular data storage directories for large-capacity data storage units
US4980828A (en) 1988-11-25 1990-12-25 Picker International, Inc. Medical imaging system including use of DMA control for selective bit mapping of DRAM and VRAM memories
JPH02151471A (ja) 1988-12-02 1990-06-11 Canon Inc 記録装置
US5163129A (en) 1989-10-06 1992-11-10 Sun Microsystems, Inc. Method for expediting the rendering of figures in a move-draw language
US5249061A (en) 1990-12-21 1993-09-28 Canon Kabushiki Kaisha Color image printer with adaptive color process
US5353061A (en) 1992-10-08 1994-10-04 International Business Machines Corporation System and method for frame-differencing video compression/decompression using perceptually-constant information and image analysis
US5568606A (en) 1994-10-11 1996-10-22 International Business Machines Corporation Method and apparatus for maximizing effective disk capacity using adaptive skewing
US5761501A (en) 1995-10-02 1998-06-02 Digital Equipment Corporation Stacked skip list data structures
JPH09131931A (ja) 1995-11-10 1997-05-20 Brother Ind Ltd プリンタ制御装置
US5848423A (en) 1997-04-23 1998-12-08 Sun Microsystems, Inc. Garbage collection system and method for locating root set pointers in method activation records
US5986677A (en) 1997-09-30 1999-11-16 Compaq Computer Corporation Accelerated graphics port read transaction merging
US6496943B1 (en) 1998-04-17 2002-12-17 Seagate Technology Llc Apparatus and method for efficient defect management in a magneto-optical data storage system
US6542584B1 (en) 1998-08-31 2003-04-01 Intel Corporation Digital telephone system with automatic voice mail redirection
US6141380A (en) 1998-09-18 2000-10-31 Sarnoff Corporation Frame-level rate control for video compression
DE60001993T2 (de) 1999-01-27 2004-01-08 Matsushita Electric Industrial Co., Ltd., Kadoma Audiovisueller Daten und Rechnerdaten Aufzeichnungsverfahren und Wiedergabeverfahren, und Aufzeichnungsgerät und Wiedergabegerät, Informationsaufzeichnungssystem und Informationswiedergabesystem, und Informationsaufzeichnungsträger zur Anwendung dieser Verfahren
US6324631B1 (en) 1999-06-17 2001-11-27 International Business Machines Corporation Method and system for detecting and coalescing free areas during garbage collection
AU1197401A (en) 1999-10-15 2001-04-30 Cadence Design Systems, Inc. Database for electronic design automation applications
US6704692B1 (en) 1999-10-25 2004-03-09 The Boeing Company Method and system for tracking multiple objects
SG99891A1 (en) 2000-02-25 2003-11-27 Seagate Technology Llc Variable spares per track defect management system
KR100430567B1 (ko) 2000-10-11 2004-05-10 한국전자통신연구원 주소발생기를 포함한 인터리빙/디인터리빙 수행 장치 및그 방법과 그를 이용한 채널 부호화 시스템
US7039834B1 (en) 2000-12-21 2006-05-02 Unisys Corporation High speed processor interconnect tracing compaction using selectable triggers
US6697968B1 (en) 2000-12-21 2004-02-24 Unisys Corporation System and method for high speed, low cost address and bus signal tracing
US6970640B2 (en) 2001-05-14 2005-11-29 Microsoft Corporation Systems and methods for playing digital video in reverse and fast forward modes
US7111084B2 (en) 2001-12-28 2006-09-19 Hewlett-Packard Development Company, L.P. Data storage network with host transparent failover controlled by host bus adapter
US6909384B2 (en) 2002-01-31 2005-06-21 Microsoft Corporation Generating and searching compressed data
JP4035339B2 (ja) 2002-02-06 2008-01-23 キヤノン株式会社 原稿読取装置
US6990150B2 (en) 2002-05-14 2006-01-24 Enseo, Inc. System and method for using a High-Definition MPEG decoder to extract multiple Standard Definition frames from a High-Definition frame
US20040070616A1 (en) 2002-06-02 2004-04-15 Hildebrandt Peter W. Electronic whiteboard
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US7363540B2 (en) 2002-10-22 2008-04-22 Microsoft Corporation Transaction-safe FAT file system improvements
CN1860787A (zh) 2003-09-29 2006-11-08 手持娱乐公司 用于编码信息的方法和装置
US8705550B2 (en) 2005-08-08 2014-04-22 Qualcomm Incorporated Device interface architecture and protocol
KR20080030678A (ko) 2005-08-09 2008-04-04 샤프 가부시키가이샤 데이터 기록 장치, 데이터 재생 장치, 및 컴퓨터 판독 가능한 기록 매체
US20070083467A1 (en) 2005-10-10 2007-04-12 Apple Computer, Inc. Partial encryption techniques for media data
US20090135309A1 (en) 2007-11-28 2009-05-28 Matsushita Electric Industrial Co., Ltd. Method and apparatus for speeding up atsc channel searching
US7979844B2 (en) 2008-10-14 2011-07-12 Edss, Inc. TICC-paradigm to build formally verified parallel software for multi-core chips
US8745353B2 (en) 2009-10-23 2014-06-03 Seagate Technology Llc Block boundary resolution for mismatched logical and physical block sizes
US8285965B2 (en) 2009-11-20 2012-10-09 Western Digital Technologies, Inc. Aligning data storage device partition to boundary of physical data sector
JP5721344B2 (ja) 2010-05-07 2015-05-20 キヤノン株式会社 システム、システムの制御方法、及び、プログラム
JP2012034356A (ja) 2010-07-02 2012-02-16 Panasonic Corp 画像符号化装置、画像符号化方法、プログラムおよび集積回路
US9516379B2 (en) 2011-03-08 2016-12-06 Qualcomm Incorporated Buffer management in video codecs
WO2013076782A1 (en) 2011-11-25 2013-05-30 Hitachi, Ltd. Storage apparatus and its control method
US8527276B1 (en) 2012-10-25 2013-09-03 Google Inc. Speech synthesis using deep neural networks
JP6160173B2 (ja) 2013-03-28 2017-07-12 富士通株式会社 ストレージ装置、割当解放制御方法及び割当解放制御プログラム
US20170116498A1 (en) * 2013-12-04 2017-04-27 J Tech Solutions, Inc. Computer device and method executed by the computer device
WO2015132665A2 (en) 2014-03-07 2015-09-11 Wolf, Lior System and method for the detection and counting of repetitions of repetitive activity via a trained network
US9846836B2 (en) 2014-06-13 2017-12-19 Microsoft Technology Licensing, Llc Modeling interestingness with deep neural networks
WO2016145516A1 (en) 2015-03-13 2016-09-22 Deep Genomics Incorporated System and method for training neural networks
US9633306B2 (en) 2015-05-07 2017-04-25 Siemens Healthcare Gmbh Method and system for approximating deep neural networks for anatomical object detection
US20160328645A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
US10410096B2 (en) 2015-07-09 2019-09-10 Qualcomm Incorporated Context-based priors for object detection in images
US20180053091A1 (en) * 2016-08-17 2018-02-22 Hawxeye, Inc. System and method for model compression of neural networks for use in embedded platforms
US10108902B1 (en) * 2017-09-18 2018-10-23 CS Disco, Inc. Methods and apparatus for asynchronous and interactive machine learning using attention selection techniques

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170228639A1 (en) * 2016-02-05 2017-08-10 International Business Machines Corporation Efficient determination of optimized learning settings of neural networks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Surat Teerapittayanon, BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks, arXiv:1709.01686v1, 1-7pages (2017. 9. 6.)* *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102147912B1 (ko) * 2019-08-13 2020-08-25 삼성전자주식회사 프로세서 칩 및 그 제어 방법들
US11681904B2 (en) 2019-08-13 2023-06-20 Samsung Electronics Co., Ltd. Processor chip and control methods thereof
US11842265B2 (en) 2019-08-13 2023-12-12 Samsung Electronics Co., Ltd. Processor chip and control methods thereof
US11562220B2 (en) 2021-04-14 2023-01-24 Deepx Co., Ltd. Neural processing unit capable of reusing data and method thereof
US11511772B2 (en) 2021-04-30 2022-11-29 Deepx Co., Ltd. NPU implemented for artificial neural networks to process fusion of heterogeneous data received from heterogeneous sensors
US11731656B2 (en) 2021-04-30 2023-08-22 Deepx Co., Ltd. NPU implemented for artificial neural networks to process fusion of heterogeneous data received from heterogeneous sensors

Also Published As

Publication number Publication date
KR102521054B1 (ko) 2023-04-12
US11586903B2 (en) 2023-02-21
US20190114541A1 (en) 2019-04-18

Similar Documents

Publication Publication Date Title
KR20190043419A (ko) 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템
JP6983154B2 (ja) 計算グラフの処理
US11928595B2 (en) Method of managing data representation for deep learning, method of processing data for deep learning and deep learning system performing the same
JP7366274B2 (ja) ニューラル・ネットワークのための適応的探索方法および装置
CN111176820B (zh) 一种基于深度神经网络的边缘计算任务的分配方法及装置
CN107766292B (zh) 一种神经网络处理方法及处理系统
WO2022042113A1 (zh) 数据处理方法、装置、电子设备及存储介质
CN108304926B (zh) 一种适用于神经网络的池化计算装置及方法
JP2024506073A (ja) モノのインターネット機器ベースのタスク割り当て方法、ネットワーク訓練方法及びその装置
JP2022502747A (ja) 畳み込みニューラルネットワークの畳み込み処理方法、装置及び記憶媒体
TWI824485B (zh) 最佳化神經網路模型的方法
CN113645637A (zh) 超密集网络任务卸载方法、装置、计算机设备和存储介质
CN114091589B (zh) 模型训练方法、装置、电子设备及介质
CN114355793B (zh) 用于车辆仿真评测的自动驾驶规划模型的训练方法及装置
CN113159188B (zh) 用于图像分类的模型生成方法、装置、设备及存储介质
EP4086818A1 (en) Method of optimizing neural network model that is pre-trained, method of providing a graphical user interface related to optimizing neural network model, and neural network model processing system performing the same
US20200410367A1 (en) Scalable Predictive Analytic System
CN113742457B (zh) 应答处理方法、装置、电子设备及存储介质
KR20200139909A (ko) 전자 장치 및 그의 연산 수행 방법
CN113961765B (zh) 基于神经网络模型的搜索方法、装置、设备和介质
WO2022251265A1 (en) Dynamic activation sparsity in neural networks
KR102161690B1 (ko) 전자 장치 및 그 제어 방법
KR102445230B1 (ko) 태스크 모델 및 자연어 처리 모델의 학습 방법, 및 이를 수행하는 학습 장치
CN115688893A (zh) 内存调度方法及装置、电子设备和存储介质
KR20230085830A (ko) 실행시간 할당 장치 및 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right