LLM WikiAccess-protected knowledge portal

WIKI

LMDeploy 0.14: TurboMind·PyTorch 이중 엔진과 FP8 KV 캐시·Responses 엔드포인트로 LLM 서빙 운영 경계를 다시 그은 방법

왜 지금 봐야 하나 LLM 서빙 스택을 운영하다 보면 vLLM 하나로 모든 요구사항을 충족하기 어렵다는 상황을 만난다. VLM Vision Language Model 지원이 부족하거나, InternLM·Qwen 계열 모델이 특정 프레임워크에서 정확하게 동작하지 않거나, Anthropic 호환 API가 필요하거나, 경량 GPU T4, A10G 에서 메모리 사용량을 최대한 줄여야 하는 경우가 그렇다. LMDeploy 는 상하이 A

경로human/study/content/ai-frontier/66-lmdeploy-0-14-turbomind-pytorch-fp8-kv-responses.md
카테고리Study
태그#ai-review #fp8 #infra #lmdeploy #pytorch #responses #study #turbomind

왜 지금 봐야 하나

LLM 서빙 스택을 운영하다 보면 vLLM 하나로 모든 요구사항을 충족하기 어렵다는 상황을 만난다. VLM(Vision-Language Model) 지원이 부족하거나, InternLM·Qwen 계열 모델이 특정 프레임워크에서 정확하게 동작하지 않거나, Anthropic 호환 API가 필요하거나, 경량 GPU(T4, A10G)에서 메모리 사용량을 최대한 줄여야 하는 경우가 그렇다.

LMDeploy는 상하이 AI Lab(Shanghai AI Laboratory)의 InternLM 팀이 개발한 오픈소스 LLM 추론 툴킷이다. TurboMind와 PyTorch 두 가지 백엔드를 동시에 제공하며, vLLM과 다른 설계 철학을 갖는다. 2026년 6월 24일 릴리스된 v0.14.0은 FP8 KV 캐시 양자화, Qwen3 Omni 멀티모달 지원, OpenAI Responses 호환 엔드포인트를 핵심으로 추가했다.

vLLM·SGLang과의 비교가 아니라 언제 LMDeploy를 선택해야 하는지, 그리고 운영자 관점에서 v0.14.0의 변화가 무엇인지를 다룬다.


배경: LMDeploy의 설계 목표

LMDeploy가 vLLM과 나란히 자리잡은 이유는 두 가지 기술적 선택에서 비롯된다.

첫째, TurboMind 전용 CUDA 커널. vLLM이 FlashInfer나 CUTLASS 기반 커널을 채택한 반면, LMDeploy는 자체 C++ TurboMind 커널을 유지한다. TurboMind는 W4A16(4-bit 가중치·16-bit 활성)과 W8A8(8-bit 가중치·8-bit 활성) 양자화 경로를 커널 레벨에서 직접 구현해 중간 변환 없이 양자화 추론이 가능하다.

둘째, 멀티모달 퍼스트. InternVL 시리즈와 Qwen-VL 계열이 LMDeploy에서 먼저 지원된다. OpenAI 호환 멀티모달 API를 통해 이미지·오디오·비디오 입력을 단일 서버로 처리한다.

v0.14.0 기준, LMDeploy는 세 가지 배포 형태를 제공한다.

# LLM 채팅 (TurboMind)
lmdeploy serve api_server internlm/internlm3-8b-instruct

# VLM (이미지+텍스트)
lmdeploy serve api_server Qwen/Qwen3-VL-7B-Instruct

# 멀티모달 오디오/비디오 (Qwen3 Omni)
lmdeploy serve api_server Qwen/Qwen3-Omni-7B

이중 엔진 아키텍처

클라이언트
OpenAI SDK
/chat/completions
Anthropic SDK
/v1/messages
Responses API
/v1/responses
LMDeploy API Server
요청 라우터
스트리밍·배치
Continuous Batching
KV 캐시 스케줄러
헬스 모니터
/get_ppl 엔드포인트
TurboMind 엔진 (기본)
자체 CUDA 커널
W4A16 / W8A8 / FP8
Paged KV 캐시
MXFP4 (H800+)
GQA / MoE 지원
PyTorch 엔진 (호환성 우선)
HF Transformers 호환
더 넓은 모델 지원
접두사 캐싱 리팩터
CUDA 그래프 배치 설정
GPU
A100 / H100
B200
T4 / A10G
(경량 배포)
LMDeploy 0.14 이중 엔진 아키텍처

