KR20230041450A - 뉴럴 네트워크 연산 방법 및 장치 - Google Patents

뉴럴 네트워크 연산 방법 및 장치 Download PDF

Info

Publication number
KR20230041450A
KR20230041450A KR1020210125095A KR20210125095A KR20230041450A KR 20230041450 A KR20230041450 A KR 20230041450A KR 1020210125095 A KR1020210125095 A KR 1020210125095A KR 20210125095 A KR20210125095 A KR 20210125095A KR 20230041450 A KR20230041450 A KR 20230041450A
Authority
KR
South Korea
Prior art keywords
data
neural network
stacked
generating
processor
Prior art date
Application number
KR1020210125095A
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 KR1020210125095A priority Critical patent/KR20230041450A/ko
Priority to US17/688,288 priority patent/US20230086316A1/en
Publication of KR20230041450A publication Critical patent/KR20230041450A/ko

Links

Images

Classifications

    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)

Abstract

뉴럴 네트워크 연산 방법 및 장치가 개시된다. 일 실시예에 따른 뉴럴 네트워크 연산 방법은, 뉴럴 네트워크 연산을 위한 데이터를 수신하는 단계와, 상기 데이터의 크기가 미리 결정된 크기 이하인지 여부를 판단하는 단계와, 판단 결과에 기초하여 상기 데이터의 일부를 스택함으로써 스택된 데이터를 생성하는 단계와, 상기 스택된 데이터에 기초하여 상기 뉴럴 네트워크 연산을 병렬적으로 수행하는 단계를 포함한다.

Description

