KR20220078290A - 뉴럴 네트워크 연산 스케줄링 방법 및 장치 - Google Patents

뉴럴 네트워크 연산 스케줄링 방법 및 장치 Download PDF

Info

Publication number
KR20220078290A
KR20220078290A KR1020200167681A KR20200167681A KR20220078290A KR 20220078290 A KR20220078290 A KR 20220078290A KR 1020200167681 A KR1020200167681 A KR 1020200167681A KR 20200167681 A KR20200167681 A KR 20200167681A KR 20220078290 A KR20220078290 A KR 20220078290A
Authority
KR
South Korea
Prior art keywords
layer
data
neural network
tiles
size
Prior art date
Application number
KR1020200167681A
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 KR1020200167681A priority Critical patent/KR20220078290A/ko
Priority to CN202110640130.1A priority patent/CN114595812A/zh
Priority to US17/467,890 priority patent/US20220179714A1/en
Publication of KR20220078290A publication Critical patent/KR20220078290A/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

뉴럴 네트워크 연산 스케줄링 방법 및 장치가 개시된다. 일 실시예에 따른 뉴럴 네트워크 연산 스케줄링 방법은, 뉴럴 네트워크의 레이어에 관한 데이터를 수신하는 단계와, 상기 데이터를 분할함으로써 복수의 코어에 할당할 복수의 파티션(partition)을 생성하는 단계와, 상기 복수의 파티션을 분할하여 복수의 타일(tile)을 생성하는 단계와, 상기 복수의 코어 간의 데이터의 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 스케줄링하는 단계를 포함한다.

Description

