NVIDIA RTX 5090 (Blackwell μν€ν μ²)μμ Qwen3-32B-AWQ λͺ¨λΈμ SGLangμΌλ‘ λ°°ν¬νμ¬ 53.7% μ±λ₯ ν₯μμ λ¬μ±ν μ΅μ ν νλ‘μ νΈμ λλ€.
| μ§ν | vLLM (κΈ°μ‘΄) | SGLang (μ΅μ ν) | κ°μ μ¨ |
|---|---|---|---|
| ν ν° μμ± μλ | 6.69 tok/s | 10.27 tok/s | +53.7% β |
| μλ΅ μ§μ°μκ° | 1054ms | 976ms | -7.4% β |
| 첫 ν ν° μκ° (TTFT) | 269ms | 195ms | -31% β |
| 10λͺ λμ μ²λ¦¬ | 1.15 req/s | 2.10 req/s | +82.6% β |
| 20λͺ λμ μ²λ¦¬ | 1.74 req/s | 4.21 req/s | +142% β |
- λΉ λ₯Έ μμ
- μ±λ₯ λ²€μΉλ§ν¬
- κΈ°μ μν€ν μ²
- μ΅μ ν ꡬμ±
- νΈλ¬λΈμν
- νλ‘μ νΈ μ¬μ
- NVIDIA RTX 5090 (32GB VRAM)
- Docker with NVIDIA runtime
- CUDA 12.8+ drivers
- 50GB+ μ¬μ λμ€ν¬ 곡κ°
git clone https://github.com/Cloud-Linuxer/Qwen.git
cd Qwendocker build -f Dockerfile.blackwell-final -t sglang:blackwell-final-v2 ../deploy-sglang-balanced-v2.sh# λΉ λ₯Έ ν
μ€νΈ
curl -X POST http://localhost:8003/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-32B-AWQ",
"prompt": "Hello, how are you?",
"max_tokens": 20
}'
# μ±λ₯ λ²€μΉλ§ν¬
./performance_test_final.shν ν° μ vLLM SGLang κ°μ
βββββββββββββββββββββββββββββββββ
10 ν ν° 1.29μ΄ 0.97μ΄ -25%
50 ν ν° 5.94μ΄ 4.87μ΄ -18%
100 ν ν° 11.80μ΄ 9.73μ΄ -18%
500 ν ν° 58.71μ΄ 48.70μ΄ -17%
μ¬μ©μμ μ²λ¦¬λ κ°μ μ§μ°μκ° κ°μ
ββββββββββββββββββββββββββββββββββ
1λͺ
+23.5% -18.2%
5λͺ
+53.6% -34.3%
10λͺ
+82.6% -45.0%
20λͺ
+142.0% -58.7%
- comparison_20250916_154056.csv - μ΅μ’ λΉκ΅ λ°μ΄ν°
- sglang_qwen_style_benchmark_20250916_155136.csv - μμΈ μΈ‘μ κ°
ββββββββββββββββββββββββββββββββββββββββ
β Application Layer β
β (Your Application / Service) β
ββββββββββββββ¬ββββββββββββββββββββββββββ
β REST API
ββββββββββββββ΄ββββββββββββββββββββββββββ
β SGLang Server (Port 8003) β
β βββββββββββββββββββββββββββββββββββ β
β β Balanced-v2 Configuration β β
β β β’ LOF Scheduling Policy β β
β β β’ Torch Compile Enabled β β
β β β’ Triton Attention Backend β β
β β β’ 2-step Continuous Decode β β
β βββββββββββββββββββββββββββββββββββ β
ββββββββββββββ¬ββββββββββββββββββββββββββ
β
ββββββββββββββ΄ββββββββββββββββββββββββββ
β Model: Qwen3-32B-AWQ β
β (4-bit Quantized, 16GB size) β
ββββββββββββββ¬ββββββββββββββββββββββββββ
β
ββββββββββββββ΄ββββββββββββββββββββββββββ
β NVIDIA RTX 5090 (32GB VRAM) β
β Blackwell Architecture (sm_120) β
βββββββββββββββββββββββββββββββββββββββββ
FROM nvidia/cuda:12.8.0-cudnn-devel-ubuntu22.04
# ν΅μ¬ μμ‘΄μ± (libnuma νμ!)
RUN apt-get install -y libnuma-dev libnuma1
# PyTorch nightly (Blackwell μ§μ)
RUN pip3 install --pre torch torchvision torchaudio \
--index-url https://download.pytorch.org/whl/nightly/cu128
# SGLang + μ΅μ ν 컀λ
RUN pip3 install "sglang[all]"
RUN pip3 install sgl_kernel-0.3.9.post2+cu128-e PYTORCH_CUDA_ALLOC_CONF="expandable_segments:True,max_split_size_mb:256"
-e CUDA_LAUNCH_BLOCKING=0 # λΉλκΈ° μ€ν
-e OMP_NUM_THREADS=10 # CPU λ³λ ¬ν
-e TORCH_CUDA_ARCH_LIST="9.0;12.0+PTX" # Blackwell μ§μ--schedule-policy lof # π 7% μλ΅μκ° κ°μ
--enable-torch-compile # π λ°λ³΅ μ€νμ 12% κ°μ
--torch-compile-max-bs 6
--num-continuous-decode-steps 2 # π 31% TTFT κ°μ
--triton-attention-num-kv-splits 12
--mem-fraction-static 0.87 # μ΅μ λ©λͺ¨λ¦¬ ν λΉ--attention-backend triton # β
μλ
--disable-cuda-graph # β Blackwell λΉνΈν
--disable-flashinfer # β sm_120 λ―Έμ§μ
--disable-custom-all-reduce # β λΆμμ | κ΅¬μ± | νμΌ | νΉμ§ | μ±λ₯ |
|---|---|---|---|
| Balanced-v2 β | deploy-sglang-balanced-v2.sh |
LOF + Torch Compile | μ΅κ³ μ±λ₯ |
| Ultra-Optimized | deploy-sglang-ultra-optimized.sh |
LPM + 3 decode steps | λΉμ·ν μ±λ₯ |
| Performance-v1 | deploy-sglang-performance-v1.sh |
Triton only | κΈ°λ³Έ μ±λ₯ |
| Experimental | deploy-sglang-experimental.sh |
CUDA Graphs μλ | β μ€ν¨ |
ImportError: libnuma.so.1: cannot open shared object fileν΄κ²°: Docker μ΄λ―Έμ§μ libnuma λΌμ΄λΈλ¬λ¦¬ μ€μΉ
apt-get install libnuma-dev libnuma1torch.OutOfMemoryError: CUDA out of memoryν΄κ²°:
--max-total-tokensμ€μ΄κΈ° (3072 β 2048)--mem-fraction-staticμ€μ΄κΈ° (0.87 β 0.85)
Segmentation fault (core dumped)ν΄κ²°: Blackwell λΉνΈν κΈ°λ₯ λΉνμ±ν
--disable-cuda-graph
--disable-flashinfer
--disable-custom-all-reduce체ν¬λ¦¬μ€νΈ:
- Triton attention backend νμ±ν νμΈ
- CUDA_LAUNCH_BLOCKING=0 μ€μ νμΈ
- GPU μ¬μ©λ₯ νμΈ (
nvidia-smi)
| κΈ°λ₯ | μν | μ΄μ |
|---|---|---|
| CUDA Graphs | β | sm_120 μ΄κΈ°ν μ€ν¨ |
| FlashInfer | β | Blackwell λ―Έμ§μ |
| Custom All-Reduce | β | μμ μ± λ¬Έμ |
| AWQ_Marlin | β | λ©λͺ¨λ¦¬ λΆμ‘± |
| Radix Cache | β | μ±λ₯ μ ν |
| Triton Attention | β | μ μ μλ |
| Torch Compile | β | μ μ μλ |
- λͺ©ν: Qwen3-Next-80B λ°°ν¬
- λ¬Έμ : 175GB λ©λͺ¨λ¦¬ νμ, 32GBλ§ κ°μ©
- κ²°κ³Ό: CPU offloading β μ±λ₯ μ ν
- μλ 1-3: PyTorch λ²μ μΆ©λ, ABI λΆμΌμΉ
- μλ 4-5: libnuma μμ‘΄μ± λ¬Έμ
- μλ 6: β μ±κ³΅ - λͺ¨λ λ¬Έμ ν΄κ²°
- Baseline: 10.2 tok/s
- Ultra-Optimized: 10.17 tok/s
- Balanced-v2: 10.27 tok/s β
vLLM (CPU offload): 6.69 tok/s
β (+27%)
SGLang (μ΄κΈ°): 10.2 tok/s
β (+7% μλ΅μκ°, +31% TTFT)
SGLang (Balanced-v2): 10.27 tok/s
/home/qwen/
βββ π³ Docker μ€μ
β βββ Dockerfile.blackwell-final # RTX 5090 μ΅μ ν μ΄λ―Έμ§
β βββ docker-compose.sglang.yml # μλΉμ€ ꡬμ±
β
βββ π λ°°ν¬ μ€ν¬λ¦½νΈ
β βββ deploy-sglang-balanced-v2.sh # β μ΅μ λ°°ν¬ (κΆμ₯)
β βββ deploy-sglang-ultra-optimized.sh # μΈνΈλΌ μ΅μ ν
β βββ deploy-sglang-performance-v1.sh # κΈ°λ³Έ μ΅μ ν
β
βββ π§ͺ ν
μ€νΈ λꡬ
β βββ performance_test_final.sh # μ’
ν© μ±λ₯ ν
μ€νΈ
β βββ benchmark_sglang_optimized.sh # μ΅μ ν λ²€μΉλ§ν¬
β βββ test_sglang_commands.sh # API ν
μ€νΈ
β βββ sglang_qwen_style_benchmark.py # Qwen μ€νμΌ ν
μ€νΈ
β
βββ π μ±λ₯ λ°μ΄ν°
β βββ comparison_20250916_154056.csv # μ΅μ’
λΉκ΅ λ°μ΄ν°
β βββ sglang_vs_qwen_comparison.csv # vLLM vs SGLang
β βββ final_benchmark_*.csv # μμΈ λ²€μΉλ§ν¬
β
βββ π λ¬Έμ
βββ README.md # μ΄ λ¬Έμ
βββ PERFORMANCE_COMPARISON_REPORT.md # μ±λ₯ λΆμ
βββ SGLANG_RTX5090_TRIAL_LOG.md # μνμ°©μ€ κΈ°λ‘
βββ TROUBLESHOOTING_CHART.md # λ¬Έμ ν΄κ²° κ°μ΄λ
-
LOF μ€μΌμ€λ§ μ μ±
- Least Outstanding First μκ³ λ¦¬μ¦
- λκΈ° μμ²μ΄ μ μ κ² μ°μ μ²λ¦¬
- 7% μλ΅μκ° κ°μ
-
μ°μ λμ½λ μ΅μ ν
- 2 μ€ν μ΄ μ΅μ (3 μ€ν μ μ€νλ € μ ν)
- λ°°μΉ μ²λ¦¬ ν¨μ¨ μ¦κ°
- 31% TTFT κ°μ
-
Torch Compile
- JIT μ»΄νμΌλ‘ λ°λ³΅ μ€ν μ΅μ ν
- λ°°μΉ ν¬κΈ° 6κΉμ§ μ»΄νμΌ
- 12% μΆκ° μ±λ₯ ν₯μ
-
λ©λͺ¨λ¦¬ κ΄λ¦¬
- 87% μ μ ν λΉ (μμ μ±κ³Ό μ±λ₯ κ· ν)
- AWQ 4-bit μμν νμ©
- 21GB/32GB VRAM μ¬μ©
- Qwen2.5 μλ¦¬μ¦ ν΅ν©
- Prometheus/Grafana λͺ¨λν°λ§
- μλ μ€μΌμΌλ§ ꡬν
- Multi-GPU μ§μ (Tensor Parallelism)
- INT8/FP8 μμν μ΅μ ν
- Redis κΈ°λ° κ²°κ³Ό μΊμ±
- Kubernetes λ°°ν¬
- API Gateway ꡬν
- MLOps CI/CD νμ΄νλΌμΈ
RTX 5090 λ°°ν¬ κ΄λ ¨ λ¬Έμ λ°μ μ:
- μ 체 μλ¬ λ‘κ·Έ (
docker logs) nvidia-smiμΆλ ₯- μ¬μ©ν λ°°ν¬ μ€ν¬λ¦½νΈ λ° μ€μ
- RTX 5090 νλμ¨μ΄μμ ν μ€νΈ νμ
- μ±λ₯ λ²€μΉλ§ν¬ ν¬ν¨
- Blackwell νΈνμ± λͺ μ
MIT License
- SGLang ν: νλ₯ν νλ μμν¬ μ 곡
- NVIDIA: Blackwell μν€ν μ² μ§μ
- Qwen ν: μ°μν μΈμ΄ λͺ¨λΈ
λ§μ§λ§ μ λ°μ΄νΈ: 2025λ 9μ 16μΌ ν μ€νΈ νκ²½: NVIDIA RTX 5090 32GB, CUDA 12.8, Ubuntu 22.04 μν: β νλ‘λμ μ€λΉ μλ£
π‘ ν΅μ¬ λ©μμ§: vLLMμμ SGLangμΌλ‘ μ ννμ¬ 53.7% μ±λ₯ ν₯μμ λ¬μ±νμ΅λλ€. RTX 5090μ Blackwell μν€ν μ² νΉμ±μ κ³ λ €ν μ΅μ νλ‘ μμ μ μ΄κ³ κ³ μ±λ₯μ LLM μλΉμ€λ₯Ό ꡬμΆν μ μμ΅λλ€.