AI.zip
  • AI 모델
  • 방법론
  • AI 서비스
  • 가격 비교
  • 블로그

AI.zip

AI 모델, 서비스, 방법론을 큐레이션하는 에디토리얼 플랫폼

탐색

  • AI 모델
  • AI 서비스
  • 방법론
  • 블로그

커뮤니티

  • 소개
  • 디스코드 참여
  • 문의

법적고지

  • 이용약관
  • 개인정보처리방침

© 2026 ai.zip. All rights reserved.

Discord 커뮤니티
블로그Kubernetes에서 LLM 서빙하기: vLLM, TGI, Triton 완전 가이드

Kubernetes에서 LLM 서빙하기: vLLM, TGI, Triton 완전 가이드

가이드
2026년 4월 5일약 4분

핵심 포인트

  • 1.LLM 서빙의 핵심 과제 LLM 서빙은 일반 웹 서비스와 다릅니다
  • 2.GPU 메모리 관리, KV 캐시 최적화, 동시 요청 처리가 핵심입니다
  • 3.vLLM: 프로덕션 표준 vLLM은 PagedAttention 기술로 GPU 메모리를 최대 효율로 사용합니다

LLM 서빙의 핵심 과제

LLM 서빙은 일반 웹 서비스와 다릅니다. GPU 메모리 관리, KV 캐시 최적화, 동시 요청 처리가 핵심입니다.

mermaid
flowchart TB
    Client["클라이언트 요청들"] --> LB[Load Balancer]
    LB --> Pod1["vLLM Pod<br/>GPU A100 x2"]
    LB --> Pod2["vLLM Pod<br/>GPU A100 x2"]
    LB --> Pod3["vLLM Pod<br/>GPU A100 x2"]
    HPA[HPA<br/>자동 스케일링] --> Pod1
    HPA --> Pod2
    HPA --> Pod3
    Pod1 --> Model[(모델 스토리지<br/>PVC/NFS)]
    Pod2 --> Model
    Pod3 --> Model

vLLM: 프로덕션 표준

vLLM은 PagedAttention 기술로 GPU 메모리를 최대 효율로 사용합니다.

yaml
# vllm-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: vllm-server
spec:
  replicas: 2
  selector:
    matchLabels:
      app: vllm
  template:
    metadata:
      labels:
        app: vllm
    spec:
      containers:
      - name: vllm
        image: vllm/vllm-openai:latest
        args:
        - "--model"
        - "meta-llama/Llama-3.1-8B-Instruct"
        - "--tensor-parallel-size"
        - "2"              # GPU 2개 병렬 사용
        - "--max-model-len"
        - "8192"
        - "--gpu-memory-utilization"
        - "0.90"
        - "--enable-chunked-prefill"  # 긴 프롬프트 청크 처리
        ports:
        - containerPort: 8000
        resources:
          limits:
            nvidia.com/gpu: "2"
            memory: "80Gi"
          requests:
            nvidia.com/gpu: "2"
            memory: "60Gi"
        env:
        - name: HUGGING_FACE_HUB_TOKEN
          valueFrom:
            secretKeyRef:
              name: hf-token
              key: token
        volumeMounts:
        - name: model-cache
          mountPath: /root/.cache/huggingface
      volumes:
      - name: model-cache
        persistentVolumeClaim:
          claimName: model-cache-pvc
      tolerations:
      - key: "nvidia.com/gpu"
        operator: "Exists"
        effect: "NoSchedule"

vLLM OpenAI 호환 API 사용:

python
from openai import OpenAI

# vLLM은 OpenAI API와 호환
client = OpenAI(
    base_url="http://vllm-service:8000/v1",
    api_key="token-abc123"
)

response = client.chat.completions.create(
    model="meta-llama/Llama-3.1-8B-Instruct",
    messages=[{"role": "user", "content": "안녕하세요!"}],
    max_tokens=512,
    temperature=0.7,
    stream=True  # 스트리밍 지원
)

for chunk in response:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

HuggingFace TGI (Text Generation Inference)

TGI는 Continuous Batching으로 높은 처리량을 달성합니다.

yaml
# tgi-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tgi-server
spec:
  replicas: 1
  template:
    spec:
      containers:
      - name: tgi
        image: ghcr.io/huggingface/text-generation-inference:latest
        args:
        - "--model-id"
        - "mistralai/Mistral-7B-Instruct-v0.3"
        - "--num-shard"
        - "1"
        - "--max-concurrent-requests"
        - "128"
        - "--max-batch-prefill-tokens"
        - "4096"
        - "--quantize"
        - "bitsandbytes-nf4"  # 4비트 양자화
        ports:
        - containerPort: 80
        resources:
          limits:
            nvidia.com/gpu: "1"

자동 스케일링 (KEDA)

GPU 서빙은 일반 CPU 메트릭 기반 HPA보다 요청 큐 기반 스케일링이 효과적입니다.

