vLLM DeepSeek V4 지원: 효율적인 장기 컨텍스트 어텐션

vLLM은 DeepSeek V4 모델군을 지원한다고 발표했으며, 여기에는 DeepSeek-V4-Pro(1.6조 파라미터)와 DeepSeek-V4-Flash(2850억 파라미터)가 포함됩니다. 이 모델들은 100만 토큰까지 확장하면서 메모리 오버헤드와 연산 비용을 크게 줄이는 특수한 장기 컨텍스트 어텐션 메커니즘을 활용합니다.

DeepSeek V4 어텐션 아키텍처

DeepSeek V4는 KV 캐시 메모리의 선형 증가와 장기 컨텍스트 어텐션의 높은 연산 비용을 네 가지 주요 아키텍처 혁신을 통해 해결합니다:

  • Shared Key and Value Vectors: 키와 값 벡터를 공유함으로써 모델은 2배 메모리 절감을 달성합니다. 정확성을 유지하기 위해 inverse RoPE 연산이 어텐션 출력에 적용되어 변환 불변성을 보장합니다.
  • KV Cache Compression: 모델은 여러 토큰에 걸쳐 KV 캐시를 압축하여 두 가지 방법을 통해 4배에서 128배까지 메모리를 절감합니다:
    • c4a: KV 캐시를 약 1/4로 압축합니다; 하나의 압축 토큰은 스트라이드 4로 8개의 비압축 토큰의 가중합을 나타냅니다.
    • c128a: KV 캐시를 약 1/128로 압축합니다; 하나의 압축 토큰은 스트라이드 128로 128개의 비압축 토큰의 가중합을 나타냅니다.
  • DeepSeek Sparse Attention (DSA): 압축 후에도 계산량을 제한하기 위해 (예: c4a를 사용한 1M 시퀀스에서 250k 토큰) DSA는 상위 k개의 압축 토큰에만 어텐션을 수행합니다.
  • Short Sliding Window: 크기 128의 슬라이딩 윈도우가 비압축 토큰의 로컬 정보를 위해 사용되며, 쿼리 토큰이 압축 경계에 도달하기 전에 로컬 컨텍스트에 접근할 수 있게 합니다.

이러한 최적화는 메모리 효율성을 크게 향상시킵니다. DeepSeek V4에서 1M 컨텍스트 시퀀스는 (bf16 사용) 시퀀스당 KV 캐시가 9.62 GiB에 불과하며, 이는 61층 DeepSeek V3.2 스타일 스택에 필요한 83.9 GiB보다 약 8.7배 작습니다. 인덱서 캐시에 fp4를, 어텐션 캐시에 fp8을 사용하면 이 크기가 추가로 약 2배 감소합니다.

vLLM 구현 및 최적화

KV 캐시 메모리 관리

vLLM은 KV 캐시를 압축하고 효율적으로 유지하기 위해 세 가지 전략을 사용합니다:

  1. Single Logical Block Size: vLLM은 모든 압축 레이어에 대해 논리 블록을 256 네이티브 토큰 위치로 고정합니다. 이를 통해 할당자는 레이어가 c4a(블록당 64개의 압축 엔트리)이든 c128a(블록당 2개의 압축 엔트리)든 관계없이 슬롯 매핑 및 프리픽스 히트 감지를 위한 일관된 단위를 사용할 수 있습니다.
  2. Compressor State as Sliding Window: 롤링 잔차( C4는 8 토큰, C128은 128 토큰)를 위한 복잡한 사이드 버퍼를 피하기 위해 vLLM은 압축기 상태를 슬라이딩 윈도우 KV로 취급합니다. 이를 통해 시스템은 프리픽스 캐싱 및 분산 프리필에 대한 기존 추상화를 재사용할 수 있습니다.
  3. Unified Page Sizes: 블록 크기와 압축 비율을 신중히 선택함으로써 vLLM은 5단계 캐시 스택을 세 개의 페이지 크기 버킷으로 축소합니다. 이는 풀 간 단편화를 없애고 런타임 재분할 필요성을 제거합니다.

GPU 연산 포화

GPU 활용도를 극대화하고 HBM 왕복을 줄이기 위해 vLLM은 여러 커널 결합과 멀티 스트림 파티셔닝을 구현했습니다:

  • Kernel Fusions:
    • Compressor + RMSNorm + RoPE + cache insertion: 요소별 단계를 하나의 커널로 결합하여 1.4‑3배 속도 향상을 제공합니다.
    • Inverse RoPE + fp8 quant: 이 연산들을 결합해 HBM 왕복을 방지하고 2‑3배 속도 향상을 얻습니다.
    • Fused Q norm + KV RoPE + K insert: 쿼리와 비압축 SWA 키 작업을 수평으로 하나의 커널에 결합하여 10‑20배 속도 향상을 제공합니다.
  • Multi-stream Partitioning: vLLM은 CUDA 스트림 간에 독립적인 작업을 겹쳐 실행합니다. c4a 레이어의 경우, 인덱서 파이프라인이 별도 스트림에서 메인 KV 압축 및 SWA 토큰 삽입과 병렬로 실행되어 낮은 배치 크기에서 엔드투엔드 지연 시간을 5‑6% 감소시킵니다.

배포 및 하드웨어 지원

DeepSeek V4는 NVIDIA Hopper 및 Blackwell 아키텍처를 지원합니다. vLLM은 단일 노드 배포를 위한 최적화된 Docker 구성을 제공합니다:

  • DeepSeek-V4-Pro: 8xB200 또는 8xB300 GPU에 최적화되었습니다.
  • DeepSeek-V4-Flash: 4xB200 또는 4xB300 GPU에 최적화되었습니다.

두 구성 모두 fp8 KV 캐시, 블록 크기 256, 그리고 deepseek_v4 토크나이저와 추론 파서를 사용합니다. DeepGEMM MegaMoE 커널 및 페이지드 프리필 커널과 같은 추가 최적화가 현재 개발 중입니다.

Sources