| dump_latex_table <- function(df, experiment, latex_file = "table.tex") { |
| options(knitr.kable.NA = "-") |
| tabular <- df |> |
| kable( |
| format = "latex", |
| booktabs = TRUE, |
| linesep = "", |
| align = c("cccccccccccc"), |
| caption = paste0("PPL results of ", experiment), |
| label = "tab:experiment-result", |
| col.names = c( |
| "Method", "Config", "BPP", |
| "WikiText2", "C4", "MEM", |
| "WikiText2", "C4", "MEM", |
| "WikiText2", "C4", "MEM" |
| ) |
| ) |> |
| kable_styling(latex_options = c("hold_position")) |> |
| add_header_above( |
| c(" " = 3, "Llama-2-7B" = 3, "Llama-2-13B" = 3, "Llama-3-8B" = 3) |
| ) |> |
| collapse_rows(columns = 2, latex_hline = "major") |
|
|
| tabular <- gsub( |
| "\\begin{tabular}", |
| "\\begin{adjustbox}{width=\\textwidth,keepaspectratio}\n\\begin{tabular}", |
| tabular, |
| fixed = TRUE |
| ) |
| tabular <- gsub( |
| "\\end{tabular}", |
| "\\end{tabular}\n\\end{adjustbox}", |
| tabular, |
| fixed = TRUE |
| ) |
|
|
| head <- r"( |
| \documentclass{article} |
| \usepackage{booktabs,makecell,multirow,threeparttable} |
| \usepackage{adjustbox} |
| |
| \begin{document} |
| |
| )" |
| tail <- r"( |
| |
| \end{document} |
| )" |
| out <- paste( |
| head, |
| tabular, |
| tail, |
| sep = "\n" |
| ) |
|
|
| fh <- file(paste0("pdfs/", latex_file)) |
| writeLines(out, fh) |
| close(fh) |
| } |
|
|
| process_dataframe <- function(df, algo_levels, algo_labels) { |
| all_cols <- c( |
| "model", "algo", "config", |
| "bpp", "ppl_wikitext", "ppl_c4", |
| "memory" |
| ) |
| latex_cols <- c( |
| "algo", "config", "bpp", |
| "ppl_wikitext_Llama-2-7B", "ppl_c4_Llama-2-7B", "memory_Llama-2-7B", |
| "ppl_wikitext_Llama-2-13B", "ppl_c4_Llama-2-13B", "memory_Llama-2-13B", |
| "ppl_wikitext_Llama-3-8B", "ppl_c4_Llama-3-8B", "memory_Llama-3-8B" |
| ) |
| df_latex <- df |> |
| mutate( |
| config = ifelse(algo == "mxq", sapply(bpp, budget_to_cfg), config) |
| ) |> |
| mutate( |
| attempt = ifelse( |
| is.na(attempt), |
| attempt, |
| sapply(attempt, abbrev_sensi_kurt) |
| ) |
| ) |> |
| mutate( |
| algo = ifelse( |
| algo == "mxq" & !is.na(attempt) & attempt != "mxq1" & attempt != "mxq2", |
| paste0(algo, "-", attempt), |
| algo |
| ), |
| ppl_wikitext = round(ppl_wikitext, digits = 2), |
| ppl_c4 = round(ppl_c4, digits = 2), |
| memory = round(load_mem_allot, digits = 2) |
| ) |> |
| 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") |
| ), |
| algo = factor( |
| algo, |
| levels = algo_levels, |
| labels = algo_labels |
| ), |
| config = factor( |
| config, |
| levels = c( |
| "base", |
| "b4g32", "b4g64", "b4g128", |
| "b3g32", "b3g64", "b3g128" |
| |
| |
| |
| |
| ) |
| ) |
| ) |> |
| select(all_of(all_cols)) |> |
| filter(bpp >= 3.03 & bpp < 8.0 | bpp >= 16.00) |> |
| pivot_wider( |
| names_from = model, |
| values_from = c(ppl_wikitext, ppl_c4, memory), |
| names_vary = "slowest" |
| ) |> |
| select(all_of(latex_cols)) |> |
| arrange(config, algo, desc(bpp)) |
|
|
| return(df_latex) |
| } |
|
|