KR20200062014A - 다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법 - Google Patents

다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20200062014A
KR20200062014A KR1020190086634A KR20190086634A KR20200062014A KR 20200062014 A KR20200062014 A KR 20200062014A KR 1020190086634 A KR1020190086634 A KR 1020190086634A KR 20190086634 A KR20190086634 A KR 20190086634A KR 20200062014 A KR20200062014 A KR 20200062014A
Authority
KR
South Korea
Prior art keywords
weight
walsh
matrix
adamar
vector
Prior art date
Application number
KR1020190086634A
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 US16/675,709 priority Critical patent/US11562046B2/en
Priority to SG10201911112WA priority patent/SG10201911112WA/en
Publication of KR20200062014A publication Critical patent/KR20200062014A/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/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/145Square transforms, e.g. Hadamard, Walsh, Haar, Hough, Slant transforms
    • 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)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

본 개시에 따르면, 뉴럴 네트워크를 가속하는 장치는, 입력 피처 매트릭스를 저장하는 입력 피처 맵 버퍼, 다이어딕 매트릭스 형태로 훈련된 웨이트 매트릭스를 저장하는 웨이트 버퍼, 입력 피처 매트릭스로부터 얻어지는 입력 피처 벡터 및 웨이트 매트릭스에 포함된 웨이트 벡터에 월시-아다마르 변환을 수행하도록 구성되는 변환 회로 및 월시-아다마르 변환을 기초로 변환된 입력 피처 벡터 및 월시-아다마르 변환을 기초로 변환된 웨이트 벡터에 요소별 곱셈을 수행하도록 구성되는 연산 회로를 포함할 수 있다.

Description

