KR102395744B1 - 데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치 - Google Patents

데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치 Download PDF

Info

Publication number
KR102395744B1
KR102395744B1 KR1020210124097A KR20210124097A KR102395744B1 KR 102395744 B1 KR102395744 B1 KR 102395744B1 KR 1020210124097 A KR1020210124097 A KR 1020210124097A KR 20210124097 A KR20210124097 A KR 20210124097A KR 102395744 B1 KR102395744 B1 KR 102395744B1
Authority
KR
South Korea
Prior art keywords
data
input
convolutional
scale
output
Prior art date
Application number
KR1020210124097A
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 KR1020210124097A priority Critical patent/KR102395744B1/ko
Priority to PCT/KR2022/006216 priority patent/WO2023042989A1/ko
Application granted granted Critical
Publication of KR102395744B1 publication Critical patent/KR102395744B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

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

Abstract

제1입력 데이터를 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터와 제2입력 데이터의 특정 출력채널을 입력채널 별로 스플릿하여 얻은 한 세트의 제2스플릿 데이터를, 입력채널 별로 콘볼루션하여 한 세트의 콘볼루션 데이터들을 생성하는 단계, 상기 한 세트의 콘볼루션 데이터들의 각 콘볼루션 데이터를 구성하는 값들의 통계값을 기초로, 상기 각 콘볼루션 데이터를 표현하는 스케일을 결정하는 단계, 상기 한 세트의 콘볼루션 데이터들 중 제1스케일로 표현된 제1콘볼루션 데이터와 제2스케일로 표현된 제2콘볼루션 데이터에 대한 덧셈 연산을 수행하여 중간 데이터를 생성하는 단계, 상기 중간 데이터를 생성하는 단계 이후에, 상기 컴퓨팅 장치가, 상기 한 세트의 콘볼루션 데이터들 중 제3스케일로 표현된 제3콘볼루션 데이터와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 상기 제2입력 데이터의 상기 특정 출력채널에 대응하는 특정 출력채널에 대한 채널별 출력 데이터를 산출하는 단계를 포함하는 연산방법을 공개한다. 상기 제3스케일은 상기 제1스케일보다 작지 않고, 상기 제3스케일은 상기 제2스케일보다 작지 않다.

Description

