Record code-trace calibration and canary gates
This commit is contained in:
@@ -1,18 +1,34 @@
|
||||
# Frontier code-trace campaign handoff
|
||||
|
||||
本目录已经准备好无 GPU 的 data preflight、512→16 参数化映射、prefill-only 转换和 `max_model_len` 显式适配。当前没有启动或探测 `dash1`–`dash4`。
|
||||
Phase A code prefill+decode 已开始执行。data/profile/max-length gate 和
|
||||
Frontier rho calibration 已完成;TP2/TP4 paired 10min real canary 正在
|
||||
运行。61min full paired inputs 与 code prefill-only calibration cache
|
||||
均已物化,尚未越过 canary gate 启动正式 1h real matrix。
|
||||
|
||||
完整设计与 gate 见 [`experiment-card.md`](experiment-card.md)。
|
||||
|
||||
## 当前已知阻塞
|
||||
## 当前资产与下一步
|
||||
|
||||
本机 `/home/gahow/ali-trace/trace-glm5.1-formatted/` 不存在。仓库历史记录的远端路径是:
|
||||
- development window:0513 `[3480,7140)`,61min;
|
||||
- held-out window:0529 `[2640,6240)`,只在 development 判据冻结后使用;
|
||||
- profile:`profiles/profile-v6-code-longctx/`,覆盖 TP1/2/4 和 131072
|
||||
KV context;
|
||||
- full paired inputs(CPFS):
|
||||
`runs/frontier-code-trace-v0/inputs/full-r0p{0002,0004,0008,0016}-v1/`;
|
||||
- compact provenance:`results/calibration-summary.json`、
|
||||
`results/paired-input-manifests/`;
|
||||
- 下一步:完成 paired canary 分析;若 real 零失败、digest/hit ratio
|
||||
对齐且 queue 不发散,启动 TP4
|
||||
`rho={0.0002,0.0008,0.0016}` 与 TP2
|
||||
`rho={0.0002,0.0004,0.0008}` 的 1h jobs。
|
||||
|
||||
source trace 的远端位置是:
|
||||
|
||||
```text
|
||||
/home/admin/cpfs/wjh/ali-trace/trace-glm5.1-formatted/
|
||||
```
|
||||
|
||||
有机器后先确认用户给出的 `~/ali-trace/...` 是否解析到同一目录,再运行以下命令。
|
||||
以下命令保留为从 source 重新构建时的复现入口。
|
||||
|
||||
## 1. 审计所有 1h+ code source
|
||||
|
||||
@@ -103,11 +119,21 @@ bash runs/frontier-s3-real-v0/run_full_real.sh RHO_LABEL tp4_mns16 1 PORT
|
||||
- synthetic prompt 默认拒绝,只有在 experiment card 明确降级 claim 后才设为 `true`;
|
||||
- runner 会在启动前扫描 paired requests,若任何 `ISL+OSL` 超 cap 立即失败。
|
||||
|
||||
正式 full job 前,先按 experiment card 的 G4 补 32k–128k attention profile,再做 TP4→TP2 的 p50/p99/max 单请求与 5min canary。
|
||||
长上下文 server 必须同时设置
|
||||
`VLLM_ALLOW_LONG_MAX_MODEL_LEN=1` 和
|
||||
`--hf-overrides '{"max_position_embeddings":MAX_MODEL_LEN}'`;runner 已在
|
||||
`ALLOW_LONG_CONTEXT_SERVER=true` 时自动处理。长上下文默认使用 host-local
|
||||
vLLM compile cache,并按 topology 复用 FlashInfer workspace;启动 compile
|
||||
不进入 workload latency。
|
||||
|
||||
## 6. decode-only
|
||||
|
||||
当前 materializer 故意不提供 `decode_only` 选项。严格 decode-only 需要 initial-KV state,而不是把 prompt 改短。只有 real `DecodeBenchConnector`(或等价能力)与 Frontier initial-KV contract 都通过 G7 后,才创建 decode-only jobs。
|
||||
当前 materializer 故意不提供 `decode_only` 选项。已安装 vLLM 0.20.0
|
||||
包含 `DecodeBenchConnector`,但它在首次 admission 后同步填 dummy KV;
|
||||
fill time 必须与 KV-ready arrival 分离。Frontier `Request` 支持
|
||||
`num_processed_tokens`,当前 trace generator 尚未从 CSV 注入该值。
|
||||
只有 real 首步无 prefill、sim ledger 首步为 decode 的 C0 gate 通过后,
|
||||
才创建 strict decode-only jobs。
|
||||
|
||||
## 本地验证
|
||||
|
||||
|
||||
322
runs/frontier-code-trace-v0/analyze_canary.py
Normal file
322
runs/frontier-code-trace-v0/analyze_canary.py
Normal file
@@ -0,0 +1,322 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Analyze one paired 10-minute code-trace real/sim canary topology."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
import hashlib
|
||||
import json
|
||||
import math
|
||||
import re
|
||||
import statistics
|
||||
from collections import Counter
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
METRICS = ("ttft", "tpot", "e2e")
|
||||
PROM_COUNTERS = ("vllm:prefix_cache_queries_total", "vllm:prefix_cache_hits_total")
|
||||
ITERATION_RE = re.compile(
|
||||
r"Iteration.*?:\s+"
|
||||
r"(?P<context_requests>\d+) context requests, "
|
||||
r"(?P<context_tokens>\d+) context tokens, "
|
||||
r"(?P<generation_requests>\d+) generation requests, "
|
||||
r"(?P<generation_tokens>\d+) generation tokens"
|
||||
)
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--input-root", type=Path, required=True)
|
||||
parser.add_argument("--sim-root", type=Path, required=True)
|
||||
parser.add_argument("--real-root", type=Path, action="append", required=True)
|
||||
parser.add_argument("--topology", required=True)
|
||||
parser.add_argument("--output", type=Path, required=True)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def sha256(path: Path) -> str:
|
||||
digest = hashlib.sha256()
|
||||
with path.open("rb") as stream:
|
||||
for chunk in iter(lambda: stream.read(1024 * 1024), b""):
|
||||
digest.update(chunk)
|
||||
return digest.hexdigest()
|
||||
|
||||
|
||||
def percentile(values: list[float], q: float) -> float:
|
||||
ordered = sorted(values)
|
||||
position = (len(ordered) - 1) * q
|
||||
lower = math.floor(position)
|
||||
upper = math.ceil(position)
|
||||
if lower == upper:
|
||||
return ordered[lower]
|
||||
return ordered[lower] * (upper - position) + ordered[upper] * (position - lower)
|
||||
|
||||
|
||||
def distribution(values: list[float]) -> dict[str, float | int]:
|
||||
if not values:
|
||||
raise ValueError("empty distribution")
|
||||
return {
|
||||
"count": len(values),
|
||||
"mean": statistics.fmean(values),
|
||||
"p50": percentile(values, 0.5),
|
||||
"p90": percentile(values, 0.9),
|
||||
"p95": percentile(values, 0.95),
|
||||
"p99": percentile(values, 0.99),
|
||||
"max": max(values),
|
||||
}
|
||||
|
||||
|
||||
def read_csv(path: Path) -> list[dict[str, str]]:
|
||||
with path.open(newline="") as stream:
|
||||
return list(csv.DictReader(stream))
|
||||
|
||||
|
||||
def find_one(root: Path, name: str) -> Path:
|
||||
matches = list(root.glob(f"**/{name}"))
|
||||
if len(matches) != 1:
|
||||
raise ValueError(f"expected one {name} below {root}, found {matches}")
|
||||
return matches[0]
|
||||
|
||||
|
||||
def prom_counter(path: Path, name: str) -> float:
|
||||
values = []
|
||||
with path.open() as stream:
|
||||
for line in stream:
|
||||
if line.startswith(name + "{") or line.startswith(name + " "):
|
||||
values.append(float(line.rsplit(maxsplit=1)[1]))
|
||||
if not values:
|
||||
raise ValueError(f"{path}: missing Prometheus counter {name}")
|
||||
return sum(values)
|
||||
|
||||
|
||||
def prefix_cache_delta(root: Path) -> dict[str, float]:
|
||||
before = root / "metrics/before.prom"
|
||||
after = root / "metrics/after.prom"
|
||||
deltas = {
|
||||
name: prom_counter(after, name) - prom_counter(before, name)
|
||||
for name in PROM_COUNTERS
|
||||
}
|
||||
queries = deltas[PROM_COUNTERS[0]]
|
||||
hits = deltas[PROM_COUNTERS[1]]
|
||||
if queries <= 0 or hits < 0 or hits > queries:
|
||||
raise ValueError(f"{root}: invalid prefix counter deltas {deltas}")
|
||||
return {
|
||||
"query_tokens": queries,
|
||||
"hit_tokens": hits,
|
||||
"hit_ratio": hits / queries,
|
||||
}
|
||||
|
||||
|
||||
def real_decode_batch(root: Path) -> dict[str, Any]:
|
||||
counts: Counter[int] = Counter()
|
||||
mixed_steps = 0
|
||||
for path in sorted(root.rglob("server.log")):
|
||||
with path.open(errors="replace") as stream:
|
||||
for line in stream:
|
||||
match = ITERATION_RE.search(line)
|
||||
if match is None:
|
||||
continue
|
||||
context_requests = int(match.group("context_requests"))
|
||||
generation_requests = int(match.group("generation_requests"))
|
||||
generation_tokens = int(match.group("generation_tokens"))
|
||||
if context_requests:
|
||||
mixed_steps += 1
|
||||
continue
|
||||
if generation_requests and generation_tokens == generation_requests:
|
||||
counts[generation_requests] += 1
|
||||
|
||||
if not counts:
|
||||
return {
|
||||
"steps": 0,
|
||||
"mixed_steps_excluded": mixed_steps,
|
||||
"max": None,
|
||||
"share_gt_1": None,
|
||||
"histogram": {},
|
||||
}
|
||||
steps = sum(counts.values())
|
||||
return {
|
||||
"steps": steps,
|
||||
"mixed_steps_excluded": mixed_steps,
|
||||
"max": max(counts),
|
||||
"share_gt_1": sum(value for key, value in counts.items() if key > 1) / steps,
|
||||
"histogram": {str(key): value for key, value in sorted(counts.items())},
|
||||
}
|
||||
|
||||
|
||||
def load_sim(root: Path, trace: list[dict[str, str]], trace_sha: str) -> dict[str, Any]:
|
||||
manifest = json.loads((root / "manifest.json").read_text())
|
||||
if manifest["trace_sha256"] != trace_sha:
|
||||
raise ValueError(f"{root}: sim/input trace SHA mismatch")
|
||||
rows = read_csv(find_one(root / "metrics", "request_metrics.csv"))
|
||||
if len(rows) != len(trace):
|
||||
raise ValueError(f"{root}: sim/input request count mismatch")
|
||||
values = {
|
||||
"ttft": [float(row["ttft"]) for row in rows],
|
||||
"tpot": [float(row["tpot"]) for row in rows if row["tpot"].strip()],
|
||||
"e2e": [float(row["request_e2e_time"]) for row in rows],
|
||||
"waiting": [float(row["request_waiting_time_total"]) for row in rows],
|
||||
}
|
||||
completions = [
|
||||
float(trace_row["arrived_at"]) + float(metric_row["request_e2e_time"]) / 1000
|
||||
for trace_row, metric_row in zip(trace, rows)
|
||||
]
|
||||
tail_index = max(range(len(completions)), key=completions.__getitem__)
|
||||
last_arrival = max(float(row["arrived_at"]) for row in trace)
|
||||
summary = json.loads((root / "summary.json").read_text())
|
||||
return {
|
||||
"values": values,
|
||||
"summary": summary,
|
||||
"drain": {
|
||||
"last_arrival_s": last_arrival,
|
||||
"last_completion_s": completions[tail_index],
|
||||
"tail_after_last_arrival_s": completions[tail_index] - last_arrival,
|
||||
"tail_driver": {
|
||||
"request_index": tail_index,
|
||||
"arrival_s": float(trace[tail_index]["arrived_at"]),
|
||||
"arrival_before_cutoff_s": last_arrival
|
||||
- float(trace[tail_index]["arrived_at"]),
|
||||
"input_tokens": int(trace[tail_index]["num_prefill_tokens"]),
|
||||
"output_tokens": int(trace[tail_index]["num_decode_tokens"]),
|
||||
"waiting_ms": values["waiting"][tail_index],
|
||||
"e2e_ms": values["e2e"][tail_index],
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def load_real(
|
||||
root: Path,
|
||||
input_manifest: dict[str, Any],
|
||||
trace: list[dict[str, str]],
|
||||
) -> dict[str, Any]:
|
||||
result_path = root / "results/result.json"
|
||||
result = json.loads(result_path.read_text())
|
||||
if result["contract"]["row_vector_sha256"] != input_manifest["paired_row_vector_sha256"]:
|
||||
raise ValueError(f"{root}: real/input row digest mismatch")
|
||||
requests = result["requests"]
|
||||
if len(requests) != len(trace) or not all(row["success"] for row in requests):
|
||||
raise ValueError(f"{root}: incomplete or failed real request vector")
|
||||
for index, (request, trace_row) in enumerate(zip(requests, trace)):
|
||||
observed = (int(request["input_tokens"]), int(request["requested_output_tokens"]))
|
||||
expected = (
|
||||
int(trace_row["num_prefill_tokens"]),
|
||||
int(trace_row["num_decode_tokens"]),
|
||||
)
|
||||
if observed != expected:
|
||||
raise ValueError(f"{root}: request {index} shape {observed} != {expected}")
|
||||
values = {
|
||||
metric: [
|
||||
float(request[f"{metric}_ms"])
|
||||
for request in requests
|
||||
if request.get(f"{metric}_ms") is not None
|
||||
]
|
||||
for metric in METRICS
|
||||
}
|
||||
completions = [
|
||||
float(request["admitted_s"]) + float(request["e2e_ms"]) / 1000
|
||||
for request in requests
|
||||
]
|
||||
tail_index = max(range(len(completions)), key=completions.__getitem__)
|
||||
last_arrival = max(float(request["scheduled_s"]) for request in requests)
|
||||
return {
|
||||
"root": str(root),
|
||||
"result_sha256": sha256(result_path),
|
||||
"values": values,
|
||||
"summary": result["summary"],
|
||||
"prefix_cache": prefix_cache_delta(root),
|
||||
"decode_batch": real_decode_batch(root),
|
||||
"drain": {
|
||||
"last_arrival_s": last_arrival,
|
||||
"last_completion_s": completions[tail_index],
|
||||
"tail_after_last_arrival_s": completions[tail_index] - last_arrival,
|
||||
"tail_driver": {
|
||||
"request_index": tail_index,
|
||||
"arrival_s": float(requests[tail_index]["scheduled_s"]),
|
||||
"arrival_before_cutoff_s": last_arrival
|
||||
- float(requests[tail_index]["scheduled_s"]),
|
||||
"input_tokens": int(requests[tail_index]["input_tokens"]),
|
||||
"output_tokens": int(requests[tail_index]["requested_output_tokens"]),
|
||||
"admission_lag_ms": float(requests[tail_index]["admission_lag_ms"]),
|
||||
"e2e_ms": float(requests[tail_index]["e2e_ms"]),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
args = parse_args()
|
||||
input_manifest = json.loads((args.input_root / "manifest.json").read_text())
|
||||
trace_path = args.input_root / "frontier.csv"
|
||||
trace = read_csv(trace_path)
|
||||
if len(trace) != input_manifest["requests"]:
|
||||
raise ValueError("input manifest/trace request count mismatch")
|
||||
trace_sha = sha256(trace_path)
|
||||
sim = load_sim(args.sim_root, trace, trace_sha)
|
||||
reals = [load_real(root, input_manifest, trace) for root in args.real_root]
|
||||
pooled = {
|
||||
metric: [value for real in reals for value in real["values"][metric]]
|
||||
for metric in METRICS
|
||||
}
|
||||
latency = {}
|
||||
for metric in METRICS:
|
||||
real_dist = distribution(pooled[metric])
|
||||
sim_dist = distribution(sim["values"][metric])
|
||||
latency[metric] = {
|
||||
"real": real_dist,
|
||||
"sim": sim_dist,
|
||||
"relative_bias_percent": {
|
||||
statistic: 100
|
||||
* (float(sim_dist[statistic]) - float(real_dist[statistic]))
|
||||
/ float(real_dist[statistic])
|
||||
for statistic in ("mean", "p50", "p90", "p95", "p99")
|
||||
},
|
||||
"real_per_trial": [
|
||||
distribution(real["values"][metric]) for real in reals
|
||||
],
|
||||
}
|
||||
payload = {
|
||||
"schema": "frontier-code-trace-canary-analysis-v1",
|
||||
"topology": args.topology,
|
||||
"requests_per_trial": len(trace),
|
||||
"trials": len(reals),
|
||||
"input": {
|
||||
"manifest": str(args.input_root / "manifest.json"),
|
||||
"paired_row_vector_sha256": input_manifest["paired_row_vector_sha256"],
|
||||
"frontier_csv_sha256": trace_sha,
|
||||
},
|
||||
"latency_ms": latency,
|
||||
"prefix_cache": {
|
||||
"real_per_trial": [real["prefix_cache"] for real in reals],
|
||||
"real_hit_ratio_mean": statistics.fmean(
|
||||
real["prefix_cache"]["hit_ratio"] for real in reals
|
||||
),
|
||||
"sim": sim["summary"]["prefix_cache"],
|
||||
},
|
||||
"drain": {
|
||||
"interpretation": (
|
||||
"Report the max-completion request explicitly; a response that "
|
||||
"arrived well before the cutoff can create a long drain tail "
|
||||
"without implying queue accumulation."
|
||||
),
|
||||
"real_per_trial": [real["drain"] for real in reals],
|
||||
"sim": sim["drain"],
|
||||
},
|
||||
"sim_decode_batch": sim["summary"]["decode_batch"],
|
||||
"real_decode_batch_per_trial": [real["decode_batch"] for real in reals],
|
||||
"real_artifacts": [
|
||||
{
|
||||
"root": real["root"],
|
||||
"result_sha256": real["result_sha256"],
|
||||
}
|
||||
for real in reals
|
||||
],
|
||||
}
|
||||
args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||
args.output.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n")
|
||||
print(json.dumps({"output": str(args.output), "topology": args.topology}))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -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。
|
||||
|
||||
632
runs/frontier-code-trace-v0/results/calibration-summary.json
Normal file
632
runs/frontier-code-trace-v0/results/calibration-summary.json
Normal file
@@ -0,0 +1,632 @@
|
||||
{
|
||||
"attention_profile_sha256": "fbcf7e1f95789a6f6d771e24d1fc60958b7daf04eb0db260d27869a19d71d550",
|
||||
"cells": [
|
||||
{
|
||||
"decode_batch": {
|
||||
"histogram": {
|
||||
"1": 5525
|
||||
},
|
||||
"max": 1,
|
||||
"share_gt_1": 0.0,
|
||||
"share_gt_4": 0.0,
|
||||
"stages": 5525
|
||||
},
|
||||
"drain_fraction": 0.00044126232317770095,
|
||||
"drain_tail_s": 1.6150201028303854,
|
||||
"offered_load": {
|
||||
"decode_tokens_per_s": 1.5183060109289617,
|
||||
"prefill_tokens_per_s_after_prefix": 189.91639344262296,
|
||||
"prefill_tokens_per_s_raw": 201.38743169398907,
|
||||
"requests_per_s": 0.008743169398907104
|
||||
},
|
||||
"prefix_cache_hit_ratio": 0.05698154180238871,
|
||||
"requests": 32,
|
||||
"rho": 5e-05,
|
||||
"subcritical_gate": true,
|
||||
"topology": "tp4_mns16",
|
||||
"tpot_ms": {
|
||||
"count": 32,
|
||||
"max": 6.06516500761245,
|
||||
"mean": 5.267661756941212,
|
||||
"min": 4.642776716764274,
|
||||
"p50": 5.27961358181982,
|
||||
"p90": 6.065165007589712,
|
||||
"p95": 6.06516500761245,
|
||||
"p99": 6.06516500761245
|
||||
},
|
||||
"trace_sha256": "bdc54edafacf3e3f353de7a54d5e43a7e4323eb1e8b3dc55ce333a5e0b347ce5",
|
||||
"ttft_ms": {
|
||||
"count": 32,
|
||||
"max": 9026.404118319988,
|
||||
"mean": 1316.2539772416199,
|
||||
"min": 76.98844366404956,
|
||||
"p50": 401.828087941567,
|
||||
"p90": 3363.622890573971,
|
||||
"p95": 6721.082190563591,
|
||||
"p99": 8741.382807755395
|
||||
},
|
||||
"waiting_ms": {
|
||||
"count": 32,
|
||||
"max": 0.0,
|
||||
"mean": 0.0,
|
||||
"min": 0.0,
|
||||
"p50": 0.0,
|
||||
"p90": 0.0,
|
||||
"p95": 0.0,
|
||||
"p99": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"decode_batch": {
|
||||
"histogram": {
|
||||
"1": 33249,
|
||||
"2": 294,
|
||||
"3": 76
|
||||
},
|
||||
"max": 3,
|
||||
"share_gt_1": 0.011005681311163331,
|
||||
"share_gt_4": 0.0,
|
||||
"stages": 33619
|
||||
},
|
||||
"drain_fraction": 0.0006573023445132039,
|
||||
"drain_tail_s": 2.4057265809183264,
|
||||
"offered_load": {
|
||||
"decode_tokens_per_s": 9.343989071038251,
|
||||
"prefill_tokens_per_s_after_prefix": 491.8571038251366,
|
||||
"prefill_tokens_per_s_raw": 1477.1773224043716,
|
||||
"requests_per_s": 0.03224043715846994
|
||||
},
|
||||
"prefix_cache_hit_ratio": 0.667142227102801,
|
||||
"requests": 118,
|
||||
"rho": 0.0001,
|
||||
"subcritical_gate": true,
|
||||
"topology": "tp4_mns16",
|
||||
"tpot_ms": {
|
||||
"count": 118,
|
||||
"max": 109.2514556116484,
|
||||
"mean": 6.521761912064516,
|
||||
"min": 4.642776716750063,
|
||||
"p50": 5.7134254039277,
|
||||
"p90": 6.06516500761245,
|
||||
"p95": 6.582261050425584,
|
||||
"p99": 14.049063410907634
|
||||
},
|
||||
"trace_sha256": "8d4ac5646f46e84560c17c44013af2bcb7cfe91d4a2be3476d8f3c09565cf55f",
|
||||
"ttft_ms": {
|
||||
"count": 118,
|
||||
"max": 9696.373176562247,
|
||||
"mean": 1203.6180593647337,
|
||||
"min": 72.1560867923472,
|
||||
"p50": 592.0461311603731,
|
||||
"p90": 3231.0798294979118,
|
||||
"p95": 6885.471905257904,
|
||||
"p99": 8918.025104477005
|
||||
},
|
||||
"waiting_ms": {
|
||||
"count": 118,
|
||||
"max": 7151.845512636555,
|
||||
"mean": 98.59009397263883,
|
||||
"min": 0.0,
|
||||
"p50": 0.0,
|
||||
"p90": 0.0,
|
||||
"p95": 0.21863999056675887,
|
||||
"p99": 2087.1951396751865
|
||||
}
|
||||
},
|
||||
{
|
||||
"decode_batch": {
|
||||
"histogram": {
|
||||
"1": 71338,
|
||||
"2": 4093,
|
||||
"3": 1021,
|
||||
"4": 33
|
||||
},
|
||||
"max": 4,
|
||||
"share_gt_1": 0.067294240700791,
|
||||
"share_gt_4": 0.0,
|
||||
"stages": 76485
|
||||
},
|
||||
"drain_fraction": 0.001483881651363999,
|
||||
"drain_tail_s": 5.431006843992236,
|
||||
"offered_load": {
|
||||
"decode_tokens_per_s": 22.691803278688525,
|
||||
"prefill_tokens_per_s_after_prefix": 884.2945355191257,
|
||||
"prefill_tokens_per_s_raw": 2459.7437158469947,
|
||||
"requests_per_s": 0.0633879781420765
|
||||
},
|
||||
"prefix_cache_hit_ratio": 0.6406200282639031,
|
||||
"requests": 232,
|
||||
"rho": 0.0002,
|
||||
"subcritical_gate": true,
|
||||
"topology": "tp2_mns16",
|
||||
"tpot_ms": {
|
||||
"count": 231,
|
||||
"max": 151.0151050020596,
|
||||
"mean": 8.197384891414327,
|
||||
"min": 4.790955988028145,
|
||||
"p50": 6.377284733844135,
|
||||
"p90": 9.066414456096654,
|
||||
"p95": 13.235755136549969,
|
||||
"p99": 45.72584194314243
|
||||
},
|
||||
"trace_sha256": "188f9e52674ec268d70d763995f2cdf84ccbcbab86420214b127994569324e9b",
|
||||
"ttft_ms": {
|
||||
"count": 232,
|
||||
"max": 22394.384315265255,
|
||||
"mean": 2036.2309970727358,
|
||||
"min": 90.95485497891787,
|
||||
"p50": 876.6052006358223,
|
||||
"p90": 5676.270318256946,
|
||||
"p95": 9955.05948414866,
|
||||
"p99": 15641.83197487735
|
||||
},
|
||||
"waiting_ms": {
|
||||
"count": 232,
|
||||
"max": 13155.607757982125,
|
||||
"mean": 338.8558697712575,
|
||||
"min": 0.0,
|
||||
"p50": 0.0,
|
||||
"p90": 5.941389865392926,
|
||||
"p95": 1644.4218195787325,
|
||||
"p99": 8012.825782587187
|
||||
}
|
||||
},
|
||||
{
|
||||
"decode_batch": {
|
||||
"histogram": {
|
||||
"1": 72379,
|
||||
"2": 4138,
|
||||
"3": 696
|
||||
},
|
||||
"max": 3,
|
||||
"share_gt_1": 0.06260603784336835,
|
||||
"share_gt_4": 0.0,
|
||||
"stages": 77213
|
||||
},
|
||||
"drain_fraction": 0.0010192168060329308,
|
||||
"drain_tail_s": 3.730333510080527,
|
||||
"offered_load": {
|
||||
"decode_tokens_per_s": 22.691803278688525,
|
||||
"prefill_tokens_per_s_after_prefix": 880.7972677595628,
|
||||
"prefill_tokens_per_s_raw": 2459.7437158469947,
|
||||
"requests_per_s": 0.0633879781420765
|
||||
},
|
||||
"prefix_cache_hit_ratio": 0.6420421114379927,
|
||||
"requests": 232,
|
||||
"rho": 0.0002,
|
||||
"subcritical_gate": true,
|
||||
"topology": "tp4_mns16",
|
||||
"tpot_ms": {
|
||||
"count": 231,
|
||||
"max": 109.2514556116484,
|
||||
"mean": 6.682483450713786,
|
||||
"min": 4.6427767165369005,
|
||||
"p50": 5.757631515507455,
|
||||
"p90": 6.873691941109428,
|
||||
"p95": 8.022302513342353,
|
||||
"p99": 28.619774468019706
|
||||
},
|
||||
"trace_sha256": "188f9e52674ec268d70d763995f2cdf84ccbcbab86420214b127994569324e9b",
|
||||
"ttft_ms": {
|
||||
"count": 232,
|
||||
"max": 12080.695954866542,
|
||||
"mean": 1109.6819359234096,
|
||||
"min": 72.1560867923472,
|
||||
"p50": 527.4056752296019,
|
||||
"p90": 2603.3383651315494,
|
||||
"p95": 5585.788369509169,
|
||||
"p99": 8828.771798959253
|
||||
},
|
||||
"waiting_ms": {
|
||||
"count": 232,
|
||||
"max": 7151.845512636555,
|
||||
"mean": 100.5913696184332,
|
||||
"min": 0.0,
|
||||
"p50": 0.0,
|
||||
"p90": 2.71668797665825,
|
||||
"p95": 337.7136230834021,
|
||||
"p99": 2261.809117635907
|
||||
}
|
||||
},
|
||||
{
|
||||
"decode_batch": {
|
||||
"histogram": {
|
||||
"1": 163554,
|
||||
"10": 18,
|
||||
"11": 5,
|
||||
"12": 10,
|
||||
"2": 48104,
|
||||
"3": 15894,
|
||||
"4": 2673,
|
||||
"5": 1305,
|
||||
"6": 332,
|
||||
"7": 181,
|
||||
"8": 46,
|
||||
"9": 15
|
||||
},
|
||||
"max": 12,
|
||||
"share_gt_1": 0.2954419157652593,
|
||||
"share_gt_4": 0.008236515505929689,
|
||||
"stages": 232137
|
||||
},
|
||||
"drain_fraction": 0.001932022033012745,
|
||||
"drain_tail_s": 7.071200640826646,
|
||||
"offered_load": {
|
||||
"decode_tokens_per_s": 90.30054644808743,
|
||||
"prefill_tokens_per_s_after_prefix": 1805.1767759562842,
|
||||
"prefill_tokens_per_s_raw": 5620.918852459016,
|
||||
"requests_per_s": 0.13633879781420766
|
||||
},
|
||||
"prefix_cache_hit_ratio": 0.6789729811301968,
|
||||
"requests": 499,
|
||||
"rho": 0.0004,
|
||||
"subcritical_gate": true,
|
||||
"topology": "tp2_mns16",
|
||||
"tpot_ms": {
|
||||
"count": 497,
|
||||
"max": 556.5990343567938,
|
||||
"mean": 18.61788167095804,
|
||||
"min": 4.790955988028145,
|
||||
"p50": 7.918935117459114,
|
||||
"p90": 26.775158132602897,
|
||||
"p95": 56.43467403678585,
|
||||
"p99": 256.82570583636533
|
||||
},
|
||||
"trace_sha256": "2751c373bb91eccf42b94e1b28245870d6ffa2f91e1b5dabafe2435bc46da274",
|
||||
"ttft_ms": {
|
||||
"count": 499,
|
||||
"max": 28488.652032648133,
|
||||
"mean": 2601.050597929721,
|
||||
"min": 90.96449664048123,
|
||||
"p50": 942.4448686800133,
|
||||
"p90": 7645.075071658986,
|
||||
"p95": 12524.265102993284,
|
||||
"p99": 19300.755134457228
|
||||
},
|
||||
"waiting_ms": {
|
||||
"count": 499,
|
||||
"max": 25277.458416518584,
|
||||
"mean": 926.4084886277059,
|
||||
"min": 0.0,
|
||||
"p50": 2.7291107814733095,
|
||||
"p90": 2483.439910098784,
|
||||
"p95": 6352.661668917902,
|
||||
"p99": 13692.62653031437
|
||||
}
|
||||
},
|
||||
{
|
||||
"decode_batch": {
|
||||
"histogram": {
|
||||
"1": 184431,
|
||||
"2": 52296,
|
||||
"3": 10583,
|
||||
"4": 1254,
|
||||
"5": 675
|
||||
},
|
||||
"max": 5,
|
||||
"share_gt_1": 0.2600235115692167,
|
||||
"share_gt_4": 0.002708243894414598,
|
||||
"stages": 249239
|
||||
},
|
||||
"drain_fraction": 0.001114813580178276,
|
||||
"drain_tail_s": 4.08021770345249,
|
||||
"offered_load": {
|
||||
"decode_tokens_per_s": 90.30054644808743,
|
||||
"prefill_tokens_per_s_after_prefix": 1738.4489071038251,
|
||||
"prefill_tokens_per_s_raw": 5620.918852459016,
|
||||
"requests_per_s": 0.13633879781420766
|
||||
},
|
||||
"prefix_cache_hit_ratio": 0.6908465352465023,
|
||||
"requests": 499,
|
||||
"rho": 0.0004,
|
||||
"subcritical_gate": true,
|
||||
"topology": "tp4_mns16",
|
||||
"tpot_ms": {
|
||||
"count": 497,
|
||||
"max": 191.36693232402044,
|
||||
"mean": 9.29907499058627,
|
||||
"min": 4.6427767165369005,
|
||||
"p50": 6.554626532726112,
|
||||
"p90": 10.321323503714908,
|
||||
"p95": 18.835821286381098,
|
||||
"p99": 73.17188748931419
|
||||
},
|
||||
"trace_sha256": "2751c373bb91eccf42b94e1b28245870d6ffa2f91e1b5dabafe2435bc46da274",
|
||||
"ttft_ms": {
|
||||
"count": 499,
|
||||
"max": 14944.866787426236,
|
||||
"mean": 1252.450784907019,
|
||||
"min": 72.1560867923472,
|
||||
"p50": 526.7327146962089,
|
||||
"p90": 3295.008250609953,
|
||||
"p95": 5487.844406213842,
|
||||
"p99": 10840.596450182773
|
||||
},
|
||||
"waiting_ms": {
|
||||
"count": 499,
|
||||
"max": 12922.960017376226,
|
||||
"mean": 274.43276731097365,
|
||||
"min": 0.0,
|
||||
"p50": 0.6520015415389935,
|
||||
"p90": 164.9360333363801,
|
||||
"p95": 2029.720098907419,
|
||||
"p99": 6246.634668026156
|
||||
}
|
||||
},
|
||||
{
|
||||
"decode_batch": {
|
||||
"histogram": {
|
||||
"1": 123423,
|
||||
"10": 262,
|
||||
"11": 84,
|
||||
"12": 37,
|
||||
"13": 42,
|
||||
"14": 108,
|
||||
"15": 59,
|
||||
"16": 39,
|
||||
"2": 64628,
|
||||
"3": 34551,
|
||||
"4": 17977,
|
||||
"5": 5215,
|
||||
"6": 2255,
|
||||
"7": 1043,
|
||||
"8": 349,
|
||||
"9": 406
|
||||
},
|
||||
"max": 16,
|
||||
"share_gt_1": 0.5072501377366475,
|
||||
"share_gt_4": 0.039520436924600166,
|
||||
"stages": 250478
|
||||
},
|
||||
"drain_fraction": 0.0006878766017147268,
|
||||
"drain_tail_s": 2.5176283622759,
|
||||
"offered_load": {
|
||||
"decode_tokens_per_s": 135.20737704918034,
|
||||
"prefill_tokens_per_s_after_prefix": 3107.11174863388,
|
||||
"prefill_tokens_per_s_raw": 7722.316120218579,
|
||||
"requests_per_s": 0.23743169398907105
|
||||
},
|
||||
"prefix_cache_hit_ratio": 0.5977800565206239,
|
||||
"requests": 869,
|
||||
"rho": 0.0008,
|
||||
"subcritical_gate": true,
|
||||
"topology": "tp2_mns16",
|
||||
"tpot_ms": {
|
||||
"count": 864,
|
||||
"max": 1048.199917263105,
|
||||
"mean": 35.531282784807445,
|
||||
"min": 4.790955988028145,
|
||||
"p50": 10.56810791578755,
|
||||
"p90": 58.679343047855866,
|
||||
"p95": 113.21830549665293,
|
||||
"p99": 497.8300148864786
|
||||
},
|
||||
"trace_sha256": "2788a21c6bb8be6d03fb5151f2c51efa09c0eb5e1f941af60c00a7cc11d41206",
|
||||
"ttft_ms": {
|
||||
"count": 869,
|
||||
"max": 35023.43713844812,
|
||||
"mean": 3519.677566968775,
|
||||
"min": 80.48812343014333,
|
||||
"p50": 944.5946905507299,
|
||||
"p90": 11539.678186253443,
|
||||
"p95": 16395.861888973763,
|
||||
"p99": 23283.982779742393
|
||||
},
|
||||
"waiting_ms": {
|
||||
"count": 869,
|
||||
"max": 33885.372635082604,
|
||||
"mean": 1944.5601581730987,
|
||||
"min": 0.0,
|
||||
"p50": 4.989910657513974,
|
||||
"p90": 7660.373377703809,
|
||||
"p95": 12268.558603129362,
|
||||
"p99": 19104.247337156932
|
||||
}
|
||||
},
|
||||
{
|
||||
"decode_batch": {
|
||||
"histogram": {
|
||||
"1": 185761,
|
||||
"2": 81136,
|
||||
"3": 28184,
|
||||
"4": 10328,
|
||||
"5": 2183,
|
||||
"6": 759,
|
||||
"7": 199,
|
||||
"8": 89,
|
||||
"9": 18
|
||||
},
|
||||
"max": 9,
|
||||
"share_gt_1": 0.3981636573931581,
|
||||
"share_gt_4": 0.010523007739983218,
|
||||
"stages": 308657
|
||||
},
|
||||
"drain_fraction": 0.0005799250803688739,
|
||||
"drain_tail_s": 2.1225257941500786,
|
||||
"offered_load": {
|
||||
"decode_tokens_per_s": 135.20737704918034,
|
||||
"prefill_tokens_per_s_after_prefix": 2943.3609289617484,
|
||||
"prefill_tokens_per_s_raw": 7722.316120218579,
|
||||
"requests_per_s": 0.23743169398907105
|
||||
},
|
||||
"prefix_cache_hit_ratio": 0.6189897292366545,
|
||||
"requests": 869,
|
||||
"rho": 0.0008,
|
||||
"subcritical_gate": true,
|
||||
"topology": "tp4_mns16",
|
||||
"tpot_ms": {
|
||||
"count": 864,
|
||||
"max": 556.1359991102521,
|
||||
"mean": 12.147948538437653,
|
||||
"min": 4.6427767165369005,
|
||||
"p50": 6.843951976861717,
|
||||
"p90": 14.306706048821074,
|
||||
"p95": 30.43280397112956,
|
||||
"p99": 137.6170979713351
|
||||
},
|
||||
"trace_sha256": "2788a21c6bb8be6d03fb5151f2c51efa09c0eb5e1f941af60c00a7cc11d41206",
|
||||
"ttft_ms": {
|
||||
"count": 869,
|
||||
"max": 17076.806859823137,
|
||||
"mean": 1363.8187082248587,
|
||||
"min": 67.46058986817616,
|
||||
"p50": 457.5338581378219,
|
||||
"p90": 4063.5681271006715,
|
||||
"p95": 6757.6291299215145,
|
||||
"p99": 11100.99635793714
|
||||
},
|
||||
"waiting_ms": {
|
||||
"count": 869,
|
||||
"max": 16033.766590147934,
|
||||
"mean": 459.6734459851503,
|
||||
"min": 0.0,
|
||||
"p50": 2.5305451699750847,
|
||||
"p90": 796.2202857544993,
|
||||
"p95": 3149.129404067843,
|
||||
"p99": 9085.03332971697
|
||||
}
|
||||
},
|
||||
{
|
||||
"decode_batch": {
|
||||
"histogram": {
|
||||
"1": 8883,
|
||||
"10": 102,
|
||||
"11": 206,
|
||||
"12": 48,
|
||||
"13": 104,
|
||||
"14": 98,
|
||||
"15": 112,
|
||||
"16": 42432,
|
||||
"2": 8887,
|
||||
"3": 5320,
|
||||
"4": 1084,
|
||||
"5": 391,
|
||||
"6": 1238,
|
||||
"7": 983,
|
||||
"8": 600,
|
||||
"9": 185
|
||||
},
|
||||
"max": 16,
|
||||
"share_gt_1": 0.8743084346214255,
|
||||
"share_gt_4": 0.6579457501450342,
|
||||
"stages": 70673
|
||||
},
|
||||
"drain_fraction": 0.26690162220748465,
|
||||
"drain_tail_s": 976.8599372793938,
|
||||
"offered_load": {
|
||||
"decode_tokens_per_s": 222.2658469945355,
|
||||
"prefill_tokens_per_s_after_prefix": 6478.3401639344265,
|
||||
"prefill_tokens_per_s_raw": 14510.624316939891,
|
||||
"requests_per_s": 0.46939890710382515
|
||||
},
|
||||
"prefix_cache_hit_ratio": 0.5536777047530368,
|
||||
"requests": 1718,
|
||||
"rho": 0.0016,
|
||||
"subcritical_gate": false,
|
||||
"topology": "tp2_mns16",
|
||||
"tpot_ms": {
|
||||
"count": 1710,
|
||||
"max": 1075.3968454229532,
|
||||
"mean": 82.12803809595945,
|
||||
"min": 5.044100516215622,
|
||||
"p50": 55.434284109098826,
|
||||
"p90": 148.45522338371572,
|
||||
"p95": 240.8300400647424,
|
||||
"p99": 469.60790088235683
|
||||
},
|
||||
"trace_sha256": "d785665c86a562c9d9a7492ad710e6393bb883bf8c3ad552a34ff18f22925043",
|
||||
"ttft_ms": {
|
||||
"count": 1718,
|
||||
"max": 899333.5996373689,
|
||||
"mean": 363823.5998174686,
|
||||
"min": 95.16785391630833,
|
||||
"p50": 333469.8464378732,
|
||||
"p90": 786932.9549504423,
|
||||
"p95": 836208.7308378813,
|
||||
"p99": 879481.7276833938
|
||||
},
|
||||
"waiting_ms": {
|
||||
"count": 1718,
|
||||
"max": 898008.7571403392,
|
||||
"mean": 362060.3850241827,
|
||||
"min": 0.0,
|
||||
"p50": 332965.98011225695,
|
||||
"p90": 785791.1926569697,
|
||||
"p95": 832975.7759936375,
|
||||
"p99": 872501.6632742453
|
||||
}
|
||||
},
|
||||
{
|
||||
"decode_batch": {
|
||||
"histogram": {
|
||||
"1": 82578,
|
||||
"10": 992,
|
||||
"11": 686,
|
||||
"12": 564,
|
||||
"13": 388,
|
||||
"14": 207,
|
||||
"15": 120,
|
||||
"16": 556,
|
||||
"2": 76732,
|
||||
"3": 49252,
|
||||
"4": 30080,
|
||||
"5": 19950,
|
||||
"6": 9869,
|
||||
"7": 6575,
|
||||
"8": 3735,
|
||||
"9": 1733
|
||||
},
|
||||
"max": 16,
|
||||
"share_gt_1": 0.7092497984275589,
|
||||
"share_gt_4": 0.15976156356837795,
|
||||
"stages": 284017
|
||||
},
|
||||
"drain_fraction": 0.0057571275011030374,
|
||||
"drain_tail_s": 21.071086654037117,
|
||||
"offered_load": {
|
||||
"decode_tokens_per_s": 222.2658469945355,
|
||||
"prefill_tokens_per_s_after_prefix": 6066.187158469946,
|
||||
"prefill_tokens_per_s_raw": 14510.624316939891,
|
||||
"requests_per_s": 0.46939890710382515
|
||||
},
|
||||
"prefix_cache_hit_ratio": 0.5820880455385098,
|
||||
"requests": 1718,
|
||||
"rho": 0.0016,
|
||||
"subcritical_gate": true,
|
||||
"topology": "tp4_mns16",
|
||||
"tpot_ms": {
|
||||
"count": 1710,
|
||||
"max": 779.2730316123988,
|
||||
"mean": 31.087273162821237,
|
||||
"min": 4.6427767165369005,
|
||||
"p50": 9.443696854706767,
|
||||
"p90": 67.85056779351899,
|
||||
"p95": 145.53426807885694,
|
||||
"p99": 346.8968267376913
|
||||
},
|
||||
"trace_sha256": "d785665c86a562c9d9a7492ad710e6393bb883bf8c3ad552a34ff18f22925043",
|
||||
"ttft_ms": {
|
||||
"count": 1718,
|
||||
"max": 24498.655361823694,
|
||||
"mean": 2344.154809416248,
|
||||
"min": 72.15684780067022,
|
||||
"p50": 646.7976478797937,
|
||||
"p90": 7657.698621058489,
|
||||
"p95": 10053.03089890951,
|
||||
"p99": 16706.358496869783
|
||||
},
|
||||
"waiting_ms": {
|
||||
"count": 1718,
|
||||
"max": 20607.142196811765,
|
||||
"mean": 1395.7184472333554,
|
||||
"min": 0.0,
|
||||
"p50": 5.521385635063325,
|
||||
"p90": 5253.222863654173,
|
||||
"p95": 8173.9598212075725,
|
||||
"p99": 14808.95660872061
|
||||
}
|
||||
}
|
||||
],
|
||||
"schema": "frontier-code-trace-calibration-summary-v1",
|
||||
"subcritical_rule": "drain tail <= 10% of the 3660s arrival window"
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
0, NVIDIA H20, 0, 0
|
||||
1, NVIDIA H20, 0, 0
|
||||
2, NVIDIA H20, 0, 0
|
||||
3, NVIDIA H20, 0, 0
|
||||
4, NVIDIA H20, 0, 0
|
||||
5, NVIDIA H20, 0, 0
|
||||
6, NVIDIA H20, 0, 0
|
||||
7, NVIDIA H20, 0, 0
|
||||
|
@@ -0,0 +1,8 @@
|
||||
0, NVIDIA H20, 0, 0, 0
|
||||
1, NVIDIA H20, 0, 0, 0
|
||||
2, NVIDIA H20, 0, 0, 0
|
||||
3, NVIDIA H20, 0, 0, 0
|
||||
4, NVIDIA H20, 0, 0, 0
|
||||
5, NVIDIA H20, 0, 0, 0
|
||||
6, NVIDIA H20, 0, 0, 0
|
||||
7, NVIDIA H20, 0, 0, 0
|
||||
|
@@ -0,0 +1,3 @@
|
||||
9857f3ee2565e0ae5bf414c769ea7404295eb7b15fc4a4e8c0f85726312e27a5 runs/frontier-code-trace-v0/run_max_model_len_smoke.sh
|
||||
0b6a6d1d8c71f57b8e11b4eb89a9887e182a327223206577086605930da3c028 /home/admin/cpfs/wjh/aituner/aituner-code-smoke-da480a8/runs/frontier-s3-real-v0/qwen30_prefill_client.py
|
||||
2850ddb3bf7aecad20b611e2d44f3077fc8193f4827c93beddd4c02ad63c2297 /home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B/config.json
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"requests": [
|
||||
{
|
||||
"admission_lag_ms": 0.09795790538191795,
|
||||
"admitted_s": 9.795790538191795e-05,
|
||||
"completion_tokens": 242,
|
||||
"e2e_ms": 5778.945273021236,
|
||||
"prompt_tokens": 136774,
|
||||
"request_index": 0,
|
||||
"scheduled_s": 0.0,
|
||||
"slo_pass": true,
|
||||
"streamed_token_count": 242,
|
||||
"success": true,
|
||||
"tpot_ms": 8.126009058562799,
|
||||
"ttft_ms": 3820.549983996898
|
||||
}
|
||||
],
|
||||
"schema": "qwen30-fixed-rate-anchor-v2",
|
||||
"summary": {
|
||||
"admission_lag_max_ms": 0.09795790538191795,
|
||||
"completed": 1,
|
||||
"failed": 0,
|
||||
"slo": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 1,
|
||||
"tpot_threshold_ms": 150.0,
|
||||
"ttft_threshold_ms": 18096.75
|
||||
},
|
||||
"tpot_max_ms": 8.126009058562799,
|
||||
"tpot_p50_ms": 8.126009058562799,
|
||||
"tpot_p95_ms": 8.126009058562799,
|
||||
"ttft_max_ms": 3820.549983996898,
|
||||
"ttft_p50_ms": 3820.549983996898,
|
||||
"ttft_p95_ms": 3820.549983996898
|
||||
},
|
||||
"workload": {
|
||||
"arrival": "open_loop_uniform",
|
||||
"input_tokens": 136774,
|
||||
"last_scheduled_arrival_s": 0.0,
|
||||
"offered_request_rate": 1.0,
|
||||
"output_tokens": 242,
|
||||
"prefix_caching": false,
|
||||
"prompt_vector_sha256": "40852e3d159377ae557b58933b077bee1e565bc51a4b7d4e3ea0070709e63999",
|
||||
"request_count": 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"requests": [
|
||||
{
|
||||
"admission_lag_ms": 0.10300683788955212,
|
||||
"admitted_s": 0.00010300683788955212,
|
||||
"completion_tokens": 68,
|
||||
"e2e_ms": 13182.361921994016,
|
||||
"prompt_tokens": 119702,
|
||||
"request_index": 0,
|
||||
"scheduled_s": 0.0,
|
||||
"slo_pass": true,
|
||||
"streamed_token_count": 68,
|
||||
"success": true,
|
||||
"tpot_ms": 7.21338267243509,
|
||||
"ttft_ms": 12699.044595938176
|
||||
}
|
||||
],
|
||||
"schema": "qwen30-fixed-rate-anchor-v2",
|
||||
"summary": {
|
||||
"admission_lag_max_ms": 0.10300683788955212,
|
||||
"completed": 1,
|
||||
"failed": 0,
|
||||
"slo": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 1,
|
||||
"tpot_threshold_ms": 150.0,
|
||||
"ttft_threshold_ms": 15962.75
|
||||
},
|
||||
"tpot_max_ms": 7.21338267243509,
|
||||
"tpot_p50_ms": 7.21338267243509,
|
||||
"tpot_p95_ms": 7.21338267243509,
|
||||
"ttft_max_ms": 12699.044595938176,
|
||||
"ttft_p50_ms": 12699.044595938176,
|
||||
"ttft_p95_ms": 12699.044595938176
|
||||
},
|
||||
"workload": {
|
||||
"arrival": "open_loop_uniform",
|
||||
"input_tokens": 119702,
|
||||
"last_scheduled_arrival_s": 0.0,
|
||||
"offered_request_rate": 1.0,
|
||||
"output_tokens": 68,
|
||||
"prefix_caching": false,
|
||||
"prompt_vector_sha256": "aaa2e7077defd41a1abb6227d9d22ec928a5d56e18fb3135783a6044e8365af7",
|
||||
"request_count": 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"requests": [
|
||||
{
|
||||
"admission_lag_ms": 0.08747284300625324,
|
||||
"admitted_s": 8.747284300625324e-05,
|
||||
"completion_tokens": 78,
|
||||
"e2e_ms": 2135.5441550258547,
|
||||
"prompt_tokens": 20051,
|
||||
"request_index": 0,
|
||||
"scheduled_s": 0.0,
|
||||
"slo_pass": true,
|
||||
"streamed_token_count": 78,
|
||||
"success": true,
|
||||
"tpot_ms": 16.65233903830605,
|
||||
"ttft_ms": 853.2876779790968
|
||||
}
|
||||
],
|
||||
"schema": "qwen30-fixed-rate-anchor-v2",
|
||||
"summary": {
|
||||
"admission_lag_max_ms": 0.08747284300625324,
|
||||
"completed": 1,
|
||||
"failed": 0,
|
||||
"slo": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 1,
|
||||
"tpot_threshold_ms": 150.0,
|
||||
"ttft_threshold_ms": 3506.375
|
||||
},
|
||||
"tpot_max_ms": 16.65233903830605,
|
||||
"tpot_p50_ms": 16.65233903830605,
|
||||
"tpot_p95_ms": 16.65233903830605,
|
||||
"ttft_max_ms": 853.2876779790968,
|
||||
"ttft_p50_ms": 853.2876779790968,
|
||||
"ttft_p95_ms": 853.2876779790968
|
||||
},
|
||||
"workload": {
|
||||
"arrival": "open_loop_uniform",
|
||||
"input_tokens": 20051,
|
||||
"last_scheduled_arrival_s": 0.0,
|
||||
"offered_request_rate": 1.0,
|
||||
"output_tokens": 78,
|
||||
"prefix_caching": false,
|
||||
"prompt_vector_sha256": "a814b02092178b7e949e4d14d15aa271c9e93cead6552d91413d8f9abf2c9287",
|
||||
"request_count": 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"object":"list","data":[{"id":"qwen3-30b-code-maxlen-smoke","object":"model","created":1784827167,"owned_by":"vllm","root":"/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B","parent":null,"max_model_len":147456,"permission":[{"id":"modelperm-971c6c18ac176f4d","object":"model_permission","created":1784827167,"allow_create_engine":false,"allow_sampling":true,"allow_logprobs":true,"allow_search_indices":false,"allow_view":true,"allow_fine_tuning":false,"organization":"*","group":null,"is_blocking":false}]}]}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"requests": [
|
||||
{
|
||||
"admission_lag_ms": 0.11776993051171303,
|
||||
"admitted_s": 0.00011776993051171303,
|
||||
"completion_tokens": 1,
|
||||
"e2e_ms": 1389.798145974055,
|
||||
"prompt_tokens": 512,
|
||||
"request_index": 0,
|
||||
"scheduled_s": 0.0,
|
||||
"slo_pass": false,
|
||||
"streamed_token_count": 1,
|
||||
"success": true,
|
||||
"tpot_ms": null,
|
||||
"ttft_ms": 1389.7535749711096
|
||||
}
|
||||
],
|
||||
"schema": "qwen30-fixed-rate-anchor-v2",
|
||||
"summary": {
|
||||
"admission_lag_max_ms": 0.11776993051171303,
|
||||
"completed": 1,
|
||||
"failed": 0,
|
||||
"slo": {
|
||||
"feasible": false,
|
||||
"pass_rate": 0.0,
|
||||
"passed": 0,
|
||||
"tpot_threshold_ms": null,
|
||||
"ttft_threshold_ms": 1064.0
|
||||
},
|
||||
"tpot_max_ms": null,
|
||||
"tpot_p50_ms": null,
|
||||
"tpot_p95_ms": null,
|
||||
"ttft_max_ms": 1389.7535749711096,
|
||||
"ttft_p50_ms": 1389.7535749711096,
|
||||
"ttft_p95_ms": 1389.7535749711096
|
||||
},
|
||||
"workload": {
|
||||
"arrival": "open_loop_uniform",
|
||||
"input_tokens": 512,
|
||||
"last_scheduled_arrival_s": 0.0,
|
||||
"offered_request_rate": 1.0,
|
||||
"output_tokens": 1,
|
||||
"prefix_caching": false,
|
||||
"prompt_vector_sha256": "11f5ac36e39b39336da6e64e7879dc7fcdedf26e9315bbb267d59ed1fa644939",
|
||||
"request_count": 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"block_contract": {
|
||||
"input_length_mismatches": 0,
|
||||
"runtime_identity_collisions": 0,
|
||||
"runtime_to_source_relation_conflicts": 0,
|
||||
"source_hash_count_mismatches": 0,
|
||||
"source_runtime_granularity": "one 512-token source hash to 32 consecutive 16-token identities; final partial source block may have fewer",
|
||||
"source_to_runtime_relation_conflicts": 0,
|
||||
"unique_runtime_identities": 2613467,
|
||||
"unique_runtime_relations": 0,
|
||||
"unique_source_hash_relations": 0
|
||||
},
|
||||
"excluded_over_max_total_tokens": 0,
|
||||
"frontier_csv": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0002-v1/frontier.csv",
|
||||
"frontier_csv_sha256": "188f9e52674ec268d70d763995f2cdf84ccbcbab86420214b127994569324e9b",
|
||||
"mapping": "real prompt tokens: BLAKE2b-128(parent runtime identity, exact 16-token block); missing prompt fallback: source hashes first define deterministic 16-token content blocks, then the same parent-sensitive BLAKE2b-128 runtime identity contract is applied",
|
||||
"max_total_tokens_filter": null,
|
||||
"paired_row_vector_sha256": "6d0ac009dd415a6dab23928afb1eed2947f55d57e3ac6284629a9a6549ce016e",
|
||||
"parent_validation": {
|
||||
"enabled": false,
|
||||
"links_checked": 0,
|
||||
"links_outside_selected_stream": 0,
|
||||
"mean_tail_nonreused_per_link": 0.0,
|
||||
"parent_prefix_common_blocks": 0,
|
||||
"parent_tail_nonreused_blocks": 0,
|
||||
"rule": "contiguous common prefix required; mismatch tolerated only within parent trailing partial 512-token block (<= 33 runtime blocks)"
|
||||
},
|
||||
"prefix_cache_blocks": "complete 16-token blocks only; final partial block excluded",
|
||||
"prompt_contract": {
|
||||
"input_is_pre_remapped": true,
|
||||
"real_prompt_requests": 0,
|
||||
"synthetic_fallback_requests": 232,
|
||||
"tokenizer": null
|
||||
},
|
||||
"prompt_window": null,
|
||||
"prompt_window_sha256": null,
|
||||
"real_requests": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0002-v1/real_requests.jsonl",
|
||||
"real_requests_sha256": "e495a0496fd7183980f2f59f178ac6f5869c4da9deadde45e971f466324674c8",
|
||||
"requests": 232,
|
||||
"rho": 0.0002,
|
||||
"sampling_rule": "keep iff sampling_u <= rho (SimFid convention; rho=1 keeps all rows)",
|
||||
"schema": "frontier-s3-real-remap-v2",
|
||||
"selected_remapped": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0002-v1/selected-remapped.jsonl",
|
||||
"selected_remapped_sha256": "b4b90f2a09bee765365274d5a9d4fb6322761c85b37b9d3a3eee320c268b2c85",
|
||||
"source": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/remap-cache-r0p0032-v2/selected-remapped.jsonl",
|
||||
"source_block_size": 512,
|
||||
"source_blocks": 17691,
|
||||
"source_rows_scanned": 3477,
|
||||
"source_sha256": "f46c7d8ddbd146bafe00fbc173bf3f29039d8b96aa611f1ae4e2a0b9eac189f1",
|
||||
"synthetic_fallback_contract": {
|
||||
"different_16_block_hash_different_tokens": true,
|
||||
"encoding": "injective base-(vocab_size-token_offset), 16 little-endian digits",
|
||||
"runtime_identity_is_parent_sensitive": true,
|
||||
"same_16_block_hash_same_tokens": true,
|
||||
"token_offset": 1024,
|
||||
"vocab_size": 151936
|
||||
},
|
||||
"target_16_blocks": 562555,
|
||||
"target_block_size": 16,
|
||||
"total_decode_tokens": 83052,
|
||||
"total_prefill_tokens": 9002662,
|
||||
"upstream_remap_manifest": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/remap-cache-r0p0032-v2/manifest.json",
|
||||
"upstream_remap_manifest_sha256": "8649b6acf10007e16a6b0eccebe95ee25a33481d6c3c0381ec8caf6dad05f12d",
|
||||
"window": {
|
||||
"duration_s": null,
|
||||
"start_timestamp": null
|
||||
},
|
||||
"workload_mode": "prefill_decode"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"block_contract": {
|
||||
"input_length_mismatches": 0,
|
||||
"runtime_identity_collisions": 0,
|
||||
"runtime_to_source_relation_conflicts": 0,
|
||||
"source_hash_count_mismatches": 0,
|
||||
"source_runtime_granularity": "one 512-token source hash to 32 consecutive 16-token identities; final partial source block may have fewer",
|
||||
"source_to_runtime_relation_conflicts": 0,
|
||||
"unique_runtime_identities": 2613467,
|
||||
"unique_runtime_relations": 0,
|
||||
"unique_source_hash_relations": 0
|
||||
},
|
||||
"excluded_over_max_total_tokens": 0,
|
||||
"frontier_csv": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0004-v1/frontier.csv",
|
||||
"frontier_csv_sha256": "2751c373bb91eccf42b94e1b28245870d6ffa2f91e1b5dabafe2435bc46da274",
|
||||
"mapping": "real prompt tokens: BLAKE2b-128(parent runtime identity, exact 16-token block); missing prompt fallback: source hashes first define deterministic 16-token content blocks, then the same parent-sensitive BLAKE2b-128 runtime identity contract is applied",
|
||||
"max_total_tokens_filter": null,
|
||||
"paired_row_vector_sha256": "2a3e10113bff788484615e3ff90399c0a1ca72427a2591ae38d986d9708019af",
|
||||
"parent_validation": {
|
||||
"enabled": false,
|
||||
"links_checked": 0,
|
||||
"links_outside_selected_stream": 0,
|
||||
"mean_tail_nonreused_per_link": 0.0,
|
||||
"parent_prefix_common_blocks": 0,
|
||||
"parent_tail_nonreused_blocks": 0,
|
||||
"rule": "contiguous common prefix required; mismatch tolerated only within parent trailing partial 512-token block (<= 33 runtime blocks)"
|
||||
},
|
||||
"prefix_cache_blocks": "complete 16-token blocks only; final partial block excluded",
|
||||
"prompt_contract": {
|
||||
"input_is_pre_remapped": true,
|
||||
"real_prompt_requests": 0,
|
||||
"synthetic_fallback_requests": 499,
|
||||
"tokenizer": null
|
||||
},
|
||||
"prompt_window": null,
|
||||
"prompt_window_sha256": null,
|
||||
"real_requests": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0004-v1/real_requests.jsonl",
|
||||
"real_requests_sha256": "f011d6233c12b45ca8054b2cbf79e3241654704d3df4964c1ca39f08aa00b71e",
|
||||
"requests": 499,
|
||||
"rho": 0.0004,
|
||||
"sampling_rule": "keep iff sampling_u <= rho (SimFid convention; rho=1 keeps all rows)",
|
||||
"schema": "frontier-s3-real-remap-v2",
|
||||
"selected_remapped": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0004-v1/selected-remapped.jsonl",
|
||||
"selected_remapped_sha256": "488ff7ed8d641f50f7b850c1ad4f61b2af57dc33474ccbe1e8c1dc475af4d897",
|
||||
"source": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/remap-cache-r0p0032-v2/selected-remapped.jsonl",
|
||||
"source_block_size": 512,
|
||||
"source_blocks": 40421,
|
||||
"source_rows_scanned": 3477,
|
||||
"source_sha256": "f46c7d8ddbd146bafe00fbc173bf3f29039d8b96aa611f1ae4e2a0b9eac189f1",
|
||||
"synthetic_fallback_contract": {
|
||||
"different_16_block_hash_different_tokens": true,
|
||||
"encoding": "injective base-(vocab_size-token_offset), 16 little-endian digits",
|
||||
"runtime_identity_is_parent_sensitive": true,
|
||||
"same_16_block_hash_same_tokens": true,
|
||||
"token_offset": 1024,
|
||||
"vocab_size": 151936
|
||||
},
|
||||
"target_16_blocks": 1285546,
|
||||
"target_block_size": 16,
|
||||
"total_decode_tokens": 330500,
|
||||
"total_prefill_tokens": 20572563,
|
||||
"upstream_remap_manifest": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/remap-cache-r0p0032-v2/manifest.json",
|
||||
"upstream_remap_manifest_sha256": "8649b6acf10007e16a6b0eccebe95ee25a33481d6c3c0381ec8caf6dad05f12d",
|
||||
"window": {
|
||||
"duration_s": null,
|
||||
"start_timestamp": null
|
||||
},
|
||||
"workload_mode": "prefill_decode"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"block_contract": {
|
||||
"input_length_mismatches": 0,
|
||||
"runtime_identity_collisions": 0,
|
||||
"runtime_to_source_relation_conflicts": 0,
|
||||
"source_hash_count_mismatches": 0,
|
||||
"source_runtime_granularity": "one 512-token source hash to 32 consecutive 16-token identities; final partial source block may have fewer",
|
||||
"source_to_runtime_relation_conflicts": 0,
|
||||
"unique_runtime_identities": 2613467,
|
||||
"unique_runtime_relations": 0,
|
||||
"unique_source_hash_relations": 0
|
||||
},
|
||||
"excluded_over_max_total_tokens": 0,
|
||||
"frontier_csv": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0008-v1/frontier.csv",
|
||||
"frontier_csv_sha256": "2788a21c6bb8be6d03fb5151f2c51efa09c0eb5e1f941af60c00a7cc11d41206",
|
||||
"mapping": "real prompt tokens: BLAKE2b-128(parent runtime identity, exact 16-token block); missing prompt fallback: source hashes first define deterministic 16-token content blocks, then the same parent-sensitive BLAKE2b-128 runtime identity contract is applied",
|
||||
"max_total_tokens_filter": null,
|
||||
"paired_row_vector_sha256": "2a0fe9672c0711f7f74847bef400c699167fce8648611fc2ef12cf524b20d47f",
|
||||
"parent_validation": {
|
||||
"enabled": false,
|
||||
"links_checked": 0,
|
||||
"links_outside_selected_stream": 0,
|
||||
"mean_tail_nonreused_per_link": 0.0,
|
||||
"parent_prefix_common_blocks": 0,
|
||||
"parent_tail_nonreused_blocks": 0,
|
||||
"rule": "contiguous common prefix required; mismatch tolerated only within parent trailing partial 512-token block (<= 33 runtime blocks)"
|
||||
},
|
||||
"prefix_cache_blocks": "complete 16-token blocks only; final partial block excluded",
|
||||
"prompt_contract": {
|
||||
"input_is_pre_remapped": true,
|
||||
"real_prompt_requests": 0,
|
||||
"synthetic_fallback_requests": 869,
|
||||
"tokenizer": null
|
||||
},
|
||||
"prompt_window": null,
|
||||
"prompt_window_sha256": null,
|
||||
"real_requests": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0008-v1/real_requests.jsonl",
|
||||
"real_requests_sha256": "aed9d150df986476172ca1d2cce8e9a9f264e24507174265bda9b3e85298cfbe",
|
||||
"requests": 869,
|
||||
"rho": 0.0008,
|
||||
"sampling_rule": "keep iff sampling_u <= rho (SimFid convention; rho=1 keeps all rows)",
|
||||
"schema": "frontier-s3-real-remap-v2",
|
||||
"selected_remapped": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0008-v1/selected-remapped.jsonl",
|
||||
"selected_remapped_sha256": "5ec7b98153cba5549a57e2f15f56f9800f14251b0c1231ed1cf9fdfcf3924d06",
|
||||
"source": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/remap-cache-r0p0032-v2/selected-remapped.jsonl",
|
||||
"source_block_size": 512,
|
||||
"source_blocks": 55641,
|
||||
"source_rows_scanned": 3477,
|
||||
"source_sha256": "f46c7d8ddbd146bafe00fbc173bf3f29039d8b96aa611f1ae4e2a0b9eac189f1",
|
||||
"synthetic_fallback_contract": {
|
||||
"different_16_block_hash_different_tokens": true,
|
||||
"encoding": "injective base-(vocab_size-token_offset), 16 little-endian digits",
|
||||
"runtime_identity_is_parent_sensitive": true,
|
||||
"same_16_block_hash_same_tokens": true,
|
||||
"token_offset": 1024,
|
||||
"vocab_size": 151936
|
||||
},
|
||||
"target_16_blocks": 1766081,
|
||||
"target_block_size": 16,
|
||||
"total_decode_tokens": 494859,
|
||||
"total_prefill_tokens": 28263677,
|
||||
"upstream_remap_manifest": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/remap-cache-r0p0032-v2/manifest.json",
|
||||
"upstream_remap_manifest_sha256": "8649b6acf10007e16a6b0eccebe95ee25a33481d6c3c0381ec8caf6dad05f12d",
|
||||
"window": {
|
||||
"duration_s": null,
|
||||
"start_timestamp": null
|
||||
},
|
||||
"workload_mode": "prefill_decode"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"block_contract": {
|
||||
"input_length_mismatches": 0,
|
||||
"runtime_identity_collisions": 0,
|
||||
"runtime_to_source_relation_conflicts": 0,
|
||||
"source_hash_count_mismatches": 0,
|
||||
"source_runtime_granularity": "one 512-token source hash to 32 consecutive 16-token identities; final partial source block may have fewer",
|
||||
"source_to_runtime_relation_conflicts": 0,
|
||||
"unique_runtime_identities": 2613467,
|
||||
"unique_runtime_relations": 0,
|
||||
"unique_source_hash_relations": 0
|
||||
},
|
||||
"excluded_over_max_total_tokens": 0,
|
||||
"frontier_csv": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0016-v1/frontier.csv",
|
||||
"frontier_csv_sha256": "d785665c86a562c9d9a7492ad710e6393bb883bf8c3ad552a34ff18f22925043",
|
||||
"mapping": "real prompt tokens: BLAKE2b-128(parent runtime identity, exact 16-token block); missing prompt fallback: source hashes first define deterministic 16-token content blocks, then the same parent-sensitive BLAKE2b-128 runtime identity contract is applied",
|
||||
"max_total_tokens_filter": null,
|
||||
"paired_row_vector_sha256": "d3d232ea41eadb507780b4830ce3e944ac88cd997d0a4f418f86ca71de1377bf",
|
||||
"parent_validation": {
|
||||
"enabled": false,
|
||||
"links_checked": 0,
|
||||
"links_outside_selected_stream": 0,
|
||||
"mean_tail_nonreused_per_link": 0.0,
|
||||
"parent_prefix_common_blocks": 0,
|
||||
"parent_tail_nonreused_blocks": 0,
|
||||
"rule": "contiguous common prefix required; mismatch tolerated only within parent trailing partial 512-token block (<= 33 runtime blocks)"
|
||||
},
|
||||
"prefix_cache_blocks": "complete 16-token blocks only; final partial block excluded",
|
||||
"prompt_contract": {
|
||||
"input_is_pre_remapped": true,
|
||||
"real_prompt_requests": 0,
|
||||
"synthetic_fallback_requests": 1718,
|
||||
"tokenizer": null
|
||||
},
|
||||
"prompt_window": null,
|
||||
"prompt_window_sha256": null,
|
||||
"real_requests": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0016-v1/real_requests.jsonl",
|
||||
"real_requests_sha256": "3261a15be3e1f7d5ecf8a86c03a9e0ff9ec69a3502e4fbc8e8b82b18b0854e1f",
|
||||
"requests": 1718,
|
||||
"rho": 0.0016,
|
||||
"sampling_rule": "keep iff sampling_u <= rho (SimFid convention; rho=1 keeps all rows)",
|
||||
"schema": "frontier-s3-real-remap-v2",
|
||||
"selected_remapped": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/full-r0p0016-v1/selected-remapped.jsonl",
|
||||
"selected_remapped_sha256": "4d5c66e5cad4efa4c500009630c6ca6069fdd71c9e1a7cd446c8869d84dc70f7",
|
||||
"source": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/remap-cache-r0p0032-v2/selected-remapped.jsonl",
|
||||
"source_block_size": 512,
|
||||
"source_blocks": 104582,
|
||||
"source_rows_scanned": 3477,
|
||||
"source_sha256": "f46c7d8ddbd146bafe00fbc173bf3f29039d8b96aa611f1ae4e2a0b9eac189f1",
|
||||
"synthetic_fallback_contract": {
|
||||
"different_16_block_hash_different_tokens": true,
|
||||
"encoding": "injective base-(vocab_size-token_offset), 16 little-endian digits",
|
||||
"runtime_identity_is_parent_sensitive": true,
|
||||
"same_16_block_hash_same_tokens": true,
|
||||
"token_offset": 1024,
|
||||
"vocab_size": 151936
|
||||
},
|
||||
"target_16_blocks": 3318510,
|
||||
"target_block_size": 16,
|
||||
"total_decode_tokens": 813493,
|
||||
"total_prefill_tokens": 53108885,
|
||||
"upstream_remap_manifest": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/remap-cache-r0p0032-v2/manifest.json",
|
||||
"upstream_remap_manifest_sha256": "8649b6acf10007e16a6b0eccebe95ee25a33481d6c3c0381ec8caf6dad05f12d",
|
||||
"window": {
|
||||
"duration_s": null,
|
||||
"start_timestamp": null
|
||||
},
|
||||
"workload_mode": "prefill_decode"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"block_contract": {
|
||||
"input_length_mismatches": 0,
|
||||
"runtime_identity_collisions": 0,
|
||||
"runtime_to_source_relation_conflicts": 0,
|
||||
"source_hash_count_mismatches": 0,
|
||||
"source_runtime_granularity": "one 512-token source hash to 32 consecutive 16-token identities; final partial source block may have fewer",
|
||||
"source_to_runtime_relation_conflicts": 0,
|
||||
"unique_runtime_identities": 2613467,
|
||||
"unique_runtime_relations": 0,
|
||||
"unique_source_hash_relations": 0
|
||||
},
|
||||
"excluded_over_max_total_tokens": 0,
|
||||
"frontier_csv": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/prefill-only-r0p0032-v1/frontier.csv",
|
||||
"frontier_csv_sha256": "8eeea3f44626e30e6da6ab58950c9a7f52e6cf6eb29c6bd2e35e1c25e4a9c5ce",
|
||||
"mapping": "real prompt tokens: BLAKE2b-128(parent runtime identity, exact 16-token block); missing prompt fallback: source hashes first define deterministic 16-token content blocks, then the same parent-sensitive BLAKE2b-128 runtime identity contract is applied",
|
||||
"max_total_tokens_filter": null,
|
||||
"paired_row_vector_sha256": "40865068e02414612ba1cd4595894e20e85e01fd34d73f8660185552d531ecea",
|
||||
"parent_validation": {
|
||||
"enabled": false,
|
||||
"links_checked": 0,
|
||||
"links_outside_selected_stream": 0,
|
||||
"mean_tail_nonreused_per_link": 0.0,
|
||||
"parent_prefix_common_blocks": 0,
|
||||
"parent_tail_nonreused_blocks": 0,
|
||||
"rule": "contiguous common prefix required; mismatch tolerated only within parent trailing partial 512-token block (<= 33 runtime blocks)"
|
||||
},
|
||||
"prefix_cache_blocks": "complete 16-token blocks only; final partial block excluded",
|
||||
"prompt_contract": {
|
||||
"input_is_pre_remapped": true,
|
||||
"real_prompt_requests": 0,
|
||||
"synthetic_fallback_requests": 3477,
|
||||
"tokenizer": null
|
||||
},
|
||||
"prompt_window": null,
|
||||
"prompt_window_sha256": null,
|
||||
"real_requests": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/prefill-only-r0p0032-v1/real_requests.jsonl",
|
||||
"real_requests_sha256": "48a9a6f5f73fe4daebff5a2fba9aec732a89219d19a00d6811cf14e0cd5afa2c",
|
||||
"requests": 3477,
|
||||
"rho": 0.0032,
|
||||
"sampling_rule": "keep iff sampling_u <= rho (SimFid convention; rho=1 keeps all rows)",
|
||||
"schema": "frontier-s3-real-remap-v2",
|
||||
"selected_remapped": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/prefill-only-r0p0032-v1/selected-remapped.jsonl",
|
||||
"selected_remapped_sha256": "a9c31bb600ac6b637ded1c1aa4c84df5613bc3fbdc986bfe935f4ebe9aee0aff",
|
||||
"source": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/remap-cache-r0p0032-v2/selected-remapped.jsonl",
|
||||
"source_block_size": 512,
|
||||
"source_blocks": 227960,
|
||||
"source_rows_scanned": 3477,
|
||||
"source_sha256": "f46c7d8ddbd146bafe00fbc173bf3f29039d8b96aa611f1ae4e2a0b9eac189f1",
|
||||
"synthetic_fallback_contract": {
|
||||
"different_16_block_hash_different_tokens": true,
|
||||
"encoding": "injective base-(vocab_size-token_offset), 16 little-endian digits",
|
||||
"runtime_identity_is_parent_sensitive": true,
|
||||
"same_16_block_hash_same_tokens": true,
|
||||
"token_offset": 1024,
|
||||
"vocab_size": 151936
|
||||
},
|
||||
"target_16_blocks": 7237642,
|
||||
"target_block_size": 16,
|
||||
"total_decode_tokens": 3477,
|
||||
"total_prefill_tokens": 115828371,
|
||||
"upstream_remap_manifest": "/home/admin/cpfs/wjh/aituner/aituner-code-trace-fbaa909/runs/frontier-code-trace-v0/inputs/remap-cache-r0p0032-v2/manifest.json",
|
||||
"upstream_remap_manifest_sha256": "8649b6acf10007e16a6b0eccebe95ee25a33481d6c3c0381ec8caf6dad05f12d",
|
||||
"window": {
|
||||
"duration_s": null,
|
||||
"start_timestamp": null
|
||||
},
|
||||
"workload_mode": "prefill_only"
|
||||
}
|
||||
88
runs/frontier-code-trace-v0/summarize_calibration.py
Normal file
88
runs/frontier-code-trace-v0/summarize_calibration.py
Normal file
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Compact code-trace Frontier rho calibration into a reviewable artifact."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
CELL_RE = re.compile(r"r(?P<rho>[0-9p]+)-tp(?P<tp>[24])-v3")
|
||||
ATTENTION_FLAG = "--random_forrest_execution_time_predictor_config_atten_input_file"
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--sim-root", type=Path, required=True)
|
||||
parser.add_argument("--profile-manifest", type=Path, required=True)
|
||||
parser.add_argument("--output", type=Path, required=True)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def sha256(path: Path) -> str:
|
||||
digest = hashlib.sha256()
|
||||
with path.open("rb") as stream:
|
||||
for chunk in iter(lambda: stream.read(1024 * 1024), b""):
|
||||
digest.update(chunk)
|
||||
return digest.hexdigest()
|
||||
|
||||
|
||||
def main() -> None:
|
||||
args = parse_args()
|
||||
profile = json.loads(args.profile_manifest.read_text())
|
||||
expected_profile_sha = profile["output_sha256"]
|
||||
cells = []
|
||||
for root in sorted(args.sim_root.iterdir()):
|
||||
match = CELL_RE.fullmatch(root.name)
|
||||
if match is None or not (root / "summary.json").is_file():
|
||||
continue
|
||||
manifest = json.loads((root / "manifest.json").read_text())
|
||||
observed_profile_sha = manifest.get("attention_profile_sha256")
|
||||
if observed_profile_sha is None:
|
||||
argv = manifest["argv"]
|
||||
profile_path = Path(argv[argv.index(ATTENTION_FLAG) + 1])
|
||||
observed_profile_sha = sha256(profile_path)
|
||||
if observed_profile_sha != expected_profile_sha:
|
||||
raise ValueError(
|
||||
f"{root}: attention profile {observed_profile_sha} "
|
||||
f"!= profile-v6 {expected_profile_sha}"
|
||||
)
|
||||
summary = json.loads((root / "summary.json").read_text())
|
||||
drain_fraction = (
|
||||
summary["drain"]["tail_after_last_arrival_s"] / summary["duration_s"]
|
||||
)
|
||||
cells.append(
|
||||
{
|
||||
"topology": f"tp{match.group('tp')}_mns16",
|
||||
"rho": float(match.group("rho").replace("p", ".")),
|
||||
"requests": summary["requests"],
|
||||
"offered_load": summary["offered_load"],
|
||||
"waiting_ms": summary["latency_ms"]["waiting"],
|
||||
"ttft_ms": summary["latency_ms"]["ttft"],
|
||||
"tpot_ms": summary["latency_ms"]["tpot"],
|
||||
"decode_batch": summary["decode_batch"],
|
||||
"drain_tail_s": summary["drain"]["tail_after_last_arrival_s"],
|
||||
"drain_fraction": drain_fraction,
|
||||
"subcritical_gate": drain_fraction <= 0.1,
|
||||
"prefix_cache_hit_ratio": summary["prefix_cache"]["hit_ratio"],
|
||||
"trace_sha256": manifest["trace_sha256"],
|
||||
}
|
||||
)
|
||||
if not cells:
|
||||
raise ValueError(f"no completed v3 calibration cells below {args.sim_root}")
|
||||
payload = {
|
||||
"schema": "frontier-code-trace-calibration-summary-v1",
|
||||
"attention_profile_sha256": expected_profile_sha,
|
||||
"subcritical_rule": "drain tail <= 10% of the 3660s arrival window",
|
||||
"cells": cells,
|
||||
}
|
||||
args.output.parent.mkdir(parents=True, exist_ok=True)
|
||||
args.output.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n")
|
||||
print(json.dumps({"cells": len(cells), "output": str(args.output)}, sort_keys=True))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user