#!/bin/bash # Migration v1 validation: KVC 1P3D ts=1 with --kvcache-migration-reject-threshold=3 # Compare against baseline outputs/qwen3-30b-tp1-ts1-validation/kvc_1p3d_run{1,2,3} # (all of which had no migration — runs were structurally identical). # # Goal: verify §1 fix changes the categorical outcome — direct-to-D % up, # fallback-session-not-resident % down, lat mean down. # # ts=1 is deterministic at the categorical level, so N=1 is sufficient # (TEAM_REPORT §2.8 revised). set -euo pipefail cd "$(dirname "$0")/.." MODEL=/mnt/kzlin/workflow/pd-hybrid/simm-swe-bench/models/Qwen3-30B-A3B-Instruct-2507 TRACE=outputs/qwen35-swebench-50sess.jsonl OUTPUT=outputs/qwen3-30b-tp1-ts1-migration-v1 VENV_PYTHON=.venv/bin/python RESULTS_FILE=$OUTPUT/sweep_results.txt mkdir -p $OUTPUT log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a $RESULTS_FILE; } log "=== TS=1 MIGRATION v1: KVC 1P3D --kvcache-migration-reject-threshold=3 ===" log "Baseline reference: outputs/qwen3-30b-tp1-ts1-validation/kvc_1p3d_run1 (errors=5, lat mean=1.574s, direct-to-D=42.8%)" label=kvc_1p3d_migration_run1 log "" log "=== [migration v1] starting ===" PYTHONPATH=src:third_party/sglang/python \ $VENV_PYTHON -m agentic_pd_hybrid.cli benchmark-live \ --trace $TRACE \ --output-root $OUTPUT \ --mechanism kvcache-centric \ --policy kv-aware \ --model-path $MODEL \ --prefill-workers 1 --decode-workers 3 \ --prefill-tp-size 1 --decode-tp-size 1 \ --prefill-gpu-ids 0 --decode-gpu-ids 1,2,3 \ --transfer-backend mooncake \ --gpu-budget 4 \ --time-scale 1 \ --session-sample-rate 1.0 \ --target-duration-s 100000 \ --concurrency-limit 32 \ --timeout-s 900 \ --request-timeout-s 300 \ --kvcache-admission-mode worker \ --kvcache-seed-min-turn-id 1 \ --kvcache-seed-max-inflight-decode -1 \ --kvcache-prefill-backup-policy release-after-transfer \ --kvcache-prefill-priority-eviction \ --kvcache-migration-reject-threshold 3 run_dir=$(ls -td $OUTPUT/kvcache-centric-*/ 2>/dev/null | head -1) log "=== [migration v1] $label COMPLETED ===" if [ -f "$run_dir/request-metrics.jsonl.summary.json" ]; then cp "$run_dir/request-metrics.jsonl.summary.json" "$OUTPUT/${label}_summary.json" cp "$run_dir/request-metrics.jsonl" "$OUTPUT/${label}_metrics.jsonl" errs=$($VENV_PYTHON -c "import json; d=json.load(open('$OUTPUT/${label}_summary.json')); print(d.get('error_count',0))") p50=$($VENV_PYTHON -c "import json; d=json.load(open('$OUTPUT/${label}_summary.json')); print(d.get('latency_stats_s',{}).get('p50',0))") log " errors=$errs lat_p50=${p50}s" cat "$run_dir/request-metrics.jsonl.summary.json" >> $RESULTS_FILE fi log "=== migration v1 DONE ==="