다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법{APPARATUS FOR ACCELERATING NEURAL NETWORK USING WEIGHT WITH DYADIC MATRIX FORM AND OPERATION METHOD THEREOF}
본 개시의 기술적 사상은 뉴럴 네트워크를 가속하는 장치 및 상기 장치의 동작 방법에 관한 것으로서, 자세하게는 다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 하나 이상의 뉴럴 네트워크 모델을 이용한 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 장치에 관한 연구들 중 일부는, 성능이 감소되지 않거나 적게 감소되는 범위에서 에너지 효율을 증가시키는 데 집중되고 있다. 이에 따라, 뉴럴 네트워크를 이용하는 장치에서 성능 내지는 정확도가 감소되지 않거나 적게 감소되면서도, 계산 복잡도를 감소시키고, 연산 속도를 증가시킬 수 있는 기술이 요구되고 있다.
본 개시의 기술적 사상은 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법에 있어서, 계산 복잡도를 감소시킴으로써 연산 속도를 증가시키고, 변환 회로가 칩 상에서 차지하는 면적을 줄이기 위한 방법 및 장치를 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크를 가속하는 장치는, 입력 피처 매트릭스를 저장하는 입력 피처 맵 버퍼, 다이어딕 매트릭스 형태로 훈련된 웨이트 매트릭스를 저장하는 웨이트 버퍼, 입력 피처 매트릭스로부터 얻어지는 입력 피처 벡터 및 웨이트 매트릭스에 포함된 웨이트 벡터에 월시-아다마르 변환을 수행하도록 구성되는 변환 회로 및 월시-아다마르 변환을 기초로 변환된 입력 피처 벡터 및 월시-아다마르 변환을 기초로 변환된 웨이트 벡터에 요소별 곱셈을 수행하도록 구성되는 연산 회로를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크를 가속하는 장치의 동작 방법은, 웨이트 매트릭스를 다이어딕 매트릭스 형태로 형성하기 위한 다이어딕 제약 하에 뉴럴 네트워크를 훈련함으로써 다이어딕 매트릭스 형태의 웨이트 매트릭스를 얻어내는 단계 및 웨이트 매트릭스 및 입력 피처 맵을 기초로 출력 피처 맵을 생성하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크를 가속하는 장치의 동작 방법은, 웨이트 벡터 및 입력 피처 벡터에 월시-아다마르 변환을 수행하는 단계, 월시-아다마르 변환에 기초해 변환된 웨이트 벡터 및 월시-아다마르 변환에 기초해 변환된 입력 피처 벡터에 요소별 곱셈을 수행하는 단계 및 요소별 곱셈 연산의 결과 벡터에 월시-아다마르 역변환을 수행함으로써 출력 피처 벡터를 생성하는 단계를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 뉴럴 네트워크를 기반으로 한 뉴럴 네트워크 장치는, 적어도 하나의 IP 블록 및 시스템 버스를 통해 적어도 하나의 IP 블록과 통신하고, 적어도 하나의 IP 블록으로부터 제공되는 입력 데이터를 기초로 정보 신호를 출력하도록 구성되는 뉴럴 네트워크 프로세서를 포함할 수 있고, 뉴럴 네트워크 프로세서는, 다이어딕 매트릭스 형태로 훈련된 웨이트 매트릭스에 포함된 웨이트 벡터 및 입력 피처 벡터에 +1, -1 또는 0의 계수만을 이용한 변환을 수행하고, 변환을 기초로 변환된 웨이트 매트릭스 및 변환을 기초로 변환된 입력 피처 벡터에 요소별 곱셈을 수행함으로써 출력 피터 벡터를 생성하도록 구성될 수 있다.
본 개시의 예시적 실시 예에 따른 뉴럴 네트워크를 가속하는 장치는, 웨이트 매트릭스가 다이어딕 매트릭스(dyadic matrix)의 형태를 갖도록 뉴럴 네트워크를 가속시키고, 웨이트 매트릭스로부터 얻어지는 웨이트 벡터 및 입력 피처 벡터에 월시-아다마르 변환(Walsh-Hadamard Transform)을 수행한 뒤, 요소별 곱셈(element-wise multiplication)을 수행함으로써 복소수 연산 없이 실수 연산 만을 통해 출력 피처 벡터를 얻어낼 수 있다. 이에 따라, 뉴럴 네트워크를 가속하는 장치의 계산 복잡도 및 연산량이 감소할 수 있다.
또한, 월시-아다마르 변환은 푸리에 변환(Fourier Transform)과 달리 복소수가 이용되지 않기 때문에, 월시-아다마르 변환을 수행하는 변환 회로를 하드웨어로 구현함에 있어서, 변환 회로가 칩 상에서 차지하는 면적이 감소할 수 있다.
또한, 이로써, 변환 회로의 면적이 감소하는 만큼 연산 회로의 면적을 칩 상에서 늘릴 수 있기 때문에, 연산 속도를 더욱 증가시킬 수 있다.
도 1은 본 개시의 예시적 실시 예에 따른 데이터 처리 시스템을 나타낸다.
도 2는 뉴럴 네트워크 구조의 일 예로서, 컨볼루션 뉴럴 네트워크의 구조를 나타낸다.
도 3은 블록-써큘런트 매트릭스 형태의 웨이트를 기반으로 한 뉴럴 네트워크 프로세서의 연산 식을 나타낸다.
도 4는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서의 연산 식을 나타낸다.
도 5는 본 개시의 예시적 실시 예에 따른 월시-아다마르 변환을 기반으로 한 뉴럴 네트워크 프로세서의 연산 과정을 나타낸다.
도 6은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서를 나타낸다.
도 7은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서의 동작 방법의 순서도를 나타낸다.
도 8은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서를 나타낸다.
도 9는 본 개시의 예시적 실시 예에 따른 웨이트 매트릭스 및 입력 피처 매트릭스 생성 과정을 설명하기 위한 도면이다.
도 10은 본 개시의 예시적 실시 예에 따른 웨이트 매트릭스와 입력 피처 매트릭스의 연산 식을 나타낸다.
도 11은 본 개시의 예시적 실시 예에 따른 웨이트 매트릭스를 나타낸다.
도 12는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서의 동작 방법의 순서도를 나타낸다.
도 13a 및 도 13b는 본 개시의 예시적 실시 예에 따른 변환 회로를 나타낸다.
도 14a 및 도 14b는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서의 연산 방법을 설명하기 위한 도면이다.
도 15는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서의 동작 방법을 나타낸다.
도 16은 본 개시의 예시적 실시 예에 따른 집적 회로 및 이를 포함하는 장치를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시 예에 따른 데이터 처리 시스템(10)을 나타낸다. 데이터 처리 시스템(10)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황을 판단하거나 데이터 처리 시스템(10)이 탑재되는 전자 장치의 구성들을 제어할 수 있다. 예를 들어, 데이터 처리 시스템(10)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS), 스마트 TV, 스마트 폰, 의료 장치, 모바일 장치, 영상 표시 장치, 계측 장치, IoT(Internet of Things) 장치 등에 적용될 수 있으며, 이외에도 다양한 종류의 전자 장치 중 하나에 탑재될 수 있다.
데이터 처리 시스템(10)은 적어도 하나의 IP 블록(Intellectual Property) 및 뉴럴 네트워크 프로세서(300)를 포함할 수 있다. 데이터 처리 시스템(10)은 다양한 종류의 IP 블록들을 포함할 수 있으며, 예를 들어 도 1에 도시된 바와 같이, 데이터 처리 시스템(10)은 메인 프로세서(100), RAM(200; Random Access Memory), 입출력 장치(400) 및 메모리(500) 등의 IP 블록을 포함할 수 있다. 이 외에도, 데이터 처리 시스템(10)은 MFC(Multi-Format Codec), 비디오 모듈(예컨대, 카메라 인터페이스, JPEG(Joint Photographic Experts Group) 프로세서, 비디오 프로세서, 또는 믹서 등), 3D 그래픽 코어, 오디오 시스템, 디스플레이 드라이버, GPU(Graphic Processing Unit), DSP(Digital signal Processor) 등과 같은 다른 범용적인 구성요소들을 더 포함할 수 있다.
데이터 처리 시스템(10)의 구성들, 예컨대, 메인 프로세서(100), RAM(200), 뉴럴 네트워크 프로세서(300), 입출력 장치(400) 및 메모리(500)는 시스템 버스(600)를 통해 데이터를 송수신할 수 있다. 예컨대, 시스템 버스(600)에는 표준 버스 규격으로서, ARM(Advanced RISC Machine)사의 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜 등이 적용될 수 있다. 그러나, 이에 제한되는 것은 아니며, 다양한 종류의 프로토콜이 적용될 수 있다.
실시 예에 있어서, 데이터 처리 시스템(10)의 구성요소들, 메인 프로세서(100), RAM(200), 뉴럴 네트워크 프로세서(300), 입출력 장치(400) 및 메모리(500)는 하나의 반도체 칩으로 구현될 수 있으며, 예컨대, 데이터 처리 시스템(10)은 시스템 온 칩(SoC)으로서 구현될 수 있다. 그러나 이에 제한되는 것은 아니며, 데이터 처리 시스템(10)은 복수의 반도체 칩들로 구현될 수 있다. 일 실시 예에서, 데이터 처리 시스템(10)은 모바일 장치에 탑재되는 어플리케이션 프로세서로 구현도리 수도 있다.
메인 프로세서(100)는 데이터 처리 시스템(10)의 전반적인 동작을 제어할 수 있으며, 일 예로서 메인 프로세서(100)는 중앙 프로세싱 유닛(Central Processing Unit; CPU)일 수 있다. 메인 프로세서(100)는 하나의 코어(Single Core)를 포함하거나, 복수의 코어들(Multi-Core)을 포함할 수 있다. 메인 프로세서(100)는 RAM(200) 및 메모리(500)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예를 들어, 메인 프로세서(100)는 메모리(500)에 저장된 프로그램들을 실행함으로써 데이터 처리 시스템(10)의 다양한 기능들을 제어할 수 있다.
RAM(200)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(500)에 저장된 프로그램들 및/또는 데이터는 메인 프로세서(100)의 제어 또는 부팅 코드에 따라 RAM(200)에 일시적으로 로딩될 수 있다. RAM(200)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리를 이용해 구현될 수 있다.
입출력 장치(400)는 사용자로부터 또는 외부로부터 입력 데이터를 수신하고, 데이터 처리 시스템(10)의 데이터 처리 결과를 출력할 수 있다. 입출력 장치(400)는 터치 스크린 패널, 키보드, 다양한 종류의 센서들 중 적어도 하나를 이용해 구현될 수 있다. 실시 예에서, 입출력 장치(400)는 데이터 처리 시스템(10) 주변의 정보를 수집할 수 있다. 예컨대 입출력 장치(400)는 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서 등 다양한 종류의 센싱 장치들 중 적어도 하나를 포함하거나, 또는 상기 장치로부터 센싱 신호를 수신할 수 있다. 실시 예에서, 입출력 장치(400)는 데이터 처리 시스템(10) 외부로부터 이미지 신호를 센싱 또는 수신할 수 있고, 센싱 또는 수신된 이미지 신호를 이미지 데이터, 즉 이미지 프레임으로 변환할 수 있다. 입출력 장치(400)는 이미지 프레임을 메모리(500)에 저장하거나, 또는 뉴럴 네트워크 프로세서(300)에 제공할 수 있다.
메모리(500)는 데이터를 저장하기 위한 저장 장소로서, 예를 들어, OS(Operating System), 각종 프로그램들 및 각종 데이터를 저장할 수 있다. 메모리(500)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(500)는 휘발성 메모리(volatile memory) 또는 비휘발성 메모리(non-volatile memory) 중 적어도 하나를 포함할 수 있다. 비휘발성 메모리는 ROM(Read Only Memory), PROM(Programmable ROM), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등을 포함할 수 있다. 휘발성 메모리는 DRAM(Dynamic RAM), SRAM(Static RAM), SDRAM(Synchronous DRAM) 등을 포함할 수 있다. 또한 일 실시 예에 있어서, 메모리(150)는 HDD(Hard Disk Drive), SSD(Solid-State Drive), CF(Compact Flash), SD(Secure Digital), Micro-SD(Micro Secure Digital), Mini-SD(Mini Secure Digital), xD(extreme digital) 또는 Memory Stick 등과 같은 저장 장치로 구현될 수 있다.
뉴럴 네트워크 프로세서(300)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train, 또는 학습(learn))하거나, 수신되는 입력 데이터를 기초로 연산을 수행하고, 연산 결과를 기초로 정보 신호(information signal)를 생성하거나, 뉴럴 네트워크를 재훈련(retrain)할 수 있다. 뉴럴 네트워크는 CNN(Convolution Neural Network), R-CNN(Region with Convolution Neural Network), RPN(Region Proposal Network), RNN(Recurrent Neural Network), S-DNN(Stacking-based deep Neural Network), S-SDNN(State-Space Dynamic Neural Network), Deconvolution Network, DBN(Deep Belief Network), RBM(Restricted Boltzmann Machine), Fully Convolutional Network, LSTM(Long Short-Term Memory) Network, Classification Network 등 다양한 종류의 뉴럴 네트워크 모델들을 포함할 수 있으나 이에 제한되지는 않는다. 도 2를 참조하여 뉴럴 네트워크 구조에 대하여 예시적으로 설명하기로 한다.
도 2는 뉴럴 네트워크 구조의 일 예로서, 컨볼루션 뉴럴 네트워크의 구조를 나타낸다. 뉴럴 네트워크(NN)는 복수의 레이어들(L1 내지 Ln)을 포함할 수 있다. 뉴럴 네트워크(NN)는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. 복수의 레이어들(L1 내지 Ln)은 컨볼루션 레이어(convolution layer), 풀링(pooling layer), 활성 레이어(activation layer) 및 풀리 커넥티드 레이어(fully-connected layer) 등으로 구현될 수 있다.
예시적으로, 제1 레이어(L1)는 컨볼루션 레이어이고, 제2 레이어(L2)는 풀링 레이어이고, 제n 레이어(Ln)는 출력 레이어로서 풀리 커넥티드 레이어일 수 있다. 뉴럴 네트워크(NN)는 활성 레이어를 더 포함할 수 있으며, 다른 종류의 연산을 수행하는 레이어를 더 포함할 수 있다.
복수의 레이어들(L1 내지 Ln) 각각은 입력되는 데이터(예컨대, 이미지 프레임) 또는 이전 레이어에서 생성된 피처 맵을 입력 피처 맵으로서 수신하고, 입력 피처 맵을 연산함으로써 출력 피처 맵 또는 인식 신호(REC)를 생성할 수 있다. 이 때, 피처 맵은 입력 데이터의 다양한 특징이 표현된 데이터를 의미한다. 피처 맵들(FM1, FM2, FMn)은 예컨대 2차원 매트릭스 또는 3차원 매트릭스(또는 텐서(tensor)) 구조를 가질 수 있다. 피처 맵들(FM1, FM2, FMn)은 피처값들이 행열(매트릭스)로 배열된 적어도 하나의 채널(CH)을 포함할 수 있다. 피처 맵들(FM1, FM2, FMn)이 복수의 채널(CH)을 포함할 경우, 복수의 채널(CH)의 행(H) 및 열(W)의 개수는 서로 동일하다. 이때, 행(H), 열(W), 및 채널(CH)은 좌표상의 x축, y축 및 z축에 각각 대응될 수 있다. x축 및 y축 방향의 2차원 매트릭스(이하, 본 개시에서의 매트릭스는 x축 및 y축 방향의 2차원 매트릭스를 의미함)에서 특정한 행(H) 및 열(W)에 배치된 피처값은 매트릭스의 엘리먼트(요소)로 지칭될 수 있다. 예컨대 4 X 5 의 매트릭스 구조는 20개의 엘리먼트들을 포함할 수 있다.
제1 레이어(L1)는 제1 피처 맵(FM1)을 가중치 커널(WK)과 컨볼루션함으로써 제2 피처 맵(FM2)을 생성할 수 있다. 가중치 커널(WK)은 필터, 가중치 맵 등으로 지칭될 수 있다. 가중치 커널(WK)은 제1 피처 맵(FM1)을 필터링할 수 있다. 가중치 커널(WK)의 구조는 피처맵의 구조와 유사하다. 가중치 커널(WK)은 가중치들이 행열(매트릭스)로 배열된 적어도 하나의 채널(CH)을 포함하며, 채널(CH)의 개수는 대응하는 피처 맵, 예컨대 제1 피처 맵(FM1)의 채널(CH) 개수와 동일하다. 가중치 커널(WK)과 제1 피처 맵(FM1)의 동일한 채널(CH)끼리 컨볼루션될 수 있다.
가중치 커널(WK)이 제1 피처 맵(FM1)을 슬라이딩 윈도우 방식으로 시프트하면서, 제1 피처 맵(FM1)의 윈도우들(또는 타일이라고 함)과 컨볼루션될 수 있다. 각 시프트 동안, 가중치 커널(WK)에 포함되는 가중치 각각이 제1 피처 맵(FM1)과 중첩되는 영역에서의 모든 피처값들과 곱해지고 더해질 수 있다. 제1 피처 맵(FM1)과 가중치 커널(WK)이 컨볼루션 됨에 따라, 제2 피처 맵(FM2)의 하나의 채널이 생성될 수 있다. 도 2에는 하나의 가중치 커널(WK)이 표시되었으나, 실질적으로는 복수의 가중치 커널(WK)이 제1 피처 맵(FM1)과 컨볼루션 되어, 복수의 채널들을 포함하는 제2 피처 맵(FM2)이 생성될 수 있다.
제2 레이어(L2)는 풀링을 통해 제2 피처 맵(FM2)의 공간적 크기(spatial size)를 변경함으로써, 제3 피처 맵(FM3)을 생성할 수 있다. 풀링은 샘플링 또는 다운-샘플링으로 지칭될 수 있다. 2차원의 풀링 윈도우(PW)가 풀링 윈도우(PW)의 사이즈 단위로 제2 피처 맵(FM2) 상에서 시프트 되고, 풀링 윈도우(PW)와 중첩되는 영역의 피처 데이터들 중 최대값(또는 피처 데이터들의 평균값)이 선택될 수 있다. 이에 따라, 제2 피처 맵(FM2)으로부터 공간적 사이즈가 변경된 제3 피처 맵(FM3)이 생성될 수 있다. 제3 피처 맵(FM3)의 채널과 제2 피처 맵(FM2)의 채널 개수는 동일하다.
제n 레이어(Ln)는 제n 피처 맵(FMn)의 피처들을 조합함으로써 입력 데이터의 클래스(class)(CL)를 분류할 수 있다. 또한, 제n 레이어(Ln)는 클래스에 대응되는 인식 신호(REC)를 생성할 수 있다. 실시 예에 있어서, 입력 데이터는 비디오 스트림(video stream)에 포함되는 프레임 데이터에 대응될 수 있으며, 제n 레이어(Ln)는 이전 레이어로부터 제공되는 제n 피처 맵(FMn)을 기초로 프레임 데이터가 나타내는 이미지에 포함되는 사물에 해당하는 클래스를 추출함으로써, 사물을 인식하고, 인식된 사물에 상응하는 인식 신호(REC)를 생성할 수 있다.
계속하여 도 1을 참조하면, 뉴럴 네트워크 프로세서(300)는 뉴럴 네트워크의 모델들에 따른 연산을 수행하기 위한 하드웨어 가속기(accelerator)일 수 있다. 뉴럴 네트워크 프로세서(300)는 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural network processing unit), TPU(Tensor Processing Unit), Neural Engine 등과 같은 하드웨어 가속기일 수 있으나, 이에 제한되지 않는다. 뉴럴 네트워크 프로세서(300)는 뉴럴 네트워크 처리 장치(neural network processing device), 뉴럴 네트워크 집적 회로(neural network integrated circuit) 등으로 달리 호칭될 수 있다.
뉴럴 네트워크 프로세서(300)는 시스템 버스(600)를 통해 다른 구성들, 예컨대, 메인 프로세서(100), 입출력 장치(400) 및 메모리(500) 중 적어도 하나로부터 입력 데이터를 수신할 수 있고, 입력 데이터를 기초로 정보 신호를 생성할 수 있다. 예를 들어, 뉴럴 네트워크 프로세서(300)가 생성하는 정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호들 중 적어도 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 프로세서(300)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다.
뉴럴 네트워크 프로세서(300)는 입력 데이터에 뉴럴 네트워크 연산을 수행함으로써 정보 신호를 생성해낼 수 있으며, 뉴럴 네트워크 연산은 컨볼루션 연산을 포함할 수 있다. CNN 과 같은 컨볼루션 연산 기반의 뉴럴 네트워크에서, 컨볼루션 연산은 뉴럴 네트워크 연산의 상당량을 차지할 수 있다. 입력 피처 맵의 채널 수, 가중치 커널의 채널 수, 입력 피처맵의 크기, 가중치 커널의 크기, 값의 정밀도(precision) 등의 다양한 팩터들에 의존하여 컨볼루션 연산의 연산량이 결정될 수 있다. 도 2를 참조하여 설명한 바와 같이, 뉴럴 네트워크는 복잡한 아키텍처로 구현될 수 있으며, 이에 따라 뉴럴 네트워크 프로세서(300)는 많은 양의 컨볼루션 연산들을 수행할 수 있다.
본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서(300)는, 연산을 효율적으로 수행하기 위하여, 다이어딕 매트릭스(dyadic matrix) 형태의 웨이트 매트릭스(weight matrix)를 이용할 수 있다. 이를 위해, 뉴럴 네트워크 프로세서(300)는, 웨이트 매트릭스가 다이어딕 매트릭스 형태를 갖도록 뉴럴 네트워크를 훈련(train)할 수 있다. 일 실시 예에서, 뉴럴 네트워크 프로세서(300)는, 다이어딕 매트릭스 형태의 웨이트 매트릭스를 형성하기 위한 제약(constraint) 하에 뉴럴 네트워크를 훈련함으로써 다이어딕 매트릭스 형태의 웨이트 매트릭스를 생성할 수 있다. 이와 같이 요구되는 형태의 웨이트 매트릭스가 형성되도록 뉴럴 네트워크를 훈련하는 것을 웨이트를 훈련한다고 칭할 수도 있다. 여기서, 다이어딕 매트릭스 형태의 웨이트 매트릭스를 형성하기 위한 제약(constraint)은 본 명세서에서 다이어딕 제약(dyadic constraint)이라 칭해질 수 있다.
일 실시 예에서, 뉴럴 네트워크 프로세서(300)는, 웨이트 매트릭스와 입력 피처 맵(input feature map)의 컨볼루션 연산이 웨이트 매트릭스와 입력 피처 매트릭스의 행렬 곱셈(matrix multiplication) 연산에 대응되도록, 입력 피처 맵으로부터 입력 피처 매트릭스를 얻어낼 수 있다. 이 때, 웨이트 매트릭스는 다이어딕 매트릭스 형태를 나타낼 수 있다. 뉴럴 네트워크 프로세서(300)는, 웨이트 매트릭스와 입력 피처 매트릭스에 행렬 곱셈 연산을 수행함으로써 출력 피처 매트릭스를 생성해낼 수 있다. 뉴럴 네트워크 프로세서(300)는, 출력 피처 매트릭스에 포함된 값들을 재배열함으로써 출력 피처 맵을 생성할 수 있다. 웨이트 매트릭스 및 입력 피처 매트릭스의 구성의 일 실시 예에 대해서는 이하의 도 9를 참조해 보다 자세히 설명된다.
본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서(300)는, 연산의 복잡도 및/또는 연산의 양을 줄이기 위해, 다이어딕 매트릭스 형태의 웨이트 매트릭스로부터 얻어지는 웨이트 벡터 및 입력 피처 맵으로부터 얻어지는 입력 피처 벡터에 월시-아다마르 변환(Walsh-Hadamard)을 수행할 수 있다. 일 실시 예에서, 웨이트 벡터는 웨이트 매트릭스에 포함된 복수의 행(row)들 중 대표되는(representative) 하나의 행을 나타낼 수 있다. 예를 들어, 웨이트 벡터는 웨이트 매트릭스의 첫 번째 행에 대응되는 벡터일 수 있다. 하지만, 이에만 제한되는 것도 아니며, 예를 들어, 웨이트 벡터는 웨이트 매트릭스에 포함된 복수의 열(column)들 중 대표되는 하나의 열을 나타낼 수도 있다. 월시-아다마르 변환은, 효율적인 연산을 위한 변환 방법으로서, +1, -1 또는 0의 계수들(coefficients)을 이용해 벡터 또는 행렬을 변환하는 것이다. 월시-아다마르 변환은, 아다마르 변환 또는 블록-아다마르 변환이라 칭해질 수도 있다. 일 실시 예에서, 월시-아다마르 변환은 빠른 월시-아다마르 변환(Fast Walsh-Hadamard Transform)을 포함할 수 있고, 일 실시 예에서, 월시-아다마르 변환은 이산 월시-아다마르 변환(Discrete Walsh-Hadamard Transform)을 포함할 수 있다. 뉴럴 네트워크 프로세서(300)는, 월시-아다마르 변환에 기초하여 변환된 웨이트 벡터와 월시-아다마르 변환에 기초하여 변환된 입력 피처 벡터에 대해 요소별 곱셈(element-wise multiplication)을 수행할 수 있다. 뉴럴 네트워크 프로세서(300)는, 요소별 곱셈에 따른 결과 벡터에 월시-아다마르 역변환(Inverse Walsh-Hadamard Transform)을 수행함으로써 출력 피처 벡터를 얻어낼 수 있다. 일 실시 예에서, 월시-아다마르 역변환은 빠른 월시-아다마르 역변환(Fast Inverse Walsh-Hadamard Transform)을 포함할 수 있고, 일 실시 예에서, 월시-아다마르 역변환은 이산 월시-아다마르 역변환(Discrete Inverse Walsh-Hadamard Transform)을 포함할 수 있다. 월시-아다마르 변환을 이용한 연산 방법에 대해서 이하의 도면들을 참조해 보다 자세히 설명된다.
본 개시의 예시적 실시 예에 따른 데이터 처리 시스템(10)에 의하면, 뉴럴 네트워크 프로세서(300)가 다이어딕 매트릭스 형태의 웨이트 매트릭스를 기반으로 연산을 수행함으로써 연산의 양 및/또는 연산의 복잡도가 감소할 수 있다. 구체적으로는, 뉴럴 네트워크 프로세서(300)는 +1, -1 또는 0의 계수 만을 포함하는 월시-아다마르 변환을 통해 웨이트 매트릭스와 입력 피처 매트릭스를 변환함으로써 출력 피처 벡터를 얻어낼 수 있기 때문에, 복소수(complex number)에 대한 연산을 줄이거나 없앨 수 있다. 이에 따라 뉴럴 네트워크 프로세서(300)의 계산 복잡도 및 연산량이 감소할 수 있다. 또한, 월시-아다마르 변환에는 복소수가 이용되지 않기 때문에 월시-아다마르 변환을 수행하는 변환 회로가 칩 상에서 차지하는 면적은, 복소수를 이용하는 변환을 수행하는 변환 회로에 비해 감소할 수 있다. 나아가, 변환 회로의 면적이 감소함에 따라 연산 회로, 예컨대 MAC Array의 면적을 칩 상에서 늘릴 수 있기 때문에, 연산 속도는 더욱 증가할 수 있다.
도 3은 블록-서큘런트 매트릭스(Block-Circulant Matrix) 형태의 웨이트를 기반으로 한 뉴럴 네트워크 프로세서의 연산 식을 나타낸다. 일반적인 뉴럴 네트워크 프로세서는, 도 3과 같은 블록-서큘런트 형태의 웨이트 매트릭스와 입력 피처 벡터(x)에 행렬 곱셈(matrix multiplication) 연산을 수행함으로써 출력 피처 벡터(y)를 얻어낼 수 있다.
여기서 블록-서큘런트 형태의 매트릭스는, 첫 번째 행을 순차적으로 '1' 만큼 쉬프트(shift)한 형태가 이하의 행들을 구성하는 매트릭스를 의미한다. 예를 들어, 두 번째 행은 첫 번째 행의 요소들(elements)을 '1' 만큼 쉬프트 한 것에 대응될 수 있으며, 세 번째 행은 두 번째 행의 요소들을 '1' 만큼 쉬프트 한 것에 대응될 수 있다. 또는 수식으로 표현하자면, 웨이트 매트릭스의 i행 j열에 대응되는 요소를 W_ij라 하면, W_ij는 아래의 [수학식 1]과 같이 표현될 수 있다.
[수학식 1]
W_ij = h((j-i)%B) (단, B는 블록 사이즈)
도 3에 도시된 연산은, 푸리에 변환(Fourier Transform)을 통해 간소화 될 수 있다. 설명의 편의를 위해 웨이트 매트릭스의 첫 번째 행을 웨이트 벡터(w)라 칭하기로 한다. 구체적으로, 뉴럴 네트워크 프로세서는 푸리에 변환을 기초로 변환된 웨이트 벡터(w)와 푸리에 변환을 기초로 변환된 입력 피처 벡터(x)에 요소별 곱셈(element-wise multiplication)을 수행한 뒤, 요소별 곱셈의 결과 벡터에 푸리에 역변환(Inverse Fourier Transform)을 수행함으로써 출력 피처 벡터(y)를 얻어낼 수 있다. 이 경우, 매트릭스 곱셈 연산이 요소별 곱셈으로 대체되기 때문에 연산의 전체 양이 감소한다.
하지만, 푸리에 변환 및 푸리에 역변환에는, 복소수를 곱하는 연산을 필요로 하기 때문에 푸리에 변환 및 푸리에 역변환을 지원하기 위한 변환 회로의 면적이 상당할 수 밖에 없는 문제점이 존재한다. 또한, 푸리에 변환을 기초로 변환된 웨이트 벡터(w)와 푸리에 변환을 기초로 변환된 입력 피처 벡터(x) 또한 복소수 값을 가질 수 있기 때문에, 요소별 곱셈 연산 시에도 상당한 오버헤드를 야기한다.
매트릭스 곱셈 연산이 요소별 곱셈으로 대체됨에 따라 발생하는 이점을 유지하면서, 상기와 같은 푸리에 변환 및 푸리에 역변환이 갖는 문제점을 해결하기 위해 도 4와 같은 연산 방법이 본 개시의 예시적 실시 예로서 제안된다.
도 4는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서의 연산 식을 나타낸다. 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서는, 도 4와 같은 다이어딕 매트릭스(dyadic matrix) 형태의 웨이트 매트릭스와 입력 피처 벡터(x)에 행렬 곱셈(matrix multiplication) 연산을 수행함으로써 출력 피처 벡터(y)를 얻어낼 수 있다.
여기서, 다이어딕 매트릭스란, 2진수의 특징을 활용하여 생성된 매트릭스로서, i행 j열의 요소를 W_ij라 할 때, W_ij는 아래의 [수학식 2]와 같이 표현될 수 있다.
[수학식 2]
W_ij = h((i-1)◎(j-1)) (단, 여기서 '◎'은 XOR 연산을 뜻함)
도 4에 도시된 연산은, 월시-아다마르 변환(Walsh-Hadamard Transform)을 통해 간소화 될 수 있다. 설명의 편의를 위해 웨이트 매트릭스의 첫 번째 행을 웨이트 벡터(w)라 칭하기로 한다. 구체적으로, 뉴럴 네트워크 프로세서는 월시-아다마르 변환을 기초로 변환된 웨이트 벡터(w)와 월시-아다마르 변환을 기초로 변환된 입력 피처 벡터(x)에 요소별 곱셈(element-wise multiplication)을 수행한 뒤, 요소별 곱셈의 결과 벡터에 월시-아다마르 역변환(Inverse Walsh-Hadamard Transform)을 수행함으로써 출력 피처 벡터(y)를 얻어낼 수 있다. 이 경우, 매트릭스 곱셈 연산이 요소별 곱셈으로 대체되기 때문에 연산의 전체 양이 감소한다.
또한, 월시-아다마르 변환과 월시-아다마르 역변환은 변환에 이용되는 계수(coefficient)가 +1, -1 또는 0 뿐이기 때문에, 도 3에 따른 푸리에 변환과 푸리에 역변환과 비교할 때, 변환에 있어서 계산 복잡도 및 계산량이 감소할 수 있다. 또한, 월시-아다마르 변환을 기초로 변환된 웨이트 벡터(w) 및 월시-아다마르 변환을 기초로 변환된 입력 피처 벡터(x) 모두 실수 값이기 때문에, 요소별 곱셈 연산도 도 3에 따른 연산에 비해 계산량이 줄어들 수 있다.
도 5는 본 개시의 예시적 실시 예에 따른 월시-아다마르 변환(Walsh-Hadamard)을 기반으로 한 뉴럴 네트워크 프로세서의 연산 과정을 나타낸다. 특히, 도 5의 연산 과정은 도 4와 같은 다이어딕 형태로 훈련된 웨이트 매트릭스를 이용하여 출력 피처 벡터(y)를 얻어내는 연산 과정을 나타낼 수 있다.
뉴럴 네트워크 프로세서는, 입력 피처 벡터(x)에 월시-아다마르 변환을 수행함으로써 변환된 입력 피처 벡터(X)를 생성할 수 있다.
또한, 마찬가지로, 뉴럴 네트워크 프로세서는, 웨이트 벡터(w)에 월시-아다마르 변환을 수행함으로써 변환된 웨이트 벡터(W)를 생성할 수 있다.
뉴럴 네트워크 프로세서는, 변환된 입력 피처 벡터(X) 및 변환된 웨이트 벡터(W)에 요소별 곱셈을 수행함으로써 결과 벡터(Y)를 생성할 수 있다.
뉴럴 네트워크 프로세서는, 결과 벡터(Y)에 월시-아다마르 역변환을 수행함으로써 출력 피처 벡터(y)를 생성할 수 있다. 일 실시 예에서, 월시-아다마르 역변환은, 월시-아다마르 변환 이후 블록 사이즈(예컨대, 도 5에서 '8')로 나누는 연산을 통해 수행될 수 있다.
도 6은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서(300)를 나타낸다. 도 6의 뉴럴 네트워크 프로세서(300)는 도 1의 뉴럴 네트워크 프로세서(300)에 대응될 수 있으며, 뉴럴 네트워크 프로세서(300)에 관해 도 1과 중복되는 설명은 생략한다.
뉴럴 네트워크 프로세서(300)는 선형 연산 회로(310)를 포함할 수 있으며, 선형 연산 회로(310)는 변환 회로(312) 및 연산 회로(314)를 포함할 수 있다.
변환 회로(312)는 입력 피처 벡터(IFV) 및 웨이트 벡터(WV)에 변환을 수행할 수 있다. 여기서, 변환은 +1, -1 및 0의 계수(coefficient)를 사용한 변환일 수 있으며, 일 실시 예에서, 변환은 도 5를 참조해 설명된 월시-아다마르 변환을 포함할 수 있다. 변환 회로(312)는 변환된 입력 피처 벡터와 변환된 웨이트 벡터를 연산 회로(314)에 제공할 수 있다. 여기서, 입력 피처 벡터(IFV)는 입력 피처 맵으로부터 얻어질 수 있으며, 웨이트 벡터는 웨이트로부터 얻어질 수 있다. 일 실시 예에서, 웨이트 벡터는 다이어딕 매트릭스 형태로 훈련된 웨이트 매트릭스의 첫 번째 행에 대응되는 벡터일 수 있다. 또한, 여기서 월시-아다마르 변환은, 빠른 월시-아다마르 변환(Fast Walsh-Hadamard Transform)을 포함할 수 있다.
연산 회로(314)는, 변환된 입력 피처 벡터와 변환된 웨이트 벡터에 요소별 곱셈을 수행할 수 있다. 이를 위해, 연산 회로(314)는 MAC(Multiplication and Accumulation Circuit) 어레이를 포함할 수 있다. 연산 회로(314)는, 변환된 입력 피처 벡터와 변환된 웨이트 벡터의 상호 대응되는 요소들을 곱함으로써 결과 벡터를 생성할 수 있다. 연산 회로(314)는 요소별 곱셈 연산에 따른 결과 벡터를 변환 회로(312)에 제공할 수 있다. 일 실시 예에서, 연산 회로(314)는 복수의 연산 소자들 또는 프로세싱 소자들을 포함할 수 있다.
변환 회로(312)는 연산 회로(314)에 의해 제공되는 결과 벡터에 월시-아다마르 역변환을 수행함으로써 출력 피처 벡터를 생성해낼 수 있다. 월시-아다마르 역변환 또한, +1, -1 및 0의 계수를 사용하여 변환을 한 뒤, 블록 사이즈로 나누는 연산을 통해 수행될 수 있다. 여기서, 월시-아다마르 역변환은, 빠른 월시-아다마르 역변환(Fast Inverse Walsh-Hadamard Transform)을 포함할 수 있다.
변환 회로(312)가 수행하는 월시-아다마르 변환 및 월시-아다마르 역변환은, 푸리에 변환 및 푸리에 역변환과 비교할 때, 계수가 복소수가 아닌 실수이기 때문에, 연산량이 적다. 이에 따라, 변환 회로(312)를 칩 상에 구현하는 경우, 변환 회로(312)에 대응되는 영역에 푸리에 변환을 이용하는 변환 회로에 비해 더 적은 면적 만을 할당해도 충분하다. 따라서, 변환 회로(312)의 면적을 줄이는 만큼 연산 회로(314)의 면적을 증가시킬 수 있고, 이에 따라 뉴럴 네트워크 프로세서(300)의 전체적인 연산 속도는 증가할 수 있다.
도 7은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서의 동작 방법의 순서도를 나타낸다. 도 7은 도 6을 함께 참조하여 설명된다.
뉴럴 네트워크 프로세서(300)는, 입력 피처 맵으로부터 얻어지는 입력 피처 벡터(IFV) 및 웨이트 매트릭스에 포함된 웨이트 벡터(WV)에 월시-아다마르 변환을 수행할 수 있다(S120). 예를 들어, 변환 회로(312)는 입력 피처 벡터(IFV) 및 웨이트 벡터(WV)에 월시-아다마르 변환을 수행할 수 있다. 변환 회로(312)는 월시-아다마르 변환을 기초로 변환된 입력 피처 벡터 및 월시-아다마르 변환을 기초로 변환된 웨이트 벡터를 연산 회로(314)에 제공할 수 있다.
뉴럴 네트워크 프로세서(300)는, 월시-아다마르 변환에 기초해 변환된 입력 피처 벡터 및 월시-아다마르 변환에 기초해 변환된 웨이트 벡터를 이용해 요소별 곱셈을 수행할 수 있다(S140). 예를 들어, 연산 회로(314)는 변환된 입력 피처 벡터 및 변환된 웨이트 벡터를 이용해 요소별 곱셈을 수행할 수 있다. 연산 회로(314)는 요소별 곱셈의 결과 벡터를 변환 회로(312)에 제공할 수 있다.
뉴럴 네트워크 프로세서(300)는, 요소별 곱셈 연산에 따른 결과 벡터에 월시-아다마르 역변환을 수행할 수 있다(S160). 예를 들어, 변환 회로(312)는 요소별 곱셈 연산에 따른 결과 벡터에 월시-아다마르 역변환을 수행함으로써 출력 피처 벡터를 생성할 수 있다.
도 8은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서(300)를 나타낸다. 도 8의 뉴럴 네트워크 프로세서(300)는, 도 1의 뉴럴 네트워크 프로세서(300) 및 도 6의 뉴럴 네트워크 프로세서(300)에 대응될 수 있다. 도 8의 뉴럴 네트워크 프로세서(300)에 관해, 도 1 및 도 6과 중복되는 설명은 생략한다.
뉴럴 네트워크 프로세서(300)는, 선형 연산 회로(310), 컨트롤러(320) 및 RAM(330)을 포함할 수 있다. 선형 연산 회로(310)는, 변환 회로(312), 연산 회로(314), 웨이트 버퍼(316) 및 피처 맵 버퍼(318)를 포함할 수 있다. 뉴럴 네트워크 프로세서(300)의 구성 요소들, 예컨대 변환 회로(312), 연산 회로(314), 웨이트 버퍼(316), 피처 맵 버퍼(318), 컨트롤러(320) 및 RAM(330)은 시스템 버스를 통해 통신할 수 있다. 실시 예에서, 뉴럴 네트워크 프로세서(300)는 하나의 반도체 칩으로 구현될 수 있으며, 예컨대 시스템 온 칩(SoC)으로 구현될 수 있다. 그러나, 이에 제한되는 것은 아니며, 뉴럴 네트워크 프로세서(300)는 복수의 반도체 칩들로 구현될 수 있다.
선형 연산 회로(310)는, 입력 피처 맵과 웨이트를 이용해 출력 피처 맵을 형성하는 다양한 뉴럴 네트워크 연산을 수행할 수 있다.
컨트롤러(320)는 뉴럴 네트워크 프로세서(300)의 전반적인 동작을 제어할 수 있다. 예를 들어, 컨트롤러(320)는 변환 회로(312), 연산 회로(314), 웨이트 버퍼(316) 및 피처 맵 버퍼(318) 등의 동작을 제어할 수 있다.
일 실시 예에서, 컨트롤러(320)는 웨이트 및 입력 피처 맵에 대해 전처리를 수행할 수 있다.
일 실시 예에서, 컨트롤러(320)는 웨이트 또는 웨이트 매트릭스로부터 첫 번째 행을 추출하여, 웨이트 버퍼(316)가 상기 첫 번째 행을 웨이트 벡터로서 저장하도록 웨이트 버퍼(316)를 제어할 수 있다. 웨이트 버퍼(316)는 저장된 웨이트 벡터를 변환 회로(312)에 제공할 수 있다. 또한, 일 실시 예에서, 컨트롤러(320)는 입력 피처 맵에 포함된 입력 피처 값들을 재배열함으로써 입력 피처 매트릭스를 생성하고, 입력 피처 매트릭스로부터 입력 피처 벡터를 추출하여, 추출된 입력 피처 벡터를 피처 맵 버퍼(318)가 저장하도록 피처 맵 버퍼(318)를 제어할 수 있다. 피처 맵 버퍼(318)는 저장된 입력 피처 벡터를 변환 회로(312)에 제공할 수 있다.
하지만 이에 제한되는 것은 아니며, 일 실시 예에서, 웨이트 버퍼(316)는 웨이트 매트릭스를 저장하고, 피처 맵 버퍼(318)는 입력 피처 맵을 저장할 수 있다. 컨트롤러(320)는 웨이트 버퍼(316)에 저장된 웨이트 매트릭스로부터 웨이트 벡터를 추출하여, 웨이트 벡터를 변환 회로(312)에 제공할 수 있다. 또한, 컨트롤러(320)는 피처 맵 버퍼(318)에 저장된 입력 피처 맵으로부터 입력 피처 벡터를 추출하여, 입력 피처 벡터를 변환 회로(312)에 제공할 수 있다.
한편, 컨트롤러(320)는 하드웨어, 소프트웨어(또는 펌웨어) 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 실시 예에 있어서, 컨트롤러(320)는 전술한 기능들을 수행하도록 설계된 하드웨어 로직으로 구현될 수 있다. 실시 예에 있어서, 컨트롤러(320)는 적어도 하나의 프로세서, 예컨대 CPU(Central Processing Unit), 마이크로프로세서 등으로 구현될 수 있으며, 메모리 RAM(330)에 로딩된 전술한 기능들을 구성하는 인스트럭션들을 포함하는 프로그램을 실행할 수 있다.
RAM(330)은 DRAM 또는 SRAM 등으로 구현될 수 있으며, 컨트롤러(320)를 위한 각종 프로그램들 및 데이터를 저장할 수 있으며, 컨트롤러(320)에서 생성되는 데이터를 저장할 수 있다.
즉, 웨이트 버퍼(316)는 웨이트 매트릭스 또는 웨이트 벡터를 저장할 수 있다. 웨이트 버퍼(316)는 RAM(Random Access Memory), 예컨대 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등으로 구현될 수 있다.
피처 맵 버퍼(318)는 입력 피처 맵, 입력 피처 매트릭스 또는 입력 피처 벡터를 저장할 수 있다. 피처 맵 버퍼(318) 역시 RAM(Random Access Memory), 예컨대 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등으로 구현될 수 있다. 일 실시 예에서, 피처 맵 버퍼(318)는 GEMM(General Matrix Multiplication) 기반의 피처 맵 버퍼일 수 있다.
변환 회로(312)는 앞선 도면을 참조해 설명되었듯이 월시-아다마르 변환 및 월시-아다마르 역변환 동작을 수행할 수 있다. 일 실시 예에서, 변환 회로(312)는 위노그라드 변환(Winograd Transform) 및 위노그라드 역변환(Inverse Winograd Transform)을 수행할 수 있다. 다시 말해, 변환 회로(312)는 월시-아다마르 변환과 아울러 위노그라드 변환을 함께 지원(support)할 수 있다. 이는, 위노그라드 변환은 '1', '0', 또는 '-1'의 계수만을 사용하기 때문이다.
연산 회로(314)는 변환 회로(312)에 의해 변환된 입력 피처 벡터 및 변환된 웨이트 벡터에 요소별 곱셈 연산을 수행할 수 있으며, 자세한 설명은 앞선 도면을 참조해 설명한 바와 같다.
도 9는 본 개시의 예시적 실시 예에 따른 웨이트 매트릭스 및 입력 피처 매트릭스 생성 과정을 설명하기 위한 도면이다. 도 9는 특히, 웨이트와 입력 피처 맵의 컨볼루션 연산을 웨이트 매트릭스와 입력 피처 매트릭스의 매트릭스 곱셈 연산으로 치환하기 위한 변환 과정을 설명하기 위한 도면이다. 도 9는 도 8을 함께 참조하여 설명된다.
뉴럴 네트워크 프로세서(300)는, 컨볼루션 연산을 매트릭스 곱셈 연산으로 치환하기 위해, 복수의 웨이트들 각각에 포함된 웨이트 값들을 하나의 행으로 구성함으로써 M개의 웨이트들을 이용해 M개의 행을 갖는 웨이트 매트릭스를 생성할 수 있다. 일 실시 예에서, 컨트롤러(320)가 웨이트 매트릭스를 생성할 수 있다.
복수의 웨이트들 각각은 ‘r’의 폭을 가질 수 있으며, ‘s’의 높이를 가질 수 있다. 비제한적인 예시로서, 복수의 웨이트들 각각의 폭은 ‘3’일 수 있으며, 높이는 ‘3’일 수 있다. 다시 말해, 비제한적인 예시에서, 복수의 웨이트들 각각은 3x3 행렬을 포함할 수 있다. 하지만 웨이트의 크기에 관한 예시는 실시 예에 따라 다양하게 변형될 수 있다.
뉴럴 네트워크 프로세서(300)는, 'C'만큼의 채널 수를 가진 입력 피처 맵에 대해 웨이트의 윈도우 사이즈(window size)에 채널 수를 곱한 양 만큼의 입력 피처 값들을 하나의 열(column)로 구성함으로써 입력 피처 매트릭스를 생성할 수 있다. 결과적으로, 웨이트의 윈도우 높이를 's'라 하고, 웨이트의 윈도우 폭을 'r'이라 하고, 원래 입력 피처 맵의 높이를 'H'라 하고, 폭을 'W'라 할 때, 입력 피처 매트릭스의 열의 개수는 (H-s+1)(W-r+1)개가 될 수 있다. 일 실시 예에서, 컨트롤러(320)가 입력 피처 맵으로부터 입력 피처 매트릭스를 생성할 수 있다.
이와 같은 매트릭스를 생성함으로써 상단의 컨볼루션 연산은 매트릭스 곱셈 연산으로 대체될 수 있다.
본 개시의 예시적 실시 예에 따른 뉴럴 네트워크는, 이와 같은 웨이트 매트릭스가 다이어딕 매트릭스 형태를 갖도록 뉴럴 네트워크를 훈련할 수 있다. 또한 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크는, 입력 피처 매트릭스를 복수의 입력 피처 벡터들로 구분하여, 웨이트 매트릭스와 입력 피처 벡터들 간의 매트릭스 곱셈을 복수 회 수행함으로써 출력 피처 매트릭스를 생성할 수 있다. 또한, 웨이트 매트릭스와 입력 피처 벡터 사이의 매트릭스 곱셈은, 앞선 도면을 참조해 설명되었듯이, 월시-아다마르 변환 및 요소별 곱셈 연산으로 대체되어 연산량이 줄어들 수 있다.
도 10은 본 개시의 예시적 실시 예에 따른 웨이트 매트릭스(W_Mat)와 입력 피처 매트릭스(IFM_Mat)의 연산 식을 나타낸다. 특히, 도 10은, 제1 블록 사이즈에 대응되는 월시-아다마르 변환을 이용해 제1 블록 사이즈보다 큰 제2 블록 사이즈의 웨이트 매트릭스에 대한 변환을 지원하는 방법에 대해 설명하기 위한 도면이다. 도 10은 도 8을 함께 참조하여 설명된다.
출력 피처 매트릭스(OFM_Mat)는 웨이트 매트릭스(W_Mat)와 입력 피처 매트릭스(IFM_Mat) 사이의 매트릭스 곱셈을 통해 얻어질 수 있다. 다만, 변환 회로(312)가 제1 블록 사이즈에 대한 월시-아다마르 변환을 지원하는데, 웨이트 매트릭스(W_Mat)가 제1 블록 사이즈보다 큰 제2 블록 사이즈를 갖는 경우에도, 변환 회로(312)에 의한 변환이 필요할 수 있다.
이 때, 컨트롤러(320)는 웨이트 매트릭스(W_Mat)를 복수의 웨이트 서브 매트릭스들(W11, W1q, Wij, Wp1, Wpq 등)로 구분할 수 있다. 예를 들어, 컨트롤러(320)는 제1 블록 사이즈의 웨이트 매트릭스(W_Matt)를 제2 블록 사이즈를 갖는 복수의 웨이트 서브 매트릭스들로 구분할 수 있다. 또한, 컨트롤러(320) 입력 피처 매트릭스(IFM_Mat) 또한 복수의 입력 피처 벡터들(Xj 등)로 구분할 수 있다. 이 경우, 출력 피처 매트릭스(OFM_Mat)의 i번 째 벡터인 a_i는 아래의 [수학식 3]을 통해 얻어질 수 있다.
[수학식 3]
Figure pat00001
여기서 Wij와 Xj에 대한 연산은 도 4 내지 도 8을 참조해 설명된 연산을 통해 설명된 연산 방법을 통해 수행될 수 있다.
이와 같이, 뉴럴 네트워크 프로세서(300)는 더 큰 블록 사이즈를 갖는 웨이트 매트릭스에 대해서도 연산 지원이 가능하다. 특히, 제1 블록 사이즈에 대응되는 월시-아다마르 변환을 이용하는 경우, 제1 블록 사이즈의 자연수 배에 대응되는 사이즈를 갖느 웨이트 매트릭스에 대해서도 연산의 지원이 가능하다. 다만, 이 경우에 연산 지원이 가능하려면, 웨이트 매트릭스를 복수의 웨이트 서브 매트릭스들로 구분했을 때, 각각의 복수의 웨이트 서브 매트릭스들 또한 다이어딕 매트릭스 형태를 가져야한다 할 것인데, 이에 대해서는 도 11을 참조해 설명한다.
도 11은 본 개시의 예시적 실시 예에 따른 웨이트 매트릭스(W_Mat)를 나타낸다. 도 11은 특히, 예시로서 블록 사이즈 '4'에 대응되는 월시-아다마르 변환을 이용해 블록 사이즈 '8'의 웨이트 매트릭스에 월시-아다마르 변환을 지원하는 방법의 당위성에 대해 설명하기 위한 도면이다. 블록 사이즈 '4' 또는 '8'은 설명의 편의를 위한 예시적인 것일 뿐, 이에 제한되는 것은 아니다. 도 11은 도 8을 함께 참조하여 설명된다.
뉴럴 네트워크 프로세서(300)는 다이어딕 매트릭스 형태의 웨이트 매트릭스(W_Mat)를 복수의 웨이트 서브 매트릭스들(W11, W12, W21, W22)로 구분할 수 있다.
이 때, 구분된 서브 매트릭스들(W11, W12, W21, W22) 각각은 마찬가지로 다이어딕 매트릭스 형태를 갖는 것을 확인할 수 있다.
따라서, 뉴럴 네트워크 프로세서(300)는 도 10에서 설명된 바와 같이, 웨이트 매트릭스(W_Mat)를 복수의 웨이트 서브 매트릭스들로 구분함으로써 더 큰 블록 사이즈의 변환 및 연산을 지원할 수 있다.
도 12는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서(300)의 동작 방법의 순서도를 나타낸다. 도 12는 도 8을 함께 참조하여 설명된다.
뉴럴 네트워크 프로세서(300)는 입력 피처 맵을 이용해 입력 피처 매트릭스를 구성함으로써 입력 피처 매트릭스의 전부 또는 일부의 열(column)을 입력 피처 벡터로서 변환 회로(312)에 제공할 수 있다(S220). 일 실시 예에서, 입력 피처 매트릭스 그 자체가 월시-아다마르 변환에서 지원되는 블록 사이즈 크기의 벡터에 대응되는 경우, 뉴럴 네트워크 프로세서(300)는 입력 피처 매트릭스 전부를 입력 피처 벡터로서 변환 회로(312)에 제공할 수 있다. 또한 일 실시 예에서, 입력 피처 매트릭스가 상기 블록 사이즈 크기의 벡터보다 큰 사이즈를 갖는 경우, 뉴럴 네트워크 프로세서(300)는 입력 피처 매트릭스의 일부 열을 입력 피처 벡터로서 변환 회로(312)에 제공할 수 있다.
뉴럴 네트워크 프로세서(300)는 웨이트 매트릭스의 전부 또는 일부의 첫 번째 행(row)을 웨이트 벡터로서 변환 회로(312)에 제공할 수 있다(S240). 일 실시 예에서, 웨이트 매트릭스의 크기가 월시-아다마르 변환에서 지원되는 블록 사이즈와 동일하다면, 뉴럴 네트워크 프로세서(300)는 웨이트 매트릭스의 첫 번째 행을 웨이트 벡터로서 변환 회로(312)에 제공할 수 있다. 또한 일 실시 예에서, 웨이트 매트릭스의 크기가 월시-아다마르 변환에서 지원되는 블록 사이즈보다 큰 경우, 웨이트 매트릭스의 일부인 웨이트 서브 매트릭스의 첫 번째 행을 웨이트 벡터로서 변환 회로(312)에 제공할 수 있다.
도 13a 및 도 13b는 본 개시의 예시적 실시 예에 따른 변환 회로(312a, 312b)를 나타낸다. 도 13a 및 도 13b를 참조하면, 제1 블록 사이즈에 대응되는 월시-아다마르 변환을 제공하는 변환 회로(312a, 312b)는 상기 제1 블록 사이즈보다 작은 제2 블록 사이즈에 대응되는 웨이트 매트릭스에 대해서도 변환을 제공할 수 있다. 특히, 도 13a는 더 작은 블록 사이즈를 지원함에 있어서 설정 (a)에 대응되는 실시 예를 도시하고, 도 13b는 더 작은 블록 사이즈를 지원함에 있어서 설정 (b)에 대응되는 실시 예를 도시한다. 도 13a 및 도 13b에서, 설명의 편의를 위해, 블록 사이즈 '8'에 대해 변환 기능을 지원하는 변환 회로(312a, 312b)가 블록 사이즈 '4'인 웨이트 매트릭스에 적용되는 경우를 도시하지만, 블록 사이즈 '8' 또는 '4'는 설명의 편의를 위한 것일 뿐이다.
도 13a를 참조하면, 변환 회로(312a)는 '8' 사이즈를 지원하기 위한 하드웨어 및/또는 소프트웨어 자원을 포함할 수 있다. 예를 들어, 월시-아다마르 변환을 지원하기 위해, 변환 회로(312a)는 플립-플롭, 덧셈기(adder) 및 뺄셈기(subtractor)를 포함할 수 있으며, 입력 값들(f0-f3, g0-g3)을 기초로 여러 단계(stage)의 덧셈 또는 뺄셈을 통해 출력 값들(F0-F3, G0-G3)을 생성하는 버터플라이 구조(butterfly structure)를 포함할 수 있다. 변환 회로(312a)는 '8' 보다 작은 '4' 사이즈를 지원하기 위해, 내부에 포함된 자원들을 나누어 사용할 수 있다. 예를 들어, 변환 회로(312a)는 상부 4개의 버터플라이 구조를 이용해 입력 값들(f0-f3)로부터 출력 값들(F0-F3)을 생성할 수 있고, 하부 4개의 버터플라이 구조를 이용해 입력 값들(g0-g3)로부터 출력 값들(G0-G3)을 생성할 수 있다.
도 13b를 참조하면, 변환 회로(312b)는 '8' 사이즈를 지원하기 위한 하드웨어 및/또는 소프트웨어 자원을 포함할 수 있다. 변환 회로(312b)는 '8'보다 작은 '4' 사이즈를 지원하기 위해, 내부에 포함된 자원들 중 일부만을 사용해 입력 값들(f0-f3, g0-g3)로부터 출력 값들((F0+G0)-(F3+G3))을 생성해낼 수 있다.
상기 살폈듯이, 변환 회로(312a, 312b)는 원래 지원하는 블록 사이즈에 비해 작은 블록 사이즈를 갖는 웨이트 매트릭스에 대해서도 아다마르-월시 변환을 수행할 수 있다.
도 14a 및 도 14b는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서의 연산 방법을 설명하기 위한 도면이다. 도 14a는 블록 사이즈가 4인 웨이트 매트릭스가 수평적으로 결합된 경우를 도시하고, 도 14b는 블록 사이즈가 4인 웨이트 매트릭스가 수직적으로 결합된 경우를 도시한다. 설명의 편의를 위해, 변환 회로는 블록 사이즈 8에 대응되는 월시-아다마르 변환을 지원하는 것을 가정한다.
도 14a를 참조하면, 뉴럴 네트워크 프로세서는, 출력 피처 값들(y0-y3)을 얻기 위해, 제1 웨이트 벡터(wv1), 제2 웨이트 벡터(wv2), 제1 입력 피처 벡터(ifv1) 및 제2 입력 피처 벡터(ifv2)를 이용해 연산들을 수행할 수 있다.
뉴럴 네트워크 프로세서는, 변환 회로를 도 13a와 같은 설정(a)에 따라 사용함으로써, 제1 웨이트 벡터(wv1) 및 제2 웨이트 벡터(wv2)에 대해 월시-아다마르 변환을 수행할 수 있다. 마찬가지로, 뉴럴 네트워크 프로세서는, 변환 회로를 도 13a와 같은 설정(a)에 따라 사용함으로써, 제1 입력 피처 벡터(ifv1) 및 제2 입력 피처 벡터(ifv2)에 대해 월시-아다마르 변환을 수행할 수 있다.
뉴럴 네트워크 프로세서는, 변환된 제1 웨이트 벡터와 변환된 제1 입력 피처 벡터에 요소별 곱셈(Element-Wise Multiplication; EWM)을 수행할 수 있고, 변환된 제2 웨이트 벡터와 변환된 제2 입력 피처 벡터에 요소별 곱셈을 수행할 수 있다.
뉴럴 네트워크 프로세서는, 변환 회로를 도 13b와 같은 설정 (b)에 따라 사용함으로써, 요소별 곱셈에 따른 제1 결과 벡터와 제2 결과 벡터에 대해 월시-아다마르 역변환을 수행하고, 역변환의 결과 벡터들을 합할 수 있다. 설정 (b)에 따른 변환 회로의 동작에 의해, 뉴럴 네트워크 프로세서는 출력 피처 값들(y0-y3)을 얻어낼 수 있다.
도 14b를 참조하면, 뉴럴 네트워크 프로세서는, 출력 피처 값들(y0-y3, y4-y7)을 얻기 위해, 제1 웨이트 벡터(wv1), 제2 웨이트 벡터(wv2) 및 제1 입력 피처 벡터(ifv1)를 이용해 연산들을 수행할 수 있다.
뉴럴 네트워크 프로세서는, 변환 회로를 도 13a와 같은 설정(a)에 따라 사용함으로써, 제1 웨이트 벡터(wv1) 및 제2 웨이트 벡터(wv2)에 대해 월시-아다마르 변환을 수행할 수 있다. 마찬가지로, 뉴럴 네트워크 프로세서는, 변환 회로를 도 13a와 같은 설정(a)에 따라 사용함으로써, 제1 입력 피처 벡터(ifv1)에 대해 월시-아다마르 변환을 수행할 수 있다.
뉴럴 네트워크 프로세서는, 변환된 제1 웨이트 벡터와 변환된 제1 입력 피처 벡터에 요소별 곱셈(Element-Wise Multiplication; EWM)을 수행할 수 있고, 변환된 제2 웨이트 벡터와 변환된 제1 입력 피처 벡터에 요소별 곱셈을 수행할 수 있다.
뉴럴 네트워크 프로세서는, 변환 회로를 도 13a와 같은 설정 (a)에 따라 사용함으로써, 요소별 곱셈에 따른 제1 결과 벡터와 제2 결과 벡터 각각에 대해 월시-아다마르 역변환을 수행할 수 있다. 설정 (a)에 따른 변환 회로의 동작에 의해, 뉴럴 네트워크 프로세서는 출력 피처 값들(y0-y3, y4-y7)을 얻어낼 수 있다.
도 15는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 프로세서의 동작 방법을 나타낸다. 도 15는 특히, 뉴럴 네트워크 프로세서가 월시-아다마르 변환을 지원하는 변환 회로를 이용해 피처 맵들에 대한 위노그라드 변환(Winograd Transform)을 더 지원하는 실시 예를 나타낸다. 도 15는 도 8을 함께 참조하여 설명된다.
뉴럴 네트워크 프로세서(300)는, 피처 맵을 수평 방향 및/또는 수직 방향으로 회전할 수 있다(S320). 앞서 설명 했듯이, 월시-아다마르 변환과 위노그라드 변환에서 이용되는 계수가 유사하거나, 동일하거나, 포함 관계에 있기 때문에, 변환 회로(312)를 공유할 수 있는 것인데, 경우에 따라, 월시-아다마르 변환을 지원하는 변환 회로(312)를 이용해 피처 맵에 위노그라드 변환을 곧바로 적용하는 경우에 위노그라드 변환이 적절히 수행되지 않을 수 있다. 이에 따라, 뉴럴 네트워크 프로세서(300) 또는 뉴럴 네트워크 프로세서(300)에 포함된 컨트롤러(320)는 피처 맵을 수평 방향 및/또는 수직 방향으로 회전할 수 있다. 일 실시 예에서, 뉴럴 네트워크 프로세서(300)는, 위노그라드 변환과 월시-아다마르 변환을 시간 인터리빙 방식에 따라 지원할 수 있다.
월시-아다마르 변환을 지원하는 변환 회로(312)는 회전된 피처 맵에 위노그라드 변환을 수행할 수 있다(S340).
또한, 월시-아다마르 변환을 지원하는 변환 회로(312)는 연산 회로(314)로부터 출력되는 값에 위노그라드 역변환을 수행할 수도 있다(S360).
뉴럴 네트워크 프로세서(300)는, 위노그라드 역변환이 수행된 출력 값을 수평 방향 및/또는 수직 방향으로 회전시킴으로써 출력 피처 맵을 생성해낼 수 있다(S380).
도 16은 본 개시의 예시적 실시 예에 따른 집적 회로(1000) 및 이를 포함하는 장치(2000)를 나타내는 블록도이다.
도 13을 참조하면, 장치(2000)는 집적 회로(1000) 및, 집적 회로(1000)에 연결되는 구성들, 예컨대 센서(1510), 디스플레이 장치(1610), 메모리(1710)를 포함할 수 있다. 장치(2000)는 뉴럴 네트워크 기반으로 데이터를 처리하는 장치일 수 있다.
본 개시의 예시적 실시예에 따른 집적 회로(1000)는 CPU(1100), RAM(1200), GPU(1300), 뉴럴 네트워크 프로세서(1400), 센서 인터페이스(1500), 디스플레이 인터페이스(1600) 및 메모리 인터페이스(1700)를 포함할 수 있다. 이 외에도 집적 회로(1000)는 통신 모듈, DSP, 비디오 모듈 등 다른 범용적인 구성요소들을 더 포함할 수 있으며, 집적 회로(1000)의 각 구성(CPU(1100), RAM(1200), GPU(1300), 뉴럴 네트워크 프로세서(1400), 센서 인터페이스(1500), 디스플레이 인터페이스(1600) 및 메모리 인터페이스(1700))은 버스(1800)를 통해 서로 데이터를 송수신할 수 있다. 실시예에 있어서, 집적 회로(1000)는 애플리케이션 프로세서일 수 있다. 실시예에 있어서, 집적 회로(1000)는 시스템 온 칩(SoC)로서 구현될 수 있다.
CPU(1100)는 집적 회로(1000)의 전반적인 동작을 제어할 수 있다. CPU(1100)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. CPU(1100)는 메모리(1710)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 실시예에 있어서, CPU(1100)는 메모리(1710)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 프로세서(1400)의 기능을 제어할 수 있다.
RAM(1200)은 프로그램들, 데이터, 및/또는 명령들(instructions)을 일시적으로 저장할 수 있다. 실시 예에 따라, RAM(1200)은 DRAM 또는 SRAM으로 구현될 수 있다. RAM(1200)은 인터페이스들(1500, 1600)을 통해 입출력되거나, GPU(1300) 또는 CPU(1100)에서 생성되는 데이터, 예컨대 이미지 데이터를 일시적으로 저장할 수 있다.
실시예에 있어서, 집적 회로(1000)는 ROM(Read Only Memory)을 더 구비할 수 있다. ROM은 지속적으로 사용되는 프로그램들 및/또는 데이터를 저장할 수 있다. ROM은 EPROM(erasable programmable ROM) 또는 EEPROM(electrically erasable programmable ROM) 등으로 구현될 수 있다.
GPU(1300)는 영상 데이터에 대한 이미지 처리를 수행할 수 있다. 예컨대 GPU(1300)는 센서 인터페이스(1500)를 통해 수신되는 영상 데이터에 대한 이미지 처리를 수행할 수 있다. GPU(1300)에서 처리된 영상 데이터는 메모리(1710)에 저장되거나 또는 디스플레이 인터페이스(1600)를 통해 디스플레이 장치(1610)로 제공될 수 있다. 메모리(1710)에 저장된 영상 데이터는 뉴럴 네트워크 프로세서(1400)에 제공될 수 있다.
센서 인터페이스(1500)는 집적 회로(1000)에 연결되는 센서(1510)로부터 입력되는 데이터(예컨대, 영상 데이터, 음성 데이터 등)를 인터페이싱할 수 있다.
디스플레이 인터페이스(1600)는 디스플레이 장치(1610)로 출력되는 데이터(예컨대, 이미지)를 인터페이싱할 수 있다. 디스플레이 장치(1610)는 이미지 또는 영상에 대한 데이터를 LCD(Liquid-crystal display), AMOLED(active matrix organic light emitting diodes) 등의 디스플레이를 통해 출력할 수 있다.
메모리 인터페이스(1700)는 집적 회로(1000)의 외부에 있는 메모리(1710)로부터 입력되는 데이터 또는 메모리(1710)로 출력되는 데이터를 인터페이싱할 수 있다. 실시예에 따라, 메모리(1710)는 DRAM이나 SRAM 등의 휘발성 메모리 또는 ReRAM, PRAM 또는 NAND flash 등의 비휘발성 메모리로 구현될 수 있다. 메모리(1710)는 메모리 카드(MMC, eMMC, SD, micro SD) 등으로 구현될 수도 있다.
뉴럴 네트워크 프로세서(1400)는 도 1, 도 2, 도 4 내지 도 12을 참조하여 전술한 바와 같이, 다이어딕 매트릭스 형태의 웨이트 매트릭스를 기반으로 월시-아다마르 변환을 수행함으로써 연산을 수행할 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시 예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시 예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 뉴럴 네트워크를 가속하는(accelerate) 장치로서,
    입력 피처 매트릭스(input feature matrix)를 저장하는 입력 피처 맵 버퍼;
    다이어딕(dyadic) 매트릭스 형태(form)로 훈련(train)된 웨이트 매트릭스(weight matrix)를 저장하는 웨이트 버퍼;
    상기 입력 피처 매트릭스로부터 얻어지는 입력 피처 벡터 및 상기 웨이트 매트릭스에 포함된 웨이트 벡터에 월시-아다마르 변환(Walsh-Hadamard Transform)을 수행하도록 구성되는 변환 회로; 및
    상기 월시-아다마르 변환을 기초로 변환된 입력 피처 벡터 및 상기 월시-아다마르 변환을 기초로 변환된 웨이트 벡터에 요소별 곱셈(element-wise multiplication)을 수행하도록 구성되는 연산 회로를 포함하는 장치.
  2. 제1항에 있어서,
    상기 변환 회로는,
    상기 연산 회로의 요소별 곱셈 연산에 의해 생성된 벡터에 월시-아다마르 역변환(Inverse Walsh-Hadamard Transform)을 수행함으로써 출력 피처 벡터를 생성하도록 구성되는 것을 특징으로 하는 장치.
  3. 제2항에 있어서,
    상기 변환 회로는,
    상기 월시-아다마르 변환을 수행한 뒤, 블록 사이즈로 나누는(divide) 연산을 수행함으로써 상기 월시-아다마르 역변환을 수행하도록 구성되는 것을 특징으로 하는 장치.
  4. 제1항에 있어서,
    상기 웨이트 벡터는,
    상기 웨이트 매트릭스에 포함된 복수의 행들(rows) 중 대표되는 하나의 행에 대응되는 벡터인 것을 특징으로 하는 장치.
  5. 제1항에 있어서,
    입력 피처 맵에 포함된 입력 피처 값들을 매트릭스로 재구성함으로써 입력 피처 매트릭스를 생성하도록 구성되는 컨트롤러를 더 포함하는 것을 특징으로 하는 장치.
  6. 제1항에 있어서,
    상기 변환 회로는,
    상기 입력 피처 매트릭스 또는 상기 웨이트 매트릭스에 대한 위노그라드 변환(Winograd Transform) 또는 위노그라드 역변환(Inverse Winograd Transform)을 더 지원(support)하도록 구성되는 것을 특징으로 하는 장치.
  7. 제6항에 있어서,
    상기 변환 회로는,
    상기 월시-아다마르 변환 및 상기 위노그라드 변환을 시간 인터리빙(time interleaving) 방식에 따라 지원하는 것을 특징으로 하는 장치.
  8. 제1항에 있어서,
    상기 뉴럴 네트워크는,
    컨볼루셔널 뉴럴 네트워크(Convolutional Neural Network), 순환 뉴럴 네트워크(Recurrent Neural Network) 및 딥 뉴럴 네트워크(Deep Neural Network) 중 적어도 하나를 포함하는 것을 특징으로 하는 장치.
  9. 뉴럴 네트워크를 가속하는 장치의 동작 방법으로서,
    웨이트 매트릭스를 다이어딕 매트릭스 형태로 형성하기 위한 다이어딕 제약(dyadic constraint) 하에 상기 뉴럴 네트워크를 훈련함으로써 다이어딕 매트릭스 형태의 웨이트 매트릭스를 얻어내는 단계; 및
    상기 웨이트 매트릭스 및 입력 피처 맵을 기초로 출력 피처 맵을 생성하는 단계를 포함하는 장치의 동작 방법.
  10. 제9항에 있어서,
    상기 출력 피처 맵을 생성하는 단계는,
    상기 웨이트 매트릭스와 상기 입력 피처 맵에 컨볼루션 연산을 수행함으로써 상기 출력 피처 맵을 생성하는 것을 특징으로 하는 장치의 동작 방법.
  11. 제9항에 있어서,
    상기 출력 피처 맵을 생성하는 단계는,
    복수의 웨이트들에 포함된 웨이트 값들을 이용해 웨이트 매트릭스를 구성하는 단계;
    상기 입력 피처 맵에 포함된 입력 피처 값들을 매트릭스로 재구성함으로써 입력 피처 벡터를 생성하는 단계; 및
    상기 웨이트 매트릭스와 상기 입력 피처 벡터에 매트릭스 곱셈(matrix multiplication) 연산을 수행함으로써 상기 출력 피처 맵에 포함되는 출력 피처 벡터를 생성하는 단계를 포함하는 것을 특징으로 하는 장치의 동작 방법.
  12. 제9항에 있어서,
    상기 출력 피처 맵을 생성하는 단계는,
    상기 웨이트 매트릭스로부터 얻어지는 웨이트 벡터 및 상기 입력 피처 맵으로부터 얻어지는 입력 피처 벡터에 +1, -1 또는 0의 계수(coefficient)를 이용한 변환을 수행함으로써 상기 출력 피처 맵에 포함되는 출력 피처 벡터를 생성하는 단계를 포함하는 것을 특징으로 하는 장치의 동작 방법.
  13. 제9항에 있어서,
    상기 출력 피처 맵을 생성하는 단계는,
    상기 웨이트 매트릭스로부터 얻어지는 웨이트 벡터 및 상기 입력 피처 맵으로부터 얻어지는 입력 피처 벡터에 월시-아다마르 변환을 수행하는 단계;
    상기 월시-아다마르 변환에 기초해 변환된 웨이트 벡터 및 상기 월시-아다마르 변환에 기초해 변환된 입력 피처 벡터에 요소별 곱셈(element-wise multiplication)을 수행하는 단계; 및
    상기 요소별 곱셈 연산에 따른 결과 벡터에 월시-아다마르 역변환을 수행함으로써 상기 출력 피처 맵에 포함되는 출력 피처 벡터를 생성하는 단계를 포함하는 것을 특징으로 하는 장치의 동작 방법.
  14. 제9항에 있어서,
    상기 출력 피처 맵을 생성하는 단계는,
    제1 사이즈를 가지는 웨이트 매트릭스를 상기 제1 사이즈보다 작은 제2 사이즈를 가지는 복수의 웨이트 서브 매트릭스들로 나누는 단계;
    상기 복수의 웨이트 서브 매트릭스들 각각으로부터 얻어지는 복수의 웨이트 벡터들 및 상기 입력 피처 맵으로부터 얻어지는 입력 피처 벡터에 대해 상기 제2 사이즈에 대응되는 월시-아다마르 변환을 수행하는 단계;
    상기 월시-아다마르 변환에 기초해 변환된 복수의 웨이트 벡터들 및 상기 월시-아다마르 변환에 기초해 변환된 입력 피처 벡터에 요소별 곱셈(element-wise multiplication)을 수행하는 단계; 및
    상기 요소별 곱셈 연산에 따른 결과 벡터들에 월시-아다마르 역변환을 수행함으로써 상기 출력 피처 맵에 포함되는 출력 피처 벡터들을 생성하는 단계를 포함하는 것을 특징으로 하는 장치의 동작 방법.
  15. 제9항에 있어서,
    상기 출력 피처 맵을 생성하는 단계는,
    제1 블록 사이즈에 대응되는 월시-아다마르 변환을 지원하는 변환 회로를 이용하여 상기 제1 블록 사이즈보다 작은 제2 블록 사이즈의 웨이트 매트릭스에 월시-아다마르 변환 및 월시-아다마르 역변환을 수행함으로써 출력 피처 맵을 생성하는 단계를 포함하는 것을 특징으로 하는 장치의 동작 방법.
  16. 제9항에 있어서,
    상기 장치는,
    상기 웨이트에 대한 월시-아다마르 변환 및 위노그라드 변환을 모두 지원하는 것을 특징으로 하는 장치의 동작 방법.
  17. 뉴럴 네트워크를 가속하는 장치의 동작 방법으로서,
    웨이트 벡터 및 입력 피처 벡터에 월시-아다마르 변환을 수행하는 단계;
    상기 월시-아다마르 변환에 기초해 변환된 웨이트 벡터 및 상기 월시-아다마르 변환에 기초해 변환된 입력 피처 벡터에 요소별 곱셈을 수행하는 단계; 및
    상기 요소별 곱셈 연산의 결과 벡터에 월시-아다마르 역변환을 수행함으로써 출력 피처 벡터를 생성하는 단계를 포함하는 장치의 동작 방법.
  18. 제17항에 있어서,
    상기 웨이트 벡터는,
    다이어딕 매트릭스(dyadic matrix)의 형태로 훈련된 웨이트 매트릭스의 첫 번째 행(row)에 대응되는 벡터인 것을 특징으로 하는 장치의 동작 방법.
  19. 제17항에 있어서,
    상기 월시-아다마르 변환은 제1 블록 사이즈에 대응되는 변환을 지원하고,
    상기 월시-아다마르 변환을 수행하는 단계는,
    상기 제1 블록 사이즈보다 큰 제2 블록 사이즈를 갖는 웨이트 매트릭스를 상기 제1 블록 사이즈를 갖는 복수의 웨이트 서브 매트릭스들로 나누는 단계; 및
    상기 복수의 웨이트 서브 매트릭스 각각의 첫 번째 행에 대응되는 웨이트 벡터들에 대해 상기 월시-아다마르 변환을 수행하는 단계를 포함하는 것을 특징으로 하는 장치의 동작 방법.
  20. 제17항에 있어서,
    상기 월시-아다마르 변환을 수행하는 단계는,
    제1 블록 사이즈에 대응되는 월시-아다마르 변환을 이용해, 상기 제1 블록 사이즈보다 작은 제2 블록 사이즈를 갖는 웨이트 매트릭스에 포함된 웨이트 벡터에 변환을 수행하는 단계를 포함하는 것을 특징으로 하는 장치의 동작 방법.
