KR102361249B1 - 브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치 - Google Patents

브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치 Download PDF

Info

Publication number
KR102361249B1
KR102361249B1 KR1020210101305A KR20210101305A KR102361249B1 KR 102361249 B1 KR102361249 B1 KR 102361249B1 KR 1020210101305 A KR1020210101305 A KR 1020210101305A KR 20210101305 A KR20210101305 A KR 20210101305A KR 102361249 B1 KR102361249 B1 KR 102361249B1
Authority
KR
South Korea
Prior art keywords
dimension
tensor
activation
computing device
smaller
Prior art date
Application number
KR1020210101305A
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 KR1020210101305A priority Critical patent/KR102361249B1/ko
Priority to PCT/KR2021/014772 priority patent/WO2023013817A1/ko
Application granted granted Critical
Publication of KR102361249B1 publication Critical patent/KR102361249B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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

Landscapes

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

Abstract

웨이트 및 입력 액티베이션 중 데이터 크기가 더 작은 하나 및 크기가 더 큰 다른 하나를 결정하는 단계, 상기 더 작은 하나와 제1텐서 간의 브로드캐스트 곱셈연산을 수행하여 생성한 중간 액티베이션을 준비하는 단계, 및 상기 중간 액티베이션과 상기 다른 하나 간의 콘볼루션 연산을 수행하여 출력 액티베이션을 생성하는 단계를 포함하는 연산방법을 공개한다.

Description

