1import argparse 2import sys 3import textwrap 4 5import pandas as pd 6 7 8def main(args): 9 actual = pd.read_csv(args.actual) 10 expected = pd.read_csv(args.expected) 11 failed = [] 12 13 for name in actual["name"]: 14 actual_memory_compression = float( 15 actual.loc[actual["name"] == name]["compression_ratio"] 16 ) 17 try: 18 expected_memory_compression = float( 19 expected.loc[expected["name"] == name]["compression_ratio"] 20 ) 21 except TypeError: 22 print(f"{name:34} is missing from {args.expected}") 23 continue 24 if actual_memory_compression >= expected_memory_compression * 0.95: 25 status = "PASS" 26 else: 27 status = "FAIL" 28 failed.append(name) 29 print( 30 f""" 31 {name:34}: 32 actual_memory_compression={actual_memory_compression:.2f}, 33 expected_memory_compression={expected_memory_compression:.2f}, 34 {status} 35 """ 36 ) 37 38 if failed: 39 print( 40 textwrap.dedent( 41 f""" 42 Error: {len(failed)} models below expected memory compression ratio: 43 {' '.join(failed)} 44 If this drop is expected, you can update `{args.expected}`. 45 """ 46 ) 47 ) 48 sys.exit(1) 49 50 51parser = argparse.ArgumentParser() 52parser.add_argument("--actual", type=str, required=True) 53parser.add_argument("--expected", type=str, required=True) 54args = parser.parse_args() 55 56if __name__ == "__main__": 57 main(args) 58