Files
aituner/runs/frontier-qwen30-vllm020-profile-v1/plot_mock_ablation.py

42 lines
1.6 KiB
Python

#!/usr/bin/env python3
"""Render the preregistered profile-ablation figure with schematic data."""
from pathlib import Path
import matplotlib.pyplot as plt
CONFIGS = [f"TP{tp}\nMNS{mns}" for tp in (1, 2, 4) for mns in (8, 16, 32, 64)]
# Schematic only. These values are deliberately not derived from experiment data.
MOCK = {
"Real (mock)": [0.42, 0.50, 0.58, 0.57, 0.60, 0.76, 1.00, 0.99, 0.55, 0.70, 0.74, 0.73],
"Old profile-only (mock)": [0.38, 0.44, 0.51, 0.50, 0.47, 0.58, 0.70, 0.69, 0.66, 0.84, 0.95, 0.96],
"New P-020 profile-only (H1 mock)": [0.40, 0.49, 0.57, 0.56, 0.58, 0.74, 0.98, 0.97, 0.53, 0.69, 0.75, 0.74],
"Per-TP calibrated upper bound (mock)": [0.41, 0.50, 0.58, 0.57, 0.59, 0.75, 0.99, 0.98, 0.54, 0.69, 0.75, 0.74],
}
def main() -> None:
output = Path(__file__).with_name("mock-profile-ablation.png")
fig, ax = plt.subplots(figsize=(13.5, 5.8), constrained_layout=True)
x = list(range(len(CONFIGS)))
styles = ["o-", "s--", "^-", "D:"]
for (label, values), style in zip(MOCK.items(), styles, strict=True):
ax.plot(x, values, style, linewidth=2, markersize=5, label=label)
ax.axvline(3.5, color="0.75", linewidth=1)
ax.axvline(7.5, color="0.75", linewidth=1)
ax.set_xticks(x, CONFIGS)
ax.set_ylabel("Normalized SLO-feasible throughput (schematic)")
ax.set_xlabel("Configuration")
ax.set_ylim(0.3, 1.08)
ax.grid(axis="y", alpha=0.25)
ax.legend(ncol=2, frameon=False, loc="upper left")
ax.set_title("MOCK / SCHEMATIC — expected discriminative result, not experiment data")
fig.savefig(output, dpi=180)
print(output)
if __name__ == "__main__":
main()