브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치{Method for optimizing broadcast multiply and a hardware accelerator and computing device using the same}
본 발명은 컴퓨팅 장치에서 연산을 수행하는 방법에 관한 것이며, 특히 인공지능을 구현하는 연산을 수행하는 방법을 포함한다.
인공지능을 구현하기 위한 신경망 기술은 입력 데이터를 여러 단계의 연산들을 통해 다른 데이터로 변환하는 과정을 포함한다.
도 1은 입력 액티베이션(activation)(710)이라고 지칭되는 입력데이터와 미리 주어진 텐서(720) 간에 브로드캐스트 곱셈연산(610)이 수행되고, 그 후에 상기 연산의 결과인 중간 액티베이션(730)과 미리 주어진 웨이트(740) 간의 콘볼루션 연산(620)이 수행되어, 그 결과 출력 액티베이션(750)이라고 지칭되는 출력데이터를 생성하는 연산 과정을 나타낸 것이다. 이러한 연산과정은 신경망 연산을 수행하는 데에 사용될 수 있다.
도 1에서, 입력 액티베이션(710)은 입력채널, 높이, 폭 방향으로 각각 ci, h, w의 크기를 갖는 데이터이다. 텐서(720)는 입력채널, 높이, 폭 방향으로 각각 ci, 1, 1의 크기를 갖는 데이터이다. 중간 액티베이션(730)은 입력채널, 높이, 폭 방향으로 각각 ci, h, w의 크기를 갖는 데이터이다. 웨이트(740)는 출력채널, 입력채널, 높이, 및 폭 방향으로 각각 co, ci, r, s의 크기를 갖는 데이터이다. 출력 액티베이션(750)은 출력채널, 높이, 폭 방향으로 각각 co, ho, wo의 크기를 갖는 데이터이다.
본 명세서에서 상기 입력채널, 상기 출력채널, 상기 높이, 및 상기 폭은 각각 도면 상에서 서로 다른 방향을 향하는 축으로 구분될 수 있다. 본 명세서에서 웨이트(740)의 높이 및 폭 방향의 크기를 각각 r 및 s로 표현하는데, 이는 예컨대 입력 액티베이션(710) 높이 및 폭 방향을 나타내는 h 및 w에 대응하는 개념이다. r과 s의 값은 각각 h 및 w의 값과 관계없이 독립적으로 설정될 수 있다.
본 명세서에서 상기 웨이트는 커널이라는 용어로 대체될 수 있다.
도 2은 도 1의 연산과정이 실행될 수 있는 일 실시예인 CNN의 연산구조를 나타낸 것이다. 이하 도 2을 참조하여 설명한다.
우선, CNN에서는 입력 이미지 데이터(51)에 복수 개의 커널(=웨이트)들을 이용한 콘볼루션 연산을 수행하여 콘볼루션 레이어들(52)을 생성할 수 있다. 콘볼루션 레이어들(52)을 생성하는 단계는 상기 콘볼루션 연산을 수행한 결과 얻은 복수 개의 피쳐 맵들에 대하여 비선형 연산(ex: ReLU, Sigmoid, 또는, tanH)을 수행하는 단계를 포함할 수 있다. 그 다음 콘볼루션 레이어들(52)에 대한 풀링을 수행하여 풀링 레이어들(53)을 생성할 수 있다. 그 다음, 상기 풀링 레이어들(53)에 대한 플래트닝(flattening)을 수행하여 신경망(54)에 입력할 어레이를 생성할 수 있다. 그 다음, 상기 어레이를 상기 신경망(54)에 입력하여 상기 신경망(54)으로부터 출력을 생성할 수 있다.
도 1에 나타낸 연산과정은 예컨대 상기 입력 이미지 데이터(51)로부터 상기 콘볼루션 레이어들(52)을 생성하는 과정에서 사용될 수 있다. 그러나 도 1에 나타낸 연산과정의 용도가 이에 한정되는 것은 아니다.
본 발명에서는 브로드캐스팅 멀티플라이와 콘볼루션을 포함하는 연산과정에 의한 결과를 얻기 위한 컴퓨팅 파워를 줄이는 기술을 제공하고자 한다.
도 3은 주어진 텐서를 브로드캐스트하여 브로드캐스트된(broadcasted) '브로드캐스트 텐서'(broadcast tensor)를 생성하는 개념을 설명하기 위한 것이다.
도 3의 (a)에 나타낸 바와 같이, '1', '2', 및 '3'이라는 값을 갖는 3개의 요소를 포함하는 어레이 {1, 2, 3}가 제공될 수 있다. 상기 어레이는 1차원 어레이로 표현될 수도 있지만, 채널(c), 높이(h), 및 폭(w)이라는 3개의 디멘젼으로 구분되는 3차원 텐서(이하 간단히 '제1텐서')로 표현될 수도 있다. 이때, 상기 제1텐서의 높이(h) 및 폭(w)은 각각 1의 값을 갖고, 상기 채널(c)은 상기 어레이의 요소들의 개수와 동일한 값을 갖는 것으로 정의될 수 있다. 즉, 상기 어레이는 3*1*1 (c*h*w)의 크기를 갖는 텐서로 표현될 수 있다.
도 3의 (b)는 도 3의 (a)에 나타낸 상기 제1텐서를 표현한 이미지를 채널(c) 방향을 잡아당겨(stretch) 표현한 것이다.
도 3의 (c)는 도 3의 (a)에 나타낸 제1텐서를 높이(h) 방향과 폭(w) 방향으로 브로드캐스트(611)하여 생성한 브로드캐스트 텐서를 나타낸 것이다. 상기 브로드캐스트 텐서의 채널(c) 방향 크기는 상기 제1텐서의 채널(c) 방향 크기와 동일하도록 설정(set)된다. 도 3의 예에서 c=3이다. 그리고 상기 브로드캐스트 텐서의 높이(h) 방향과 폭(w) 방향의 크기는 상기 제1텐서의 높이(h) 방향과 폭(w) 방향보다 큰 값을 갖도록 설정(set)될 수 있다. 즉, 도 3의 예에서 상기 제1텐서의 높이(h) 방향과 폭(w) 방향의 값은 각각 1, 및 1인데, 상기 브로드캐스트 텐서의 높이(h) 방향과 폭(w) 방향의 값은 각각 2, 및 4이다. 상기 브로드캐스트 텐서의 높이(h) 방향과 폭(w) 방향의 크기는 다양한 방식에 의해 결정될 수 있다.
이때, 상기 브로드캐스트 텐서 중 제1채널(c=c1)에 포함된 모든 요소들의 값은 모두 상기 제1텐서 중 제1채널(c=c1)에 포함된 유일한 요소(the only element)의 값과 동일하도록 되어 있다. 즉, 상기 제1텐서 중 제1채널(c=c1)에 포함된 유일한 요소의 값은 상기 브로드캐스트 텐서 중 제1채널(c=c1)에 포함된 요소들에 브로드캐스트 되어 있다.
도 3의 (d)는 도 3의 (c)에 나타낸 상기 브로드캐스트 텐서를 표현한 이미지를 채널(c) 방향을 수축시켜(shrink) 표현한 것이다.
도 4는 본 발명에서 다루는 요소별 곱셈연산(element-wise multiplication)의 개념을 설명하기 위한 것이다.
도 4에서 문자 'M'을 둘러싼 원(612)은 상기 요소별 곱셈연산을 지칭한다.
상기 요소별 곱셈연산은 서로 동일한 디멘젼을 갖는 두 개의 텐서들 간에 이루어질 수 있다.
제1텐서(a first tensor)와 제2텐서는 각각 c*h*w의 디멘젼을 가지고 있을 수 있다.
상기 제1텐서와 제2텐서를 서로 요소별 곱셈연산하면 c*h*w의 디멘젼을 가는 제3텐서를 얻을 수 있다.
이때, 상기 제3텐서의 요소[cp, hq, wr]의 값은 상기 제1텐서의 요소[cp, hq, wr]의 값에 상기 제2텐서의 요소[cp, hq, wr]의 값을 곱한 값이다(p, q, r은 인덱스 넘버).
상기 요소별 곱셈연산은 기본적으로 상술한 특징을 갖는다.
도 4에 예시된 상기 제1텐서와 제2텐서는 각각 2*2*2 (c*h*w)의 디멘젼을 갖는다. 예컨대 도 4에 예시된 제1센터의 요소[1, 2, 1]의 값인 '3'에 제2센터의 요소[1, 2, 1]의 값인 '7'을 곱하면, 제3센터의 요소[1, 2, 1]의 값인 '21'이 산출된다.
도 5a는 도 3에서 설명한 브로드캐스트 및 도 4에서 설명한 요소별 곱셈연산의 개념을 이용하여 도 1에 제시한 브로드캐스트 곱셈연산을 이해하기 쉽게 재구성한 것이다.
도 1과 도 5a는 동일한 연산 프로세스를 서로 다른 방식으로 표현한 것이다.
도 1 및 도 5a에 제시한 브로드캐스트 곱셈연산(610)은 브로드캐스트 연산부(611) 및 요소별 곱셈연산(612)을 포함한다.
상기 브로드캐스트 연산부(611)은, [ci, 1, 1]의 디멘젼을 갖는 제1텐서(720)를 입력받아, 상기 제1텐서(720)로부터 [ci, h, w]의 디멘젼을 갖는 브로드캐스트 텐서(721)를 생성한다. 여기서 제1텐서(720)의 입력채널 디멘젼의 값 ci는 입력 액티베이션(710)의 입력채널 디멘젼의 값 ci와 동일하다. ci, h, w는 각각 자연수이다.
여기서 브로드캐스트 텐서(721)의 높이 방향의 크기(h)와 폭 방향의 크기(w)는 각각 입력 액티베이션(710)의 높이 방향의 크기(h)와 폭 방향의 크기(w)와 동일하게 설정된다. 따라서, 입력 액티베이션(710)의 높이 방향의 크기(h)와 폭 방향의 크기(w)은 도 5a에 제시된 알고리즘을 수행하는 컴퓨팅 장치가 미리 알고 있을 필요가 있다.
브로드캐스트 연산부(611)에 의해 브로드캐스트 텐서(721)의 디멘젼은 입력 액티베이션(710)의 디멘젼과 동일하게 되도록 조정된다. 따라서 브로드캐스트 텐서(721)와 입력 액티베이션(710) 간의 요소별 곱셈연산이 수행될 수 있다.
그 다음, 브로드캐스트 텐서(721)와 입력 액티베이션(710) 간에 상술한 요소별 곱셈연산(612)이 수행된다. 그 결과 요소별 곱셈연산(612)은 [ci, h, w]의 디멘젼을 갖는 중간 액티베이션(730)을 출력한다.
그 다음, 출력된 상기 중간 액티베이션(730)과 웨이트(740) 간의 콘볼루션 연산이 수행되어, 출력 액티베이션(750)이 생성된다. 웨이트(740)는 출력채널, 입력채널, 높이, 및 폭 디멘젼으로 각각 co, ci, r, 및 s의 크기를 갖는 4차원 데이터이다.
출력 액티베이션(750)의 크기는 콘볼루션 규칙의 구체적인 정의에 따라 달라질 수 있으며, 도 5a에서는 그 크기가 [co, ho, wo]인 것으로 나타내었다.
도 5b는 도 5a로부터 변형된 연산방법으로서 도 5a와 동일한 출력 액티베이션(750)을 얻을 수 있는 또 다른 연산방법을 나타낸다.
우선, 컴퓨팅 장치는 제1텐서(720) 및 웨이트(740)를 준비할 수 있다.
제1텐서(720)의 출력채널 디멘젼의 값 co=1이며, 입력채널 디멘젼의 값 ci는 입력 액티베이션(710)의 입력채널 디멘젼의 값 ci와 동일하고, 높이와 폭 방향의 디멘젼의 값은 각각 1 및 1이다.
웨이트(740)의 출력채널 디멘젼의 값은 co이며, 입력채널 디멘젼의 값 ci는 입력 액티베이션(710)의 입력채널 디멘젼의 값 ci와 동일하고, 높이와 폭 방향의 디멘젼의 값은 각각 r 및 s이다.
브로드캐스트 연산부(611)는 제1텐서(720)를 입력받아, 상기 제1텐서(720)로부터 [co, ci, r, s]의 디멘젼을 갖는 브로드캐스트 텐서(721)를 생성한다. 여기서 브로드캐스트 텐서(721)의 출력채널 디멘젼의 값인 co, 높이 디멘젼의 값인 r, 및 폭 디멘젼의 값인 s는 각각, 미리 준비되어 있는 웨이트(740)의 출력채널 디멘젼의 값 co, 높이 디멘젼의 값인 r, 및 폭 디멘젼의 값인 s와 동일하게 설정된다.
브로드캐스트 연산부(611)에 의해 브로드캐스트 텐서(721)의 디메젼은 웨이트(740)의 디멘젼과 동일한 값으로 조정된다. 따라서 브로드캐스트 텐서(721)와 웨이트(740) 간의 요소별 곱셈연산이 수행될 수 있다.
그 다음, 요소별 곱셈연산부(612)에 의해, 브로드캐스트 텐서(721)와 웨이트(740) 간에 상술한 요소별 곱셈연산이 수행된다. 그 결과 요소별 곱셈연산부(612)는 [co, ci, r, s]의 디멘젼을 갖는 중간 액티베이션(730)을 출력한다.
그 다음, 콘볼루션 연산부(620)에 의해, 상기 출력된 상기 중간 액티베이션(730)과 입력 액티베이션(710) 간의 콘볼루션 연산이 수행되어, 출력 액티베이션(750)이 생성된다.
출력 액티베이션(750)의 크기는 콘볼루션 규칙의 구체적인 정의에 따라 달라질 수 있으며, 도 5b에서는 그 크기가 [co, ho, wo]인 것으로 나타내었다.
도 5a, 및 도 5b의 방법에서 각각 산출된 출력 액티베이션(750)들은 서로 동일한 값을 갖는다. 이는 일종의 스칼라 연산인 상기 요소별 곱셈연산이 출력 액티베이션(750)을 생성하는 일련 과정 중 어느 순번의 단계에 적용되는지와 관계없이, 그 최종 결과가 달라지지 않기 때문이다.
도 5a, 및 도 5b에 제시한 방법에서, 브로드캐스트 연산부(611)의 연산량은 각각의 브로드캐스트 텐서(721)의 크기에 비례하게 된다. 브로드캐스트 텐서(721)의 크기는, 브로드캐스트 텐서(721)의 각 디멘젼의 크기들을 서로 곱한 값으로 정의될 수 있다. 즉, 브로드캐스트 텐서(721)의 크기는, 브로드캐스트 텐서(721)의 총 엘리먼트들의 개수로 정의될 수 있다.
본 발명에서는 브로드캐스트 연산부(611)의 연산량을 줄이는 방법으로서 브로드캐스트 텐서(721)의 크기를 줄이는 수단을 제시한다.
본 발명의 일 관점에 따라 제공되는 연산방법은, 컴퓨팅 장치가, 웨이트(740), 입력 액티베이션(710), 및 제1텐서(720)를 획득하는 단계; 상기 컴퓨팅 장치가, 상기 웨이트 및 상기 입력 액티베이션 중 데이터 크기가 더 작은 하나 및 크기가 더 큰 다른 하나를 결정하는 단계; 상기 컴퓨팅 장치가, 상기 더 작은 하나와 상기 제1텐서 간의 브로드캐스트 곱셈연산을 수행하여 생성한 중간 액티베이션을 준비하는 단계; 및 상기 컴퓨팅 장치가, 상기 중간 액티베이션과 상기 다른 하나 간의 콘볼루션 연산을 수행하여 출력 액티베이션을 생성하는 단계;를 포함할 수 있다.
이때, 상기 입력 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고, 상기 웨이트는 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고, 상기 제1텐서는 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, 1, 및 1의 크기를 갖는 텐서이고, 상기 더 작은 하나가 상기 입력 액티베이션(710)인 경우, 상기 중간 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고, 상기 중간 액티베이션(730)의 상기 제1디멘젼의 인덱스 cip, 상기 제2디멘젼의 인덱스 hq, 및 상기 제3디멘젼의 인덱스 wr에 대응하는 엘리먼트[cip, hq, wr]의 값은, 상기 제1텐서(720)의 엘리먼트[cip, 1, 1]에 상기 입력 액티베이션(710)의 엘리먼트[cip, hq, wr]를 곱한 값일 수 있다.
또는, 상기 입력 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고, 상기 웨이트는 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고, 상기 제1텐서는 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, 1, 및 1의 크기를 갖는 텐서이고, 상기 더 작은 하나가 상기 웨이트인 경우, 상기 중간 액티베이션은 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고, 상기 중간 액티베이션의 상기 제1디멘젼의 인덱스 coj, 상기 제2디멘젼의 인덱스 cip, 상기 제3디멘젼의 인덱스 rq, 및 상기 제4디멘젼의 인덱스 sr에 대응하는 엘리먼트[coj, cip, rq, sr]의 값은, 상기 제1텐서의 엘리먼트[cip, 1, 1]에 상기 웨이트의 엘리먼트coj, cip, rq, sr]를 곱한 값(j, p, q, r은 엘리먼트의 인덱스)일 수 있다.
이때, 상기 중간 액티베이션을 준비하는 단계는, 상기 제1텐서를 브로드캐스트하여 상기 더 작은 하나와 동일한 크기를 갖는 브로드캐스트 텐서를 생성하는 단계; 및 상기 브로드캐스트 텐서와 상기 더 작은 하나 간의 요소별 곱셈연산을 수행하여 상기 중간 액티베이션을 생성하는 단계;를 포함할 수 있다.
이때, 상기 컴퓨팅 장치는, 저장부(170), 하드웨어 가속기(110) 및 메인 프로세서(160)를 포함하며, 상기 획득하는 단계는 상기 하드웨어 가속기에 의해 이루어지며, 상기 결정하는 단계는 상기 메인 프로세서에 의해 이루어지며, 상기 준비하는 단계 및 상기 생성하는 단계는 상기 하드웨어 가속기에 의해 이루어지며, 상기 메인 프로세서는, 상기 더 작은 하나 및 상기 크기가 더 큰 다른 하나를 결정하기 위한 알고리즘을 포함하는 명령 코드들을 상기 저장부로부터 읽은 후, 상기 알고리즘을 실행하여 상기 더 작은 하나 및 상기 크기가 더 큰 다른 하나를 결정하도록 되어 있을 수 있다.
또는, 상기 컴퓨팅 장치는, 제어부(40)를 포함하는 하드웨어 가속기(110)를 포함하며, 상기 획득하는 단계, 상기 결정하는 단계, 및 상기 준비하는 단계는 모두 상기 제어부에 의해 이루어질 수 있다.
본 발명의 일 관점에 따라 제공되는 컴퓨팅 장치는 데이터 연산부(610) 및 내부 메모리(30)를 포함하는 하드웨어 가속기(110); 및 메모리(130);를 포함할 수 있다. 이때, 상기 컴퓨팅 장치가, 웨이트(740), 입력 액티베이션(710), 및 제1텐서(720)를 획득하도록 되어 있고, 상기 컴퓨팅 장치가, 상기 웨이트 및 상기 입력 액티베이션 중 데이터 크기가 더 작은 하나 및 크기가 더 큰 다른 하나를 결정하도록 되어 있고, 상기 컴퓨팅 장치가, 상기 더 작은 하나와 상기 제1텐서 간의 브로드캐스트 곱셈연산을 수행하여 생성한 중간 액티베이션을 준비하도록 되어 있고, 상기 컴퓨팅 장치가, 상기 중간 액티베이션과 상기 다른 하나 간의 콘볼루션 연산을 수행하여 출력 액티베이션을 생성하도록 되어 있을 수 있다.
이때, 상기 웨이트의 데이터의 크기는 상기 웨이트를 구성하는 모든 요소들의 총 개수이고, 상기 입력 액티베이션의 데이터의 크기는 상기 입력 액티베이션을 구성하는 모든 요소들의 총 개수일 수 있다.
본 발명의 다른 관점에 따라 제공되는 신경망 연산방법은, 컴퓨팅 장치가, 입력 이미지 데이터(51)에 복수 개의 웨이트들을 이용한 콘볼루션 연산을 수행하여 콘볼루션 레이어들(52)을 생성하는 단계; 상기 컴퓨팅 장치가, 상기 생성된 콘볼루션 레이어들에 대한 풀링을 수행하여 풀링 레이어(53)들을 생성하는 단계; 상기 컴퓨팅 장치가, 상기 생성된 풀링 레이어들에 대한 플래트닝(flattening)을 수행하여 신경망(54)에 입력할 어레이를 생성하는 단계; 및 상기 컴퓨팅 장치가, 상기 생성된 어레이를 상기 신경망에 입력하여 상기 신경망으로부터 출력을 생성하는 단계;를 포함할 수 있다. 이때, 상기 콘볼루션 레이어들을 생성하는 단계는, 상기 컴퓨팅 장치가, 웨이트(740), 입력 액티베이션(710), 및 제1텐서(720)를 획득하는 단계, 상기 컴퓨팅 장치가, 상기 웨이트 및 상기 입력 액티베이션 중 데이터 크기가 더 작은 하나 및 크기가 더 큰 다른 하나를 결정하는 단계, 상기 컴퓨팅 장치가, 상기 더 작은 하나와 상기 제1텐서 간의 브로드캐스트 곱셈연산을 수행하여 생성한 중간 액티베이션을 준비하는 단계, 및 상기 컴퓨팅 장치가, 상기 중간 액티베이션과 상기 다른 하나 간의 콘볼루션 연산을 수행하여 출력 액티베이션을 생성하는 단계를 포함할 수 있다.
이때, 상기 입력 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고, 상기 웨이트는 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고, 상기 제1텐서는 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, 1, 및 1의 크기를 갖는 텐서이고, 상기 더 작은 하나가 상기 입력 액티베이션(710)인 경우, 상기 중간 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고, 상기 중간 액티베이션(730)의 상기 제1디멘젼의 인덱스 cip, 상기 제2디멘젼의 인덱스 hq, 및 상기 제3디멘젼의 인덱스 wr에 대응하는 엘리먼트[cip, hq, wr]의 값은, 상기 제1텐서(720)의 엘리먼트[cip, 1, 1]에 상기 입력 액티베이션(710)의 엘리먼트[cip, hq, wr]를 곱한 값일 수 있다.
또는, 상기 입력 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고, 상기 웨이트는 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고, 상기 제1텐서는 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, 1, 및 1의 크기를 갖는 텐서이고, 상기 더 작은 하나가 상기 웨이트인 경우, 상기 중간 액티베이션은 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고, 상기 중간 액티베이션의 상기 제1디멘젼의 인덱스 coj, 상기 제2디멘젼의 인덱스 cip, 상기 제3디멘젼의 인덱스 rq, 및 상기 제4디멘젼의 인덱스 sr에 대응하는 엘리먼트[coj, cip, rq, sr]의 값은, 상기 제1텐서의 엘리먼트[cip, 1, 1]에 상기 웨이트의 엘리먼트coj, cip, rq, sr]를 곱한 값(j, p, q, r은 엘리먼트의 인덱스)일 수 있다.
이때, 상기 중간 액티베이션을 준비하는 단계는, 상기 제1텐서를 브로드캐스트하여 상기 더 작은 하나와 동일한 크기를 갖는 브로드캐스트 텐서를 생성하는 단계; 및 상기 브로드캐스트 텐서와 상기 더 작은 하나 간의 요소별 곱셈연산을 수행하여 상기 중간 액티베이션을 생성하는 단계;를 포함할 수 있다.
이때, 상기 컴퓨팅 장치는, 저장부(170), 하드웨어 가속기(110) 및 메인 프로세서(160)를 포함하며, 상기 획득하는 단계는 상기 하드웨어 가속기에 의해 이루어지며, 상기 결정하는 단계는 상기 메인 프로세서에 의해 이루어지며, 상기 준비하는 단계 및 상기 생성하는 단계는 상기 하드웨어 가속기에 의해 이루어지며, 상기 메인 프로세서는, 상기 더 작은 하나 및 상기 크기가 더 큰 다른 하나를 결정하기 위한 알고리즘을 포함하는 명령 코드들을 상기 저장부로부터 읽은 후, 상기 알고리즘을 실행하여 상기 더 작은 하나 및 상기 크기가 더 큰 다른 하나를 결정하도록 되어 있을 수 있다.
또는, 상기 컴퓨팅 장치는, 제어부(40)를 포함하는 하드웨어 가속기(110)를 포함하며, 상기 획득하는 단계, 상기 결정하는 단계, 및 상기 준비하는 단계는 모두 상기 제어부에 의해 이루어질 수 있다.
본 발명에 따르면 브로드캐스팅 멀티플라이와 콘볼루션을 포함하는 연산과정에 의한 결과를 얻기 위한 컴퓨팅 파워를 줄이는 기술을 제공할 수 있다.
도 1은 출력 액티베이션이라고 지칭되는 출력데이터를 생성하는 연산 과정을 나타낸 것이다.
도 2은 도 1의 연산과정이 실행될 수 있는 일 실시예인 CNN의 연산구조를 나타낸 것이다.
도 3은 주어진 텐서를 브로드캐스트하여 브로드캐스트된 '브로드캐스트 텐서'를 생성하는 개념을 설명하기 위한 것이다.
도 4는 본 발명에서 다루는 요소별 곱셈연산의 개념을 설명하기 위한 것이다.
도 5a는 도 3에서 설명한 브로드캐스트 및 도 4에서 설명한 요소별 곱셈연산의 개념을 이용하여 도 1에 제시한 브로드캐스트 곱셈연산을 이해하기 쉽게 재구성한 도면이고, 도 5b는 도 5a로부터 변형된 연산방법을 나타낸 도면이다.
도 6a 및 도 6b는 도 1에 나타낸 연산과정을 수행하는, 변형된 방법들을 나타낸 것이다.
도 7a 및 도 7b는 도 1에 나타낸 연산과정을 수행하는, 변형된 방법들을 나타낸 것이다.
도 8은 도 6a의 중간 액티베이션을 얻는 과정의 변형된 방법을 나타낸 것이다.
도 9는 본 발명의 일 실시예에 따라 제공되는 연산방법을 나타낸 것이다.
도 10은 본 발명의 일 실시예에 따라 제공되는 연산 방법이 적용될 수 있는 하드웨어의 구성예를 나타낸 것이다.
도 11은 도 6b 또는 도 7a에 제시한 연산 방법을 도 10에 제시한 하드웨어로 구현하는 방법을 나타낸 것이다.
이하, 본 발명의 실시예를 첨부한 도면을 참고하여 설명한다. 그러나 본 발명은 본 명세서에서 설명하는 실시예에 한정되지 않으며 여러 가지 다른 형태로 구현될 수 있다. 본 명세서에서 사용되는 용어는 실시예의 이해를 돕기 위한 것이며, 본 발명의 범위를 한정하고자 의도된 것이 아니다. 또한, 이하에서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.
이하 도 6a 및 도 6b를 통칭하여 도 6이라고 지칭하고, 도 7a 및 도 7b를 통칭하여 도 7이라고 지칭할 수 있다.
도 6 및 도 7은 도 1에 나타낸 연산과정을 수행하는, 변형된 방법들을 나타낸 것이다.
도 6은 입력 액티베이션의 데이터 크기가 웨이트의 데이터 크기보다 큰 경우에 대한 두 가지 연산방법을 나타낸다.
상기 입력 액티베이션의 데이터 크기는 입력 액티베이션의 총 엘리먼트들의 개수로 정의될 수 있다. 그리고 상기 웨이트의 데이터 크기는 웨이트의 총 엘리먼트들의 개수로 정의될 수 있다.
도 6의 예에서 텐서(720)는 입력채널, 높이, 폭 방향으로 각각 [ci, h, w]=[3, 1, 1] 의 크기를 갖고, 입력 액티베이션(710)은 입력채널, 높이, 폭 방향으로 각각 [ci, h, w]=[3, 2, 4] 의 크기를 갖고, 웨이트(740)는 출력채널, 입력채널, 높이, 폭 방향으로 각각 [co, ci, r, s]=[2, 3, 2, 1] 의 크기를 갖고, 출력 액티베이션(750)은 출력채널, 높이, 폭 방향으로 각각 [co, ho, wo]=[2, 2, 3] 의 크기를 갖는다.
도 6a의 단계(S110)에서, 컴퓨팅 장치는 텐서(720)를 입력 액티베이션(710)과 동일한 크기를 갖도록 브로드캐스트하여, 브로드캐스트 텐서(611)를 생성할 수 있다.
일 실시예에서, 브로드캐스트 텐서(611)는 실제로 입력 액티베이션(710)과 동일한 크기를 갖는 컴퓨팅 장치의 메모리 공간에 저장될 수도 있다.
또는 다른 실시예에서, 브로드캐스트 텐서(611)의 특정 입력채널에 존재하는 모든 엘리먼트들의 값은 서로 동일하기 때문에 실제로 브로드캐스트 텐서(611)의 모든 값을 입력 액티베이션(710)과 동일한 크기를 갖는 컴퓨팅 장치의 메모리 공간에 저장하지 않을 수도 있다. 이 경우, 컴퓨팅 장치는 상기 텐서(720)의 값들만 저장하고 있을 수 있으며, 그 대신 브로드캐스트 텐서(611)의 입력채널, 높이, 및 폭 방향 크기만 저장하고 있을 수 있다. 이때, 브로드캐스트 텐서(611)의 입력채널, 높이, 및 폭 방향 크기는 입력 액티베이션(710)의 입력채널, 높이, 및 폭 방향 크기와 동일하므로, 컴퓨팅 장치는 브로드캐스트 텐서(611)의 입력채널, 높이, 및 폭 방향 크기를 따로 저장하지 않을 수도 있다.
단계(S120)에서, 컴퓨팅 장치는 입력 액티베이션(710)과 브로드캐스트 텐서(611) 간의 요소별 곱셈연산을 수행하여 중간 액티베이션(730)을 생성할 수 있다.
단계(S130)에서 상기 컴퓨팅 장치는 중간 액티베이션(730)과 웨이트(740) 간의 콘볼루션 연산을 수행하여 출력 액티베이션(750)을 생성할 수 있다.
중간 액티베이션(730)과 웨이트(740) 중 출력채널 인덱스 k의 데이터가 콘볼루션되어, 출력 액티베이션(750) 중 출력채널 인덱스 k의 데이터가 생성될 수 있다.
이제, 도 6a와 대비되는 방법으로서 도 6b의 방법을 설명한다.
도 6b의 단계(S210)에서, 컴퓨팅 장치는, 텐서(720)를 웨이트(740)와 동일한 크기를 갖도록 브로드캐스트하여, 브로드캐스트 텐서(611)를 생성할 수 있다.
상기 브로드캐스트 텐서(611)의 임의의 출력채널에 대하여, 입력채널(ci) 방향 크기는 상기 텐서(720)의 입력채널(ci) 방향 크기와 동일하도록 설정(set)되고, 높이(h) 방향과 폭(w) 방향의 크기는 상기 텐서(720)의 높이(h) 방향과 폭(w) 방향보다 큰 값을 갖도록 설정(set)될 수 있다. 이때, 상기 브로드캐스트 텐서(611)의 임의의 출력채널에 대하여, 제1입력채널(ci=ci1)에 포함된 모든 요소들의 값은 모두 상기 텐서(720) 중 제1입력채널(ci=ci1)에 포함된 유일한 요소(the only element)의 값과 동일하도록 되어 있다. 상기 브로드캐스트 텐서(611)의 서로 다른 임의의 출력채널들은 서로 동일한 값을 갖는다.
단계(S220)에서, 컴퓨팅 장치는 웨이트(740)와 브로드캐스트 텐서(611) 간의 요소별 곱셈연산을 수행하여 중간 액티베이션(730)을 생성할 수 있다.
단계(S230)에서 상기 컴퓨팅 장치는 중간 액티베이션(730)과 입력 액티베이션(710) 간의 콘볼루션 연산을 수행하여 출력 액티베이션(750)을 생성할 수 있다.
입력 액티베이션(710)의 출력채널들 중 인덱스 k인 출력채널과 중간 액티베이션(730) 중 출력채널들 중 인덱스 k인 출력채널이 콘볼루션되어, 출력 액티베이션(750) 중 출력채널들 중 인덱스 k인 출력채널이 생성될 수 있다.
한편, 도 6a에 제시한 중간 액티베이션(730)을 얻는 과정(S110, S120)은 도 8에 제시한 다른 방법으로 생성될 수도 있다.
도 8의 (a)에는 도 6a의 단계(S110, S120)에 제시한 방법이 반복되어 제시되어 있다. 도 8의 (a)에서는 텐서(720)를 브로드캐스트 하여 브로드캐스트 텐서(611)를 먼저 생성한다. 그 다음, 브로드캐스트 텐서(611)의 엘리먼트[cp, hq, wr]와 입력 액티베이션(710)의 엘리먼트[cp, hq, wr]를 서로 곱한 값이 중간 액티베이션(730)의 엘리먼트[cp, hq, wr]의 값인 것으로 결정된다(p, q, r은 인덱스 넘버).
도 8의 (b)에는 중간 액티베이션(730)을 생성하는 다른 방법을 나타낸다. 도 8의 (b)에서는 텐서(720)의 엘리먼트[cp, h1, w1]와 입력 액티베이션(710)의 엘리먼트[cp, hq, wr]를 서로 곱한 값이 중간 액티베이션(730)의 엘리먼트[cp, hq, wr]의 값인 것으로 결정된다.
도 8의 (a)와 도 8의 (b)에서 출력되는 중간 엑티베이션(730)은 서로 동일하다.
이를 일반화하여 설명하면, 도 8의 (a)은, 같이 제1텐서(ex:텐서(720))로부터 브로드캐스트 텐서(611)를 실제로 생성한 후에, 브로드캐스트 텐서(611)와 제2텐서(ex:입력 액티베이션(710)) 간에 요소별 곱셈연산을 하여 제3텐서(ex: 중간 액티베이션(730))를 얻는 제1연산방법을 나타낸 것이다.
그리고 도 8의 (b)는, 제1텐서(ex:텐서(720)의 특정 엘리먼트를 제2텐서(ex:입력 액티베이션(710))의 복수 개의 엘리먼트에 반복적으로 곱하여 상기 제3텐서(ex: 중간 액티베이션(730))를 얻는 제2연산방법을 나타낸 것이다.
상기 제1연산방법은 브로드캐스트 텐서(611)의 모든 값을 저장하기 위한 추가적인 메모리 공간이 필요하지만, 상기 제2연산방법에서는 그렇지 않다.
상기 제1연산방법과 상기 제2연산방법을 통칭하여, 브로드캐스트 곱셈연산이라고 지칭할 수 있다.
도 6a의 단계들(S110, S120) 및 도 6b의 단계들(S210, S220)은 각각 상기 브로드캐스트 곱셉연산을 구현한 것이다.
이제, 도 6a와 도 6b 간의 연산량은 비교하면 다음과 같다.
도 6a의 단계(S130)와 도 6b의 단계(S230)의 연산량은 서로 동일하다.
그런데 도 6b의 단계(S220)에서는 곱셈연산을 웨이트(740)의 엘리먼트들의 총 개수와 동일한 횟수로 실행해야 한다. 반면 도 6a의 단계(S120)에서는 곱셈연산을 입력 액티베이션(710)의 엘리먼트들의 총 개수와 동일한 횟수로 실행해야 한다.
도 6의 예에서 웨이트(740)의 엘리먼트들의 총 개수 12가 입력 액티베이션(710)의 엘리먼트들의 총 개수 24보다 작다. 따라서 도 6b의 단계(S220)의 연산량이 도 6a의 단계(S120)의 연산량보다 작다는 점을 알 수 있다. 그 결과, 도 6b와 같이, 웨이트(740)와 입력 액티베이션(710) 중 그 크기가 더 작은 하나인 웨이트(740)와 텐서(720) 간의 브로드캐스트 곱셈연산을 먼저 수행하고, 그 다음에 콘볼루션 연산을 하는 것이 도 6a보다 더 효율적이라는 점을 이해할 수 있다.
도 7의 예에서 텐서(720)는 입력채널, 높이, 폭 방향으로 각각 [ci, h, w]=[3, 1, 1]의 크기를 갖고, 입력 액티베이션(710)은 입력채널, 높이, 폭 방향으로 각각 [ci, h, w]=[3, 2, 2] 의 크기를 갖고, 웨이트(740)는 출력채널, 입력채널, 높이, 폭 방향으로 각각 [co, ci, h, w]=[2, 3, 2, 4] 의 크기를 갖는다.
도 7a의 단계(S310)에서, 컴퓨팅 장치는, 텐서(720)를 입력 액티베이션(710)과 동일한 크기를 갖도록 브로드캐스트하여, 브로드캐스트 텐서(611)를 생성할 수 있다.
단계(S320)에서, 상기 컴퓨팅 장치는 입력 액티베이션(710)과 브로드캐스트 텐서(611) 간의 요소별 곱셈연산을 수행하여 중간 액티베이션(730)을 생성할 수 있다.
단계(S330)에서 상기 컴퓨팅 장치는 중간 액티베이션(730)과 웨이트(740) 간의 콘볼루션 연산을 수행하여 출력 액티베이션(750)을 생성할 수 있다.
중간 액티베이션(730)과 웨이트(740) 중 출력채널 인덱스 k의 데이터가 서로 콘볼루션되어, 출력 액티베이션(750) 중 출력채널 인덱스 k의 데이터가 생성될 수 있다.
이제, 도 7a와 대비되는 방법으로서 도 7b의 방법을 설명한다.
도 7b의 단계(S410)에서, 컴퓨팅 장치는, 텐서(720)를 웨이트(740)와 동일한 크기를 갖도록 브로드캐스트하여, 브로드캐스트 텐서(611)를 생성할 수 있다.
단계(S420)에서, 컴퓨팅 장치는 웨이트(740)와 브로드캐스트 텐서(611) 간의 요소별 곱셈연산을 수행하여 중간 액티베이션(730)을 생성할 수 있다.
단계(S430)에서 상기 컴퓨팅 장치는 중간 액티베이션(730)과 입력 액티베이션(710) 간의 콘볼루션 연산을 수행하여 출력 액티베이션(750)을 생성할 수 있다.
입력 액티베이션(710)과 중간 액티베이션(730) 중 출력채널 인덱스 k의 데이터가 콘볼루션되어, 출력 액티베이션(750) 중 출력채널 인덱스 k의 데이터가 생성될 수 있다.
도 7a에서 산출된 출력 액티베이션과 도 7b에서 산출된 출력 액티베이션은 서로 동일한 데이터이다.
도 7a의 단계들(S310, S320) 및 도 7b의 단계들(S410, S420)은 각각 상기 브로드캐스트 곱셉연산을 구현한 것이다.
이제, 도 7a와 도 7b 간의 연산량은 비교하면 다음과 같다.
도 7a의 단계(S330)와 도 7b의 단계(S430)의 연산량은 서로 동일하다.
도 7의 예에서 입력 액티베이션(710)의 엘리먼트들의 총 개수 12가 웨이트(740)의 엘리먼트들의 총 개수 48보다 작다. 따라서 도 7a의 단계(S320)의 연산량이 도 7b의 단계(S420)의 연산량보다 작다는 점을 알 수 있다. 그 결과, 도 7a와 같이, 웨이트(740)와 입력 액티베이션(710) 중 그 크기가 더 작은 하나인 입력 액티베이션(710)와 텐서(720) 간의 브로드캐스트 곱셈연산을 먼저 수행하고, 그 다음에 콘볼루션 연산을 하는 것이 도 7b에 비하여 더 효율적이라는 점을 이해할 수 있다.
도 6a 및 도 7a에 제시한 방법은, 도 5a에 제시한 방법에 대응한다. 그리고 도 6b 및 도 7b에 제시한 방법은, 도 5b에 제시한 방법에 대응한다.
도 6과 도 7의 설명을 참고하여, 본 발명의 일 실시예에 따라 제공되는 연산방법은 도 9에 제시한 순서도와 같이 제시될 수 있다.
도 9는 본 발명의 일 실시예에 따라 제공되는 연산방법을 나타낸 것이다.
단계(S10)에서, 컴퓨팅 장치는 메모리 장치로부터, 웨이트(740), 입력 액티베이션(710), 및 제1텐서(720)를 획득할 수 있다.
단계(S20)에서, 상기 컴퓨팅 장치는, 웨이트(740) 및 입력 액티베이션(710) 중 데이터 크기가 더 작은 하나 및 크기가 더 큰 다른 하나를 결정할 수 있다.
단계(S30)에서, 상기 컴퓨팅 장치는, 상기 더 작은 하나와 제1텐서(720) 간의 브로드캐스트 곱셈연산을 수행하여 생성한 중간 액티베이션(730)을 준비할 수 있다.
단계(S40)에서, 상기 컴퓨팅 장치는, 중간 액티베이션(730)과 상기 크기가 더 큰 다른 하나 간의 콘볼루션 연산을 수행하여 출력 액티베이션을 생성할 수 있다.
이때, 입력 액티베이션(710)은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서일 수 있다. 입력 액티베이션(710)의 데이터의 크기는 ci*h*w이다.
그리고 웨이트(740)는 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서일 수 있다. 웨이트(740)의 데이터의 크기는 co*ci*r*s이다.
그리고 제1텐서(720)는 상기 제1디멘젼, 상기 제2디멘젼, 및 상기 제3디멘젼이 각각 ci, 1, 및 1의 크기를 갖는 텐서일 수 있다.
이때, 상기 더 작은 하나가 상기 입력 액티베이션(710)인 경우, 상기 중간 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서일 수 있다(도 5a 참고). 이때, 중간 액티베이션(730)의 상기 제1디멘젼의 인덱스 cip, 상기 제2디멘젼의 인덱스 hpq, 및 상기 제3디멘젼의 인덱스 wr에 대응하는 엘리먼트[cip, hq, wr]의 값은, 상기 제1텐서(720)의 엘리먼트[cip, 1, 1]에 상기 입력 액티베이션(710)의 엘리먼트[cip, hq, wr]를 곱한 값일 수 있다(p, q, r는 자연수).
이와 달리, 상기 더 작은 하나가 상기 웨이트(740)인 경우, 상기 중간 액티베이션(730)은 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서일 수 있다(도 5b 참고). 이때, 상기 중간 액티베이션(730)의 상기 제1디멘젼의 인덱스 coj, 상기 제2디멘젼의 인덱스 cip, 상기 제3디멘젼의 인덱스 rq, 및 상기 제4디멘젼의 인덱스 sr에 대응하는 엘리먼트[coj, cip, rq, sr]의 값은, 상기 제1텐서(720)의 엘리먼트[cip, 1, 1]에 상기 웨이트(740)의 엘리먼트[coj, cip, rq, sr]를 곱한 값일 수 있다(j, p, q, r는 자연수).
이때, 중간 액티베이션(730)을 준비하는 단계(S30)는, 제1텐서(720)를 브로드캐스트하여 상기 더 작은 하나와 동일한 크기를 갖는 브로드캐스트 텐서(721)를 생성하는 단계(S31), 및 브로드캐스트 텐서(721)와 상기 더 작은 하나 간의 요소별 곱셈연산을 수행하여 중간 액티베이션(730)을 생성하는 단계(S32)를 포함할 수 있다.
이때, 상기 더 작은 하나가 입력 액티베이션(710)인 경우, 브로드캐스트 텐서(721)는 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고, 브로드캐스트 텐서(721)의 엘리먼트 [cip, hq, wr]의 값은, 제1텐서(720)의 엘리먼트 [cip, 1, 1]와 동일할 수 있다. 그리고 이때, 중간 액티베이션(730)의 엘리먼트 [cip, hq, wr]의 값은, 브로드캐스트 텐서(721)의 엘리먼트 [cip, hq, wr]에 입력 액티베이션(710)의 엘리먼트 [cip, hq, wr]를 곱한 값일 수 있다.
이와 달리, 상기 더 작은 하나가 웨이트(740)인 경우, 브로드캐스트 텐서(721)는 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고, 상기 브로드캐스트 텐서(721)의 엘리먼트[coj, cip, hq, wr]의 값은, 상기 제1텐서(720)의 엘리먼트[1, cp, 1, 1]와 동일할 수 있다(coj, cip, hq, wr는 자연수). 그리고 이때, 중간 액티베이션(730)의 엘리먼트[coj, cip, hq, wr]의 값은, 브로드캐스트 텐서(721)의 엘리먼트[coj, cip, hq, wr]에 웨이트(740)의 엘리먼트 [coj, cip, hq, wr]를 곱한 값일 수 있다.
도 10은 본 발명의 일 실시예에 따라 제공되는 연산 방법이 적용될 수 있는 하드웨어의 구성예를 나타낸 것이다.
도 10은 상기 연산 방법을 하드웨어로 구현한 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이다.
컴퓨팅 장치(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연산기능을 수행할 수 있다.
도 10에는, 상기 데이터 연산부(610)는 상기 하드웨어 가속기(110) 내에 1개가 제시되어 있다. 그러나 도시하지 않은 변형된 일 실시예에서, 도 10에 나타낸 상기 데이터 연산부(610)는 상기 하드웨어 가속기(110) 내에 복수 개 제공되어 각각 제어부(40)에 의해 요청된 연산을 병렬적으로 수행할 수도 있다.
일 구현예에서, 상기 데이터 연산부(610)는 그 출력데이터를 한 번에 출력하지 않고 시간에 따라 주어진 순서에 따라 순차적으로 출력할 수 있다.
도 11은 도 6b 또는 도 7a에 제시한 연산 방법을 도 10에 제시한 하드웨어로 구현하는 방법을 나타낸 것이다.
도 11의 (a) 및 도 11의 (b)는 각각 상기 제1시구간 및 제2시구간 동안 도 10에 도시한 상기 내부 메모리(30), 상기 입력버퍼(650), 상기 데이터 연산부(610), 및 상기 출력버퍼(640)에서 수행되는 동작을 설명하기 위한 것이다.
우선 컴퓨팅 장치(1)는, 입력 액티베이션과 웨이트 중 더 작은 크기를 갖는 어느 하나의 데이터인 제1데이터와 더 큰 크기를 갖는 다른 하나의 데이터인 제2데이터를 결정할 수 있다.
일 실시예에서, 상기 제1데이터와 상기 제2데이터는 상기 메인 프로세서(160)에서 결정할 수 있다. 이때, 메인 프로세서(160)는 상기 제1데이터와 상기 제2데이터를 결정하기 위한 알고리즘을 포함하는 명령 코드들을 상기 저장부(170)로부터 읽어 들여 메모리(130)에 저장할 수 있다. 그리고 메인 프로세서(160)는 상기 알고리즘을 실행하여 상기 제1데이터와 상기 제2데이터를 결정할 수 있다.
다른 실시예에서, 상기 제1데이터와 상기 제2데이터는 하드웨어 가속기(110)의 제어부(40)에서 결정할 수 있다.
그 다음 컴퓨팅 장치(1)는, 상기 제1데이터를 내부 메모리(30)에 저장할 수 있다. 상기 제1데이터는 DRAM에 저장되어 있거나 또는 상기 하드웨어 가속기(110) 내에 존재하는 임의의 메모리에 저장되어 있던 것일 수 있다.
이때, 상기 제1데이터를 내부 메모리(30)에 저장하는 단계는, 메인 프로세서(160) 또는 제어부(40)에 의해 수행될 수 있다.
또한 상기 컴퓨팅 장치(1)는, 제1텐서(720)를 메모리(130)로부터 읽어 들여 상기 내부 메모리(30)에 저장할 수 있다.
상기 제1시구간에서, 내부 메모리(30)에 저장되어 있던 상기 제1데이터 및 제1텐서(720)는 입력버퍼(650)에 제공될 수 있다. 입력버퍼(650)에 저장되어 있던 상기 제1데이터 및 제1텐서(720)는 데이터 연산부(610)에게 제공될 수 있다. 상기 제1시구간에서 데이터 연산부(610)는 도 6b 또는 도 7a에 제시된 중간 액티베이션(730)을 생성하도록 되어 있다. 데이터 연산부(610)가 출력한 중간 액티베이션(730)은 출력버퍼(640)에 제공될 수 있다. 출력버퍼(640)에 저장된 중간 액티베이션(730)은 내부 메모리(30)에게 제공될 수 있다. 출력버퍼(640)에 저장된 중간 액티베이션(730)은 외부의 DRAM(130)에게 전달되었다가, 다시 상기 DRAM(130)으로부터 상기 내부 메모리(30)에 다시 로드될 수도 있다.
그 다음, 컴퓨팅 장치(1)는 내부 메모리(30)에 입력 액티베이션(710)과 웨이트(740) 중 더 큰 크기를 갖는 다른 하나의 데이터인 상기 제2데이터를 저장할 수 있다. 그리고 컴퓨팅 장치는 내부 메모리(30)에 중간 액티베이션(730)을 저장할 수 있다.
상기 제2시구간에서, 내부 메모리(30)에 저장되어 있던 중간 액티베이션(730)과 상기 제2데이터는 입력버퍼(650)에 제공될 수 있다. 입력버퍼(650)에 저장되어 있던 중간 액티베이션(730)과 상기 제2데이터는 데이터 연산부(610)에게 제공될 수 있다. 상기 제2시구간에서, 데이터 연산부(610)는 도 6b 또는 도 7a에 제시된 출력 액티베이션(750)을 생성하도록 되어 있다. 데이터 연산부(610)가 출력한 출력 액티베이션(750)은 출력버퍼(640)에 제공될 수 있다. 출력버퍼(640)에 저장된 출력 액티베이션(750)은 내부 메모리(30)에게 제공될 수 있다. 출력버퍼(640)에 저장된 출력 액티베이션(750)은 외부의 DRAM(130)에게 전달되었다가, 다시 상기 DRAM(130)으로부터 상기 내부 메모리(30)에 다시 로드될 수도 있다.
상술한 본 발명의 실시예들을 이용하여, 본 발명의 기술 분야에 속하는 자들은 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에 다양한 변경 및 수정을 용이하게 실시할 수 있을 것이다. 특허청구범위의 각 청구항의 내용은 본 명세서를 통해 이해할 수 있는 범위 내에서 인용관계가 없는 다른 청구항에 결합될 수 있다.

Claims (14)

  1. 컴퓨팅 장치가, 웨이트(740), 입력 액티베이션(710), 및 제1텐서(720)를 획득하는 단계;
    상기 컴퓨팅 장치가, 상기 웨이트 및 상기 입력 액티베이션 중 데이터 크기가 더 작은 하나 및 크기가 더 큰 다른 하나를 결정하는 단계;
    상기 컴퓨팅 장치가, 상기 더 작은 하나와 상기 제1텐서 간의 브로드캐스트 곱셈연산을 수행하여 생성한 중간 액티베이션을 준비하는 단계; 및
    상기 컴퓨팅 장치가, 상기 중간 액티베이션과 상기 다른 하나 간의 콘볼루션 연산을 수행하여 출력 액티베이션을 생성하는 단계;
    를 포함하는,
    연산방법.
  2. 제1항에 있어서,
    상기 입력 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고,
    상기 웨이트는 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고,
    상기 제1텐서는 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, 1, 및 1의 크기를 갖는 텐서이고,
    상기 더 작은 하나가 상기 입력 액티베이션(710)인 경우, 상기 중간 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고,
    상기 중간 액티베이션(730)의 상기 제1디멘젼의 인덱스 cip, 상기 제2디멘젼의 인덱스 hq, 및 상기 제3디멘젼의 인덱스 wr에 대응하는 엘리먼트[cip, hq, wr]의 값은, 상기 제1텐서(720)의 엘리먼트[cip, 1, 1]에 상기 입력 액티베이션(710)의 엘리먼트[cip, hq, wr]를 곱한 값인,
    연산방법.
  3. 제1항에 있어서,
    상기 입력 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고,
    상기 웨이트는 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고,
    상기 제1텐서는 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, 1, 및 1의 크기를 갖는 텐서이고,
    상기 더 작은 하나가 상기 웨이트인 경우, 상기 중간 액티베이션은 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고,
    상기 중간 액티베이션의 상기 제1디멘젼의 인덱스 coj, 상기 제2디멘젼의 인덱스 cip, 상기 제3디멘젼의 인덱스 rq, 및 상기 제4디멘젼의 인덱스 sr에 대응하는 엘리먼트[coj, cip, rq, sr]의 값은, 상기 제1텐서의 엘리먼트[cip, 1, 1]에 상기 웨이트의 엘리먼트coj, cip, rq, sr]를 곱한 값인(j, p, q, r은 엘리먼트의 인덱스),
    연산방법.
  4. 제1항에 있어서,
    상기 중간 액티베이션을 준비하는 단계는,
    상기 제1텐서를 브로드캐스트하여 상기 더 작은 하나와 동일한 크기를 갖는 브로드캐스트 텐서를 생성하는 단계; 및
    상기 브로드캐스트 텐서와 상기 더 작은 하나 간의 요소별 곱셈연산을 수행하여 상기 중간 액티베이션을 생성하는 단계;
    를 포함하는,
    연산방법.
  5. 제1항에 있어서,
    상기 컴퓨팅 장치는, 저장부(170), 하드웨어 가속기(110) 및 메인 프로세서(160)를 포함하며,
    상기 획득하는 단계는 상기 하드웨어 가속기에 의해 이루어지며,
    상기 결정하는 단계는 상기 메인 프로세서에 의해 이루어지며,
    상기 준비하는 단계 및 상기 생성하는 단계는 상기 하드웨어 가속기에 의해 이루어지며,
    상기 메인 프로세서는, 상기 더 작은 하나 및 상기 크기가 더 큰 다른 하나를 결정하기 위한 알고리즘을 포함하는 명령 코드들을 상기 저장부로부터 읽은 후, 상기 알고리즘을 실행하여 상기 더 작은 하나 및 상기 크기가 더 큰 다른 하나를 결정하도록 되어 있는,
    연산방법.
  6. 제1항에 있어서,
    상기 컴퓨팅 장치는, 제어부(40)를 포함하는 하드웨어 가속기(110)를 포함하며,
    상기 획득하는 단계, 상기 결정하는 단계, 및 상기 준비하는 단계는 모두 상기 제어부에 의해 이루어지는,
    연산방법.
  7. 컴퓨팅 장치로서,
    데이터 연산부(610) 및 내부 메모리(30)를 포함하는 하드웨어 가속기(110); 및
    메모리(130);
    를 포함하며,
    상기 컴퓨팅 장치가, 웨이트(740), 입력 액티베이션(710), 및 제1텐서(720)를 획득하도록 되어 있고,
    상기 컴퓨팅 장치가, 상기 웨이트 및 상기 입력 액티베이션 중 데이터 크기가 더 작은 하나 및 크기가 더 큰 다른 하나를 결정하도록 되어 있고,
    상기 컴퓨팅 장치가, 상기 더 작은 하나와 상기 제1텐서 간의 브로드캐스트 곱셈연산을 수행하여 생성한 중간 액티베이션을 준비하도록 되어 있고,
    상기 컴퓨팅 장치가, 상기 중간 액티베이션과 상기 다른 하나 간의 콘볼루션 연산을 수행하여 출력 액티베이션을 생성하도록 되어 있는,
    컴퓨팅 장치.
  8. 제7항에 있어서,
    상기 웨이트의 데이터의 크기는 상기 웨이트를 구성하는 모든 요소들의 총 개수이고,
    상기 입력 액티베이션의 데이터의 크기는 상기 입력 액티베이션을 구성하는 모든 요소들의 총 개수인,
    컴퓨팅 장치.
  9. 컴퓨팅 장치가, 입력 이미지 데이터(51)에 복수 개의 웨이트들을 이용한 콘볼루션 연산을 수행하여 콘볼루션 레이어들(52)을 생성하는 단계;
    상기 컴퓨팅 장치가, 상기 생성된 콘볼루션 레이어들에 대한 풀링을 수행하여 풀링 레이어(53)들을 생성하는 단계;
    상기 컴퓨팅 장치가, 상기 생성된 풀링 레이어들에 대한 플래트닝(flattening)을 수행하여 신경망(54)에 입력할 어레이를 생성하는 단계; 및
    상기 컴퓨팅 장치가, 상기 생성된 어레이를 상기 신경망에 입력하여 상기 신경망으로부터 출력을 생성하는 단계;
    를 포함하며,
    상기 콘볼루션 레이어들을 생성하는 단계는,
    상기 컴퓨팅 장치가, 웨이트(740), 입력 액티베이션(710), 및 제1텐서(720)를 획득하는 단계,
    상기 컴퓨팅 장치가, 상기 웨이트 및 상기 입력 액티베이션 중 데이터 크기가 더 작은 하나 및 크기가 더 큰 다른 하나를 결정하는 단계,
    상기 컴퓨팅 장치가, 상기 더 작은 하나와 상기 제1텐서 간의 브로드캐스트 곱셈연산을 수행하여 생성한 중간 액티베이션을 준비하는 단계, 및
    상기 컴퓨팅 장치가, 상기 중간 액티베이션과 상기 다른 하나 간의 콘볼루션 연산을 수행하여 출력 액티베이션을 생성하는 단계,
    를 포함하는,
    신경망 연산방법.
  10. 제9항에 있어서,
    상기 입력 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고,
    상기 웨이트는 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고,
    상기 제1텐서는 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, 1, 및 1의 크기를 갖는 텐서이고,
    상기 더 작은 하나가 상기 입력 액티베이션(710)인 경우, 상기 중간 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고,
    상기 중간 액티베이션(730)의 상기 제1디멘젼의 인덱스 cip, 상기 제2디멘젼의 인덱스 hq, 및 상기 제3디멘젼의 인덱스 wr에 대응하는 엘리먼트[cip, hq, wr]의 값은, 상기 제1텐서(720)의 엘리먼트[cip, 1, 1]에 상기 입력 액티베이션(710)의 엘리먼트[cip, hq, wr]를 곱한 값인,
    신경망 연산방법.
  11. 제9항에 있어서,
    상기 입력 액티베이션은 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, h, 및 w의 크기를 갖는 텐서이고,
    상기 웨이트는 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고,
    상기 제1텐서는 제1디멘젼, 제2디멘젼, 및 제3디멘젼이 각각 ci, 1, 및 1의 크기를 갖는 텐서이고,
    상기 더 작은 하나가 상기 웨이트인 경우, 상기 중간 액티베이션은 제1디멘젼, 제2디멘젼, 제3디멘젼, 및 제4디멘젼이 각각 co, ci, r, 및 s의 크기를 갖는 텐서이고,
    상기 중간 액티베이션의 상기 제1디멘젼의 인덱스 coj, 상기 제2디멘젼의 인덱스 cip, 상기 제3디멘젼의 인덱스 rq, 및 상기 제4디멘젼의 인덱스 sr에 대응하는 엘리먼트[coj, cip, rq, sr]의 값은, 상기 제1텐서의 엘리먼트[cip, 1, 1]에 상기 웨이트의 엘리먼트coj, cip, rq, sr]를 곱한 값인(j, p, q, r은 엘리먼트의 인덱스),
    신경망 연산방법.
  12. 제9항에 있어서,
    상기 중간 액티베이션을 준비하는 단계는,
    상기 제1텐서를 브로드캐스트하여 상기 더 작은 하나와 동일한 크기를 갖는 브로드캐스트 텐서를 생성하는 단계; 및
    상기 브로드캐스트 텐서와 상기 더 작은 하나 간의 요소별 곱셈연산을 수행하여 상기 중간 액티베이션을 생성하는 단계;
    를 포함하는,
    신경망 연산방법.
  13. 제9항에 있어서,
    상기 컴퓨팅 장치는, 저장부(170), 하드웨어 가속기(110) 및 메인 프로세서(160)를 포함하며,
    상기 획득하는 단계는 상기 하드웨어 가속기에 의해 이루어지며,
    상기 결정하는 단계는 상기 메인 프로세서에 의해 이루어지며,
    상기 준비하는 단계 및 상기 생성하는 단계는 상기 하드웨어 가속기에 의해 이루어지며,
    상기 메인 프로세서는, 상기 더 작은 하나 및 상기 크기가 더 큰 다른 하나를 결정하기 위한 알고리즘을 포함하는 명령 코드들을 상기 저장부로부터 읽은 후, 상기 알고리즘을 실행하여 상기 더 작은 하나 및 상기 크기가 더 큰 다른 하나를 결정하도록 되어 있는,
    신경망 연산방법.
  14. 제9항에 있어서,
    상기 컴퓨팅 장치는, 제어부(40)를 포함하는 하드웨어 가속기(110)를 포함하며,
    상기 획득하는 단계, 상기 결정하는 단계, 및 상기 준비하는 단계는 모두 상기 제어부에 의해 이루어지는,
    신경망 연산방법.
