Files
pytorch/benchmarks/dynamo/check_memory_compression_ratio.py

58 lines
1.6 KiB
Python

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)