데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치{Method for add operation considering the scale of data and hardware accelerator and computing device for the same}
본 발명은 컴퓨팅 장치에서 연산을 수행하는 기술에 관한 것이며, 특히 숫자(number)의 스케일을 고려한 덧셈 연산 기술에 관한 것이다.
신경망 등 인공지능의 구현을 위해 이용되는 신호처리기술은 소프트웨어로 구현되거나 또는 빠른 처리를 위해 하드웨어 가속기로서 구현될 수 있다. 머신러닝을 위해 이용되는 신경망에서는 각종 연산을 수행하는 레이어들이 다수 존재하며, 각 레이어에서는 많은 데이터들이 연산될 수 있다. 이러한 데이터 연산이 하드웨어 가속기에 의해 이루어지는 경우, 하드웨어 가속기 내부에 제공되는 내부 메모리 또는 내부 버퍼의 크기가 제한된다는 환경 때문에 문제가 발생할 수 있다. 즉, 연산의 대상이 되는 한 세트의 데이터의 크기가 내부 메모리 또는 내부 버퍼의 크기보다 작다면, 한 세트의 데이터를 2개의 서브세트로 나누어 각각 따로 계산하여 서브 결과값들을 산출한 다음, 그 서브 결과값들을 다시 결합하는 과정을 거쳐야 한다. 이때, 상기 서브 결과값들이 내부 메모리 또는 내부 버퍼에 저장되었다가 다시 읽히는 과정을 거치는데, 이 과정에서 원하지 않는 데이터의 양자화 오차가 발생할 수 있다는 문제가 있다. 이러한 양자화 오차는 한 세트의 데이터를 2개의 서브세트로 나누어 따로 계산하지 않았더라면 발생하지 않는 오차일 수 있다.
신경망 기술에서 데이터의 양자화에 관련된 선행기술로는 대한민국 특허출원번호 1020217011986, 1020200110330, 1020170150707, 1020200082108, 및 1020207038081 등이 있다.
이하, 도 1 내지 도 5를 이용하여 본 발명의 이해를 위해 알아두어야 할 기술 내용을 간단히 설명한다. 이 내용들은 본 발명의 발명자가 알고 있는 사전지식으로서, 이 중 적어도 일부는 본 특허출원 시에 불특정인에게 공개되지 않은 내용일 수 있다.
본 발명은 컴퓨팅 장치가 사용하는 숫자 또는 데이터의 스케일이라는 개념을 이용한다. 컴퓨팅 장치는 이진수(binary number)를 이용한 N비트 숫자(N-bit number)의 형태로 숫자를 표현한다. 이때 상기 N비트 숫자는 MSB(Most Significant Bit) 및 LSB(Least Significant Bit)를 포함한다. 여기서 상기 N비트 숫자의 스케일은 상기 N비트 숫자의 LSB가 표현하는 수의 크기로 정의될 수 있다. 죽, 상기 N비트 숫자가 표현할 수 있는 0(영)이 아닌 최소값에 의해 정의될 수 있다. 상기 스케일이라는 개념의 이해를 돕기 위해, 예컨대 각각 2비트로 표현되는 두 개의 수인 '128' 및 '1'이라는 십진수들을 고려해 볼 수 있다. 여기서 상기 십진수 '128'은 이진수 표기법에 따라 '01'로 표현되고 상기 십진수 '1'은 이진수 표기법에 따라 '01'로 표현될 수 있다. 이때, 상기 십진수 '128'을 나타내는 2비트 숫자의 스케일인 제1스케일은 십진수 128에 비례하는 값이고, 상기 십진수 '1'을 나타내는 2비트 숫자의 스케일인 제2스케일은 십진수 1에 비례하는 값이다. 즉, 상기 제1스케일은 상기 제2스케일에 비하여 128배 만큼 크다.
도 1a는 본 발명에 따른 수학연산의 대상(object for mathematical operation) 중 하나인 입력 액티베이션(710)의 구성을 나타낸 것이다. 본 명세서에서 입력 액티베이션은 제1입력 데이터로 지칭될 수도 있다.
상기 입력 액티베이션(710)은 제1차원(a first dimension), 제2차원, 및 제3차원으로 이루어진 3차원 어레이일 수 있다. 상기 입력 액티베이션(710)의 상기 제1차원, 상기 제2차원, 및 상기 제3차원은 각각 입력채널 차원, 높이 차원, 및 폭 차원으로 지칭될 수 있다. 도 1a에 제시한 상기 입력 액티베이션(710)은 제1차원의 크기 ci, 제2차원의 크기 h, 및 제3차원의 크기 w가 각각 3, 2, 및 4인 예이다. 도 1a에 제시한 상기 입력 액티베이션(710)의 데이터 크기는 ci*h*w에 비례한다.
본 명세서에서 상기 입력 액티베이션(710) 중 상기 입력채널의 인덱스가 k인 부분은 '입력 액티베이션[ci]=k'라고 표현할 수 있다. 도 1a에서 입력 액티베이션[ci]=1은 참조번호 711로 나타내고, 입력 액티베이션[ci]=2은 참조번호 712로 나타내고, 그리고 입력 액티베이션[ci]=3은 참조번호 713으로 나타낸다.
상기 입력 액티베이션[ci]=1(711), 상기 입력 액티베이션[ci]=2(712), 및 상기 입력 액티베이션[ci]=3(713)의 스케일은 서로 동일하다. 즉, 상기 입력 액티베이션(710)을 구성하는 모든 숫자들의 스케일은 서로 동일하며, 상기 스케일은 'sc_ai1'으로 표현될 수 있다. 예컨대 sc_ai1은 십진수 1일 수도 있고 십진수 128일 수도 있다.
도 1b는 본 발명에 따른 수학연산의 대상 중 다른 하나인 가중치(740)의 구성을 나타낸 것이다.
본 명세서에서 상기 가중치(740)는 제2입력 데이터로 지칭될 수도 있다.
상기 가중치(740)는 제1차원(a first dimension), 제2차원, 제3차원, 및 제4차원으로 이루어진 4차원 어레이일 수 있다. 상기 가중치(740)의 상기 제1차원, 상기 제2차원, 상기 제3차원, 및 상기 제4차원은 각각 출력채널 차원, 입력채널 차원, 높이 차원, 및 폭 차원으로 지칭될 수 있다. 도 1b에 제시한 상기 가중치(740)는 제1차원의 크기 co, 제2차원의 크기 ci, 제3차원의 크기 r, 및 제4차원의 크기 s가 각각 2, 3, 2, 및 2인 예이다. 도 1b에 제시한 상기 가중치(740)의 데이터 크기는 co*ci*r*s에 비례한다.
본 명세서에서 상기 가중치(740) 중 상기 출력채널의 인덱스가 k인 부분은 '가중치[co]=k'라고 표현할 수 있다. 도 1b에서 가중치[co]=1은 참조번호 741로 나타내고, 가중치[co]=2은 참조번호 742로 나타낸다.
상기 가중치[co]=1(741)를 구성하는 모든 숫자들의 스케일인 제1스케일은 서로 동일하며, 상기 제1스케일은 'sc_w1'으로 표현될 수 있다.
상기 가중치[co]=2(742)를 구성하는 모든 숫자들의 스케일인 제2스케일은 서로 동일하며, 상기 제2스케일은 'sc_w2'으로 표현될 수 있다.
상기 제1스케일 sc_w1과 상기 제2스케일 sc_w2는 서로 독립적으로 설정(set)될 수 있는 값이다.
예컨대 상기 제1스케일 sc_w1은 십진수 1에 비례하고, 상기 제2스케일 sc_w2는 십진수 128에 비례할 수 있다.
도 1c는 입력 액티베이션(710)이 6개의 입력채널들(711~716)로 이루어진 예를 나타낸 것이다.
도 1d는 가중치(740)이 2개의 출력채널들(741, 742)로 이루어지고, 각 출력채널은 6개의 입력채널(ex: 7411~7416)로 이루어진 예를 나타낸 것이다.
도 2a 내지 도 2c는 상기 입력 액티베이션(710)과 상기 가중치(740) 간의 콘볼루션 연산을 설명하는 개념도이다.
도 2a 내지 도 2c 및 본 명세서에 제시된 기호로서, 문자 'x'를 감싸고 있는 원형의 기호는, 상기 기호의 왼쪽에 배치된 제1수학연산 대상과 상기 기호의 오른쪽에 배치된 제2수학연산 대상 간의 콘볼루션 연산을 나타내는 기호이다.
도 2a에 제시된 것과 같이, 상기 입력 액티베이션(710)과 상기 가중치(740)에 관한 콘볼루션 연산을 수행하면 출력 액티베이션(750)이 생성될 수 있다. 본 명세서에서 출력 액티베이션은 출력 데이터로 지칭될 수도 있다.
상기 출력 액티베이션(750)은 제1차원, 제2차원, 및 제3차원으로 이루어진 3차원 어레이일 수 있다. 상기 출력 액티베이션(750)의 상기 제1차원, 상기 제2차원, 및 상기 제3차원은 각각 출력채널 차원, 높이 차원, 및 폭 차원으로 지칭될 수 있다. 도 2a 내지 도 2c에 제시한 상기 출력 액티베이션(750)은 제1차원의 크기 co, 제2차원의 크기 ho, 및 제3차원의 크기 wo가 각각 2, 2, 및 3인 예이다. 도 2a 내지 도 2c에 제시한 상기 출력 액티베이션(750)의 데이터 크기는 co*ho*wo에 비례한다.
본 명세서에서 상기 출력 액티베이션(750) 중 상기 출력채널의 인덱스가 k인 부분은 '출력 액티베이션[co]=k'라고 표현할 수 있다. 도 2a 내지 도 2c에서 출력 액티베이션[co]=1은 참조번호 751로 나타내고, 출력 액티베이션[co]=2은 참조번호 752로 나타낸다.
도 2b는 상기 출력 액티베이션[co]=1(751)을 생성하는 방법을 나타낸 것이다. 상기 출력 액티베이션[co]=1(751)은 상기 입력 액티베이션(710)과 상기 가중치[co]=1(741)에 대한 콘볼루션 연산에 의해 생성된다.
도 2c는 상기 출력 액티베이션[co]=2(752)를 생성하는 방법을 나타낸 것이다. 상기 출력 액티베이션[co]=2(752)은 상기 입력 액티베이션(710)과 상기 가중치[co]=2(742)에 대한 콘볼루션 연산에 의해 생성된다.
도 3a는 본 발명의 일 실시예에서 이용되는 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이다.
컴퓨팅 장치(1)는, DRAM(Dynamic Random Access Memory)(130), 하드웨어 가속기(110), DRAM(130)와 하드웨어 가속기(110)를 연결하는 버스(700), 및 버스(700)에 연결된 타 하드웨어들(99) 및 메인 프로세서(160)를 포함할 수 있다. 여기서 DRAM(130)은 메모리(130)로 지칭될 수 있다.
그 밖에 컴퓨팅 장치(1)는 도시되지 않은 전원부, 통신부, 사용자 인터페이스, 저장부(170), 및 주변 장치부들을 더 포함할 수 있다. 버스(700)는 상기 하드웨어 가속기(110)와 타 하드웨어들(99), 그리고 메인 프로세서(160)가 공유할 수도 있다.
상기 하드웨어 가속기(110)는 DMA부(Direct Memory Access part)(20), 제어부(40), 내부 메모리(30), 입력버퍼(650), 데이터 연산부(610), 및 출력버퍼(640)를 포함할 수 있다.
내부 메모리(30)에 임시 저장되는 데이터의 일부 또는 전부는 버스(700)를 통해 DRAM(130)으로부터 제공될 수 있다. 이때, DRAM(130)에 저장되어 있는 데이터를 내부 메모리(30)로 이동시키기 위하여, 제어부(40)와 DMA부(20)가 내부 메모리(30) 및 DRAM(130)을 제어할 수도 있다.
내부 메모리(30)에 저장되어 있던 데이터는 입력버퍼(650)를 통해 데이터 연산부(610)에게 제공될 수 있다.
상기 데이터 연산부(610)가 동작하여 생성된 출력값들은 출력버퍼(640)을 거쳐 상기 내부 메모리(30)에 저장될 수 있다. 상기 내부 메모리(30)에 저장된 상기 출력값들은 제어부(40) 및 DMA부(20)의 제어에 의해 DRAM(130)에 기록될 수도 있다.
제어부(40)는 DMA부(20), 내부 메모리(30), 및 상기 데이터 연산부(610)의 동작을 총괄하여 제어할 수 있다.
일 구현예에서, 상기 데이터 연산부(610)는 제1시구간 동안에는 제1연산기능을 수행하고 제2시구간 동안에는 제2연산기능을 수행할 수 있다.
도 3a에는, 상기 데이터 연산부(610)는 상기 하드웨어 가속기(110) 내에 1개가 제시되어 있다. 그러나 도시하지 않은 변형된 일 실시예에서, 도 3a에 나타낸 상기 데이터 연산부(610)는 상기 하드웨어 가속기(110) 내에 복수 개 제공되어 각각 제어부(40)에 의해 요청된 연산을 병렬적으로 수행할 수도 있다.
일 구현예에서, 상기 데이터 연산부(610)는 그 출력데이터를 한 번에 출력하지 않고 시간에 따라 주어진 순서에 따라 순차적으로 출력할 수 있다.
도 3b 내지 도 3e는 콘볼루션 연산을 위해 수학연산 대상을 저장하는 저장공간의 크기와 상기 수학연산 대상의 크기를 비교한 것이다. 상기 버퍼는 도 3a에 제시한 내부메모리(30)의 일부일 수 있다. 예컨대, 상기 내부메모리(30)에는 입력 액티베이션(710)을 위해 할당된 제1저장공간이 정의되어 있고, 그리고 가중치를 위해 할당된 제2저장공간이 정의되어 있을 수 있다. 상기 제1저장공간 및 상기 제2저장공간의 크기는 한정되어 있을 수 있다.
도 3b에 나타낸 것과 같이, 상기 입력 액티베이션(710)의 크기가 상기 제1저장공간의 크기보다 크면 상기 입력 액티베이션(710) 전체가 상기 제1저장공간에 입력될 수 없다는 문제가 발생한다. 이러한 문제를 해결하기 위하여, 도 3c에 나타낸 것과 같이, 상기 입력 액티베이션(710)을 입력채널 별로 스플릿하여, 예컨대 입력 액티베이션(711, 712)만을 상기 제1저장공간에 저장하여 이용할 수 있다.
마찬가지로 도 3d에 나타낸 것과 같이, 상기 가중치(740)의 크기가 상기 제2저장공간의 크기보다 크면 상기 가중치(740) 전체가 상기 제2저장공간에 입력될 수 없다는 문제가 발생한다. 이러한 문제를 해결하기 위하여, 도 3e에 나타낸 것과 같이, 상기 가중치(740)을 입력채널 별로 스플릿하여, 예컨대 제1출력채널의 입력 액티베이션(7411, 7412) 및 제2출력채널의 입력 액티베이션(7421, 7422)만을 상기 제2저장공간에 저장하여 이용할 수 있다.
내부메모리의 크기가 작다는 이유 때문에, 상기 입력 액티베이션(710) 및 상기 가중치(740) 중 어느 하나를 입력채널 별로 스플릿하면, 다른 하나도 입력채널 별로 스플릿해야 할 수 있다.
도 4는 콘볼루션 연산을 위해 가중치를 입력채널 별로 스플릿 하는 개념을 나타낸 것이다.
본 명세서에서 상기 가중치(740) 중 상기 출력채널 인덱스가 k이고 상기 입력채널 인덱스가 j인 부분은 '가중치[co]=k,[ci]=j'라고 표현할 수 있다. 도 4에서 가중치[co]=1,[ci]=1, 가중치[co]=1,[ci]=2, 가중치[co]=1,[ci]=3, 가중치[co]=2,[ci]=1, 가중치[co]=2,[ci]=2, 가중치[co]=2,[ci]=3은 각각 참조번호 7411, 7412, 7413, 7421, 7422, 및 7423으로 나타낸다.
도 5는 상기 스플릿 데이터를 이용하여 도 2의 (b)에 제시한 상기 출력 액티베이션(750)을 산출하는 방법을 나타낸 것이다.
도 5에 제시한 실시예에서, 상기 입력 액티베이션(710) 및 상기 가중치(740)가 입력채널 별로 스플릿 되었으므로 콘볼루션 연산에 필요한 버퍼의 크기를 충분히 큰 것으로 가정할 수 있다.
이하 도 5를 참조하여 설명한다.
상기 입력 액티베이션[ci]=1(711)과 상기 가중치[co]=1,[ci]=1(7411)에 대한 콘볼루션 연산을 수행하여 출력 액티베이션[co]=1,[ci]=1(7511)을 산출할 수 있다.
상기 입력 액티베이션[ci]=2(712)과 상기 가중치[co]=1,[ci]=2(7412)에 대한 콘볼루션 연산을 수행하여 출력 액티베이션[co]=1,[ci]=2(7512)을 산출할 수 있다.
상기 입력 액티베이션[ci]=3(713)과 상기 가중치[co]=1,[ci]=3(7413)에 대한 콘볼루션 연산을 수행하여 출력 액티베이션[co]=1,[ci]=3(7513)을 산출할 수 있다.
상기 입력 액티베이션[ci]=1(711)과 상기 가중치[co]=2,[ci]=1(7421)에 대한 콘볼루션 연산을 수행하여 출력 액티베이션[co]=2,[ci]=1(7521)을 산출할 수 있다.
상기 입력 액티베이션[ci]=2(712)과 상기 가중치[co]=2,[ci]=2(7422)에 대한 콘볼루션 연산을 수행하여 출력 액티베이션[co]=2,[ci]=2(7522)을 산출할 수 있다.
상기 입력 액티베이션[ci]=3(713)과 상기 가중치[co]=2,[ci]=3(7423)에 대한 콘볼루션 연산을 수행하여 출력 액티베이션[co]=2,[ci]=3(7523)을 산출할 수 있다.
이제, 상기 출력 액티베이션[co]=1,[ci]=1(7511), 상기 출력 액티베이션[co]=1,[ci]=2(7512), 및 상기 출력 액티베이션[co]=1,[ci]=3(7513)에 대하여, 엘레먼트 별 덧셈 연산(element-wise adding operation)(P101)을 수행하여 상기 출력 액티베이션[co]=1(751)을 산출할 수 있다.
그리고 상기 출력 액티베이션[co]=2,[ci]=1(7521), 상기 출력 액티베이션[co]=2,[ci]=2(7522), 및 상기 출력 액티베이션[co]=2,[ci]=3(7523)에 대하여, 엘레먼트 별 덧셈 연산(element-wise adding operation)(P102)을 수행하여 상기 출력 액티베이션[co]=2(752)을 산출할 수 있다.
그 다음, 상기 출력 액티베이션[co]=1(751)과 상기 출력 액티베이션[co]=2(752)를 결합하여 상기 출력 액티베이션(750)을 생성할 수 있다.
상술한 엘레먼트 별 덧셈 연산(P101, P102) 과정에서, 각 출력 액티베이션[co]=k,[ci]=j을 버퍼에 기록하는 과정이 수행될 수 있는데, 이 과정에서 데이터의 양자화 오류가 발생할 수 있다.
본 발명에서는 하드웨어 가속기에서 데이터를 연산하거나 처리할 때에, 데이터를 2개 그룹 이상으로 나누어 처리하는 과정에서 발생하는 양자화 오류를 감소시키는 기술을 제공하고자 한다.
본 발명의 일 양상에 따라 제공되는 연산방법은 상술한 양자화 오류를 개선하기 위한 엘레먼트 별 덧셈 연산(P101, P102)의 구체적인 방법에 관한 것이다.
본 발명의 일 관점에 따라 제공되는 연산방법은, 컴퓨팅 장치가, 제1입력 데이터(710)와 제2입력 데이터(740)를 입력채널 별로 콘볼루션하여 한 세트의 콘볼루션 데이터들(7012, 7034, 7056 or 7511~7513)을 생성하는 단계; 상기 컴퓨팅 장치가, 상기 한 세트의 콘볼루션 데이터들의 각 콘볼루션 데이터를 구성하는 값들의 통계값을 기초로, 상기 각 콘볼루션 데이터를 표현하는 스케일(sc_co_ci1,2, sc_co_ci3,4, 및 sc_co_ci5,6)을 결정하는 단계; 상기 컴퓨팅 장치가, 상기 한 세트의 콘볼루션 데이터들 중 제1스케일로 표현된 제1콘볼루션 데이터(7012)와 제2스케일로 표현된 제2콘볼루션 데이터(7034)에 대한 덧셈 연산을 수행하여 중간 데이터(750p)를 생성하는 단계; 및 상기 컴퓨팅 장치가, 상기 중간 데이터를 생성하는 단계 이후에, 상기 한 세트의 콘볼루션 데이터들 중 제3스케일로 표현된 제3콘볼루션 데이터(7056)와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 출력 데이터(750)를 산출하는 단계;를 포함할 수 있다. 이때, 상기 제3스케일은 상기 제1스케일보다 작지 않고, 상기 제3스케일은 상기 제2스케일보다 작지 않을 수 있다.
이때, 상기 한 세트의 콘볼루션 데이터를 생성하는 단계는, 상기 제1입력 데이터를 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터(711~716)와 상기 제2입력 데이터의 한 세트의 출력채널(741)을 입력채널 별로 스플릿하여 얻은 한 세트의 제2스플릿 데이터(7411~7416)를, 입력채널 별로 콘볼루션하여 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계; 및 상기 출력 데이터를 산출하는 단계는, 상기 제3콘볼루션 데이터(7056)와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터를 산출하는 단계를 포함할 수 있다.
이때, 상기 한 세트의 출력채널은 상기 제2입력 데이터를 구성하는 복수 개의 출력채널 중 어느 하나의 특정 출력채널이며, 상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터는 상기 특정 출력채널에 대응하는 출력 데이터일 수 있다.
이때, 입력채널 별로 콘볼루션하여 한 세트의 콘볼루션 데이터들을 생성하는 단계는, 상기 한 세트의 제1스플릿 데이터와 상기 한 세트의 제2스플릿 데이터를 입력채널 별로 콘볼루션하여, 각 입력채널에 대응하는 입력채널 콘볼루션 데이터들로 이루어진 한 세트의 입력채널 콘볼루션 데이터들(7501~7506, 또는 7511~7516))을 생성하는 단계; 및 상기 한 세트의 입력채널 콘볼루션 데이터들을 그룹화하여 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계를 포함할 수 있다.
이때, 상기 각각의 콘볼루션 데이터는, 상기 한 세트의 입력채널 콘볼루션 데이터들 중 한 개의 입력채널 콘볼루션 데이터와 동일한 것이거나, 또는 상기 한 세트의 입력채널 콘볼루션 데이터들 중 두 개 이상의 입력채널 콘볼루션 데이터들에 대한 엘레먼트별 덧셈 연산을 수행하여 산출한 것일 수 있다.
이때, 상기 연산방법은, 상기 그룹을 결정하기 위하여, 상기 컴퓨팅 장치가, 상기 각각의 제2스플릿 데이터를 구성하는 엘레먼트들의 값들의 레인지를 산출하여 한 세트의 레인지(rg_w_co_ci1~rg_w_co_ci6)를 결정하는 단계; 및 상기 컴퓨팅 장치가, 상기 한 세트의 레인지를 기준으로 상기 한 세트의 입력채널 콘볼루션 데이터들을 그룹화하는 단계를 더 포함할 수 있다.
또는, 상기 연산방법은, 상기 그룹을 결정하기 위하여, 상기 컴퓨팅 장치가, 상기 각각의 입력채널 콘볼루션 데이터를 구성하는 엘레먼트들의 값들의 레인지를 산출하여 한 세트의 레인지(rg_co_ci1~rg_co_ci6)를 결정하는 단계; 및 상기 컴퓨팅 장치가, 상기 한 세트의 레인지를 기준으로 상기 한 세트의 입력채널 콘볼루션 데이터들을 그룹화하는 단계를 더 포함할 수 있다.
이때, 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계는, 상기 한 세트의 제1스플릿 데이터와 상기 한 세트의 제2스플릿 데이터를 입력채널 별로 콘볼루션하여, 각 입력채널에 대응하는 입력채널 콘볼루션 데이터들로 이루어진 한 세트의 입력채널 콘볼루션 데이터들을 생성하는 단계;를 포함하며, 상기 각각의 콘볼루션 데이터는, 상기 한 세트의 입력채널 콘볼루션 데이터들 중 한 개의 입력채널 콘볼루션 데이터와 동일한 것일 수 있다.
이때, 상기 컴퓨팅 장치는, 상기 제2입력 데이터에 포함된 모든 출력채널에 대하여, 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계, 상기 결정하는 단계, 상기 중간 데이터를 생성하는 단계, 및 상기 산출하는 단계를 실행하도록 되어 있고, 상기 컴퓨팅 장치는, 상기 제2입력 데이터에 포함된 각각의 출력채널에 대하여 생성된 채널별 출력 데이터들을 결합하여 상기 모든 출력채널을 포함하는 출력 데이터를 생성하도록 되어 있을 수 있다.
이때, 상기 제1입력 데이터는 입력 액티베이션이고, 상기 제2입력 데이터는 가중치이며, 상기 출력 데이터는 출력 액티베이션이고, 상기 가중치의 디멘젼은 상기 입력 액티베이션의 디멘젼보다 클 수 있다.
이때, 상기 입력 액티베이션은 복수 개의 제1입력채널 데이터를 포함하며, 상기 각각의 제1입력채널 데이터는 2차원 어레이이며, 상기 가중치는 복수 개의 출력채널 데이터를 포함하며, 상기 각각의 출력채널 데이터는 복수 개의 제2입력채널 데이터를 포함하며, 상기 각각의 제2입력채널 데이터는 2차원 어레이일 수 있다.
본 발명의 일 관점에 따라 제공되는 하드웨어 가속기(110)를 갖는 컴퓨팅 장치로서, 상기 하드웨어 가속기가, 제1입력 데이터 및 제2입력데이터를 획득하도록 되어 있고, 상기 제1입력 데이터와 상기 제2입력 데이터를 입력채널 별로 콘볼루션하여 한 세트의 콘볼루션 데이터들을 생성하도록 되어 있고, 상기 한 세트의 콘볼루션 데이터들의 각 콘볼루션 데이터를 구성하는 값들의 통계값을 기초로, 상기 각 콘볼루션 데이터를 표현하는 스케일을 결정하도록 되어 있고, 상기 한 세트의 콘볼루션 데이터들 중 제1스케일로 표현된 제1콘볼루션 데이터와 제2스케일로 표현된 제2콘볼루션 데이터에 대한 덧셈 연산을 수행하여 중간 데이터를 생성하도록 되어 있고, 그리고 상기 중간 데이터를 생성하는 단계 이후에, 상기 한 세트의 콘볼루션 데이터들 중 제3스케일로 표현된 제3콘볼루션 데이터와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 출력 데이터를 산출하도록 되어 있을 수 있다. 이때, 상기 제3스케일은 상기 제1스케일보다 작지 않고, 상기 제3스케일은 상기 제2스케일보다 작지 않을 수 있다.
이때, 상기 한 세트의 콘볼루션 데이터를 생성하는 단계는, 상기 제1입력 데이터를 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터와 상기 제2입력 데이터의 한 세트의 출력채널을 입력채널 별로 스플릿하여 얻은 한 세트의 제2스플릿 데이터를, 입력채널 별로 콘볼루션하여 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계; 및 상기 출력 데이터를 산출하는 단계는, 상기 제3콘볼루션 데이터와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터를 산출하는 단계;를 더 포함하며, 상기 하드웨어 가속기(110)는 내부 메모리(30)를 포함하며, 상기 내부메모리의 크기는 상기 제2입력 데이터 전체의 데이터 크기보다 작고, 상기 제2입력 데이터의 한 세트의 출력채널을 입력채널 별로 스플릿하여 얻은 스플릿 데이터의 크기보다 클 수 있다.
본 발명에 따르면, 하드웨어 가속기에서 데이터를 연산하거나 처리할 때에, 데이터를 2개 그룹 이상으로 나누어 처리하는 과정에서 발생하는 양자화 오류를 감소시키는 기술을 제공할 수 있다.
도 1a는 본 발명에 따른 수학연산의 대상 중 하나인 입력 액티베이션의 구성을 나타낸 것이다.
도 1b는 본 발명에 따른 수학연산의 대상 중 다른 하나인 가중치의 구성을 나타낸 것이다.
도 1c는 입력 액티베이션이 6개의 입력채널들로 이루어진 예를 나타낸 것이다.
도 1d는 가중치가 2개의 출력채널들로 이루어지고, 각 출력채널은 6개의 입력채널로 이루어진 예를 나타낸 것이다.
도 2a 내지 도 2c는 상기 입력 액티베이션과 상기 가중치 간의 콘볼루션 연산을 설명하는 개념도이다.
도 3a는 본 발명의 일 실시예에서 이용되는 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이고, 도 3b 내지 도 3e는 콘볼루션 연산을 위해 수학연산 대상을 저장하는 저장공간의 크기와 상기 수학연산 대상의 크기를 비교한 것이다.
도 4는 콘볼루션 연산을 위해 가중치를 입력채널 별로 스플릿 하는 개념을 나타낸 것이다.
도 5는 상기 스플릿 데이터를 이용하여 도 2의 (b)에 제시한 상기 출력 액티베이션을 산출하는 방법을 나타낸 것이다.
도 6은 본 발명의 일 실시예에 따라 입력 액티베이션과 가중치에 대한 콘볼루션 연산을 수행하여 출력 액티베이션을 산출하는 방법을 나타낸 순서도이다.
도 7은 본 발명의 일 실시예에 따라 입력 액티베이션과 가중치에 대한 콘볼루션 연산을 수행하여 출력 액티베이션을 산출하는 방법을 나타낸 것이다.
도 8은 본 발명의 일 실시예에 따라 두 개의 입력 데이터에 대한 연산을 수행하여 출력 데이터를 생성하는 방법을 나타낸 순서도이다.
도 9a는 6개의 입력채널들로 구성되는 입력 액티베이션과 2개의 출력채널들로 구성되는 가중치의 제1출력채널 간의 콘볼루션 연산과정을 나타낸 것이다.
도 9b는 상기 입력 액티베이션과 상기 제2출력채널 간의 콘볼루션 연산과정을 나타낸 것이다.
도 10은 도 9a에 제시된 특정 그룹에 속하게 될 입력채널들을 결정하는 구체적인 방법을 나타낸 일 실시예를 나타낸 것이다.
도 11은 도 9a에 제시된 특정 그룹에 속하는 입력채널들을 결정하는 구체적인 방법을 나타낸 또 다른 실시예를 나타낸 것이다.
도 12는 본 발명의 다른 실시예에 따라 제공되는 연산방법을 나타낸 것이다.
도 13은 도 12에 제시된 특정 그룹에 속하게 될 입력채널들을 결정하는 구체적인 방법을 나타낸 일 실시예를 나타낸 것이다.
도 14는 도 12에 제시된 특정 그룹에 속하는 입력채널들을 결정하는 구체적인 방법을 나타낸 또 다른 실시예를 나타낸 것이다.
도 15는 본 발명의 일 실시예에 따라 제공되는 연산방법을 나타낸 순서도이다.
이하, 본 발명의 실시예를 첨부한 도면을 참고하여 설명한다. 그러나 본 발명은 본 명세서에서 설명하는 실시예에 한정되지 않으며 여러 가지 다른 형태로 구현될 수 있다. 본 명세서에서 사용되는 용어는 실시예의 이해를 돕기 위한 것이며, 본 발명의 범위를 한정하고자 의도된 것이 아니다. 또한, 이하에서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.
본 명세서에서 도 6a, 도 6b, 및 도 6c는 통칭하여 도 6이라고 지칭할 수 있다. 도 7a, 도 7b, 및 도 7c는 통칭하여 도 7이라고 지칭할 수 있다.
도 6은 본 발명의 일 실시예에 따라 입력 액티베이션과 가중치에 대한 콘볼루션 연산을 수행하여 출력 액티베이션을 산출하는 방법을 나타낸 순서도이다.
도 6에서 입력 액티베이션은 도 1a에 예시한 상기 입력 액티베이션(710)과 같은 구조를 갖는 3차원 데이터일 수 있고, 가중치는 도 1에 예시한 상기 가중치(740)와 같은 구조를 갖는 4차원 데이터일 수 있다.
도 7은 본 발명의 일 실시예에 따라 입력 액티베이션과 가중치에 대한 콘볼루션 연산을 수행하여 출력 액티베이션을 산출하는 방법을 나타낸 것이다.
도 6a, 도 6b, 및 도 6c에 제시된 내용은 각각 도 7a, 도 7b, 및 도 7c에 제시된 내용과 대응된다.
이하, 도 6a 및 도 7a를 함께 참조하여 설명한다.
단계(S110)에서, 상기 입력 액티베이션(710)을 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터(711, 712, 713)를 얻을 수 있다. 그리고 상기 가중치(740)의 제1출력채널(741)을 입력채널 별로 스플릿하여 한 세트의 제2스플릿 데이터(7411, 7412, 7413)를 얻을 수 있다. 그리고 상기 한 세트의 제1스플릿 데이터(711, 712, 713)와 상기 한 세트의 제2스플릿 데이터(7411, 7412, 7413)를 입력채널 별로 콘볼루션하여, 한 세트의 콘볼루션 데이터들(7511, 7512, 7513)을 생성할 수 있다.
단계(S120)에서, 상기 한 세트의 콘볼루션 데이터들(7511, 7512, 7513)의 각 콘볼루션 데이터를 구성하는 값들의 통계값을 기초로, 상기 각 콘볼루션 데이터를 표현하는 스케일을 결정할 수 있다.
예컨대, 콘볼루션 데이터(7511)를 구성하는 6개의 엘리먼트들의 값의 분포를 기초로 콘볼루션 데이터(7511)의 표현을 위해 적용될 스케일 sc_co1_ci1을 결정할 수 있다는 점은 쉽게 이해될 수 있다. 마찬가지로 콘볼루션 데이터(7512)를 구성하는 6개의 엘리먼트들의 분포를 기초로 콘볼루션 데이터(7512)의 표현을 위해 적용될 스케일 sc_co1_ci2을 결정할 수 있다는 점은 쉽게 이해될 수 있다.
이와 같이, 콘볼루션 데이터(7511), 콘볼루션 데이터(7512), 및 콘볼루션 데이터(7513)에 적용된 스케일은 각각 sc_co1_ci1, sc_co1_ci2, 및 sc_co1_ci3으로 결정될 수 있다. 여기서 sc_co1_ci1, sc_co1_ci2, 및 sc_co1_ci3은 각각 독립적으로 결정될 수 있는 값이다. 따라서 sc_co1_ci1, sc_co1_ci2, 및 sc_co1_ci3는 서로 같을 수도 있고 서로 다를 수도 있다.
단계(S130)에서, 상기 결정된 스케일(sc_co1_ci1, sc_co1_ci2, sc_co1_ci3)에 따라 상기 한 세트의 콘볼루션 데이터들(7511, 7512, 7513)의 구체적인 표현값을 결정할 수 있다.
단계(S140)에서, 상기 한 세트의 콘볼루션 데이터들(7511, 7512, 7513) 중 '제1스케일(sc_co1_ci1)'로 표현된 제1 콘볼루션 데이터(7511)와 '제2스케일(sc_co1_ci2)'로 표현된 제2 콘볼루션 데이터(7512)에 대한 덧셈 연산을 수행하여 중간 데이터(751p)를 생성할 수 있다.
단계(S150)에서, 상기 한 세트의 콘볼루션 데이터들(7511, 7512, 7513) 중 '제3스케일(sc_co1_ci3)'로 표현된 제3 콘볼루션 데이터(7513)와 상기 중간 데이터(751p)에 대한 덧셈 연산을 수행하여, 상기 가중치(740)의 제1출력채널([co]=1)에 대응하는 제1출력채널([co]=1)에 대한 출력 액티베이션(751)을 산출할 수 있다. 즉, 상기 출력 액티베이션[co]=1(751)을 산출할 수 있다.
이때, 도 7a는, 상기 제3스케일(sc_co1_ci3)은 상기 제1스케일(sc_co1_ci1)보다 작지 않고, 상기 제3스케일(sc_co1_ci3)은 상기 제2스케일(sc_co1_ci2)보다 작지 않은 예를 나타낸 것이다.
여기서, 단계(S140)는 단계(S150)보다 먼저 수행될 수 있다.
이하, 도 6b 및 도 7b를 함께 참조하여 설명한다.
단계(S210)에서, 상기 입력 액티베이션(710)을 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터(711, 712, 713)와 상기 가중치(740)의 제2출력채널(742)을 입력채널 별로 스플릿하여 얻은 한 세트의 제2스플릿 데이터(7421, 7422, 7423)를, 입력채널 별로 콘볼루션하여 한 세트의 콘볼루션 데이터들(7521, 7522, 7523)을 생성할 수 있다.
단계(S220)에서, 상기 한 세트의 콘볼루션 데이터들(7521, 7522, 7523)의 각 콘볼루션 데이터를 구성하는 값들의 통계값을 기초로, 상기 각 콘볼루션 데이터를 표현하는 스케일을 결정할 수 있다.
예컨대, 콘볼루션 데이터(7521)를 구성하는 6개의 엘리먼트들의 분포를 기초로 콘볼루션 데이터(7521)의 표현을 위해 적용될 스케일 sc_co2_ci1을 결정할 수 있다는 점은 쉽게 이해될 수 있다. 마찬가지로 콘볼루션 데이터(7522)를 구성하는 6개의 엘리먼트들의 분포를 기초로 콘볼루션 데이터(7522)의 표현을 위해 적용될 스케일 sc_co2_ci2를 결정할 수 있다는 점은 쉽게 이해될 수 있다.
이와 같이, 콘볼루션 데이터(7521), 콘볼루션 데이터(7522), 및 콘볼루션 데이터(7523)에 적용된 스케일은 각각 sc_co2_ci1, sc_co2_ci2, 및 sc_co2_ci3으로 결정될 수 있다. 여기서 sc_co2_ci1, sc_co2_ci2, 및 sc_co2_ci3은 각각 독립적으로 결정될 수 있는 값이다. 따라서 sc_co2_ci1, sc_co2_ci2, 및 sc_co2_ci3는 서로 같을 수도 있고 서로 다를 수도 있다.
단계(S230)에서, 상기 결정된 스케일(sc_co2_ci1, sc_co2_ci2, sc_co2_ci3)에 따라 상기 한 세트의 콘볼루션 데이터들(7521, 7522, 7523)의 구체적인 표현값을 결정할 수 있다.
단계(S240)에서, 상기 한 세트의 콘볼루션 데이터들(7521, 7522, 7523) 중 '제1스케일(sc_co2_ci1)'로 표현된 제1 콘볼루션 데이터(7521)와 '제2스케일(sc_co2_ci2)'로 표현된 제2 콘볼루션 데이터(7522)에 대한 덧셈 연산을 수행하여 중간 데이터(752p)를 생성할 수 있다.
단계(S250)에서, 상기 한 세트의 콘볼루션 데이터들(7521, 7522, 7523) 중 '제3스케일(sc_co2_ci3)'로 표현된 제3 콘볼루션 데이터(7523)와 상기 중간 데이터(752p)에 대한 덧셈 연산을 수행하여, 상기 가중치(740)의 제2출력채널([co]=2)에 대응하는 제2출력채널([co]=2)에 대한 출력 액티베이션(752)을 산출할 수 있다. 즉, 상기 출력 액티베이션[co]=2(752)을 산출할 수 있다.
이때, 도 7b는, 상기 제3스케일(sc_co2_ci3)은 상기 제1스케일(sc_co2_ci1)보다 작지 않고, 상기 제3스케일(sc_co2_ci3)은 상기 제2스케일(sc_co2_ci2)보다 작지 않은 예를 나타낸 것이다.
바람직한 일 실시예에서, 단계(S240)는 단계(S250)보다 먼저 수행될 수 있다.
이하, 도 6c 및 도 7c를 함께 참조하여 설명한다.
단계(S310)에서, 산출된 상기 출력 액티베이션[co]=1(751)과 상기 출력 액티베이션[co]=2(752)을 결합하여 상기 출력 액티베이션(750)을 산출할 수 있다.
본 발명의 일 실시예에 따라 제공되는 제1프로세스는 상기 단계(S110), 단계(S120), 단계(S130), 단계(S140), 및 단계(S150)를 포함할 수 있다.
본 발명의 일 실시예에 따라 제공되는 제2프로세스는 상기 단계(S210), 단계(S220), 단계(S230), 단계(S240), 및 단계(S250)를 포함할 수 있다.
본 발명의 일 실시예에 따라 제공되는 제3프로세스는 상기 단계(S310)을 포함할 수 있다.
상기 제1프로세스와 상기 제2프로세스는 병렬적으로 수행되거나 또는 선후 관계를 가지고 차례대로 수행될 수 있다. 상기 제3프로세스는 상기 제1프로세스 및 상기 제2프로세스가 모두 완료된 후에 실행될 수 있다.
이때, 상술한 제1프로세스, 제2프로세스, 및 제3프로세스는 컴퓨팅 장치의 주처리장치에 의해 실행될 수도 있다. 이 경우 컴퓨팅 장치는 상기 제1프로세스, 제2프로세스, 및 제3프로세스의 실행을 위한 명령코드를 저장소에서 읽어 들여 휘발성 메모리에 저장하고, 상기 주처리장치는 상기 명령코드를 실행하여 상기 제1프로세스, 제2프로세스, 및 제3프로세스를 실행할 수 있다. 상술한 버퍼는 상기 명령코드에 따라 주처리장치 내부의 내부메모리 또는 휘발성 메모리의 일부분에 마련될 수 있다. 또한 상기 입력 액티베이션(710) 및 상기 가중치(740)는 주처리장치 내부의 내부메모리 또는 휘발성 메모리의 일부분에 저장될 수 있다.
또는, 상술한 제1프로세스, 제2프로세스, 및 제3프로세스는 컴퓨팅 장치에 포함된 전용의 하드웨어 가속기에 의해 실행될 수도 있다. 이 경우, 컴퓨팅 장치는 상기 제1프로세스, 제2프로세스, 및 제3프로세스의 실행을 위한 명령코드를 저장소에서 읽어 들여 휘발성 메모리에 저장하고, 상기 주처리장치는 상기 명령코드를 실행하여, 상기 하드웨어 가속기가 상기 입력 액티베이션(710) 및 상기 가중치(740)를 휘발성 메모리 또는 비휘발성 메모리로부터 획득하도록 할 수 있다. 이때, 상기 버퍼는 상기 하드웨어 가속기의 내부에 존재할 수 있다.
도 8은 본 발명의 일 실시예에 따라 두 개의 입력 데이터에 대한 연산을 수행하여 출력 데이터를 생성하는 방법을 나타낸 순서도이다.
상기 방법은 단계(S100) 및 단계(S200)를 포함할 수 있다.
단계(S100)에서, 컴퓨팅 장치는 M개의 출력채널을 갖는 제2입력 데이터의 각각의 출력채널에 대하여 미리 규정된 산출 프로세스(P10)를 수행하여, 각 출력채널에 대한 채널별 출력 데이터들을 생성할 수 있다.
단계(S200)에서, 컴퓨팅 장치는 M개의 상기 채널별 출력 데이터들을 결합하여 출력 데이터를 생성할 수 있다.
이때, 상기 산출 프로세스(P10)는 단계(S10), 단계(S20), 단계(S30), 단계(S40), 및 단계(S50)를 포함할 수 있다.
단계(S10)에서, 상기 컴퓨팅 장치는, 제1입력 데이터를 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터와, 제2입력 데이터의 특정 출력채널을, 입력채널 별로 스플릿하여 얻은 한 세트의 제2스플릿 데이터를, 입력채널 별로 콘볼루션하여 한 세트의 콘볼루션 데이터들을 생성할 수 있다.
단계(S20)에서, 상기 컴퓨팅 장치는, 상기 한 세트의 콘볼루션 데이터들의 각 콘볼루션 데이터를 구성하는 값들의 통계값을 기초로, 상기 각 콘볼루션 데이터를 표현하는 스케일을 결정할 수 있다.
단계(S30)에서, 상기 컴퓨팅 장치는, 상기 결정된 스케일에 따라 상기 각 콘볼루션 데이터의 표현값을 결정할 수 있다.
단계(S40)에서, 상기 컴퓨팅 장치는, 상기 한 세트의 콘볼루션 데이터들 중 제1스케일로 표현된 제1 콘볼루션 데이터와 제2스케일로 표현된 제2 콘볼루션 데이터에 대한 덧셈 연산을 수행하여 중간 데이터를 생성할 수 있다.
단계(S50)에서, 상기 컴퓨팅 장치는, 상기 한 세트의 콘볼루션 데이터들 중 제3스케일로 표현된 제3 콘볼루션 데이터와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 상기 가중치의 상기 특정 출력채널에 대응하는 특정 출력채널에 대한 출력 데이터를 산출할 수 있다.
이때, 상기 제3스케일은 상기 제1스케일보다 작지 않고, 상기 제3스케일은 상기 제2스케일보다 작지 않다.
바람직한 일 실시예에서, 단계(S40)는 단계(250)보다 반드시 먼저 수행된다.
상기 제1입력 데이터는 예컨대 도 7에서 설명한 입력 액티베이션(710)일 수 있다.
상기 제2입력 데이터는 예컨대 도 7에서 설명한 가중치(740)일 수 있다.
이하, 입력 액티베이션(710)과 가중치(741)의 입력채널들을 그룹화하여 처리하는 실시예를 설명한다.
설명의 편의를 위하여 도 7a에 제시한 상기 출력 액티베이션[co]=1,[ci]=1(7511), 출력 액티베이션[co]=1,[ci]=2(7512), 및 출력 액티베이션[co]=1,[ci]=3(7513)을 각각, 파셜 출력 액티베이션[co]=1,[ci]=1(7511), 파셜 출력 액티베이션[co]=1,[ci]=2(7512), 및 파셜 출력 액티베이션[co]=1,[ci]=3(7513)이라고 지칭할 수 있다.
도 7a에서는 한 개의 파셜 출력 액티베이션이 한 개의 입력채널에 의해 결정되는 예를 나타내었다.
이에 비하여, 도 9a 및 도 9b에서는 한 개의 파셜 출력 액티베이션이 복수 개의 입력채널, 즉, 한 개의 입력채널 그룹에 의해 결정되는 예를 나타내었다.
도 9a 및 도 9b에 나타낸 예는 입력채널의 개수가 많을 때에 유용하게 사용될 수 있다.
도 9a는 6개의 입력채널들로 구성되는 입력 액티베이션(710)과 2개의 출력채널들로 구성되는 가중치의 제1출력채널 간의 콘볼루션 연산과정을 나타낸 것이다.
도 9a에 나타낸 예에서는, 입력 액티베이션(710)을 구성하는 입력채널의 개수가 6개라는 점에서 도 7a에 나타낸 예와는 다르다. 도 7a에서는 입력채널의 개수가 3개이다.
도 9a에 나타낸 예에서는, 입력 액티베이션(710)을 구성하는 입력채널들을 그룹화하였다. 도 9a의 예에서, 입력 액티베이션[ci]=1(711) 및 입력 액티베이션[ci]=2(712)는 제1그룹(G1)으로 분류되고, 입력 액티베이션[ci]=3(713) 및 입력 액티베이션[ci]=4(714)는 제2그룹(G2)으로 분류되고, 그리고 입력 액티베이션[ci]=5(715) 및 입력 액티베이션[ci]=6(716)은 제3그룹(G3)으로 분류된다.
특정 그룹에 속하는 입력채널들을 결정하는 구체적인 방법은 도 10 및 도 11에서 후술한다.
도 9a에서는 한 개의 그룹에 2개의 입력채널이 속하는 것으로 제시하였지만, 본 발명은 이러한 구성에 한정되지 않으며, 각 그룹은 1개 내지 복수 개의 입력채널들로 이루어질 수도 있다.
도 9a에 나타낸 단계(S110), 단계(S120), 단계(S130), 단계(S140), 및 단계(S150)은 도 7a에 나타낸 단계(S110), 단계(S120), 단계(S130), 단계(S140), 및 단계(S150)와 동일하다.
단계(S110)에서, 상기 입력 액티베이션(710)을 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터(711~716)를 얻을 수 있다. 그리고 상기 가중치(740)의 제1출력채널(741)을 입력채널 별로 스플릿하여 한 세트의 제2스플릿 데이터(7411~7416)를 얻을 수 있다. 그리고 상기 한 세트의 제1스플릿 데이터(711~716)와 상기 한 세트의 제2스플릿 데이터(7411~7416)를 입력채널 별로 콘볼루션하여, 한 세트의 입력채널 콘볼루션 데이터들(7511~7516)을 생성할 수 있다.
제x그룹(Gx)에 속한 입력 액티베이션으로부터 생성된 입력채널 콘볼루션 데이터 역시 상기 제x그룹(Gx)에 속한 것으로 간주한다. 예컨대 제1그룹(G1)에 속한 입력 액티베이션(711)으로부터 생성된 입력채널 콘볼루션 데이터(7511) 역시 상기 제1그룹(G1)에 속한 것으로 간주한다.
단계(S115)에서, 특정 그룹에 속한 복수 개의 입력채널 콘볼루션 데이터들에 대하여 엘레먼트 별 덧셈 연산을 수행하여 특정 그룹의 콘볼루션 데이터를 생성한다.
예컨대 도 9a에서 제1그룹(G1)에 속한 복수 개의 입력채널 콘볼루션 데이터들(7511, 7512)들에 대하여 엘레먼트 별 덧셈 연산을 수행하여 제1그룹의 콘볼루션 데이터(7112)를 생성한다. 그리고 제2그룹(G2) 및 제3그룹(G3)에 대하여 각각, 제2그룹의 콘볼루션 데이터(7134) 및 제3그룹의 콘볼루션 데이터(7156)를 생성한다. 여기서 상기 제1그룹의 콘볼루션 데이터(7112), 제2그룹의 콘볼루션 데이터(7134) 및 제3그룹의 콘볼루션 데이터(7156)를 각각 그룹별 콘볼루션 데이터라고 지칭할 수 있다.
단계(S120)에서, 상기 한 세트의 그룹별 콘볼루션 데이터들(7112, 7134, 7156)을 각각 구성하는 값들의 통계값을 기초로, 상기 각 콘볼루션 데이터(7112, 7134, 7156)를 표현하는 스케일을 결정할 수 있다.
예컨대, 제1그룹의 콘볼루션 데이터(7112)를 구성하는 6개의 엘리먼트들의 값의 분포를 기초로 콘볼루션 데이터(7112)의 표현을 위해 적용될 스케일 sc_co1_ci1,2을 결정할 수 있다는 점은 쉽게 이해될 수 있다.
이와 같이, 제1그룹의 콘볼루션 데이터(7112), 제2그룹의 콘볼루션 데이터(7134), 및 제3그룹의 콘볼루션 데이터(7156)에 적용된 스케일은 각각 sc_co1_ci1,2, sc_co1_ci3,4, 및 sc_co1_ci5,6으로 결정될 수 있다. 여기서 sc_co1_ci1,2, sc_co1_ci3,4, 및 sc_co1_ci5,6은 각각 독립적으로 결정될 수 있는 값이다. 따라서 sc_co1_ci1,2, sc_co1_ci3,4, 및 sc_co1_ci5,6는 서로 같을 수도 있고 서로 다를 수도 있다.
단계(S130)에서, 상기 결정된 스케일(sc_co1_ci1,2, sc_co1_ci3,4, sc_co1_ci5,6)에 따라 상기 한 세트의 그룹별 콘볼루션 데이터들(7112, 7134, 7156)의 구체적인 표현값을 결정할 수 있다.
단계(S140)에서, 상기 한 세트의 그룹별 콘볼루션 데이터들(7112, 7134, 7156)중 '제1스케일(sc_co1_ci1,2)'로 표현된 제1그룹의 콘볼루션 데이터(7112)와 '제2스케일(sc_co1_ci3,4)'로 표현된 제2그룹의 콘볼루션 데이터(7134)에 대한 덧셈 연산을 수행하여 중간 데이터(751p)를 생성할 수 있다.
단계(S150)에서, 상기 한 세트의 그룹별 콘볼루션 데이터들(7112, 7134, 7156) 중 '제3스케일(sc_co1_ci5,6)'로 표현된 제3그룹의 콘볼루션 데이터(7156)와 상기 중간 데이터(751p)에 대한 덧셈 연산을 수행하여, 상기 가중치(740)의 제1출력채널([co]=1)에 대응하는 제1출력채널([co]=1)에 대한 출력 액티베이션(751)을 산출할 수 있다. 즉, 상기 출력 액티베이션[co]=1(751)을 산출할 수 있다.
이때, 도 7a는, 상기 제3스케일(sc_co1_ci5,6)은 상기 제1스케일(sc_co1_ci1,2)보다 작지 않고, 상기 제3스케일(sc_co1_ci5,6)은 상기 제2스케일(sc_co1_ci3,4)보다 작지 않은 예를 나타낸 것이다.
상술한 바와 같이 도 9a는 입력채널을 그룹화하는 개념을 도 7a가 설명하는 방법에 적용하여 변형한 예를 나타낸다.
도 9b는 상기 입력 액티베이션(710)과 상기 제2출력채널 간의 콘볼루션 연산과정을 나타낸 것이다.
도 9b에 참조번호 S210, S215, S220, S230, S240, 및 S250로 나타낸 단계들은 각각 도 9a에 참조번호 S110, S115, S120, S130, S140, 및 S150로 나타낸 단계들에 대응한다.
도 9b에 참조번호 7421~7426, 7521~7526, 7212, 7234, 7256, 752p, 및 752로 나타낸 구성요소들은 각각 도 9a에 참조번호 7411~7416, 7511~7516, 7112, 7134, 7156, 751p, 및 751로 나타낸 구성요소들에 대응한다.
도 9b에 참조부호 sc_co2_ci1,2, sc_co2_ci3,4, 및 sc_co2_ci5,6으로 나타낸 구성요소들은 각각 도 9a에 참조부호 sc_co1_ci1,2, sc_co1_ci3,4, 및 sc_co1_ci5,6로 나타낸 구성요소들에 대응한다.
도 9a 및 도 9b에 각각 제시된 상기 출력 액티베이션[co]=1(751)과 상기 출력 액티베이션[co]=2(752)을 결합하여 출력 액티베이션(750)을 생성할 수 있다.
도 10은 도 9a에 제시된 특정 그룹에 속하게 될 입력채널들을 결정하는 구체적인 방법을 나타낸 일 실시예를 나타낸 것이다.
도 9a에서 제시된 한 세트의 입력채널 콘볼루션 데이터들(7511~7516) 각각에 대하여, 컴퓨팅 장치는, 해당 입력채널 콘볼루션 데이터를 구성하는 엘레먼트들의 통계값을 산출할 수 있다.
예컨대 제1입력채널 콘볼루션 데이터(7511)를 구성하는 6개의 엘레먼트들 중 최소값과 최대값을 기준으로 제1입력채널 콘볼루션 데이터(7511)의 제1레인지(rg_co1_ci1)를 결정할 수 있다. 예컨대 제1입력채널 콘볼루션 데이터(7511)의 최소값이 1이고 최대값이 5라면, 제1레인지(rg_co1_ci1)는 상기 최대값과 최소값이 차이값인 4이거나, 또는 상기 최소값인 1이거나, 또는 상기 최대값인 5일 수 있다.
마찬가지로, 제2입력채널 콘볼루션 데이터(7512), 제3입력채널 콘볼루션 데이터(7513), 제4입력채널 콘볼루션 데이터(7514), 제5입력채널 콘볼루션 데이터(7515), 및 제6입력채널 콘볼루션 데이터(7516)에 대하여 각각, 제2레인지(rg_co1_ci2), 제3레인지(rg_co1_ci3), 제4레인지(rg_co1_ci4), 제5레인지(rg_co1_ci5), 및 제6레인지(rg_co1_ci6)를 결정할 수 있다.
위에는 제1입력채널 콘볼루션 데이터(7511)를 구성하는 6개의 엘레먼트들 중 최소값과 최대값을 기준으로 삼는 예를 제시하였으나, 상기 제1레이지를 결정하기 위하여 상기 6개의 엘레먼트들로부터 얻을 수 있는 다양한 다른 통계적 파라미터들을 이용할 수 있다.
상기 컴퓨팅 장치는, 상기 레인지들(rg_co1_ci1~ rg_co1_ci6)의 값을 기준으로 한 세트의 입력채널 콘볼루션 데이터들(7511~7516) 또는 상기 입력 액티베이션(710)을 구성하는 입력채널들(711~716)을 그룹화 할 수 있다.
예컨대 제1레인지(rg_co1_ci1), 제2레인지(rg_co1_ci2), 제3레인지(rg_co1_ci3), 및 제4레인지(rg_co1_ci4)가 각각 4, 5, 400, 및 500인 경우, 제1레인지(rg_co1_ci1)과, 제2레인지(rg_co1_ci2)를 제1그룹으로 묶고, 제3레인지(rg_co1_ci3) 및 제4레인지(rg_co1_ci4)를 제2그룹으로 묶을 수 있다. 도 9에 제시된 제1그룹(G1), 제2그룹(G2), 및 제3그룹(G3)은 이러한 과정을 통해 결정된 것일 수 있다.
도 11은 도 9a에 제시된 특정 그룹에 속하는 입력채널들을 결정하는 구체적인 방법을 나타낸 또 다른 실시예를 나타낸 것이다.
도 11은 도 10으로부터 변형된 실시예로서, 상기 통계값을 산출하는 기준으로 한 세트의 입력채널 콘볼루션 데이터들(7511~7516) 대신 도 9a에서 제시된 한 세트의 스플릿 데이터(7411~7416)를 이용한다.
예컨대 스플릿 데이터(7411~7416) 각각을 구성하는 4개의 엘레먼트들 중 최소값과 최대값을 기준으로 스플릿 데이터(7411~7416) 각각에 대한 제1레인지(rg_w_co1_ci1), 제2레인지(rg_w_co1_ci2), 제3레인지(rg_w_co1_ci3), 제4레인지(rg_w_co1_ci4), 제5레인지(rg_w_co1_ci5), 및 제6레인지(rg_w_co1_ci6)를 결정할 수 있다.
상기 컴퓨팅 장치는, 상기 레인지들(rg_w_co1_ci1~ rg_w_co1_ci6)의 값을 기준으로 한 세트의 스플릿 데이터(7411~7416) 또는 상기 입력 액티베이션(710)을 구성하는 입력채널들(711~716)을 그룹화 할 수 있다. 도 9a에 제시된 제1그룹(G1), 제2그룹(G2), 및 제3그룹(G3)은 이러한 과정을 통해 결정된 것일 수 있다.
도 10 및 도 11에 제시된 방법은 도 9b에도 적용될 수 있다.
도 12는 본 발명의 다른 실시예에 따라 제공되는 연산방법을 나타낸 것이다.
도 12는 도 9a 및 도9b에 제시한 방법을 통합하여 수행하는 방법이다.
도 12는 6개의 입력채널들(711~716)로 구성되는 입력 액티베이션(710)과 2개의 출력채널들로 구성되는 가중치 간의 콘볼루션 연산과정을 나타낸 것이다. 제1출력채널은 6개의 입력채널들(7411~7416)로 이루어져 있고, 제2출력채널은 6개의 입력채널들(7421~7426)로 이루어져 있다.
도 12에 나타낸 예에서는, 입력 액티베이션(710)을 구성하는 입력채널들을 그룹화하였다. 도 12의 예에서, 입력 액티베이션[ci]=1(711) 및 입력 액티베이션[ci]=2(712)는 제1그룹(G1)으로 분류되고, 입력 액티베이션[ci]=3(713) 및 입력 액티베이션[ci]=4(714)는 제2그룹(G2)으로 분류되고, 그리고 입력 액티베이션[ci]=5(715) 및 입력 액티베이션[ci]=6(716)은 제3그룹(G3)으로 분류된다.
특정 그룹에 속하는 입력채널들을 결정하는 구체적인 방법은 상술한 바와 같다.
도 12에 나타낸 단계(S310), 단계(315), 단계(S320), 단계(S330), 단계(S340), 및 단계(S350)은 도 9a에 나타낸 단계(S110), 단계(S115), 단계(S120), 단계(S130), 단계(S140), 및 단계(S150)에 대응한다.
단계(S310)에서, 상기 입력 액티베이션(710)을 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터(711~716)를 얻을 수 있다. 그리고 상기 가중치(740)의 출력채널들(741, 742)을 입력채널 별로 스플릿하여 한 세트의 제2스플릿 데이터(7411~7416, 7421~7426)를 얻을 수 있다. 상기 한 세트의 제2스플릿 데이터(7411~7416, 7421~7426)는 가중치의 제1출력채널에 대응하는 스플릿 데이터(7411~7416)와 가중치의 제2출력채널에 대응하는 스플릿 데이터(7421~7426)로 구성된다.
그리고 상기 한 세트의 제1스플릿 데이터(711~716)와 상기 한 세트의 제2스플릿 데이터(7411~7416, 7421~7426)를 입력채널 별로 콘볼루션하여, 한 세트의 입력채널 콘볼루션 데이터들(7501~7506)을 생성할 수 있다.
각각의 입력채널에 대응하는 상기 입력채널 콘볼루션 데이터는, 가중치의 제1출력채널에 대응하는 콘볼루션 데이터와 가중치의 제2출력채널에 대응하는 콘볼루션 데이터로 구성된다. 예컨대 제1입력채널에 대응하는 입력채널 콘볼루션 데이터(7501)는 가중치의 제1출력채널에 대응하는 콘볼루션 데이터(7511)와 가중치의 제2출력채널에 대응하는 콘볼루션 데이터(7521)로 구성된다. 여기서 콘볼루션 데이터(7511)는 스플릿 데이터(711)와 스플릿 데이터(7411) 간의 콘볼루션 연산에 의해 산출된 것이고, 콘볼루션 데이터(7521)는 스플릿 데이터(711)와 스플릿 데이터(7421) 간의 콘볼루션 연산에 의해 산출된 것이다.
x그룹(Gx)에 속한 입력 액티베이션으로부터 생성된 입력채널 콘볼루션 데이터 역시 상기 제x그룹(Gx)에 속한 것으로 간주한다.
단계(S315)에서, 특정 그룹에 속한 복수 개의 입력채널 콘볼루션 데이터들에 대하여 엘레먼트 별 덧셈 연산을 수행하여 특정 그룹의 콘볼루션 데이터를 생성한다.
예컨대 도 12에서 제1그룹(G1)에 속한 복수 개의 입력채널 콘볼루션 데이터(7501, 7502)들에 대하여 엘레먼트 별 덧셈 연산을 수행하여 제1그룹의 콘볼루션 데이터(7012)를 생성할 수 있다. 여기서 제1그룹의 콘볼루션 데이터(7012) 중 제1출력채널 데이터(7112)는 입력채널 콘볼루션 데이터(7511)와 입력채널 콘볼루션 데이터(7512) 간의 엘레먼트 별 덧셈 연산에 의해 산출된 것이다. 그리고 제1그룹의 콘볼루션 데이터(7012) 중 제2출력채널 데이터(7212)는 콘볼루션 데이터(7521)와 콘볼루션 데이터(7522) 간의 엘레먼트 별 덧셈 연산에 의해 산출된 것이다.
단계(S320)에서, 각각의 상기 그룹별 콘볼루션 데이터들(7012, 7034, 7056)을 구성하는 값들의 통계값을 기초로, 상기 각각의 그룹별 콘볼루션 데이터를 표현하는 스케일을 결정할 수 있다.
예컨대, 제1그룹의 콘볼루션 데이터(7012)를 구성하는 12개의 엘리먼트들의 값의 분포를 기초로 제1그룹의 콘볼루션 데이터(7012)의 표현을 위해 적용될 스케일 sc_co_ci1,2을 결정할 수 있다는 점은 쉽게 이해될 수 있다.
이와 같이, 제1그룹의 콘볼루션 데이터(7012), 제2그룹의 콘볼루션 데이터(7034), 및 제3그룹의 콘볼루션 데이터(7056)에 적용된 스케일은 각각 sc_co_ci1,2, sc_co_ci3,4, 및 sc_co_ci5,6으로 결정될 수 있다. 여기서 sc_co_ci1,2, sc_co_ci3,4, 및 sc_co_ci5,6은 각각 독립적으로 결정될 수 있는 값이다.
단계(S340)에서, 상기 한 세트의 콘볼루션 데이터들(7012, 7034, 7056) 중 '제1스케일(sc_co_ci1,2)'로 표현된 제1콘볼루션 데이터(7012)와 '제2스케일(sc_co_ci3,4)'로 표현된 제2콘볼루션 데이터(7034)에 대한 덧셈 연산을 수행하여 중간 데이터(750p)를 생성할 수 있다.
중간 데이터(750p) 중 제1출력채널 부분(751p)은 제1콘볼루션 데이터(7012)의 제1출력채널 부분과 제2콘볼루션 데이터(7034)의 제1출력채널 부분을 엘레멘트 별로 더하여 산출될 수 있다. 마찬가지로, 중간 데이터(750p) 중 제2출력채널 부분(752p)은 제1콘볼루션 데이터(7012)의 제2출력채널 부분과 제2콘볼루션 데이터(7034)의 제2출력채널 부분을 엘레멘트 별로 더하여 산출될 수 있다.
단계(S350)에서, 상기 한 세트의 콘볼루션 데이터들(7012, 7034, 7056) 중 '제3스케일(sc_co_ci5,6)'로 표현된 제3콘볼루션 데이터(7056)와 상기 중간 데이터(750p)에 대한 덧셈 연산을 수행하여, 상기 출력 액티베이션(750)을 산출할 수 있다.
상기 출력 액티베이션(750) 중 제1출력채널 부분(751)은 중간 데이터(750p) 중 제1출력채널 부분(751p)과 제3콘볼루션 데이터(7056)의 제1출력채널 부분을 엘레멘트 별로 더하여 산출될 수 있다. 마찬가지로, 상기 출력 액티베이션(750) 중 제2출력채널 부분(752)은 중간 데이터(750p) 중 제2출력채널 부분(752p)과 제3콘볼루션 데이터(7056)의 제2출력채널 부분을 엘레멘트 별로 더하여 산출될 수 있다
이때, 도 12는, 상기 제3스케일(sc_co_ci5,6)은 상기 제1스케일(sc_co_ci1,2)보다 작지 않고, 상기 제3스케일(sc_co_ci5,6)은 상기 제2스케일(sc_co0_ci3,4)보다 작지 않은 예를 나타낸 것이다.
바람직한 일 실시예에서, 단계(S340)는 단계(S350)보다 먼저 수행될 수 있다.
도 13은 도 12에 제시된 특정 그룹에 속하게 될 입력채널들을 결정하는 구체적인 방법을 나타낸 일 실시예를 나타낸 것이다.
도 13에서 제시된 한 세트의 입력채널 콘볼루션 데이터들(7501~7506) 각각에 대하여, 컴퓨팅 장치는, 해당 입력채널 콘볼루션 데이터를 구성하는 엘레먼트들의 통계값을 산출할 수 있다. 상기 통계값을 기초로, 입력채널 콘볼루션 데이터들(7501~7506) 각각에 대하여 각각, 레인지들(rg_co_ci1~rg_co_ci6)을 결정할 수 있다.
상기 컴퓨팅 장치는, 상기 레인지들(rg_co_ci1~rg_co_ci6)의 값을 기준으로 한 세트의 입력채널 콘볼루션 데이터들(7501~7506) 또는 상기 입력 액티베이션(710)을 구성하는 입력채널들(711~716)을 그룹화 할 수 있다. 도 12에 제시된 제1그룹(G1), 제2그룹(G2), 및 제3그룹(G3)은 이러한 과정을 통해 결정된 것일 수 있다.
도 14는 도 12에 제시된 특정 그룹에 속하는 입력채널들을 결정하는 구체적인 방법을 나타낸 또 다른 실시예를 나타낸 것이다.
도 14는 도 13으로부터 변형된 실시예로서, 상기 통계값을 산출하는 기준으로 한 세트의 입력채널 콘볼루션 데이터들(7501~7506) 대신 도 12에서 제시된 한 세트의 스플릿 데이터(7411~7416, 7421~7426)를 이용하여, 스플릿 데이터 각각에 대한 레인지들(rg_w_co_ci1~rg_w_co_ci6)을 결정할 수 있다.
상기 컴퓨팅 장치는, 상기 레인지들(rg_w_co_ci1~rg_w_co_ci6)의 값을 기준으로 한 세트의 스플릿 데이터(7411~7416, 7421~7426) 또는 상기 입력 액티베이션(710)을 구성하는 입력채널들(711~716)을 그룹화 할 수 있다. 도 12에 제시된 제1그룹(G1), 제2그룹(G2), 및 제3그룹(G3)은 이러한 과정을 통해 결정된 것일 수 있다.
도 15는 본 발명의 일 실시예에 따라 제공되는 연산방법을 나타낸 순서도이다.
이하, 도 9a, 도 12, 및 도 15를 함께 참조하여 설명한다.
단계(S410)에서, 컴퓨팅 장치가, 제1입력 데이터와 제2입력 데이터(740)를 입력채널 별로 콘볼루션하여 한 세트의 콘볼루션 데이터들을 생성할 수 있다.
단계(S420)에서, 상기 컴퓨팅 장치가, 상기 한 세트의 콘볼루션 데이터들의 각 콘볼루션 데이터를 구성하는 값들의 통계값을 기초로, 상기 각 콘볼루션 데이터를 표현하는 스케일을 결정할 수 있다.
단계(S430)에서, 상기 컴퓨팅 장치가, 상기 한 세트의 콘볼루션 데이터들 중 제1스케일로 표현된 제1콘볼루션 데이터와 제2스케일로 표현된 제2콘볼루션 데이터에 대한 덧셈 연산을 수행하여 중간 데이터를 생성할 수 있다.
단계(S440)에서, 상기 컴퓨팅 장치가, 상기 중간 데이터를 생성하는 단계 이후에, 상기 한 세트의 콘볼루션 데이터들 중 제3스케일로 표현된 제3콘볼루션 데이터와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 출력 데이터를 산출할 수 있다.
이때, 상기 제3스케일은 상기 제1스케일보다 작지 않고, 상기 제3스케일은 상기 제2스케일보다 작지 않다.
제1실시예에서, 상기 제1입력 데이터는 도 12에 제시한 입력 데이터(711~716)이고, 상기 제2입력 데이터는 도 12에 제시한 데이터(7411~7416, 7421~7426)이고, 상기 한 세트의 콘볼루션 데이터들은 도 12에 제시한 데이터(7012, 7034, 7056)일 수 있다. 그리고 상기 각 콘볼루션 데이터를 표현하는 스케일은 도 12에 제시되어 있는 스케일(sc_co_ci1,2, sc_co_ci3,4, 및 sc_co_ci5,6)일 수 있다. 그리고 상기 제1콘볼루션 데이터, 상기 제2콘볼루션 데이터, 및 상기 중간 데이터는 각각 도 12에 제시되어 있는 데이터(7012, 7034, 및 750p)일 수 있다. 그리고 상기 제3콘볼루션 데이터 및 상기 출력 데이터는 각각 도 12에 제시되어 있는 데이터(7056, 750)일 수 있다.
제2실시예에서, 상기 제1입력 데이터는 도 9a에 제시한 입력 데이터(711~716)이고, 상기 제2입력 데이터는 도 9a에 제시한 데이터(7411~7416)이고, 상기 한 세트의 콘볼루션 데이터들은 도 9a에 제시한 데이터(7112, 7134, 7156)일 수 있다. 그리고 상기 각 콘볼루션 데이터를 표현하는 스케일은 도 9a에 제시되어 있는 스케일(sc_co1_ci1,2, sc_co1_ci3,4, 및 sc_c1o_ci5,6)일 수 있다. 그리고 상기 제1콘볼루션 데이터, 상기 제2콘볼루션 데이터, 및 상기 중간 데이터는 각각 도 7a에 제시되어 있는 데이터(7112, 7134, 및 751p)일 수 있다. 그리고 상기 제3콘볼루션 데이터 및 상기 출력 데이터는 각각 도 9a에 제시되어 있는 데이터(7156, 751)일 수 있다.
제3실시예에서, 상기 제1입력 데이터는 도 7a에 제시한 입력 데이터(711~713)이고, 상기 제2입력 데이터는 도 7a에 제시한 데이터(7411~7413)이고, 상기 한 세트의 콘볼루션 데이터들은 도 7a에 제시한 데이터(7511~7513)일 수 있다. 그리고 상기 각 콘볼루션 데이터를 표현하는 스케일은 도 7a에 제시되어 있는 스케일(sc_co1_ci1~sc_co1_ci3)일 수 있다. 그리고 상기 제1콘볼루션 데이터, 상기 제2콘볼루션 데이터, 및 상기 중간 데이터는 각각 도 7a에 제시되어 있는 데이터(7511, 7512 및 751p)일 수 있다. 그리고 상기 제3콘볼루션 데이터 및 상기 출력 데이터는 각각 도 7a에 제시되어 있는 데이터(7513, 751)일 수 있다.
이때, 상기 단계(S410)는, 상기 제1입력 데이터를 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터와 상기 제2입력 데이터의 한 세트의 출력채널을 입력채널 별로 스플릿하여 얻은 한 세트의 제2스플릿 데이터를, 입력채널 별로 콘볼루션하여 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계(S411); 및 상기 출력 데이터를 산출하는 단계는, 상기 제3콘볼루션 데이터와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터를 산출하는 단계(S412)를 포함할 수 있다.
상기 제1실시예에서, 상기 한 세트의 제1스플릿 데이터, 상기 한 세트의 제2스플릿 데이터, 및 상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터는 각각 도 12에 제시한 데이터(711~716), 데이터(7411~7416, 7421~7426), 및 데이터(750)일 수 있다.
상기 제2실시예에서, 상기 한 세트의 제1스플릿 데이터, 상기 한 세트의 제2스플릿 데이터, 및 상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터는 각각 도 9a에 제시한 데이터(711~716), 데이터(7411~7416), 및 데이터(751)일 수 있다.
상기 제3실시예에서, 상기 한 세트의 제1스플릿 데이터, 상기 한 세트의 제2스플릿 데이터, 및 상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터는 각각 도 7a에 제시한 데이터(711~713), 데이터(7411~7413), 및 데이터(751)일 수 있다.
이때, 상기 한 세트의 출력채널은 상기 제2입력 데이터를 구성하는 복수 개의 출력채널 중 어느 하나의 특정 출력채널이며, 상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터는 상기 특정 출력채널에 대응하는 출력 데이터일 수 있다.
또는, 상기 단계(S410)는, 상기 한 세트의 제1스플릿 데이터와 상기 한 세트의 제2스플릿 데이터를 입력채널 별로 콘볼루션하여, 각 입력채널에 대응하는 입력채널 콘볼루션 데이터들로 이루어진 한 세트의 입력채널 콘볼루션 데이터들을 생성하는 단계(S413); 및 상기 한 세트의 입력채널 콘볼루션 데이터들을 그룹화하여 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계(S414)를 포함할 수 있다.
상기 제1실시예에서, 상기 한 세트의 입력채널 콘볼루션 데이터는 도 12에 제시한 데이터(7501~7506)일 수 있다.
상기 제2실시예에서, 상기 한 세트의 입력채널 콘볼루션 데이터는 도 9a에 제시한 데이터(7511~7516)일 수 있다.
이때, 상기 각각의 콘볼루션 데이터는, 상기 한 세트의 입력채널 콘볼루션 데이터들 중 한 개의 입력채널 콘볼루션 데이터와 동일한 것이거나, 또는 상기 한 세트의 입력채널 콘볼루션 데이터들 중 두 개 이상의 입력채널 콘볼루션 데이터들에 대한 엘레먼트 별 덧셈 연산을 수행하여 산출한 것일 수 있다.
이때, 상기 그룹을 결정하기 위하여, 상기 컴퓨팅 장치가, 상기 각각의 제2스플릿 데이터를 구성하는 엘레먼트들의 값들의 레인지를 산출하여 한 세트의 레인지(rg_w_co_ci1~rg_w_co_ci6)를 결정하는 단계; 및 상기 컴퓨팅 장치가, 상기 한 세트의 레인지를 기준으로 상기 한 세트의 입력채널 콘볼루션 데이터들을 그룹화하는 단계를 실행할 수 있다. 이때, 상기 한 세트의 레인지는 도 11에 제시한 레인지(rg_w_co1_ci1 ~ rg_w_co1_ci6) 또는 도 14에 제시한 레인지(rg_w_co_ci1 ~ rg_w_co_ci6)일 수 있다.
또는, 상기 그룹을 결정하기 위하여, 상기 컴퓨팅 장치가, 상기 각각의 입력채널 콘볼루션 데이터를 구성하는 엘레먼트들의 값들의 레인지를 산출하여 한 세트의 레인지(rg_co_ci1~rg_co_ci6)를 결정하는 단계; 및 상기 컴퓨팅 장치가, 상기 한 세트의 레인지를 기준으로 상기 한 세트의 입력채널 콘볼루션 데이터들을 그룹화하는 단계를 더 실행할 수 있다. 이때, 상기 한 세트의 레인지는 도 10에 제시한 레인지(rg_co1_ci1 ~ rg_co1_ci6) 또는 도 13에 제시한 레인지(rg_co_ci1 ~ rg_co_ci6)일 수 있다.
이때, 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계는, 상기 한 세트의 제1스플릿 데이터와 상기 한 세트의 제2스플릿 데이터를 입력채널 별로 콘볼루션하여, 각 입력채널에 대응하는 입력채널 콘볼루션 데이터들로 이루어진 한 세트의 입력채널 콘볼루션 데이터들을 생성하는 단계를 포함할 수 있다. 그리고 상기 각각의 콘볼루션 데이터는, 상기 한 세트의 입력채널 콘볼루션 데이터들 중 한 개의 입력채널 콘볼루션 데이터와 동일한 것일 수 있다.
이때, 상기 컴퓨팅 장치는, 상기 제2입력 데이터에 포함된 모든 출력채널에 대하여, 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계, 상기 결정하는 단계, 상기 중간 데이터를 생성하는 단계, 및 상기 산출하는 단계를 실행하도록 되어 있고, 상기 컴퓨팅 장치는, 상기 제2입력 데이터에 포함된 각각의 출력채널에 대하여 생성된 채널별 출력 데이터들을 결합하여 상기 모든 출력채널을 포함하는 출력 데이터를 생성하도록 되어 있을 수 있다.
이때, 상기 제1입력 데이터는 입력 액티베이션이고, 상기 제2입력 데이터는 가중치이며, 상기 출력 데이터는 출력 액티베이션이고, 상기 가중치의 디멘젼은 상기 입력 액티베이션의 디멘젼보다 클 수 있다.
이때, 상기 입력 액티베이션은 복수 개의 제1입력채널 데이터를 포함하며, 상기 각각의 제1입력채널 데이터는 2차원 어레이이며, 상기 가중치는 복수 개의 출력채널 데이터를 포함하며, 상기 각각의 출력채널 데이터는 복수 개의 제2입력채널 데이터를 포함하며, 상기 각각의 제2입력채널 데이터는 2차원 어레이일 수 있다.
상술한 본 발명의 실시예들을 이용하여, 본 발명의 기술 분야에 속하는 자들은 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에 다양한 변경 및 수정을 용이하게 실시할 수 있을 것이다. 특허청구범위의 각 청구항의 내용은 본 명세서를 통해 이해할 수 있는 범위 내에서 인용관계가 없는 다른 청구항에 결합될 수 있다.

