From dae98c64729ef70a1a707a92c84ff0842fde483d Mon Sep 17 00:00:00 2001 From: Gahow Wang Date: Thu, 28 May 2026 16:03:25 +0800 Subject: [PATCH] Working-set sizing tool + GLM-5.1-FP8/B300 result Configurable KV working-set analyzer (GPU model x TP/PP/EP x model config.json with MLA/GQA auto x KV/weight dtype). Computes Denning W(T), oracle [first,last], and retain-forever footprints vs a per-replica KV pool, plus the APC captured at each retention window. GLM-5.1-FP8 (MLA, 43.9 KiB/token) on 1x B300 node (1528 GB KV pool): live KV fits trivially (~533 GB), but the full 80.4% APC ceiling needs ~14 nodes (oracle) -> long-tail reuse motivates DRAM offload, not HBM. Co-Authored-By: Claude Opus 4.7 --- analysis/working_set/README.md | 67 ++++++ figs/working_set/glm5_fp8_tp8_b300.png | Bin 0 -> 136892 bytes scripts/working_set_analysis.py | 276 +++++++++++++++++++++++++ 3 files changed, 343 insertions(+) create mode 100644 analysis/working_set/README.md create mode 100644 figs/working_set/glm5_fp8_tp8_b300.png create mode 100644 scripts/working_set_analysis.py diff --git a/analysis/working_set/README.md b/analysis/working_set/README.md new file mode 100644 index 0000000..a781c66 --- /dev/null +++ b/analysis/working_set/README.md @@ -0,0 +1,67 @@ +# KV-cache Working-Set Sizing — GLM-5.1-FP8 · TP=8 · 1× B300 node + +工具:`scripts/working_set_analysis.py`(可配置 GPU 型号 / 并行度 TP·PP·EP / 模型 config.json / +KV dtype / 权重大小)。图:`figs/working_set/glm5_fp8_tp8_b300.png`。 + +## 复现 + +```bash +.venv/bin/python scripts/working_set_analysis.py \ + /home/gahow/phd/kvcache-simulator/bailian-traces/glm_coder_blksz_512_040915-040917.jsonl \ + --model-config /home/gahow/phd/kvcache-simulator/models/GLM-5/config.json \ + --gpu B300 --tp 8 --ep 8 --kv-dtype-bytes 1 --weight-gb 744 --min-ts 0 \ + --out figs/working_set/glm5_fp8_tp8_b300.png +``` + +## 方法 + +`hash_ids` 是全局内容寻址 block id(同内容=同 id,复用=同 id 再现)。vLLM prefix cache 是 +block 级,所以**集群级 KV footprint = 任一时刻必须常驻的 distinct block 数**,与 placement 无关 +(affinity 只搬运 block,不改总量)。三种 working set: +- `W_all` 永不淘汰(真上界) +- `W_oracle` 每 block 只在 `[首次, 末次复用]` 常驻(Belady 完美预知 → 满 APC 上界的最小 HBM) +- `W_denning(T)` 滑窗 T 内被访问的 distinct block(现实 TTL-LRU) + +KV/token:MLA → `L·(kv_lora_rank+qk_rope_head_dim)·dtype`;GQA → `2·L·kv_heads·head_dim·dtype` +(与 `kvcache-simulator/src/config.rs::kv_block_bytes` 一致)。 + +## 配置 + +| 项 | 值 | +|---|---| +| 模型 | GLM-5.1-FP8(MLA, L=78, kv_lora=512+rope=64) | +| KV/token · KV/block(512) | **43.9 KiB** · **23.0 MB**(≈ Qwen3 GQA 96 KiB 的一半) | +| 硬件 | 8× B300 (288 GB) = 2304 GB HBM/replica | +| 预算 | FP8 权重 744 GB + act 32 GB → **KV pool = 1528 GB/node** | +| trace | dash0 glm_coder,475k req,**1.25h active @ 106 QPS**,~40k tok/req(剔除 77 条负 ts 暖机) | +| APC 上界 | **80.4%** | + +## 结果 + +| 保留窗口 T | peak footprint | = 节点 (GPU) | APC@T | +|---:|---:|---:|---:| +| 2s(在飞下限)| 533 GB | 0.3 (3) | 1.7% | +| 10s | 2,068 GB | 1.4 (11) | 15% | +| 30s | 4,906 GB | 3.2 (26) | 42% | +| 60s | 7,698 GB | 5.0 (40) | 56% | +| 300s | 21,960 GB | 14.4 (115) | 74% | +| **oracle(满 80.4%)** | **21,399 GB** | **14.0 (112)** | 80.4% | +| retain-forever | 167,018 GB | 109 (874) | — | + +## 结论 + +1. **Serving:1 节点绰绰有余。** 在飞 KV(τ≈2-5s)仅 533–1157 GB ≪ 单节点 1528 GB。 + MLA + B300 大 HBM 让 live footprint 微不足道——跑起来根本不缺显存。 +2. **缓存全部复用(80.4%):1 节点差 ~14×。** oracle 下限 21.4 TB = 14 节点(112 GPU), + 真实 LRU ~2× → ~28 节点。单节点(1528 GB)只能 hold ~10s 窗口 → cache 侧 APC 仅 ~10-15%。 + 要 ~56% 需 5 节点,~74% 需 ~14 节点。 +3. **瓶颈在长尾,不在 live。** 把 APC 50%→80% 装进 GPU HBM 要 5→14 节点,极不经济 + → offload/migration 到 CPU DRAM(每节点 ~1.5 TB)是定量动机。与 Qwen 结论方向一致。 + +## 注意 + +- footprint 是 TTL-LRU(最浪费)+ shared-cache 下限:真实 capacity-LRU 同容量下 APC 更高, + 但分区/affinity 不均衡又抬高需求;oracle / retain-forever 给出下/上界。 +- GLM trace mean ~40k tok/req,是 Qwen trace(11k)的 ~3.5×(tokenizer + 抽取不同), + **绝对 GB 不可跨模型横比**,方法与定性结论可比。 +- EP 不改变 KV 总量(只影响 expert 权重分布),`--ep` 仅作标注。 diff --git a/figs/working_set/glm5_fp8_tp8_b300.png b/figs/working_set/glm5_fp8_tp8_b300.png new file mode 100644 index 0000000000000000000000000000000000000000..3e15512cc9010b02e92559f836ef9282b45458c8 GIT binary patch literal 136892 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 Qox+Ej%0cCaN=GmKKfr5nIsgCw literal 0 HcmV?d00001 diff --git a/scripts/working_set_analysis.py b/scripts/working_set_analysis.py new file mode 100644 index 0000000..a738ee3 --- /dev/null +++ b/scripts/working_set_analysis.py @@ -0,0 +1,276 @@ +"""KV-cache working-set sizing for agentic traces, across GPU / model / parallelism. + +WHAT IT COMPUTES + hash_ids in these traces are global content-addressed block ids (same content + -> same id; reuse = repeated id). vLLM prefix cache is block-level, so the + cluster-wide KV footprint at any instant = the set of distinct block ids that + must be resident. Session/instance placement only moves blocks between GPUs; + it does not change this aggregate, so the analysis is placement-independent. + + Three working-set notions, swept over a retention window T: + W_all retain every block forever (true upper bound) + W_oracle keep block in [first_use, last_use] (Belady foresight floor) + W_denning(T) distinct blocks touched in (t-T, t] (realistic TTL=T LRU) + and the APC actually captured at each T (validates vs the trie ceiling). + +HARDWARE MODEL + KV pool per serving replica = + gpus_per_replica * hbm_per_gpu - model_weights - activation_reserve + (TP/EP shard weights+KV across the replica's GPUs; the *aggregate* KV pool is + what we size against, so only gpus_per_replica and total weights matter.) + + KV bytes / token: + GQA/MHA : 2 * L * kv_heads * head_dim * kv_dtype_bytes + MLA : L * (kv_lora_rank + qk_rope_head_dim) * kv_dtype_bytes + (matches kvcache-simulator/src/config.rs::kv_block_bytes) + +All sizes reported in GB = 1e9 bytes (matches the simulator's `hbm_bytes` e9 +convention). +""" +from __future__ import annotations +import argparse, json +import numpy as np + +GB = 1e9 + +# Nominal HBM per GPU, in GB (decimal). +GPU_HBM_GB = { + "H100": 80, "H200": 141, "H20": 96, "H20-141G": 141, + "A100-40G": 40, "A100-80G": 80, + "B200": 192, "B300": 288, "GB200": 192, +} + + +# ----------------------------------------------------------------------------- model +def load_model(config_json: str) -> dict: + v = json.load(open(config_json)) + L = int(v["num_hidden_layers"]) + out = {"name": v.get("model_type", "?"), "L": L} + if "kv_lora_rank" in v: # MLA (DeepSeek / GLM-MoE-DSA) + out["mla"] = True + out["kv_lora_rank"] = int(v["kv_lora_rank"]) + out["qk_rope_head_dim"] = int(v["qk_rope_head_dim"]) + else: # GQA / MHA + out["mla"] = False + H = int(v.get("num_attention_heads", 0)) + out["kv_heads"] = int(v.get("num_key_value_heads", H) or H) + out["head_dim"] = int(v.get("head_dim") or (v["hidden_size"] // H)) + return out + + +def kv_bytes_per_token(model: dict, kv_dtype_bytes: int) -> int: + L = model["L"] + if model["mla"]: + return L * (model["kv_lora_rank"] + model["qk_rope_head_dim"]) * kv_dtype_bytes + return 2 * L * model["kv_heads"] * model["head_dim"] * kv_dtype_bytes + + +# ----------------------------------------------------------------------------- trace +def load_trace(path: str, min_ts=None, max_ts=None): + ids, ts = [], [] + n = dropped = 0 + with open(path) as fh: + for line in fh: + line = line.strip() + if not line: + continue + r = json.loads(line) + h = r.get("hash_ids") + if isinstance(h, str): + h = json.loads(h) + if not h: + continue + t = float(r.get("timestamp", 0.0)) + if (min_ts is not None and t < min_ts) or (max_ts is not None and t > max_ts): + dropped += 1 + continue + ids.extend(h) + ts.extend([t] * len(h)) + n += 1 + if dropped: + print(f" (clipped {dropped} reqs outside [{min_ts}, {max_ts}])") + return n, np.asarray(ids, dtype=np.int64), np.asarray(ts, dtype=np.float64) + + +def _sweep_peak(starts, ends): + """Peak concurrency of intervals [start, end); ends applied before starts at ties.""" + ev = np.concatenate([starts, ends]) + d = np.concatenate([np.ones(len(starts), np.int64), -np.ones(len(ends), np.int64)]) + order = np.lexsort((d, ev)) # at equal time: -1 (end) before +1 (start) + return int(np.cumsum(d[order]).max()) + + +def _series(starts, ends, grid): + s = np.sort(starts); e = np.sort(ends) + return np.searchsorted(s, grid, side="right") - np.searchsorted(e, grid, side="right") + + +def compute_working_set(ids, ts, taus): + """Return dict with appearance stats + per-tau Denning peaks + oracle/all.""" + A = len(ids) + order = np.lexsort((ts, ids)) + ids_s, ts_s = ids[order], ts[order] + same_prev = np.empty(A, bool); same_prev[0] = False + same_prev[1:] = ids_s[1:] == ids_s[:-1] + same_next = np.empty(A, bool); same_next[-1] = False + same_next[:-1] = ids_s[:-1] == ids_s[1:] + prev_gap = np.full(A, np.inf); prev_gap[1:][same_prev[1:]] = (ts_s[1:] - ts_s[:-1])[same_prev[1:]] + next_gap = np.full(A, np.inf); next_gap[:-1][same_next[:-1]] = (ts_s[1:] - ts_s[:-1])[same_next[:-1]] + + n_unique = int((~same_prev).sum()) + grid = np.linspace(ts.min(), ts.max(), 400) + + # oracle [first,last] + first = np.full(ids.max() + 1, np.inf); last = np.full(ids.max() + 1, -np.inf) + np.minimum.at(first, ids, ts); np.maximum.at(last, ids, ts) + seen = np.isfinite(first) + oracle_peak = _sweep_peak(first[seen], last[seen]) + + rows = [] + for T in taus: + enter = ts_s[prev_gap > T] + exit_ = ts_s[next_gap > T] + T + peak = _sweep_peak(enter, exit_) + ser = _series(enter, exit_, grid) + rows.append({ + "tau": T, "peak_blocks": peak, + "p99_blocks": float(np.percentile(ser, 99)), + "p50_blocks": float(np.percentile(ser, 50)), + "apc": float((prev_gap <= T).sum() / A), + }) + return { + "A": A, "n_unique": n_unique, "n_reuse": A - n_unique, + "apc_ceiling": (A - n_unique) / A, + "oracle_peak_blocks": oracle_peak, + "span": float(ts.max() - ts.min()), + "taus": rows, + } + + +# ----------------------------------------------------------------------------- plot +def plot(ws, hw, block_bytes, label, out_path): + import matplotlib + matplotlib.use("Agg") + import matplotlib.pyplot as plt + + bgb = block_bytes / GB + taus = [r["tau"] for r in ws["taus"]] + peak_gb = np.array([r["peak_blocks"] * bgb for r in ws["taus"]]) + apc = np.array([r["apc"] * 100 for r in ws["taus"]]) + oracle_gb = ws["oracle_peak_blocks"] * bgb + ceil = ws["apc_ceiling"] * 100 + pool = hw["kv_pool_gb"] # per replica + + fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6)) + + # --- panel 1: APC vs required KV footprint --- + ax1.plot(peak_gb, apc, "o-", color="#1f77b4", lw=2, ms=7, label="TTL-LRU W(T)") + for r, x, y in zip(ws["taus"], peak_gb, apc): + ax1.annotate(f"{r['tau']:g}s", (x, y), fontsize=8, + textcoords="offset points", xytext=(4, 5)) + ax1.scatter([oracle_gb], [ceil], marker="*", s=320, color="#d62728", zorder=5, + label=f"oracle / ceiling ({ceil:.1f}%)") + ax1.axhline(ceil, ls=":", color="#d62728", alpha=.5) + for k in (1, 2, 4, 8): + x = pool * k + ax1.axvline(x, ls="--", color="#2ca02c", alpha=.55) + ax1.text(x, 2, f"{k} replica\n{k*hw['gpus_per_replica']} GPU", + rotation=90, va="bottom", ha="right", fontsize=8, color="#2ca02c") + ax1.set_xscale("log") + ax1.set_xlabel("KV footprint that must be resident (GB, log)") + ax1.set_ylabel("Achievable prefix-cache hit rate (APC %)") + ax1.set_title("APC vs KV-pool budget") + ax1.grid(alpha=.3, which="both"); ax1.legend(loc="lower right"); ax1.set_ylim(0, 100) + + # --- panel 2: footprint over time for a few T --- + span = ws["span"]; grid = np.linspace(0, span, 400) + # recompute series for a representative subset from stored peaks is not enough; + # show peak/p50 bars instead (compact, robust) + sel = [r for r in ws["taus"] if r["tau"] in (2, 30, 300, 600)] + xs = np.arange(len(sel)); w = 0.38 + ax2.bar(xs - w/2, [r["peak_blocks"]*bgb for r in sel], w, label="peak", color="#1f77b4") + ax2.bar(xs + w/2, [r["p50_blocks"]*bgb for r in sel], w, label="median", color="#aec7e8") + ax2.axhline(pool, ls="--", color="#2ca02c", lw=2, label=f"1 replica KV pool ({pool:.0f} GB)") + ax2.axhline(oracle_gb, ls=":", color="#d62728", lw=2, label=f"oracle full-ceiling ({oracle_gb:.0f} GB)") + ax2.set_xticks(xs); ax2.set_xticklabels([f"T={r['tau']:g}s\nAPC={r['apc']*100:.0f}%" for r in sel]) + ax2.set_ylabel("KV footprint (GB)") + ax2.set_yscale("log") + ax2.set_title("Footprint by retention window vs pool") + ax2.grid(alpha=.3, axis="y", which="both"); ax2.legend(loc="upper left", fontsize=9) + + fig.suptitle(label, fontsize=13, fontweight="bold") + fig.tight_layout(rect=[0, 0, 1, 0.97]) + fig.savefig(out_path, dpi=130) + print(f" figure -> {out_path}") + + +# ----------------------------------------------------------------------------- main +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("trace") + ap.add_argument("--model-config", required=True, help="path to HF config.json") + ap.add_argument("--gpu", required=True, choices=sorted(GPU_HBM_GB)) + ap.add_argument("--tp", type=int, default=8) + ap.add_argument("--pp", type=int, default=1) + ap.add_argument("--ep", type=int, default=0, help="informational only (KV unchanged by EP)") + ap.add_argument("--kv-dtype-bytes", type=int, default=1, help="1=FP8, 2=BF16") + ap.add_argument("--weight-gb", type=float, required=True, help="total resident model weights, GB") + ap.add_argument("--activation-gb", type=float, default=32.0, help="activation+ctx reserve, GB") + ap.add_argument("--block-size", type=int, default=512) + ap.add_argument("--min-ts", type=float, default=None, help="drop reqs with timestamp < this") + ap.add_argument("--max-ts", type=float, default=None, help="drop reqs with timestamp > this") + ap.add_argument("--label", default="") + ap.add_argument("--out", default="figs/working_set.png") + a = ap.parse_args() + + model = load_model(a.model_config) + kv_tok = kv_bytes_per_token(model, a.kv_dtype_bytes) + block_bytes = kv_tok * a.block_size + + gpus_per_replica = a.tp * a.pp + total_hbm = gpus_per_replica * GPU_HBM_GB[a.gpu] + kv_pool_gb = total_hbm - a.weight_gb - a.activation_gb + hw = {"gpus_per_replica": gpus_per_replica, "kv_pool_gb": kv_pool_gb} + + taus = [1, 2, 5, 10, 30, 60, 300, 600, 1800] + n, ids, ts = load_trace(a.trace, a.min_ts, a.max_ts) + ws = compute_working_set(ids, ts, taus) + + label = a.label or f"{model['name']} {a.gpu} TP{a.tp}" + (f" EP{a.ep}" if a.ep else "") + print("=" * 84) + print(f" {label}") + print("=" * 84) + print(f" model {model['name']} L={model['L']} " + + (f"MLA(kv_lora={model['kv_lora_rank']}+rope={model['qk_rope_head_dim']})" + if model["mla"] else f"GQA(kv_heads={model['kv_heads']}xhd={model['head_dim']})")) + print(f" KV / token {kv_tok:,} B ({kv_tok/1024:.1f} KiB) KV / block({a.block_size}) {block_bytes/1e6:.1f} MB") + print(f" hardware {gpus_per_replica}x {a.gpu} ({GPU_HBM_GB[a.gpu]} GB) = {total_hbm:.0f} GB HBM/replica" + + (f" EP={a.ep}" if a.ep else "")) + print(f" weights {a.weight_gb:.0f} GB ({a.kv_dtype_bytes}B-KV) + act {a.activation_gb:.0f} GB" + f" => KV pool/replica = {kv_pool_gb:.0f} GB") + print() + print(f" trace {n:,} reqs span {ws['span']:.0f}s ({ws['span']/3600:.2f}h) QPS~{n/ws['span']:.1f}") + print(f" block appearances {ws['A']:,} distinct {ws['n_unique']:,} APC ceiling {ws['apc_ceiling']*100:.2f}%") + bgb = block_bytes / GB + print(f" W_all (retain forever) {ws['n_unique']*bgb:>10,.0f} GB" + f" = {ws['n_unique']*bgb/kv_pool_gb:6.1f} replicas ({ws['n_unique']*bgb/kv_pool_gb*gpus_per_replica:,.0f} GPU)") + print(f" W_oracle (full ceiling) {ws['oracle_peak_blocks']*bgb:>10,.0f} GB" + f" = {ws['oracle_peak_blocks']*bgb/kv_pool_gb:6.1f} replicas ({ws['oracle_peak_blocks']*bgb/kv_pool_gb*gpus_per_replica:,.0f} GPU)") + print() + print(f" {'T':>7} | {'peak GB':>9} {'p50 GB':>8} | {'replicas':>8} {'GPUs':>6} | {'APC@T':>6}") + print(" " + "-" * 60) + for r in ws["taus"]: + pg = r["peak_blocks"] * bgb + rep = pg / kv_pool_gb + print(f" {r['tau']:>6g}s | {pg:>9,.0f} {r['p50_blocks']*bgb:>8,.0f} | " + f"{rep:>8.1f} {rep*gpus_per_replica:>6.0f} | {r['apc']*100:>5.1f}%") + print() + print(f" [ref] 1 replica = {gpus_per_replica} GPU = {kv_pool_gb:.0f} GB KV pool") + + import os + os.makedirs(os.path.dirname(a.out) or ".", exist_ok=True) + plot(ws, hw, block_bytes, label, a.out) + + +if __name__ == "__main__": + main()