in arctic_inference/suffix_decoding/simulator.py [0:0]
def results_summary(df: pd.DataFrame, config_cols: List[str]) -> pd.DataFrame:
# Compute per-request speedup.
speedup = df.groupby(["task_id", "request_id"]).agg(
sum_out_toks=("num_out_toks", "sum"),
num_steps=("step", "count"),
)
speedup["speedup"] = speedup["sum_out_toks"] / speedup["num_steps"]
speedup = speedup.groupby(["task_id"]).agg(
req_speedup=("speedup", "mean"),
)
# Compute summary statistics.
config_cols = ["task_id"] + list(config_cols)
summary = df.groupby(config_cols).agg(
sum_accept_toks=("num_accept_toks", "sum"),
sum_spec_toks=("num_spec_toks", "sum"),
sum_out_toks=("num_out_toks", "sum"),
avg_accept_toks=("num_accept_toks", "mean"),
avg_spec_toks=("num_spec_toks", "mean"),
sum_spec_ms=("spec_ms", "sum"),
sum_update_ms=("update_ms", "sum"),
).reset_index()
summary["accept_rate"] = (
summary["sum_accept_toks"] / summary["sum_spec_toks"])
summary["req_speedup"] = speedup["req_speedup"]
summary["spec_ms_per_tok"] = (
summary["sum_spec_ms"] / summary["sum_spec_toks"])
summary["update_ms_per_tok"] = (
summary["sum_update_ms"] / summary["sum_out_toks"])
# Calculate columns to drop from the summary
drop_cols = [col for col in config_cols[1:] if summary[col].nunique() == 1]
drop_cols.extend([
"sum_accept_toks",
"sum_spec_toks",
"sum_out_toks",
"sum_spec_ms",
"sum_update_ms"])
return summary.drop(columns=drop_cols).set_index("task_id")