Claims (13)

  1. 컴퓨팅 장치가, 제1입력 데이터와 제2입력 데이터를 입력채널 별로 콘볼루션하여 한 세트의 콘볼루션 데이터들을 생성하는 단계;
    상기 컴퓨팅 장치가, 상기 한 세트의 콘볼루션 데이터들의 각 콘볼루션 데이터를 구성하는 값들의 통계값을 기초로, 상기 각 콘볼루션 데이터를 표현하는 스케일을 결정하는 단계;
    상기 컴퓨팅 장치가, 상기 한 세트의 콘볼루션 데이터들 중 제1스케일로 표현된 제1콘볼루션 데이터와 제2스케일로 표현된 제2콘볼루션 데이터에 대한 덧셈 연산을 수행하여 중간 데이터를 생성하는 단계; 및
    상기 컴퓨팅 장치가, 상기 중간 데이터를 생성하는 단계 이후에, 상기 한 세트의 콘볼루션 데이터들 중 제3스케일로 표현된 제3콘볼루션 데이터와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 출력 데이터를 산출하는 단계;
    를 포함하며,
    상기 제3스케일은 상기 제1스케일보다 작지 않고, 상기 제3스케일은 상기 제2스케일보다 작지 않으며,
    상기 제3스케일은 상기 제1스케일과 상기 제2스케일 중 적어도 어느 하나보다 큰,
    연산방법.
  2. 제1항에 있어서,
    상기 한 세트의 콘볼루션 데이터를 생성하는 단계는,
    상기 제1입력 데이터를 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터와 상기 제2입력 데이터의 한 세트의 출력채널을 입력채널 별로 스플릿하여 얻은 한 세트의 제2스플릿 데이터를, 입력채널 별로 콘볼루션하여 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계; 및
    상기 출력 데이터를 산출하는 단계는, 상기 제3콘볼루션 데이터와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터를 산출하는 단계;
    를 포함하는,
    연산방법.
  3. 제2항에 있어서,
    상기 한 세트의 출력채널은 상기 제2입력 데이터를 구성하는 복수 개의 출력채널 중 어느 하나의 특정 출력채널이며,
    상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터는 상기 특정 출력채널에 대응하는 출력 데이터인,
    연산방법.
  4. 제2항에 있어서,
    입력채널 별로 콘볼루션하여 한 세트의 콘볼루션 데이터들을 생성하는 단계는,
    상기 한 세트의 제1스플릿 데이터와 상기 한 세트의 제2스플릿 데이터를 입력채널 별로 콘볼루션하여, 각 입력채널에 대응하는 입력채널 콘볼루션 데이터들로 이루어진 한 세트의 입력채널 콘볼루션 데이터들을 생성하는 단계; 및
    상기 한 세트의 입력채널 콘볼루션 데이터들을 그룹화하여 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계;
    를 포함하는,
    연산방법.
  5. 제4항에 있어서, 상기 각각의 콘볼루션 데이터는, 상기 한 세트의 입력채널 콘볼루션 데이터들 중 한 개의 입력채널 콘볼루션 데이터와 동일한 것이거나, 또는 상기 한 세트의 입력채널 콘볼루션 데이터들 중 두 개 이상의 입력채널 콘볼루션 데이터들에 대한 엘레먼트별 덧셈 연산을 수행하여 산출한 것인, 연산방법.
  6. 제4항에 있어서,
    상기 그룹을 결정하기 위하여,
    상기 컴퓨팅 장치가, 상기 각각의 제2스플릿 데이터를 구성하는 엘레먼트들의 값들의 레인지를 산출하여 한 세트의 레인지를 결정하는 단계; 및
    상기 컴퓨팅 장치가, 상기 한 세트의 레인지를 기준으로 상기 한 세트의 입력채널 콘볼루션 데이터들을 그룹화하는 단계;
    를 더 포함하는,
    연산방법.
  7. 제4항에 있어서,
    상기 그룹을 결정하기 위하여,
    상기 컴퓨팅 장치가, 상기 각각의 입력채널 콘볼루션 데이터를 구성하는 엘레먼트들의 값들의 레인지를 산출하여 한 세트의 레인지를 결정하는 단계; 및
    상기 컴퓨팅 장치가, 상기 한 세트의 레인지를 기준으로 상기 한 세트의 입력채널 콘볼루션 데이터들을 그룹화하는 단계;
    를 더 포함하는,
    연산방법.
  8. 제1항에 있어서,
    상기 한 세트의 콘볼루션 데이터들을 생성하는 단계는, 상기 한 세트의 제1스플릿 데이터와 상기 한 세트의 제2스플릿 데이터를 입력채널 별로 콘볼루션하여, 각 입력채널에 대응하는 입력채널 콘볼루션 데이터들로 이루어진 한 세트의 입력채널 콘볼루션 데이터들을 생성하는 단계;를 포함하며,
    상기 각각의 콘볼루션 데이터는, 상기 한 세트의 입력채널 콘볼루션 데이터들 중 한 개의 입력채널 콘볼루션 데이터와 동일한 것인,
    연산방법.
  9. 제8항에 있어서,
    상기 컴퓨팅 장치는, 상기 제2입력 데이터에 포함된 모든 출력채널에 대하여, 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계, 상기 결정하는 단계, 상기 중간 데이터를 생성하는 단계, 및 상기 산출하는 단계를 실행하도록 되어 있고,
    상기 컴퓨팅 장치는, 상기 제2입력 데이터에 포함된 각각의 출력채널에 대하여 생성된 채널별 출력 데이터들을 결합하여 상기 모든 출력채널을 포함하는 출력 데이터를 생성하도록 되어 있는,
    연산방법.
  10. 제1항에 있어서,
    상기 제1입력 데이터는 입력 액티베이션이고,
    상기 제2입력 데이터는 가중치이며,
    상기 출력 데이터는 출력 액티베이션이고,
    상기 가중치의 디멘젼은 상기 입력 액티베이션의 디멘젼보다 큰,
    연산방법.
  11. 제10항에 있어서,
    상기 입력 액티베이션은 복수 개의 제1입력채널 데이터를 포함하며, 상기 각각의 제1입력채널 데이터는 2차원 어레이이며,
    상기 가중치는 복수 개의 출력채널 데이터를 포함하며, 상기 각각의 출력채널 데이터는 복수 개의 제2입력채널 데이터를 포함하며, 상기 각각의 제2입력채널 데이터는 2차원 어레이인,
    연산방법.
  12. 하드웨어 가속기를 갖는 컴퓨팅 장치로서,
    상기 하드웨어 가속기가,
    제1입력 데이터 및 제2입력데이터를 획득하도록 되어 있고,
    상기 제1입력 데이터와 상기 제2입력 데이터를 입력채널 별로 콘볼루션하여 한 세트의 콘볼루션 데이터들을 생성하도록 되어 있고,
    상기 한 세트의 콘볼루션 데이터들의 각 콘볼루션 데이터를 구성하는 값들의 통계값을 기초로, 상기 각 콘볼루션 데이터를 표현하는 스케일을 결정하도록 되어 있고,
    상기 한 세트의 콘볼루션 데이터들 중 제1스케일로 표현된 제1콘볼루션 데이터와 제2스케일로 표현된 제2콘볼루션 데이터에 대한 덧셈 연산을 수행하여 중간 데이터를 생성하도록 되어 있고, 그리고
    상기 중간 데이터를 생성하는 단계 이후에, 상기 한 세트의 콘볼루션 데이터들 중 제3스케일로 표현된 제3콘볼루션 데이터와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 출력 데이터를 산출하도록 되어 있으며,
    상기 제3스케일은 상기 제1스케일보다 작지 않고, 상기 제3스케일은 상기 제2스케일보다 작지 않고,
    상기 제3스케일은 상기 제1스케일과 상기 제2스케일 중 적어도 어느 하나보다 큰,
    컴퓨팅 장치.
  13. 제12항에 있어서,
    상기 한 세트의 콘볼루션 데이터를 생성하는 단계는, 상기 제1입력 데이터를 입력채널 별로 스플릿하여 얻은 한 세트의 제1스플릿 데이터와 상기 제2입력 데이터의 한 세트의 출력채널을 입력채널 별로 스플릿하여 얻은 한 세트의 제2스플릿 데이터를, 입력채널 별로 콘볼루션하여 상기 한 세트의 콘볼루션 데이터들을 생성하는 단계; 및 상기 출력 데이터를 산출하는 단계는, 상기 제3콘볼루션 데이터와 상기 중간 데이터에 대한 덧셈 연산을 수행하여, 상기 제2입력 데이터의 상기 한 세트의 출력채널에 대응하는 출력 데이터를 산출하는 단계;를 더 포함하며,
    상기 하드웨어 가속기는 내부 메모리를 포함하며,
    상기 내부메모리의 크기는 상기 제2입력 데이터 전체의 데이터 크기보다 작고, 상기 제2입력 데이터의 한 세트의 출력채널을 입력채널 별로 스플릿하여 얻은 스플릿 데이터의 크기보다 큰,
    컴퓨팅 장치.
