feat: add deterministic CPU/GPU benchmark runner slice
This commit is contained in:
@@ -4,7 +4,13 @@ from __future__ import annotations
|
||||
|
||||
import json
|
||||
|
||||
from meshnet_node.performance_contract import DEFAULT_CONTRACT, SCHEMA_VERSION, main
|
||||
from meshnet_node.performance_contract import (
|
||||
BENCHMARK_SCHEMA_VERSION,
|
||||
DEFAULT_CONTRACT,
|
||||
SCHEMA_VERSION,
|
||||
main,
|
||||
run_performance_benchmark,
|
||||
)
|
||||
|
||||
|
||||
def test_default_contract_is_architecture_aligned_and_small():
|
||||
@@ -82,3 +88,80 @@ def test_contract_cli_writes_json(tmp_path, capsys):
|
||||
|
||||
assert written == DEFAULT_CONTRACT.to_dict()
|
||||
assert str(output) in capsys.readouterr().out
|
||||
|
||||
|
||||
def test_stub_benchmark_covers_every_lane_concurrency_and_metric():
|
||||
"""The runner exercises all four CPU/GPU lanes with the full metric set.
|
||||
|
||||
Tags: performance, benchmark, gguf
|
||||
"""
|
||||
report = run_performance_benchmark()
|
||||
|
||||
assert report["schema_version"] == BENCHMARK_SCHEMA_VERSION
|
||||
assert report["story_id"] == "DGR-001"
|
||||
assert report["source"] == "stub-backend"
|
||||
assert report["model_target"] == DEFAULT_CONTRACT.model_target.to_dict()
|
||||
assert [lane["id"] for lane in report["lanes"]] == [
|
||||
lane.id for lane in DEFAULT_CONTRACT.benchmark_lanes
|
||||
]
|
||||
for lane in report["lanes"]:
|
||||
assert [result["concurrency"] for result in lane["results"]] == [1, 4]
|
||||
for result in lane["results"]:
|
||||
assert set(result["metrics"]) == set(DEFAULT_CONTRACT.metrics)
|
||||
assert result["metrics"]["failure_count"] == 0
|
||||
assert result["metrics"]["decode_tok_per_sec"] > 0
|
||||
|
||||
|
||||
def test_stub_benchmark_is_deterministic():
|
||||
"""Two runs produce byte-identical reports; no clocks or randomness leak in.
|
||||
|
||||
Tags: performance, benchmark, deterministic
|
||||
"""
|
||||
first = run_performance_benchmark()
|
||||
second = run_performance_benchmark()
|
||||
|
||||
assert first == second
|
||||
assert json.dumps(first, sort_keys=True) == json.dumps(second, sort_keys=True)
|
||||
|
||||
|
||||
def test_stub_benchmark_compares_gguf_against_safetensors_per_device():
|
||||
"""Each device gets a GGUF-vs-safetensors comparison and a stop-condition verdict.
|
||||
|
||||
Tags: performance, benchmark, gguf
|
||||
"""
|
||||
report = run_performance_benchmark()
|
||||
|
||||
assert set(report["comparisons"]) == {"cpu", "gpu"}
|
||||
cpu, gpu = report["comparisons"]["cpu"], report["comparisons"]["gpu"]
|
||||
assert cpu["safetensors_lane"] == "transformers-safetensors-cpu"
|
||||
assert cpu["gguf_lane"] == "llama-cpp-gguf-cpu"
|
||||
assert cpu["memory_metric"] == "rss_bytes"
|
||||
assert gpu["safetensors_lane"] == "transformers-safetensors-gpu"
|
||||
assert gpu["gguf_lane"] == "llama-cpp-gguf-gpu"
|
||||
assert gpu["memory_metric"] == "vram_bytes"
|
||||
for comparison in (cpu, gpu):
|
||||
assert comparison["decode_speedup"] > 1.0
|
||||
assert comparison["artifact_bytes_ratio"] < 0.5
|
||||
assert comparison["memory_bytes_ratio"] < 1.0
|
||||
assert comparison["output_drift"] == 0.0
|
||||
assert comparison["gguf_benefit"] is True
|
||||
assert report["stop_condition"]["gguf_benefit"] is True
|
||||
assert report["stop_condition"]["triggered"] is False
|
||||
assert report["stop_condition"]["text"] == DEFAULT_CONTRACT.stop_condition
|
||||
|
||||
|
||||
def test_contract_cli_writes_benchmark_report(tmp_path, capsys):
|
||||
"""--benchmark-out emits the stub benchmark report next to the contract.
|
||||
|
||||
Tags: performance, benchmark, artifact
|
||||
"""
|
||||
contract_out = tmp_path / "performance-contract.json"
|
||||
benchmark_out = tmp_path / "artifacts" / "stub-benchmark-report.json"
|
||||
|
||||
assert main(["--json-out", str(contract_out), "--benchmark-out", str(benchmark_out)]) == 0
|
||||
report = json.loads(benchmark_out.read_text(encoding="utf-8"))
|
||||
|
||||
assert report == run_performance_benchmark()
|
||||
output = capsys.readouterr().out
|
||||
assert str(contract_out) in output
|
||||
assert str(benchmark_out) in output
|
||||
|
||||
Reference in New Issue
Block a user