뉴럴 네트워크 연산 스케줄링 방법 및 장치{NEURAL NETWORK OPERATION SCHEDULING METHOD AND APPARATUS}
아래 실시예들은 뉴럴 네트워크 연산 스케줄링 방법 및 장치에 관한 것이다.
두 개 이상의 독립적인 뉴럴 프로세서(neural processor)가 하나의 뉴럴 네트워크를 가속하고자 하는 경우, 특징맵(feature map) 또는 가중치(weight)를 분할하여 각각의 뉴럴 프로세서에서 연산을 수행해야 하는데, 이 때 복수의 뉴럴 프로세들 간의 중복되는 데이터가 존재하기 때문에 메모리 대역폭(memory bandwidth) 요구량이 커지게 된다.
서로 다른 뉴럴 프로세서가 하나의 뉴럴 네트워크를 분할하여 분할된 각각의 부분을 수행하는 경우, 연산 및 데이터 복사 등을 보장하기 위해 뉴럴 프로세서 사이의 동기화가 빈번하게 발생하여 성능의 저하가 수반될 수 있다.
종래의 방식과 같이 단일 뉴럴 프로세서만을 고려하는 경우, 코어들 간의 데이터 복사 및 지연 시간을 감추기 위한 타일 스케줄링을 고려할 수 없다는 문제가 있다. 따라서, 주어진 뉴럴 네트워크를 두 개 이상의 프로세서 사이에 적절히 분할하는 방법과 뉴럴 프로세서 내에서의 서브 네트워크 스케줄링이 동시에 고려될 필요가 있다.
일 실시예에 따른 뉴럴 네트워크 연산 스케줄링 방법은, 뉴럴 네트워크의 레이어에 관한 데이터를 수신하는 단계와, 상기 데이터를 분할함으로써 복수의 코어에 할당할 복수의 파티션(partition)을 생성하는 단계와, 상기 복수의 파티션을 분할하여 복수의 타일(tile)을 생성하는 단계와, 상기 복수의 코어 간의 데이터의 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 스케줄링하는 단계를 포함한다.
상기 데이터는, 상기 레이어의 입력 특징맵 또는 상기 레이어의 가중치(weight)를 포함할 수 있다.
상기 복수의 파티션을 생성하는 단계는, 상기 레이어의 이전 레이어의 파티션 정책 또는 상기 데이터의 크기에 기초하여 상기 복수의 파티션을 생성하는 단계를 포함할 수 있다.
상기 레이어의 이전 레이어의 파티션 정책 또는 상기 데이터의 크기에 기초하여 상기 복수의 파티션을 생성하는 단계는, 상기 이전 레이어의 출력이 포워딩 가능한 경우, 상기 이전 레이어의 파티션 정책에 기초하여 상기 복수의 파티션을 생성하는 단계와, 상기 이전 레이어의 출력이 포워딩 불가능한 경우, 상기 레이어의 입력 특징맵의 크기와 상기 레이어의 가중치의 크기를 비교하여 상기 복수의 파티션을 생성하는 단계를 포함할 수 있다.
상기 이전 레이어의 출력이 포워딩 불가능한 경우, 상기 레이어의 입력 특징맵의 크기와 상기 레이어의 가중치의 크기를 비교하여 상기 복수의 파티션을 생성하는 단계는, 상기 입력 특징맵 또는 상기 가중치가 상기 복수의 코어에 균등하게 분할되지 않는 경우, 메모리 크기로 인한 손실과 언밸런스로 인한 손실을 비교하여 상기 복수의 파티션을 생성하는 단계를 포함할 수 있다.
상기 복수의 타일을 생성하는 단계는, 상기 레이어의 이전 레이어의 파티션 정책, 상기 레이어의 파티션 정책, 상기 이전 레이어의 타일 분할 정책 또는 상기 데이터의 크기에 기초하여 복수의 타일을 생성하는 단계를 포함할 수 있다.
상기 레이어의 이전 레이어의 파티션 정책, 상기 레이어의 파티션 정책, 상기 이전 레이어의 타일 분할 정책, 또는 상기 데이터의 크기에 기초하여 복수의 타일을 생성하는 단계는, 상기 이전 레이어의 출력이 포워딩 가능한 경우, 상기 이전 레이어의 파티션 정책, 상기 레이어의 파티션 정책 및 상기 이전 레이어의 타일 분할 정책에 기초하여 상기 복수의 타일을 생성하는 단계와, 상기 이전 레이어의 출력이 포워딩 불가능한 경우, 상기 레이어의 입력 특징맵의 크기와 상기 레이어의 가중치의 크기를 비교하여 상기 복수의 타일을 생성하는 단계를 포함할 수 있다.
상기 복수의 파티션을 생성하는 단계는, 상기 데이터의 높이 또는 너비 방향으로 상기 데이터를 분할하는 단계를 포함할 수 있다.
상기 스케줄링하는 단계는, 상기 복수의 타일의 연산 결과에 대한 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 변경하는 단계를 포함할 수 있다.
상기 복수의 타일의 연산 결과에 대한 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 변경하는 단계는, 상기 복수의 타일에 포함된 하나의 타일의 연산 결과가 상기 하나의 타일이 할당된 코어와 다른 코어에 공유될 경우, 상기 하나의 타일을 우선적으로 연산하도록 상기 연산 순서를 변경하는 단계를 포함할 수 있다.
일 실시예에 따른 뉴럴 네트워크 연산 장치는, 뉴럴 네트워크의 레이어에 관한 데이터를 수신하는 수신기와, 상기 데이터를 분할함으로써 복수의 코어에 할당할 복수의 파티션(partition)을 생성하고, 상기 복수의 파티션을 분할하여 복수의 타일(tile)을 생성하고, 상기 복수의 코어 간의 데이터의 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 스케줄링하는 프로세서를 포함한다.
상기 데이터는, 상기 레이어의 입력 특징맵 또는 상기 레이어의 가중치(weight)를 포함할 수 있다.
상기 프로세서는, 상기 레이어의 이전 레이어의 파티션 정책 또는 상기 데이터의 크기에 기초하여 상기 복수의 파티션을 생성할 수 있다.
상기 프로세서는, 상기 이전 레이어의 출력이 포워딩 가능한 경우, 상기 이전 레이어의 파티션 정책에 기초하여 상기 복수의 파티션을 생성하고, 상기 이전 레이어의 출력이 포워딩 불가능한 경우, 상기 레이어의 입력 특징맵의 크기와 상기 레이어의 가중치의 크기를 비교하여 상기 복수의 파티션을 생성할 수 있다.
상기 프로세서는, 상기 입력 특징맵 또는 상기 가중치가 상기 복수의 코어에 균등하게 분할되지 않는 경우, 메모리 크기로 인한 손실과 언밸런스로 인한 손실을 비교하여 상기 복수의 파티션을 생성할 수 있다.
상기 프로세서는, 상기 레이어의 이전 레이어의 파티션 정책, 상기 레이어의 파티션 정책, 상기 이전 레이어의 타일 분할 정책, 또는 상기 데이터의 크기에 기초하여 복수의 타일을 생성할 수 있다.
상기 프로세서는, 상기 이전 레이어의 출력이 포워딩 가능한 경우, 상기 이전 레이어의 파티션 정책, 상기 레이어의 파티션 정책 및 상기 이전 레이어의 타일 분할 정책에 기초하여 상기 복수의 타일을 생성하고, 상기 이전 레이어의 출력이 포워딩 불가능한 경우, 상기 레이어의 입력 특징맵의 크기와 상기 레이어의 가중치의 크기를 비교하여 상기 복수의 타일을 생성할 수 있다.
상기 프로세서는, 상기 데이터의 높이 또는 너비 방향으로 상기 데이터를 분할할 수 있다.
상기 프로세서는, 상기 복수의 타일의 연산 결과에 대한 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 변경할 수 있다.
상기 프로세서는, 상기 복수의 타일에 포함된 하나의 타일의 연산 결과가 상기 하나의 타일이 할당된 코어와 다른 코어에 공유될 경우, 상기 하나의 타일을 우선적으로 연산하도록 상기 연산 순서를 변경할 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크 연산 스케줄링 장치의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 프로세서의 개략적인 블록도를 나타낸다.
도 3은 입력 및 출력 데이터의 예를 나타낸다.
도 4는 도 1에 도시된 프로세서의 분할 동작의 순서를 나타낸다.
도 5a는 데이터를 분할하여 복수의 코어에 할당하는 동작을 나타낸다.
도 5b는 데이터 분할의 예를 나타낸다.
도 6은 데이터를 분할하는 동작의 순서를 나타낸다.
도 7a는 복수의 코어에 할당된 파티션의 분할의 예를 나타낸다.
도 7b은 파티션 분할의 예를 나타낸다.
도 8은 파티션을 분할하는 동작의 순서를 나타낸다.
도 9a는 복수의 코어 간의 데이터 전송 지연 시간이 하이딩(hiding)되지 않은 스케줄링 결과의 예를 나타낸다.
도 9b는 복수의 코어 간의 데이터 전송 지연 시간이 하이딩된 스케줄링 결과의 예를 나타낸다.
도 10은 뉴럴 네트워크 연산 스케줄링 장치의 하드웨어 구현의 예를 나타낸다.
도 11은 브로드캐스팅 및 동기화를 설명하기 위한 도면이다.
도 12는 도 1에 도시된 뉴럴 네트워크 연산 스케줄링 장치의 동작의 순서도를 나타낸다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 뉴럴 네트워크 연산 스케줄링 장치의 개략적인 블록도를 나타낸다.
도 1을 참조하면, 뉴럴 네트워크 연산 스케줄링 장치(10)는 뉴럴 네트워크 연산에 대한 스케줄링(scheduling)을 수행할 수 있다. 뉴럴 네트워크 연산 스케줄링 장치(10)는 뉴럴 네트워크 연산을 분할하고, 복수의 뉴럴 프로세서(neural processor)에 뉴럴 네트워크 분할된 뉴럴 네트워크 연산을 할당함으로써 스케줄링을 수행할 수 있다.
뉴럴 네트워크 연산 스케줄링 장치(10)는 뉴럴 네트워크의 레이어에 관한 데이터를 수신하여 분할함으로써 뉴럴 네트워크 연산을 복수의 뉴럴 프로세서에 할당할 수 있다.
뉴럴 네트워크의 레이어에 관한 데이터는 뉴럴 네트워크의 레이어의 입력 특징맵 또는 레이어의 가중치를 포함할 수 있다.
뉴럴 네트워크(또는 인공 신경망)는 기계학습과 인지과학에서 생물학의 신경을 모방한 통계학적 학습 알고리즘을 포함할 수 있다. 뉴럴 네트워크는 시냅스의 결합으로 네트워크를 형성한 인공 뉴런(노드)이 학습을 통해 시냅스의 결합 세기를 변화시켜, 문제 해결 능력을 가지는 모델 전반을 의미할 수 있다.
뉴럴 네트워크는 복수의 레이어를 포함할 수 있다. 레이어는 복수의 노드를 포함할 수 있다.
뉴럴 네트워크는 심층 뉴럴 네트워크 (Deep Neural Network)를 포함할 수 있다. 뉴럴 네트워크는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network), 퍼셉트론(perceptron), FF(Feed Forward), RBF(Radial Basis Network), DFF(Deep Feed Forward), LSTM(Long Short Term Memory), GRU(Gated Recurrent Unit), AE(Auto Encoder), VAE(Variational Auto Encoder), DAE(Denoising Auto Encoder), SAE(Sparse Auto Encoder), MC(Markov Chain), HN(Hopfield Network), BM(Boltzmann Machine), RBM(Restricted Boltzmann Machine), DBN(Depp Belief Network), DCN(Deep Convolutional Network), DN(Deconvolutional Network), DCIGN(Deep Convolutional Inverse Graphics Network), GAN(Generative Adversarial Network), LSM(Liquid State Machine), ELM(Extreme Learning Machine), ESN(Echo State Network), DRN(Deep Residual Network), DNC(Differentiable Neural Computer), NTM(Neural Turning Machine), CN(Capsule Network), KN(Kohonen Network) 및 AN(Attention Network)를 포함할 수 있다.
뉴럴 네트워크 연산 스케줄링 장치(10)는 수신기(100) 및 프로세서(200)를 포함한다. 뉴럴 네트워크 연산 스케줄링 장치(10)는 메모리(300)를 더 포함할 수 있다.
수신기(100)는 뉴럴 네트워크의 레이어에 관한 데이터를 수신할 수 있다. 수신기(100)는 수신 인터페이스를 포함할 수 있다. 수신기(100)는 외부 또는 메모리(300)로부터 뉴럴 네트워크의 레이어에 관한 데이터를 수신할 수 있다. 수신기(100)는 수신한 데이터를 프로세서(200)로 출력할 수 있다.
프로세서(200)는 메모리(300)에 저장된 데이터를 처리할 수 있다. 프로세서(200)는 메모리(300)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(200)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.
"프로세서(200)"는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(200)는 복수의 뉴럴 프로세서를 포함할 수 있다. 또는 프로세서(200)는 복수의 뉴럴 프로세서와는 별도로 구현될 수 있다. 뉴럴 프로세서는 코어(core)를 포함할 수 있다.
프로세서(200)는 뉴럴 네트워크의 레이어에 관한 데이터를 분할함으로써 복수의 코어에 할당할 복수의 파티션(partition)을 생성할 수 있다. 프로세서(200)는 레이어의 이전 레이어의 파티션 정책 또는 데이터의 크기에 기초하여 복수의 파티션을 생성할 수 있다.
프로세서(200)는 데이터의 높이 또는 너비 방향으로 데이터를 분할할 수 있다. 또한, 프로세서(200)는 데이터의 채널 또는 배치(batch)를 기준으로 데이터를 분할할 수도 있다. 다시 말해, 프로세서(200)는 데이터의 높이, 너비, 채널 또는 배치 방향으로 데이터를 분할함으로써 복수의 파티션을 생성할 수 있다.
프로세서(200)는 이전 레이어의 출력이 포워딩 가능한 경우, 이전 레이어의 파티션 정책에 기초하여 복수의 파티션을 생성할 수 있다.
프로세서(200)는 이전 레이어의 출력이 포워딩 불가능한 경우, 레이어의 입력 특징맵의 크기와 레이어의 가중치의 크기를 비교하여 복수의 파티션을 생성할 수 있다.
이 때, 프로세서(200)는 입력 특징맵 또는 가중치가 복수의 코어에 균등하게 분할되지 않는 경우, 메모리 크기로 인한 손실과 언밸런스로 인한 손실을 비교하여 복수의 파티션을 생성할 수 있다.
프로세서(200)는 생성한 복수의 파티션을 분할하여 복수의 타일을 생성할 수 있다. 프로세서(200)는 레이어의 이전 레이어의 파티션 정책, 레이어의 파티션 정책, 이전 레이어의 타일 분할 정책 또는 데이터의 크기에 기초하여 복수의 타일을 생성할 수 있다.
프로세서(200)는 이전 레이어의 출력이 포워딩 가능한 경우, 이전 레이어의 파티션 정책, 레이어의 파티션 정책 및 이전 레이어의 타일 분할 정책에 기초하여 복수의 타일을 생성할 수 있다.
프로세서(200)는 이전 레이어의 출력이 포워딩 불가능한 경우, 레이어의 입력 특징맵의 크기와 레이어의 가중치의 크기를 비교하여 복수의 타일을 생성할 수 있다.
프로세서(200)는 데이터의 높이 또는 너비 방향으로 파티션을 분할함으로써 복수의 타일을 생성할 수 있다.
프로세서(200)는 복수의 코어 간의 데이터의 공유 여부에 기초하여 복수의 타일의 연산 순서를 스케줄링할 수 있다. 프로세서(200)는 복수의 타일의 연산 결과에 대한 공유 여부에 기초하여 복수의 타일의 연산 순서를 변경할 수 있다. 프로세서(200)는 복수의 타일에 포함된 하나의 타일의 연산 결과가 하나의 타일이 할당된 코어와 다른 코어에 공유될 경우, 하나의 타일을 우선 적으로 연산하도록 연산 순서를 변경할 수 있다.
메모리(300)는 프로세서에 의해 실행가능한 인스트럭션들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서의 동작 및/또는 프로세서의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리(300)는 휘발성 메모리 장치 또는 불휘발성 메모리 장치로 구현될 수 있다.
휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
불휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive Bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노 튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM(PoRAM)), 나노 부유 게이트 메모리(Nano Floating Gate Memory(NFGM)), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Eelectronic Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
도 2는 도 1에 도시된 프로세서의 개략적인 블록도를 나타낸다.
도 2를 참조하면, 프로세서(200)는 인터-코어 파티셔닝 정책 결정기(210), 인트라-코어 파티셔닝 정책 결정기(230) 및 스케줄러(250)를 포함할 수 있다. 프로세서(200)는, 선택적으로, 동기화기(synchronizer)(270) 및 브로드캐스터(broadcaster)(290)를 더 포함할 수 있다.
인터-코어 파티셔닝 정책 결정기(inter-core partitioning policy determiner)(210)는 뉴럴 네트워크의 레이어에 관한 데이터를 분할함으로써 복수의 코어에 할당할 파티션을 생성할 수 있다. 인터-코어 파티셔닝 정책 결정기(210)는 데이터를 분할하기 위한 인터-코어 파티셔닝 정책을 결정하고, 결정한 정책에 따라 데이터를 분할할 수 있다.
인터-코어 파티셔닝 정책은 뉴럴 네트워크의 레이어에 관한 데이터를 분할하는 방식에 관한 정보를 포함할 수 있다. 예를 들어, 인터-코어 파티셔닝 정책은 데이터의 분할 방향, 분할을 통해 생성할 파티션의 개수, 데이터 상의 분할이 수행되는 위치 정보를 포함할 수 있다. 인터-코어 파티셔닝 정책 결정기(210)의 동작은 도 5a 내지 도 6을 참조하여 자세하게 설명한다.
인트라-코어 파티셔닝 정책 결정기(intra-core partitioning policy determiner)(230)는 데이터의 분할을 통해 생성된 파티션을 분할함으로써 복수의 타일(tile)을 생성할 수 있다. 인트라-코어 파티셔닝 정책 결정기(230)는 파티션을 분할하기 위한 인트라-코어 파티셔닝 정책을 결정하고, 결정한 정책에 따라 파티션을 분할할 수 있다.
인트라-코어 파티셔닝 정책은 파티션을 분할하는 방식에 관한 정보를 포함할 수 있다. 예를 들어, 인트라-코어 파티셔닝 정책은 파티션의 분할 방향, 분할을 통해 생성할 타일의 개수, 파티션 상의 분할이 수행되는 위치 정보를 포함할 수 있다. 인트라-코어 파티셔닝 정책 결정기(230)의 동작은 도 7a 내지 도 8의 동작을 참조하여 자세하게 설명한다.
스케줄러(250)는 분할된 타일의 연산 순서를 스케줄링할 수 있다. 스케줄러(250)는 복수의 코어 간의 데이터 공유 여부에 기초하여 복수의 타일의 연산 순서를 스케줄링할 수 있다.
스케줄러(250)는 복수의 코어에 분할된 타일을 할당하고, 그 연산 순서를 변경시킴으로써 스케줄링을 수행할 수 있다.
동기화기(270)는 복수의 코어 사이의 동기화를 수행할 수 있다. 동기화기(270)는 복수의 코어로부터 수신한 브로드캐스터(290)의 동기화 요청 및 복수의 코어 사이의 동기화를 보정할 수 있다.
브로드캐스터(290)는 메모리(300)로부터 데이터를 수신하여 복수의 코어에 수신한 데이터를 브로드캐스팅할 수 있다. 브로드캐스터(290)는 수신한 데이터를 한 번의 DMA(direct memory access)를 통해 복수의 코어에 전송할 수 있다.
동기화기(270) 및 브로드캐스터(290)의 동작은 도 10 및 도 11을 참조하여 자세하게 설명한다.
도 3은 입력 및 출력 데이터의 예를 나타내고, 도 4는 도 1에 도시된 프로세서의 분할 동작의 순서를 나타낸다.
도 3 및 도 4를 참조하면, 뉴럴 네트워크의 레이에 관한 데이터는 입력 특징맵(Input Feature Map)(IFM) 및 레이어의 가중치를 포함할 수 있다. 도 3의 예시는, 특징맵의 일 예를 나타낸다.
특징맵(310, 330)은 복수의 채널을 포함할 수 있고, 각각의 채널은 2차원 행렬의 형태를 가질 수 있다. 즉, 특징맵(310, 330)은 높이(height) 및 너비(width)를 가질 수 있다.
예를 들어, 특징맵(310)은 32개의 채널과 149의 높이 및 149의 너비를 가질 수 있고, 특징맵(330)은 32 개의 채널과 147의 높이 및 147의 너비를 가질 수 있다.
이 때, 특징맵(310)이 레이어를 통과한 후에 출력되는 출력 특징맵(Output Feature Map)(OFM)은 32 개의 채널, 147의 높이 147의 너비를 가질 수 있다. 또한, 특징맵(330)에 대한 레이어의 출력은 64 개의 채널, 147의 높이, 147의 너비를 가질 수 있다.
특징맵(310) 및 특징맵(330)을 처리하기 위한 레이어의 커널(또는, 가중치 필터)는 3×3의 행렬의 형태를 가질 수 있다.
인터-코어 파티셔닝 정책 결정기(210)는 입력 특징맵 또는 가중치를 분할함으로써 복수의 파티션을 생성할 수 있다. 인터-코어 파티셔닝 정책 결정기(210)는 N 번째 레이어를 수신하여 N 번째 레이어에 관한 데이터의 파티셔닝 정책을 결정할 수 있다.
파티셔닝 정책의 목표는 포워더빌리티(forwardability), 로드 밸런싱 및 대역폭의 확보를 포함할 수 있다. 포워더빌리티는 이전 레이어의 OFM을 로컬 메모리(예를 들어, SRAM)으로부터 글로벌 메모리(예를 들어, DRAM)으로 내리지 않고 그대로 로컬 메모리에 저장해 둔 채로 다음 레이어의 IFM을 재사용하는 것을 의미할 수 있다.
프로세서(200)는 지연(latency) 및 대역폭(bandwidth) 요구량을 줄이는 방향으로 인터-코어 파티셔닝 정책 및 인트라-코어 파티셔닝 정책을 결정하고, 이를 위해 포워더빌리티를 고려할 수 있다.
로드 밸런싱은 복수의 코어에 태스크(예를 들어, 연산)을 균등하게 할당하는 것을 의미할 수 있다.
대역폭(bandwidth)은 메모리 대역폭을 포함할 수 있다. 메모리 대역폭은 뉴럴 프로세서(예를 들어, 코어)가 데이터를 읽거나 메모리(300)에 저장하는 속도를 의미할 수 있다.
인터-코어 파티셔닝 정책 결정기(210)는 포워더빌리티, 로드 밸런싱 및 대역폭의 확보를 위하여 데이터의 파티셔닝 정책을 결정할 수 있다. 인터-코어 파티셔닝 정책 결정기(210)는 N 번째 레이어의 파티셔닝 정책을 결정하기 위해서 N-1 번째 파티셔닝 정책을 이용할 수 있다. 인터-코어 파티셔닝 정책 결정기(210)는 결정한 파티셔닝 정책에 기초하여 N 번째 레이어에 관한 데이터를 분할하여 복수의 파티션을 생성할 수 있다.
인터-코어 파티셔닝 정책 결정기(210)의 데이터 파티셔닝 동작은 도 5a 내지 도 6을 참조하여 자세하게 설명한다.
인트라-코어 파티셔닝 정책 결정기(230)는 인트라-코어 파티셔닝 정책을 결정할 수 있다. 인트라-코어 파티셔닝 정책 결정기(230)는 결정된 인트라-코어 파티셔닝 정책에 기초하여 생성된 파티션을 분할함으로써 복수의 타일을 생성할 수 있다.
인트라-코어 파티셔닝 정책의 목표는 할로(halo) 영역을 하이딩 하는 것 및 대역폭의 확보를 포함할 수 있다. 할로 영역은 다음 레이어의 연산을 수행하기 위해 하나의 코어에서 다른 코어로 전송되어야 하는 데이터의 영역 또는 전송 시간을 의미할 수 있다.
인트라-코어 파티셔닝 정책 결정기(230)는 할로 영역의 하이딩 및 대역폭의 확보를 위하여 파티션을 분할하기 위한 인트라-코어 파티셔닝 정책을 결정할 수 있다. 인트라-코어 파티셔닝 정책 결정기(230)는 N번째 레이어의 파티션들을 분할하기 위해 N-1 번째 레이어의 인트라-코어 파티셔닝 정책 및 N 번째 인터-코어 파티셔닝 정책을 이용할 수 있다.
인트라-코어 파티셔닝 정책 결정기(230)의 동작은 도 7a내지 도 8을 참조하여 자세하게 설명한다.
이하에서, 도 5a 내지 도 6을 참조하여 인터-코어 파티셔닝 정책 결정기(210)의 동작을 자세하게 설명한다.
도 5a는 데이터를 분할하여 복수의 코어에 할당하는 동작을 나타내고, 도 5b는 데이터 분할의 예를 나타내고, 도 6은 데이터를 분할하는 동작의 순서를 나타낸다.
도 5a 내지 도 6을 참조하면, 인터-코어 파티셔닝 정책 결정기(210)는 뉴럴 네트워크의 레이어에 관한 데이터를 분할하여 복수의 파티션을 생성할 수 있다. 이 때, 복수의 파티션은 복수의 코어(510 내지 550)에 할당될 수 있다.
하나의 코어는 하나의 뉴럴 프로세서에 대응될 수 있다. 뉴럴 프로세서는 코어 및 SRAM을 포함할 수 있다. 뉴럴 프로세서의 하드웨어 구현의 예는 도 10을 참조하여 자세하게 설명한다.
인터-코어 파티셔닝 정책 결정기(210)는 레이어의 입력 특징맵을 분할하여 복수의 파티션(571 내지 573)을 생성할 수 있다. 또한, 인터-코어 파티셔닝 정책 결정기(210)는 레이어의 가중치(591 내지 593)을 분할하여 복수의 파티션을 생성할 수 있다.
인터-코어 파티셔닝 정책 결정기(210)는 입력 특징맵을 높이 방향, 너비 방향, 채널 방향 또는 배치 방향으로 분할하여 복수의 파티션(571 내지 573)을 생성할 수 있다. 도 5a 및 도 5b의 예시는 입력 특징맵을 높이 방향으로 분할한 경우를 나타내지만 실시예에 따라 입력 특징맵은 너비 방향, 채널 방향 또는 배치 방향으로 분할될 수도 있다.
인터-코어 파티셔닝 정책 결정기(210)는 가중치(591 내지 593)을 각각 서로 다른 코어에 할당하기 위해 분할하여 복수의 파티션을 생성할 수 있다. 가중치(591 내지 593)가 분할될 경우, 하나의 입력 데이터가 복수의 코어(510 내지 550)에 모두 전송될 수 있다.
도 5a의 예시는 가중치(591 내지 593)를 각각의 커널에 따라 분할한 경우를 나타내지만, 실시예에 따라 가중치(591 내지 593)는 높이, 너비, 채널 또는 배치 방향으로 분할될 수도 있다.
구체적으로, 인터-코어 파티셔닝 정책 결정기(210)는 N-1 번째 레이어가 포워딩 가능한지 여부를 판단할 수 있다(610). 즉, 인터-코어 파티셔닝 정책 결정기(210)는 이전 레이어의 파티셔닝 정책 및 스케줄링 방식을 유지한 채로 현재 레이어에 대한 연산이 수행 가능한지 여부를 판단할 수 있다.
N-1 번째 레이어가 포워딩 가능한 경우, 인터-코어 파티셔닝 정책 결정기(210)는 N-1 번째 레이어의 인터-코어 파티셔닝 정책이 입력 특징맵을 분할하는 것인지를 판단할 수 있다(611). N-1 번째 레이어의 인토-코어 파티셔닝 정책이 입력 특징맵을 분할하는 것일 경우, 인터-코어 파티셔닝 정책 결정기(210)는 N 번째 레이어의 입력 특징맵을 분할할 수 있다(612).
N-1 번째 레이어의 인터-코어 파티셔닝 정책이 입력 특징맵을 분할하는 것이 아닐 경우, 인터-코어 파티셔닝 정책 결정기(210)는 N-1 번째 레이어의 인터-코어 파티셔닝 정책이 가중치를 분할하는 것인지 여부를 판단할 수 있다(613). N-1 번째 레이어의 인터-코어 파티셔닝 정책이 가중치를 분할하는 것일 경우, 인터-코어 파티셔닝 정책 결정기(210)는 N 번째 레이어의 가중치를 분할하여 복수의 파티션을 생성할 수 있다(614).
N-1 번째 레이어가 포워딩 가능하지 않은 경우, 인터-코어 파티셔닝 정책 결정기(210)는 입력 특징맵의 크기와 가중치의 크기를 비교할 수 있다(630). 이 때, 크기는 메모리 크기를 의미할 수 있다.
입력 특징맵의 크기가 가중치의 크기보다 큰 경우, 인터-코어 파티셔닝 정책 결정기(210)는 입력 특징맵이 모든 코어에 균등하게 파티셔닝 될 수 있는지를 판단할 수 있다(631).
입력 특징맵이 모든 코어에 균등하게 파티셔닝 될 경우, 인터-코어 파티셔닝 정책 결정기(210)는 입력 특징맵을 분할할 수 있다(632). 입력 특징맵이 모든 코어에 균등하게 파티셔닝 되지 못할 경우, 인터-코어 파티셔닝 정책 결정기(210)는 메모리 사이즈로 인한 손실과 언밸런스로 인한 손실을 비교할 수 있다(633).
메모리 사이즈로 인한 손실이 언밸런스로 인한 손실보다 큰 경우, 인터-코어 파티셔닝 정책 결정기(210)는 입력 특징맵을 분할할 수 있다(632). 메모리 사이즈로 인한 손실이 언밸런스로 인한 손실보다 크지 않은 경우, 인터-코어 파티셔닝 정책 결정기(210)는 가중치를 분할할 수 있다(634).
입력 특징맵의 크기가 가중치의 크기보다 크지 않은 경우, 인터-코어 파티셔닝 정책 결정기(210)는 가중치가 모든 코어에 균등하게 파티셔닝 되는지 여부를 판단할 수 있다(650).
가중치가 모든 코어에 균등하게 파티셔닝 될 수 있는 경우, 인터-코어 파티셔닝 정책 결정기(210)는 가중치를 분할할 수 있다(651). 가중치가 모든 코어에 균등하게 파티셔닝 될 수 없는 경우, 인터-코어 파티셔닝 정책 결정기(210)는 메모리 사이즈로 인한 손실과 언밸런스로 인한 손실을 비교할 수 있다(652).
이 때, 메모리 사이즈로 인한 손실이 언밸런스로 인한 손실보다 큰 경우, 인터-코어 파티셔닝 정책 결정기(210)는 가중치를 분할할 수 있다(651). 메모리 사이즈로 인한 손실이 언밸런스로 인한 손실보다 크지 않은 경우, 인터-코어 파티셔닝 정책 결정기(210)는 입력 특징맵을 분할할 수 있다(652).
인터-코어 파티셔닝 정책 결정기(210)는 이전 레이어와의 특징맵의 포워딩 가능 여부를 최우선으로 고려하고, 포워딩 가능하지 않은 경우 대역폭 요구량을 최소화하도록 파티셔닝 정책을 결정할 수 있다.
인터-코어 파티셔닝 정책 결정기(210)는 연산기의 연산 특징을 고려하여 각 코어에 최대한 동일하게 연산량이 분배될 수 있는지를 고려하여, 연산기 활용의 효율성을 최대화하는 파티셔닝 정책을 결정할 수 있다.
이하에서, 도 7a 내지 도8을 참조하여 인트라-코어 파티셔닝 정책 결정기(230)의 동작을 자세하게 설명한다.
도 7a는 복수의 코어에 할당된 파티션의 분할의 예를 나타내고, 도 7b은 파티션 분할의 예를 나타내고, 도 8은 파티션을 분할하는 동작의 순서를 나타낸다.
도 7a 내지 도 8을 참조하면, 인트라-코어 파티셔닝 정책 결정기(230)는 복수의 파티션을 분할하여 복수의 타일(710 내지 770)을 생성할 수 있다. 인트라-코어 파티셔닝 정책 결정기(230)는 복수의 코어에 할당된 파티션들을 분할하여 복수의 타일(710 내지 770)을 생성할 수 있다.
인트라-코어 파티셔닝 정책 결정기(230)는 파티션을 높이 방향, 너비 방향, 채널 방향 또는 배치 방향으로 분할하여 복수의 타일(710 내지 770)을 생성할 수 있다.
도 7a 및 도 7b에 도시된 복수의 타일(710 내지 770)은 분할된 타일의 예를 나타낼 수 있다. 복수의 타일(710 내지 770)은 높이 방향으로 분할된 파티션들을 높이 방향으로 분할함으로써 생성된 경우를 나타내지만, 실시예에 따라 다른 방향으로 분할하여 복수의 타일(710 내지 770)을 생성할 수도 있다.
인트라-코어 파티셔닝 정책 결정기(230)는 현재 레이어의 이전 레이어의 파티션 정책, 현재 레이어의 파티션 정책, 이전 레이어의 타일 분할 정책 또는 데이터의 크기에 기초하여 복수의 타일을 생성할 수 있다.
인트라-코어 파티셔닝 정책 결정기(230)는 이전 레이어의 출력이 포워딩 가능한 경우, 이전 레이어의 파티션 정책, 레이어의 파티션 정책 및 이전 레이어의 타일 분할 정책에 기초하여 복수의 타일을 생성할 수 있다.
인트라-코어 파티셔닝 정책 결정기(230)는 이전 레이어의 출력이 포워딩 불가능한 경우, 레이어의 입력 특징맵의 크기와 레이어의 가중치의 크기를 비교하여 복수의 타일을 생성할 수 있다.
구체적으로, 인트라-코어 파티셔닝 정책 결정기(230)는 N-1 번째 레이어가 포워딩 가능한지 여부를 판단할 수 있다(810). 즉, 인트라-코어 파티셔닝 정책 결정기(230)는 이전 레이어의 파티셔닝 정책 및 스케줄링 방식을 유지한 채로 현재 레이어에 대한 연산이 수행 가능한지 여부를 판단할 수 있다.
N-1 번째 레이어가 포워딩 가능한 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 N-1 번째 레이어의 인터-코어 파티셔닝 정책 및 인트라-코어 파티셔닝 정책이 입력 특징맵을 분할하는 것인지를 판단할 수 있다(811).
N-1 번째 레이어의 인터-코어 파티셔닝 정책 및 인트라-코어 파티셔닝 정책이 입력 특징맵을 분할하는 것인 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 N 번째 레이어의 인터-코어 파티셔닝 정책이 입력 특징맵을 분할하는 것인지를 판단할 수 있다(812).
N 번째 레이어의 인터-코어 파티셔닝 정책이 입력 특징맵을 분할하는 것인 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 N 번째 레이어의 입력 특징맵을 분할하여 복수의 타일을 생성할 수 있다(813).
N 번째 레이어의 인터-코어 파티셔닝 정책이 입력 특징맵을 분할하는 것이 아닌 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 입력 특징맵의 크기와 가중치의 크기를 비교할 수 있다(814).
입력 특징맵의 크기가 가중치의 크기보다 큰 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 가중치를 분할하여 복수의 타일을 생성할 수 있다(815). 입력 특징맵의 크기가 가중치의 크기보다 크지 않은 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 입력 특징맵을 분할할 수 있다(813).
N-1 번째 레이어의 인터-코어 파티셔닝 정책 및 인트라-코어 파티셔닝 정책이 입력 특징맵을 분할하는 것이 아닌 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 N-1 번째 레이어의 인터-코어 파티셔닝 정책 및 인트라-코어 파티셔닝 정책이 가중치를 분할하는 것인지 여부를 판단할 수 있다(816).
N-1 번째 레이어의 인터-코어 파티셔닝 정책 및 인트라-코어 파티셔닝 정책이 가중치를 분할하는 것인 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 N 번째 레이어의 인터-코어 파티셔닝 정책이 가중치를 분할하는 것인지 여부를 판단할 수 있다(817).
N 번째 레이어의 인터-코어 파티셔닝 정책이 가중치를 분할하는 것인 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 가중치를 분할하여 복수의 타일을 생성할 수 있다(818).
N 번째 레이어의 인터-코어 파티셔닝 정책이 가중치를 분할하는 것이 아닌 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 입력 특징맵의 크기와 가중치의 크기를 비교할 수 있다(819).
입력 특징맵의 크기가 가중치의 크기보다 큰 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 입력 특징맵을 분할할 수 있다(820). 입력 특징맵의 크기가 가중치의 크기보다 크지 않은 경우, 인트라-코어 파티셔닝 정책 결정기(230)는 가중치를 분할할 수 있다(818).
인트라-코어 파티셔닝 정책 결정기(230)는 코어간 DMA(Direct Memory Access) 지연 시간을 하이딩하는(또는, 감추는) 파티션 분할 또는 스케줄링 방식을 결정하기 위해 이전 레이어의 인터-/인트라-코어 파티셔닝 정책 및 현재 레이어의 인터-코어 파티셔닝 정책을 고려하여 파티션 분할 방법을 결정할 수 있다.
인트라-코어 파티셔닝 정책 결정기(230)는 이전 레이어가 포워딩 가능 하지 않은 경우 대역폭을 최우선으로 파티션을 분할하여 복수의 타일(710 내지 770)을 생성할 수 있다.
도 9a는 복수의 코어 간의 데이터 전송 지연 시간이 하이딩(hiding)되지 않은 스케줄링 결과의 예를 나타내고, 도 9b는 복수의 코어 간의 데이터 전송 지연 시간이 하이딩된 스케줄링 결과의 예를 나타낸다.
스케줄러(250)는 복수의 코어 간의 데이터 공유 여부에 기초하여 복수의 타일(910 내지 970)의 연산 순서를 스케줄링할 수 있다. 스케줄러(250)는 복수의 타일(910 내지 970)의 연산 결과에 대한 공유 여부에 기초하여 복수의 타일(910 내지 970)의 연산 순서를 변경할 수 있다.
스케줄러(250)는 복수의 타일에 포함된 하나의 타일의 연산 결과가 하나의 타일이 할당된 코어와 다른 코어에 공유될 경우, 하나의 타일을 우선 적으로 연산하도록 상기 연산 순서를 변경할 수 있다.
도 9a는 스케줄러(250)가 복수의 타일(910 내지 970)의 연산 순서를 변경하지 않은 스케줄을 나타내고, 도 9b는 스케줄러(250)가 복수의 타일(910 내지 970)의 연산 순서를 변경한 이후의 스케줄을 나타낼 수 있다.
스케줄러(250)는 뉴럴 프로세서에 브로드캐스팅된 데이터 재사용(data reusability)를 최대화하고, 인접한 레이어와 특징맵 데이터의 공유가 발생하는 경우 복수의 코어 간의 데이터 전송 지연 시간을 하이딩하도록 복수의 타일(910 내지 970)의 연산 순서를 스케줄링할 수 있다.
복수의 코어를 이용하여 뉴럴 네트워크 연산을 수행하는 경우, 복수의 코어들 간에 데이터 공유가 요구될 수 있다. 예를 들어, 코어 #0에서 수행된 연산 결과가 코어 #1에서 수행되는 연산에 사용되는 경우가 존재할 수 있다. 할로 영역(halo area)는 코어 간의 데이터 전송 지연 시간을 나타낼 수 있다.
스케줄러(250)는 할로 영역을 포함하는 타일을 우선적으로 수행한 뒤, 다른 타일의 연산을 수행함으로써 할로 영역 및 DMA 시간을 하이딩할 수 있다.
다시 말해, 스케줄러(250)는 코어 간의 데이터 공유가 요구되는 타일에 대한 연산을 우선적으로 수행하도록 복수의 타일(910 내지 970)에 대한 연산 순서를 변경함으로써 전송 지연이 이루어지는 시간 동안 코어에서 다른 타일에 대한 연산을 수행함으로써 코어의 이용율(utilization)을 향상시킬 수 있다.
도 9a의 예시에서, 스케줄러(250)가 별도의 스케줄링을 수행하지 않을 경우, 할로 전송을 위한 아이들 시간이 발생하여 코어의 이용율이 감소할 수 있다. 스케줄러(250)는 타일(940)과 타일(950)의 연산 순서를 변경함으로써 할로 영역이 다른 타일의 연산을 수행하는 시간에 하이딩되도록 할 수 있다.
상술한 스케줄링 과정을 통해, 뉴럴 네트워크 연산 스케줄링 장치(10)는 전체 코어의 이용율을 향상시킬 수 있다.
도 10은 뉴럴 네트워크 연산 스케줄링 장치의 하드웨어 구현의 예를 나타내고, 도 11은 브로드캐스팅 및 동기화를 설명하기 위한 도면이다.
도 10 및 도 11을 참조하면, 뉴럴 네트워크 연산 스케줄링 장치(10)는 동기화기(270) 및 브로드캐스터(290)를 포함할 수 있다. 뉴럴 네트워크 연산 스케줄링 장치(10)는 뉴럴 프로세서(1010), 제어 코어(1030), DMA 엔진(1050) 및 글로벌 메모리(1070)을 더 포함할 수 있다. 예를 들어, 글로벌 메모리(1070)은 DRAM을 포함할 수 있다.
뉴럴 프로세서(1010)는 텐서 코어 및 로컬 메모리(local memory)를 포함할 수 있다. 예를 들어, 로컬 메모리는 SRAM을 포함할 수 있다.
동기화기(270) 및 브로드캐스터(290)는 프로세서 내부에 구현될 수 있고, 별도의 하드웨어 모듈로 구현될 수 있다.
동기화기(270)는 복수의 코어 간의 동기화를 수행할 수 있다. 동기화기(270)는 각 코어로부터 수신한 데이터 브로드캐스팅 요청 및 각 코어들 사이의 동기화를 보장할 수 있다. 동기화기(270)는 코어들 간의 동기화 횟수 및 비용을 절감할 수 있다.
예를 들어, 브로드캐스터(290)를 통해 각 코어의 로컬 메모리(예를 들어, SRAM)에 한 번에 같은 데이터를 복사하는 경우, 동기화기(270)는 각 코어의 동작을 동기화할 수 있다.
동기화기(270)는 코어 간의 서로 상이한 실행 시간으로 인해 사용중인 메모리 영역으로의 데이터 복사가 발생하여 정교함(correctness)에 영향을 주거나, 반대로 빈번한 동기화로 인하여 코어의 이용율을 감소시키는 문제를 해결할 수 있다.
동기화기(270)는 각 코어가 데이터를 로딩(loading)할 준비가 된 시점에 하드웨어에 마킹(marking)을 하고 다시 필요한 동작을 하도록 하고, 모든 코어로부터 마킹이 완료되었을 때에 실제로 데이터 복사를 수행함으로써, 동작의 정교함을 보장하면서도 동기화 횟수를 줄임으로써 동기화 비용을 감소시킬 수 있다.
브로드캐스터(290)는 DRAM(1070)의 데이터를 각 뉴럴 프로세서(1010)로 브로드캐스팅할 수 있다. 예를 들어, 브로드캐스터(290)는 DRAM에서 SRAM로 전송되는 데이터를 한번의 DMA로 전송할 수 있다. 이를 통해, 브로드캐스터(290)는 시스템 버스(system bus)의 대역폭 요구량을 절감할 수 있다.
입력 특징맵의 높이 방향으로 데이터 및 연산을 분할하는 경우 가중치가 중복하여 각 코어의 로컬 메모리로 복사될 수 있다. 출력 특징맵의 채널 방향으로 분할이 수행되는 경우에는 입력 특징맵이 중복하여 복사될 수 있다. 중복된 데이터의 복사는 시스템 버스의 대역폭 요구량에 큰 영향을 미칠 수 있다.
브로드캐스터(290)는 시스템 버스로 한 번의 데이터 복사만 수행하고 복사된 데이터를 각 코어의 로컬 메모리에 복사하도록 함으로서 중복 데이터 이동에 의한 대역폭 요구량 증가를 방지할 수 있다.
도 12는 도 1에 도시된 뉴럴 네트워크 연산 스케줄링 장치의 동작의 순서도를 나타낸다.
수신기(100)는 뉴럴 네트워크의 레이어에 관한 데이터를 수신할 수 있다(1210). 뉴럴 네트워크의 레이어에 관한 데이터는 레이어의 입력 특징맵 또는 레이어의 가중치(weight)를 포함할 수 있다.
프로세서(200)는 레이어에 관한 데이터를 분할함으로써 복수의 코어에 할당할 복수의 파티션(partition)을 생성할 수 있다(1230). 프로세서(200)는 레이어의 이전 레이어의 파티션 정책 또는 데이터의 크기에 기초하여 복수의 파티션을 생성할 수 있다.
프로세서(200)는 이전 레이어의 출력이 포워딩 가능한 경우, 이전 레이어의 파티션 정책에 기초하여 복수의 파티션을 생성할 수 있다. 프로세서(200)는 이전 레이어의 출력이 포워딩 불가능한 경우, 레이어의 입력 특징맵의 크기와 레이어의 가중치의 크기를 비교하여 복수의 파티션을 생성할 수 있다.
프로세서(200)는 입력 특징맵 또는 가중치가 복수의 코어에 균등하게 분할되지 않는 경우, 메모리 크기로 인한 손실과 언밸런스로 인한 손실을 비교하여 복수의 파티션을 생성할 수 있다.
프로세서(200)는 복수의 파티션을 분할하여 복수의 타일(tile)을 생성할 수 있다(1250). 프로세서(200)는 레이어의 이전 레이어의 파티션 정책, 레이어의 파티션 정책, 이전 레이어의 타일 분할 정책 또는 데이터의 크기에 기초하여 복수의 타일을 생성할 수 있다.
프로세서(200)는 이전 레이어의 출력이 포워딩 가능한 경우, 이전 레이어의 파티션 정책, 레이어의 파티션 정책 및 이전 레이어의 타일 분할 정책에 기초하여 복수의 타일을 생성할 수 있다.
프로세서(200)는 이전 레이어의 출력이 포워딩 불가능한 경우, 레이어의 입력 특징맵의 크기와 레이어의 가중치의 크기를 비교하여 복수의 타일을 생성할 수 있다.
프로세서(200)는 데이터의 높이 또는 너비 방향으로 데이터를 분할할 수 있다.
프로세서(200)는 복수의 코어 간의 데이터의 공유 여부에 기초하여 복수의 타일의 연산 순서를 스케줄링할 수 있다(1270). 프로세서(200)는 복수의 타일의 연산 결과에 대한 공유 여부에 기초하여 복수의 타일의 연산 순서를 변경할 수 있다. 프로세서(200)는 복수의 타일에 포함된 하나의 타일의 연산 결과가 하나의 타일이 할당된 코어와 다른 코어에 공유될 경우, 하나의 타일을 우선적으로 연산하도록 연산 순서를 변경할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 뉴럴 네트워크의 레이어에 관한 데이터를 수신하는 단계;
    상기 데이터를 분할함으로써 복수의 코어에 할당할 복수의 파티션(partition)을 생성하는 단계;
    상기 복수의 파티션을 분할하여 복수의 타일(tile)을 생성하는 단계; 및
    상기 복수의 코어 간의 데이터의 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 스케줄링하는 단계
    를 포함하는 뉴럴 네트워크 연산 스케줄링 방법.
  2. 제1항에 있어서,
    상기 데이터는,
    상기 레이어의 입력 특징맵 또는 상기 레이어의 가중치(weight)
    를 포함하는 뉴럴 네트워크 연산 스케줄링 방법.
  3. 제1항에 있어서,
    상기 복수의 파티션을 생성하는 단계는,
    상기 레이어의 이전 레이어의 파티션 정책 또는 상기 데이터의 크기에 기초하여 상기 복수의 파티션을 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 스케줄링 방법.
  4. 제3항에 있어서,
    상기 레이어의 이전 레이어의 파티션 정책 또는 상기 데이터의 크기에 기초하여 상기 복수의 파티션을 생성하는 단계는,
    상기 이전 레이어의 출력이 포워딩 가능한 경우, 상기 이전 레이어의 파티션 정책에 기초하여 상기 복수의 파티션을 생성하는 단계; 및
    상기 이전 레이어의 출력이 포워딩 불가능한 경우, 상기 레이어의 입력 특징맵의 크기와 상기 레이어의 가중치의 크기를 비교하여 상기 복수의 파티션을 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 스케줄링 방법.
  5. 제4항에 있어서,
    상기 이전 레이어의 출력이 포워딩 불가능한 경우, 상기 레이어의 입력 특징맵의 크기와 상기 레이어의 가중치의 크기를 비교하여 상기 복수의 파티션을 생성하는 단계는,
    상기 입력 특징맵 또는 상기 가중치가 상기 복수의 코어에 균등하게 분할되지 않는 경우, 메모리 크기로 인한 손실과 언밸런스로 인한 손실을 비교하여 상기 복수의 파티션을 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 스케줄링 방법.
  6. 제1항에 있어서,
    상기 복수의 타일을 생성하는 단계는,
    상기 레이어의 이전 레이어의 파티션 정책, 상기 레이어의 파티션 정책, 상기 이전 레이어의 타일 분할 정책 또는 상기 데이터의 크기에 기초하여 복수의 타일을 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 스케줄링 방법.
  7. 제6항에 있어서,
    상기 레이어의 이전 레이어의 파티션 정책, 상기 레이어의 파티션 정책, 상기 이전 레이어의 타일 분할 정책, 또는 상기 데이터의 크기에 기초하여 복수의 타일을 생성하는 단계는,
    상기 이전 레이어의 출력이 포워딩 가능한 경우, 상기 이전 레이어의 파티션 정책, 상기 레이어의 파티션 정책 및 상기 이전 레이어의 타일 분할 정책에 기초하여 상기 복수의 타일을 생성하는 단계; 및
    상기 이전 레이어의 출력이 포워딩 불가능한 경우, 상기 레이어의 입력 특징맵의 크기와 상기 레이어의 가중치의 크기를 비교하여 상기 복수의 타일을 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 스케줄링 방법.
  8. 제1항에 있어서,
    상기 복수의 파티션을 생성하는 단계는,
    상기 데이터의 높이 또는 너비 방향으로 상기 데이터를 분할하는 단계
    를 포함하는 뉴럴 네트워크 연산 스케줄링 방법.
  9. 제1항에 있어서,
    상기 스케줄링하는 단계는,
    상기 복수의 타일의 연산 결과에 대한 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 변경하는 단계
    를 포함하는 뉴럴 네트워크 연산 스케줄링 방법.
  10. 제9항에 있어서,
    상기 복수의 타일의 연산 결과에 대한 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 변경하는 단계는,
    상기 복수의 타일에 포함된 하나의 타일의 연산 결과가 상기 하나의 타일이 할당된 코어와 다른 코어에 공유될 경우, 상기 하나의 타일을 우선적으로 연산하도록 상기 연산 순서를 변경하는 단계
    를 포함하는 뉴럴 네트워크 연산 스케줄링 방법.
  11. 뉴럴 네트워크의 레이어에 관한 데이터를 수신하는 수신기; 및
    상기 데이터를 분할함으로써 복수의 코어에 할당할 복수의 파티션(partition)을 생성하고,
    상기 복수의 파티션을 분할하여 복수의 타일(tile)을 생성하고,
    상기 복수의 코어 간의 데이터의 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 스케줄링하는 프로세서
    를 포함하는 뉴럴 네트워크 연산 스케줄링 장치.
  12. 제11항에 있어서,
    상기 데이터는,
    상기 레이어의 입력 특징맵 또는 상기 레이어의 가중치(weight)
    를 포함하는 뉴럴 네트워크 연산 스케줄링 장치.
  13. 제11항에 있어서,
    상기 프로세서는,
    상기 레이어의 이전 레이어의 파티션 정책 또는 상기 데이터의 크기에 기초하여 상기 복수의 파티션을 생성하는
    뉴럴 네트워크 연산 스케줄링 장치.
  14. 제13항에 있어서,
    상기 프로세서는,
    상기 이전 레이어의 출력이 포워딩 가능한 경우, 상기 이전 레이어의 파티션 정책에 기초하여 상기 복수의 파티션을 생성하고,
    상기 이전 레이어의 출력이 포워딩 불가능한 경우, 상기 레이어의 입력 특징맵의 크기와 상기 레이어의 가중치의 크기를 비교하여 상기 복수의 파티션을 생성하는
    뉴럴 네트워크 연산 스케줄링 장치.
  15. 제14항에 있어서,
    상기 프로세서는,
    상기 입력 특징맵 또는 상기 가중치가 상기 복수의 코어에 균등하게 분할되지 않는 경우, 메모리 크기로 인한 손실과 언밸런스로 인한 손실을 비교하여 상기 복수의 파티션을 생성하는
    뉴럴 네트워크 연산 스케줄링 장치.
  16. 제11항에 있어서,
    상기 프로세서는,
    상기 레이어의 이전 레이어의 파티션 정책, 상기 레이어의 파티션 정책, 상기 이전 레이어의 타일 분할 정책, 또는 상기 데이터의 크기에 기초하여 복수의 타일을 생성하는
    뉴럴 네트워크 연산 스케줄링 장치.
  17. 제16항에 있어서,
    상기 프로세서는,
    상기 이전 레이어의 출력이 포워딩 가능한 경우, 상기 이전 레이어의 파티션 정책, 상기 레이어의 파티션 정책 및 상기 이전 레이어의 타일 분할 정책에 기초하여 상기 복수의 타일을 생성하고,
    상기 이전 레이어의 출력이 포워딩 불가능한 경우, 상기 레이어의 입력 특징맵의 크기와 상기 레이어의 가중치의 크기를 비교하여 상기 복수의 타일을 생성하는
    뉴럴 네트워크 연산 스케줄링 장치.
  18. 제11항에 있어서,
    상기 프로세서는,
    상기 데이터의 높이 또는 너비 방향으로 상기 데이터를 분할하는
    뉴럴 네트워크 연산 스케줄링 장치.
  19. 제11항에 있어서,
    상기 프로세서는,
    상기 복수의 타일의 연산 결과에 대한 공유 여부에 기초하여 상기 복수의 타일의 연산 순서를 변경하는
    뉴럴 네트워크 연산 스케줄링 장치.
  20. 제19항에 있어서,
    상기 프로세서는,
    상기 복수의 타일에 포함된 하나의 타일의 연산 결과가 상기 하나의 타일이 할당된 코어와 다른 코어에 공유될 경우, 상기 하나의 타일을 우선적으로 연산하도록 상기 연산 순서를 변경하는
    뉴럴 네트워크 연산 스케줄링 장치.
