본문으로 건너뛰기
Kreath Archive
TechProjectsBooksAbout
TechProjectsBooksAbout

내비게이션

  • Tech
  • Projects
  • Books
  • About
  • Tags

카테고리

  • AI / ML
  • 웹 개발
  • 프로그래밍
  • 개발 도구

연결

  • GitHub
  • Email
  • RSS
© 2026 Kreath Archive. All rights reserved.Built with Next.js + MDX
홈TechProjectsBooksAbout
//
  1. 홈
  2. 테크
  3. 10장: 프로덕션 추론 최적화 실전
2026년 4월 3일·AI / ML·

10장: 프로덕션 추론 최적화 실전

FP8, FlashAttention 3, Continuous Batching, Speculative Decoding을 조합해 5-8배 비용 효율을 달성하는 실전 배포 파이프라인과 모니터링 전략을 다룹니다.

20분427자9개 섹션
llmaiperformancemlops
공유
llm-inference10 / 10
12345678910
이전9장: 비용 vs 지연시간 트레이드오프

이 장에서 배우는 것

  • 최적화 기법들의 조합과 시너지 효과
  • vLLM, SGLang, TensorRT-LLM 프로덕션 구성 비교
  • 로드밸런싱과 오토스케일링 전략
  • 모니터링과 알럿 시스템 구축
  • 실전 배포 파이프라인 설계

최적화 스택 조합

이 시리즈에서 다룬 기법들을 개별적으로 적용해도 효과가 있지만, 조합했을 때 누적 효과는 더욱 극적입니다.

기법별 개별 효과와 누적 효과

최적화 스택 누적 효과 (Llama 3 70B, H100 기준)
text
기준선: FP16, 정적 배칭, 사전 할당 KV 캐시
  처리량: 1x (기준)
 
+ FP8 양자화 (7장):
  메모리 50% 절감 → 배치 크기 증가 가능
  처리량: ~1.6x
 
+ PagedAttention (3장):
  KV 캐시 낭비 96% 감소 → 동시 요청 수 증가
  처리량: ~3.2x (1.6 x 2)
 
+ Continuous Batching (4장):
  GPU 유휴 시간 제거 → 활용률 극대화
  처리량: ~4.5x (3.2 x 1.4)
 
+ Prefix Caching (6장):
  반복 Prefill 제거 → TTFT 감소, 처리량 증가
  처리량: ~5.4x (4.5 x 1.2)
 
+ Speculative Decoding (5장, 저배치 시나리오):
  지연시간 2x 감소 → 요청 회전율 증가
  처리량: ~6.5x (5.4 x 1.2)
 
+ FlashAttention 3:
  Attention 연산 최적화, HBM 접근 감소
  처리량: ~7.2x (6.5 x 1.1)
 
최종: FP16 기준 대비 약 5-8x 비용 효율 개선
Info

위 수치는 워크로드에 따라 크게 달라집니다. 짧은 입력 + 긴 출력의 대화형 워크로드에서는 Speculative Decoding의 기여가 크고, 긴 입력 + 짧은 출력의 분류/추출 워크로드에서는 Prefix Caching의 기여가 큽니다.

FlashAttention 3

FlashAttention은 Attention 연산을 타일링(Tiling)과 재계산(Recomputation)으로 최적화해, HBM 접근을 줄이고 SRAM(on-chip memory)을 최대한 활용하는 기법입니다.

FlashAttention 3은 H100/H200의 비동기 하드웨어 기능을 활용해 이전 버전 대비 추가적인 속도 향상을 달성합니다.

FlashAttention 버전별 특징
text
FlashAttention 1: 타일링 기반 Attention, HBM 접근 감소
FlashAttention 2: 병렬화 개선, 더 나은 작업 분할
FlashAttention 3: H100 비동기 실행, FP8 Attention 지원

FlashAttention은 별도 설정 없이 vLLM, SGLang 등 주요 추론 엔진에 기본 통합되어 있습니다.

추론 엔진 프로덕션 구성 비교

vLLM 프로덕션 구성

vLLM은 가장 넓은 모델 지원과 활발한 커뮤니티를 기반으로 프로덕션 환경에서 가장 많이 사용됩니다.

vllm_production_launch.sh
bash
# vLLM 프로덕션 서버 시작 (Llama 3 70B, H100 x 2)
python -m vllm.entrypoints.openai.api_server \
    --model meta-llama/Llama-3-70B-Instruct \
    --tensor-parallel-size 2 \
    --dtype float16 \
    --quantization fp8 \
    --kv-cache-dtype fp8 \
    --enable-prefix-caching \
    --max-num-seqs 128 \
    --max-model-len 8192 \
    --gpu-memory-utilization 0.92 \
    --enable-chunked-prefill \
    --speculative-model meta-llama/Llama-3-8B-Instruct \
    --num-speculative-tokens 5 \
    --port 8000

