주제: IO-1 LLM Inference (지연시간 / 처리량 / 메모리 Tradeoff)

분류: llm

타입: concept

난이도: 중급

선수지식: 있음 — Transformer, Attention, GPU 병렬화

문제 설정

LLM을 실제 서비스에서 사용할 때 가장 중요한 문제는 추론(inference) 성능입니다.

서비스 시스템에서는 다음 세 가지 지표가 핵심입니다.

이 세 지표는 서로 강한 tradeoff 관계를 가집니다.

직관 비유

LLM 서빙에서는 이 세 가지를 균형 있게 최적화해야 합니다.

1. Latency (지연시간)

Latency는 요청이 완료될 때까지 걸리는 시간입니다.

Latency=Tprefill+Tdecode

기호 의미

왜 필요한가

사용자가 체감하는 응답 속도를 결정합니다.

주의점

LLM 생성 과정은 토큰을 순차적으로 생성합니다.

2. Prefill 단계

Prefill 단계에서는 전체 prompt를 한 번에 처리합니다.

Self-attention 계산:

Costn²

기호 의미

직관 설명

긴 prompt는 prefill latency를 크게 증가시킵니다.

주의점

prefill은 GPU 병렬화가 가능합니다.

3. Decode 단계

decode 단계에서는 토큰을 하나씩 생성합니다.

목표:

P(xt|x1,...,xt1)

기호 의미

직관 설명

각 토큰 생성은 이전 토큰에 의존합니다.

주의점

decode는 완전 병렬화가 어렵습니다.

4. Throughput (처리량)

Throughput은 일정 시간 동안 처리 가능한 요청 수입니다.

Throughput=requests/second

왜 중요한가

서비스 비용과 직결됩니다.

주의점

높은 throughput은 latency 증가를 유발할 수 있습니다.

5. Memory 사용량

LLM inference에서 메모리는 다음 요소로 구성됩니다.

Memory=model+KVcache+activation

기호 의미

왜 중요한가

GPU 메모리가 inference batch 크기를 제한합니다.

6. KV Cache

Transformer decode 단계에서는 이전 attention을 저장합니다.

KVcachen×d×layers

기호 의미

왜 필요한가

매 토큰마다 attention을 다시 계산하지 않도록 합니다.

주의점

긴 context는 KV cache 메모리를 증가시킵니다.

7. Latency vs Throughput Tradeoff

전략 Latency Throughput
batch size 증가 증가 증가
작은 batch 감소 감소

즉 batch 크기 조절이 핵심입니다.

8. Inference 최적화 전략

Request queue
↓
Batch scheduler
↓
GPU inference

코드-수식 연결

개념 코드 설명
generation model.generate() 토큰 생성
batch batch_size 동시 요청 처리
KV cache past_key_values attention cache

자주 하는 오해 5개

체크리스트 (스스로 설명 가능해야 하는 질문)