TurboMind 엔진

LMDeploy의 핵심 엔진이다. C++로 작성된 커스텀 CUDA 커널을 사용한다. 장점은 양자화된 모델에서 높은 처리량이다. 단점은 지원 모델 범위가 PyTorch보다 좁다.

TurboMind가 빛나는 순간은 W4A16 양자화 모델이다. AWQ(Activation-aware Weight Quantization)로 양자화된 모델을 FP16 대비 약 2배 처리량으로 서빙할 수 있다. 이는 TurboMind가 역양자화 연산(dequantization)을 어텐션 커널과 fuse해 메모리 이동을 줄이기 때문이다.

PyTorch 엔진

HuggingFace Transformers 기반으로 동작한다. 새 모델 아키텍처가 등장했을 때 TurboMind보다 먼저 지원되는 경우가 많다. 성능은 TurboMind보다 낮지만 개발·디버깅 주기가 빠르다.

v0.14.0에서 PyTorch 엔진의 접두사 캐싱(prefix caching) 구현이 수정됐다. 접두사 캐싱은 시스템 프롬프트처럼 반복되는 토큰의 KV 캐시를 재사용해 첫 응답 지연(TTFT)을 줄이는 기법이다.

엔진 선택 기준

상황권장 엔진
고처리량, InternLM·Qwen3 계열TurboMind
AWQ/GPTQ 양자화 모델 서빙TurboMind
신규 또는 커스텀 모델 아키텍처PyTorch
빠른 프로토타이핑·디버깅PyTorch
Qwen3 Omni (오디오·비디오)TurboMind

v0.14.0 핵심 변화

FP8 KV 캐시 양자화

v0.14.0의 가장 큰 추가는 FP8 KV 캐시 양자화다. KV 캐시를 FP8(E4M3 포맷)으로 저장해 메모리 사용량을 줄인다.

기존에도 INT4/INT8 KV 양자화가 있었다. FP8은 INT보다 정밀도 손실이 적으면서 FP16보다 메모리를 절반으로 쓴다는 이점이 있다.

# FP8 KV 캐시 활성화 예시
lmdeploy serve api_server internlm3-8b-instruct \
  --quant-policy 8 \         # KV 캐시 양자화 비트
  --kv-cache-dtype fp8       # FP8 포맷 지정

주의: FP8 KV 캐시는 Hopper(H100) 이상 GPU에서 효과가 크다. Ampere(A100)에서는 FP8 연산 지원이 제한되어 소프트웨어 경로로 처리된다.

KV 캐시 유형정밀도 손실메모리 절감GPU 요건
FP16 (기본)없음0%모든 GPU
INT850%모든 GPU
INT475%모든 GPU
FP8 (v0.14 신규)최소50%H100 권장

OpenAI Responses API 엔드포인트

OpenAI의 Responses API(/v1/responses)는 기존 Chat Completions API와 달리 대화 상태를 서버에 보관한다. 클라이언트가 매 요청마다 전체 대화 이력을 전송할 필요가 없어 긴 에이전트 루프에서 토큰 비용을 줄인다.

v0.14.0에서 LMDeploy API 서버가 이 엔드포인트를 지원한다. OpenAI에서 자체 서버로 마이그레이션할 때 클라이언트 코드 수정 없이 호스트만 바꾸는 경로가 열린다.

# OpenAI SDK로 LMDeploy Responses API 사용
from openai import OpenAI

client = OpenAI(base_url="http://localhost:23333/v1", api_key="")

response = client.responses.create(
    model="internlm3-8b-instruct",
    input=[{"role": "user", "content": "안녕하세요"}]
)
print(response.output_text)

Anthropic 호환 엔드포인트 (v0.13 도입)

v0.13.0에서 추가된 /v1/messages 엔드포인트는 Anthropic SDK와 호환된다. 텍스트 출력, 추론 블록(thinking blocks), 도구 호출 출력을 모두 지원한다.

import anthropic

