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 56 57
|
import argparse
import sys
import textwrap
import pandas as pd
def main(args):
actual = pd.read_csv(args.actual)
expected = pd.read_csv(args.expected)
failed = []
for name in actual["name"]:
actual_memory_compression = float(
actual.loc[actual["name"] == name]["compression_ratio"]
)
try:
expected_memory_compression = float(
expected.loc[expected["name"] == name]["compression_ratio"]
)
except TypeError:
print(f"{name:34} is missing from {args.expected}")
continue
if actual_memory_compression >= expected_memory_compression * 0.95:
status = "PASS"
else:
status = "FAIL"
failed.append(name)
print(
f"""
{name:34}:
actual_memory_compression={actual_memory_compression:.2f},
expected_memory_compression={expected_memory_compression:.2f},
{status}
"""
)
if failed:
print(
textwrap.dedent(
f"""
Error: {len(failed)} models below expected memory compression ratio:
{' '.join(failed)}
If this drop is expected, you can update `{args.expected}`.
"""
)
)
sys.exit(1)
parser = argparse.ArgumentParser()
parser.add_argument("--actual", type=str, required=True)
parser.add_argument("--expected", type=str, required=True)
args = parser.parse_args()
if __name__ == "__main__":
main(args)
|