뉴럴 네트워크 연산 방법 및 장치{NEURAL NETWORK OPERATION METHOD AND APPRATUS}
아래 실시예들은 뉴럴 네트워크 연산 방법 및 장치에 관한 것이다.
NPU(Neural Processing Unit)는 데이터의 정렬을 필요로 한다. 깊이 정렬에 대한 제한을 갖고 입력 특징맵을 이용한 깊이를 우선(depth-first)하는 연산 순서를 갖는 MAC(Multiplier Accumulator) 시스템에서, 정렬되지 않은 입력 채널도 연산에 사용되는 경우가 존재한다.
종래의 뉴럴 네트워크 연산 방식은 채널 입력 데이터가 정렬되지 않은 경우, 정렬되지 않은 채널들이 최종 연산에 기여하지 않는 값들을 생성하여 MAC의 이용률(utilization)이 낮아지는 문제를 가졌다.
최종 연산에 기여하지 않는 값들로 인하여 NPU은 불필요한 사이클을 소모하여 전력이 과도하게 소모되고, 특징맵의 더미(dummy) 채널 및 가중치로 인하여 메모리 오버헤드가 발생하는 문제가 있었다.
일 실시예에 따른 뉴럴 네트워크 연산 방법은, 뉴럴 네트워크 연산을 위한 데이터를 수신하는 단계와, 상기 데이터의 크기가 미리 결정된 크기 이하인지 여부를 판단하는 단계와, 판단 결과에 기초하여 상기 데이터의 일부를 스택함으로써 스택된 데이터를 생성하는 단계와, 상기 스택된 데이터에 기초하여 상기 뉴럴 네트워크 연산을 병렬적으로 수행하는 단계를 포함한다.
상기 스택된 데이터를 생성하는 단계는, 상기 데이터에 포함된 제1 특징맵의 일부를 메모리의 제1 위치에 저장하는 단계와, 상기 데이터에 포함된 제2 특징맵의 일부를 상기 제1 위치와 인접한 위치에 스택함으로써 상기 스택된 특징맵을 생성하는 단계를 포함할 수 있다.
상기 스택된 데이터를 생성하는 단계는, 상기 제1 특징맵에 포함된 하나 이상의 채널 및 상기 제2 특징맵에 포함된 하나 이상의 채널을 채널 방향으로 스택함으로써 상기 스택된 데이터를 생성하는 단계를 포함할 수 있다.
상기 스택된 데이터를 생성하는 단계는, 상기 데이터에 포함된 하나 이상의 커널을 스택함으로써 스택된 커널을 생성하는 단계를 포함할 수 있다.
상기 스택된 데이터를 생성하는 단계는, 상기 데이터를 미리 결정된 너비(width) 또는 미리 결정된 높이(height)를 갖도록 분할함으로써 복수의 타일을 생성하는 단계와, 상기 복수의 타일을 스택함으로써 상기 스택된 데이터를 생성하는 단계를 포함할 수 있다.
상기 스택된 데이터를 생성하는 단계는, 상기 데이터를 분할하는 것이 이득이 되는지 여부를 판단하는 단계를 더 포함할 수 있다.
상기 스택된 데이터를 생성하는 단계는, 상기 데이터를 DMA(Direct Memory Access) 엔진에 입력함으로써 상기 스택된 데이터를 생성하는 단계를 포함할 수 있다.
상기 스택된 데이터를 생성하는 단계는, 상기 데이터에 기초하여 수행되는 제1 뉴럴 네트워크 연산과 상이한 제2 뉴럴 네트워크 연산에 수행될 추가 데이터를 탐색하는 단계와, 상기 추가 데이터와 상기 데이터가 스택 가능한지 여부를 판단하는 단계와, 판단 결과에 기초하여 상기 추가 데이터와 상기 데이터를 스택함으로써 상기 제1 뉴럴 네트워크 연산 및 상기 제2 뉴럴 네트워크 연산을 병렬적으로 수행하는 단계를 포함할 수 있다.
상기 뉴럴 네트워크 연산 방법은, 상기 데이터의 후속 데이터를 수신하는 단계와, 상기 후속 데이터의 크기가 미리 결정된 크기 이하인지 여부 및 스택 가능한지 여부를 판단하는 단계와, 판단 결과 및 상기 데이터와 상기 후속 데이터 간의 의존성에 기초하여 상기 후속 데이터의 일부를 스택함으로써 상기 뉴럴 네트워크 연산을 수행하는 단계를 포함할 수 있다.
뉴럴 네트워크 연산 장치는, 뉴럴 네트워크 연산을 위한 데이터를 수신하는 수신기와, 상기 데이터의 크기가 미리 결정된 크기 이하인지 여부를 판단하고, 판단 결과에 기초하여 상기 데이터의 일부를 스택함으로써 스택된 데이터를 생성하고, 상기 스택된 데이터에 기초하여 상기 뉴럴 네트워크 연산을 병렬적으로 수행하는 프로세서를 포함한다.
상기 프로세서는, 상기 데이터에 포함된 제1 특징맵의 일부를 메모리의 제1 위치에 저장하고, 상기 데이터에 포함된 제2 특징맵의 일부를 상기 제1 위치와 인접한 위치에 스택함으로써 상기 스택된 특징맵을 생성할 수 있다.
상기 프로세서는, 상기 제1 특징맵에 포함된 하나 이상의 채널 및 상기 제2 특징맵에 포함된 하나 이상의 채널을 채널 방향으로 스택함으로써 상기 스택된 데이터를 생성할 수 있다.
상기 프로세서는, 상기 데이터에 포함된 하나 이상의 커널을 스택함으로써 스택된 커널을 생성할 수 있다.
상기 프로세서는, 상기 데이터를 미리 결정된 너비(width) 또는 미리 결정된 높이(height)를 갖도록 분할함으로써 복수의 타일을 생성하고, 상기 복수의 타일을 스택함으로써 상기 스택된 데이터를 생성할 수 있다.
상기 프로세서는, 상기 데이터를 분할하는 것이 이득이 되는지 여부를 판단할 수 있다.
상기 프로세서는, 상기 데이터를 DMA(Direct Memory Access) 엔진에 입력함으로써 상기 스택된 데이터를 생성할 수 있다.
상기 프로세서는, 상기 데이터에 기초하여 수행되는 제1 뉴럴 네트워크 연산과 상이한 제2 뉴럴 네트워크 연산에 수행될 추가 데이터를 탐색하고, 상기 추가 데이터와 상기 데이터가 스택 가능한지 여부를 판단하고, 판단 결과에 기초하여 상기 추가 데이터와 상기 데이터를 스택함으로써 상기 제1 뉴럴 네트워크 연산 및 상기 제2 뉴럴 네트워크 연산을 병렬적으로 수행할 수 있다.
상기 수신기는, 상기 데이터의 후속 데이터를 수신하고, 상기 프로세서는, 상기 후속 데이터의 크기가 미리 결정된 크기 이하인지 여부 및 스택 가능한지 여부를 판단하고, 판단 결과 및 상기 데이터와 상기 후속 데이터 간의 의존성에 기초하여 상기 후속 데이터의 일부를 스택함으로써 상기 뉴럴 네트워크 연산을 수행할 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크 연산 장치의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 뉴럴 네트워크 연산 장치의 동작을 설명하기 위한 도면이다.
도 3은 도 1에 도시된 뉴럴 네트워크 연산 장치의 구현의 일 예를 나타낸다.
도 4는 도 1에 도시된 뉴럴 네트워크 연산 장치의 연산 시간의 예를 나타낸다.
도 5는 데이터 의존성에 따른 스택 동작을 설명하기 위한 도면이다.
도 6은 도 1에 도시된 뉴럴 네트워크 연산 장치의 구현의 다른 예를 나타낸다.
도 7은 스택 동작 및 뉴럴 네트워크 연산 수행의 흐름도를 나타낸다.
도 8은 도 1에 도시된 뉴럴 네트워크 연산 장치의 동작의 흐름도를 나타낸다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 뉴럴 네트워크 연산 장치의 개략적인 블록도를 나타낸다.
도 1을 참조하면, 뉴럴 네트워크 연산 장치(10)는 뉴럴 네트워크 연산을 수행할 수 있다. 뉴럴 네트워크 연산 장치(10)는 데이터를 수신하고, 데이터의 일부 또는 전부에 대한 스택을 수행하고, 스택된 데이터를 이용하여 병렬적으로 뉴럴 네트워크 연산을 수행할 수 있다.
뉴럴 네트워크 연산은 뉴럴 네트워크를 이용한 학습 또는 추론을 수행하기 위한 임의의 연산을 포함할 수 있다. 뉴럴 네트워크는 시냅스의 결합으로 네트워크를 형성한 인공 뉴런(노드)이 학습을 통해 시냅스의 결합 세기를 변화시켜, 문제 해결 능력을 가지는 모델 전반을 의미할 수 있다.
뉴럴 네트워크의 뉴런은 가중치 또는 바이어스의 조합을 포함할 수 있다. 뉴럴 네트워크는 하나 이상의 뉴런 또는 노드로 구성된 하나 이상의 레이어(layer)를 포함할 수 있다. 뉴럴 네트워크는 뉴런의 가중치를 학습을 통해 변화시킴으로써 임의의 입력으로부터 예측하고자 하는 결과를 추론할 수 있다.
뉴럴 네트워크는 심층 뉴럴 네트워크 (Deep Neural Network)를 포함할 수 있다. 뉴럴 네트워크는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network), 퍼셉트론(perceptron), 다층 퍼셉트론(multilayer 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)는 PC(personal computer), 데이터 서버, 또는 휴대용 장치 내에 구현될 수 있다.
휴대용 장치는 랩탑(laptop) 컴퓨터, 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, 모바일 인터넷 디바이스(mobile internet device(MID)), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), e-북(e-book), 또는 스마트 디바이스(smart device)로 구현될 수 있다. 스마트 디바이스는 스마트 와치(smart watch), 스마트 밴드(smart band), 또는 스마트 링(smart ring)으로 구현될 수 있다.
뉴럴 네트워크 연산 장치(10)는 수신기(100) 및 프로세서(200)를 포함한다. 뉴럴 네트워크 연산 장치(10)는 메모리(300)를 더 포함할 수 있다.
수신기(100)는 뉴럴 네트워크 연산을 위한 데이터를 수신할 수 있다. 수신기(100)는 시간의 흐름에 따라 데이터를 연속적으로 수신할 수 있다. 수신기(100)는 뉴럴 네트워크 연산을 위한 데이터 및 데이터의 후속 데이터를 시간의 흐름에 따라 수신할 수 있다. 수신기(100)는 수신 인터페이스를 포함할 수 있다. 수신기(100)는 수신한 데이터를 프로세서(200)로 출력할 수 있다. 뉴럴 네트워크 연산을 위한 데이터는 뉴럴 네트워크의 모델 파라미터(또는, 가중치), 뉴럴 네트워크에 입력되는 데이터, 뉴럴 네트워크로부터 출력되는 데이터 또는 뉴럴 네트워크를 학습시키기 위한 데이터를 포함할 수 있다. 예를 들어, 뉴럴 네트워크를 위한 데이터는 특징맵(feature map) 또는 커널(kernel)을 포함할 수 있다.
프로세서(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)는 데이터의 크기가 미리 결정된 크기 이하인지 판단 결과에 기초하여 데이터의 일부를 스택함으로써 스택된 데이터를 생성할 수 있다. 프로세서(200)는 데이터에 포함된 제1 특징맵의 일부를 메모리(300)의 제1 위치에 저장할 수 있다. 프로세서(200)는 데이터에 포함된 제2 특징맵의 일부를 제1 위치와 인접한 위치에 스택함으로써 스택된 특징맵을 생성할 수 있다.
프로세서(200)는 제1 특징맵에 포함된 하나 이상의 채널 및 제2 특징맵에 포함된 하나 이상의 채널을 채널 방향으로 스택함으로써 스택된 데이터를 생성할 수 있다.
프로세서(200)는 데이터에 포함된 하나 이상의 커널을 스택함으로써 스택된 커널을 생성할 수 있다.
프로세서(200)는 데이터를 분할하는 것이 이득이 되는지 여부를 판단할 수 있다. 프로세서(200)는 데이터를 미리 결정된 너비(width) 또는 미리 결정된 높이(height)를 갖도록 분할함으로써 복수의 타일을 생성할 수 있다. 프로세서(200)는 복수의 타일을 스택함으로써 스택된 데이터를 생성할 수 있다.
프로세서(200)는 데이터를 DMA(Direct Memory Access) 엔진에 입력함으로써 스택된 데이터를 생성할 수 있다.
프로세서(200)는 데이터에 기초하여 수행되는 제1 뉴럴 네트워크 연산과 상이한 제2 뉴럴 네트워크 연산에 수행될 추가 데이터를 탐색할 수 있다. 프로세서(200)는 추가 데이터와 데이터가 스택 가능한지 여부를 판단할 수 있다. 프로세서(200)는 판단 결과에 기초하여 추가 데이터와 데이터를 스택함으로써 제1 뉴럴 네트워크 연산 및 제2 뉴럴 네트워크 연산을 수행할 수 있다.
프로세서(200)는 후속 데이터의 크기가 미리 결정된 크기 이하인지 여부 및 스택 가능한지 여부를 판단할 수 있다. 프로세서(200)는 판단 결과 및 데이터와 후속 데이터 간의 의존성에 기초하여 후속 데이터의 일부를 스택함으로써 뉴럴 네트워크 연산을 수행할 수 있다.
프로세서(200)는 스택된 데이터에 기초하여 뉴럴 네트워크 연산을 병렬적으로 수행할 수 있다.
메모리(300)는 연산을 위한 데이터 또는 연산 결과를 저장할 수 있다. 메모리(300)는 프로세서(200)에 의해 실행가능한 인스트럭션들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서의 동작 및/또는 프로세서의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리(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 Electronic Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
도 2는 도 1에 도시된 뉴럴 네트워크 연산 장치의 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 프로세서(예: 도 1의 프로세서(200))는 데이터의 크기가 미리 결정된 크기인지 판단하고, 판단 결과에 기초하여 데이터를 스택할 수 있다. 예를 들어, 데이터는 입력 특징맵을 포함할 수 있다.
프로세서(200)는 정렬되지 않은(unaligned) 작은 수의 입력 채널을 갖는 복수의 독립적인 뉴럴 네트워크 연산(예: 컨볼루션 연산)을 스택할 수 있다. 예를 들어, 2×1024×1024 입력에 대하여 3×3 커널 크기를 갖고, 스트라이드 1, 패딩 0인 컨볼루션을 수행하여 8×1022×1022를 출력으로 갖는 두 개의 컨볼루션 연산을 수행할 경우, 종래의 뉴럴 네트워크 연산 방식은 두 개의 컨볼루션 연산을 수행하는 시간이 모두 요구되었다.
프로세서(200)는 제1 컨볼루션과 제2 컨볼루션을 퓨즈(fuse)함으로써 MAC 이용률을 향상시키고, IFM 메모리 풋프린트(footprint)를 감소시킬 수 있다.
프로세서(200)는 제1 입력 특징맵(210)과 제2 입력 특징맵(220)을 스택함으로써 스택된 데이터(230)를 생성할 수 있다. 프로세서(200)는 스택된 데이터(230)와 커널(240)간의 뉴럴 네트워크 연산을 수행함으로써 제1 출력(250) 및 제2 출력(260)을 병렬적으로 생성할 수 있다.
도 3은 도 1에 도시된 뉴럴 네트워크 연산 장치의 구현의 일 예를 나타내고, 도 4는 도 1에 도시된 뉴럴 네트워크 연산 장치의 연산 시간의 예를 나타낸다.
도 3및 도 4를 참조하면, 프로세서(예: 도 1의 프로세서(200))는 제1 특징맵(310)과 제2 특징맵(320)을 스택함으로써 연산 시간을 감소시킬 수 있다. 프로세서(200)는 DMA를 채널-와이즈 스태커(channel-wise stacker)로 이용하고, 복수의 컨볼루션 연산을 MAC 엔진(360)에 포함된 MAC 그룹(예: MAC 그룹 #0 내지 #3)을 이용하여 동시에 수행함으로써 연산 시간을 감소시킬 수 있다.
프로세서(200)는 데이터를 DMA(330) 엔진에 입력함으로써 스택된 데이터를 생성할 수 있다.
프로세서(200)는 데이터에 포함된 제1 특징맵(310)의 일부를 메모리(예: SRAM)의 제1 위치에 저장할 수 있다. 프로세서(200)는 데이터에 포함된 제2 특징맵(320)의 일부를 제1 위치와 인접한 위치에 스택함으로써 스택된 데이터(350)을 생성할 수 있다. 프로세서(200)는 제1 특징맵에 포함된 하나 이상의 채널(예: 제1 특징맵(310)의 채널0, 채널 1) 및 제2 특징맵에 포함된 하나 이상의 채널(예: 제2 특징맵(320)의 채널0, 채널 1)을 채널 방향으로 스택함으로써 스택된 데이터(350)를 생성할 수 있다.
프로세서(200)는 데이터에 포함된 하나 이상의 커널을 스택함으로써 스택된 커널(340)을 생성할 수 있다.
프로세서(200)는 스택된 데이터(350)에 기초하여 뉴럴 네트워크 연산을 병렬적으로 수행할 수 있다. 프로세서(200)는 스택된 데이터(350)를 MAC 엔진(360)에 입력함으로써 스택된 커널(340) 과의 컨볼루션 연산을 수행할 수 있다.
프로세서(200)는 연산 결과 컨볼루션 출력들(370)을 생성할 수 있다.
종래 방식의 경우, 전체 연산 수행 시간은 수학식 1과 같이 나타낼 수 있다.
Figure pat00001
프로세서(200)는 복수의 컨볼루션 연산(예: Conv 1 및 Conv 2)을 수행할 경우, 입력 특징맵(예: 제1 특징맵(310) 및 제2 특징맵(320))의 스택을 통한 최적화를 수행함으로써 수학식 2와 같이 전체 연산 시간을 감소시킬 수 있다.
Figure pat00002
도 4의 예시와 같이, 프로세서(200)는 입력 특징맵의 일부(예: 입력 특징맵의 채널)을 스택함으로써 연산 시간을 최적화할 수 있다. 프로세서(200)는 제1 컨볼루션(예: Conv 1)과 제2 컨볼루션(예: Conv 2)을 동시에 메모리 오버헤드 없이 수행함으로써 MAC 연산 실행 시간을 거의 두 배가량 감소시킬 수 있다.
도 5는 데이터 의존성에 따른 스택 동작을 설명하기 위한 도면이다.
도 5를 참조하면, 프로세서(예: 도 1의 프로세서(200))는 데이터를 분할하는 것이 이득이 되는지 여부를 판단할 수 있다. 프로세서(200)는 데이터를 미리 결정된 너비(width) 또는 미리 결정된 높이(height)를 갖도록 분할함으로써 복수의 타일을 생성할 수 있다. 프로세서(200)는 복수의 타일을 스택함으로써 스택된 데이터를 생성할 수 있다.
프로세서(200)는 입력 특징맵이 충분히 큰 경우, 동일한 얕은 컨볼루션의 두 개의 타일링된 부분(예: 타일)을 스택할 수 있다. 도 2 내지 도 4에서 설명한 스택 방식은 동일한 원본 컨볼루션을 복수의 타일로 분할하고 스택하는 경우에도 동일하게 적용될 수 있다.
프로세서(200)는 작고, 정렬되지 않은 입력 채널의 수를 갖는 두 개의 연속적인 컨볼루션에 대한 스택을 수행할 수 있다. 다만, 도 5의 예시와 같이 컨볼루션 연산 사이에 의존성이 존재하는 경우에, 데이터의 의존성이 병렬 실행을 방해하기 때문에 도 2 내지 도 4에서 설명한 스택 방식이 적용되지 못할 수 있다.
프로세서(200)는 추가적인 소프트웨어 변형을 통해 데이터의 의존성이 존재하는 경우에도 스택 최적화 기술을 적용할 수 있다.
도 5의 예시는 실행 시간이 MAC 엔진에 의해 지배적으로 영향을 두 개의 연속적인 타일링된 컨볼루션 레이어들에 대하여 최적화를 수행하는 과정을 나타낼 수 있다.
도 5의 예시에서, 데이터 의존성은 다음과 같을 수 있다.
Conv#0 Tile #0
Figure pat00003
Conv#1 Tile#0
Conv#0 Tile#1 -> Conv#1 Tile#1
Conv#0 Tile#2 -> Conv#1 Tile#2
이 경우, 프로세서(200)는 Conv#1 Tile#0와 Conv#0 Tile#1에 대하여 스택을 수행할 수 있다. 프로세서(200)는 Conv#1 Tile#1와 Conv#0 Tile#2를 스택할 수 있다.
복수의 컨볼루션에 대하여 스택을 수행은 컨볼루션 연산에 사용되는 입력 특징맵과 커널의 스택 과정을 포함할 수 있다.
상술한 스택 최적화 과정은 도 5의 예시보다 더 복잡한 의존성을 갖는 경우(예: 할로(halo)가 요구되는 경우), 즉, 실행 파이프라인(execution pipeline)을 채우기 위해 4 이상의 타일링 크기를 갖는 경우에도 유사하게 적용될 수 있다.
도 5의 예시와 같은 타일링 및 스택 과정을 통해, 실행 시간을 감소시킬 수 있다. 프로세서(200)는 메모리(예: DRAM)으로부터 불필요한 입력 특징맵(예: 제2 특징맵)을 로드하는 것과 같은 메모리 재사용을 방지할 수 있다. 프로세서(200)는 제1 컨볼루션과 제2 컨볼루션 실행 단계를 스택함으로써 Conv#1 Tile#0와 Conv#1 Tile#1의 실행 시간을 숨길(hide) 수 있다.
도 6은 도 1에 도시된 뉴럴 네트워크 연산 장치의 구현의 다른 예를 나타낸다.
도 6을 참조하면, 뉴럴 네트워크 연산 장치(예: 도 1의 뉴럴 네트워크 연ㅅ나 장치(10))는 메모리(610)(예: 도 1의 메모리(300)), 채널 와이즈 스태커(630), MAC 하드웨어(650) 및 출력 분할기(670)를 포함할 수 있다.
채널 와이즈 스태커(630)는 채널-정렬된(channel-aligned) 얕은 입력을 하나의 결합된 입력(combined input)으로 스택할 수 있다.
MAC 하드웨어(650)는 MAC 연산을 수행할 수 있다. 출력 분할기(670)는 하나의 하드웨어 호출(invocation)로 여러 스택 컨볼루션에 대한 출력을 생성할 수 있다.
메모리(610)에 N 개의 얕은 행렬들이 존재할 때, 채널 와이즈 스태커(630)는 컴팩트한 스택 방식으로 행렬들을 스택하여 다중 그룹 실행(multi-group excution)을 위한 최적화를 수행할 수 있다.
스택된 입력은 MAC 하드웨어(650)를 통해 한 번에 처리될 수 있고, 스택된 입력들에 대한 서로 다른 출력들은 출력 분할기(670)에 의해 분할될 수 있다.
상술한 구성을 통해, 뉴럴 네트워크 연산 장치(10)는 입력 채널 스택 방식을 통해 정렬되지 않은 채널들(unaligned channels)에서 가비지 데이터(garbage data)의 양을 감소시킬 수 있기 때문에, 얕은 입력에 대한 메모리 오버헤드를 감소시킬 수 있다.
뉴럴 네트워크 연산 장치(10)는 복수의 연산들을 한 번에 병렬적으로 처리함으로써 연산 속도를 향상시킬 수 있다.
도 7은 스택 동작 및 뉴럴 네트워크 연산 수행의 흐름도를 나타낸다.
도 7을 참조하면, 프로세서(예: 도 1의 프로세서(200))는 데이터의 크기가 미리 결정된 크기 이하인지 여부를 판단할 수 있다. 예를 들어, 프로세서(200)는 얕은 입력 특징맵 채널에 대한 컨볼루션 연산인지 여부를 판단할 수 있다(711).
프로세서(200)는 얕은 입력 특징맵 채널에 대한 컨볼루션인 경우, 711의 컨볼루션 연산과는 독립적인 또 다른 데이터를 탐색할 수 있다(713). 프로세서(200)는 얕은 입력 특징맵 채널에 대한 컨볼루션이 아닌 경우, 통산 컨볼루션 처리를 수행할 수 있다(715).
프로세서(200)는 독립적인 또 다른 데이터가 발견되었는지 여부를 판단할 수 있다(717). 독립적인 또 다른 데이터가 발견된 경우, 프로세서(200)는 두 개의 서로 다른 컨볼루션이 스택 가능한지 여부를 판단할 수 있다(719). 독립적인 또 다른 데이터가 발견되지 않은 경우, 프로세서(200)는 타일링이 이득이 되는지 여부를 판단할 수 있다(721).
두 개의 얕은 컨볼루션이 스택 가능한 경우, 프로세서(200)는 입력 특징맵과 커널을 스택하여 컨볼루션을 수행할 수 있다(723). 프로세서(200)는 입력 특징맵을 스택, 패딩하고, 커널을 스택 및 패딩하여 MAC 엔진과 같은 하드웨어를 이용하여 스택된 데이터에 기초한 컨볼루션 연산을 수행할 수 있다.
타일링이 이득이 되지 않는 경우, 프로세서(200)는 통상 컨볼루션 처리를 수행할 수 있다(715). 타일링이 이득이 되는 경우, 프로세서(200)는 후속 컨볼루션이 얕고 스택 가능한지 여부를 판단할 수 있다(725).
후속 컨볼루션이 얕고 스택 가능한 경우, 프로세서(200)는 연속적으로 스택을 수행하고, 하나의 컨볼루션에서 동일한 타일을 스택하는 것에 비하여 후속 컨볼루션을 스택하는 것이 이득인지 여부를 판단할 수 있다(727). 후속 컨볼루션이 얕고 스택가능하지 않은 경우 또는, 하나의 컨볼루션에서 동일한 타일을 스택하는 것에 비하여 후속 컨볼루션을 스택하는 것이 이득이 아닌 경우, 프로세서(200)는 공간 방향으로 타일링하고, 컨볼루션 커널을 스택하여 MAC 엔진과 같은 하드웨어에서 스택된 데이터를 처리할 수 있다(729).
하나의 컨볼루션에서 동일한 타일을 스택하는 것에 비하여 후속 컨볼루션을 스택하는 것이 이득인 경우, 프로세서(200)는 입력 특징맵과 커널을 스택하여 컨볼루션을 수행할 수 있다(723).
상술한 바와 같이, 스택은 세 가지 방식으로 수행될 수 있다. 첫 번째는 서로 독립적인 두 개의 컨볼루션을 스택하는 경우이고, 두 번째는, 동일한 컨볼루션에서 서로 다른 타일을 스택하는 경우이고, 세 번재는 의존적인 컨볼루션을 스택하는 경우일 수 있다.
하나 이상의 선택이 가능한 경우, 독립적인 컨볼루션의 스택이 바람직할 수 있지만, 프로세서(200)는 소프트웨어 및/또는 하드웨어의 구현에 따라 최적의 스택 방법을 결정할 수 있다.
프로세서(200)는 상술한 방식의 스택을 통해서, 뉴럴 네트워크 연산을 하드웨어 상에서 병렬적으로 처리함으로써 하드웨어 이용률을 향상시킬 수 있다. 프로세서(200)는 입력 특징맵에 대하여 컴팩트하게 스택된 레이아웃을 이용함으로써 연산 입력에 대한 메모리 풋프린트를 감소시킬 수 있다.
도 8은 도 1에 도시된 뉴럴 네트워크 연산 장치의 동작의 흐름도를 나타낸다.
도 8을 참조하면, 수신기(예: 도 1의 수신기(100))는 뉴럴 네트워크 연산을 위한 데이터를 수신할 수 있다(810). 수신기(100)는 뉴럴 네트워크 연산을 위한 데이터의 후속 데이터를 수신할 수 있다.
프로세서(200)는 데이터의 크기가 미리 결정된 크기 이하인지 여부를 판단할 수 있다(830).
프로세서(200)는 데이터의 크기가 미리 결정된 크기 이하인지 판단 결과에 기초하여 데이터의 일부를 스택함으로써 스택된 데이터를 생성할 수 있다(850). 프로세서(200)는 데이터에 포함된 제1 특징맵의 일부를 메모리(300)의 제1 위치에 저장할 수 있다. 프로세서(200)는 데이터에 포함된 제2 특징맵의 일부를 제1 위치와 인접한 위치에 스택함으로써 스택된 특징맵을 생성할 수 있다.
프로세서(200)는 제1 특징맵에 포함된 하나 이상의 채널 및 제2 특징맵에 포함된 하나 이상의 채널을 채널 방향으로 스택함으로써 스택된 데이터를 생성할 수 있다.
프로세서(200)는 데이터에 포함된 하나 이상의 커널을 스택함으로써 스택된 커널을 생성할 수 있다.
프로세서(200)는 데이터를 분할하는 것이 이득이 되는지 여부를 판단할 수 있다. 프로세서(200)는 데이터를 미리 결정된 너비(width) 또는 미리 결정된 높이(height)를 갖도록 분할함으로써 복수의 타일을 생성할 수 있다. 프로세서(200)는 복수의 타일을 스택함으로써 스택된 데이터를 생성할 수 있다.
프로세서(200)는 데이터를 DMA(Direct Memory Access) 엔진에 입력함으로써 스택된 데이터를 생성할 수 있다.
프로세서(200)는 데이터에 기초하여 수행되는 제1 뉴럴 네트워크 연산과 상이한 제2 뉴럴 네트워크 연산에 수행될 추가 데이터를 탐색할 수 있다. 프로세서(200)는 추가 데이터와 데이터가 스택 가능한지 여부를 판단할 수 있다. 프로세서(200)는 판단 결과에 기초하여 추가 데이터와 데이터를 스택함으로써 제1 뉴럴 네트워크 연산 및 제2 뉴럴 네트워크 연산을 수행할 수 있다.
프로세서(200)는 후속 데이터의 크기가 미리 결정된 크기 이하인지 여부 및 스택 가능한지 여부를 판단할 수 있다. 프로세서(200)는 판단 결과 및 데이터와 후속 데이터 간의 의존성에 기초하여 후속 데이터의 일부를 스택함으로써 뉴럴 네트워크 연산을 수행할 수 있다.
프로세서(200)는 스택된 데이터에 기초하여 뉴럴 네트워크 연산을 병렬적으로 수행할 수 있다(870).
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 (19)

  1. 뉴럴 네트워크 연산을 위한 데이터를 수신하는 단계;
    상기 데이터의 크기가 미리 결정된 크기 이하인지 여부를 판단하는 단계;
    판단 결과에 기초하여 상기 데이터의 일부를 스택함으로써 스택된 데이터를 생성하는 단계; 및
    상기 스택된 데이터에 기초하여 상기 뉴럴 네트워크 연산을 병렬적으로 수행하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  2. 제1항에 있어서,
    상기 스택된 데이터를 생성하는 단계는,
    상기 데이터에 포함된 제1 특징맵의 일부를 메모리의 제1 위치에 저장하는 단계; 및
    상기 데이터에 포함된 제2 특징맵의 일부를 상기 제1 위치와 인접한 위치에 스택함으로써 상기 스택된 특징맵을 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  3. 제2항에 있어서,
    상기 스택된 데이터를 생성하는 단계는,
    상기 제1 특징맵에 포함된 하나 이상의 채널 및 상기 제2 특징맵에 포함된 하나 이상의 채널을 채널 방향으로 스택함으로써 상기 스택된 데이터를 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  4. 제1항에 있어서,
    상기 스택된 데이터를 생성하는 단계는,
    상기 데이터에 포함된 하나 이상의 커널을 스택함으로써 스택된 커널을 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  5. 제1항에 있어서,
    상기 스택된 데이터를 생성하는 단계는,
    상기 데이터를 미리 결정된 너비(width) 또는 미리 결정된 높이(height)를 갖도록 분할함으로써 복수의 타일을 생성하는 단계; 및
    상기 복수의 타일을 스택함으로써 상기 스택된 데이터를 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  6. 제5항에 있어서,
    상기 스택된 데이터를 생성하는 단계는,
    상기 데이터를 분할하는 것이 이득이 되는지 여부를 판단하는 단계
    를 더 포함하는 뉴럴 네트워크 연산 방법.
  7. 제1항에 있어서,
    상기 스택된 데이터를 생성하는 단계는,
    상기 데이터를 DMA(Direct Memory Access) 엔진에 입력함으로써 상기 스택된 데이터를 생성하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  8. 제1항에 있어서,
    상기 스택된 데이터를 생성하는 단계는,
    상기 데이터에 기초하여 수행되는 제1 뉴럴 네트워크 연산과 상이한 제2 뉴럴 네트워크 연산에 수행될 추가 데이터를 탐색하는 단계;
    상기 추가 데이터와 상기 데이터가 스택 가능한지 여부를 판단하는 단계; 및
    판단 결과에 기초하여 상기 추가 데이터와 상기 데이터를 스택함으로써 상기 제1 뉴럴 네트워크 연산 및 상기 제2 뉴럴 네트워크 연산을 병렬적으로 수행하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  9. 제1항에 있어서,
    상기 데이터의 후속 데이터를 수신하는 단계;
    상기 후속 데이터의 크기가 미리 결정된 크기 이하인지 여부 및 스택 가능한지 여부를 판단하는 단계; 및
    판단 결과 및 상기 데이터와 상기 후속 데이터 간의 의존성에 기초하여 상기 후속 데이터의 일부를 스택함으로써 상기 뉴럴 네트워크 연산을 수행하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  10. 하드웨어와 결합되어 제1항 내지 제9항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독가능한 매체에 저장된 컴퓨터 프로그램.
  11. 뉴럴 네트워크 연산을 위한 데이터를 수신하는 수신기; 및
    상기 데이터의 크기가 미리 결정된 크기 이하인지 여부를 판단하고,
    판단 결과에 기초하여 상기 데이터의 일부를 스택함으로써 스택된 데이터를 생성하고,
    상기 스택된 데이터에 기초하여 상기 뉴럴 네트워크 연산을 병렬적으로 수행하는 프로세서
    를 포함하는 뉴럴 네트워크 연산 장치.
  12. 제11항에 있어서,
    상기 프로세서는,
    상기 데이터에 포함된 제1 특징맵의 일부를 메모리의 제1 위치에 저장하고,
    상기 데이터에 포함된 제2 특징맵의 일부를 상기 제1 위치와 인접한 위치에 스택함으로써 상기 스택된 특징맵을 생성하는
    뉴럴 네트워크 연산 장치.
  13. 제12항에 있어서,
    상기 프로세서는,
    상기 제1 특징맵에 포함된 하나 이상의 채널 및 상기 제2 특징맵에 포함된 하나 이상의 채널을 채널 방향으로 스택함으로써 상기 스택된 데이터를 생성하는
    뉴럴 네트워크 연산 장치.
  14. 제11항에 있어서,
    상기 프로세서는,
    상기 데이터에 포함된 하나 이상의 커널을 스택함으로써 스택된 커널을 생성하는
    뉴럴 네트워크 연산 장치.
  15. 제11항에 있어서,
    상기 프로세서는,
    상기 데이터를 미리 결정된 너비(width) 또는 미리 결정된 높이(height)를 갖도록 분할함으로써 복수의 타일을 생성하고,
    상기 복수의 타일을 스택함으로써 상기 스택된 데이터를 생성하는
    뉴럴 네트워크 연산 장치.
  16. 제15항에 있어서,
    상기 프로세서는,
    상기 데이터를 분할하는 것이 이득이 되는지 여부를 판단하는
    뉴럴 네트워크 연산 장치.
  17. 제11항에 있어서,
    상기 프로세서는,
    상기 데이터를 DMA(Direct Memory Access) 엔진에 입력함으로써 상기 스택된 데이터를 생성하는
    뉴럴 네트워크 연산 장치.
  18. 제11항에 있어서,
    상기 프로세서는,
    상기 데이터에 기초하여 수행되는 제1 뉴럴 네트워크 연산과 상이한 제2 뉴럴 네트워크 연산에 수행될 추가 데이터를 탐색하고,
    상기 추가 데이터와 상기 데이터가 스택 가능한지 여부를 판단하고,
    판단 결과에 기초하여 상기 추가 데이터와 상기 데이터를 스택함으로써 상기 제1 뉴럴 네트워크 연산 및 상기 제2 뉴럴 네트워크 연산을 병렬적으로 수행하는
    뉴럴 네트워크 연산 장치
  19. 제11항에 있어서,
    상기 수신기는,
    상기 데이터의 후속 데이터를 수신하고,
    상기 프로세서는,
    상기 후속 데이터의 크기가 미리 결정된 크기 이하인지 여부 및 스택 가능한지 여부를 판단하고,
    판단 결과 및 상기 데이터와 상기 후속 데이터 간의 의존성에 기초하여 상기 후속 데이터의 일부를 스택함으로써 상기 뉴럴 네트워크 연산을 수행하는
    뉴럴 네트워크 연산 장치.
KR1020210125095A 2021-09-17 2021-09-17 뉴럴 네트워크 연산 방법 및 장치 KR20230041450A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210125095A KR20230041450A (ko) 2021-09-17 2021-09-17 뉴럴 네트워크 연산 방법 및 장치
US17/688,288 US20230086316A1 (en) 2021-09-17 2022-03-07 Neural network operation method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210125095A KR20230041450A (ko) 2021-09-17 2021-09-17 뉴럴 네트워크 연산 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20230041450A true KR20230041450A (ko) 2023-03-24

Family

ID=85573004

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210125095A KR20230041450A (ko) 2021-09-17 2021-09-17 뉴럴 네트워크 연산 방법 및 장치

Country Status (2)

Country Link
US (1) US20230086316A1 (ko)
KR (1) KR20230041450A (ko)

Also Published As

Publication number Publication date
US20230086316A1 (en) 2023-03-23

Similar Documents

Publication Publication Date Title
US11803733B2 (en) Method for implementing neural network model in heterogeneous computing platform and apparatus for performing the same
US20220261644A1 (en) Method and apparatus for generating task plan based on neural network
US20220284262A1 (en) Neural network operation apparatus and quantization method
US20220179714A1 (en) Method and apparatus for scheduling neural network operation
US20220253682A1 (en) Processor, method of operating the processor, and electronic device including the same
KR102547997B1 (ko) 효율적인 메모리 접근 방식을 이용한 뉴럴 네트워크 연산 가속 방법 및 장치
US20220284299A1 (en) Method and apparatus with neural network operation using sparsification
KR20230041450A (ko) 뉴럴 네트워크 연산 방법 및 장치
KR102479793B1 (ko) 연합 학습을 이용한 뉴럴 네트워크 학습 방법 및 장치
US20220237487A1 (en) Accelerator for processing inference tasks in parallel and operating method thereof
KR20220125112A (ko) 양자화를 이용한 뉴럴 네트워크 연산 방법 및 장치
KR102614909B1 (ko) 희소화를 이용한 뉴럴 네트워크 연산 방법 및 장치
KR102675414B1 (ko) 뉴럴 네트워크 연산 방법 및 장치
US20220253692A1 (en) Method and apparatus of operating a neural network
KR20230063519A (ko) 뉴럴 네트워크 연산 장치 및 방법
KR20240062267A (ko) 뉴럴 네트워크 연산 장치 및 방법
KR20210091947A (ko) 뉴럴 네트워크 모델의 분산 처리 방법 및 장치
KR20230068864A (ko) 뉴럴 네트워크 연산 장치 및 방법
KR20240106510A (ko) 뉴럴 네트워크 연산 장치 및 방법
KR102666670B1 (ko) 그룹 레이블링 학습에서 뉴럴 네트워크 기반 효과적인 임베딩 벡터 생성 및 이를 이용한 레이블 예측 방법, 장치 및 그 예측 모델에서의 학습 방법
KR102626850B1 (ko) 뉴럴 네트워크 기반 에너지 하베스팅 방법 및 시스템
US20220261649A1 (en) Neural network-based inference method and apparatus
KR20240023919A (ko) 컴퓨팅 시스템의 성능 모델링 장치 및 방법
KR20230138372A (ko) 뉴럴 네트워크 연산 장치 및 방법
US20220237436A1 (en) Neural network training method and apparatus

Legal Events

Date Code Title Description
A201 Request for examination