KR20230062008A - 트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치 - Google Patents

트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치 Download PDF

Info

Publication number
KR20230062008A
KR20230062008A KR1020210146841A KR20210146841A KR20230062008A KR 20230062008 A KR20230062008 A KR 20230062008A KR 1020210146841 A KR1020210146841 A KR 1020210146841A KR 20210146841 A KR20210146841 A KR 20210146841A KR 20230062008 A KR20230062008 A KR 20230062008A
Authority
KR
South Korea
Prior art keywords
value
sub
softmax
determining
data
Prior art date
Application number
KR1020210146841A
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 KR1020210146841A priority Critical patent/KR20230062008A/ko
Priority to US17/887,145 priority patent/US20230138659A1/en
Priority to CN202210985760.7A priority patent/CN116090507A/zh
Priority to EP22204537.9A priority patent/EP4174723A1/en
Publication of KR20230062008A publication Critical patent/KR20230062008A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • 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/0475Generative networks
    • 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/048Activation functions
    • 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0455Auto-encoder networks; Encoder-decoder networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치가 개시된다. 전자 장치는 복수의 인코더들과 복수의 디코더들을 포함하는 트랜스포머 모델을 이용하여 추론을 수행하는 프로세서, 및 프로세서에 의해 수행되는 명령어들을 저장하는 메모리를 포함하고, 인코더들 및 디코더들 각각은 어텐션 값을 결정하는 어텐션 블록을 포함하고, 명령어들이 프로세서에 의해 수행될 때, 프로세서는 어텐션 블록에서 타일 단위로 제1 서브 소프트맥스 연산을 수행하고, 제1 서브 소프트맥스 연산의 결과 값에 기초하여 조정 인자를 결정하는 축소 연산을 수행하고, 및 축소 연산의 결과 값에 기초하여 타일 단위로 제2 서브 소프트맥스 연산을 수행한다.

Description

트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치{INFERENCE METHOD USING TRANSFORMER MODEL AND ELECTRONIC DEVICE FOR PERFORMING THE SAME}
아래의 개시는 인코더 및 디코더를 포함하는 트랜스포머 모델을 이용한 추론 기술에 관한 것이다.
트랜스포머(transformer) 모델은 기존의 seq2seq의 구조인 인코더-디코더 구조를 따르면서도, 어텐션(attention)(또는 셀프-어텐션(self-attention))으로 구현한 모델이다. 트랜스포머 모델은 순환 신경망(recurrent neural network; RNN)을 이용하지 않고, 인코더-디코더 구조를 채용하였음에도 성능이 대체적으로 순환 신경망보다 우수하다는 특징을 가지고 있다. 트랜스포머 모델은 주로 자연어 처리(natural language processing; NLP), 변역(translation), 문답(question and answering; Q&A) 등과 같은 일을 수행할 때 이용된다.
일 실시예에 따른 전자 장치는 복수의 인코더들과 복수의 디코더들을 포함하는 트랜스포머 모델을 이용하여 추론을 수행하는 프로세서; 및 상기 프로세서에 의해 수행되는 명령어들을 저장하는 메모리를 포함하고, 상기 인코더들 및 상기 디코더들 각각은, 어텐션 값을 결정하는 어텐션 블록을 포함하고, 상기 명령어들이 상기 프로세서에 의해 수행될 때, 상기 프로세서는, 상기 어텐션 블록에서 타일 단위로 제1 서브 소프트맥스 연산을 수행하고, 상기 제1 서브 소프트맥스 연산의 결과 값에 기초하여 조정 인자를 결정하는 축소 연산을 수행하고, 및 상기 축소 연산의 결과 값에 기초하여 타일 단위로 제2 서브 소프트맥스 연산을 수행할 수 있다.
상기 프로세서는, 쿼리와 키에 기초하여 제1 행렬 연산을 수행하고, 상기 제1 행렬 연산의 결과 값에 기초하여 타일 단위로 상기 제1 서브 소프트맥스 연산을 수행할 수 있다.
상기 프로세서는, 상기 제1 행렬 연산의 결과 값에 대해 스케일 및 마스크 연산을 수행하고, 상기 스케일 및 마스크 연산이 수행된 결과 값에 기초하여 타일 단위로 상기 제1 서브 소프트맥스 연산을 수행할 수 있다.
상기 프로세서는, 데이터에서 타일 단위로 제1 최대 값을 검출하고, 상기 데이터의 각 값에서 대응하는 상기 제1 최대 값을 뺀 결과 값의 제1 지수화 값을 결정하고, 타일 단위로 상기 제1 지수화 값에 대한 제1 합계 값을 결정하는 것에 의해 상기 제1 서브 소프트맥스 연산을 수행할 수 있다.
상기 프로세서는, 상기 제1 최대 값에서 상기 데이터의 전체 타일에 대한 제2 최대 값을 뺀 결과 값의 제2 지수화 값을 결정하고, 상기 제1 합계 값에 상기 데이터의 각 타일에 대응하는 상기 제2 지수화 값을 적용하여 제2 합계 값을 결정하고, 상기 제2 지수화 값을 상기 제2 합계 값으로 나눈 결과 값을 상기 조정 인자로 결정하는 것에 의해 상기 축소 연산을 수행할 수 있다.
상기 프로세서는, 상기 제1 지수화 값에 상기 조정 인자를 적용하는 것에 의해 상기 제2 서브 소프트맥스 연산을 수행할 수 있다.
다른 실시예에 따른 전차 장치는, 복수의 인코더들과 복수의 디코더들을 포함하는 트랜스포머 모델을 이용하여 추론을 수행하는 프로세서; 및 축소 연산기를 포함하고, 상기 인코더들 및 상기 디코더들 각각은, 어텐션 값을 결정하는 어텐션 블록을 포함하고, 상기 프로세서는, 상기 어텐션 블록에서 타일 단위로 제1 서브 소프트맥스 연산을 수행하고, 상기 축소 연산기는, 상기 제1 서브 소프트맥스 연산의 결과 값에 기초하여 조정 인자를 결정하는 축소 연산을 수행하고, 상기 프로세서는, 상기 축소 연산의 결과 값에 기초하여 타일 단위로 제2 서브 소프트맥스 연산을 수행할 수 있다.
일 실시예에 따른 전자 장치에 의해 수행되는 추론 방법은, 입력 데이터를 수신하는 동작; 및 복수의 인코더들과 복수의 디코더들을 포함하는 트랜스포머 모델을 이용하여 상기 입력 데이터에 대한 추론을 수행하는 것에 의해 결과 데이터를 결정하는 동작을 포함하고, 상기 결과 데이터를 결정하는 동작은, 상기 인코더들 및 상기 디코더들 각각에서, 어텐션 값을 결정하는 동작을 포함하고, 상기 어텐션 값을 결정하는 동작은, 타일 단위로 제1 서브 소프트맥스 연산을 수행하는 동작; 상기 제1 서브 소프트맥스 연산의 결과 값에 기초하여 조정 인자를 결정하는 축소 연산을 수행하는 동작; 및 상기 축소 연산의 결과 값에 기초하여 타일 단위로 제2 서브 소프트맥스 연산을 수행하는 동작을 포함할 수 있다.
도 1은 일 실시예에 따른 트랜스포머 모델을 이용하여 추론을 수행하는 전자 장치의 구성을 도시하는 도면이다.
도 2는 일 실시예에 따른 트랜스포머 모델의 구조를 설명하기 위한 도면이다.
도 3a는 일 실시예에 따른 인코더의 상세 구조를 설명하기 위한 도면이다.
도 3b는 일 실시예에 따른 디코더의 구조를 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 어텐션 블록에서의 처리 과정을 설명하기 위한 도면이다.
도 5는 행렬 곱셈과 기존의 소프트맥스 연산을 비교하여 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 제안된 소프트맥스 연산을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 제안된 소프트맥스 연산을 포함하는 어텐션 블록에서의 처리 과정을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 축소 연산기의 구성을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 축소 연산기에 의한 축소 연산의 과정을 설명하기 위한 도면이다.
도 10은 일 실시예에 따른 전자 장치에 의해 수행되는 추론 방법의 동작을 설명하기 위한 흐름도이다.
도 11은 일 실시예에 따른 트랜스포머 모델의 어텐션 블록에서 수행되는 소프트맥스 연산의 동작을 설명하기 위한 흐름도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 문서에서 설명되는 실시예들은 트랜스포머 모델의 소프트맥스 연산을 최적화하는 소프트웨어나 하드웨어로써 구현되어, 그래픽 처리 장치(graphic processing unit; GPU)나 기계 학습(machine learning)을 위한 가속기(accelerator)에 적용될 수 있다. 실시예들은 서버를 이용하여 자연어 처리, 번역, 및 문답(Q&A)과 같은 서비스를 제공하는 데이터 센터나 클라우드 환경, 또는 모바일 시스템나 임베디드 시스템(embedded system)에서 응용될 수 있다. 트랜스포머 모델은 트랜스포머 계열의 네트워크 모델이라면 모두 해당될 수 있다. 아래에서는 트랜스포머 모델을 이용한 추론(inference) 과정 위주로 실시예들을 설명하지만, 실시예들은 트랜스포머의 학습(training) 과정에도 응용될 수 있다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 트랜스포머 모델을 이용하여 추론을 수행하는 전자 장치의 구성을 도시하는 도면이다.
도 1을 참조하면, 전자 장치(100)는 주어진 입력 데이터에 대해 트랜스포머 모델을 이용하여 추론을 수행하는 것에 의해 결과 데이터를 생성하는 장치이다. 본 문서에 개시된 다양한 실시예들에 따른 전자 장치(100)는 다양한 형태의 장치가 될 수 있다. 전자 장치(100)는, 예를 들면, 휴대용 통신 장치(예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 가전 장치, 또는 서버를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치(100)는 전술한 기기들에 한정되지 않는다.
전자 장치(100)는 프로세서(110) 및 메모리(120)를 포함할 수 있다. 프로세서(110)는, 예를 들면, 소프트웨어를 실행하여 프로세서(110)에 연결된 전자 장치(100)의 하나 이상의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(110)는 명령어 또는 데이터를 메모리(120)에 저장하고, 메모리(120)에 저장된 명령어 또는 데이터를 처리하고, 결과 데이터를 메모리(120)에 저장할 수 있다. 일 실시예에 따르면, 프로세서(110)는 메인 프로세서(예: 중앙 처리 장치 또는 어플리케이션 프로세서) 또는 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(예: 그래픽 처리 장치, 신경망 처리 장치(neural processing unit; NPU), 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다.
메모리(120)는 전자 장치(100)의 하나 이상의 구성요소(예: 프로세서(110))에 의해 수행되는 명령어들과 하나 이상의 구성 요소에서 사용되는 다양한 데이터를 저장할 수 있다. 데이터는 예를 들어, 소프트웨어(예: 프로그램), 이와 관련된 명령어에 대한 입력 데이터 또는 출력 데이터, 및 트랜스포머 모델에 관한 데이터를 포함할 수 있다. 메모리(120)는 RAM, DRAM, SRAM과 같은 휘발성 메모리 및/또는 플래쉬 메모리(120)와 같은 이 기술 분야에서 알려진 비휘발성 메모리를 포함할 수 있다.
프로세서(110)는 전자 장치(100)의 전체적인 동작을 제어하고, 본 문서에서 설명되는 하나 이상의 동작을 수행할 수 있다. 일 실시예에서, 프로세서(110)는 복수의 인코더들과 복수의 디코더들을 포함하는 트랜스포머 모델을 이용하여 추론을 수행할 수 있다. 인코더들 및 디코더들 각각은, 어텐션(attention) 값을 결정하는 어텐션 블록을 포함할 수 있다. 여기서, 어텐션은 자기 자신에게 어텐션을 수행하는 셀프-어텐션(self-attention)일 수 있다. 셀프-어텐션은 예를 들어 입력 문장 내의 단어들 간의 유사도를 어텐션 값으로 결정하는 것을 의미하고, 셀프-어텐션을 통해 도출된 어텐션 값은 각각의 단어가 서로 다른 단어에게 어느 정도의 연관성을 가지고 있는지를 나타낼 수 있다. 어텐션 값은 입력 데이터의 특정 요소(예: 입력 문장 내의 특정 단어)가 다른 요소(예: 입력 문장 내의 다른 단어)와 연관되어 있을 확률 값을 나타낼 수 있다.
어텐션 블록에서는 소프트맥스(softmax) 연산이 수행된다. 소프트맥스 연산은 예를 들어 그래픽 처리 장치나 가속기의 프로세서(110)에서 처리될 수 있다. 프로세서(110)는 어텐션 블록에서 수행되는 소프트맥스 연산을 소프트맥스 연산의 전/후에 각각 수행되는 행렬 연산과 연계가 가능한 복수의 연산 과정들로 분해((decomposition) 또는 분열(fission))하여 수행할 수 있다. 프로세서(110)는 소프트맥스 연산을 해당 행렬 연산과 동일한 단위와 순서로 처리가 가능하도록 지수(exponent)의 곱셈 법칙(product rule)을 이용하여 분해할 수 있다. 프로세서(110)는 분해된 소프트맥스 연산을 소프트맥스 연산의 전/후 행렬 연산에 각각 융합(fusion)시킴으로써 소프트맥스의 처리 시간, 메모리 접근량 및 자원 소모(예: 전력 소모)을 줄일 수 있다.
소프트맥스 연산의 전/후에 각각 수행되는 행렬 연산은 타일(tile) 단위로 행렬 곱셈(matrix multiplication)이 수행되는데, 프로세서(110)는 소프트맥스 연산을 타일 단위의 행렬 연산이 가능한 연산 과정을 포함하도록 수정하고, 수정된 소프트맥스 연산을 해당 행렬 곱셈과 연계하여 수행함으로써 데이터의 읽기 및 저장을 위한 메모리 접근 횟수와 메모리 접근량을 줄일 수 있다. 기존에는 소프트맥스 연산이 행(row) 단위로 수행됨에 따라 타일 단위로 연산이 수행되는 행렬 곱셈과 별개로 독립적으로 수행되어야 했고, 이에 따라 행렬 곱셈과 소프트맥스 연산 과정이 독립적인 데이터의 읽기 및 저장 과정을 필요로 하여 메모리(120) 액세스 횟수가 많았다. 하지만, 프로세서(110)는 기존의 소프트맥스 연산을 타일 단위의 연산으로 변환하여 수행함으로써 소프트맥스 연산의 전/후에 수행되는 행렬 곱셈과 연계하여 수행할 수 있게 하여 메모리 접근 횟수를 줄일 수 있다.
일 실시예에서, 프로세서(110)는 트랜스포머 모델의 어텐션 블록에서의 기존 소프트맥스 연산을 제1 서브 소프트맥스 연산, 축소(reduction) 연산 및 제2 서브 소프트맥스 연산으로 분해하여 수행할 수 있다. 프로세서(110)는 타일 단위로 제1 서브 소프트맥스 연산을 수행하고, 제1 서브 소프트맥스 연산의 결과 값에 기초하여 조정 인자(adjustment factor)(또는 스케일 인자(scale factor))를 결정하는 축소 연산을 수행하고, 및 축소 연산의 결과 값에 기초하여 타일 단위로 제2 서브 소프트맥스 연산을 수행할 수 있다.
프로세서(110)는 쿼리(query)와 키(key)에 기초하여 제1 행렬 연산을 수행하고, 제1 행렬 연산의 결과 값에 기초하여 타일 단위로 제1 서브 소프트맥스 연산을 수행할 수 있다. 제1 행렬 연산과 제1 서브 소프트맥스 연산은 데이터를 읽는 순서 및 단위가 서로 동일할 수 있다. 프로세서(110)는 제1 행렬 연산의 결과 값에 대해 스케일 및 마스크(scale and mask) 연산을 수행하고, 스케일 및 마스크 연산이 수행된 결과 값에 기초하여 타일 단위로 제1 서브 소프트맥스 연산을 수행할 수 있다. 프로세서(110)에 의해 수행되는 제1 서브 소프트맥스 연산 과정은 데이터에서 타일 단위로 제1 최대 값을 검출하는 과정, 데이터의 각 값에서 대응하는 제1 최대 값을 뺀 결과 값의 제1 지수화(exponentiation) 값을 결정하는 과정 및, 타일 단위로 제1 지수화 값에 대한 제1 합계(sum) 값을 결정하는 과정을 포함할 수 있다.
프로세서(110)에 의해 수행되는 축소 연산 과정은 제1 서브 소프트맥스 연산에서 결정된 제1 최대 값에서 데이터의 전체 타일에 대한 최대 값인 제2 최대 값을 뺀 결과 값의 제2 지수화 값을 결정하는 과정, 하는 과정, 및 제2 지수화 값을 제2 합계 값으로 나눈 결과 값을 조정 인자로 결정하는 과정을 포함할 수 있다. 실시예에 따라, 축소 연산 과정은 비교기, 가감산기, 지수 처리기, 곱셈 및 나눗셈 연산기, 및 메모리를 포함하는 별도의 하드웨어 유닛(예: 도 8의 축소 연산기(850))에 의해 수행될 수 있다.
프로세서(110)는 제1 서브 소프트맥스 연산 과정에서 획득된 제1 지수화 값에 축소 연산 과정에서 획득된 조정 인자를 적용하는 것에 의해 제2 서브 소프트맥스 연산을 수행할 수 있다. 프로세서(110)는 제2 서브 소프트맥스 연산의 결과 값과 주어진 데이터 값에 기초하여 타일 단위로 제2 행렬 연산을 수행할 수 있다. 제2 행렬 연산은 제2 서브 소프트맥스 연산의 결과 값과 키(key)에 맵핑되어 있는 값(value) 간의 행렬 곱셈일 수 있다. 행렬 곱셈의 결과 값이 어텐션 값으로 결정될 수 있다. 여기서, 제2 서브 소프트맥스 연산과 제2 행렬 연산은 데이터를 읽는 순서 및 단위가 서로 동일할 수 있다.
트랜스포머 모델이 자연어 처리에서 문장을 처리할 때 셀프-어텐션 과정이 대부분의 수행 시간을 차지하며, 그 중에서도 행렬 곱셈이 아닌 연산(비-행렬 곱셈, non-matrix multiplication)이 차지하는 수행 시간 비중이 높다. 비-행렬 곱셈 연산은 빈번한 메모리 접근을 요구하는 메모리 집약적(memory intensive)인 특징을 가지기 때문에 데이터 이동에 대한 수행 시간이 처리 시간보다 더 많이 걸리기 때문이다. 또한, 설계 비용이나 장치의 물리적인 환경(면적, 핀(pin) 개수)에 의한 제약에 의해 DRAM과 같은 오프-칩 메모리(off-chip memory)의 대역폭(bandwidth)을 늘리는 것은 한계가 있기 때문에, 트랜스포머 모델에서 메모리 집약적인 비-행렬 곱셈 연산들은 대역폭 병목(bottleneck)으로 인하여 처리 시간에서 차지하는 비중이 높다. 프로세서(110)는 메모리 집약적인 비-행렬 곱셈 연산(기존의 소프트맥스 연산)을 위 설명한 하위 연산 과정들(예: 제1 서브 소프트맥스 연산, 축소 연산, 및 제2 서브 소프트맥스 연산)로 나누고, 전/후에 수행되는 계산 집약적(compute intensive)인 행렬 곱셈 연산에 연계시킴으로써 메모리 접근을 최소화시킬 수 있다.
위 설명한 트랜스포머 모델의 연산 과정은 추론 과정 뿐만 아니라 트랜스포머 모델의 학습 과정에서도 동일하게 수행될 수 있다.
도 2는 일 실시예에 따른 트랜스포머 모델의 구조를 설명하기 위한 도면이다.
도 2를 참조하면, 트랜스포머 모델(200)은 주어진 입력 데이터에 대해 추론을 수행하여 출력 데이터를 제공할 수 있다. 트랜스포머 모델(200)은 입력 데이터와 이전 시점(time)의 이전 출력 데이터를 기초로 현재 시점의 출력 데이터를 결정할 수 있다.
트랜스포머 모델(200)은 복수의 인코더들(220)과 복수의 디코더들(240)을 포함할 수 있다. 트랜스포머 모델(200)은 셀프-어텐션을 기본 블록으로 하는 인코더들(220)과 디코더들(240)이 각각 적층된 구조를 가질 수 있다. 인코더들(220)은 N(N은 2 이상의 자연수) 개의 인코더들을 포함하고, 디코더들(240)은 N 개의 디코더들을 포함할 수 있다. 인코더들(220) 및 디코더들(240)은 각각 동일한 레이어(layer)가 N개 반복되는 형태로 구현될 수 있다.
인코더들(220) 중에서 첫 번째 인코더(인코더 1)는 임베딩(210)에 의해 도출된 입력 데이터의 임베딩 벡터를 입력받을 수 있고, 디코더들(240) 중에서 첫 번째 디코더(디코더 1)은 임베딩(230)에 의해 도출된 이전 출력 데이터의 임베딩 벡터를 입력받을 수 있다. 여기서, 입력 데이터와 이전 출력 데이터는 예를 들어 특정 단어(word) 또는 문장일 수 있다. 임베딩 벡터가 인코더 1과 디코더1에 입력되기 전에 임베딩 벡터에 포지셔널 인코딩(positional encoding) 값이 더해질 수 있다. 포지셔널 인코딩 값은 단어의 문장 내 위치 정보를 제공하는데 이용될 수 있다.
인코더들(220)은 인코더들(220) 개수 만큼의 레이어 연산을 순차적으로 한 후에 마지막 인코더(인코더 N)의 출력 값을 각 디코더들(240)에 전달할 수 있다. 이후에 디코더들(240) 또한 디코더들(240) 개수 만큼의 레이어 연산을 수행하고, 각 연산이 수행될 때 마다 인코더 N이 전달한 출력 값이 사용될 수 있다. 마지막 디코더 N으로부터의 출력 값은 리니어(linear, 250) 과정에 의해 선형 변환(linear transformation)될 수 있고, 선형 변환된 값에 기초하여 출력 데이터가 결정될 수 있다.
도 2에 도시된 트랜스포머 모델(200)의 구조는 일 실시예에 불과하며, 실시예들에서 이용되는 트랜스포머 모델의 구조는 다양할 수 있으며, 트랜스포머 모델(200)의 구조에 의해 실시예의 범위가 한정되는 것으로 해석되어서는 안 된다.
도 3a는 일 실시예에 따른 인코더의 상세 구조를 설명하기 위한 도면이다.
도 3a를 참고하면, 인코더(310)는 도 2에 도시된 트랜스포머 모델(200)의 인코더들(220) 중에서 어느 하나의 인코더에 대응할 수 있다. 인코더(310)는 어텐션 블록(312), Add & Norm 블록들(314, 318) 및 피드포워드(feedforward) 블록(316)을 포함할 수 있다. 인코더(310)가 뉴럴 네트워크의 레이어로 구현되는 경우, 인코더(310)는 어텐션 블록(312)에 대응하는 제1 서브 레이어와 피드포워드 블록(316)에 대응하는 제2 서브 레이어를 포함할 수 있다.
어텐션 값을 결정하는 어텐션 블록(312)은 멀티-헤드 셀프-어텐션(multi-head self-attention)에 대응할 수 있다. 멀티-헤드 셀프-어텐션은 셀프-어텐션 연산을 병렬적으로 수행하는 것을 의미할 수 있다. 셀프-어텐션 연산은 자기 자신에 대해 어텐션 연산을 수행하는 것을 의미하고, 어텐션 연산은 어텐션 값을 구하는 처리를 의미한다. 피드포워드 블록(316)은 일반적인 피드포워드 뉴럴 네트워크에 대응할 수 있다. Add & Norm 블록들(314, 318)은 입력과 출력을 서로 더하는 잔차 연결(residual connection) 연산과 평균 및 분산을 이용하여 정규화를 수행하는 레이어 정규화(layer normalization) 연산을 수행할 수 있다.
어텐션 블록(312)은 주어진 쿼리에 대해 모든 키(key)와의 유사도를 각각 결정하고, 결정된 유사도를 가중치로 하여 키에 맵핑되어 있는 각각의 값(value)에 반영할 수 있다. 어텐션 블록(312)은 유사도가 반영된 값을 가중합(weighted sum)하여 어텐션 값으로서 제공할 수 있다. 여기서, 쿼리, 키, 값은 예를 들어 입력 문장의 모든 단어 벡터들일 수 있다. 어텐션 블록(312)에 의해 수행되는 셀프-어텐션에서는 입력 문장 내의 단어들끼리의 유사도를 구하므로, 특정 단어가 다른 단어와 연관되어 있을 확률이 결정될 수 있다.
도 3b는 일 실시예에 따른 디코더의 구조를 설명하기 위한 도면이다.
도 3b를 참고하면, 디코더(320)는 도 2에 도시된 트랜스포머 모델(200)의 디코더들(240) 중에서 어느 하나의 디코더에 대응할 수 있다. 도 3a의 인코더(310)와 유사하게 디코더(320)는 셀프-어텐션 연산과 피드포워드 연산을 수행하기 위한 블록들을 포함할 수 있다. 디코더(320)는 마스킹된 어텐션 블록(322), Add & Norm 블록들(332, 334, 336), 어텐션 블록(324), 및 피드포워드 블록(326)을 포함할 수 있다. 디코더(320)가 뉴럴 네트워크의 레이어로 구현되는 경우, 디코더(320)는 마스킹된 어텐션 블록(322)에 대응하는 제1 서브 레이어, 어텐션 블록(324)에 대응하는 제2 서브 레이어 및 피드포워드 블록(316)에 대응하는 제3 서브 레이어를 포함할 수 있다.
마스킹된 어텐션(masked attention) 블록(322) 및 어텐션 블록(324)은 어텐션 값을 결정하며, 멀티-헤드 어텐션에 대응할 수 있다. 멀티-헤드 어텐션은 어텐션 연산을 병렬적으로 수행하는 것을 의미할 수 있다. 마스킹된 어텐션 블록(322)과 어텐션 블록(324)은 어텐션 블록(312)과 동일한 연산을 수행할 수 있다. 다만, 마스킹된 어텐션 블록(322)에서는 어텐션 스코어 매트릭스(attention score matrix)에 마스킹(masking)을 적용하는 점에서 어텐션 블록(324)과 차이가 있다. 마스킹은 어텐션 스코어 매트릭스에서 자기 자신의 단어보다 미래 시점의 단어를 참고하지 못하도록 하는 역할을 한다. 어텐션 블록(324)에서는 셀프-어텐션 연산이 수행될 수 있다.
피드포워드 블록(326)은 일반적인 피드포워드 뉴럴 네트워크에 대응할 수 있다. Add & Norm 블록들(332, 334, 336)은 입력과 출력을 서로 더하는 잔차 연결 연산과 평균 및 분산을 이용하여 정규화를 수행하는 레이어 정규화 연산을 수행할 수 있다.
도 4는 일 실시예에 따른 어텐션 블록에서의 처리 과정을 설명하기 위한 도면이다.
도 4를 참조하면, 참조번호(410)는 기존의 어텐션 블록(422)에서 수행되는 처리 과정을 나타내고, 참조번호(440)는 본 문서에서 제안된 어텐션 블록(452)에서 수행되는 처리 과정을 나타낸다. 어텐션 블록(452)에서 수행되는 처리 과정은 도 1의 프로세서(110)에 의해 수행될 수 있다.
기존의 어텐션 블록(422)에서는 멀티-헤드 구조(420)에 따라 병렬적으로 어텐션 연산이 수행되었고, 제1 행렬 연산 블록(432), 스케일(scale) 블록(434), 마스크 블록(436), 소프트맥스 블록(438) 및 제2 행렬 연산(439)의 순서로 연산이 수행되었다. 제1 행렬 연산 블록(432)에서는 쿼리와 키에 기초한 행렬 곱셈이 수행되고, 제2 행렬 연산 블록(439)에서는 키에 맵핑된 값과 소프트맥스 블록(438)의 결과 값에 기초한 행렬 곱셈이 수행된다. 스케일 블록(434)에서는 제1 행렬 연산 블록(432)의 출력 값의 크기를 조절하는 스케일링 연산이 수행되고, 마스크 블록(436)에서는 자기 자신을 포함한 미래의 값과의 어텐션을 구하지 않기 위한 마스킹(masking)이 수행된다. 소프트맥스 블록(438)에서는 마스크 블록(436)에서 출력된 값에 기초하여 유사도를 계산하고, 제2 행렬 연산 블록(439)에서는 키에 맵핑된 값과 해당 유사도 간의 행렬 곱셈을 통해 어텐션 값이 결정된다.
제안된 어텐션 블록(452)에서는 멀티-헤드 구조(450)에 따라 병렬적으로 어텐션 연산이 수행될 수 있다. 어텐션 블록(452)에서는 기존의 소프트맥스 블록(438)에서 연산 과정이 제1 서브 소프트맥스 블록(466), 축소 블록(470) 및 제2 서브 소프트맥스 블록(482)의 연산 과정들로 분해되어 수행될 수 있다.
어텐션 블록(452)에서의 처리 과정은 크게 제1 행렬 연산 블록(462), 스케일 및 마스크 블록(464) 및 제1 서브 소프트맥스 블록(466)에서의 연산 과정들을 포함하는 제1 연산 과정(460), 축소 블록(470)에서의 제2 연산 과정, 및 제2 서브 소프트맥스 블록(482) 및 제2 행렬 연산 블록(484)에서의 연산 과정들을 포함하는 제3 연산 과정(480)으로 분류될 수 있다.
제1 행렬 연산 블록(432)에서는 쿼리와 키에 기초한 행렬 곱셈이 수행되고, 스케일 및 마스크 블록(464)에서는 해당 행렬 곱셈의 결과 값에 스케일링 연산 및 마스킹이 적용될 수 있다. 스케일링 연산 및 마스킹은 각각 엘리먼트별(elementwise) 단위로 처리되기 때문에 전/후 연산과 합쳐서(fusion) 처리될 수 있다. 엘리먼트별 단위로 처리되는 연산들은 데이터를 읽어오는 순서와 단위에 영향을 받지 않기 때문이다. 레이어 융합(layer fusion)의 적용에 의해 스케일링 연산 및 마스킹은 제1 행렬 연산 블록(462)의 연산에 융합될 수 있다.
제1 서브 소프트맥스 블록(466)에서는 타일 단위로 제1 최대 값을 검출하는 과정과 타일 단위로 지수화 값에 대한 제1 합계 값을 결정하는 과정이 수행될 수 있다. 축소 블록(470)에서는 제1 서브 소프트맥스 블록(466)에서의 결과 값에 기초하여 조정 인자를 결정하는 과정이 수행될 수 있다. 제2 서브 소프트맥스 블록(482)에서는 제1 서브 소프트맥스 블록(466)에서의 결과 값에 축소 블록(470)에서 결정된 조정 인자가 적용되어 타일 단위로 소프트맥스 연산의 결과 값이 결정될 수 있다. 제2 행렬 연산 블록(484)에서는 제2 서브 소프트맥스 연산의 결과 값과 키에 맵핑되어 있는 값 간의 행렬 곱셈이 수행될 수 있고, 이러한 행렬 곱셈을 통해 어텐션 값이 결정될 수 있다. 제1 서브 소프트맥스 블록(466), 축소 블록(470) 및 제2 서브 소프트맥스 블록(482)에서의 연산 과정에 대해서는 아래에서 보다 자세히 설명한다.
도 5는 행렬 곱셈과 기존의 소프트맥스 연산을 비교하여 설명하기 위한 도면이다.
도 5를 참조하면, 참조번호(510)는 행렬 곱셈(예: 제1 행렬 연산)을 설명하기 위한 것이고, 참조번호(540)는 기존의 소프트맥스 연산을 설명하기 위한 것이다. 행렬 곱셈의 경우, 타일(tile) 형태의 매트릭스 입력 Q(522)와 타일 형태의 매트릭스 입력 K(524) 간의 곱셈에 의해 타일 형태의 매트릭스 출력 S(530)가 결정된다. 예를 들어, 매트릭스 출력 S(530)에서 타일 0에 대응하는 매트릭스 출력(532)은 다음의 수학식에 따라 계산될 수 있다.
Figure pat00001
여기서, Q00 내지 Q22는 매트릭스 입력 Q(522)에서 매트릭스 출력 S(530)의 타일 0에 대응되는 매트릭스 엘리먼트들이고, K00 내지 K12는 매트릭스 입력 K(524)에서 매트릭스 출력 S(530)의 타일 0에 대응되는 매트릭스 엘리먼트들이다. S00 내지 S22는 매트릭스 입력 Q(522)와 매트릭스 K(524) 간의 행렬 곱셈에 의한 타일 0에 대응하는 매트릭스 출력 S(532)의 매트릭스 엘리먼트들이다. 행렬 곱셈의 경우, 매트릭스의 높이와 너비를 모두 일정한 형태의 값으로 타일화(tiling)하여 연산이 수행된다.
기존의 소프트맥스 연산을 보면, 데이터 처리가 매트릭스들 간의 곱셈이 아니라 행(row) 단위(542)로 수행되었다. 예를 들어, 하나의 행에 포함된 모든 값들 중에서 최대 값을 구하고, 하나의 행에 포함된 값들의 합계 값을 구하는 연산이 수행되었다.
위와 같이, 타일 단위로 데이터를 처리하는 행렬 곱셈과 행 단위로 데이터를 처리하는 기존의 소프트맥스 연산은 데이터를 처리하는 단위와 순서가 다르기 때문에 서로 간에 연계하여 연산이 수행될 수가 없었다. 따라서, 도 4에서 기존의 소프트맥스 블록(438)에서의 연산이 타일 단위로 수행되는 제1 행렬 연산 블록(432)이나 제2 행렬 연산 블록(439)에서의 행렬 곱셈과 연계하여 수행될 수가 없었다.
도 6에서 자세히 설명되지만, 본 문서에서 제안된 방법에 따르면 기존의 소프트맥스 연산을 3개의 연산들(예: 제1 서브 소프트맥스 연산, 축소 연산 및 제2 서브 소프트맥스 연산)로 나누어(fission) 서로 다른 행렬 곱셈 연산에 합치는(fusion) 것으로 연산이 수행될 수 있다. 이를 통해, 트랜스포머 모델의 어텐션 블록에서 수행되었던 비-행렬 곱셈 연산들이 행렬 곱셈 연산에 연계(또는 융합)되어 처리될 수 있다.
도 6은 일 실시예에 따른 제안된 소프트맥스 연산을 설명하기 위한 도면이다.
도 6을 참조하면, 기존의 소프트맥스 연산 과정(610)과 제안된 소프트맥스 연산 과정(620)이 도시되어 있다. 먼저, 기존의 소프트맥스 연산 과정(610)을 설명하면, 처리 대상인 입력 데이터 x(612)에서 행 단위(613)로 데이터 처리가 수행되어, 행 단위(613)에 포함된 전체 값들 중에서 최대 값 m(614)이 도출된다. 입력 데이터 x(612)에 포함된 값들은 벡터 값 또는 특징 값일 수 있다. 이후에, 입력 데이터(612)의 각 값에서 대응되는 최대 값 m(614)을 뺀 결과 값에 대한 지수화가 수행되어 지수화된 데이터 ex-m(615)가 생성되고, 지수화된 데이터(615)에서 행 단위로 데이터 처리가 수행되어 행 단위에 포함된 전체 지수화된 값들의 합계 값(616)이 결정된다. 이렇게 결정된 합계 값(616)에 기초하여 지수화된 데이터(615)에 대한 정규화(normalization)이 수행되어 정규화된 결과 데이터(617)가 결정된다. 이와 같은 기존의 소프트맥스 연산은 다음의 수학식과 같이 나타낼 수 있다.
Figure pat00002
여기서, Softmax(x)는 입력 데이터 x에 대한 소프트맥스 연산의 결과 값을 나타내고, N은 입력 데이터(612)의 하나의 행에 포함된 엘리먼트(값)의 개수를 나타낸다. Max(xk)는 k 번째 값 xk에 대응되는 최대 값 m을 의미한다. 하나의 행에 포함된 값들은 모두 동일한 대응되는 최대 값을 가진다. 수학식 2에서 알 수 있는 것과 같이 기존의 소프트맥스 연산 과정(610)은 데이터를 가져오는 순서와 단위가 행 단위로 수행된다.
행 단위 기반의 기존의 소프트맥스 연산 과정(610)과 다르게, 제안된 소프트맥스 연산 과정(620)은 소프트맥스 연산의 전/후에 수행되는 행렬 곱셈 연산들과 연계(또는 융합)이 가능하도록 타일 단위 기반으로 수행될 수 있다. 수학식 2가 나타내는 기존의 소프트맥스 연산은 지수의 곱셈 규칙(product rule)을 이용하여 다음의 수학식 3과 같이 분해(decomposition)될 수 있고, 이러한 분해를 통해 행렬 곱셈 연산들과 동일한 순서와 단위로 데이터를 가지고 오도록 처리 과정이 변경되어, 소프트맥스 연산이 타일 단위 기반으로 수행되는 행렬 곱셈 연산들과 연계되어 수행되는 것이 가능해 진다.
Figure pat00003
앞서 설명한 것과 같이, 소프트맥스 연산 과정(620)은 제1 서브 소프트맥스 연산(630), 축소 연산(640) 및 제2 서브 소프트맥스 연산(650)의 과정으로 분해되어 수행될 수 있다. 제1 서브 소프트맥스 연산(630)은 소프트맥스에서 최대 값 및 합계 값 검출에 대응하고, 제2 서브 소프트맥스 연산(650)은 정규화 처리에 대응할 수 있다.
제1 서브 소프트맥스 연산(630)에서는, 입력 데이터 x(632)에 대해 타일 단위(633)로 데이터 처리가 수행된다. 데이터 처리가 수행되는 타일 단위(633)의 크기(예: 타일의 너비를 구성하는 엘리먼트들의 개수)는 수학식 3의 'TileSize'에 해당한다. 입력 데이터 x(632)의 각 타일 단위로 제1 최대 값 mTile (634)이 검출되고, 입력 데이터 x(632)의 각 값에서 대응하는 제1 최대 값 mTile (634)을 뺀 결과 값 x-mTile을 지수화한 제1 지수화 값 ex-mTile(636)이 결정된다. 그리고, 각 타일 단위로 제1 지수화 값 ex-mTile(636)에 대한 제1 합계 값 SumTile(638)이 결정된다. 제1 합계 값 SumTile(638)은 수학식 3에서
Figure pat00004
에 대응할 수 있다.
축소 연산(640)에서는, 제1 서브 소프트맥스 연산(630)에서 결정된 제1 최대 값 mTile (634)에서 입력 데이터 x(632)에서 전체 타일에 대한 최대 값인 제2 최대 값 m을 뺀 결과 값인 mc(642)을 구하고, mc(642)를 지수화하여 제2 지수화 값
Figure pat00005
(644)이 결정될 수 있다. 제1 서브 소프트맥스 연산(630)에서 도출된 제1 합계 값 SumTile(638)과 제2 지수화 값
Figure pat00006
(644) 간의 매트릭스 곱셈에 의해 제2 합계 값 Sumex(646)이 결정되고, 제2 지수화 값
Figure pat00007
(644)을 제2 합계 값 Sumex(646)으로 나눈 결과 값 C(648)가 조정 인자로 결정될 수 있다. 조정 인자 C(648)는 다음의 수학식 4와 같이 나타낼 수 있고, 이는 수학식 3에서 일 부분에 대응한다.
Figure pat00008
제2 서브 소프트맥스 연산(650)에서는 제1 서브 소프트맥스 연산(630)에서 획득된 제1 지수화 값 ex-mTile(636)에 축소 연산(640)에서 획득된 조정 인자 C(648)를 곱하는 것에 의해 최종적인 소프트맥스 연산의 결과 값 Softmax(x)(652)이 결정될 수 있다.
소프트맥스 연산을 수학식 3과 같이 구현하는 것에 의해 타일 단위로 최대 값과 합계 값을 구하는 것이 가능해 진다. 기존의 소프트맥스 연산 과정(610)의 경우, 행 단위로 데이터 처리가 수행되기 때문에 소프트맥스 연산의 전/후 연산들과 융합될 수 없어 불필요한 데이터 접근이 발생하였다. 이에 반하여, 제안된 소프트맥스 연산 과정(620)은 소프트맥스 연산의 전/후 연산들과 동일한 단위와 순서로 데이터가 처리할 수 있게 되었고, 소프트맥스 연산을 해당 전/후 연산들과 연계(또는 융합)하여 수행함으로써 불필요한 데이터 접근을 줄이고, 수행 시간을 줄일 수 있다. 이러한 불필요한 데이터 접근 및 수행 시간의 감소에 의해 에너지 소모량도 감소되는 유리한 효과가 획득될 수 있다.
도 7은 일 실시예에 따른 제안된 소프트맥스 연산을 포함하는 어텐션 블록에서의 처리 과정을 설명하기 위한 도면이다.
도 7을 참조하면, 어텐션 블록에서의 처리 과정은 제1 연산 과정(710), 제2 연산 과정(720) 및 제3 연산 과정(730)으로 분류될 수 있다. 제1 연산 과정(710)은 제1 행렬 연산(712), 스케일 및 마스크 연산(714) 및 제1 서브 소프트맥스 연산(716)의 과정을 포함할 수 있다. 제2 연산 과정(720)은 축소 연산의 과정에 대응할 수 있다. 제3 연산 과정(730)은 제2 서브 소프트맥스 연산(732) 및 제2 행렬 연산(734)의 과정을 포함할 수 있다. 제1 연산 과정(710)에서 볼 수 있는 바와 같이, 스케일 및 마스크 연산(714)은 제1 서브 소프트맥스 연산(716)과 함께 앞 단의 제1 행렬 연산(712)에 연계되어 있다. 제2 연산 과정(720)에서는, 제2 서브 소프트맥스 연산(732)은 뒷 단의 제2 행렬 연산(734)에 연계되어 있다.
제1 연산 과정(710)을 구체적으로 보면, 제1 행렬 연산(712)에서는 쿼리 Q와 키 K 간의 행렬 곱셈이 수행되어 행렬 곱셈의 결과인 Xs가 획득된다. 이후에, Xs에 스케일 및 마스크 연산(714)이 수행되고, 스케일 및 마스크 연산(712)이 수행된 결과 값에 기초하여 제1 서브 소프트맥스 연산(716)이 수행될 수 있다. 스케일 및 마스크 연산(714)은 제1 서브 소프트맥스 연산(716)에 융합된 형태를 가질 수 있다. 제1 서브 소프트맥스 연산(716)에서는 각 타일 단위로 제1 최대 값 mTile ' 이 검출되고, 스케일 및 마스크 연산(714)이 수행된 값에서 제1 최대 값 mTile ' 을 뺀 결과 값을 지수화한 제1 지수화 값
Figure pat00009
=
Figure pat00010
를 구할 수 있다. 제1 최대 값 mTile '은 각 타일 내의 값들(예: 특징 값들)을 비교하여 가장 큰 하나의 값에 대응한다. 이후에 각 타일 단위로 제1 지수화 값
Figure pat00011
에 대한 제1 합계 값 SumTile이 결정될 수 있다. 제1 합계 값 SumTile은 타일 내의 모든 값들의 지수화한 값들을 더한 값에 대응한다. 제1 연산 과정(710)에서는 제1 서브 소프트맥스 연산(716)이 제1 행렬 연산(712)과 스케일 및 마스크 연산(714)의 연산 결과를 바로 이용하기 때문에, 제1 행렬 연산(712) 결과의 저장과 제1 서브 소프트맥스 연산(716)을 위한 메모리 접근이 요구되지 않는다.
제2 연산 과정(720)에서는 축소 연산이 수행된다. 축소 연산은 타일화(tiling)되어 일차적으로 처리된 부분 값(partial value)들을 완전한 값으로 만드는 과정이다. 제2 연산 과정(720)에서는 1 서브 소프트맥스 연산(716)에서 결정된 제1 최대 값 mTile'에서 전체 타일에 대한 최대 값인 제2 최대 값 max{mTilej'}을 뺀 결과 값인 mc 이 결정되고, mc를 지수화하여 제2 지수화 값
Figure pat00012
이 결정될 수 있다. 제1 서브 소프트맥스 연산(630)에서 도출된 제1 합계 값 SumTile과 제2 지수화 값
Figure pat00013
간의 매트릭스 곱셈에 의해 제2 합계 값 Sumg이 결정되고, 제2 지수화 값
Figure pat00014
을 제2 합계 값 Sumg으로 나눈 결과 값 C가 조정 인자로 결정될 수 있다.
제3 연산 과정(730)을 구체적으로 보면, 제2 서브 소프트맥스 연산(732)에서는 제1 서브 소프트맥스 연산(716)에서 획득된 제1 지수화 값
Figure pat00015
에 축소 연산에서 획득된 조정 인자 C를 곱(예: 매트릭스 곱셈)하는 것에 의해 소프트맥스 연산의 최종 결과 값이 결정될 수 있다. 제2 서브 소프트맥스 연산(732)은 제2 행렬 연산(734)에서 이용되는 데이터에 대해 정규화를 수행하는 방식으로 제2 행렬 연산(734)과 융합될 수 있다. 제2 행렬 연산(734)에서는 소프트맥스 연산의 최종 결과 값(예: 제2 서브 소프트맥스 연산(732)의 결과 값)과 제1 행렬 연산(712)에서 이용된 키 K에 맵핑되는 값 V 간의 매트릭스 곱셈에 의해 어텐션 값 Y가 결정될 수 있다. 제2 서브 소프트맥스 연산(732)의 결과는 별도의 저장 과정 없이 제2 행렬 연산(734)에 바로 사용되므로 메모리 접근량이 줄어들 수 있다.
위와 같이, 제1 서브 소프트맥스 연산(716)과 제2 서브 소프트맥스 연산(732)은 타일 단위의 연산이 가능하여 각각 타일 단위의 연산인 제1 행렬 연산(712)과 제2 행렬 연산(734)에 융합될 수 있다. 이와 같은 융합에 의해 메모리 접근량이 줄어들 수 있다. 기존의 소프트맥스 연산은 타일 단위의 연산이 아니기 때문에 제1 행렬 연산(712), 제2 행렬 연산(734) 및 소프트맥스 연산이 각각 독립적으로 데이터의 입출력 과정을 요구하여 메모리 접근량이 많았다. 하지만, 제안된 소프트맥스 연산에 의하면, 제1 행렬 연산(712)과 제1 서브 소프트맥스 연산(716) 간의 연계 및 제2 서브 소프트맥스 연산(732)과 제2 행렬 연산(734) 간의 연계를 통해 데이터 입출력 요구를 줄여 메모리 접근량을 줄일 수 있다. 제안된 소프트맥스 연산은 대략적으로 메모리 접근량을 기존 방식에 비해 절반으로 줄일 수 있다. 또한, 제안된 소프트맥스 연산은 메모리 접근량의 감소에 따라 처리 시간과 에너지 소모량을 줄일 수 있다.
도 8은 일 실시예에 따른 축소 연산기의 구성을 설명하기 위한 도면이다.
도 8을 참조하면, 제안된 소프트맥스 연산 과정은 그래픽 처리 장치와 같은 다중 NPU 구조에서 이용될 수 있다. 전자 장치(800)는 복수의 프로세싱 유닛들(812, 814), 메모리들(842, 844) 및 축소 연산기(850)를 포함할 수 있고., 프로세싱 유닛들(812, 814)은 다중 NPU 구조 또는 다중 SM(streaming processor) 구조를 가질 수 있다. 프로세싱 유닛들(812, 814)은 각각 계산기(또는 프로세서)(822, 824) 및 메모리(832, 834)를 포함할 수 있다. 메모리(832, 834)는 SRAM(static random access memory) 또는 L1 캐쉬(cache) 메모리에 해당할 수 있다. 메모리(844)는 SRAM 또는 L2 캐쉬 메모리에 해당할 수 있고, 메모리(842)는 DRAM(dynamic random access memory)에 해당할 수 있다.
프로세싱 유닛들(812, 814)은 트랜스포머 모델의 어텐션 블록에서 타일 단위로 제1 서브 소프트맥스 연산을 수행할 수 있다. 프로세싱 유닛들(812, 814)은 데이터에서 타일 단위로 제1 최대 값을 검출하는 동작, 데이터의 각 값에서 대응하는 최대 값을 뺀 결과 값의 제1 지수화 값을 결정하는 동작 및 타일 단위로 제1 지수화 값에 대한 제1 합계 값을 결정하는 동작에 의해 제1 서브 소프트맥스 연산을 수행할 수 있다.
본 문서에서 설명된 축소 연산은 축소 연산기(850)와 같은 별도의 하드웨어 유닛에 의해 수행될 수 있다. 축소 연산기(850)는 제1 서브 소프트맥스 연산의 결과 값에 기초하여 조정 인자를 결정하는 축소 연산을 수행할 수 있다. 축소 연산기(850)는 비교기(862), 가감산기(864), 지수 처리기(866), 곱셈 및 나눗셈 연산기(868), 및 메모리(865)를 포함할 수 있다. 메모리(865)는 SRAM에 해당할 수 있고, 제1 서브 소프트맥스 연산으로부터 도출된 값들을 저장할 수 있다.
축소 연산기(850)는 메모리(865)로부터 제1 서브 소프트맥스 연산으로부터 도출된 제1 최대 값 및 제1 합계 값을 읽고, 비교기(862)를 통해 전체 타일에 대한 최대 값인 제2 최대 값을 검출할 수 있다. 비교기(862)는 입력된 값들을 비교하여 최대 값을 구하는데 이용될 수 있다. 축소 연산기(850)는 가감산기(864)를 통해 제1 최대 값에서 제2 최대 값을 뺀 결과 값을 결정하고, 지수 처리기(866)를 통해 제1 최대 값에서 제2 최대 값을 뺀 결과 값의 제2 지수화 값을 결정할 수 있다. 그 밖에, 가감산기(864)는 지수화 값들의 합계 값을 구할 때에도 이용되고, 지수 처리기(866)는 다른 지수 관련 계산에도 이용될 수 있다. 축소 연산기(850)는 곱셈 및 나눗셈 연산기(868)를 통해 제1 합계 값에 데이터의 각 타일에 대응하는 제2 지수화 값을 적용(예: 곱셈)하여 제2 합계 값을 결정하고, 제2 지수화 값을 제2 합계 값으로 나눈 결과 값을 조정 인자로 결정할 수 있다. 이와 같은 축소 연산기(850)의 구성은 트랜스포머 계열의 모델을 사용하는 시스템(GPU 또는 기계 학습을 위한 가속기)에 적용될 수 있다. 축소 연산기(850)에 의해 수행되는 연산의 종류와 동작 순서는 도 9에서 보다 자세히 설명한다.
프로세싱 유닛들(812, 814)은 축소 연산기(850)의 축소 연산의 결과 값에 기초하여 타일 단위로 제2 서브 소프트맥스 연산을 수행할 수 있다. 프로세싱 유닛들(812, 814)은 제1 서브 소프트맥스 연산으로부터 도출된 제1 지수화 값에 축소 연산으로부터 도출된 조정 인자를 적용(예: 곱셈)하는 것에 의해 제2 서브 소프트맥스 연산을 수행할 수 있다.
도 9는 일 실시예에 따른 축소 연산기에 의한 축소 연산의 과정을 설명하기 위한 도면이다.
축소 연산기(850)에 의해 수행되는 축소 연산은 실시간 처리를 위해 도 7에서 설명한 축소 연산 과정(720)이 도 9에 도시된 것과 같은 축소 연산 과정(910)으로 변경될 수 있다. 축소 연산 과정(910)은 크게, 제1 서브 소프트맥스 연산으로부터 도출된 제1 최대 값 mTile 과 제1 합계 값 SumTile을 읽고, 전체 타일에 대한 최대 값인 제2 최대 값 m 과 제2 합계 값 Sumex을 계산하여 메모리(865)에 저장하는 제1 파트와 메모리(865)에 저장된 제2 최대 값 m 과 제2 합계 값 Sumex을 이용하여 조정 인자 C를 계산하는 과정으로 분류할 수 있다. 제1 파트는 연산 과정들(922, 924, 926)을 포함하고, 제2 파트는 연산 과정들(932, 934)을 포함할 수 있다.
제1 파트를 보다 구체적으로 설명하면, 축소 연산기(850)는 프로세싱 유닛들(812, 814)에서 계산된 제1 최대 값 mTile 과 제1 합계 값 SumTile을 읽어 올 수 있다. 이 때, 제1 최대 값 mTile 과 제1 합계 값 SumTile은 메모리(844)를 바이패스(bypass)하여 축소 연산기(850)에 바로 전달될 수 있다. 연산 과정(926)에서, 비교기(862)는 입력 데이터의 각 타일의 제1 최대 값 mTile 과 제2 최대 값 m을 결정할 수 있다. 비교기(862)는 제1 최대 값 mTile 과 이전 타일까지 확인된 값들 중에 최대 값인 이전 최대 값 mtile_prev 을 비교하고, 연산 과정(924)에서 가감산기(864)는 제1 최대 값 mTile 과 이전 최대 값 mtile_prev의 대소 관계에 따라 제1 최대 값 mTile 과 이전 최대 값 mtile_prev 간의 차이 값 mc'를 계산할 수 있다. 지수 처리기(866)는 차이 값 mc'을 지수화한 지수화 값
Figure pat00016
을 구할 수 있다. 연산 과정(922)에서 곱셈 및 나눗셈 연산기(868)는 현재 타일에 포함된 데이터들에 대해 제1 합계 값 SumTile과 지수화 값
Figure pat00017
간의 곱셈을 수행하고, 가감산기(864)는 타일에 대한 해당 곱셈의 수행 결과를 모두 더하여 제2 합계 값 Sumex을 결정할 수 있다. 제1 최대 값 mTile 과 이전 최대 값 mtile_prev 간의 대소 관계에 따라 제2 합계 값 Sumex은 다음의 수학식 5에 의해 결정될 수 있다.
Figure pat00018
축소 연산기(950)는 전체 타일들 각각에 대해 위 과정을 반복적으로 수행할 수 있고, 제1 파트의 수행 결과에 의해 도출된 제2 최대 값 m과 제2 합계 값 Sumex은 메모리(865)에 저장될 수 있다. 모든 타일에 대한 합산 연산이 모두 수행되면 완전한 제2 합계 값 Sumex이 획득될 수 있다. 제2 최대 값 m과 제2 합계 값 Sumex에 대한 데이터 크기는 일반적으로 수백 킬로바이트(kilobyte)에 불과하여, 제2 최대 값 m과 제2 합계 값 Sumex에 대한 데이터는 SRAM과 같은 메모리(865)에 저장되어 추후 사용될 수 있다.
제2 파트를 보다 구체적으로 설명하면, 축소 연산기(850)는 메모리(842)에 저장되어 있는 제1 최대 값 mTile 을 읽어온다. 연산 과정(932)에서 가감산기(864)는 제1 최대 값 mTile 에서 메모리(865)에 저장되어 있던 제2 최대 값을 뺀 결과 값인 mc 를 계산할 수 있다. 지수 처리기(866)는 mc를 지수화하여 제2 지수화 값
Figure pat00019
을 결정할 수 있다. 연산 과정(934)에서 곱셈 및 나눗셈 연산기(868)는 제2 지수화 값
Figure pat00020
을 제2 합계 값 Sumex으로 나누어 조절 인자 C를 결정할 수 있다. 조절 인자 C는 프로세싱 유닛들(812, 814)에 전달될 수 있고, 프로세싱 유닛들(812, 814)은 제1 서브 소프트맥스 연산에서 획득된 제1 지수화 값
Figure pat00021
에 조정 인자 C를 이용하여 최종적인 소프트맥스 결과 값을 결정할 수 있고, 결정된 소프트맥스 결과 값은 이후의 제2 행렬 연산에 바로 사용될 수 있다.
도 10은 일 실시예에 따른 전자 장치에 의해 수행되는 추론 방법의 동작을 설명하기 위한 흐름도이다. 추론 방법의 동작들은 도 1의 전자 장치(100)에 의해 수행될 수 있다.
도 10을 참조하면, 동작(1010)에서 전자 장치는 입력 데이터를 수신한다. 입력 데이터는 추론의 대상이 되는 데이터로서, 예를 들어 번역하고자 하는 문장일 수 있다.
동작(220)에서, 전자 장치는 복수의 인코더들과 복수의 디코더들을 포함하는 트랜스포머 모델(예: 도 2의 트랜스포머 모델(200))을 이용하여 입력 데이터에 대한 추론을 수행하는 것에 의해 결과 데이터를 결정할 수 있다. 전자 장치는 트랜스포머 모델을 이용하여 입력 데이터(예: 번역 대상 문장)에 대응하는 결과 데이터(번역된 문장)를 결정할 수 있다. 위에서 설명한 바와 같이, 트랜스포머 모델은 입력 데이터와 이전 시점의 결과 데이터를 기초로 다양한 블록들에서의 처리 과정을 통해 현재 시점에서의 결과 데이터를 결정할 수 있다. 결과 데이터를 결정하는 동작은 트랜스포머 모델의 인코더들 및 디코더들 각각에서 어텐션 값을 결정하는 동작을 포함할 수 있다. 각각의 인코더와 디코더는 어텐션 값을 결정하는 어텐션 블록을 포함하고, 전자 장치는 타일 단위로 수행되는 행렬 곱셈 연산들과의 융합을 위해 어텐션 블록에서 수행되는 소프트맥스 연산의 동작을 제1 서브 소프트맥스 연산, 축소 연산 및 제2 서브 소프트맥스 연산으로 분할하여 수행할 수 있다. 어텐션 블록에서의 처리 과정은 도 11에서 자세히 설명한다.
도 11은 일 실시예에 따른 트랜스포머 모델의 어텐션 블록에서 수행되는 소프트맥스 연산의 동작을 설명하기 위한 흐름도이다.
도 11을 참조하면, 동작(1110)에서 전자 장치는 쿼리와 키에 기초하여 제1 행렬 연산을 수행할 수 있다. 제1 행렬 연산에서는 각각 타일 단위의 매트릭스 형태를 가지는 쿼리와 키 간의 매트릭스-매트릭스 곱셈이 수행될 수 있다.
동작(1120)에서, 전자 장치는 제1 행렬 연산의 결과 값에 대해 스케일 및 마스크 연산을 수행할 수 있다. 전자 장치는 제1 행렬 연산의 결과 값의 크기를 조정하기 위한 스케일링 처리와 결과 데이터에 대한 특정 데이터의 영향을 막기 위한 마스킹 처리를 수행할 수 있다.
동작(1130)에서, 전자 장치는 타일 단위로 제1 서브 소프트맥스 연산을 수행할 수 있다. 제1 서브 소프트맥스 연산 과정은 데이터에서 타일 단위로 제1 최대 값을 검출하는 동작, 데이터의 각 값에서 대응하는 제1 최대 값을 뺀 결과 값의 제1 지수화 값을 결정하는 동작, 및 타일 단위로 제1 지수화 값에 대한 제1 합계 값을 결정하는 동작을 포함할 수 있다.
동작(1140)에서, 전자 장치는 제1 서브 소프트맥스 연산의 수행 결과에 기초하여 축소 연산을 수행할 수 있다. 전자 장치는 제1 서브 소프트맥스 연산의 결과 값에 기초하여 조정 인자를 결정할 수 있다. 축소 연산 과정은 제1 서브 소프트맥스 연산에서 도출된 제1 최대 값에서 데이터의 전체 타일에 대한 최대 값인 제2 최대 값을 뺀 결과 값의 제2 지수화 값을 결정하는 동작, 제1 서브 소프트맥스 연산에서 결정된 제1 합계 값에 데이터의 각 타일에 대응하는 제2 지수화 값을 적용하여 제2 합계 값을 결정하는 동작, 및 제2 지수화 값을 제2 합계 값으로 나눈 결과 값을 조정 인자로 결정하는 동작을 포함할 수 있다.
실시예에 따라, 축소 연산은 비교기, 가감산기, 지수 처리기, 곱셈 및 나눗셈 연산기, 및 메모리를 포함하는 축소 연산기(예: 도 8의 축소 연산기(850))에 의해 수행될 수 있다.
동작(1150)에서, 전자 장치는 축소 연산의 결과 값에 기초하여 타일 단위로 제2 서브 소프트맥스 연산을 수행할 수 있다. 전자 장치는 제1 서브 소프트맥스 연산에서 도출된 제1 지수화 값에 축소 연산에서 도출된 조정 인자를 적용(예: 곱셈)할 수 있다.
동작(1160)에서, 전자 장치는 제2 서브 소프트맥스 연산의 결과 값에 기초하여 타일 단위로 제2 행렬 연산을 수행할 수 있다. 제2 행렬 연산은 제2 서브 소프트맥스 연산의 결과 값과 키에 맵핑되어 있는 값 간의 행렬 곱셈을 포함할 수 있고, 제2 행렬 연산의 결과 값이 어텐션 값으로 결정될 수 있다
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 전자 장치에 있어서,
    복수의 인코더들과 복수의 디코더들을 포함하는 트랜스포머(transformer) 모델을 이용하여 추론을 수행하는 프로세서; 및
    상기 프로세서에 의해 수행되는 명령어들을 저장하는 메모리를 포함하고,
    상기 인코더들 및 상기 디코더들 각각은, 어텐션(attention) 값을 결정하는 어텐션 블록을 포함하고,
    상기 명령어들이 상기 프로세서에 의해 수행될 때, 상기 프로세서는,
    상기 어텐션 블록에서 타일 단위로 제1 서브 소프트맥스 연산을 수행하고, 상기 제1 서브 소프트맥스 연산의 결과 값에 기초하여 조정 인자를 결정하는 축소(reduction) 연산을 수행하고, 및 상기 축소 연산의 결과 값에 기초하여 타일 단위로 제2 서브 소프트맥스 연산을 수행하는,
    전자 장치.
  2. 제1항에 있어서,
    상기 프로세서는,
    쿼리(query)와 키(key)에 기초하여 제1 행렬 연산을 수행하고, 상기 제1 행렬 연산의 결과 값에 기초하여 타일 단위로 상기 제1 서브 소프트맥스 연산을 수행하는,
    전자 장치.
  3. 제2항에 있어서,
    상기 프로세서는,
    상기 제1 행렬 연산의 결과 값에 대해 스케일 및 마스크 연산을 수행하고, 상기 스케일 및 마스크 연산이 수행된 결과 값에 기초하여 타일 단위로 상기 제1 서브 소프트맥스 연산을 수행하는,
    전자 장치.
  4. 제1항에 있어서,
    상기 프로세서는,
    데이터에서 타일 단위로 제1 최대 값을 검출하고, 상기 데이터의 각 값에서 대응하는 상기 제1 최대 값을 뺀 결과 값의 제1 지수화(exponentiation) 값을 결정하고, 타일 단위로 상기 제1 지수화 값에 대한 제1 합계(sum) 값을 결정하는 것에 의해 상기 제1 서브 소프트맥스 연산을 수행하는,
    전자 장치.
  5. 제2항에 있어서,
    상기 제1 행렬 연산과 상기 제1 서브 소프트맥스 연산은,
    데이터를 읽는 순서 및 단위가 서로 동일한,
    전자 장치.
  6. 제4항에 있어서,
    상기 프로세서는,
    상기 제1 최대 값에서 상기 데이터의 전체 타일에 대한 최대 값인 제2 최대 값을 뺀 결과 값의 제2 지수화 값을 결정하고, 상기 제1 합계 값에 상기 데이터의 각 타일에 대응하는 상기 제2 지수화 값을 적용하여 제2 합계 값을 결정하고, 상기 제2 지수화 값을 상기 제2 합계 값으로 나눈 결과 값을 상기 조정 인자로 결정하는 것에 의해 상기 축소 연산을 수행하는,
    전자 장치.
  7. 제6항에 있어서,
    상기 프로세서는,
    상기 제1 지수화 값에 상기 조정 인자를 적용하는 것에 의해 상기 제2 서브 소프트맥스 연산을 수행하는,
    전자 장치.
  8. 제1항에 있어서,
    상기 프로세서는,
    상기 제2 서브 소프트맥스 연산의 결과 값과 주어진 데이터 값에 기초하여 타일 단위로 제2 행렬 연산을 수행하는,
    전자 장치.
  9. 제8항에 있어서,
    상기 제2 서브 소프트맥스 연산과 상기 제2 행렬 연산은,
    데이터를 읽는 순서 및 단위가 서로 동일한,
    전자 장치.
  10. 전자 장치에 있어서,
    복수의 인코더들과 복수의 디코더들을 포함하는 트랜스포머 모델을 이용하여 추론을 수행하는 프로세서; 및
    축소 연산기를 포함하고,
    상기 인코더들 및 상기 디코더들 각각은, 어텐션 값을 결정하는 어텐션 블록을 포함하고,
    상기 프로세서는, 상기 어텐션 블록에서 타일 단위로 제1 서브 소프트맥스 연산을 수행하고,
    상기 축소 연산기는, 상기 제1 서브 소프트맥스 연산의 결과 값에 기초하여 조정 인자를 결정하는 축소 연산을 수행하고,
    상기 프로세서는, 상기 축소 연산의 결과 값에 기초하여 타일 단위로 제2 서브 소프트맥스 연산을 수행하는,
    전자 장치.
  11. 제10항에 있어서,
    상기 프로세서는,
    데이터에서 타일 단위로 제1 최대 값을 검출하고, 상기 데이터의 각 값에서 대응하는 상기 최대 값을 뺀 결과 값의 제1 지수화 값을 결정하고, 타일 단위로 상기 제1 지수화 값에 대한 제1 합계 값을 결정하는 것에 의해 상기 제1 서브 소프트맥스 연산을 수행하는,
    전자 장치.
  12. 제11항에 있어서,
    상기 축소 연산기는,
    비교기, 가감산기, 지수 처리기, 곱셈 및 나눗셈 연산기, 및 메모리를 포함하는 전자 장치.
  13. 제12항에 있어서,
    상기 축소 연산기는,
    상기 메모리로부터 상기 제1 최대 값 및 상기 제1 합계 값을 읽고,
    상기 비교기를 통해 상기 데이터의 전체 타일에 대한 최대 값인 제2 최대 값을 검출하고,
    상기 가감산기를 통해 상기 제1 최대 값에서 상기 데이터의 행 단위로 검출된 제2 최대 값을 뺀 결과 값을 결정하고,
    상기 지수 처리기를 통해 상기 제1 최대 값에서 상기 제2 최대 값을 뺀 결과 값의 제2 지수화 값을 결정하고,
    상기 곱셈 및 나눗셈 연산기를 통해 상기 제1 합계 값에 상기 데이터의 각 타일에 대응하는 상기 제2 지수화 값을 적용하여 제2 합계 값을 결정하고, 상기 제2 지수화 값을 상기 제2 합계 값으로 나눈 결과 값을 상기 조정 인자로 결정하는,
    전자 장치.
  14. 제13항에 있어서,
    상기 프로세서는,
    상기 제1 지수화 값에 상기 조정 인자를 적용하는 것에 의해 상기 제2 서브 소프트맥스 연산을 수행하는,
    전자 장치.
  15. 전자 장치에 의해 수행되는 추론 방법에 있어서,
    입력 데이터를 수신하는 동작; 및
    복수의 인코더들과 복수의 디코더들을 포함하는 트랜스포머 모델을 이용하여 상기 입력 데이터에 대한 추론을 수행하는 것에 의해 결과 데이터를 결정하는 동작을 포함하고,
    상기 결과 데이터를 결정하는 동작은,
    상기 인코더들 및 상기 디코더들 각각에서, 어텐션 값을 결정하는 동작을 포함하고,
    상기 어텐션 값을 결정하는 동작은,
    타일 단위로 제1 서브 소프트맥스 연산을 수행하는 동작;
    상기 제1 서브 소프트맥스 연산의 결과 값에 기초하여 조정 인자를 결정하는 축소 연산을 수행하는 동작; 및
    상기 축소 연산의 결과 값에 기초하여 타일 단위로 제2 서브 소프트맥스 연산을 수행하는 동작을 포함하는,
    추론 방법.
  16. 제15항에 있어서,
    상기 제1 서브 소프트맥스 연산을 수행하는 동작은,
    데이터에서 타일 단위로 제1 최대 값을 검출하는 동작;
    상기 데이터의 각 값에서 대응하는 상기 제1 최대 값을 뺀 결과 값의 제1 지수화 값을 결정하는 동작; 및
    타일 단위로 상기 제1 지수화 값에 대한 제1 합계 값을 결정하는 동작
    을 포함하는 추론 방법.
  17. 제16항에 있어서,
    상기 축소 연산을 수행하는 동작은,
    상기 제1 최대 값에서 상기 데이터의 전체 타일에 대한 최대 값인 제2 최대 값을 뺀 결과 값의 제2 지수화 값을 결정하는 동작;
    상기 제1 합계 값에 상기 데이터의 각 타일에 대응하는 상기 제2 지수화 값을 적용하여 제2 합계 값을 결정하는 동작; 및
    상기 제2 지수화 값을 상기 제2 합계 값으로 나눈 결과 값을 상기 조정 인자로 결정하는 동작
    을 포함하는 추론 방법.
  18. 제17항에 있어서,
    상기 제2 서브 소프트맥스 연산을 수행하는 동작은,
    상기 제1 지수화 값에 상기 조정 인자를 적용하는 동작
    을 포함하는 추론 방법.
  19. 제15항에 있어서,
    상기 축소 연산을 수행하는 동작은,
    비교기, 가감산기, 지수 처리기, 곱셈 및 나눗셈 연산기, 및 메모리를 포함하는 축소 연산기에 의해 수행되는,
    추론 방법.
  20. 제15항 내지 제19항 중 어느 한 항의 방법을 수행하기 위한 명령어를 포함하는 하나 이상의 컴퓨터 프로그램을 저장한 컴퓨터 판독 가능 기록 매체.
KR1020210146841A 2021-10-29 2021-10-29 트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치 KR20230062008A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210146841A KR20230062008A (ko) 2021-10-29 2021-10-29 트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치
US17/887,145 US20230138659A1 (en) 2021-10-29 2022-08-12 Device and method with transformer model implementation
CN202210985760.7A CN116090507A (zh) 2021-10-29 2022-08-17 电子装置和用于推断的方法
EP22204537.9A EP4174723A1 (en) 2021-10-29 2022-10-28 Device and method with transformer model implementation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210146841A KR20230062008A (ko) 2021-10-29 2021-10-29 트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치

Publications (1)

Publication Number Publication Date
KR20230062008A true KR20230062008A (ko) 2023-05-09

Family

ID=84044856

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210146841A KR20230062008A (ko) 2021-10-29 2021-10-29 트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치

Country Status (4)

Country Link
US (1) US20230138659A1 (ko)
EP (1) EP4174723A1 (ko)
KR (1) KR20230062008A (ko)
CN (1) CN116090507A (ko)

Also Published As

Publication number Publication date
CN116090507A (zh) 2023-05-09
EP4174723A1 (en) 2023-05-03
US20230138659A1 (en) 2023-05-04

Similar Documents

Publication Publication Date Title
CN112487182B (zh) 文本处理模型的训练方法、文本处理方法及装置
CN109685198B (zh) 用于量化神经网络的参数的方法和装置
US11030997B2 (en) Slim embedding layers for recurrent neural language models
CN116415654A (zh) 一种数据处理方法及相关设备
KR102655950B1 (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
US9852177B1 (en) System and method for generating automated response to an input query received from a user in a human-machine interaction environment
JP7070653B2 (ja) 学習装置、音声認識順位推定装置、それらの方法、およびプログラム
Bai et al. Beyond efficiency: A systematic survey of resource-efficient large language models
US20210089904A1 (en) Learning method of neural network model for language generation and apparatus for performing the learning method
CN115017178A (zh) 数据到文本生成模型的训练方法和装置
CN113238989A (zh) 将数据进行量化的设备、方法及计算机可读存储介质
CN111160049B (zh) 文本翻译方法、装置、机器翻译系统和存储介质
CN114861907A (zh) 数据计算方法、装置、存储介质和设备
CN108475346A (zh) 神经随机访问机器
US11481419B2 (en) Method and apparatus for evaluating matching degree based on artificial intelligence, device and storage medium
WO2023168818A1 (zh) 视频和文本相似度确定方法、装置、电子设备、存储介质
CN113947185B (zh) 任务处理网络生成、任务处理方法、装置、电子设备及存储介质
KR20230062008A (ko) 트랜스포머 모델을 이용한 추론 방법 및 그 추론 방법을 수행하는 전자 장치
CN110442706B (zh) 一种文本摘要生成的方法、系统、设备及存储介质
KR20210034486A (ko) 언어 생성을 위한 신경망 모델의 학습 방법 및 이의 장치
CN113297860A (zh) 机器翻译模型的优化方法、系统、电子设备和存储介质
KR20210116182A (ko) 소프트맥스 연산 근사화 방법 및 장치
CN112784003A (zh) 训练语句复述模型的方法、语句复述方法及其装置
KR20220157619A (ko) 하드웨어 가속기에서의 비선형 함수 계산 방법 및 장치
Westby FPGA Acceleration on Multilayer Perceptron (MLP) Neural Network for Handwritten Digit Recognition