From ef4eceb98e7615b5fd866cc58e9d0426672b045b Mon Sep 17 00:00:00 2001 From: "Sara A. Miskovich" Date: Wed, 21 Feb 2024 12:20:00 -0800 Subject: [PATCH 1/2] azure nb demo --- sdt_dask/clients/azure/__init__.py | 0 .../clients/azure/azure_example_script.py | 0 sdt_dask/examples/tool_demo_azure.ipynb | 480 ++++++++++++++++++ 3 files changed, 480 insertions(+) create mode 100644 sdt_dask/clients/azure/__init__.py create mode 100644 sdt_dask/clients/azure/azure_example_script.py create mode 100644 sdt_dask/examples/tool_demo_azure.ipynb diff --git a/sdt_dask/clients/azure/__init__.py b/sdt_dask/clients/azure/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/sdt_dask/clients/azure/azure_example_script.py b/sdt_dask/clients/azure/azure_example_script.py new file mode 100644 index 00000000..e69de29b diff --git a/sdt_dask/examples/tool_demo_azure.ipynb b/sdt_dask/examples/tool_demo_azure.ipynb new file mode 100644 index 00000000..0894e4e4 --- /dev/null +++ b/sdt_dask/examples/tool_demo_azure.ipynb @@ -0,0 +1,480 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "e14e423d-98b7-47ac-b6d9-a48a7b1fdae9", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "65780482", + "metadata": {}, + "outputs": [], + "source": [ + "import glob, os\n", + "import pandas as pd\n", + "from dask import delayed\n", + "from dask.distributed import Client\n", + "from solardatatools import DataHandler\n", + "from dask_cloudprovider.azure import AzureVMCluster\n", + "from sdt_dask.dataplugs.pvdaq_plug import PVDAQPlug" + ] + }, + { + "cell_type": "markdown", + "id": "174b67c3-9e32-4807-bd83-1095c108c1a8", + "metadata": {}, + "source": [ + "# Import user-defined dataplug" + ] + }, + { + "cell_type": "markdown", + "id": "5826988f-b6b4-4897-ac0b-99673d18bf3b", + "metadata": {}, + "source": [ + "## Pull from PVDAQ" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6ebedf1f-aeba-4f38-b24b-87a669d89b7c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\u001b[0;31mInit signature:\u001b[0m \u001b[0mPVDAQPlug\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mapi_key\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'DEMO_KEY'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpower_col\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'ac_power'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mDocstring:\u001b[0m \n", + "Dataplug class for retrieving data from the PVDAQ DB.\n", + "Note that the DEMO_KEY has a rate limit of 30/h, 50/d per IP address.\n", + "\u001b[0;31mFile:\u001b[0m ~/Documents/SLAC/PVInsight/solar-data-tools/sdt_dask/dataplugs/pvdaq_plug.py\n", + "\u001b[0;31mType:\u001b[0m type\n", + "\u001b[0;31mSubclasses:\u001b[0m " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "PVDAQPlug?" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ef65d7f9-ea36-43ea-93ec-65f5f35f552a", + "metadata": {}, + "outputs": [], + "source": [ + "data_plug = PVDAQPlug()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "80d01c94-01ef-4ab2-9102-e28a53627ac0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(34, 2011), (35, 2015), (51, 2012)]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "KEYS = [(34, 2011), (35, 2015), (51,2012)] # site ID and year pairs\n", + "KEYS" + ] + }, + { + "cell_type": "markdown", + "id": "2f4918c1-1f83-4610-8d5e-adb0d69e8549", + "metadata": {}, + "source": [ + "# Create SDT Dask task graph (run in parallel on multiple files)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "4a78dd64-6017-4f83-a559-16e869927849", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Define the pipeline run for as single dataset\n", + "def run_pipeline(datahandler, solver, solver_convex, verbose=False):\n", + " # Need to call this separately to have it run correctly in task graph \n", + " # since it doesn't return anything\n", + " datahandler.run_pipeline(solver=solver, solver_convex=solver_convex, verbose=verbose)\n", + " return datahandler\n", + "\n", + "\n", + "# Call above functions in a for loop over the keys\n", + "# and collect results in a DataFrame\n", + "reports = []\n", + "\n", + "for key in KEYS:\n", + " \n", + " df = delayed(data_plug.get_data)(key)\n", + " dh = delayed(DataHandler)(df)\n", + " dh_run = delayed(run_pipeline)(dh, solver=\"OSQP\", solver_convex=\"OSQP\", verbose=True)\n", + " report = dh_run.report\n", + " report = delayed(report)(return_values=True, verbose=False)\n", + " reports.append(report)\n", + "\n", + "df_reports = delayed(pd.DataFrame)(reports)\n", + "\n", + "# Visualizing the graph\n", + "df_reports.visualize()" + ] + }, + { + "cell_type": "markdown", + "id": "fa282b3f-be48-47be-95dd-a7ed8b4f206c", + "metadata": {}, + "source": [ + "# Get User-defined Client\n", + "## Azure VM\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "28c09148-f247-4301-91ee-76f8ec7657a1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Creating scheduler instance\n", + "Assigned public IP\n", + "Network interface ready\n", + "Creating VM\n", + "Created VM dask-8e064c77-scheduler\n", + "Waiting for scheduler to run at 4.246.59.103:8786\n", + "Scheduler is running\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/smiskov/opt/anaconda3/envs/pvi-dask/lib/python3.10/contextlib.py:142: UserWarning: Creating your cluster is taking a surprisingly long time. This is likely due to pending resources. Hang tight! \n", + " next(self.gen)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Creating worker instance\n", + "Creating worker instance\n", + "Network interface ready\n", + "Creating VM\n", + "Network interface ready\n", + "Creating VM\n", + "Created VM dask-8e064c77-worker-33dc3f4a\n", + "Created VM dask-8e064c77-worker-bb164391\n" + ] + } + ], + "source": [ + "resource_group = \"pvinsight-dask\"\n", + "vnet = \"dask-vnet\"\n", + "security_group = \"pvinsight-dask\"\n", + "image = \"smiskov/dask-sdt-sm-1:latest\"\n", + "\n", + "cluster = AzureVMCluster(\n", + " resource_group=resource_group,\n", + " vnet=vnet,\n", + " security_group=security_group,\n", + " location=\"westus2\",\n", + " vm_size=\"Standard_D4s_v3\",\n", + " public_ingress=True,\n", + " disk_size=100,\n", + " n_workers=2,\n", + " docker_image=image,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "18443343-1ee4-4102-9fee-c71ac5c3489a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'http://4.246.59.103:8787/status'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "client = Client(cluster)\n", + " \n", + "client.dashboard_link" + ] + }, + { + "cell_type": "markdown", + "id": "5f570ee2-a955-48d9-b3d4-c8674415705a", + "metadata": {}, + "source": [ + "# Compute pipelines on client" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2c02ec3f-fc0b-48e7-96eb-708ab47bf16b", + "metadata": {}, + "outputs": [], + "source": [ + "summary_table = client.compute(df_reports)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "3667592b-47c0-442b-a809-5a782914e1c5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Future: DataFrame\n", + " status: \n", + "\n", + "\n", + "finished,\n", + "\n", + "\n", + "\n", + " type: pandas.core.frame.DataFrame,\n", + "\n", + "\n", + " key: DataFrame-657aa25f-ae80-416f-91da-15480bcd7ddc" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "summary_table" + ] + }, + { + "cell_type": "markdown", + "id": "945921ca-685c-45c6-90db-72b7dc3ca40a", + "metadata": {}, + "source": [ + "# Resulting pipeline reports" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "55116117-8176-4ae8-a5a0-e39b3ec0110f", + "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", + "
lengthcapacitysamplingquality scoreclearness scoreinverter clippingclipped fractioncapacity changedata quality warningtime shift correctiontime zone correction
01.00000109.30000150.9835620.498630True0.016438FalseFalseFalse0
11.0000080.00000150.2794520.123288True0.019178FalseTrueFalse0
21.002745.20357150.9754100.234973True0.016393FalseTrueFalse0
\n", + "
" + ], + "text/plain": [ + " length capacity sampling quality score clearness score \\\n", + "0 1.00000 109.30000 15 0.983562 0.498630 \n", + "1 1.00000 80.00000 15 0.279452 0.123288 \n", + "2 1.00274 5.20357 15 0.975410 0.234973 \n", + "\n", + " inverter clipping clipped fraction capacity change data quality warning \\\n", + "0 True 0.016438 False False \n", + "1 True 0.019178 False True \n", + "2 True 0.016393 False True \n", + "\n", + " time shift correction time zone correction \n", + "0 False 0 \n", + "1 False 0 \n", + "2 False 0 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "summary_table.result()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "7d4ef19e-04c1-43d1-b950-0be0c97b6ffa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Terminated VM dask-8e064c77-worker-33dc3f4a\n", + "Terminated VM dask-8e064c77-worker-bb164391\n", + "Removed disks for VM dask-8e064c77-worker-33dc3f4a\n", + "Removed disks for VM dask-8e064c77-worker-bb164391\n", + "Deleted network interface\n", + "Deleted network interface\n", + "Terminated VM dask-8e064c77-scheduler\n", + "Removed disks for VM dask-8e064c77-scheduler\n", + "Deleted network interface\n", + "Unassigned public IP\n" + ] + } + ], + "source": [ + "client.close()\n", + "cluster.close()" + ] + } + ], + "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.11" + }, + "vscode": { + "interpreter": { + "hash": "563caecf4d2966d415acedaeb06ecd8f04c22f911b15c7586f55c5d4e031deb0" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 725df63d846a88729b3b551f92ab8c786ab6b4d0 Mon Sep 17 00:00:00 2001 From: "Sara A. Miskovich" Date: Wed, 21 Feb 2024 12:20:59 -0800 Subject: [PATCH 2/2] azure nb demo --- sdt_dask/clients/azure/__init__.py | 0 sdt_dask/clients/azure/azure_example_script.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 sdt_dask/clients/azure/__init__.py delete mode 100644 sdt_dask/clients/azure/azure_example_script.py diff --git a/sdt_dask/clients/azure/__init__.py b/sdt_dask/clients/azure/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/sdt_dask/clients/azure/azure_example_script.py b/sdt_dask/clients/azure/azure_example_script.py deleted file mode 100644 index e69de29b..00000000