Skip to content
BAEM1N.DEV — AI, RAG, LLMOps 개발 블로그
Go back

Qwen3.5 로컬 추론 벤치마크 결과표: 4대 하드웨어 × 5개 엔진

Updated:

TL;DR — Qwen3.5 4개 모델을 4대 하드웨어 × 5개 엔진으로 측정한 결과: 생성 속도 1위는 vLLM GPTQ-Marlin on RTX 3090×2의 35B-A3B MoE = 156.3 tok/s. 같은 llama.cpp 기준 크로스 하드웨어로는 3090×2 > M5 Max > DGX Spark ≈ Ryzen AI. 122B MoE는 3090×2에선 OOM, 나머지 3대(128GB 유니파이드 메모리)에선 실행 가능 — Ryzen AI MAX 395+에서도 22.9 tok/s.

cold prefill (--no-cache-prompt) + per-run random nonce + 서버 재시작 + 실행 순서 랜덤화. 각 조합 warmup 1회 + measure 5회 중앙값.

실험 설계 → 1편: 방법론 · 분석 → 2편: 상세 비교 · 코드 & raw CSV → GitHub: baem1n/llm-bench

Table of contents

Open Table of contents

하드웨어

메모리 대역폭이 LLM 생성 속도를 결정한다. 이 표의 대역폭 행이 아래 모든 벤치마크 결과를 설명한다.

M5 Max (128GB)RTX 3090×2 (48GB)DGX Spark GB10 (128GB)Ryzen AI MAX 395 (96GB)
GPUApple GPU 40CRTX 3090 ×2GB10 BlackwellRadeon 8060S RDNA 3.5
메모리128GB unified128GB DDR4 + 48GB VRAM128GB unified128GB unified (96GB VRAM)
대역폭546 GB/s~936 GB/s GDDR6X273 GB/s256 GB/s

생성 속도 (Generation TPS)

Track B: 동일 llama.cpp + 동일 unsloth GGUF. 입력 64토큰, 출력 512토큰.

Q4_K_M (4-bit)

Q4_K_M 생성 속도: RTX 3090×2가 VRAM에 올라가는 모든 모델에서 1위. 122B MoE는 3090 48GB 초과로 OOM — Mac M5 Max가 42.9 tok/s로 최고, Ryzen AI MAX 395+가 22.9 tok/s로 DGX Spark(21.7)를 근소하게 앞선다.

모델M5 MaxRTX 3090×2DGX SparkRyzen AI
9B Dense75.9117.636.832.6
27B Dense24.841.411.510.3
35B-A3B MoE94.1138.959.658.0
122B-A10B MoE42.9OOM21.722.9

Q8_0 (8-bit)

Q8_0 생성 속도: 양자화를 Q4→Q8로 올리면 가중치 크기가 2배가 되어 대역폭 제약이 심해진다. 3090×2가 9B에서 82.2 tok/s로 여전히 1위지만 Q4 대비 -30% 수준.

모델M5 MaxRTX 3090×2DGX SparkRyzen AI
9B50.882.224.321.7
27B16.927.57.67.1
35B-A3B MoE88.4130.352.650.8

프리필 속도 (Prefill TPS)

llama.cpp, Q4_K_M. 단위: tok/s.

9B

9B prefill: 3090×2가 16K 입력에서 6,244 tok/s로 최고. Ryzen AI는 16K까지는 버티지만 64K/128K에서 급락 (159/56 tok/s) — Strix Halo iGPU의 긴 컨텍스트 약점.

입력 길이M5 MaxRTX 3090×2DGX SparkRyzen AI
1K1,7053,2582,217205
4K1,8445,3172,490278
16K1,5906,2442,239915
64K9555,8271,093159
128K7114,95298656

35B-A3B MoE

35B MoE prefill: 3090×2가 16K에서 6,131 tok/s로 1위. Ryzen AI는 9B 대비 MoE에서 훨씬 안정적(128K에서 582 tok/s) — MoE의 active param 감소가 iGPU에 유리.

입력 길이M5 MaxRTX 3090×2DGX SparkRyzen AI
1K2,3023,3721,602732
4K2,7985,3021,949924
16K2,4176,1311,696960
64K1,2143,7261,180767
128K7323,142856582

122B-A10B MoE

