| #!/usr/bin/env bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| set -euo pipefail |
|
|
| CONFIG="${1:-awq-8k}" |
| PORT="${PORT:-8000}" |
| HOST="${HOST:-0.0.0.0}" |
|
|
| |
| MODEL_AWQ="QuantTrio/Qwen3.6-27B-AWQ" |
| MODEL_FP8="Qwen/Qwen3.6-27B-FP8" |
| MODEL_GPTQ="groxaxo/Qwen3.6-27B-GPTQ-Pro-4bit" |
| MODEL_DRAFT="Qwen/Qwen2.5-0.5B-Instruct" |
|
|
| |
| case "$CONFIG" in |
| |
| |
| |
| awq-8k) |
| MODEL="$MODEL_AWQ" |
| MAX_MODEL_LEN=8192 |
| GPU_MEM=0.90 |
| MAX_SEQS=8 |
| MAX_BATCHED=32768 |
| DTYPE="auto" |
| ATTENTION="flashinfer" |
| KV_CACHE_DTYPE="fp8" |
| CHUNKED_PREFILL=true |
| BLOCK_SIZE=16 |
| SWAP_SPACE=4 |
| SPEC_DRAFT="" |
| ;; |
| awq-8k-fast) |
| MODEL="$MODEL_AWQ" |
| MAX_MODEL_LEN=8192 |
| GPU_MEM=0.90 |
| MAX_SEQS=16 |
| MAX_BATCHED=65536 |
| DTYPE="auto" |
| ATTENTION="flashinfer" |
| KV_CACHE_DTYPE="fp8" |
| CHUNKED_PREFILL=true |
| BLOCK_SIZE=32 |
| SWAP_SPACE=8 |
| SPEC_DRAFT="" |
| ;; |
| awq-16k) |
| MODEL="$MODEL_AWQ" |
| MAX_MODEL_LEN=16384 |
| GPU_MEM=0.90 |
| MAX_SEQS=4 |
| MAX_BATCHED=32768 |
| DTYPE="auto" |
| ATTENTION="flashinfer" |
| KV_CACHE_DTYPE="fp8" |
| CHUNKED_PREFILL=true |
| BLOCK_SIZE=32 |
| SWAP_SPACE=8 |
| SPEC_DRAFT="" |
| ;; |
| |
| |
| |
| fp8-8k) |
| MODEL="$MODEL_FP8" |
| MAX_MODEL_LEN=8192 |
| GPU_MEM=0.88 |
| MAX_SEQS=4 |
| MAX_BATCHED=16384 |
| DTYPE="auto" |
| ATTENTION="flashinfer" |
| KV_CACHE_DTYPE="auto" |
| CHUNKED_PREFILL=true |
| BLOCK_SIZE=16 |
| SWAP_SPACE=4 |
| SPEC_DRAFT="" |
| ;; |
| fp8-8k-kvc) |
| |
| MODEL="$MODEL_FP8" |
| MAX_MODEL_LEN=8192 |
| GPU_MEM=0.85 |
| MAX_SEQS=6 |
| MAX_BATCHED=16384 |
| DTYPE="auto" |
| ATTENTION="flashinfer" |
| KV_CACHE_DTYPE="fp8" |
| CHUNKED_PREFILL=true |
| BLOCK_SIZE=16 |
| SWAP_SPACE=4 |
| SPEC_DRAFT="" |
| ;; |
| |
| |
| |
| gptq-8k) |
| MODEL="$MODEL_GPTQ" |
| MAX_MODEL_LEN=8192 |
| GPU_MEM=0.90 |
| MAX_SEQS=8 |
| MAX_BATCHED=32768 |
| DTYPE="auto" |
| ATTENTION="flashinfer" |
| KV_CACHE_DTYPE="fp8" |
| CHUNKED_PREFILL=true |
| BLOCK_SIZE=16 |
| SWAP_SPACE=4 |
| SPEC_DRAFT="" |
| ;; |
| |
| |
| |
| |
| spec-8k) |
| MODEL="$MODEL_AWQ" |
| MAX_MODEL_LEN=8192 |
| GPU_MEM=0.88 |
| MAX_SEQS=4 |
| MAX_BATCHED=16384 |
| DTYPE="auto" |
| ATTENTION="flashinfer" |
| KV_CACHE_DTYPE="fp8" |
| CHUNKED_PREFILL=false |
| BLOCK_SIZE=16 |
| SWAP_SPACE=4 |
| SPEC_DRAFT="$MODEL_DRAFT" |
| ;; |
| *) |
| echo "β Unknown config: $CONFIG" |
| echo "" |
| echo "Available optimized configs:" |
| echo " awq-8k β
AWQ 4-bit, 8k ctx, all optimizations (recommended)" |
| echo " awq-8k-fast AWQ 4-bit, 8k ctx, max throughput" |
| echo " awq-16k AWQ 4-bit, 16k ctx" |
| echo " fp8-8k FP8 weight, 8k ctx" |
| echo " fp8-8k-kvc FP8 weight + FP8 KV cache" |
| echo " gptq-8k GPTQ Marlin, 8k ctx" |
| echo " spec-8k Speculative decoding (AWQ + 0.6B draft)" |
| exit 1 |
| ;; |
| esac |
|
|
| echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ" |
| echo "β vLLM OPTIMIZED β Qwen SpeedLab β" |
| echo "β GPU: RTX 3090 (24 GB, SM 8.6) β" |
| echo "ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ" |
| echo "" |
| echo " Config: $CONFIG" |
| echo " Model: $MODEL" |
| echo " Max model len: $MAX_MODEL_LEN" |
| echo " GPU mem util: $GPU_MEM" |
| echo " Max seqs: $MAX_SEQS" |
| echo " Max batched: $MAX_BATCHED" |
| echo " Dtype: $DTYPE" |
| echo " Attention: $ATTENTION" |
| echo " KV cache dtype: $KV_CACHE_DTYPE" |
| echo " Chunked prefill: $CHUNKED_PREFILL" |
| echo " Block size: $BLOCK_SIZE" |
| echo " Swap space: ${SWAP_SPACE}GB" |
| if [[ -n "$SPEC_DRAFT" ]]; then |
| echo " Draft model: $SPEC_DRAFT" |
| fi |
| echo "" |
|
|
| |
| CMD=( |
| vllm serve "$MODEL" |
| --host "$HOST" |
| --port "$PORT" |
| --max-model-len "$MAX_MODEL_LEN" |
| --gpu-memory-utilization "$GPU_MEM" |
| --dtype "$DTYPE" |
| --max-num-seqs "$MAX_SEQS" |
| --max-num-batched-tokens "$MAX_BATCHED" |
| --tensor-parallel-size 1 |
| --trust-remote-code |
| --enable-prefix-caching |
| ) |
|
|
| |
| if [[ "$ATTENTION" == "flashinfer" ]]; then |
| CMD+=(--attention-backend flashinfer) |
| fi |
|
|
| |
| if [[ "$KV_CACHE_DTYPE" == "fp8" ]]; then |
| CMD+=(--kv-cache-dtype fp8) |
| fi |
|
|
| |
| if [[ "$CHUNKED_PREFILL" == "true" ]]; then |
| CMD+=(--enable-chunked-prefill) |
| fi |
|
|
| |
| CMD+=(--block-size "$BLOCK_SIZE") |
|
|
| |
| CMD+=(--swap-space "$SWAP_SPACE") |
|
|
| |
| CMD+=(--max-seq-len-to-capture "$MAX_MODEL_LEN") |
|
|
| |
| if [[ -n "$SPEC_DRAFT" ]]; then |
| CMD+=(--speculative-model "$SPEC_DRAFT") |
| |
| CMD+=(--num-speculative-tokens 5) |
| fi |
|
|
| echo " Command:" |
| echo " ${CMD[*]}" |
| echo "" |
| echo " Log: /tmp/vllm_optimized_${CONFIG}.log" |
| echo "" |
|
|
| |
| "${CMD[@]}" 2>&1 | tee "/tmp/vllm_optimized_${CONFIG}.log" |
|
|