KR1020210124097A 2021-09-16 2021-09-16 데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치 KR102395744B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210124097A KR102395744B1 (ko) 2021-09-16 2021-09-16 데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치
PCT/KR2022/006216 WO2023042989A1 (ko) 2021-09-16 2022-04-29 데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210124097A KR102395744B1 (ko) 2021-09-16 2021-09-16 데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치

Publications (1)

Publication Number Publication Date
KR102395744B1 true KR102395744B1 (ko) 2022-05-09

Family

ID=81582619

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210124097A KR102395744B1 (ko) 2021-09-16 2021-09-16 데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치

Country Status (2)

Country Link
KR (1) KR102395744B1 (ko)
WO (1) WO2023042989A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024014631A1 (ko) * 2022-07-12 2024-01-18 오픈엣지테크놀로지 주식회사 데이터 스케일을 고려한 콘볼루션 데이터의 양자화 방법, 이를 위한 하드웨어 가속기, 및 이를 이용한 컴퓨팅 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010052899A (ko) * 1998-06-15 2001-06-25 테크니셰 유니베르시테트 드레스덴 데이터 연산 처리 장치
KR20190051697A (ko) * 2017-11-07 2019-05-15 삼성전자주식회사 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법
KR20200000480A (ko) * 2017-04-19 2020-01-02 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 처리 장치 및 처리 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102042446B1 (ko) * 2018-04-10 2019-11-08 한국항공대학교산학협력단 컨벌루션 신경망의 첫번째 레이어의 개선된 이진화 장치 및 방법
CN113222101A (zh) * 2020-02-05 2021-08-06 北京百度网讯科技有限公司 深度学习处理装置、方法、设备和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010052899A (ko) * 1998-06-15 2001-06-25 테크니셰 유니베르시테트 드레스덴 데이터 연산 처리 장치
KR20200000480A (ko) * 2017-04-19 2020-01-02 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 처리 장치 및 처리 방법
KR20190051697A (ko) * 2017-11-07 2019-05-15 삼성전자주식회사 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024014631A1 (ko) * 2022-07-12 2024-01-18 오픈엣지테크놀로지 주식회사 데이터 스케일을 고려한 콘볼루션 데이터의 양자화 방법, 이를 위한 하드웨어 가속기, 및 이를 이용한 컴퓨팅 장치

