본문으로 건너뛰기

© 2026 Molayo

Reddit요약2026. 05. 18. 20:01

Blackwell 및 Ada 혼합 클러스터에서의 vLLM, SGLang, llama.cpp 성능 비교 벤치마크

요약

Blackwell과 Ada GPU가 혼합된 이기종 클러스터 환경에서 vLLM, SGLang, llama.cpp의 긴 컨텍스트 프리필 성능을 비교 분석했습니다. 테스트 결과 vLLM이 혼합 GPU 설정 및 불균형한 연산 부하 처리에서 가장 뛰어난 성능을 보였으며, SGLang은 하위 세대 카드 지원 부족으로 충돌이 발생했고 llama.cpp는 파이프라인 병렬 처리 효율이 크게 떨어졌습니다.

핵심 포인트

  • vLLM은 이전 세대 GPU에서 FP4를 에뮬레이션하여 이기종 클러스터 환경에서도 안정적인 성능을 제공함
  • llama.cpp는 파이프라인 병렬 처리 시 CPU 측 임베딩 문제로 인해 vLLM 대비 4~6배 느린 성능을 보임
  • SGLang은 Blackwell 전용 환경에서는 우수하나, Ada 카드 혼합 시 FP4 소프트웨어 폴백 부재로 인해 실행 오류가 발생함
  • VLLM_PP_LAYER_PARTITION을 통한 레이어 수동 조정을 통해 불균형한 GPU 간 연산 부하를 최적화할 수 있음

저는 서로 다른 추론 엔진들이 파이프라인 병렬 처리 (Pipeline Parallelism)를 사용하여 긴 컨텍스트 프리필 (Long Context Prefill)을 어떻게 처리하는지 확인하기 위해 이기종 7-GPU 클러스터에서 몇 가지 벤치마크를 실행했습니다. 제 설정은 Blackwell과 Ada 카드가 혼합되어 있습니다: RTX PRO 6000 96GB 1개, PRO 5000 48GB 1개, 5090 32GB 2개, 그리고 개조된 4090 48GB 3개로 구성됩니다. 모든 테스트는 4비트 가중치(4-bit weights)를 사용하여 수행되었으며, 구체적으로 vLLM과 SGLang은 NVFP4를, llama.cpp는 MXFP4를 사용했습니다.

주요 결과는 vLLM이 긴 컨텍스트 프리필 (Long Context Prefill)을 위한 혼합 멀티 GPU 설정에서 다른 엔진들보다 성능이 현저히 뛰어나다는 것입니다. llama.cpp는 이러한 조건에서 파이프라인 병렬 처리 (Pipeline Parallelism)를 수행할 때 매우 어려움을 겪으며, 4배에서 6배 정도 뒤처집니다. 이는 여러 장치에 걸쳐 실행 그래프 (Execution Graph)가 처리되는 방식 때문으로 보이며, CPU 측 임베딩 (CPU-side embeddings)이 그래프 분할 (Graph Splits)과 파이프라인 버블 (Pipeline Bubbles)을 유발하는 것으로 보입니다.

SGLang은 순수 Blackwell 설정에서는 vLLM과 거의 대등할 정도로 훌륭하게 작동합니다. 하지만 파이프라인에 Ada 카드를 도입하면 즉시 충돌이 발생하는데, 이는 현재 FP4 가중치에 대한 소프트웨어 폴백 (Software Fallback) 기능이 부족하여 엄격하게 Compute Capability 10.0을 요구하기 때문입니다. vLLM은 이전 세대 카드에서 FP4를 에뮬레이션 (Emulating)함으로써 이를 매끄럽게 처리합니다.

또 다른 흥미로운 발견은 vLLM이 불균형한 GPU 분할 (Uneven GPU Splits)을 얼마나 잘 처리하는지였습니다. VLLM_PP_LAYER_PARTITION 환경 변수를 사용하여 레이어 분포 (Layer Distribution)를 수동으로 조정함으로써, 빠른 Blackwell 카드와 FP4 에뮬레이션을 수행하는 느린 4090 카드 사이의 연산 부하를 균형 있게 맞출 수 있었습니다. 이를 통해 파이프라인 병목 현상 (Pipeline Bottlenecks)을 제거했으며, 397B 모델에서도 엄청난 속도 향상을 얻을 수 있었습니다.

다음은 벤치마크 결과 요약입니다.

모델 및 컨텍스트 (Model and Context) | GPU 설정 (GPU Setup) | 엔진 (Engine) | TTFT | 프리필 속도 (Prefill Speed)

---|---|---|---|---
Qwen3.6-35B-A3B (184k tokens) | 2 GPUs (6000 + 5090) | vLLM | 10.2s | 18060 t/s
Qwen3.6-35B-A3B (184k tokens) | 2 GPUs (6000 + 5090) | llama.cpp | 24.9s | 7405 t/s
MiniMax-M2.7 (82k tokens) | 6 GPUs (Mixed) | vLLM | 13.2s | 6212 t/s
MiniMax-M2.7 (82k tokens) | 6 GPUs (Mixed) | llama.cpp | 77.0s | 1065 t/s

MiniMax-M2.7 (82k tokens) | 6 GPUs (Mixed) | SGLang | Crashed | N/A

Qwen3.5-122B-A10B (75k tokens) | 4 GPUs (Pure Blackwell) | vLLM | 5.0s | 15084 t/s

Qwen3.5-122B-A10B (75k tokens) | 4 GPUs (Pure Blackwell) | SGLang | 5.3s | 14177 t/s

Qwen3.5-122B-A10B (75k tokens) | 4 GPUs (Pure Blackwell) | llama.cpp | 20.6s | 3662 t/s

Qwen3.5-397B-A17B (75k tokens) | 7 GPUs (Uneven PP split) | vLLM | 9.8s | 7683 t/s

Qwen3.5-397B-A17B (75k tokens) | 7 GPUs (Uneven PP split) | llama.cpp | 57.2s | 1319 t/s

혼합 클러스터 (mixed cluster)를 구축하거나 대규모 모델을 위해 파이프라인 병렬화 (pipeline parallelism)에 크게 의존하고 있다면, vLLM의 청크 프리필 (chunked prefill)과 수동 레이어 분할 (manual layer partitioning)이 매우 유용합니다. 이 데이터가 하드웨어 토폴로지 (hardware topologies)를 계획하거나 멀티 GPU 설정에서 프리필 (prefill) 시간 문제로 어려움을 겪는 분들에게 도움이 되기를 바랍니다.

저는 영어가 모국어가 아니어서 LLM을 사용하여 번역했습니다.
수정: 오타

AI 자동 생성 콘텐츠

본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0