KR1020210101305A 2021-08-02 2021-08-02 브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치 KR102361249B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210101305A KR102361249B1 (ko) 2021-08-02 2021-08-02 브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치
PCT/KR2021/014772 WO2023013817A1 (ko) 2021-08-02 2021-10-21 브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210101305A KR102361249B1 (ko) 2021-08-02 2021-08-02 브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치

Publications (1)

Publication Number Publication Date
KR102361249B1 true KR102361249B1 (ko) 2022-02-14

Family

ID=80254259

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210101305A KR102361249B1 (ko) 2021-08-02 2021-08-02 브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치

Country Status (2)

Country Link
KR (1) KR102361249B1 (ko)
WO (1) WO2023013817A1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301552B1 (en) * 1998-10-27 2001-10-09 The United States Of America As Represented By The Secretary Of The Navy Radar/IFF simulator circuit for desktop computer
JP2008152722A (ja) * 2006-12-20 2008-07-03 Fujitsu Ten Ltd ソフトウェア開発支援装置
KR101516353B1 (ko) * 2014-09-24 2015-05-04 (주)에스엠테크 신호 데이타베이스를 이용한 시뮬레이터
KR20200068694A (ko) * 2017-10-06 2020-06-15 아베엘 리스트 게엠베하 레이더 신호를 변환하기 위한 장치 및 방법, 및 테스트벤치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10733505B2 (en) * 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
US10037490B2 (en) * 2016-12-13 2018-07-31 Google Llc Performing average pooling in hardware
US11487998B2 (en) * 2019-06-17 2022-11-01 Qualcomm Incorporated Depth-first convolution in deep neural networks
US20200401895A1 (en) * 2019-06-21 2020-12-24 Samsung Electronics Co., Ltd. Neural network hardware accelerator system with zero-skipping and hierarchical structured pruning methods
US11669585B2 (en) * 2019-06-25 2023-06-06 Apple Inc. Optimizing binary convolutional neural networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301552B1 (en) * 1998-10-27 2001-10-09 The United States Of America As Represented By The Secretary Of The Navy Radar/IFF simulator circuit for desktop computer
JP2008152722A (ja) * 2006-12-20 2008-07-03 Fujitsu Ten Ltd ソフトウェア開発支援装置
KR101516353B1 (ko) * 2014-09-24 2015-05-04 (주)에스엠테크 신호 데이타베이스를 이용한 시뮬레이터
KR20200068694A (ko) * 2017-10-06 2020-06-15 아베엘 리스트 게엠베하 레이더 신호를 변환하기 위한 장치 및 방법, 및 테스트벤치