KR1020200167681A 2020-12-03 2020-12-03 뉴럴 네트워크 연산 스케줄링 방법 및 장치 KR20220078290A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200167681A KR20220078290A (ko) 2020-12-03 2020-12-03 뉴럴 네트워크 연산 스케줄링 방법 및 장치
CN202110640130.1A CN114595812A (zh) 2020-12-03 2021-06-09 用于神经处理器调度的方法和设备
US17/467,890 US20220179714A1 (en) 2020-12-03 2021-09-07 Method and apparatus for scheduling neural network operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200167681A KR20220078290A (ko) 2020-12-03 2020-12-03 뉴럴 네트워크 연산 스케줄링 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220078290A true KR20220078290A (ko) 2022-06-10

Family

ID=81803814

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200167681A KR20220078290A (ko) 2020-12-03 2020-12-03 뉴럴 네트워크 연산 스케줄링 방법 및 장치

Country Status (3)

Country Link
US (1) US20220179714A1 (ko)
KR (1) KR20220078290A (ko)
CN (1) CN114595812A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102609481B1 (ko) * 2023-04-12 2023-12-04 주식회사 하이퍼엑셀 레이턴시 프로세싱 유닛

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11373266B2 (en) * 2017-05-05 2022-06-28 Intel Corporation Data parallelism and halo exchange for distributed machine learning
US10019668B1 (en) * 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
US11562214B2 (en) * 2019-03-14 2023-01-24 Baidu Usa Llc Methods for improving AI engine MAC utilization
US20200371835A1 (en) * 2019-05-07 2020-11-26 Expedera, Inc. Method And Apparatus For Scheduling Matrix Operations In Digital Processing Systems
CN113853608A (zh) * 2019-06-21 2021-12-28 英特尔公司 利用稀疏三维(3d)分组卷积的通用模块化稀疏3d卷积设计
US20210191765A1 (en) * 2019-12-18 2021-06-24 Deep Vision Inc. Method for static scheduling of artificial neural networks for a processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102609481B1 (ko) * 2023-04-12 2023-12-04 주식회사 하이퍼엑셀 레이턴시 프로세싱 유닛

