diff --git a/.gitignore b/.gitignore
index ceef6a5fba456..db97822c7e36e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -203,3 +203,5 @@ benchmarks/*.json
# Linting
actionlint
shellcheck*/
+
+out/
diff --git a/examples/generate_rand_loras.ipynb b/examples/generate_rand_loras.ipynb
new file mode 100644
index 0000000000000..a8e8b46d6f85c
--- /dev/null
+++ b/examples/generate_rand_loras.ipynb
@@ -0,0 +1,159 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 148,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 1, Loss: 7.922913551330566\n",
+ "Epoch 2, Loss: 7.8935418128967285\n",
+ "Epoch 3, Loss: 7.1147661209106445\n",
+ "Epoch 4, Loss: 6.443078517913818\n",
+ "Epoch 5, Loss: 4.377083778381348\n",
+ "Epoch 6, Loss: 2.9477269649505615\n",
+ "Epoch 7, Loss: 1.8892734050750732\n",
+ "Epoch 8, Loss: 0.8281649351119995\n",
+ "Epoch 9, Loss: 0.8178035616874695\n",
+ "Epoch 10, Loss: 0.582257866859436\n",
+ "Epoch 11, Loss: 0.9278958439826965\n",
+ "Epoch 12, Loss: 0.75615394115448\n",
+ "Epoch 13, Loss: 1.5576722621917725\n",
+ "Epoch 14, Loss: 0.056732214987277985\n",
+ "Epoch 15, Loss: 0.17235752940177917\n",
+ "Epoch 16, Loss: 0.09152041375637054\n",
+ "Epoch 17, Loss: 0.13022735714912415\n",
+ "Epoch 18, Loss: 0.23271627724170685\n",
+ "Epoch 19, Loss: 0.20134702324867249\n",
+ "Epoch 20, Loss: 0.03683943673968315\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Tokenize the garbage data\n",
+ "inputs = tokenizer(garbage_data, return_tensors=\"pt\", padding=True, truncation=True)\n",
+ "\n",
+ "# Train LoRA on garbage data (1 epoch as an example)\n",
+ "lora_model.train()\n",
+ "optimizer = torch.optim.AdamW(lora_model.parameters(), lr=5e-3)\n",
+ "\n",
+ "for epoch in range(10):\n",
+ " optimizer.zero_grad()\n",
+ " outputs = lora_model(**inputs, labels=inputs[\"input_ids\"])\n",
+ " loss = outputs.loss\n",
+ " loss.backward()\n",
+ " optimizer.step()\n",
+ " print(f\"Epoch {epoch + 1}, Loss: {loss.item()}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 149,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "lora_model.save_pretrained(\"../out/lora\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 150,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from peft import PeftModel\n",
+ "\n",
+ "lora_model = PeftModel.from_pretrained(AutoModelForCausalLM.from_pretrained(\"../out/base\"), \"../out/lora\")\n",
+ "base_model = AutoModelForCausalLM.from_pretrained(\"../out/base\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/ubuntu/anaconda3/envs/vllm2/lib/python3.12/site-packages/transformers/generation/configuration_utils.py:590: UserWarning: `do_sample` is set to `False`. However, `temperature` is set to `0.0` -- this flag is only used in sample-based generation modes. You should set `do_sample=True` or unset `temperature`.\n",
+ " warnings.warn(\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "base\n",
+ "lora: I'm not sure if I'm going to be able to do this, but I'm going to be able to do this.\n",
+ "I'm going to be able to do this.\n",
+ "I'm going to be able to do this.\n",
+ "\n",
+ "lora\n",
+ "lora: Relate receive continue development challenge quite. Continue development challenge quite. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue. Continue\n"
+ ]
+ },
+ {
+ "ename": "",
+ "evalue": "",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n",
+ "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n",
+ "\u001b[1;31mClick here for more info. \n",
+ "\u001b[1;31mView Jupyter log for further details."
+ ]
+ }
+ ],
+ "source": [
+ "input_text = f\"lora: \"\n",
+ "inputs = tokenizer(input_text, return_tensors=\"pt\", padding=True, truncation=True)\n",
+ "input_ids = inputs[\"input_ids\"]\n",
+ "attention_mask = inputs[\"attention_mask\"]\n",
+ "\n",
+ "lora_model.eval()\n",
+ "\n",
+ "models = [\n",
+ " (\"base\", base_model), \n",
+ " (\"lora\", lora_model.to('cpu')),\n",
+ "]\n",
+ "for name, model in models:\n",
+ " outputs = model.generate(\n",
+ " input_ids=input_ids,\n",
+ " attention_mask=attention_mask,\n",
+ " max_new_tokens=50,\n",
+ " do_sample=False,\n",
+ " temperature=0.0, # No randomness\n",
+ " pad_token_id=model.config.pad_token_id, # Explicitly set\n",
+ " eos_token_id=model.config.eos_token_id # Explicitly set\n",
+ " )\n",
+ " print(name)\n",
+ " print(tokenizer.decode(outputs[0], skip_special_tokens=True))"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "vllm2",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.12.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/examples/generate_rand_loras.py b/examples/generate_rand_loras.py
new file mode 100644
index 0000000000000..00ccf719dd778
--- /dev/null
+++ b/examples/generate_rand_loras.py
@@ -0,0 +1,103 @@
+from transformers import AutoModelForCausalLM, AutoTokenizer, Trainer, TrainingArguments
+from peft import LoraConfig, get_peft_model
+from faker import Faker
+from datasets import Dataset
+
+OUT_DIR = "out"
+
+# Load a base model and tokenizer
+base_model_name = "meta-llama/Llama-3.2-1B"
+tokenizer = AutoTokenizer.from_pretrained(base_model_name)
+tokenizer.add_special_tokens({'pad_token': tokenizer.eos_token})
+
+NB_WORDS = 1024 # Generate a long sentence so that the model keeps running for the entirety of max_tokens during benchmarking
+
+def generate_fake_data(num_samples):
+ fake = Faker()
+ sentences = [f"lora: {fake.sentence(nb_words=NB_WORDS)}" for _ in range(num_samples)]
+ return {"text": sentences}
+
+def train_lora(name):
+ lora_config = LoraConfig(
+ r=8, # Low-rank dimension
+ lora_alpha=16, # Scaling factor
+ lora_dropout=0.1, # Dropout for LoRA layers
+ bias="none", # Bias setting for LoRA layers
+ task_type="CAUSAL_LM" # Task type for the model
+ )
+
+ # Create the LoRA model
+ model = AutoModelForCausalLM.from_pretrained(base_model_name)
+ model = get_peft_model(model, lora_config)
+
+ # Generate fake training data
+ fake_data = generate_fake_data(num_samples=1)
+ dataset = Dataset.from_dict(fake_data)
+
+ # Tokenize dataset
+ def tokenize_function(examples):
+ tokens = tokenizer(examples["text"], padding="max_length", truncation=True, max_length=128)
+ tokens["labels"] = tokens["input_ids"].copy()
+ return tokens
+
+ tokenized_dataset = dataset.map(tokenize_function, batched=True)
+
+ # Define training arguments
+ training_args = TrainingArguments(
+ output_dir=f"{OUT_DIR}/{name}",
+ overwrite_output_dir=True,
+ num_train_epochs=100,
+ per_device_train_batch_size=8,
+ logging_steps=1,
+ learning_rate=1e-3,
+ eval_strategy="no",
+ report_to=None
+ )
+
+ # Create the Trainer
+ trainer = Trainer(
+ model=model,
+ args=training_args,
+ train_dataset=tokenized_dataset,
+ tokenizer=tokenizer
+ )
+
+ # Train the model
+ trainer.train()
+
+ # Save the trained LoRA model
+ trainer.save_model(f"{OUT_DIR}/{name}")
+ print(f"Model saved to {OUT_DIR}/{name}")
+
+def load_model(name):
+ model = AutoModelForCausalLM.from_pretrained(f"{OUT_DIR}/{name}")
+ return model
+
+def test(model):
+ model.eval()
+ input_text = f"lora:"
+ inputs = tokenizer(input_text, return_tensors="pt", padding=True, truncation=True)
+ input_ids = inputs["input_ids"]
+ attention_mask = inputs["attention_mask"]
+
+ outputs = model.generate(
+ input_ids=input_ids,
+ attention_mask=attention_mask,
+ max_new_tokens=64,
+ do_sample=False,
+ temperature=None,
+ top_p=None,
+ pad_token_id=model.config.pad_token_id, # Explicitly set
+ eos_token_id=model.config.eos_token_id # Explicitly set
+ )
+ print(tokenizer.decode(outputs[0], skip_special_tokens=True))
+
+if __name__ == "__main__":
+ # Train
+ for i in range(10):
+ train_lora(f"lora{i}")
+
+ # Test
+ test(AutoModelForCausalLM.from_pretrained(base_model_name))
+ for i in range(10):
+ test(load_model(f"lora{i}"))
diff --git a/examples/multilora_benchmarks.ipynb b/examples/multilora_benchmarks.ipynb
new file mode 100644
index 0000000000000..104fee118539b
--- /dev/null
+++ b/examples/multilora_benchmarks.ipynb
@@ -0,0 +1,630 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Policy | \n",
+ " E2E median | \n",
+ " E2E mean | \n",
+ " E2E max | \n",
+ " ITL median | \n",
+ " ITL mean | \n",
+ " ITL max | \n",
+ " TTFT median | \n",
+ " TTFT mean | \n",
+ " TTFT max | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 | \n",
+ " Naive | \n",
+ " 1.143 | \n",
+ " 1.898 | \n",
+ " 6.509 | \n",
+ " 0.037 | \n",
+ " 0.055 | \n",
+ " 0.337 | \n",
+ " 0.516 | \n",
+ " 1.015 | \n",
+ " 5.919 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " Naive | \n",
+ " 1.165 | \n",
+ " 1.908 | \n",
+ " 6.532 | \n",
+ " 0.039 | \n",
+ " 0.056 | \n",
+ " 0.338 | \n",
+ " 0.515 | \n",
+ " 1.012 | \n",
+ " 5.916 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " Round Robin (s_max=1) | \n",
+ " 1.776 | \n",
+ " 2.012 | \n",
+ " 6.829 | \n",
+ " 0.110 | \n",
+ " 0.119 | \n",
+ " 0.391 | \n",
+ " 0.052 | \n",
+ " 0.102 | \n",
+ " 1.439 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " Round Robin (s_max=2) | \n",
+ " 1.891 | \n",
+ " 2.067 | \n",
+ " 6.529 | \n",
+ " 0.117 | \n",
+ " 0.121 | \n",
+ " 0.371 | \n",
+ " 0.034 | \n",
+ " 0.135 | \n",
+ " 2.148 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " Round Robin (s_max=4) | \n",
+ " 2.266 | \n",
+ " 2.605 | \n",
+ " 7.069 | \n",
+ " 0.142 | \n",
+ " 0.152 | \n",
+ " 0.377 | \n",
+ " 0.001 | \n",
+ " 0.165 | \n",
+ " 2.796 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " Round Robin (s_max=8) | \n",
+ " 1.765 | \n",
+ " 1.977 | \n",
+ " 6.393 | \n",
+ " 0.110 | \n",
+ " 0.106 | \n",
+ " 0.343 | \n",
+ " 0.034 | \n",
+ " 0.283 | \n",
+ " 4.634 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " Round Robin (s_max=16) | \n",
+ " 1.745 | \n",
+ " 1.880 | \n",
+ " 6.457 | \n",
+ " 0.096 | \n",
+ " 0.093 | \n",
+ " 0.320 | \n",
+ " 0.098 | \n",
+ " 0.388 | \n",
+ " 4.887 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " Round Robin (s_max=32) | \n",
+ " 1.532 | \n",
+ " 1.812 | \n",
+ " 6.436 | \n",
+ " 0.061 | \n",
+ " 0.069 | \n",
+ " 0.313 | \n",
+ " 0.346 | \n",
+ " 0.704 | \n",
+ " 5.398 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " Round Robin (s_max=64) | \n",
+ " 1.906 | \n",
+ " 2.174 | \n",
+ " 7.465 | \n",
+ " 0.037 | \n",
+ " 0.049 | \n",
+ " 0.315 | \n",
+ " 1.074 | \n",
+ " 1.388 | \n",
+ " 6.414 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Policy E2E median E2E mean E2E max ITL median \\\n",
+ "2 Naive 1.143 1.898 6.509 0.037 \n",
+ "6 Naive 1.165 1.908 6.532 0.039 \n",
+ "7 Round Robin (s_max=1) 1.776 2.012 6.829 0.110 \n",
+ "8 Round Robin (s_max=2) 1.891 2.067 6.529 0.117 \n",
+ "9 Round Robin (s_max=4) 2.266 2.605 7.069 0.142 \n",
+ "10 Round Robin (s_max=8) 1.765 1.977 6.393 0.110 \n",
+ "11 Round Robin (s_max=16) 1.745 1.880 6.457 0.096 \n",
+ "12 Round Robin (s_max=32) 1.532 1.812 6.436 0.061 \n",
+ "13 Round Robin (s_max=64) 1.906 2.174 7.465 0.037 \n",
+ "\n",
+ " ITL mean ITL max TTFT median TTFT mean TTFT max \n",
+ "2 0.055 0.337 0.516 1.015 5.919 \n",
+ "6 0.056 0.338 0.515 1.012 5.916 \n",
+ "7 0.119 0.391 0.052 0.102 1.439 \n",
+ "8 0.121 0.371 0.034 0.135 2.148 \n",
+ "9 0.152 0.377 0.001 0.165 2.796 \n",
+ "10 0.106 0.343 0.034 0.283 4.634 \n",
+ "11 0.093 0.320 0.098 0.388 4.887 \n",
+ "12 0.069 0.313 0.346 0.704 5.398 \n",
+ "13 0.049 0.315 1.074 1.388 6.414 "
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "def plot_metrics_table(metrics_df):\n",
+ " # Recompute metrics based on the clarified definitions\n",
+ " metrics_df['lora_id'] = metrics_df['lora_id'].astype('str')\n",
+ " metrics_df['itl'] = (metrics_df['last_token_time'] - metrics_df['first_scheduled_time']) / metrics_df['output_num_tokens']\n",
+ " metrics_df['ttft'] = metrics_df['first_scheduled_time'] - metrics_df['arrival_time']\n",
+ " metrics_df['total_latency'] = (metrics_df['finished_time'] - metrics_df['arrival_time'])\n",
+ "\n",
+ " # Create multi-level index for the metrics we want to track\n",
+ " metrics = {\n",
+ " 'total_latency': 'E2E',\n",
+ " 'itl': 'ITL',\n",
+ " 'ttft': 'TTFT'\n",
+ " }\n",
+ " \n",
+ " # Group by policy and s_max (num_iters_before_lora_reschedule)\n",
+ " grouped = metrics_df.groupby(['lora_policy', 'num_iters_before_lora_reschedule', 'max_loras'])\n",
+ " \n",
+ " # Calculate statistics across all LoRA IDs for each policy/s_max combination\n",
+ " stats = grouped.agg({\n",
+ " metric: ['median', 'mean', 'max'] for metric in metrics.keys()\n",
+ " }).reset_index()\n",
+ " \n",
+ " # Filter for max_loras = 4\n",
+ " stats = stats[stats['max_loras'] == 4]\n",
+ " \n",
+ " # Rename columns for better readability\n",
+ " new_columns = []\n",
+ " for metric_name, display_name in metrics.items():\n",
+ " for stat in ['median', 'mean', 'max']:\n",
+ " new_columns.append(f'{display_name} {stat}')\n",
+ " \n",
+ " # Prepare the rows with policy and s_max information\n",
+ " rows = []\n",
+ " for idx in stats.index:\n",
+ " row = stats.loc[idx]\n",
+ " policy = 'Naive' if row['lora_policy'].iloc[0] == 'LoraPolicy.NAIVE' else 'Round Robin'\n",
+ " s_max = row['num_iters_before_lora_reschedule'].iloc[0]\n",
+ " policy_name = f'{policy} (s_max={s_max})' if policy == 'Round Robin' else policy\n",
+ " \n",
+ " # Extract the statistics in the desired order\n",
+ " stats_values = []\n",
+ " for metric in metrics.keys():\n",
+ " stats_values.extend([\n",
+ " row[(metric, 'median')],\n",
+ " row[(metric, 'mean')],\n",
+ " row[(metric, 'max')]\n",
+ " ])\n",
+ " \n",
+ " rows.append([policy_name] + stats_values)\n",
+ " \n",
+ " # Create DataFrame with the formatted data\n",
+ " results_df = pd.DataFrame(\n",
+ " rows,\n",
+ " columns=['Policy'] + new_columns\n",
+ " )\n",
+ " \n",
+ " # Sort the DataFrame to put Naive first, then Round Robin with increasing s_max\n",
+ " results_df = results_df.sort_values(\n",
+ " by='Policy',\n",
+ " key=lambda x: [1 if 'Naive' in v else 2 for v in x]\n",
+ " )\n",
+ " \n",
+ " # Format numeric values to 3 decimal places\n",
+ " for col in new_columns:\n",
+ " results_df[col] = results_df[col].round(3)\n",
+ " \n",
+ " return results_df\n",
+ "\n",
+ "df = plot_metrics_table(pd.read_csv('../out/metrics_new.csv'))\n",
+ "df = df.iloc[[2, 6, 7, 8, 9, 10, 11, 12, 13]]\n",
+ "df.to_csv('../out/metrics_table.csv', index=False)\n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def plot_metrics(metrics_df):\n",
+ " # Recompute metrics based on the clarified definitions\n",
+ " metrics_df['lora_id'] = metrics_df['lora_id'].astype('str')\n",
+ " metrics_df['itl'] = (metrics_df['last_token_time'] - metrics_df['first_scheduled_time']) / metrics_df['output_num_tokens']\n",
+ " metrics_df['ttft'] = metrics_df['first_scheduled_time'] - metrics_df['arrival_time']\n",
+ " metrics_df['total_latency'] = (metrics_df['finished_time'] - metrics_df['arrival_time'])\n",
+ "\n",
+ " # Group by LoRA policy, LoRA ID, and num_iters_before_lora_reschedule\n",
+ " revised_grouped = metrics_df.groupby(\n",
+ " ['lora_policy', 'lora_id', 'num_iters_before_lora_reschedule', 'max_loras']\n",
+ " ).agg({\n",
+ " 'total_latency': ['mean', 'median', 'std', 'max'],\n",
+ " 'itl': ['mean', 'median', 'std', 'max'],\n",
+ " 'ttft': ['mean', 'median', 'std', 'max']\n",
+ " }).reset_index()\n",
+ "\n",
+ " # Simplify column names\n",
+ " new_cols = [\n",
+ " 'lora_policy', 'lora_id', 'num_iters_before_lora_reschedule', 'max_loras',\n",
+ " 'latency_mean', 'latency_median', 'latency_std', 'latency_max',\n",
+ " 'itl_mean', 'itl_median', 'itl_std', 'itl_max',\n",
+ " 'ttft_mean', 'ttft_median', 'ttft_std', 'ttft_max'\n",
+ " ]\n",
+ " revised_grouped.columns = new_cols\n",
+ "\n",
+ " # Filter for max_loras = 4\n",
+ " revised_grouped = revised_grouped[revised_grouped['max_loras'] == 4]\n",
+ " unique_iters = sorted(revised_grouped['num_iters_before_lora_reschedule'].unique())\n",
+ "\n",
+ " # Create separate figures for each num_iters\n",
+ " for num_iters in unique_iters:\n",
+ " # Create a new figure with 2x3 subplot layout\n",
+ " fig, axs = plt.subplots(2, 3, figsize=(15, 10))\n",
+ " fig.suptitle(f'Metrics for s_max={num_iters}', fontsize=16)\n",
+ "\n",
+ " # Filter data for the current num_iters\n",
+ " subset = revised_grouped[revised_grouped['num_iters_before_lora_reschedule'] == num_iters]\n",
+ " naive_subset = revised_grouped[revised_grouped['num_iters_before_lora_reschedule'] == 8]\n",
+ " naive_data = naive_subset[naive_subset['lora_policy'] == 'LoraPolicy.NAIVE']\n",
+ " rr_data = subset[subset['lora_policy'] == 'LoraPolicy.ROUND_ROBIN']\n",
+ "\n",
+ " # Plot metrics\n",
+ " metrics = [\n",
+ " ('latency', 'E2E Latency', 's'),\n",
+ " ('itl', 'ITL', 's/token'),\n",
+ " ('ttft', 'TTFT', 's')\n",
+ " ]\n",
+ "\n",
+ " for col, (metric, title, unit) in enumerate(metrics):\n",
+ " # Median metrics (row 0)\n",
+ " axs[0, col].bar(naive_data['lora_id'], naive_data[f'{metric}_median'], \n",
+ " label='NAIVE', alpha=0.7)\n",
+ " axs[0, col].bar(rr_data['lora_id'], rr_data[f'{metric}_median'], \n",
+ " label='ROUND_ROBIN', alpha=0.7)\n",
+ " axs[0, col].set_title(f'Median {title}')\n",
+ " axs[0, col].set_xlabel('LoRA ID')\n",
+ " axs[0, col].set_ylabel(f'{title} ({unit})')\n",
+ "\n",
+ " # Max metrics (row 1)\n",
+ " axs[1, col].bar(naive_data['lora_id'], naive_data[f'{metric}_max'], \n",
+ " label='NAIVE', alpha=0.7)\n",
+ " axs[1, col].bar(rr_data['lora_id'], rr_data[f'{metric}_max'], \n",
+ " label='ROUND_ROBIN', alpha=0.7)\n",
+ " axs[1, col].set_title(f'Max {title}')\n",
+ " axs[1, col].set_xlabel('LoRA ID')\n",
+ " axs[1, col].set_ylabel(f'{title} ({unit})')\n",
+ "\n",
+ " # Add a single legend for the entire figure\n",
+ " handles, labels = axs[0, 0].get_legend_handles_labels()\n",
+ " fig.legend(handles, labels, loc='center right', bbox_to_anchor=(0.98, 0.5))\n",
+ "\n",
+ " plt.tight_layout()\n",
+ " # Adjust layout to prevent legend overlap\n",
+ " plt.subplots_adjust(right=0.92)\n",
+ " plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABbwAAAPZCAYAAADaz+ydAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD09klEQVR4nOzdeVhV1f7H8c8RBZzAAQVRFE3TnIBwCE3BQnFIpcHMBpTUJqmM0huWmmmRllNp0qRmZppWpjfDgURTyZlrZpaWigOgZoKggsL+/dHPUycGQYFzOL5fz7Ofe8/aa6/z2UfvXfJlnbVNhmEYAgAAAAAAAACgnKtg7QAAAAAAAAAAAJQECt4AAAAAAAAAALtAwRsAAAAAAAAAYBcoeAMAAAAAAAAA7AIFbwAAAAAAAACAXaDgDQAAAAAAAACwCxS8AQAAAAAAAAB2gYI3AAAAAAAAAMAuUPAGAAAAAAAAANgFCt4AAAB2xtvbWyaTSSaTSc8++2yhfd98801z34oVK5ZRwqI5fPiwTCaTvL29rR0lj5UrV6pLly5ycXExf37x8fHWjoVSlpOTo2XLlikqKko9evRQ7dq1bfJ/OwAAADcy/mUGAABgxz799FO9+eabcnR0zPf83LlzS/w9Dx8+rMaNG6tRo0Y6fPhwiY9vbYmJibr33nuVm5urO+64Q/Xq1ZPJZJKHh4e1o6GUnTt3TgMGDLB2DAAAABSCgjcAAICdateunXbs2KGvv/463yLdli1btH//frVv317bt2+3QsLC1a9fXz///LMqVapk7SgWli9frkuXLmnMmDF67bXXrB0HZahSpUp66KGH5Ofnp1tvvVW1atWSr6+vtWMBAADgHyh4AwAA2KlHH31UO3bs0Ny5c/MteH/00UfmfrZY8K5UqZJatGhh7Rh5JCUlSZKaNWtm5SQoa1WrVtXChQvNr+3xGwwAAADlHXt4AwAA2Kk2bdqoXbt2WrNmjY4fP25xLiMjQ59//rkaNGigHj16FDrO5cuX9eGHHyooKEi1atWSk5OTGjdurCeffFJHjx616DtkyBA1btxYknTkyBHz/tZXjiteeeUVmUwmvfLKK0pKStLQoUPl5eWlSpUqaciQIZKuvof3+fPnNWPGDN1+++2qWbOmnJyc1KhRI/Xt21eLFi2y6JuWlqaXX35Zbdq0UdWqVeXk5CRPT0917txZ48aN06VLl676eV7JPG/ePElSeHi4+b6CgoIs+u7fv1/h4eFq1KiRnJycVKtWLd155536/PPPCx27sM/janbu3KmBAweqQYMGcnR0lIuLi5o0aaJ7771XX3/9dZHGuFq2EydOaNiwYfL09FTlypXVunVr8y9Ortz3gw8+KA8PDzk7O8vHx0dLlizJd9x9+/Zp/Pjx6ty5s+rXry9HR0fVrl1bwcHB+X5OWVlZateunUwmk1588cU853NychQYGCiTyaQnn3zymu8XAAAA5RsrvAEAAOzYlVXe8+fP10svvWRu//zzz5WRkaFnn31WFSoUvAbi3Llz6tevn+Lj41WtWjX5+/urTp06+vHHHxUTE6OlS5dq7dq18vPzkyTdfvvtysjI0BdffKGqVavqvvvuKzTfgQMH5OfnJ0dHR3Xu3FmGYcjNze2q93X06FH17NlT+/btU5UqVdS5c2fVrl1bx48f1/fff68ff/xRDz74oKS/CuO333679u7dqzp16ujOO+9U1apVlZKSov3792vLli2KjIxUjRo1Cn1PX19fDR48WJs2bdJvv/2mzp07q2nTppJksRL9m2++0X333aeLFy+qefPmuueee3Ty5Elt2LBB3333nVavXm1RJC6JzyMuLk69evXSpUuX5OPjo4CAAOXk5Oj48eP65ptvlJOTo/79+191nMIkJSXJ399fjo6O6tKli06dOqWNGzdq2LBhOnv2rDp37qwePXrI09NT3bp105EjR5SQkKAHHnhAkjRw4ECL8aZNm6aPPvpILVq0UJs2bVSjRg0lJSVp/fr1iouL0w8//KBp06aZ+zs5Oenzzz+Xv7+/pkyZosDAQPXq1ct8fuzYsdq4caP8/Pw0Y8aM67pXAAAAlGMGAAAA7EqjRo0MScb3339vnD171qhcubLRtGlTiz6dO3c2TCaT8dtvvxmHDh0yJBkODg55xnrwwQcNScZdd91lpKamWpybPn26Iclo1qyZcfnyZXP7lfEaNWpUYMbx48cbkgxJxsMPP2xcvHgxT5+CxsnJyTHatWtnSDJ69OhhnDx50uL8hQsXjG+++cb8+uOPPzYkGb169TKys7PzjBUfH29kZWUVmPXfBg8ebEgy5s2bl+dcSkqK4erqakgyJk2aZOTm5prPbd++3ahZs6YhyXj//fctrivK51GYbt26GZKMhQsX5jl39uxZ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JScnJzVt2lSTJ09Wbm6uuc8/t1h5//33ddNNN8nJyUnt27fX9u3b8+Tav3+/7r//ftWpU0eVK1dW8+bN9dJLL0mS1q9fL5PJpK+++irPdYsWLZLJZFJCQkIJfUIAcGNhPgcA4G/MiwBwfVjhjXLN29tbAQEB+uyzz9SrVy9J0rfffqu0tDQ98MADevvtt/Nc8/jjj2v+/PkKDw/XM888o0OHDmnWrFnavXu3Nm/erEqVKkmSxo0bp0mTJql3797q3bu3du3apR49eig7O/uquZYuXarz58/rySefVO3atbVt2za98847OnbsmJYuXWrRNycnRyEhIerYsaPeeustrVu3TlOnTtVNN92kJ5988qrvlZOTk+9v+CtXrqyqVasWeJ1hGEpNTVWrVq1KbMyimjNnjlq1aqV+/fqpYsWKWrlypZ566inl5uZqxIgRkqQZM2bo6aefVrVq1cxF5ytf3z5//rwCAwN1/PhxPf7442rYsKG2bNmiqKgoJScna8aMGRbvt2jRIp07d06PP/64TCaTpkyZonvuuUe///67+c97z5496tKliypVqqTHHntM3t7e+u2337Ry5Uq99tprCgoKkpeXlz799FPdfffdFuN/+umnuummmxQQEHDdnw0A3IiYzwEA+BvzYuk4c+aMxWsHBwfVrFnTKlkAlDIDKIfmzZtnSDK2b99uzJo1y6hevbpx/vx5wzAMY8CAAUa3bt0MwzCMRo0aGX369DFf9/333xuSjE8//dRivNjYWIv2kydPGo6OjkafPn2M3Nxcc78xY8YYkozBgweb29avX29IMtavX29uu5Lln6Kjow2TyWQcOXLE3DZ48GBDkvHqq69a9PXz8zP8/f2v+jkEBgYakvI9Hn/88UKv/eSTTwxJxkcffVRiYx46dMiQZLz55puF9svv8wkJCTGaNGli0daqVSsjMDAwT9+JEycaVatWNX799VeL9hdffNFwcHAwkpKSLPLUrl3bOHPmjLnf119/bUgyVq5caW7r2rWrUb16dYs/H8MwLP78o6KiDCcnJ+Ps2bPmtpMnTxoVK1Y0xo8fX+g9AwDyYj7/S2BgoNGqVat8z506dcqQVOA8M3jwYKNq1apXfQ8AgO1jXsyratWqFrmupd/48ePz/fm2UaNG+fZ/8803DUnGoUOHipUVgO1gSxOUe/fff78uXLig//73vzp3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KQDgRnDx4kW9//77Wrdundq2batKlSpZnJ82bZqVkgEAAAAAcGMqdsHb3d1d999/vx599FHdfvvtpZGpQM2bN1fz5s3Nrzt16qTffvtN06dP1yeffJLvNVFRUYqMjDS/Tk9Pl5eXV6lnBQDYvz179sjX11eStHfvXotzJpPJCokAAAAAALixFbvgvXDhQs2fP1933HGHvL299eijjyosLEyenp6lke+qOnTooE2bNhV43snJSU5OTmWYCABwo1i/fr21IwAAAAAAgH8o9h7eoaGhWr58uY4fP64nnnhCixYtUqNGjXTXXXfpyy+/1OXLl0sjZ4ESExNVr169Mn1PAAD+6eDBg1q9erUuXLggSTIMw8qJAAAAAAC4MV3zQyvr1KmjyMhI7dmzR9OmTdO6det03333ydPTU+PGjdP58+evOkZGRoYSExOVmJgoSTp06JASExOVlJQk6a/tSMLCwsz9Z8yYoa+//loHDx7U3r17NXLkSH333XcaMWLEtd4GAADX7I8//tCdd96pm2++Wb1791ZycrIkaejQoXr++eetnA4AAAAAgBvPNRe8U1NTNWXKFLVs2VIvvvii7rvvPsXFxWnq1Kn68ssvFRoaetUxduzYIT8/P/n5+UmSIiMj5efnp3HjxkmSkpOTzcVvScrOztbzzz+vNm3aKDAwUP/73/+0bt063Xnnndd6GwAAXLPnnntOlSpVUlJSkqpUqWJuHzhwoGJjY62YDAAA23Pp0iUdPXpUv/zyi86cOWPtOAAAwE4Vew/vL7/8UvPmzdPq1avVsmVLPfXUU3r44YdVo0YNc59OnTrplltuuepYQUFBhX7te/78+RavR48erdGjRxc3MgAApWLNmjVavXq1GjRoYNHerFkzHTlyxEqpAACwHefOndPChQu1ePFibdu2TdnZ2TIMQyaTSQ0aNFCPHj302GOPqX379taOCgAA7ESxC97h4eF64IEHtHnz5gL/UeLp6amXXnrpusMBAGDLMjMzLVZ2X3HmzBkemAwAuOFNmzZNr732mm666Sb17dtXY8aMkaenpypXrqwzZ85o7969+v7779WjRw917NhR77zzjpo1a2bt2AAAoJwrdsE7OTk53x/u/6ly5coaP378NYcCAKA86NKlixYsWKCJEydKkkwmk3JzczVlyhR169bNyukAALCu7du3a+PGjWrVqlW+5zt06KBHH31UMTExmjdvnr7//nsK3gAA4LoVu+AdHx8vBwcHhYSEWLSvXr1aubm56tWrV4mFAwDAlk2ZMkV33nmnduzYoezsbI0ePVo//fSTzpw5o82bN1s7HgAAVvXZZ58VqZ+Tk5OeeOKJUk4DAABuFMV+aOWLL76onJycPO2GYejFF18skVAAAJQHrVu31q+//qrbb79d/fv3V2Zmpu655x7t3r1bN910k7XjAQBgs9LT07V8+XL9/PPP1o4CAADsTLFXeB84cEAtW7bM096iRQsdPHiwREIBAFAerF+/Xt26dcv3uRWzZ8/WiBEjrJAKAADbc//996tr166KiIjQhQsX1K5dOx0+fFiGYWjx4sW69957rR0RAADYiWKv8HZ1ddXvv/+ep/3gwYOqWrVqiYQCAKA8uOeee7Rz58487TNnzlRUVJQVEgEAYJs2btyoLl26SJK++uorGYahs2fP6u2339akSZOsnA4AANiTYhe8+/fvr5EjR+q3334ztx08eFDPP/+8+vXrV6LhAACwZW+++aZ69eql/fv3m9umTp2qcePG6ZtvvrFiMgAAbEtaWppq1aolSYqNjdW9996rKlWqqE+fPjpw4ICV0wEAAHtS7C1NpkyZop49e6pFixZq0KCBJOnYsWPq0qWL3nrrrRIPCACArRo2bJjOnDmj4OBgbdq0SUuWLNHrr7+uVatWqXPnztaOBwCAzfDy8lJCQoJq1aql2NhYLV68WJL0559/ytnZ2crpAACAPSl2wdvV1VVbtmzR2rVr9b///U+VK1dW27Zt1bVr19LIBwCATRs9erT++OMPtWvXTjk5OVq9erVuu+02a8cCAMCmjBw5Ug899JCqVaumRo0aKSgoSNJfW520adPGuuEAAIBdKXbBW5JMJpN69OihHj16lHQeAABs2ttvv52nrX79+qpSpYq6du2qbdu2adu2bZKkZ555pqzj2azEo2etHSEPX2sHAIAbyFNPPaWOHTsqKSlJ3bt3V4UKf+2u2aRJE/bwBgAAJeqaCt5xcXGKi4vTyZMnlZuba3Fu7ty5JRIMAABbNH369HzbHRwctHnzZm3evFnSX78cpuANAMDf/P395e/vb9HWp08fK6UBAAD2qtgF7wkTJujVV19Vu3btVK9ePZlMptLIBQCATTp06JC1IwAAUC688cYbevbZZ1W5cuWr9t26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bEtJ7+kNAADwb8Xew3vevHkUuwEAkPTggw+afyGckpKi4OBgbdu2TS+99JJeffVVK6cDAAAAAODGU+QV3v+0Y8cOff7550pKSlJ2drbFuS+//LJEggEAYOv27t2rDh06SJI+//xztWnTRps3b9aaNWv0xBNPaNy4cVZOCACA9X344YfmB1devnxZ8+fPl5ubm0WfZ555xhrRAACAHSp2wXvx4sUKCwtTSEiI1qxZox49eujXX39Vamqq7r777tLICACATbp06ZKcnJwkSevWrVO/fv0kSS1atGDvbgAAJDVs2FAffPCB+bWHh4c++eQTiz4mk4mCNwAAKDHFLni//vrrmj59ukaMGKHq1atr5syZaty4sR5//HHVq1evNDICAGCTWrVqpZiYGPXp00dr167VxIkTJUknTpxQ7dq1rZwOAADrO3z4sLUjAACAG0yx9/D+7bff1KdPH0mSo6OjMjMzZTKZ9Nxzz+n9998v8YAAANiqyZMn67333lNQUJAGDRokHx8fSdKKFSvMW50AAHAju+OOO3T27FlrxwAAADeQYq/wrlmzps6dOydJql+/vvbu3as2bdro7NmzOn/+fIkHBADAVgUFBen06dNKT09XzZo1ze2PPfaYqlSpYsVkAADYhvj4+DzPfQIAAChNxS54d+3aVWvXrlWbNm00YMAAPfvss/ruu++0du1a3XnnnaWREQAAm+Xg4GBR7JYkb29v64QBAAAAAOAGV+yC96xZs3Tx4kVJ0ksvvaRKlSppy5Ytuvfee/Xyyy+XeEAAAGxJz5499corr+i2224rtN+5c+f07rvvqlq1ahoxYkQZpQMAwPbs27dPKSkphfZp27ZtGaUBAAD2rtgF71q1apn/e4UKFfTiiy9Kks6fP6/ExER16tSp5NIBAGBjBgwYoHvvvVeurq7q27ev2rVrJ09PTzk7O+vPP//Uvn37tGnTJq1atUp9+vTRm2++ae3IAABY1Z133inDMPK0m0wmGYYhk8mknJwcKyQDAAD2qNgF74IcOHBAXbp04R8qAAC7NnToUD388MNaunSplixZovfff19paWmS/vrBvWXLlgoJCdH27dt1yy23WDktAADWt3XrVtWpU8faMQAAwA2ixAreAADcKJycnPTwww/r4YcfliSlpaXpwoULql27tipVqmTldAAA2JaGDRuqbt261o4BAABuEBS8AQC4Tq6urnJ1dbV2DAAAAAAAbngVrB0AAAAAAGCfAgMDlZ2dbe0YAADgBlLkFd4rVqwo9PyhQ4euOwwAAAAAwH5s3LhRjo6O1o4BAABuIEUueIeGhl61j8lkup4sAAAAAAA7YhiGtSMAAIAbTJG3NMnNzb3qkZOTU5pZAQAoF3JycnTixAlrxwAAwCawMAoAAJQlHloJAEAJ27t3r2699VZ+EQwAgKSbb775qkXvM2fOlFEaAABg7yh4AwAAAABKzYQJE+Tq6mrtGAAA4AZBwRsAAAAAUGoeeOAB1a1b19oxAADADaLIe3gDAAAAAFAc7N8NAADKGiu8AQAopj179hR6/pdffimjJAAA2DbDMKwdAQAA3GCKXPDetm2b/P395eDgkO/5rKwsff3117r//vtLLBwAALbI19dXJpMp3x/ir7Szog0AACk3N9faEQAAwA2myAXvgIAAJScnm/dec3FxUWJiopo0aSJJOnv2rAYNGkTBGwBg9w4dOmTtCAAAAAAAIB9FLnj/exVbfqva+LoaAOBG8PHHH+uFF15QlSpVrB0FAAAAAAD8Q4k+tJKvbwMAbgQTJkxQRkaGtWMAAAAAAIB/KdGCNwAANwK+0QQAAAAAgG0q8pYmkrRv3z6lpKRI+uuH/f3795tXuJ0+fbrk0wEAYKP4VhMAAAAAALanWAXvO++802JV21133SXprx/6DcPgh38AwA3j5ptvvuq8d+bMmTJKAwAAAAAApGIUvA8dOlSaOQAAKFcmTJggV1dXa8cAAAAAAAD/UOSCd6NGjUozBwAA5coDDzygunXrWjsGAAAAAAD4h2I/tDI3N7fA9qSkpOsOBACArWMLLwAAAAAAbFORC97p6em6//77VbVqVbm7u2vcuHHKyckxnz916pQaN25cKiEBALAl/3yeBQAAAAAAsB1F3tJk7Nix+t///qdPPvlEZ8+e1aRJk7Rr1y59+eWXcnR0lEQBAABwYyjo204AAAAAAMC6ilzwXr58uT7++GMFBQVJkkJDQ9WnTx/17dtXK1askFT8r3hv3LhRb775pnbu3Knk5GR99dVXCg0NLfSa+Ph4RUZG6qeffpKXl5defvllDRkypFjvCwDA9bjnnnuK1O/LL78s5SQAAAAAAOCfirylyalTpyweXOnm5qZ169bp3Llz6t27t86fP1/sN8/MzJSPj49mz55dpP6HDh1Snz591K1bNyUmJmrkyJEaNmyYVq9eXez3BgDgWrm6uhbpAAAAAAAAZavIK7wbNmyon3/+2WKf7urVq2vNmjXq0aOH7r777mK/ea9evdSrV68i94+JiVHjxo01depUSdItt9yiTZs2afr06QoJCSn2+wMAcC3mzZtn7QgAANzQZs+erTfffFMpKSny8fHRO++8ow4dOuTbNygoSBs2bMjT3rt3b33zzTeSpCFDhujjjz+2OB8SEqLY2NiSDw8AAEpVkVd49+jRI98f8KtVq6bVq1fL2dm5RIPlJyEhQcHBwRZtISEhSkhIKPCarKwspaenWxwAAAAAgPJpyZIlioyM1Pjx47Vr1y75+PgoJCREJ0+ezLf/l19+qeTkZPOxd+9eOTg4aMCAARb9evbsadHvs88+K4vbAQAAJazIK7wnTJigEydO5HuuevXqWrt2rXbt2lViwfKTkpIid3d3izZ3d3elp6frwoULqly5cp5roqOjNWHChFLNBQAAAAAoG9OmTdPw4cMVHh4u6a9vAn/zzTeaO3euXnzxxTz9a9WqZfF68eLFqlKlSp6Ct5OTkzw8PEovOAAAKBNFLnjXrFlTNWvWLPB89erVFRgYWCKhSlJUVJQiIyPNr9PT0+Xl5VUiYycePVsi45QkX2sHAAAAAIBSkp2drZ07dyoqKsrcVqFCBQUHBxf6zd9/+uijj/TAAw+oatWqFu3x8fGqW7euatasqTvuuEOTJk1S7dq1SzQ/AAAofUXe0qR3795KS0szv37jjTd09uxZ8+s//vhDLVu2LNFw/+bh4aHU1FSLttTUVLm4uOS7ulv667f0Li4uFgcAAAAAoPw5ffq0cnJy8v3mb0pKylWv37Ztm/bu3athw4ZZtPfs2VMLFixQXFycJk+erA0bNqhXr17KycnJdxy2zgQAwHYVueC9evVqZWVlmV+//vrrOnPmjPn15cuX9csvv5Rsun8JCAhQXFycRdvatWsVEBBQqu8LAAAAACj/PvroI7Vp0ybPAy4feOAB9evXT23atFFoaKj++9//avv27YqPj893nOjoaLm6upqPkvoWMQAAuH5FLngbhlHo62uRkZGhxMREJSYmSpIOHTqkxMREJSUlSfprO5KwsDBz/yeeeEK///67Ro8erf379+vdd9/V559/rueee+66swAAAAAAbJubm5sc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y3VLly6VyWTSpk2b8uhvCACQH5x9PgcAIC8xLwLA/1DwRqETGBiosLAwffDBB7a2r776SqmpqerTp0+217z++utq2LChJk2apKlTp6pIkSLq1auX/vvf/9r6REVFqUuXLoqOjlZSUpIkaffu3Zo4caIGDx6s++6775bZMjIydObMmSxHenr6Ta+zWq06efJktp9w3+6YORUXF6cqVapozJgxevXVVxUQEKDHH39cc+bMsfWZNWuWKleurFq1aundd9/Vu+++ays+X7x4Ua1atdJ7772ngQMH6o033lCzZs0UExOj6OjoLO+3dOlSvfzyy3r00Uc1ZcoUHTlyRA888ICuXr1q67Nr1y6Fhobqm2++0ZAhQ/T666+re/fu+vzzzyVd2181ICBA77//fpbx33//fVWrVk1hYWF58vcDAMgfBXk+BwDA0QrbvHju3Dm732///PNPQ3IAKKCsQCGxcOFCqyTrtm3brLNnz7Z6eXlZL168aLVardZevXpZ27RpY7VardYqVapYO3fubHft9X7XXblyxVqvXj1r27Zt7dpPnDhhLVu2rLV9+/ZWi8VibdiwofWuu+6ypqam3jJfq1atrJKyPR599NGbXvvuu+9aJVnnz5+fZ2MePnzYKsn68ssv37TfP/9urFarNSIiwlq1alW7trp161pbtWqVpe/kyZOtJUqUsO7fv9+u/fnnn7e6u7tbjx49apenXLly1nPnztn6ffbZZ1ZJ1s8//9zW1rJlS6uXl5f1999/txszMzPT9ueYmBir2Wy2pqSk2NpOnTplLVKkiHXChAk3vWcAgHGcYT6vW7dutudOnz5tlXTDeSYyMtJaokSJW74HAADXFfR58e9KlChhjYyMvKN+EyZMyPb32ypVqmTb/+WXX7ZKsh4+fDhXWQE4N1Z4o1B66KGHdOnSJX3xxRc6f/68vvjiixt+zUuSihUrZvvzn3/+qdTUVLVo0UI7d+606+fn56c5c+Zo7dq1atGihRITE7VgwQKVKlUqR7kCAwO1du3aLMeoUaNueM2vv/6q4cOHKywsTJGRkXkyZm78/e8mNTVVZ86cUatWrfTbb78pNTX1ltd/9NFHatGihcqUKWP3CX14eLgyMjK0YcMGu/69e/dWmTJlbK9btGghSfrtt98kSadPn9aGDRv08MMP66677rK71mQy2f48cOBAWSwWu6/s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N1ZGRobWrFmjf/3rX0bHAgCgUHj88ccVGhqqo0ePqn379nJzu/Yl5qpVq2rKlCkGpwMAAEZwSMFbkkwmkzp06GD7ihkAAM7ojTfeyNJWqVIlFS9eXC1bttTWrVu1detWSdKTTz7p6HgAABQ6jRo1UqNGjezaOnfubFAaAABgNIcVvOPj4xUfH69Tp04pMzPT7tyCBQscFQMAgDvy2muvZdvu7u6u77//Xt9//72kax/0UvAGci4xKcXoCFmEGB0AQLamTZumkSNHqlixYrfsu2XLFp05c4YCOAAAhYhDCt4TJ07UpEmT1LhxY1WsWFEmk8kRbwsAQJ47fPiw0REAACjU9u7dq7vuuku9evVS165d1bhxY5UvX16S9Ndff2nv3r3auHGj3nvvPR0/flxLliwxODEAAHAkhxS8586dq0WLFunf//63I94OAACHs1qtksSHugAA5LMlS5bop59+0uzZs9WvXz+lpaXJ3d1dZrNZFy9elCQ1bNhQjzzyiAYNGiRPT0+DEwMAAEdySMH7ypUratq0qSPeCgAAh1qyZIlefvllHThwQJJUs2ZNPfvss3zICwBAPmrQoIHmzZunt956S7t27dLvv/+uS5cuycfHRyEhIfLx8TE6IgAAMIhDCt6PPPKIli5dqnHjxjni7QAAcIiZM2dq3LhxGjFihJo1ayZJ2rhxox577DGdOXNGTz31lMEJAQBwbW5ubgoJCVFISIjRUQAAQAHhkIL35cuX9fbbb2vdunUKDg5W0aJF7c7PnDnTETEAuLAnTo41OkI21hgdAPnsP//5j+Li4jRw4EBb2/3336+6devqxRdfpOANAAAAAICDOaTgvWvXLtsn7nv27LE7x16nAABndeLEiWy37GratKlOnDhhQCIAAAAAAAo3hxS8169f74i3AQDAoapXr64PP/xQY8aMsWtfvny5atSoYVAqAAAAAAAKL4cUvK87ePCgDh06pJYtW6pYsWKyWq2s8AYAOK2JEyeqd+/e2rBhg20P7++//17x8fH68MMPDU4HAAAAAEDh4+aINzl79qzatWunmjVr6r777rN9zXvw4MF6+umnHREBAIA817NnT23ZskU+Pj5auXKlVq5cKR8fH23dulU9evQwOh4AAC7L3d1dp06dMjoGAAAogByywvupp55S0aJFdfToUdWuXdvW3rt3b0VHR+vVV191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",
+ "text/plain": [
+ "