vLLM을 활용한 6x3090 환경에서의 Qwen3.8-Flash-Next 구동: 7명 동시 접속 및 성능 최적화
Qwen3.8-Flash-Next on six 3090s with vLLM: 7 users at 262k, 6.5k t/s prefill, 57 t/s decode solo / 206 t/s aggregate with all 7 generating. Fixes for the upstream included.
핵심 요약
6개의 3090 GPU 환경에서 vLLM을 최적화하여 7명 동시 접속 시 206 t/s의 처리 성능을 달성함.
- vLLM 최적화 — PLE를 SSD로 옮겨 시스템 RAM 108GB 절약 및 int8 kv 사용으로 VRAM 효율 극대화함.
- 성능 비교 — llama.cpp 대비 프리필 속도와 단일 사용자 처리량에서 압도적인 성능을 보임.
- 하드웨어 구성 — 6x3090, 7950X, 187GB RAM을 사용한 소비자용 PC 환경에서 구현함.
- 한계점 — NVIDIA GPU 전용이며, 배치 처리 시 출력값이 솔로 실행과 완벽히 일치하지 않는 비결정성 문제가 있음.
Write-up, serve command, raw data: https://github.com/lukolszewski/vllm
이건 vLLM 수정 사항이랑 설정법인데, PLE를 SSD에 올려서 시스템 RAM 108GB 아끼고, int8 kv 써서 fp8 성능 저하 없이 VRAM에 사용자 더 쑤셔 넣는 방법임. 예전에 올렸던 llama-multigpu 성능 개선이랑 비교한 속도는 여기 https://www.reddit.com/r/LocalLLaMA/comments/1x023z4/qwen38flashnext\_on\_6x3090\_6x4090\_without\_nvlink/(https://www.reddit.com/r/LocalLLaMA/comments/1x023z4/qwen38flashnext_on_6x3090_6x4090_without_nvlink/) 참고해라.
순정 vLLM은 이 기기에서 모델 실행조차 안 됨. --pipeline-parallel-size > 1을 거부하고, TP는 1/2/4/8만 지원해서 카드 6개는 그냥 무용지물임. 그렇다고 24GB 카드 하나에 TP=1로 올리기엔 모델이 너무 큼. 102GB짜리 n-gram (PLE) 테이블을 SSD로 빼는 건 오늘 순정 vLLM PR로 올라왔더라(원래는 RAM에 다 때려 박는 게 국룰임). 그리고 Ampere 아키텍처에서 fp8 KV 쓰면 그냥 뻗어버림.
테스트 환경은 일반 소비자용 PC임. EPYC이나 스레드리퍼도 아니고 P2P도 안 됨. 그래도 쓸만함(3090 6장, 7950X, 187GB RAM, 썬더볼트 뒤에 카드 4장). GPTQ-INT4 체크포인트 썼고(nvfp4가 더 느렸음), 셀당 스트리밍 요청 하나씩 넣었을 때 tokens/s는 이럼:
| workload | ctx | llama.cpp-multigpu | vLLM, this branch (int8 KV) |
|---|---|---|---|
| prefill, 1 session | 250k | 2111 | 6574 |
| time to first token, 250k prompt | 250k | ~118 s | 37.8 s |
| decode, 1 session | 250k | 33.7 | 57.6 |
| decode, 5 sessions, each / sum | 250k | ~30 / ~150 (at 200k) | 37.9 / 190 |
| decode, 7 sessions, each / sum | 250k | n/a (5 slots) | 29.4 / 206 |
| 262k contexts resident in GPU KV | 5 |