주요 파라미터 설명은 다음과 같습니다.

  • --tensor-parallel-size 2: 2-GPU 텐서 병렬화
  • --quantization fp8: 모델 가중치 FP8 양자화
  • --kv-cache-dtype fp8: KV 캐시 FP8 저장
  • --enable-prefix-caching: Prefix Caching 활성화
  • --max-num-seqs 128: 최대 동시 요청 128개
  • --gpu-memory-utilization 0.92: GPU 메모리 92% 사용
  • --enable-chunked-prefill: 긴 Prefill을 분할해 Decode 지연 방지
  • --speculative-model: Speculative Decoding용 드래프트 모델

SGLang 프로덕션 구성

SGLang은 RadixAttention 기반의 강력한 Prefix Caching과 프로그래밍 인터페이스가 강점입니다.

sglang_production_launch.sh
bash
# SGLang 프로덕션 서버 시작
python -m sglang.launch_server \
    --model-path meta-llama/Llama-3-70B-Instruct \
    --tp 2 \
    --quantization fp8 \
    --mem-fraction-static 0.88 \
    --max-running-requests 128 \
    --chunked-prefill-size 4096 \
    --port 8000

SGLang은 RadixAttention이 기본 활성화되어 있어 별도의 Prefix Caching 설정이 필요 없습니다. 복잡한 프롬프트 구조(트리형 생성, 반복 패턴)에서 vLLM보다 높은 캐시 히트율을 보이는 경우가 있습니다.

TensorRT-LLM 프로덕션 구성

NVIDIA의 TensorRT-LLM은 하드웨어 최적화의 깊이에서 강점을 가집니다. 특히 NVIDIA GPU에서의 절대적인 성능이 중요한 경우에 선택합니다.

TensorRT-LLM 빌드 및 배포 흐름
text
1. 모델 변환: HuggingFace → TensorRT-LLM 엔진
   trtllm-build --model_dir ./llama-70b \
                --output_dir ./engine \
                --tp_size 2 \
                --use_fp8 \
                --max_batch_size 128
 
2. Triton Inference Server로 서빙
   tritonserver --model-repository ./model_repo

엔진 선택 가이드

기준vLLMSGLangTensorRT-LLM
모델 지원 폭가장 넓음넓음NVIDIA 최적화 모델
배포 편의성매우 높음높음중간 (빌드 필요)
Prefix CachingAPCRadixAttention (더 강력)기본 수준
절대 성능높음높음가장 높음 (NVIDIA GPU)
커뮤니티가장 활발성장 중NVIDIA 지원
Speculative Decoding다양한 변형 지원Eagle 지원Medusa 지원
Tip

대부분의 프로덕션 환경에서는 vLLM으로 시작하는 것을 권장합니다. 배포가 간편하고, OpenAI 호환 API를 제공하며, 커뮤니티 지원이 풍부합니다. 성능이 부족한 경우에 SGLang이나 TensorRT-LLM으로 전환을 검토합니다.

로드밸런싱

여러 GPU 레플리카로 서빙할 때, 로드밸런싱 전략이 전체 시스템의 효율을 좌우합니다.

캐시 인식 라우팅

6장에서 다룬 캐시 인식 라우팅은 프로덕션에서 핵심적인 최적화입니다.

부하 기반 라우팅

단순 라운드 로빈 대신, 각 레플리카의 현재 부하(대기 중인 요청 수, KV 캐시 사용률)를 고려해 라우팅합니다.

부하 지표 기반 라우팅 로직
text
라우팅 점수 = w1 * (1 - GPU 활용률)
           + w2 * (1 - KV 캐시 사용률)
           + w3 * 접두사 캐시 히트 보너스
           + w4 * (1 / (대기 큐 길이 + 1))
 
가장 높은 점수의 레플리카로 요청 라우팅

오토스케일링

트래픽 변동에 대응하기 위한 오토스케일링 전략을 정리합니다.

스케일링 지표

GPU 기반 추론의 오토스케일링에서 전통적인 CPU/메모리 사용률은 적합하지 않습니다. LLM 추론에 특화된 지표를 사용해야 합니다.

오토스케일링 지표
text
스케일 아웃 트리거:
  - 평균 TTFT P95 > SLO 임계값 (예: 500ms)
  - 평균 TPOT P95 > SLO 임계값 (예: 100ms)
  - 대기 큐 길이 > 임계값 (예: 50개)
  - KV 캐시 사용률 > 90%
 
