지속적 배치 처리(Continuous Batching) 원리 이해하기
요약
LLM의 추론 과정은 본질적으로 다음 토큰을 예측하는 작업입니다. 이 과정에서 발생하는 계산 비용을 최적화하기 위해 '지속적 배치 처리(Continuous Batching)' 기법이 사용됩니다. 이는 여러 대화를 병렬로 처리하고, 완료된 세션을 즉시 다른 세션으로 교체하여 GPU 활용률을 극대화합니다. 본 글은 어텐션 메커니즘(Attention Mechanism)의 기본 원리부터 시작하여, 다양한 길이의 시퀀스를 동시에 처리하는 방법을 수학적으로 유도하며 이 기술의 효율성을 설명합니다.
핵심 포인트
- LLM 추론 과정은 입력 프롬프트 전체를 한 번에 처리한 후, 토큰을 하나씩 생성(decode)하는 방식으로 진행됩니다.
- 어텐션 메커니즘(Attention Mechanism)은 LLM에서 토큰 간 상호작용을 담당하며, 이로 인해 시퀀스 길이($L$)에 대해 이차 복잡도($O(L^2)$)를 가집니다.
- 지속적 배치 처리(Continuous Batching)는 다양한 길이의 여러 대화 세션을 병렬로 처리하고 끊임없이 교체함으로써 GPU 자원 활용률을 극대화하는 핵심 최적화 기법입니다.
- 이 과정에서 입력 시퀀스($X$)와 키/값 상태($K, V$)가 각각 다른 길이를 가질 수 있도록 일반화하여 모델의 유연성을 확보합니다.
거대 언어 모델(LLM)을 실제 서비스 환경에 적용할 때 가장 중요한 과제 중 하나는 추론(Inference) 효율성입니다. LLM은 기본적으로 입력 프롬프트 전체를 처리한 후, 다음 토큰을 예측하며 순차적으로 응답을 생성합니다. 이 과정은 계산 비용이 매우 높기 때문에, 여러 사용자의 요청을 동시에 처리할 수 있는 최적화 기법이 필수적입니다.
가장 영향력 있는 최적화 중 하나가 바로 **지속적 배치 처리(Continuous Batching)**입니다. 이는 여러 개의 독립적인 대화 세션들을 병렬로 처리하고, 한 세션의 처리가 끝나면 지체 없이 다른 세션으로 교체하여 GPU 자원 활용률을 극대화하는 기술입니다.
1. LLM 작동 원리 및 어텐션 메커니즘 (Attention Mechanism)
LLM은 텍스트를 '토큰(Token)'이라는 단위로 분해하여 처리합니다. 토큰 시퀀스 내의 각 토큰이 독립적으로 처리되는 연산도 있지만, 문장 속 단어들 간에 상호작용을 만들어내는 핵심 부분이 바로 **어텐션 레이어(Attention Layer)**입니다.
어텐션 메커니즘은 다음과 같은 과정을 거칩니다. (단일 프롬프트 기준)
- 입력 텐서: $L$ 길이의 토큰 시퀀스는 크기 $(1, L, d)$의 텐서를 형성합니다. 여기서 $d$는 히든 차원(hidden dimension)입니다.
- 투영 (Projection): 입력 텐서는 세 개의 가중치 행렬을 통해 각각 Query ($ ext{Q}$), Key ($ ext{K}$), Value ($ ext{V}$) 상태로 투영됩니다. 이들은 모두 $(1, L, h)$ 크기의 텐서를 갖습니다.
- 어텐션 점수 계산: $ ext{Q}$와 $ ext{K}$를 곱하여 토큰 간의 유사도를 측정하는 어텐션 스코어를 얻습니다. 이 과정은 시퀀스 길이 $L$에 대해 이차 복잡도($O(L^2)$)를 가집니다.
- 마스크 적용: 계산된 점수에 '어텐션 마스크(Attention Mask)'를 적용합니다. 특히, LLM의 순차적 특성을 반영하기 위해 각 토큰이 자신보다 앞선 토큰하고만 상호작용하도록 제한하는 **인과 마스크(Causal Mask)**가 사용됩니다.
- 출력 계산: 마스킹된 스코어에 소프트맥스(softmax)를 적용한 후, $ ext{V}$ 상태와 곱하여 최종 출력을 얻습니다.
2. 지속적 배치 처리를 위한 일반화 (Generalization for Continuous Batching)
지속적 배치는 여러 세션과 다양한 길이의 시퀀스를 동시에 처리해야 하므로, 위 과정을 더욱 일반화해야 합니다.
- 다중 세션: 이제 $ ext{Q}, ext{K}, ext{V}$는 각각 $(B, L_q, h), (B, L_k, h), (B, L_v, h)$ 형태를 갖습니다. 여기서 $B$는 배치 크기(Batch Size)이고, $L_q, L_k, L_v$는 각 세션의 쿼리, 키, 값 시퀀스 길이입니다.
- 핵심 제약 조건: 어텐션 메커니즘이 작동하려면 $ ext{Q}$와 $ ext{K}$가 곱해져야 하므로, $ ext{Q}$의 마지막 차원($h$)과 $ ext{K}$의 마지막 차원은 반드시 같아야 합니다.
- 마스크 및 점수: 어텐션 스코어는 $(B, L_q, L_k)$ 형태를 가지며, 마스크 역시 이와 동일한 형태입니다.
이러한 일반화된 접근 방식을 통해 시스템은 각 세션의 상태(State)가 다르더라도 일관되게 높은 처리량을 유지하며 토큰 생성 작업을 수행할 수 있습니다. 이는 GPU 자원을 낭비하지 않고 지속적으로 최대 부하를 유지하는 핵심 원리입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기