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

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

Info

Publication number
KR20220124979A
KR20220124979A KR1020210028800A KR20210028800A KR20220124979A KR 20220124979 A KR20220124979 A KR 20220124979A KR 1020210028800 A KR1020210028800 A KR 1020210028800A KR 20210028800 A KR20210028800 A KR 20210028800A KR 20220124979 A KR20220124979 A KR 20220124979A
Authority
KR
South Korea
Prior art keywords
neural network
processor
data
tensor
network operation
Prior art date
Application number
KR1020210028800A
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 KR1020210028800A priority Critical patent/KR20220124979A/ko
Priority to US17/378,867 priority patent/US20220284263A1/en
Publication of KR20220124979A publication Critical patent/KR20220124979A/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
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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

Landscapes

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

Abstract

뉴럴 네트워크 연산 장치 및 방법이 개시된다. 일 실시예에 따른 뉴럴 네트워크 연산 장치는, 뉴럴 네트워크 연산을 위한 데이터를 저장하는 메모리와, 상기 데이터의 연산의 필요성에 기초하여 상기 데이터에 대한 유효성을 검증(validate)하고, 상기 검증 결과 및 상기 데이터의 가상 텐서 주소(virtual tensor address)에 기초하여 상기 뉴럴 네트워크 연산을 수행하기 위한 실제 메모리 주소(real memory address)를 획득하고, 상기 실제 메모리 주소에 기초하여 상기 뉴럴 네트워크 연산을 수행하는 프로세서를 포함한다.

Description

