KV Tier Simulator Memory

拖动滑杆调 M / NL1(HBM)/ L2(host DRAM)/ L3(UMBP store) 大小,实时看多轮对话工作集怎么在三层缓存里级联,哪部分 prefix-cache 命中落到 L3,以及是「计算 bound」还是「KV 搬运 bound」。

预设

层级大小

L1 · HBM16 GB
L2 · host DRAM32 GB
L3 · UMBP store32 GB

调度 M / N

N · 并发在飞会话40
生产 = λ·T_gap(Little)· 工作集 = N × W
M · active(执行)14
M 的 KV 钉在 L1;也定 λ
chunked_prefill32 K
每 forward 的 prefill 算力预算(new token)
TPOT · decode/token26 ms
compute 快慢 → λ=M/(G·TPOT)
G · 每轮输出224
tok/轮

T_gap 组成 → N

T_think · 思考4
s
T_tool · 工具调用10
s(agent 常主导)
T_queue · 排队3
s

负载

W · 平均上下文34 K
tok/会话
new · 每轮新增2.0 K
未命中/prefill token

硬件 / 密度

Prefetch vs Recompute

TOPS_peak5.0 P
PFLOPS
η_compute (MFU)0.60
有效 TOPS = peak·η
P_active 激活参数32 B
recompute FLOPs=2·P·W
L2→L1 BW260 GB/s
host→device(可 overlap)
L3→L2 BW80 GB/s
store→host(wait_complete 时阻塞)
η_bw0.80
有效 BW = BW·η
HBM BW(decode)8000 GB/s
decode 显存带宽界

三层缓存 · 工作集级联

L1 · HBM
L2 · host DRAM
L3 · UMBP store
active(M,钉L1) L1 命中 L2 命中 L3 命中 miss(重算) 空闲

有效缓存池 vs 工作集

只有 active(K·w) 是不可替代的「真 L1」;其余 L1 + L2 + L3 是同一个缓存池,只按延迟分级。真正要覆盖的是并发在飞会话的工作集 N·W,不是整个数据集。
有效缓存池 = (C1−active)+C2+C3
真 L1 (active)
有效缓存池
工作集 N·W
覆盖率
池 / 工作集

复用命中层(T_gap 决定沉降深度)

空闲块以 R=λ·W 下沉;空闲 T_gap 后深度 D=λ·W·T_gap=N·W(compute 越快 λ 越大 → 沉越深)。复用命中层 = D 落在哪个容量区间。
λ 轮完成率
M/(G·TPOT)
下沉深度 D
=N·W
复用命中
D vs 各层
L3 命中 T_gap 窗口

命中后有效延迟(按层,critical-path)

L2 命中
L2→L1 overlap
L3 命中
L3→L2 wait_complete
miss(recompute)
2·P·W/(TOPS·η)
L3 vs recompute

命中分布

L1 命中
L2 命中
L3 命中
miss
L3 用上了?
N·W > C1+C2

Bound 判定

h_theory
1−new/W
h_fill
1−chunk/C1
L* 临界ctx
new·C1/chunk
N* 溢出并发
(C1+C2)/W
公式 & 说明