-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquickstart.py
More file actions
55 lines (46 loc) · 1.63 KB
/
quickstart.py
File metadata and controls
55 lines (46 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from __future__ import annotations
from pathlib import Path
import slosizer as slz
OUTPUT_DIR = Path(__file__).resolve().parent / "output"
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
profile = slz.vertex_profile("gemini-2.0-flash-001")
baseline = slz.make_synthetic_trace(seed=42, scenario="baseline")
optimized = slz.make_synthetic_trace(seed=42, scenario="optimized")
targets = [
slz.LatencyTarget(slz.LatencySLO(threshold_s=1.5, percentile=0.95)),
slz.LatencyTarget(slz.LatencySLO(threshold_s=1.5, percentile=0.99)),
slz.ThroughputTarget(
percentile=0.99, max_overload_probability=0.01, windows_s=(1.0, 5.0, 30.0)
),
]
comparison = slz.compare_scenarios(
{"baseline": baseline, "optimized": optimized},
profile,
targets,
)
comparison.to_csv(OUTPUT_DIR / "comparison.csv", index=False)
baseline.frame.to_csv(OUTPUT_DIR / "synthetic_request_trace_baseline.csv", index=False)
optimized.frame.to_csv(OUTPUT_DIR / "synthetic_request_trace_optimized.csv", index=False)
latency_target = slz.LatencyTarget(slz.LatencySLO(threshold_s=1.5, percentile=0.99))
slz.plot_latency_vs_units(
baseline,
profile,
units=range(1, 13),
target=latency_target,
path=OUTPUT_DIR / "latency_vs_capacity.png",
)
slz.plot_required_units_distribution(
baseline,
profile,
path=OUTPUT_DIR / "required_units_distribution.png",
)
slz.plot_capacity_tradeoff(
comparison,
path=OUTPUT_DIR / "scenario_benefit.png",
)
slz.plot_slack_tradeoff(
comparison,
path=OUTPUT_DIR / "percentile_tradeoff.png",
)
print("Wrote synthetic example outputs to", OUTPUT_DIR)
print(comparison.round(3).to_string(index=False))