122B MoE prefill: 3090×2는 KV cache 256K 초과로 전 트랙 OOM. 짧은 컨텍스트는 M5 Max(546 GB/s)가 유리, 64K 이상부터는 DGX Spark가 역전 — GB10 Blackwell의 긴 컨텍스트 효율.

입력 길이M5 MaxRTX 3090×2DGX SparkRyzen AI
1K815OOM536215
4K980OOM663275
16K722OOM614312
64K439OOM445258
128K296OOM341205

엔진 비교 (gen-512, Q4_K_M)

Track A: 같은 하드웨어 안에서 사용 가능한 엔진끼리만 비교. 크로스 하드웨어 비교는 위 Track B 참조.

M5 Max

Mac에서는 MLX가 전 모델 1위. 122B MoE에서 llama.cpp 대비 +73% 격차 — Apple Silicon 전용 최적화의 힘.

모델MLXllama.cppOllama
9B102.475.452.2
27B28.820.615.7
35B-A3B138.391.057.0
122B66.838.528.6

RTX 3090×2

3090×2에서는 vLLM GPTQ-Marlin이 35B MoE에서 156.3 tok/s로 전체 실험 최고 속도. Dense 모델에선 llama.cpp가 더 빠름 — vLLM은 MoE + GPTQ 조합에서만 우위.

모델llama.cppOllamavLLM GPTQ
9B117.3100.583.6
27B41.536.719.3
35B-A3B138.6101.7156.3
122BOOM4.7 🚫N/A

DGX Spark GB10

DGX Spark는 llama.cpp = Ollama 동률. 둘 다 동일 CUDA 경로 사용. vLLM Docker는 CUDA 13/12 호환 이슈로 -40% 성능.

모델llama.cppOllamavLLM Docker
9B35.735.112.9
27B11.511.48.5
35B-A3B61.259.234.8
122B22.06.6N/A

Ryzen AI MAX 395

Ryzen AI는 llama.cpp가 전 모델 1위, Lemonade(AMD 공식)가 2위, Ollama는 122B에서 swap으로 추락(4.6 tok/s). 122B도 llama.cpp로 22.8 tok/s로 실사용 가능.

모델llama.cppOllamaLemonade
9B36.231.933.2
27B12.311.111.3
35B-A3B58.443.948.0
122B22.84.6 🚫N/A

프리필 엔진 비교 (prefill-16k, Q4_K_M, tok/s)

프리필은 compute-bound → vLLM CUDA Graph + FlashAttention의 독무대. 3090 vLLM의 35B MoE prefill = 13,146 tok/s, llama.cpp 대비 +214%. 122B MoE prefill은 Mac MLX(1,281)가 단독 최고 — 다른 엔진은 OOM 또는 N/A.

엔진 × 하드웨어9B27B35B MoE122B MoE
3090 vLLM8,3982,84513,146N/A
DGX vLLM Docker6,7731,6144,331N/A
3090 llama.cpp6,2361,7994,186OOM
Mac MLX3,0117843,7741,281
3090 Ollama3,1019982,239141
DGX llama.cpp2,2366251,694623
Mac llama.cpp1,2913522,412658
Ryzen llama.cpp915298960313

MoE 효율

35B-A3B MoE(3B active)가 9B Dense보다 빠르다 — 전 플랫폼 예외 없음. 대역폭이 낮을수록 MoE 우위가 커진다 (Ryzen AI +78%). active param 수가 총 param 수보다 중요하다는 걸 보여주는 핵심 데이터.

하드웨어9B Dense35B MoEMoE 우위
M5 Max75.994.1+24%
RTX 3090×2117.6138.9+18%
DGX Spark36.859.6+62%
Ryzen AI32.658.0+78%

OOM / 실패

하드웨어조합사유
3090×2122B llamacpp prefill48GB + 256K KV cache 초과
3090×2vLLM 27B/35B Q8 BF16BF16 55~70GB > 48GB
3090×2 / RyzenOllama 122Bswap (4.6~4.7 tok/s)
MacOllama 27B~122B측정 진행 중

데이터

실험 코드 + raw data: baem1n/llm-bench


AI-assisted content
Share this post on:

Previous Post
로컬 LLM 추론 벤치마크: 4대 하드웨어 × 5개 엔진 실험 설계
Next Post
DeepCoWork #12: GitHub Actions 크로스 플랫폼 빌드 -- PyInstaller 사이드카, CI/CD