File size: 1,174 Bytes
46f4b10
 
55c8a69
46f4b10
 
 
 
 
 
 
 
55c8a69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import json
import numpy as np
from typing import Optional


class ModelBenchmarkData:

    def __init__(self, json_path: str) -> None:
        with open(json_path, "r") as f:
            self.data = json.load(f)

    def compute_e2e_latency(self, measures: dict) -> tuple[float, Optional[float]]:
        return measures["e2e_latency"]

    def compute_ttft(self, measures: dict) -> float:
        return measures["t_tokens"][0] - measures["wall_time_start"]

    def compute_itl(self, measures: dict) -> Optional[float]:
        if len(measures["t_tokens"]) < 2:
            return None
        delta_t = measures["t_tokens"][-1] - measures["t_tokens"][0]
        num_tokens = len(measures["t_tokens"]) - 1
        return delta_t / num_tokens

    def get_bar_plot_data(self) -> dict:
        per_scenario_data = {}
        for i, (cfg_name, data) in enumerate(self.data.items()):
            per_scenario_data[cfg_name] = {
                "ttft": [self.compute_ttft(d) for d in data["measures"]],
                "itl": [self.compute_itl(d) for d in data["measures"]],
                "config": data["metadata"]["config"],
            }
        return per_scenario_data