본문으로 건너뛰기

[sglang] DeepSeek-V4 Flash 공식 모델 최적화: H200 및 B200을 위한 SGLang 서빙 전략

PR 링크: sgl-project/sglang#33109 상태: Merged | 변경: +74 / -12

들어가며

최근 DeepSeek-V4-Flash-0731 공식 모델이 출시됨에 따라, 고성능 추론 엔진인 SGLang 팀은 NVIDIA의 최신 GPU인 H200과 B200에서의 최적화된 서빙 레시피를 공개했습니다. 이번 PR(#33083 후속)은 단순히 벤치마크 수치를 나열하는 것을 넘어, 실제 운영 환경에서 발생할 수 있는 메모리 부족(OOM) 문제를 해결하고, 하드웨어의 잠재력을 끌어올리기 위한 병렬화 전략(TP/DP)을 수정한 내용을 담고 있습니다.

이 글에서는 SGLang이 DeepSeek-V4 Flash 모델을 위해 어떤 설정을 변경했는지, 그리고 왜 이러한 변화가 성능과 안정성 측면에서 중요한지 분석해 보겠습니다.

코드 분석: 핵심 변경 사항

1. B200 병렬화 전략의 변화 (TP4 → TP8)

가장 눈에 띄는 변화는 B200 하드웨어에서의 Tensor Parallelism(TP) 설정입니다. 기존에는 4개의 GPU를 사용하는 설정이었으나, 실제 측정 결과에 기반하여 8개의 GPU를 모두 사용하는 TP8/DP8 구성으로 업데이트되었습니다.

Before (docs_new/src/snippets/configs/deepseek-ai/deepseek-v4.jsx):

{
  match: { hw: "b200", variant: "flash-official", quant: "fp4", strategy: "low-latency", nodes: "single" },
  verified: false,
  flags: [
    "--tp 4",
    // ...
  ],
}

After (docs_new/src/snippets/configs/deepseek-ai/deepseek-v4.jsx):

{
  match: { hw: "b200", variant: "flash-official", quant: "fp4", strategy: "low-latency", nodes: "single" },
  verified: true,
  flags: [
    "--tp 8",
    // ...
    "--mem-fraction-static 0.90",
  ],
}

왜 좋은 개선인가? B200(Blackwell)은 GPU 간 대역폭이 매우 높습니다. 8개 GPU를 하나의 TP 그룹으로 묶음으로써 개별 GPU가 담당하는 파라미터 양을 줄이고, 연산 속도를 극대화할 수 있습니다. 또한, verified: true로 변경된 것은 실제 8xB200 환경에서 모든 테스트 케이스가 성공적으로 통과했음을 의미합니다.

2. 메모리 헤드룸 확보를 위한 mem-fraction-static 조정

이번 업데이트에서 기술적으로 가장 중요한 부분은 --mem-fraction-static 옵션의 추가입니다. H200과 B200 모두에서 기본값보다 낮은 수치를 할당하도록 수정되었습니다.

H200 Balanced Strategy 변경 사항:

+ "--mem-fraction-static 0.88",

B200 Low-latency Strategy 변경 사항:

+ "--mem-fraction-static 0.90",

왜 좋은 최적화인가? PR 설명에 따르면, H200에서 기본 설정을 사용했을 때 FlashInfer MoE workspace 할당 과정에서 OOM이 발생했습니다. 구체적으로 1.34 GiB 할당이 필요했으나 여유 공간이 1.06 GiB뿐이었습니다.

mem-fraction-static은 KV 캐시 등을 위해 미리 점유할 메모리 비율을 결정합니다. 이 수치를 약간 낮춤(0.944 → 0.88~0.90)으로써, 런타임 워크스페이스(Runtime Workspace)가 사용할 수 있는 여유 공간(Headroom)을 확보한 것입니다. 이는 특히 MoE(Mixture of Experts) 모델처럼 동적인 메모리 할당이 빈번한 구조에서 안정성을 보장하는 핵심 설정입니다.

3. 검증된 벤치마크 데이터 추가

SGLang v0.5.16을 기준으로 한 실제 측정 데이터가 deepseek-v4-benchmarks.jsx에 대거 추가되었습니다.

추가된 데이터 예시 (H200 + FP4):

{
  match: { hw: "h200", variant: "flash-official", quant: "fp4", strategy: "low-latency", nodes: "single" },
  speed: [
    { workload: { dataset: "random", isl: 8192, osl: 1024, max_concurrency: 1 },
      ttft_ms: 308.29, tpot_ms: 1.72, tokens_per_sec_per_gpu: 606 },
  ],
}

이 데이터는 사용자가 자신의 인프라에서 기대할 수 있는 성능 지표(TTFT, TPOT)를 명확히 제시하며, DSpark와 같은 Speculative Decoding 알고리즘의 실제 효과(Acceptance length ~5.4)를 입증합니다.

왜 이게 좋은가: 성능과 안정성의 균형

  1. 실제 하드웨어 제약 해결: 단순히 이론적인 수치가 아니라, CUDA Graph 캡처 단계나 MoE 워크스페이스 할당 시 발생하는 실제 OOM 이슈를 mem-fraction-static 조정을 통해 해결했습니다.
  2. 전략별 최적화:
    • Low-latency: FlashInfer MXFP4와 DSpark를 조합하여 빠른 응답 속도 구현.
    • High-throughput: MegaMoE 백엔드를 활용하여 대량의 요청 처리 최적화.
  3. 정확한 모델 타겟팅: 리뷰 댓글에서 언급되었듯, 이 PR은 기존 FP8 체크포인트가 아닌 새로 출시된 공식 Flash-0731 체크포인트에 최적화되어 있어 사용자의 혼란을 방지합니다.

일반적인 교훈

LLM 서빙 최적화에서 가장 중요한 것은 "메모리 예산 관리"입니다. KV 캐시에 너무 많은 메모리를 할당하면 연산 엔진이 사용할 워크스페이스가 부족해져 OOM이 발생하고, 너무 적게 할당하면 처리량이 떨어집니다. 이번 PR처럼 하드웨어와 모델의 특성에 맞춰 mem-fraction-static과 같은 파라미터를 미세 조정하는 과정이 프로덕션 수준의 서빙을 완성하는 마지막 한 걸음입니다.

결론

SGLang의 이번 업데이트는 DeepSeek-V4 Flash 모델을 H200/B200에서 구동하려는 엔지니어들에게 가장 신뢰할 수 있는 가이드를 제공합니다. 특히 B200에서의 TP8 전환과 메모리 비율 조정은 최신 하드웨어의 성능을 안정적으로 끌어내기 위한 필수적인 조치였습니다.

참고 자료

⚠️ 알림: 이 분석은 AI가 실제 코드 diff를 기반으로 작성했습니다.

댓글

관련 포스트

PR Analysis 의 다른글