KR20210071471A - 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법 - Google Patents

뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법 Download PDF

Info

Publication number
KR20210071471A
KR20210071471A KR1020190161676A KR20190161676A KR20210071471A KR 20210071471 A KR20210071471 A KR 20210071471A KR 1020190161676 A KR1020190161676 A KR 1020190161676A KR 20190161676 A KR20190161676 A KR 20190161676A KR 20210071471 A KR20210071471 A KR 20210071471A
Authority
KR
South Korea
Prior art keywords
feature map
matrix multiplication
initial weight
generating
multiplication operation
Prior art date
Application number
KR1020190161676A
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 KR1020190161676A priority Critical patent/KR20210071471A/ko
Priority to US16/851,361 priority patent/US11899744B2/en
Priority to EP20181975.2A priority patent/EP3832498A1/en
Priority to CN202010637961.9A priority patent/CN112926731A/zh
Publication of KR20210071471A publication Critical patent/KR20210071471A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/213Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

행렬 곱셈 연산을 수행하는 뉴럴 네트워크 장치에 있어서, 적어도 하나의 프로그램이 저장된 메모리 및 적어도 하나의 프로그램을 실행함으로써 연산을 수행하는 프로세서를 포함한다.
프로세서는 변형 연산 및 전치 연산이 행렬 곱셈 연산 이후 또는 이전에 수행되는지 여부에 따라 상기 초기 웨이트를 열 방향 또는 행 방향 중 어느 방향으로 분할할지 여부를 결정하고, 결정된 방향으로 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성할 수 있다. 또한, 프로세서는 입력 피처맵 및 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하며, 복수의 중간 피처맵들에 기초하여 최종 피처맵을 생성할 수 있다.

Description

뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법{APPARATUS AND METHOD FOR PERFORMING MATRIX MULTIPLICATION OPERATION OF NEURAL NETWORK}
뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법에 관한다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크를 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하고 있다.
최근에는, 심층 신경망(Deep Neural Network, DNN)을 저전력으로 효율적으로 사용하기 위한 하드웨어 가속기에 대한 연구가 활발히 진행되고 있다. 뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다.
특히 저전력 및 저성능으로 구현되는 디바이스에서, 뉴럴 네트워크를 이용하여 대량의 입력 데이터를 실시간으로 분석하여 원하는 정보를 추출하기 위해서는 뉴럴 네트워크에 관한 연산을 효율적으로 처리할 수 있는 기술이 요구된다.
뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법을 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다. 해결하려는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 개시의 제1 측면은, 행렬 곱셈 연산을 수행하는 뉴럴 네트워크 장치에 있어서, 적어도 하나의 프로그램이 저장된 메모리; 및 상기 적어도 하나의 프로그램을 실행함으로써 연산을 수행하는 프로세서를 포함하고, 상기 프로세서는, 입력 피처맵 및 초기 웨이트(weight)를 상기 메모리로부터 획득하고, 변형(reshape) 연산 및 전치(transpose) 연산이 행렬 곱셈 연산 이후 또는 이전에 수행되는지 여부에 따라 상기 초기 웨이트를 열(column) 방향 또는 행(row) 방향 중 어느 방향으로 분할할지 여부를 결정하고, 상기 결정된 방향으로 상기 초기 웨이트를 헤드(head) 수만큼 분할하여 복수개의 분할 웨이트들을 생성하고, 상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하며, 상기 복수의 중간 피처맵들에 기초하여 최종 피처맵을 생성하는 것인, 뉴럴 네트워크 장치를 제공할 수 있다.
또한, 상기 프로세서는, 변형 연산 및 전치 연산이 행렬 곱셈 연산 이후에 수행되는 경우, 상기 초기 웨이트의 열(column) 방향으로 상기 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성하고, 상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하며, 상기 복수의 중간 피처맵들을 컨캐터네이트(concatenate)하여 최종 피처맵을 생성하는 것인, 뉴럴 네트워크 장치를 제공할 수 있다.
또한, 상기 프로세서는, 변형 연산 및 전치 연산이 행렬 곱셈 연산 이전에 수행되는 경우, 상기 초기 웨이트의 행(row) 방향으로 상기 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성하고, 상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하며, 상기 복수의 중간 피처맵들의 요소 별 합산(element-wise sum)을 통해 최종 피처맵을 생성하는 것인, 뉴럴 네트워크 장치를 제공할 수 있다.
또한, 상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산은, 1차원 컨벌루션 또는 2차원 컨벌루션 연산 중 어느 하나인 것인, 뉴럴 네트워크 장치를 제공할 수 있다.
또한, 상기 프로세서는, 웨이트 분할기(weight divider);를 더 포함하고, 상기 웨이트 분할기는 상기 초기 웨이트를 상기 헤드 수만큼 열 방향 또는 행 방향 중 어느 한 방향으로 분할하는 것인, 뉴럴 네트워크 장치를 제공할 수 있다.
본 개시의 제 2 측면은, 뉴럴 네트워크 장치에 행렬 곱셈 연산을 수행하는 방법에 있어서, 입력 피처맵 및 초기 웨이트를 상기 메모리로부터 획득하는 단계; 변형 연산 및 전치 연산이 행렬 곱셈 연산 이후 또는 이전에 수행되는지 여부에 따라 상기 초기 웨이트를 열 방향 또는 행 방향 중 어느 방향으로 분할할지 여부를 결정하는 단계; 상기 결정된 방향으로 상기 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성하는 단계; 상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하는 단계; 및 상기 복수의 중간 피처맵들에 기초하여 최종 피처맵을 생성하는 단계를 제공할 수 있다.
또한, 본 개시의 제 3 측면은, 제 2 측면의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
전술한 본 개시의 과제 해결 수단에 의하면, 변형(reshape) 연산 및 전치(transpose) 연산을 수행하지 않고 행렬 곱셈 연산을 여러 번 반복하여 동일한 결과를 얻을 수 있고, 이에 따라 메모리 액세스 횟수가 감소하여 메모리 전력량을 감소시킬 수 있다.
도 1은 일 실시예에 따른 딥 뉴럴 네트워크(Deep Neural Network, 이하 DNN)에서 수행되는 연산을 설명하는 도면이다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 입력 피처맵 및 출력 피처맵의 관계를 설명하기 위한 도면이다.
도 3a 내지 도 3b는 일 실시예에 변형 연산 및 전치 연산을 설명하기 위한 예시적인 도면이다.
도 4a는 일 실시예에 따른 셀프-어텐션을 설명하기 위한 예시적인 도면이다.
도 4b는 일 실시예에 따른 멀티헤드 셀프 어텐션을 설명하기 위한 예시적인 도면이다.
도 5a는 일 실시예에 따른 변형 연산 및 전치 연산을 수행하는 경우에 메모리에 액세스하는 횟수를 설명하기 위한 도면이다.
도 5b는 일 실시예에 따른 변형 연산 및 전치 연산을 수행하지 않는 경우 메모리에 액세스하는 횟수를 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 웨이트 분할기를 이용하여 행렬 곱셈을 수행하는 과정을 설명하기 위한 예시적인 도면이다.
도 7은 일 실시예에 따른 웨이트가 열 방향으로 분할된 경우 행렬 곱셈 수행 결과를 보여주는 예시적인 도면이다.
도 8은 일 실시예에 따른 웨이트가 행 방향으로 분할된 경우 행렬 곱셈 수행 결과를 보여주는 예시적인 도면이다.
도 9는 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 10은 일 실시예에 따른 뉴럴 네트워크 장치에서 행렬 곱셈 연산을 수행하는 방법의 흐름도이다.
본 명세서에서 다양한 곳에 등장하는 "일부 실시예에서" 또는 "일 실시예에서" 등의 어구는 반드시 모두 동일한 실시예를 가리키는 것은 아니다.
본 개시의 일부 실시예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들의 일부 또는 전부는, 특정 기능들을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 또한, 예를 들어, 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단” 및 “구성”등과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다.
또한, 도면에 도시된 구성 요소들 간의 연결 선 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것일 뿐이다. 실제 장치에서는 대체 가능하거나 추가된 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들에 의해 구성 요소들 간의 연결이 나타내어질 수 있다.
이하 첨부된 도면을 참고하여 본 개시를 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 딥 뉴럴 네트워크(Deep Neural Network, 이하 DNN)에서 수행되는 연산을 설명하는 도면이다.
도 1을 참조하면, DNN(100)은 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다.
예를 들어, 도 1에 도시된 바와 같이, DNN(100)은 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함할 수 있다. DNN(100)은 유효한 정보를 처리할 수 있는 보다 많은 레이어들을 포함하므로, DNN(100)은 싱글 레이어를 갖는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, DNN(100)은 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 DNN(100)은 더 적거나 많은 레이어들을 포함하거나, 더 적거나 많은 채널들을 포함할 수 있다. 즉, DNN(100)은 도 1에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
DNN(100)에 포함된 레이어들 각각은 복수의 채널들을 포함할 수 있다. 채널은 뉴런(neuron), 프로세싱 엘리먼트(Processing element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 1에 도시된 바와 같이, Layer 1은 2개의 채널들(노드들), Layer 2 및 Layer 3 각각은 3개의 채널들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 DNN(100)에 포함된 레이어들 각각은 다양한 개수의 채널들(노드들)을 포함할 수 있다.
DNN(100)의 레이어들 각각에 포함된 채널들은 서로 연결되어 데이터를 처리할 수 있다. 예를 들어, 하나의 채널은 다른 채널들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 채널들로 출력할 수 있다.
채널들 각각의 입력 및 출력 각각은 입력 액티베이션 및 출력 액티베이션이라고 지칭될 수 있다. 즉, 액티베이션은 한 채널의 출력임과 동시에, 다음 레이어에 포함된 채널들의 입력에 해당되는 파라미터일 수 있다. 한편, 채널들 각각은 이전 레이어에 포함된 채널들로부터 수신된 액티베이션들 및 웨이트들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 채널에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 채널들 간의 연결관계에 할당되는 값일 수 있다.
채널들 각각은 입력을 수신하여 출력 액티베이션을 출력하는 연산 유닛(computational unit) 또는 프로세싱 엘리먼트(processing element)에 의해 처리될 수 있고, 채널들 각각의 입력-출력은 매핑될 수 있다. 예를 들어,
Figure pat00001
는 액티베이션 함수(activation function)이고,
Figure pat00002
는 (i-1)번째 레이어에 포함된 k번째 채널로부터 i번째 레이어에 포함된 j번째 채널로의 웨이트며,
Figure pat00003
는 i번째 레이어에 포함된 j번째 채널의 바이어스(bias)고,
Figure pat00004
는 i번째 레이어의 j번째 채널의 액티베이션이라고 할 때, 액티베이션
Figure pat00005
는 다음과 같은 수학식 1을 이용하여 계산될 수 있다.
Figure pat00006
도 1에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 채널(CH 1)의 액티베이션은
Figure pat00007
로 표현될 수 있다. 또한,
Figure pat00008
는 수학식 1에 따라
Figure pat00009
의 값을 가질 수 있다. 다만, 앞서 설명한 수학식 1은 DNN(100)에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다. 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 합(sum)에 액티베이션 함수를 적용한 값을 Rectified Linear Unit (ReLU)을 통과시킴으로써 획득된 값일 수 있다.
일 실시예에서, DNN(100)은, 표현자 및 물성 값을 이용한 학습을 통해, 표현자와 물성 간의 관계를 규정하는 인자를 결정할 수 있다. 즉, DNN(100)을 구성하는 Layer 1 내지 Layer 4 중에서, 표현자는 입력 레이어인 Layer 1이 되고, 물성 값은 출력 레이어인 Layer 4가 되며, 인자는 적어도 하나의 히든 레이어(Layer 2 및/또는 Layer 3)이 될 수 있다.
DNN(100)에서는 입력 레이어에서 표현자를 입력 데이터로 이용하여 연산을 수행하고, 연산 수행 결과를 기초로 물성 값을 출력 데이터로 생성할 수 있다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 입력 피처맵 및 출력 피처맵의 관계를 설명하기 위한 도면이다.
도 2를 참조하면, 뉴럴 네트워크의 어느 레이어(200)에서, 제 1 피처맵(FM1)은 입력 피처맵에 해당될 수 있고, 제 2 피처맵(FM2)은 출력 피처맵에 해당될 수 있다. 피처맵은 입력 데이터의 다양한 특징들이 표현된 데이터 세트를 의미할 수 있다. 피처맵들(FM1, FM2)은 2차원 매트릭스의 엘리먼트들을 갖거나 또는 3차원 매트릭스의 엘리먼트들을 가질 수 있고, 각각의 엘리먼트에는 픽셀 값이 정의될 수 있다. 피처맵들(FM1, FM2)은 너비(W)(또는 열(column)이라고 함), 높이(H)(또는 행(row)이 라고 함) 및 깊이(D)를 가진다. 이때, 깊이(D)는 채널들의 개수에 해당될 수 있다.
제 1 피처맵(FM1) 및 웨이트에 대한 컨벌루션 연산이 수행될 수 있고, 그 결과 제 2 피처맵(FM2)이 생성될 수 있다. 웨이트는 각 엘리먼트에 정의된 웨이트로 제 1 피처맵(FM1)과 컨벌루션 연산을 수행함으로써 제 1 피처맵(FM1)의 특징들을 필터링한다. 웨이트는 제 1 피처맵(FM1)을 슬라이딩 윈도우 방식으로 시프트하면서 제 1 피처맵(FM1)의 윈도우들(또는 타일이라고도 함)과 컨벌루션 연산을 수행한다. 각 시프트 동안, 웨이트에 포함된 요소들 각각은 제 1 피처맵(FM1) 내 중첩된 윈도우의 픽셀 값들 각각과 곱해지고 더해질 수 있다. 제 1 피처맵(FM1)과 웨이트가 컨벌루션됨에 따라, 제 2 피처맵(FM2)의 하나의 채널이 생성될 수 있다. 도 1에는 하나의 웨이트가 도시되었으나, 실제로는 복수의 웨이트들이 제 1 피처맵(FM1)과 각각 컨벌루션되어, 복수의 채널들의 제 2 피처맵(FM2)이 생성될 수 있다.
한편, 제 2 피처맵(FM2)은 다음 레이어의 입력 피처맵에 해당될 수 있다. 예를 들어, 제 2 피처맵(FM2)은 풀링(또는 서브샘플링) 레이어의 입력 피처맵이 될 수 있다.
도 2에서는 설명의 편의를 위하여 뉴럴 네트워크의 개략적인 아키텍처에 대해서만 도시되어 있다. 하지만, 뉴럴 네트워크는 도시된 바와 달리, 보다 많거나 적은 개수의 레이어들, 피처맵들, 웨이트들 등으로 구현될 수 있고, 그 크기들 또한 다양하게 변형될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
도 3a 내지 도 3b는 일 실시예에 변형 연산 및 전치 연산을 설명하기 위한 예시적인 도면이다.
도 3a에는 변형(reshape) 연산 과정이 도시된다. 변형 연산은 특정 데이터의 구조를 변경하는 과정이다. 특정 데이터가 변형되면 데이터의 구조는 변경되나, 데이터의 순서는 변경되지 않는다.
예를 들어, 8개의 요소로 구성된 1차원 데이터(311) [1, 2, 3, 4, 5, 6, 7, 8]을 가정한다. 1차원 데이터(311)를 (2, 4)의 데이터 구조로 변형하게 되면, 1차원 데이터(311)는 2차원 데이터(312) [[1, 2, 3, 4], [5, 6, 7, 8]]로 구조가 변경된다.
또는, 1차원 데이터(311)를 (2, 2, 2)의 데이터 구조로 변형하게 되면, 1차원 데이터(311)는 3차원 데이터(313) [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]로 구조가 변경된다.
도 3b에는 전치(transpose) 연산 과정이 도시된다. 전치 연산은 행과 열의 값을 교환하여 새로운 행렬을 얻는 과정이다. 특정 데이터가 전치되면, 특정 데이터의 최초 구조에 따라 데이터의 순서만 변경되거나, 데이터의 순서 및 데이터의 구조 모두 변경될 수 있다.
예를 들어, 2차원 데이터(321) [[1, 2], [3, 4]]를 전치하면, 2차원 데이터(322) [[1, 3], [2, 4]]로 변경된다. 이 경우, 데이터의 순서는 변경되나, 데이터의 구조는 이전과 동일하다.
또는, 2차원 데이터(323) [[1, 2], [3, 4], [5, 6]]를 전치하면, 2차원 데이터(324) [[1, 3, 5], [2, 4, 6]]으로 변경된다. 이 경우, 데이터의 순서뿐만 아니라 데이터의 구조도 변경된다. 즉, (3, 2) 구조의 2차원 데이터(323)가, (2, 3) 구조의 2차원 데이터(324)로 변경된다.
도 4a는 일 실시예에 따른 셀프-어텐션을 설명하기 위한 예시적인 도면이다.
셀프 어텐션(Self-Attention)을 이용하면 문장 안에서 단어들 간의 관계를 측정할 수 있다. 이때 각 단어를 기준으로 다른 단어들과의 관계 값을 계산한다. 이 값을 어텐션 스코어(attention score)라 부른다. 관계도가 큰 단어 간의 어텐션 스코어는 높게 나올 것이다. 어텐션 스코어를 하나의 테이블로 만든 것을 어텐션 맵이라 부른다.
트랜스포머(Transformer) 모델에서는 단어 벡터끼리 내적 연산을 함으로써 어텐션 스코어를 구한다. 특정 단어에 대해 다른 단어들과의 어텐션 스코어를 구한 후, 어텐션 스코어가 모여 있는 어텐션 맵에 소프트맥스 함수를 적용한다. 그 결과, 어텐션 맵에는 특정 단어에 대한 다른 단어와의 연관도 값이 확률로 나타난다.
어탠션 맵의 확률값과 기존의 각 단어 벡터를 가중합(weighted sum)한다. 가중합이란 각 확률값과 각 단어 벡터를 곱한 후 더하는 연산이다. 가중합 결과는 특정 단어에 대한 벡터값으로 사용된다.
도 4b는 일 실시예에 따른 멀티헤드 셀프 어텐션을 설명하기 위한 예시적인 도면이다.
멀티헤드 셀프 어텐션(Multi head Self-Attention)은 어텐션 맵을 복수개 만들어 다양한 특징 값에 대한 어텐션을 확인할 수 있는 방법이다. 멀티헤드 셀프 어텐션은, 트랜스포머(Transformer) 모델, ASR(Automatic Speech Recognition) 모델 등에 이용될 수 있으나, 이에 제한되지 않는다.
멀티헤드 셀프 어텐션은 내적(Scaled Dot-Product) 어텐션 구조가 중첩된 형태를 갖는다. 내적 어텐션의 입력은 query(질의), key(키), value(값)를 포함한다. 예를 들어, 영어사전을 통해 특정 단어의 의미를 찾을 때, 특정 단어는 query에 해당하고, 사전에 등록된 단어는 key에 해당하며, key 단어의 의미는 value에 해당할 수 있다.
멀티헤드 셀프 어텐션을 구하기 위해, value(V), key(K), query(Q)에 대한 특징 값은 각각 헤드 수(h)만큼 분할되어, 제1 선형 층(Linear layer)(410)과 내적 어텐션들을 거쳐 컨캐터네이트(concatenate)된다. 이후, 컨캐터네이트된 값이 최종적으로 제2 선형층(420)을 거쳐 나오면 멀티헤드 셀프 어텐션을 구할 수 있다.
일 실시예에서, 제1 선형층(410) 및 제2 선형층(420)에서는 행렬 곱셈(matrix multiplication) 연산, 변형(reshape) 연산 및 전치(transpose) 연산이 수행될 수 있다. 구체적으로, 제1 선형층(410)에서는 변형 연산 및 전치 연산이 행렬 곱셈 연산 이후에 수행되고, 제2 선형층(420)에서는 변형 연산 및 전치 연산이 행렬 곱셈 연산 이전에 수행될 수 있다.
이하에서는 제1 선형층(410) 및 제2 선형층(420)에서 변형 연산 및 전치 연산을 수행하지 않고, 행렬 곱셈 연산을 이용하여 멀티헤드 셀프 어텐션을 구하는 방법에 대해 설명하기로 한다.
도 5a는 일 실시예에 따른 변형 연산 및 전치 연산을 수행하는 경우에 메모리에 액세스하는 횟수를 설명하기 위한 도면이다.
도 5a는 멀티헤드 셀프 어텐션을 구하는 과정의 일부로서, 도 4b의 제1 선형층(410)에서 수행되는 과정일 수 있다.
도 5a를 참조하면, 입력 피처맵은 (B, L, H) 구조를 갖는다. (B, L, H) 구조에서 B는 배치(batch) 사이즈, L은 입력 피처맵의 행(row), H는 입력 피처맵의 열(column)을 나타낸다.
(B, L, H) 구조의 입력 피처맵과, (H, H) 구조의 웨이트 간의 행렬 곱셈 연산이 수행될 수 있다. 웨이트는 H행 및 H열을 갖는 구조이다. 행렬 곱셈 연산 수행 결과, (B, L, H) 구조의 제1 중간 피처맵이 생성된다. 제1 중간 피처맵에 대해 변형 연산이 수행되어 (B, L, S, H/S) 구조의 제2 중간 피처맵이 생성된다. 제2 중간 피처맵에 대해 전치 연산이 수행되어 최종적으로 (B, H/S, L, S) 구조의 출력 피처맵이 생성된다.
도 5a의 (B, L, H) 구조의 입력 피처맵으로부터 (B, H/S, L, S) 구조의 출력 피처맵이 생성되는 과정에서는 메모리(예를 들어, SRAM 또는 DRAM)에 대해 총 4번의 읽기/쓰기 과정이 요구된다.
도 5b는 일 실시예에 따른 변형 연산 및 전치 연산을 수행하지 않는 경우 메모리에 액세스하는 횟수를 설명하기 위한 도면이다.
도 5b 역시 멀티헤드 셀프 어텐션을 구하는 과정의 일부로서, 도 4b의 제1 선형층(410)에서 수행되는 과정일 수 있다.
도 5b를 참조하면, 입력 피처맵은 (B, L, H) 구조를 갖는다. (B, L, H) 구조에서 B는 배치(batch) 사이즈, L은 입력 피처맵의 행(row), H는 입력 피처맵의 열(column)을 나타낸다.
도 5b에서는, (B, L, H) 구조의 입력 피처맵과 (H, H) 구조의 초기 웨이트 간의 행렬 곱셈 연산이 수행되는 대신, (H, H) 구조의 초기 웨이트가 (H, H/S) 구조를 갖는 분할 웨이트 S개로 분할된다.
(B, L, H) 구조의 입력 피처맵과 (H, H/S) 구조의 분할 웨이트(S개) 간의 행렬 곱셈 연산이 수행된다. 행렬 곱셈 연산 수행 결과, (B, L, H/S) 구조의 중간 피처맵 S개가 생성된다. (B, L, H/S) 구조의 중간 피처맵 S개는 컨캐터네이트(concatenate)되어 최종적으로 (B, H/S, L, S) 구조의 출력 피처맵이 생성된다.
도 5b의 (B, L, H) 구조의 입력 피처맵으로부터 (B, H/S, L, S) 구조의 출력 피처맵이 생성되는 과정에서는 메모리(예를 들어, SRAM 또는 DRAM)에 대해 총 2번의 읽기/쓰기 과정이 요구된다.
도 5a의 입력 피처맵 및 출력 피처맵의 구조는, 도 5b의 입력 피처맵 및 출력 피처맵 구조와 동일하다. 도 5a와 도 5b의 메모리 액세스 횟수를 비교하면, 도 5b에서는 전치 연산이 수행되지 않아 도 5a에 비해 메모리에 액세스하는 횟수가 감소하게 된다. 도 5b에서는 도 5a에 비해 메모리 액세스 횟수가 두 번 감소하였고, 이에 따라 2*BLH(=B*L*S*H/S)만큼의 읽기/쓰기 데이터가 감소하게 된다. 한편, 배치 사이즈가 증가할수록, 도 5a에 비해 도 5b에 따른 방법의 메모리 액세스 횟수의 감소 효과가 더 크다.
도 6은 일 실시예에 따른 웨이트 분할기를 이용하여 행렬 곱셈을 수행하는 과정을 설명하기 위한 예시적인 도면이다.
도 6을 참조하면, 메모리(610)에는 초기 웨이트 및 입력 피처맵이 저장된다. 이하에서, 초기 웨이트는 512행 및 512열을 갖는 (512, 512) 구조이고, 입력 피처맵은 T행(T는 자연수) 512열을 갖는 (T, 512) 구조인 것으로 한다.
메모리(610)에 저장된 (512, 512) 구조의 초기 웨이트는 웨이트 분할기(620)에 입력된다. 웨이트 분할기(620)는 초기 웨이트를 복수의 분할 웨이트들로 분할할 수 있다. 웨이트 분할기(620)는 초기 웨이트를 열(column) 방향 또는 행(row) 방향 중 어느 한 방향으로 분할할 수 있다.
구체적으로, 웨이트 분할기(620)는 변형 연산 및 전치 연산이 행렬 곱셈 연산 이후 또는 이전에 수행되는지 여부에 따라, (512, 512) 구조의 초기 웨이트를 열 방향 또는 행 방향 중 어느 방향으로 분할할지 여부를 결정할 수 있다.
예를 들어, 변형 연산 및 전치 연산이 행렬 곱셈 연산 이후에 수행되는 경우, 웨이트 분할기(620)는 (512, 512) 구조의 초기 웨이트를 열 방향으로 분할하여 복수개의 분할 웨이트를 생성할 수 있다. 또는, 변형 연산 및 전치 연산이 행렬 곱셈 연산 이전에 수행되는 경우, 웨이트 분할기(620)는 (512, 512) 구조의 초기 웨이트를 행 방향으로 분할하여, 복수개의 분할 웨이트를 생성할 수 있다.
또한, 웨이트 분할기(620)는 (512, 512) 구조의 초기 웨이트를 결정된 방향으로 헤드 수만큼 분할할 수 있다. 예를 들어, 헤드 수가 16개인 경우, 초기 웨이트의 분할 방향에 따라 (512, 32) 구조를 갖는 16개의 분할 웨이트(열 방향 분할) 또는 (32, 512) 구조를 갖는 16개의 분할 웨이트(행 방향 분할)가 생성될 수 있다.
웨이트 분할기(620)에서 생성된 분할 웨이트들 각각은 PE(Processing Element)로 전달된다. PE는 웨이트 분할기(620)로부터 수신한 분할 웨이트와, 메모리(610)로부터 수신한 입력 피처맵에 대한 행렬 곱셈 연산을 수행할 수 있다. 행렬 곱셈 연산 수행 결과, PE로부터 중간 피처맵이 출력된다.
예를 들어, 웨이트 분할기(620)가 (512, 512) 구조의 초기 웨이트를 열 방향으로 분할한 경우, 웨이트 분할기(620)는 (512, 32) 구조를 갖는 제1 내지 제 16 분할 웨이트 각각을 제1 PE(6301) 내지 제16 PE(6316)로 전달할 수 있다. 또한, 제1 PE(6301) 내지 제16 PE(6316)는 메모리(610)로부터 입력 피처맵을 수신할 수 있다.
제1 PE(6301)는 (512, 32) 구조의 제1 분할 웨이트와 (T, 512) 구조의 입력 피처맵 간의 행렬 곱셈 연산을 수행하고, (T, 32) 구조의 제1 중간 피처맵을 출력할 수 있다. 마찬가지 방식으로, 제2 PE(6302) 내지 제16 PE(6316)는 각각 (T, 32) 구조의 제2 내지 제16 중간 피처맵을 출력할 수 있다.
한편, 도 6은 웨이트 분할기(620)가 초기 웨이트를 열 방향으로 분할한 경우에 대해 설명하고 있으나, 웨이트 분할기(620)가 초기 웨이트를 행 방향으로 분할한 경우에도 상술한 내용이 적용된다.
초기 웨이트가 열 방향으로 분할된 경우, 제1 PE(6301) 내지 제16 PE(6316)에서 출력된 (T, 32) 구조의 제1 내지 제16 중간 피처맵들이 컨캐터네이트됨으로써 최종 피처맵이 생성될 수 있다. 최종 피처맵은 (16, T, 32) 구조를 갖는다. 일 실시예에서 제1 내지 제16 중간 피처맵들이 메모리(610)의 연속된 위치에 순차적으로 저장됨으로써, 제1 내지 제16 중간 피처맵들이 컨캐터네이트될 수 있다.
초기 웨이트가 행 방향으로 분할된 경우, 제1 PE(6301) 내지 제16 PE(6316)에서 출력된 제1 내지 제16 중간 피처맵들의 요소 별 합산(element-wise sum)을 통해 최종 피처맵이 생성될 수 있다. 요소 별 합산 연산은 PE에서 수행될 수 있다.
한편, 도 6에서는 헤드 수를 16으로 가정하여 16개의 PE가 이용되는 것으로 설명하였으나, 헤드 수에 따라 이용되는 PE의 개수는 적거나 많아질 수 있다. 또한, 하나의 입력 피처맵에 대한 행렬 곱셈 연산을 수행할 때 적어도 하나의 PE가 여러 번 사용될 수 있다.
도 7은 일 실시예에 따른 웨이트가 열 방향으로 분할된 경우 행렬 곱셈 수행 결과를 보여주는 예시적인 도면이다.
도 7은 변형 연산 및 전치 연산이 행렬 곱셈 연산 이후에 수행되는 경우를 설명하는 도면이다.
도 7을 참조하면, 입력 피처맵(710)은 (1, 4, 6) 구조를 갖는다. 즉, 입력 피처맵(710)은 배치 사이즈 1, 4행, 6열의 구조를 갖는다. 초기 웨이트(720)는 (1, 6, 6) 구조를 갖는다. 즉, 초기 웨이트(720)는 배치 사이즈 1, 6행, 6열의 구조를 갖는다.
(1, 4, 6) 구조의 입력 피처맵(710)과 (1, 6, 6) 구조의 초기 웨이트(720)에 대한 행렬 곱셈 연산이 수행된 후, 연산 결과에 대해 변형 연산 및 전치 연산이 수행될 수 있다. 그 결과, (1, 3, 4, 2) 구조의 최종 피처맵(740)이 생성될 수 있다. 즉, 최종 피처맵(740)은 배치 사이즈 1, 3채널, 4행, 2열의 구조를 갖는다.
한편, 초기 웨이트(720)는 열 방향으로 분할됨으로써 복수개의 분할 웨이트들이 생성될 수 있다. 이 때, 생성되는 분할 웨이트들의 개수는 헤드 수에 따라 결정될 수 있다. 도 7은 헤드 수가 3인 경우에 대한 예시로서, (1, 6, 6) 구조의 초기 웨이트(720)는 (1, 6, 2) 구조의 제1 내지 제3 분할 웨이트(731 내지 733)로 분할될 수 있다.
(1, 4, 6) 구조의 입력 피처맵(710)과 (1, 6, 2) 구조의 제1 내지 제3 분할 웨이트(731 내지 733) 간의 행렬 곱셈 연산이 수행되고, 연산 결과가 컨캐터네이트됨으로써 (1, 3, 4, 2) 구조의 최종 피처맵(740)이 생성될 수 있다.
본 개시에서는, 변형 연산 및 전치 연산이 행렬 곱셈 연산 이후에 수행되는 경우, 초기 웨이트(720)를 열 방향으로 분할하여 제1 내지 제3 분할 웨이트(731 내지 733)를 생성하고, 입력 피처맵(710)과 제1 내지 제3 분할 웨이트(731 내지 733) 간의 행렬 곱셈 연산을 수행함으로써, 변형 연산 및 전치 연산을 수행한 경우와 동일한 최종 피처맵(740)을 생성할 수 있다.
도 8은 일 실시예에 따른 웨이트가 행 방향으로 분할된 경우 행렬 곱셈 수행 결과를 보여주는 예시적인 도면이다.
도 8을 참조하면, 입력 피처맵(810)은 (1, 3, 4, 2) 구조를 갖는다. 즉, 입력 피처맵(810)은 배치 사이즈 1, 3채널, 4행, 2열의 구조를 갖는다. 입력 피처맵(810)에 대해 변형 연산 및 전치 연산이 되면, 입력 피처맵(811)은 (1, 4, 6) 구조를 갖는다. 즉, 입력 피처맵(811)은 배치 사이즈 1, 4행, 6열의 구조를 갖는다. 초기 웨이트(820)는 (1, 6, 6) 구조를 갖는다. 즉, 초기 웨이트(820)는 배치 사이즈 1, 6행, 6열의 구조를 갖는다.
(1, 4, 6) 구조의 입력 피처맵(810)과 (1, 6, 6) 구조의 초기 웨이트(820)에 대한 행렬 곱셈 연산이 수행되면, 그 결과 (1, 4, 6)의 최종 피처맵(850)이 생성될 수 있다. 즉, 최종 피처맵(850)은 배치 사이즈 1, 4행, 6열의 구조를 갖는다.
한편, 초기 웨이트(820)는 열 방향으로 분할됨으로써 복수개의 분할 웨이트들이 생성될 수 있다. 이 때, 생성되는 분할 웨이트들의 개수는 헤드 수에 따라 결정될 수 있다. 도 8은 헤드 수가 3인 경우에 대한 예시로서, (1, 6, 6) 구조의 초기 웨이트(820)는 (1, 6, 2) 구조의 제1 내지 제3 분할 웨이트(831 내지 833)로 분할될 수 있다.
(1, 3, 4, 2) 구조의 입력 피처맵(810)과 (1, 2, 6) 구조의 제1 내지 제3 분할 웨이트(731 내지 733) 간의 행렬 곱셈 연산이 수행되고, 그 결과 (1, 4, 6) 구조의 제1 내지 제3 중간 피처맵(841 내지 843)이 생성될 수 있다. 제1 내지 제3 중간 피처맵(841 내지 843)들의 요소 별 합산을 통해 (1, 4, 6) 구조의 최종 피처맵(850)이 생성될 수 있다.
본 개시에서는, 변형 연산 및 전치 연산이 행렬 곱셈 연산 이전에 수행되는 경우, 초기 웨이트(820)를 행 방향으로 분할하여 제1 내지 제3 분할 웨이트(831 내지 833)를 생성하고, 입력 피처맵(810)과 제1 내지 제3 분할 웨이트(831 내지 833) 간의 행렬 곱셈 연산을 수행함으로써, 변형 연산 및 전치 연산을 수행한 경우와 동일한 최종 피처맵(850)을 생성할 수 있다.
도 9는 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
뉴럴 네트워크 장치(900)는 PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있고, 구체적인 예로서 뉴럴 네트워크를 이용한 음성 인식, 영상 인식, 영상 분류 등을 수행하는 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등에 해당될 수 있으나, 이에 제한되지 않는다. 나아가서, 뉴럴 네트워크 장치(900)는 위와 같은 디바이스에 탑재되는 전용 하드웨어 가속기(HW accelerator)에 해당될 수 있고, 뉴럴 네트워크 장치(900)는 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등과 같은 하드웨어 가속기일 수 있으나, 이에 제한되지 않는다.
도 9를 참조하면, 뉴럴 네트워크 장치(900)는 프로세서(910) 및 메모리(920)를 포함한다. 도 9에 도시된 뉴럴 네트워크 장치(900)에는 본 실시예들와 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(900)에는 도 9에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 당해 기술분야의 통상의 기술자에게 자명하다.
프로세서(910)는 뉴럴 네트워크 장치(900)를 실행하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 프로세서(910)는 뉴럴 네트워크 장치(900) 내의 메모리(920)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(900)를 전반적으로 제어한다. 프로세서(910)는 뉴럴 네트워크 장치(900) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
메모리(920)는 뉴럴 네트워크 장치(900) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(920)는 뉴럴 네트워크 장치(900)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(920)는 뉴럴 네트워크 장치(900)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(920)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다.
프로세서(910)는 메모리(920)로부터 뉴럴 네트워크 데이터, 예를 들어 이미지 데이터, 피처맵 데이터, 웨이트 데이터 등을 리드/라이트(read/write)하고, 리드/라이트된 데이터를 이용하여 뉴럴 네트워크를 실행한다. 뉴럴 네트워크가 실행될 때, 프로세서(910)는 출력 피처맵에 관한 데이터를 생성하기 위하여, 입력 피처맵과 웨이트 간의 컨벌루션 연산을 반복적으로 수행한다. 이때, 입력 피처맵의 채널 수, 웨이트의 채널 수, 입력 피처맵의 크기, 웨이트의 크기, 값의 정밀도(precision) 등의 다양한 팩터들에 의존하여 컨벌루션 연산의 연산량이 결정될 수 있다. 도 1에 도시된 뉴럴 네트워크(1)와 달리, 뉴럴 네트워크 장치(900)에서 구동되는 실제 뉴럴 네트워크는 보다 복잡한 아키텍처로 구현될 수 있다. 이에 따라 프로세서(910)는 수억에서 수백억에 다다를 정도로 매우 많은 연산량(operation count)의 연산들을 수행하게 되고, 프로세서(910)가 연산을 위해 메모리(920)에 액세스하는 빈도가 함께 비약적으로 증가될 수 밖에 없다. 이와 같은 연산량 부담으로 인하여 비교적 처리 성능이 낮은 스마트폰, 태블릿, 웨어러블 디바이스 등과 같은 모바일 디바이스, 임베디드(embedded) 디바이스 등에서는 뉴럴 네트워크의 처리가 원활하지 않을 수 있다.
프로세서(910)는 행렬 곱셈 연산, 변형 연산 및 전치 연산을 수행할 수 있다. 일 실시예에서 프로세서(910)는 멀티헤드 셀프 어텐션을 구하기 위해 행렬 곱셈 연산, 변형 연산 및 전치 연산을 수행할 수 있다. 멀티헤드 셀프 어텐션을 구하는 과정에서, 변형 연산 및 전치 연산은 행렬 곱셈 연산 이후 또는 이전에 수행될 수 있다.
한편, 프로세서(910)는 변형 연산 및 전치 연산을 수행하지 않고도 멀티헤드 셀프 어텐션을 구하는 과정의 일부를 수행할 수 있다. 프로세서(910)는 변형 연산 및 전치 연산이 행렬 곱셈 연산 이후 또는 이전에 수행되는지 여부에 따라 초기 웨이트를 열 방향 또는 행 방향 중 어느 방향으로 분할할지 여부를 결정하고, 결정된 방향으로 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성할 수 있다. 프로세서(910)는 입력 피처맵 및 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하며, 복수의 중간 피처맵들에 기초하여 최종 피처맵을 생성할 수 있다. 프로세서(910)는 상술한 방법으로, 변형 연산 및 전치 연산을 수행하지 않고도 멀티헤드 셀프 어텐션을 구하는 과정의 일부를 수행함으로써, 메모리(920)에 액세스 하는 횟수가 감소할 수 있다.
도 10은 일 실시예에 따른 뉴럴 네트워크 장치에서 행렬 곱셈 연산을 수행하는 방법의 흐름도이다. 도 10에 도시된, 뉴럴 네트워크 장치에서 행렬 곱셈 연산을 수행하는 방법은, 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 10의 방법에도 적용될 수 있다.
도 10을 참조하면, 단계 1010에서 뉴럴 네트워크 장치는 입력 피처맵 및 초기 웨이트를 메모리로부터 획득할 수 있다.
단계 1020에서 뉴럴 네트워크 장치는 변형 연산 및 전치 연산이 행렬 곱셈 연산 이후 또는 이전에 수행되는지 여부에 따라 초기 웨이트를 열 방향 또는 행 방향 중 어느 방향으로 분할할지 여부를 결정할 수 있다.
변형 연산 및 전치 연산이 행렬 곱셈 연산 이후에 수행되는 경우, 뉴럴 네트워크 장치는 초기 웨이트의 열(column) 방향으로 초기 웨이트를 분할할 수 있다. 또는, 변형 연산 및 전치 연산이 행렬 곱셈 연산 이전에 수행되는 경우, 뉴럴 네트워크 장치는 초기 웨이트의 행(row) 방향으로 초기 웨이트를 분할할 수 있다.
단계 1030에서 뉴럴 네트워크 장치는 단계 1020에서 결정된 방향으로 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성할 수 있다.
예를 들어, 초기 웨이트의 구조가 (512, 512)고, 헤드 수가 16개인 경우, 초기 웨이트의 분할 방향에 따라 (512, 32) 구조를 갖는 16개의 분할 웨이트(열 방향 분할) 또는 (32, 512) 구조를 갖는 16개의 분할 웨이트(행 방향 분할)가 생성될 수 있다.
단계 1040에서 뉴럴 네트워크 장치는 입력 피처맵 및 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성할 수 있다.
입력 피처맵 및 복수개의 분할 웨이트들 간의 행렬 곱셈 연산은, 1차원 컨벌루션 또는 2차원 컨벌루션 연산 중 어느 하나일 수 있다.
단계 1050에서 뉴럴 네트워크 장치는 복수의 중간 피처맵들에 기초하여 최종 피처맵을 생성할 수 있다.
단계 1020에서 초기 웨이트가 열 방향으로 분할된 경우, 뉴럴 네트워크 장치는 복수의 중간 피처맵들을 컨캐터네이트(concatenate)하여 최종 피처맵을 생성할 수 있다.
단계 1020에서 초기 웨이트가 행 방향으로 분할된 경우, 뉴럴 네트워크 장치는 복수의 중간 피처맵들의 요소 별 합산(element-wise sum)을 통해 최종 피처맵을 생성할 수 있다.
본 실시예들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈과 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
또한, 본 명세서에서, "부"는 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다.
전술한 본 명세서의 설명은 예시를 위한 것이며, 본 명세서의 내용이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 실시예의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 포함되는 것으로 해석되어야 한다.

Claims (11)

  1. 행렬 곱셈 연산을 수행하는 뉴럴 네트워크 장치에 있어서,
    적어도 하나의 프로그램이 저장된 메모리; 및
    상기 적어도 하나의 프로그램을 실행함으로써 연산을 수행하는 프로세서를 포함하고,
    상기 프로세서는,
    입력 피처맵 및 초기 웨이트(weight)를 상기 메모리로부터 획득하고,
    변형(reshape) 연산 및 전치(transpose) 연산이 행렬 곱셈 연산 이후 또는 이전에 수행되는지 여부에 따라 상기 초기 웨이트를 열(column) 방향 또는 행(row) 방향 중 어느 방향으로 분할할지 여부를 결정하고,
    상기 결정된 방향으로 상기 초기 웨이트를 헤드(head) 수만큼 분할하여 복수개의 분할 웨이트들을 생성하고,
    상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하며,
    상기 복수의 중간 피처맵들에 기초하여 최종 피처맵을 생성하는 것인, 뉴럴 네트워크 장치.
  2. 제 1 항에 있어서,
    상기 프로세서는,
    변형 연산 및 전치 연산이 행렬 곱셈 연산 이후에 수행되는 경우, 상기 초기 웨이트의 열(column) 방향으로 상기 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성하고,
    상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하며,
    상기 복수의 중간 피처맵들을 컨캐터네이트(concatenate)하여 최종 피처맵을 생성하는 것인, 뉴럴 네트워크 장치.
  3. 제 1 항에 있어서,
    상기 프로세서는,
    변형 연산 및 전치 연산이 행렬 곱셈 연산 이전에 수행되는 경우, 상기 초기 웨이트의 행(row) 방향으로 상기 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성하고,
    상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하며,
    상기 복수의 중간 피처맵들의 요소 별 합산(element-wise sum)을 통해 최종 피처맵을 생성하는 것인, 뉴럴 네트워크 장치.
  4. 제 1 항에 있어서,
    상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산은, 1차원 컨벌루션 또는 2차원 컨벌루션 연산 중 어느 하나인 것인, 뉴럴 네트워크 장치.
  5. 제 1 항에 있어서,
    상기 프로세서는,
    웨이트 분할기(weight divider);
    를 더 포함하고,
    상기 웨이트 분할기는 상기 초기 웨이트를 상기 헤드 수만큼 열 방향 또는 행 방향 중 어느 한 방향으로 분할하는 것인, 뉴럴 네트워크 장치.
  6. 뉴럴 네트워크 장치에 행렬 곱셈 연산을 수행하는 방법에 있어서,
    입력 피처맵 및 초기 웨이트를 메모리로부터 획득하는 단계;
    변형 연산 및 전치 연산이 행렬 곱셈 연산 이후 또는 이전에 수행되는지 여부에 따라 상기 초기 웨이트를 열 방향 또는 행 방향 중 어느 방향으로 분할할지 여부를 결정하는 단계;
    상기 결정된 방향으로 상기 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성하는 단계;
    상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하는 단계; 및
    상기 복수의 중간 피처맵들에 기초하여 최종 피처맵을 생성하는 단계;
    를 포함하는, 방법.
  7. 제 6 항에 있어서,
    상기 최종 피처맵을 생성하는 단계는,
    변형 연산 및 전치 연산이 행렬 곱셈 연산 이후에 수행되는 경우, 상기 초기 웨이트의 열(column) 방향으로 상기 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성하는 단계;
    상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하는 단계; 및
    상기 복수의 중간 피처맵들을 컨캐터네이트(concatenate)하여 최종 피처맵을 생성하는 단계;
    를 포함하는, 방법.
  8. 제 6 항에 있어서,
    상기 최종 피처맵을 생성하는 단계는,
    변형 연산 및 전치 연산이 행렬 곱셈 연산 이전에 수행되는 경우, 상기 초기 웨이트의 행(row) 방향으로 상기 초기 웨이트를 헤드 수만큼 분할하여 복수개의 분할 웨이트들을 생성하는 단계;
    상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산을 수행하여 복수의 중간 피처맵들을 생성하는 단계; 및
    상기 복수의 중간 피처맵들의 요소 별 합산(element-wise sum)을 통해 최종 피처맵을 생성하는 단계;
    를 포함하는, 방법.
  9. 제 6 항에 있어서,
    상기 입력 피처맵 및 상기 복수개의 분할 웨이트들 간의 행렬 곱셈 연산은, 1차원 컨벌루션 또는 2차원 컨벌루션 연산 중 어느 하나인 것인, 방법.
  10. 제 6 항에 있어서,
    상기 복수개의 분할 웨이트들을 생성하는 단계는,
    상기 초기 웨이트를 웨이트 분할기에 입력하는 단계; 및
    상기 웨이트 분할기로부터, 상기 헤드 수만큼 상기 초기 웨이트의 열 방향 또는 행 방향 중 어느 한 방향으로 분할된 상기 복수개의 분할 웨이트들을 획득하는 단계;
    를 포함하는, 방법.
  11. 제 6 항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020190161676A 2019-12-06 2019-12-06 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법 KR20210071471A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190161676A KR20210071471A (ko) 2019-12-06 2019-12-06 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법
US16/851,361 US11899744B2 (en) 2019-12-06 2020-04-17 Apparatus and method of performing matrix multiplication operation of neural network
EP20181975.2A EP3832498A1 (en) 2019-12-06 2020-06-24 Apparatus and method of performing matrix multiplication operation of neural network
CN202010637961.9A CN112926731A (zh) 2019-12-06 2020-07-03 执行神经网络的矩阵乘法运算的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190161676A KR20210071471A (ko) 2019-12-06 2019-12-06 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20210071471A true KR20210071471A (ko) 2021-06-16

Family

ID=71143529

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190161676A KR20210071471A (ko) 2019-12-06 2019-12-06 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법

Country Status (4)

Country Link
US (1) US11899744B2 (ko)
EP (1) EP3832498A1 (ko)
KR (1) KR20210071471A (ko)
CN (1) CN112926731A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102473941B1 (ko) * 2021-11-30 2022-12-06 주식회사 튜닙 딥러닝 모델 병렬 처리 장치 및 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210071471A (ko) * 2019-12-06 2021-06-16 삼성전자주식회사 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법
CN113705323B (zh) * 2021-06-15 2022-09-09 腾讯医疗健康(深圳)有限公司 图像识别方法、装置、设备以及存储介质

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301576B2 (en) 2005-10-27 2012-10-30 Ca, Inc. Weighted pattern learning for neural networks
US20140149480A1 (en) 2012-11-28 2014-05-29 Nvidia Corporation System, method, and computer program product for transposing a matrix
US10262259B2 (en) 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
US20170193361A1 (en) 2015-12-31 2017-07-06 Microsoft Technology Licensing, Llc Neural network training performance optimization framework
WO2018067603A1 (en) 2016-10-04 2018-04-12 Magic Leap, Inc. Efficient data layouts for convolutional neural networks
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10096134B2 (en) 2017-02-01 2018-10-09 Nvidia Corporation Data compaction and memory bandwidth reduction for sparse neural networks
US10860760B2 (en) 2017-04-21 2020-12-08 Intel Corporation Systems and methods for implementing learned parameter systems on a programmable integrated circuit
KR102448389B1 (ko) * 2017-05-23 2022-09-28 구글 엘엘씨 어텐션-기반의 시퀀스 변환 신경망
TWI680409B (zh) * 2017-07-08 2019-12-21 英屬開曼群島商意騰科技股份有限公司 適用於人工神經網路之矩陣及向量相乘的方法
CN110245751B (zh) * 2017-08-31 2020-10-09 中科寒武纪科技股份有限公司 一种gemm运算方法及装置
US10839259B2 (en) * 2017-10-27 2020-11-17 Google Llc Attention-based image generation neural networks
KR20190051697A (ko) 2017-11-07 2019-05-15 삼성전자주식회사 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법
US20190205761A1 (en) * 2017-12-28 2019-07-04 Adeptmind Inc. System and method for dynamic online search result generation
US11238843B2 (en) * 2018-02-09 2022-02-01 Baidu Usa Llc Systems and methods for neural voice cloning with a few samples
US11501076B2 (en) * 2018-02-09 2022-11-15 Salesforce.Com, Inc. Multitask learning as question answering
JP7130766B2 (ja) * 2018-04-05 2022-09-05 レイン・ニューロモーフィックス・インコーポレーテッド 効率的な行列乗算のためのシステムおよび方法
TW202005312A (zh) * 2018-05-15 2020-01-16 美商萊特美特股份有限公司 用於訓練基於矩陣的可微分程式的系統及方法
WO2019222751A1 (en) * 2018-05-18 2019-11-21 Google Llc Universal transformers
WO2019219964A1 (en) * 2018-05-18 2019-11-21 Deepmind Technologies Limited Reinforcement learning systems comprising a relational network for generating data encoding relationships between entities in an environment
US10853725B2 (en) * 2018-05-18 2020-12-01 Deepmind Technologies Limited Neural networks with relational memory
US10692570B2 (en) * 2018-07-11 2020-06-23 Sandisk Technologies Llc Neural network matrix multiplication in memory cells
US11562046B2 (en) * 2018-11-26 2023-01-24 Samsung Electronics Co., Ltd. Neural network processor using dyadic weight matrix and operation method thereof
US11423436B2 (en) * 2019-02-19 2022-08-23 Nec Corporation Interpretable click-through rate prediction through hierarchical attention
US11393487B2 (en) * 2019-03-28 2022-07-19 Samsung Electronics Co., Ltd. System and method for acoustic echo cancelation using deep multitask recurrent neural networks
US11164085B2 (en) * 2019-04-25 2021-11-02 Booz Allen Hamilton Inc. System and method for training a neural network system
WO2020231209A1 (en) * 2019-05-14 2020-11-19 Samsung Electronics Co., Ltd. Method, apparatus, electronic device, and computer readable storage medium for voice translation
EP3888084A4 (en) * 2019-05-16 2022-01-05 Samsung Electronics Co., Ltd. METHOD AND DEVICE FOR PROVIDING A VOICE RECOGNITION SERVICE
JP7062617B2 (ja) * 2019-06-26 2022-05-06 株式会社東芝 演算装置および演算方法
US11568238B2 (en) * 2019-06-28 2023-01-31 Amazon Technologies, Inc. Dynamic processing element array expansion
US20210081672A1 (en) * 2019-09-13 2021-03-18 Nec Laboratories America, Inc Spatio-temporal interactions for video understanding
KR20210071471A (ko) * 2019-12-06 2021-06-16 삼성전자주식회사 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102473941B1 (ko) * 2021-11-30 2022-12-06 주식회사 튜닙 딥러닝 모델 병렬 처리 장치 및 방법

Also Published As

Publication number Publication date
US20210173895A1 (en) 2021-06-10
CN112926731A (zh) 2021-06-08
US11899744B2 (en) 2024-02-13
EP3832498A1 (en) 2021-06-09

Similar Documents

Publication Publication Date Title
Zhou et al. Rethinking bottleneck structure for efficient mobile network design
US11636337B2 (en) System and method for knowledge distillation between neural networks
WO2019228122A1 (zh) 模型的训练方法、存储介质及计算机设备
US11886998B2 (en) Attention-based decoder-only sequence transduction neural networks
US20190138887A1 (en) Systems, methods, and media for gated recurrent neural networks with reduced parameter gating signals and/or memory-cell units
CN111400601B (zh) 一种视频推荐的方法及相关设备
US11899744B2 (en) Apparatus and method of performing matrix multiplication operation of neural network
JP7376731B2 (ja) 画像認識モデル生成方法、装置、コンピュータ機器及び記憶媒体
CN116134454A (zh) 用于使用知识蒸馏训练神经网络模型的方法和系统
KR20200144398A (ko) 클래스 증가 학습을 수행하는 장치 및 그의 동작 방법
CN111782826A (zh) 知识图谱的信息处理方法、装置、设备及存储介质
US20240062744A1 (en) Real-time voice recognition method, model training method, apparatuses, device, and storage medium
Chen et al. Coupled end-to-end transfer learning with generalized fisher information
JP7085600B2 (ja) 画像間の類似度を利用した類似領域強調方法およびシステム
KR20210076691A (ko) 프레임워크 간 뉴럴 네트워크의 학습을 검증하는 방법 및 장치
US20230004816A1 (en) Method of optimizing neural network model and neural network model processing system performing the same
CN112668381A (zh) 用于识别图像的方法和设备
CN114329148A (zh) 内容信息识别方法、装置、计算机设备和存储介质
CN116775836A (zh) 基于多层次注意力的教科书文本问答方法及系统
US20240126833A1 (en) Apparatus and method of performing matrix multiplication operation of neural network
KR20200072308A (ko) 뉴럴 네트워크에서 컨볼루션 연산을 수행하는 방법 및 장치
CN108280511A (zh) 一种基于卷积网络进行网络访问数据进行处理的方法
CN110543549B (zh) 语义等价性判断方法和装置
Chang et al. Deep unitary convolutional neural networks
Chung et al. Filter pruning by image channel reduction in pre-trained convolutional neural networks

Legal Events

Date Code Title Description
A201 Request for examination