H7 OVERLOAD_FACTOR sweep: negative result + H4 GPU profiling

H7: Sweeping OVERLOAD_FACTOR (2.0/1.5/1.3/1.0) has no effect on GPU
imbalance (~3.5-4x across all settings). Root cause: imbalance is from
workload skew at session placement (turn 1), not from routing at turn 2+.

H4 GPU profiling confirms: GPU balance improvement IS real (4.0x→2.0x),
and it directly improves HEAVY_COLO TTFT by 10.5%. But RDMA-offloaded
requests have bimodal transfer times (0.6s or 18-31s) that negate the
routing benefit.

Updated elastic_hypotheses.md with H7 results and next directions:
higher load experiments where contention amplifies routing differences.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-23 03:04:02 +08:00
parent 3bc37cc6d5
commit 85b230455e
3 changed files with 70 additions and 2 deletions

View File

@@ -132,3 +132,62 @@ Offload (V2): ❌ Adds RDMA overhead ✅ C_s fast prefill + D load balan
The optimal strategy is **hybrid**: co-locate cold turn-1, offload cached turn-2+.
This is the key insight for the paper: **the offload decision should be cache-aware, not size-based**. A 80k-token request with 90% cache hit is effectively a 8k-token prefill — MEDIUM, not HEAVY. The "heaviness" that matters for PD disaggregation is `new_tokens_to_compute`, not `total_input_length`.
---
## H7: OVERLOAD_FACTOR tuning improves GPU balance
**Claim**: Lowering OVERLOAD_FACTOR (from 2.0 to 1.5/1.3/1.0) breaks session affinity earlier, improving GPU utilization balance.
**Experiment**: 4 baseline runs (no Mooncake) with OF=2.0, 1.5, 1.3, 1.0. 200 req each, fresh restart.
**Result**:
```
OF=2.0: imbalance=3.71x TTFT50=1.077 E2E50=5.093
OF=1.5: imbalance=3.45x TTFT50=1.068 E2E50=5.480
OF=1.3: imbalance=3.96x TTFT50=1.073 E2E50=5.144
OF=1.0: imbalance=3.47x TTFT50=1.085 E2E50=5.496
```
All within noise. APC unchanged (~30%).
**Verdict**: **REJECTED**. The imbalance is driven by workload skew (some sessions are inherently heavier), not by sticky routing. The OVERLOAD_FACTOR threshold rarely fires because per-instance load fluctuates too quickly. The hot GPU just rotates to different instances across runs.
**Key learning**: The root cause of GPU imbalance is at **session placement time (turn 1)**, not at affinity-breaking time (turn 2+). Turn-1 placement uses `ongoing_tokens` scoring, which is a snapshot that doesn't account for cumulative or future load.
---
## H4 Validated: Cache-gate improves GPU balance but RDMA kills TTFT
**Experiment**: H4 cache-gate (8C kv_both, offload only when cache_ratio >= 0.3) with GPU profiling.
**Result**:
```
Baseline H4 cache-gate
GPU Imbalance: 3.97x 2.04x ← 2x better balance
GPU Std: 14.9% 6.7% ← less variance
GPU Max: 63.3% 35.3% ← no extreme hotspot
HEAVY_COLO TTFT: 7.02s 6.28s ← -10.5% from better balance!
HEAVY_OFFLOAD TTFT: N/A 11.45s ← RDMA penalty
OK/N: 198/200 198/200 ← same reliability
```
**Key finding**: The 10.5% HEAVY_COLO improvement proves GPU balance → better latency. But the 7 RDMA-offloaded requests (TTFT=11.45s) pull down the aggregate. RDMA transfer is bimodal: 3/7 fast (0.6-1.2s), 3/7 slow (18-31s).
---
## Current Understanding (updated)
1. **PD-Sep**: net negative (memory wall) ← proven
2. **LMetric**: ≈ baseline for agentic (session affinity limits routing freedom) ← proven
3. **Elastic P2P (RDMA)**: net negative on single machine (Mooncake lacks layerwise transfer → RDMA is pure overhead) ← proven
4. **OVERLOAD_FACTOR tuning**: no effect (imbalance from workload skew, not routing) ← proven
5. **GPU balance improvement → HEAVY TTFT -10.5%**: validated (H4 HEAVY_COLO data)
6. **The bottleneck is at time_scale=20 with 200 req**: system is only 30% loaded. Higher load may reveal more optimization opportunities.
## Next directions
- **Higher load (time_scale=10, 500+ req)**: increase contention to amplify routing differences
- **1000 req at time_scale=20**: reduce statistical noise (±7% → ±3%)
- **Session-count-aware placement**: balance number of active heavy sessions per instance, not just ongoing tokens
- **Layerwise KV transfer**: modify Mooncake to pipeline KV transfer with compute (requires deep vLLM change)