vLLM을 사용한 6개의 3090 GPU 환경에서 Qwen3.8-Flash-Next 성능 테스트: 사용자 수 및 토큰 처리량 분석
요약
본 보고서는 vLLM을 수정하여 6개의 RTX 3090 GPU 환경에서 Qwen3.8-Flash-Next 모델의 성능을 테스트한 결과를 분석합니다. PLE를 SSD에 배치하고 int8 KV를 사용함으로써 시스템 RAM 절약 및 VRAM 활용도를 높였습니다. 그 결과, vLLM은 Prefill 속도와 단일 사용자 처리량 측면에서 우수하며, 다중 사용자 환경에서는 llama.cpp가 더 안정적인 성능을 제공함을 확인했습니다.
핵심 포인트
- vLLM 수정 버전이 6x3090 환경에서 Qwen 모델 구동 가능성을 입증함.
- PLE를 SSD에 배치하고 int8 KV를 사용해 VRAM 효율성과 시스템 RAM 절약 효과를 얻음.
- 단일 사용자 Prefill 및 속도는 vLLM이 우수하나, 다중 사용자 디코드 안정성은 llama.cpp가 유리함.
- vLLM은 파이프라인 병렬 처리(PP) 기반으로 성능을 보여주며, 이는 사용자에 따라 디코드가 감소하는 경향을 보임.
작성 보고서, 서버 명령어 및 원본 데이터는 다음 링크를 참조하세요: https://github.com/lukolszewski/vllm
이 내용은 vLLM의 수정 사항과 설정을 보여주며, PLE(Prefix Length Extension)을 SSD에 배치하여 시스템 RAM 108GB를 절약하고, int8 KV를 사용하여 fp8의 성능 저하 없이 VRAM에 더 많은 사용자를 수용할 수 있게 합니다. 이전 llama-multigpu 성능 수정 사항과 비교한 속도는 다음과 같습니다: https://www.reddit.com/r/LocalLLaMA/comments/1x023z4/qwen38flashnext_on_6x3090_6x4090_without_nvlink/
업스트림(Upstream) vLLM은 해당 장치에서 이 모델을 아예 시작하지 못합니다. 모델이 --pipeline-parallel-size > 1일 경우 거부하며, TP는 1/2/4/8이어야 하므로 여섯 개의 카드는 이 모델에 쓸모가 없고, 24GB 카드로는 TP=1일 때도 로드할 수 없습니다. 102 GB의 n-gram (PLE) 테이블을 SSD에 배치하는 것은 오늘날 업스트림에서 PR로 나타났습니다(일반적인 설정은 RAM에 유지하는 것). 또한 fp8 KV는 Ampere 아키텍처에서 충돌이 발생합니다.
사용된 장비는 소비자용 PC이며, epyc/threadripper 급도 아니고 P2P 기능도 없습니다. 그럼에도 불구하고 상당히 사용 가능합니다 (6x3090, 7950X, 187 GB RAM, Thunderbolt를 통해 연결된 네 개의 카드). GPTQ-INT4 체크포인트(nvfp4가 더 느렸음)를 사용했으며, 셀당 스트리밍 요청을 하나씩 처리했습니다. 토큰/초: 워크로드 ctx llama.cpp-multigpu vLLM, 이 브랜치 (int8 KV) prefill, 1 세션 250k 2111 6574 첫 토큰까지의 시간, 250k 프롬프트 250k ~118초 37.8초 디코드, 1 세션 250k 33.7 57.6 디코드, 5 세션 각각 / 합계 250k ~30 / ~150 (200k 기준) 37.9 / 190 디코드, 7 세션 각각 / 합계 250k 해당 없음 (5 슬롯) 29.4 / 206
GPU KV에 상주하는 262k 컨텍스트: 5 | 7.33 호스트 RAM 여유 공간 서버 유휴 시 154 GiB | 141 GiB
성능을 내지 못한 부분들: NVFP4 체크포인트는 변경 사항 없이 로드되지만, 이 카드들에서는 GPTQ보다 10~12% 느립니다. 둘 다 Marlin weight-only를 거치기 때문에 Ampere에서 FP4가 가속할 부분이 없습니다.
그리고 파이프라인 병렬 처리(pipeline parallelism) 하에서의 사용자당 디코드는 사용자 수에 따라 감소합니다 (사용자 1/3/5/7일 때 57 -> 44 -> 38 -> 29). 반면 llama.cpp의 그룹화된 디코드(grouped decode)는 거의 평평하게 유지됩니다 (5명일 때 34 -> 30). 따라서: vLLM은 prefill, 단일 사용자 속도 및 수용 인원 측면에서 우수하고; 모든 사용자가 동일한 속도를 원한다면 llama.cpp를 사용하는 것이 좋습니다(llama에 대해 유사한 수정 사항 세트를 이전에 게시했습니다).
AMD 측도 존재합니다: u/alanoo81이 이전에 Radeon V620에서 PP=3으로 모델을 실행했으며, 여기서부터 PP 아이디어가 나왔습니다. 현재 상위 버전에서는 가드 제거만 필요하며 브랜치는 대신 파티션 검사를 유지합니다. AMD를 사용한다면 거기서 시작하세요. 주의사항: 한 모델 패밀리, NVIDIA 전용, 정확히 하나의 장치에서 테스트되었으며 (5060 Ti의 커널 단위 테스트 포함). 배치 출력은 단독 실행과 바이트가 동일하지 않습니다. 이는 vLLM의 일반적인 배치 비결정성 때문입니다. 건강 상태로 로드하는 데 4~5분이 걸립니다. llama.cpp 작업과 마찬가지로, 코드는 검토를 통해서가 아니라 LLM을 사용하여 작성되었고 측정 및 출력 확인(바늘 테스트, 오라클 대비 커널 출력)을 통해 검증되었습니다. 각 변경 사항은 하나의 커밋이므로 필요한 것을 가져가세요. 이것은 제가 유지할 의도가 있는 포크가 아닌 수정 브랜치입니다. /u/flynth92가 제출했습니다 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기