calc_mem_inc <- function(df_cfgs) { df_cfg_mem <- df_cfgs |> dplyr::mutate( base_cfg = sapply(bit_budget, budget_to_cfg), cfg = paste0("b", b1, "g", g1), bpp = sapply(cfg, calc_bpp), base_bpp = sapply(base_cfg, calc_bpp), mem_orig = param_cnt * base_bpp, mem_new = param_cnt * bpp ) |> select(-c("b1", "g1", "b2", "g2", "base_bpp", "base_cfg", "memmb")) |> dplyr::mutate( cfg = factor( cfg, levels = c( "b2g128", "b2g64", "b2g32", "b3g128", "b3g64", "b3g32", "b4g128", "b4g64", "b4g32", "b8g128", "b8g64", "b8g32" ) ) ) |> group_by(attempt, model, bit_budget) |> summarise( mem_orig = sum(mem_orig), mem_new = sum(mem_new) ) |> mutate( mem_orig = mem_orig / 8 / 1024^2, mem_new = mem_new / 8 / 1024^2, increment = round(100 * (mem_new - mem_orig) / mem_orig, digits = 2) ) return(df_cfg_mem) } load_ppl_mem_inc <- function(allot_cfg_csv_fp, combined_csv_fp) { df_cfgs <- read_csv(allot_cfg_csv_fp) |> mutate( model = factor( model, levels = c("Llama-2-7b-hf", "Llama-2-13b-hf", "Meta-Llama-3-8B"), labels = c("Llama-2-7B", "Llama-2-13B", "Llama-3-8B") ) ) df_w_base <- read_csv(combined_csv_fp) |> mutate( model = factor( model, levels = c("Llama-2-7b-hf", "Llama-2-13b-hf", "Meta-Llama-3-8B"), labels = c("Llama-2-7B", "Llama-2-13B", "Llama-3-8B") ) ) df_hqq <- df_w_base |> filter( algo == "hqq" ) df_cfg_mem <- calc_mem_inc(df_cfgs) df_ppl_mem_inc <- df_cfg_mem |> left_join( df_hqq, suffix = c("", "_h"), by = join_by(model, bit_budget == bpp) ) |> left_join( df_w_base, suffix = c("_hqq", ""), by = join_by(model, attempt, bit_budget == bpp) ) |> mutate( ppl_wikitext_decr = round( 100 * (ppl_wikitext_hqq - ppl_wikitext) / ppl_wikitext_hqq, digits = 2 ), ppl_c4_decr = round( 100 * (ppl_c4_hqq - ppl_c4) / ppl_c4_hqq, digits = 2 ), mem_incr = round( 100 * (load_mem_allot - load_mem_allot_hqq) / load_mem_allot_hqq, digits = 2 ) ) |> rename(bpp = bit_budget) |> select( c( "model", "attempt", "bpp", "increment", "ppl_wikitext_decr", "ppl_c4_decr", "mem_incr", "ppl_wikitext", "ppl_c4", "ppl_wikitext_hqq", "ppl_c4_hqq", "mem_orig", "mem_new", "load_mem_allot", "load_mem_allot_hqq" ) ) df_ppl_mem_inc <- df_ppl_mem_inc |> filter( !is.na(attempt) & attempt != "mxq1" ) |> separate_wider_regex( attempt, c(method = "\\w+-\\w+", "-", stop_topm = "\\d-\\d") ) |> mutate( ablation = ifelse(grepl("-abl", method), TRUE, FALSE), method1 = ifelse(grepl("sensi-", method), "SensiBoost", "KurtBoost") ) |> mutate(method = method1) |> select(!c("method1")) |> pivot_longer( cols = c("ppl_wikitext", "ppl_c4"), names_to = c(".value", "dataset"), names_sep = "_" ) |> mutate( dataset = factor( dataset, levels = c("wikitext", "c4"), labels = c("WikiText2", "C4") ) ) list(df_ppl_mem_inc, df_hqq) }