대규모 DeepSeek-V4.1-Flash 서빙: vLLM, DeepInfer와 대등한 성능, GB300 NVL72까지 확장
TL;DR: NVIDIA GB300 NVL72 랙 1개에서 P/D 분리 및 Wide-EP를 사용하는 vLLM은 SemiAnalysis AgentX 벤치마크에서 GPU당 초당 954K 토큰, 사용자당 P90 196 토큰/초로 DeepSeek-V4.1-Flash를 서빙합니다. 이는 vLLM의 이전 단일 노드 결과보다 7.9배 빠른 수치이며, 디코드 처리량은 DeepSeek의 자체 추론 엔진인 DeepInfer와 6% 이내의 차이를 보입니다. 이 결과는 범용 서빙 엔진이 모델 특화 엔진과 대등한 성능을 내면서도 전체 NVL72 랙에서 온라인 확장이 가능함을 보여주기 때문에 중요합니다.
vLLM이 발표한 내용
vLLM은 랙 규모에서 DeepSeek-V4.1-Flash를 서빙하는 성능 연구를 발표했습니다. 이 게시물은 동일 모델에 대한 vLLM의 이전 단일 노드 작업의 후속 작업으로, 확장을 가능하게 한 엔지니어링을 설명합니다.
핵심 결과: NVIDIA GB300 NVL72 랙 1개에서 P/D(프리필/디코드) 분리 및 Wide-EP를 사용하는 vLLM은 사용자당 P90 196 토큰/초, GPU당 초당 954K 토큰으로 DeepSeek-V4.1-Flash를 서빙합니다. 이는 vLLM이 해당 모델에 대한 첫 게시물에서 발표한 집계 단일 노드 결과보다 7.9배 빠른 수치입니다. 비용은 DeepSeek의 비수기 가격 기준으로 GPU 시간당 38.96달러입니다. 처리량에는 캐시된 입력, 캐시되지 않은 입력 및 출력 토큰이 모두 포함됩니다.
특수 디코드 경로는 단일 사용자에 대해 초당 826토큰에 도달합니다.
DeepSeek의 자체 엔진인 DeepInfer와 비교하여 vLLM의 디코드 처리량은 배치 크기 8~256에서 6% 이내이며, 프리필은 DeepInfer의 공개 곡선을 추적합니다.
게시물은 자체 요약으로 시작합니다.
- 범용 엔진이 모델 특화 엔진과 대등할 수 있음
- 최적화 전에 모델을 이해하세요
- 프리필에는 작은 DEP 인스턴스가 가장 적합함
- Wide-EP 디코드는 EPLB와 함께 잘 확장됨
- NVL72 규모에서는 CPU 오버헤드가 중요해짐
- 특수 디코드 경로는 낮은 지연 시간을 가능하게 함
주요 수치 한눈에 보기
| 지표 | 결과 |
|---|---|
| SemiAnalysis AgentX, GB300 NVL72 처리량 | GPU당 초당 954K 토큰 |
| 사용자당 P90 지연 시간 | 사용자당 초당 196 토큰 |
| vLLM의 이전 집계 단일 노드 결과 대비 향상 | 7.9배 |
| 비용 | DeepSeek 비수기 가격 기준 GPU 시간당 38.96달러 |
| 특수 디코드 경로의 단일 사용자 지연 시간 | 초당 826토큰 |
| DeepInfer 대비 디코드 처리량 (배치 크기 8~256) | 6% 이내 |
vLLM과 DeepInfer 비교
DeepInfer는 DeepSeek-V4.1-Flash용 DeepSeek의 자체 추론 엔진입니다. vLLM 게시물과 같은 주에 오프라인 엔진으로 출시되었으며, 프리필 및 디코드 곡선이 공개되어 있습니다. vLLM은 이를 이 모델의 가장 관련성 높은 참조 지점으로 간주하고 자체 최적화를 제시하기 전에 비교합니다.
디코드 비교
DeepSeek의 디코드 구성(131K 컨텍스트, nextn=3)에서 GB200의 vLLM은 배치 크기 8~256에서 DeepInfer의 공개 결과와 6% 이내의 처리량을 달성합니다. vLLM은 DeepInfer 값을 README의 차트에서 읽었습니다.
프리필 비교
vLLM은 프리필 비교가 동등한 엔진 벤치마크가 아니라고 명시합니다. DeepInfer의 공개 프리필 곡선은 차트에 명시되지 않은 하드웨어에서 32개의 중복 전문가와 140토큰 제한 재생을 사용하는 EP4DP4를 사용하며, vLLM은 차트에서 값을 읽었습니다. vLLM의 자체 실행은 GB300에서 중복 전문가 없이 DEP2를 사용하고 128토큰 재생 및 자체 프롬프트를 사용합니다.
설정이 다르기 때문에 vLLM은 두 곡선 사이의 차이를 엔진 간 속도 향상으로 해석하지 않는다고 밝힙니다. 비교가 보여주는 것은 vLLM의 DEP2 프리필이 DeepSeek가 공개한 범위에서 DeepSeek의 자체 엔진을 추적한다는 것입니다.
두 엔진이 비슷한 이유
게시물은 유사성을 양방향의 공유 혈통으로 설명합니다. DeepInfer는 원래 vLLM을 기반으로 구축되었으며, vLLM은 MegaAttn, MegaMoE 및 Mega-mHC를 포함한 DeepSeek 라이브러리의 커널을 지속적으로 통합하고 그 주변의 나머지 스택을 광범위하게 최적화했습니다.
vLLM이 그리는 차이점: DeepInfer는 오프라인 모드에서 단일 모델을 대상으로 하는 반면, 동일한 vLLM 빌드는 전체 NVL72 랙에서 P/D 분리 및 Wide-EP를 사용하여 해당 모델을 온라인으로도 서빙합니다.
최적화 전략을 형성한 모델 특성
튜닝 전에 vLLM은 DeepSeek-V4.1-Flash의 아키텍처 속성을 정량화했습니다. 세 가지 발견이 나머지 작업을 주도했습니다.
- 작은 KV 캐시 공간. DeepSeek-V4.1-Flash 기술 보고서에 따르면 레이어 간 KV 공유와 FP4 압축 덕분에 전역 KV 캐시에 대해 토큰당 890바이트에 불과합니다.
- 경량 어텐션. 레이어 2, 8, 14는 전체 컨텍스트 인덱싱을 위해 2배 압축을 사용합니다. 제한 재생을 사용하면 레이어 20은 모든 토큰에 대한 전역 KV를 쓰지만 인덱싱과 어텐션은 마지막 128개 토큰에 대해서만 실행합니다. 레이어 21~39는 해당 토큰만 처리합니다.
- 긴 컨텍스트에서도 디코드는 MoE에 바인딩됩니다. 128K 컨텍스트에서 DEP4 디코딩, 랭크당 64개 요청을 사용하면 MoE는 대상 단계의 62%를 차지하는 반면 어텐션과 인덱서는 함께 13%만 차지합니다.
vLLM은 또한 GB300에서 DEP32, 랭크당 16개 요청, 요청당 6개 토큰(1개 토큰 + 5개 DSpark 드래프트 토큰), 모든 요청이 동일한 컨텍스트 길이로 대상 모델 정방향 시간을 측정했습니다. 긴 컨텍스트는 디코드 지연 시간을 거의 움직이지 않습니다. 128K에서 855K 토큰(컨텍스트의 6.7배)으로 증가하면 대상 모델 디코드 지연 시간에 0.6ms(+7%)만 추가됩니다.
| 요청당 컨텍스트 | 64K | 128K | 256K | 512K | 855K |
|---|---|---|---|---|---|
| 대상 정방향 (ms) | 8.86 | 8.93 | 9.03 | 9.25 | 9.53 |
| 128K 대비 | -0.8% | – | +1.1% | +3.6% | +6.7% |
이러한 특성은 vLLM의 프레임에서 다섯 가지 전략 결정으로 이어졌습니다.
- 프리필은 작은 DEP 크기로 실행해야 합니다. B300 또는 GB300의 DEP2 인스턴스라도 많은 동시 세션에 대한 모델 가중치와 KV 캐시를 모두 보유할 수 있으며, 더 작은 월드 크기는 DP/EP 로드 밸런싱을 크게 단순화합니다.
- KV 용량이 배치 크기를 제한하는 경우는 거의 없습니다. KV 캐시는 HBM에 여유롭게 맞으므로 각 작업은 KV 용량을 우회하는 대신 컴퓨팅 또는 메모리 대역폭 한계에 가깝게 밀어낼 수 있습니다. 또한 선점이나 KV 캐시 압력 없이 스윕을 일관되고 노이즈가 적게 유지합니다.
- Wide-EP는 디코드에 효과적입니다. MegaMoE 디코드는 가중치 읽기에 바인딩되며 Wide-EP는 이 지배적인 MoE 비용을 직접 줄입니다.
- 디코드 DP 로드 밸런싱은 더 간단합니다. 이 모델의 디코드 단계 시간은 컨텍스트 길이에 따라 거의 변하지 않으므로 DP 로드 밸런싱은 랭크당 요청 수에 따른 최소 로드로 단순화할 수 있습니다.
- 합성 워크로드는 디코드에 대해 여전히 대표성을 유지합니다. 평균 입력 및 출력 길이를 사용하면 전체 에이전틱 트레이스를 재생하지 않고도 좋은 성능 추정치를 얻을 수 있습니다.
프리필: DEP2가 가장 효과적이며, 세 가지 병목 현상 수정
프리필에는 작은 DEP 인스턴스가 승리
동시성 256의 AgentX 프리필 전용 실행에서 DEP4는 DEP2의 GPU당 처리량의 83%만 제공했습니다(53.3K 대 64.4K 토큰/초). 접두사 캐싱을 끈 미러 및 지연 재생은 DP 불균형이 원인임을 지적합니다. 랭크가 동기화되지 않으면 DEP4는 처리량의 13.6%를 잃습니다. vLLM은 이러한 이유로 DEP2를 간단한 기본값이라고 부릅니다.
| 인스턴스당 프리필 처리량 (토큰/초) | 미러 (균형) | 지연 (불균형) | 손실 |
|---|---|---|---|
| DEP2 | 138.7K | 130.5K | 5.9% |
| DEP4 | 267.6K | 231.1K | 13.6% |
vLLM은 불균형 비용이 이전 빌드에서 측정되었으며 커널보다는 DEP 크기의 속성이라고 언급합니다.
깨끗한 트레이스가 컨텍스트 길이 병목 현상을 노출
GB300 GPU 2개에서 8K 토큰 프리필은 이전 컨텍스트 없이 87.9ms가 걸리지만 512K 캐시된 컨텍스트에서는 189.4ms가 걸립니다. vLLM은 해당 트레이스 뒤에 있는 세 가지 추가 병목 현상을 해결했습니다.
- SWA 제한 재생을 레이어 20으로 확장 (PR #59894): 32K 새 토큰에서 +19.9%. SWA 제한 재생은 이미 레이어 21~39를 마지막 128개 토큰으로 제한했습니다. 이전에는 레이어 20이 여전히 모든 새 토큰에 대해 인덱서 계산을 수행했습니다. 이제 모든 새 토큰에 대한 KV를 쓰지만 나머지 계산은 128토큰 재생 배치에서만 실행합니다. 이득은 4K에서 10.1%에서 64K에서 23.1%로 증가합니다.
- 공유 Engram 호스트 테이블용 2MB 페이지 (PR #62359): 32K에서 추가 +2.8%. Engram은 DP 랭크 간에 공유되는 호스트 테이블에서 임의 읽기를 수행합니다. 이전 /dev/shm 매핑은 64KB GPU 페이지를 사용하여 빈번한 GPU TLB 미스를 발생시켰습니다. 테이블을 호스트-NUMA cuMem 할당으로 이동하면 2MB GPU 페이지가 가능해집니다.
- 프리필 인덱서의 DeepSelect top-k (PR #62240): 32K에서 추가 +15.6%. 프리필 인덱서는 이제 디코드 경로와 일치하도록 DeepSelect를 사용하여 후보 블록을 순위화합니다. 이점은 순위가 매겨지는 키 수에 따라 커져 64K에서 15.2%에 도달합니다.
함께 이러한 변경 사항은 128K 캐시된 접두사 위에 4K64K 새 토큰에 걸쳐 새 토큰 프리필 처리량을 35.6%43.9% 향상시킵니다. 32K 새 토큰에서 결합된 이득은 42.5%입니다. 64K에서 처리량은 GPU당 초당 71.2K에서 102.5K 토큰으로 증가합니다(+43.9%).
디코드: Wide-EP 확장 및 EPLB 전문가 균형
EPLB를 사용한 Wide-EP는 확립된 관행이며 DeepSeek의 추론 시스템 개요에 설명되어 있으며 vLLM은 한동안 둘 다 지원해 왔습니다. 이 섹션은 vLLM의 새로운 발견과 경험적 교훈에 중점을 둡니다.
DEP4에서 DEP32로 Wide-EP 확장
vLLM은 EPLB를 활성화한 상태에서 128K 컨텍스트에서 GPU당 64개 요청으로 DEP4에서 DEP32로 디코드 확장을 측정했습니다. 각 랭크가 더 적은 전문가를 보유함에 따라 대상 MegaMoE 시간은 13.4ms에서 6.0ms로 줄어들고 나머지 작업은 약 10ms를 유지합니다. 결과적으로 GPU당 처리량 이득은 점차 감소합니다. DEP32에서는 드래프트의 통신 오버헤드도 더 넓은 병렬 처리의 이점을 상쇄하기 시작합니다. 이러한 측정은 NVIDIA GB200에서 수행되었습니다.
EPLB 결과
vLLM은 이전 1,000단계의 로드를 기반으로 3,000단계마다 전문가를 재배치하도록 EPLB를 구성했습니다. EPLB는 대상 모델의 균형도를 0.35에서 0.94로, 드래프트의 경우 0.21에서 0.89로 높여 균일 라우팅과의 격차를 각각 약 97%와 93% 회복합니다.
이를 가능하게 하는 두 가지 변경 사항이 있습니다.
- PR #62009은 디코드를 중지하지 않고 1초 안에 DEP32 전체를 재균형화하는 NVLink 기반
symm_mem백엔드를 도입하고, EPLB의 복제본 매핑과 로드 기록을 MegaMoE 커널에 융합하여(단계당 약 0.2ms 절약) 디코드 루프에서 호스트 동기화를 제거합니다. - PR #61395는 이기종 대상 및 드래프트 모델로 EPLB를 지원합니다. DSpark 드래프트는 대상의 384개(top-6 라우팅)와 달리 128개의 라우팅된 전문가(top-3 라우팅)를 가지므로 EPLB는 각 모델에 대해 전문가 배치와 로드를 별도로 추적하고 둘 다 재균형화합니다.
NVL72 규모에서 CPU 오버헤드가 중요해짐
Wide-EP 디코드는 모든 레이어에서 모든 랭크를 동기화하므로 느린 랭크 하나가 인스턴스를 중단시킵니다. 비동기 스케줄링은 소규모에서 CPU 오버헤드를 잘 숨기지만, 더 많은 랭크는 두 가지 방식으로 이를 더 어렵게 만듭니다. GPU 단계가 짧아져 CPU 작업에 대한 여유가 줄어들고, 한 랭크가 뒤처질 가능성이 높아집니다.
실제로 vLLM은 최적화되지 않은 DEP32가 DEP16보다 느리게 실행되는 것을 관찰했습니다(단계당 17.57ms 대 13.84ms). GPU 실행이 1.1ms 더 빠름에도 불구하고 말입니다. 게시물은 발견한 모든 원인을 영향 순서대로 나열합니다. 효과는 서로 다른 설정에서 발생하므로 각 행에는 자체 설정이 있습니다.
| 원인 | 수정 | PR | 효과 | 설정 |
|---|---|---|---|---|
| 디코드 워커 스레드에서 KV 읽기가 동기적으로 게시됨 | UCX scatter-gather를 사용한 NIXL 푸시; 압축된 KV 행을 하나의 NIXL 영역으로 전송 | NIXL 푸시 커넥터, #61121 | GPU당 초당 141K |
GB300, 8P1D, 동시성 3,072 |
| Gloo all-reduce 지연 시간이 랭크 수에 따라 선형적으로 증가 | 재귀 배가 CPU all-reduce | #61767, #60267 기반 | DP 동기화 단계당 10.8 |
DEP32 디코드 |
| 허용 버스트: 한 단계에서 최대 140개 요청 허용 | 단계당 새 KV 로드 4개로 선택적 제한 | #61725 | GPU당 초당 460K |
GB300, 7P1D, 동시성 4,800, 다른 두 CPU 수정 포함 |
| 프롬프트 길이에 따라 증가하는 허용 작업 | 프롬프트를 단일 int32 버퍼로; 슬라이딩 윈도우 블록 테이블의 null 블록 건너뛰기; 청크 프롬프트 복사 커널 | #59908, #62702, #61724, #62698 | 855K 프롬프트: 허용당 CPU 38.8~6.0ms | 엔진 마이크로벤치마크 |
낮은 지연 시간: 소규모 배치를 위한 특수 디코드 경로
vLLM은 PR #61868 및 #61869를 통해 DeepSeek-V4.1-Flash에 대한 저지연 커널 지원을 확장하여 이전 게시물의 Kimi K3 메가커널 작업을 계속했습니다.
실제 AgentX 세션에서 특수 디코드 경로는 B300 GPU 4개에서 단일 사용자에 대해 P90 초당 826토큰에 도달하며, 이는 표준 디코드 경로(575)보다 44% 높습니다. 측정은 InferenceX PR #4332가 특수 디코드 경로로 전환하기 전후에 B300 GPU 4개에서 TP4를 사용한 SemiAnalysis AgentX, 동시성 1, 8, 16을 다룹니다.
vLLM이 성능을 측정한 방법
vLLM은 정확한 측정을 두 가지 질문으로 나눕니다. 프리필 또는 디코드 단계의 비용은 얼마여야 하는지, 그리고 DP 및 EP 불균형에서 추가 오버헤드가 얼마나 발생하는지입니다.
- 프리필 및 디코드 단계 시간.
vllm bench forward도구(PR #61339)는 실제execute_model경로를 통해 DP 및 EP 랭크 전체에서 정확한 프리필 또는 디코드 배치에 대한 모델 정방향 시간을 측정합니다. 이는 GPU 시간만 측정하고 깨끗한 트레이스를 제공합니다. 별도로 vLLM의DecodeBenchConnector는 주어진 동시성에서 엔진 수준의 종단 간 디코드 성능을 측정합니다. GPU 전용 및 서빙 단계 시간 사이의 차이는 예상치 못한 오버헤드를 드러냅니다. - 프리필 DP 불균형: 미러 대 지연 재생. 에이전틱 트레이스는 실행마다 다르므로 DP 불균형을 분리하기 어렵습니다. 따라서 vLLM은 모든 DP 랭크에서 동일한 요청을 재생합니다. 미러 실행에서는 모든 랭크가 동시에 요청을 받습니다. 지연 실행에서는 랭크 r이 동일한 요청을 r x 5초 늦게 받으므로 랭크가 동기화되지 않지만 동일한 총 작업을 수행합니다. 두 실행의 차이는 DP 불균형의 비용입니다.
- 디코드 EP 불균형: 실제 대 균일 라우팅. 각 MoE 레이어에 대해 균형도는 평균 랭크 로드를 최대 랭크 로드로 나눈 값으로 정의되며, 단계별 및 EPLB 창에 걸쳐 계산됩니다. 균형 참조로 vLLM은 토큰을 균일하게 무작위로 라우팅하여 동일한 디코드 배치를 실행합니다. 해당 참조에는 여전히 샘플링 노이즈가 있습니다. DEP32에서 GPU당 72개 요청으로 균일 라우팅은 대상(top-6 라우팅)에 대해 약 0.96, 드래프트(top-3)에 대해 0.94의 균형도에 도달합니다. 실제 라우팅과 균일 라우팅 사이의 격차는 전문가 균형이 회복할 수 있는 최대치이며, EPLB 실행은 실제로 그 격차 중 얼마나 많은 부분을 회복하는지 보여줍니다.
용어
DEP 뒤에 숫자가 오면 해당 수의 GPU에 걸친 데이터 병렬 어텐션과 전문가 병렬 처리를 의미합니다. DEP2는 GPU 2개, DEP4는 4개, DEP32는 32개입니다. 대상 정방향은 각 디코드 단계에서 메인 모델의 전체 정방향 패스로, 드래프트 토큰을 검증하고 출력을 생성합니다. 드래프트 정방향은 DSpark 드래프트 모델의 전체 정방향 패스로, 다음 단계의 토큰을 제안합니다.
크레딧
vLLM은 DeepSeek-V4.1-Flash와 최적화된 커널을 오픈소스로 공유하여 작업의 기반을 제공하고 DeepInfer와 성능 결과를 공개한 것에 대해 감사합니다. 또한 AgentX 벤치마크 플랫폼을 제공한 SemiAnalysis에도 감사합니다.
vLLM은 성능 최적화, vLLM 및 Dynamo 전반의 지원, AgentX 제출 도움을 위한 NVIDIA의 Pei Li, Hanjie Qiu, Lisa Wang, Yaoyao Ding, Rohit Nagraj, Xin Li와 프리필 최적화를 위한 vLLM 커뮤니티의 Canlin Guo를 특별히 언급합니다. 이 작업은 Inferact가 주도했습니다.