NixlConnector 호환성 매트릭스

NixlConnector 호환성 매트릭스 (NixlConnector Compatibility Matrix)

이 페이지는 NixlConnector를 사용한 분리형 프리필링(disaggregated prefilling) 의 기능 호환성을 문서화합니다. 일반 사용법은 NixlConnector 사용 가이드 를, 분리형 프리필링 개요는 Disaggregated Prefilling 을 참고하세요.

참고: 이 페이지는 코드베이스의 현재 상태를 반영하며 기능이 발전함에 따라 변경될 수 있습니다. 🟠 또는 ❌ 항목은 추적 이슈로 연결될 수 있습니다. 향후 기능 개발은 NIXL 커넥터 로드맵 을 참고하세요.

범례(Legend): ✅ = 완전 지원, 🟠 = 부분 지원(각주 참고), ❌ = 지원 안 함, ❔ = 알 수 없음 / 아직 검증 안 됨, 🚧 = 진행 중

출처: 문서

본문

보편 지원 기능 (Universally supported features)

NixlConnector PD 분리 서빙을 사용할 때 다음 기능은 모든 모델 아키텍처에서 동작합니다.

Chunked Prefill | APC (Prefix Caching) | Data Parallel | CUDA graph | Logprobs | Prompt Logprobs | Prompt Embeds | 여러 NIXL 백엔드 (UCX, GDS, LIBFABRIC 등)

모델 아키텍처 × 기능 (Model Architecture x Capability)

모델 유형 기본 PD Spec Decode Hetero TP 크로스 레이어 블록 SWA 호스트 버퍼 이기종 블록 크기
Dense Transformers ✅¹ ✅² 🟠³
MLA (예: DeepSeek-V2/V3) ✅¹ 🟠⁴ ✅² 🟠³
Sparse MLA (예: DeepSeek-V3.2) ✅¹ 🟠⁴ ✅² 🟠³
Hybrid SSM / Mamba 🚧⁵ ❌⁶
MoE ✅¹ ✅² 🟠³
Multimodal
Encoder-Decoder
  1. P와 D 인스턴스는 호환 가능한 speculation 구성을 사용해야 합니다. 무엇이 일치해야 하고 무엇이 달라도 되는지는 아래 구성 참고 를 참고하세요.
  2. 크로스 레이어 연속성은 BLHNC 레이아웃(VLLM_KV_CACHE_LAYOUT=BLHNC 로 설정)을 사용해 달성됩니다.
  3. HMA가 필요하지 않은 경우(즉 비-하이브리드 모델)에만 지원됩니다. 블록 ID가 자동으로 리매핑됩니다. P 블록 크기 < D 블록 크기만 지원됩니다.
  4. MLA KV 캐시는 TP 워커 전체에 복제되므로 이기종 TP가 동작하지만 헤드 분할은 없습니다. P TP > D TP일 때 단일 읽기만 실행됩니다(중복 랭크는 건너뜀). D TP > P TP도 동작합니다.
  5. Hybrid SSM (Mamba) 모델은 균일 TP(P TP == D TP)를 요구합니다. Mamba 레이어에 대한 이기종 TP는 아직 지원되지 않습니다.
  6. HMA(하이브리드 모델에 필요)는 서로 다른 원격 블록 크기를 지원하지 않습니다.

구성 참고 (Configuration Notes)

P와 D 사이에 일치해야 하는 것

기본적으로 핸드셰이크 중 호환성 해시(compatibility hash) 가 검사됩니다. P와 D 인스턴스는 다음에 동의해야 합니다.

  • vLLM 버전과 NIXL 커넥터 버전
  • 모델(아키텍처, dtype, KV 헤드 수, 헤드 크기, hidden 레이어 수)
  • Attention 백엔드
  • KV 캐시 dtype(cache_dtype)
  • EAGLE/MTP 스타일 스펙큘레이티브 방식과 draft 모델 구성
  • NIXL 전송 모드(push vs pull) — push(WRITE) 커넥터와 pull(READ) 커넥터는 호환되지 않는 전송 프로토콜을 사용하므로 절대 함께 연결해서는 안 됩니다.

경고: 해시 검사를 --kv-transfer-config '{"kv_connector_extra_config": {"enforce_handshake_compat": false}}' 로 비활성화하는 것은 위험을 감수해야 합니다.

P와 D 사이에 안전하게 달라도 되는 것

  • tensor-parallel-size (이기종 TP, 위 모델 제한 조건 적용)
  • block-size (이기종 블록 크기, 위 제한 조건 적용)
  • KV 캐시 블록 수(각 인스턴스의 사용 가능한 메모리에 따라 결정)
  • num_speculative_tokens (prefill과 decode가 서로 다른 draft 깊이를 사용할 수 있음)
  • Draft 모델의 attention_backend (각 인스턴스가 독립적으로 자동 선택하며, 결과 KV 블록 레이아웃은 호환성 해시가 아니라 핸드셰이크 시점에 검증됩니다)

KV 캐시 레이아웃

NixlConnector는 기본적으로 최적의 전송 성능을 위해 LBHNC(head-major, 이전 HND) 레이아웃을 사용합니다(비-MLA 모델).

LBNHC(token-major, 이전 NHD) 레이아웃은 지원되지만 이기종 TP 헤드 분할을 허용하지 않습니다.

실험적 LBHNCLBNHC permute는 --kv-transfer-config '{"enable_permute_local_kv": true}' 로 활성화할 수 있어요. HMA에서는 지원되지 않습니다.

파이프라인 병렬 (Pipeline parallelism)

기본(pull) NixlConnector는 하이브리드 KV 캐시(HMA) 레이아웃과 함께 pipeline-parallel-size > 1 을 지원하지 않습니다. region 인덱스가 prefill/decode 레이어 분할을 가로질러 안정적인 아이덴티티가 아니므로 커넥터가 시작 시 오류를 일으킵니다. 하이브리드 KV 캐시와 함께 파이프라인 병렬을 사용하려면 push 커넥터(NixlPushConnector)를 사용하세요. 이 커넥터는 레이어 이름(member) 아이덴티티로 전송을 라우팅하므로 PP 분할 프리필러가 PP=1 decoder에 쓸 수 있습니다. NIXL push-mode KV 전송 을 참고하세요.

현재 push PP + HMA 제한 사항:

  • 오직 prefiller(프로듀서)만 PP 분할될 수 있으며, decode 쪽 PP는 지원되지 않습니다.
  • Hybrid SSM/Mamba 레이아웃은 PP에서 지원되지 않습니다.
  • HMA는 P와 D에서 같은 블록 크기를 요구합니다.
  • Attention-HMA 멤버 라우팅은 decode TP가 prefill TP 이하이기를 요구합니다.

양자화된 KV 캐시 (Quantized KV cache)

양자화된 KV 캐시(예: FP8)는 P와 D 인스턴스 모두 같은 cache_dtype 을 사용해야 합니다. cache dtype이 일치하지 않으면 핸드셰이크 중 호환성 해시 검사가 실패합니다.

  • 정적 양자화(스케일을 체크포인트에서 로드): ✅ 지원됨. 각 인스턴스가 모델 체크포인트에서 스케일을 독립적으로 로드합니다.
  • 동적 양자화(스케일을 런타임에 계산): ❌ 지원 안 됨. per-block 스케일이 KV 캐시 데이터와 함께 전송되지 않습니다.
  • Packed-layout 스케일(가중치에 인라인으로 저장): ✅ 지원됨. 스케일이 KV 캐시 블록과 함께 전송됩니다.

더 알아보기 (Learn more)