Also Published As

Publication number Publication date
CN114595812A (zh) 2022-06-07
US20220179714A1 (en) 2022-06-09

Similar Documents

Publication Publication Date Title
US11487589B2 (en) Self-adaptive batch dataset partitioning for distributed deep learning using hybrid set of accelerators
KR102465896B1 (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
CN112711478B (zh) 基于神经网络的任务处理方法、装置、服务器和存储介质
CN111178494A (zh) 神经处理单元、神经处理系统和应用系统
KR20210148586A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템
US11803733B2 (en) Method for implementing neural network model in heterogeneous computing platform and apparatus for performing the same
KR20210079785A (ko) 뉴럴 네트워크의 컨볼루션 연산 처리 방법 및 장치
KR20220078290A (ko) 뉴럴 네트워크 연산 스케줄링 방법 및 장치
US20180046474A1 (en) Method for executing child kernels invoked on device side utilizing dynamic kernel consolidation and related non-transitory computer readable medium
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
US11630730B1 (en) Data processing pipeline error recovery
US20220237487A1 (en) Accelerator for processing inference tasks in parallel and operating method thereof
KR20210091947A (ko) 뉴럴 네트워크 모델의 분산 처리 방법 및 장치
CN114912590A (zh) 处理器、操作处理器的方法以及包括处理器的电子装置
KR20210100335A (ko) 멀티 디바이스 기반 추론 방법 및 장치
KR102547997B1 (ko) 효율적인 메모리 접근 방식을 이용한 뉴럴 네트워크 연산 가속 방법 및 장치
US20220253692A1 (en) Method and apparatus of operating a neural network
KR20220107621A (ko) 가속기 자원 관리 방법 및 장치
KR102614909B1 (ko) 희소화를 이용한 뉴럴 네트워크 연산 방법 및 장치
US20220075606A1 (en) Compiling method and apparatus for neural networks
KR102456005B1 (ko) 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체
US20220215234A1 (en) Determining schedules for processing neural networks on hardware
CN110543367B (zh) 资源处理方法及其装置、电子设备和介质
KR20230041450A (ko) 뉴럴 네트워크 연산 방법 및 장치
KR20220121334A (ko) 뉴럴 네트워크 연산 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination