| #!/bin/bash |
| |
| |
| |
|
|
| source "$(dirname "$0")/common.sh" |
|
|
| BENCH_OUT="${LOG_DIR}/benchmark-$(date +%Y%m%d-%H%M%S).txt" |
|
|
| log "βββββββββββββββββββββββββββββββββββββββββββββββ" |
| log "Qwen SpeedLab Benchmark Suite" |
| log "Results: ${BENCH_OUT}" |
| log "βββββββββββββββββββββββββββββββββββββββββββββββ" |
|
|
| { |
| echo "==============================================" |
| echo "Qwen SpeedLab Benchmarks" |
| echo "Date: $(date)" |
| echo "GPU: $(nvidia-smi --query-gpu=name --format=csv,noheader 2>/dev/null || echo 'Unknown')" |
| echo "Model: Qwen 3.6 27B Q4_K_M" |
| echo "==============================================" |
| echo "" |
|
|
| |
| echo "βββ Benchmark 1: Autoregressive Baseline βββ" |
| "${LLAMA_BENCH}" \ |
| -m "${TARGET_MODEL}" \ |
| -ngl "${GPU_LAYERS}" \ |
| -b "${BATCH_SIZE}" \ |
| -ub "${UBATCH_SIZE}" \ |
| -p 512 \ |
| -n 256 \ |
| -fa 1 \ |
| --cache-type-k q4_0 \ |
| --cache-type-v q4_0 \ |
| 2>&1 |
| echo "" |
|
|
| |
| echo "βββ Benchmark 2: MTP Self-Speculative (n_max=3) βββ" |
| "${LLAMA_BENCH}" \ |
| -m "${TARGET_MODEL}" \ |
| -ngl "${GPU_LAYERS}" \ |
| -b "${BATCH_SIZE}" \ |
| -ub "${UBATCH_SIZE}" \ |
| -p 512 \ |
| -n 256 \ |
| -fa 1 \ |
| --cache-type-k q4_0 \ |
| --cache-type-v q4_0 \ |
| --spec-type draft-mtp \ |
| --spec-draft-n-max 3 \ |
| 2>&1 |
| echo "" |
|
|
| |
| echo "βββ Benchmark 3: MTP + TurboQuant KV (turbo3) βββ" |
| "${LLAMA_BENCH}" \ |
| -m "${TARGET_MODEL}" \ |
| -ngl "${GPU_LAYERS}" \ |
| -b "${BATCH_SIZE}" \ |
| -ub "${UBATCH_SIZE}" \ |
| -p 512 \ |
| -n 256 \ |
| -fa 1 \ |
| --cache-type-k turbo3 \ |
| --cache-type-v turbo3 \ |
| --spec-type draft-mtp \ |
| --spec-draft-n-max 3 \ |
| 2>&1 |
| echo "" |
|
|
| |
| if [ -f "${DFLASH_DRAFT}" ]; then |
| echo "βββ Benchmark 4: DFlash Speculative Decoding βββ" |
| "${LLAMA_BENCH}" \ |
| -m "${TARGET_MODEL}" \ |
| -md "${DFLASH_DRAFT}" \ |
| -ngl "${GPU_LAYERS}" \ |
| -b "${BATCH_SIZE}" \ |
| -ub "${UBATCH_SIZE}" \ |
| -p 512 \ |
| -n 256 \ |
| -fa 1 \ |
| --cache-type-k q4_0 \ |
| --cache-type-v q4_0 \ |
| --spec-type dflash \ |
| --spec-dflash-cross-ctx 1024 \ |
| 2>&1 |
| echo "" |
| fi |
|
|
| |
| echo "βββ Benchmark 5: Long Context (32K prompt) βββ" |
| "${LLAMA_BENCH}" \ |
| -m "${TARGET_MODEL}" \ |
| -ngl "${GPU_LAYERS}" \ |
| -b "${BATCH_SIZE}" \ |
| -ub "${UBATCH_SIZE}" \ |
| -p 32768 \ |
| -n 128 \ |
| -fa 1 \ |
| --cache-type-k q4_0 \ |
| --cache-type-v q4_0 \ |
| --spec-type draft-mtp \ |
| --spec-draft-n-max 3 \ |
| 2>&1 |
| echo "" |
|
|
| } | tee "${BENCH_OUT}" |
|
|
| log "Benchmarks complete! Results saved to ${BENCH_OUT}" |
|
|
| |
| echo "" |
| echo "βββββββββββββββββββββββββββββββββββββββββββββββ" |
| echo "Quick Reference: Expected tok/s on RTX 3090" |
| echo "βββββββββββββββββββββββββββββββββββββββββββββββ" |
| echo "Baseline (autoregressive): ~35-45 tok/s" |
| echo "MTP (self-speculative): ~55-70 tok/s (1.5-2x)" |
| echo "MTP + TurboQuant KV: ~60-80 tok/s (1.7-2.2x)" |
| echo "DFlash (block diffusion): ~78-130 tok/s (2.2-3.5x)" |
| echo "" |
| echo "Note: Speed varies by task type." |
| echo "Code/structured β highest; prose/creative β lower" |
|
|