| #!/usr/bin/env bash |
| |
| |
| set -u |
| cd "$(dirname "$0")/.." |
|
|
| MODEL="${MODEL_DIR:-/path/to/Qwen3-235B-A22B-Instruct-2507-BF16}" |
| BIN="./build/qwen3-moe-aclnn" |
| LAUNCH="./scripts/tp_launch.sh" |
| TP=16 |
| N_PREDICT=200 |
| N_RUNS=3 |
| PROMPT="Write a long Python function that computes the Fibonacci sequence with memoization, extensive comments, and type hints." |
| VOCAB="tokenizer_data/vocab.bin" |
|
|
| OUT=/tmp/bench_pld_k.csv |
| echo "k,runs,median,max,avg_accept" > $OUT |
|
|
| for K in 4 6 8 10 12 16; do |
| tgs=() accs=() |
| for r in $(seq 1 $N_RUNS); do |
| out=$(${LAUNCH} ${TP} ${BIN} --model-dir "$MODEL" \ |
| --prompt "$PROMPT" --n-predict $N_PREDICT --max-seq 512 \ |
| --vocab "$VOCAB" --seed 0 --no-stream \ |
| --pld --pld-k $K --pld-ngram 1 --pld-fixed-k 2>&1) |
| tg=$(echo "$out" | grep "decode :" | awk '{print $(NF-2)}') |
| acc=$(echo "$out" | grep "\[pld\]" | grep -oE "avg=[0-9.]+" | cut -d= -f2) |
| tgs+=("${tg:-0}") |
| accs+=("${acc:-0}") |
| done |
| sorted=($(printf '%s\n' "${tgs[@]}" | sort -n)) |
| median="${sorted[$((${#sorted[@]}/2))]}" |
| max="${sorted[-1]}" |
| accs_avg=$(printf '%s\n' "${accs[@]}" | awk '{s+=$1} END {printf "%.2f", s/NR}') |
| echo "$K,$(IFS=/; echo "${tgs[*]}"),$median,$max,$accs_avg" >> $OUT |
| printf " K=%-2d runs=[%s] median=%s max=%s accept=%s\n" "$K" "${tgs[*]}" "$median" "$max" "$accs_avg" |
| done |
|
|
| echo "" |
| echo "====== Sorted by median ======" |
| (head -1 $OUT; tail -n +2 $OUT | sort -t, -k3 -gr) | column -t -s, |
|
|