Evaluate Qwen30 prefill simulator fidelity
This commit is contained in:
@@ -0,0 +1,462 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Compare the frozen Frontier surface with conservative real capacities."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
import hashlib
|
||||
import json
|
||||
import math
|
||||
import re
|
||||
from collections import defaultdict
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
RUN_PATTERN = re.compile(r"qwen30-prefill-real-tp(?P<tp>\d+)-mns(?P<mns>\d+)-")
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--fleet-artifacts", type=Path, required=True)
|
||||
parser.add_argument(
|
||||
"--simulator-manifest", type=Path, action="append", required=True
|
||||
)
|
||||
parser.add_argument("--output-root", type=Path, required=True)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def sha256(path: Path) -> str:
|
||||
digest = hashlib.sha256()
|
||||
with path.open("rb") as handle:
|
||||
for chunk in iter(lambda: handle.read(1024 * 1024), b""):
|
||||
digest.update(chunk)
|
||||
return digest.hexdigest()
|
||||
|
||||
|
||||
def load_json(path: Path) -> dict[str, Any]:
|
||||
return json.loads(path.read_text())
|
||||
|
||||
|
||||
def sign(value: float) -> int:
|
||||
return (value > 0) - (value < 0)
|
||||
|
||||
|
||||
def kendall_tau_b(real: list[float], simulated: list[float]) -> dict[str, Any]:
|
||||
if len(real) != len(simulated):
|
||||
raise ValueError("ranking vectors have different lengths")
|
||||
concordant = discordant = real_only_ties = simulated_only_ties = both_ties = 0
|
||||
for left in range(len(real)):
|
||||
for right in range(left + 1, len(real)):
|
||||
real_sign = sign(real[left] - real[right])
|
||||
sim_sign = sign(simulated[left] - simulated[right])
|
||||
if real_sign == 0 and sim_sign == 0:
|
||||
both_ties += 1
|
||||
elif real_sign == 0:
|
||||
real_only_ties += 1
|
||||
elif sim_sign == 0:
|
||||
simulated_only_ties += 1
|
||||
elif real_sign == sim_sign:
|
||||
concordant += 1
|
||||
else:
|
||||
discordant += 1
|
||||
denominator = math.sqrt(
|
||||
(concordant + discordant + real_only_ties)
|
||||
* (concordant + discordant + simulated_only_ties)
|
||||
)
|
||||
tau = (concordant - discordant) / denominator if denominator else None
|
||||
return {
|
||||
"kendall_tau_b": tau,
|
||||
"concordant": concordant,
|
||||
"discordant": discordant,
|
||||
"real_only_ties": real_only_ties,
|
||||
"simulator_only_ties": simulated_only_ties,
|
||||
"both_ties": both_ties,
|
||||
}
|
||||
|
||||
|
||||
def result_files_by_anchor(root: Path) -> dict[tuple[str, str], Path]:
|
||||
selected: dict[tuple[str, str], Path] = {}
|
||||
digests: dict[tuple[str, str], str] = {}
|
||||
for path in root.glob("artifacts/**/round*/results/r*.json"):
|
||||
if path.name.startswith("warmup_"):
|
||||
continue
|
||||
round_name = path.parent.parent.name
|
||||
key = (round_name, path.name)
|
||||
digest = sha256(path)
|
||||
if key in digests and digests[key] != digest:
|
||||
raise RuntimeError(
|
||||
f"conflicting duplicate real anchor {key} under {root}"
|
||||
)
|
||||
digests[key] = digest
|
||||
if key not in selected or len(path.parts) < len(selected[key].parts):
|
||||
selected[key] = path
|
||||
return selected
|
||||
|
||||
|
||||
def find_real_runs(root: Path) -> dict[str, Path]:
|
||||
candidates: dict[str, list[Path]] = defaultdict(list)
|
||||
for path in root.iterdir():
|
||||
if not path.is_dir():
|
||||
continue
|
||||
match = RUN_PATTERN.search(path.name)
|
||||
if not match:
|
||||
continue
|
||||
name = f"tp{int(match.group('tp'))}_mns{int(match.group('mns'))}"
|
||||
candidates[name].append(path)
|
||||
selected: dict[str, Path] = {}
|
||||
for name, paths in candidates.items():
|
||||
complete = [
|
||||
path
|
||||
for path in paths
|
||||
if (path / "remote_run" / "exit_code").is_file()
|
||||
and (path / "remote_run" / "exit_code").read_text().strip() == "0"
|
||||
]
|
||||
measured_counts = {
|
||||
path: len(result_files_by_anchor(path))
|
||||
for path in complete
|
||||
}
|
||||
if not measured_counts:
|
||||
raise RuntimeError(f"no successful run for {name}")
|
||||
maximum = max(measured_counts.values())
|
||||
richest = [path for path, count in measured_counts.items() if count == maximum]
|
||||
if len(richest) != 1:
|
||||
raise RuntimeError(f"ambiguous richest successful run for {name}: {richest}")
|
||||
selected[name] = richest[0]
|
||||
if len(selected) != 12:
|
||||
raise RuntimeError(f"expected 12 real configs, got {sorted(selected)}")
|
||||
return selected
|
||||
|
||||
|
||||
def campaign_resources(root: Path) -> dict[str, Any]:
|
||||
runs = []
|
||||
gpu_hours = 0.0
|
||||
for path in sorted(root.iterdir()):
|
||||
match = RUN_PATTERN.search(path.name)
|
||||
exit_code = path / "remote_run" / "exit_code"
|
||||
started_at = path / "remote_run" / "started_at"
|
||||
finished_at = path / "remote_run" / "finished_at"
|
||||
if (
|
||||
not path.is_dir()
|
||||
or not match
|
||||
or not exit_code.is_file()
|
||||
or exit_code.read_text().strip() != "0"
|
||||
or not started_at.is_file()
|
||||
or not finished_at.is_file()
|
||||
):
|
||||
continue
|
||||
started = datetime.fromisoformat(started_at.read_text().strip())
|
||||
finished = datetime.fromisoformat(finished_at.read_text().strip())
|
||||
duration_seconds = (finished - started).total_seconds()
|
||||
tp = int(match.group("tp"))
|
||||
run_gpu_hours = duration_seconds * tp / 3600.0
|
||||
gpu_hours += run_gpu_hours
|
||||
runs.append(
|
||||
{
|
||||
"run": path.name,
|
||||
"tp": tp,
|
||||
"duration_seconds": duration_seconds,
|
||||
"gpu_hours": run_gpu_hours,
|
||||
}
|
||||
)
|
||||
return {
|
||||
"successful_fleet_jobs": len(runs),
|
||||
"gpu_hours": gpu_hours,
|
||||
"runs": runs,
|
||||
}
|
||||
|
||||
|
||||
def parse_real_config(name: str, run_root: Path) -> dict[str, Any]:
|
||||
result_files = sorted(result_files_by_anchor(run_root).values())
|
||||
if len(result_files) not in {10, 16}:
|
||||
raise RuntimeError(f"expected 10 base or 16 refined anchors for {name}, got {len(result_files)}")
|
||||
by_rate: dict[float, list[dict[str, Any]]] = defaultdict(list)
|
||||
for path in result_files:
|
||||
payload = load_json(path)
|
||||
rate = float(payload["workload"]["offered_request_rate"])
|
||||
by_rate[rate].append(
|
||||
{
|
||||
"path": str(path.resolve()),
|
||||
"sha256": sha256(path),
|
||||
"summary": payload["summary"],
|
||||
}
|
||||
)
|
||||
tp = int(name.split("_")[0][2:])
|
||||
base_rates = [4.0, 8.0, 16.0, 32.0, 64.0]
|
||||
refined_rates = sorted({*base_rates, *(tp * value for value in (5.0, 6.0, 7.0))})
|
||||
if tuple(sorted(by_rate)) not in {tuple(base_rates), tuple(refined_rates)}:
|
||||
raise RuntimeError(f"unexpected rate grid for {name}: {sorted(by_rate)}")
|
||||
anchors = []
|
||||
for rate, rounds in sorted(by_rate.items()):
|
||||
if len(rounds) != 2:
|
||||
raise RuntimeError(f"expected two rounds for {name}@{rate}, got {len(rounds)}")
|
||||
round_feasible = [bool(row["summary"]["slo"]["feasible"]) for row in rounds]
|
||||
anchors.append(
|
||||
{
|
||||
"rate": rate,
|
||||
"rounds": rounds,
|
||||
"conservative_feasible": all(round_feasible),
|
||||
"round_feasible": round_feasible,
|
||||
"round_ttft_p95_ms": [
|
||||
float(row["summary"]["ttft_p95_ms"]) for row in rounds
|
||||
],
|
||||
}
|
||||
)
|
||||
feasible = [row["rate"] for row in anchors if row["conservative_feasible"]]
|
||||
capacity = max(feasible, default=0.0)
|
||||
return {
|
||||
"name": name,
|
||||
"tp": tp,
|
||||
"mns": int(name.split("_mns")[1]),
|
||||
"anchors": anchors,
|
||||
"capacity": capacity,
|
||||
"capacity_per_gpu": capacity / tp,
|
||||
"source_run": str(run_root.resolve()),
|
||||
}
|
||||
|
||||
|
||||
def parse_simulator(manifests: list[Path]) -> tuple[dict[str, Any], list[dict[str, str]]]:
|
||||
configs: dict[str, Any] = {}
|
||||
sources = []
|
||||
for path in manifests:
|
||||
payload = load_json(path)
|
||||
if payload["status"] not in {"complete", "partial_not_decision_bearing"}:
|
||||
raise RuntimeError(f"simulator manifest has invalid status: {path}")
|
||||
sources.append({"path": str(path.resolve()), "sha256": sha256(path)})
|
||||
result_by_name = {
|
||||
result["config"]["name"]: result for result in payload["config_results"]
|
||||
}
|
||||
for capacity in payload["capacity"]:
|
||||
name = capacity["config"]["name"]
|
||||
result = result_by_name.get(name)
|
||||
if result is None:
|
||||
raise RuntimeError(f"missing simulator config result {name}")
|
||||
entry = configs.setdefault(
|
||||
name,
|
||||
{
|
||||
"name": name,
|
||||
"tp": int(capacity["config"]["tp"]),
|
||||
"mns": int(capacity["config"]["mns"]),
|
||||
"anchor_by_rate": {},
|
||||
},
|
||||
)
|
||||
for load in result["loads"]:
|
||||
rate = float(load["offered_request_rate"])
|
||||
if rate in entry["anchor_by_rate"]:
|
||||
raise RuntimeError(f"duplicate simulator anchor {name}@{rate}")
|
||||
entry["anchor_by_rate"][rate] = {
|
||||
"rate": rate,
|
||||
"feasible": bool(load["score"]["feasible"]),
|
||||
"pass_rate": float(load["score"]["pass_rate"]),
|
||||
"ttft_p95_ms": float(load["score"]["ttft_p95_ms"]),
|
||||
}
|
||||
if len(configs) != 12:
|
||||
raise RuntimeError(f"expected 12 simulator configs, got {sorted(configs)}")
|
||||
for entry in configs.values():
|
||||
entry["anchors"] = [
|
||||
entry["anchor_by_rate"][rate] for rate in sorted(entry["anchor_by_rate"])
|
||||
]
|
||||
del entry["anchor_by_rate"]
|
||||
feasible = [row["rate"] for row in entry["anchors"] if row["feasible"]]
|
||||
entry["capacity"] = max(feasible, default=0.0)
|
||||
entry["capacity_per_gpu"] = entry["capacity"] / entry["tp"]
|
||||
return configs, sources
|
||||
|
||||
|
||||
def compare(real: dict[str, Any], simulated: dict[str, Any]) -> dict[str, Any]:
|
||||
names = sorted(real, key=lambda name: (real[name]["tp"], real[name]["mns"]))
|
||||
if set(names) != set(simulated):
|
||||
raise RuntimeError("real and simulator config sets differ")
|
||||
real_scores = [real[name]["capacity_per_gpu"] for name in names]
|
||||
sim_scores = [simulated[name]["capacity_per_gpu"] for name in names]
|
||||
real_best = max(real_scores)
|
||||
sim_best = max(sim_scores)
|
||||
real_top = [name for name in names if real[name]["capacity_per_gpu"] == real_best]
|
||||
sim_top = [
|
||||
name for name in names if simulated[name]["capacity_per_gpu"] == sim_best
|
||||
]
|
||||
worst_sim_choice = min(real[name]["capacity_per_gpu"] for name in sim_top)
|
||||
best_sim_choice = max(real[name]["capacity_per_gpu"] for name in sim_top)
|
||||
tau = kendall_tau_b(real_scores, sim_scores)
|
||||
|
||||
pairwise = {"all": {"comparable": 0, "correct": 0}, "within_tp": {}}
|
||||
for left in range(len(names)):
|
||||
for right in range(left + 1, len(names)):
|
||||
real_sign = sign(real_scores[left] - real_scores[right])
|
||||
sim_sign = sign(sim_scores[left] - sim_scores[right])
|
||||
if real_sign:
|
||||
pairwise["all"]["comparable"] += 1
|
||||
pairwise["all"]["correct"] += int(real_sign == sim_sign)
|
||||
if real[names[left]]["tp"] == real[names[right]]["tp"] and real_sign:
|
||||
key = f"tp{real[names[left]]['tp']}"
|
||||
bucket = pairwise["within_tp"].setdefault(
|
||||
key, {"comparable": 0, "correct": 0}
|
||||
)
|
||||
bucket["comparable"] += 1
|
||||
bucket["correct"] += int(real_sign == sim_sign)
|
||||
for bucket in [pairwise["all"], *pairwise["within_tp"].values()]:
|
||||
bucket["accuracy"] = (
|
||||
bucket["correct"] / bucket["comparable"]
|
||||
if bucket["comparable"]
|
||||
else None
|
||||
)
|
||||
|
||||
confusion = {"real_pass_sim_pass": 0, "real_pass_sim_fail": 0,
|
||||
"real_fail_sim_pass": 0, "real_fail_sim_fail": 0}
|
||||
for name in names:
|
||||
real_anchors = {row["rate"]: row for row in real[name]["anchors"]}
|
||||
sim_anchors = {row["rate"]: row for row in simulated[name]["anchors"]}
|
||||
if set(real_anchors) != set(sim_anchors):
|
||||
raise RuntimeError(f"anchor grids differ for {name}")
|
||||
for rate in real_anchors:
|
||||
real_pass = real_anchors[rate]["conservative_feasible"]
|
||||
sim_pass = sim_anchors[rate]["feasible"]
|
||||
key = f"real_{'pass' if real_pass else 'fail'}_sim_{'pass' if sim_pass else 'fail'}"
|
||||
confusion[key] += 1
|
||||
return {
|
||||
"config_order": names,
|
||||
"real_top_set": real_top,
|
||||
"simulator_top_set": sim_top,
|
||||
"top_set_exact_match": real_top == sim_top,
|
||||
"top_set_overlap": sorted(set(real_top) & set(sim_top)),
|
||||
"top1_regret_best": (real_best - best_sim_choice) / real_best,
|
||||
"top1_regret_worst": (real_best - worst_sim_choice) / real_best,
|
||||
"real_best_capacity_per_gpu": real_best,
|
||||
"simulator_best_capacity_per_gpu": sim_best,
|
||||
"kendall": tau,
|
||||
"pairwise_non_tied": pairwise,
|
||||
"anchor_confusion": confusion,
|
||||
}
|
||||
|
||||
|
||||
def write_csv(path: Path, rows: list[dict[str, Any]]) -> None:
|
||||
with path.open("w", newline="") as handle:
|
||||
writer = csv.DictWriter(
|
||||
handle, fieldnames=list(rows[0]), lineterminator="\n"
|
||||
)
|
||||
writer.writeheader()
|
||||
writer.writerows(rows)
|
||||
|
||||
|
||||
def plot(path: Path, rows: list[dict[str, Any]], metrics: dict[str, Any]) -> None:
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
labels = [f"TP{row['tp']}\nMNS{row['mns']}" for row in rows]
|
||||
x = np.arange(len(rows))
|
||||
width = 0.36
|
||||
figure, axes = plt.subplots(
|
||||
1, 2, figsize=(13.5, 5.0), gridspec_kw={"width_ratios": [3.3, 1.0]}
|
||||
)
|
||||
axis = axes[0]
|
||||
axis.bar(x - width / 2, [row["real"] for row in rows], width, label="Real vLLM")
|
||||
axis.bar(
|
||||
x + width / 2,
|
||||
[row["simulator"] for row in rows],
|
||||
width,
|
||||
label="Frontier profile-only",
|
||||
)
|
||||
axis.set_xticks(x, labels, fontsize=8)
|
||||
axis.set_ylabel("Max tested SLO-feasible request rate / GPU")
|
||||
axis.set_title("Qwen3-30B-A3B prefill-only: config ranking")
|
||||
axis.grid(axis="y", alpha=0.25)
|
||||
axis.legend(frameon=False, ncols=2)
|
||||
for separator in (3.5, 7.5):
|
||||
axis.axvline(separator, color="0.75", linewidth=0.8)
|
||||
tau = metrics["kendall"]["kendall_tau_b"]
|
||||
annotation = f"worst regret={metrics['top1_regret_worst'] * 100:.1f}%"
|
||||
annotation += (
|
||||
f"\nKendall τ-b={tau:.3f}"
|
||||
if tau is not None
|
||||
else "\nKendall τ-b=undefined"
|
||||
)
|
||||
axis.text(
|
||||
0.01,
|
||||
0.98,
|
||||
annotation,
|
||||
transform=axis.transAxes,
|
||||
va="top",
|
||||
fontsize=9,
|
||||
bbox={"facecolor": "white", "edgecolor": "0.8", "alpha": 0.9},
|
||||
)
|
||||
|
||||
confusion = metrics["anchor_confusion"]
|
||||
matrix = np.array(
|
||||
[
|
||||
[confusion["real_pass_sim_pass"], confusion["real_pass_sim_fail"]],
|
||||
[confusion["real_fail_sim_pass"], confusion["real_fail_sim_fail"]],
|
||||
]
|
||||
)
|
||||
image = axes[1].imshow(matrix, cmap="Blues", vmin=0)
|
||||
axes[1].set_xticks([0, 1], ["Sim pass", "Sim fail"])
|
||||
axes[1].set_yticks([0, 1], ["Real pass", "Real fail"])
|
||||
axes[1].set_title(f"{int(matrix.sum())} anchor decisions")
|
||||
for row in range(2):
|
||||
for column in range(2):
|
||||
axes[1].text(column, row, int(matrix[row, column]), ha="center", va="center")
|
||||
figure.colorbar(image, ax=axes[1], fraction=0.047, pad=0.04)
|
||||
figure.suptitle("ISL=2048, OSL=1, TTFT≤1256 ms, 95% pass gate; two real rounds")
|
||||
figure.tight_layout()
|
||||
figure.savefig(path, dpi=180, bbox_inches="tight")
|
||||
plt.close(figure)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
args = parse_args()
|
||||
real_runs = find_real_runs(args.fleet_artifacts.resolve())
|
||||
real = {name: parse_real_config(name, path) for name, path in real_runs.items()}
|
||||
simulated, simulator_sources = parse_simulator(
|
||||
[path.resolve() for path in args.simulator_manifest]
|
||||
)
|
||||
metrics = compare(real, simulated)
|
||||
rows = [
|
||||
{
|
||||
"config": name,
|
||||
"tp": real[name]["tp"],
|
||||
"mns": real[name]["mns"],
|
||||
"real": real[name]["capacity_per_gpu"],
|
||||
"simulator": simulated[name]["capacity_per_gpu"],
|
||||
}
|
||||
for name in metrics["config_order"]
|
||||
]
|
||||
resources = campaign_resources(args.fleet_artifacts.resolve())
|
||||
resources["fresh_server_anchors"] = sum(
|
||||
len(config["anchors"]) * 2 for config in real.values()
|
||||
)
|
||||
resources["measured_requests"] = resources["fresh_server_anchors"] * 64
|
||||
resources["warmup_requests"] = sum(
|
||||
min(32, max(4, math.ceil(anchor["rate"] * 2.0))) * 2
|
||||
for config in real.values()
|
||||
for anchor in config["anchors"]
|
||||
)
|
||||
args.output_root.mkdir(parents=True, exist_ok=True)
|
||||
payload = {
|
||||
"schema": "qwen30-prefill-fidelity-comparison-v1",
|
||||
"objective": "maximum_tested_slo_feasible_offered_request_rate_per_gpu",
|
||||
"contract": {
|
||||
"model": "Qwen3-30B-A3B",
|
||||
"input_tokens": 2048,
|
||||
"output_tokens": 1,
|
||||
"prefix_caching": False,
|
||||
"ttft_slo_ms": 1256.0,
|
||||
"target_pass_rate": 0.95,
|
||||
"real_anchor_merge": "both_fresh_server_rounds_must_pass",
|
||||
},
|
||||
"metrics": metrics,
|
||||
"real_campaign_resources": resources,
|
||||
"real": real,
|
||||
"simulator": simulated,
|
||||
"simulator_sources": simulator_sources,
|
||||
}
|
||||
(args.output_root / "comparison.json").write_text(
|
||||
json.dumps(payload, indent=2, sort_keys=True) + "\n"
|
||||
)
|
||||
write_csv(args.output_root / "capacity.csv", rows)
|
||||
plot(args.output_root / "qwen30-prefill-ranking.png", rows, metrics)
|
||||
print(json.dumps(metrics, indent=2, sort_keys=True))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -1,6 +1,6 @@
|
||||
# 实验 EXP-SIMFID-PHASE-FACTORIAL:prefill-only 是否是 simulator ranking 的容易区间?
|
||||
|
||||
> **状态:** 已批准,运行中(用户于 2026-07-17 明确要求先完成 235B mixed 与 30B prefill-only)
|
||||
> **状态:** 已完成(2026-07-17)
|
||||
|
||||
## Claim 与决策
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
- **30B system context:** community vLLM 0.20.0+cu129,BF16 weights/activation/KV,TP∈{1,2,4},MNS∈{8,16,32,64},MBT=8192,chunked prefill on,prefix off;real 保留 runtime 默认 CUDA graph,Frontier profile-only 不做 E2E calibration。
|
||||
- **30B workload:** fixed ISL=2048、OSL=1,64 个不同 token-chain prompts,uniform open-loop QPS;fresh server per `(config, rate, round)`,target-rate warmup 与 measured requests 分离。
|
||||
- **30B SLO:** TTFT≤1256 ms,至少 61/64 requests 通过;primary score 为最大共同 tested feasible req/s / 实际 TP GPUs。
|
||||
- **Boundary refinement rule:** base grid `{4,8,16,32,64}` 先定位每个 TP 的 pass→fail 区间;若除以 TP 后的离散容量产生无法区分的 top tie,则在查看最终 ranking 前追加共同 per-GPU lattice `5/6/7 req/s/GPU`,即 TP1 测 `{5,6,7}`、TP2 测 `{10,12,14}`、TP4 测 `{20,24,28}`。refinement 不替换或删除 base anchors。
|
||||
- **235B baseline:** 已冻结 `ISL=2048, OSL=128`、8 configs、68 个 fresh-server anchors;primary sensitivity TTFT≤1256 ms、TPOT≤150 ms。
|
||||
- **Baselines:** real community vLLM;Frontier same-stack profile-only;historical Qwen30 mixed profile-only;historical frozen per-TP calibration 只作为 upper bound,不参与本 case 拟合。
|
||||
- **Metrics:** top set、worst tie-break regret、Kendall τ-b、exact/non-tied pair direction、anchor confusion、absolute capacity、TTFT p50/p95、real trial variance与GPU-hour。
|
||||
@@ -35,7 +36,7 @@
|
||||
| Selective benchmarking | PASS for initial screen | 同时报已有 235B mixed success和内部 pairwise failure;后续 expansion 由预注册 verdict 触发 |
|
||||
| Simplified workload | NEEDS EVIDENCE | fixed-shape 只用于 phase isolation,不外推 trace-faithful mixed |
|
||||
| Calibration=evaluation | PASS | 新 case 不用 serving E2E 数据拟合 scale |
|
||||
| Missing significance | NEEDS EVIDENCE until run | boundary anchors做独立 fresh-server repeat,保留 disagreement |
|
||||
| Missing significance | PASS for ranking screen | 96 个 config-rate cells 均做两个独立 fresh-server rounds;两轮都 pass 才算 feasible |
|
||||
| Relative-only result | PASS by design | 同时报 req/s/GPU、TTFT distribution、rank/regret |
|
||||
|
||||
## 复现信息
|
||||
@@ -43,12 +44,13 @@
|
||||
- **Code:** AITuner branch `codex/fidelity-prefix-pilot-20260714`;Frontier upstream `d9cfeb6d8791fbf2f295dd9744c56a666171776e` + frozen known patches。
|
||||
- **Environment:** 只使用 dash0 8×H20;Qwen30 venv `/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1`;model `/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B`。
|
||||
- **产物路径:** local/remote `runs/frontier-phase-factorial-v0/`;raw GPU artifacts 由 fleet harvest,condensed JSON/CSV 进入结果目录。
|
||||
- **已知 deviation:** 235B 为 FP8/vLLM0.10.2/FlashInfer eager,30B 为 BF16/vLLM0.20/FA3/default CUDA graph;因此跨模型只检验 hypothesis consistency,causal phase claim 最终仍需 same-model phase pair。
|
||||
- **已知 deviation:** 235B 为 FP8/vLLM0.10.2/FlashInfer eager,30B 为 BF16/vLLM0.20/FA3/default CUDA graph;因此跨模型只检验 hypothesis consistency,causal phase claim 最终仍需 same-model phase pair。初始 continuous fleet monitor 未在 fresh-server 间隙保留 controller-level GPU reservation,产生重叠 launch;该 attempt 整体移动到 `invalid-overlap-*`,不进入统计。后续一次试图在“其余 4 卡”上并行 refinement 时,探针再次命中 TP4 fresh-server 空窗,把 4 个 TP1 jobs 放到了同一 GPU set。这四个 jobs 尚未产生 measured result;但当时 TP4/MNS64 已产生的单个 anchor 也按污染处理。两者都整体移到 `invalid-overlap-20260716T1750Z`,TP4/MNS64 从空目录重跑。此后的 barrier waves 不在运行中追加 job;但 Wave 3 的 harvest monitor 在未及时返回 launch 状态时已发射 MNS16/32,紧接的 monitor retry 又在它们的启动空窗发射 MNS64。三者都未产生 measured result,整体移到 `invalid-overlap-20260716T1836Z`。最终 TP4 waves 使用只含本波 jobs 的独立 queue state,不再依赖 pending-job 探针调度。
|
||||
|
||||
## 结果
|
||||
|
||||
- **观察事实:** 235B fixed-shape mixed 已完成:real/sim TP4 top set exact match,worst regret=0、τ-b=0.8944;但 20 个 real non-tie pairs 只保持 16 个,10/34 anchors false-infeasible,TP8 MNS×MBT interaction 被漏掉。30B prefill-only 待运行。
|
||||
- **异常:** 无。
|
||||
- **Interpretation 与剩余 alternatives:** 强版本“mixed 必然失败”已被 235B top-set result 削弱;仍可能存在 phase-dependent error magnitude,由 topology margin 掩盖。
|
||||
- **Claim update:** unchanged,等待 30B prefill-only。
|
||||
- **下一步:** freeze 30B simulator surface → guided real anchors → joint verdict;只有判定需要时扩展 decode-heavy 235B 或 trace-shaped 30B prefill。
|
||||
- **观察事实:** 235B fixed-shape mixed 中 real/sim 的四个 TP4 top configs 完全一致,worst regret=0、τ-b=0.8944;但 20 个 real non-tie pairs 只保持 16 个,10/34 anchors false-infeasible,TP8 MNS×MBT interaction 被漏掉。30B prefill-only 中真机 capacity/GPU 为 TP1=7、TP2=7、TP4=8,Frontier 为 TP1=8、TP2=8、TP4=6;real top set 是四个 TP4 configs,simulator top set 是全部八个 TP1/TP2 configs,无交集。worst regret=12.5%、τ-b=-1.0,32 个 real non-tie pairs 中 0 个同序。96 个 anchor labels 中有 8 个 false-feasible 和 8 个 false-infeasible。
|
||||
- **实验成本:** 接受 24 个 fleet jobs、192 个 fresh-server anchors、12,288 个 measured requests 和 4,512 个 warmups,消耗 12.0744 H20-GPU-hours。
|
||||
- **异常与排除:** fleet controller 在 fresh-server 空窗期没有保留 GPU reservation,产生了三批重叠 launch。污染 attempt 不进入 accepted artifact root,未产生 measured result 的重叠 jobs 也不被计数;同一波中已产生的 TP4/MNS64 单 anchor 同样按污染丢弃,从空目录重跑。最终 TP4 refinement 使用彼此独立的 queue states。analyzer 按 `(round, filename)` 去重相同 harvest copy,如果 hash 冲突则直接报错。
|
||||
- **Interpretation 与剩余 alternatives:** `H-phase` 的强形式(prefill-only 是 fidelity 充分条件)被否证;`H-margin` 与数据更一致。235B 的真机 TP4/TP8 最优 margin 为 2×,足以掩盖内部 residual;30B 的 8-vs-7 margin 被 TP-dependent saturation residual 穿过。但这是跨 stack comparison,不能把差异因果归结为 model size。
|
||||
- **Claim update:** “prefill-only 容易,decode/mixed 困难”的强假设被否证。新的可证伪命题是:config-ranking fidelity 取决于 scheduler-state-conditioned action residual 是否大于 real decision margin。
|
||||
- **下一步:** 不继续扩展跨模型 phase cases。在 Qwen30 prefill-only 上依次做 measured-collective injection、batch-composition-conditioned pure-prefill attention/step profile、TP1@8/TP2@16/TP4@32 的 scheduler batch/queue/per-step trace 对齐,最后再测 routing/graph。
|
||||
|
||||
24
runs/frontier-phase-factorial-v0/fleet-base-rerun.toml
Normal file
24
runs/frontier-phase-factorial-v0/fleet-base-rerun.toml
Normal file
@@ -0,0 +1,24 @@
|
||||
version = 1
|
||||
|
||||
[paths]
|
||||
state_dir = "runs/frontier-phase-factorial-v0/fleet-state-base-rerun"
|
||||
artifacts_dir = "runs/frontier-phase-factorial-v0/fleet-artifacts-exclusive"
|
||||
|
||||
[ssh]
|
||||
connect_timeout_sec = 10
|
||||
|
||||
[scheduler]
|
||||
gpu_free_memory_mb = 95000
|
||||
gpu_free_utilization_pct = 5
|
||||
prefer_pack = true
|
||||
|
||||
[sync]
|
||||
mode = "scp"
|
||||
local_path = "runs/frontier-phase-factorial-v0/remote-sync-marker"
|
||||
|
||||
[[hosts]]
|
||||
name = "dash0"
|
||||
ssh_alias = "dash0"
|
||||
enabled = true
|
||||
sync_remote_path = "/home/admin/cpfs/wjh/aituner/phase-factorial-sync-marker"
|
||||
fleet_root = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0"
|
||||
24
runs/frontier-phase-factorial-v0/fleet-exclusive.toml
Normal file
24
runs/frontier-phase-factorial-v0/fleet-exclusive.toml
Normal file
@@ -0,0 +1,24 @@
|
||||
version = 1
|
||||
|
||||
[paths]
|
||||
state_dir = "runs/frontier-phase-factorial-v0/fleet-state-exclusive"
|
||||
artifacts_dir = "runs/frontier-phase-factorial-v0/fleet-artifacts-exclusive"
|
||||
|
||||
[ssh]
|
||||
connect_timeout_sec = 10
|
||||
|
||||
[scheduler]
|
||||
gpu_free_memory_mb = 95000
|
||||
gpu_free_utilization_pct = 5
|
||||
prefer_pack = true
|
||||
|
||||
[sync]
|
||||
mode = "scp"
|
||||
local_path = "runs/frontier-phase-factorial-v0/remote-sync-marker"
|
||||
|
||||
[[hosts]]
|
||||
name = "dash0"
|
||||
ssh_alias = "dash0"
|
||||
enabled = true
|
||||
sync_remote_path = "/home/admin/cpfs/wjh/aituner/phase-factorial-sync-marker"
|
||||
fleet_root = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0"
|
||||
24
runs/frontier-phase-factorial-v0/fleet-refine-tp4-wave3.toml
Normal file
24
runs/frontier-phase-factorial-v0/fleet-refine-tp4-wave3.toml
Normal file
@@ -0,0 +1,24 @@
|
||||
version = 1
|
||||
|
||||
[paths]
|
||||
state_dir = "runs/frontier-phase-factorial-v0/fleet-state-refine-tp4-wave3"
|
||||
artifacts_dir = "runs/frontier-phase-factorial-v0/fleet-artifacts-exclusive"
|
||||
|
||||
[ssh]
|
||||
connect_timeout_sec = 10
|
||||
|
||||
[scheduler]
|
||||
gpu_free_memory_mb = 95000
|
||||
gpu_free_utilization_pct = 5
|
||||
prefer_pack = true
|
||||
|
||||
[sync]
|
||||
mode = "scp"
|
||||
local_path = "runs/frontier-phase-factorial-v0/remote-sync-marker"
|
||||
|
||||
[[hosts]]
|
||||
name = "dash0"
|
||||
ssh_alias = "dash0"
|
||||
enabled = true
|
||||
sync_remote_path = "/home/admin/cpfs/wjh/aituner/phase-factorial-sync-marker"
|
||||
fleet_root = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0"
|
||||
24
runs/frontier-phase-factorial-v0/fleet-refine-tp4-wave4.toml
Normal file
24
runs/frontier-phase-factorial-v0/fleet-refine-tp4-wave4.toml
Normal file
@@ -0,0 +1,24 @@
|
||||
version = 1
|
||||
|
||||
[paths]
|
||||
state_dir = "runs/frontier-phase-factorial-v0/fleet-state-refine-tp4-wave4"
|
||||
artifacts_dir = "runs/frontier-phase-factorial-v0/fleet-artifacts-exclusive"
|
||||
|
||||
[ssh]
|
||||
connect_timeout_sec = 10
|
||||
|
||||
[scheduler]
|
||||
gpu_free_memory_mb = 95000
|
||||
gpu_free_utilization_pct = 5
|
||||
prefer_pack = true
|
||||
|
||||
[sync]
|
||||
mode = "scp"
|
||||
local_path = "runs/frontier-phase-factorial-v0/remote-sync-marker"
|
||||
|
||||
[[hosts]]
|
||||
name = "dash0"
|
||||
ssh_alias = "dash0"
|
||||
enabled = true
|
||||
sync_remote_path = "/home/admin/cpfs/wjh/aituner/phase-factorial-sync-marker"
|
||||
fleet_root = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0"
|
||||
24
runs/frontier-phase-factorial-v0/fleet-refine.toml
Normal file
24
runs/frontier-phase-factorial-v0/fleet-refine.toml
Normal file
@@ -0,0 +1,24 @@
|
||||
version = 1
|
||||
|
||||
[paths]
|
||||
state_dir = "runs/frontier-phase-factorial-v0/fleet-state-refine"
|
||||
artifacts_dir = "runs/frontier-phase-factorial-v0/fleet-artifacts-exclusive"
|
||||
|
||||
[ssh]
|
||||
connect_timeout_sec = 10
|
||||
|
||||
[scheduler]
|
||||
gpu_free_memory_mb = 95000
|
||||
gpu_free_utilization_pct = 5
|
||||
prefer_pack = true
|
||||
|
||||
[sync]
|
||||
mode = "scp"
|
||||
local_path = "runs/frontier-phase-factorial-v0/remote-sync-marker"
|
||||
|
||||
[[hosts]]
|
||||
name = "dash0"
|
||||
ssh_alias = "dash0"
|
||||
enabled = true
|
||||
sync_remote_path = "/home/admin/cpfs/wjh/aituner/phase-factorial-sync-marker"
|
||||
fleet_root = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0"
|
||||
21
runs/frontier-phase-factorial-v0/jobs_base_rerun.toml
Normal file
21
runs/frontier-phase-factorial-v0/jobs_base_rerun.toml
Normal file
@@ -0,0 +1,21 @@
|
||||
version = 1
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns64-20260717-v2b-exclusive"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp4-mns64-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "4"
|
||||
MNS = "64"
|
||||
RATES = "4 8 16 32 64"
|
||||
SERVER_PORT = "8731"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp4-mns64-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
@@ -1,7 +1,7 @@
|
||||
version = 1
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp1-mns8-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp1-mns8-20260717-v2-exclusive"
|
||||
gpus = 1
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -21,7 +21,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp1-mns16-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp1-mns16-20260717-v2-exclusive"
|
||||
gpus = 1
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -41,7 +41,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp1-mns32-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp1-mns32-20260717-v2-exclusive"
|
||||
gpus = 1
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -61,7 +61,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp1-mns64-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp1-mns64-20260717-v2-exclusive"
|
||||
gpus = 1
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -81,7 +81,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp2-mns8-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp2-mns8-20260717-v2-exclusive"
|
||||
gpus = 2
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -101,7 +101,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp2-mns16-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp2-mns16-20260717-v2-exclusive"
|
||||
gpus = 2
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -121,7 +121,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp2-mns32-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp2-mns32-20260717-v2-exclusive"
|
||||
gpus = 2
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -141,7 +141,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp2-mns64-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp2-mns64-20260717-v2-exclusive"
|
||||
gpus = 2
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -161,7 +161,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns8-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp4-mns8-20260717-v2-exclusive"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -181,7 +181,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns16-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp4-mns16-20260717-v2-exclusive"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -201,7 +201,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns32-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp4-mns32-20260717-v2-exclusive"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
@@ -221,7 +221,7 @@ VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns64-20260717-v1"
|
||||
name = "qwen30-prefill-real-tp4-mns64-20260717-v2-exclusive"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
|
||||
240
runs/frontier-phase-factorial-v0/jobs_refine.toml
Normal file
240
runs/frontier-phase-factorial-v0/jobs_refine.toml
Normal file
@@ -0,0 +1,240 @@
|
||||
version = 1
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp1-mns8-20260717-v3-refine"
|
||||
gpus = 1
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp1-mns8-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "1"
|
||||
MNS = "8"
|
||||
RATES = "5 6 7"
|
||||
SERVER_PORT = "8720"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp1-mns8-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp1-mns16-20260717-v3-refine"
|
||||
gpus = 1
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp1-mns16-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "1"
|
||||
MNS = "16"
|
||||
RATES = "5 6 7"
|
||||
SERVER_PORT = "8721"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp1-mns16-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp1-mns32-20260717-v3-refine"
|
||||
gpus = 1
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp1-mns32-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "1"
|
||||
MNS = "32"
|
||||
RATES = "5 6 7"
|
||||
SERVER_PORT = "8722"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp1-mns32-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp1-mns64-20260717-v3-refine"
|
||||
gpus = 1
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp1-mns64-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "1"
|
||||
MNS = "64"
|
||||
RATES = "5 6 7"
|
||||
SERVER_PORT = "8723"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp1-mns64-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp2-mns8-20260717-v3-refine"
|
||||
gpus = 2
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp2-mns8-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "2"
|
||||
MNS = "8"
|
||||
RATES = "10 12 14"
|
||||
SERVER_PORT = "8724"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp2-mns8-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp2-mns16-20260717-v3-refine"
|
||||
gpus = 2
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp2-mns16-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "2"
|
||||
MNS = "16"
|
||||
RATES = "10 12 14"
|
||||
SERVER_PORT = "8725"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp2-mns16-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp2-mns32-20260717-v3-refine"
|
||||
gpus = 2
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp2-mns32-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "2"
|
||||
MNS = "32"
|
||||
RATES = "10 12 14"
|
||||
SERVER_PORT = "8726"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp2-mns32-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp2-mns64-20260717-v3-refine"
|
||||
gpus = 2
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp2-mns64-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "2"
|
||||
MNS = "64"
|
||||
RATES = "10 12 14"
|
||||
SERVER_PORT = "8727"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp2-mns64-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns8-20260717-v3-refine"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp4-mns8-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "4"
|
||||
MNS = "8"
|
||||
RATES = "20 24 28"
|
||||
SERVER_PORT = "8728"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp4-mns8-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns16-20260717-v3-refine"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp4-mns16-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "4"
|
||||
MNS = "16"
|
||||
RATES = "20 24 28"
|
||||
SERVER_PORT = "8729"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp4-mns16-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns32-20260717-v3-refine"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp4-mns32-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "4"
|
||||
MNS = "32"
|
||||
RATES = "20 24 28"
|
||||
SERVER_PORT = "8730"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp4-mns32-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns64-20260717-v3-refine"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp4-mns64-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "4"
|
||||
MNS = "64"
|
||||
RATES = "20 24 28"
|
||||
SERVER_PORT = "8731"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp4-mns64-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
41
runs/frontier-phase-factorial-v0/jobs_refine_tp4_wave3.toml
Normal file
41
runs/frontier-phase-factorial-v0/jobs_refine_tp4_wave3.toml
Normal file
@@ -0,0 +1,41 @@
|
||||
version = 1
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns16-20260717-v4-refine"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp4-mns16-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "4"
|
||||
MNS = "16"
|
||||
RATES = "20 24 28"
|
||||
SERVER_PORT = "8729"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp4-mns16-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns32-20260717-v4-refine"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp4-mns32-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "4"
|
||||
MNS = "32"
|
||||
RATES = "20 24 28"
|
||||
SERVER_PORT = "8730"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp4-mns32-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
21
runs/frontier-phase-factorial-v0/jobs_refine_tp4_wave4.toml
Normal file
21
runs/frontier-phase-factorial-v0/jobs_refine_tp4_wave4.toml
Normal file
@@ -0,0 +1,21 @@
|
||||
version = 1
|
||||
|
||||
[[jobs]]
|
||||
name = "qwen30-prefill-real-tp4-mns64-20260717-v4-refine"
|
||||
gpus = 4
|
||||
gpu_model = "H20"
|
||||
hosts = ["dash0"]
|
||||
command = "cd /home/admin/cpfs/wjh/aituner/aituner-qwen30-vllm020-profile-v1/runs/frontier-phase-factorial-v0 && timeout --signal=TERM --kill-after=30s 7200 bash run_qwen30_prefill_real_config.sh"
|
||||
artifacts = ["artifacts/real-tp4-mns64-v1"]
|
||||
|
||||
[jobs.env]
|
||||
HOME = "/tmp/wjh"
|
||||
XDG_CACHE_HOME = "/tmp/wjh/.cache"
|
||||
VLLM_CACHE_ROOT = "/tmp/wjh/.cache/vllm"
|
||||
TP = "4"
|
||||
MNS = "64"
|
||||
RATES = "20 24 28"
|
||||
SERVER_PORT = "8731"
|
||||
OUTPUT_ROOT = "/home/admin/cpfs/wjh/aituner/gpu-fleet-phase-factorial-v0/artifacts/real-tp4-mns64-v1"
|
||||
VENV_ROOT = "/tmp/wjh/venvs/vllm-0.20.0-cu129-profiler-v1"
|
||||
MODEL_ROOT = "/home/admin/cpfs/wjh/models/Qwen/Qwen3-30B-A3B"
|
||||
13
runs/frontier-phase-factorial-v0/results/final/capacity.csv
Normal file
13
runs/frontier-phase-factorial-v0/results/final/capacity.csv
Normal file
@@ -0,0 +1,13 @@
|
||||
config,tp,mns,real,simulator
|
||||
tp1_mns8,1,8,7.0,8.0
|
||||
tp1_mns16,1,16,7.0,8.0
|
||||
tp1_mns32,1,32,7.0,8.0
|
||||
tp1_mns64,1,64,7.0,8.0
|
||||
tp2_mns8,2,8,7.0,8.0
|
||||
tp2_mns16,2,16,7.0,8.0
|
||||
tp2_mns32,2,32,7.0,8.0
|
||||
tp2_mns64,2,64,7.0,8.0
|
||||
tp4_mns8,4,8,8.0,6.0
|
||||
tp4_mns16,4,16,8.0,6.0
|
||||
tp4_mns32,4,32,8.0,6.0
|
||||
tp4_mns64,4,64,8.0,6.0
|
||||
|
5860
runs/frontier-phase-factorial-v0/results/final/comparison.json
Normal file
5860
runs/frontier-phase-factorial-v0/results/final/comparison.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,461 @@
|
||||
{
|
||||
"capacity": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp1_mns16",
|
||||
"tp": 1
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 7.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 7.0,
|
||||
"upper_censored": true
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp1_mns32",
|
||||
"tp": 1
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 7.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 7.0,
|
||||
"upper_censored": true
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp1_mns64",
|
||||
"tp": 1
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 7.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 7.0,
|
||||
"upper_censored": true
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp1_mns8",
|
||||
"tp": 1
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 7.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 7.0,
|
||||
"upper_censored": true
|
||||
}
|
||||
],
|
||||
"config_results": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp1_mns8",
|
||||
"tp": 1
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp1_mns8",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 10.505136728286743,
|
||||
"offered_request_rate": 5.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "914a1261d25b03b812dfa30880c3b0a0d7b697a8c13a9f3a26a7bb6eaecd0734",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 5.011124187030024,
|
||||
"ttft_max_ms": 171.58529929215405,
|
||||
"ttft_p50_ms": 171.58529929215405,
|
||||
"ttft_p95_ms": 171.58529929215405
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "98e4ac5df766b1cb5bfb7469f2d76368808c2e085e22eb3553cb8627592cacd7"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp1_mns8",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 10.398303508758545,
|
||||
"offered_request_rate": 6.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "d8f0fe2fbf2ffb42b7e5033f611fc22f3293264859264b5f8d67f13f3a5b66c9",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 5.915042512446176,
|
||||
"ttft_max_ms": 432.43322440414465,
|
||||
"ttft_p50_ms": 282.618152646152,
|
||||
"ttft_p95_ms": 333.9001759332376
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "e0f9adf28d29542fcf834d482c990781724426f3d5cdcc043af53888393d1f64"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp1_mns8",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 10.264978170394897,
|
||||
"offered_request_rate": 7.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "7ba9181767b8cbd741db3794bc7729920d7741d63b795ade4aa1fe28a89f3a63",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 6.89299458621687,
|
||||
"ttft_max_ms": 432.97081304433016,
|
||||
"ttft_p50_ms": 297.34516049744997,
|
||||
"ttft_p95_ms": 427.64609771465524
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "3734627d83aa731c9f09a4c4fea7d994f110bcbe937e157906354a4eda9cbf48"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp1_mns16",
|
||||
"tp": 1
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp1_mns16",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 10.103909015655518,
|
||||
"offered_request_rate": 5.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "914a1261d25b03b812dfa30880c3b0a0d7b697a8c13a9f3a26a7bb6eaecd0734",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 5.011124187030024,
|
||||
"ttft_max_ms": 171.58529929215405,
|
||||
"ttft_p50_ms": 171.58529929215405,
|
||||
"ttft_p95_ms": 171.58529929215405
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "98e4ac5df766b1cb5bfb7469f2d76368808c2e085e22eb3553cb8627592cacd7"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp1_mns16",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 10.05237078666687,
|
||||
"offered_request_rate": 6.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "d8f0fe2fbf2ffb42b7e5033f611fc22f3293264859264b5f8d67f13f3a5b66c9",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 5.915042512446176,
|
||||
"ttft_max_ms": 432.43322440414465,
|
||||
"ttft_p50_ms": 282.618152646152,
|
||||
"ttft_p95_ms": 333.9001759332376
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "e0f9adf28d29542fcf834d482c990781724426f3d5cdcc043af53888393d1f64"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp1_mns16",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 10.048887729644775,
|
||||
"offered_request_rate": 7.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "7ba9181767b8cbd741db3794bc7729920d7741d63b795ade4aa1fe28a89f3a63",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 6.89299458621687,
|
||||
"ttft_max_ms": 432.97081304433016,
|
||||
"ttft_p50_ms": 297.34516049744997,
|
||||
"ttft_p95_ms": 427.64609771465524
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "3734627d83aa731c9f09a4c4fea7d994f110bcbe937e157906354a4eda9cbf48"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp1_mns32",
|
||||
"tp": 1
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp1_mns32",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 10.058743476867676,
|
||||
"offered_request_rate": 5.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "914a1261d25b03b812dfa30880c3b0a0d7b697a8c13a9f3a26a7bb6eaecd0734",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 5.011124187030024,
|
||||
"ttft_max_ms": 171.58529929215405,
|
||||
"ttft_p50_ms": 171.58529929215405,
|
||||
"ttft_p95_ms": 171.58529929215405
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "98e4ac5df766b1cb5bfb7469f2d76368808c2e085e22eb3553cb8627592cacd7"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp1_mns32",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 10.106712818145752,
|
||||
"offered_request_rate": 6.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "d8f0fe2fbf2ffb42b7e5033f611fc22f3293264859264b5f8d67f13f3a5b66c9",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 5.915042512446176,
|
||||
"ttft_max_ms": 432.43322440414465,
|
||||
"ttft_p50_ms": 282.618152646152,
|
||||
"ttft_p95_ms": 333.9001759332376
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "e0f9adf28d29542fcf834d482c990781724426f3d5cdcc043af53888393d1f64"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp1_mns32",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 10.1020348072052,
|
||||
"offered_request_rate": 7.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "7ba9181767b8cbd741db3794bc7729920d7741d63b795ade4aa1fe28a89f3a63",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 6.89299458621687,
|
||||
"ttft_max_ms": 432.97081304433016,
|
||||
"ttft_p50_ms": 297.34516049744997,
|
||||
"ttft_p95_ms": 427.64609771465524
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "3734627d83aa731c9f09a4c4fea7d994f110bcbe937e157906354a4eda9cbf48"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp1_mns64",
|
||||
"tp": 1
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp1_mns64",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 9.897645235061646,
|
||||
"offered_request_rate": 5.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "914a1261d25b03b812dfa30880c3b0a0d7b697a8c13a9f3a26a7bb6eaecd0734",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 5.011124187030024,
|
||||
"ttft_max_ms": 171.58529929215405,
|
||||
"ttft_p50_ms": 171.58529929215405,
|
||||
"ttft_p95_ms": 171.58529929215405
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "98e4ac5df766b1cb5bfb7469f2d76368808c2e085e22eb3553cb8627592cacd7"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp1_mns64",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 9.957297325134277,
|
||||
"offered_request_rate": 6.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "d8f0fe2fbf2ffb42b7e5033f611fc22f3293264859264b5f8d67f13f3a5b66c9",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 5.915042512446176,
|
||||
"ttft_max_ms": 432.43322440414465,
|
||||
"ttft_p50_ms": 282.618152646152,
|
||||
"ttft_p95_ms": 333.9001759332376
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "e0f9adf28d29542fcf834d482c990781724426f3d5cdcc043af53888393d1f64"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp1_mns64",
|
||||
"tp": 1
|
||||
},
|
||||
"elapsed_seconds": 9.799486875534058,
|
||||
"offered_request_rate": 7.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "7ba9181767b8cbd741db3794bc7729920d7741d63b795ade4aa1fe28a89f3a63",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 6.89299458621687,
|
||||
"ttft_max_ms": 432.97081304433016,
|
||||
"ttft_p50_ms": 297.34516049744997,
|
||||
"ttft_p95_ms": 427.64609771465524
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "3734627d83aa731c9f09a4c4fea7d994f110bcbe937e157906354a4eda9cbf48"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"contract": {
|
||||
"arrival": "open_loop_uniform",
|
||||
"input_tokens": 2048,
|
||||
"output_tokens": 1,
|
||||
"prefix_caching": false,
|
||||
"rates": [
|
||||
5.0,
|
||||
6.0,
|
||||
7.0
|
||||
],
|
||||
"requests_per_anchor": 64,
|
||||
"target_pass_rate": 0.95,
|
||||
"ttft_slo_ms": 1256.0
|
||||
},
|
||||
"frontier": {
|
||||
"git_head": "d9cfeb6d8791fbf2f295dd9744c56a666171776e",
|
||||
"git_status_short": " M frontier/config/config.py\n M frontier/entities/request.py\n M frontier/events/cluster_schedule_event.py\n M frontier/execution_time_predictor/sklearn_execution_time_predictor.py\n M frontier/metrics/constants.py\n M frontier/metrics/metrics_store.py\n M frontier/profiling/common/layers/rotary_embedding.py\n M frontier/profiling/moe/moe_impl.py\n M frontier/profiling/moe/moe_vllm_kernel.py\n M frontier/scheduler/cluster_scheduler/__init__.py\n M frontier/scheduler/cluster_scheduler/base_cluster_scheduler.py\n M frontier/scheduler/cluster_scheduler/cluster_scheduler_registry.py\n M frontier/scheduler/cluster_scheduler/sticky_lor_cluster_scheduler.py\n M frontier/scheduler/replica_scheduler/base_replica_scheduler.py\n M frontier/scheduler/replica_scheduler/vllm_v1_engine_replica_scheduler.py\n M frontier/scheduler/replica_stage_scheduler/replica_stage_schduler.py\n M frontier/simulator.py\n M frontier/types/cluster_scheduler_type.py\n?? data/profiling/compute/h20/\n?? frontier/scheduler/cluster_scheduler/prefix_lor_cluster_scheduler.py\n?? runs/\n?? tests/unit/test_attn_prefill_prediction_fallback.py\n",
|
||||
"source": "/tmp/replayserve-frontier-rs1b"
|
||||
},
|
||||
"profiles": {
|
||||
"coverage": {
|
||||
"attention": {
|
||||
"1": {
|
||||
"exact_prefill_2048_rows": 1,
|
||||
"profile_batch_size": 1
|
||||
},
|
||||
"2": {
|
||||
"exact_prefill_2048_rows": 1,
|
||||
"profile_batch_size": 1
|
||||
},
|
||||
"4": {
|
||||
"exact_prefill_2048_rows": 1,
|
||||
"profile_batch_size": 1
|
||||
}
|
||||
},
|
||||
"manifest": {
|
||||
"attention_tp_coverage": [
|
||||
1,
|
||||
2,
|
||||
4
|
||||
],
|
||||
"environment_contract": {
|
||||
"dtype": "bfloat16",
|
||||
"frontier_commit": "d9cfeb6d8791fbf2f295dd9744c56a666171776e",
|
||||
"hardware": "NVIDIA H20",
|
||||
"model": "Qwen3-30B-A3B",
|
||||
"tensor_parallel_sizes": [
|
||||
1,
|
||||
2,
|
||||
4
|
||||
],
|
||||
"vllm_source_commit": "88d34c6409e9fb3c7b8ca0c04756f061d2099eb1",
|
||||
"vllm_version": "0.20.0"
|
||||
},
|
||||
"inputs": {
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-allreduce-full-tp2-20260716-v1-dispatch-aware-20260716T140743025781Z/artifacts/artifacts/allreduce-full-tp2-v1/raw/allreduce-tp2.json": "97c3c76b5a04e95bd9192423c2b891667c668f39cc0dfecbd097d749939f2d0a",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-allreduce-full-tp4-20260716-v1-dispatch-aware-20260716T141106009788Z/artifacts/artifacts/allreduce-full-tp4-v1/raw/allreduce-tp4.json": "809df9baa6f468cf12bf0c99827475acc67894dd9f3f948976590b665fac0e76",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp1-20260716-v2-20260716T135132587012Z/artifacts/artifacts/flashattn-kv-full-v2-tp1/raw/flashattn-tp1.json": "dcb4c1bf7e76b9c765f78ddd2b8a734f2d7ba2adac13ce017689a8a77fe69a27",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp2-20260716-v2-20260716T135134194295Z/artifacts/artifacts/flashattn-kv-full-v2-tp2/raw/flashattn-tp2.json": "43ce042556ba887c8860614b43ccf0f564e5cebc1a0cffbce299d0acb9fa8d07",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp4-20260716-v2-20260716T135135197200Z/artifacts/artifacts/flashattn-kv-full-v2-tp4/raw/flashattn-tp4.json": "84eef31bcad0f556907a093318a420959d14fdc94474823d11f659704bdfec73",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-frontier-linear-full-20260716-v2-max-tokens-20260716T144444676943Z/artifacts/artifacts/frontier-linear-full-v2/profiles/compute/h20/qwen3-a3b-30b-moe/linear_op.csv": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-moe-full-20260716-v1-local-shard-20260716T141334565164Z/artifacts/artifacts/moe-full-v1/raw/moe-full.json": "588f6ad0d69c9636d1b852e3df0a12d13cfe731f050ea7ec7aea457cceefbde8",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-router-full-20260716-v3-tp-context-20260716T145446098505Z/artifacts/artifacts/router-full-v3/raw/router.json": "1962972e983bff3e06a721ef4ae4ec65728ff669681497a4a7e7f769b88b4931"
|
||||
},
|
||||
"outputs": {
|
||||
"allreduce.json": "b38d14f990578d668523d25b107aceed433da5020d8ada3b6e44d3562261a3b3",
|
||||
"attention.csv": "76dcb767cebb4ec1c4e24bd04d93ddd48b5d271986ebfb51a197ab33e1b3d87d",
|
||||
"attention_true_mixed_fused.csv": "43ef4be90bddc9aeac6dbbe339feec24162cd1f2129a08fbd959e6ee4eaf5f60",
|
||||
"linear_op.csv": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c",
|
||||
"moe.csv": "0e4dcba72918a1c4cf4e96ced31ee3829248a19ad54553cebef14417725808b0"
|
||||
},
|
||||
"profile_id": "qwen3-30b-a3b-bf16-vllm020-h20-tp1-2-4-fused-mixed-total-conserving",
|
||||
"projection_contract": {
|
||||
"allreduce": "Frozen exact runtime measurements; base profile-only comparison keeps the historical Frontier CC backend fixed to isolate compute profile fidelity",
|
||||
"attention": "Pure prefill/extend/decode FA3 core plus separately measured KV update; input/output reshape assumed zero; exported mean is used as median target; true mixed rows use a total-conserving compatibility projection",
|
||||
"attention_true_mixed": "The directly measured fused total is preserved in diagnostics. Frontier's two targets are projected by the same-TP pure prefill/decode reference ratio, with projected prefill + decode exactly equal to the fused total; the split is a schema compatibility attribution, not an observation",
|
||||
"linear": "Frontier profiler using vLLM 0.20 CUDA operators",
|
||||
"moe": "Replicated gate and fused top-k plus TP-local modular expert kernel; expert measurement already includes prepare/finalize so shuffling is zero"
|
||||
},
|
||||
"row_counts": {
|
||||
"allreduce": 24,
|
||||
"attention_frontier_compatible": 132,
|
||||
"attention_true_mixed_fused_diagnostic": 30,
|
||||
"linear": 36,
|
||||
"moe": 72
|
||||
},
|
||||
"schema_version": "frontier_qwen30_vllm020_frozen_profile.v2"
|
||||
}
|
||||
},
|
||||
"root": "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2",
|
||||
"sha256": {
|
||||
"attention": "76dcb767cebb4ec1c4e24bd04d93ddd48b5d271986ebfb51a197ab33e1b3d87d",
|
||||
"linear": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c",
|
||||
"manifest": "af40545e75aff55c6333cd2d5379ccf042a5a0b7d7fc7df4f745ce256cb290eb",
|
||||
"moe": "0e4dcba72918a1c4cf4e96ced31ee3829248a19ad54553cebef14417725808b0"
|
||||
}
|
||||
},
|
||||
"schema": "frontier-qwen30-prefill-surface-v1",
|
||||
"status": "partial_not_decision_bearing"
|
||||
}
|
||||
@@ -0,0 +1,461 @@
|
||||
{
|
||||
"capacity": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp2_mns16",
|
||||
"tp": 2
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 14.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 7.0,
|
||||
"upper_censored": true
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp2_mns32",
|
||||
"tp": 2
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 14.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 7.0,
|
||||
"upper_censored": true
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp2_mns64",
|
||||
"tp": 2
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 14.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 7.0,
|
||||
"upper_censored": true
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp2_mns8",
|
||||
"tp": 2
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 14.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 7.0,
|
||||
"upper_censored": true
|
||||
}
|
||||
],
|
||||
"config_results": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp2_mns8",
|
||||
"tp": 2
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp2_mns8",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.598209381103516,
|
||||
"offered_request_rate": 10.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "3597984a1acaffc6b3e8b1baa3ff41bb94ee1618f8780fcc6cd8d3bdb3d7201b",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 9.814433634929404,
|
||||
"ttft_max_ms": 300.1784228926625,
|
||||
"ttft_p50_ms": 211.39433537475938,
|
||||
"ttft_p95_ms": 297.1650738307572
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "92e3001d8467e3f97a243bea8323440ecf254a8ca211e52226fe886ebc9404be"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp2_mns8",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.660333633422852,
|
||||
"offered_request_rate": 12.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "06641f2758bd3f801fb7b9c934670bc766372ad7353f5e14aea2988dfbec462a",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 11.55742285377119,
|
||||
"ttft_max_ms": 389.93612032123883,
|
||||
"ttft_p50_ms": 296.08352841701094,
|
||||
"ttft_p95_ms": 384.6764910356253
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "cbc40c05fb9e400fa5edea6dd52c4122a957418fe523d102f1e72a784321e681"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp2_mns8",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.409451007843018,
|
||||
"offered_request_rate": 14.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "94cf0f3c510015ba50495eb38fd6fb452dd23d16ce0c788dc926229ecd557812",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 13.374732701347012,
|
||||
"ttft_max_ms": 388.3013907870674,
|
||||
"ttft_p50_ms": 309.4635231444016,
|
||||
"ttft_p95_ms": 386.4490667329015
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "3e43801bb724218ceaf0d52f17cd4d0fb3863e70f95c4d8d5a43ce7f85c75c01"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp2_mns16",
|
||||
"tp": 2
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp2_mns16",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.360321521759033,
|
||||
"offered_request_rate": 10.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "3597984a1acaffc6b3e8b1baa3ff41bb94ee1618f8780fcc6cd8d3bdb3d7201b",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 9.814433634929404,
|
||||
"ttft_max_ms": 300.1784228926625,
|
||||
"ttft_p50_ms": 211.39433537475938,
|
||||
"ttft_p95_ms": 297.1650738307572
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "92e3001d8467e3f97a243bea8323440ecf254a8ca211e52226fe886ebc9404be"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp2_mns16",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.402549028396606,
|
||||
"offered_request_rate": 12.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "06641f2758bd3f801fb7b9c934670bc766372ad7353f5e14aea2988dfbec462a",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 11.55742285377119,
|
||||
"ttft_max_ms": 389.93612032123883,
|
||||
"ttft_p50_ms": 296.08352841701094,
|
||||
"ttft_p95_ms": 384.6764910356253
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "cbc40c05fb9e400fa5edea6dd52c4122a957418fe523d102f1e72a784321e681"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp2_mns16",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.40966272354126,
|
||||
"offered_request_rate": 14.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "94cf0f3c510015ba50495eb38fd6fb452dd23d16ce0c788dc926229ecd557812",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 13.374732701347012,
|
||||
"ttft_max_ms": 388.3013907870674,
|
||||
"ttft_p50_ms": 309.4635231444016,
|
||||
"ttft_p95_ms": 386.4490667329015
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "3e43801bb724218ceaf0d52f17cd4d0fb3863e70f95c4d8d5a43ce7f85c75c01"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp2_mns32",
|
||||
"tp": 2
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp2_mns32",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.155991315841675,
|
||||
"offered_request_rate": 10.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "3597984a1acaffc6b3e8b1baa3ff41bb94ee1618f8780fcc6cd8d3bdb3d7201b",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 9.814433634929404,
|
||||
"ttft_max_ms": 300.1784228926625,
|
||||
"ttft_p50_ms": 211.39433537475938,
|
||||
"ttft_p95_ms": 297.1650738307572
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "92e3001d8467e3f97a243bea8323440ecf254a8ca211e52226fe886ebc9404be"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp2_mns32",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.103453874588013,
|
||||
"offered_request_rate": 12.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "06641f2758bd3f801fb7b9c934670bc766372ad7353f5e14aea2988dfbec462a",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 11.55742285377119,
|
||||
"ttft_max_ms": 389.93612032123883,
|
||||
"ttft_p50_ms": 296.08352841701094,
|
||||
"ttft_p95_ms": 384.6764910356253
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "cbc40c05fb9e400fa5edea6dd52c4122a957418fe523d102f1e72a784321e681"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp2_mns32",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.255317687988281,
|
||||
"offered_request_rate": 14.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "94cf0f3c510015ba50495eb38fd6fb452dd23d16ce0c788dc926229ecd557812",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 13.374732701347012,
|
||||
"ttft_max_ms": 388.3013907870674,
|
||||
"ttft_p50_ms": 309.4635231444016,
|
||||
"ttft_p95_ms": 386.4490667329015
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "3e43801bb724218ceaf0d52f17cd4d0fb3863e70f95c4d8d5a43ce7f85c75c01"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp2_mns64",
|
||||
"tp": 2
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp2_mns64",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.106109380722046,
|
||||
"offered_request_rate": 10.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "3597984a1acaffc6b3e8b1baa3ff41bb94ee1618f8780fcc6cd8d3bdb3d7201b",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 9.814433634929404,
|
||||
"ttft_max_ms": 300.1784228926625,
|
||||
"ttft_p50_ms": 211.39433537475938,
|
||||
"ttft_p95_ms": 297.1650738307572
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "92e3001d8467e3f97a243bea8323440ecf254a8ca211e52226fe886ebc9404be"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp2_mns64",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 10.112579107284546,
|
||||
"offered_request_rate": 12.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "06641f2758bd3f801fb7b9c934670bc766372ad7353f5e14aea2988dfbec462a",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 11.55742285377119,
|
||||
"ttft_max_ms": 389.93612032123883,
|
||||
"ttft_p50_ms": 296.08352841701094,
|
||||
"ttft_p95_ms": 384.6764910356253
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "cbc40c05fb9e400fa5edea6dd52c4122a957418fe523d102f1e72a784321e681"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp2_mns64",
|
||||
"tp": 2
|
||||
},
|
||||
"elapsed_seconds": 9.847446918487549,
|
||||
"offered_request_rate": 14.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "94cf0f3c510015ba50495eb38fd6fb452dd23d16ce0c788dc926229ecd557812",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 13.374732701347012,
|
||||
"ttft_max_ms": 388.3013907870674,
|
||||
"ttft_p50_ms": 309.4635231444016,
|
||||
"ttft_p95_ms": 386.4490667329015
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "3e43801bb724218ceaf0d52f17cd4d0fb3863e70f95c4d8d5a43ce7f85c75c01"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"contract": {
|
||||
"arrival": "open_loop_uniform",
|
||||
"input_tokens": 2048,
|
||||
"output_tokens": 1,
|
||||
"prefix_caching": false,
|
||||
"rates": [
|
||||
10.0,
|
||||
12.0,
|
||||
14.0
|
||||
],
|
||||
"requests_per_anchor": 64,
|
||||
"target_pass_rate": 0.95,
|
||||
"ttft_slo_ms": 1256.0
|
||||
},
|
||||
"frontier": {
|
||||
"git_head": "d9cfeb6d8791fbf2f295dd9744c56a666171776e",
|
||||
"git_status_short": " M frontier/config/config.py\n M frontier/entities/request.py\n M frontier/events/cluster_schedule_event.py\n M frontier/execution_time_predictor/sklearn_execution_time_predictor.py\n M frontier/metrics/constants.py\n M frontier/metrics/metrics_store.py\n M frontier/profiling/common/layers/rotary_embedding.py\n M frontier/profiling/moe/moe_impl.py\n M frontier/profiling/moe/moe_vllm_kernel.py\n M frontier/scheduler/cluster_scheduler/__init__.py\n M frontier/scheduler/cluster_scheduler/base_cluster_scheduler.py\n M frontier/scheduler/cluster_scheduler/cluster_scheduler_registry.py\n M frontier/scheduler/cluster_scheduler/sticky_lor_cluster_scheduler.py\n M frontier/scheduler/replica_scheduler/base_replica_scheduler.py\n M frontier/scheduler/replica_scheduler/vllm_v1_engine_replica_scheduler.py\n M frontier/scheduler/replica_stage_scheduler/replica_stage_schduler.py\n M frontier/simulator.py\n M frontier/types/cluster_scheduler_type.py\n?? data/profiling/compute/h20/\n?? frontier/scheduler/cluster_scheduler/prefix_lor_cluster_scheduler.py\n?? runs/\n?? tests/unit/test_attn_prefill_prediction_fallback.py\n",
|
||||
"source": "/tmp/replayserve-frontier-rs1b"
|
||||
},
|
||||
"profiles": {
|
||||
"coverage": {
|
||||
"attention": {
|
||||
"1": {
|
||||
"exact_prefill_2048_rows": 1,
|
||||
"profile_batch_size": 1
|
||||
},
|
||||
"2": {
|
||||
"exact_prefill_2048_rows": 1,
|
||||
"profile_batch_size": 1
|
||||
},
|
||||
"4": {
|
||||
"exact_prefill_2048_rows": 1,
|
||||
"profile_batch_size": 1
|
||||
}
|
||||
},
|
||||
"manifest": {
|
||||
"attention_tp_coverage": [
|
||||
1,
|
||||
2,
|
||||
4
|
||||
],
|
||||
"environment_contract": {
|
||||
"dtype": "bfloat16",
|
||||
"frontier_commit": "d9cfeb6d8791fbf2f295dd9744c56a666171776e",
|
||||
"hardware": "NVIDIA H20",
|
||||
"model": "Qwen3-30B-A3B",
|
||||
"tensor_parallel_sizes": [
|
||||
1,
|
||||
2,
|
||||
4
|
||||
],
|
||||
"vllm_source_commit": "88d34c6409e9fb3c7b8ca0c04756f061d2099eb1",
|
||||
"vllm_version": "0.20.0"
|
||||
},
|
||||
"inputs": {
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-allreduce-full-tp2-20260716-v1-dispatch-aware-20260716T140743025781Z/artifacts/artifacts/allreduce-full-tp2-v1/raw/allreduce-tp2.json": "97c3c76b5a04e95bd9192423c2b891667c668f39cc0dfecbd097d749939f2d0a",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-allreduce-full-tp4-20260716-v1-dispatch-aware-20260716T141106009788Z/artifacts/artifacts/allreduce-full-tp4-v1/raw/allreduce-tp4.json": "809df9baa6f468cf12bf0c99827475acc67894dd9f3f948976590b665fac0e76",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp1-20260716-v2-20260716T135132587012Z/artifacts/artifacts/flashattn-kv-full-v2-tp1/raw/flashattn-tp1.json": "dcb4c1bf7e76b9c765f78ddd2b8a734f2d7ba2adac13ce017689a8a77fe69a27",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp2-20260716-v2-20260716T135134194295Z/artifacts/artifacts/flashattn-kv-full-v2-tp2/raw/flashattn-tp2.json": "43ce042556ba887c8860614b43ccf0f564e5cebc1a0cffbce299d0acb9fa8d07",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp4-20260716-v2-20260716T135135197200Z/artifacts/artifacts/flashattn-kv-full-v2-tp4/raw/flashattn-tp4.json": "84eef31bcad0f556907a093318a420959d14fdc94474823d11f659704bdfec73",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-frontier-linear-full-20260716-v2-max-tokens-20260716T144444676943Z/artifacts/artifacts/frontier-linear-full-v2/profiles/compute/h20/qwen3-a3b-30b-moe/linear_op.csv": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-moe-full-20260716-v1-local-shard-20260716T141334565164Z/artifacts/artifacts/moe-full-v1/raw/moe-full.json": "588f6ad0d69c9636d1b852e3df0a12d13cfe731f050ea7ec7aea457cceefbde8",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-router-full-20260716-v3-tp-context-20260716T145446098505Z/artifacts/artifacts/router-full-v3/raw/router.json": "1962972e983bff3e06a721ef4ae4ec65728ff669681497a4a7e7f769b88b4931"
|
||||
},
|
||||
"outputs": {
|
||||
"allreduce.json": "b38d14f990578d668523d25b107aceed433da5020d8ada3b6e44d3562261a3b3",
|
||||
"attention.csv": "76dcb767cebb4ec1c4e24bd04d93ddd48b5d271986ebfb51a197ab33e1b3d87d",
|
||||
"attention_true_mixed_fused.csv": "43ef4be90bddc9aeac6dbbe339feec24162cd1f2129a08fbd959e6ee4eaf5f60",
|
||||
"linear_op.csv": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c",
|
||||
"moe.csv": "0e4dcba72918a1c4cf4e96ced31ee3829248a19ad54553cebef14417725808b0"
|
||||
},
|
||||
"profile_id": "qwen3-30b-a3b-bf16-vllm020-h20-tp1-2-4-fused-mixed-total-conserving",
|
||||
"projection_contract": {
|
||||
"allreduce": "Frozen exact runtime measurements; base profile-only comparison keeps the historical Frontier CC backend fixed to isolate compute profile fidelity",
|
||||
"attention": "Pure prefill/extend/decode FA3 core plus separately measured KV update; input/output reshape assumed zero; exported mean is used as median target; true mixed rows use a total-conserving compatibility projection",
|
||||
"attention_true_mixed": "The directly measured fused total is preserved in diagnostics. Frontier's two targets are projected by the same-TP pure prefill/decode reference ratio, with projected prefill + decode exactly equal to the fused total; the split is a schema compatibility attribution, not an observation",
|
||||
"linear": "Frontier profiler using vLLM 0.20 CUDA operators",
|
||||
"moe": "Replicated gate and fused top-k plus TP-local modular expert kernel; expert measurement already includes prepare/finalize so shuffling is zero"
|
||||
},
|
||||
"row_counts": {
|
||||
"allreduce": 24,
|
||||
"attention_frontier_compatible": 132,
|
||||
"attention_true_mixed_fused_diagnostic": 30,
|
||||
"linear": 36,
|
||||
"moe": 72
|
||||
},
|
||||
"schema_version": "frontier_qwen30_vllm020_frozen_profile.v2"
|
||||
}
|
||||
},
|
||||
"root": "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2",
|
||||
"sha256": {
|
||||
"attention": "76dcb767cebb4ec1c4e24bd04d93ddd48b5d271986ebfb51a197ab33e1b3d87d",
|
||||
"linear": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c",
|
||||
"manifest": "af40545e75aff55c6333cd2d5379ccf042a5a0b7d7fc7df4f745ce256cb290eb",
|
||||
"moe": "0e4dcba72918a1c4cf4e96ced31ee3829248a19ad54553cebef14417725808b0"
|
||||
}
|
||||
},
|
||||
"schema": "frontier-qwen30-prefill-surface-v1",
|
||||
"status": "partial_not_decision_bearing"
|
||||
}
|
||||
@@ -0,0 +1,461 @@
|
||||
{
|
||||
"capacity": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp4_mns16",
|
||||
"tp": 4
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 24.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 6.0,
|
||||
"upper_censored": false
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp4_mns32",
|
||||
"tp": 4
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 24.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 6.0,
|
||||
"upper_censored": false
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp4_mns64",
|
||||
"tp": 4
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 24.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 6.0,
|
||||
"upper_censored": false
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp4_mns8",
|
||||
"tp": 4
|
||||
},
|
||||
"lower_censored": false,
|
||||
"maximum_tested_feasible_request_rate": 24.0,
|
||||
"maximum_tested_feasible_request_rate_per_gpu": 6.0,
|
||||
"upper_censored": false
|
||||
}
|
||||
],
|
||||
"config_results": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp4_mns8",
|
||||
"tp": 4
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp4_mns8",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 10.649231672286987,
|
||||
"offered_request_rate": 20.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "2bf5e46241bf3462e21f707f715b4a9fe2c932b19da35b19b4a875f88605eee0",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 16.74355310200617,
|
||||
"ttft_max_ms": 779.2433711652614,
|
||||
"ttft_p50_ms": 476.39050138849325,
|
||||
"ttft_p95_ms": 718.1022232545545
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "da52e3a35a89135dd82d40415cf2dd43738eceb4183f322fcd38d96294a845d4"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp4_mns8",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 10.245610237121582,
|
||||
"offered_request_rate": 24.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "79986860bea420cd6e42385521fc8377dbc237a15010a4daf014bc9a94f71aa7",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 16.93744325871021,
|
||||
"ttft_max_ms": 1219.4533647214066,
|
||||
"ttft_p50_ms": 708.2221064125775,
|
||||
"ttft_p95_ms": 1155.549457433053
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "abae88091c5b7bb5a4b7f3f6fa553e132b10e7943c0dbe18dea203ac85c289fa"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 8,
|
||||
"name": "tp4_mns8",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 9.953459978103638,
|
||||
"offered_request_rate": 28.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "7f33dcb51a6e2a47acbc2f4ee968746f86575c0cbf62482ae08cfaf58216d459",
|
||||
"score": {
|
||||
"feasible": false,
|
||||
"pass_rate": 0.765625,
|
||||
"passed": 49,
|
||||
"throughput_requests_per_second": 16.898601280793688,
|
||||
"ttft_max_ms": 1587.02950504691,
|
||||
"ttft_p50_ms": 885.3220562610811,
|
||||
"ttft_p95_ms": 1515.6009336189102
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "603b9e57429538d162af2ab5fd99c15611246ab92ab067b09acb4da3963d40e1"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp4_mns16",
|
||||
"tp": 4
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp4_mns16",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 10.059623956680298,
|
||||
"offered_request_rate": 20.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "2bf5e46241bf3462e21f707f715b4a9fe2c932b19da35b19b4a875f88605eee0",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 16.74355310200617,
|
||||
"ttft_max_ms": 779.2433711652614,
|
||||
"ttft_p50_ms": 476.39050138849325,
|
||||
"ttft_p95_ms": 718.1022232545545
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "da52e3a35a89135dd82d40415cf2dd43738eceb4183f322fcd38d96294a845d4"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp4_mns16",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 10.000702381134033,
|
||||
"offered_request_rate": 24.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "79986860bea420cd6e42385521fc8377dbc237a15010a4daf014bc9a94f71aa7",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 16.93744325871021,
|
||||
"ttft_max_ms": 1219.4533647214066,
|
||||
"ttft_p50_ms": 708.2221064125775,
|
||||
"ttft_p95_ms": 1155.549457433053
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "abae88091c5b7bb5a4b7f3f6fa553e132b10e7943c0dbe18dea203ac85c289fa"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 16,
|
||||
"name": "tp4_mns16",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 9.852763652801514,
|
||||
"offered_request_rate": 28.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "7f33dcb51a6e2a47acbc2f4ee968746f86575c0cbf62482ae08cfaf58216d459",
|
||||
"score": {
|
||||
"feasible": false,
|
||||
"pass_rate": 0.765625,
|
||||
"passed": 49,
|
||||
"throughput_requests_per_second": 16.898601280793688,
|
||||
"ttft_max_ms": 1587.02950504691,
|
||||
"ttft_p50_ms": 885.3220562610811,
|
||||
"ttft_p95_ms": 1515.6009336189102
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "603b9e57429538d162af2ab5fd99c15611246ab92ab067b09acb4da3963d40e1"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp4_mns32",
|
||||
"tp": 4
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp4_mns32",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 9.849465370178223,
|
||||
"offered_request_rate": 20.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "2bf5e46241bf3462e21f707f715b4a9fe2c932b19da35b19b4a875f88605eee0",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 16.74355310200617,
|
||||
"ttft_max_ms": 779.2433711652614,
|
||||
"ttft_p50_ms": 476.39050138849325,
|
||||
"ttft_p95_ms": 718.1022232545545
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "da52e3a35a89135dd82d40415cf2dd43738eceb4183f322fcd38d96294a845d4"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp4_mns32",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 9.80930495262146,
|
||||
"offered_request_rate": 24.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "79986860bea420cd6e42385521fc8377dbc237a15010a4daf014bc9a94f71aa7",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 16.93744325871021,
|
||||
"ttft_max_ms": 1219.4533647214066,
|
||||
"ttft_p50_ms": 708.2221064125775,
|
||||
"ttft_p95_ms": 1155.549457433053
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "abae88091c5b7bb5a4b7f3f6fa553e132b10e7943c0dbe18dea203ac85c289fa"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 32,
|
||||
"name": "tp4_mns32",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 9.798201560974121,
|
||||
"offered_request_rate": 28.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "7f33dcb51a6e2a47acbc2f4ee968746f86575c0cbf62482ae08cfaf58216d459",
|
||||
"score": {
|
||||
"feasible": false,
|
||||
"pass_rate": 0.765625,
|
||||
"passed": 49,
|
||||
"throughput_requests_per_second": 16.898601280793688,
|
||||
"ttft_max_ms": 1587.02950504691,
|
||||
"ttft_p50_ms": 885.3220562610811,
|
||||
"ttft_p95_ms": 1515.6009336189102
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "603b9e57429538d162af2ab5fd99c15611246ab92ab067b09acb4da3963d40e1"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp4_mns64",
|
||||
"tp": 4
|
||||
},
|
||||
"loads": [
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp4_mns64",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 9.800058603286743,
|
||||
"offered_request_rate": 20.0,
|
||||
"offered_request_rate_per_gpu": 5.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "2bf5e46241bf3462e21f707f715b4a9fe2c932b19da35b19b4a875f88605eee0",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 16.74355310200617,
|
||||
"ttft_max_ms": 779.2433711652614,
|
||||
"ttft_p50_ms": 476.39050138849325,
|
||||
"ttft_p95_ms": 718.1022232545545
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "da52e3a35a89135dd82d40415cf2dd43738eceb4183f322fcd38d96294a845d4"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp4_mns64",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 9.804483413696289,
|
||||
"offered_request_rate": 24.0,
|
||||
"offered_request_rate_per_gpu": 6.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "79986860bea420cd6e42385521fc8377dbc237a15010a4daf014bc9a94f71aa7",
|
||||
"score": {
|
||||
"feasible": true,
|
||||
"pass_rate": 1.0,
|
||||
"passed": 64,
|
||||
"throughput_requests_per_second": 16.93744325871021,
|
||||
"ttft_max_ms": 1219.4533647214066,
|
||||
"ttft_p50_ms": 708.2221064125775,
|
||||
"ttft_p95_ms": 1155.549457433053
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "abae88091c5b7bb5a4b7f3f6fa553e132b10e7943c0dbe18dea203ac85c289fa"
|
||||
},
|
||||
{
|
||||
"config": {
|
||||
"mns": 64,
|
||||
"name": "tp4_mns64",
|
||||
"tp": 4
|
||||
},
|
||||
"elapsed_seconds": 9.80262541770935,
|
||||
"offered_request_rate": 28.0,
|
||||
"offered_request_rate_per_gpu": 7.0,
|
||||
"request_count": 64,
|
||||
"request_metrics_sha256": "7f33dcb51a6e2a47acbc2f4ee968746f86575c0cbf62482ae08cfaf58216d459",
|
||||
"score": {
|
||||
"feasible": false,
|
||||
"pass_rate": 0.765625,
|
||||
"passed": 49,
|
||||
"throughput_requests_per_second": 16.898601280793688,
|
||||
"ttft_max_ms": 1587.02950504691,
|
||||
"ttft_p50_ms": 885.3220562610811,
|
||||
"ttft_p95_ms": 1515.6009336189102
|
||||
},
|
||||
"status": "completed",
|
||||
"trace_sha256": "603b9e57429538d162af2ab5fd99c15611246ab92ab067b09acb4da3963d40e1"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"contract": {
|
||||
"arrival": "open_loop_uniform",
|
||||
"input_tokens": 2048,
|
||||
"output_tokens": 1,
|
||||
"prefix_caching": false,
|
||||
"rates": [
|
||||
20.0,
|
||||
24.0,
|
||||
28.0
|
||||
],
|
||||
"requests_per_anchor": 64,
|
||||
"target_pass_rate": 0.95,
|
||||
"ttft_slo_ms": 1256.0
|
||||
},
|
||||
"frontier": {
|
||||
"git_head": "d9cfeb6d8791fbf2f295dd9744c56a666171776e",
|
||||
"git_status_short": " M frontier/config/config.py\n M frontier/entities/request.py\n M frontier/events/cluster_schedule_event.py\n M frontier/execution_time_predictor/sklearn_execution_time_predictor.py\n M frontier/metrics/constants.py\n M frontier/metrics/metrics_store.py\n M frontier/profiling/common/layers/rotary_embedding.py\n M frontier/profiling/moe/moe_impl.py\n M frontier/profiling/moe/moe_vllm_kernel.py\n M frontier/scheduler/cluster_scheduler/__init__.py\n M frontier/scheduler/cluster_scheduler/base_cluster_scheduler.py\n M frontier/scheduler/cluster_scheduler/cluster_scheduler_registry.py\n M frontier/scheduler/cluster_scheduler/sticky_lor_cluster_scheduler.py\n M frontier/scheduler/replica_scheduler/base_replica_scheduler.py\n M frontier/scheduler/replica_scheduler/vllm_v1_engine_replica_scheduler.py\n M frontier/scheduler/replica_stage_scheduler/replica_stage_schduler.py\n M frontier/simulator.py\n M frontier/types/cluster_scheduler_type.py\n?? data/profiling/compute/h20/\n?? frontier/scheduler/cluster_scheduler/prefix_lor_cluster_scheduler.py\n?? runs/\n?? tests/unit/test_attn_prefill_prediction_fallback.py\n",
|
||||
"source": "/tmp/replayserve-frontier-rs1b"
|
||||
},
|
||||
"profiles": {
|
||||
"coverage": {
|
||||
"attention": {
|
||||
"1": {
|
||||
"exact_prefill_2048_rows": 1,
|
||||
"profile_batch_size": 1
|
||||
},
|
||||
"2": {
|
||||
"exact_prefill_2048_rows": 1,
|
||||
"profile_batch_size": 1
|
||||
},
|
||||
"4": {
|
||||
"exact_prefill_2048_rows": 1,
|
||||
"profile_batch_size": 1
|
||||
}
|
||||
},
|
||||
"manifest": {
|
||||
"attention_tp_coverage": [
|
||||
1,
|
||||
2,
|
||||
4
|
||||
],
|
||||
"environment_contract": {
|
||||
"dtype": "bfloat16",
|
||||
"frontier_commit": "d9cfeb6d8791fbf2f295dd9744c56a666171776e",
|
||||
"hardware": "NVIDIA H20",
|
||||
"model": "Qwen3-30B-A3B",
|
||||
"tensor_parallel_sizes": [
|
||||
1,
|
||||
2,
|
||||
4
|
||||
],
|
||||
"vllm_source_commit": "88d34c6409e9fb3c7b8ca0c04756f061d2099eb1",
|
||||
"vllm_version": "0.20.0"
|
||||
},
|
||||
"inputs": {
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-allreduce-full-tp2-20260716-v1-dispatch-aware-20260716T140743025781Z/artifacts/artifacts/allreduce-full-tp2-v1/raw/allreduce-tp2.json": "97c3c76b5a04e95bd9192423c2b891667c668f39cc0dfecbd097d749939f2d0a",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-allreduce-full-tp4-20260716-v1-dispatch-aware-20260716T141106009788Z/artifacts/artifacts/allreduce-full-tp4-v1/raw/allreduce-tp4.json": "809df9baa6f468cf12bf0c99827475acc67894dd9f3f948976590b665fac0e76",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp1-20260716-v2-20260716T135132587012Z/artifacts/artifacts/flashattn-kv-full-v2-tp1/raw/flashattn-tp1.json": "dcb4c1bf7e76b9c765f78ddd2b8a734f2d7ba2adac13ce017689a8a77fe69a27",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp2-20260716-v2-20260716T135134194295Z/artifacts/artifacts/flashattn-kv-full-v2-tp2/raw/flashattn-tp2.json": "43ce042556ba887c8860614b43ccf0f564e5cebc1a0cffbce299d0acb9fa8d07",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-flashattn-kv-full-tp4-20260716-v2-20260716T135135197200Z/artifacts/artifacts/flashattn-kv-full-v2-tp4/raw/flashattn-tp4.json": "84eef31bcad0f556907a093318a420959d14fdc94474823d11f659704bdfec73",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-frontier-linear-full-20260716-v2-max-tokens-20260716T144444676943Z/artifacts/artifacts/frontier-linear-full-v2/profiles/compute/h20/qwen3-a3b-30b-moe/linear_op.csv": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-moe-full-20260716-v1-local-shard-20260716T141334565164Z/artifacts/artifacts/moe-full-v1/raw/moe-full.json": "588f6ad0d69c9636d1b852e3df0a12d13cfe731f050ea7ec7aea457cceefbde8",
|
||||
"/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/fleet-artifacts/qwen30-vllm020-router-full-20260716-v3-tp-context-20260716T145446098505Z/artifacts/artifacts/router-full-v3/raw/router.json": "1962972e983bff3e06a721ef4ae4ec65728ff669681497a4a7e7f769b88b4931"
|
||||
},
|
||||
"outputs": {
|
||||
"allreduce.json": "b38d14f990578d668523d25b107aceed433da5020d8ada3b6e44d3562261a3b3",
|
||||
"attention.csv": "76dcb767cebb4ec1c4e24bd04d93ddd48b5d271986ebfb51a197ab33e1b3d87d",
|
||||
"attention_true_mixed_fused.csv": "43ef4be90bddc9aeac6dbbe339feec24162cd1f2129a08fbd959e6ee4eaf5f60",
|
||||
"linear_op.csv": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c",
|
||||
"moe.csv": "0e4dcba72918a1c4cf4e96ced31ee3829248a19ad54553cebef14417725808b0"
|
||||
},
|
||||
"profile_id": "qwen3-30b-a3b-bf16-vllm020-h20-tp1-2-4-fused-mixed-total-conserving",
|
||||
"projection_contract": {
|
||||
"allreduce": "Frozen exact runtime measurements; base profile-only comparison keeps the historical Frontier CC backend fixed to isolate compute profile fidelity",
|
||||
"attention": "Pure prefill/extend/decode FA3 core plus separately measured KV update; input/output reshape assumed zero; exported mean is used as median target; true mixed rows use a total-conserving compatibility projection",
|
||||
"attention_true_mixed": "The directly measured fused total is preserved in diagnostics. Frontier's two targets are projected by the same-TP pure prefill/decode reference ratio, with projected prefill + decode exactly equal to the fused total; the split is a schema compatibility attribution, not an observation",
|
||||
"linear": "Frontier profiler using vLLM 0.20 CUDA operators",
|
||||
"moe": "Replicated gate and fused top-k plus TP-local modular expert kernel; expert measurement already includes prepare/finalize so shuffling is zero"
|
||||
},
|
||||
"row_counts": {
|
||||
"allreduce": 24,
|
||||
"attention_frontier_compatible": 132,
|
||||
"attention_true_mixed_fused_diagnostic": 30,
|
||||
"linear": 36,
|
||||
"moe": 72
|
||||
},
|
||||
"schema_version": "frontier_qwen30_vllm020_frozen_profile.v2"
|
||||
}
|
||||
},
|
||||
"root": "/home/gahow/phd/aituner/runs/frontier-qwen30-vllm020-profile-v1/frozen/profile-v2",
|
||||
"sha256": {
|
||||
"attention": "76dcb767cebb4ec1c4e24bd04d93ddd48b5d271986ebfb51a197ab33e1b3d87d",
|
||||
"linear": "67666cb0a4901b74599d468df2e31bcaa2a11a7842cc0cefba24ffce62508e0c",
|
||||
"manifest": "af40545e75aff55c6333cd2d5379ccf042a5a0b7d7fc7df4f745ce256cb290eb",
|
||||
"moe": "0e4dcba72918a1c4cf4e96ced31ee3829248a19ad54553cebef14417725808b0"
|
||||
}
|
||||
},
|
||||
"schema": "frontier-qwen30-prefill-surface-v1",
|
||||
"status": "partial_not_decision_bearing"
|
||||
}
|
||||
@@ -37,3 +37,9 @@ def test_grid_and_trace(tmp_path: Path) -> None:
|
||||
assert len(lines) == 4
|
||||
assert lines[1].split(",")[:3] == ["0.000000000000", "2048", "1"]
|
||||
assert lines[3].split(",")[:3] == ["0.500000000000", "2048", "1"]
|
||||
|
||||
|
||||
def test_kendall_tau_b() -> None:
|
||||
analysis = load("analyze_qwen30_prefill_fidelity.py")
|
||||
assert analysis.kendall_tau_b([1, 2, 3], [1, 2, 3])["kendall_tau_b"] == 1
|
||||
assert analysis.kendall_tau_b([1, 2, 3], [3, 2, 1])["kendall_tau_b"] == -1
|
||||
|
||||
Reference in New Issue
Block a user