63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).parent
|
|
|
|
|
|
def load(name: str):
|
|
path = ROOT / name
|
|
spec = importlib.util.spec_from_file_location(path.stem, path)
|
|
assert spec and spec.loader
|
|
module = importlib.util.module_from_spec(spec)
|
|
sys.modules[spec.name] = module
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
def test_percentile() -> None:
|
|
client = load("qwen30_prefill_client.py")
|
|
assert client.percentile([4.0, 1.0, 3.0, 2.0], 0.50) == 2.0
|
|
assert client.percentile([4.0, 1.0, 3.0, 2.0], 0.95) == 4.0
|
|
assert client.percentile([], 0.95) is None
|
|
|
|
|
|
def test_grid_and_trace(tmp_path: Path) -> None:
|
|
surface = load("run_frontier_qwen30_prefill_surface.py")
|
|
assert len(surface.GRID) == 12
|
|
assert {config.tp for config in surface.GRID} == {1, 2, 4}
|
|
trace = tmp_path / "trace.csv"
|
|
surface.write_trace(trace, requests=3, rate=4.0)
|
|
lines = trace.read_text().splitlines()
|
|
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
|
|
|
|
|
|
def test_configure_cc_command(tmp_path: Path) -> None:
|
|
surface = load("run_frontier_qwen30_prefill_surface.py")
|
|
base = ["python", "--cc_backend_config_type", "analytical", "--other", "x"]
|
|
analytical = surface.configure_cc_command(
|
|
base, backend="analytical", allreduce_csv=None, cache=tmp_path
|
|
)
|
|
assert analytical == base
|
|
profile = tmp_path / "all_reduce.csv"
|
|
profile.write_text("header\n")
|
|
vidur = surface.configure_cc_command(
|
|
base, backend="vidur", allreduce_csv=profile, cache=tmp_path / "cache"
|
|
)
|
|
assert vidur[2] == "vidur"
|
|
assert "--vidur_cc_backend_config_all_reduce_input_file" in vidur
|
|
assert str(profile) in vidur
|