Continuous Batching

Creator
Creator
Seonglae ChoSeonglae Cho
Created
Created
2026 Nov 5 10:45
Editor
Edited
Edited
2026 Nov 5 12:46
Refs
Refs
추론 서버가 배치를 통째로 기다리지 않고 토큰 한 스텝마다 끝난 요청은 빼고 새 요청을 넣는 방식
GPU를 쉬지 않게 해서 처리량이 크게 올라간다

iteration-level scheduling

가장 긴 요청이 끝날 때까지 배치가 묶여 있지 않고 끝나는 sequence 에는 다른놈 채움

Requirement

  • PagedAttention: KV cache를 작은 블록 단위로 관리해 길이가 제각각인 요청을 넣고 빼도 메모리가 조각나지 않는다.
  • padding 없는 일렬 배치: 모든 요청의 토큰을 한 줄로 이어 붙이고 varlen attention으로 요청끼리 경계를 나눈다.
    Sequence Packing

Varlen attention: variable-length

길이가 다른 시퀀스들을 padding 없이 attention하는 kernel. 토큰을 한 줄로 이어 붙여 텐서를 만들고, 경계 위치 인덱스만 넘김. kernel은각 구간 안에서만 attention을 계산
Flash Attention
. varlen은 그렇게 이어 붙인 줄을 샘플끼리 섞이지 않게 계산하는 kernel.
이게 가능한 이유는 Transformer에서 토큰끼리 섞이는 곳은 attention 하나뿐이고 masking 으로 나눠서 서로 영향 안주기도 가능. position index 만 반영해주면 댐. 상대거리쓰는
RoPE
는 더 쉽고
다만 MoE의 expert capacity에서 expert마다 받을 수 있는 토큰 수에 상한을 두거나 하는 식에서 구현이 복잡해지거나 불가능할수도 있다. Mamba 같은 SSM이나 conv 층과 BatchNorm이 들어가면 구현이 막히는데 LLM에서는 거의 사용안함.
 
 
 
 

Orca: iteration-level scheduling

 
 

Recommendations