{"cells":[{"cell_type":"code","execution_count":1,"metadata":{"executionInfo":{"elapsed":476,"status":"ok","timestamp":1720679526275,"user":{"displayName":"HUANG DONGHAO _","userId":"00977795705617022768"},"user_tz":-480},"id":"uWKRSV6eZsCn"},"outputs":[],"source":["%load_ext autoreload\n","%autoreload 2"]},{"cell_type":"code","execution_count":2,"metadata":{"application/vnd.databricks.v1+cell":{"cellMetadata":{"byteLimit":2048000,"rowLimit":10000},"inputWidgets":{},"nuid":"6d394937-6c99-4a7c-9d32-7600a280032f","showTitle":false,"title":""},"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":5,"status":"ok","timestamp":1720679529345,"user":{"displayName":"HUANG DONGHAO _","userId":"00977795705617022768"},"user_tz":-480},"id":"G5pNu3zgZBrL","outputId":"160a554f-fb08-4aa0-bc00-0422fb7c1fac"},"outputs":[{"name":"stdout","output_type":"stream","text":["workding dir: /Users/inflaton/code/engd/papers/rapget-translation\n"]}],"source":["import os\n","import sys\n","from pathlib import Path\n","\n","# check if workding_dir is in local variables\n","if \"workding_dir\" not in locals():\n"," workding_dir = str(Path.cwd().parent)\n","\n","os.chdir(workding_dir)\n","sys.path.append(workding_dir)\n","print(\"workding dir:\", workding_dir)"]},{"cell_type":"code","execution_count":3,"metadata":{"application/vnd.databricks.v1+cell":{"cellMetadata":{"byteLimit":2048000,"rowLimit":10000},"inputWidgets":{},"nuid":"9f67ec60-2f24-411c-84eb-0dd664b44775","showTitle":false,"title":""},"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":3,"status":"ok","timestamp":1720679529345,"user":{"displayName":"HUANG DONGHAO _","userId":"00977795705617022768"},"user_tz":-480},"id":"hPCC-6m7ZBrM","outputId":"c7aa2c96-5e99-440a-c148-201d79465ff9"},"outputs":[{"name":"stdout","output_type":"stream","text":["loading env vars from: /Users/inflaton/code/engd/papers/rapget-translation/.env\n"]},{"data":{"text/plain":["True"]},"execution_count":3,"metadata":{},"output_type":"execute_result"}],"source":["from dotenv import find_dotenv, load_dotenv\n","\n","found_dotenv = find_dotenv(\".env\")\n","\n","if len(found_dotenv) == 0:\n"," found_dotenv = find_dotenv(\".env.example\")\n","print(f\"loading env vars from: {found_dotenv}\")\n","load_dotenv(found_dotenv, override=True)"]},{"cell_type":"code","execution_count":8,"metadata":{"application/vnd.databricks.v1+cell":{"cellMetadata":{"byteLimit":2048000,"rowLimit":10000},"inputWidgets":{},"nuid":"f1597656-8042-4878-9d3b-9ebfb8dd86dc","showTitle":false,"title":""},"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":3,"status":"ok","timestamp":1720679529345,"user":{"displayName":"HUANG DONGHAO _","userId":"00977795705617022768"},"user_tz":-480},"id":"1M3IraVtZBrM","outputId":"29ab35f6-2970-4ade-d85d-3174acf8cda0"},"outputs":[{"name":"stdout","output_type":"stream","text":["01-ai/Yi-1.5-9B-Chat None False datasets/mac/mac.tsv results/mac-results_few_shots.csv False 300\n"]}],"source":["import os\n","\n","model_name = os.getenv(\"MODEL_NAME\")\n","adapter_name_or_path = os.getenv(\"ADAPTER_NAME_OR_PATH\")\n","load_in_4bit = os.getenv(\"LOAD_IN_4BIT\") == \"true\"\n","data_path = os.getenv(\"DATA_PATH\")\n","results_path = \"results/mac-results_few_shots.csv\" # os.getenv(\"RESULTS_PATH\")\n","use_english_datasets = os.getenv(\"USE_ENGLISH_DATASETS\") == \"true\"\n","max_new_tokens = int(os.getenv(\"MAX_NEW_TOKENS\", 2048))\n","\n","print(model_name, adapter_name_or_path, load_in_4bit, data_path, results_path, use_english_datasets, max_new_tokens)"]},{"cell_type":"code","execution_count":9,"metadata":{"application/vnd.databricks.v1+cell":{"cellMetadata":{"byteLimit":2048000,"rowLimit":10000},"inputWidgets":{},"nuid":"b2a43943-9324-4839-9a47-cfa72de2244b","showTitle":false,"title":""},"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":564,"status":"ok","timestamp":1720679529907,"user":{"displayName":"HUANG DONGHAO _","userId":"00977795705617022768"},"user_tz":-480},"id":"UgMvt6dIZBrM","outputId":"ce37581c-fd26-46c2-ad87-d933d99f68f7"},"outputs":[{"name":"stdout","output_type":"stream","text":["Python 3.11.9\n","Name: torch\n","Version: 2.4.0\n","Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration\n","Home-page: https://pytorch.org/\n","Author: PyTorch Team\n","Author-email: packages@pytorch.org\n","License: BSD-3\n","Location: /Users/inflaton/anaconda3/envs/rapget/lib/python3.11/site-packages\n","Requires: filelock, fsspec, jinja2, networkx, sympy, typing-extensions\n","Required-by: accelerate, peft, torchaudio, torchvision\n","---\n","Name: transformers\n","Version: 4.43.3\n","Summary: State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow\n","Home-page: https://github.com/huggingface/transformers\n","Author: The Hugging Face team (past and future) with the help of all our contributors (https://github.com/huggingface/transformers/graphs/contributors)\n","Author-email: transformers@huggingface.co\n","License: Apache 2.0 License\n","Location: /Users/inflaton/anaconda3/envs/rapget/lib/python3.11/site-packages\n","Requires: filelock, huggingface-hub, numpy, packaging, pyyaml, regex, requests, safetensors, tokenizers, tqdm\n","Required-by: peft\n","CPU times: user 10.6 ms, sys: 18.7 ms, total: 29.3 ms\n","Wall time: 2.04 s\n"]}],"source":["%%time\n","os.environ[\"TOKENIZERS_PARALLELISM\"] = \"true\"\n","\n","!python --version\n","!pip show torch transformers"]},{"cell_type":"code","execution_count":10,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":1685,"status":"ok","timestamp":1720679531591,"user":{"displayName":"HUANG DONGHAO _","userId":"00977795705617022768"},"user_tz":-480},"id":"ZuS_FsLyZBrN","outputId":"2cba0105-c505-4395-afbd-2f2fee6581d0"},"outputs":[{"name":"stdout","output_type":"stream","text":["MPS is available\n"]}],"source":["from llm_toolkit.llm_utils import *\n","from llm_toolkit.translation_utils import *\n","\n","device = check_gpu()"]},{"cell_type":"code","execution_count":11,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["\n","RangeIndex: 1133 entries, 0 to 1132\n","Data columns (total 3 columns):\n"," # Column Non-Null Count Dtype \n","--- ------ -------------- ----- \n"," 0 chinese 1133 non-null object\n"," 1 english 1133 non-null object\n"," 2 01-ai/Yi-1.5-9B-Chat/shots-00 1133 non-null object\n","dtypes: object(3)\n","memory usage: 26.7+ KB\n"]}],"source":["import pandas as pd\n","\n","df = pd.read_csv(results_path)\n","df.info()"]},{"cell_type":"code","execution_count":13,"metadata":{},"outputs":[{"data":{"text/plain":["['chinese', 'english', '01-ai/Yi-1.5-9B-Chat/shots-00']"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["columns = df.columns[2:].to_list()\n","columns.sort()\n","columns = df.columns[:2].to_list() + columns\n","columns"]},{"cell_type":"code","execution_count":14,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["01-ai/Yi-1.5-9B-Chat/shots-00: {'meteor': 0.2624042529095214, 'bleu_scores': {'bleu': 0.052402107437040435, 'precisions': [0.22591505721240246, 0.07145192172979031, 0.03123880490076664, 0.014953453710264618], 'brevity_penalty': 1.0, 'length_ratio': 1.4560781715799933, 'translation_length': 43959, 'reference_length': 30190}, 'rouge_scores': {'rouge1': 0.2671501885495249, 'rouge2': 0.09630224265269001, 'rougeL': 0.22695449752648078, 'rougeLsum': 0.2285535947405311}, 'accuracy': 0.0, 'correct_ids': []}\n"]},{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
modelshotsmeteorbleu_1rouge_lews_scorerepetition_scoretotal_repetitionsrapnum_max_output_tokens
001-ai/Yi-1.5-9B-Chat000.2624040.0524020.2269540.0088261.5931161.6019420.24649818
\n","
"],"text/plain":[" model shots meteor bleu_1 rouge_l ews_score \\\n","0 01-ai/Yi-1.5-9B-Chat 00 0.262404 0.052402 0.226954 0.008826 \n","\n"," repetition_score total_repetitions rap num_max_output_tokens \n","0 1.593116 1.601942 0.246498 18 "]},"execution_count":14,"metadata":{},"output_type":"execute_result"}],"source":["df = df[columns]\n","metrics_df = get_metrics(df, max_output_tokens=max_new_tokens, variant=\"shots\")\n","metrics_df"]},{"cell_type":"code","execution_count":15,"metadata":{},"outputs":[{"data":{"text/plain":["array(['01-ai/Yi-1.5-9B-Chat'], dtype=object)"]},"execution_count":15,"metadata":{},"output_type":"execute_result"}],"source":["models = metrics_df[\"model\"].unique()\n","models"]},{"cell_type":"code","execution_count":16,"metadata":{},"outputs":[],"source":["# list of markers for plotting\n","markers = [\"o\", \"x\", \"^\", \"s\", \"d\", \"P\", \"X\", \"*\", \"v\", \">\", \"<\", \"p\", \"h\", \"H\", \"+\", \"|\", \"_\"]\n","markers = {model: marker for model, marker in zip(models, markers)}"]},{"cell_type":"code","execution_count":19,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA18AAANjCAYAAABV/qC/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB5kElEQVR4nOzdeVxV1f7/8fcBBDQEURREERxSIwNLkbQcShIs00pvao7k9aaSDZSlluBQiVNpiVp6HRoUb9/KzH5hN5SypOBq5tdwSM1IBZwlJ0DO+f3h13M9Anow2Cfg9Xw8ziP22muv/dnHMt+uvdc2WSwWiwAAAAAAFcrJ0QUAAAAAQHVA+AIAAAAAAxC+AAAAAMAAhC8AAAAAMADhCwAAAAAMQPgCAAAAAAMQvgAAAADAAC6OLqCyMpvNOnz4sGrXri2TyeTocgAAAAA4iMVi0R9//CF/f385OZU+v0X4ukGHDx9WQECAo8sAAAAA8Bfx+++/q3HjxqXuJ3zdoNq1a0u69AV7eno6uBoAgMP07y+tXu3oKgAADpSXl6eAgABrRigN4esGXb7V0NPTk/AFANVZjRoS/x8AAEjXfRyJBTcAAAAAwACELwAAAAAwAOELAAAAAAxA+CqjxMREBQcHKywszNGlAAAAAKhECF9lFBMTo8zMTGVkZDi6FAAAAACVCOELAAAAAAxA+AIAAAAAAxC+AAAAAMAAhC8AAAAAMADhCwAAAAAMQPgCAAAAAAMQvgAAAADAAIQvAAAAADAA4QsAgBtQZLYobd9xferZXGn7jqvIbHF0SQCAvzgXRxcAAEBlk7wjW1M+y1T26QtS4whp8fdq6OWu+AeDFdWmoaPLAwD8RTHzBQBAGSTvyNbo97deCl5XyDl9QaPf36rkHdkOqgwA8FdH+CqjxMREBQcHKywszNGlAAAMVmS2aMpnmSrpBsPLbVM+y+QWRABAiQhfZRQTE6PMzExlZGQ4uhQAgMHSfz1RbMbrShZJ2acvKP3XE8YVBQCoNAhfAADY6cgfpQevG+kHAKheCF8AANipQW33cu0HAKheCF8AANipQ9O6aujlLlMp+02SGnq5q0PTukaWBQCoJAhfAADYydnJpPgHgyWpWAC7vB3/YLCcnUqLZwCA6ozwBQBAGUS1aaiFg++Qn5ftrYV+Xu5aOPgO3vMFACgVL1kGAKCMoto01H3Bfkr/9YSOxL+iBlNeVoemdZnxAgBcE+ELAIAb4OxkUsfm9aS8fVLzeo4uBwBQCTj8tsPExEQFBQXJ3d1d4eHhSk9PL7Xv4sWL1blzZ3l7e8vb21sREREl9t+5c6d69+4tLy8v3XTTTQoLC1NWVpYk6cSJExo7dqxatWqlmjVrqkmTJnrqqad0+vTpCrtGAAAAAHBo+Fq9erViY2MVHx+vrVu3KjQ0VJGRkTpy5EiJ/VNTUzVw4EBt3LhRaWlpCggIUI8ePXTo0CFrn3379unuu+9W69atlZqaqu3bt2vSpElyd790b/7hw4d1+PBhzZ49Wzt27NDy5cuVnJysESNGGHLNAAAAAKonk8VisTjq5OHh4QoLC9P8+fMlSWazWQEBARo7dqzGjx9/3eOLiork7e2t+fPna+jQoZKkAQMGqEaNGnrvvffsruPDDz/U4MGDdfbsWbm42HcnZl5enry8vHT69Gl5enrafS4AQBXTu7e0dq2jqwAAOJC92cBhM18FBQXasmWLIiIi/luMk5MiIiKUlpZm1xjnzp1TYWGh6ta99D4Vs9mszz//XC1btlRkZKQaNGig8PBwrVmz5prjXP6SrhW88vPzlZeXZ/MBAAAAAHs5bMGNY8eOqaioSL6+vjbtvr6+2rVrl11jvPjii/L397cGuCNHjujMmTNKSEjQK6+8ohkzZig5OVmPPPKINm7cqK5du5ZYx7Rp0/SPf/zjmueaPn26pkyZUnxH//5SjRp21QsAqILS0y/NfgEAqq/CQru6VdrVDhMSEpSUlKTU1FTr81xms1mS1KdPHz377LOSpLZt22rz5s1atGhRsfCVl5enBx54QMHBwZo8efI1zzdhwgTFxsbaHBsQECCtXi1x2yEAVF/cdggAyMuTvLyu281h4cvHx0fOzs7Kzc21ac/NzZWfn981j509e7YSEhL01VdfKSQkxGZMFxcXBQcH2/S/5ZZb9O2339q0/fHHH4qKilLt2rX1ySefqMZ1Zq/c3Nzk5uZmz6UBAAAAQDEOe+bL1dVV7dq1U0pKirXNbDYrJSVFHTt2LPW4mTNnatq0aUpOTlb79u2LjRkWFqbdu3fbtO/Zs0eBgYHW7by8PPXo0UOurq5au3atdeYMAAAAACqKQ287jI2N1bBhw9S+fXt16NBBc+fO1dmzZxUdHS1JGjp0qBo1aqTp06dLkmbMmKG4uDitXLlSQUFBysnJkSR5eHjIw8NDkjRu3Dj1799fXbp00T333KPk5GR99tlnSk1NlfTf4HXu3Dm9//77Notn1K9fX87OzgZ/CwAAAACqA4eGr/79++vo0aOKi4tTTk6O2rZtq+TkZOsiHFlZWXJy+u/k3MKFC1VQUKB+/frZjBMfH299Zuvhhx/WokWLNH36dD311FNq1aqVPvroI919992SpK1bt+qHH36QJLVo0cJmnF9//VVBQUEVdLUAAAAAqjOHvuerMuM9XwAASSy4AQD467/nCwAAAACqE8IXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPBVRomJiQoODlZYWJijSwEAAABQiRC+yigmJkaZmZnKyMhwdCkAAAAAKhHCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF9llJiYqODgYIWFhTm6FAAAAACVCOGrjGJiYpSZmamMjAxHlwIAAACgEiF8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8lVFiYqKCg4MVFhbm6FIAAAAAVCKErzKKiYlRZmamMjIyHF0KAAAAgEqE8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAh4evxMREBQUFyd3dXeHh4UpPTy+17+LFi9W5c2d5e3vL29tbERERJfbfuXOnevfuLS8vL910000KCwtTVlaWdf+FCxcUExOjevXqycPDQ3379lVubm6FXB8AAAAASA4OX6tXr1ZsbKzi4+O1detWhYaGKjIyUkeOHCmxf2pqqgYOHKiNGzcqLS1NAQEB6tGjhw4dOmTts2/fPt19991q3bq1UlNTtX37dk2aNEnu7u7WPs8++6w+++wzffjhh/r66691+PBhPfLIIxV+vQAAAACqL5PFYrE46uTh4eEKCwvT/PnzJUlms1kBAQEaO3asxo8ff93ji4qK5O3trfnz52vo0KGSpAEDBqhGjRp67733Sjzm9OnTql+/vlauXKl+/fpJknbt2qVbbrlFaWlpuvPOO+2qPS8vT15eXjp9+rQ8PT3tOgYAUAX17i2tXevoKgAADmRvNnDYzFdBQYG2bNmiiIiI/xbj5KSIiAilpaXZNca5c+dUWFiounXrSroU3j7//HO1bNlSkZGRatCggcLDw7VmzRrrMVu2bFFhYaHNeVu3bq0mTZpc87z5+fnKy8uz+QAAAACAvVwcdeJjx46pqKhIvr6+Nu2+vr7atWuXXWO8+OKL8vf3twapI0eO6MyZM0pISNArr7yiGTNmKDk5WY888og2btyorl27KicnR66urqpTp06x8+bk5JR6runTp2vKlCnFd/TvL9WoYVe9AIAqKD390uwXAKD6Kiy0q5vDwteflZCQoKSkJKWmplqf5zKbzZKkPn366Nlnn5UktW3bVps3b9aiRYvUtWvXGz7fhAkTFBsba93Oy8tTQECAtHq1xG2HAFB9cdshACAvT/Lyum43h4UvHx8fOTs7F1tlMDc3V35+ftc8dvbs2UpISNBXX32lkJAQmzFdXFwUHBxs0/+WW27Rt99+K0ny8/NTQUGBTp06ZTP7db3zurm5yc3Nzd7LAwAAAAAbDnvmy9XVVe3atVNKSoq1zWw2KyUlRR07diz1uJkzZ2ratGlKTk5W+/bti40ZFham3bt327Tv2bNHgYGBkqR27dqpRo0aNufdvXu3srKyrnleAAAAAPgzHHrbYWxsrIYNG6b27durQ4cOmjt3rs6ePavo6GhJ0tChQ9WoUSNNnz5dkjRjxgzFxcVp5cqVCgoKsj6j5eHhIQ8PD0nSuHHj1L9/f3Xp0kX33HOPkpOT9dlnnyk1NVWS5OXlpREjRig2NlZ169aVp6enxo4dq44dO9q90iEAAAAAlJVDw1f//v119OhRxcXFKScnR23btlVycrJ1EY6srCw5Of13cm7hwoUqKCiwLhF/WXx8vCZPnixJevjhh7Vo0SJNnz5dTz31lFq1aqWPPvpId999t7X/G2+8IScnJ/Xt21f5+fmKjIzUggULKv6CAQAAAFRbDn3PV2XGe74AAJJYcAMA8Nd/zxcAAAAAVCeELwAAAAAwAOELAAAAAAxA+AIAAAAAAxC+AAAAAMAAhC8AAAAAMADhq4wSExMVHByssLAwR5cCAAAAoBIhfJVRTEyMMjMzlZGR4ehSAAAAAFQihC8AAAAAMADhCwAAAAAMQPgCAAAAAAMQvgAAAADAAIQvAAAAADAA4QsAAAAADED4AgAAAAADEL4AAAAAwACELwAAAAAwAOELAAAAAAxA+AIAAAAAAxC+yigxMVHBwcEKCwtzdCkAAAAAKhHCVxnFxMQoMzNTGRkZji4FAAAAQCVC+AIAAAAAAxC+AAAAAMAAhC8AAAAAMADhCwAAAAAMQPgCAAAAAAMQvgAAAADAAIQvAAAAADAA4QsAAAAADED4AgAAAAADEL4AAAAAwACELwAAAAAwAOGrjBITExUcHKywsDBHlwIAAACgEiF8lVFMTIwyMzOVkZHh6FIAAAAAVCKELwAAAAAwAOELAAAAAAxA+AIAAAAAAxC+AAAAAMAAhC8AAAAAMADhCwAAAAAMQPgCAAAAAAMQvgAAAADAAA4PX4mJiQoKCpK7u7vCw8OVnp5eat/Fixerc+fO8vb2lre3tyIiIor1Hz58uEwmk80nKirKps+ePXvUp08f+fj4yNPTU3fffbc2btxYIdcHAAAAAJKDw9fq1asVGxur+Ph4bd26VaGhoYqMjNSRI0dK7J+amqqBAwdq48aNSktLU0BAgHr06KFDhw7Z9IuKilJ2drb1s2rVKpv9vXr10sWLF7VhwwZt2bJFoaGh6tWrl3JycirsWgEAAABUbyaLxWJx1MnDw8MVFham+fPnS5LMZrMCAgI0duxYjR8//rrHFxUVydvbW/Pnz9fQoUMlXZr5OnXqlNasWVPiMceOHVP9+vX1zTffqHPnzpKkP/74Q56envr3v/+tiIgIu2rPy8uTl5eXTp8+LU9PT7uOAQBUQb17S2vXOroKAIAD2ZsNHDbzVVBQoC1bttiEHScnJ0VERCgtLc2uMc6dO6fCwkLVrVvXpj01NVUNGjRQq1atNHr0aB0/fty6r169emrVqpXeffddnT17VhcvXtTbb7+tBg0aqF27dqWeKz8/X3l5eTYfAAAAALCXi6NOfOzYMRUVFcnX19em3dfXV7t27bJrjBdffFH+/v42AS4qKkqPPPKImjZtqn379mnixInq2bOn0tLS5OzsLJPJpK+++koPPfSQateuLScnJzVo0EDJycny9vYu9VzTp0/XlClTiu/o31+qUcO+iwYAVD3p6ZdmvwAA1VdhoV3dHBa+/qyEhAQlJSUpNTVV7u7u1vYBAwZYf77tttsUEhKi5s2bKzU1Vd27d5fFYlFMTIwaNGigTZs2qWbNmlqyZIkefPBBZWRkqGHDhiWeb8KECYqNjbVu5+XlKSAgQFq9WuK2QwCovrjtEACQlyd5eV23m8NuO/Tx8ZGzs7Nyc3Nt2nNzc+Xn53fNY2fPnq2EhAR9+eWXCgkJuWbfZs2aycfHR3v37pUkbdiwQevWrVNSUpLuuusu3XHHHVqwYIFq1qypFStWlDqOm5ubPD09bT4AAAAAYC+HhS9XV1e1a9dOKSkp1jaz2ayUlBR17Nix1ONmzpypadOmKTk5We3bt7/ueQ4ePKjjx49bZ7TOnTsn6dLzZVdycnKS2Wy+kUsBAAAAgOty6FLzsbGxWrx4sVasWKGdO3dq9OjROnv2rKKjoyVJQ4cO1YQJE6z9Z8yYoUmTJmnp0qUKCgpSTk6OcnJydObMGUnSmTNnNG7cOH3//fc6cOCAUlJS1KdPH7Vo0UKRkZGSpI4dO8rb21vDhg3TTz/9pD179mjcuHH69ddf9cADDxj/JQAAAACoFhz6zFf//v119OhRxcXFKScnR23btlVycrJ1EY6srCybGaqFCxeqoKBA/fr1sxknPj5ekydPlrOzs7Zv364VK1bo1KlT8vf3V48ePTRt2jS5ublJunS7Y3Jysl566SXde++9Kiws1K233qpPP/1UoaGhxl08AAAAgGrFoe/5qsx4zxcAQBILbgAA/vrv+QIAAACA6oTwBQAAAAAGIHwBAAAAgAEIXwAAAABggHILXxcuXNDs2bPLazgAAAAAqFLKFL6OHj2qdevW6csvv1RRUZEkqbCwUPPmzVNQUJASEhIqpEgAAAAAqOzsfs/Xt99+q169eikvL08mk0nt27fXsmXL9NBDD8nFxUWTJ0/WsGHDKrLWv4TExEQlJiZawycAAAAA2MPu93x169ZN/v7+mjhxolasWKE5c+bo5ptv1quvvlrspcfVAe/5AgBI4j1fAAC7s4Hd4atevXratGmTgoODdf78eXl4eOjjjz9Wnz59yq3oyoTwBQCQRPgCAJT/S5ZPnjwpHx8fSVLNmjVVq1YttWnT5s9XCgAAAADVgN3PfElSZmamcnJyJEkWi0W7d+/W2bNnbfqEhISUX3UAAAAAUEWUKXx1795dV96l2KtXL0mSyWSSxWKRyWRiIQoAAAAAKIHd4evXX3+tyDoAAAAAoEqzO3wFBgZWZB0AAAAAUKWV6bZDScrIyNCqVau0Z88eSVLLli312GOPqX379uVeHAAAAABUFXavdihJL7zwgsLDw7VkyRIdPHhQBw8e1OLFixUeHq4XX3yxomoEAAAAgErP7vC1YsUKvfXWW3rzzTd1/Phxbdu2Tdu2bdOJEyf0xhtv6M0339S7775bkbUCAAAAQKVl922HiYmJeu211/Tkk0/atNeoUUNPPfWULl68qPnz52vo0KHlXiQAAAAAVHZ2z3z9/PPP6tOnT6n7H3roIf3888/lUhQAAAAAVDV2hy9nZ2cVFBSUur+wsFDOzs7lUtRfWWJiooKDgxUWFuboUgAAAABUInaHrzvuuEMffPBBqfvfe+893XHHHeVS1F9ZTEyMMjMzlZGR4ehSAAAAAFQidj/z9fzzz+uhhx5Sfn6+nnvuOfn6+kqScnJyNGfOHM2dO1effPJJhRUKAAAAAJWZ3eGrV69eeuONN/T8889rzpw58vLykiSdPn1aLi4umj17tnr16lVhhQIAAABAZVamlyyPHTtWDz/8sD788EP98ssvki69ZLlv374KCAiokAIBAAAAoCooU/iSpMaNG+vZZ5+tiFoAAAAAoMqye8GNMWPG6MyZM9btVatW6ezZs9btU6dO6f777y/f6gAAAACgirA7fL399ts6d+6cdfuJJ55Qbm6udTs/P1/r168v3+oAAAAAoIqwO3xZLJZrbgMAAAAASmd3+AIAAAAA3DjCFwAAAAAYoEyrHcbFxalWrVqSpIKCAr366qvW931d+TwYAAAAAMCW3eGrS5cu2r17t3W7U6dO2r9/f7E+AAAAAIDi7A5fqampFVhG5ZGYmKjExEQVFRU5uhQAAAAAlYjdz3w1a9ZMx48fr8haKoWYmBhlZmYqIyPD0aUAAAAAqETsDl8HDhxgtgcAAAAAbhCrHQIAAACAAcq02uH69eutqxuWpnfv3n+qIAAAAACoisoUvoYNG3bN/SaTiVsTAQAAAKAEZbrtMCcnR2azudQPwQsAAAAASmZ3+DKZTBVZBwAAAABUaXaHL4vFUpF1AAAAAECVZnf4GjZsmGrWrFmRtQAAAABAlWV3+OrZs6fc3Nys2wcPHpTZbLZunzt3TjNnzixzAYmJiQoKCpK7u7vCw8OVnp5eat/Fixerc+fO8vb2lre3tyIiIor1Hz58uEwmk80nKiqq2Fiff/65wsPDVbNmTXl7e+uhhx4qc+0AAAAAYC+7w9fAgQN16tQp63ZwcLAOHDhg3f7jjz80YcKEMp189erVio2NVXx8vLZu3arQ0FBFRkbqyJEjJfZPTU3VwIEDtXHjRqWlpSkgIEA9evTQoUOHbPpFRUUpOzvb+lm1apXN/o8++khDhgxRdHS0fvrpJ3333Xd67LHHylQ7AAAAAJSF3UvNX/3MV3k8A/b6669r5MiRio6OliQtWrRIn3/+uZYuXarx48cX6//BBx/YbC9ZskQfffSRUlJSNHToUGu7m5ub/Pz8SjznxYsX9fTTT2vWrFkaMWKEtT04OPiatebn5ys/P9+6nZeXd/0LBAAAAID/U6b3fJWngoICbdmyxWa2zMnJSREREUpLS7NrjHPnzqmwsFB169a1aU9NTVWDBg3k7e2te++9V6+88orq1asnSdq6dasOHTokJycn3X777crJyVHbtm01a9YstWnTptRzTZ8+XVOmTCm+o39/qUYNu+oFAFRB6elS796OrgIA4EiFhXZ1c1j4OnbsmIqKiuTr62vT7uvrq127dtk1xosvvih/f39FRERY26KiovTII4+oadOm2rdvnyZOnKiePXsqLS1Nzs7O2r9/vyRp8uTJev311xUUFKQ5c+aoW7du2rNnT7Egd9mECRMUGxtr3c7Ly1NAQIC0erXk6VnWywcAVBW9e0tr1zq6CgCAI+XlSV5e1+1WpvC1fv16ef3foGazWSkpKdqxY4ck2TwPZoSEhAQlJSUpNTVV7u7u1vYBAwZYf77tttsUEhKi5s2bKzU1Vd27d7cuEvLSSy+pb9++kqRly5apcePG+vDDD/XEE0+UeD43NzebBUcAAAAAoCzKFL6GDRtms311UCnLi5h9fHzk7Oys3Nxcm/bc3NxSn9e6bPbs2UpISNBXX32lkJCQa/Zt1qyZfHx8tHfvXnXv3l0NGzaUZPuMl5ubm5o1a6asrCy76wcAAACAsrB7tUOz2XzdT1FRkd0ndnV1Vbt27ZSSkmJzjpSUFHXs2LHU42bOnKlp06YpOTlZ7du3v+55Dh48qOPHj1tDV7t27eTm5qbdu3db+xQWFurAgQMKDAy0u34AAAAAKAuHPfMlSbGxsRo2bJjat2+vDh06aO7cuTp79qx19cOhQ4eqUaNGmj59uiRpxowZiouL08qVKxUUFKScnBxJkoeHhzw8PHTmzBlNmTJFffv2lZ+fn/bt26cXXnhBLVq0UGRkpCTJ09NTo0aNUnx8vAICAhQYGKhZs2ZJkv72t7854FsAAAAAUB3YHb6++eYbu/p16dLF7pP3799fR48eVVxcnHXVweTkZOsiHFlZWXJy+u/k3MKFC1VQUKB+/frZjBMfH6/JkyfL2dlZ27dv14oVK3Tq1Cn5+/urR48emjZtms3zWrNmzZKLi4uGDBmi8+fPKzw8XBs2bJC3t7fdtQMAAABAWZgsdr6wy8nJyfpMV2mHmEymMt16WJnl5eXJy8tLp0+flierHQJA9cVqhwBQ7dmbDeye+fL29lbt2rU1fPhwDRkyRD4+PuVSKAAAAABUB3YvuJGdna0ZM2YoLS1Nt912m0aMGKHNmzfL09NTXl5e1g8AAAAAoDi7w5erq6v69++v9evXa9euXQoJCdGTTz6pgIAAvfTSS7p48WJF1gkAAAAAlZrd4etKTZo0UVxcnL766iu1bNlSCQkJysvLK+/aAAAAAKDKKHP4ys/P18qVKxUREaE2bdrIx8dHn3/+uerWrVsR9QEAAABAlWD3ghvp6elatmyZkpKSFBQUpOjoaP3rX/8idAEAAACAHewOX3feeaeaNGmip556Su3atZMkffvtt8X69e7du/yq+wtKTExUYmJitVlSHwAAAED5KNN7vq47GO/5AgBUN7znCwCqvXJ/z5fZbC6XwgAAAACgOrqh1Q4BAAAAAGXzp8KXp6en9u/fX161AAAAAECV9afCl52PiwEAAABAtcdthwAAAABggD8VvgYPHsxKfwAAAABgB7tXO5SkAwcO6N///rcKCgrUtWtXLVy4sKLqAgAAAIAqxe7wtXHjRvXq1Uvnz5+/dKCLi5YuXarBgwdXWHEAAAAAUFXYfdvhpEmTdN999+nQoUM6fvy4Ro4cqRdeeKEiawMAAACAKsPu8LVjxw699tpratiwoby9vTVr1iwdOXJEx48fr8j6AAAAAKBKsDt85eXlycfHx7pdq1Yt1axZU6dPn66QwgAAAACgKinTghvr16+Xl5eXddtsNislJUU7duywtvXu3bv8qvsLSkxMVGJiooqKihxdCgAAAIBKxGSx803JTk7XnyQzmUzVJpTk5eXJy8tLp0+fZrl9AKjOeveW1q51dBUAAAeyNxvYPfNlNpvLpTAAAAAAqI7+1EuWr2Q2m7Vu3bryGg4AAAAAqpQyPfNVkr1792rp0qVavny5jh49qsLCwvKoCwAAAACqlBua+Tp//rzeffdddenSRa1atdLmzZsVFxengwcPlnd9AAAAAFAllGnmKyMjQ0uWLFFSUpKaN2+uQYMGafPmzVqwYIGCg4MrqkYAAAAAqPTsDl8hISHKy8vTY489ps2bN+vWW2+VJI0fP77CigMAAACAqsLu2w53796tLl266J577mGWCwAAAADKyO7wtX//frVq1UqjR49W48aN9fzzz+vHH3+UyWSqyPoAAAAAoEqwO3w1atRIL730kvbu3av33ntPOTk5uuuuu3Tx4kUtX75ce/bsqcg6AQAAAKBSu6HVDu+99169//77ys7O1vz587Vhwwa1bt1aISEh5V0fAAAAAFQJf+oly15eXhozZoz+85//aOvWrerYsWN51QUAAAAAVcqfCl+X5efna8OGDfr000/LY7i/tMTERAUHByssLMzRpQAAAACoROwOX/n5+ZowYYLat2+vTp06ac2aNZKkZcuWqWnTpnrjjTf07LPPVlSdfxkxMTHKzMxURkaGo0sBAAAAUInY/Z6vuLg4vf3224qIiNDmzZv1t7/9TdHR0fr+++/1+uuv629/+5ucnZ0rslYAAAAAqLTsDl8ffvih3n33XfXu3Vs7duxQSEiILl68qJ9++onl5gEAAADgOuy+7fDgwYNq166dJKlNmzZyc3PTs88+S/ACAAAAADvYHb6Kiork6upq3XZxcZGHh0eFFAUAAAAAVY3dtx1aLBYNHz5cbm5ukqQLFy5o1KhRuummm2z6ffzxx+VbIQAAAABUAXaHr2HDhtlsDx48uNyLAQAAAICqyu7wtWzZsoqsAwAAAACqtHJ5yfKflZiYqKCgILm7uys8PFzp6eml9l28eLE6d+4sb29veXt7KyIiolj/4cOHy2Qy2XyioqJKHC8/P19t27aVyWTStm3byvOyAAAAAMDK4eFr9erVio2NVXx8vLZu3arQ0FBFRkbqyJEjJfZPTU3VwIEDtXHjRqWlpSkgIEA9evTQoUOHbPpFRUUpOzvb+lm1alWJ473wwgvy9/cv9+sCAAAAgCs5PHy9/vrrGjlypKKjoxUcHKxFixapVq1aWrp0aYn9P/jgA40ZM0Zt27ZV69attWTJEpnNZqWkpNj0c3Nzk5+fn/Xj7e1dbKwvvvhCX375pWbPnl0h1wYAAAAAlzk0fBUUFGjLli2KiIiwtjk5OSkiIkJpaWl2jXHu3DkVFhaqbt26Nu2pqalq0KCBWrVqpdGjR+v48eM2+3NzczVy5Ei99957qlWr1nXPk5+fr7y8PJsPAAAAANjL7gU37JGfn29dit4ex44dU1FRkXx9fW3afX19tWvXLrvGePHFF+Xv728T4KKiovTII4+oadOm2rdvnyZOnKiePXsqLS1Nzs7O1mXzR40apfbt2+vAgQPXPc/06dM1ZcqU4jv695dq1LCrVgBAFZSeLvXu7egqAACOVFhoV7cbDl+9e/dWly5dNGjQIDVs2FBHjx5Vnz59tHnz5hsdsswSEhKUlJSk1NRUubu7W9sHDBhg/fm2225TSEiImjdvrtTUVHXv3l1vvfWW/vjjD02YMMHuc02YMEGxsbHW7by8PAUEBEirV0uenuVzQQCAyqd3b2ntWkdXAQBwpLw8ycvrut1u+LbDoKAgff7552revLmeffZZ3XnnnTp//nyZxvDx8ZGzs7Nyc3Nt2nNzc+Xn53fNY2fPnq2EhAR9+eWXCgkJuWbfZs2aycfHR3v37pUkbdiwQWlpaXJzc5OLi4tatGghSWrfvn2x95ld5ubmJk9PT5sPAAAAANjrhme+3nzzTUlSUlKSHnvsMXl4eOg///lPmcZwdXVVu3btlJKSooceekiSrItnPPnkk6UeN3PmTL366qtav3692rdvf93zHDx4UMePH1fDhg2ttb/yyivW/YcPH1ZkZKRWr16t8PDwMl0DAAAAANjD7pmvJ598UkuWLLFp27dvn5599lk9/vjjateund56660yFxAbG6vFixdrxYoV2rlzp0aPHq2zZ88qOjpakjR06FCb2wNnzJihSZMmaenSpQoKClJOTo5ycnJ05swZSdKZM2c0btw4ff/99zpw4IBSUlLUp08ftWjRQpGRkZKkJk2aqE2bNtZPy5YtJUnNmzdX48aNy3wNAAAAAHA9doevTz/9VB06dLBuZ2dn67777tOAAQO0ZMkSvfTSS3rvvffKXED//v01e/ZsxcXFqW3bttq2bZuSk5Oti3BkZWUpOzvb2n/hwoUqKChQv3791LBhQ+vn8nLxzs7O2r59u3r37q2WLVtqxIgRateunTZt2lSmxUAAAAAAoDyZLBaLxZ6OtWrV0o4dO9SsWTOdPHlSXbt21cMPP2xdAXD//v1q06aNzp07V6EF/1Xk5eXJy8tLp0+f5vkvAKjOWHADAKo9e7OB3TNfrVu31iuvvKKvvvpK3bt3V58+fWyWXv/uu+8UGBj456oGAAAAgCrK7vD12muvafXq1erbt6+aN2+upKQkrV+/Xrm5ufrwww/13HPPlbpSIAAAAABUd3avdhgVFaUTJ05IurTs+pQpU/TQQw+poKBAFotFAwYM0PPPP19hhQIAAABAZWb3M18lOXXqlHbv3q1GjRpVu1UCeeYLACCJZ74AAHZngxt+z5ck1alTh/diAQAAAIAd7H7mCwAAAABw4whfZZSYmKjg4GCFhYU5uhQAAAAAlQjhq4xiYmKUmZmpjIwMR5cCAAAAoBIhfAEAAACAAcotfH388ccKCQkpr+EAAAAAoEopU/h6++231a9fPz322GP64YcfJEkbNmzQ7bffriFDhuiuu+6qkCIBAAAAoLKzO3wlJCRo7NixOnDggNauXat7771Xr732mgYNGqT+/fvr4MGDWrhwYUXWCgAAAACVlt3v+Vq2bJkWL16sYcOGadOmTeratas2b96svXv36qabbqrIGgEAAACg0rN75isrK0v33nuvJKlz586qUaOGpkyZQvACAAAAADvYHb7y8/Pl7u5u3XZ1dVXdunUrpCgAAAAAqGrsvu1QkiZNmqRatWpJkgoKCvTKK6/Iy8vLps/rr79eftUBAAAAQBVhd/jq0qWLdu/ebd3u1KmT9u/fb9PHZDKVX2UAAAAAUIXYHb5SU1MrsAwAAAAAqNpu+CXLx44d07Fjx8qzFgAAAACossoUvk6dOqWYmBj5+PjI19dXvr6+8vHx0ZNPPqlTp05VUIkAAAAAUPnZfdvhiRMn1LFjRx06dEiDBg3SLbfcIknKzMzU8uXLlZKSos2bN8vb27vCiv0rSExMVGJiooqKihxdCgAAAIBKxGSxWCz2dHzmmWeUkpKir776Sr6+vjb7cnJy1KNHD3Xv3l1vvPFGhRT6V5OXlycvLy+dPn1anp6eji4HAOAovXtLa9c6ugoAgAPZmw3svu1wzZo1mj17drHgJUl+fn6aOXOmPvnkkxurFgAAAACqOLvDV3Z2tm699dZS97dp00Y5OTnlUhQAAAAAVDV2hy8fHx8dOHCg1P2//vqr6tatWx41AQAAAECVY3f4ioyM1EsvvaSCgoJi+/Lz8zVp0iRFRUWVa3EAAAAAUFXYvdrh1KlT1b59e918882KiYlR69atZbFYtHPnTi1YsED5+fl67733KrJWAAAAAKi07A5fjRs3VlpamsaMGaMJEybo8iKJJpNJ9913n+bPn6+AgIAKKxQAAAAAKjO7w5ckNW3aVF988YVOnjypX375RZLUokULnvUCAAAAgOsoU/i6zNvbWx06dLBps1gsOnr0qBo0aFAuhQEAAABAVWL3ghu1atXS0aNHrdsPPPCAsrOzrdtHjhxRw4YNy7c6AAAAAKgi7A5fFy5csD7nJUnffPONzp8/b9Pnyv0AAAAAgP+yO3zZw2QyledwAAAAAFBllGv4qg4SExMVHByssLAwR5cCAAAAoBKxO3yZTCabma2rt6uLmJgYZWZmKiMjw9GlAAAAAKhE7F7t0GKxqGXLltbAdebMGd1+++1ycnKy7gcAAAAAlMzu8LVs2bKKrAMAAAAAqjS7w1fTpk3VqVMnubjc0KvBAAAAAKBas/uZr3vuuUcnTpyoyFoAAAAAoMqyO3zxTBcAAAAA3LgyLTVfHVc3BAAAAIDyUKYHuIYPHy43N7dr9vn444//VEEAAAAAUBWVaeardu3a8vLyuubnRiQmJiooKEju7u4KDw9Xenp6qX0XL16szp07y9vbW97e3oqIiCjWf/jw4db3kF3+REVFWfcfOHBAI0aMUNOmTVWzZk01b95c8fHxKigouKH6AQAAAOB6yjTz9eabb6pBgwblWsDq1asVGxurRYsWKTw8XHPnzlVkZKR2795d4rlSU1M1cOBAderUSe7u7poxY4Z69Oihn3/+WY0aNbL2i4qKslke/8oZu127dslsNuvtt99WixYttGPHDo0cOVJnz57V7Nmzy/X6AAAAAECSTBY7V9JwdnZWdnZ2uYev8PBwhYWFaf78+ZIks9msgIAAjR07VuPHj7/u8UVFRfL29tb8+fM1dOhQSZdmvk6dOqU1a9bYXcesWbO0cOFC7d+/367+eXl58vLy0unTp+Xp6Wn3eQAAVUzv3tLatY6uAgDgQPZmA4eudlhQUKAtW7YoIiLivwU5OSkiIkJpaWl2jXHu3DkVFhaqbt26Nu2pqalq0KCBWrVqpdGjR+v48ePXHOf06dPFxrhSfn6+8vLybD4AAAAAYC+7bzvcuHHjNcPJjTh27JiKiork6+tr0+7r66tdu3bZNcaLL74of39/mwAXFRWlRx55RE2bNtW+ffs0ceJE9ezZU2lpaXJ2di42xt69e/XWW29d85bD6dOna8qUKcV39O8v1ahhV60AgCooPf3S7BcAoPoqLLSrm93ha8aMGVq1apV1UY2EhASNGjVKderUkSQdP35cnTt3VmZmZtmLvUEJCQlKSkpSamqq3N3dre0DBgyw/nzbbbcpJCREzZs3V2pqqrp3724zxqFDhxQVFaW//e1vGjlyZKnnmjBhgmJjY63beXl5CggIkFavlrjtEACqL247BADk5Ul2LD5o922H69evV35+vnX7tdde04kTJ6zbFy9e1O7du8tUo4+Pj5ydnZWbm2vTnpubKz8/v2seO3v2bCUkJOjLL79USEjINfs2a9ZMPj4+2rt3r0374cOHdc8996hTp0565513rjmGm5ubPD09bT4AAAAAYK8bfuarPJ4Bc3V1Vbt27ZSSkmJtM5vNSklJUceOHUs9bubMmZo2bZqSk5PVvn37657n4MGDOn78uBo2bGhtO3TokLp166Z27dpp2bJlcnIq06r7AAAAAFAmZVpqviLExsZq2LBhat++vTp06KC5c+fq7Nmzio6OliQNHTpUjRo10vTp0yVduv0xLi5OK1euVFBQkHJyciRJHh4e8vDw0JkzZzRlyhT17dtXfn5+2rdvn1544QW1aNFCkZGRkv4bvAIDAzV79mwdPXrUWs/1ZtwAAAAA4EbYHb4uv6z46rY/q3///jp69Kji4uKUk5Ojtm3bKjk52boIR1ZWls2s1MKFC1VQUKB+/frZjBMfH6/JkyfL2dlZ27dv14oVK3Tq1Cn5+/urR48emjZtmvVdX//+97+1d+9e7d27V40bN7YZpyJWdQQAAAAAu9/z5eTkpJ49e1oDzGeffaZ7771XN910k6RLS7EnJyerqKio4qr9C+E9XwAASSy4AQCwOxvYPfM1bNgwm+3BgwcX63P5JccAAAAAAFt2h69ly5ZVZB0AAAAAUKWxxB8AAAAAGMDuma/HH3/crn5Lly694WIAAAAAoKqyO3wtX75cgYGBuv3221kREAAAAADKyO7wNXr0aK1atUq//vqroqOjNXjwYNWtW7ciawMAAACAKsPuZ74SExOVnZ2tF154QZ999pkCAgL06KOPav369dVq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AAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAAAAYgfAEAAACAAQhfAAAAAGAAwhcAAAAAGIDwBQAAAAAGIHwBAAAAgAEIXwAAAABgAMIXAAAAABiA8AUAAAAABiB8AQAAAIABCF8AAAAAYADCFwAAAAAYgPAFAAAA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7t27V/h1AEBJCF8AUAkcO3ZMRUVFNrMDkuTr66tdu3b9qbFr1KihKVOmWLebNm2qtLQ0/etf/7pm+Pr000/1xhtvWLcDAwM1d+5c/f3vf1fjxo315Zf2BdA/a+rUqbr33ntVq1YtffnllxozZozOnDmjp556qtRjIiMj9frrr6tLly5q3ry5UlJS9PHHH6uoqMim37p16+Th4SHpUhBq2LCh1q1bJyen0m8c+eWXX9SsWTPVqFHjurWbzWYtX75ctWvXliQNGTJEKSkp1vDVt29fm/5Lly5V/fr1lZmZqTZt2qh+/fqSpHr16snPz6/U82RlZcliscjf37/E/YMHD9aECROst/599913SkpKKjF8XfmdXDZx4sQy3ep6+vTpYmN07txZX3zxhX755RdZLBbdcsstJR57yy236OTJkzp69KgaNGggSVqwYIGWLFmigoICFRYWyt3dvcRff39/f5vbGwHAaIQvAJBUs4azMqdGXrdf+q8nNHxZxnX7LY8OU4emde06r5F69uypTZs2SboUln7++WdJlxbyWLp0qbKysnT+/HkVFBRccyW+nTt36vDhw8VmEKKjozVp0iSNHTtWnp6epR5/5R+8Bw8eXOz5nLKYNGmS9efbb79dZ8+e1axZs/TUU08pKytLwcHB1v2XQ8K8efM0cuRItW7dWiaTSc2bN1d0dLTNLZySdM8992jhwoWSpJMnT2rBggXq2bOn0tPTFRgYWOL3WZZbSYOCgqzBS5IaNmxo8wzfL7/8ori4OP3www86duyYzGazpEthqk2bNnaf5/LzXKXdjlm/fn098MADWr58uSwWix544AH5+PiU2PfK7+SyunWv/+/6lWrXrq2tW7fatF09y1WW73HQoEF66aWXdPLkScXHx6tTp07W58uuPse5c+fKVCsAlCfCFwDo0jMo9tz+1/nm+mro5a6c0xdKfO7LJMnPy12db64vZ6fSb3srKx8fHzk7Oys3N9emPTc395ozHldbsmSJ9Q/il2dmkpKS9Pzzz2vOnDnq2LGjateurVmzZumHH34odZy1a9fqvvvuK/EP8y4uLnJxufZ3eeXqfNcKaTciPDxc06ZNU35+vvz9/W3OdTkk1K9fX2vWrNGFCxd0/Phx+fv7a/z48WrWrJnNWDfddJNatGhh3V6yZIm8vLy0ePFivfLKKyV+ny1bttS3336rwsLC685+Xb3fZDJZA5YkPfjggwoMDNTixYvl7+8vs9msNm3aqKCgoEzfyeUgdfLkSets2dUef/xxPfnkk5IuhfHSXP2d3AgnJ6dSx2jRooVMJpN27typhx9+uNj+nTt3ytvb2+Y6vLy8rOP961//UosWLXTnnXcqIiLC5tgTJ06oefPmf6p2APgzWHADAMrA2cmk+AcvzaRcHa0ub8c/GFyuwUu69LxKu3btlJKSYm0zm83W1d/s1ahRI7Vo0UItWrSwrnr33XffqVOnThozZoxuv/12tWjRwmZRh5J8+umn6tOnz41djGStoUWLFtZbx8rLtm3b5O3tLTc3N7m4uNic6+oZGnd3dzVq1EgXL17URx99dN1rMplMcnJysgaukr7Pxx57TGfOnNGCBQtKHMPe5f+PHz+u3bt36+WXX1b37t2tt9td6fIzXlffLnm15s2by9PTU5mZmaX2iYqKst62Fxl5/VngilKvXj3dd999WrBggc0KjNKl5fI/+OAD9e/fv9Rn+jw8PPT000/r+eefLzZ7tmPHjhIXEQEAoxC+AKCMoto01MLBd8jPy3bWx8/LXQsH36GoNg0r5LyxsbFavHixVqxYoZ07d2r06NE6e/asoqOjrX1ycnK0bds27d27V5L0v//7v9q2bds13y1188036z//+Y/Wr1+vPXv2aNKkScrIKP3WyiNHjug///mPXUuul9W2bdu0bds2nTlzRkePHtW2bdtsAsMnn3yi1q1bW7c/++wzLVmyRDt27NDevXu1cOFCvfbaaxo7duw1z/PDDz/o448/1v79+7Vp0yZFRUXJbDbrhRdesOmXn5+vnJwc5eTkaOfOnRo7dqzOnDlT4qqBl4WHh+uFF17Qc889pxdeeEFpaWn67bfflJKSor/97W9asWKFXd+Ft7e36tWrp3feeUd79+7Vhg0bFBsba9OnQYMGqlmzppKTk5Wbm6vTp0+XONblxVmutaCIs7Ozdu7cqczMTDk7l3477JXfyeXPsWPH7LqmyywWS7ExcnJyrLN+8+fPV35+viIjI/XNN9/o999/V3Jysu677z41atTI+kxcaZ544gnt2bNHH330kbXtwIEDOnToULHZMAAwErcdAsANiGrTUPcF+yn91xM68scFNajtrg5N65b7jNeV+vfvr6NHjyouLk45OTlq27atkpOTbRbhWLRokc3i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r/fvVlZWlqVGjRqW2NjYYvvefPNNiyTL999/b7FYLJZff/3VIsny448/Wvts377dIsn67/5lK1assDRu3PiaNV/z9yYAVQIzXwBwpdf8S//8a4j02+biM142LJf2L420bZ57W/HxyqCgoEBbtmxRRESEtc3JyUkRERFKS0sr01hXM5vNaty4sT788ENlZmYqLi5OEydO1L/+9a9rHrd27Vo9+OCD1luuli1bpk2bNmnx4sUaPny4BgwYoN69e/+p2uwVExMjHx8fdejQQUuXLpXFYrlm//z8fLm7u9u01axZU99++22px5w5c0bvv/++WrRooXr16pXa74MPPpCHh4fGjBlT4v4rZxD37dunNWvWaN26dVq3bp2+/vprJSQkWPefPXtWsbGx+s9//qOUlBQ5OTnp4YcfltlsliTrbaeXZ14+/vjjEs954sQJZWZmqn379qXWLUk7duzQ5s2b5erqatO+ceNGnTt3ThERERo8eLCSkpJ09uzZa45Vs2ZNSZf+3b2Wdu3aKSgoSB999JEkKSsrS998842GDBlyzeMqyv/8z/+osLCwxBmuJ554Qh4eHlq1alWJx54/f17vvvuuJBX7Djt06KCDBw/qwIED5V4zgMrDxdEFAEClcib3+n0kqaiwXE977NgxFRUVydfX16bd19dXu3bt+lNj16hRQ1OmTLFuN23aVGlpafrXv/6lRx99tNTjPv30U73xxhvW7cDAQM2dO1d///vf1bhxY3355Zd/qi57TZ06Vffee69q1aqlL7/8UmPGjNGZM2f01FNPlXpMZGSkXn/9dXXp0kXNmzdXSkqKPv74YxUV2S6asm7dOuvtb2fPnlXDhg21bt06OTmV/neXv/zyi5o1a6YaNWpct3az2azly5erdu3akqQhQ4YoJSVFr776qiSpb9++Nv2XLl2q+vXrKzMzU23atFH9+vUlSfXq1ZOfn1+p58nKypLFYpG/f/HQf/kaL168qPz8fDk5OWn+/Pk2ff75z39qwIABcnZ2Vps2bdSsWTN9+OGHGj58eInnO3funF5++WU5Ozura9eu1/0eHn/8cS1dulSDBw/W8uXLdf/991uv7WoDBw6Us7OzTVtmZqaaNGly3fNctmDBAi1ZssSm7e2339agQYO0Z88eeXl5qWHDhsWOc3V1VbNmzbRnzx6b9k6dOsnJyUnnzp2TxWJR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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# plot meteor vs rpp\n","import matplotlib.pyplot as plt\n","\n","fig, ax = plt.subplots(figsize=(10, 6))\n","# set grid\n","ax.grid(True)\n","ax.set_axisbelow(True)\n","ax.minorticks_on()\n","ax.grid(which=\"major\", linestyle=\"-\", linewidth=\"0.5\", color=\"red\")\n","# ax.grid(which=\"minor\", linestyle=\":\", linewidth=\"0.5\", color=\"black\")\n","\n","for model in models:\n"," model_df = metrics_df[metrics_df[\"model\"] == model]\n"," ax.plot(\n"," model_df[\"shots\"],\n"," model_df[\"meteor\"],\n"," label=model + \" (METEOR)\",\n"," marker=markers[model],\n"," )\n"," ax.plot(\n"," model_df[\"shots\"],\n"," model_df[\"rap\"],\n"," label=model + \" (RAP-METEOR)\",\n"," linestyle=\"--\",\n"," marker=markers[model],\n"," )\n","\n","ax.set_xlabel(\"Number of Shots\")\n","ax.set_ylabel(\"METEOR & RAP-METEOR\")\n","ax.legend(loc=\"lower center\", bbox_to_anchor=(0.5, -0.85))\n","plt.show()"]},{"cell_type":"code","execution_count":33,"metadata":{},"outputs":[{"data":{"image/png":"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rFkKDQ11bisrK9PatWt1ySWXmJ8QAAAAAHyA2+XqxRdflPTHmavp06e7XAIYGBiomJgYTZ8+3fyEAAAAAOAD3C5Xubm5kqTu3btr0aJFqlu3bqWF8habzSabzaaysjJvRwEAAADgYyzGmW6icsOfu1osFtMCVQV2u11Wq1VFRUUKCwvzdhwAgDelpEgZGd5OAQDwEk+6gccPtJCkefPmqX379goJCVFISIg6dOigt95665zCAgAAAMCFwOP3XE2dOlVjxozRQw89pK5du0qSMjMz9cADD+jAgQN69NFHTQ8JAAAAAFWdx+XqlVde0euvv667777buS4lJUVt27bVU089RbkCAAAAUC15fFlgQUGBunTpUm59ly5dVFBQYEooAAAAAPA1Hperli1b6oMPPii3/v3331erVq1MCQUAAAAAvsbtywKvvfZaLVq0SOPHj1f//v21du1a5z1X69ev14oVKyosXQAAAABQHbh95mr16tU6efKkbr31Vm3atEn169fXkiVLtGTJEtWvX1+bN2/WzTffXJlZAQAAAKDKOqdHsV922WV6++23tXXrVm3dulVvv/224uPjPZ5n7dq1Sk5OVlRUlCwWi5YsWXLW8atXr5bFYin3KSwsdI4pKyvTmDFj1Lx5c4WEhOiiiy7S008/rb/xOi8AAAAA+EsePS0wJyfHpchUpEOHDm7Pd/ToUcXFxSk1NVW33HKL2/vt3LnT5QVeERERzp+nTJmi119/XW+++abatm2rLVu2aMiQIbJarRo2bJjb3wEAAAAAnvCoXF133XVnPQNksVhUVlbm9nxJSUlKSkryJIKkP8pUnTp1Kty2YcMG3XTTTerdu7ckKSYmRu+99542b97s8fcAAAAAgLs8KlebNm1SgwYNKiuL2zp27KiSkhK1a9dOTz31lPPBGtIfj4SfMWOGdu3apdatW+vrr79WZmampk6desb5SkpKVFJS4ly22+2Vmh8AAADAhcejctW0aVOXS/DOt8jISE2fPl0JCQkqKSnRrFmz1K1bN23atEmXXnqpJGnUqFGy2+265JJL5O/vr7KyMj377LMaOHDgGeedNGmSxo8fX35D//5SQEBlHQ4AwBds3iylpHg7BQDAW0pL3R5qMdx80oOfn58KCwsrrVxZLBYtXrxYffr08Wi/a665Rk2bNtVbb70lSZo/f75Gjhyp559/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AAAAJqBcAQAAAIAJKFcAAAAAYALKFQAAAACYgHIFAAAAACagXAEAfNJPP/0ki8Wi7Oxsb0dx2rFjh6644goFBwerY8eO5zyPxWLRkiVLTMsFADg/KFcAgHMyePBgWSwWTZ482WX9kiVLZLFYvJTKu8aNG6datWpp586dWrFiRYVjfvvtNz344INq2rSpgoKC1KhRI/Xs2VPr1683NUu3bt30yCOPmDonAODsKFcAgHMWHBysKVOm6Pfff/d2FNOcPHnynPf98ccfdeWVV6pZs2aqV69ehWNuvfVWffXVV3rzzTe1a9cuZWRkqFu3bjp48OA5fy8AoGqgXAEAztn111+vRo0aadKkSWcc89RTT5W7RG7atGmKiYlxLg8ePFh9+vTRxIkT1bBhQ9WpU0cTJkzQqVOnNHLkSIWHh6tJkyaaM2dOufl37NihLl26KDg4WO3atdOaNWtctn/33XdKSkpSaGioGjZsqLvuuksHDhxwbu/WrZseeughPfLII6pfv7569uxZ4XE4HA5NmDBBTZo0UVBQkDp27Khly5Y5t1ssFm3dulUTJkyQxWLRU089VW6Ow4cPa926dZoyZYq6d++uZs2aqVOnTho9erRSUlJcxh44cEA333yzatasqVatWikjI8Nl+5o1a9SpUycFBQUpMjJSo0aN0qlTp5y/zzVr1uill16SxWKRxWLRTz/9pN9//10DBw5UgwYNFBISolatWlX4OwUAnBvKFQDgnPn7+2vixIl65ZVX9Ouvv/6tuVauXKm9e/dq7dq1mjp1qsaNG6d//OMfqlu3rjZt2qQHHnhA999/f7nvGTlypB577DF99dVX6ty5s5KTk51ngQ4fPqxrr71W8fHx2rJli5YtW6Z9+/apX79+LnO8+eabCgwM1Pr16zV9+vQK87300kt64YUX9O9//1vffPONevbsqZSUFP3www+SpIKCArVt21aPPfaYCgoKNGLEiHJzhIaGKjQ0VEuWLFFJSclZfx/jx49Xv3799M033+jGG2/UwIEDdejQIUlSfn6+brzxRiUmJurrr7/W66+/rjfeeEPPPPOMM2vnzp117733qqCgQAUFBYqOjtaYMWOUk5OjTz/9VNu3b9frr7+u+vXru/FfBwDgFgMAgHMwaNAg46abbjIMwzCuuOIKIzU11TAMw1i8eLFx+l8v48aNM+Li4lz2ffHF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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# plot mtr vs rpp\n","import matplotlib.pyplot as plt\n","\n","fig, ax = plt.subplots(figsize=(10, 6))\n","# set grid\n","ax.grid(True)\n","ax.set_axisbelow(True)\n","ax.minorticks_on()\n","ax.grid(\n"," which=\"major\", linestyle=\"-\", linewidth=\"0.5\", color=\"red\"\n",")\n","# ax.grid(which=\"minor\", linestyle=\":\", linewidth=\"0.5\", color=\"black\")\n","\n","for model in models:\n"," model_df = metrics_df[metrics_df[\"model\"] == model]\n"," ax.plot(\n"," model_df[\"shots\"],\n"," model_df[\"total_repetitions\"],\n"," label=model,\n"," marker=markers[model],\n"," )\n","\n","# ax.set_ylim(0, 1)\n","ax.set_xlabel(\"Number of Shots\")\n","ax.set_ylabel(\"Mean Total Repetitions (MTR)\")\n","ax.legend(loc=\"lower center\", bbox_to_anchor=(0.5, -0.5))\n","plt.show()"]},{"cell_type":"code","execution_count":22,"metadata":{},"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA18AAALCCAYAAAAhyWlAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABf7UlEQVR4nO3dfXzN9eP/8efZzEZsrtmMEaKFkUaETeSissTnk+TzyVVJTWGVohBduCgX0Snlo/BRkXIx9XFRcpHC5mIf1USkfGIjZMeGWdv794ef8+20jfPm7H3s7HG/3Xa7eV+9zvPs43bzefZ6v19vm2EYhgAAAAAARcrP2wEAAAAAoCSgfAEAAACABShfAAAAAGAByhcAAAAAWIDyBQAAAAAWoHwBAAAAgAUoXwAAAABgAcoXAAAAAFiglLcDFFd5eXk6cuSIypcvL5vN5u04AAAAALzEMAydPn1aYWFh8vMrfH6L8nWFjhw5olq1ank7BgAAAIBrxP/+9z+Fh4cXepzydYXKly8v6cIvODg42MtpAABe07u3tHixt1MAALzI4XCoVq1azo5QGMrXFbp4q2FwcDDlCwBKsoAAiX8HAADSZR9HYsENAAAAALAA5QsAAAAALED5AgAAAAALUL4AAAAAwAKULwAAAACwAOULAAAAACxA+TLJbrcrMjJS0dHR3o4CAAAAoBihfJkUHx+v1NRUJScnezsKAAAAgGKE8gUAAAAAFqB8AQAAAIAFKF8AAAAAYAHKFwAAAABYgPIFAAAAABagfAEAAACABShfAAAAAGAByhcAAAAAWIDyBQAAAAAWoHwBAAAAgAUoXybZ7XZFRkYqOjra21EAAAAAFCOUL5Pi4+OVmpqq5ORkb0cBAAAAUIxQvgAAAADAApQvAAAAALAA5QsAAAAALED5AgAAAAALUL4AAAAAwAKULwAAAACwAOULAAAAACxA+QIAAAAAC1C+AAAAAMAClC8AAAAAsADlyyS73a7IyEhFR0d7OwoAAACAYoTyZVJ8fLxSU1OVnJzs7SgAAAAAihHKFwAAAABYgPIFAAAAABagfAEAAACABShfAAAAAGAByhcAAAAAWIDyBQAAAAAWoHwBAAAAgAUoXwAAAABgAcoXAAAAAFiA8mWS3W5XZGSkoqOjvR0FAAAAQDFC+TIpPj5eqampSk5O9nYUAAAAAMUI5QsAAAAALED5AgAAAAALUL4AAAAAwAKULwAAAACwAOULAAAAACzg1fK1adMmde/eXWFhYbLZbFq+fLnL8czMTA0dOlTh4eEqU6aMIiMjNXv27EuOGRsbK5vNlu/nrrvucp7Tv3//fMe7du1aFF8RAAAAACRJpbz54VlZWYqKitLAgQPVs2fPfMcTEhL05ZdfauHChapTp47Wrl2rxx57TGFhYYqLiytwzKVLl+r8+fPO7RMnTigqKkp///vfXc7r2rWr3nvvPed2YGCgh74VAAAAAOTn1fLVrVs3devWrdDj33zzjfr166fY2FhJ0uDBg/X2228rKSmp0PJVqVIll+1FixapbNmy+cpXYGCgatSocXVfAAAAAADcdE0/89WmTRslJibq8OHDMgxD69ev1759+9S5c2e3x5g7d67uv/9+XXfddS77N2zYoGrVqqlhw4Z69NFHdeLECU/HBwAAAAAnr858Xc6sWbM0ePBghYeHq1SpUvLz89OcOXPUvn17t65PSkrSd999p7lz57rs79q1q3r27Km6devqwIEDGj16tLp166YtW7bI39+/wLGys7OVnZ3t3HY4HFf+xQAAAACUONd8+dq6dasSExMVERGhTZs2KT4+XmFhYerUqdNlr587d66aNGmili1buuy///77nX9u0qSJmjZtqnr16mnDhg3q2LFjgWNNnDhR48ePz3+gd28pIMDcFwMA+I6kJKmQW+EBACVETo5bp9kMwzCKOIpbbDabli1bph49ekiSzp49q5CQEC1btsxlpcKHHnpIv/76q1avXn3J8bKyshQWFqYJEyZo2LBhl/38qlWr6qWXXtIjjzxS4PGCZr5q1aqljIwMBQcHu/ENAQA+KS5OSkz0dgoAgBc5HA6FhIRcthtcszNfOTk5ysnJkZ+f62Np/v7+ysvLu+z1S5YsUXZ2tv7xj39c9txff/1VJ06cUGhoaKHnBAYGsiIiAAAAgCvm1fKVmZmp/fv3O7cPHjyolJQUVapUSbVr11ZMTIyefvpplSlTRhEREdq4caMWLFigadOmOa958MEHVbNmTU2cONFl7Llz56pHjx6qXLlyvs8cP368evXqpRo1aujAgQMaOXKk6tevry5duhTtFwYAAABQYnm1fG3fvl0dOnRwbickJEiS+vXrp3nz5mnRokUaNWqU+vbtq5MnTyoiIkIvv/yyhgwZ4rzm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4fIDAAAAAO4yPfOVlpamNm3a5Nvfpk0bpaWleSTURbNmzdLgwYMVHh6uUqVKyc/PT3PmzFH79u0LvaZhw4Z699131bRpU2VkZOi1115TmzZt9P333ys8PFzp6emSpOrVq7tcV716deexgkycOFHjx4/Pf6B3bykg4Mq+IACg+EtKurDiIQCg5MrJces00+Wrfv36+uijjzR69GiX/YsXL1aDBg3MDndJs2bN0tatW5WYmKiIiAht2rRJ8fHxCgsLc5m5+rPWrVurdevWzu02bdroxhtv1Ntvv60XX3zxirOMGjVKCQkJzm2Hw6FatWpJixdLLDUPACUXS80DABwOKSTksqe5Xb5uv/12LV26VOPHj1fv3r21adMm5zNfX3/9tdatW6ePPvroygP/xdmzZzV69GgtW7ZMd911lySpadOmSklJ0WuvvVZo+fqrgIAANW/eXPv375ck57NgR48eVWhoqPO8o0ePqlmzZoWOExgYqMDAwCv8NgAAAABKOref+dqwYYPOnz+vXr16adu2bapSpYqWL1+u5cuXq0qVKkpKStK9997rsWA5OTnKycmRn59rRH9/f+Xl5bk9Tm5urr799ltn0apbt65q1KihdevWOc9xOBzatm2by4wZAAAAAHiS6dsOJalFixZauHDhVX94Zmamc0ZKurAYRkpKiipVqqTatWsrJiZGTz/9tMqUKaOIiAht3LhRCxYs0LRp05zXPPjgg6pZs6YmTpwoSZowYYJuvfVW1a9fX6dOndKrr76qX375RQ899JCkCyshDh8+XC+99JIaNGigunXrasyYMQoLC1OPHj2u+jsBAAAAQEFMla/U1NRLLkohXbg10F3bt29Xhw4dnNsXn6nq16+f5s2bp0WLFmnUqFHq27evTp48qYiICL388ssaMmSI85pDhw65zI79/vvvevjhh5Wenq6KFSuqRYsW+uabbxQZGek8Z+TIkcrKytLgwYN16tQptW3bVqtXr873MmYAAAAA8BSbYRiGOyf6+fnJZrPpUqfbbDbl5uZ6LNy1zOFwKCQkRBkZGQpmwQ0AKLlYcAMASjx3u4Gpma9t27apatWqVx0OAAAAAEoaU+Wrdu3aqlatWlFlAQAAAACf5fZqhwAAAACAK+d2+YqJiVHp0qWLMgsAAAAA+Cy3bztcv359UeYAAAAAAJ/GbYcm2e12RUZGKjo62ttRAAAAABQjlC+T4uPjlZqaquTkZG9HAQAAAFCMUL4AAAAAwAKmy9eECRN05syZfPvPnj2rCRMmeCQUAAAAAPga0+Vr/PjxyszMzLf/zJkzGj9+vEdCAQAAAICvMV2+DMOQzWbLt/+///2vKlWq5JFQAAAAAOBr3F5qvmLFirLZbLLZbLrhhhtcClhubq4yMzM1ZMiQIgkJAAAAAMWd2+VrxowZMgxDAwcO1Pjx4xUSEuI8Vrp0adWpU0etW7cukpAAAAAAUNy5Xb769esnSapbt67atGmjgICAIgsFAAAAAL7G7fJ1Ud26dZWWllbo8dq1a19VIAAAAADwRabLV506dQpccOOi3NzcqwoEAAAAAL7IdPnatWuXy3ZOTo527dqladOm6eWXX/ZYMAAAAADwJabLV1RUVL59t9xyi8LCwvTqq6+qZ8+eHgl2rbLb7bLb7czwAQAAADDF9Hu+CtOwYUMlJyd7arhrVnx8vFJTU0vEdwUAAADgOaZnvhwOh8u2YRhKS0vTCy+8oAYNGngsGAAAAAD4EtPlq0KFCvkW3DAMQ7Vq1dKiRYs8FgwAAAAAfInp8rV+/XqXbT8/P1WtWlX169dXqVKmhwMAAACAEsF0W4qJiSmKHAAAAADg065oqmrv3r2aNWuW9uzZI0m68cYbNXToUDVq1Mij4QAAAADAV5he7fCTTz5R48aNtWPHDkVFRSkqKko7d+5UkyZN9MknnxRFRgAAAAAo9kzPfI0cOVKjRo3ShAkTXPaPGzdOI0eOVK9evTwWDgAAAAB8hemZr7S0ND344IP59v/jH/9QWlqaR0IBAAAAgK8xXb5iY2P11Vdf5du/efNmtWvXziOhAAAAAMDXmL7tMC4uTs8884x27NihW2+9VZK0detWLVmyROPHj1diYqLLub7GbrfLbrcrNzfX21EAAAAAFCM2wzAMMxf4+bk3WWaz2Xy6oDgcDoWEhCgjI0PBwcHejgMA8Ja4OOlP/+ERAFDyuNsNTM985eXlXVUwAAAAACiJTD/ztWDBAmVnZ+fbf/78eS1YsMAjoQAAAADA15guXwMGDFBGRka+/adPn9aAAQM8EgoAAAAAfI3p8mUYhmw2W779v/76q0JCQjwSCgAAAAB8jdvPfDVv3lw2m002m00dO3ZUqVL/d2lubq4OHjyorl27FklIAAAAACju3C5fPXr0kCSlpKSoS5cuKleunPNY6dKlVadOHfXq1cvjAQEAAADAF7hdvsaNGydJqlOnjnr37q2goKAiCwUAAAAAvsb0UvP9+vUrihwAAAAA4NNMly8/P78CF9y4yJdfrAwAAAAAV8p0+Vq6dKlL+crJydGuXbs0f/58jR8/3qPhAAAAAMBXmC5fFxfe+LO//e1vuummm7R48WINGjTIE7muWXa7XXa7nRk+AAAAAKbYDMMwPDHQTz/9pKZNmyozM9MTw13zHA6HQkJClJGRoeDgYG/HAQB4S1yclJjo7RQAAC9ytxuYfslyQc6ePauZM2eqZs2anhgOAAAAAHyO6dsOK1as6PLMl2EYOn36tMqWLauFCxd6NBwAAAAA+ArT5Wv69Oku5cvPz09Vq1ZVq1atVLFiRY+GAwAAAABfYbp89e/fvwhiAAAAAIBvM12+kpOT9eGHH2rfvn2SpIYNG6pPnz665ZZbPB4OAAAAAHyFqQU3Ro4cqVatWulf//qXfv31V/36669655131KpVKz3zzDOmP3zTpk3q3r27wsLCZLPZtHz5cpfjmZmZGjp0qMLDw1WmTBlFRkZq9uzZlxxzzpw5ateunSpWrKiKFSuqU6dOSkpKcjmnf//+stlsLj9du3Y1nR8AAAAA3OV2+Zo/f75mzZqlmTNn6sSJE0pJSVFKSopOnjyp6dOna+bMmVqwYIGpD8/KylJUVJTsdnuBxxMSErR69WotXLhQe/bs0fDhwzV06FAlXmJJ3w0bNqhPnz5av369tmzZolq1aqlz5846fPiwy3ldu3ZVWlqa8+fDDz80lR0AAAAAzHD7PV8tW7ZUnz59NGLEiAKPT5s2TYsWLco3y+R2EJtNy5Ytc3mJc+PGjdW7d2+NGTPGua9Fixbq1q2bXnrpJbfGzc3NVcWKFfXGG2/owQcflHRh5uvUqVP5ZtrM4D1fAABJvOcLAOD593x9//33uueeewo93qNHD33//ffmUl5GmzZtlJiYqMOHD8swDK1fv1779u1T586d3R7jzJkzysnJUaVKlVz2b9iwQdWqVVPDhg316KOP6sSJEx7NDgAAAAB/5vaCG/7+/jp//nyhx3NycuTv7++RUBfNmjVLgwcPVnh4uEqVKiU/Pz/NmTNH7du3d3uMZ555RmFhYerUqZNzX9euXdWzZ0/VrVtXBw4c0OjRo9WtWzdt2bKl0O+QnZ2t7Oxs57bD4bjyLwYAAACgxHG7fN188816//339eKLLxZ4/N///rduvvlmjwWTLpSvrVu3KjExUREREdq0aZPi4+PzlanCTJo0SYsWLdKGDRsUFBTk3H///fc7/9ykSRM1bdpU9erV04YNG9SxY8cCx5o4caLGjx+f/0Dv3lJAgPkvBwDwDUlJF249BACUXDk5bp3mdvl66qmn1KNHD2VnZ+vJJ59U9erVJUnp6emaOnWqZsyYoWXLll1Z2AKcPXtWo0eP1rJly3TXXXdJkpo2baqUlBS99tprly1fr732miZNmqQvvvhCTZs2veS5119/vapUqaL9+/cXWr5GjRqlhIQE57bD4VCtWrWkxYslnvkCgJKLZ74AAA6HFBJy2dPcLl933323pk+frqeeekpTp05VyP8fPCMjQ6VKldJrr72mu++++8oD/0VOTo5ycnLk5+f6WJq/v7/y8vIuee2UKVP08ssva82aNW69f+zXX3/ViRMnFBoaWug5gYGBCgwMdC88AAAAAPyFqZcsP/7447r33nu1ZMkS/fjjj5KkG264Qb169bowC2RSZmam9u/f79w+ePCgUlJSVKlSJdWuXVsxMTF6+umnVaZMGUVERGjjxo1asGCBpk2b5rzmwQcfVM2aNTVx4kRJ0uTJkzV27Fh98MEHqlOnjtLT0yVJ5cqVU7ly5ZSZmanx48erV69eqlGjhg4cOKCRI0eqfv366tKli+nvAAAAAADucHup+aKwYcMGdejQId/+fv36ad68eUpPT9eoUaO0du1anTx5UhERERo8eLBGjBghm80mSYqNjVWdOnU0b948SVKdOnX0yy+/5Btz3LhxeuGFF3T27Fn16NFDu3bt0qlTpxQWFqbOnTvrxRdfdN5K6Q6WmgcASOK2QwCA293Aq+WrOKN8AQAkUb4AAJ5/zxcAAAAA4MpRvgAAAADAApQvAAAAALCA6fK1fv36Qo+9/fbbVxUGAAAAAHyV6fLVtWtXPf3008r501ucjx8/ru7du+vZZ5/1aDgAAAAA8BVXNPO1bNkyRUdHKzU1VZ999pkaN24sh8OhlJSUIoh4bbHb7YqMjFR0dLS3owAAAAAoRq5oqfnMzEwNGTJEH3/8sfLy8vTiiy9q5MiRzndvlQQsNQ8AkMRS8wCAol1qft++fdq+fbvCw8NVqlQp7d27V2fOnLnisAAAAADg60yXr0mTJql169a644479N133ykpKUm7du1S06ZNtWXLlqLICAAAAADFnuny9frrr2v58uWaNWuWgoKC1LhxYyUlJalnz56KjY0tgogAAAAAUPyVMnvBt99+qypVqrjsCwgI0Kuvvqq7777bY8EAAAAAwJeYnvn6a/H6s5iYmKsKAwAAAAC+yvTMlyRt375dH330kQ4dOqTz58+7HFu6dKlHggEAAACALzE987Vo0SK1adNGe/bs0bJly5STk6Pvv/9eX375pUJCQooiIwAAAAAUe6bL1yuvvKLp06dr5cqVKl26tF5//XX98MMPuu+++1S7du2iyAgAAAAAxZ7p8nXgwAHdddddkqTSpUsrKytLNptNI0aM0DvvvOPxgAAAAADgC0yXr4oVK+r06dOSpJo1a+q7776TJJ06dYoXLQMAAABAIUyXr/bt2+vzzz+XJP3973/XsGHD9PDDD6tPnz7q2LGjxwNea+x2uyIjIxUdHe3tKAAAAACKEZthGIaZC06ePKlz584pLCxMeXl5mjJlir755hs1aNBAzz//vCpWrFhUWa8pDodDISEhysjIUHBwsLfjAAC8JS5OSkz0dgoAgBe52w1MLzVfqVIl55/9/Pz07LPPXllCAAAAAChBTN92CAAAAAAwz+2ZL39/f7fOy83NveIwAAAAAOCr3C5fhmEoIiJC/fr1U/PmzYsyEwAAAAD4HLfLV1JSkubOnavXX39ddevW1cCBA9W3b98Ss8AGAAAAAFwNt5/5uuWWW/TWW28pLS1NCQkJWrZsmcLDw3X//fc7l54HAAAAABTM9IIbQUFB+sc//qF169bpu+++07Fjx9S1a1edPHmyKPIBAAAAgE8wvdS8JP3666+aN2+e5s2bpzNnzujpp5/mXVcAAAAAcAlul6/z589r2bJlmjt3rr766it169ZNM2bMULdu3dxeCREAAAAASiq3y1doaKjKly+vfv366c0331S1atUkSVlZWS7nMQMGAAAAAPnZDMMw3DnRz+//Hg+z2Wz5jhuGIZvN5vPv+bLb7bLb7crNzdW+ffuUkZFB4QSAkiwuTkpM9HYKAIAXORwOhYSEXLYbuD3ztX79eo8EK+7i4+MVHx/v/AUDAAAAgDvcLl8xMTFFmQMAAAAAfJrppeYBAAAAAOZRvgAAAADAApQvAAAAALAA5QsAAAAA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fOXk5Khjx4768ccfiyoPAAAAAPgkU+UrICBAu3fvLqosAAAAAOCzTN92+I9//ENz584tiiwAAAAA4LNMv+frjz/+0LvvvqsvvvhCLVq00HXXXedyfNq0aR4LBwAAAAC+wnT5+u6773TzzTdLkvbt2+dyzGazeSYVAAAAAPgY0+Vr/fr1RZEDAAAAAHzaFS81v3//fq1Zs0Znz56VJBmG4bFQAAAAAOBrTJevEydOqGPHjrrhhht05513Ki0tTZI0aNAgPfnkkx4PeK2x2+2KjIxUdHS0t6MAAAAAKEZMl68RI0YoICBAhw4dUtmyZZ37e/furdWrV3s03LUoPj5eqampSk5O9nYUAAAAAMWI6We+1q5dqzVr1ig8PNxlf4MGDfTLL794LBgAAAAA+BLTM19ZWVkuM14XnTx5UoGBgR4JBQAAAAC+xnT5ateunRYsWODcttlsysvL05QpU9ShQwePhgMAAAAAX2H6tsMpU6aoY8eO2r59u86fP6+RI0fq+++/18mTJ/X1118XRUYAAAAAKPZMz3w1btxY+/btU9u2bXXPPfcoKytLPXv21K5du1SvXr2iyAgAAAAAxd4VvecrJCREzz33nD766CP95z//0UsvvaTQ0FDT42zatEndu3dXWFiYbDabli9f7nLcZrMV+PPqq68WOuYLL7yQ7/xGjRq5nHPu3DnFx8ercuXKKleunHr16qWjR4+azg8AAAAA7jJ926Ek/f7775o7d6727NkjSYqMjNSAAQNUqVIlU+NkZWUpKipKAwcOVM+ePfMdv/gOsYtWrVqlQYMGqVevXpcc96abbtIXX3zh3C5VyvVrjhgxQp999pmWLFmikJAQDR06VD179uS2SQAAAABFxnT5ujhbFRISoltuuUWSNHPmTE2YMEErV65U+/bt3R6rW7du6tatW6HHa9So4bK9YsUKdejQQddff/0lxy1VqlS+ay/KyMjQ3Llz9cEHH+j222+XJL333nu68cYbtXXrVt16661u5wcAAAAAd5m+7TA+Pl69e/fWwYMHtXTpUi1dulQ//fST7r//fsXHxxdFRknS0aNH9dlnn2nQoEGXPffHH39UWFiYrr/+evXt21eHDh1yHtuxY4dycnLUqVMn575GjRqpdu3a2rJlS5FkBwAAAADT5Wv//v168skn5e/v79zn7++vhIQE7d+/36Ph/mz+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1ql169Zq0aKFAgICXI7v3btXhw4dUuvWrb0RGQBwDSrl7QAAABQHCQkJ6tevn2655Ra1bNlSM2bMUFZWlgYMGKCQkBANGjRICQkJqlSpkoKDg/X444+rdevWrHQIAHCifAEA4IbevXvrt99+09ixY5Wenq5mzZpp9erVzkU4pk+fLj8/P/Xq1UvZ2dnq0qWL3nzzTS+nBgBcS3jPFwAAAABYgGe+AAAAAMAClC8AAAAAsADlCwAAAAAsQPkCAAAAAAtQvgAAAADAApQvAAAAALAA5QsAAAAALED5AgD4rJ9//lk2m00pKSnejuL0ww8/6NZbb1VQUJCaNWt2xePYbDYtX77cY7kAAEWP8gUAKDL9+/eXzWbTpEmTXPYvX75cNpvNS6m8a9y4cbruuuu0d+9erVu3rsBzfvvtNz366KOqXbu2AgMDVaNGDXXp0kVff/21R7PExsZq+PDhHh0TAFA4yhcAoEgFBQVp8uTJ+v33370dxWPOnz9/xdceOHBAbdu2VUREhCpXrlzgOb169dKuXbs0f/587du3T4mJiYqNjdWJEyeu+HMBAN5H+QIAFKlOnTqpRo0amjhxYqHnvPDCC/luwZsxY4bq1Knj3O7fv7969OihV155RdWrV1eFChU0YcIE/fHHH3r66adVqVIlhYeH67333ss3/g8//KA2bdooKChIjRs31saNG12Of/fdd+rWrZvKlSun6tWr65///KeOHz/uPB4bG6uhQ4dq+PDhqlKlirp06VLg98jLy9OECRMUHh6uwMBANWvWTKtXr3Yet9ls2rFjhyZMmCCbzaYXXngh3xinTp3SV199pcmTJ6tDhw6KiIhQy5YtNWrUKMXFxbmce/z4cd17770qW7asGjRooMTERJfjGzduVMuWLRUYGKjQ0FA9++yz+uOPP5y/z40bN+r111+XzWaTzWbTzz//rN9//119+/ZV1apVVaZMGTVo0KDA3ykAwDzKFwCgSPn7++uVV17RrFmz9Ouvv17VWF9++aWOHDmiTZs2adq0aRo3bpzuvvtuVaxYUdu2bdOQIUP0yCOP5Pucp59+Wk8++aR27dql1q1bq3v37s5ZpFOnTun2229X8+bNtX37dq1evVpHjx7Vfffd5zLG/PnzVbp0aX399deaPXt2gflef/11TZ06Va+99pp2796tLl26KC4uTj/++KMkKS0tTTfddJOefPJJpaWl6amnnso3Rrly5VSuXDktX75c2dnZl/x9jB8/Xvfdd592796tO++8U3379tXJkyclSYcPH9add96p6Oho/fe//9Vbb72luXPn6qWXXnJmbd26tR5++GGlpaUpLS1NtWrV0pgxY5SamqpVq1Zpz549euutt1SlShU3/tcBAFyWAQBAEenXr59xzz33GIZhGLfeeqsxcOBAwzAMY9myZcaf/wkaN26cERUV5XLt9OnTjYiICJexIiIijNzcXOe+hg0bGu3atXNu//HHH8Z1111nfPjhh4ZhGMbBgwcNScakSZOc5+Tk5Bjh4eHG5MmTDcMwjBdffNHo3Lmzy2f/73//MyQZe/fuNQzDMGJiYozmzZtf9vuGhYUZL7/8ssu+6Oho47HHHnNuR0VFGePGjbvkOB9//LFRsWJFIygoyGjTpo0xatQo47///a/LOZKM559/3rmdmZlpSDJWrVplGIZhjB492mjYsKGRl5fnPMdutxvlypVz/g5jYmKMYcOGuYzbvXt3Y8CAAZf9rgAA85j5AgBYYvLkyZo/f7727NlzxWPcdNNN8vP7v3+6qlevriZNmji3/f39VblyZR07dszlutatWzv/XKpUKd1yyy3OHP/973+1fv1654xTuXLl1KhRI0kXns+6qEWLFpfM5nA4dOTIEd12220u+2+77TbT37lXr146cuSIEhMT1bVrV23YsEE333yz5s2b53Je06ZNnX++7rrrFBwc7Pzue/bsUevWrV0WNrntttuUmZl5yRnIRx99VIsWLVKzZs00cuRIffPNN6ayAwAKR/kCAFiiffv26tKli0aNGpXvmJ+fnwzDcNmXk5OT77yAgACXbZvNVuC+vLw8t3NlZmaqe/fuSklJcfn58ccf1b59e+d51113ndtjekJQUJDuuOMOjRkzRt9884369++vcePGuZxztd+9IN26ddMvv/yiESNG6MiRI+rYsWOBt0cCAMyjfAEALDNp0iStXLlSW7ZscdlftWpVpaenuxQwT76ba+vWrc4///HHH9qxY4duvPFGSdLNN9+s77//XnXq1FH9+vVdfswUruDgYIWFheVbDv7rr79WZGTkVX+HyMhIZWVluX3+jTfeqC1btrj8Tr/++muVL19e4eHhkqTSpUsrNzc337VVq1ZVv379tHDhQs2YMUPvvPPOVecHAFC+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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["# plot mtr vs rpp\n","import matplotlib.pyplot as plt\n","\n","fig, ax = plt.subplots(figsize=(10, 6))\n","# set grid\n","ax.grid(True)\n","ax.set_axisbelow(True)\n","ax.minorticks_on()\n","ax.grid(which=\"major\", linestyle=\"-\", linewidth=\"0.5\", color=\"red\")\n","# ax.grid(which=\"minor\", linestyle=\":\", linewidth=\"0.5\", color=\"black\")\n","\n","for model in models:\n"," model_df = metrics_df[metrics_df[\"model\"] == model]\n"," ax.plot(model_df[\"shots\"], model_df[\"num_max_output_tokens\"], label=model, marker=markers[model])\n","\n","# ax.set_ylim(0, 1)\n","ax.set_xlabel(\"Number of Shots\")\n","ax.set_ylabel(\"Number of Answers with Max Output Tokens\")\n","ax.legend(loc=\"lower center\", bbox_to_anchor=(0.5, -0.5))\n","plt.show()"]},{"cell_type":"code","execution_count":23,"metadata":{},"outputs":[],"source":["def detect_repetitions_for_model_outputs(df, col, threshold=100):\n"," df[[\"ews_score\", \"repetition_score\", \"total_repetitions\"]] = df[col].apply(\n"," detect_scores\n"," )\n"," return df.query(f\"total_repetitions > {threshold}\")"]},{"cell_type":"code","execution_count":27,"metadata":{},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
chineseenglish01-ai/Yi-1.5-9B-Chat/shots-00ground_truth_ews_scoreground_truth_repetition_scoreground_truth_total_repetitionsews_scorerepetition_scoretotal_repetitionsground_truth_tokens-01-ai/Yi-1.5-9B-Chatoutput_tokens-01-ai/Yi-1.5-9B-Chat/shots-00
105虽然我奶奶与他已经在高粱地里凤凰和谐,在那个半是痛苦半是幸福的庄严过程中,我奶奶虽然也怀上了...Even though by then he and Grandma had already...Although my grandmother and him had already be...000012241224154309
505老子叫你不许哭,就不许哭!”'I forbid you to cry.'The task is asking you to:\\n\\n1. Understand th...00001801808187
\n","
"],"text/plain":[" chinese \\\n","105 虽然我奶奶与他已经在高粱地里凤凰和谐,在那个半是痛苦半是幸福的庄严过程中,我奶奶虽然也怀上了... \n","505 老子叫你不许哭,就不许哭!” \n","\n"," english \\\n","105 Even though by then he and Grandma had already... \n","505 'I forbid you to cry.' \n","\n"," 01-ai/Yi-1.5-9B-Chat/shots-00 \\\n","105 Although my grandmother and him had already be... \n","505 The task is asking you to:\\n\\n1. Understand th... \n","\n"," ground_truth_ews_score ground_truth_repetition_score \\\n","105 0 0 \n","505 0 0 \n","\n"," ground_truth_total_repetitions ews_score repetition_score \\\n","105 0 0 1224 \n","505 0 0 180 \n","\n"," total_repetitions ground_truth_tokens-01-ai/Yi-1.5-9B-Chat \\\n","105 1224 154 \n","505 180 8 \n","\n"," output_tokens-01-ai/Yi-1.5-9B-Chat/shots-00 \n","105 309 \n","505 187 "]},"execution_count":27,"metadata":{},"output_type":"execute_result"}],"source":["col = \"01-ai/Yi-1.5-9B-Chat/shots-00\"\n","rows = detect_repetitions_for_model_outputs(df, col, threshold=50)\n","rows"]},{"cell_type":"code","execution_count":28,"metadata":{},"outputs":[{"name":"stdout","output_type":"stream","text":["虽然我奶奶与他已经在高粱地里凤凰和谐,在那个半是痛苦半是幸福的庄严过程中,我奶奶虽然也怀上了我的功罪参半但毕竟是高密东北乡一代风流的父亲,但那时奶奶是单家的明媒正娶的媳妇,爷爷与她总归是桑间濮上之合,带着相当程度的随意性偶然性不稳定性,况且我父亲也没落土,所以,写到那时候的事,我还是称呼他余占鳌更为准确。\n","================================================================================\n","Even though by then he and Grandma had already done the phoenix dance in the sorghum field, and even though, in the solemn course of suffering and joy, she had conceived my father, whose life was a mixture of achievements and sin (in the final analysis, he gained distinction among his generation of citizens of Northeast Gaomi Township), she had nonetheless been legally married into the Shan family. So she and Granddad were adulterers, their relationship marked by measures of spontaneity, chance, and uncertainty. And since Father wasn't born while they were together, accuracy demands that I refer to Granddad as Yu Zhan'ao in writing about this period.\n","================================================================================\n","Although my grandmother and him had already been in the sorghum field with Phoenix in harmony, during that process that was both painful and happy, my grandmother although also got pregnant with my father's guilt and merit being equal, but after all, she was a father of the generation who was famous in the eastern northeast of High密, but at that time, my grandmother was a bride taken in by the single family of Ming, grandfather and her belonged to the marriage of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of the casual and occasional nature of\n","================================================================================\n","----detect excessive whitespaces----\n","----detect text repetitions----\n","= max_new_tokens][\n"," [\"chinese\", \"english\", col, output_tokens]\n","]\n","print_row_details(df2, range(len(df2)))"]},{"cell_type":"code","execution_count":30,"metadata":{},"outputs":[{"data":{"text/plain":["18"]},"execution_count":30,"metadata":{},"output_type":"execute_result"}],"source":["len(df2)"]},{"cell_type":"code","execution_count":31,"metadata":{},"outputs":[{"data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ground_truth_ews_scoreground_truth_repetition_scoreground_truth_total_repetitionsews_scorerepetition_scoretotal_repetitionsground_truth_tokens-01-ai/Yi-1.5-9B-Chatoutput_tokens-01-ai/Yi-1.5-9B-Chat/shots-00
count1133.01133.0000001133.0000001133.0000001133.0000001133.0000001133.0000001133.000000
mean0.00.3124450.3124450.0088261.6142981.62312433.04413159.693733
std0.07.1936497.1936490.20998036.83451336.83472422.88965365.755925
min0.00.0000000.0000000.0000000.0000000.0000001.0000004.000000
25%0.00.0000000.0000000.0000000.0000000.00000017.00000021.000000
50%0.00.0000000.0000000.0000000.0000000.00000028.00000037.000000
75%0.00.0000000.0000000.0000000.0000000.00000042.00000066.000000
max0.0239.000000239.0000005.0000001224.0000001224.000000154.000000331.000000
\n","
"],"text/plain":[" ground_truth_ews_score ground_truth_repetition_score \\\n","count 1133.0 1133.000000 \n","mean 0.0 0.312445 \n","std 0.0 7.193649 \n","min 0.0 0.000000 \n","25% 0.0 0.000000 \n","50% 0.0 0.000000 \n","75% 0.0 0.000000 \n","max 0.0 239.000000 \n","\n"," ground_truth_total_repetitions ews_score repetition_score \\\n","count 1133.000000 1133.000000 1133.000000 \n","mean 0.312445 0.008826 1.614298 \n","std 7.193649 0.209980 36.834513 \n","min 0.000000 0.000000 0.000000 \n","25% 0.000000 0.000000 0.000000 \n","50% 0.000000 0.000000 0.000000 \n","75% 0.000000 0.000000 0.000000 \n","max 239.000000 5.000000 1224.000000 \n","\n"," total_repetitions ground_truth_tokens-01-ai/Yi-1.5-9B-Chat \\\n","count 1133.000000 1133.000000 \n","mean 1.623124 33.044131 \n","std 36.834724 22.889653 \n","min 0.000000 1.000000 \n","25% 0.000000 17.000000 \n","50% 0.000000 28.000000 \n","75% 0.000000 42.000000 \n","max 1224.000000 154.000000 \n","\n"," output_tokens-01-ai/Yi-1.5-9B-Chat/shots-00 \n","count 1133.000000 \n","mean 59.693733 \n","std 65.755925 \n","min 4.000000 \n","25% 21.000000 \n","50% 37.000000 \n","75% 66.000000 \n","max 331.000000 "]},"execution_count":31,"metadata":{},"output_type":"execute_result"}],"source":["df.describe()"]},{"cell_type":"code","execution_count":32,"metadata":{},"outputs":[],"source":["metrics_df.to_csv(results_path.replace(\".csv\", \"_metrics.csv\"), index=False)"]}],"metadata":{"accelerator":"GPU","application/vnd.databricks.v1+notebook":{"dashboards":[],"environmentMetadata":null,"language":"python","notebookMetadata":{"mostRecentlyExecutedCommandWithImplicitDF":{"commandId":-1,"dataframes":["_sqldf"]},"pythonIndentUnit":4},"notebookName":"10_eval-lf-medium-py3.11","widgets":{}},"colab":{"gpuType":"L4","provenance":[]},"kernelspec":{"display_name":"Python 3","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.11.9"}},"nbformat":4,"nbformat_minor":0}