{ "cells": [ { "cell_type": "markdown", "id": "d9ea7341", "metadata": {}, "source": [ "# Experiments\n", "The Experiment class creates Results. It has two constructors:\n", "\n", "```python\n", "1. class coba.Experiment(\n", " environments: cb.Environemnt | Sequence[cb.Environment], \n", " learners : cb.Learner | Sequence[cb.Learner],\n", " evaluators : cb.Evaluator | Sequence[cb.Evaluator] = cb.SequentialCB(),\n", " description:str = None)\n", "\n", "2. class coba.Experiment(\n", " eval_tuples: Sequence[Tuple[cb.Environment,cb.Learner,cb.Evaluator]],\n", " description:str = None)\n", "```\n", "\n", "Beyond creating results the Experiment class does four things:\n", "\n", "1. **Running** uncompleted experimental work\n", "2. **Saving/Restoring** completed experimental work\n", "3. **Logging** progress to console\n", "4. **Multiprocessing** experimental work, if requested\n", "\n", "This notebook covers how to get the most out of Experiment **construction**, **running**, **saving/restoring**, **logging**, and **multiprocessing**" ] }, { "cell_type": "markdown", "id": "cba03062-ee20-4e92-9b5c-803e2bf924e1", "metadata": {}, "source": [ "## Construction\n", "The two constructors for **Experiment** are given above. They have the following relationship:" ] }, { "cell_type": "code", "execution_count": 1, "id": "21d65ade-a2a7-499b-b183-433a269359ec", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import coba as cb\n", "\n", "#given any environments,learners and evalutors\n", "environments = cb.Environments.from_linear_synthetic(1000)\n", "evaluators = [cb.SequentialCB()]\n", "\n", "args1 = [environments,cb.RandomLearner(),evaluators]\n", "args2 = [(e,cb.RandomLearner(),v) for e in environments for v in evaluators]\n", "\n", "#these two experiments produce identical results\n", "f,ax = plt.subplots(figsize=(10,4),ncols=2,nrows=1)\n", "cb.Experiment(*args1).run(quiet=True).plot_learners(xlim=(10,None),ax=ax[0],out=None) \n", "cb.Experiment( args2).run(quiet=True).plot_learners(xlim=(10,None),ax=ax[1],out=None)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "73bbe571", "metadata": {}, "source": [ "## Running\n", "Once an **Experiment** has been created we can produce the experiment Result by calling run" ] }, { "cell_type": "code", "execution_count": 2, "id": "e2800d82-1422-4b13-a271-ff22e582e9f0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2024-02-08 14:23:07 -- Experiment Started\n", "2024-02-08 14:23:07 -- Recording Learner 0 parameters... (0.0 seconds) (completed)\n", "2024-02-08 14:23:07 -- Recording Evaluator 0 parameters... (0.0 seconds) (completed)\n", "2024-02-08 14:23:07 -- Recording Learner 1 parameters... (0.0 seconds) (completed)\n", "2024-02-08 14:23:07 -- Peeking at Environment 0... (0.01 seconds) (completed)\n", "2024-02-08 14:23:07 -- Recording Environment 0 parameters... (0.0 seconds) (completed)\n", "2024-02-08 14:23:07 -- Evaluating Learner 0 on Environment 0... (0.36 seconds) (completed)\n", "2024-02-08 14:23:07 -- Evaluating Learner 1 on Environment 0... (0.1 seconds) (completed)\n", "2024-02-08 14:23:07 -- Experiment Finished\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA64AAAGLCAYAAADH+M/eAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAACor0lEQVR4nOzdd3wUdf7H8dfuJtn0RkglQOg1ICARlB4NnA0rct5RLJwFFVE5sFBseBYOT1EsJ3jqT1DvRM9TFBGQJiBFeqS3kBBKet+d3x9jFpYECBiyCbyfj8c+dvc735n5zOxusp/9lrEYhmEgIiIiIiIiUktZPR2AiIiIiIiIyOkocRUREREREZFaTYmriIiIiIiI1GpKXEVERERERKRWU+IqIiIiIiIitZoSVxEREREREanVlLiKiIiIiIhIrabEVURERERERGo1Ja4iIiIiIiJSqylxlXOye/duLBYLM2fO9HQoF6TevXvTu3fvKtXNy8sjMjKSjz766PwGVUMaN27MsGHDPB3GBaG0tJT4+HjeeOMNT4ciIiIi8rsocT2NmTNnYrFYXDdfX19atGjByJEjycjI8HR4F6XyhLn8ZrVaCQ8PZ8CAASxfvtzT4XnEq6++SlBQELfddpur7ODBg4wdO5Y+ffoQFBSExWJh4cKFVd7msGHD3M7zyZ8DqTlpaWlMnDiRdevWnfW63t7ejB49mueee46ioqLqD05ERESkhnh5OoC64OmnnyYhIYGioiKWLFnCm2++yddff83GjRvx9/f3dHge0ahRIwoLC/H29vbI/gcPHswf/vAHHA4Hv/76K2+88QZ9+vRh1apVtG/f3iMxeUJpaSmvvvoqDz/8MDabzVWemprK3/72N5o3b0779u3PKam32+28++67FcpP3M/5kJqaitWq39TKpaWlMWnSJBo3bkzHjh3Pev3hw4czduxY/u///o877rij+gMUERERqQFKXKtgwIABdOnSBYC77rqLevXqMWXKFL744gsGDx5c6Tr5+fkEBATUSHw1ua9ynm5569SpE3/6059cz3v06MGAAQN4880360S3yOp6zb766isyMzO59dZb3co7d+7MkSNHCA8P57PPPuOWW2456217eXm5neOaYrfbz1jHE+/5uio0NJSrrrqKmTNnKnEVERGROkvNGuegb9++AOzatQswu1UGBgayY8cO/vCH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KSkpcZXPnDmzyslvt27d+Pnnn6tUtzYYNGgQaWlpvPvuu/zyyy9V7iZcmeTkZHx8fPjHP/7h9jr885//JDs7+7Szcp8vVf0cno3yz8/J74mqfJbLrV69GovFQrdu3c56/yIiIiK1gVpcz6Nrr72WPn368MQTT7B79246dOjAd999xxdffMGoUaNcrY+dO3fmpptuYurUqRw5csR1OZxff/0VqNq4tKZNm/Lss88ybtw4du/ezcCBAwkKCmLXrl18/vnnjBgxgkcffZQffviBkSNHcsstt9CiRQvKysr44IMPsNls3HTTTQA8/fTT/Pjjj1x99dU0atSIQ4cO8cYbb9CgQQO3a8ZWJjIykj59+jBlyhRyc3MrJCZWq5V3332XAQMG0LZtW4YPH05cXBwHDhxgwYIFBAcH89///vdcTjcPPfQQU6dO5YUXXmDWrFk89thjfPnll1xzzTUMGzaMzp07k5+fz4YNG/jss8/YvXu3q+tks2bNiI6OJjU11W1SrJ49e/LXv/4VoELies011/DBBx8QEhJCmzZtWL58Od9//73bZZJOx9vbm2effZa//OUv9O3bl0GDBrFr1y5mzJhR5TGu119/PR988AG//vprhRa+8ha3TZs2AfDBBx+wZMkSAJ588skzbrusrIwPP/yw0mU33HCD2w8SVVV+neNHH33U7T13LurXr8+4ceOYNGkS/fv357rrriM1NZU33niDSy+91G3So5pS1c/h2W4zNDSU6dOnExQUREBAAElJSfzyyy9n/CyXmzdvHpdffnmV35siIiIitU6NzmFcx5RfhmPVqlWnrTd06FAjICCg0mW5ubnGww8/bMTGxhre3t5G8+bNjZdeesnt0iGGYRj5+fnG/fffb4SHhxuBgYHGwIEDjdTUVAMwXnjhBVe98svhnOpSNf/+97+NK664wggICDACAgKMVq1aGffff7+RmppqGIZh7Ny507jjjjuMpk2bGr6+vkZ4eLjRp08f4/vvv3dtY/78+cb1119vxMbGGj4+PkZsbKwxePBgt8vKVHY5nHLvvPOOARhBQUFGYWFhpXGuXbvWuPHGG4169eoZdrvdaNSokXHrrbca8+fPr/wkn7Tfl156qdLlw4YNM2w2m+tSQ7m5uca4ceOMZs2aGT4+PkZERITRvXt34+WXX3a73IlhGMYtt9xiAMbs2bNdZSUlJYa/v7/h4+NT4ViOHTtmDB8+3IiIiDACAwONlJQUY+vWrae8nMup3kdvvPGGkZCQYNjtdqNLly7Gjz/+aPTq1euMl8MxDPPyKREREcYzzzxTYRmnuJxNVT72p7scDmDs2rXrtMdWflmZyi7Bc/vtt7suoVOZsz1/r7/+utGqVSvD29vbiIqKMu69917j2LFjbnV69epltG3bttLjPPFyNuVxn3yJmVPFcKrP45k+h2cTk2EYxhdffGG0adPG8PLycn3uqvJZNgzDyMrKMnx8fIx33323wr5ERERE6gqLYZynKUnld1u3bh2XXHIJH374Ibfffrunw5Fa6plnnmHGjBls27btlJP9yMVr6tSpvPjii+zYsaPaJwgTERERqSka41pLFBYWViibOnUqVquVnj17eiAiqSsefvhh8vLymDVrlqdDkVqmtLSUKVOm8OSTTyppFRERkTpNY1xriRdffJHVq1fTp08fvLy8+Oabb/jmm28YMWJEhWtHipwoMDCwwvVBRcAcR713715PhyEiIiLyu6mrcC0xb948Jk2axObNm8nLy6Nhw4b8+c9/5oknnsDLS78viIiIiIjIxUuJq4iIiIiIiNRqGuMqIiIiIiIitZoSVxEREREREanVNHiyEk6nk7S0NIKCgrBYLJ4OR0RERKrAMAxyc3OJjY3FatVv8yIiFxIlrpVIS0vTTL4iIiJ11L59+2jQoIGnwxARkWqkxLUSQUFBgPmPLzg42MPRiIiISFXk5OQQHx/v+j8uIiIXDiWulSjvHhwcHKzEVUREpI7RMB8RkQuPBoCIiIiIiIhIrabEVURERERERGo1Ja4iIiIiIiJSqylxFRERERERkVpNiauIiIiIiIjUah5PXKdNm0bjxo3x9fUlKSmJlStXnrZ+VlYW999/PzExMdjtdlq0aMHXX3/9u7YpIiIiIiIitZdHL4cze/ZsRo8ezfTp00lKSmLq1KmkpKSQmppKZGRkhfolJSVceeWVREZG8tlnnxEXF8eePXsIDQ09522KiIjIucktKiW7sJRSh0FEoA9Bvt5uy0sdTnKLyli56yh7juRzJL+EED9vLBbo1DCMy5rU81DkIiJS11gMwzA8tfOkpCQuvfRSXn/9dQCcTifx8fE88MADjB07tkL96dOn89JLL7F161a8vb0rLD+XbQIUFxdTXFzsel5+AfPs7Gxd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jBKHe+IaHVJ5l+D6gfaaCElERERERKTWU+JagzLzit2e390jgejgiglq/7bRWE8xFlZERERERORio+u41qDDvyWu4QE+TLi2DVe3j+H7LRludX58rI8mZhIRERERETlBrWhxnTZtGo0bN8bX15ekpCRWrlx5yrrvvPMOPXr0ICwsjLCwMJKTkyvUHzZsGBaLxe3Wv3//830YZ1SeuDarH8j1HePwslndugoH+NiICfXFYlFrq4iIiIiISDmPJ66zZ89m9OjRTJgwgTVr1tChQwdSUlI4dOhQpfUXLlzI4MGDWbBgAcuXLyc+Pp6rrrqKAwcOuNXr378/Bw8edN0+/vjjmjic0zqcayauEUE+rrLoYF/X4z6tIvG2efwlERERERERqVU8niVNmTKFu+++m+HDh9OmTRumT5+Ov78/7733XqX1P/roI+677z46duxIq1atePfdd3E6ncyfP9+tnt1uJzo62nULCws7ZQzFxcXk5OS43c6Hw3klAEScMPFS/aDjj3s2r39e9isiIiIiIlKXeTRxLSkpYfXq1SQnJ7vKrFYrycnJLF++vErbKCgooLS0lPDwcLfyhQsXEhkZScuWLbn33ns5cuTIKbcxefJkQkJCXLf4+PhzO6AzGJXcnJWP9+OBvs1dZTarhRE9m5DcOorrL4k9L/sVERERERGpyyyGYRie2nlaWhpxcXEsW7aMbt26ucrHjBnDokWLWLFixRm3cd999/Htt9+yadMmfH3NbrezZs3C39+fhIQEduzYweOPP05gYCDLly/HZrNV2EZxcTHFxcdn/M3JySE+Pp7s7GyCg4Or4UhFRETkfMvJySEkJET/v0VELkB1elbhF154gVmzZrFw4UJX0gpw2223uR63b9+exMREmjZtysKFC+nXr1+F7djtdux2XTdVRERERESkNvJoV+GIiAhsNhsZGe6XhMnIyCA6Ovq067788su88MILfPfddyQmJp62bpMmTYiIiGD79u2/O2YRERERERGpWR5NXH18fOjcubPbxErlEy2d2HX4ZC+++CLPPPMMc+fOpUuXLmfcz/79+zly5AgxMTHVEreIiIiIiIjUHI/PKjx69Gjeeecd3n//fbZs2cK9995Lfn4+w4cPB2DIkCGMGzfOVf9vf/sbTz31FO+99x6NGzcmPT2d9PR08vLyAMjLy+Oxxx7jp59+Yvfu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kSP5/PPP+eGHH0hISHBb3rlzZ7y9vd3Od2pqKnv37nU73xs2bHD7sWDevHkEBwfTpk2bmjmQOszpdFJcXKxzfR7069ePDRs2sG7dOtetS5cu3H777a7HOufnT15eHjt27CAmJkbvbxERqR6enh3qQjBr1izDbrcbM2fONDZv3myMGDHCCA0NdZsdUaomNzfXWLt2rbF27VoDMKZMmWKsXbvW2LNnj2EYhvHCCy8YoaGhxhdffGGsX7/euP76642EhASjsLDQtY3+/fsbl1xyibFixQpjyZIlRvPmzY3Bgwd76pBqrXvvvdcICQkxFi5caBw8eNB1KygocNW55557jIYNGxo//PCD8fPPPxvdunUzunXr5lpeVlZmtGvXzrjqqquMdevWGXPnzjXq169vjBs3zhOHVKuNHTvWWLRokbFr1y5j/fr1xtixYw2LxWJ89913hmHoXNeEE2cVNgyd8+r0yCOPGAsXLjR27dplLF261EhOTjYiIiKMQ4cOGYahcy0iIr+fEtdq8tprrxkNGzY0fHx8jK5duxo//fSTp0OqkxYsWGAAFW5Dhw41DMO8JM5TTz1lREVFGXa73ejXr5+Rmprqto0jR44YgwcPNgIDA43g4GBj+PDhRm5urgeOpnar7DwDxowZM1x1CgsLjfvuu88ICwsz/P39jRtuuME4ePCg23Z2795tDBgwwPDz8zMiIiKMRx55xCgtLa3ho6n97rjjDqNRo0aGj4+PUb9+faNfv36upNUwdK5rwsmJq8559Rk0aJARExNj+Pj4GHFxccagQYOM7du3u5brXIuIyO9lMQzD8Exbr4iIiIiIiMiZaYyriIiIiIiI1GpKXEVERERERKRWU+IqIiIiIiIitZoSVxEREREREanVlLiKiIiIiIhIrabEVURERERERGo1Ja4iIiIiIiJSqylxFRERERERkVpNiauIyDmYOHEiHTt29HQYIiIiIhcFJa4ict4NGzaMgQMHVrm+xWJhzpw55y2es1VZPI8++ijz58/3TEAiIiIiFxkvTwcgInK+lJaW4u3tfV62HRgYSGBg4HnZtoiIiIi4U4uriNSo3r178+CDDzJmzBjCw8OJjo5m4sSJruWNGzcG4IYbbsBisbieA3zxxRd06tQJX19fmjRpwqRJkygrK3Mtt1gsvPnmm1x33XUEBATw3HPP4XA4uPPOO0lISMDPz4+WLVvy6quvVojrvffeo23bttjtdmJiYhg5cuRp4zm5q7DT6eTpp5+mQYMG2O12OnbsyNy5c13Ld+/ejcVi4T//+Q99+vTB39+fDh06sHz58t93QkVEREQuAkpcRaTGvf/++wQEBLBixQpefPFFnn76aebNmwfAqlWrAJgxYwYHDx50PV+8eDFDhgzhoYceYvPmzbz11lvMnDmT5557zm3bEydO5IYbbmDDhg3ccccdOJ1OGjRowKeffsrmzZsZP348jz/+OJ988olrnTfffJP777+fESNGsGHDBr788kuaNWt22nhO9uqrr/LKK6/w8ssvs379elJSUrjuuuvYtm2bW70nnniCRx99lHXr1tGiRQsGDx7slnyLiIiISEUWwzAMTwchIhe2YcOGkZWVxZw5c+jduzcOh4PFixe7lnft2pW+ffvywgsvAGbL6eeff+42LjY5OZl+/foxbtw4V9mHH37ImDFjSEtLc603atQo/v73v582npEjR5Kens5nn30GQFxcHMOHD+fZZ5+ttH5l8UycOJE5c+awbt061zbuv/9+Hn/8cbfjuvTSS5k2bRq7d+8mISGBd999lzvvvBOAzZs307ZtW7Zs2UKrVq3OcBZFRERELl4a4yoiNS4xMdHteUxMDIcOHTrtOr/88gtLly51a2F1OBwUFRVRUFCAv78/AF26dKmw7rRp03jvvffYu3cvhYWFlJSUuLr5Hjp0iLS0NPr163fOx5OTk0NaWhqXX365W/nll1/OL7/84lZ24rHHxMS4YlDiKiIiInJqSlxFpMadPGGSxWLB6XSedp28vDwmTZrEjTfeWGGZr6+v63FAQIDbslmzZvHoo4/yyiuv0K1bN4KCgnjppZdYsWIFAH5+fud6GOfkxGO3WCwAZzx2ERERkYudElcRqXW8vb1xOBxuZZ06dSI1NdU19rSqli5dSvfu3bnvvvtcZTt27HA9DgoKonHjxsyfP58+ffpUOZ4TBQcHExsby9KlS+nVq5fbvrt27XpW8YqIiIhIRUpcRaTWKU8kL7/8cux2O2FhYYwfP55rrrmGhg0bcvPNN2O1Wvnll1/YuHHjKcemAjRv3px//etffPvttyQkJPDBBx+watUqEhISXHUmTpzIPffcQ2RkJAMGDCA3N5elS5fywAMPnDKekz322GNMmDCBpk2b0rFjR2bMmMG6dev46KOPqv8EiYiIiFxkNKuwiNQ6r7zyCvPmzSM+Pp5LLrkEgJSUFL766iu+++47Lr30Ui677DL+/ve/06hRo9Nu6y9/+Qs33ngjgwYNIikpiSNHjri1vgIMHTqUqVOn8sYbb9C2bVuuueYat9mAK4vnZA8++CCjR4/mkUceoX379sydO5cvv/yS5s2b/86zISIiIiKaVVhERERERERqNbW4ioiIiIiISK2mxFVERERERERqNSWuIiIiIiIiUqspcRUREREREZFaTYmriIiIiIiI1GpKXEVERERERKRWU+IqIiIiIiIitZoSVxEREREREanVlLiKiIiIiIhIrabEVURERERERGo1Ja4iIiIiIiJSqylxFRERERERkVpNiauIiIiIiIjUakpcRUREREREpFZT4ioiIiIiIiK1mhJXERERERERqdWUuIqIiIiIiEitpsRVREREREREajUlriIiIiIiIlKrKXEVERERERGRWk2Jq4iIiIiIiNRqSlxFRERERESkVlPiKiIiIiIiIrWaElcRERERERGp1bw8HUBd4XA4KC0t9XQYIiIiIiIidZ63tzc2m63K9ZW4noFhGKSnp5OVleXpUERERERERC4YoaGhREdHY7FYzlhXiesZlCetkZGR+Pv7V+mkioiIiIiISOUMw6CgoIBDhw4BEBMTc8Z1lLiehsPhcCWt9erV83Q4IiIiIiIiFwQ/Pz8ADh06RGRk5Bm7DWtyptMoH9Pq7+/v4UhEREREREQuLOV5VlXmElLiWgXqHiwiIiIiIlK9zibPUuIqIiIiIiIitZoSV6kxJSUlNGvWjGXLllXrdnv37s2oUaOqdZvVbeLEiXTs2NHTYZyTymKfOHEiUVFRWCwW5syZ45G4qurEGHfv3o3FYmHdunUejUnqxuf2fKhNx30hfx7qwt+m82XmzJmEhoZ6Ooxqt3DhQiwWi67ycAoX0ut+8rHU5e9Qtdn5Pq+HDx8mMjKS/fv3V9s2lbheoKZNm0bjxo3x9fUlKSmJlStXejokpk+fTkJCAt27d/d0KPI7bNmyhUmTJvHWW29x8OBBBgwY4OmQTstTMX766ae0atUKX19f2rdvz9dff33GdRYuXEinTp2w2+00a9aMmTNnui2fOHEiFovF7daqVavzdATiCQcPHuSPf/wjLVq0wGq1ntckNz4+noMHD9KuXbsqr1PbvkCeKp668LfpfBk0aBC//vrrWa1Tm35Qgcrj6d69OwcPHiQkJMQzQdVy5/K61xWPPvoo8+fP93QYcpK3336b3r17ExwcXOmPShEREQwZMoQJEyZU2z6VuF6AZs+ezejRo5kwYQJr1qyhQ4cOpKSkuKab9gTDMHj99de58847PRZDXVeVQes1YceOHQBcf/31REdHY7fbPRzR6XkixmXLljF48GDuvPNO1q5dy8CBAxk4cCAbN2485Tq7du3i6quvpk+fPqxbt45Ro0Zx11138e2337rVa9u2LQcPHnTdlixZcl6OoaSk5LxsV06vuLiY+vXr8+STT9KhQ4fzui+bzUZ0dDReXjV/gYHz/f6qC3+bzhc/Pz8iIyM9su/z+br6+PhU+VqPFyNPvu4ncjgcOJ3Oat1mYGBgrbi6h/4vuisoKKB///48/vjjp6wzfPhwPvroI44ePVot+1TiepYMw6CgpKzGb4ZhVDnGKVOmcPfddzN8+HDatGnD9OnT8ff357333qvS+k6nkwYNGvDmm2+6la9duxar1cqePXt49NFHueaaa1zLpk6disViYe7cua6yZs2a8e677wKwevVqduzYwdVXX13l4zjR0qVL6d27N/7+/oSFhZGSksKxY8dcy8vKyhg5ciQhISFERETw1FNPVfmcFRcX8+ijjxIXF0dAQABJSUksXLgQgKKiItq2bcuIESNc9Xfs2EFQUJDrfJZ3aZkzZw7NmzfH19eXlJQU9u3bd8p9Op1Onn76aRo0aIDdbqdjx45u5668C9/s2bPp1asXvr6+fPTRRwC8++67tG7dGl9fX1q1asUbb7xR5fP417/+lRYtWuDv70+TJk146qmnKiTEL7zwAlFRUQQFBXHnnXdSVFTkWjZx4kSuvfZaAKxWa7V8gfjiiy/o1KkTvr6+NGnShEmTJlFWVuZabrFYePPNNxkwYAB+fn40adKEzz77zLW8pKSEkSNHEhMTg6+vL40aNWLy5Mlu65+uy+CiRYvo2rUrdrudmJgYxo4d67b/3r178+CDDzJmzBjCw8OJjo5m4sSJpz2mV199lf79+/PYY4/RunVrnnnmGTp16sTrr79+ynXKeyS88sortG7dmpEjR3LzzTfz97//3a2el5cX0dHRrltERMRpY6mqxo0b88wzzzBkyBCCg4Nd7/kzvWfKW7w++OADGjduTEhICLfddhu5ubmuOvn5+QwZMoTAwEBiYmJ45ZVXKuz/2LFjDBkyhLCwMPz9/RkwYADbtm1zLS//nH311Ve0bNkSf39/br75ZgoKCnj//fdp3LgxYWFhPPjggzgcjiod8xtvvOH6zEZFRXHzzTe7ljmdTiZPnkxCQgJ+fn506NDB7X0HsHHjRgYMGEBgYCBRUVH8+c9/5vDhw2d13Cdr3Lgxr776KkOGDDnvLUsndxUu74o5f/58unTpgr+/P927dyc1NRUwX4NJkybxyy+/uFr8y3sFZGVlcdddd1G/fn2Cg4Pp27cvv/zyi2tf5e+Td999l4SEBHx9fQGYO3cuV1xxBaGhodSrV49rrrnG9eNYuf379zN48GDCw8MJCAigS5curFix4rTxnPy537BhA3379sXPz4969eoxYsQI8vLyXMuHDRvGwIEDefnll4mJiaFevXrcf//9bu/1071fTnbkyBEGDx5MXFwc/v7+tG/fno8//ti1PDMzk+joaJ5//nlX2bJly/Dx8fndLUun6mZ5qs/osGHDWLRoEa+++qrrPO7evRs483u8d+/ejBw5klGjRhEREUFKSgpgfg9p3749AQEBxMfHc99997mdbzj1//VTxVNZV+F///vftG3bFrvdTuPGjSt8xho3bszzzz/PHXfcQVBQEA0bNuTtt992LT/T/4+TrVq1iiuvvJKIiAhCQkLo1asXa9ascS1fuHAhPj4+LF682FX24osvEhkZSUZGRo2+7gDPPvsskZGRBAUFcddddzF27Fi3HgpVed9X9W/zl19+SZs2bbDb7ezdu/e0363O1sk9K6oS95n2f6bPKJz6/X2iqnxPrIqFCxfStWtXAgICCA0N5fLLL2fPnj2u5Wf6rnSmv8Fw+u9352LUqFGMHTuWyy677JR12rZtS2xsLJ9//vnv2peLIadUWFhobN682SgsLHSV5ReXGo3++lWN3/KLS6sUc3FxsWGz2YzPP//crXzIkCHGddddV+Vjf/TRR40rrrjCreyRRx5xlX355ZdGSEiIUVZWZhiGYQwcONCIiIgw/vrXvxqGYRj79+83AGPbtm3G/7d352FRHHkfwL8DMjAII4cKA8oQFRATURCRkShGIZD1QqMST0jwjlc0EK8VNJEcxCMmZuOxwY2igvKabAL6eiI4RlZF8EJAgppoEBWNjogI/N4/eOmlOebw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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import coba as cb\n", "\n", "environments = cb.Environments.from_linear_synthetic(500)\n", "learners = [cb.VowpalEpsilonLearner(),cb.RandomLearner()]\n", "experiment = cb.Experiment(environments,learners)\n", "\n", "experiment_result = experiment.run()\n", "experiment_result.plot_learners(xlim=(10,None))" ] }, { "cell_type": "markdown", "id": "61ef3e9e-4451-45e0-9f02-583caccdf047", "metadata": {}, "source": [ "## Saving/Restoring\n", "\n", "We enable **Experiment** saving and restoring by passing in a file path to `run`. \n", "+ *Saving* -- When given a file path the experiment incrementally saves as it runs.\n", "+ *Restoring* -- If the given file path exists, the experiment loads the file and begins execution from the last save. " ] }, { "cell_type": "code", "execution_count": 46, "id": "117be20f-89a3-4c34-967e-60112350514f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "---------------------------------------------\n", " FIRST RUN WILL EXECUTE AND SAVE TO FILE \n", "---------------------------------------------\n", "2023-12-22 13:25:20 -- Experiment Started\n", "2023-12-22 13:25:20 -- Recording Learner 0 parameters... (0.0 seconds) (completed)\n", "2023-12-22 13:25:20 -- Recording Evaluator 0 parameters... (0.0 seconds) (completed)\n", "2023-12-22 13:25:20 -- Recording Learner 1 parameters... (0.0 seconds) (completed)\n", "2023-12-22 13:25:20 -- Peeking at Environment 0... (0.0 seconds) (completed)\n", "2023-12-22 13:25:20 -- Recording Environment 0 parameters... (0.0 seconds) (completed)\n", "2023-12-22 13:25:20 -- Peeking at Environment 0... (0.0 seconds) (completed)\n", "2023-12-22 13:25:20 -- Evaluating Learner 0 on Environment 0... (0.22 seconds) (completed)\n", "2023-12-22 13:25:20 -- Peeking at Environment 0... (0.0 seconds) (completed)\n", "2023-12-22 13:25:20 -- Evaluating Learner 1 on Environment 0... (0.08 seconds) (completed)\n", "2023-12-22 13:25:20 -- Experiment Finished\n", "{'Learners': 2, 'Environments': 1, 'Interactions': 1000}\n", "\n", "---------------------------------------------\n", " ON THE SECOND RUN WE RESTORE THE FIRST \n", "---------------------------------------------\n", "2023-12-22 13:25:20 -- Experiment Started\n", "2023-12-22 13:25:20 -- Restoring Results\n", "2023-12-22 13:25:20 -- Experiment Finished\n", "{'Learners': 2, 'Environments': 1, 'Interactions': 1000}\n" ] } ], "source": [ "from pathlib import Path\n", "import coba as cb\n", "\n", "if Path(\"result.log\").exists(): Path(\"result.log\").unlink()\n", "\n", "environments = cb.Environments.from_linear_synthetic(500,seed=2)\n", "learners = [cb.VowpalEpsilonLearner(),cb.RandomLearner()]\n", "experiment = cb.Experiment(environments,learners)\n", "\n", "print(\"---------------------------------------------\")\n", "print(\" FIRST RUN WILL EXECUTE AND SAVE TO FILE \")\n", "print(\"---------------------------------------------\")\n", "print(experiment.run(\"result.log\"))\n", "print()\n", "print(\"---------------------------------------------\")\n", "print(\" ON THE SECOND RUN WE RESTORE THE FIRST \")\n", "print(\"---------------------------------------------\")\n", "print(experiment.run(\"result.log\"))" ] }, { "cell_type": "markdown", "id": "ab2e28f9-b714-48a2-9990-45b4ac8b6b6b", "metadata": {}, "source": [ "## Progress Updates" ] }, { "cell_type": "markdown", "id": "5f883eb3-24c4-47e0-9ca3-20848bb837ba", "metadata": {}, "source": [ "**Experiment** progress updates are logged to the console. Logging can be customized in one of two ways.\n", "\n", "1. Turn off all logging by passing `quiet=True` to run\n", "2. Fully customize logging by changing the Logger in CobaContext\n" ] }, { "cell_type": "code", "execution_count": 11, "id": "3c590edf-78e4-46b7-8347-fa7ef4803667", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-------------------------\n", " DEFAULT LOGGING \n", "-------------------------\n", "2023-12-22 13:52:23 -- Experiment Started\n", "2023-12-22 13:52:23 -- Recording Learner 0 parameters...\n", "2023-12-22 13:52:23 -- Recording Learner 0 parameters... (0.0 seconds) (completed)\n", "2023-12-22 13:52:23 -- Recording Evaluator 0 parameters...\n", "2023-12-22 13:52:23 -- Recording Evaluator 0 parameters... (0.0 seconds) (completed)\n", "2023-12-22 13:52:23 -- Peeking at Environment 0...\n", "2023-12-22 13:52:23 -- Peeking at Environment 0... (0.0 seconds) (completed)\n", "2023-12-22 13:52:23 -- Recording Environment 0 parameters...\n", "2023-12-22 13:52:23 -- Recording Environment 0 parameters... (0.0 seconds) (completed)\n", "2023-12-22 13:52:23 -- Peeking at Environment 0...\n", "2023-12-22 13:52:23 -- Peeking at Environment 0... (0.0 seconds) (completed)\n", "2023-12-22 13:52:23 -- Evaluating Learner 0 on Environment 0...\n", "2023-12-22 13:52:23 -- Evaluating Learner 0 on Environment 0... (0.09 seconds) (completed)\n", "2023-12-22 13:52:23 -- Experiment Finished\n", "{'Learners': 1, 'Environments': 1, 'Interactions': 500}\n", "\n", "-------------------------\n", " WITH quiet=True \n", "-------------------------\n", "{'Learners': 1, 'Environments': 1, 'Interactions': 500}\n", "\n", "-------------------------\n", " WITH BasicLogger \n", "-------------------------\n", "2023-12-22 13:52:24 -- Experiment Started\n", "2023-12-22 13:52:24 -- Recording Learner 0 parameters...\n", "2023-12-22 13:52:24 -- Recording Learner 0 parameters... (0.0 seconds) (completed)\n", "2023-12-22 13:52:24 -- Recording Evaluator 0 parameters...\n", "2023-12-22 13:52:24 -- Recording Evaluator 0 parameters... (0.0 seconds) (completed)\n", "2023-12-22 13:52:24 -- Peeking at Environment 0...\n", "2023-12-22 13:52:24 -- Peeking at Environment 0... (0.0 seconds) (completed)\n", "2023-12-22 13:52:24 -- Recording Environment 0 parameters...\n", "2023-12-22 13:52:24 -- Recording Environment 0 parameters... (0.0 seconds) (completed)\n", "2023-12-22 13:52:24 -- Peeking at Environment 0...\n", "2023-12-22 13:52:24 -- Peeking at Environment 0... (0.0 seconds) (completed)\n", "2023-12-22 13:52:24 -- Evaluating Learner 0 on Environment 0...\n", "2023-12-22 13:52:24 -- Evaluating Learner 0 on Environment 0... (0.1 seconds) (completed)\n", "2023-12-22 13:52:24 -- Experiment Finished\n", "{'Learners': 1, 'Environments': 1, 'Interactions': 500}\n" ] } ], "source": [ "import coba as cb\n", "\n", "print(\"-------------------------\")\n", "print(\" DEFAULT LOGGING \")\n", "print(\"-------------------------\")\n", "print(cb.Experiment(cb.Environments.from_linear_synthetic(500),cb.RandomLearner()).run())\n", "\n", "print()\n", "print(\"-------------------------\")\n", "print(\" WITH quiet=True \")\n", "print(\"-------------------------\")\n", "print(cb.Experiment(cb.Environments.from_linear_synthetic(500),cb.RandomLearner()).run(quiet=True))\n", "\n", "print()\n", "print(\"-------------------------\")\n", "print(\" WITH BasicLogger \")\n", "print(\"-------------------------\")\n", "\n", "# And here change the default global logger\n", "cb.CobaContext.logger = cb.BasicLogger()\n", "print(cb.Experiment(cb.Environments.from_linear_synthetic(500),cb.RandomLearner()).run())\n", "\n", "cb.CobaContext.logger = None #this restores to default" ] }, { "cell_type": "markdown", "id": "ea473627", "metadata": {}, "source": [ "## Multiprocessing\n", "\n", "**Experiment** provides multiprocessing support to speed up experiments. \n", "\n", "Multiprocessing happens at the level of environment-learner-evaluator, so learners do not need to be multiprocessed to benefit.\n", "\n", "Below is an example" ] }, { "cell_type": "code", "execution_count": 3, "id": "02241c90", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 PROCESS TIME: 1.596 {'Learners': 1, 'Environments': 4, 'Interactions': 8000}\n", "2 PROCESS TIME: 1.024 {'Learners': 1, 'Environments': 4, 'Interactions': 8000}\n", "4 PROCESS TIME: 0.755 {'Learners': 1, 'Environments': 4, 'Interactions': 8000}\n" ] } ], "source": [ "import time\n", "import coba as cb\n", "\n", "environments = cb.Environments.from_linear_synthetic(2000,seed=[1,2,3,4])\n", "learners = [cb.RandomLearner()]\n", "evaluators = [cb.SequentialCB()]\n", "\n", "args = [(e,l,v) for e in environments for l in learners for v in evaluators]\n", "\n", "# We have four triples in this experiment... (i.e., len(args) == 4)\n", "# This means multiprocessing beyond four processes will not give us any additional speedup\n", "# Using more processes than your available cores will slow down the experiment time\n", "\n", "start = time.time()\n", "out = cb.Experiment(args).run(quiet=True,processes=1)\n", "print(f\"1 PROCESS TIME: {time.time()-start:.3f} {out}\")\n", "\n", "start = time.time()\n", "out = cb.Experiment(args).run(quiet=True,processes=2)\n", "print(f\"2 PROCESS TIME: {time.time()-start:.3f} {out}\")\n", "\n", "start = time.time()\n", "out = cb.Experiment(args).run(quiet=True,processes=4)\n", "print(f\"4 PROCESS TIME: {time.time()-start:.3f} {out}\")\n" ] }, { "cell_type": "markdown", "id": "fbafa749", "metadata": {}, "source": [ "### Multiprocessing Chunks\n", "To get more from multiprocessing we can chunk environments. This can beneficial when a given environment takes considerable resources to generate. \n", "\n", "Below we create 8 environments but chunk them after creating the first 4. This means there will be four multiprocessing tasks with 2 environments each." ] }, { "cell_type": "code", "execution_count": 5, "id": "88e3465e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 PROCESS TIME: 1.720 {'Learners': 1, 'Environments': 8, 'Interactions': 16000}\n", "2 PROCESS TIME: 0.557 {'Learners': 1, 'Environments': 8, 'Interactions': 16000}\n", "4 PROCESS TIME: 0.524 {'Learners': 1, 'Environments': 8, 'Interactions': 16000}\n" ] } ], "source": [ "environments = cb.Environments.from_linear_synthetic(2000,seed=[1,2,3,4]).chunk().shuffle([1,2])\n", "learners = [cb.RandomLearner()]\n", "evaluators = [cb.SequentialCB()]\n", "\n", "args = [(e,l,v) for e in environments for l in learners for v in evaluators]\n", "\n", "start = time.time()\n", "out = cb.Experiment(args).run(quiet=True,processes=1)\n", "print(f\"1 PROCESS TIME: {time.time()-start:.3f} {out}\")\n", "\n", "start = time.time()\n", "out = cb.Experiment(args).run(quiet=True,processes=2)\n", "print(f\"2 PROCESS TIME: {time.time()-start:.3f} {out}\")\n", "\n", "start = time.time()\n", "out = cb.Experiment(args).run(quiet=True,processes=4)\n", "print(f\"4 PROCESS TIME: {time.time()-start:.3f} {out}\")\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.13" } }, "nbformat": 4, "nbformat_minor": 5 }