VLLM 로그 파일에서 파싱됨
이미지에 대한 대량 캡셔닝(bulk captioning)을 수행할 때 총합 약 2000 tps를 기록함. 위 내용은 클라이언트가 30개의 동시 스트림(concurrent streams)을 실행하는 동안 vllm 로그에서 파싱된 것임. 각 동시 스트림은 이미지와 프롬프트가 포함된 1번째 요청을 수행한 후, 동일한 스트림에서 2번째 요청을 수행함 (따라서 첫 번째 Q&A는 캐싱됨). 일반적인 로그 라인:
Engine 000: Avg prompt throughput: 1301.0 tokens/s, Avg generation throughput: 1924.0 tokens/s, Running: 30 reqs, Waiting: 0 reqs, GPU KV cache usage: 4.8%, Prefix cache hit rate: 0.0%, MM cache hit rate: 50.1%
#!/usr/bin/env bash
set -euo pipefail
source /etc/vllm/env
mkdir -p /mnt/sdb/vllm/logs
exec > >(tee -a "/mnt/sdb/vllm/logs/$(basename "$0" .sh)$(date +%Y%m%d%H%M%S).log") 2>&1
export CUDA_VISIBLE_DEVICES=1 # Blackwell GPU 사용
vllm serve \ nvidia/Qwen3.6-35B-A3B-NVFP4
--served-model-name qwen36_35b_a3b
--max-num-seqs 30
--max-model-len 36768
--gpu-memory-utilization 0.90
--enable-prefix-caching
--limit-mm-per-prompt '{"video":0,"image":1}'
--mm-processor-kwargs '{"min_pixels": 3136, "max_pixels": 500000}'
--trust-remote-code
--host 0.0.0.0
--port "${VLLM_PORT}"
--attention-backend FLASHINFER
이것은 RTX Pro 6000 Blackwell에서 실행 중이지만, 아직 VRAM을 거의 다 사용하고 있지는 않다고 생각함. 개별 채팅이 VRAM에 들어갈 정도로 길지 않다면 5090도 근접한 성능을 낼 수 있을 것임. 아마도 KV 캐시(KV cache)가 방출(evict)되어 성능에 영향을 줄 수도 있음.
다음은 lmarena-ai/VisionArena-Chat을 테스트 세트로 사용하여 다른 밀집 모델(dense models)과 비교한 또 다른 그래프임:
lmarena-ai/VisionArena-Chat
quanttrio는 Qwen 3.5이며, 나머지는 모두 Qwen 3.5임. 27B는 밀집(dense) 모델이고, 35B는 MoE(Mixture of Experts) 모델임. Unsloth는 약 26GB이고 nvidia는 약 22GB인데, 이는 Unsloth가 더 많은 비양자화(unquantized) 레이어를 남겨두었기 때문이라고 믿음. nvidia 35b는 23.4GB임.
동시성(concurrency) 환경에서 MoE가 이렇게 앞서 나가는 것에 실제로 조금 놀랐음. 하지만 몬테카를로(Monte Carlo)를 실행해 보면, c=24일 때 순방향 실행(forward execution)당 선택된 전문가(experts)의 합집합이 약 53%로 예상되며, q=0.95일 때도 여전히 약 56%에 불과함. 또는 c=30일 때 약 61%임.
위 그래프에서 테스트한 바와 같이, 나의 초기 직관은 압도적인 대다수의 전문가(experts)가 선택되어 35B MoE(Mixture-of-Experts)가 35B 밀집(dense) 모델처럼 작동할 것이라는 것이었으나, 실제로는 겨우 절반을 조금 넘는 수준임.
제출자: /u/Freonr2
[링크] [댓글]