Qwen3.8-Flash-Next NVFP4 2xDGX Spark 설정: 50t/s 디코드, 2,900t/s 프리필
Qwen3.8-Flash-Next NVFP4 2xDGX Spark config: 50t/s decode, 2,900t/s prefill
핵심 요약
DGX Spark 2대를 활용한 Qwen3.8-Flash-Next의 최적화 설정과 벤치마크 성능을 공유합니다.
- 성능 벤치마크 — 2xDGX Spark 환경에서 TP2, MTP k=3 적용 시 50t/s 디코드 및 2,900t/s 프리필 달성함
- 설정 최적화 — vLLM PR #53896 기반 및 sm_121 지원 패치로 NVFP4 E2M1 변환 문제 해결함
- 하드웨어 효율 — 기존 RTX 3090 대비 압도적인 전력 효율과 높은 컨텍스트 처리 성능을 보여줌
- 문제 해결 — NCCL 설정, RoCE 장치 이름 안정성, flashinfer 버전 등 실무적인 트러블슈팅 정보 포함됨
며칠 동안 삽질 좀 하다가, 혹시 도움 될까 싶어서 지금 내 설정 공유한다. 몇몇 부분은 Spark 하나만 쓸 때도 유용할 거다.
벤치마크:
Dual-Spark TP2, eager + MTP k=3, 262k 컨텍스트 (워밍업 완료된 중앙값, 정확한 토크나이저 카운트 기준):
┌─────────┬──────────────────┬───────────────────┬─────────────────────────────────┐
│ Streams │ Decode aggregate │ Decode per-stream │ Prefill aggregate (10k prompts) │
├─────────┼──────────────────┼───────────────────┼─────────────────────────────────┤
│ 1 │ 45.9 t/s │ 45.9 t/s │ 2,940 t/s │
├─────────┼──────────────────┼───────────────────┼─────────────────────────────────┤
│ 4 │ 120.2 t/s │ 30.0 t/s │ 2,524 t/s │
├─────────┼──────────────────┼───────────────────┼─────────────────────────────────┤
│ 8 │ 222.2 t/s │ 27.8 t/s │ 3,098 t/s │
├─────────┼──────────────────┼───────────────────┼─────────────────────────────────┤
│ 13 │ 265.9 t/s │ 20.5 t/s │ 2,960 t/s │
└─────────┴──────────────────┴───────────────────┴─────────────────────────────────┘
Prefill vs 프롬프트 깊이 (단일 스트림, 정확한 토큰 기준):
┌─────────────┬───────────┐
│ Prompt size │ Prefill │
├─────────────┼───────────┤
│ 11k │ 2,875 t/s │
├─────────────┼───────────┤
│ 100k │ 2,655 t/s │
├─────────────┼───────────┤
│ 200k │ 2,463 t/s │
└─────────────┴───────────┘
니들 에이전트에 복붙해서 쓸 AI 찌꺼기들이다 :)
스택
-
vLLM PR #53896 (
release/qwen38next브랜치) — 메인 아님; 메인에는 모델이 없고, 레시피 이미지의 vLLM 커밋은 퍼블릭 레포에 없음 -
sm_121 지원은 파일 2개짜리 패치임 (아래 상세 내용 참고) — GB10은 아키텍처 12.1이라 NVFP4 E2M1 변환에 소프트웨어 폴백이 필요함
-
PLE n-gram 테이블은 내부 NVMe에서 mmap으로 서빙함 (48GB,
MADV_RANDOM필수 — 해시 분산된 행 조회 시 읽기 증폭 차이가 30배 남). 노드 로컬 CPU 워커 프로세스가 ZMQ + 고정 버퍼 + CUDA-IPC 출력으로 gather를 수행해서, gather가 그래프 안전하고 TP2 안전하도록 함 -
두 Spark에 걸친 TP2: 네이티브 venv 사용 (도커 쓰지 마라 — 삽질 끝판왕임), eager + MTP k=3

