섹션별 상세
정적 배칭은 배치 내 가장 긴 요청이 완료될 때까지 다른 요청들이 GPU 자원을 점유한 채 대기하게 만들어 처리량을 저하시킨다. (Problem)


반복 수준 스케줄링은 매 반복(Iteration)마다 스케줄러가 개입하여 완료된 요청을 즉시 제거하고 대기 중인 새 요청을 투입한다. (Solution)
python
def select(self) -> list[Request]:
batch = []
for request in self.request_pool.arrival_ordered_requests():
if len(batch) == self.max_batch_size:
break
if request.state is RequestState.WAITING:
if request.max_tokens > self.n_slots:
raise ValueError(...)
new_n_rsrv = self.n_rsrv + request.max_tokens
if new_n_rsrv > self.n_slots:
break
self.n_rsrv = new_n_rsrv
request.initiate()
batch.append(request)
return batchFCFS(선입선출) 방식으로 요청을 선택하고 KV 캐시 슬롯을 예약하는 스케줄러 로직

선택적 배칭은 레이어 노름이나 QKV 투영과 같은 토큰별 연산은 전체 배치를 평탄화하여 수행하고, 어텐션 연산 시에만 요청별로 분리하여 처리한다. (Mechanism)
python
def build_flat_batch(self, requests: list[Request]) -> FlatBatch:
input_token_ids = []
spans = []
// ... (중략)
for request in requests:
if not request.output_ids:
step_token_ids = request.prompt_ids
else:
step_token_ids = (request.output_ids[-1],)
step_len = len(step_token_ids)
spans.append(RequestSpan(request.request_id, flat_start, flat_start + step_len))
input_token_ids.extend(step_token_ids)
flat_start += step_len서로 다른 길이의 요청들을 하나의 평탄화된 토큰 스트림으로 결합하는 과정

tinyorca는 Qwen3-0.6B 모델을 기반으로 이러한 복잡한 로직을 파이썬 환경에서 구현하여 교육적 목적으로 원리를 시각화한다. (Implementation)

혼합 워크로드 벤치마크에서 tinyorca는 정적 배칭 기반의 베이스라인 대비 처리량 44.1% 향상, 평균 지연 시간 31.4% 감소를 기록했다. (Result)

근거
- 혼합 워크로드에서 tinyorca는 베이스라인 대비 처리량이 약 44% 향상되었다. — Workload 2 (short–long mix) Results 섹션 및 Figure 7
- 반복 수준 스케줄링을 통해 TTFT(첫 토큰 생성 시간)가 약 38% 감소했다. — Workload 2 (short–long mix) Results 섹션 및 Figure 7
스케줄링 알고리즘은 FCFS(선입선출) 방식을 따르며, 새로운 요청 수용 시 최대 토큰 길이를 기준으로 KV 캐시 슬롯을 보수적으로 예약한다. (Algorithm)
용어 해설
- 반복 수준 스케줄링(Iteration-level Scheduling)
- — LLM 추론 시 요청 단위가 아닌 개별 토큰 생성(반복) 단위로 스케줄링을 수행하는 기법이다. 한 요청이 완료되는 즉시 새로운 요청을 배치에 투입할 수 있어 GPU 자원 활용도를 극대화한다.
- 선택적 배칭(Selective Batching)
- — 서로 다른 길이의 요청들을 하나의 배치로 묶어 처리할 때, 어텐션 연산 전후로 토큰 스트림을 평탄화하거나 분리하는 기술이다. 프리필과 디코드 단계를 혼합하여 처리할 수 있게 해준다.
- 프리필 대 디코드(Prefill vs Decode)
- — LLM 추론의 두 단계로, 프리필은 입력 프롬프트를 한꺼번에 처리하고 디코드는 토큰을 하나씩 생성한다. 두 단계는 연산 특성이 달라 효율적인 배칭을 방해하는 주요 원인이 된다.
- 키-값 캐시(KV Cache)
- — 이전 토큰들의 연산 결과를 저장하여 재사용함으로써 추론 속도를 높이는 메모리 영역이다. 효율적인 관리가 전체 시스템의 처리량과 지연 시간에 결정적인 영향을 미친다.
- 정적 배칭(Static Batching)
- — 배치 내 모든 요청이 끝날 때까지 새로운 요청을 받지 못하고 기다리는 전통적인 방식이다. 짧은 요청이 먼저 끝나도 가장 긴 요청이 완료될 때까지 GPU 슬롯이 낭비되는 문제가 있다.
기술
- Orca
- Qwen3-0.6B
- Python
- PyTorch
- Hugging Face
활용 사례
- 고성능 LLM 추론 서버 구축
- 실시간 챗봇 서비스 최적화
- 혼합 워크로드 처리량 개선
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 04. 05.수집 2026. 04. 05.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
