File size: 1,926 Bytes
c0a2ac4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import json
import os


def load_reports(report_dir):

    models = {}

    for file in os.listdir(report_dir):

        path = os.path.join(
            report_dir,
            file
        )

        if file.endswith("_genome.json"):

            name = file.replace(
                "_genome.json",
                ""
            )

            models.setdefault(name, {})
            
            with open(path, "r") as f:
                models[name]["genome"] = json.load(f)


        elif file.endswith("_benchmark.json"):

            name = file.replace(
                "_benchmark.json",
                ""
            )

            models.setdefault(name, {})

            with open(path, "r") as f:
                models[name]["benchmark"] = json.load(f)

    return models



def generate_comparison(report_dir):

    reports = load_reports(report_dir)

    table = []


    for name, data in reports.items():

        genome = data.get(
            "genome",
            {}
        )

        benchmark = data.get(
            "benchmark",
            {}
        )


        table.append({

            "model": name,

            "parameters": genome.get(
                "model",
                {}
            ).get(
                "parameter_count"
            ),

            "layers": genome.get(
                "model",
                {}
            ).get(
                "num_hidden_layers"
            ),

            "hidden_size": genome.get(
                "model",
                {}
            ).get(
                "hidden_size"
            ),

            "latency_ms": benchmark.get(
                "latency",
                {}
            ).get(
                "average_ms"
            ),

            "throughput": benchmark.get(
                "throughput",
                {}
            ).get(
                "samples_per_second"
            )
        })


    return table