스케일 인 트리거:
  - 평균 GPU 활용률 < 30% (10분 이상)
  - 대기 큐 길이 = 0 (5분 이상)

스케일링 속도 문제

LLM 서빙의 오토스케일링에서 가장 큰 과제는 콜드 스타트 시간입니다. 70B 모델을 새 GPU에 로드하는 데 수 분이 걸릴 수 있으므로, 예측 기반(Predictive) 스케일링이 중요합니다.

콜드 스타트 최소화 전략
text
1. 예측 스케일링: 과거 트래픽 패턴으로 미래 부하 예측
2. Warm Pool: 모델이 이미 로드된 대기 인스턴스 유지
3. 모델 캐싱: S3/GCS에서 모델 가중치를 빠르게 다운로드
4. 최소 레플리카: 항상 최소 N개의 레플리카 유지
Warning

오토스케일링의 스케일 인(축소)은 신중해야 합니다. 진행 중인 요청이 있는 레플리카를 갑자기 종료하면 사용자 요청이 실패합니다. 새 요청을 받지 않도록 설정(Drain)하고, 진행 중인 요청이 모두 완료된 후 종료하는 Graceful Shutdown 절차가 필수입니다.

모니터링

프로덕션 LLM 서빙의 모니터링은 크게 세 가지 계층으로 구성됩니다.

1. 요청 수준 지표

요청 수준 모니터링 지표
text
- TTFT (P50, P95, P99)
- TPOT (P50, P95, P99)
- TPS (초당 생성 토큰)
- 요청당 입력/출력 토큰 수 분포
- 오류율 (타임아웃, OOM, 모델 오류)
- Speculative Decoding Acceptance Rate

2. 시스템 수준 지표

시스템 수준 모니터링 지표
text
- GPU 활용률 (SM Active, Memory Bandwidth 활용률)
- GPU 메모리 사용량 (모델 + KV 캐시 + 기타)
- KV 캐시 사용률 및 블록 할당 현황
- Prefix Cache 히트율
- 배치 크기 분포
- 대기 큐 길이와 대기 시간

3. 비즈니스 수준 지표

비즈니스 수준 모니터링 지표
text
- 시간당 처리 요청 수
- tokens/$  (비용 효율)
- SLO 달성률 (목표: 99%+)
- GPU 시간당 비용

Prometheus + Grafana 구성

vLLM과 SGLang 모두 Prometheus 형식의 메트릭을 내장 지원합니다.

핵심 알럿 규칙
text
Critical:
  - TTFT P95 > SLO x 1.5  (5분 연속)
  - 오류율 > 1%  (3분 연속)
  - GPU 메모리 > 95%
 
Warning:
  - TTFT P95 > SLO  (10분 연속)
  - Acceptance Rate < 0.5  (Speculative Decoding 비효율)
  - Prefix Cache 히트율 < 30%  (캐싱 전략 재검토 필요)

실전 배포 파이프라인

전체 배포 파이프라인을 단계별로 정리합니다.

단계별 체크리스트

1단계: 모델 준비

  • 타겟 워크로드에서의 모델 품질 평가 완료
  • FP8 양자화 후 품질 재평가 (벤치마크 차이 1% 미만 확인)
  • KV 캐시 양자화 평가 (긴 컨텍스트 태스크 특히 주의)

2단계: 추론 엔진 설정

  • TP/PP 구성 결정 (8장 참조)
  • 배치 크기 상한 설정 (9장 SLO 기반)
  • Prefix Caching 활성화
  • Speculative Decoding 적용 여부 결정 (배치 크기 기반)

3단계: 벤치마크

  • 실제 워크로드의 대표 샘플로 부하 테스트
  • TTFT, TPOT P95 값이 SLO 이내인지 확인
  • 피크 트래픽 시뮬레이션으로 최대 동시 요청 수 검증

4단계: 배포

  • 카나리 배포로 5% 트래픽부터 시작
  • 24시간 이상 모니터링 후 점진적 확대
  • 롤백 자동화 구축 (SLO 위반 시 자동 롤백)

5단계: 운영

  • 알럿 규칙 설정 및 온콜 체계 구축
  • 주간 비용 리포트 생성
  • 분기별 모델 및 하드웨어 업그레이드 검토

시리즈를 마치며

10장에 걸쳐 LLM 추론 최적화의 핵심 기법들을 하나씩 살펴보았습니다. 마지막으로 전체 시리즈의 핵심 메시지를 정리합니다.