client = anthropic.Anthropic(
    base_url="http://localhost:23333",
    api_key=""
)

message = client.messages.create(
    model="internlm3-8b-instruct",
    max_tokens=512,
    messages=[{"role": "user", "content": "안녕하세요"}]
)
print(message.content[0].text)

/get_ppl 엔드포인트

모델 평가 시 자주 쓰이는 Perplexity(혼잡도)를 직접 계산하는 엔드포인트다. 텍스트 품질 측정, 파인튜닝 모델 평가, 프롬프트 비교 시 유용하다.

curl -X POST http://localhost:23333/get_ppl \
  -H "Content-Type: application/json" \
  -d '{
    "model": "internlm3-8b-instruct",
    "input": "한국어 텍스트의 복잡도를 측정합니다."
  }'

양자화 옵션 전체 지형

LMDeploy의 양자화 지원은 다른 서빙 프레임워크와 비교해 가장 넓은 편이다.

가중치 양자화

방식엔진비트 폭특성
AWQTurboMindW4A16활성화 인식, 정밀도 손실 최소
GPTQTurboMindW4A16Hessian 기반, 범용
W8A8TurboMind8bit속도·정밀도 균형
BitsAndBytesPyTorch4/8bitHF 생태계 호환

KV 캐시 양자화

# lmdeploy convert로 AWQ 양자화 모델 변환
lmdeploy lite auto_awq internlm/internlm3-8b-instruct \
  --work-dir ./internlm3-8b-instruct-w4a16

# 변환된 모델 서빙
lmdeploy serve api_server ./internlm3-8b-instruct-w4a16 \
  --model-format awq \
  --kv-cache-dtype int8

Qwen3 Omni 멀티모달 지원

v0.14.0은 Qwen3 Omni (텍스트·이미지·오디오·비디오 동시 입력) 모델을 TurboMind 백엔드에서 지원한다.

LMDeploy의 멀티모달 서빙은 단일 API 서버에서 다양한 모달리티를 처리한다. 이미지 인코더, 오디오 인코더, 비디오 샘플러를 별도 서비스로 분리하지 않고 통합 서빙 인스턴스로 동작한다.

# Qwen3 Omni 오디오+텍스트 서빙
lmdeploy serve api_server Qwen/Qwen3-Omni-7B \
  --tp 2                   # 텐서 병렬
  --session-len 8192       # 최대 세션 길이
  --model-format hf

현재 제약: Qwen3 Omni의 음성 출력(TTS) 기능은 아직 LMDeploy에서 완전히 지원되지 않는다. 텍스트 출력 경로만 안정적이며 음성 출력은 Open question 상태다.


운영 배포 가이드

엔진 선택 및 확인

# TurboMind 사용 여부 로그에서 확인
lmdeploy serve api_server internlm3-8b-instruct --log-level INFO
# 출력: "Using TurboMind engine" 또는 "Using PyTorch engine"

# 특정 엔진 강제 지정
lmdeploy serve api_server internlm3-8b-instruct \
  --backend turbomind   # 또는 pytorch

Kubernetes 배포

LMDeploy는 공식 Docker 이미지를 제공한다. CUDA 12.8 이상을 권장한다(v0.13.0부터 기본 PyPI 휠이 CUDA 12.8 기반).

containers:
  - name: lmdeploy
    image: openmmlab/lmdeploy:v0.14.0-cu121
    command:
      - lmdeploy
      - serve
      - api_server
      - /models/internlm3-8b-instruct
      - --kv-cache-dtype
      - fp8
    resources:
      limits:
        nvidia.com/gpu: "1"

헬스체크

v0.14.0에서 헬스 모니터링 시스템이 강화됐다. /health 엔드포인트가 엔진 상태를 포함해 응답한다.

curl http://localhost:23333/health
# {"status": "ok", "engine": "turbomind", "gpu_memory_used": "14.2 GB"}

v0.14.0 운영 체크리스트


한 문장으로

LMDeploy 0.14.0은 TurboMind 자체 CUDA 커널 위에 FP8 KV 캐시·OpenAI Responses·Anthropic 호환 엔드포인트를 올려, InternLM·Qwen 계열 모델과 멀티모달 VLM을 단일 서버로 서빙하는 vLLM 대안이다.

References