KR1020190086634A 2018-11-26 2019-07-17 다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법 KR20200062014A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/675,709 US11562046B2 (en) 2018-11-26 2019-11-06 Neural network processor using dyadic weight matrix and operation method thereof
SG10201911112WA SG10201911112WA (en) 2018-11-26 2019-11-25 Neural network processor using dyadic weight matrix and operation method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180147693 2018-11-26
KR20180147693 2018-11-26

Publications (1)

Publication Number Publication Date
KR20200062014A true KR20200062014A (ko) 2020-06-03

Family

ID=71087867

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190086634A KR20200062014A (ko) 2018-11-26 2019-07-17 다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법

Country Status (2)

Country Link
KR (1) KR20200062014A (ko)
SG (1) SG10201911112WA (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112149728A (zh) * 2020-09-22 2020-12-29 成都智遥云图信息技术有限公司 一种快速的多模态图像模板匹配方法
US11562046B2 (en) * 2018-11-26 2023-01-24 Samsung Electronics Co., Ltd. Neural network processor using dyadic weight matrix and operation method thereof

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11562046B2 (en) * 2018-11-26 2023-01-24 Samsung Electronics Co., Ltd. Neural network processor using dyadic weight matrix and operation method thereof
CN112149728A (zh) * 2020-09-22 2020-12-29 成都智遥云图信息技术有限公司 一种快速的多模态图像模板匹配方法
CN112149728B (zh) * 2020-09-22 2023-11-17 成都智遥云图信息技术有限公司 一种快速的多模态图像模板匹配方法

Also Published As

Publication number Publication date
SG10201911112WA (en) 2020-06-29

Similar Documents

Publication Publication Date Title
US11562046B2 (en) Neural network processor using dyadic weight matrix and operation method thereof
US20200234124A1 (en) Winograd transform convolution operations for neural networks
KR102499396B1 (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
JP2022037022A (ja) ハードウェアにおけるカーネルストライドの実行
JP7304148B2 (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
CN111258495A (zh) 半导体存储器设备和操作该半导体存储器设备的方法
US20230124618A1 (en) Image processing device including neural network processor and operating method thereof
TWI834729B (zh) 神經網路處理器及其卷積操作方法
JP6955598B2 (ja) 複数の畳み込みウィンドウ内の画像データの並行抽出方法、装置、機器及びコンピュータ可読記憶媒体
US20230289601A1 (en) Integrated circuit that extracts data, neural network processor including the integrated circuit, and neural network
CN113033790A (zh) 神经网络装置及其操作方法
KR20200062014A (ko) 다이어딕 매트릭스 형태의 웨이트를 이용해 뉴럴 네트워크를 가속하는 장치 및 그것의 동작 방법
US20200159495A1 (en) Processing apparatus and method of processing add operation therein
US20220188612A1 (en) Npu device performing convolution operation based on the number of channels and operating method thereof
KR20200129957A (ko) 피처맵 데이터에 대한 압축을 수행하는 뉴럴 네트워크 프로세서 및 이를 포함하는 컴퓨팅 시스템
WO2023122896A1 (zh) 一种数据处理方法和装置
CN113393368B (zh) 基于神经网络模型的图像处理方法、介质和电子设备
CN115242990A (zh) 图像传感器模块和操作图像传感器模块的方法
KR20200056898A (ko) 프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법
US11842273B2 (en) Neural network processing
US20240061649A1 (en) In-memory computing (imc) processor and operating method of imc processor
KR20220147412A (ko) 이미지 센서 모듈, 이미지 처리 시스템 및 이미지 센서 모듈의 동작 방법
WO2021144007A1 (en) Data interpretation system, vehicle, method for interpreting input data, computer program and computer-readable medium
KR20200132660A (ko) 가우시안 가치 분포에 기초하여 현재 상태에 대한 행동을 선택하는 뉴럴 네트워크 장치 및 이를 이용하는 행동 선택 방법
KR20210019917A (ko) 뉴럴 네트워크를 위한 데이터 처리 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination