Skip to content

Read Qwen FP8 native MTP progress #117

Read Qwen FP8 native MTP progress

Read Qwen FP8 native MTP progress #117

Workflow file for this run

name: SpeedBench AL Collection
run-name: Read Qwen FP8 native MTP progress
on:
workflow_dispatch:
inputs:
runner:
description: Controller runner label for read-only observation
required: true
type: string
observe-runner-names:
description: Runner names owning the target allocations
required: true
type: string
permissions:
contents: read
jobs:
observe:
# Controller-only reads: this job neither allocates GPUs nor runs benchmarks.
runs-on: ${{ fromJSON(format('["self-hosted",{0}]', toJSON(inputs.runner))) }}
timeout-minutes: 5
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with: { persist-credentials: false }
- name: Read live server state
env:
OBSERVE_RUNNER_NAMES: ${{ inputs.observe-runner-names }}
run: |
set -eo pipefail
source benchmarks/benchmark_lib.sh --validation-only
check_env_vars OBSERVE_RUNNER_NAMES
for target in $OBSERVE_RUNNER_NAMES; do
job_id=$(squeue --name="$target" --noheader --format='%i')
if [[ ! "$job_id" =~ ^[0-9]+$ ]]; then
echo "$target: no unique active allocation"
continue
fi
work_dir=$(scontrol show job -o "$job_id" | sed -n 's/.* WorkDir=\([^ ]*\).*/\1/p')
echo "TARGET $target"
python3 - "$work_dir/server.log" <<'PY'
import pathlib, re, sys
path = pathlib.Path(sys.argv[1])
if not path.is_file():
print('Server log is not present yet')
else:
text = path.read_text(errors='replace')
for key in ['method', 'num_speculative_tokens', 'rejection_sample_method', 'synthetic_acceptance_length']:
match = re.search(r"'" + key + r"': ([^,}]+)", text)
print(key, match[1] if match else 'not logged yet')
lines = text.splitlines()
metrics = [line for line in lines if 'SpecDecoding metrics:' in line]
print('\n'.join(metrics[-2:] if metrics else lines[-5:]))
errors = [line for line in lines if 'Traceback (most recent' in line or 'ERROR' in line]
print('ERROR LINES', '\n'.join(errors[-5:]))
PY
done