핵심 원칙

  1. 병목을 먼저 파악합니다: 메모리 바운드인지 컴퓨트 바운드인지에 따라 적합한 최적화가 다릅니다
  2. 조합의 시너지를 활용합니다: 단일 기법보다 여러 기법의 조합이 훨씬 강력합니다
  3. SLO 기반으로 결정합니다: "최대 성능"이 아닌 "SLO를 만족하는 최저 비용"을 목표로 합니다
  4. 지속적으로 모니터링합니다: 워크로드 변화에 따라 최적의 구성도 달라집니다

빠르게 변화하는 분야

LLM 추론 최적화는 매우 빠르게 발전하는 분야입니다. 이 시리즈에서 다룬 기법들은 2026년 현재의 스냅샷이며, 새로운 하드웨어(B200, 커스텀 ASIC), 새로운 알고리즘(더 효율적인 Attention, 새로운 캐싱 전략), 새로운 아키텍처(SSM 하이브리드, Diffusion 기반 생성)가 지속적으로 등장하고 있습니다.

기법의 세부 사항은 변할 수 있지만, 이 시리즈에서 다룬 원칙들 -- 메모리 효율, 연산 병렬화, 중복 제거, 비용 최적화 -- 은 앞으로도 유효할 것입니다.

Info

LLM 추론 최적화의 궁극적인 목표는 "더 많은 사람이, 더 적은 비용으로, 더 빠르게 AI의 혜택을 받을 수 있게 하는 것"입니다. 이 시리즈가 그 여정에 도움이 되기를 바랍니다.


정리

이 장에서는 프로덕션 추론 최적화의 실전 전략을 종합했습니다.

  • FP8 + PagedAttention + Continuous Batching + Prefix Caching + Speculative Decoding의 조합으로 5-8배의 비용 효율 개선이 가능합니다
  • vLLM은 범용성과 배포 편의성에서, SGLang은 Prefix Caching에서, TensorRT-LLM은 절대 성능에서 강점을 가집니다
  • 캐시 인식 라우팅과 예측 기반 오토스케일링으로 분산 서빙을 최적화합니다
  • TTFT, TPOT, 캐시 히트율 등의 지표를 지속적으로 모니터링하고 SLO 기반으로 운영합니다

이 시리즈 전체에서 다룬 기법들이 LLM 추론의 비용과 지연시간을 줄이는 데 실질적인 가이드가 되기를 바랍니다.

이 글이 도움이 되셨나요?

관련 주제 더 보기

#llm#ai#performance#mlops

관련 글

AI / ML

9장: 비용 vs 지연시간 트레이드오프

GPU 선택, 클라우드 vs 온프레미스, 배칭 전략이 비용과 지연시간에 미치는 영향을 분석하고, SLO 기반 최적화와 비용 모델링 방법을 다룹니다.

2026년 4월 1일·16분
AI / ML

8장: 모델 병렬화와 분산 추론

텐서 병렬화, 파이프라인 병렬화, 시퀀스 병렬화, Expert 병렬화의 원리를 분석하고, 멀티 GPU 추론 전략과 클러스터 수준 최적화를 다룹니다.

2026년 3월 30일·17분
AI / ML

7장: 양자화 추론 — FP8, INT8, INT4

양자화의 기초 개념부터 FP8의 부상, W8A8/W4A16 전략, GPTQ/AWQ/SmoothQuant 기법, KV 캐시 양자화까지 정확도와 성능의 트레이드오프를 분석합니다.

2026년 3월 28일·16분
이전 글9장: 비용 vs 지연시간 트레이드오프

댓글

목차

약 20분 남음
  • 이 장에서 배우는 것
  • 최적화 스택 조합
    • 기법별 개별 효과와 누적 효과
    • FlashAttention 3
  • 추론 엔진 프로덕션 구성 비교
    • vLLM 프로덕션 구성
    • SGLang 프로덕션 구성
    • TensorRT-LLM 프로덕션 구성
    • 엔진 선택 가이드
  • 로드밸런싱
    • 캐시 인식 라우팅
    • 부하 기반 라우팅
  • 오토스케일링
    • 스케일링 지표
    • 스케일링 속도 문제
  • 모니터링
    • 1. 요청 수준 지표
    • 2. 시스템 수준 지표
    • 3. 비즈니스 수준 지표
    • Prometheus + Grafana 구성
  • 실전 배포 파이프라인
    • 단계별 체크리스트
  • 시리즈를 마치며
    • 핵심 원칙
    • 빠르게 변화하는 분야
  • 정리