From f4813cf5371cbcd8bc70d4aecc5131cb535248b4 Mon Sep 17 00:00:00 2001 From: Gahow Wang Date: Sun, 19 Jul 2026 02:39:16 +0800 Subject: [PATCH] Add Qwen235 vLLM 0.20 real surface runner --- .../run_qwen235_v020_real_surface.sh | 119 ++++++++++++++++++ .../run_qwen30_exact_trace_real_anchor.sh | 29 ++++- 2 files changed, 144 insertions(+), 4 deletions(-) create mode 100644 runs/frontier-fidelity-envelope-v1/run_qwen235_v020_real_surface.sh diff --git a/runs/frontier-fidelity-envelope-v1/run_qwen235_v020_real_surface.sh b/runs/frontier-fidelity-envelope-v1/run_qwen235_v020_real_surface.sh new file mode 100644 index 0000000..5d04bb2 --- /dev/null +++ b/runs/frontier-fidelity-envelope-v1/run_qwen235_v020_real_surface.sh @@ -0,0 +1,119 @@ +#!/usr/bin/env bash + +# Three fresh-server trials for the four-cell Qwen235 vLLM 0.20 surface. + +set -euo pipefail + +OUT="${OUTPUT_ROOT:?OUTPUT_ROOT is required}" +TRACE_ROOT="${TRACE_ROOT:?TRACE_ROOT is required}" +CASE_NAME="${CASE_NAME:?CASE_NAME is required}" +PREFIX_CACHING="${PREFIX_CACHING:?PREFIX_CACHING is required}" +RUNNER_DIR="${RUNNER_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)}" +RUNNER="${RUNNER_DIR}/run_qwen30_exact_trace_real_anchor.sh" +CLIENT="${RUNNER_DIR}/qwen30_exact_trace_client.py" +VENV_ROOT="${VENV_ROOT:-/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1}" +MODEL_ROOT="${MODEL_ROOT:-/home/admin/cpfs/wjh/models/Qwen/Qwen3-235B-A22B-FP8}" +SERVER_READY_ATTEMPTS="${SERVER_READY_ATTEMPTS:-600}" +IDLE_GPU_MEMORY_TOLERANCE_MIB="${IDLE_GPU_MEMORY_TOLERANCE_MIB:-16}" +RESUME_VALID_CELLS="${RESUME_VALID_CELLS:-true}" +PORT="${BASE_PORT:-9300}" +REQUEST_COUNT="$(wc -l < "${TRACE_ROOT}/tp4/private/real_requests.jsonl")" + +[[ "$(wc -l < "${TRACE_ROOT}/tp8/private/real_requests.jsonl")" == "${REQUEST_COUNT}" ]] || { + echo 'ERROR: TP-specific request counts differ' >&2 + exit 1 +} +case "${CASE_NAME}" in fixed-pd|fixed-po|trace-pd|trace-po) ;; *) exit 2 ;; esac +case "${PREFIX_CACHING}" in true|false) ;; *) exit 2 ;; esac + +mkdir -p "${OUT}/provenance" +declare -a WAVE_PIDS=() + +has_valid_result() { + local result="$1" + [[ -s "${result}" ]] || return 1 + "${VENV_ROOT}/bin/python" - "${result}" "${REQUEST_COUNT}" <<'PY' +import json, sys +s = json.load(open(sys.argv[1])).get("summary", {}) +raise SystemExit(0 if s.get("completed") == int(sys.argv[2]) and s.get("failed") == 0 else 1) +PY +} + +preflight_gpus() { + nvidia-smi --query-gpu=index,name,memory.used,utilization.gpu --format=csv,noheader \ + | tee -a "${OUT}/controller.log" + nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits \ + | awk -v tolerance="${IDLE_GPU_MEMORY_TOLERANCE_MIB}" '$1 > tolerance {exit 1}' +} + +assert_no_server() { + ! pgrep -fa 'qwen3-235b-v020-eval' > "${OUT}/provenance/unexpected_server_processes.txt" +} + +wait_for_wave() { + local failed=0 pid + for pid in "${WAVE_PIDS[@]}"; do wait "${pid}" || failed=1; done + WAVE_PIDS=() + [[ "${failed}" -eq 0 ]] +} + +launch_config() { + local trial="$1" tp="$2" mns="$3" gpus="$4" ep=false + [[ "${tp}" == 8 ]] && ep=true + local config="tp${tp}_ep${ep}_mns${mns}" run_out="${OUT}/real/${config}/trial${trial}" + local requests="${TRACE_ROOT}/tp${tp}/private/real_requests.jsonl" port="${PORT}" + PORT=$((PORT + 1)) + if [[ "${RESUME_VALID_CELLS}" == true ]] && has_valid_result "${run_out}/results/result.json"; then + printf 'CONFIG_REUSED_VALID case=%s trial=%s config=%s\n' "${CASE_NAME}" "${trial}" "${config}" + return 0 + fi + mkdir -p "${run_out}" + ( + cd "${RUNNER_DIR}" + set +e + env HOME=/tmp/wjh XDG_CACHE_HOME=/tmp/wjh/.cache \ + VLLM_CACHE_ROOT=/tmp/wjh/.cache/vllm CUDA_VISIBLE_DEVICES="${gpus}" \ + TP="${tp}" MNS="${mns}" TRACE_LABEL="${CASE_NAME}/tp${tp}-normalized" \ + PREFIX_CACHING="${PREFIX_CACHING}" ENABLE_EXPERT_PARALLEL="${ep}" \ + MODEL_QUANTIZATION=fp8 DISABLE_CUSTOM_ALL_REDUCE=true GPU_MEMORY_UTILIZATION=0.80 \ + SERVED_MODEL=qwen3-235b-v020-eval SERVER_PORT="${port}" OUTPUT_ROOT="${run_out}" \ + REQUESTS_FILE="${requests}" VENV_ROOT="${VENV_ROOT}" MODEL_ROOT="${MODEL_ROOT}" \ + SERVER_READY_ATTEMPTS="${SERVER_READY_ATTEMPTS}" CLIENT_TIMEOUT_SECONDS=6000 \ + EXACT_TRACE_CLIENT="${CLIENT}" \ + timeout --signal=TERM --kill-after=60s 7800 bash "${RUNNER}" \ + > "${run_out}/launcher.stdout.log" 2> "${run_out}/launcher.stderr.log" + status="$?" + printf '%s\n' "${status}" > "${run_out}/launcher.exit_code" + exit "${status}" + ) & + WAVE_PIDS+=("$!") +} + +run_trial() { + local trial="$1" order="$2" + IFS=',' read -r -a mnss <<< "${order}" + preflight_gpus && assert_no_server + printf 'WAVE_START case=%s trial=%s tp=4 mns=%s,%s\n' \ + "${CASE_NAME}" "${trial}" "${mnss[0]}" "${mnss[1]}" | tee -a "${OUT}/controller.log" + launch_config "${trial}" 4 "${mnss[0]}" '0,1,2,3' + launch_config "${trial}" 4 "${mnss[1]}" '4,5,6,7' + wait_for_wave && preflight_gpus && assert_no_server + for mns in "${mnss[@]}"; do + printf 'WAVE_START case=%s trial=%s tp=8 mns=%s\n' \ + "${CASE_NAME}" "${trial}" "${mns}" | tee -a "${OUT}/controller.log" + launch_config "${trial}" 8 "${mns}" '0,1,2,3,4,5,6,7' + wait_for_wave && preflight_gpus && assert_no_server + done +} + +{ + printf '%s\n' "Q235_REAL_LAUNCH_ECHO host=dash0 model=Qwen3-235B-A22B-FP8 engine=vLLM-0.20.0+cu129 checkpoint=FP8 cases=${CASE_NAME} trace=${TRACE_ROOT}/tp{4,8} requests=${REQUEST_COUNT} transform=t_prime=t/TP prefix=${PREFIX_CACHING} surface={TP4/EP1,TP8/EP8}xMNS{64,128} MBT=8192 trials=3 fresh_server=true metrics=mean,p90(TTFT,TPOT-if-PD,E2E) SLO=not_scored output=${OUT}/real" + date -u +START_UTC=%Y-%m-%dT%H:%M:%SZ + sha256sum "${BASH_SOURCE[0]}" "${RUNNER}" "${CLIENT}" "${MODEL_ROOT}/config.json" \ + > "${OUT}/provenance/real-input.sha256" + run_trial 1 '64,128' + run_trial 2 '128,64' + run_trial 3 '64,128' + date -u +END_UTC=%Y-%m-%dT%H:%M:%SZ + printf '%s\n' 'Q235_REAL_SURFACE_COMPLETE' +} 2>&1 | tee -a "${OUT}/controller.log" diff --git a/runs/frontier-fidelity-envelope-v1/run_qwen30_exact_trace_real_anchor.sh b/runs/frontier-fidelity-envelope-v1/run_qwen30_exact_trace_real_anchor.sh index 8d64119..3ef6c21 100755 --- a/runs/frontier-fidelity-envelope-v1/run_qwen30_exact_trace_real_anchor.sh +++ b/runs/frontier-fidelity-envelope-v1/run_qwen30_exact_trace_real_anchor.sh @@ -9,11 +9,16 @@ MNS="${MNS:?MNS is required}" TRACE_LABEL="${TRACE_LABEL:?TRACE_LABEL is required}" SERVER_PORT="${SERVER_PORT:?SERVER_PORT is required}" PREFIX_CACHING="${PREFIX_CACHING:-true}" +ENABLE_EXPERT_PARALLEL="${ENABLE_EXPERT_PARALLEL:-false}" +MODEL_QUANTIZATION="${MODEL_QUANTIZATION:-}" +DISABLE_CUSTOM_ALL_REDUCE="${DISABLE_CUSTOM_ALL_REDUCE:-false}" +GPU_MEMORY_UTILIZATION="${GPU_MEMORY_UTILIZATION:-0.92}" VENV_ROOT="${VENV_ROOT:-/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1}" MODEL_ROOT="${MODEL_ROOT:-/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B}" FLASHINFER_WORKSPACE_BASE="${FLASHINFER_WORKSPACE_BASE:-/tmp/wjh/flashinfer-workspace-vllm020-profiler-v1}" SERVER_READY_ATTEMPTS="${SERVER_READY_ATTEMPTS:-120}" -SERVED_MODEL="qwen3-30b-exact-trace" +CLIENT_TIMEOUT_SECONDS="${CLIENT_TIMEOUT_SECONDS:-1800}" +SERVED_MODEL="${SERVED_MODEL:-qwen3-30b-exact-trace}" EXACT_TRACE_CLIENT="${EXACT_TRACE_CLIENT:-qwen30_exact_trace_client.py}" SERVER_PID="" @@ -53,8 +58,23 @@ case "${PREFIX_CACHING}" in ;; esac +case "${ENABLE_EXPERT_PARALLEL}" in + true) EP_FLAG=(--enable-expert-parallel) ;; + false) EP_FLAG=() ;; + *) echo "ERROR: ENABLE_EXPERT_PARALLEL must be true or false" >&2; exit 1 ;; +esac +case "${DISABLE_CUSTOM_ALL_REDUCE}" in + true) CUSTOM_AR_FLAG=(--disable-custom-all-reduce) ;; + false) CUSTOM_AR_FLAG=() ;; + *) echo "ERROR: DISABLE_CUSTOM_ALL_REDUCE must be true or false" >&2; exit 1 ;; +esac +QUANT_FLAG=() +if [[ -n "${MODEL_QUANTIZATION}" ]]; then + QUANT_FLAG=(--quantization "${MODEL_QUANTIZATION}") +fi + REQUEST_COUNT="$(wc -l < "${REQUESTS_FILE}")" -echo "QWEN30_EXACT_TRACE_REAL_LAUNCH_ECHO host=$(hostname) gpus=${CUDA_VISIBLE_DEVICES} model=${MODEL_ROOT} runtime=vLLM-0.20.0+cu129 dtype=BF16 config=TP${TP}_MNS${MNS}_MBT8192 trace=${TRACE_LABEL} requests=${REQUEST_COUNT} source=${REQUESTS_FILE} arrivals=manifest prefix=${PREFIX_CACHING} block=16 metrics=TTFT,TPOT-if-OSL-gt-1,E2E flashinfer_workspace=${FLASHINFER_WORKSPACE_BASE} output=${OUTPUT_ROOT} ready_budget_s=$((SERVER_READY_ATTEMPTS * 3)) hard_wall=3600s" +echo "EXACT_TRACE_REAL_LAUNCH_ECHO host=$(hostname) gpus=${CUDA_VISIBLE_DEVICES} model=${MODEL_ROOT} runtime=vLLM-0.20.0+cu129 dtype=BF16 quantization=${MODEL_QUANTIZATION:-none} config=TP${TP}_EP${ENABLE_EXPERT_PARALLEL}_MNS${MNS}_MBT8192 trace=${TRACE_LABEL} requests=${REQUEST_COUNT} source=${REQUESTS_FILE} arrivals=manifest prefix=${PREFIX_CACHING} block=16 metrics=TTFT,TPOT-if-OSL-gt-1,E2E flashinfer_workspace=${FLASHINFER_WORKSPACE_BASE} output=${OUTPUT_ROOT} ready_budget_s=$((SERVER_READY_ATTEMPTS * 3)) client_timeout_s=${CLIENT_TIMEOUT_SECONDS}" date -u +"START_UTC=%Y-%m-%dT%H:%M:%SZ" sha256sum qwen30_exact_trace_client.py run_qwen30_exact_trace_real_anchor.sh \ ../frontier-phase-factorial-v0/qwen30_prefill_client.py \ @@ -74,9 +94,10 @@ ulimit -n 65536 setsid "${VENV_ROOT}/bin/vllm" serve "${MODEL_ROOT}" \ --host 127.0.0.1 --port "${SERVER_PORT}" --served-model-name "${SERVED_MODEL}" \ - --tensor-parallel-size "${TP}" --gpu-memory-utilization 0.92 \ + --tensor-parallel-size "${TP}" --gpu-memory-utilization "${GPU_MEMORY_UTILIZATION}" \ --max-model-len 40960 --max-num-batched-tokens 8192 --max-num-seqs "${MNS}" \ "${PREFIX_CACHING_FLAG}" --enable-chunked-prefill --no-enable-log-requests \ + "${CUSTOM_AR_FLAG[@]}" "${QUANT_FLAG[@]}" "${EP_FLAG[@]}" \ > "${OUTPUT_ROOT}/logs/server.log" 2>&1 & SERVER_PID=$! READY=0 @@ -110,7 +131,7 @@ fi --port "${SERVER_PORT}" --requests-file "${REQUESTS_FILE}" \ --served-model "${SERVED_MODEL}" \ --output "${OUTPUT_ROOT}/results/result.json" --tpot-slo-ms 150 \ - --timeout-seconds 1800 + --timeout-seconds "${CLIENT_TIMEOUT_SECONDS}" cleanup find "${OUTPUT_ROOT}" -type f ! -path '*/provenance/artifacts.sha256' -print0 \