diff --git a/experiments/evaluations/gpt-4_gpt-4.json b/experiments/evaluations/gpt-4_gpt-4.json index 33b17cf..5235191 100644 --- a/experiments/evaluations/gpt-4_gpt-4.json +++ b/experiments/evaluations/gpt-4_gpt-4.json @@ -11,7 +11,7 @@ "responses_fp": "/home/ray/ray-assistant/notebooks/../experiments/responses/gpt-4.json" }, "retrieval_score": 0.7288135593220338, - "quality_score": 3.824858757062147, + "quality_score": 3.7457627118644066, "results": [ { "question": "I\u2019m struggling a bit with Ray Data type conversions when I do map_batches. Any advice?", diff --git a/notebooks/rag.ipynb b/notebooks/rag.ipynb index 0d01c9f..99d6027 100644 --- a/notebooks/rag.ipynb +++ b/notebooks/rag.ipynb @@ -137,17 +137,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-11-09 22:07:17,747\tINFO worker.py:1458 -- Connecting to existing Ray cluster at address: 10.0.6.237:6379...\n", - "2023-11-09 22:07:17,757\tINFO worker.py:1633 -- Connected to Ray cluster. View the dashboard at \u001b[1m\u001b[32mhttps://session-5ljni527x7edt2q6px7nuaejct.i.anyscaleuserdata-staging.com \u001b[39m\u001b[22m\n", - "2023-11-09 22:07:17,859\tINFO packaging.py:518 -- Creating a file package for local directory '/home/ray/ray-assistant/notebooks/..'.\n", - "2023-11-09 22:07:18,010\tINFO packaging.py:346 -- Pushing file package 'gcs://_ray_pkg_d14223360ff97e4e.zip' (38.25MiB) to Ray cluster...\n", - "2023-11-09 22:07:18,137\tINFO packaging.py:359 -- Successfully pushed file package 'gcs://_ray_pkg_d14223360ff97e4e.zip'.\n" + "2023-11-27 11:08:11,568\tINFO worker.py:1458 -- Connecting to existing Ray cluster at address: 10.0.27.252:6379...\n", + "2023-11-27 11:08:11,577\tINFO worker.py:1633 -- Connected to Ray cluster. View the dashboard at \u001b[1m\u001b[32mhttps://session-5ljni527x7edt2q6px7nuaejct.i.anyscaleuserdata-staging.com \u001b[39m\u001b[22m\n", + "2023-11-27 11:08:11,679\tINFO packaging.py:518 -- Creating a file package for local directory '/home/ray/ray-assistant/notebooks/..'.\n", + "2023-11-27 11:08:11,826\tINFO packaging.py:346 -- Pushing file package 'gcs://_ray_pkg_9ed3efb97d40fcd3.zip' (37.58MiB) to Ray cluster...\n", + "2023-11-27 11:08:11,943\tINFO packaging.py:359 -- Successfully pushed file package 'gcs://_ray_pkg_9ed3efb97d40fcd3.zip'.\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8e13e69bd2304f97bbaaf949ef7f977f", + "model_id": "be7b299ae7d94d9cae797dcacc484b47", "version_major": 2, "version_minor": 0 }, @@ -221,12 +221,12 @@ { "data": { "text/plain": [ - "{'node:__internal_head__': 1.0,\n", - " 'CPU': 8.0,\n", - " 'GPU': 1.0,\n", - " 'node:10.0.6.237': 1.0,\n", + "{'GPU': 1.0,\n", + " 'node:__internal_head__': 1.0,\n", + " 'object_store_memory': 9535951257.0,\n", " 'accelerator_type:A10G': 1.0,\n", - " 'object_store_memory': 9534181785.0,\n", + " 'node:10.0.27.252': 1.0,\n", + " 'CPU': 8.0,\n", " 'memory': 34359738368.0}" ] }, @@ -481,9 +481,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-11-09 22:07:26,749\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[FlatMap(extract_sections)]\n", - "2023-11-09 22:07:26,750\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", - "2023-11-09 22:07:26,751\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + "2023-11-27 11:08:16,997\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[FlatMap(extract_sections)]\n", + "2023-11-27 11:08:16,997\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-11-27 11:08:16,998\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" ] }, { @@ -529,7 +529,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-11-09 22:07:51,330\tWARNING plan.py:567 -- Warning: The Ray cluster currently does not have any available CPUs. The Dataset job will hang unless more CPUs are freed up. A common reason is that cluster resources are used by Actors or Tune trials; see the following link for more details: https://docs.ray.io/en/master/data/dataset-internals.html#datasets-and-tune\n" + "2023-11-27 11:08:42,609\tWARNING plan.py:567 -- Warning: The Ray cluster currently does not have any available CPUs. The Dataset job will hang unless more CPUs are freed up. A common reason is that cluster resources are used by Actors or Tune trials; see the following link for more details: https://docs.ray.io/en/master/data/dataset-internals.html#datasets-and-tune\n" ] } ], @@ -565,7 +565,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABA4AAAEpCAYAAAATT2BpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABqSElEQVR4nO3deXhTVfoH8G+SNk3XtAXaFCilAgq1LFK2yjIOVooyOCiOoKAOMqAIKuIGLiAqoszgCgOKo/gbQHAD2Sx0AEWgLLIIpYCAZW9aoDTdt+T+/qi5JE3S3qTZmnw/z9MHeu9JcpKe3Hvue895j0wQBAFERERERERERFbIPV0BIiIiIiIiIvJeDBwQERERERERkU0MHBARERERERGRTQwcEBEREREREZFNDBwQERERERERkU0MHBARERERERGRTQwcEBEREREREZFNDBwQERERERERkU0MHBARERERERGRTQwcEBERkU0ymQyvvfaa21/3tddeg0wmc/vr2uvHH3+ETCbDN9984+mqEBERuQwDB0RERF7kyJEjuO+++5CQkACVSoU2bdrgjjvuwEcffeSy19y4caNHggPNyYoVK/D+++97uhpEREQewcABERGRl9i1axd69eqFX3/9FRMmTMCCBQvwj3/8A3K5HB988IHLXnfjxo2YPXu21X0VFRV45ZVXXPbazQUDB0RE5M8CPF0BIiIiqjNnzhyo1Wrs27cPkZGRZvsKCgo8UieVSuWR1yUiIiLvwREHREREXuL06dO4+eabLYIGABATE2OxbdmyZUhJSUFwcDCio6MxevRonD9/3qLcnj17cNdddyEqKgqhoaHo1q2bOILh73//OxYuXAigLp+B8cfIWo6DgwcP4s4770RERATCwsJw++23Y/fu3WZlli5dCplMhp07d2LatGlo1aoVQkNDcc899+Dy5cv2fjR2vefbbrsNycnJyMnJwZ///GeEhISgTZs2mDdvnsXznT17FnfffTdCQ0MRExODZ555Bps2bYJMJsOPP/4oPt+GDRtw9uxZ8fNp37692fMYDAbMmTMHbdu2hUqlwu23345Tp06ZlTl58iRGjhwJjUYDlUqFtm3bYvTo0dDpdA5/HkRERO7AEQdEREReIiEhAVlZWcjOzkZycnKDZefMmYNXX30V999/P/7xj3/g8uXL+OijjzBo0CAcPHhQDD5kZmbiL3/5C+Li4vD0009Do9Hg2LFjWL9+PZ5++mk89thjuHTpEjIzM/Hf//630ToePXoUAwcOREREBF544QUEBgbi448/xm233YaffvoJffv2NSv/5JNPIioqCrNmzcKZM2fw/vvvY8qUKVi1apXdn4/U9wwA165dw9ChQ3Hvvffi/vvvxzfffIMXX3wRXbt2xZ133gkAKCsrw+DBg5GXlyd+NitWrMC2bdvMXvfll1+GTqfDhQsX8N577wEAwsLCzMq8/fbbkMvleO6556DT6TBv3jyMGTMGe/bsAQBUV1cjPT0dVVVVePLJJ6HRaHDx4kWsX78eRUVFUKvVdn8eREREbiMQERGRV9i8ebOgUCgEhUIhpKamCi+88IKwadMmobq62qzcmTNnBIVCIcyZM8ds+5EjR4SAgABxe21trZCYmCgkJCQI165dMytrMBjE/0+ePFmw1SUAIMyaNUv8fcSIEYJSqRROnz4tbrt06ZIQHh4uDBo0SNz2+eefCwCEtLQ0s9d65plnBIVCIRQVFTX4WcyaNcusTlLfsyAIwp/+9CcBgPB///d/4raqqipBo9EII0eOFLfNnz9fACCsWbNG3FZRUSF07txZACBs27ZN3D5s2DAhISHBop7btm0TAAhdunQRqqqqxO0ffPCBAEA4cuSIIAiCcPDgQQGA8PXXXzf4vomIiLwRpyoQERF5iTvuuANZWVm4++678euvv2LevHlIT09HmzZtsHbtWrHcd999B4PBgPvvvx9XrlwRfzQaDTp16iTeMT948CByc3MxdepUi+kPjix1qNfrsXnzZowYMQI33HCDuD0uLg4PPvggduzYgeLiYrPHTJw40ey1Bg4cCL1ej7Nnz9r12lLfs1FYWBjGjh0r/q5UKtGnTx/8/vvv4raMjAy0adMGd999t7hNpVJhwoQJdtUNAMaNGwelUin+PnDgQAAQX884omDTpk0oLy+3+/mJiIg8iYEDIiIiL9K7d2989913uHbtGvbu3YsZM2agpKQE9913H3JycgDUzZUXBAGdOnVCq1atzH6OHTsmJlI8ffo0ADQ67UGqy5cvo7y8HDfddJPFvi5dusBgMFjkG2jXrp3Z71FRUQDqphLYQ+p7Nmrbtq1FcCQqKsrsdc+ePYsOHTpYlOvYsaNddQMaf5+JiYmYNm0aPv30U7Rs2RLp6elYuHAh8xsQEVGzwBwHREREXkipVKJ3797o3bs3brzxRowbNw5ff/01Zs2aBYPBAJlMhh9++AEKhcLisfXn33uStfoBgCAIdj2Pve/ZWa8rlZTXmz9/Pv7+97/j+++/x+bNm/HUU09h7ty52L17N9q2beuSehERETkDAwdERERerlevXgCAvLw8AECHDh0gCAISExNx44032nxchw4dAADZ2dlIS0uzWU7qtIVWrVohJCQEJ06csNh3/PhxyOVyxMfHS3oue0l9z/ZISEhATk4OBEEw+wzqr4YAODa1w5quXbuia9eueOWVV7Br1y70798fixcvxptvvumU5yciInIFTlUgIiLyEtu2bbN6R3zjxo0AIE4RuPfee6FQKDB79myL8oIg4OrVqwCAnj17IjExEe+//z6KioosyhmFhoYCgEWZ+hQKBYYMGYLvv/8eZ86cEbfn5+djxYoVGDBgACIiIiS9V3tJfc/2SE9Px8WLF83yR1RWVmLJkiUWZUNDQ5s0raC4uBi1tbVm27p27Qq5XI6qqiqHn5eIiMgdOOKAiIjISzz55JMoLy/HPffcg86dO6O6uhq7du3CqlWr0L59e4wbNw5A3d33N998EzNmzMCZM2cwYsQIhIeHIzc3F6tXr8bEiRPx3HPPQS6XY9GiRRg+fDh69OiBcePGIS4uDsePH8fRo0exadMmAEBKSgoA4KmnnkJ6ejoUCgVGjx5ttY5vvvkmMjMzMWDAADzxxBMICAjAxx9/jKqqKsybN89ln43U92yPxx57DAsWLMADDzyAp59+GnFxcVi+fDlUKhUA81EGKSkpWLVqFaZNm4bevXsjLCwMw4cPl/xaW7duxZQpU/C3v/0NN954I2pra/Hf//4XCoUCI0eOtKveRERE7sbAARERkZf417/+ha+//hobN27EJ598gurqarRr1w5PPPEEXnnlFbOVEaZPn44bb7wR7733HmbPng0AiI+Px5AhQ8xWCUhPT8e2bdswe/ZszJ8/HwaDAR06dDBbOeDee+/Fk08+iZUrV2LZsmUQBMFm4ODmm2/Gzz//jBkzZmDu3LkwGAzo27cvli1bhr59+7rmg7HzPUsVFhaGrVu34sknn8QHH3yAsLAwPPzww7j11lsxcuRIMYAAAE888QQOHTqEzz//HO+99x4SEhLsChx0794d6enpWLduHS5evIiQkBB0794dP/zwA/r162d33YmIiNxJJrgqSxARERFRM/T+++/jmWeewYULF9CmTRtPV4eIiMjjGDggIiIiv1VRUYHg4GDx98rKStxyyy3Q6/X47bffPFgzIiIi78GpCkREROS37r33XrRr1w49evSATqfDsmXLcPz4cSxfvtzTVSMiIvIaDBwQERGR30pPT8enn36K5cuXQ6/XIykpCStXrsSoUaM8XTUiIiKvwakKRERERERERGST3NMVICIiIiIiIiLvxcABEREREREREdnEHAdOYjAYcOnSJYSHh0Mmk3m6OkREREREROTjBEFASUkJWrduDbncdeMCGDhwkkuXLiE+Pt7T1SAiIiIiIiI/c/78ebRt29Zlz8/AgZOEh4cDqPuDRUREeLg2RERERERE5OuKi4sRHx8vXo+6CgMHTmKcnhAREcHAAREREREREbmNq6fLMzkiEREREREREdnEwAERERERERER2cTAARERERERERHZxBwHRERERETNmN4gYG9uIQpKKhETrkKfxGgo5FwenIich4EDIiIiIqJmKiM7D7PX5SBPVylui1OrMGt4EoYmx3mwZkTkSzhVgYiIiIioGcrIzsOkZQfMggYAoNVVYtKyA8jIzvNQzYjI1zBwQERERETUzOgNAmavy4FgZZ9x2+x1OdAbrJUgIrIPAwdERERERM3M3txCi5EGpgQAebpK7M0tdF+liMhnMXBARERERNTMFJTYDho4Uo6IqCEMHBARERERNTMx4SqnliMiaggDB0REREREzUyfxGjEqVWwteiiDHWrK/RJjHZntYjIRzFwQERERETUzCjkMswangQAFsED4++zhidBIbcVWiAiko6BAyIiIiKiZmhochwWje0Jjdp8OoJGrcKisT0xNDnOQzUjIl8T4OkKEBERERGRY4Ymx+GOJA06vLQRAPDnm1rh00d6c6QBETkVRxwQERERETVjpkGC2AgVgwZE5HQeDRzo9Xq8+uqrSExMRHBwMDp06IA33ngDgiCIZQRBwMyZMxEXF4fg4GCkpaXh5MmTZs9TWFiIMWPGICIiApGRkRg/fjxKS0vNyhw+fBgDBw6ESqVCfHw85s2bZ1Gfr7/+Gp07d4ZKpULXrl2xceNG17xxIiIiIiIiombCo4GDd955B4sWLcKCBQtw7NgxvPPOO5g3bx4++ugjscy8efPw4YcfYvHixdizZw9CQ0ORnp6Oysrra9KOGTMGR48eRWZmJtavX4/t27dj4sSJ4v7i4mIMGTIECQkJ2L9/P/75z3/itddewyeffCKW2bVrFx544AGMHz8eBw8exIgRIzBixAhkZ2e758MgIiIiIiIi8kIywfT2vpv95S9/QWxsLP7zn/+I20aOHIng4GAsW7YMgiCgdevWePbZZ/Hcc88BAHQ6HWJjY7F06VKMHj0ax44dQ1JSEvbt24devXoBADIyMnDXXXfhwoULaN26NRYtWoSXX34ZWq0WSqUSADB9+nSsWbMGx48fBwCMGjUKZWVlWL9+vViXfv36oUePHli8eHGj76W4uBhqtRo6nQ4RERFO+4yIiIiIiBrTfvoGAMDo3vF4e2Q3D9eGiNzFXdehHh1xcOutt2LLli347bffAAC//vorduzYgTvvvBMAkJubC61Wi7S0NPExarUaffv2RVZWFgAgKysLkZGRYtAAANLS0iCXy7Fnzx6xzKBBg8SgAQCkp6fjxIkTuHbtmljG9HWMZYyvQ0REREREROSPPLqqwvTp01FcXIzOnTtDoVBAr9djzpw5GDNmDABAq9UCAGJjY80eFxsbK+7TarWIiYkx2x8QEIDo6GizMomJiRbPYdwXFRUFrVbb4OvUV1VVhaqqKvH34uJiu947ERERERERUXPg0REHX331FZYvX44VK1bgwIED+OKLL/Cvf/0LX3zxhSerJcncuXOhVqvFn/j4eE9XiYiIiIiIiMjpPBo4eP755zF9+nSMHj0aXbt2xUMPPYRnnnkGc+fOBQBoNBoAQH5+vtnj8vPzxX0ajQYFBQVm+2tra1FYWGhWxtpzmL6GrTLG/fXNmDEDOp1O/Dl//rzd75+IiIiIiIjI23k0cFBeXg653LwKCoUCBoMBAJCYmAiNRoMtW7aI+4uLi7Fnzx6kpqYCAFJTU1FUVIT9+/eLZbZu3QqDwYC+ffuKZbZv346amhqxTGZmJm666SZERUWJZUxfx1jG+Dr1BQUFISIiwuyHiIiIiIiIyNd4NHAwfPhwzJkzBxs2bMCZM2ewevVqvPvuu7jnnnsAADKZDFOnTsWbb76JtWvX4siRI3j44YfRunVrjBgxAgDQpUsXDB06FBMmTMDevXuxc+dOTJkyBaNHj0br1q0BAA8++CCUSiXGjx+Po0ePYtWqVfjggw8wbdo0sS5PP/00MjIyMH/+fBw/fhyvvfYafvnlF0yZMsXtnwsRERERERGRt/BocsSPPvoIr776Kp544gkUFBSgdevWeOyxxzBz5kyxzAsvvICysjJMnDgRRUVFGDBgADIyMqBSqcQyy5cvx5QpU3D77bdDLpdj5MiR+PDDD8X9arUamzdvxuTJk5GSkoKWLVti5syZmDhxoljm1ltvxYoVK/DKK6/gpZdeQqdOnbBmzRokJye758MgIiIiIiIi8kIyQRAET1fCF7hr/UwiIiIiovraT98AABjdOx5vj+zm4doQkbu46zrUo1MViIiIiIiIiMi7MXBARERERERERDYxcEBERERERERENjFwQEREREREREQ2MXBARERERERERDYxcEBERERERERENjFwQEREREREREQ2MXBARERERERERDYxcEBERERERERENjFwQEREREREREQ2MXBARERERERERDYxcEBERERERERENjFwQEREREREREQ2MXBARERERERERDYxcEBERERERERENjFwQEREREREREQ2MXBARERERERERDYxcEBERERERERENjFwQEREREREREQ2MXBARERERERERDYxcEBERERERERENjFwQEREREREREQ2MXBARERERERERDYxcEBERERERERENjFwQEREREREREQ2MXBAREREROQjZDJP14CIfBEDB0REREREPkIQPF0DIvJFDBwQERERERERkU0MHBARERERERGRTQwcEBEREREREZFNDBwQERERERERkU0MHBARERER+QiuqkBErsDAARERERGRj+CqCkTkCgwcEBEREREREZFNDBwQERERERERkU0MHBARERERERGRTQwcEBERERH5CCZHJCJXYOCAiIiIiMhHMDkiEbkCAwdEREREREREZJPHAwcXL17E2LFj0aJFCwQHB6Nr16745ZdfxP2CIGDmzJmIi4tDcHAw0tLScPLkSbPnKCwsxJgxYxAREYHIyEiMHz8epaWlZmUOHz6MgQMHQqVSIT4+HvPmzbOoy9dff43OnTtDpVKha9eu2Lhxo2veNBEREREREVEz4dHAwbVr19C/f38EBgbihx9+QE5ODubPn4+oqCixzLx58/Dhhx9i8eLF2LNnD0JDQ5Geno7KykqxzJgxY3D06FFkZmZi/fr12L59OyZOnCjuLy4uxpAhQ5CQkID9+/fjn//8J1577TV88sknYpldu3bhgQcewPjx43Hw4EGMGDECI0aMQHZ2tns+DCIiIiIiIiIvJBMEz82Emj59Onbu3Imff/7Z6n5BENC6dWs8++yzeO655wAAOp0OsbGxWLp0KUaPHo1jx44hKSkJ+/btQ69evQAAGRkZuOuuu3DhwgW0bt0aixYtwssvvwytVgulUim+9po1a3D8+HEAwKhRo1BWVob169eLr9+vXz/06NEDixcvbvS9FBcXQ61WQ6fTISIiokmfCxERERGRPdpP3wAAGN07Hm+P7Obh2hCRu7jrOtSjIw7Wrl2LXr164W9/+xtiYmJwyy23YMmSJeL+3NxcaLVapKWlidvUajX69u2LrKwsAEBWVhYiIyPFoAEApKWlQS6XY8+ePWKZQYMGiUEDAEhPT8eJEydw7do1sYzp6xjLGF+nvqqqKhQXF5v9EBERERF5EldVICJX8Gjg4Pfff8eiRYvQqVMnbNq0CZMmTcJTTz2FL774AgCg1WoBALGxsWaPi42NFfdptVrExMSY7Q8ICEB0dLRZGWvPYfoatsoY99c3d+5cqNVq8Sc+Pt7u909ERERE5ExcVYGIXMGjgQODwYCePXvirbfewi233IKJEydiwoQJkqYGeNqMGTOg0+nEn/Pnz3u6SkRERERERERO59HAQVxcHJKSksy2denSBefOnQMAaDQaAEB+fr5Zmfz8fHGfRqNBQUGB2f7a2loUFhaalbH2HKavYauMcX99QUFBiIiIMPshIiIiIiIi8jUeDRz0798fJ06cMNv222+/ISEhAQCQmJgIjUaDLVu2iPuLi4uxZ88epKamAgBSU1NRVFSE/fv3i2W2bt0Kg8GAvn37imW2b9+OmpoasUxmZiZuuukmcQWH1NRUs9cxljG+DhEREREREZE/8mjg4JlnnsHu3bvx1ltv4dSpU1ixYgU++eQTTJ48GQAgk8kwdepUvPnmm1i7di2OHDmChx9+GK1bt8aIESMA1I1QGDp0KCZMmIC9e/di586dmDJlCkaPHo3WrVsDAB588EEolUqMHz8eR48exapVq/DBBx9g2rRpYl2efvppZGRkYP78+Th+/Dhee+01/PLLL5gyZYrbPxciIiIiIkcwOSIRuUKAJ1+8d+/eWL16NWbMmIHXX38diYmJeP/99zFmzBixzAsvvICysjJMnDgRRUVFGDBgADIyMqBSqcQyy5cvx5QpU3D77bdDLpdj5MiR+PDDD8X9arUamzdvxuTJk5GSkoKWLVti5syZmDhxoljm1ltvxYoVK/DKK6/gpZdeQqdOnbBmzRokJye758MgIiIiImoiJkckIleQCQIPL87grvUziYiIiIjqaz99AwBgdO94vD2ym4drQ0Tu4q7rUI9OVSAiIiIiIiIi78bAARERERERERHZxMABEREREZGPYHJEInIFBg6IiIiIiIiIyCYGDoiIiIiIfATTnhORKzBwQEREREREREQ2MXBARERERERERDYxcEBERERERERENjFwQERERETkI7iqAhG5AgMHREREREQ+gskRicgVGDggIiIiIiIiIpuaHDgoLi7GmjVrcOzYMWfUh4iIiIiIiIi8iN2Bg/vvvx8LFiwAAFRUVKBXr164//770a1bN3z77bdOryAREREREREReY7dgYPt27dj4MCBAIDVq1dDEAQUFRXhww8/xJtvvun0ChIRERERkTRMjkhErmB34ECn0yE6OhoAkJGRgZEjRyIkJATDhg3DyZMnnV5BIiIiIiIiIvIcuwMH8fHxyMrKQllZGTIyMjBkyBAAwLVr16BSqZxeQSIiIiIikoarKhCRKwTY+4CpU6dizJgxCAsLQ0JCAm677TYAdVMYunbt6uz6EREREREREZEH2R04eOKJJ9C3b1+cO3cOd9xxB+TyukELN9xwA3McEBEREREREfkYu6Yq1NTUoEOHDggJCcE999yDsLAwcd+wYcPQv39/p1eQiIiIiIiIiDzHrsBBYGAgKisrXVUXIiIiIiJqAq6qQESuYHdyxMmTJ+Odd95BbW2tK+pDRERERERERF7E7hwH+/btw5YtW7B582Z07doVoaGhZvu/++47p1WOiIiIiMiV9AYBe3MLUVBSiZhwFfokRkMhb7637bmqAhG5gt2Bg8jISIwcOdIVdSEiIiIicpuM7DzMXpeDPN31qbhxahVmDU/C0OQ4D9aMiMi72B04+Pzzz11RDyIiIiIit8nIzsOkZQdQ/wa9VleJScsOYNHYngweEBH9we4cB0REREREzZneIGD2uhyLoAEAcdvsdTnQG5rfuH8mRyQiV7B7xAEAfPPNN/jqq69w7tw5VFdXm+07cOCAUypGREREROQKe3MLzaYn1CcAyNNVYm9uIVI7tHBfxYiIvJTdIw4+/PBDjBs3DrGxsTh48CD69OmDFi1a4Pfff8edd97pijoSERERETlNQYm05cWllvMmTI5IRK5gd+Dg3//+Nz755BN89NFHUCqVeOGFF5CZmYmnnnoKOp3OFXUkIiIiInKamHCVU8sREfk6uwMH586dw6233goACA4ORklJCQDgoYcewpdffunc2hEREREROVmfxGjEqVWwlQ5AhrrVFfokRruzWkREXsvuwIFGo0FhYSEAoF27dti9ezcAIDc3FwLHRhERERGRl1PIZZg1PMnqPmMwYdbwJCjkzS/TIJMjEpEr2B04GDx4MNauXQsAGDduHJ555hnccccdGDVqFO655x6nV5CIyJ/pDQKyTl/F94cuIuv01WaZ4ZuIyBsNTY7DorE90SJMabZdo1ZxKUYionrsXlXhk08+gcFgAABMnjwZLVq0wK5du3D33Xfjsccec3oFiYj8VUZ2HmavyzHL/B2nVmHW8CR2aImInGBochw0EcEY8e+dAIAvJ/RDn8ToZjnSgIjIlewOHMjlcsjl1wcqjB49GqNHj3ZqpYiI/F1Gdh4mLTtgsca4VleJScsO8G4YEZGTmAYJfGHpRc4cJiJXsDtwAABFRUXYu3cvCgoKxNEHRg8//LBTKkZE5K/0BgGz1+VYBA2AurXFZQBmr8vBHUka3hUjIiIiIpezO3Cwbt06jBkzBqWlpYiIiIDMJAOLTCZj4ICIqIn25haaTU+oTwCQp6vE3txCn7g7RkRERETeze7kiM8++yweffRRlJaWoqioCNeuXRN/jKstEBGR4wpKbAcNHClHRET+g6sqEJEr2B04uHjxIp566imEhIS4oj5ERH4vJlzl1HJERERERE1hd+AgPT0dv/zyiyvqQkREAPokRiNOrYKtm0Yy1K2u0Ccx2p3VIiKiZoDJEYnIFSQFDtauXSv+DBs2DM8//zxee+01fPvtt2b71q5d63BF3n77bchkMkydOlXcVllZKS75GBYWhpEjRyI/P9/scefOncOwYcMQEhKCmJgYPP/886itrTUr8+OPP6Jnz54ICgpCx44dsXTpUovXX7hwIdq3bw+VSoW+ffti7969Dr8XIqKmUMhlmDU8CQAsggfG32cNT2JiRCIiJxN41U1EZJWk5IgjRoyw2Pb6669bbJPJZNDr9XZXYt++ffj444/RrVs3s+3PPPMMNmzYgK+//hpqtRpTpkzBvffe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+s0aFFXUWG2/xnPfhaIKsV9TWF7daN29jbuuQxk4cJLmGjggIiIiIiKi5sld16HMcUBERERERERENjFwQEREREREREQ2MTmikxhnfBQXF3u4JkREREREROQPjNefrs5AwMCBk5SUlAAA4uPjPVwTIiIiIiIi8iclJSVQq9Uue34mR3QSg8GAS5cuITw8HDKZ92bgLC4uRnx8PM6fP88kjtRkbE/kTGxP5CxsS+RMbE/kTGxP5CzGtnTu3DnIZDK0bt0acrnrMhFwxIGTyOVytG3b1tPVkCwiIoIHK3IatidyJrYncha2JXImtidyJrYncha1Wu2WtsTkiERERERERERkEwMHRERERERERGQTAwd+JigoCLNmzUJQUJCnq0I+gO2JnIntiZyFbYmcie2JnIntiZzF3W2JyRGJiIiIiIiIyCaOOCAiIiIiIiIimxg4ICIiIiIiIiKbGDggIiIiIiIiIpsYOCAiIiIiIiIimxg48DMLFy5E+/btoVKp0LdvX+zdu9fTVSIP2759O4YPH47WrVtDJpNhzZo1ZvsFQcDMmTMRFxeH4OBgpKWl4eTJk2ZlCgsLMWbMGERERCAyMhLjx49HaWmpWZnDhw9j4MCBUKlUiI+Px7x581z91sjN5s6di969eyM8PBwxMTEYMWIETpw4YVamsrISkydPRosWLRAWFoaRI0ciPz/frMy5c+cwbNgwhISEICYmBs8//zxqa2vNyvz444/o2bMngoKC0LFjRyxdutTVb4/cbNGiRejWrRsiIiIQERGB1NRU/PDDD+J+tiVy1Ntvvw2ZTIapU6eK29ieSKrXXnsNMpnM7Kdz587ifrYlstfFixcxduxYtGjRAsHBwejatSt++eUXcb/X9MUF8hsrV64UlEql8NlnnwlHjx4VJkyYIERGRgr5+fmerhp50MaNG4WXX35Z+O677wQAwurVq832v/3224JarRbWrFkj/Prrr8Ldd98tJCYmChUVFWKZoUOHCt27dxd2794t/Pzzz0LHjh2FBx54QNyv0+mE2NhYYcyYMUJ2drbw5ZdfCsHBwcLHH3/srrdJbpCeni58/vnnQnZ2tnDo0CHhrrvuEtq1ayeUlpaKZR5//HEhPj5e2LJli/DLL78I/fr1E2699VZxf21trZCcnCykpaUJBw8eFDZu3Ci0bNlSmDFjhljm999/F0JCQoRp06YJOTk5wkcffSQoFAohIyPDre+XXGvt2rXChg0bhN9++004ceKE8NJLLwmBgYFCdna2IAhsS+SYvXv3Cu3btxe6desmPP300+J2tieSatasWcLNN98s5OXliT+XL18W97MtkT0KCwuFhIQE4e9//7uwZ88e4ffffxc2bdoknDp1SizjLX1xBg78SJ8+fYTJkyeLv+v1eqF169bC3LlzPVgr8ib1AwcGg0HQaDTCP//5T3FbUVGREBQUJHz55ZeCIAhCTk6OAEDYt2+fWOaHH34QZDKZcPHiRUEQBOHf//63EBUVJVRVVYllXnzxReGmm25y8TsiTyooKBAACD/99JMgCHVtJzAwUPj666/FMseOHRMACFlZWYIg1AWy5HK5oNVqxTKLFi0SIiIixPbzwgsvCDfffLPZa40aNUpIT0939VsiD4uKihI+/fRTtiVySElJidCpUychMzNT+NOf/iQGDtieyB6zZs0SunfvbnUf2xLZ68UXXxQGDBhgc7839cU5VcFPVFdXY//+/UhLSxO3yeVypKWlISsry4M1I2+Wm5sLrVZr1m7UajX69u0rtpusrCxERkaiV69eYpm0tDTI5XLs2bNHLDNo0CAolUqxTHp6Ok6cOIFr16656d2Qu+l0OgBAdHQ0AGD//v2oqakxa0+dO3dGu3btzNpT165dERsbK5ZJT09HcXExjh49KpYxfQ5jGR7LfJder8fKlStRVlaG1NRUtiVyyOTJkzFs2DCLvznbE9nr5MmTaN26NW644QaMGTMG586dA8C2RPZbu3YtevXqhb/97W+IiYnBLbfcgiVLloj7vakvzsCBn7hy5Qr0er3ZQQoAYmNjodVqPVQr8nbGttFQu9FqtYiJiTHbHxAQgOjoaLMy1p7D9DXItxgMBkydOhX9+/dHcnIygLq/tVKpRGRkpFnZ+u2psbZiq0xxcTEqKipc8XbIQ44cOYKwsDAEBQXh8ccfx+rVq5GUlMS2RHZbuXIlDhw4gLlz51rsY3sie/Tt2xdLly5FRkYGFi1ahNzcXAwcOBAlJSVsS2S333//HYsWLUKnTp2wadMmTJo0CU899RS++OILAN7VFw+w870RERE1avLkycjOzsaOHTs8XRVqxm666SYcOnQIOp0O33zzDR555BH89NNPnq4WNTPnz5/H008/jczMTKhUKk9Xh5q5O++8U/x/t27d0LdvXyQkJOCrr75CcHCwB2tGzZHBYECvXr3w1ltvAQBuueUWZGdnY/HixXjkkUc8XDtzHHHgJ1q2bAmFQmGR1TU/Px8ajcZDtSJvZ2wbDbUbjUaDgoICs/21tbUoLCw0K2PtOUxfg3zHlClTsH79emzbtg1t27YVt2s0GlRXV6OoqMisfP321FhbsVUmIiKCnTYfo1Qq0bFjR6SkpGDu3Lno3r07PvjgA7Ylssv+/ftRUFCAnj17IiAgAAEBAfjpp5/w4YcfIiAgALGxsWxP5LDIyEjceOONOHXqFI9NZLe4uDgkJSWZbevSpYs4/cWb+uIMHPgJpVKJlJQUbNmyRdxmMBiwZcsWpKamerBm5M0SExOh0WjM2k1xcTH27NkjtpvU1FQUFRVh//79YpmtW7fCYDCgb9++Ypnt27ejpqZGLJOZmYmbbroJUVFRbno35GqCIGDKlClYvXo1tm7disTERLP9KSkpCAwMNGtPJ06cwLlz58za05EjR8xOgJmZmYiIiBBPrKmpqWbPYSzDY5nvMxgMqKqqYlsiu9x+++04cuQIDh06JP706tULY8aMEf/P9kSOKi0txenTpxEXF8djE9mtf//+FktX//bbb0hISADgZX1xyWkUqdlbuXKlEBQUJCxdulTIyckRJk6cKERGRppldSX/U1JSIhw8eFA4ePCgAEB49913hYMHDwpnz54VBKFuCZjIyEjh+++/Fw4fPiz89a9/tboEzC233CLs2bNH2LFjh9CpUyezJWCKioqE2NhY4aGHHhKys7OFlStXCiEhIVyO0cdMmjRJUKvVwo8//mi2TFV5eblY5vHHHxfatWsnbN26Vfjll1+E1NRUITU1VdxvXKZqyJAhwqFDh4SMjAyhVatWVpepev7554Vjx44JCxcu5DJVPmj69OnCTz/9JOTm5gqHDx8Wpk+fLshkMmHz5s2CILAtUdOYrqogCGxPJN2zzz4r/Pjjj0Jubq6wc+dOIS0tTWjZsqVQUFAgCALbEtln7969QkBAgDBnzhzh5MmTwvLly4WQkBBh2bJlYhlv6YszcOBnPvroI6Fdu3aCUqkU+vTpI+zevdvTVSIP27ZtmwDA4ueRRx4RBKFuGZhXX31ViI2NFYKCgoTbb79dOHHihNlzXL16VXjggQeEsLAwISIiQhg3bpxQUlJiVubXX38VBgwYIAQFBQlt2rQR3n77bXe9RXITa+0IgPD555+LZSoqKoQnnnhCiIqKEkJCQoR77rlHyMvLM3ueM2fOCHfeeacQHBwstGzZUnj22WeFmpoaszLbtm0TevToISiVSuGGG24wew3yDY8++qiQkJAgKJVKoVWrVsLtt98uBg0EgW2JmqZ+4IDtiaQaNWqUEBcXJyiVSqFNmzbCqFGjhFOnTon72ZbIXuvWrROSk5OFoKAgoXPnzsInn3xitt9b+uIyQRAEyWMpiIiIiIiIiMivMMcBEREREREREdnEwAERERERERER2cTAARERERERERHZxMABEREREREREdnEwAERERERERER2cTAARERERERERHZxMABEREREREREdnEwAERERERERER2cTAARERERERERHZxMABEREREREREdnEwAERERERERER2cTAARERERERERHZ9P+lHw9iQH1FIQAAAABJRU5ErkJggg==", + "image/png": "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cCFOnjyJOXPm4Ndff8XUqVNd/rkQEREREdnDbculEZFXc2tyxA8//BCvvfYannzySeTn5yM6OhqPPfYYZs2aZSjzwgsvoKysDJMnT0ZRUREGDBiAtLQ0KBQKQ5kvv/wSU6dOxZAhQyCVSjFq1Ch88MEHhv0qlQpbtmzBlClTkJSUhPDwcMyaNQuTJ082lLnjjjuwatUqvPrqq3j55ZfRsWNHfP/990hMTHTNh0FERERERETkgSSCIDAw6QCuWj+TiIiIiMiaIQt34Oy1MgDA+beHu7k2RORsrroOdetUBSIiIiIiIiLybAwcEBEREREREZFVDBwQERERERERkVUMHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVUMHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVUMHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVUMHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVUMHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVUMHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVUMHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVUMHBAREREReQnB3RUgIq/EwAERERERERERWcXAARERERGRl5C4uwJE5JUYOCAiIiIiIiIiqxg4ICIiIiIiIiKrGDggIiIiIiIiIqsYOCAiIiIiIiIiqxg4ICIiIiIiIiKrGDggIiIiIiIiIqsYOCAiIiIiIiIiqxg4ICIiIiIiIiKrGDggIiIiIvISgrsrQEReiYEDIiIiIiIiIrKKgQMiIiIiIi8hcXcFiMgrMXBARERERERERFa5PXBw5coVjB8/Hq1atYK/vz+6du2KX3/91bBfEATMmjULUVFR8Pf3R0pKCk6fPm3yHAUFBRg3bhyUSiVCQkIwceJElJaWmpQ5evQoBg4cCIVCgZiYGCxYsKBeXb755ht07twZCoUCXbt2xaZNm5zzpomIiIiIiIiaCbcGDgoLC9G/f3/4+vrixx9/RFZWFhYuXIjQ0FBDmQULFuCDDz7AsmXLsG/fPgQGBiI1NRWVlZWGMuPGjcPx48eRnp6ODRs2YOfOnZg8ebJhf3FxMYYOHYrY2FgcPHgQ//rXvzBnzhx8/PHHhjJ79uzB2LFjMXHiRBw+fBgjR47EyJEjkZmZ6ZoPg4iIiIiIiMgDSQRBcFvy1Zdeegm7d+/GL7/8YnG/IAiIjo7Gs88+i+eeew4AoNFoEBkZiRUrVmDMmDE4ceIEEhIScODAAfTq1QsAkJaWhnvuuQeXL19GdHQ0li5dildeeQW5ubmQy+WG1/7+++9x8uRJAMDo0aNRVlaGDRs2GF6/X79+6NGjB5YtW9boeykuLoZKpYJGo4FSqWzS50JEREREZI8hC3fg7LUyAMD5t4e7uTZE5Gyuug5164iDdevWoVevXvj73/+OiIgI3H777Vi+fLlhf3Z2NnJzc5GSkmLYplKp0LdvX2RkZAAAMjIyEBISYggaAEBKSgqkUin27dtnKDNo0CBD0AAAUlNTcerUKRQWFhrKGL+Ovoz+dcxVVVWhuLjY5IeIiIiIiIjI27g1cHDu3DksXboUHTt2xObNm/HEE0/g6aefxhdffAEAyM3NBQBERkaaPC4yMtKwLzc3FxERESb7fXx8EBYWZlLG0nMYv4a1Mvr95ubPnw+VSmX4iYmJsfn9ExEREREREXk6twYOdDodevbsibfeegu33347Jk+ejEmTJomaGuBuM2fOhEajMfxcunTJ3VUiIiIiIiIicji3Bg6ioqKQkJBgsq1Lly64ePEiAECtVgMA8vLyTMrk5eUZ9qnVauTn55vsr62tRUFBgUkZS89h/BrWyuj3m/Pz84NSqTT5ISIiIiIiIvI2bg0c9O/fH6dOnTLZ9vvvvyM2NhYAEB8fD7Vaja1btxr2FxcXY9++fUhOTgYAJCcno6ioCAcPHjSU2bZtG3Q6Hfr27Wsos3PnTtTU1BjKpKen49ZbbzWs4JCcnGzyOvoy+tchIiIiIvJ0bst6TkReza2Bg+nTp2Pv3r146623cObMGaxatQoff/wxpkyZAgCQSCR45pln8Oabb2LdunU4duwYHn74YURHR2PkyJEA6kYoDBs2DJMmTcL+/fuxe/duTJ06FWPGjEF0dDQA4MEHH4RcLsfEiRNx/PhxrFmzBu+//z5mzJhhqMu0adOQlpaGhQsX4uTJk5gzZw5+/fVXTJ061eWfCxEREREREZGn8HHni/fu3Rtr167FzJkz8frrryM+Ph7vvfcexo0bZyjzwgsvoKysDJMnT0ZRUREGDBiAtLQ0KBQKQ5kvv/wSU6dOxZAhQyCVSjFq1Ch88MEHhv0qlQpbtmzBlClTkJSUhPDwcMyaNQuTJ082lLnjjjuwatUqvPrqq3j55ZfRsWNHfP/990hMTHTNh0FERERE1EQSd1eAiLySRBAEjmhyAFetn0lEREREZM2QhTtw9loZAOD828PdXBsicjZXXYe6daoCEREREREREXk2Bg6IiIiIiLwEhxITkTMwcEBEREREREREVjFwQERERETkJZgckYicgYEDIiIiIiIiIrKKgQMiIiIiIiIisoqBAyIiIiIiIiKyioEDIiIiIiIiIrKKgQMiIiIiIiIisoqBAyIiIiIiIiKyioEDIiIiIiIiIrKqyYGD4uJifP/99zhx4oQj6kNEREREREREHsTmwMEDDzyAxYsXAwAqKirQq1cvPPDAA+jWrRv+97//ObyCREREREQkjuDuChCRV7I5cLBz504MHDgQALB27VoIgoCioiJ88MEHePPNNx1eQSIiIiIiIiJyH5sDBxqNBmFhYQCAtLQ0jBo1CgEBARg+fDhOnz7t8AoSEREREZE4EndXgIi8ks2Bg5iYGGRkZKCsrAxpaWkYOnQoAKCwsBAKhcLhFSQiIiIiIiIi9/Gx9QHPPPMMxo0bh6CgIMTGxuLOO+8EUDeFoWvXro6uHxERERERERG5kc2BgyeffBJ9+/bFxYsXcdddd0EqrRu0cMsttzDHAREREREREZGXsWmqQk1NDdq3b4+AgADcd999CAoKMuwbPnw4+vfv7/AKEhEREREREZH72BQ48PX1RWVlpbPqQkREREREREQexubkiFOmTME777yD2tpaZ9SHiIiIiIiIiDyIzTkODhw4gK1bt2LLli3o2rUrAgMDTfZ/9913DqscEREREZEzaHUC9mcXIL+kEhHBCvSJD4NMysUMiYgssTlwEBISglGjRjmjLkRERERETpeWmYO567OQo7k5BTdKpcDsEQkYlhjlxpoREXkmmwMHn3/+uTPqQURERETkdGmZOXhi5SEIZttzNZV4YuUhLB3fs1kHD8zfFxGRI9ic44CIiIiIqDnS6gTMXZ9l8eJav23u+ixodbz8JiIyZvOIAwD49ttv8fXXX+PixYuorq422Xfo0CGHVIyIiIiIyJH2ZxeYTE8wJwDI0VRif3YBktu3cl3FHIhZGojIGWwecfDBBx9gwoQJiIyMxOHDh9GnTx+0atUK586dw9133+2MOhIRERERNVl+ibhlxcWWIyJqKWwOHPznP//Bxx9/jA8//BByuRwvvPAC0tPT8fTTT0Oj0TijjkRERERETRYRrHBoOSKilsLmwMHFixdxxx13AAD8/f1RUlICAHjooYfw1VdfObZ2REREREQO0ic+DFEqhdXh/BLUra7QJz7MldVyKGZnICJnsDlwoFarUVBQAABo164d9u7dCwDIzs6GIPBQRURERESeSSaVYPaIBIv79MGE2SMSIJMyUwARkTGbAweDBw/GunXrAAATJkzA9OnTcdddd2H06NG47777HF5BIqKWTKsTkHH2Bn44cgUZZ28w0zcRURMNS4zC0vE9ITGLDahVima/FCPA5IhE5Bw2r6rw8ccfQ6fTAQCmTJmCVq1aYc+ePbj33nvx2GOPObyCREQtVVpmDuauzzLJAB6lUmD2iIRm37ElInKnYYlRCPH3RWF5DQDgq0n90Cc+jCMNiIissDlwIJVKIZXeHKgwZswYjBkzxqGVIiJq6dIyc/DEykP15qrmairxxMpDXnFXjIjInSRGQw6a69KLRESuYnPgAACKioqwf/9+5OfnG0Yf6D388MMOqRgRUUul1QmYuz7LYoIrAXXDUOeuz8JdCWreHSMiIiIip7M5cLB+/XqMGzcOpaWlUCqVJtFaiUTCwAERURPtzy4wmZ5gTgCQo6nE/uwC3iUjIrKTtyb19s53RUTuZnNyxGeffRaPPvooSktLUVRUhMLCQsOPfrUFIiKyX36J9aCBPeWIiIiIiJrC5sDBlStX8PTTTyMgIMAZ9SEiavEighUOLUdERPVJzJdV8BLe+a6IyN1sDhykpqbi119/dUZdiIgIQJ/4MESpFFY7fxLUra7QJz7MldUiIvIq3jpVgYjIGUQFDtatW2f4GT58OJ5//nnMmTMH//vf/0z2rVu3zu6KvP3225BIJHjmmWcM2yorKw1LPgYFBWHUqFHIy8szedzFixcxfPhwBAQEICIiAs8//zxqa2tNyuzYsQM9e/aEn58fOnTogBUrVtR7/SVLliAuLg4KhQJ9+/bF/v377X4vRERNIZNKMHtEAoD6d470f88ekcDEiERERETkEqKSI44cObLettdff73eNolEAq1Wa3MlDhw4gI8++gjdunUz2T59+nRs3LgR33zzDVQqFaZOnYr7778fu3fvBgBotVoMHz4c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794tpKSkCOHh4UJ+fr4gCGxLZJv9+/cLPj4+wrx584TTp08LX375pRAQECCsXLnSUMZT+uIMHLQwH374odCuXTtBLpcLffr0Efbu3evuKpGbbd++XQBQ7+eRRx4RBKFuGZjXXntNiIyMFPz8/IQhQ4YIp06dMnmOGzduCGPHjhWCgoIEpVIpTJgwQSgpKTEp89tvvwkDBgwQ/Pz8hDZt2ghvv/22q94iuYildgRA+Pzzzw1lKioqhCeffFIIDQ0VAgIChPvuu0/IyckxeZ7z588Ld999t+Dv7y+Eh4cLzz77rFBTU2NSZvv27UKPHj0EuVwu3HLLLSavQd7h0UcfFWJjYwW5XC60bt1aGDJkiCFoIAhsS9Q05oEDticSa/To0UJUVJQgl8uFNm3aCKNHjxbOnDlj2M+2RLZav369kJiYKPj5+QmdO3cWPv74Y5P9ntIXlwiCIIgeS0FERERERERELQpzHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVUMHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVUMHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVUMHBARERERERGRVQwcEBEREREREZFVDBwQERERERERkVX/DyliDwheeVf6AAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -635,10 +635,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-11-09 22:07:51,809\tINFO dataset.py:2380 -- Tip: Use `take_batch()` instead of `take() / show()` to return records in pandas or numpy batch format.\n", - "2023-11-09 22:07:51,811\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[FlatMap(extract_sections->Limit[1])] -> LimitOperator[limit=1]\n", - "2023-11-09 22:07:51,812\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", - "2023-11-09 22:07:51,812\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + "2023-11-27 11:08:43,103\tINFO dataset.py:2380 -- Tip: Use `take_batch()` instead of `take() / show()` to return records in pandas or numpy batch format.\n", + "2023-11-27 11:08:43,105\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[FlatMap(extract_sections->Limit[1])] -> LimitOperator[limit=1]\n", + "2023-11-27 11:08:43,106\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-11-27 11:08:43,106\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" ] }, { @@ -659,7 +659,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "page_content='Environments#\\nRLlib works with several different types of environments, including Farama-Foundation Gymnasium, user-defined, multi-agent, and also batched environments.\\nTip\\nNot all environments work with all algorithms. Check out the algorithm overview for more information.' metadata={'source': 'https://docs.ray.io/en/master/rllib-env.html#environments'}\n" + "page_content='Ray Dashboard#\\nRay provides a web-based dashboard for monitoring and debugging Ray applications.\\nThe visual representation of the system state, allows users to track the performance\\nof applications and troubleshoot issues.' metadata={'source': 'https://docs.ray.io/en/master/ray-observability/getting-started.html#ray-dashboard'}\n" ] } ], @@ -713,9 +713,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-11-09 22:07:52,146\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[FlatMap(extract_sections)->FlatMap(partial)]\n", - "2023-11-09 22:07:52,147\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", - "2023-11-09 22:07:52,148\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + "2023-11-27 11:08:43,421\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[FlatMap(extract_sections)->FlatMap(partial)]\n", + "2023-11-27 11:08:43,421\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-11-27 11:08:43,422\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" ] }, { @@ -736,9 +736,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "2023-11-09 22:08:17,806\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[FlatMap(extract_sections)->FlatMap(partial->Limit[1])] -> LimitOperator[limit=1]\n", - "2023-11-09 22:08:17,807\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", - "2023-11-09 22:08:17,807\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + "2023-11-27 11:09:05,647\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[FlatMap(extract_sections)->FlatMap(partial->Limit[1])] -> LimitOperator[limit=1]\n", + "2023-11-27 11:09:05,648\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-11-27 11:09:05,648\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" ] }, { @@ -931,6 +931,14 @@ "os.environ[\"SQL_DUMP_FP\"] = f\"{EFS_DIR}/sql_dumps/{embedding_model_name.split('/')[-1]}_{chunk_size}_{chunk_overlap}.sql\"" ] }, + { + "cell_type": "markdown", + "id": "633f3c88-0c88-48b5-a6f9-4b08e3a0dc43", + "metadata": {}, + "source": [ + "**Note**: Run `bash setup-pgvector.sh` first!" + ] + }, { "cell_type": "code", "execution_count": null, @@ -939,6 +947,13 @@ "tags": [] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "NOTICE: table \"document\" does not exist, skipping\n" + ] + }, { "name": "stdout", "output_type": "stream", @@ -959,14 +974,6 @@ "echo $SQL_DUMP_FP" ] }, - { - "cell_type": "markdown", - "id": "633f3c88-0c88-48b5-a6f9-4b08e3a0dc43", - "metadata": {}, - "source": [ - "**Note**: Run `bash setup-pgvector.sh` first!" - ] - }, { "cell_type": "code", "execution_count": null, @@ -996,13 +1003,37 @@ "SET\n", "SET\n", "ALTER TABLE\n", - "ALTER TABLE\n", - "ALTER TABLE\n", - "ALTER TABLE\n", - "DROP SEQUENCE\n", - "DROP TABLE\n", + "ALTER TABLE\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "psql:/efs/shared_storage/goku/sql_dumps/gte-base_300_50.sql:20: ERROR: relation \"public.data_document\" does not exist\n", + "psql:/efs/shared_storage/goku/sql_dumps/gte-base_300_50.sql:22: ERROR: relation \"public.data_document\" does not exist\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "DROP SEQUENCE\n", - "DROP TABLE\n", + "DROP TABLE\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "psql:/efs/shared_storage/goku/sql_dumps/gte-base_300_50.sql:25: ERROR: sequence \"data_document_id_seq\" does not exist\n", + "psql:/efs/shared_storage/goku/sql_dumps/gte-base_300_50.sql:26: ERROR: table \"data_document\" does not exist\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "DROP EXTENSION\n", "CREATE EXTENSION\n", "COMMENT\n", @@ -1202,6 +1233,258 @@ "tags": [] }, "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6c7ba3d75fde47ff994a0d1a48e212bf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading .gitattributes: 0%| | 0.00/1.52k [00:00 %s LIMIT %s\", (embedding, num_chunks))\n", " cur.execute(\"SELECT *, (embedding <=> %s) AS similarity_score FROM document ORDER BY similarity_score LIMIT %s\", (embedding, num_chunks))\n", " rows = cur.fetchall()\n", " ids = [row[0] for row in rows]\n", @@ -1382,7 +1664,64 @@ "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "5aa2ea343ea44ae994b735d6e575b6cf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading tokenizer_config.json: 0%| | 0.00/28.0 [00:00" ] @@ -6375,7 +6713,7 @@ "id": "2463c757-f54e-4905-bd8b-d00a32c2ec7d", "metadata": {}, "source": [ - "It seems that the most performant LLM, `gpt-4`, is also the most expensive one. While `codellama-34b` is very close in quality but about 55X more cost-effective than `gpt-4` and 2X than `gpt-3.5-turbo`." + "It seems that the most performant LLM, `gpt-4`, is also the most expensive one. While `codellama-34b` is very close in quality but about 30X more cost-effective than `gpt-4` and 1.5X than `gpt-3.5-turbo`." ] }, { @@ -6391,11 +6729,11 @@ "output_type": "stream", "text": [ "Cost multiplier compared to codellama-34b-instruct-hf\n", - " gpt-3.5-turbo: 1.48X\n", - " gpt-4: 30.20X\n", + " gpt-3.5-turbo: 1.43X\n", + " gpt-4: 30.61X\n", " llama-2-7b-chat-hf: 0.15X\n", - " llama-2-13b-chat-hf: 0.25X\n", - " llama-2-70b-chat-hf: 1.01X\n", + " llama-2-13b-chat-hf: 0.26X\n", + " llama-2-70b-chat-hf: 1.02X\n", " codellama-34b-instruct-hf: 1.00X\n", " mistral-7b-instruct-v0.1: 0.15X\n" ] @@ -6469,15 +6807,17 @@ "Question for gpt-4:\n", " {'question': 'if I am inside of a anyscale cluster how do I get my cluster-env-build-id', 'target': 0}\n", "\n", - "Question for codellama-34b:\n", + "Question for OSS:\n", " {'question': 'what is num_samples in tune?', 'target': 1}\n" ] } ], "source": [ "# Sample records (1 = can be handled by OSS LLM)\n", - "print (\"Question for gpt-4:\\n\", [record for record in records if record[\"target\"] == 0][0]) \n", - "print (\"\\nQuestion for codellama-34b:\\n\", [record for record in records if record[\"target\"] == 1][0])" + "gpt_records = [record for record in records if record[\"target\"] == 0]\n", + "oss_records = [record for record in records if record[\"target\"] == 1]\n", + "print (\"Question for gpt-4:\\n\", gpt_records[0]) \n", + "print (\"\\nQuestion for OSS:\\n\", oss_records[0])" ] }, { @@ -6745,7 +7085,7 @@ "print (\"# total samples\", len(y_pred))\n", "print(f\"# samples for OSS models: {sum(y_pred)} ({sum(y_pred)*100/len(y_pred):.1f}%)\")\n", "print(f\"Performance on samples predicted for {LLM}: {np.mean([score_test[i] for i, p in enumerate(y_pred) if p]):.2f}\")\n", - "print(f\"Performance on samples predicted for gpt-4: {np.mean([score_test[i] for i, p in enumerate(y_pred) if not p]):.2f}\")" + "print(f\"Performance on samples predicted for GPT-4: {np.mean([score_test[i] for i, p in enumerate(y_pred) if not p]):.2f}\")" ] }, { diff --git a/rag/serve.py b/rag/serve.py index a1dc0cd..f03c280 100644 --- a/rag/serve.py +++ b/rag/serve.py @@ -18,7 +18,7 @@ from slack_bolt.adapter.socket_mode import SocketModeHandler from starlette.responses import StreamingResponse -from rag.config import EFS_DIR, EMBEDDING_DIMENSIONS, MAX_CONTEXT_LENGTHS +from rag.config import EMBEDDING_DIMENSIONS, MAX_CONTEXT_LENGTHS from rag.generate import QueryAgent from rag.index import build_or_load_index