TL;DR: 동일 모델·동일 가중치로 4대 하드웨어를 비교하면, RTX 3090×2가 절대 속도 1위(35B MoE 139 tok/s), Mac M5 Max가 TTFT 안정성 최강. MoE 35B-A3B는 전 플랫폼에서 9B Dense보다 빠르다. vLLM GPTQ-Marlin은 156 tok/s로 전체 실험 최고.
실험 설계는 1편: 실험 방법론을 참고.
데이터 기준: 각 조합별 warmup 1회 + measure 5회 중앙값, CV<0.3 필터, 이상치·중복 제거. Raw CSV: baem1n/llm-bench.
Table of contents
Open Table of contents
하드웨어 스펙
| M5 Max (128GB) | 3090×2 (48GB VRAM) | DGX Spark GB10 (128GB) | Ryzen AI MAX 395 (96GB) | |
|---|---|---|---|---|
| GPU | Apple GPU 40C | RTX 3090 ×2 | GB10 Blackwell | Radeon 8060S 40CU |
| 메모리 | 128GB unified | 128GB DDR4 + 48GB VRAM | 128GB unified | 128GB (96GB VRAM) |
| 대역폭 | 546 GB/s | ~936 GB/s GDDR6X | 273 GB/s | 256 GB/s |
Track B: 하드웨어 비교
Generation 속도 (gen-512, 중앙값 tok/s)
Q4_K_M:
| 모델 | M5 Max | 3090×2 | DGX Spark | Ryzen AI |
|---|---|---|---|---|
| 9B Dense | 75.9 | 117.6 | 36.8 | 32.6 |
| 27B Dense | 24.8 | 41.4 | 11.5 | 10.3 |
| 35B-A3B MoE | 94.1 | 138.9 | 59.6 | 58.0 |
| 122B-A10B MoE | 42.9 | 130.7 | 21.7 | 22.9 |
Q8_0:
| 모델 | M5 Max | 3090×2 | DGX Spark | Ryzen AI |
|---|---|---|---|---|
| 9B | 50.8 | 82.2 | 24.3 | 21.7 |
| 27B | 16.9 | 27.5 | 7.6 | 7.1 |
| 35B-A3B | 88.4 | 130.3 | 52.6 | 50.8 |
MoE(35B-A3B)는 정말 9B Dense보다 빠른가?
전 플랫폼에서 35B-A3B MoE(3B active)가 9B Dense보다 빠르다:
| 플랫폼 | 9B Dense | 35B-A3B MoE | MoE 우위 |
|---|---|---|---|
| M5 Max | 75.9 | 94.1 | +24% |
| 3090×2 | 117.6 | 138.9 | +18% |
| DGX Spark | 36.8 | 59.6 | +62% |
| Ryzen AI | 32.6 | 58.0 | +78% |
어떤 엔진이 각 하드웨어에서 가장 빠른가?
⚠️ 같은 플랫폼 내부에서만 비교. 다른 플랫폼의 다른 엔진끼리는 비교하지 않는다.
M5 Max에서 MLX는 llama.cpp보다 얼마나 빠른가? (gen-512, Q4_K_M)
| 모델 | MLX | llama.cpp | MLX 우위 |
|---|---|---|---|
| 9B | 103.2 | 75.4 | +37% |
| 27B | 28.8 | — | — |
| 35B-A3B | 139.0 | 91.0 | +53% |
| 122B | 66.8 | 38.5 | +73% |
RTX 3090×2에서 vLLM GPTQ-Marlin은 llama.cpp를 이기는가? (gen-512, Q4_K_M)
| 모델 | vLLM | llama.cpp | Ollama |
|---|---|---|---|
| 9B | 83.6 | 117.3 | 100.5 |
| 27B | 19.3 | 41.5 | 36.7 |
| 35B-A3B | 156.3 | 138.7 | 101.7 |
- vLLM 35B GPTQ-Marlin = 156.3 tok/s — 전체 실험 최고 속도
DGX Spark: llamacpp vs Ollama vs vLLM Docker (gen-512, Q4_K_M)
| 모델 | llama.cpp | Ollama | vLLM Docker |
|---|---|---|---|
| 9B | 35.7 | 35.1 | 12.9 |
| 27B | 11.5 | 11.4 | 8.5 |
| 35B-A3B | 61.2 | 59.2 | 34.8 |
| 122B | 22.0 | 6.6 | — |
Ryzen AI: llama.cpp vs Ollama (gen-512, Q4_K_M)
| 모델 | llama.cpp | Ollama |
|---|---|---|
| 9B | 36.2 | 31.9 |
| 27B | 12.3 | 11.1 |
| 35B-A3B | 58.4 | 43.9 |
| 122B | 22.8 | 4.6 |
핵심 발견
- 3090 2-WAY 절대 속도 1위 — GDDR6X 936 GB/s 대역폭. 122B MoE 131 tok/s.
- Mac M5 Max 실사용 최강 — TTFT 120ms 안정. MLX 35B 139 tok/s.
- vLLM GPTQ-Marlin 최고 기록 — 35B MoE 156.3 tok/s (llamacpp +12%).
- DGX Spark 대역폭 병목 — 273 GB/s로 Mac(546)의 절반.
- Ryzen AI 122B 실행 가능 — $2,000대 미니 PC에서 22.9 tok/s.
- MoE 보편적 효율 — 35B-A3B(3B active) > 9B Dense, 전 플랫폼 +18~78%.
OOM / 실패
| 플랫폼 | 조합 | 사유 |
|---|---|---|
| 3090×2 | 122B llamacpp prefill | 48GB + 256K KV 초과 |
| 3090×2 | vLLM 27B/35B Q8 BF16 | VRAM 초과 |
| 3090×2 | Ollama 27B Q8, 122B | swap (5 tok/s) |
| DGX Spark | vLLM pip | CUDA 13/12 호환 → Docker 해결 |
| Ryzen AI | Ollama 122B | swap (4.6 tok/s) |
데이터
각 조합 warmup 1회 + measure 5회 중앙값. 이상치·중복 제거, CV<0.3 필터. 모델: Qwen3.5, 양자화: unsloth GGUF.
| 플랫폼 | 디바이스 CSV |
|---|---|
| M5 Max (macbook-m-series) | mac.csv |
| RTX 3090×2 (linux-3090x2) | linux-3090x2.csv |
| DGX Spark GB10 | dgx-spark.csv |
| Ryzen AI MAX 395+ | ryzen-ai.csv |
| 전체 통합 | all_devices.csv |
실험 코드 + raw data: baem1n/llm-bench
실험 코드: baem1n/llm-bench | 방법론: 1편