뉴럴 네트워크 연산 장치 및 방법{NEURAL NETWORK OPERATION APPRATUS AND METHOD}
아래 실시예들은 뉴럴 네트워크 연산 장치 및 방법에 관한 것이다.
NPU(Neural Processing Unit) 또는 뉴럴 프로세서는 뉴럴 네트워크 연산을 처리하기 위한 프로세서를 의미한다. 종래의 뉴럴 프로세서는 GAN(Generative Adversarial Network), 세그멘테이션(segmentation) 네트워크 등에서 사용되는 데이터를 재구성하는 연산을 지원하지 않는다.
따라서, 종래의 뉴럴 프로세서는 대부분 호스트로 데이터를 전송한 후, 데이터 재구성 연산을 처리하고 다시 받는 방식을 사용한다.
하지만 이와 같은 방법은 뉴럴 프로세서의 MAC(Multiply-Accumulate) 연산 장치의 처리율(utilization)을 낮춰 전체 성능이 떨어뜨릴 수 있다.
일 실시예에 따른 뉴럴 네트워크 연산 장치는, 뉴럴 네트워크 연산을 위한 데이터를 저장하는 메모리와, 상기 데이터의 연산의 필요성에 기초하여 상기 데이터에 대한 유효성을 검증(validate)하고, 상기 검증 결과 및 상기 데이터의 가상 텐서 주소(virtual tensor address)에 기초하여 상기 뉴럴 네트워크 연산을 수행하기 위한 실제 메모리 주소(real memory address)를 획득하고, 상기 실제 메모리 주소에 기초하여 상기 뉴럴 네트워크 연산을 수행하는 프로세서를 포함한다.
상기 프로세서는, 상기 가상 텐서 주소 및 상기 뉴럴 네트워크 연산의 스트라이드(stride)에 기초하여 상기 유효성을 검증할 수 있다.
상기 프로세서는, 상기 가상 텐서 주소 및 상기 스트라이드 간의 모듈러 연산에 기초하여 상기 유효성을 검증할 수 있다.
상기 프로세서는, 상기 가상 텐서 주소, 상기 뉴럴 네트워크 연산의 스트라이드 또는 상기 뉴럴 네트워크 연산의 커널 크기에 기초하여 상기 실제 메모리 주소를 획득할 수 있다.
상기 프로세서는, 상기 가상 텐서 주소를 상기 스트라이드 또는 상기 커널 크기로 나눈 값의 바닥 함수 값에 기초하여 상기 실제 메모리 주소를 획득할 수 있다.
상기 뉴럴 네트워크 연산은, 업샘플링(upsampling) 연산 또는 전치 컨볼루션(transposed convolution) 연산을 포함할 수 있다.
상기 데이터는 특징맵(feature map), 상기 특징맵의 너비(width), 높이(height), 채널의 수(number of channel), 상기 뉴럴 네트워크 연산의 커널의 크기 및 상기 뉴럴 네트워크 연산의 스트라이드를 포함할 수 있다.
상기 뉴럴 네트워크 연산을 수행하는 연산기를 더 포함하고, 상기 프로세서는, 상기 실제 메모리 주소에 대응되는 데이터를 상기 연산기에 입력함으로써 상기 뉴럴 네트워크 연산을 수행할 수 있다.
상기 연산기는, 적어도 하나의 MAC(Multiply Accumulator) 연산기를 포함할 수 있다.
다른 실시예에 따른 뉴럴 네트워크 연산 장치는, 뉴럴 네트워크 연산을 위한 데이터를 저장하는 메모리와, 상기 데이터의 가상 텐서 주소에 기초하여 상기 뉴럴 네트워크 연산의 결과를 저장하기 위한 실제 메모리 주소를 획득하고, 상기 뉴럴 네트워크 연산을 위한 입력 데이터를 연산기에 입력함으로써 상기 뉴럴 네트워크 연산을 수행하고, 상기 연산기의 출력을 상기 실제 메모리 주소로 출력하는 프로세서를 포함한다.
상기 프로세서는, 상기 가상 텐서 주소, 상기 입력 데이터의 채널 인덱스, 상기 입력 데이터의 채널의 수 및 상기 뉴럴 네트워크 연산의 파라미터에 기초하여 상기 실제 메모리 주소를 획득할 수 있다.
상기 파라미터는, 상기 입력 데이터에 포함된 채널의 크기와 상기 뉴럴 네트워크 연산의 출력에 포함된 채널의 크기의 비율에 기초하여 결정될 수 있다.
상기 뉴럴 네트워크 연산은, 컨볼루션 연산 및 활성화 연산을 포함할 수 있다.
상기 프로세서는, 상기 채널 인덱스, 상기 파라미터 및 상기 채널의 수를 이용한 바닥 함수 값에 기초하여 상기 실제 메모리 주소를 획득할 수 있다.
상기 프로세서는, 상기 채널 인덱스 및 상기 채널의 수를 이용한 바닥 함수 값과 상기 파라미터 간의 모듈러 연산에 기초하여 상기 실제 메모리 주소를 획득할 수 있다.
상기 프로세서는, 상기 채널 인덱스와 상기 채널의 수 간의 모듈러 연산에 기초하여 상기 실제 메모리 주소를 획득할 수 있다.
일 실시예에 따른 뉴럴 네트워크 연산 방법은, 뉴럴 네트워크 연산을 위한 데이터를 수신하는 단계와, 상기 데이터의 연산의 필요성에 기초하여 상기 데이터에 대한 유효성을 검증(validate)하는 단계;
상기 검증 결과 및 상기 데이터의 가상 텐서 주소(virtual tensor address)에 기초하여 상기 뉴럴 네트워크 연산을 수행하기 위한 실제 메모리 주소(real memory address)를 획득하는 단계와, 상기 실제 메모리 주소에 기초하여 상기 뉴럴 네트워크 연산을 수행하는 단계를 포함한다.
상기 유효성을 검증하는 단계는, 상기 가상 텐서 주소 및 상기 뉴럴 네트워크 연산의 스트라이드(stride)에 기초하여 상기 유효성을 검증하는 단계를 포함할 수 있다.
상기 실제 메모리 주소를 획득하는 단계는, 상기 가상 텐서 주소 및 상기 뉴럴 네트워크 연산의 스트라이드 또는 상기 뉴럴 네트워크 연산의 커널 크기에 기초하여 상기 실제 메모리 주소를 획득하는 단계를 포함할 수 있다.
상기 뉴럴 네트워크 연산을 수행하는 단계는, 상기 실제 메모리 주소에 기초하여 업샘플링(upsampling) 연산 또는 전치 컨볼루션(transposed convolution) 연산을 수행하는 단계를 포함할 수 있다.
도 1a는 일 실시예에 따른 뉴럴 네트워크 연산 장치의 개략적인 블록도를 나타낸다.
도 1b는 다른 실시예에 따른 뉴럴 네트워크 연산 장치의 개략적인 블록도를 나타낸다.
도 2a는 입력 텐서 가상화 동작을 설명하기 위한 도면이다.
도 2b는 입력 텐서 가상화 동작에 대응하는 의사 코드(pseudo code)의 예를 나타낸다.
도 3a는 출력 텐서 가상화 동작을 설명하기 위한 도면이다.
도 3b는 출력 텐서 가상화 동작에 대응하는 의사 코드의 예를 나타낸다.
도 4a는 뉴럴 네트워크 연산의 일 예를 나타낸다.
도 4b는 도 4a의 연산에서 입력 가상화를 수행하는 동작을 나타낸다.
도 5a는 뉴럴 네트워크 연산의 다른 예를 나타낸다.
도 5b는 도 5a의 연산에서 입력 가상화를 수행하는 동작을 나타낸다.
도 6a 및 도 6b는 뉴럴 네트워크 연산의 또 다른 예를 나타낸다.
도 6c 및 도 6d는 도 6a 및 도 6b의 연산에서 출력 가상화를 수행하는 동작을 나타낸다.
도 7 및 도 8은 도 1a 및 도 1b에 도시된 뉴럴 네트워크 연산 장치의 동작의 흐름도의 예들을 나타낸다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1a 및 도 1b는 다양한 실시예에 따른 뉴럴 네트워크 연산 장치의 개략적인 블록도를 나타낸다.
도 1a 및 도 1b를 참조하면, 뉴럴 네트워크 연산 장치(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)는 뉴럴 네트워크 연산을 수행할 수 있다. 뉴럴 네트워크 연산은 데이터 재구성 연산을 포함할 수 있다. 예를 들어, 뉴럴 네트워크 연산은 업샘플링(upsampling) 연산, 전치 컨볼루션(transposed convolution) 연산 또는 서브 픽셀 컨볼루션(sub-pixel convolution) 연산을 포함할 수 있다.
뉴럴 네트워크 연산 장치(10)는 데이터에 기초하여 데이터 재구성 연산을 수행할 수 있다.
데이터 재구성 연산은 데이터 값을 바꾸지 않고, 같은 값을 복제하거나 텐서(tensor) 내에서 위치를 바꾸는 연산을 의미할 수 있다. 데이터 재구성 연산은 업샘플링 연산(예: 최근접 이웃 업샘플링(nearest neighbor upsampling)), 전치 컨볼루션 또는 서브 픽셀 컨볼루션을 포함할 수 있다.
텐서는 다차원 배열(multi-dimensional array)로 구성된 벡터(vector) 또는 행렬(matrix)의 일반화된 데이터 구조 또는 다중선형대수학(multilinear algebra)의 대상을 의미할 수 있다.
데이터 재구성 연산 중에서 데이터를 복제하는 동작은 같은 데이터를 여러 번 읽도록 하는 동작을 포함하고, 텐서 내의 위치를 바꾸는 동작은 바꾸려는 위치에 맞게 데이터를 읽는 순서를 바꾸는 동작을 포함할 수 있다. 뉴럴 네트워크 연산 장치(10)는 뉴럴 네트워크 연산에 이용되는 데이터에 대하여 데이터 재구성을 수행함으로써 뉴럴 네트워크 연산을 수행할 수 있다.
뉴럴 네트워크 연산 장치(10)는 별도의 호스트로부터 데이터를 처리한 후에 다시 불러오는 방식이 아니고, 뉴럴 네트워크 연산 장치(10) 내에서 데이터 재구성 연산을 수행할 수 있다. 뉴럴 네트워크 연산 장치(10)는 실제 물리 메모리에서 데이터를 재구성하지 않고, 연산기(300)에 데이터를 로드할 때 알맞은 위치에 데이터를 패치(fetch)함으로써 데이터 재구성 연산을 수행할 수 있다.
뉴럴 네트워크 연산 장치(10)는 수행하는 뉴럴 네트워크의 구조에 따라 입력 텐서 가상화와 출력 텐서 가상화를 선택적으로 적용할 수 있다.
뉴럴 네트워크 연산 장치(10)는 텐서 가상화(tensor virtualization)를 통해 물리 메모리에 연산에 사용되는 데이터를 별도로 저장하지 않고, 추가적인 연산이 없어 메모리 사용량을 감소시키고, 데이터 재구성 연산을 빠르게 처리함으로써 뉴럴 네트워크 연산의 성능을 향상시킬 수 있다.
뉴럴 네트워크 연산 장치(10)는 프로세서(100) 및 메모리(200)를 포함한다. 뉴럴 네트워크 연산 장치(10)는 연산기(300)를 더 포함할 수 있다.
프로세서(100)는 메모리(200)에 저장된 데이터를 처리할 수 있다. 프로세서(100)는 메모리(200)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(100)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.
"프로세서(100)"는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(100)는 뉴럴 네트워크 연산의 입력 또는 출력에 대하여 텐서 가상화(tensor virtualization)을 수행할 수 있다.
프로세서(100)는 뉴럴 네트워크 연산을 위한 데이터의 연산의 필요성에 기초하여 데이터에 대한 유효성을 검증(validate)할 수 있다. 프로세서(100)는 가상 텐서 주소(virtual tensor address) 및 뉴럴 네트워크 연산의 스트라이드(stride)에 기초하여 유효성을 검증할 수 있다.
뉴럴 네트워크 연산을 위한 데이터는 뉴럴 네트워크의 입력 데이터, 출력 데이터 또는 모델 파라미터(예: 가중치)를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 연산을 위한 데이터는 특징맵(feature map), 특징맵의 너비(width), 높이(height), 채널의 수(number of channel), 뉴럴 네트워크 연산의 커널의 크기 및 뉴럴 네트워크 연산의 스트라이드를 포함할 수 있다.
가상 텐서 주소는 텐서 상에 존재하는 데이터의 위치에 대응하는 주소를 의미할 수 있다. 스트라이드는 입력 데이터에 필터(또는, 커널)을 적용할 때 필터가 이동하는 간격을 의미할 수 있다. 프로세서(100)는 가상 텐서 주소 및 스트라이드 간의 모듈러(modulo) 연산에 기초하여 유효성을 검증할 수 있다.
프로세서(100)는 검증 결과 및 데이터의 가상 텐서 주소에 기초하여 뉴럴 네트워크 연산을 수행하기 위한 실제 메모리 주소(real memory address)를 획득할 수 있다. 프로세서(100)는 가상 텐서 주소, 뉴럴 네트워크 연산의 스트라이드 또는 뉴럴 네트워크 연산의 커널 크기에 기초하여 실제 메모리 주소를 획득할 수 있다. 실제 메모리 주소는 뉴럴 네트워크 연산이 수행되는 데이터 위치한 물리 메모리(physical memory) 상의 주소를 의미할 수 있다.
프로세서(100)는 가상 텐서 주소 및 뉴럴 네트워크 연산의 스트라이드 또는 뉴럴 네트워크 연산의 커널 크기에 기초하여 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 가상 텐서 주소를 스트라이드 또는 커널 크기로 나눈 값의 바닥 함수 값에 기초하여 실제 메모리 주소를 획득할 수 있다.
프로세서(100)는 실제 메모리 주소에 기초하여 뉴럴 네트워크 연산을 수행할 수 있다. 프로세서(100)는 실제 메모리 주소에 대응되는 데이터를 연산기(300)에 입력함으로써 뉴럴 네트워크 연산을 수행할 수 있다.
프로세서(100)는 데이터의 가상 텐서 주소에 기초하여 뉴럴 네트워크 연산의 결과를 저장하기 위한 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 가상 텐서 주소, 입력 데이터의 채널 인덱스, 입력 데이터의 채널의 수 및 뉴럴 네트워크 연산의 파라미터에 기초하여 실제 메모리 주소를 획득할 수 있다.
뉴럴 네트워크 연산의 파라미터는 입력 데이터에 포함된 채널의 크기와 뉴럴 네트워크 연산의 출력에 포함된 채널의 크기의 비율에 기초하여 결정될 수 있다. 뉴럴 네트워크 연산은 컨볼루션 연산 및 활성화 연산을 포함할 수 있다.
프로세서(100)는 채널 인덱스, 파라미터 및 채널의 수를 이용한 바닥 함수 값에 기초하여 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 채널 인덱스 및 채널의 수를 이용한 바닥 함수 값과 파라미터 간의 모듈러 연산에 기초하여 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 채널 인덱스와 채널의 수 간의 모듈러 연산에 기초하여 실제 메모리 주소를 획득할 수 있다.
프로세서(100)는 뉴럴 네트워크 연산을 위한 입력 데이터를 연산기(300)에 입력함으로써 뉴럴 네트워크 연산을 수행할 수 있다. 프로세서(100)는 연산기(300)의 출력을 실제 메모리 주소로 출력할 수 있다.
메모리(200)는 뉴럴 네트워크 연산을 위한 데이터를 저장할 수 있다. 메모리(200)는 프로세서(100)에 의해 실행가능한 인스트럭션들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서의 동작 및/또는 프로세서의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리(200)는 휘발성 메모리 장치 또는 불휘발성 메모리 장치로 구현될 수 있다.
휘발성 메모리 장치는 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)로 구현될 수 있다.
연산기(300)는 뉴럴 네트워크 연산을 수행할 수 있다. 연산기(300)는 가속기를 포함할 수 있다. 가속기는 뉴럴 네트워크 어플리케이션을 가속하기 위해 설계된 특수한 하드웨어 또는 컴퓨터 시스템을 의미할 수 있다.
연산기(300)는 가속기를 포함할 수 있다. 가속기는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit), FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Circuit) 또는 AP(Application Processor)를 포함할 수 있다. 또한, 가속기는 가상 머신(Virtual Machine)와 같이 소프트웨어 컴퓨팅 환경으로 구현될 수도 있다. 예를 들어, 연산기(300)는 적어도 하나의 MAC(Multiply Accumulator) 연산기를 포함할 수 있다.
실시예에 따라 연산기(300)는 뉴럴 네트워크 연산 장치(10)에 포함되지 않고, 외부에 위치할 수도 있다.
도 2a는 입력 텐서 가상화 동작을 설명하기 위한 도면이고, 도 2b는 입력 텐서 가상화 동작에 대응하는 의사 코드(pseudo code)의 예를 나타낸다.
도 2a 및 도 2b를 참조하면, 프로세서(100)는 입력 텐서 가상화(input tensor virtualization)를 수행할 수 있다. 프로세서(100)는 연산기(300)와 파이프라인(pipeline)의 형태로 연결됨으로써 실제 메모리 주소를 계산하기 위한 충분한 시간을 획득할 수 있다.
입력 텐서 가상화는 네트워크 연산에 필요한 데이터의 위치 또는 주소만을 제공할 수 있도록 가상 텐서를 구성함으로써 뉴럴 네트워크 연산에 사용되는 입력 데이터의 위치를 연산기(300)에 제공하는 과정을 의미할 수 있다.
프로세서(100)는 뉴럴 네트워크 연산을 위한 데이터의 연산의 필요성에 기초하여 데이터에 대한 유효성을 검증(validate)할 수 있다. 프로세서(100)는 가상 텐서 주소(virtual tensor address) 및 뉴럴 네트워크 연산의 스트라이드(stride)에 기초하여 유효성을 검증할 수 있다.
프로세서(100)는 데이터가 연산이 필요한 데이터인지 불필요한 데이터인지를 판단함으로써 유효성을 검증할 수 있다. 예를 들어, 프로세서(100)는 0인 데이터에 대해서는 연산이 불필요한 데이터이므로 유효하지 않은 데이터로 판단하고, 0이 아닌 데이터에 대해서는 연산이 필요한 데이터이므로 유효한 데이터로 판단할 수 있다. 프로세서(100)는 컴파일 과정에서 유효성 검증 및 실제 메모리 주소의 획득을 수행할 수 있다.
뉴럴 네트워크 연산을 위한 데이터는 뉴럴 네트워크의 입력 데이터, 출력 데이터 또는 모델 파라미터(예: 가중치)를 포함할 수 있다. 뉴럴 네트워크 연산을 위한 데이터는 온-칩 텐서의 모양(on-chip tensor shape), 텐서의 물리 메모리 주소(예: Addr0), 뉴럴 네트워크 연산에 관련된 비율(예: kv) 및 뉴럴 네트워크의 연산의 유형(예: Type)을 포함할 수 있다. 온 칩 텐서의 모양은 텐서의 너비(예: Wreal), 높이(예: Hreal) 및 채널의 수(예: C)를 포함할 수 있다. 뉴럴 네트워크 연산에 관련된 비율은 업샘플링 비율(upsampling ratio) 또는 제로 패딩 비율(zero-padding ratio)를 포함할 수 있다.
가상 텐서 주소는 텐서 상에 존재하는 데이터의 위치에 대응하는 주소를 의미할 수 있다. 스트라이드는 입력 데이터에 필터(또는, 커널)을 적용할 때 필터가 이동하는 간격을 의미할 수 있다. 프로세서(100)는 가상 텐서 주소 및 스트라이드 간의 모듈러(modulo) 연산에 기초하여 유효성을 검증할 수 있다.
프로세서(100)는 수학식 1을 이용하여 데이터의 유효성을 검증할 수 있다. 유효성 검증은 입력된 데이터가 연산이 필요한 데이터인지 여부를 판단하는 과정을 포함할 수 있다.
Figure pat00001
여기서, x, y는 데이터의 좌표를 의미하고, s는 스트라이드를 의미할 수 있다. Validate함수의 출력은 유효성 검증 결과를 의미할 수 있다. 예를 들어, Validate 함수의 출력은 True 또는 False 값을 포함할 수 있다. Validate 함수는 유효성이 있는 경우 True를 출력하고 유효성이 없는 경우 False를 출력할 수 있다.
프로세서(100)는 모든 데이터가 유효한 뉴럴 네트워크 연산에 대해서는 유효성 검증을 생략할 수 있다. 예를 들어, 업샘플링 연산(예: 최근접 이웃 업샘플링)의 경우, 모든 입력 데이터가 유효하므로 모든 데이터에 대하여 유효성에 참(True) 값을 할당함으로써 유효성 검증 과정을 생략할 수 있다.
프로세서(100)는 검증 결과 및 데이터의 가상 텐서 주소에 기초하여 뉴럴 네트워크 연산을 수행하기 위한 실제 메모리 주소(real memory address)를 획득할 수 있다. 프로세서(100)는 가상 텐서 주소, 뉴럴 네트워크 연산의 스트라이드 또는 뉴럴 네트워크 연산의 커널 크기에 기초하여 실제 메모리 주소를 획득할 수 있다. 실제 메모리 주소는 뉴럴 네트워크 연산이 수행되는 데이터 위치한 물리 메모리(physical memory) 상의 주소를 의미할 수 있다.
프로세서(100)는 가상 텐서 주소 및 뉴럴 네트워크 연산의 스트라이드 또는 뉴럴 네트워크 연산의 커널 크기에 기초하여 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 가상 텐서 주소를 스트라이드 또는 커널 크기로 나눈 값의 바닥 함수 값에 기초하여 실제 메모리 주소를 획득할 수 있다.
프로세서(100)는 수학식 2 또는 수학식 3을 이용하여 뉴럴 네트워크 연산을 수행하기 위한 실제 메모리 주소를 획득할 수 있다.
Figure pat00002
Figure pat00003
여기서, GetInpuAddr 함수의 출력은 실제 메모리 주소일 수 있다. x, y는 가상 텐서 주소의 좌표를 의미하고, k는 커널의 크기를 의미하고, s는 스트라이드를 의미할 수 있다.
프로세서(100)는 실제 메모리 주소에 기초하여 뉴럴 네트워크 연산을 수행할 수 있다. 프로세서(100)는 실제 메모리 주소에 대응되는 데이터를 연산기(300)에 입력함으로써 뉴럴 네트워크 연산을 수행할 수 있다.
도 2b의 예시는 상술한 동작에 대응되는 의사 코드의 예를 나타낼 수 있다. 사각형 내의 코드는 입력 텐서 가상화 동작을 나타낼 수 있다.
도 3a는 출력 텐서 가상화 동작을 설명하기 위한 도면이고, 도 3b는 출력 텐서 가상화 동작에 대응하는 의사 코드의 예를 나타낸다.
도 3a 및 도 3b를 참조하면, 프로세서(100)는 출력 텐서 가상화를 수행할 수 있다. 프로세서(100)는 연산기(300)와 파이프라인(pipeline)의 형태로 연결됨으로써 실제 메모리 주소를 계산하기 위한 충분한 시간을 획득할 수 있다.
프로세서(100)는 데이터의 가상 텐서 주소에 기초하여 뉴럴 네트워크 연산의 결과를 저장하기 위한 실제 메모리 주소를 획득할 수 있다. 출력 텐서 가상화 연산에서, 뉴럴 네트워크 연산은 컨볼루션 연산 및 활성화(activation) 연산을 포함할 수 있다.
프로세서(100)는 가상 텐서 주소, 입력 데이터의 채널 인덱스, 입력 데이터의 채널의 수 및 뉴럴 네트워크 연산의 파라미터에 기초하여 실제 메모리 주소를 획득할 수 있다.
뉴럴 네트워크 연산의 파라미터는 입력 데이터에 포함된 채널의 크기와 뉴럴 네트워크 연산의 출력에 포함된 채널의 크기의 비율에 기초하여 결정될 수 있다. 뉴럴 네트워크 연산은 컨볼루션 연산 및 활성화 연산을 포함할 수 있다.
프로세서(100)는 채널 인덱스, 파라미터 및 채널의 수를 이용한 바닥 함수 값에 기초하여 상기 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 채널 인덱스 및 채널의 수를 이용한 바닥 함수 값과 파라미터 간의 모듈러 연산에 기초하여 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 채널 인덱스와 채널의 수 간의 모듈러 연산에 기초하여 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 컴파일 과정에서 실제 메모리 주소를 획득할 수 있다.
뉴럴 네트워크 연산을 위한 데이터는 뉴럴 네트워크의 입력 데이터, 출력 데이터 또는 모델 파라미터(예: 가중치)를 포함할 수 있다. 뉴럴 네트워크 연산을 위한 데이터는 온-칩 텐서의 모양(on-chip tensor shape), 텐서의 물리 메모리 주소(예: Addr0), 뉴럴 네트워크 연산의 파라미터(예: r) 및 뉴럴 네트워크의 연산의 유형(예: Type)을 포함할 수 있다. 온 칩 텐서의 모양은 텐서의 너비(예: Wreal), 높이(예: Hreal) 및 채널의 수(예: C)를 포함할 수 있다. 뉴럴 네트워크 연산의 파라미터는 서브 픽셀 컨볼루션 파라미터를 포함할 수 있다.
프로세서(100)는 수학식 4에 기초하여 실제 메모리 주소를 획득할 수 있다.
Figure pat00004
여기서, GetOutputAddr 함수의 출력은 실제 메모리 주소일 수 있다. x, y는 가상 텐서 주소를 의미하고, n은 입력 데이터의 채널 인덱스를 의미할 수 있다. r은 상술한 파라미터를 의미할 수 있다. 예를 들어, r은 서브 픽셀 컨볼루션 파라미터를 포함할 수 있다. C는 입력 데이터의 채널의 수를 의미할 수 있다.
프로세서(100)는 뉴럴 네트워크 연산을 위한 입력 데이터를 연산기(300)에 입력함으로써 뉴럴 네트워크 연산을 수행할 수 있다. 프로세서(100)는 연산기(300)의 출력을 실제 메모리 주소로 출력할 수 있다.
프로세서(100)는 출력 텐서 가상화를 통해 출력 데이터를 재구성할 수 있다. 프로세서(100)는 여러 위치에 동일한 데이터를 저장할 수 있다. 여러 위치에 동일한 데이터를 저장할 경우, 프로세서(100)는 뉴럴 네트워크 연산의 출력을 저장할 모든 실제 메모리 주소를 리턴할 수 있다. 예를 들어, 프로세서(100)는 컨볼루션 연산 및 활성화 연산이 모두 수행된 출력 데이터를 수학식 3을 이용하여 획득한 주소에 저장할 수 있다.
도 3b의 예시는 상술한 동작에 대응되는 의사 코드의 예를 나타낼 수 있다. 사각형 내의 코드는 출력 텐서 가상화 동작을 나타낼 수 있다.
도 4a는 뉴럴 네트워크 연산의 일 예를 나타내고, 도 4b는 도 4a의 연산에서 입력 가상화를 수행하는 동작을 나타낸다.
도 4a 및 도 4b를 참조하면, 프로세서(100)는 업샘플링 연산(예: 최근접 이웃 업샘플링 연산) 과정에서 입력 텐서 가상화를 수행할 수 있다. 도 4a 및 도 4b의 예시는 특징맵의 너비와 높이를 2배씩 업샘플링하는 연산의 예를 나타낼 수 있다.
업샘플링은 작은 해상도의 이미지(410)에 포함된 픽셀을 복사하여 큰 해상도의 이미지(420)로 변환하는 과정을 포함할 수 있다.
프로세서(100)는 업샘플링 연산에 대하여 입력 텐서 가상화를 수행할 경우, 유효성 검증을 생략할 수 있다. 예를 들어, 프로세서(100)는 업샘플링 연산에 대하여 입력 텐서 가상화를 수행할 경우, 유효성 검증 결과가 항상 참(True) 값을 갖도록 설정함으로써 유효성 검증을 생략할 수 있다.
업샘플링 연산의 경우 모든 데이터가 연산을 수행할 필요성이 인정되기 때문에 유효성 검증을 생략하는 것이 가능할 수 있다.
프로세서(100)는 입력 텐서 가상화를 수행하여 가상 입력 텐서(440)를 생성할 수 있다. 도 4b의 i, j는 가상 텐서 주소 또는 주소에 대응하는 좌표를 의미할 수 있다. 프로세서(100)는 수학식 2를 이용하여 입력 텐서 가상화를 수행함으로써 업샘플링 연산에 이용되는 데이터의 물리 메모리(430)의 주소를 획득함으로써 가상 입력 텐서(440)를 생성할 수 있다.
프로세서(100)는 생성한 가상 입력 텐서(440)에 기초하여 연산기(300)에 입력 데이터를 제공함으로써 뉴럴 네트워크 연산(예: 업샘플링 연산)을 수행할 수 있다.
도 5a는 뉴럴 네트워크 연산의 다른 예를 나타내고, 도 5b는 도 5a의 연산에서 입력 가상화를 수행하는 동작을 나타낸다.
도 5a 및 도 5b를 참조하면, 프로세서(100)는 전치 컨볼루션 과정에서 입력 텐서 가상화를 수행할 수 있다. 전치 컨볼루션은 컨볼루션 연산의 역방향 연산을 의미할 수 있다.
프로세서(100)는 커널(510) 및 특징맵(520)에 기초하여 전치 컨볼루션 연산의 출력 특징맵(530)을 생성할 수 있다. 프로세서(100)는 제로 패딩 삽입(zero padding insertion)을 수행하여 특징맵(520)을 생성할 수 있다. 도 5a의 예시는 스트라이드 2로 제로 패딩을 삽입하는 경우를 나타낼 수 있다.
프로세서(100)는 커널(510) 및 특징맵(520)에 기초하여 커널(510)을 스트라이드 간격만큼 이동시키면서 컨볼루션 연산을 수행함으로써 출력 특징맵(530)을 생성할 수 있다. 도 5a의 예시는 커널의 크기가 3이고, 스트라이드가 1이고, 패드가 (1, 0)인 컨볼루션 연산의 예시를 나타낼 수 있다.
프로세서(100)는 유효성이 검증된 입력 데이터에 대해서 물리 메모리(540)의 주소를 획득할 수 있다.
프로세서(100)는 입력 텐서 가상화를 수행하여 가상 입력 텐서(550)를 생성할 수 있다. 도 5b의 p, q는 입력 데이터의 물리 메모리(540)의 주소 또는 좌표를 의미할 수 있다. 프로세서(100)는 수학식 3을 이용하여 입력 텐서 가상화를 수행함으로써 업샘플링 연산에 이용되는 데이터의 물리 메모리(540)의 주소를 획득함으로써 가상 입력 텐서(550)를 생성할 수 있다.
프로세서(100)는 생성한 가상 입력 텐서(550)에 기초하여 연산기(300)에 입력 데이터를 제공함으로써 뉴럴 네트워크 연산(예: 전치 컨볼루션 연산)을 수행할 수 있다
도 6a 및 도 6b는 뉴럴 네트워크 연산의 또 다른 예를 나타내고, 도 6c 및 도 6d는 도 6a 및 도 6b의 연산에서 출력 가상화를 수행하는 동작을 나타낸다.
도 6a 및 도 6b를 참조하면, 프로세서(100)는 출력 텐서 가상화를 수행할 수 있다. 프로세서(100)는 서브 픽셀 컨볼루션 과정에서 출력 텐서 가상화를 수행할 수 있다.
프로세서(100)는 특징맵(610)을 도치된 필터 행렬(transposed filter matrix)(620)를 이용하여 컨볼루션 연산을 수행함으로써 복수의 채널들(630)을 획득할 수 있다. 도치된 필터 행렬(620)은 r2 개의 그룹을 가지고, 각 그룹당 C 개의 필터를 포함할 수 있다. 프로세서(100)는 복수의 채널들(630)에 대하여 픽셀 셔플링(pixel shuffling)을 수행함으로써 출력 특징맵(640)을 획득할 수 있다.
뉴럴 네트워크 연산의 파라미터(예: 서브 픽셀 컨볼루션 파라미터) r은 입력 데이터에 포함된 채널의 크기와 뉴럴 네트워크 연산의 출력에 포함된 채널의 크기의 비율에 기초하여 결정될 수 있다. 예를 들어, r은 출력 특징맵(640)의 너비 rW와 채널들(630)에 포함된 입력 특징맵의 너비 W 간의 비율일 수 있다.
뉴럴 네트워크 연산은 컨볼루션 연산 및 활성화 연산을 포함할 수 있다. 프로세서(100)는 출력 텐서 가상화를 수행함으로써 컨볼루션 연산과 활성화 연산이 수행된 데이터를 재정렬하여 별도의 픽셀 셔플링 과정을 수행하지 않고 바로 출력 특징맵(640)을 생성할 수 있다.
프로세서(100)는 출력 텐서 가상화를 이용하여 높이가 H이고, 너비가 W이고, 깊이(또는 채널의 수)가 r2C 인 가상 출력 텐서(650)에 대하여 새로운 픽셀 셔플링을 수행함으로써 높이가 rH이고, 너비가 rW이고, 깊이가 C인 실제 텐서(660)를 생성할 수 있다.
이 때, 프로세서(100)는 연산기(300)로부터 수신한 연산 결과에 기초하여 가상 출력 텐서(650)를 생성할 수 있다. 프로세서(100)는 수학식 4를 이용하여 가상 출력 텐서를 생성할 수 있다.
구체적으로, 프로세서(100)는 채널 인덱스, 파라미터 및 채널의 수를 이용한 바닥 함수 값에 기초하여 실제 메모리(예: 실제 텐서(660)) 주소의 x 값을 획득할 수 있다. 프로세서(100)는 수학식 5를 이용하여 실제 메모리 주소의 x 값을 획득할 수 있다.
Figure pat00005
여기서, r은 서브 픽셀 컨볼루션 파라미터를 의미하고, i는 가상 출력 텐서(650)의 x좌표의 주소를 의미할 수 있다. k는 채널 인덱스를 의미하고, C는 채널의 수를 의미할 수 있다.
프로세서(100)는 채널 인덱스 및 채널의 수를 이용한 바닥 함수 값과 파라미터 간의 모듈러 연산에 기초하여 실제 메모리(예: 실제 텐서(660)) 주소의 y 값을 획득할 수 있다. 프로세서(100)는 수학식 6을 이용하여 실제 메모리 주소의 y 값을 획득할 수 있다.
Figure pat00006
여기서, j는 가상 출력 텐서(650)의 y 좌표를 의미할 수 있다.
프로세서(100)는 채널 인덱스와 채널의 수 간의 모듈러 연산에 기초하여 실제 메모리(예: 실제 텐서(660)) 주소의 z 주소를 획득할 수 있다. 프로세서(100)는 수학식 7을 이용하여 실제 메모리 주소의 z값을 획득할 수 있다.
Figure pat00007
도 7은 도 1a 및 도 1b에 도시된 뉴럴 네트워크 연산 장치의 동작의 흐름도의 일 예를 나타낸다.
도 7을 참조하면, 프로세서(예: 도 1a의 프로세서(100))는 뉴럴 네트워크 연산을 위한 데이터를 수신할 수 있다(710). 뉴럴 네트워크 연산은 업샘플링(upsampling) 연산 또는 전치 컨볼루션(transposed convolution) 연산을 포함할 수 있다. 데이터는 특징맵(feature map), 특징맵의 너비(width), 높이(height), 채널의 수(number of channel), 뉴럴 네트워크 연산의 커널의 크기 및 뉴럴 네트워크 연산의 스트라이드를 포함할 수 있다.
프로세서(100)는 데이터의 연산의 필요성에 기초하여 상기 데이터에 대한 유효성을 검증할 수 있다(730). 프로세서(100)는 가상 텐서 주소 및 뉴럴 네트워크 연산의 스트라이드에 기초하여 유효성을 검증할 수 있다. 프로세서(100)는 가상 텐서 주소 및 스트라이드 간의 모듈러 연산에 기초하여 유효성을 검증할 수 있다.
프로세서(100)는 유효성 검증 결과 및 데이터의 가상 텐서 주소에 기초하여 뉴럴 네트워크 연산을 수행하기 위한 실제 메모리 주소를 획득할 수 있다(750). 프로세서(100)는 가상 텐서 주소, 뉴럴 네트워크 연산의 스트라이드 또는 뉴럴 네트워크 연산의 커널 크기에 기초하여 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 가상 텐서 주소를 스트라이드 또는 커널 크기로 나눈 값의 바닥 함수 값에 기초하여 실제 메모리 주소를 획득할 수 있다.
프로세서(100)는 실제 메모리 주소에 기초하여 뉴럴 네트워크 연산을 수행할 수 있다(770). 프로세서(100)는 실제 메모리 주소에 대응되는 데이터를 연산기(예: 도 1b의 연산기(300))에 입력함으로써 뉴럴 네트워크 연산을 수행할 수 있다. 연산기는 적어도 하나의 MAC 연산기를 포함할 수 있다.
도 8은 도 1a 및 도 1b에 도시된 뉴럴 네트워크 연산 장치의 동작의 흐름도의 다른 예를 나타낸다.
도 8을 참조하면, 프로세서(예: 도 1a의 프로세서(100))는 뉴럴 네트워크 연산을 위한 데이터를 수신할 수 있다(810). 뉴럴 네트워크 연산은 컨볼루션 연산 및 활성화 연산을 포함할 수 있다.
프로세서(100)는 데이터의 가상 텐서 주소에 기초하여 뉴럴 네트워크 연산의 결과를 저장하기 위한 실제 메모리 주소를 획득할 수 있다(830). 프로세서(100)는 가상 텐서 주소, 입력 데이터의 채널 인덱스, 입력 데이터의 채널의 수 및 뉴럴 네트워크 연산의 파라미터에 기초하여 실제 메모리 주소를 획득할 수 있다.
프로세서(100)는 채널 인덱스, 파라미터 및 채널의 수를 이용한 바닥 함수 값에 기초하여 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 채널 인덱스 및 채널의 수를 이용한 바닥 함수 값과 파라미터 간의 모듈러 연산에 기초하여 실제 메모리 주소를 획득할 수 있다. 프로세서(100)는 채널 인덱스와 채널의 수 간의 모듈러 연산에 기초하여 실제 메모리 주소를 획득할 수 있다.
파라미터는 입력 데이터에 포함된 채널의 크기와 뉴럴 네트워크 연산의 출력에 포함된 채널의 크기의 비율에 기초하여 결정될 수 있다.
프로세서(100)는 뉴럴 네트워크 연산을 위한 입력 데이터를 연산기(예: 도 1b의 연산기(300))에 입력함으로써 뉴럴 네트워크 연산을 수행할 수 있다(850).
프로세서(100)는 연산기(300)의 출력을 실제 메모리 주소로 출력할 수 있다(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 (20)

  1. 뉴럴 네트워크 연산을 위한 데이터를 저장하는 메모리; 및
    상기 데이터의 연산의 필요성에 기초하여 상기 데이터에 대한 유효성을 검증(validate)하고,
    검증 결과 및 상기 데이터의 가상 텐서 주소(virtual tensor address)에 기초하여 상기 뉴럴 네트워크 연산을 수행하기 위한 실제 메모리 주소(real memory address)를 획득하고,
    상기 실제 메모리 주소에 기초하여 상기 뉴럴 네트워크 연산을 수행하는 프로세서
    를 포함하는 뉴럴 네트워크 연산 장치.
  2. 제1항에 있어서,
    상기 프로세서는,
    상기 가상 텐서 주소 및 상기 뉴럴 네트워크 연산의 스트라이드(stride)에 기초하여 상기 유효성을 검증하는
    뉴럴 네트워크 연산 장치.
  3. 제2항에 있어서,
    상기 프로세서는,
    상기 가상 텐서 주소 및 상기 스트라이드 간의 모듈러 연산에 기초하여 상기 유효성을 검증하는
    뉴럴 네트워크 연산 장치.
  4. 제1항에 있어서,
    상기 프로세서는,
    상기 가상 텐서 주소, 상기 뉴럴 네트워크 연산의 스트라이드 또는 상기 뉴럴 네트워크 연산의 커널 크기에 기초하여 상기 실제 메모리 주소를 획득하는
    뉴럴 네트워크 연산 장치.
  5. 제4항에 있어서,
    상기 프로세서는,
    상기 가상 텐서 주소를 상기 스트라이드 또는 상기 커널 크기로 나눈 값의 바닥 함수 값에 기초하여 상기 실제 메모리 주소를 획득하는
    뉴럴 네트워크 연산 장치.
  6. 제1항에 있어서,
    상기 뉴럴 네트워크 연산은,
    업샘플링(upsampling) 연산 또는 전치 컨볼루션(transposed convolution) 연산을 포함하는
    뉴럴 네트워크 연산 장치.
  7. 제1항에 있어서,
    상기 데이터는 특징맵(feature map), 상기 특징맵의 너비(width), 높이(height), 채널의 수(number of channel), 상기 뉴럴 네트워크 연산의 커널의 크기 및 상기 뉴럴 네트워크 연산의 스트라이드를 포함하는
    를 포함하는 가속기 자원 관리 방법.
  8. 제1항에 있어서,
    상기 뉴럴 네트워크 연산을 수행하는 연산기
    를 더 포함하고,
    상기 프로세서는,
    상기 실제 메모리 주소에 대응되는 데이터를 상기 연산기에 입력함으로써 상기 뉴럴 네트워크 연산을 수행하는
    뉴럴 네트워크 연산 장치.
  9. 제8항에 있어서,
    상기 연산기는,
    적어도 하나의 MAC(Multiply Accumulator) 연산기를 포함하는
    뉴럴 네트워크 연산 장치.
  10. 뉴럴 네트워크 연산을 위한 데이터를 저장하는 메모리; 및
    상기 데이터의 가상 텐서 주소에 기초하여 상기 뉴럴 네트워크 연산의 결과를 저장하기 위한 실제 메모리 주소를 획득하고,
    상기 뉴럴 네트워크 연산을 위한 입력 데이터를 연산기에 입력함으로써 상기 뉴럴 네트워크 연산을 수행하고,
    상기 연산기의 출력을 상기 실제 메모리 주소로 출력하는 프로세서
    를 포함하는 뉴럴 네트워크 연산 장치.
  11. 제10항에 있어서,
    상기 프로세서는,
    상기 가상 텐서 주소, 상기 입력 데이터의 채널 인덱스, 상기 입력 데이터의 채널의 수 및 상기 뉴럴 네트워크 연산의 파라미터에 기초하여 상기 실제 메모리 주소를 획득하는
    뉴럴 네트워크 연산 장치.
  12. 제11항에 있어서,
    상기 파라미터는,
    상기 입력 데이터에 포함된 채널의 크기와 상기 뉴럴 네트워크 연산의 출력에 포함된 채널의 크기의 비율에 기초하여 결정되는
    뉴럴 네트워크 연산 장치.
  13. 제11항에 있어서,
    상기 뉴럴 네트워크 연산은,
    컨볼루션 연산 및 활성화 연산을 포함하는
    뉴럴 네트워크 연산 장치.
  14. 제11항에 있어서,
    상기 프로세서는,
    상기 채널 인덱스, 상기 파라미터 및 상기 채널의 수를 이용한 바닥 함수 값에 기초하여 상기 실제 메모리 주소를 획득하는
    뉴럴 네트워크 연산 장치.
  15. 제11항에 있어서,
    상기 프로세서는,
    상기 채널 인덱스 및 상기 채널의 수를 이용한 바닥 함수 값과 상기 파라미터 간의 모듈러 연산에 기초하여 상기 실제 메모리 주소를 획득하는
    뉴럴 네트워크 연산 장치.
  16. 제11항에 있어서,
    상기 프로세서는,
    상기 채널 인덱스와 상기 채널의 수 간의 모듈러 연산에 기초하여 상기 실제 메모리 주소를 획득하는
    뉴럴 네트워크 연산 장치.
  17. 뉴럴 네트워크 연산을 위한 데이터를 수신하는 단계;
    상기 데이터의 연산의 필요성에 기초하여 상기 데이터에 대한 유효성을 검증(validate)하는 단계;
    검증 결과 및 상기 데이터의 가상 텐서 주소(virtual tensor address)에 기초하여 상기 뉴럴 네트워크 연산을 수행하기 위한 실제 메모리 주소(real memory address)를 획득하는 단계; 및
    상기 실제 메모리 주소에 기초하여 상기 뉴럴 네트워크 연산을 수행하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  18. 제17항에 있어서,
    상기 유효성을 검증하는 단계는,
    상기 가상 텐서 주소 및 상기 뉴럴 네트워크 연산의 스트라이드(stride)에 기초하여 상기 유효성을 검증하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  19. 제17항에 있어서,
    상기 실제 메모리 주소를 획득하는 단계는,
    상기 가상 텐서 주소 및 상기 뉴럴 네트워크 연산의 스트라이드 또는 상기 뉴럴 네트워크 연산의 커널 크기에 기초하여 상기 실제 메모리 주소를 획득하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
  20. 제17항에 있어서,
    상기 뉴럴 네트워크 연산을 수행하는 단계는,
    상기 실제 메모리 주소에 기초하여 업샘플링(upsampling) 연산 또는 전치 컨볼루션(transposed convolution) 연산을 수행하는 단계
    를 포함하는 뉴럴 네트워크 연산 방법.
KR1020210028800A 2021-03-04 2021-03-04 뉴럴 네트워크 연산 장치 및 방법 KR20220124979A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210028800A KR20220124979A (ko) 2021-03-04 2021-03-04 뉴럴 네트워크 연산 장치 및 방법
US17/378,867 US20220284263A1 (en) 2021-03-04 2021-07-19 Neural network operation apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210028800A KR20220124979A (ko) 2021-03-04 2021-03-04 뉴럴 네트워크 연산 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20220124979A true KR20220124979A (ko) 2022-09-14

Family

ID=83117230

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210028800A KR20220124979A (ko) 2021-03-04 2021-03-04 뉴럴 네트워크 연산 장치 및 방법

Country Status (2)

Country Link
US (1) US20220284263A1 (ko)
KR (1) KR20220124979A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114598631B (zh) * 2022-04-28 2022-08-09 之江实验室 面向神经网络计算的分布式数据路由的建模方法和装置

Also Published As

Publication number Publication date
US20220284263A1 (en) 2022-09-08

Similar Documents

Publication Publication Date Title
KR20210015685A (ko) 이종 컴퓨팅 플랫폼에서 뉴럴 네트워크 모델을 구현하는 방법 및 이를 수행하는 장치
US11803733B2 (en) Method for implementing neural network model in heterogeneous computing platform and apparatus for performing the same
KR20220124979A (ko) 뉴럴 네트워크 연산 장치 및 방법
US20230058341A1 (en) Neural network training method and apparatus using trend
US20220237487A1 (en) Accelerator for processing inference tasks in parallel and operating method thereof
KR20220096466A (ko) 뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치
CN114912590A (zh) 处理器、操作处理器的方法以及包括处理器的电子装置
US20210216863A1 (en) Method and apparatus with neural network distributed processing
KR20210100335A (ko) 멀티 디바이스 기반 추론 방법 및 장치
KR20220030681A (ko) 뉴럴 네트워크 연산 장치 및 방법
US20220269597A1 (en) Memory mapping method and apparatus
US11928469B2 (en) Apparatus and method with neural network operation
US20220269930A1 (en) Neural network operation method and apparatus
KR20210113004A (ko) 뉴럴 네트워크 연산을 위한 코드 생성 방법 및 장치
KR102547997B1 (ko) 효율적인 메모리 접근 방식을 이용한 뉴럴 네트워크 연산 가속 방법 및 장치
CN114154628A (zh) 神经网络操作方法和设备
US11789710B2 (en) Compilation method and apparatus with neural network
KR102614909B1 (ko) 희소화를 이용한 뉴럴 네트워크 연산 방법 및 장치
US20220114426A1 (en) Method and apparatus with neural network operation
US20240211744A1 (en) Apparatus and method with multiple neural processing units for neural network operation
CN113361704A (zh) 用于神经网络代码生成的方法和设备
US20220075606A1 (en) Compiling method and apparatus for neural networks
US20220261649A1 (en) Neural network-based inference method and apparatus
KR20240100056A (ko) 다중 npu를 이용한 뉴럴 네트워크 연산 장치 및 방법
US20230269104A1 (en) Method of managing data history and device performing the same

Legal Events

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