Also Published As

Publication number Publication date
WO2023042989A1 (ko) 2023-03-23

Similar Documents

Publication Publication Date Title
US20190266217A1 (en) Apparatus and method for matrix computation
CN113168310B (zh) 用于转换数字的硬件模块
JP6744375B2 (ja) ニューラルネットワークにおけるランダム性の生成
KR102395744B1 (ko) 데이터 스케일을 고려한 덧셈 연산 방법 및 이를 위한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치
CN111563599A (zh) 一种量子线路的分解方法、装置、存储介质及电子装置
GB2580153A (en) Converting floating point numbers to reduce the precision
JP2512263B2 (ja) 畳込みエキスパ―ト神経システム
CN115186802A (zh) 基于卷积神经网络的块稀疏方法、装置及处理单元
KR20190089685A (ko) 데이터를 처리하는 방법 및 장치
CN107909537A (zh) 一种基于卷积神经网络的图像处理方法及移动终端
WO2019182059A1 (ja) モデル生成装置、モデル生成方法及びプログラム
CN114267391A (zh) 机器学习硬件加速器
JP7129857B2 (ja) 積和演算装置、積和演算方法、及びシステム
CN107636610B (zh) 用于数据分配的方法和处理装置以及机器可读介质
JP2020080048A (ja) 並列処理装置およびプログラム
JP2020166674A (ja) 情報処理装置、情報処理方法、情報処理プログラム
KR20200072308A (ko) 뉴럴 네트워크에서 컨볼루션 연산을 수행하는 방법 및 장치
KR20230099190A (ko) 다차원 텐서의 주소 생성 장치 및 방법
KR102418794B1 (ko) 하드웨어 가속기를 위한 파라미터를 메모리로부터 액세스하는 방법 및 이를 이용한 장치
KR102361249B1 (ko) 브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치
JP2021140493A (ja) 情報処理装置、情報処理方法およびプログラム
KR20240008747A (ko) 데이터 스케일을 고려한 콘볼루션 데이터의 양자화 방법, 이를 위한 하드웨어 가속기, 및 이를 이용한 컴퓨팅 장치
KR102698148B1 (ko) 신경망 및 액티베이션의 파티션 및 시뮬레이션 방법 및 이를 위한 컴퓨팅 장치
KR102553941B1 (ko) 팝카운트 기반 딥러닝 신경망 연산 방법, 곱셈 누산기 및 장치
KR102339896B1 (ko) 프로세싱 엘리먼트, 이의 동작 방법, 및 이를 포함하는 가속기

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant