KR102479264B1 - 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭 - Google Patents

트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭 Download PDF

Info

Publication number
KR102479264B1
KR102479264B1 KR1020220104662A KR20220104662A KR102479264B1 KR 102479264 B1 KR102479264 B1 KR 102479264B1 KR 1020220104662 A KR1020220104662 A KR 1020220104662A KR 20220104662 A KR20220104662 A KR 20220104662A KR 102479264 B1 KR102479264 B1 KR 102479264B1
Authority
KR
South Korea
Prior art keywords
request
requests
batch
tensor
output
Prior art date
Application number
KR1020220104662A
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=82608421&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR102479264(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 주식회사 프렌들리에이아이 filed Critical 주식회사 프렌들리에이아이
Priority to KR1020220174621A priority Critical patent/KR20230084089A/ko
Application granted granted Critical
Publication of KR102479264B1 publication Critical patent/KR102479264B1/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability
    • 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

트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭{DYNAMIC BATCHING FOR INFERENCE SYSTEM FOR TRANSFORMER-BASED GENERATION TASKS}
본 발명은 일반적으로 기계 학습 트랜스포머(transformer) 신경망 모델들에 관한 것으로, 더 상세하게는, 트랜스포머 모델들을 위한 선택적 배칭(batching)에 관한 것이다.
트랜스포머 신경망 모델들은, 다양한 애플리케이션들, 예컨대, 자연 언어 처리(NLP), 이미지 처리, 또는 순차적 데이터를 포함하는 오디오 처리 애플리케이션들에 사용되는 기계 학습 모델들이다. 예컨대, 트랜스포머 모델은, 질의를 표현하는 입력 토큰들의 시퀀스를 수신하고 질의에 대한 응답을 표현하는 출력 토큰들의 시퀀스를 생성할 수 있다. 다른 예로서, 트랜스포머 모델은, 독일어로 된 문단을 표현하는 입력 토큰들의 시퀀스를 수신하고 영어로 된 문단의 번역을 표현하는 출력 토큰들의 시퀀스를 생성할 수 있다. 또 다른 예로서, 트랜스포머 모델은, 텍스트의 문단을 표현하는 입력 토큰들의 시퀀스를 수신하고 텍스트의 요약된 버전을 표현하는 출력 토큰들의 시퀀스를 생성할 수 있다.
전형적으로, 클라이언트 디바이스들의 사용자들은 요청들을 추론 시스템에 제출한다. 추론 시스템은, 요청들의 입력들(예컨대, 입력 토큰들의 시퀀스)에 대해 기계 학습 트랜스포머 모델을 실행하여 요청들에 대한 출력들(예컨대, 출력 토큰들의 시퀀스)을 생성한다. 추론 시스템은, 출력들을 요청들의 클라이언트 디바이스들에 응답으로서 반환할 수 있다. 일 예시에서, 추론 시스템은, 특히 트랜스포머 모델의 파라미터들의 수가 상당히 많을 때, 레이턴시 및 처리량을 개선하기 위해 그래픽 처리 유닛(GPU)들 또는 텐서 처리 유닛(TPU)들과 같은 특수화된 하드웨어 가속기들 상에서 요청들을 실행한다.
일 예시에서, 추론 시스템은, 가속기들 상에서 높은 프로세서 활용을 달성하기 위해 요청들을 배치(batch)들로 처리한다. 구체적으로, 추론 시스템은, 하드웨어 가속기들 내의 일정 양의 병렬 계산 유닛들을 이용하도록 다수의 요청들을 배치로 함께 처리할 수 있다. 많은 상황들에서, 배치 내의 요청들에 대한 입력들은 길이가 가변적이다. 예컨대, 배치 내의 각각의 요청에 대한 입력 토큰들의 수는 길이가 가변적일 수 있다. 그러나, 트랜스포머 모델들에 대한 배칭의 방법들은 종종, 처리될 배치 내의 다수의 요청들에 대한 데이터의 길이가 동일할 것을 요구한다. 그에 따라, 가변 길이들을 갖는 요청들의 배치를 처리하는 것은 실현가능하지 않을 수 있거나, 이러한 문제를 해결하는 차선책들은 각각의 요청을 개별적으로 처리하는 것과 비교하여 더 많은 리소스들을 사용하는 것을 초래할 수 있다.
추론 시스템은, 트랜스포머 모델에서의 연산들의 서브세트를 선택적으로 배칭하지만 트랜스포머 모델에서의 연산들의 서브세트에 대해 개별적으로 배치 내의 요청들을 처리함으로써, 가변 입력 길이 또는 가변 타겟 길이 또는 가변 내부 상태 길이를 갖는 요청들의 배치에 기계 학습 트랜스포머 모델을 적용한다. 일 실시예에서, 개별적으로 처리될 연산은, 트랜스포머 모델의 인코더 또는 디코더의 주의집중(attention) 연산이다. 선택적 배칭에 의해, 추론 시스템은, 요청들의 배치의 데이터를 동일한 길이로 제한하는 차선책들에 대해 발생하는 불필요한 계산들을 방지하면서, 하드웨어 가속기들의 병렬 계산 능력들을 활용하도록, 가변 입력 또는 타겟 또는 내부 상태 길이를 갖는 요청들의 배치에 대해 배칭 연산들이 수행될 수 있게 할 수 있다.
구체적으로, 일 실시예에서, 추론 시스템은, 하나 이상의 입력 토큰 시퀀스를 포함하는 요청들의 배치를 수신한다. 배치 내의 제1 요청에 대한 제1 입력 토큰 시퀀스의 길이는 제2 요청에 대한 제2 입력 토큰 시퀀스의 길이와 상이할 수 있다. 추론 시스템은, 적어도, 서로 결합된 디코더들의 세트를 포함하는, 트랜스포머 모델에 액세스한다. 하나 이상의 반복에 대해, 추론 시스템은, 디코더들의 세트를 요청들에 대한 하나 이상의 입력에 적용함으로써, 요청들에 대한 하나 이상의 출력 토큰을 생성하는 단계들을 반복적으로 수행한다.
세트 내의 적어도 하나의 디코더에 대해, 추론 시스템은, 하나 이상의 입력 표현에 QKV 가중 텐서를 적용함으로써, 요청들에 대한 하나 이상의 질의, 하나 이상의 키, 및 하나 이상의 값을 생성한다. 일 예시에서, 질의들, 키들, 및 값들은 배치 연산에 의해 생성된다. 추론 시스템은, 적어도, 하나 이상의 질의로부터 제1 요청에 대한 제1 질의를, 하나 이상의 키로부터 제1 요청에 대한 제1 키를, 그리고 하나 이상의 값으로부터 제1 요청에 대한 제1 값을 분할한다. 추론 시스템은 또한, 적어도, 하나 이상의 질의로부터 제2 요청에 대한 제2 질의를, 하나 이상의 키로부터 제2 요청에 대한 제2 키를, 그리고 하나 이상의 값으로부터 제2 요청에 대한 제2 값을 분할한다.
추론 시스템은, 적어도, 제1 요청에 대한 제1 질의, 제1 키, 및 제1 값을 조합함으로써, 제1 요청에 대한 제1 주의집중 출력을 생성한다. 추론 시스템은 또한, 적어도, 제2 요청에 대한 제2 질의, 제2 키, 및 제2 값을 조합함으로써, 제2 요청에 대한 제2 주의집중 출력을 별개로 생성한다. 추론 시스템은 적어도 제1 주의집중 출력 및 제2 주의집중 출력을 연접된 텐서로 연접시키고, 연접된 텐서에 가중 텐서를 적용함으로써 하나 이상의 출력 표현을 생성한다. 일 예시예에, 하나 이상의 출력 표현은 배치 연산에 의해 생성된다. 추론 시스템은, 다음 반복을 위해 하나 이상의 출력 토큰을 디코더들의 세트에 대한 하나 이상의 입력으로서 설정하고, 적어도 하나의 요청에 대해 생성된 출력 토큰을 적어도 하나의 요청에 대한 응답으로서 클라이언트 디바이스에 제공한다.
일 실시예에서, 추론 시스템은, 추론 시스템이 요청들의 배치를 실행 엔진 상에서 실행되기 전에 동적으로 수정할 수 있게 하는 트랜스포머 모델에 대한 반복-레벨 동적 배칭을 수행한다. 구체적으로, 트랜스포머 모델들에 대한 기존 배칭 방법들에서, 일단 요청들의 배치가 실행 엔진에서 처리되기 시작했으면, 요청들의 배치를 수정하는 것은 어렵다. 이는, 특정 배칭 방법들이, 입력들의 길이 또는 내부 상태들의 길이가 배치 내의 모든 요청들에 걸쳐 동일할 것을 요구하기 때문이다. 따라서, 새로운 착신 요청들이 실행 엔진 상에서 실행되는 요청들의 배치와 동일한 길이의 입력들을 갖지 않는 한, 추론 시스템이 배치를 수정하여, 예컨대, 새로운 요청들을 배치에 부가하거나 배치에서 요청들을 제거하기가 어려울 수 있다.
선택적 배칭을 수행함으로써, 추론 시스템은, 반복-레벨에서 실행 엔진 상에서 처리되고 있는 배치를 모니터링 및 수정하고, 요청들이 완료되고 새로운 요청들이 수신되는 경우 반복들 사이에서 배치를 업데이트할 수 있다. 구체적으로, 하나 이상의 반복에서, 추론 시스템은, 새로운 착신 요청들을 배치에 부가하거나 완료된 요청들을 배치로부터 제거함으로써, 실행 엔진 상에서 실행되고 있는 배치를 수정할 수 있다. 이는, 선택적 배칭이, 트랜스포머 모델에 대한 하나 이상의 입력 또는 내부 상태를 동일한 길이들로 제한함이 없이 가변 길이들을 갖는 요청들이 처리될 수 있게 하기 때문이다. 이는, 응답이 사용자에게 더 빠르게 제공될 수 있도록, 추론 시스템이 다른 것들보다 더 일찍 완료되는 배치 내의 요청들을 제거할 수 있게 하고, 실행 엔진이 충분히 활용되고 있지 않은 경우, 추론 시스템이 요청들의 배치에 새로운 요청들을 부가할 수 있게 한다.
일 실시예에서, 추론 시스템의 서빙 시스템은 실행을 위한 하나 이상의 요청을 수신한다. 서빙 시스템은, 적어도 디코더들의 세트를 포함하는 기계 학습 트랜스포머 모델을 실행하기 위한 하나 이상의 실행 엔진에 각각이 결합되는 요청 프로세서 및 스케줄러를 포함할 수 있다. 스케줄러는, 실행 엔진 상에서의 실행을 위한 하나 이상의 요청을 포함하는 요청들의 배치를 스케줄링한다. 실행 엔진은, 요청들의 배치에 대한 제1 세트의 입력들에 트랜스포머 모델을 반복적으로 적용함으로써 제1 세트의 출력 토큰들을 생성한다. 일 예시에서, 트랜스포머 모델을 적용하는 것은, 요청들의 배치와 연관된 하나 이상의 입력 텐서에 적어도 하나의 배치 연산을 적용하는 것을 포함한다.
서빙 시스템은, 입력 토큰들의 시퀀스를 포함하는 새로운 요청을 클라이언트 디바이스로부터 수신할 수 있다. 스케줄러는, 하나 이상의 요청 및 새로운 요청을 포함하는 제2 배치의 요청들을, 실행 엔진이 제2 배치의 요청들을 실행하는 데 이용가능한 메모리를 갖는다고 결정하는 것에 대한 응답으로 실행 엔진 상에서의 실행을 위해 스케줄링한다. 실행 엔진은, 제2 배치의 요청들에 대한 제2 세트의 입력들에 트랜스포머 모델을 반복적으로 적용함으로써 제2 세트의 출력 토큰들을 생성한다. 제2 세트의 입력들은 새로운 요청에 대한 입력 토큰들의 시퀀스를 포함할 수 있다.
도 1은 실시예에 따른, 추론 시스템에 대한 시스템 환경의 고레벨 블록도이다.
도 2a 내지 도 2b는 실시예에 따른, 기계 학습 트랜스포머 모델을 사용한 배칭의 방법을 예시한다.
도 3a 내지 도 3b는 실시예에 따른, 기계 학습 트랜스포머 모델을 사용하는 선택적 배칭의 방법을 예시한다.
도 4는 실시예에 따른 추론 시스템의 블록도이다.
도 5a 내지 5d는 실시예에 따른, 기계 학습 트랜스포머 모델을 사용하여 요청들을 처리하기 위한 동적 배칭의 방법을 예시한다.
도 6a 내지 도 6b는 실시예에 따른, 트랜스포머 모델을 사용하는 선택적 배칭의 방법을 예시하는 흐름도이다.
도 7은 실시예에 따른, 트랜스포머 모델을 사용하여 요청들을 처리하기 위한 동적 배칭의 방법을 예시하는 흐름도이다.
도 8은 실시예에 따른, 본원에 설명된 실시예들이 추론 시스템 내에 구현될 수 있는 컴퓨터 시스템을 예시하는 도면이다.
도면들은 단지 예시의 목적들을 위해 본 발명의 다양한 실시예들을 도시한다. 관련 기술분야의 통상의 기술자는, 다음의 논의로부터, 본원에 예시된 구조들 및 방법들의 대안적인 실시예들이 본원에 설명된 본 발명의 원리들로부터 벗어나지 않으면서 이용될 수 있다는 것을 용이하게 인식할 것이다.
개관
도 1은 실시예에 따른, 추론 시스템(130)에 대한 시스템 환경(100)의 고레벨 블록도이다. 도 1에 도시된 시스템 환경(100)은, 하나 이상의 클라이언트 디바이스(110A, 110B), 네트워크(120), 및 추론 시스템(130)을 포함한다. 대안적인 구성들에서, 상이한 또는 부가적인 구성요소들이 시스템 환경(100)에 포함될 수 있다.
추론 시스템(130)은, 클라이언트 디바이스들(110A, 110B)로부터, 기계 학습 모델들을 사용하여 작업들을 수행하기 위한 요청들을 수신한다. 일 실시예에서, 기계 학습 모델들은 트랜스포머 신경망 모델들이다. 작업들은, 자연 언어 처리(NLP), 이미지 처리, 오디오 처리 애플리케이션들을 포함할 수 있지만, 이에 제한되지 않는다. 구체적으로, 트랜스포머 모델은, 요청에 대한 입력 토큰들의 시퀀스 및 원하는 응답에 대한 출력 토큰들의 시퀀스로 토큰화될 수 있는 순차적 데이터를 처리하는 데 적절할 수 있다. 추론 시스템(130)은, 입력 데이터(예컨대, 텍스트 데이터, 이미지 또는 비디오 데이터, 오디오 데이터)를 포함하는 요청을 수신하고 입력 데이터를 입력 토큰들의 세트로 인코딩한다. 추론 시스템(130)은, 하나 이상의 반복에 대해 기계 학습 트랜스포머 모델을 반복적으로 적용하여 출력 토큰들의 세트를 생성한다. 추론 시스템(130)은, 출력 토큰들의 세트를 출력 데이터로 디코딩하고 출력 데이터를 요청에 대한 응답으로서 반환한다. NLP 애플리케이션들과 같은 애플리케이션들에 대해, 입력 토큰들 또는 출력 토큰들의 시퀀스는, 예컨대 워드들의 시퀀스를 표현하기 위해 1차원(1-D)을 따라 배열되지만, 다른 실시예들에서, 입력 토큰들 또는 출력 토큰들의 시퀀스는 다차원 시퀀스일 수 있다는 것이 인식된다. 예컨대, 2차원 이미지 데이터에 대해, 토큰들의 시퀀스는, 제1 방향(예컨대, X 축) 및 제2 방향(예컨대, Y 축) 둘 모두를 따라 배열되는 2차원(2-D) 시퀀스일 수 있으며, 여기서, 각각의 토큰은 이미지 내의 하나 이상의 픽셀의 블록에 대응한다.
특히, NLP 작업들은 언어를 분석하기 위해 인공 지능 및 기계 학습 기법들을 사용하는 것을 수반하고, 번역, 감정 분석, 텍스트 요약, 자동 보정 등을 포함하는 다양한 작업들을 포함할 수 있다. NLP 작업들을 처리할 때, 추론 시스템(130)은, 워드들(예컨대, 질의)의 시퀀스의 입력 텍스트를 포함하는 요청을 수신하고, 입력 텍스트를, 각각이 잠재 공간에서의 개개의 워드를 표현하는 입력 토큰들의 시퀀스로 인코딩한다. 추론 시스템(130)은, 하나 이상의 반복에 대해 트랜스포머 모델을 반복적으로 적용하여 출력 토큰들(예컨대, 질의에 대한 응답)의 시퀀스를 생성한다. 출력 토큰들은 요청에 대한 응답으로서 출력 텍스트로 변환된다.
예컨대, 트랜스포머 모델은, 질의를 표현하는 입력 토큰들의 시퀀스를 수신하고 질의에 대한 응답을 표현하는 출력 토큰들의 시퀀스를 생성할 수 있다. 다른 예로서, 트랜스포머 모델은, 프랑스어로 문단을 표현하는 입력 토큰들의 시퀀스를 수신하고 영어로 문단 또는 문장의 번역을 표현하는 출력 토큰들의 시퀀스를 생성할 수 있다. 또 다른 예로서, 트랜스포머 모델은, 텍스트의 문단을 표현하는 입력 토큰들의 시퀀스를 수신하고 텍스트의 요약된 버전을 표현하는 출력 토큰들의 시퀀스를 생성할 수 있다.
일 실시예에서, 추론 시스템(130)은, 그래픽 처리 유닛(GPU)들 또는 텐서 처리 유닛(TPU)들과 같은 특수화된 하드웨어 가속기들 상에 구축되는 하나 이상의 실행 엔진을 포함한다. 요청들은 실행 엔진들 상에서 실행된다. 구체적으로, 트랜스포머 모델들과 같은 기계 학습 신경망 모델들의 실행은, 입력 데이터와 계산 집약적일 수 있는 고차원 가중 텐서들 사이의 텐서 곱셈과 같은 상당한 수의 연산들을 수반한다. 실행 엔진들의 하드웨어 가속기들은, 이러한 연산들을 병렬 처리에 의해 효율적으로 수행하도록 최적화될 수 있어서, 트랜스포머 모델의 파라미터들의 수가 많을 때 레이턴시 또는 처리량의 상당한 개선으로 이어진다.
추론 시스템(130)의 하드웨어는, 하나 이상의 중앙 처리 유닛(CPU) 코어, CPU 메모리(예컨대, DRAM), 데이터 저장소, 하나 이상의 실행 엔진(예컨대, GPU 디바이스들)을 포함할 수 있다. 각각의 실행 엔진은 로컬 메모리(예컨대, GPU 메모리)에 결합되는 코어들(예컨대, GPU 코어들)의 세트를 포함할 수 있고, 하나 이상의 하드웨어 가속기로 구성될 수 있다. 게다가, 추론 시스템(130)은, 다수의 하드웨어 구성요소들, 및 구성요소들이 요청들을 처리하기 위해 서로 조정할 수 있도록 다수의 하드웨어 구성요소들에 걸쳐 다양한 구성요소들을 함께 연결하도록 네트워크를 구성하기 위한 구성요소들로 구성될 수 있다. 예컨대, 하나의 실행 엔진은, 다수의 기계들 상의 다수의 하드웨어 가속기들과 통신할 수 있다. 실행 엔진은, 자신의 로컬 메모리 상에 저장된 데이터를 처리할 수 있다. 구체적으로, 트랜스포머 모델의 훈련 또는 추론 동안, 추론 또는 훈련에 필요한 데이터는, 예컨대, 클라이언트 디바이스(110)로부터 네트워크(120)를 통해 또는 CPU에 의해 데이터 저장소 내의 입력 파일로부터 판독되고, 실행 엔진의 로컬 메모리로 이동되어, 실행 엔진에 의해 처리된다. 처리의 결과들은 CPU에 의해 리트리브(retrieve)된다.
일 실시예에서, 추론 시스템(130)은, 하드웨어 가속기들 상에서 더 높은 프로세서 활용을 달성하기 위해 요청들을 배치들로 처리한다. 구체적으로, 추론 시스템(130)은, 실행 엔진들 내의 일정 양의 병렬 계산 유닛들을 이용하도록 다수의 요청들을 배치로 함께 처리한다. 그러한 실시예에서, 추론 시스템(130)은, 각각이 입력 토큰 시퀀스와 연관된 다수의 요청들을 수신한다. 추론 시스템(130)은, 요청들에 대한 출력 토큰들을 함께 생성하기 위해 요청들의 배치에 트랜스포머 모델을 반복적으로 적용한다. 일 예시에서, 트랜스포머 모델에 대한 배칭은, 동일한 길이의 입력 토큰 시퀀스들을 갖는 요청들을 함께 그룹화함으로써, 또는 각각의 반복에서, 배치 내의 요청들을, 그들 전부가 가장 짧은 길이를 갖는 요청과 동일한 입력 토큰 시퀀스 길이들을 갖는 것처럼 처리함으로써 가능해진다.
배칭을 이용한 트랜스포머 모델
도 2a 내지 도 2b는 실시예에 따른, 기계 학습 트랜스포머 모델(200)을 사용한 배칭의 방법을 예시한다. 특히, 트랜스포머 모델(200)은, 훈련 프로세스를 통해 결정된 파라미터 세트와 연관된다. 트랜스포머 모델(200)은, 하나 이상의 입력(예컨대, 입력 토큰 시퀀스들 또는 이전 반복의 출력 토큰들)을 수신하고 하나 이상의 출력(예컨대, 출력 토큰 예측들)을 생성하도록 결합된다. 구체적으로, 일 실시예에서, 요청은, "인코딩 단계"의 한 반복에서 요청의 입력 토큰 시퀀스에 트랜스포머 모델을 적용하고, "디코딩 단계"의 하나 이상의 반복에 대해 이전 반복에서 생성된 출력 토큰 시퀀스에 트랜스포머 모델을 적용함으로써 처리된다. 디코딩 단계에서, 이전 반복의 출력 토큰들은 다음 반복에 대한 입력으로서 설정되고, 프로세스는, 개개의 요청에 대해 모든 예측들이 생성되었다는 종료 토큰(예컨대, 마침표 "." 또는 "<end>" 표시자)이 배치 시그널링 내의 각각의 요청에 대해 생성될 때까지 디코딩 단계의 부가적인 반복들에 대해 반복된다. 다른 실시예들에서, 요청에 대한 종결 기준들은, 최대 수의 출력 토큰들이 생성된 후에 종결하는 것일 수 있거나, 또는 예컨대, 추론 시스템(130) 또는 클라이언트 디바이스(110)의 사용자들에 의해 특정되는 다른 유형들의 조건들일 수 있다.
도 2a는 트랜스포머 모델(200)에 대한 인코딩 단계를 예시하며, 여기서, 입력 토큰 시퀀스들의 세트가 처리되어 하나 이상의 출력 토큰이 생성된다. 도 2a에 도시된 예에서, 챗봇에 대한 요청들을 처리하는 추론 시스템(130)은, "what is your name?"이라는 질문으로서 제1 요청을, "what is the time?"이라는 질문으로서 제2 요청을, 그리고 "how do I pay?"라는 질문으로서 제3 요청을 수신한다. 추론 시스템(130)은, 요청들 각각을 개개의 세트의 입력 토큰 시퀀스들로서 인코딩한다. 제1 요청은 입력 토큰 시퀀스(X1)로 인코딩되고, 제2 요청은 입력 토큰 시퀀스(X2)로 인코딩되고, 제3 요청은 입력 토큰 시퀀스(X3)로 인코딩되며, 각각의 요청은 도면들에서 상이한 채움 패턴으로 예시된다. 도 2a의 각각의 입력 토큰 시퀀스는, 토큰들의 시퀀스가 단일 차원(예컨대, X 방향)을 따라 배열되는 1차원 시퀀스이다. 그러나, 도 1과 관련하여 위에 설명된 바와 같이, 다른 실시예들에서, 토큰들의 시퀀스는 다차원 시퀀스로서 배열될 수 있다는 것이 인식된다.
도 2a에 도시된 바와 같이, 각각의 요청이 4개의 워드를 포함하므로, 각각의 입력 토큰 시퀀스는 4개의 토큰을 포함하며, 각각의 토큰은 개개의 워드를 표현한다. 예컨대, 제1 요청에 대한 입력 토큰 시퀀스(X1)는, 워드들 "what", "is", "your", "name"을 표현하는 4개의 정사각형에 의해 표현된다. 구체적으로, 각각의 워드가 단일 정사각형에 맵핑되지만, 실제로, 추론 시스템(130)은, 워드에 대한 토큰을, 다차원 잠재 공간에서의 워드를 표현하는 임베딩으로서 표현한다. 그에 따라, 도 2a에서 각각의 입력 토큰 시퀀스가 시각적으로 2차원 1×4 텐서로서 예시되지만, 실제로, 각각의 입력 토큰 시퀀스는, 3차원 텐서 1×4×H로서 표현될 수 있으며, 여기서, H는 임베딩의 차원(예컨대, 페이지 안팎으로 이어지는 방향)이다. 더욱이, 각각의 토큰(입력 토큰 또는 출력 토큰)이 명세서의 나머지 부분에 대해 하나의 워드에 맵핑되지만, 이는 단지 예이고, 다른 실시예들에서, 각각의 토큰이 상이한 텍스트 유닛들, 텍스트 유닛들의 조합 등에 맵핑될 수 있다는 것이 인식된다. 예컨대, 다른 실시예들에서, 각각의 토큰은 다수의 워드들, 문단들, 문장들, n-그램(gram)의 텍스트 유닛에 맵핑될 수 있거나, 텍스트 유닛들에 부가하여 구두점(예컨대, "?", "!", ":")에 맵핑될 수 있다.
일 실시예에서, 트랜스포머 모델(200)은 N개의 디코더(D1, D2, ... , DN)의 세트를 포함한다. 디코더는, 입력 표현들의 세트를 수신하고 출력 표현들의 세트를 생성하도록 결합된다. 예컨대, 제1 디코더(D1)는, 입력 표현들의 세트로서 트랜스포머 모델(200)에 대한 하나 이상의 입력을 수신하고 출력 표현들의 세트를 생성하도록 결합된다. 각각의 후속 디코더는, 이전 디코더의 출력 표현들의 세트를 수신하고 다른 세트의 출력 표현들을 생성하도록 결합된다. 예컨대, 제1 디코더(D1) 후에 배치된 제2 디코더(D2)는, 제1 디코더(D1)에 의해 생성되는 출력 표현들의 세트를 수신하고 다른 세트의 출력 표현들을 생성하도록 결합된다. 이러한 프로세스는, 최종 디코더에 대한 출력 표현들의 세트가 생성될 때까지 반복된다.
트랜스포머 모델(200)은 또한, 최종 디코더(DN)로부터 출력 표현들의 세트를 수신하고 현재 반복에 대한 출력들로서 하나 이상의 출력 토큰을 생성하도록 결합되는 LM 헤드 블록(270)을 포함할 수 있다. 도 2a에 예시된 예에서, LM 헤드(270)는, 최종 디코더(DN)로부터 출력 표현들의 세트를 수신하고 텐서(
Figure 112022087460047-pat00001
)의 형태들로 요청들의 배치에 대한 하나 이상의 출력 토큰을 생성한다. 구체적으로, 텐서(
Figure 112022087460047-pat00002
)는, 응답에 대한 제1 워드 예측 "my"를 표현하는 제1 요청에 대한 제1 출력 토큰, 응답에 대한 워드 예측 "the"를 표현하는 제2 요청에 대한 제2 출력 토큰, 및 응답에 대한 워드 예측 "you"를 표현하는 제3 요청에 대한 제3 출력 토큰을 포함한다.
도 2b는 트랜스포머 모델(200)에 대한 디코딩 단계를 예시하며, 여기서, 이전 출력 토큰들이 입력들로서 처리되어 하나 이상의 부가적인 출력 토큰이 생성된다. 인코딩 단계와 상이하게, 트랜스포머 모델(200)이, 입력들로서, 이전 반복에서 생성된 출력 토큰들에 적용되어, 부가적인 출력 토큰들을 생성된다. 도 2b에 도시된 바와 같이, 트랜스포머 모델(200)은, 다음 반복에서, 이전 반복에서 생성된 출력 토큰들(
Figure 112022087460047-pat00003
)을 수신하고, 요청들에 대한 부가적인 출력 토큰들(
Figure 112022087460047-pat00004
)을 출력으로서 생성한다. 디코딩 단계는, 배치 내의 각각의 요청에 대해 종결 기준들이 충족될 때까지 반복된다.
트랜스포머 모델(200), 및 특히, 디코더들의 세트(D1, D2, ... , DN) 내의 각각의 디코더(Di)는, 각각이 개개의 연산, 특히, 텐서 연산을 표현하는 하나 이상의 블록을 포함한다. 구체적으로, 트랜스포머 모델(200) 내의 블록은, 요청에 대한 하나 이상의 입력 텐서에 대해 연산을 수행하여 요청에 대한 하나 이상의 출력 텐서를 생성하기 위한 데이터를 포함할 수 있다. 연산이 실행 엔진 상에서 실행될 때, 하나 이상의 입력 텐서 및 연산에 대한 연관된 데이터(예컨대, 가중 텐서들)는 실행 엔진의 로컬 메모리로부터 판독될 수 있다. 연산은, 하나 이상의 입력 텐서 및 연관된 데이터를 사용하여 실행되어 하나 이상의 출력 텐서를 생성할 수 있다. 출력 텐서들은, CPU에, 다른 실행 엔진에 제공되거나, 그것이 다음 연산에 사용될 수 있도록 실행 엔진의 로컬 메모리 상에 저장될 수 있다.
일 실시예에서, 트랜스포머 모델(200)의 연산들은, 요청들의 배치에 대한 데이터가 함께 처리되는 배치 연산들로서 구성된다. 배치 연산은, 배치 내의 다수의 요청에 대한 입력 데이터의 각각의 연접들인 하나 이상의 입력 텐서를 수신하도록 결합된다. 배치 연산은, 하나 이상의 입력 텐서에 개개의 연산을 적용함으로써 배치 내의 다수의 요청들에 대한 출력 데이터의 각각의 연접들인 하나 이상의 출력 텐서를 생성한다. 배치 연산에 대해, 입력 텐서는, 배치 내의 각각의 개개의 요청에 대한 입력 텐서의 연접일 수 있다. 그에 따라, 배치 연산에 대한 입력 텐서는, 부가적인 배치 차원에 걸쳐 배치 내의 각각의 요청에 대한 입력 텐서들을 합치는 단일의 더 큰 텐서이다.
유사하게, 배치 연산으로부터의 출력 텐서는, 배치 내의 각각의 개개의 요청에 대한 출력 텐서들의 연접으로서 표현될 수 있다. 그에 따라, 개별 요청에 대한 출력 텐서가 또한 요청에 대한 입력 텐서에 연산을 적용함으로써 생성될 수 있지만, 연접된 입력 텐서를 사용하는 배치 연산으로부터 생성된 출력 텐서는 또한 배치 차원에 걸쳐 배치 내의 각각의 요청에 대한 출력 텐서들을 합치는 단일의 더 큰 텐서이다.
더욱이, 텐서 곱셈 연산들과 같은 특정 연산들은, 트랜스포머 모델(200)의 파라미터 세트(예컨대, 가중 텐서들)를 배치 연산을 위한 입력 텐서들과 곱하는 것을 수반한다. 일부 예시들에서, 요청들이 개별적으로 처리될 때, 요청에 대한 입력 텐서가 가중 텐서와 곱해질 때마다 하드웨어 가속기의 로컬 메모리로부터 가중 텐서가 판독된다. 대조적으로, 텐서 곱셈을 배치 연산으로서 실행할 때, 파라미터 세트는 한 번 판독되고, 연접된 입력 텐서에 대한 연산에 재사용된다. 이는, 요청들을 개별적으로 처리하는 것과 비교하여 처리량의 상당한 개선으로 이어질 수 있다. 그러나, 도 2a 내지 도 2b의 배칭 프로세스에서, 각각의 요청은, 배치에 대한 입력 데이터가 단일 텐서로서 처리되므로, 입력 텐서 및 내부 상태 텐서에서 동일한 길이를 갖도록 요구될 수 있다.
도 2a에 도시된 바와 같이, 트랜스포머 모델(200) 내의 디코더는, 제1 계층 정규화 블록(210), QKV 연산 블록(215), 분할 블록(220), 자기-주의집중(self-attention) 블록(225), 주의집중 선형 블록(230), 제1 가산 블록(235), 제2 계층 정규화 블록(240), 제1 MLP 블록(245), GeLU 블록(250), 제2 MLP 블록(255), 및 제2 가산 블록(260)을 포함한다. 일 실시예에서, 디코더 내의 블록들 각각은 배치 연산으로서 실행 엔진 상에서 수행되며, 여기서, 배치 연산에 대한 입력 텐서들은 요청들의 배치에 대한 입력 데이터의 연접이고, 출력 텐서들은 요청들의 배치에 대한 출력 데이터의 연접이다. 제1 디코더(D1)에서의 연산들이 예로서 설명되지만, 세트 내의 나머지 디코더들이 또한 제1 디코더(D1)와 유사한 연산들을 포함할 수 있다는 것이 인식된다.
구체적으로, 추론 시스템(130)은, 입력 토큰 시퀀스들(X1, X2, X3)을 연접된 입력 텐서로 연접시킨다. 계층 정규화 블록(210)은, 연접된 입력 텐서를 수신하고 각각의 요청의 요소들을 정규화하여 정규화된 텐서를 출력 텐서로서 생성하도록 결합된다. QKV 연산 블록(215)은, 정규화된 텐서를 입력 텐서로서 수신하고 요청들에 대한 질의들, 키들, 값들을 포함하는 출력 텐서를 생성하도록 결합된다. 구체적으로, QKV 연산 블록(215)은, 트랜스포머 모델(200)의 훈련된 파라미터 세트인 QKV 가중 텐서를, 각각의 요청에 대한 정규화된 데이터를 포함하는 정규화된 텐서에 적용하여 배치 내의 각각의 요청에 대한 질의들, 키들, 및 값들을 포함하는 출력 텐서를 생성함으로써, 질의들, 키들, 및 값들을 생성한다. 예컨대, 도 2a에 도시된 바와 같이, QKV 연산(215)의 출력 텐서의 제1 행은 제1 요청에 대한 (연접된 형태의) 질의, 키, 값을 포함하고, 제2 행은 제2 요청에 대한 질의, 키, 값을 포함하는 등 그러한 식이다. 일 실시예에서, 단일 QKV 가중 텐서를 적용하는 것 대신에, QKV 연산 블록(215)은, 입력 텐서에 각각 적용되는 별개의 가중 텐서들과 연관되어 질의들, 키들, 및 값들을 별개로 생성할 수 있다. 예컨대, QKV 연산 블록(215)은, 입력 텐서에 질의 가중 텐서를 적용하여 요청들에 대한 질의들을 생성하고, 입력 텐서에 별개의 키 가중 텐서를 적용하여 요청들에 대한 키들을 생성하고, 입력 텐서에 별개의 값 가중 텐서를 적용하여 요청들에 대한 값들을 생성할 수 있다.
분할 블록(220)은, QKV 연산 블록(215)으로부터 출력 텐서를 수신하고, 출력 텐서를, 현재 반복에 대한 질의 텐서, 키 텐서, 값 텐서로, 이러한 텐서들이 별개로 생성되지 않는 경우에 분할하도록 결합된다. 질의 텐서는 요청들의 배치에 대한 질의들을 포함하고, 키 텐서는 요청들의 배치에 대한 키들을 포함하고, 값 텐서는 현재 반복에 대한 요청들의 배치에 대한 값들을 포함한다. 일 예시에서, 실행 엔진은, 요청들의 배치에 대한 내부 상태를, 이전 반복들 및 현재 반복에서 생성된 키들을 캐싱하기 위한 키 캐시 텐서 및 이전 반복들 및 현재 반복에서 생성된 값들을 캐싱하기 위한 값 캐시 텐서로서 유지한다. 추론 시스템(130)은, 키 캐시 텐서에 현재 반복에 대한 키 텐서를 그리고 값 캐시 텐서에 현재 반복에 대한 값 텐서를 부가한다.
자기-주의집중 블록(225)은, 질의 텐서, 키 캐시 텐서, 및 값 캐시 텐서를 입력 텐서들로서 수신하고 배치 내의 요청들에 대한 주의집중 출력들을 포함하는 출력 텐서를 생성하도록 결합된다. 일 예시에서, 주의집중 출력 텐서는, 질의 텐서를 키 캐시 텐서와 곱하여 곱해진 텐서를 생성하고 그 곱해진 텐서를 값 캐시 텐서와 곱함으로써 생성된다. 자기-주의집중 블록(225)이 배치 연산으로서 실행될 때, 질의 텐서 및 키 캐시 텐서가 실행 엔진 상에서 곱해져 곱해진 텐서를 생성할 수 있다. 값 캐시 텐서 및 곱해진 텐서가 곱해져 주의집중 출력 텐서를 생성할 수 있다. 주의집중 출력 텐서는, 배치 내의 요청들에 대한 주의집중 출력들을 포함한다. 예컨대, 도 2a에서, 주의집중 출력 텐서(Z')의 제1 행은 제1 요청에 대한 주의집중 출력이고, 주의집중 출력 텐서(Z')의 제2 행은 제2 요청에 대한 주의집중 출력인 등 그러한 식이다.
주의집중 선형 블록(230)은 주의집중 출력 텐서를 입력 텐서로서 수신하도록 결합되고, 주의집중 출력 텐서에 트랜스포머 모델(200)의 훈련된 파라미터 세트인 주의집중 가중 텐서를 적용함으로써 출력 텐서를 생성한다. 주의집중 선형 블록(230)은 배치 연산으로서 구성된다. 예컨대, 도 2a에서, 출력 텐서(Z)의 제1 행은 제1 요청에 대한 출력 데이터일 수 있고, 출력 텐서(Z)의 제2 행은 제2 요청에 대한 출력 데이터일 수 있는 등 그러한 식이다. 제1 가산 블록(235)은, 입력 토큰 시퀀스들을 갖는 연접된 입력 텐서 및 주의집중 선형 블록(230)으로부터의 출력 텐서를 결합하여 결합된 텐서를 생성한다. 제2 계층 정규화 블록(240)은, 가산 블록(235)으로부터의 결합된 텐서를 수신하고 각각의 요청의 요소들을 정규화하여 정규화된 텐서를 출력 텐서로서 생성하도록 결합된다.
디코더는, 부가적인 신경망 계층들을 포함하는 하나 이상의 블록을 포함하는 다중-계층 퍼셉트론(multi-layer perceptron)(MLP) 블록(242)을 더 포함한다. 일 실시예에서, MLP 블록(242)은, 제2 계층 정규화 블록(240)으로부터의 정규화된 텐서를 입력 텐서로서 수신하고 정규화된 텐서에 트랜스포머 모델(200)의 훈련된 파라미터 세트인 MLP 가중 텐서를 적용함으로써 출력 텐서를 생성하도록 결합되는 제1 MLP 블록(245)을 포함한다. MLP 블록(242)은, 제1 MLP 블록(245)으로부터의 출력 텐서를 입력 텐서로서 수신하고 입력 텐서에 GeLU 함수를 적용함으로써 출력 텐서를 생성하도록 결합되는 GeLU 블록(250)을 포함한다. MLP 블록(242)은, GeLU 블록(250)으로부터의 출력 텐서를 입력 텐서로서 수신하고 트랜스포머 모델(200)의 훈련된 파라미터 세트인 제2 MLP 가중 텐서를 적용함으로써 출력 텐서를 생성하도록 결합되는 제2 MLP 블록(255)을 포함한다.
제2 가산 블록(260)으로부터의 결합된 텐서는, 제1 디코더(D1)에 대해 생성된 출력 표현들의 세트로서 획득될 수 있다. 후속하여, 제1 디코더(D1) 후에 배치된 제2 디코더(D2)는 제1 디코더(D1)로부터의 출력 표현들의 세트를 수신하도록 결합되고, 유사한 연산들을 반복하여 다른 세트의 출력 표현들을 생성한다. 이러한 프로세스는, 최종 디코더(DN)로부터의 출력 표현들의 세트가 생성될 때까지 반복된다. 구체적으로, 각각의 디코더가 제1 디코더(D1)와 유사한 연산들을 수반할 수 있지만, 연산들과 연관되는 훈련된 파라미터 세트는 디코더마다 상이할 수 있다. LM 헤드 블록(270)은 최종 디코더(DN)로부터의 출력 표현들의 세트를 입력 텐서로서 수신하도록 결합되고, 하나 이상의 출력 토큰을 포함하는 출력 텐서(
Figure 112022087460047-pat00005
)를 생성한다.
도 2b와 연계하여 설명된 바와 같이, 다음 반복은, 이전 반복에서 생성된 출력 토큰들이 트랜스포머 모델(200)에 대한 입력들인 디코딩 단계이다. 트랜스포머 모델(200)은 다른 세트의 출력 토큰들을 생성한다. 계층 정규화 블록(210)이 출력 텐서(
Figure 112022087460047-pat00006
)에 적용되어 정규화된 텐서가 생성된다. QKV 연산 블록(215)이 정규화된 텐서에 적용되어 현재 반복에 대한 질의들, 키들, 값들을 포함하는 출력 텐서가 생성된다. 분할 블록(220)이 적용되어 출력 텐서가 질의 텐서, 키 텐서, 값 텐서로 분할된다. 추론 시스템(130)은, 키 캐시 텐서에 현재 반복에 대한 키 텐서를 부가하고 값 캐시 텐서에 현재 반복에 대한 값 텐서를 부가한다. 그에 따라, 도 2b에 도시된 반복 동안, 키 캐시 텐서(Kcache)는 이전 반복들의 키들 및 현재 키 텐서(K)를 포함하고, 값 캐시 텐서(Vcache)는 이전 반복들의 값들 및 현재 값 텐서(V)를 포함한다.
자기-주의집중 블록(225)이 현재 반복에 대한 질의 텐서, 키 캐시 텐서, 및 값 캐시 텐서에 적용되어 주의집중 출력 텐서가 생성된다. 주의집중 선형 블록(230)이 주의집중 출력 텐서에 적용되어 출력 텐서가 생성된다. 가산 블록(235)은, 입력들 및 주의집중 선형 블록(230)으로부터의 출력 텐서를 결합하여 결합된 텐서를 생성한다. MLP 블록(242)이 결합된 텐서에 적용되어 디코더(D1)에 대한 출력 표현들의 세트가 생성된다. 이러한 프로세스는, 나머지 디코더들 및 LM 헤드(270)에 대해 반복되어 다른 세트의 출력 토큰들을 포함하는 출력 텐서(
Figure 112022087460047-pat00007
)를 생성하며, 트랜스포머 모델(200)은 배치 내의 각각의 요청에 대해 종결 기준들이 충족될 때까지 반복적으로 적용된다.
선택적 배칭을 이용한 트랜스포머 모델
많은 예시들에서, 요청들에 대한 입력들 또는 요청들에 대한 내부 상태들은 길이가 가변적이고, 예컨대, 도 2a 내지 도 2b의 배칭 방법을 사용하여 배칭하기가 어려울 수 있다. 예컨대, 상이한 NLP 요청들 사이의 입력 토큰들의 수는 입력 텍스트 및 요청의 유형에 따라 길이가 다를 가능성이 높다. 예컨대, 상이한 사용자들은 언어를 상이하게 합성하므로, 제1 질의 요청의 길이는 제2 질의 요청의 길이와 상이할 수 있다. 그러나, 트랜스포머 모델들을 배칭하는 방법들, 이를테면, 도 2a 내지 도 2b와 연계하여 설명된 방법은, 입력 텐서들이 연산을 위해 단일의 연접된 텐서로 합쳐져야 하므로, 배치에 대한 입력 텐서들의 길이들이 동일할 것을 요구한다. 그에 따라, 입력 텐서들의 길이들이 다수의 요청들에 대해 상이한 경우, 도 2a 내지 도 2b의 배칭 방법을 사용하여 요청들을 배치로서 처리하는 것은 실현가능하지 않을 수 있다.
게다가, 이러한 문제를 해결하는 차선책은, 인코딩 단계 동안, 입력 토큰 시퀀스들을, 요청들이 가장 짧은 길이(즉, 가장 적은 토큰 수)를 갖는 입력 토큰 시퀀스와 동일한 길이들을 갖는 것처럼 취급하는 것이다. 그러나, 이는, 추론 시스템(130)이, 후속 반복들에서 더 긴 입력 길이들을 갖는 요청들에 대해 생성된 출력 토큰들을 폐기할 것을 요구하는데, 그 이유는, 요청에 대해 수신된 원래의 입력 토큰들이 개개의 요소들에서 대체되어야 하기 때문이다. 이는, 추론 시스템이 더 긴 요청들에 대한 입력 토큰 시퀀스들을 단일 반복 대신에 다수의 반복들에서 별개로 처리하기 때문에, 불필요한 리소스들의 비효율성 및 낭비를 초래한다. 다른 차선책은, 입력 토큰 시퀀스들을, 요청들이 가장 긴 길이(즉, 가장 많은 토큰 수)를 갖는 입력 토큰 시퀀스와 동일한 길이들을 갖는 것처럼 취급하는 것일 수 있다. 그러나, 이는, 추론 시스템이 입력 텐서들의 크기를 증가시켜 요청을 가장 긴 토큰 시퀀스와 매칭시키는 것(그리고 나머지 요소들을 패딩하는 것)을 요구한다. 이는, 추론 시스템이 트랜스포머 모델을 실행하는 프로세스 전체에 걸쳐 더 큰 입력 텐서를 처리하므로, 중복 계산을 초래한다. 예컨대, 일부 경우들에서, 도 2a 내지 도 2b의 방법을 사용하여 요청들의 배치를 처리하는 데 요구되는 반복들의 수는, 각각의 요청을 개별적으로 처리하기 위한 반복들의 수보다 상당히 더 많을 수 있다.
그에 따라, 일 실시예에서, 추론 시스템(130)은, 선택적 배칭 방법을 사용하여 가변 입력 길이 또는 타겟 길이 또는 내부 상태 길이를 갖는 요청들의 배치에 대해 기계 학습 트랜스포머 모델을 훈련시키고 적용한다. 선택적 배칭 방법에서, 추론 시스템(130)은 트랜스포머 모델에서의 연산들의 서브세트를 선택적으로 배칭하지만, 배칭과 호환가능하지 않은 트랜스포머 모델에서의 연산들의 서브세트에 대해서는 요청들을 개별적으로 별개로 처리한다. 일 실시예에서, 별개로 처리될 연산은, 트랜스포머 모델의 인코더 또는 디코더의 주의집중 연산이다. 선택적 배칭에 의해, 추론 시스템(130)은, 차선책들에서 발생하는 문제들을 방지하면서, 하드웨어 가속기들의 병렬 계산 능력들을 활용하도록, 가변 입력 또는 타겟 길이 또는 내부 상태 길이를 갖는 요청들의 배치에 대해 배칭 연산들이 수행될 수 있게 할 수 있다.
도 3a 내지 도 3b는 실시예에 따른, 기계 학습 트랜스포머 모델(300)을 사용하는 선택적 배칭의 방법을 예시한다. 도 3a에 도시된 예에서, 추론 시스템(130)은, 도 2a와 상이한, 상이한 길이들을 갖는 입력 토큰 시퀀스들을 갖는 요청들의 배치를 수신한다. 도 3a에서, 추론 시스템(130)은, "what's up?"이라는 질문으로서 제1 요청을, "hello?"라는 질문으로서 제2 요청을, 그리고 질문 "how are you?"라는 질문으로서 제3 요청을 수신하며, 이들 각각은 상이한 길이들의 워드들을 갖는다. 추론 시스템(130)은, 요청들 각각을 개개의 세트의 입력 토큰 시퀀스들로서 인코딩한다. 제1 요청은 입력 토큰 시퀀스(X1)로 인코딩되고, 제2 요청은 입력 토큰 시퀀스(X2)로 인코딩되고, 제3 요청은 입력 토큰 시퀀스(X3)로 인코딩된다.
도 3a 내지 도 3b에 도시된 트랜스포머 모델(300)은 또한, N개의 디코더들(D1, D2, ... , DN)의 세트 및 LM 헤드 블록(370)을 포함한다. 그러나, 도 2a 내지 도 2b의 트랜스포머 모델(200)과 상이하게, 트랜스포머 모델(300)에서의 연산들의 서브세트, 구체적으로, 자기-주의집중 연산 블록(325)에서의 연산들은, 배치 연산으로서 처리되는 것 대신에 별개로 실행된다. 도 3a에 도시된 바와 같이, 트랜스포머 모델(300)은, 제1 계층 정규화 블록(310), QKV 연산 블록(315), 분할 블록(320), 자기-주의집중 블록(325), 주의집중 선형 블록(330), 제1 가산 블록(335), 제2 계층 정규화 블록(340), 제1 MLP 블록(345), GeLU 블록(350), 제2 MLP 블록(355), 및 제2 가산 블록(360)을 포함한다.
구체적으로, 선택적 배칭 방법에서, 추론 시스템(130)은, 입력 토큰 시퀀스들(X1, X2, X3)을 연접된 입력 텐서로 연접시킬 수 있다. 도 2a 내지 도 2b에서의 배칭 방법과 상이하게, 추론 시스템(130)은, 요청들의 배치에 대한 개별 입력 토큰들이 하나의 차원, 예컨대, 도 3a 내지 도 3b에서의 수직 차원에 걸쳐 연접되도록 입력 토큰 시퀀스들을 연접시킨다. 상이한 길이들을 갖는 입력 토큰 시퀀스들이 트랜스포머 모델(300)에 입력될 때, 배치 내의 요청들에 대해 동일한 차원수를 갖는 연접된 텐서로 시퀀스들을 연접시키는 하나의 방식은, 단일 차원에 걸쳐 요청들에 대한 입력 토큰들을 연접시키는 것이다. 그에 따라, 도 3a에서의 연접된 텐서는 도 3a에서 ∑Lb×1 텐서로서 예시되며, 여기서, ∑Lb는 배치 내의 각각의 요청(b)에 대한 토큰 길이들의 총 합을 나타내고, 여기서, 요청(b)에 대한 입력 토큰들의 길이는 Lb에 의해 주어진다. 실제로, 연접된 입력 텐서는 ∑Lb×1×H 텐서일 수 있으며, 여기서, H는 임베딩의 차원이다.
제1 계층 정규화 블록(310)이 연접된 입력 텐서에 적용되어, 각각의 요청의 요소들을 정규화하는 정규화된 텐서가 생성된다. 일 예시에서, 제1 계층 정규화 블록(310)의 연산은 다음에 의해 주어진다:
Figure 112022087460047-pat00008
여기서,
Figure 112022087460047-pat00009
는 연접된 입력 텐서를 표현하고,
Figure 112022087460047-pat00010
는 정규화된 텐서들을 표현하고, ε은 상수이고,
Figure 112022087460047-pat00011
이다.
QKV 연산 블록(315)이, 입력 텐서로서, 정규화된 텐서에 적용되어, 요청들에 대한 질의들, 키들, 값들을 포함하는 출력 텐서가 생성된다. QKV 연산 블록은 하나 이상의 신경망 계층으로서 구성될 수 있다. 구체적으로, QKV 연산 블록(315)은, 트랜스포머 모델(300)의 훈련된 파라미터 세트인 QKV 가중 텐서를 정규화된 텐서에 적용함으로써 질의들, 키들, 및 값들을 생성한다. 일 예시에서, QKV 연산 블록(315)의 연산은 다음에 의해 주어진다:
Figure 112022087460047-pat00012
여기서,
Figure 112022087460047-pat00013
는 제1 계층 정규화 블록(310)으로부터의 정규화된 텐서를 표현하고,
Figure 112022087460047-pat00014
는 질의들, 키들, 및 값들을 포함하는 출력 텐서를 표현하고,
Figure 112022087460047-pat00015
는 QKV 가중 텐서이고,
Figure 112022087460047-pat00016
이다.
특히, 선택적 배칭 방법에서의 QKV 연산 블록(315)은 배치 연산으로서 구성될 수 있고, QKV 가중 텐서가 계층 정규화 블록(310)으로부터의 정규화된 텐서와 곱해져, 요청들의 배치에 대한 질의들, 키들, 및 값들을 포함하는 출력 텐서가 생성된다. 연접된 입력 텐서의 형상 때문에, QKV 연산(315)의 출력 텐서는 또한, 요청들에 대한 각각의 질의 요소가 하나의 차원, 예컨대, 수직 차원을 따라 연접되고, 요청들에 대한 각각의 키 요소가 하나의 차원을 따라 연접되고, 요청들에 대한 각각의 값 요소가 하나의 차원을 따라 연접되도록 배열될 수 있다. 예컨대, 도 3a에 도시된 바와 같이, QKV 연산(315)의 출력 텐서의 제1 및 제2 행들은 제1 요청에 대한 질의, 키, 값에 대응하고, 제3 행은 제2 요청에 대한 질의, 키, 값에 대응하고, 제4 내지 제6 행들은 제3 요청에 대한 질의, 키, 값에 대응한다. 유사하게, QKV 연산 블록(315)은, 입력 텐서에 질의 텐서, 별개의 키 텐서, 및 별개의 값 텐서를 적용함으로써 질의들, 키들, 및 값들을 별개로 생성할 수 있다. 일 실시예에서, QKV 연산 블록(315)은 다수의 주의집중 헤드들을 포함하고, 각각의 주의집중 헤드에 대해 질의들, 키들, 및 값들이 생성된다. 그러한 예시에서, QKV 연산 블록(315)이 n개의 주의집중 헤드를 포함할 때, H는 n×h와 동일할 수 있으며, 여기서, h는 주의집중 헤드당 잠재 공간의 차원수이다.
분할 블록(320)은, QKV 연산 블록(315)으로부터 출력 텐서를 수신하고 출력 텐서를 현재 반복에 대한 질의 텐서, 키 텐서, 값 텐서로 분할하도록 결합된다. 일 예시에서, 분할 블록(320)의 연산은 다음에 의해 주어진다:
Figure 112022087460047-pat00017
여기서,
Figure 112022087460047-pat00018
는 QKV 연산 블록(315)으로부터의 출력 텐서를 표현하고,
Figure 112022087460047-pat00019
는 질의 텐서를 표현하고,
Figure 112022087460047-pat00020
는 키 텐서를 표현하고,
Figure 112022087460047-pat00021
는 값 텐서를 표현한다. QKV 연산 블록(315)이 다수의 주의집중 헤드들을 포함할 때, 질의 텐서는 각각의 요청에 대해 n개의 질의를 포함할 수 있고, 키 텐서는 각각의 요청에 대해 n개의 키를 포함할 수 있고, 값 텐서는 각각의 요청에 대해 n개의 값을 포함할 수 있다.
도 2a의 배칭 방법과 상이하게, 분할 블록(320)은, 질의 텐서(Q)를 각각의 요청에 대한 질의들로, 키 텐서(K)를 각각의 요청에 대한 키들로, 그리고 값 텐서(V)를 각각의 요청에 대한 값들로 추가로 분할한다. 일 예시에서, 분할 블록(320)의 요청별 분할 연산은 다음에 의해 주어진다:
Figure 112022087460047-pat00022
여기서, Q1, Q2, ... , QB는 개별 요청들에 대한 질의들이고,
Figure 112022087460047-pat00023
,
Figure 112022087460047-pat00024
, ... ,
Figure 112022087460047-pat00025
이고,
Figure 112022087460047-pat00026
여기서, K1, K2, ... , KB는 개별 요청들에 대한 키들이고,
Figure 112022087460047-pat00027
,
Figure 112022087460047-pat00028
, ... ,
Figure 112022087460047-pat00029
이고,
Figure 112022087460047-pat00030
여기서, V1, V2, ... , VB는 개별 요청들에 대한 질의들이고,
Figure 112022087460047-pat00031
,
Figure 112022087460047-pat00032
, ... ,
Figure 112022087460047-pat00033
이다.
더욱이, 각각의 요청(b = 1, 2, ... , B)에 대해, 추론 시스템(130)은, 키 캐시 텐서(Kcacheb) 및 값 캐시 텐서(Vcacheb)의 형태로 요청에 대한 내부 상태를 유지하며, 여기서,
Figure 112022087460047-pat00034
Figure 112022087460047-pat00035
이고, Lb,curr은 요청(b)의 토큰 시퀀스(입력 토큰들 및 출력 토큰들 둘 모두를 포함함)의 현재 길이이다. 다른 실시예들에서, 요청에 대한 내부 상태는 요청에 대한 키들 및 값들로부터의 상이한 유형들의 정보를 포함할 수 있으며, 실시예들은 이에 제한되지 않는다. 그에 따라, Lb,curr은 인코딩 단계에 대한 Lb와 동일하다. 추론 시스템(130)은, 요청에 대해, 개개의 키 캐시 텐서에 키 텐서(Kb)를 그리고 개개의 값 캐시 텐서에 값 텐서(Vb)를 부가한다. 요청들의 배치에 대한 입력들의 세트(즉, X1, X2, X3에 대한 입력 토큰 시퀀스들)가 상이한 길이들을 갖기 때문에, 배치 내의 요청들에 대한 내부 상태의 길이는 도 3a에서 상이하다. 도 2a 내지 도 2b의 배칭 프로세스에서, 자기-주의집중 연산(225)이 질의 텐서, 키 캐시 텐서, 및 값 캐시 텐서를 함께 곱하는 것을 수반하므로, 키 캐시 텐서 및 값 캐시 텐서는 또한 배치 내의 요청들에 걸쳐 동일한 길이들을 갖도록 요구된다. 그러나, 도 3a에서 선택적 배칭이 수행되므로, 그 내부 상태에 대해 상이한 길이들을 갖는 요청들은 또한, 자기-주의집중 연산(325)에 대해 별개로 처리되면서 선택 연산들에 대해 배치들로 효율적으로 처리될 수 있다.
자기-주의집중 블록(325)은, 각각의 요청에 대한 질의 텐서, 키 캐시 텐서, 및 값 캐시 텐서를 하나 이상의 입력 텐서로서 수신하도록 결합되며, 배치 내의 각각의 요청에 대한 주의집중 출력들인 하나 이상의 출력 텐서를 생성한다. 일 실시예에서, 자기-주의집중 블록(325)은 배칭되지 않고, 적어도, 배치 내의 요청들의 서브세트가 서로 별개로 처리된다. 특히, 배치 내의 각각의 요청은 자기-주의집중 블록(325)에 대해 개별적으로 처리될 수 있다.
배치 내의 요청에 대해, 자기-주의집중 블록(325)은, 요청에 대한 질의 및 요청에 대한 키 캐시 텐서를 수신하여 요청에 대한 곱해진 텐서를 생성하도록 결합된다. 일 예시에서, 요청에 대한 자기-주의집중 블록(325)의 연산은 다음에 의해 주어진다:
Figure 112022087460047-pat00036
여기서,
Figure 112022087460047-pat00037
는 요청(b)에 대한 곱해진 텐서를 표현하고,
Figure 112022087460047-pat00038
는 요청(b)에 대해 각각의 주의집중 헤드에 대한 질의를 함께 연접시키는 요청(b)에 대한 재성형된 질의 텐서(Qb)이고,
Figure 112022087460047-pat00039
는 요청(b)에 대해 각각의 주의집중 헤드에 대한 키 캐시 텐서를 함께 연접시키는 요청(b)에 대한 재성형된 키 캐시 텐서(Kcacheb)이다.
이어서, 자기-주의집중 블록(325)은, 요청에 대한 곱해진 텐서 및 값 캐시 텐서를 수신하고 요청에 대한 주의집중 출력 텐서를 생성하도록 결합된다. 일 예시에서, 요청에 대한 자기-주의집중 블록(325)의 연산은 다음에 의해 주어진다:
Figure 112022087460047-pat00040
Figure 112022087460047-pat00041
여기서,
Figure 112022087460047-pat00042
는 요청(b)에 대한 수신된 곱해진 텐서를 표현하고,
Figure 112022087460047-pat00043
이고,
Figure 112022087460047-pat00044
여기서,
Figure 112022087460047-pat00045
는 요청(b)에 대한 곱해진 텐서를 표현하고,
Figure 112022087460047-pat00046
는 요청(b)에 대해 각각의 주의집중 헤드에 대한 값 캐시 텐서를 함께 연접시키는 요청(b)에 대한 재성형된 값 텐서(Vcacheb)이다. 후속하여, 출력(Yb)은 다음에 의해 주의집중 출력(Z'b)을 생성하도록 재성형된다:
Figure 112022087460047-pat00047
여기서,
Figure 112022087460047-pat00048
Figure 112022087460047-pat00049
이다.
특히, 자기-주의집중 블록(325)의 연산들은, 자기-주의집중 블록(325)의 연산들이 고정 가중 텐서와 하나 이상의 입력 텐서 사이의 텐서 곱셈보다는 요청들에 대한 질의들, 키 캐시들, 및 값 캐시들 사이의 곱셈들이기 때문에, 상이한 길이들을 갖는 요청들에 대한 배치 연산으로서 호환가능하지 않을 수 있다. 그에 따라, 배치 내의 요청들에 대한 주의집중 출력들은 별개로 생성된다. 예컨대, 실행 엔진은, 제1 요청에 대한 입력 텐서들(예컨대, 질의 텐서(Q1), 키 캐시 텐서(Kcache1), 값 캐시 텐서(Vcache1))을 사용하여 제1 요청에 대한 제1 주의집중 출력을 생성할 수 있고, 별개로, 실행 엔진은, 별개의 단계에서 제2 요청에 대한 입력 텐서들을 사용하여 제2 요청에 대한 제2 주의집중 출력을 생성할 수 있다. 특히, 제2 주의집중 출력은, 제1 요청을 처리한 실행 엔진과 상이한 실행 엔진에서 생성되거나, 동일한 실행 엔진에서 제1 요청을 처리한 하드웨어 가속기와 상이한 하드웨어 가속기에서 생성되거나, 동일한 하드웨어 가속기에서 제1 요청을 처리한 GPU 커널과 상이한 GPU 커널에서 생성되거나, 동일한 하드웨어 가속기에서 제1 요청을 처리한 동일한 GPU 커널에서 생성될 수 있지만, 실시예들은 이에 제한되지 않는다.
추론 시스템(130)은, 주의집중 선형 블록(330)에서의 후속 연산이 배치 연산으로서 구성되므로, 배치 내의 요청들의 주의집중 출력들을 단일 주의집중 출력 텐서로 함께 연접시킨다. 일 예시에서, 연접 연산은 다음에 의해 주어진다:
Figure 112022087460047-pat00050
여기서,
Figure 112022087460047-pat00051
는 단일 주의집중 출력 텐서를 표현한다. 도 3a에 도시된 바와 같이, 연접된 주의집중 출력 텐서(Z')의 제1 및 제2 행들은 제1 요청의 주의집중 출력들에 대응하고, 제3 행은 제2 요청의 주의집중 출력들에 대응하고, 제4 내지 제6 행들은 제3 요청의 주의집중 출력들에 대응한다.
주의집중 선형 블록(330)은 주의집중 출력 텐서를 입력 텐서로서 수신하도록 결합되고, 주의집중 출력 텐서에 트랜스포머 모델(300)의 훈련된 파라미터 세트인 주의집중 가중 텐서를 적용함으로써 출력 텐서를 생성한다. 주의집중 선형 블록(330)은 하나 이상의 신경망 계층으로서 구성될 수 있다. 주의집중 선형 블록(330)은 배치 연산으로서 실행될 수 있다. 일 예시에서, 주의집중 선형 블록(330)의 연산은 다음에 의해 주어진다:
Figure 112022087460047-pat00052
여기서,
Figure 112022087460047-pat00053
는 자기-주의집중 블록(325)으로부터의 주의집중 출력 텐서를 표현하고,
Figure 112022087460047-pat00054
는 출력 텐서를 표현하고,
Figure 112022087460047-pat00055
주의집중 가중 텐서이고,
Figure 112022087460047-pat00056
이다. 예로서, 도 3a에서, 출력 텐서(Z)의 제1 내지 제2 행들은 제1 요청에 대한 출력 데이터를 포함하고, 제3 행은 제2 요청에 대한 출력 데이터를 포함하고, 제4 내지 제6 행들은 제3 요청에 대한 출력 데이터를 포함한다.
제1 가산 블록(335)은, 입력 토큰 시퀀스들을 포함하는 연접된 입력 텐서 및 주의집중 선형 블록(330)으로부터의 출력 텐서를 결합하여 결합된 텐서를 생성한다. 제2 계층 정규화 블록(340)은, 가산 블록(335)으로부터의 결합된 텐서를 수신하고 각각의 요청의 요소들을 정규화하여 정규화된 텐서를 출력 텐서로서 생성하도록 결합된다.
도 2a 내지 도 2b의 트랜스포머 모델(200)과 유사하게, 디코더는, 부가적인 신경망 계층들을 포함하는 하나 이상의 블록을 포함하는 MLP 블록(342)을 더 포함할 수 있다. MLP 블록(342)은 하나 이상의 배치 연산으로서 실행된다. MLP 블록(342)은, 하나 이상의 신경망 계층으로서 구성되는 제1 MLP 블록(345)을 더 포함한다. 제1 MLP 블록(345)은, 제2 계층 정규화 블록(340)으로부터의 정규화된 텐서를 수신하고, 정규화된 텐서에 트랜스포머 모델(200)의 훈련된 파라미터 세트인 MLP 가중 텐서를 적용함으로써 출력 텐서를 생성하도록 결합된다.
MLP 블록(342)은, 제1 MLP 블록(345)으로부터의 출력 텐서를 입력 텐서로서 수신하고 입력 텐서에 GeLU 함수를 적용함으로써 출력 텐서를 생성하도록 결합되는 GeLU 블록(350)을 더 포함한다. MLP 블록(342)은 또한, 하나 이상의 신경망 계층으로서 구성되는 제2 MLP 블록(355)을 포함한다. 제2 MLP 블록(355)은, GeLU 블록(350)으로부터의 출력 텐서를 입력 텐서로서 수신하고 트랜스포머 모델(300)의 훈련된 파라미터 세트인 제2 MLP 가중 텐서를 적용함으로써 출력 텐서를 생성하도록 결합된다. 제2 가산 블록(360)은, 제2 MLP 블록(355)으로부터의 출력 텐서 및 제1 가산 블록(335)으로부터의 출력 텐서를 결합하여 결합된 텐서를 형성한다.
결합된 텐서는, 제1 디코더(D1)에 대한 출력 표현들의 세트를 포함한다. 출력 표현들의 세트는 후속 디코더들로 전파되고, 최종 디코더(DN)에 대한 출력 표현들의 세트를 생성하도록 유사한 프로세스가 반복된다. 구체적으로, 추론 시스템(130)은 또한, 자기-주의집중 연산이 배칭 없이 실행되지만 나머지 연산들은 배칭되는 나머지 디코더들에 대한 선택적 배칭 방법을 배치할 수 있다. LM 헤드 블록(370)은 최종 디코더(DN)로부터 출력 표현들의 세트를 수신하고 출력 토큰들의 세트를 포함하는 출력 텐서(
Figure 112022087460047-pat00057
)를 생성하도록 결합된다.
도 3b에 도시된 바와 같이, 다음 반복은 디코딩 단계이고, 여기서, 이전 반복에서 생성된 이전 출력 토큰들이 다른 세트의 출력 토큰들을 생성하기 위한 트랜스포머 모델(300)에 대한 입력들이다. 구체적으로, 계층 정규화 블록(310)이 출력 텐서(
Figure 112022087460047-pat00058
)에 적용되어 정규화된 텐서가 생성된다. QKV 연산 블록(315)이 정규화된 텐서에 적용되어 현재 반복에 대한 질의들, 키들, 값들을 포함하는 출력 텐서가 생성된다. 분할 블록(320)이 적용되어, 출력 텐서가, 그 배치 내의, 각각의 요청에 대한 하나 이상의 질의 텐서, 각각의 요청에 대한 하나 이상의 키 텐서, 및 각각의 요청에 대한 하나 이상의 값 텐서로 분할된다. 추론 시스템(130)은, 각각의 키 텐서를 개개의 요청에 대한 키 캐시 텐서에 부가하고 각각의 값 텐서를 개개의 요청에 대한 값 캐시에 부가한다. 도 3b가 배치 내의 모든 요청들에 대한 디코딩 단계의 반복을 도시하므로, 요청들은 트랜스포머 모델(300)에 공급되는 입력들의 세트(즉, 이전 반복으로부터 생성된 각각의 요청에 대한 단일 출력 토큰)에 대해 동일한 길이들을 갖는다. 그러나, 키 캐시 텐서 및 값 캐시 텐서를 포함하는 내부 상태는 배치 내의 요청들에 대해 여전히 상이한 길이들을 가질 수 있는데, 그 이유는, 요청들에 대한 입력 토큰 길이들이 도 3a에 도시된 인코딩 단계에서 상이했기 때문이다. 그러나, 도 3a와 유사하게, 추론 시스템(130)은 여전히, 트랜스포머 모델(300)에서의 연산들을 선택적으로 배칭함으로써 상이한 내부 상태 길이들을 갖는 요청들의 배치를 처리할 수 있다.
자기-주의집중 블록(325)이 각각의 개개의 요청에 대한 질의 텐서, 키 캐시 텐서, 및 값 캐시 텐서에 별개로 적용되어 요청에 대한 주의집중 출력 텐서가 생성된다. 요청들에 대한 주의집중 출력들은 주의집중 출력 텐서로 연접된다. 주의집중 선형 블록(330)이 주의집중 출력 텐서에 적용되어 출력 텐서가 생성된다. 가산 블록(335)은, 연접된 입력 텐서 및 주의집중 선형 블록(330)으로부터의 출력 텐서를 결합하여 결합된 텐서를 생성한다. MLP 블록(342)이 결합된 텐서에 적용되어 디코더(D1)에 대한 출력 표현들의 세트가 생성된다. 이러한 프로세스는, 나머지 디코더들 및 LM 헤드 블록(370)에 대해 반복되어 다른 세트의 출력 토큰들을 포함하는 출력 텐서(
Figure 112022087460047-pat00059
)를 생성하며, 트랜스포머 모델(300)은 배치 내의 각각의 요청에 대해 종결 기준들이 충족될 때까지 반복적으로 적용된다.
트랜스포머 모델(300)의 선택 연산들에 대해 선택적 배칭을 수행함으로써, 추론 시스템(130)은, 가변 입력 길이를 갖는 요청들의 배치를 효율적으로 처리할 수 있다. 추론 시스템(130)은 자기-주의집중 연산과 같은 연산들을 요청별 기반으로 별개로 처리함으로써 요청들을 실행하는 한편, 트랜스포머 모델(300)의 나머지 연산들은 배칭된다. 구체적으로, QKV 선형 연산, 주의집중 선형 연산 또는 MLP 연산과 같은, 하나 이상의 입력 텐서와 훈련된 가중 텐서 사이의 텐서 곱셈을 수반하는 연산들은, 가중 텐서들의 차원수가 종종 크기 때문에 추론 프로세스 동안 높은 계산 능력을 요구할 수 있다. 더욱이, 요청들이 이러한 연산들에 대해 개별적으로 처리될 때, 가중 텐서들은 실행 엔진의 로컬 메모리로부터 다수 회 판독될 수 있다. 그러나, 연산들의 이러한 서브세트들을 배치 연산들로서 구성하지만, 가중 텐서들에 대한 연산들을 수반하지 않는 연산들, 이를테면 자기-주의집중 연산을 별개로 처리함으로써, 추론 시스템(130)은, 가변 길이 요청들을 처리함에 있어서 높은 유연성을 허용하면서 하드웨어 가속기들의 병렬 계산 능력들을 활용할 수 있다.
게다가, 도 3a는 입력 토큰 시퀀스들인 입력들의 세트에 대한 인코딩 단계의 반복을 예시하고, 도 3b는 이전 반복(즉, 인코딩 단계)에서 생성된 요청들의 배치에 대한 출력 토큰들인 입력들의 세트에 대한 디코딩 단계의 반복을 예시한다. 그러나, 트랜스포머 모델들을 배칭하는 다른 방법들과 상이하게, 본원에 설명된 선택적 배칭 방법은, 배치 내의 요청이 인코딩 단계 또는 디코딩 단계에 대해 처리되는지 여부 또는 요청에 대해 얼마나 많은 반복들이 처리되었는지에 관계없이, 트랜스포머 모델(300)이, 가변 입력 길이들, 타겟 길이들, 또는 내부 상태 길이들을 갖는 요청들의 배치에 대한 입력들의 세트를 유연하게 처리할 수 있게 한다.
구체적으로, 요청들의 배치는, (i) 요청들이 인코딩 단계에 있고 상이한 길이들을 갖는 입력 토큰 시퀀스들을 가질 때, (ii) 요청들이 디코딩 단계에 있고 각각의 요청이 서로 상이한 인덱스(즉, 입력 토큰 길이와 디코딩 반복들의 인덱스를 더한 것)에서 토큰을 처리하여 상이한 길이들을 갖는 내부 상태들을 초래할 때, 및 (iii) 배치 내의 각각의 요청이 상이한 단계(인코딩 또는 디코딩)에 있어서 상이한 길이들을 갖는 입력들(즉, 인코딩 단계에 대한 입력 토큰 시퀀스 및 디코딩 단계에 대한 단일 출력 토큰)을 초래할 때, 도 2a 내지 도 2b의 방법을 사용하여 배칭되지 않을 수 있다. 도 2a 내지 도 2b의 배칭의 방법은, 배치 내의 요청들을, 인코딩 단계에 대해 동일한 수의 입력 토큰들을 그리고 디코딩 단계에 대한 동일한 토큰 인덱스를 갖는 동일한 단계로 제한하지만, 이러한 제한은 실세계 작업부하들에서의 배칭의 가능성을 상당히 감소시킨다.
대조적으로, 본원에 설명된 선택적 배칭 방법은, 트랜스포머 모델(300)이, 요청들을, 그들이 처리를 위한 상이한 단계들 또는 상이한 인덱스들에 있는 경우에도 배치로서 처리할 수 있게 한다. 그에 따라, 예컨대, 도 3a에서 입력 토큰 시퀀스들(X1, X2, X3)의 세트를 수신하는 것 대신에, 트랜스포머 모델(300)은, 제1 요청에 대한 입력 토큰 시퀀스(인코딩 단계), 제2 요청에 대한 제1 출력 토큰(디코딩 단계의 제1 반복), 및 제3 요청에 대한 제3 출력 토큰(디코딩 단계의 제3 반복)의 배치를 사용하여 반복을 수행할 수 있다. 다른 예로서, 트랜스포머 모델(300)은, 제1 요청에 대한 제2 출력 토큰 및 제2 요청에 대한 제4 출력 토큰의 배치를 사용하여 반복을 수행할 수 있고, 이들 각각은 키 캐시 텐서 및 값 캐시 텐서에 대해 상이한 길이들을 갖는다. 도 5a 내지 도 5b와 연계하여 설명된 바와 같이, 이는, 하나 이상의 실행 엔진의 컴퓨팅 능력들이 완전히 활용되도록 추론 시스템(130)이 각각의 반복에서 배치들을 유연하게 수정하고 업데이트할 수 있게 한다.
더욱이, 도 2a 내지 도 2b 및 도 3a 내지 도 3b가 디코더들의 세트를 포함하는 생성적 사전 훈련(generative pre-training)(GPT) 유형 트랜스포머 모델을 예시하지만, 트랜스포머 모델이 요청에 대해 생성된 질의들, 키들, 및 값들을 이용하여 주의집중 출력들을 생성하고 이전 반복들에서 생성된 출력 토큰들을 다음 반복에 대한 입력들로서 사용함으로써 자기회귀(auto-regressive) 방식으로 출력 토큰들을 생성하는 주의집중 메커니즘(예컨대, 자기-주의집중 또는 인코더-디코더 주의집중)을 포함하는 한, 추론 시스템(130)은 또한 다른 유형들의 아키텍처들을 갖는 트랜스포머 모델들 상에서 선택적 배칭을 수행하는 것이 가능하다.
다른 실시예에서, 트랜스포머 모델은 인코더-디코더 아키텍처를 가질 수 있고, 디코더들의 세트에 결합되는 인코더들의 세트를 포함한다. 그러한 아키텍처에서, 각각의 인코더는 적어도, MLP 블록에 결합되는 자기-주의집중 블록을 포함한다. 인코더의 자기-주의집중 블록은, 입력 토큰들의 세트를 처리하는 것으로부터 획득되는 질의 텐서, 키 텐서, 및 값 텐서를 수신하고 주의집중 출력을 생성하도록 결합된다. 각각의 디코더는 적어도, MLP 블록에 결합되는 인코더-디코더 주의집중 블록에 결합되는 자기-주의집중 블록을 포함한다. 디코더의 인코더-디코더 주의집중 블록은, 자기-주의집중 블록의 출력을 처리하는 것으로부터 획득되는 질의 텐서 및 최종 인코더의 출력을 처리하는 것으로부터 획득되는 키 텐서 및 값 텐서를 수신하여 다른 주의집중 출력을 생성하도록 결합된다.
추론 시스템(130)은, 요청들의 배치에 인코더-디코더 트랜스포머 모델을 적용할 수 있다. 구체적으로, 인코더에 대해, 요청들은 자기-주의집중 블록에 대해 별개로 처리될 수 있는 반면, 그들은 나머지 연산들에 대해 배칭된다. 디코더에 대해, 요청들은 자기-주의집중 블록 및 인코더-디코더 주의집중 블록에 대해 별개로 처리될 수 있는 반면, 그들은 나머지 연산들에 대해 배칭된다.
도 1을 다시 참조하면, 클라이언트 디바이스들(110A, 110B)은, 컴퓨팅 디바이스, 이를테면, 안드로이드(ANDROID®) 또는 애플(APPLE®) IOS®와 같은 운영 체제를 갖는 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터, 또는 임의의 다른 유형의 네트워크-가능 디바이스이다. 도 1에 도시된 시스템 환경(100)에서, 클라이언트 디바이스(110)는, 사용자가, 기계 학습 트랜스포머 모델에 의해 처리될 수 있는 작업들을 수행하도록 추론 시스템(130)에 요청들을 제출하게 할 수 있다. 예컨대, 클라이언트 디바이스(110A)의 사용자는, NLP 또는 트랜스포머 아키텍처에 의해 처리될 수 있는 다른 유형들의 작업들을 요구하는 하나 이상의 애플리케이션을 배치하는 엔티티와 연계될 수 있다. 클라이언트 디바이스(110)에 의해 제출되는 요청은, 예컨대, 챗봇 애플리케이션들에 대한 예측들을 생성하기 위한 요청, 워드들의 시퀀스를 하나의 언어로부터 다른 언어로 번역하기 위한 요청, 시작 워드들의 시퀀스가 주어지면 스토리 또는 서술을 합성하기 위한 요청 등일 수 있다.
전형적인 클라이언트 디바이스(110)는, (예컨대, WiFi 및/또는 4G, 5G, 또는 다른 무선 원격통신 표준들을 통해) 네트워크(122)에 연결되는 데 필요한 하드웨어 및 소프트웨어를 포함한다. 구체적으로, 클라이언트 디바이스(110)는, 운영 체제, 및 사용자들이 요청들을 제출하는 것을 가능하게 하는, 운영 체제 상에서 실행되는 다양한 애플리케이션들을 포함할 수 있다. 예컨대, 클라이언트 디바이스(110)는, 조직의 사용자들이 추론 시스템(130)과 상호작용하여 요청들을 제출할 수 있게 하는, 추론 시스템(130)에 의해 배치되는 독립형 애플리케이션들 또는 브라우저 애플리케이션들을 포함할 수 있다.
네트워크(122)는, 클라이언트 디바이스들(110)과 온라인 시스템(130) 사이의 통신 기반구조를 제공한다. 네트워크(122)는 전형적으로 인터넷이지만, 근거리 네트워크(LAN), 대도시 영역 네트워크(MAN), 광역 네트워크(WAN), 모바일 유선 또는 무선 네트워크, 사설 네트워크, 또는 가상 사설 네트워크를 포함하지만 이에 제한되지 않는 임의의 네트워크일 수 있다.
추론 시스템의 블록도
도 4는 실시예에 따른 추론 시스템(130)의 아키텍처의 블록도이다. 도 4에 도시된 추론 시스템(130)은, 데이터 관리 모듈(420), 훈련 모듈(430), 및 서빙 시스템(435)을 포함한다. 추론 시스템(130)은 또한 훈련 코퍼스(corpus)(460)를 포함한다. 대안적인 구성들에서, 상이한 그리고/또는 부가적인 구성요소들이 추론 시스템(130)에 포함될 수 있다.
데이터 관리 모듈(420)은, 트랜스포머 모델의 파라미터들을 훈련시키는 데 사용되는 훈련 데이터의 훈련 코퍼스(460)를 관리한다. 일 실시예에서, 훈련 코퍼스(460)는, 트랜스포머 모델이 훈련되어야 하는 작업을 다루는 훈련 입력 데이터의 세트 및 훈련 입력 데이터의 세트에 대한 알려진 예측들에 대응하는 훈련 출력 데이터의 세트를 각각이 포함하는 다수의 인스턴스들의 데이터를 포함한다. 일 실시예에서, 훈련 입력 데이터 및 훈련 출력 데이터는 텍스트 데이터이지만, 실시예들은 이에 제한되지 않고, 훈련 데이터는, 트랜스포머 모델이 자기회귀 방식으로 처리하도록 훈련되는 임의의 유형의 데이터, 이를테면, 오디오 데이터 또는 이미지 데이터를 포함할 수 있다. 훈련 모듈(430)은, 훈련 입력 데이터의 세트를 훈련 입력 토큰들의 세트로 그리고 훈련 출력 데이터의 세트를 훈련 출력 토큰들의 세트로 인코딩한다. 각각의 토큰은 잠재 공간에서의 개개의 워드를 표현할 수 있다.
예컨대, 트랜스포머 모델이 영어로부터 프랑스어로의 자동 번역에 사용될 때, 훈련 입력 토큰들의 세트는 영어로 된 워드들의 제1 문장에 대응할 수 있고, 훈련 출력 토큰들의 세트는 제1 문장의 번역인 프랑스어로 된 워드들의 제2 문장에 대응할 수 있다. 또 다른 예로서, 트랜스포머 모델이 이미지를 텍스트로 변환하는 데 사용될 때, 훈련 입력 토큰들의 세트는 훈련 이미지에 대한 이미지 데이터 조각들에 대응할 수 있고, 훈련 출력 토큰들의 세트는 이미지를 설명하는 변환된 문장 또는 문단에 대응할 수 있다.
실행 엔진 모듈(425)은, 그래픽 처리 유닛(GPU)들 또는 텐서 처리 유닛(TPU)들과 같은 특수화된 하드웨어 가속기들 상에 구축되는 하나 이상의 실행 엔진을 포함한다. 실행 엔진은, 특수화된 하드웨어 상에서 하나 이상의 요청을 실행하기 위한 요청들을 수신한다. 일 예시에서, 실행 엔진은, 요청들의 배치를 수신하고 각각의 요청에 대한 입력들을 사용하는 선택적 배칭을 통해 트랜스포머 모델의 하나 이상의 반복을 실행한다. 위에 설명된 바와 같이, 실행 엔진은 로컬 메모리(예컨대, GPU 메모리)에 결합되는 코어들(예컨대, GPU 코어들)의 세트를 포함할 수 있다. 구체적으로, 반복의 각각의 연산에 대해, 실행 엔진은, 실행 엔진의 로컬 메모리로부터 연산에 요구되는 데이터를 판독하도록 구성된다.
실행 엔진 모듈(425)의 실행 엔진들은, GPU들 또는 TPU들 또는 텐서 곱셈 및 부동 소수점 연산들을 포함하는 신경망 연산들을 효율적인 방식으로 처리하는 것이 가능한 임의의 다른 특수화된 하드웨어로서 구성될 수 있다. 예컨대, 실행 엔진은, 구글(Google) TPU, 그래프코어(Graphcore) IPU, 세레브라스(Cerebras) WSE, 엔비디아(Nvidia) GPU, 인텔(intel) 너바나(Nervana), 퀄컴(Qualcomm) 클라우드 AI(Cloud AI), 삼성(Samsung) 엑시노스(Exynos), AMD 라데온(Radeon), 자일링스(Xilinx) AI 가속기 카드들, IBM 트루노스(TrueNorth), AWS 트레이니엄(Trainium) 등으로 제한되지 않는다. 위에 설명된 같이, 실행 엔진은 하나 이상의 하드웨어 가속기로 구성될 수 있다. 일부 예시들에서, 실행 엔진은, 하나 초과의 하드웨어 가속기의 처리 능력들을 요구하는 작업부하를 처리할 수 있다. 그에 따라, 실행 엔진은, 필요한 경우 다수의 하드웨어 가속기들에 걸쳐 작업부하를 분배할 수 있다.
일 실시예에서, 실행 엔진은 또한, 트랜스포머 모델의 하나 이상의 반복을 실행하는 데 필요한 로컬 메모리 상의 하나 이상의 캐시를 관리하도록 구성된다. 예컨대, 도 3a 내지 도 3b의 트랜스포머 모델(300)을 실행할 때, 실행 엔진은, 요청이 완료될 때까지 요청에 대한 키 캐시 텐서 및 값 캐시 텐서를 유지한다. 그에 따라, 하나 이상의 새로운 요청(인코딩 단계가 처리되지 않은 요청들)을 수신하는 것에 대한 응답으로, 실행 엔진은, 요청에 대한 키 캐시 텐서 및 값 캐시 텐서를 유지하기 위한 메모리를 각각의 요청에 할당한다. 디코딩 단계의 각각의 반복에 대해, 실행 엔진은, 요청에 대해 할당된 개개의 키 캐시 및 값 캐시에 반복을 위한 키 텐서 및 값 텐서를 부가하고, 요청에 대한 키 캐시 및 값 캐시를 리트리브하여 연산을 실행할 수 있다. 하나 이상의 요청을 완료하는 것에 대한 응답으로, 실행 엔진은, 요청들에 대한 출력들을 추론 시스템(130)의 적절한 모듈에 제공하고 완료된 요청들에 대한 할당된 캐시 메모리를 자유롭게 하며, 이에 따라, 자유롭게 된 메모리가 다른 요청들에 사용될 수 있다.
훈련 모듈(430)은, 훈련 프로세스를 수행함으로써 트랜스포머 모델의 파라미터들을 훈련시킨다. 먼저, 훈련 모듈(430)은, 클라이언트 디바이스들(110)에 의해 수신된 작업 요청들을 다룰 수 있는 트랜스포머 모델에 대한 적절한 아키텍처를 생성할 수 있다. 예컨대, 훈련 모듈(430)은, 도 3a 내지 도 3b에 예시된 트랜스포머 모델(300)을 훈련시킬 수 있다. 훈련 모듈(430)은, 디코더들의 세트 내의 디코더들의 수를 결정하여 트랜스포머 모델의 심도를 조정하고, 예컨대, 얼마나 많은 계층들이 트랜스포머 모델의 각각의 신경망 계층에 포함되는지를 결정할 수 있다. 훈련될 트랜스포머 모델이 인코더-디코더 아키텍처일 때, 훈련 모듈(430)은, 디코더들의 수뿐만 아니라 인코더들의 수를 결정할 수 있다.
훈련 모듈(430)은 또한, 트랜스포머 모델의 연산들과 연관된 하나 이상의 가중 텐서를 초기화할 수 있다. 가중 텐서들의 요소들은, 훈련 코퍼스(460)의 훈련 데이터를 사용하여 훈련 프로세스 동안 학습될 트랜스포머 모델의 파라미터들에 대응한다. 가중 텐서들은, 가중 텐서들이 그와 함께 동작되도록 구성되는 입력 텐서들의 차원수에 기반한 차원수로 초기화될 수 있다. 예컨대, 도 3a 내지 도 3b의 트랜스포머 모델(300)을 훈련시키기 위해, 훈련 모듈(430)은, QKV 연산 블록(315)에 대한 QKV 가중 텐서(WQKV)(예컨대, H×3H 차원수로), 주의집중 선형 블록(330)에 대한 주의집중 가중 텐서(Wattn)(예컨대, H×H 차원수), 및 제1 MLP 블록(345)에 대한 제1 MLP 가중 텐서 및 제2 MLP 블록(355)에 대한 제2 MLP 가중 텐서를 초기화할 수 있다.
훈련 프로세스 동안, 훈련 모듈(430)은, 순방향 전달 단계와 역전파 단계 사이에서 반복적으로 반복함으로써, 훈련 데이터의 세트를 획득하고 기계 학습 트랜스포머 모델의 파라미터들을 훈련시킨다. 순방향 전달 단계 동안, 훈련 모듈(430)은, 하나 이상의 추정된 출력 토큰을 생성하기 위해 트랜스포머 모델의 추정된 파라미터들을 훈련 데이터의 세트 내의 훈련 입력 토큰들의 세트에 적용함으로써 하나 이상의 추정된 출력 토큰을 생성한다. 훈련 모듈(430)은, 하나 이상의 추정된 출력 토큰과 훈련 출력 토큰들의 세트 사이의 차이를 표시하는 손실 함수를 결정한다. 역전파 단계 동안, 훈련 모듈(430)은, 손실 함수를 감소시키기 위해 트랜스포머 모델의 파라미터들(즉, 가중 텐서들)을 업데이트한다. 이러한 프로세스는, 트랜스포머 모델의 파라미터들에 대해 수렴에 도달하거나 원하는 레벨의 모델 품질에 도달할 때까지 훈련 데이터의 다음 세트들에 대해 반복적으로 반복된다.
일 실시예에서, 훈련 모듈(430)은, 훈련 데이터를 배치들로 배열하고, 하나 이상의 실행 엔진 상에서 훈련 프로세스의 하나 이상의 반복을 실행한다. 예컨대, 훈련 데이터의 각각의 배치는, 각각이 상이한 훈련 소스로부터 비롯되는 입력 토큰 시퀀스들의 배치를 포함할 수 있다. 예컨대, 제1 훈련 입력 토큰 시퀀스는 제1 텍스트 소스로부터 획득될 수 있고, 제2 훈련 입력 토큰 시퀀스는 제2 텍스트 소스로부터 획득될 수 있다. 배칭으로 훈련 프로세스를 실행함으로써, 훈련 모듈(430)은, 높은 수준의 계산을 요구하는 트랜스포머 모델을 훈련시킬 때 실행 엔진들의 병렬 처리 능력들을 활용할 수 있다.
서빙 시스템(435)은, 훈련된 트랜스포머 모델을 사용하여 처리될 수 있는 하나 이상의 작업을 수행하기 위한 요청들을 클라이언트 디바이스(110)로부터 수신한다. 도 3a 내지 도 3b와 관련하여 설명된 바와 같이, 작업들이 NLP 애플리케이션들일 때, 요청들은, 서빙 시스템(435)이 트랜스포머 모델에 제공될 수 있는 입력 토큰들의 시퀀스로 파싱 및 맵핑할 수 있는 워드들의 시퀀스(예컨대, 영어로 된 문장)를 포함할 수 있다. 서빙 시스템(435)은, 트랜스포머 모델을 사용하여 하나 이상의 출력 토큰을 생성하기 위한 요청을 처리한다. 서빙 시스템(435)은 출력 토큰들을 출력 데이터, 예컨대, 워드들의 시퀀스(예컨대, 프랑스어로 된 번역된 문장)로 변환하고, 출력 데이터를 응답으로서 클라이언트 디바이스에 반환할 수 있다.
일 실시예에서, 서빙 시스템(435)은 시간 경과에 따라 클라이언트 디바이스들(110)로부터 다수의 요청들을 수신하고 요청들의 배치들을 형성한다. 서빙 시스템(435)은 하나 이상의 실행 엔진에 배치들을 제공한다. 실행 엔진들에 의한 실행에 대한 응답으로, 서빙 시스템(435)은, 요청들에 대한 하나 이상의 출력 토큰을 수신하고 출력들을 요청들에 대한 응답으로서 클라이언트 디바이스들(110)에 제공한다. 일 실시예에서, 서빙 시스템(435)에 의해 형성되는 배치 내의 요청들의 입력 시퀀스들의 길이들 또는 배치 내의 요청들의 내부 상태들의 길이들은, 실행 엔진들이 선택적 배칭 방법을 사용하여 요청들을 처리하는 것이 가능하기 때문에 서로 상이할 수 있다. 일 실시예에서, 서빙 시스템(435)은 요청이 완료될 때까지(즉, 종결 기준들이 충족될 때까지) 대기하고, 출력들을 요청들에 대한 응답으로서 클라이언트 디바이스들(110)에 제공한다. 다른 실시예에서, 서빙 시스템(435)은, 요청이 아직 완료되지 않았더라도 출력들을 클라이언트 디바이스들(110)에 제공한다. 예컨대, 서빙 시스템(435)은, 요청에 대해 다수(예컨대, 5개, 10개, 15개)의 출력 토큰들이 생성될 때마다 다수의 출력 토큰들을 제공할 수 있다. 다른 예로서, 하나 이상의 시간 간격(예컨대, 100 ms, 200 ms) 동안, 서빙 시스템(435)은 각각의 시간 간격 후에 생성된 출력 토큰들을 클라이언트 디바이스(110)에 제공할 수 있다. 이는, 요청이 아직 완료되지 않았더라도 클라이언트 디바이스(110)의 사용자가 간헐적 출력들을 수신할 수 있게 한다.
일 실시예에서, 서빙 시스템(435)은, 서빙 시스템(435)이 요청들의 배치를 실행 엔진 상에서 실행되기 전에 반복별 기반으로 동적으로 수정할 수 있게 하는 트랜스포머 모델에 대한 반복-레벨 동적 배칭을 수행한다. 구체적으로, 특정 배칭 방법들에 대해 실행 엔진 상에서 일단 처리가 시작되었으면 요청들의 배치를 수정하기가 어려울 수 있는데, 그 이유는, 그러한 방법들이, 트랜스포머 모델에 대한 입력들의 길이 또는 내부 상태들의 길이들이 배치의 요청들에 걸쳐 동일할 것을 요구하기 때문이다. 즉, 새로운 착신 요청들이, 실행되고 있는 요청들의 배치와 동일한 길이의 입력들 및 내부 상태들을 갖지 않는 한, 추론 시스템이, 예컨대, 배치에 새로운 요청들을 부가하기 위해 배치를 수정하는 것은 어렵다.
선택적 배칭을 수행함으로써, 서빙 시스템(435)은, 반복마다 실행 엔진 상에서 처리되는 배치를 모니터링 및 수정할 수 있다. 구체적으로, 하나 이상의 반복에서, 서빙 시스템(435)은, 새로운 착신 요청들을 배치에 부가하거나 완료된 요청들을 배치로부터 제거함으로써, 실행 엔진 상에서 실행되고 있는 배치를 수정할 수 있다. 이는, 선택적 배칭이, 트랜스포머 모델에 대한 입력들 또는 내부 상태들을 동일한 길이들로 제한함이 없이 가변 길이들을 갖는 요청들이 처리될 수 있게 하기 때문이다. 이는, 서빙 시스템(435)이 요청의 클라이언트 디바이스(110)에 완료된 요청들에 대한 응답을 더 일찍 제공할 수 있게 하고, 배치를 처리하는 실행 엔진이 충분히 활용되고 있지 않은 경우, 새로운 요청들에 대한 길이들이 다음 반복에 대한 기존 요청들의 길이들과 상이한 경우에도, 배치에 새로운 요청들을 부가하는 것을 허용한다.
트랜스포머 모델을 위한 동적 배칭
도 5a 내지 5d는 실시예에 따른, 기계 학습 트랜스포머 모델을 사용하여 요청들을 처리하기 위한 동적 배칭의 방법을 예시한다. 일 실시예에서, 서빙 시스템(435)은, 각각이 하나 이상의 실행 엔진에 결합되는 요청 프로세서(580) 및 스케줄러(585)를 포함한다. 요청 프로세서(580)는, 요청들을 수신하고 요청들을 스케줄러(585)에 전달한다. 요청 프로세서(580)는, 완료된 요청들의 출력들을 저장하기 위한 완료 큐를 유지한다. 구체적으로, 요청 프로세서(580)는, 실행 엔진들로부터 완료된 요청들에 대한 출력들을 수신하고 출력들을 완료 큐에 저장하며, 이에 따라, 출력들이 요청들의 클라이언트 디바이스(110)에 제공될 수 있게 한다. 스케줄러(585)는, 요청 프로세서(580)로부터 전달된 요청을 수신하고 처리될 새로운 요청들을 저장하기 위한 착신 요청 큐를 유지한다. 스케줄러(585)는, 요청들의 배치를 형성하고 실행 엔진 상에서의 실행을 위해 배치를 스케줄링한다. 일 실시예에서, 스케줄러(585)는, 요청들의 어느 배치가 각각의 실행 엔진에 분배되었는지 그리고 각각의 요청에 대해 트랜스포머 모델의 얼마나 많은 반복들이 수행되었는지 및 요청이 완료되었는지 여부를 모니터링하도록 구성된다. 스케줄러(585)는 또한, 각각의 실행 엔진에서의 이용가능한 캐시 메모리를 모니터링하도록 구성된다.
구체적으로, 도 5a는, 실행 엔진들(590A 및 590B)에 결합되는 요청 프로세서(580) 및 스케줄러(585)를 예시한다. 도 5a에서, 실행 엔진(590A)은 단일 요청(R1)을 실행하도록 스케줄링되고, 실행 엔진(590B)은 요청들(R3, R4, R5)의 배치를 실행하도록 스케줄링된다. 구체적으로, 도 5a의 제1 반복에 대해, 실행 엔진(590A)에서의 요청(R1)은 단일 입력 토큰을 포함한다. 반면에, 실행 엔진(590B)에서의 요청(R3)은 2개의 입력 토큰의 시퀀스를 포함하고, 요청(R4)은 3개의 입력 토큰의 시퀀스를 포함하고, 요청(R5)은 2개의 입력 토큰의 시퀀스를 포함한다.
요청 프로세서(580)는, 새로운 요청(R2)을 수신하고 요청(R2)을 스케줄러(585)에 전달한다. 스케줄러(585)는, 요청(R2)을 착신 요청 큐에 저장한다. 트랜스포머 모델의 반복은 실행 엔진들(590A, 590B) 상에서 실행된다. 예컨대, 반복은, 현재 실행되는 배치 내의 특정 요청에 대한 인코딩 단계일 수 있다. 특히, 키 캐시 텐서 및 값 캐시 텐서가 각각의 요청에 대해 내부 상태 캐시로서 할당되고, 각각의 요청에 대한 캐시의 일부는 인코딩 단계 후에 키들 및 값들을 저장하는 데 사용된다. 일 실시예에서, 요청에 대한 내부 상태 캐시의 할당은, 트랜스포머 모델이 생성하도록 구성되는 최대 출력 토큰 길이에 기반한다. 예컨대, 트랜스포머 모델은 최대 1024개의 출력 토큰을 생성하도록 구성될 수 있고, 실행 엔진은, 각각의 키 캐시 텐서 및 값 캐시 텐서에 대해 1024개까지의 요소를 저장하도록 구성되는 내부 상태 캐시를 할당할 수 있다. 다른 실시예에서, 요청의 사용자가, 응답으로서 반환될 수 있는 최대 출력 토큰 길이를 특정할 때, 실행 엔진은, 각각의 텐서에 대해 요청에서 특정된 최대 요소 길이까지 저장하도록 구성되는 내부 상태 캐시를 할당할 수 있다. 또 다른 실시예에서, 실행 엔진은 요청에 대한 초기 입력 토큰 수를 결정할 수 있고, 실행 엔진은 초기에, 입력 토큰 수에 일부 부가적인 양의 메모리를 더한 것을 저장하기에 충분히 큰 내부 상태 캐시를 할당할 수 있다. 실행 엔진은, 처음에 할당된 메모리가 불충분한 경우, 트랜스포머 모델이 요청에 대해 반복적으로 적용됨에 따라 내부 상태 캐시에 더 많은 메모리를 증분적으로 할당할 수 있다. 스케줄러(585)는, 실행 엔진들(590A 및 590B)에 대한 캐시 메모리를 모니터링한다. 실행 엔진(590A)이 요청(R2)을 처리하는 데 이용가능한 캐시 메모리를 갖는다고 결정하는 것에 대한 응답으로, 스케줄러(585)는, 새로운 요청(R2)을 포함하도록 실행 엔진(590A)에 대한 배치를 업데이트하고, 다음 반복에 대해 업데이트된 배치를 실행하도록 실행 엔진(590A)에 지시한다.
도 5b에 도시된 바와 같이, 제1 반복을 실행한 후에, 실행 엔진(590A)에서의 요청(R1) 및 실행 엔진(590B)에서의 요청들(R3, R4, R5)에 대해 제1 출력 토큰이 생성된다. 더욱이, 실행 엔진(590A)은 이제 제2 반복에서 요청들(R1, R2)의 업데이트된 배치를 실행하도록 스케줄링된다. 요청(R2)은 단일 입력 토큰을 포함한다. 특히, 제1 출력 토큰이 요청(R1)에 대해 생성되었으므로, 요청(R1)에 대한 제2 반복은 디코딩 단계일 수 있는 한편, 요청(R2)에 대한 제2 반복은 인코딩 단계일 수 있다. 그에 따라, 실행 엔진이 선택적 배칭을 수행하도록 구성되고 상이한 길이들을 갖는 요청들을 처리하는 것이 가능하기 때문에, 실행 엔진(590A)은, 도 3a 내지 도 3b와 연계하여 설명된 바와 같이, 요청들의 동일한 배치에 대해 인코딩 단계 및 디코딩 단계 둘 모두를 수행할 수 있다. 이는, 하나의 요청에 대한 입력 토큰들의 길이가 배치 내의 기존 요청에 대한 입력 토큰들 및 출력 토큰들의 길이와 동일할 것이라는 보장이 없기 때문에, 다른 배칭 방법들에 대해서는 실현가능하지 않을 수 있다. 도 5b에 도시된 바와 같이, 각각의 요청에 대한 캐시의 부가적인 부분은 제2 반복 후에 키들 및 값들을 저장하는 데 사용된다.
도 5c에 도시된 바와 같이, 제2 반복을 실행한 후에, 실행 엔진(590A)에서의 요청(R1) 및 실행 엔진(590B)에서의 요청들(R3, R4, R5)에 대해 제2 출력 토큰이 생성된다. 실행 엔진(590A)에서의 요청(R2)에 대해 제1 출력 토큰이 생성된다. 구체적으로, 요청(R2)에 대해 생성된 제1 출력 토큰은 종료 토큰으로 생성되고, 실행 엔진(590A)은, 요청(R2)에 대한 출력들을 요청 프로세서(580)의 완료 큐에 제공한다. 실행 엔진(590A)은 요청(R2)에 할당된 캐시 메모리를 자유롭게 한다. 요청(R4)에 대해 생성된 제2 출력 토큰이 또한 종료 토큰으로 생성되고, 실행 엔진(590B)은, 요청(R4)에 대한 출력들을 요청 프로세서(580)의 완료 큐에 제공한다. 실행 엔진(590B)은 요청(R4)에 할당된 캐시 메모리를 자유롭게 한다. 요청 프로세서(580)는, 완료 큐의 출력들을 완료된 요청들의 클라이언트 디바이스들(110)에 전달한다.
요청 프로세서(580)는 또한, 다른 새로운 요청(R7)을 수신하고 요청을 스케줄러(585)에 전달한다. 스케줄러(585)는, 요청(R7)을 착신 요청 큐에 저장한다. 요청들(R2, R4)이 완료되고 실행 엔진(590A)이 요청(R7)을 처리하는 데 이용가능한 캐시 메모리를 갖는다고 결정하는 것에 대한 응답으로, 스케줄러(585)는, 실행 엔진(590A)에 대한 배치를 R1, R7로 업데이트하고 실행 엔진(590B)에 대한 배치를 R3, R5로 업데이트한다. 스케줄러(585)는, 업데이트된 배치들을 실행하도록 실행 엔진들(590A, 590B)에 지시한다. 그에 따라, 반복에서 배치들을 동적으로 조정함으로써, 완료된 요청들은 처리가 완료되자마자 요청들의 클라이언트 디바이스들(110)에 제공될 수 있고, 스케줄러(585)는, 완료된 요청의 메모리가 자유롭게 될 때 실행 엔진의 컴퓨팅 능력들이 활용될 수 있도록 배치 내의 새로운 요청들을 스케줄링할 수 있다.
도 5d에 도시된 바와 같이, 제3 반복을 실행한 후에, 실행 엔진(590A)에서의 요청(R1) 및 실행 엔진(590B)에서의 요청들(R3, R5)에 대해 제3 출력 토큰이 생성된다. 더욱이, 실행 엔진(590A)은 이제 제4 반복에서 요청들(R1, R7)의 업데이트된 배치를 실행하도록 스케줄링되고, 실행 엔진(590B)은 이제 제4 반복에서 요청들(R3, R5)의 업데이트된 배치를 실행하도록 스케줄링된다. 요청(R7)은 2개의 입력 토큰의 시퀀스를 포함한다. 도 5a 내지 도 5d에 설명된 것과 유사한 프로세스는, 서빙 시스템(435)이 클라이언트 디바이스들(110)로부터 요청들을 수신함에 따라 연속적으로 수행될 수 있다.
위에 설명된 바와 같이, 동적 배칭은, 실행 엔진의 하드웨어가 완전히 활용될 수 있도록, 서빙 시스템(435)이 실행 엔진 상에서 처리되는 배치들을 동적으로 조정할 수 있게 한다. 이러한 프로세스는, 트랜스포머 모델들에 대한 특정 배칭 방법들(예컨대, 도 2a 내지 도 2b의 방법)에는 이용가능하지 않은데, 그 이유는, 키 캐시 텐서 및 값 캐시 텐서와 같은 내부 상태들이 트랜스포머 모델에서 반복당 가변 길이를 유지하는 한편, 다른 재귀 기계 학습 모델(예컨대, RNN)들이 요청들의 배치에 걸쳐 동일한 길이들을 갖는 상태 데이터를 이용하기 때문이다.
선택적 배칭 및 동적 배칭의 방법을 예시하는 흐름도
도 6a 내지 도 6b는 실시예에 따른, 트랜스포머 모델을 사용하는 선택적 배칭의 방법을 예시하는 흐름도이다. 추론 시스템(130)은, 하나 이상의 입력 토큰 시퀀스를 포함하는 요청들의 배치를 수신한다(602). 일 예시에서, 배치 내의 제1 요청에 대한 제1 토큰 시퀀스의 길이는 배치 내의 제2 요청에 대한 제2 토큰 시퀀스의 길이와 상이할 수 있다. 추론 시스템(130)은, 적어도 디코더들의 세트를 포함하는 기계 학습 트랜스포머 모델에 액세스한다(604).
하나 이상의 반복에 대해, 추론 시스템(130)은, 디코더들의 세트를 요청들에 대한 하나 이상의 입력에 적용하는 단계들을 반복적으로 수행한다. 구체적으로, 세트 내의 적어도 하나의 디코더에 대해, 추론 시스템(130)은, QKV 가중 텐서를 하나 이상의 입력 표현에 적용함으로써, 요청들에 대한 하나 이상의 질의, 하나 이상의 키, 및 하나 이상의 값을 생성한다(606). 질의들, 키들, 및 값들은 배치 연산에 의해 생성될 수 있다. 추론 시스템(130)은, 하나 이상의 질의로부터 제1 요청에 대한 제1 질의를, 하나 이상의 키로부터 제1 요청에 대한 제1 키를, 그리고 하나 이상의 값으로부터 제1 요청에 대한 제1 값을 분할한다(608). 추론 시스템(130)은 또한, 하나 이상의 질의로부터 제2 요청에 대한 제2 질의를, 하나 이상의 키로부터 제2 요청에 대한 제2 키를, 그리고 하나 이상의 값으로부터 제2 요청에 대한 제2 값을 분할한다.
추론 시스템(130)은, 적어도, 제1 질의, 제1 키, 및 제1 값을 조합함으로써, 제1 요청에 대한 제1 주의집중 출력을 생성한다(610). 추론 시스템(130)은, 제2 요청에 대한 제2 질의, 제2 키, 및 제2 값을 조합함으로써, 제2 요청에 대한 제2 주의집중 출력을 별개로 생성한다(612). 추론 시스템은, 적어도 제1 주의집중 출력 및 제2 주의집중 출력을 연접된 텐서로 연접시킨다(614). 추론 시스템(130)은, 가중 텐서를 연접된 텐서에 적용함으로써 하나 이상의 출력 표현을 생성한다(616). 하나 이상의 출력 표현은 배치 연산에 의해 생성될 수 있다. 추론 시스템(130)은, 다음 반복에 대해 하나 이상의 출력 토큰을 하나 이상의 입력으로서 디코더들의 세트에 설정한다(618). 추론 시스템(130)은, 적어도 하나의 요청에 대해 생성된 출력 토큰들을 적어도 하나의 요청에 대한 응답으로서 클라이언트 디바이스(110)에 제공한다(620).
도 7은 실시예에 따른, 트랜스포머 모델을 사용하여 요청들을 처리하기 위한 동적 배칭의 방법을 예시하는 흐름도이다. 추론 시스템(130)은, 서빙 시스템에 의해, 실행을 위한 하나 이상의 요청을 수신한다(710). 서빙 시스템은 스케줄러를 포함하고, 하나 이상의 실행 엔진 각각은 적어도 디코더들의 세트를 포함하는 기계 학습 트랜스포머 모델에 액세스하도록 결합된다. 추론 시스템(130)은, 스케줄러에 의해, 실행 엔진 상에서의 실행을 위한 하나 이상의 요청을 포함하는 요청들의 배치를 스케줄링한다(712). 추론 시스템(130)은, 실행 엔진에 의해, 요청들의 배치에 대한 입력들의 제1 세트의 입력들에 트랜스포머 모델을 반복적으로 적용함으로써 제1 세트의 출력 토큰들을 생성한다(714). 트랜스포머 모델을 적용하는 것은, 요청들의 배치와 연관된 하나 이상의 입력 텐서에 적어도 하나의 배치 연산을 적용하는 것을 포함한다.
추론 시스템(130)은, 요청 프로세서에 의해, 클라이언트 디바이스로부터 새로운 요청을 수신한다(716). 새로운 요청은 입력 토큰들의 시퀀스를 포함할 수 있다. 추론 시스템(130)은, 스케줄러에 의해, 하나 이상의 요청 및 새로운 요청을 포함하는 제2 배치의 요청들을, 실행 엔진이 제2 배치의 요청들을 실행하는 데 이용가능한 메모리를 갖는다고 결정하는 것에 대한 응답으로 실행 엔진 상에서의 실행을 위해 스케줄링한다(718). 추론 시스템(130)은, 실행 엔진에 의해, 새로운 요청에 대한 입력 토큰들의 시퀀스를 포함하는 제2 배치의 요청들에 대한 제2 세트의 입력들에 트랜스포머 모델을 반복적으로 적용함으로써 제2 세트의 출력 토큰들을 생성한다(720).
하드웨어 구성요소들
도 8은 본원에 설명된 실시예들이 추론 시스템(130) 내에 구현될 수 있는 컴퓨터 시스템(800)을 예시하는 도면이다. 예컨대, 도 1의 맥락에서, 추론 시스템(130) 및 그의 서브시스템들은 도 8에 의해 설명된 것과 같은 컴퓨터 시스템을 사용하여 구현될 수 있다. 추론 시스템(130) 및 그의 서브시스템들은 또한, 도 8에 의해 설명된 것과 같은 다수의 컴퓨터 시스템들의 조합을 사용하여 구현될 수 있다.
일 구현에서, 컴퓨터 시스템(800)은, 처리 리소스들(801), 메인 메모리(803), 판독 전용 메모리(ROM)(805), 저장 디바이스(807), 통신 인터페이스(809), 및 하드웨어 가속기들(810)을 포함한다. 컴퓨터 시스템(800)은, 정보를 처리하기 위한 CPU 코어들을 포함하는 적어도 하나의 프로세서(801), 및 프로세서(801)에 의해 실행될 정보 및 명령어들을 저장하기 위한 메인 메모리(803), 이를테면, 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 디바이스를 포함한다. 메인 메모리(803)는 또한, 프로세서(801)에 의해 실행될 명령어들의 실행 동안 임시 변수들 또는 다른 중간 정보를 저장하는 데 사용될 수 있다. 컴퓨터 시스템(800)은 또한, 프로세서(801)에 대한 정적 정보 및 명령어들을 저장하기 위한 ROM(805) 또는 다른 정적 저장 디바이스를 포함할 수 있다. 정보 및 명령어들을 저장하기 위해 저장 디바이스(807), 이를테면, 자기 디스크 또는 광학 디스크 또는 솔리드 스테이트 메모리 디바이스가 제공된다. 예컨대, 도 4의 맥락에서, 추론 시스템(130)의 훈련 코퍼스 저장소(460)는 판독 전용 메모리(ROM)(805) 또는 저장 디바이스(807)에 저장될 수 있다. 컴퓨터 시스템(800)은 또한 하나 이상의 하드웨어 가속기(810)를 포함한다. 위에 설명된 같이, 실행 엔진은 단일 컴퓨터 시스템(800) 내의 하나 이상의 하드웨어 가속기(810)로 구성될 수 있지만, 다른 실시예에서, 실행 엔진은 다수의 컴퓨터 시스템들(800)에 걸쳐 분산되는 다수의 하드웨어 가속기들(810)에 걸쳐 구성될 수 있다.
통신 인터페이스(809)는, 추론 시스템(130)이 통신 링크(무선 또는 유선)의 사용을 통해 클라이언트 디바이스들(110)과 통신하는 것을 가능하게 할 수 있다. 통신 링크를 사용하여, 추론 시스템(130)은, 클라이언트 디바이스(110)에 포함된 상이한 서브시스템들과 통신하여 요청들의 수신 및 처리를 가능하게 할 수 있다. 게다가, 실행 엔진이 다수의 컴퓨터 시스템들(800)에 걸쳐 분산되는 다수의 하드웨어 가속기들에 걸쳐 구성될 때, 통신 인터페이스(809)는 또한, 다수의 컴퓨터 시스템들(800) 사이의 통신을 가능하게 할 수 있으며, 이에 따라, 실행 엔진은 다수의 하드웨어 가속기들(810)에 걸쳐 요청들을 처리할 수 있다.
컴퓨터 시스템(800)은, 예컨대, 그래픽 및 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스(811), 이를테면, 음극선관(CRT), LCD 모니터, LED 모니터, TFT 디스플레이 또는 텔레비전 세트를 임의적으로 포함할 수 있다. 문자숫자식 키들 및 다른 키들을 포함하는 키보드와 같은 입력 메커니즘(813)은, 정보 및 명령 선택들을 프로세서(801)로 통신하기 위해 컴퓨터 시스템(800)에 임의적으로 결합될 수 있다. 입력 메커니즘들(813)의 다른 비-제한적인 예시적인 예들은, 방향 정보 및 명령 선택들을 프로세서(801)에 통신하고 디스플레이 디바이스(811) 상에서의 커서 움직임을 제어하기 위한 마우스, 트랙볼, 터치 감응 스크린, 또는 커서 방향 키들을 포함한다.
본원에 설명된 예들은, 본원에 설명된 기법들을 구현하기 위한 추론 시스템(130)의 사용에 관한 것이다. 일 실시예에 따르면, 그러한 기법들은, 메인 메모리(803)에 포함된 하나 이상의 명령어의 하나 이상의 시퀀스를 프로세서(801)가 실행하는 것에 대한 응답으로 추론 시스템(130)에 의해 수행된다. 그러한 명령어들은 저장 디바이스(807)와 같은 다른 기계 판독가능 매체로부터 메인 메모리(803) 내로 판독될 수 있다. 메인 메모리(803)에 포함된 명령어들의 시퀀스들의 실행은, 프로세서(801)로 하여금 본원에 설명된 프로세스 단계들을 수행하게 한다. 대안적인 구현들에서, 본원에 설명된 예들을 구현하기 위해, 소프트웨어 명령어들 대신에 또는 그와 조합하여, 하드-와이어링된(hard-wired) 회로가 사용될 수 있다. 그에 따라, 설명된 예들은 하드웨어 회로와 및 소프트웨어의 임의의 특정 조합으로 제한되지 않는다.
요약
본 발명의 실시예들의 전술한 설명은 예시의 목적을 위해 제시되었고; 그 설명은, 포괄적이거나 본 발명을 개시된 정확한 형태들로 제한하도록 의도되지 않는다. 관련 기술분야의 통상의 기술자들은, 위의 개시내용을 고려하여 많은 수정들 및 변형들이 가능하다는 것을 인식할 수 있다.
본 설명의 일부 부분들은 정보에 대한 동작들의 알고리즘들 및 기호 표현들의 관점에서 본 발명의 실시예들을 설명한다. 이러한 알고리즘 설명들 및 표현들은, 데이터 처리 분야의 통상의 기술자들이 자신들의 작업의 실체를 관련 기술분야의 다른 통상의 기술자들에게 효과적으로 전달하기 위해 통상적으로 사용한다. 이러한 동작들은, 기능적으로, 계산적으로, 또는 논리적으로 설명되지만, 컴퓨터 프로그램들 또는 등가의 전기 회로들, 마이크로코드 등에 의해 구현되는 것으로 이해된다. 또한, 일반성의 손실 없이, 모듈들로서 동작들의 이러한 배열들을 지칭하는 것이 종종 편리한 것으로 또한 판명되었다. 설명된 동작들 및 그들의 연관된 모듈들은 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합들로 구현될 수 있다.
본원에 설명된 단계들, 동작들, 또는 프로세스들 중 임의의 것은, 단독으로 또는 다른 디바이스들과의 조합으로, 하나 이상의 하드웨어 또는 소프트웨어 모듈로 수행되거나 구현될 수 있다. 일 실시예에서, 소프트웨어 모듈은, 설명된 단계들, 동작들, 또는 프로세스들 중 임의의 것 또는 그 전부를 수행하기 위해 컴퓨터 프로세서에 의해 실행될 수 있는, 컴퓨터 프로그램 코드를 포함하는 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로 구현된다.
본 발명의 실시예들은 또한, 본원에서의 동작들을 수행하기 위한 장치에 관한 것일 수 있다. 이러한 장치는 요구된 목적들을 위해 특수하게 구성될 수 있고/거나 이러한 장치는, 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 작동 또는 재구성되는 범용 컴퓨팅 디바이스를 포함할 수 있다. 그러한 컴퓨터 프로그램은, 컴퓨터 시스템 버스에 결합될 수 있는, 비-일시적인 유형적(tangible) 컴퓨터 판독가능 저장 매체, 또는 전자 명령어들을 저장하기에 적합한 임의의 유형의 매체에 저장될 수 있다. 또한, 본 명세서에서 언급되는 임의의 컴퓨팅 시스템들은 단일 프로세서를 포함할 수 있거나 또는 증가된 컴퓨팅 능력을 위해 다수의 프로세서 설계들을 이용하는 아키텍처들일 수 있다.
본 발명의 실시예들은 또한, 본원에 설명된 컴퓨팅 프로세스에 의해 생성되는 제품에 관한 것일 수 있다. 그러한 제품은 컴퓨팅 프로세스로부터 초래되는 정보를 포함할 수 있으며, 여기서, 정보는, 비-일시적인 유형적 컴퓨터 판독가능 저장 매체 상에 저장되고, 본원에 설명된 컴퓨터 프로그램 제품 또는 다른 데이터 조합의 임의의 실시예를 포함할 수 있다.
마지막으로, 본 명세서에 사용되는 언어는 주로 가독성 및 교육적 목적들을 위해 선택되었으며, 본 발명의 주제를 기술하거나 제한하기 위해 선택되지 않았을 수 있다. 따라서, 본 발명의 범위는 이러한 상세한 설명에 의해 제한되는 것이 아니라, 오히려 본원에 기반한 출원에 대해 발행되는 임의의 청구항들에 의해 제한되는 것으로 의도된다. 그에 따라서, 본 발명의 실시예들의 개시내용은, 다음의 청구항들에 기재된 본 발명의 범위를 제한하는 것이 아니라 예시적인 것으로 의도된다.

Claims (18)

  1. 기계 학습 트랜스포머(transformer) 모델을 실행하는 하나 이상의 실행 엔진 상에서 요청들의 배치(batch)들을 동적으로 실행하는 방법으로서,
    서빙 시스템에 의해, 실행을 위한 하나 이상의 요청을 수신하는 단계 ― 상기 서빙 시스템은 스케줄러를 포함하고, 하나 이상의 실행 엔진 각각은 적어도 디코더들의 세트를 포함하는 기계 학습 트랜스포머 모델에 액세스하도록 결합됨 ―;
    상기 스케줄러에 의해, 실행 엔진 상에서의 실행을 위한 상기 하나 이상의 요청을 포함하는 요청들의 배치를 스케줄링하는 단계;
    상기 실행 엔진에 의해, 상기 요청들의 배치에 대한 제1 세트의 입력들에 상기 트랜스포머 모델을 적용함으로써 제1 세트의 출력 토큰들을 생성하는 단계 ― 상기 트랜스포머 모델을 적용하는 것은 상기 요청들의 배치와 연관된 하나 이상의 입력 텐서에 적어도 하나의 배치 연산을 적용하는 것을 포함함 ―;
    요청 프로세서에 의해, 클라이언트 디바이스로부터 새로운 요청을 수신하는 단계 ― 상기 새로운 요청은 입력 토큰들의 시퀀스를 포함함 ―;
    상기 스케줄러에 의해, 상기 실행 엔진 상에서의 실행을 위한 상기 새로운 요청을 부가적으로 포함하는 제2 배치의 요청들을 스케줄링하는 단계 ― 상기 제2 배치의 요청들은 상기 실행 엔진이 상기 제2 배치의 요청들을 실행하는 데 이용가능한 메모리를 갖는다고 결정하는 것에 대한 응답으로 스케줄링되고, 상기 제2 배치의 요청들에 대한 제2 세트의 입력들에서, 상기 새로운 요청에 대한 상기 입력 토큰들의 시퀀스의 길이는 상기 새로운 요청 이외의 적어도 하나의 요청에 대한 입력의 길이와 상이함 ―; 및
    상기 실행 엔진에 의해, 상기 제2 배치에 대한 상기 제2 세트의 입력들에 상기 트랜스포머 모델을 적용함으로써 제2 세트의 출력 토큰들을 생성하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    제1 배치의 요청들 내의 요청이 완료되었다고 결정하는 것에 대한 응답으로, 완료된 요청에 대해 생성된 출력 토큰들을 상기 요청에 대한 응답으로서 클라이언트 디바이스에 제공하는 단계를 더 포함하며,
    상기 제2 배치의 요청들은 상기 하나 이상의 요청으로부터의 나머지 요청들 중 적어도 하나 및 상기 새로운 요청을 포함하는, 방법.
  3. 제2항에 있어서,
    상기 요청은, 상기 요청에 대한 내부 상태를 저장하는 데 전용인 상기 실행 엔진 내의 캐시 메모리와 연관되고, 상기 요청이 완료되었다고 결정하는 것에 대한 응답으로, 상기 실행 엔진에서 상기 요청에 대한 전용 캐시 메모리를 자유롭게 하는, 방법.
  4. 제1항에 있어서,
    상기 적어도 하나의 요청에 대한 입력은 상기 적어도 하나의 요청에 대한 상기 제1 세트의 출력 토큰들로부터의 출력 토큰이고, 상기 새로운 요청에 대한 상기 입력 토큰들의 시퀀스의 길이는 상기 적어도 하나의 요청에 대한 상기 출력 토큰의 길이와 상이한, 방법.
  5. 제4항에 있어서,
    상기 실행 엔진은 상기 적어도 하나의 요청에 대한, 키들을 저장하기 위한 키 캐시 텐서 및 값들을 저장하기 위한 값 캐시 텐서를 유지하기 위한 캐시 메모리를 포함하고,
    상기 제2 배치의 요청들을 스케줄링한 후에, 상기 실행 엔진에 의해, 상기 새로운 요청에 대한 키 캐시 텐서 및 값 캐시 텐서를 유지하는 데 전용인 새로운 캐시 메모리를 할당하는, 방법.
  6. 제5항에 있어서,
    상기 제2 세트의 출력 토큰들을 생성한 후에, 상기 적어도 하나의 요청에 대한 키 캐시 텐서의 길이는 상기 새로운 요청에 대한 키 캐시 텐서의 길이와 상이하고, 상기 적어도 하나의 요청에 대한 값 캐시 텐서의 길이는 상기 새로운 요청에 대한 값 캐시 텐서의 길이와 상이한, 방법.
  7. 제1항에 있어서,
    상기 클라이언트 디바이스로부터 상기 새로운 요청을 수신한 후에, 상기 스케줄러에 의해, 상기 실행 엔진과 상이한 제2 실행 엔진 상에서 상기 제2 배치의 요청들을 실행하는 데 이용가능한 메모리가 불충분하다고 결정하고, 상기 제2 실행 엔진에 대한 상기 결정에 대한 응답으로, 상기 실행 엔진이 상기 제2 배치의 요청들을 실행하는 데 이용가능한 메모리를 갖는지 여부를 결정하는, 방법.
  8. 제1항에 있어서,
    상기 실행 엔진은 그래픽 처리 유닛(GPU) 또는 텐서 처리 유닛 (TPU)으로서 구성되는, 방법.
  9. 제1항에 있어서,
    상기 입력 토큰들의 시퀀스 내의 각각의 토큰은 텍스트 유닛을 표현하는, 방법.
  10. 기계 학습 트랜스포머 모델을 실행하는 하나 이상의 실행 엔진 상에서 요청들의 배치들을 동적으로 실행하기 위한 동작들을 수행하도록 실행가능한 컴퓨터 프로그램 명령어들을 저장한 비-일시적인 컴퓨터 판독가능 저장 매체로서,
    상기 동작들은,
    서빙 시스템에 의해, 실행을 위한 하나 이상의 요청을 수신하는 것 ― 상기 서빙 시스템은 스케줄러를 포함하고, 하나 이상의 실행 엔진 각각은 적어도 디코더들의 세트를 포함하는 기계 학습 트랜스포머 모델에 액세스하도록 결합됨 ―;
    상기 스케줄러에 의해, 실행 엔진 상에서의 실행을 위한 상기 하나 이상의 요청을 포함하는 요청들의 배치를 스케줄링하는 것;
    상기 실행 엔진에 의해, 상기 요청들의 배치에 대한 제1 세트의 입력들에 상기 트랜스포머 모델을 적용함으로써 제1 세트의 출력 토큰들을 생성하는 것 ― 상기 트랜스포머 모델을 적용하는 것은 상기 요청들의 배치와 연관된 하나 이상의 입력 텐서에 적어도 하나의 배치 연산을 적용하는 것을 포함함 ―;
    요청 프로세서에 의해, 클라이언트 디바이스로부터 새로운 요청을 수신하는 것 ― 상기 새로운 요청은 입력 토큰들의 시퀀스를 포함함 ―;
    상기 스케줄러에 의해, 상기 실행 엔진 상에서의 실행을 위한 상기 새로운 요청을 부가적으로 포함하는 제2 배치의 요청들을 스케줄링하는 것 ― 상기 제2 배치의 요청들은 상기 실행 엔진이 상기 제2 배치의 요청들을 실행하는 데 이용가능한 메모리를 갖는다고 결정하는 것에 대한 응답으로 스케줄링되고, 상기 제2 배치의 요청들에 대한 제2 세트의 입력들에서, 상기 새로운 요청에 대한 상기 입력 토큰들의 시퀀스의 길이는 상기 새로운 요청 이외의 적어도 하나의 요청에 대한 입력의 길이와 상이함 ―; 및
    상기 실행 엔진에 의해, 상기 제2 배치에 대한 상기 제2 세트의 입력들에 상기 트랜스포머 모델을 적용함으로써 제2 세트의 출력 토큰들을 생성하는 것
    을 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  11. 제10항에 있어서,
    상기 동작들은, 제1 배치의 요청들 내의 요청이 완료되었다고 결정하는 것에 대한 응답으로, 완료된 요청에 대해 생성된 출력 토큰들을 상기 요청에 대한 응답으로서 클라이언트 디바이스에 제공하는 것을 더 포함하며,
    상기 제2 배치의 요청들은 상기 하나 이상의 요청으로부터의 나머지 요청들 중 적어도 하나 및 상기 새로운 요청을 포함하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  12. 제11항에 있어서,
    상기 요청은, 상기 요청에 대한 내부 상태를 저장하는 데 전용인 상기 실행 엔진 내의 캐시 메모리와 연관되고, 상기 요청이 완료되었다고 결정하는 것에 대한 응답으로, 상기 실행 엔진에서 상기 요청에 대한 전용 캐시 메모리를 자유롭게 하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  13. 제10항에 있어서,
    상기 적어도 하나의 요청에 대한 입력은 상기 적어도 하나의 요청에 대한 상기 제1 세트의 출력 토큰들로부터의 적어도 하나의 출력 토큰이고, 상기 새로운 요청에 대한 상기 입력 토큰들의 시퀀스의 길이는 상기 적어도 하나의 요청에 대한 상기 적어도 하나의 출력 토큰의 길이와 상이한, 비-일시적인 컴퓨터 판독가능 저장 매체.
  14. 제13항에 있어서,
    상기 실행 엔진은 상기 적어도 하나의 요청에 대한, 키들을 저장하기 위한 키 캐시 텐서 및 값들을 저장하기 위한 값 캐시 텐서를 유지하기 위한 캐시 메모리를 포함하고,
    상기 제2 배치의 요청들을 스케줄링한 후에, 상기 실행 엔진에 의해, 상기 새로운 요청에 대한 키 캐시 텐서 및 값 캐시 텐서를 유지하는 데 전용인 새로운 캐시 메모리를 할당하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서,
    상기 제2 세트의 출력 토큰들을 생성한 후에, 상기 적어도 하나의 요청에 대한 키 캐시 텐서의 길이는 상기 새로운 요청에 대한 키 캐시 텐서의 길이와 상이하고, 상기 적어도 하나의 요청에 대한 값 캐시 텐서의 길이는 상기 새로운 요청에 대한 값 캐시 텐서의 길이와 상이한, 비-일시적인 컴퓨터 판독가능 저장 매체.
  16. 제10항에 있어서,
    상기 클라이언트 디바이스로부터 상기 새로운 요청을 수신한 후에, 상기 스케줄러에 의해, 상기 실행 엔진과 상이한 제2 실행 엔진 상에서 상기 제2 배치의 요청들을 실행하는 데 이용가능한 메모리가 불충분하다고 결정하고, 상기 제2 실행 엔진에 대한 상기 결정에 대한 응답으로, 상기 실행 엔진이 상기 제2 배치의 요청들을 실행하는 데 이용가능한 메모리를 갖는지 여부를 결정하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  17. 제10항에 있어서,
    상기 실행 엔진은 그래픽 처리 유닛(GPU) 또는 텐서 처리 유닛 (TPU)으로서 구성되는, 비-일시적인 컴퓨터 판독가능 저장 매체.
  18. 제10항에 있어서,
    상기 입력 토큰들의 시퀀스 내의 각각의 토큰은 텍스트 유닛을 표현하는, 비-일시적인 컴퓨터 판독가능 저장 매체.
KR1020220104662A 2021-12-03 2022-08-22 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭 KR102479264B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220174621A KR20230084089A (ko) 2021-12-03 2022-12-14 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/542,193 2021-12-03
US17/542,193 US11442775B1 (en) 2021-12-03 2021-12-03 Dynamic batching for inference system for transformer-based generation tasks

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220174621A Division KR20230084089A (ko) 2021-12-03 2022-12-14 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭

Publications (1)

Publication Number Publication Date
KR102479264B1 true KR102479264B1 (ko) 2022-12-21

Family

ID=82608421

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020220104662A KR102479264B1 (ko) 2021-12-03 2022-08-22 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭
KR1020220174621A KR20230084089A (ko) 2021-12-03 2022-12-14 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220174621A KR20230084089A (ko) 2021-12-03 2022-12-14 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭

Country Status (5)

Country Link
US (2) US11442775B1 (ko)
EP (1) EP4191474A1 (ko)
KR (2) KR102479264B1 (ko)
CN (1) CN116245180A (ko)
WO (1) WO2023099954A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11442775B1 (en) * 2021-12-03 2022-09-13 FriendliAI Inc. Dynamic batching for inference system for transformer-based generation tasks
US11514370B1 (en) 2021-12-03 2022-11-29 FriendliAI Inc. Selective batching for inference system for transformer-based generation tasks
CN117472591B (zh) * 2023-12-27 2024-03-22 北京壁仞科技开发有限公司 用于数据计算的方法、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180373976A1 (en) * 2017-05-19 2018-12-27 Google Llc Scheduling neural network processing
US10846096B1 (en) * 2018-09-17 2020-11-24 A9.Com, Inc. Batch processing of requests for trained machine learning model
US20210192314A1 (en) * 2019-12-18 2021-06-24 Nvidia Corporation Api for recurrent neural networks
KR20210148586A (ko) * 2020-06-01 2021-12-08 삼성전자주식회사 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10769533B2 (en) * 2015-09-04 2020-09-08 Baidu Usa Llc Systems and methods for efficient neural network deployments
US11928600B2 (en) 2017-10-27 2024-03-12 Salesforce, Inc. Sequence-to-sequence prediction using a neural network model
US11922220B2 (en) * 2018-11-08 2024-03-05 Intel Corporation Function as a service (FaaS) system enhancements
US20200311613A1 (en) * 2019-03-29 2020-10-01 Microsoft Technology Licensing, Llc Connecting machine learning methods through trainable tensor transformers
US11520971B2 (en) * 2019-03-30 2022-12-06 The Regents Of The University Of California System and method for artificial intelligence story generation allowing content introduction
US11568238B2 (en) * 2019-06-28 2023-01-31 Amazon Technologies, Inc. Dynamic processing element array expansion
JP7041281B2 (ja) 2019-07-04 2022-03-23 浙江大学 ディープニューラルネットワークモデルに基づくアドレス情報特徴抽出方法
US11262984B2 (en) 2019-08-01 2022-03-01 Microsoft Technology Licensing, Llc. Multi-lingual line-of-code completion system
US20210109796A1 (en) * 2019-10-10 2021-04-15 Channel One Holdings Inc. Methods and systems for time-bounding execution of computing workflows
GB201916307D0 (en) * 2019-11-08 2019-12-25 Polyal Ltd A dialogue system, a method of obtaining a response from a dialogue system, and a method of training a dialogue system
US11562147B2 (en) 2020-01-23 2023-01-24 Salesforce.Com, Inc. Unified vision and dialogue transformer with BERT
US20210279576A1 (en) * 2020-03-03 2021-09-09 Google Llc Attention neural networks with talking heads attention
US20200226453A1 (en) * 2020-03-27 2020-07-16 Intel Corporation Methods and apparatus for dynamic batching of data for neural network workloads
US20210357210A1 (en) 2020-05-15 2021-11-18 Microsoft Technology Licensing, Llc. Automatic generation of code documentation
KR20210145490A (ko) 2020-05-25 2021-12-02 삼성전자주식회사 어텐션 기반 시퀀스 투 시퀀스 모델의 성능 향상 방법 및 장치
US20210397610A1 (en) 2020-06-23 2021-12-23 Soundhound, Inc. Machine learning system for digital assistants
US20210406673A1 (en) * 2020-06-26 2021-12-30 Nvidia Corporation Interface translation using one or more neural networks
CN111898698B (zh) * 2020-08-10 2021-07-27 腾讯科技(深圳)有限公司 对象的处理方法及装置、存储介质和电子设备
US11829282B2 (en) * 2020-08-27 2023-11-28 Microsoft Technology Licensing, Llc. Automatic generation of assert statements for unit test cases
US11893363B2 (en) 2020-08-27 2024-02-06 Microsoft Technology Licensing, Llc. Unit test case generation with transformers
US20220067513A1 (en) 2020-08-28 2022-03-03 Nvidia Corp. Efficient softmax computation
US20220108212A1 (en) * 2020-10-01 2022-04-07 Apple Inc. Attention free transformer
US20220147838A1 (en) * 2020-11-09 2022-05-12 Adobe Inc. Self-supervised visual-relationship probing
US20220164672A1 (en) * 2020-11-20 2022-05-26 Microsoft Technology Licensing, Llc. Automated merge conflict resolution
US11748555B2 (en) * 2021-01-22 2023-09-05 Bao Tran Systems and methods for machine content generation
US11442775B1 (en) * 2021-12-03 2022-09-13 FriendliAI Inc. Dynamic batching for inference system for transformer-based generation tasks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180373976A1 (en) * 2017-05-19 2018-12-27 Google Llc Scheduling neural network processing
US10846096B1 (en) * 2018-09-17 2020-11-24 A9.Com, Inc. Batch processing of requests for trained machine learning model
US20210192314A1 (en) * 2019-12-18 2021-06-24 Nvidia Corporation Api for recurrent neural networks
KR20210148586A (ko) * 2020-06-01 2021-12-08 삼성전자주식회사 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Choi, Yujeong, and Minsoo Rhu. Prema: A predictive multi-task scheduling algorithm for preemptible neural processing units. 2020 IEEE HPCA. IEEE. 2020. *

Also Published As

Publication number Publication date
WO2023099954A1 (en) 2023-06-08
KR20230084089A (ko) 2023-06-12
CN116245180A (zh) 2023-06-09
US11442775B1 (en) 2022-09-13
EP4191474A1 (en) 2023-06-07
US11836520B2 (en) 2023-12-05
US20230176903A1 (en) 2023-06-08

Similar Documents

Publication Publication Date Title
KR102479264B1 (ko) 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 동적 배칭
US20200160182A1 (en) System and method of executing neural networks
US20200042856A1 (en) Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit
KR20190113928A (ko) 강화 학습을 통한 디바이스 배치 최적화
CN110476173B (zh) 利用强化学习的分层设备放置
US11238332B2 (en) Attention neural networks with sparse attention mechanisms
CN111488177A (zh) 数据处理方法、装置、计算机设备和存储介质
CN114503125A (zh) 结构化剪枝方法、系统和计算机可读介质
KR102498595B1 (ko) 트랜스포머 기반 생성 작업들에 대한 추론 시스템을 위한 선택적 배칭
WO2022216879A2 (en) Full-stack hardware accelerator search
JP2022546271A (ja) カーネルチューニングパラメータを予測するための方法及び装置
US20220253672A1 (en) Sparse attention neural networks
Zheng et al. Chimera: An analytical optimizing framework for effective compute-intensive operators fusion
US20230118303A1 (en) Asynchronous distributed data flow for machine learning workloads
Gosmann et al. Automatic optimization of the computation graph in the Nengo neural network simulator
Miao et al. Cuwide: Towards efficient flow-based training for sparse wide models on gpus
Gajurel et al. GPU acceleration of sparse neural networks
CN114298329A (zh) 一种模型训练方法、装置、设备及存储介质
CN113743567A (zh) 一种将深度学习模型部署到加速单元的方法
Gadiyar et al. Artificial Intelligence Software and Hardware Platforms
Myllykoski et al. On solving separable block tridiagonal linear systems using a GPU implementation of radix-4 PSCR method
US20240086719A1 (en) Sparse encoding and decoding at mixture-of-experts layer
WO2023192678A1 (en) Cross-cluster communication for machine learning workloads
WO2022216878A1 (en) Optimizing off-chip memory accesses on a neural network hardware accelerator
Park et al. Accelerating forwarding computation of artificial neural network using CUDA

Legal Events

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