diff --git a/runs/frontier-code-trace-v0/README.md b/runs/frontier-code-trace-v0/README.md index 3c8fb4d..443ab11 100644 --- a/runs/frontier-code-trace-v0/README.md +++ b/runs/frontier-code-trace-v0/README.md @@ -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。 ## 本地验证 diff --git a/runs/frontier-code-trace-v0/analyze_canary.py b/runs/frontier-code-trace-v0/analyze_canary.py new file mode 100644 index 0000000..edaeedb --- /dev/null +++ b/runs/frontier-code-trace-v0/analyze_canary.py @@ -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\d+) context requests, " + r"(?P\d+) context tokens, " + r"(?P\d+) generation requests, " + r"(?P\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() diff --git a/runs/frontier-code-trace-v0/experiment-card.md b/runs/frontier-code-trace-v0/experiment-card.md index cac30cd..9b0fb7b 100644 --- a/runs/frontier-code-trace-v0/experiment-card.md +++ b/runs/frontier-code-trace-v0/experiment-card.md @@ -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。 diff --git a/runs/frontier-code-trace-v0/results/calibration-summary.json b/runs/frontier-code-trace-v0/results/calibration-summary.json new file mode 100644 index 0000000..05a098a --- /dev/null +++ b/runs/frontier-code-trace-v0/results/calibration-summary.json @@ -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" +} diff --git a/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/provenance/gpus.after.csv b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/provenance/gpus.after.csv new file mode 100644 index 0000000..cafe86d --- /dev/null +++ b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/provenance/gpus.after.csv @@ -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 diff --git a/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/provenance/gpus.before.csv b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/provenance/gpus.before.csv new file mode 100644 index 0000000..0d09ee7 --- /dev/null +++ b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/provenance/gpus.before.csv @@ -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 diff --git a/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/provenance/sources.sha256 b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/provenance/sources.sha256 new file mode 100644 index 0000000..85b4f4f --- /dev/null +++ b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/provenance/sources.sha256 @@ -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 diff --git a/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/code-candidate-max.json b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/code-candidate-max.json new file mode 100644 index 0000000..0356eae --- /dev/null +++ b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/code-candidate-max.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 + } +} diff --git a/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/code-candidate-p99.json b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/code-candidate-p99.json new file mode 100644 index 0000000..9391e36 --- /dev/null +++ b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/code-candidate-p99.json @@ -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 + } +} diff --git a/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/code-p50.json b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/code-p50.json new file mode 100644 index 0000000..7a41369 --- /dev/null +++ b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/code-p50.json @@ -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 + } +} diff --git a/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/models.json b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/models.json new file mode 100644 index 0000000..b7cd8ee --- /dev/null +++ b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/models.json @@ -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}]}]} \ No newline at end of file diff --git a/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/warmup.json b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/warmup.json new file mode 100644 index 0000000..7c0ce1e --- /dev/null +++ b/runs/frontier-code-trace-v0/results/max-model-len-smoke-tp4-v2/results/warmup.json @@ -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 + } +} diff --git a/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0002-v1.json b/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0002-v1.json new file mode 100644 index 0000000..58e1d44 --- /dev/null +++ b/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0002-v1.json @@ -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" +} diff --git a/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0004-v1.json b/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0004-v1.json new file mode 100644 index 0000000..11f1ac2 --- /dev/null +++ b/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0004-v1.json @@ -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" +} diff --git a/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0008-v1.json b/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0008-v1.json new file mode 100644 index 0000000..b7377dd --- /dev/null +++ b/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0008-v1.json @@ -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" +} diff --git a/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0016-v1.json b/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0016-v1.json new file mode 100644 index 0000000..04f3a08 --- /dev/null +++ b/runs/frontier-code-trace-v0/results/paired-input-manifests/full-r0p0016-v1.json @@ -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" +} diff --git a/runs/frontier-code-trace-v0/results/paired-input-manifests/prefill-only-r0p0032-v1.json b/runs/frontier-code-trace-v0/results/paired-input-manifests/prefill-only-r0p0032-v1.json new file mode 100644 index 0000000..9c27075 --- /dev/null +++ b/runs/frontier-code-trace-v0/results/paired-input-manifests/prefill-only-r0p0032-v1.json @@ -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" +} diff --git a/runs/frontier-code-trace-v0/summarize_calibration.py b/runs/frontier-code-trace-v0/summarize_calibration.py new file mode 100644 index 0000000..27fd5e5 --- /dev/null +++ b/runs/frontier-code-trace-v0/summarize_calibration.py @@ -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[0-9p]+)-tp(?P[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()