Record code-trace calibration and canary gates
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
# EXP-CODE-TRACE:从 chat 1h trace 扩展到 code 与 phase-separated replay
|
||||
|
||||
> **状态:READY_FOR_DATA PREFLIGHT,未启动 GPU。** 当前只完成本地适配与实验冻结;`dash1`--`dash4` 有整机空闲后按本文 gate 顺序推进。禁止使用 `dash0`。
|
||||
> **状态:RUNNING(Phase A code P+D)。** A0 数据/profile 与 A1 TP4
|
||||
> max-length smoke 已完成;A2 paired canary 正在运行;A3 sim calibration
|
||||
> 已冻结 topology-specific rho。只使用 `dash1`--`dash4`,禁止使用 `dash0`。
|
||||
|
||||
## 目标与成功定义
|
||||
|
||||
@@ -11,6 +13,16 @@
|
||||
|
||||
本轮不是只看“能否跑完”。每个正式 cell 必须满足:同一 request vector、同一 arrival、同一 token shape、同一 prefix/initial-KV 合约、real 零失败、无持续 backlog,并同时报告 TTFT/TPOT/E2E、queue/batch、KV/prefix state 与 5min 分窗漂移。
|
||||
|
||||
## 当前决策快照
|
||||
|
||||
| 项目 | 当前结论 | 下一 gate |
|
||||
|---|---|---|
|
||||
| code P+D 数据 | 61min development window、long-context profile-v6、四个 paired full 输入已冻结 | paired canary real-vs-sim |
|
||||
| TP4 负载 | low/mid/near-knee=`rho 0.0002/0.0008/0.0016`;三点均亚临界 | canary 通过后启动 1h |
|
||||
| TP2 负载 | low/mid/near-knee=`rho 0.0002/0.0004/0.0008`;`0.0016` 明确过载 | TP2 canary/KV gate |
|
||||
| code prefill-only | `rho<=0.0032` 的 paired remap cache 已生成,OSL 全为 1 | 独立 sim rho calibration |
|
||||
| strict decode-only | vLLM 0.20.0 有 `DecodeBenchConnector`;Frontier trace generator 尚不能注入 initial computed tokens | C0 contract canary,未进入正式结果 |
|
||||
|
||||
## 三种 workload mode 的冻结定义
|
||||
|
||||
| Mode | 保留 | 改写 | 主指标 | 明确不声称 |
|
||||
@@ -112,6 +124,14 @@ source-window audit 先用 `40960/65536/98304/131072/262144` 给出完整
|
||||
|
||||
`max_model_len` 变大不等于每个请求都预占最大 KV,但会改变启动合法性与可表达的单请求上界;实际 KV 压力仍由并发 token state 决定。
|
||||
|
||||
对本模型,`VLLM_ALLOW_LONG_MAX_MODEL_LEN=1` 只放宽 scheduler/config
|
||||
校验,不会扩展模型内部 RoPE cache;server 还必须显式传
|
||||
`--hf-overrides '{"max_position_embeddings":147456}'`。runner 对
|
||||
`MAX_MODEL_LEN>40960` 自动同时设置这两层。长上下文 job 默认使用
|
||||
host-local vLLM compile cache;FlashInfer workspace 按 topology 复用,
|
||||
避免每个 rho/trial 重编译同一组 fused-MoE kernels。两者只影响启动,
|
||||
不进入 replay latency。
|
||||
|
||||
### G6:每种 mode 独立标定 rho
|
||||
|
||||
不能复用 P+D rho:
|
||||
@@ -122,6 +142,12 @@ source-window audit 先用 `40960/65536/98304/131072/262144` 给出完整
|
||||
|
||||
每种 workload×mode 选择 `low/mid/near-knee` 三点;正式点必须亚临界:全请求完成、无持续 backlog、drain tail≤10%、waiting p99 不单调随时间增长。跨 knee 点若运行,只作为 overload boundary,不支持“不发散”结论。
|
||||
|
||||
`drain tail` 必须同时列出最后完成请求的 arrival、ISL、OSL、waiting
|
||||
和 E2E。早于 cutoff 到达但 OSL 很长的请求可以在最后 arrival 后继续
|
||||
decode;这属于 intrinsic response tail,不等价于 arrival cutoff 时仍有
|
||||
持续增长的 queue backlog。亚临界判断以 queue/waiting trajectory 和
|
||||
tail driver 分解共同决定,不能只用一个 drain 秒数。
|
||||
|
||||
### G7:strict decode-only capability gate
|
||||
|
||||
先在 10min synthetic trace 上验证:
|
||||
@@ -147,6 +173,10 @@ source-window audit 先用 `40960/65536/98304/131072/262144` 给出完整
|
||||
|
||||
若某 topology 的 near-knee 过载,像现有 chat TP2/ρ0.01 一样排除,不为凑齐矩阵强跑。
|
||||
|
||||
当前状态:A0 完成;A1 的 TP4 完成、TP2 由 paired canary 同时验证;
|
||||
A2 运行中;A3 完成;A4 的 paired input 已物化但尚未在 canary gate
|
||||
前启动。
|
||||
|
||||
### Phase B:chat/code prefill-only
|
||||
|
||||
- 复用各自已物化 window,只把 OSL 改为 1;
|
||||
@@ -165,6 +195,20 @@ source-window audit 先用 `40960/65536/98304/131072/262144` 给出完整
|
||||
|
||||
decode profile/serving anchors 至少覆盖实际 batch p99。当前 whole-layer grid 只对少数 b≤8 有证据,且 b6 有长尾;在 MNS128 case 前必须补 b{1,2,4,8,16,32,64,128} 或实际访问 bucket,不能把 b8 常数外推到 b128。
|
||||
|
||||
已安装 vLLM 0.20.0 的 `DecodeBenchConnector` 会在首次 schedule 时把
|
||||
`request.num_tokens-num_computed_tokens-1` 个 token 标为 external,
|
||||
同步向已分配的每层 KV blocks 写 dummy non-zero values,再从最后一个
|
||||
prompt token 开始 forward。因此它适合测大 context 下的 decode
|
||||
compute/scheduling,但 connector fill 发生在 client admission 之后:
|
||||
fill time 必须单独记账并从 KV-ready arrival/TPOT 口径中排除。
|
||||
dummy KV 也不提供真实 prompt-content 或 MoE-routing fidelity。
|
||||
|
||||
Frontier commit `deadc4a3` 的 `Request` 已支持构造
|
||||
`num_processed_tokens`,但 `TraceReplayRequestGenerator` 不读取该列;
|
||||
因此 sim 侧仍需一个显式、可测试的 `initial_computed_tokens` trace
|
||||
contract。C0 必须同时证明 real 首个 model step 是 decode、Frontier
|
||||
首个 ledger stage 是 decode,之后才能解除 strict decode-only 的 BLOCKED。
|
||||
|
||||
## 指标与判据
|
||||
|
||||
共同口径:
|
||||
@@ -238,3 +282,29 @@ mode-specific:
|
||||
`VLLM_ALLOW_LONG_MAX_MODEL_LEN=1` 下成功;该 override 只支持
|
||||
performance/shape fidelity,不形成生成质量或模型长上下文正确性 claim,
|
||||
并作为 provenance 中的显式实验变量。
|
||||
- profile-v6-code-longctx 覆盖 TP1/2/4、KV context 到 131072,
|
||||
33 个 long-context rows;两次 fresh-process repeat 的最大相对差
|
||||
4.648%,旧 anchor drift 最大 1.7%。attention profile SHA256 =
|
||||
`fbcf7e1f95789a6f6d771e24d1fc60958b7daf04eb0db260d27869a19d71d550`。
|
||||
- TP4 `max_model_len=147456` smoke 已在 dash4 通过。server 日志同时确认
|
||||
`max_model_len=147456` 与 `hf_overrides.max_position_embeddings=147456`;
|
||||
20,051+78、119,702+68、136,774+242 三个 shape 均成功。对应
|
||||
TTFT=853.29/12,699.04/3,820.55ms,TPOT=16.65/7.21/8.13ms。
|
||||
最长请求的非单调 TTFT 来自 cold compile/cache state,因此这里只作为
|
||||
runtime support gate,不作为 profile accuracy 数据。
|
||||
- calibration 全部使用同一 profile-v6 SHA。TP4 的 `rho=0.0016`
|
||||
decode batch max=16、drain=21.07s,仍通过 10% 亚临界 gate;TP2 的
|
||||
`rho=0.0016` waiting p50=332.97s、drain=976.86s,明确过载并排除。
|
||||
完整 compact table 在 `results/calibration-summary.json`。
|
||||
- TP2/TP4 的 `rho={0.0002,0.0004,0.0008,0.0016}` 61min full paired
|
||||
inputs 已在 CPFS 物化;每个 paired row digest 和 Frontier CSV SHA
|
||||
均与 calibration input 逐项一致。manifest 副本在
|
||||
`results/paired-input-manifests/`。最大一个目录约 901MiB,不把大型
|
||||
token arrays 提交进 Git。
|
||||
- code prefill-only 的最大 calibration cache 已物化:
|
||||
3477 requests、总 prefill 115,828,371 tokens、OSL 全为 1,
|
||||
paired digest=`40865068e02414612ba1cd4595894e20e85e01fd34d73f8660185552d531ecea`。
|
||||
- 多 host 并发 server startup 暴露出 shared CPFS AOT cache 和每-job
|
||||
FlashInfer JIT 的 apparatus cost。它发生在 readiness 前,不进入 TTFT;
|
||||
runner commit `d5bb974` 改为长上下文默认使用 host-local vLLM cache,
|
||||
并按 topology 复用 FlashInfer workspace。
|
||||
|
||||
Reference in New Issue
Block a user