사용기 - 메모리는 넉넉하지만 GPU는 부족한 환경에서의 Qwen 3.8 Flash Next
Experience report - Qwen 3.8 Flash Next on memory rich, GPU poor setup
핵심 요약
메모리 중심의 서버 환경에서 Qwen 3.8 Flash Next 모델을 구동한 성능 분석 및 최적화 경험 공유.
- 하드웨어 구성 — 2018년형 Thinkstation P520, Xeon W-2145, 256GB ECC RAM, RTX 3060 12GB 조합 사용함.
- 성능 비교 — 35B 모델 대비 Flash Next 모델이 훨씬 뛰어난 품질을 보여주지만, 메모리 대역폭에 매우 민감함.
- 최적화 팁 — MoE 모델은 실제 문맥으로 벤치마크해야 하며, 시스템 부하가 성능에 큰 영향을 미침.
- 운영 전략 — 상호작용이 필요 없는 작업에는 Flash Next를, 빠른 응답이 필요한 작업에는 35B 모델을 병행 사용함.
(Claude가 쓴 거 아님, 일요일 아침에 커피를 너무 적게 마셔서 생긴 오류랑 개판인 텍스트는 다 내 탓임 ;)
우리 집 서버는 2023년에 약 600유로 주고 산 2018년형 Thinkstation P520임.
여기에 2TB Samsung 980 Pro NVMe, Xeon W-2145, 12GB 3060으로 업그레이드해서 총비용은 1,000유로 정도 들었음. 적은 돈은 아니지만, 이 정도 성능 뽑아내는 거 생각하면 미친 가격은 아님. 256GB ECC DDR4 2666mhz에 쿼드 채널이라 대역폭은 80GB/s 정도 나옴.
Qwen 3.6 35b a3b Q4_K_M을 메인으로 썼는데, 컴파일할 때 intel MKL 확장 넣은 llama.cpp 빌드 써서 돌렸음. 제일 똑똑한 모델은 아니지만, 기본적인 작업 하기엔 딱 적당함. 양자화 때문에 멍청해지긴 하는데, 이 사양에선 더 큰 양자화 모델 쓰면 처리 속도가 개박살 나서 어쩔 수 없음.
Qwen 3.6 35b a3b Q4_K_M
상주 메모리: ~20GB RAM
Prefill: ~400tps
Gen: 30-50tps
CTX: 128k
VRAM: ~10.5GB.
Flash next는 차원이 다른 놈임. 훨씬 큰 모델인데도 처리 속도랑 prefill 성능이 꽤 잘 나옴. 당연한 소리지만 이 사양에선 모델 덩치가 성능을 결정함.
Qwen 3.8 Flash Next UD-Q4_K_XL
상주 메모리: ~110GB RAM
Prefill: ~200tps
Gen: 12-15tps
CTX: 65k
VRAM: ~10.5GB.
느리고 컨텍스트도 짧긴 한데, 결과물 퀄리티는 35b랑 비교가 안 될 정도로 압도적임.
돌려보면서 몇 가지 흥미로운 점을 발견함:
-
35b는 모델 대부분이 GPU에 올라가서 그런지, 다른 작업이랑 같이 돌려도 성능 저하가 거의 없음.
-
Flash next는 서버에서 다른 작업(opencode 실행 같은 거) 조금만 해도 성능이 3-5 tps까지 곤두박질침. 메모리를 미친 듯이 갈궈대서 병목 현상에 엄청 민감함. 다른 박스에서 opencode 돌릴 때만 제대로 쓸 수 있음.
-
합성 데이터나 랜덤 콘텐츠 벤치마크는 성능 측정할 때 완전히 엉뚱한 답을 내놓음. MoE 모델 성능 잴 때는 꼭 현실적인 컨텍스트를 써야 함. 서버 튜닝할 때 이거 때문에 낚였는데, opencode로 넘어가서 제대로 테스트해 보고 나서야 알았음.
참고하라고 llama.cpp 서버 실행 명령어 두 개 남겨둠. Flash next는 퀄리티 뽑으려고 thinking 제한을 안 걸었고, 35b는 속도 때문에 제한을 걸었음. 확실히 35b가 더 멍청해지긴 함. 35b는 검열 없는 버전 쓰는데, 속도도 빠르고 권한 문제로 고민할 시간 줄어들어서 실험용으로 딱임.
Flash next:
llama-server \
--model /mnt/storage/models/qwen38-flash-next/UD-Q4_K_XL/Qwen3.8-Flash-Next-UD-Q4_K_XL-00001-of-00004.gguf \
--mmproj /mnt/storage/models/qwen38-flash-next/mmproj-F16.gguf \
--no-mmproj-offload \
--alias qwen3.8-flash-next \
--host 0.0.0.0 \
--port 8080 \
--n-gpu-layers 999 \
--n-cpu-moe 48 \
--batch-size 2048 \
--ubatch-size 2048 \
--load-mode none \
--threads 16 \
--threads-batch 16 \
--threads-http 2 \
--ctx-size 65536 \
-ctk f16 \
-ctv f16 \
--flash-attn on \
--cache-reuse 256 \
--temp 0.7 \
--top-p 0.80 \
--top-k 20 \
--min-p 0.0 \
--presence-penalty 1.5 \
--repeat-penalty 1.0 \
--jinja \
--reasoning-format deepseek \
--parallel 1 \
--slots \
--slot-save-path /mnt/storage/models/.cache/slots \
--metrics \
--log-timestamps \
--timeout 600
