Browse Source

stopping point

pull/314/head
craigprobus 4 weeks ago
parent
commit
624b34aea6
  1. 56
      week8/day1.ipynb

56
week8/day1.ipynb

@ -962,7 +962,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 67, "execution_count": 69,
"id": "f56d1e55-2a03-4ce2-bb47-2ab6b9175a02", "id": "f56d1e55-2a03-4ce2-bb47-2ab6b9175a02",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -980,10 +980,16 @@
"\u001b[37m└── \u001b[0m\u001b[34m⠦\u001b[0m Creating mount \n", "\u001b[37m└── \u001b[0m\u001b[34m⠦\u001b[0m Creating mount \n",
"\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n",
"\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠹\u001b[0m Creating objects...\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠹\u001b[0m Creating objects...\n",
"\u001b[37m└── \u001b[0m\u001b[34m⠏\u001b[0m Creating mount \n",
"\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n",
"\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠦\u001b[0m Creating objects...\n",
"\u001b[37m└── \u001b[0m\u001b[34m⠹\u001b[0m Creating mount \n",
"\u001b[37m \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n",
"\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠏\u001b[0m Creating objects...\n",
"\u001b[37m├── \u001b[0m🔨 Created mount \n", "\u001b[37m├── \u001b[0m🔨 Created mount \n",
"\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n",
"\u001b[37m│ \u001b[0me2.py\n", "\u001b[37m│ \u001b[0me2.py\n",
"\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m⠼\u001b[0m Creating objects...\n", "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[34m\u001b[0m Creating objects...\n",
"\u001b[37m├── \u001b[0m🔨 Created mount \n", "\u001b[37m├── \u001b[0m🔨 Created mount \n",
"\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n",
"\u001b[37m│ \u001b[0me2.py\n", "\u001b[37m│ \u001b[0me2.py\n",
@ -993,7 +999,7 @@
"\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n", "\u001b[37m│ \u001b[0m/Users/craigprobus/Repos/ed-donner-class/llm_engineering/week8/pricer_servic\n",
"\u001b[37m│ \u001b[0me2.py\n", "\u001b[37m│ \u001b[0me2.py\n",
"\u001b[37m└── \u001b[0m🔨 Created function Pricer.*.\n", "\u001b[37m└── \u001b[0m🔨 Created function Pricer.*.\n",
"\u001b[32m✓\u001b[0m App deployed in 1.531s! 🎉\n", "\u001b[32m✓\u001b[0m App deployed in 1.981s! 🎉\n",
"\n", "\n",
"View Deployment: \u001b[35mhttps://modal.com/apps/craigprobus/main/deployed/pricer-service\u001b[0m\n" "View Deployment: \u001b[35mhttps://modal.com/apps/craigprobus/main/deployed/pricer-service\u001b[0m\n"
] ]
@ -1006,27 +1012,15 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 68, "execution_count": 70,
"id": "9e19daeb-1281-484b-9d2f-95cc6fed2622", "id": "9e19daeb-1281-484b-9d2f-95cc6fed2622",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"ename": "RemoteError", "name": "stdout",
"evalue": "", "output_type": "stream",
"output_type": "error", "text": [
"traceback": [ "220.0\n"
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mRemoteError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[68], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m Pricer \u001b[38;5;241m=\u001b[39m modal\u001b[38;5;241m.\u001b[39mCls\u001b[38;5;241m.\u001b[39mfrom_name(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpricer-service\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPricer\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 2\u001b[0m pricer \u001b[38;5;241m=\u001b[39m Pricer()\n\u001b[0;32m----> 3\u001b[0m reply \u001b[38;5;241m=\u001b[39m \u001b[43mpricer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprice\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mremote\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mQuadcast HyperX condenser mic, connects via usb-c to your computer for crystal clear audio\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(reply)\n",
"File \u001b[0;32m/opt/anaconda3/envs/llms/lib/python3.11/site-packages/synchronicity/synchronizer.py:592\u001b[0m, in \u001b[0;36mSynchronizer._wrap_proxy_method.<locals>.proxy_method\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 590\u001b[0m instance \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__dict__\u001b[39m[synchronizer_self\u001b[38;5;241m.\u001b[39m_original_attr]\n\u001b[1;32m 591\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 592\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mwrapped_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43minstance\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 593\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m UserCodeException \u001b[38;5;28;01mas\u001b[39;00m uc_exc:\n\u001b[1;32m 594\u001b[0m uc_exc\u001b[38;5;241m.\u001b[39mexc\u001b[38;5;241m.\u001b[39m__suppress_context__ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n",
"File \u001b[0;32m/opt/anaconda3/envs/llms/lib/python3.11/site-packages/synchronicity/combined_types.py:29\u001b[0m, in \u001b[0;36mFunctionWithAio.__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m UserCodeException \u001b[38;5;28;01mas\u001b[39;00m uc_exc:\n\u001b[1;32m 28\u001b[0m uc_exc\u001b[38;5;241m.\u001b[39mexc\u001b[38;5;241m.\u001b[39m__suppress_context__ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m---> 29\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m uc_exc\u001b[38;5;241m.\u001b[39mexc\n",
"File \u001b[0;32m/opt/anaconda3/envs/llms/lib/python3.11/site-packages/modal/_object.py:286\u001b[0m, in \u001b[0;36mlive_method.<locals>.wrapped\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 283\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(method)\n\u001b[1;32m 284\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mwrapped\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 285\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhydrate()\n\u001b[0;32m--> 286\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m method(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n",
"File \u001b[0;32m/opt/anaconda3/envs/llms/lib/python3.11/site-packages/modal/_functions.py:1408\u001b[0m, in \u001b[0;36m_Function.remote\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1403\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_generator:\n\u001b[1;32m 1404\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m InvalidError(\n\u001b[1;32m 1405\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mA generator function cannot be called with `.remote(...)`. Use `.remote_gen(...)` instead.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1406\u001b[0m )\n\u001b[0;32m-> 1408\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_function(args, kwargs)\n",
"File \u001b[0;32m/opt/anaconda3/envs/llms/lib/python3.11/site-packages/modal/_functions.py:1358\u001b[0m, in \u001b[0;36m_Function._call_function\u001b[0;34m(self, args, kwargs)\u001b[0m\n\u001b[1;32m 1349\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_call_function\u001b[39m(\u001b[38;5;28mself\u001b[39m, args, kwargs) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m ReturnType:\n\u001b[1;32m 1350\u001b[0m invocation \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m _Invocation\u001b[38;5;241m.\u001b[39mcreate(\n\u001b[1;32m 1351\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1352\u001b[0m args,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1355\u001b[0m function_call_invocation_type\u001b[38;5;241m=\u001b[39mapi_pb2\u001b[38;5;241m.\u001b[39mFUNCTION_CALL_INVOCATION_TYPE_SYNC,\n\u001b[1;32m 1356\u001b[0m )\n\u001b[0;32m-> 1358\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m invocation\u001b[38;5;241m.\u001b[39mrun_function()\n",
"File \u001b[0;32m/opt/anaconda3/envs/llms/lib/python3.11/site-packages/modal/_functions.py:257\u001b[0m, in \u001b[0;36m_Invocation.run_function\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 249\u001b[0m ctx \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_retry_context\n\u001b[1;32m 250\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[1;32m 251\u001b[0m \u001b[38;5;129;01mnot\u001b[39;00m ctx\n\u001b[1;32m 252\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m ctx\u001b[38;5;241m.\u001b[39mretry_policy\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m ctx\u001b[38;5;241m.\u001b[39msync_client_retries_enabled\n\u001b[1;32m 256\u001b[0m ):\n\u001b[0;32m--> 257\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_single_output()\n\u001b[1;32m 259\u001b[0m \u001b[38;5;66;03m# User errors including timeouts are managed by the user specified retry policy.\u001b[39;00m\n\u001b[1;32m 260\u001b[0m user_retry_manager \u001b[38;5;241m=\u001b[39m RetryManager(ctx\u001b[38;5;241m.\u001b[39mretry_policy)\n",
"File \u001b[0;32m/opt/anaconda3/envs/llms/lib/python3.11/site-packages/modal/_functions.py:245\u001b[0m, in \u001b[0;36m_Invocation._get_single_output\u001b[0;34m(self, expected_jwt)\u001b[0m\n\u001b[1;32m 236\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_get_single_output\u001b[39m(\u001b[38;5;28mself\u001b[39m, expected_jwt: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[1;32m 237\u001b[0m \u001b[38;5;66;03m# waits indefinitely for a single result for the function, and clear the outputs buffer after\u001b[39;00m\n\u001b[1;32m 238\u001b[0m item: api_pb2\u001b[38;5;241m.\u001b[39mFunctionGetOutputsItem \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 239\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpop_function_call_outputs(\n\u001b[1;32m 240\u001b[0m timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 243\u001b[0m )\n\u001b[1;32m 244\u001b[0m )\u001b[38;5;241m.\u001b[39moutputs[\u001b[38;5;241m0\u001b[39m]\n\u001b[0;32m--> 245\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m _process_result(item\u001b[38;5;241m.\u001b[39mresult, item\u001b[38;5;241m.\u001b[39mdata_format, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstub, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclient)\n",
"File \u001b[0;32m/opt/anaconda3/envs/llms/lib/python3.11/site-packages/modal/_utils/function_utils.py:497\u001b[0m, in \u001b[0;36m_process_result\u001b[0;34m(result, data_format, stub, client)\u001b[0m\n\u001b[1;32m 495\u001b[0m uc_exc \u001b[38;5;241m=\u001b[39m UserCodeException(exc_with_hints(exc))\n\u001b[1;32m 496\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m uc_exc\n\u001b[0;32m--> 497\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m RemoteError(result\u001b[38;5;241m.\u001b[39mexception)\n\u001b[1;32m 499\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 500\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m deserialize_data_format(data, data_format, client)\n",
"\u001b[0;31mRemoteError\u001b[0m: "
] ]
} }
], ],
@ -1039,7 +1033,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 37, "execution_count": 71,
"id": "c29b8c58-4cb7-44b0-ab7e-6469d3a318e8", "id": "c29b8c58-4cb7-44b0-ab7e-6469d3a318e8",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -1048,6 +1042,8 @@
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Requirement already satisfied: modal in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (0.73.155)\n", "Requirement already satisfied: modal in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (0.73.155)\n",
"Collecting modal\n",
" Downloading modal-0.73.165-py3-none-any.whl.metadata (2.5 kB)\n",
"Requirement already satisfied: aiohttp in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (3.11.12)\n", "Requirement already satisfied: aiohttp in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (3.11.12)\n",
"Requirement already satisfied: certifi in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (2025.1.31)\n", "Requirement already satisfied: certifi in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (2025.1.31)\n",
"Requirement already satisfied: click>=8.1.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (8.1.8)\n", "Requirement already satisfied: click>=8.1.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from modal) (8.1.8)\n",
@ -1083,7 +1079,15 @@
"Requirement already satisfied: hpack<5,>=4.1 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from h2<5,>=3.1.0->grpclib==0.4.7->modal) (4.1.0)\n", "Requirement already satisfied: hpack<5,>=4.1 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from h2<5,>=3.1.0->grpclib==0.4.7->modal) (4.1.0)\n",
"Requirement already satisfied: mdurl~=0.1 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from markdown-it-py>=2.2.0->rich>=12.0.0->modal) (0.1.2)\n", "Requirement already satisfied: mdurl~=0.1 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from markdown-it-py>=2.2.0->rich>=12.0.0->modal) (0.1.2)\n",
"Requirement already satisfied: annotated-types>=0.6.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi->modal) (0.7.0)\n", "Requirement already satisfied: annotated-types>=0.6.0 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi->modal) (0.7.0)\n",
"Requirement already satisfied: pydantic-core==2.27.2 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi->modal) (2.27.2)\n" "Requirement already satisfied: pydantic-core==2.27.2 in /opt/anaconda3/envs/llms/lib/python3.11/site-packages (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi->modal) (2.27.2)\n",
"Downloading modal-0.73.165-py3-none-any.whl (558 kB)\n",
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m559.0/559.0 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
"\u001b[?25hInstalling collected packages: modal\n",
" Attempting uninstall: modal\n",
" Found existing installation: modal 0.73.155\n",
" Uninstalling modal-0.73.155:\n",
" Successfully uninstalled modal-0.73.155\n",
"Successfully installed modal-0.73.165\n"
] ]
} }
], ],
@ -1121,7 +1125,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 44, "execution_count": 72,
"id": "ba9aedca-6a7b-4d30-9f64-59d76f76fb6d", "id": "ba9aedca-6a7b-4d30-9f64-59d76f76fb6d",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -1131,17 +1135,17 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 45, "execution_count": 74,
"id": "fe5843e5-e958-4a65-8326-8f5b4686de7f", "id": "fe5843e5-e958-4a65-8326-8f5b4686de7f",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"299.0" "350.0"
] ]
}, },
"execution_count": 45, "execution_count": 74,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }

Loading…
Cancel
Save