Also Published As

Publication number Publication date
WO2023013817A1 (ko) 2023-02-09

Similar Documents

Publication Publication Date Title
JP6813561B2 (ja) ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス
JP6762352B2 (ja) ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス
US20220138577A1 (en) Batch Processing In A Neural Network Processor
US11704547B2 (en) Transposing neural network matrices in hardware
US11170291B2 (en) Rotating data for neural network computations
CN109919311B (zh) 生成指令序列的方法、执行神经网络运算的方法和装置
US10394929B2 (en) Adaptive execution engine for convolution computing systems
CN112840356B (zh) 运算加速器、处理方法及相关设备
CN109543830B (zh) 一种用于卷积神经网络加速器的拆分累加器
US11803360B2 (en) Compilation method, apparatus, computing device and medium
CN112200300A (zh) 卷积神经网络运算方法及装置
CN110766128A (zh) 卷积计算单元、计算方法及神经网络计算平台
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
KR20220051242A (ko) 고속 희소 신경망
US20210056396A1 (en) General padding support for convolution on systolic arrays
US11983616B2 (en) Methods and apparatus for constructing digital circuits for performing matrix operations
JP6955598B2 (ja) 複数の畳み込みウィンドウ内の画像データの並行抽出方法、装置、機器及びコンピュータ可読記憶媒体
CN112633470A (zh) 优化神经网络卷积残差结构的方法、系统、设备及介质
CN109902821B (zh) 一种数据处理方法、装置及相关组件
CN116992965B (zh) Transformer大模型的推理方法、装置、计算机设备和存储介质
KR102361249B1 (ko) 브로드캐스팅 멀티플라이 최적화 방법 및 이를 이용한 하드웨어 가속기, 이를 이용한 컴퓨팅 장치
KR20200043617A (ko) 고효율 연산 처리를 위한 인공 신경망 모듈 및 이의 스케쥴링 방법
CN113885941A (zh) 一种奇异值分解运算实现方法、装置以及相关设备
US20220179924A1 (en) Information processing apparatus, information processing method, and computer-readable recording medium
KR20230014082A (ko) 병렬 프로세서를 위한 컴파일러

Legal Events

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