yaml
# keda-scaledobject.yaml
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: vllm-scaler
spec:
  scaleTargetRef:
    name: vllm-server
  minReplicaCount: 1
  maxReplicaCount: 8
  cooldownPeriod: 300  # GPU 워밍업 고려
  triggers:
  - type: prometheus
    metadata:
      serverAddress: http://prometheus:9090
      metricName: vllm_requests_waiting
      threshold: "10"  # 대기 요청 10개 초과 시 스케일업
      query: sum(vllm:num_requests_waiting)

모델 가중치 사전 로드 (init container)

모델 다운로드 시간 단축을 위한 Init Container 패턴:

yaml
initContainers:
- name: model-downloader
  image: python:3.11-slim
  command:
  - python
  - -c
  - |
    from huggingface_hub import snapshot_download
    snapshot_download(
        repo_id="meta-llama/Llama-3.1-8B-Instruct",
        local_dir="/models/llama-3.1-8b",
        ignore_patterns=["*.msgpack", "*.h5"]
    )
  volumeMounts:
  - name: model-storage
    mountPath: /models
  env:
  - name: HUGGING_FACE_HUB_TOKEN
    valueFrom:
      secretKeyRef:
        name: hf-token
        key: token

프레임워크 비교

항목vLLMTGITriton
최적화 기술PagedAttentionContinuous Batching멀티모델 관리
최고 처리량★★★★★★★★★★★★★
설치 난이도쉬움쉬움복잡
OpenAI 호환✅ 완전 지원✅ 지원❌ gRPC
양자화AWQ, GPTQbitsandbytesTensorRT
멀티모델제한적제한적✅ 강점
추천 상황단일 모델 고처리량빠른 시작다중 모델 서빙

기술 심층 분석

PagedAttention (vLLM의 핵심)

기존 LLM 서빙은 KV 캐시를 연속 메모리에 할당해 단편화가 심합니다. PagedAttention은 OS의 가상 메모리처럼 비연속 메모리 페이지를 사용해 GPU 메모리 효율을 50-70% 향상시킵니다.

Tensor Parallelism vs Pipeline Parallelism

  • Tensor Parallelism: 레이어의 가중치를 GPU 간 분할. 레이턴시 낮음, 빠른 인터커넥트 필요 (NVLink)
  • Pipeline Parallelism: 모델 레이어를 순서대로 GPU에 배치. 인터커넥트 요구사항 낮음, 높은 처리량
  • 실전: 같은 노드 GPU는 Tensor, 다른 노드는 Pipeline 병렬화

양자화 선택 가이드

  • FP16/BF16: 기본값. 정확도 최우선
  • AWQ (4비트): vLLM과 최고 궁합. 속도 2배, 품질 손실 최소
  • GPTQ (4비트): CPU 양자화. 오프라인 배포 편리
  • NF4 (bitsandbytes): TGI와 궁합. 개발 환경 편리

Footnotes

이 글에서 다루는 AI

Meta: Llama 3.1 8B Instruct

Meta · 모델

Meta: Llama 3.3 70B Instruct

Meta · 모델

Mistral: Mistral 7B Instruct v0.1

Mistral AI · 모델

관련 글 더 보기

가이드2026년 4월 6일

AI 재귀적 자기 개선 완전 가이드: 특이점 논쟁부터 실전 활용까지

비교2026년 4월 6일

Cursor vs GitHub Copilot vs Windsurf: AI 코딩 어시스턴트 비교 (2026)

비교2026년 4월 6일

GPT-5.4 vs Claude Opus 4.6 vs Gemini 2.5 Pro: 2026 플래그십 AI 비교

비교2026년 4월 6일

Auto Research vs AutoML: LLM 자율 연구와 자동 ML의 핵심 차이

ai.zip 커뮤니티에 참여하세요

AI 소식·유용한 링크 공유, 새 모델/서비스 토론까지 -- Discord에서 함께해요.

Discord 참여하기

이전글

Claude Code로 영상 자동화 만들기: 유튜브 제작 파이프라인 구축 가이드

다음글

AI 동영상 생성 완전 가이드: Sora, Runway, Kling 비교 2025

댓글

0개

댓글을 작성하려면

로그인

해주세요

글 정보

가이드
2026년 4월 5일4분

관련 글

AI 재귀적 자기 개선 완전 가이드: 특이점 논쟁부터 실전 활용까지

가이드

Cursor vs GitHub Copilot vs Windsurf: AI 코딩 어시스턴트 비교 (2026)

비교

GPT-5.4 vs Claude Opus 4.6 vs Gemini 2.5 Pro: 2026 플래그십 AI 비교

DeepSeek: DeepSeek V3

DeepSeek · 모델

Foundation Model API Strategy

방법론

Fine-tuning

Transfer Learning

비교

Auto Research vs AutoML: LLM 자율 연구와 자동 ML의 핵심 차이

비교

NotebookLM + Genspark로 PPT 10분 만들기: 직장인 발표자료 완전 가이드

튜토리얼

관련 모델

Meta: Llama 3.1 8B Instruct

Meta

Meta: Llama 3.3 70B Instruct

Meta

Mistral: Mistral 7B Instruct v0.1

Mistral AI

관련 방법론

Foundation Model API Strategy

Fine-tuning

Transfer Learning