diff --git a/stack-showcase/_assets/airflow_stack.png b/stack-showcase/_assets/airflow_stack.png index f26a37d9..e4b29a78 100644 Binary files a/stack-showcase/_assets/airflow_stack.png and b/stack-showcase/_assets/airflow_stack.png differ diff --git a/stack-showcase/_assets/default_stack.png b/stack-showcase/_assets/default_stack.png index 91e768b0..07ba8907 100644 Binary files a/stack-showcase/_assets/default_stack.png and b/stack-showcase/_assets/default_stack.png differ diff --git a/stack-showcase/_assets/local_sagmaker_so_stack.png b/stack-showcase/_assets/local_sagmaker_so_stack.png index 899e9b64..f9762766 100644 Binary files a/stack-showcase/_assets/local_sagmaker_so_stack.png and b/stack-showcase/_assets/local_sagmaker_so_stack.png differ diff --git a/stack-showcase/_assets/sagemaker_stack.png b/stack-showcase/_assets/sagemaker_stack.png index f57482ec..985f510c 100644 Binary files a/stack-showcase/_assets/sagemaker_stack.png and b/stack-showcase/_assets/sagemaker_stack.png differ diff --git a/stack-showcase/run_stack_showcase.ipynb b/stack-showcase/run_stack_showcase.ipynb index 769f2109..41558b9d 100644 --- a/stack-showcase/run_stack_showcase.ipynb +++ b/stack-showcase/run_stack_showcase.ipynb @@ -3,6 +3,52 @@ { "cell_type": "code", "execution_count": 1, + "id": "b567a1d3-f625-4b98-9852-fcc3f3fe9609", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", + "\u001b[?25l\u001b[2;36mFound existing ZenML repository at path \u001b[0m\n", + "\u001b[2;32m'/home/apenner/PycharmProjects/zenml-projects/stack-showcase'\u001b[0m\u001b[2;36m.\u001b[0m\n", + "\u001b[2;32m⠋\u001b[0m\u001b[2;36m Initializing ZenML repository at \u001b[0m\n", + "\u001b[2;36m/home/apenner/PycharmProjects/zenml-projects/stack-showcase.\u001b[0m\n", + "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠋\u001b[0m Initializing ZenML repository at \n", + "/home/apenner/PycharmProjects/zenml-projects/stack-showcase.\n", + "\n", + "\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", + "\u001b[2;36mConnecting to: \u001b[0m\u001b[2;32m'https://1cf18d95-zenml.cloudinfra.zenml.io'\u001b[0m\u001b[2;33m...\u001b[0m\n", + "\u001b[31mThe ZenML global configuration version (0.51.0) is higher than the version of ZenML currently being used (0.50.0). Read more about this issue and how to solve it here: \u001b[0m\u001b[1;36mhttps://docs.zenml.io/user-guide/advanced-guide/environment-management/global-settings-of-zenml#version-mismatch-downgrading\u001b[31m\u001b[0m\n", + "\u001b[1;35mIf your browser did not open automatically, please open the following URL into your browser to proceed with the authentication:\n", + "\n", + "https://1cf18d95-zenml.cloudinfra.zenml.io/devices/verify?device_id=fd53a8cf-9831-4b53-9d9e-4ff82142051f&user_code=4494f5b928c8c79f5b9b9322cc932521\n", + "\u001b[0m\n", + "\u001b[1;35mSuccessfully logged in.\u001b[0m\n", + "\u001b[1;35mUpdated the global store configuration.\u001b[0m\n", + "\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", + "\u001b[31mThe ZenML global configuration version (0.51.0) is higher than the version of ZenML currently being used (0.50.0). Read more about this issue and how to solve it here: \u001b[0m\u001b[1;36mhttps://docs.zenml.io/user-guide/advanced-guide/environment-management/global-settings-of-zenml#version-mismatch-downgrading\u001b[31m\u001b[0m\n", + "\u001b[2K\u001b[2;36mActive repository stack set to: \u001b[0m\u001b[2;32m'local-mlflow-stack'\u001b[0m.\n", + "\u001b[2K\u001b[32m⠏\u001b[0m Setting the repository active stack to 'local-mlflow-stack'...k'...\u001b[0m\n", + "\u001b[1A\u001b[2K" + ] + } + ], + "source": [ + "# To start with, we use the default stack\n", + "!zenml init\n", + "\n", + "# We also need to connect to a remote ZenML Instance\n", + "!zenml connect --url https://1cf18d95-zenml.cloudinfra.zenml.io\n", + "\n", + "# Now we set the stack\n", + "!zenml stack set local-mlflow-stack" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "id": "c53367f1-3951-48c7-9540-21daf818fa5d", "metadata": {}, "outputs": [ @@ -10,7 +56,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n" + "\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", + "\u001b[31mThe ZenML global configuration version (0.51.0) is higher than the version of ZenML currently being used (0.50.0). Read more about this issue and how to solve it here: \u001b[0m\u001b[1;36mhttps://docs.zenml.io/user-guide/advanced-guide/environment-management/global-settings-of-zenml#version-mismatch-downgrading\u001b[31m\u001b[0m\n" ] } ], @@ -52,7 +99,7 @@ "source": [ "# Start local with a simple training pipeline\n", "\n", - "First, lets run our training pipeline locally" + "Below you can see what the pipeline looks like. We will start by running this locally on the default-stack. This means the data between the steps is stored locally and the compute is also local." ] }, { @@ -65,40 +112,6 @@ "\"Drawing\"" ] }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b567a1d3-f625-4b98-9852-fcc3f3fe9609", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", - "\u001b[?25l\u001b[2;36mFound existing ZenML repository at path \u001b[0m\n", - "\u001b[2;32m'/home/apenner/PycharmProjects/zenml-projects/stack-showcase'\u001b[0m\u001b[2;36m.\u001b[0m\n", - "\u001b[2;32m⠋\u001b[0m\u001b[2;36m Initializing ZenML repository at \u001b[0m\n", - "\u001b[2;36m/home/apenner/PycharmProjects/zenml-projects/stack-showcase.\u001b[0m\n", - "\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠋\u001b[0m Initializing ZenML repository at \n", - "/home/apenner/PycharmProjects/zenml-projects/stack-showcase.\n", - "\n", - "\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1A\u001b[2K\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", - "\u001b[2K\u001b[2;36mActive repository stack set to: \u001b[0m\u001b[2;32m'default'\u001b[0m.\n", - "\u001b[2K\u001b[32m⠙\u001b[0m Setting the repository active stack to 'default'...t'...\u001b[0m\n", - "\u001b[1A\u001b[2K" - ] - } - ], - "source": [ - "# To start with, we use the default stack\n", - "!zenml init\n", - "!zenml stack set default\n", - "\n", - "# We also need to connect to a remote ZenML Instance\n", - "# !zenml connect --url ..." - ] - }, { "cell_type": "code", "execution_count": 3, @@ -113,6 +126,7 @@ "\n", "logger = get_logger(__name__)\n", "\n", + "# Here is what one of the steps in the pipeline looks like. Simple python function that just needs the `@step` decorator.\n", "\n", "@step\n", "def data_loader() -> pd.DataFrame:\n", @@ -123,36 +137,427 @@ " dataset.reset_index(drop=True, inplace=True)\n", " logger.info(f\"Dataset with {len(dataset)} records loaded!\")\n", "\n", - " ### YOUR CODE ENDS HERE ###\n", " return dataset\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "754a3069-9d13-4869-be64-a641071800cc", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1;35mDataset with 569 records loaded!\u001b[0m\n", + "\u001b[1;35mDataset with 569 records loaded!\u001b[0m\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", + " \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", + " \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", + " \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", + "
mean radiusmean texturemean perimetermean areamean smoothnessmean compactnessmean concavitymean concave pointsmean symmetrymean fractal dimension...worst textureworst perimeterworst areaworst smoothnessworst compactnessworst concavityworst concave pointsworst symmetryworst fractal dimensiontarget
017.9910.38122.801001.00.118400.277600.300100.147100.24190.07871...17.33184.602019.00.162200.665600.71190.26540.46010.118900
120.5717.77132.901326.00.084740.078640.086900.070170.18120.05667...23.41158.801956.00.123800.186600.24160.18600.27500.089020
219.6921.25130.001203.00.109600.159900.197400.127900.20690.05999...25.53152.501709.00.144400.424500.45040.24300.36130.087580
311.4220.3877.58386.10.142500.283900.241400.105200.25970.09744...26.5098.87567.70.209800.866300.68690.25750.66380.173000
420.2914.34135.101297.00.100300.132800.198000.104300.18090.05883...16.67152.201575.00.137400.205000.40000.16250.23640.076780
..................................................................
56421.5622.39142.001479.00.111000.115900.243900.138900.17260.05623...26.40166.102027.00.141000.211300.41070.22160.20600.071150
56520.1328.25131.201261.00.097800.103400.144000.097910.17520.05533...38.25155.001731.00.116600.192200.32150.16280.25720.066370
56616.6028.08108.30858.10.084550.102300.092510.053020.15900.05648...34.12126.701124.00.113900.309400.34030.14180.22180.078200
56720.6029.33140.101265.00.117800.277000.351400.152000.23970.07016...39.42184.601821.00.165000.868100.93870.26500.40870.124000
5687.7624.5447.92181.00.052630.043620.000000.000000.15870.05884...30.3759.16268.60.089960.064440.00000.00000.28710.070391
\n", + "

569 rows × 31 columns

\n", + "
" + ], + "text/plain": [ + " mean radius mean texture mean perimeter mean area mean smoothness \\\n", + "0 17.99 10.38 122.80 1001.0 0.11840 \n", + "1 20.57 17.77 132.90 1326.0 0.08474 \n", + "2 19.69 21.25 130.00 1203.0 0.10960 \n", + "3 11.42 20.38 77.58 386.1 0.14250 \n", + "4 20.29 14.34 135.10 1297.0 0.10030 \n", + ".. ... ... ... ... ... \n", + "564 21.56 22.39 142.00 1479.0 0.11100 \n", + "565 20.13 28.25 131.20 1261.0 0.09780 \n", + "566 16.60 28.08 108.30 858.1 0.08455 \n", + "567 20.60 29.33 140.10 1265.0 0.11780 \n", + "568 7.76 24.54 47.92 181.0 0.05263 \n", + "\n", + " mean compactness mean concavity mean concave points mean symmetry \\\n", + "0 0.27760 0.30010 0.14710 0.2419 \n", + "1 0.07864 0.08690 0.07017 0.1812 \n", + "2 0.15990 0.19740 0.12790 0.2069 \n", + "3 0.28390 0.24140 0.10520 0.2597 \n", + "4 0.13280 0.19800 0.10430 0.1809 \n", + ".. ... ... ... ... \n", + "564 0.11590 0.24390 0.13890 0.1726 \n", + "565 0.10340 0.14400 0.09791 0.1752 \n", + "566 0.10230 0.09251 0.05302 0.1590 \n", + "567 0.27700 0.35140 0.15200 0.2397 \n", + "568 0.04362 0.00000 0.00000 0.1587 \n", + "\n", + " mean fractal dimension ... worst texture worst perimeter worst area \\\n", + "0 0.07871 ... 17.33 184.60 2019.0 \n", + "1 0.05667 ... 23.41 158.80 1956.0 \n", + "2 0.05999 ... 25.53 152.50 1709.0 \n", + "3 0.09744 ... 26.50 98.87 567.7 \n", + "4 0.05883 ... 16.67 152.20 1575.0 \n", + ".. ... ... ... ... ... \n", + "564 0.05623 ... 26.40 166.10 2027.0 \n", + "565 0.05533 ... 38.25 155.00 1731.0 \n", + "566 0.05648 ... 34.12 126.70 1124.0 \n", + "567 0.07016 ... 39.42 184.60 1821.0 \n", + "568 0.05884 ... 30.37 59.16 268.6 \n", + "\n", + " worst smoothness worst compactness worst concavity \\\n", + "0 0.16220 0.66560 0.7119 \n", + "1 0.12380 0.18660 0.2416 \n", + "2 0.14440 0.42450 0.4504 \n", + "3 0.20980 0.86630 0.6869 \n", + "4 0.13740 0.20500 0.4000 \n", + ".. ... ... ... \n", + "564 0.14100 0.21130 0.4107 \n", + "565 0.11660 0.19220 0.3215 \n", + "566 0.11390 0.30940 0.3403 \n", + "567 0.16500 0.86810 0.9387 \n", + "568 0.08996 0.06444 0.0000 \n", + "\n", + " worst concave points worst symmetry worst fractal dimension target \n", + "0 0.2654 0.4601 0.11890 0 \n", + "1 0.1860 0.2750 0.08902 0 \n", + "2 0.2430 0.3613 0.08758 0 \n", + "3 0.2575 0.6638 0.17300 0 \n", + "4 0.1625 0.2364 0.07678 0 \n", + ".. ... ... ... ... \n", + "564 0.2216 0.2060 0.07115 0 \n", + "565 0.1628 0.2572 0.06637 0 \n", + "566 0.1418 0.2218 0.07820 0 \n", + "567 0.2650 0.4087 0.12400 0 \n", + "568 0.0000 0.2871 0.07039 1 \n", + "\n", + "[569 rows x 31 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ + "# Here's an example of what this function returns\n", + "\n", "data_loader()" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "8aa300f1-48df-4e62-87eb-0e2fc5735da8", "metadata": {}, "outputs": [], "source": [ - "from zenml.config import DockerSettings\n", - "\n", - "docker_settings = DockerSettings(\n", - " requirements=[\n", - " \"pyarrow\",\n", - " ],\n", - ")\n", + "from zenml import pipeline\n", "\n", - "@pipeline(settings={\"docker\": docker_settings})\n", + "@pipeline\n", "def training(\n", " train_dataset_id: Optional[UUID] = None,\n", " test_dataset_id: Optional[UUID] = None,\n", @@ -178,22 +583,65 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "d55342bf-33c5-4646-b1ce-e599a99cf568", "metadata": {}, "outputs": [], "source": [ - "pipeline_args = {\"enable_cache\": False}\n", + "pipeline_args = {\"enable_cache\": True}\n", + "\n", + "# Model Version config\n", "pipeline_args[\"config_path\"] = os.path.join(\"configs\", \"training.yaml\")\n", "fe_t_configured = training.with_options(**pipeline_args)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "f5f4aed8-7d87-4e07-a25c-345d327ad636", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1;35mInitiating a new run for the pipeline: \u001b[0m\u001b[1;36mtraining\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mReusing registered version: \u001b[0m\u001b[1;36m(version: 17)\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mNew model version \u001b[0m\u001b[1;36m11\u001b[1;35m was created.\u001b[0m\n", + "\u001b[1;35mExecuting a new run.\u001b[0m\n", + "\u001b[1;35mUsing user: \u001b[0m\u001b[1;36malexej@zenml.io\u001b[1;35m\u001b[0m\n", + "\u001b[1;35mUsing stack: \u001b[0m\u001b[1;36mlocal-mlflow-stack\u001b[1;35m\u001b[0m\n", + "\u001b[1;35m model_registry: \u001b[0m\u001b[1;36mmlflow\u001b[1;35m\u001b[0m\n", + "\u001b[1;35m experiment_tracker: \u001b[0m\u001b[1;36mmlflow\u001b[1;35m\u001b[0m\n", + "\u001b[1;35m artifact_store: \u001b[0m\u001b[1;36mdefault\u001b[1;35m\u001b[0m\n", + "\u001b[1;35m orchestrator: \u001b[0m\u001b[1;36mdefault\u001b[1;35m\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_loader\u001b[1;35m has started.\u001b[0m\n", + "\u001b[1;35mDataset with 541 records loaded!\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_loader\u001b[1;35m has finished in \u001b[0m\u001b[1;36m16.975s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_splitter\u001b[1;35m has started.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_splitter\u001b[1;35m has finished in \u001b[0m\u001b[1;36m24.058s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_preprocessor\u001b[1;35m has started.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_preprocessor\u001b[1;35m has finished in \u001b[0m\u001b[1;36m32.030s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mCaching \u001b[0m\u001b[1;36mdisabled\u001b[1;35m explicitly for \u001b[0m\u001b[1;36mmodel_trainer\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mmodel_trainer\u001b[1;35m has started.\u001b[0m\n", + "\u001b[1;35mTraining model DecisionTreeClassifier()...\u001b[0m\n", + "/home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages/_distutils_hack/__init__.py:33: UserWarning: Setuptools is replacing distutils.\n", + " warnings.warn(\"Setuptools is replacing distutils.\")\n", + "/home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages/zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py:242: FutureWarning: ``mlflow.gluon.autolog`` is deprecated since 2.5.0. This method will be removed in a future release.\n", + " gluon.autolog(disable=True)\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mmodel_trainer\u001b[1;35m has finished in \u001b[0m\u001b[1;36m32.616s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mmodel_evaluator\u001b[1;35m has started.\u001b[0m\n", + "\u001b[1;35mTrain accuracy=100.00%\u001b[0m\n", + "\u001b[1;35mTest accuracy=93.58%\u001b[0m\n", + "/home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages/zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py:242: FutureWarning: ``mlflow.gluon.autolog`` is deprecated since 2.5.0. This method will be removed in a future release.\n", + " gluon.autolog(disable=True)\n", + "\u001b[1;35mImplicitly linking artifact \u001b[0m\u001b[1;36moutput\u001b[1;35m to model \u001b[0m\u001b[1;36mbreast_cancer_classifier\u001b[1;35m version \u001b[0m\u001b[1;36m11\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mmodel_evaluator\u001b[1;35m has finished in \u001b[0m\u001b[1;36m26.665s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mRun \u001b[0m\u001b[1;36mtraining-2023_12_12-08_53_22_894175\u001b[1;35m has finished in \u001b[0m\u001b[1;36m2m31s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mDashboard URL: https://1cf18d95-zenml.cloudinfra.zenml.io/workspaces/default/pipelines/9c068ec9-5f73-4ceb-a685-63aff9172da6/runs/c49cd85e-bba4-49b8-a7fb-213ac60c047c/dag\u001b[0m\n" + ] + } + ], "source": [ "fe_t_configured()" ] @@ -211,7 +659,7 @@ "id": "14a840b1-288d-4713-98f4-bbe8d6e06140", "metadata": {}, "source": [ - "Let's farm some compute to AWS with a training job with a certain number of CPUs and Memory" + "Let's farm some compute to AWS with a training job with a certain number of CPUs and Memory. This can easily be done without and changes to the actual implementation of the pipeline. " ] }, { @@ -237,7 +685,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 9, "id": "48be8f60-9fbe-4d19-92e4-d9cd8289dbf7", "metadata": { "scrolled": true @@ -248,86 +696,154 @@ "output_type": "stream", "text": [ "\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", - "\u001b[2K\u001b[32m⠧\u001b[0m Installing integrations...Requirement already satisfied: sagemaker==2.117.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (2.117.0)\n", + "\u001b[2K\u001b[32m⠏\u001b[0m Installing integrations...Requirement already satisfied: sagemaker==2.117.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (2.117.0)\n", "Requirement already satisfied: kubernetes in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (25.3.0)\n", "Requirement already satisfied: aws-profile-manager in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (0.7.3)\n", "Requirement already satisfied: s3fs<=2023.4.0,>2022.3.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (2023.4.0)\n", "Requirement already satisfied: boto3<=1.26.76 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (1.26.76)\n", - "Requirement already satisfied: protobuf3-to-dict<1.0,>=0.1.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (0.1.5)\n", - "Requirement already satisfied: packaging>=20.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (23.2)\n", + "Requirement already satisfied: mlflow<=2.6.0,>=2.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (2.6.0)\n", + "Requirement already satisfied: mlserver>=1.3.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (1.3.5)\n", + "Requirement already satisfied: mlserver-mlflow>=1.3.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (1.3.5)\n", + "\u001b[2K\u001b[32m⠋\u001b[0m Installing integrations...Requirement already satisfied: google-pasta in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (0.2.0)\n", "Requirement already satisfied: importlib-metadata<5.0,>=1.4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (4.13.0)\n", - "Requirement already satisfied: protobuf<4.0,>=3.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (3.20.3)\n", - "Requirement already satisfied: schema in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (0.7.5)\n", - "Requirement already satisfied: pandas in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (1.5.3)\n", - "\u001b[2K\u001b[32m⠏\u001b[0m Installing integrations...Collecting attrs<23,>=20.3.0\n", - " Using cached attrs-22.2.0-py3-none-any.whl (60 kB)\n", "Requirement already satisfied: pathos in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (0.3.1)\n", + "Requirement already satisfied: protobuf3-to-dict<1.0,>=0.1.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (0.1.5)\n", "Requirement already satisfied: smdebug-rulesconfig==1.0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (1.0.1)\n", + "Requirement already satisfied: pandas in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (1.5.3)\n", "Requirement already satisfied: numpy<2.0,>=1.9.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (1.23.5)\n", - "Requirement already satisfied: google-pasta in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (0.2.0)\n", - "Requirement already satisfied: pyyaml>=5.4.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (6.0.1)\n", - "Requirement already satisfied: requests-oauthlib in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (1.3.1)\n", + "Requirement already satisfied: packaging>=20.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (23.2)\n", + "\u001b[2K\u001b[32m⠹\u001b[0m Installing integrations...Collecting attrs<23,>=20.3.0\n", + " Using cached attrs-22.2.0-py3-none-any.whl (60 kB)\n", + "Requirement already satisfied: schema in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (0.7.5)\n", + "Requirement already satisfied: protobuf<4.0,>=3.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sagemaker==2.117.0) (3.20.3)\n", + "Requirement already satisfied: websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (1.6.4)\n", + "Requirement already satisfied: requests in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (2.31.0)\n", "Requirement already satisfied: urllib3>=1.24.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (1.26.18)\n", + "Requirement already satisfied: requests-oauthlib in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (1.3.1)\n", "Requirement already satisfied: python-dateutil>=2.5.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (2.8.2)\n", - "Requirement already satisfied: requests in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (2.31.0)\n", + "Requirement already satisfied: pyyaml>=5.4.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (6.0.1)\n", + "Requirement already satisfied: certifi>=14.05.14 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (2023.7.22)\n", + "Requirement already satisfied: setuptools>=21.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (69.0.2)\n", "Requirement already satisfied: google-auth>=1.0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (2.23.3)\n", - "Requirement already satisfied: websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (1.6.4)\n", "Requirement already satisfied: six>=1.9.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (1.16.0)\n", - "Requirement already satisfied: setuptools>=21.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (69.0.2)\n", - "Requirement already satisfied: certifi>=14.05.14 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from kubernetes) (2023.7.22)\n", - "\u001b[2K\u001b[32m⠋\u001b[0m Installing integrations...Collecting argparse\n", - " Using cached argparse-1.4.0-py2.py3-none-any.whl (23 kB)\n", "Requirement already satisfied: click in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aws-profile-manager) (8.1.3)\n", + "\u001b[2K\u001b[32m⠸\u001b[0m Installing integrations...Collecting argparse\n", + " Using cached argparse-1.4.0-py2.py3-none-any.whl (23 kB)\n", "Requirement already satisfied: configparser in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aws-profile-manager) (6.0.0)\n", - "Requirement already satisfied: aiohttp!=4.0.0a0,!=4.0.0a1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from s3fs<=2023.4.0,>2022.3.0) (3.8.6)\n", - "Requirement already satisfied: fsspec==2023.4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from s3fs<=2023.4.0,>2022.3.0) (2023.4.0)\n", "Requirement already satisfied: aiobotocore~=2.5.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from s3fs<=2023.4.0,>2022.3.0) (2.5.2)\n", - "\u001b[2K\u001b[32m⠙\u001b[0m Installing integrations...Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from boto3<=1.26.76) (1.0.1)\n", + "Requirement already satisfied: fsspec==2023.4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from s3fs<=2023.4.0,>2022.3.0) (2023.4.0)\n", + "Requirement already satisfied: aiohttp!=4.0.0a0,!=4.0.0a1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from s3fs<=2023.4.0,>2022.3.0) (3.8.6)\n", "Requirement already satisfied: s3transfer<0.7.0,>=0.6.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from boto3<=1.26.76) (0.6.2)\n", "Requirement already satisfied: botocore<1.30.0,>=1.29.76 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from boto3<=1.26.76) (1.29.161)\n", - "Requirement already satisfied: aioitertools<1.0.0,>=0.5.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiobotocore~=2.5.0->s3fs<=2023.4.0,>2022.3.0) (0.11.0)\n", + "Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from boto3<=1.26.76) (1.0.1)\n", + "\u001b[2K\u001b[32m⠼\u001b[0m Installing integrations...Requirement already satisfied: scipy<2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (1.11.3)\n", + "Requirement already satisfied: pyarrow<13,>=4.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (12.0.1)\n", + "Requirement already satisfied: entrypoints<1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (0.4)\n", + "Requirement already satisfied: sqlalchemy<3,>=1.4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (1.4.41)\n", + "Requirement already satisfied: matplotlib<4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (3.8.0)\n", + "Requirement already satisfied: docker<7,>=4.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (6.1.3)\n", + "Requirement already satisfied: Jinja2<4,>=2.11 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (3.1.2)\n", + "Requirement already satisfied: gunicorn<22 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (21.2.0)\n", + "Requirement already satisfied: gitpython<4,>=2.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (3.1.40)\n", + "Requirement already satisfied: Flask<3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (2.2.5)\n", + "Requirement already satisfied: cloudpickle<3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (2.2.1)\n", + "Requirement already satisfied: pytz<2024 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (2023.3.post1)\n", + "Requirement already satisfied: scikit-learn<2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (1.2.2)\n", + "Requirement already satisfied: alembic!=1.10.0,<2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (1.8.1)\n", + "Requirement already satisfied: databricks-cli<1,>=0.8.7 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (0.18.0)\n", + "Requirement already satisfied: querystring-parser<2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (1.2.4)\n", + "Requirement already satisfied: sqlparse<1,>=0.4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (0.4.4)\n", + "Requirement already satisfied: markdown<4,>=3.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlflow<=2.6.0,>=2.1.1) (3.5)\n", + "\u001b[2K\u001b[32m⠴\u001b[0m Installing integrations...Requirement already satisfied: uvloop in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (0.19.0)\n", + "Requirement already satisfied: grpcio in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (1.59.0)\n", + "Requirement already satisfied: py-grpc-prometheus in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (0.7.0)\n", + "Requirement already satisfied: aiofiles in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (23.2.1)\n", + "Requirement already satisfied: python-dotenv in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (1.0.0)\n", + "Requirement already satisfied: fastapi!=0.89.0,<=0.89.1,>=0.88.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (0.89.1)\n", + "Requirement already satisfied: uvicorn in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (0.23.2)\n", + "Requirement already satisfied: orjson in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (3.8.14)\n", + "Requirement already satisfied: tritonclient[http]>=2.24 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (2.38.0)\n", + "Requirement already satisfied: starlette-exporter in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (0.16.0)\n", + "Requirement already satisfied: aiokafka in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (0.8.1)\n", + "Requirement already satisfied: importlib-resources in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from mlserver>=1.3.3) (6.1.0)\n", "Requirement already satisfied: wrapt<2.0.0,>=1.10.10 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiobotocore~=2.5.0->s3fs<=2023.4.0,>2022.3.0) (1.14.1)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs<=2023.4.0,>2022.3.0) (1.4.0)\n", + "Requirement already satisfied: aioitertools<1.0.0,>=0.5.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiobotocore~=2.5.0->s3fs<=2023.4.0,>2022.3.0) (0.11.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs<=2023.4.0,>2022.3.0) (6.0.4)\n", "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs<=2023.4.0,>2022.3.0) (4.0.3)\n", - "Requirement already satisfied: yarl<2.0,>=1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs<=2023.4.0,>2022.3.0) (1.9.2)\n", - "Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs<=2023.4.0,>2022.3.0) (3.3.1)\n", "Requirement already satisfied: aiosignal>=1.1.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs<=2023.4.0,>2022.3.0) (1.3.1)\n", - "Requirement already satisfied: multidict<7.0,>=4.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs<=2023.4.0,>2022.3.0) (6.0.4)\n", - "\u001b[2K\u001b[32m⠹\u001b[0m Installing integrations...Requirement already satisfied: cachetools<6.0,>=2.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from google-auth>=1.0.1->kubernetes) (5.3.1)\n", - "Requirement already satisfied: rsa<5,>=3.1.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from google-auth>=1.0.1->kubernetes) (4.9)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs<=2023.4.0,>2022.3.0) (1.4.0)\n", + "Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs<=2023.4.0,>2022.3.0) (3.3.1)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs<=2023.4.0,>2022.3.0) (1.9.2)\n", + "Requirement already satisfied: Mako in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from alembic!=1.10.0,<2->mlflow<=2.6.0,>=2.1.1) (1.2.4)\n", + "\u001b[2K\u001b[32m⠦\u001b[0m Installing integrations...Requirement already satisfied: oauthlib>=3.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from databricks-cli<1,>=0.8.7->mlflow<=2.6.0,>=2.1.1) (3.2.2)\n", + "Requirement already satisfied: pyjwt>=1.7.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from databricks-cli<1,>=0.8.7->mlflow<=2.6.0,>=2.1.1) (2.7.0)\n", + "Requirement already satisfied: tabulate>=0.7.7 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from databricks-cli<1,>=0.8.7->mlflow<=2.6.0,>=2.1.1) (0.9.0)\n", + "Requirement already satisfied: pydantic!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<2.0.0,>=1.6.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from fastapi!=0.89.0,<=0.89.1,>=0.88.0->mlserver>=1.3.3) (1.10.13)\n", + "Requirement already satisfied: starlette==0.22.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from fastapi!=0.89.0,<=0.89.1,>=0.88.0->mlserver>=1.3.3) (0.22.0)\n", + "Requirement already satisfied: typing-extensions>=3.10.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from starlette==0.22.0->fastapi!=0.89.0,<=0.89.1,>=0.88.0->mlserver>=1.3.3) (4.8.0)\n", + "Requirement already satisfied: anyio<5,>=3.4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from starlette==0.22.0->fastapi!=0.89.0,<=0.89.1,>=0.88.0->mlserver>=1.3.3) (4.0.0)\n", + "\u001b[2K\u001b[32m⠧\u001b[0m Installing integrations...Requirement already satisfied: itsdangerous>=2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from Flask<3->mlflow<=2.6.0,>=2.1.1) (2.1.2)\n", + "Requirement already satisfied: Werkzeug>=2.2.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from Flask<3->mlflow<=2.6.0,>=2.1.1) (2.2.3)\n", + "Requirement already satisfied: gitdb<5,>=4.0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from gitpython<4,>=2.1.0->mlflow<=2.6.0,>=2.1.1) (4.0.11)\n", + "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from google-auth>=1.0.1->kubernetes) (5.3.1)\n", "Requirement already satisfied: pyasn1-modules>=0.2.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from google-auth>=1.0.1->kubernetes) (0.3.0)\n", + "Requirement already satisfied: rsa<5,>=3.1.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from google-auth>=1.0.1->kubernetes) (4.9)\n", "Requirement already satisfied: zipp>=0.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from importlib-metadata<5.0,>=1.4.0->sagemaker==2.117.0) (3.17.0)\n", - "\u001b[2K\u001b[32m⠸\u001b[0m Installing integrations...Requirement already satisfied: pytz>=2020.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pandas->sagemaker==2.117.0) (2023.3.post1)\n", - "\u001b[2K\u001b[32m⠼\u001b[0m Installing integrations...Requirement already satisfied: dill>=0.3.7 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pathos->sagemaker==2.117.0) (0.3.7)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from Jinja2<4,>=2.11->mlflow<=2.6.0,>=2.1.1) (2.1.3)\n", + "\u001b[2K\u001b[32m⠇\u001b[0m Installing integrations...Requirement already satisfied: fonttools>=4.22.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from matplotlib<4->mlflow<=2.6.0,>=2.1.1) (4.43.1)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from matplotlib<4->mlflow<=2.6.0,>=2.1.1) (1.1.1)\n", + "Requirement already satisfied: pillow>=6.2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from matplotlib<4->mlflow<=2.6.0,>=2.1.1) (9.5.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from matplotlib<4->mlflow<=2.6.0,>=2.1.1) (2.4.7)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from matplotlib<4->mlflow<=2.6.0,>=2.1.1) (1.4.5)\n", + "Requirement already satisfied: cycler>=0.10 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from matplotlib<4->mlflow<=2.6.0,>=2.1.1) (0.12.1)\n", + "\u001b[2K\u001b[32m⠏\u001b[0m Installing integrations...Requirement already satisfied: idna<4,>=2.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from requests->kubernetes) (3.4)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from scikit-learn<2->mlflow<=2.6.0,>=2.1.1) (3.2.0)\n", + "Requirement already satisfied: joblib>=1.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from scikit-learn<2->mlflow<=2.6.0,>=2.1.1) (1.3.2)\n", + "\u001b[2K\u001b[32m⠙\u001b[0m Installing integrations...Requirement already satisfied: greenlet!=0.4.17 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sqlalchemy<3,>=1.4.0->mlflow<=2.6.0,>=2.1.1) (3.0.0)\n", + "Requirement already satisfied: cuda-python in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from tritonclient[http]>=2.24->mlserver>=1.3.3) (12.3.0)\n", + "Requirement already satisfied: python-rapidjson>=0.9.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from tritonclient[http]>=2.24->mlserver>=1.3.3) (1.12)\n", + "Requirement already satisfied: geventhttpclient<=2.0.2,>=1.4.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from tritonclient[http]>=2.24->mlserver>=1.3.3) (2.0.2)\n", + "\u001b[2K\u001b[32m⠹\u001b[0m Installing integrations...Requirement already satisfied: kafka-python>=2.0.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiokafka->mlserver>=1.3.3) (2.0.2)\n", + "Requirement already satisfied: pox>=0.3.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pathos->sagemaker==2.117.0) (0.3.3)\n", "Requirement already satisfied: ppft>=1.7.6.7 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pathos->sagemaker==2.117.0) (1.7.6.7)\n", "Requirement already satisfied: multiprocess>=0.70.15 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pathos->sagemaker==2.117.0) (0.70.15)\n", - "Requirement already satisfied: pox>=0.3.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pathos->sagemaker==2.117.0) (0.3.3)\n", - "Requirement already satisfied: idna<4,>=2.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from requests->kubernetes) (3.4)\n", - "Requirement already satisfied: oauthlib>=3.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from requests-oauthlib->kubernetes) (3.2.2)\n", - "Requirement already satisfied: contextlib2>=0.5.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from schema->sagemaker==2.117.0) (21.6.0)\n", - "Requirement already satisfied: typing_extensions>=4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aioitertools<1.0.0,>=0.5.1->aiobotocore~=2.5.0->s3fs<=2023.4.0,>2022.3.0) (4.8.0)\n", - "\u001b[2K\u001b[32m⠴\u001b[0m Installing integrations...Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth>=1.0.1->kubernetes) (0.5.0)\n", - "\u001b[2K\u001b[32m⠴\u001b[0m Installing integrations...Installing collected packages: argparse, attrs\n", + "Requirement already satisfied: dill>=0.3.7 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pathos->sagemaker==2.117.0) (0.3.7)\n", + "Requirement already satisfied: prometheus-client>=0.3.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from py-grpc-prometheus->mlserver>=1.3.3) (0.17.1)\n", + "\u001b[2K\u001b[32m⠸\u001b[0m Installing integrations...Requirement already satisfied: contextlib2>=0.5.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from schema->sagemaker==2.117.0) (21.6.0)\n", + "Requirement already satisfied: h11>=0.8 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from uvicorn->mlserver>=1.3.3) (0.14.0)\n", + "\u001b[2K\u001b[32m⠴\u001b[0m Installing integrations...Requirement already satisfied: brotli in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from geventhttpclient<=2.0.2,>=1.4.4->tritonclient[http]>=2.24->mlserver>=1.3.3) (1.1.0)\n", + "Requirement already satisfied: gevent>=0.13 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from geventhttpclient<=2.0.2,>=1.4.4->tritonclient[http]>=2.24->mlserver>=1.3.3) (23.9.1)\n", + "Requirement already satisfied: smmap<6,>=3.0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from gitdb<5,>=4.0.1->gitpython<4,>=2.1.0->mlflow<=2.6.0,>=2.1.1) (5.0.1)\n", + "\u001b[2K\u001b[32m⠧\u001b[0m Installing integrations...Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth>=1.0.1->kubernetes) (0.5.0)\n", + "\u001b[2K\u001b[32m⠏\u001b[0m Installing integrations...Requirement already satisfied: sniffio>=1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from anyio<5,>=3.4.0->starlette==0.22.0->fastapi!=0.89.0,<=0.89.1,>=0.88.0->mlserver>=1.3.3) (1.3.0)\n", + "Requirement already satisfied: exceptiongroup>=1.0.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from anyio<5,>=3.4.0->starlette==0.22.0->fastapi!=0.89.0,<=0.89.1,>=0.88.0->mlserver>=1.3.3) (1.1.3)\n", + "\u001b[2K\u001b[32m⠋\u001b[0m Installing integrations...Requirement already satisfied: zope.event in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from gevent>=0.13->geventhttpclient<=2.0.2,>=1.4.4->tritonclient[http]>=2.24->mlserver>=1.3.3) (5.0)\n", + "Requirement already satisfied: zope.interface in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from gevent>=0.13->geventhttpclient<=2.0.2,>=1.4.4->tritonclient[http]>=2.24->mlserver>=1.3.3) (6.1)\n", + "\u001b[2K\u001b[32m⠸\u001b[0m Installing integrations...Installing collected packages: argparse, attrs\n", " Attempting uninstall: attrs\n", " Found existing installation: attrs 23.1.0\n", - "\u001b[2K\u001b[32m⠦\u001b[0m Installing integrations... Uninstalling attrs-23.1.0:\n", + "\u001b[2K\u001b[32m⠼\u001b[0m Installing integrations... Uninstalling attrs-23.1.0:\n", " Successfully uninstalled attrs-23.1.0\n", - "\u001b[2K\u001b[32m⠧\u001b[0m Installing integrations...\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behavior is the source of the following dependency conflicts.\n", + "\u001b[2K\u001b[32m⠴\u001b[0m Installing integrations...\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", "cattrs 23.2.3 requires attrs>=23.1.0, but you have attrs 22.2.0 which is incompatible.\u001b[0m\u001b[31m\n", "\u001b[0mSuccessfully installed argparse-1.4.0 attrs-22.2.0\n", - "\u001b[33mWARNING: You are using pip version 22.0.4; however, version 23.3.1 is available.\n", + "\u001b[2K\u001b[32m⠧\u001b[0m Installing integrations...\u001b[33mWARNING: You are using pip version 22.0.4; however, version 23.3.1 is available.\n", "You should consider upgrading via the '/home/apenner/.pyenv/versions/3.9.13/envs/demo/bin/python -m pip install --upgrade pip' command.\u001b[0m\u001b[33m\n", - "\u001b[2K\u001b[32m⠙\u001b[0m Installing integrations...\n", + "\u001b[2K\u001b[32m⠹\u001b[0m Installing integrations...\n", "\u001b[1A\u001b[2K\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", + "\u001b[31mThe ZenML global configuration version (0.51.0) is higher than the version of ZenML currently being used (0.50.0). Read more about this issue and how to solve it here: \u001b[0m\u001b[1;36mhttps://docs.zenml.io/user-guide/advanced-guide/environment-management/global-settings-of-zenml#version-mismatch-downgrading\u001b[31m\u001b[0m\n", "\u001b[?25l\u001b[32m⠋\u001b[0m Setting the repository active stack to \n", "\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠙\u001b[0m Setting the repository active stack to \n", "\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠹\u001b[0m Setting the repository active stack to \n", "\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠸\u001b[0m Setting the repository active stack to \n", "\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠼\u001b[0m Setting the repository active stack to \n", "\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠴\u001b[0m Setting the repository active stack to \n", + "\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠦\u001b[0m Setting the repository active stack to \n", + "\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠧\u001b[0m Setting the repository active stack to \n", + "\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠇\u001b[0m Setting the repository active stack to \n", "\u001b[2K\u001b[1A\u001b[2K\u001b[2;36mActive repository stack set to: \u001b[0m\u001b[2;32m'local-sagemaker-step-operator-stack'\u001b[0m\n", - "\u001b[2;32m⠴\u001b[0m\u001b[2;36m Setting the repository active stack to \u001b[0m\n", - "\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠴\u001b[0m Setting the repository active stack to \n", + "\u001b[2;32m⠇\u001b[0m\u001b[2;36m Setting the repository active stack to \u001b[0m\n", + "\u001b[2K\u001b[1A\u001b[2K\u001b[32m⠇\u001b[0m Setting the repository active stack to \n", "'local-sagemaker-step-operator-stack'...\n", "\u001b[1A\u001b[2K\u001b[1A\u001b[2K" ] @@ -335,7 +851,7 @@ ], "source": [ "# This pip installs the requirements locally\n", - "!zenml integration install aws s3 -y\n", + "!zenml integration install aws s3 mlflow -y\n", "\n", "# This changes the active stack\n", "!zenml stack set local-sagemaker-step-operator-stack" @@ -343,351 +859,44 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 10, "id": "5683a1c9-f5c1-4ba1-ad7c-1e427fd265df", "metadata": {}, "outputs": [], "source": [ + "from zenml.config import DockerSettings\n", + "\n", + "# The actual code will stay the same, all that needs to be done is some configuration\n", + "\n", "step_args = {}\n", + "\n", + "# We configure which step operator should be used\n", "step_args[\"step_operator\"] = \"sagemaker-eu\"\n", "\n", "# M5 Large is what we need for this big data!\n", "step_args[\"settings\"] = {\"step_operator.sagemaker\": {\"estimator_args\": {\"instance_type\" : \"ml.m5.large\"}}}\n", "\n", - "# Update the step. We can also do this in YAML\n", + "# Update the step. We could also do this in YAML\n", "model_trainer = model_trainer.with_options(**step_args)\n", - " \n", - "pipeline_args = {\"enable_cache\": False}\n", + "\n", + "docker_settings = DockerSettings(\n", + " requirements=[\n", + " \"pyarrow\",\n", + " ],\n", + ")\n", + "\n", + "pipeline_args = {\"enable_cache\": False, \"settings\": {\"docker\": docker_settings}}\n", "pipeline_args[\"config_path\"] = os.path.join(\"configs\", \"training.yaml\")\n", "fe_t_configured = training.with_options(**pipeline_args)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "85179f52-68f0-4c8d-9808-6b080bec72c3", "metadata": { "scrolled": true }, - "outputs": [], - "source": [ - "fe_t_configured()" - ] - }, - { - "cell_type": "markdown", - "id": "0f40bd2e-14fb-4989-9545-a577a3be479a", - "metadata": {}, - "source": [ - "# Let's run the entire pipeline on Airflow now\n", - "\n", - "\n", - "\"Drawing\"\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "157dd948-6a55-466e-b711-c919eed7cd91", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", - "\u001b[2K\u001b[2;36mActive repository stack set to: \u001b[0m\u001b[2;32m'sagemaker-airflow-stack'\u001b[0m.\n", - "\u001b[2K\u001b[32m⠴\u001b[0m Setting the repository active stack to 'sagemaker-airflow-stack'...k'...\u001b[0m\n", - "\u001b[1A\u001b[2K\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", - "\u001b[2K\u001b[32m⠏\u001b[0m Installing integrations.....Collecting apache-airflow~=2.4.0\n", - " Using cached apache_airflow-2.4.3-py3-none-any.whl (6.5 MB)\n", - "\u001b[2K\u001b[32m⠋\u001b[0m Installing integrations...Requirement already satisfied: cattrs>=22.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (23.2.3)\n", - "Requirement already satisfied: apache-airflow-providers-imap in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (3.3.2)\n", - "\u001b[2K\u001b[32m⠙\u001b[0m Installing integrations...Requirement already satisfied: python-dateutil>=2.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.8.2)\n", - "Requirement already satisfied: blinker in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.6.3)\n", - "Requirement already satisfied: flask<2.3,>=2.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.2.5)\n", - "Requirement already satisfied: cryptography>=0.9.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (41.0.4)\n", - "Requirement already satisfied: werkzeug>=2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.2.3)\n", - "Requirement already satisfied: alembic<2.0,>=1.5.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.8.1)\n", - "Requirement already satisfied: graphviz>=0.12 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.20.1)\n", - "Requirement already satisfied: croniter>=0.3.17 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.0.1)\n", - "Requirement already satisfied: markdown-it-py>=2.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (3.0.0)\n", - "Requirement already satisfied: sqlalchemy>=1.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.4.41)\n", - "Requirement already satisfied: mdit-py-plugins>=0.3.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.4.0)\n", - "Requirement already satisfied: sqlalchemy-jsonfield>=1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.0.2)\n", - "Requirement already satisfied: tenacity>=6.2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (8.2.3)\n", - "Requirement already satisfied: jsonschema>=3.2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (4.19.1)\n", - "Requirement already satisfied: pygments>=2.0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.16.1)\n", - "Requirement already satisfied: apache-airflow-providers-ftp in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (3.5.2)\n", - "Requirement already satisfied: marshmallow-oneofschema>=2.0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (3.0.1)\n", - "Requirement already satisfied: python-daemon>=2.2.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (3.0.1)\n", - "Requirement already satisfied: packaging>=14.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (23.2)\n", - "Requirement already satisfied: setproctitle>=1.1.8 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.3.3)\n", - "Requirement already satisfied: apache-airflow-providers-http in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (4.5.2)\n", - "Requirement already satisfied: unicodecsv>=0.14.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.14.1)\n", - "Requirement already satisfied: lockfile>=0.12.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.12.2)\n", - "Requirement already satisfied: itsdangerous>=2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.1.2)\n", - "Requirement already satisfied: lazy-object-proxy in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.9.0)\n", - "Requirement already satisfied: linkify-it-py>=2.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.0.2)\n", - "Requirement already satisfied: pathspec~=0.9.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.9.0)\n", - "Requirement already satisfied: termcolor>=1.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.3.0)\n", - "Requirement already satisfied: markupsafe>=1.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.1.3)\n", - "Requirement already satisfied: cron-descriptor>=1.2.24 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.4.0)\n", - "Requirement already satisfied: connexion[flask,swagger-ui]>=2.10.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.14.2)\n", - "Requirement already satisfied: tabulate>=0.7.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.9.0)\n", - "Requirement already satisfied: configupdater>=3.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (3.2)\n", - "Requirement already satisfied: apache-airflow-providers-common-sql in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.7.2)\n", - "Requirement already satisfied: flask-appbuilder==4.1.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (4.1.4)\n", - "Requirement already satisfied: pyjwt>=2.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.7.0)\n", - "Requirement already satisfied: markdown>=3.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (3.5)\n", - "Requirement already satisfied: pluggy>=1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.3.0)\n", - "Requirement already satisfied: jinja2>=3.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (3.1.2)\n", - "Requirement already satisfied: attrs>=22.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (22.2.0)\n", - "Requirement already satisfied: argcomplete>=1.10 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (3.1.6)\n", - "Requirement already satisfied: flask-wtf>=0.15 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.2.1)\n", - "Requirement already satisfied: colorlog<5.0,>=4.0.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (4.8.0)\n", - "Requirement already satisfied: httpx in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.23.3)\n", - "Requirement already satisfied: flask-session>=0.4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.5.0)\n", - "Requirement already satisfied: gunicorn>=20.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (21.2.0)\n", - "Requirement already satisfied: pendulum>=2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.1.2)\n", - "Requirement already satisfied: psutil>=4.2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (5.9.6)\n", - "Requirement already satisfied: apache-airflow-providers-sqlite in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (3.4.3)\n", - "Requirement already satisfied: flask-login>=0.6.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.6.3)\n", - "Requirement already satisfied: python-nvd3>=0.15.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.15.0)\n", - "Requirement already satisfied: flask-caching>=1.5.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (2.1.0)\n", - "Requirement already satisfied: dill>=0.2.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (0.3.7)\n", - "Requirement already satisfied: python-slugify>=5.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (8.0.1)\n", - "Requirement already satisfied: typing-extensions>=4.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (4.8.0)\n", - "Requirement already satisfied: deprecated>=1.2.13 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (1.2.14)\n", - "Requirement already satisfied: rich>=12.4.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.4.0) (13.6.0)\n", - "Requirement already satisfied: apispec[yaml]<4,>=3.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (3.3.2)\n", - "Requirement already satisfied: email-validator<2,>=1.0.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (1.3.1)\n", - "Requirement already satisfied: prison<1.0.0,>=0.2.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (0.2.1)\n", - "Requirement already satisfied: marshmallow-sqlalchemy<0.27.0,>=0.22.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (0.26.1)\n", - "Requirement already satisfied: WTForms<4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (3.0.1)\n", - "Requirement already satisfied: Flask-JWT-Extended<5.0.0,>=4.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (4.5.3)\n", - "Requirement already satisfied: marshmallow-enum<2,>=1.5.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (1.5.1)\n", - "Requirement already satisfied: click<9,>=8 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (8.1.3)\n", - "Requirement already satisfied: Flask-Babel<3,>=1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (2.0.0)\n", - "Requirement already satisfied: colorama<1,>=0.3.9 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (0.4.6)\n", - "Requirement already satisfied: Flask-SQLAlchemy<3,>=2.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (2.5.1)\n", - "Requirement already satisfied: sqlalchemy-utils<1,>=0.32.21 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (0.38.3)\n", - "Requirement already satisfied: marshmallow<4,>=3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (3.20.1)\n", - "Requirement already satisfied: Mako in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from alembic<2.0,>=1.5.1->apache-airflow~=2.4.0) (1.2.4)\n", - "\u001b[2K\u001b[32m⠹\u001b[0m Installing integrations...Requirement already satisfied: exceptiongroup>=1.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from cattrs>=22.1.0->apache-airflow~=2.4.0) (1.1.3)\n", - "Collecting attrs>=22.1.0\n", - "\u001b[2K\u001b[32m⠸\u001b[0m Installing integrations... Using cached attrs-23.1.0-py3-none-any.whl (61 kB)\n", - "Requirement already satisfied: clickclick<21,>=1.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from connexion[flask,swagger-ui]>=2.10.0->apache-airflow~=2.4.0) (20.10.2)\n", - "Requirement already satisfied: PyYAML<7,>=5.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from connexion[flask,swagger-ui]>=2.10.0->apache-airflow~=2.4.0) (6.0.1)\n", - "Requirement already satisfied: inflection<0.6,>=0.3.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from connexion[flask,swagger-ui]>=2.10.0->apache-airflow~=2.4.0) (0.5.1)\n", - "Requirement already satisfied: requests<3,>=2.9.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from connexion[flask,swagger-ui]>=2.10.0->apache-airflow~=2.4.0) (2.31.0)\n", - "Requirement already satisfied: swagger-ui-bundle<0.1,>=0.0.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from connexion[flask,swagger-ui]>=2.10.0->apache-airflow~=2.4.0) (0.0.9)\n", - "Requirement already satisfied: pytz>2021.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from croniter>=0.3.17->apache-airflow~=2.4.0) (2023.3.post1)\n", - "\u001b[2K\u001b[32m⠼\u001b[0m Installing integrations...Requirement already satisfied: cffi>=1.12 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from cryptography>=0.9.3->apache-airflow~=2.4.0) (1.16.0)\n", - "Requirement already satisfied: wrapt<2,>=1.10 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from deprecated>=1.2.13->apache-airflow~=2.4.0) (1.14.1)\n", - "Requirement already satisfied: importlib-metadata>=3.6.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask<2.3,>=2.2->apache-airflow~=2.4.0) (4.13.0)\n", - "Requirement already satisfied: cachelib<0.10.0,>=0.9.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-caching>=1.5.0->apache-airflow~=2.4.0) (0.9.0)\n", - "\u001b[2K\u001b[32m⠴\u001b[0m Installing integrations...Requirement already satisfied: rpds-py>=0.7.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from jsonschema>=3.2.0->apache-airflow~=2.4.0) (0.10.6)\n", - "Requirement already satisfied: referencing>=0.28.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from jsonschema>=3.2.0->apache-airflow~=2.4.0) (0.30.2)\n", - "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from jsonschema>=3.2.0->apache-airflow~=2.4.0) (2023.7.1)\n", - "Requirement already satisfied: uc-micro-py in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from linkify-it-py>=2.0.0->apache-airflow~=2.4.0) (1.0.2)\n", - "Requirement already satisfied: mdurl~=0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from markdown-it-py>=2.1.0->apache-airflow~=2.4.0) (0.1.2)\n", - "\u001b[2K\u001b[32m⠦\u001b[0m Installing integrations...Requirement already satisfied: pytzdata>=2020.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pendulum>=2.0->apache-airflow~=2.4.0) (2020.1)\n", - "\u001b[2K\u001b[32m⠧\u001b[0m Installing integrations...Requirement already satisfied: docutils in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from python-daemon>=2.2.4->apache-airflow~=2.4.0) (0.20.1)\n", - "Requirement already satisfied: setuptools>=62.4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from python-daemon>=2.2.4->apache-airflow~=2.4.0) (69.0.2)\n", - "Requirement already satisfied: six>=1.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from python-dateutil>=2.3->apache-airflow~=2.4.0) (1.16.0)\n", - "Requirement already satisfied: text-unidecode>=1.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from python-slugify>=5.0->apache-airflow~=2.4.0) (1.3)\n", - "\u001b[2K\u001b[32m⠇\u001b[0m Installing integrations...Requirement already satisfied: greenlet!=0.4.17 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sqlalchemy>=1.4->apache-airflow~=2.4.0) (3.0.0)\n", - "\u001b[2K\u001b[32m⠏\u001b[0m Installing integrations...Requirement already satisfied: sqlparse>=0.4.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow-providers-common-sql->apache-airflow~=2.4.0) (0.4.4)\n", - "Requirement already satisfied: requests-toolbelt in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow-providers-http->apache-airflow~=2.4.0) (0.10.1)\n", - "Requirement already satisfied: aiohttp in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow-providers-http->apache-airflow~=2.4.0) (3.8.6)\n", - "Requirement already satisfied: asgiref in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow-providers-http->apache-airflow~=2.4.0) (3.7.2)\n", - "Requirement already satisfied: certifi in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpx->apache-airflow~=2.4.0) (2023.7.22)\n", - "\u001b[2K\u001b[32m⠋\u001b[0m Installing integrations...Requirement already satisfied: httpcore<0.17.0,>=0.15.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpx->apache-airflow~=2.4.0) (0.16.3)\n", - "Requirement already satisfied: sniffio in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpx->apache-airflow~=2.4.0) (1.3.0)\n", - "Requirement already satisfied: rfc3986[idna2008]<2,>=1.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpx->apache-airflow~=2.4.0) (1.5.0)\n", - "Requirement already satisfied: pycparser in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from cffi>=1.12->cryptography>=0.9.3->apache-airflow~=2.4.0) (2.21)\n", - "Requirement already satisfied: dnspython>=1.15.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from email-validator<2,>=1.0.5->flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (2.4.2)\n", - "Requirement already satisfied: idna>=2.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from email-validator<2,>=1.0.5->flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (3.4)\n", - "\u001b[2K\u001b[32m⠙\u001b[0m Installing integrations...Requirement already satisfied: Babel>=2.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from Flask-Babel<3,>=1->flask-appbuilder==4.1.4->apache-airflow~=2.4.0) (2.13.1)\n", - "Requirement already satisfied: h11<0.15,>=0.13 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpcore<0.17.0,>=0.15.0->httpx->apache-airflow~=2.4.0) (0.14.0)\n", - "Requirement already satisfied: anyio<5.0,>=3.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpcore<0.17.0,>=0.15.0->httpx->apache-airflow~=2.4.0) (4.0.0)\n", - "\u001b[2K\u001b[32m⠹\u001b[0m Installing integrations...Requirement already satisfied: zipp>=0.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from importlib-metadata>=3.6.0->flask<2.3,>=2.2->apache-airflow~=2.4.0) (3.17.0)\n", - "\u001b[2K\u001b[32m⠸\u001b[0m Installing integrations...Requirement already satisfied: charset-normalizer<4,>=2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from requests<3,>=2.9.1->connexion[flask,swagger-ui]>=2.10.0->apache-airflow~=2.4.0) (3.3.1)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from requests<3,>=2.9.1->connexion[flask,swagger-ui]>=2.10.0->apache-airflow~=2.4.0) (1.26.18)\n", - "\u001b[2K\u001b[32m⠴\u001b[0m Installing integrations...Requirement already satisfied: multidict<7.0,>=4.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp->apache-airflow-providers-http->apache-airflow~=2.4.0) (6.0.4)\n", - "Requirement already satisfied: yarl<2.0,>=1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp->apache-airflow-providers-http->apache-airflow~=2.4.0) (1.9.2)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp->apache-airflow-providers-http->apache-airflow~=2.4.0) (1.4.0)\n", - "Requirement already satisfied: aiosignal>=1.1.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp->apache-airflow-providers-http->apache-airflow~=2.4.0) (1.3.1)\n", - "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp->apache-airflow-providers-http->apache-airflow~=2.4.0) (4.0.3)\n", - "\u001b[2K\u001b[32m⠇\u001b[0m Installing integrations...Installing collected packages: attrs, apache-airflow\n", - " Attempting uninstall: attrs\n", - " Found existing installation: attrs 22.2.0\n", - " Uninstalling attrs-22.2.0:\n", - " Successfully uninstalled attrs-22.2.0\n", - "\u001b[2K\u001b[32m⠏\u001b[0m Installing integrations... Attempting uninstall: apache-airflow\n", - " Found existing installation: apache-airflow 2.5.3\n", - "\u001b[2K\u001b[32m⠸\u001b[0m Installing integrations... Uninstalling apache-airflow-2.5.3:\n", - " Successfully uninstalled apache-airflow-2.5.3\n", - "\u001b[2K\u001b[32m⠴\u001b[0m Installing integrations...\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behavior is the source of the following dependency conflicts.\n", - "sagemaker 2.117.0 requires attrs<23,>=20.3.0, but you have attrs 23.1.0 which is incompatible.\n", - "apache-airflow-providers-docker 3.8.2 requires apache-airflow>=2.5.0, but you have apache-airflow 2.4.3 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mSuccessfully installed apache-airflow-2.4.3 attrs-23.1.0\n", - "\u001b[2K\u001b[32m⠦\u001b[0m Installing integrations...\u001b[33mWARNING: You are using pip version 22.0.4; however, version 23.3.1 is available.\n", - "You should consider upgrading via the '/home/apenner/.pyenv/versions/3.9.13/envs/demo/bin/python -m pip install --upgrade pip' command.\u001b[0m\u001b[33m\n", - "\u001b[2K\u001b[32m⠋\u001b[0m Installing integrations...\n", - "\u001b[1A\u001b[2KRequirement already satisfied: apache-airflow-providers-docker in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (3.8.2)\n", - "Collecting apache-airflow~=2.5.0\n", - " Using cached apache_airflow-2.5.3-py3-none-any.whl (11.6 MB)\n", - "Requirement already satisfied: python-dotenv>=0.21.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow-providers-docker) (1.0.0)\n", - "Requirement already satisfied: docker>=5.0.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow-providers-docker) (6.1.3)\n", - "Requirement already satisfied: linkify-it-py>=2.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.0.2)\n", - "Requirement already satisfied: tenacity!=8.2.0,>=6.2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (8.2.3)\n", - "Requirement already satisfied: configupdater>=3.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (3.2)\n", - "Requirement already satisfied: jsonschema>=4.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (4.19.1)\n", - "Requirement already satisfied: lockfile>=0.12.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.12.2)\n", - "Requirement already satisfied: cryptography>=0.9.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (41.0.4)\n", - "Requirement already satisfied: apache-airflow-providers-common-sql in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.7.2)\n", - "Requirement already satisfied: termcolor>=1.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.3.0)\n", - "Requirement already satisfied: jinja2>=3.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (3.1.2)\n", - "Requirement already satisfied: apache-airflow-providers-imap in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (3.3.2)\n", - "Requirement already satisfied: flask-wtf>=0.15 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.2.1)\n", - "Requirement already satisfied: python-slugify>=5.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (8.0.1)\n", - "Requirement already satisfied: apache-airflow-providers-http in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (4.5.2)\n", - "Requirement already satisfied: setproctitle>=1.1.8 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.3.3)\n", - "Requirement already satisfied: sqlalchemy<2.0,>=1.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.4.41)\n", - "Requirement already satisfied: python-dateutil>=2.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.8.2)\n", - "Requirement already satisfied: colorlog<5.0,>=4.0.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (4.8.0)\n", - "Requirement already satisfied: flask-session>=0.4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.5.0)\n", - "Requirement already satisfied: markdown-it-py>=2.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (3.0.0)\n", - "Requirement already satisfied: rfc3339-validator>=0.1.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.1.4)\n", - "Requirement already satisfied: croniter>=0.3.17 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.0.1)\n", - "Requirement already satisfied: psutil>=4.2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (5.9.6)\n", - "Requirement already satisfied: cron-descriptor>=1.2.24 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.4.0)\n", - "Requirement already satisfied: dill>=0.2.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.3.7)\n", - "Requirement already satisfied: flask-caching>=1.5.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.1.0)\n", - "Requirement already satisfied: deprecated>=1.2.13 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.2.14)\n", - "Requirement already satisfied: markupsafe>=1.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.1.3)\n", - "Requirement already satisfied: argcomplete>=1.10 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (3.1.6)\n", - "Requirement already satisfied: gunicorn>=20.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (21.2.0)\n", - "Requirement already satisfied: itsdangerous>=2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.1.2)\n", - "Requirement already satisfied: graphviz>=0.12 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.20.1)\n", - "Requirement already satisfied: apache-airflow-providers-ftp in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (3.5.2)\n", - "Requirement already satisfied: connexion[flask]>=2.10.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.14.2)\n", - "Requirement already satisfied: cattrs>=22.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (23.2.3)\n", - "Requirement already satisfied: attrs>=22.1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (23.1.0)\n", - "Requirement already satisfied: pendulum>=2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.1.2)\n", - "Requirement already satisfied: pluggy>=1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.3.0)\n", - "Requirement already satisfied: flask<2.3,>=2.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.2.5)\n", - "Requirement already satisfied: rich>=12.4.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (13.6.0)\n", - "Requirement already satisfied: sqlalchemy-jsonfield>=1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.0.2)\n", - "Requirement already satisfied: packaging>=14.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (23.2)\n", - "Requirement already satisfied: lazy-object-proxy in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.9.0)\n", - "Requirement already satisfied: markdown>=3.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (3.5)\n", - "Requirement already satisfied: pyjwt>=2.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.7.0)\n", - "Requirement already satisfied: python-nvd3>=0.15.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.15.0)\n", - "Requirement already satisfied: httpx in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.23.3)\n", - "Requirement already satisfied: pathspec~=0.9.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.9.0)\n", - "Requirement already satisfied: pygments>=2.0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.16.1)\n", - "Requirement already satisfied: apache-airflow-providers-sqlite in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (3.4.3)\n", - "Requirement already satisfied: alembic<2.0,>=1.6.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.8.1)\n", - "Requirement already satisfied: tabulate>=0.7.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.9.0)\n", - "Requirement already satisfied: flask-login>=0.6.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.6.3)\n", - "Requirement already satisfied: mdit-py-plugins>=0.3.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.4.0)\n", - "Requirement already satisfied: typing-extensions>=4.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (4.8.0)\n", - "Requirement already satisfied: blinker in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (1.6.3)\n", - "Requirement already satisfied: unicodecsv>=0.14.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (0.14.1)\n", - "Requirement already satisfied: werkzeug>=2.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (2.2.3)\n", - "Requirement already satisfied: python-daemon>=3.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (3.0.1)\n", - "Requirement already satisfied: marshmallow-oneofschema>=2.0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (3.0.1)\n", - "Requirement already satisfied: flask-appbuilder==4.1.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow~=2.5.0) (4.1.4)\n", - "Requirement already satisfied: marshmallow-sqlalchemy<0.27.0,>=0.22.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (0.26.1)\n", - "Requirement already satisfied: prison<1.0.0,>=0.2.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (0.2.1)\n", - "Requirement already satisfied: marshmallow<4,>=3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (3.20.1)\n", - "Requirement already satisfied: Flask-SQLAlchemy<3,>=2.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (2.5.1)\n", - "Requirement already satisfied: Flask-Babel<3,>=1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (2.0.0)\n", - "Requirement already satisfied: Flask-JWT-Extended<5.0.0,>=4.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (4.5.3)\n", - "Requirement already satisfied: marshmallow-enum<2,>=1.5.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (1.5.1)\n", - "Requirement already satisfied: colorama<1,>=0.3.9 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (0.4.6)\n", - "Requirement already satisfied: sqlalchemy-utils<1,>=0.32.21 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (0.38.3)\n", - "Requirement already satisfied: email-validator<2,>=1.0.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (1.3.1)\n", - "Requirement already satisfied: apispec[yaml]<4,>=3.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (3.3.2)\n", - "Requirement already satisfied: WTForms<4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (3.0.1)\n", - "Requirement already satisfied: click<9,>=8 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (8.1.3)\n", - "Requirement already satisfied: Mako in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from alembic<2.0,>=1.6.3->apache-airflow~=2.5.0) (1.2.4)\n", - "Requirement already satisfied: exceptiongroup>=1.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from cattrs>=22.1.0->apache-airflow~=2.5.0) (1.1.3)\n", - "Requirement already satisfied: requests<3,>=2.9.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from connexion[flask]>=2.10.0->apache-airflow~=2.5.0) (2.31.0)\n", - "Requirement already satisfied: inflection<0.6,>=0.3.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from connexion[flask]>=2.10.0->apache-airflow~=2.5.0) (0.5.1)\n", - "Requirement already satisfied: PyYAML<7,>=5.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from connexion[flask]>=2.10.0->apache-airflow~=2.5.0) (6.0.1)\n", - "Requirement already satisfied: clickclick<21,>=1.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from connexion[flask]>=2.10.0->apache-airflow~=2.5.0) (20.10.2)\n", - "Requirement already satisfied: pytz>2021.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from croniter>=0.3.17->apache-airflow~=2.5.0) (2023.3.post1)\n", - "Requirement already satisfied: cffi>=1.12 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from cryptography>=0.9.3->apache-airflow~=2.5.0) (1.16.0)\n", - "Requirement already satisfied: wrapt<2,>=1.10 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from deprecated>=1.2.13->apache-airflow~=2.5.0) (1.14.1)\n", - "Requirement already satisfied: websocket-client>=0.32.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from docker>=5.0.3->apache-airflow-providers-docker) (1.6.4)\n", - "Requirement already satisfied: urllib3>=1.26.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from docker>=5.0.3->apache-airflow-providers-docker) (1.26.18)\n", - "Requirement already satisfied: importlib-metadata>=3.6.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask<2.3,>=2.2->apache-airflow~=2.5.0) (4.13.0)\n", - "Requirement already satisfied: cachelib<0.10.0,>=0.9.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from flask-caching>=1.5.0->apache-airflow~=2.5.0) (0.9.0)\n", - "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from jsonschema>=4.0.0->apache-airflow~=2.5.0) (2023.7.1)\n", - "Requirement already satisfied: referencing>=0.28.4 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from jsonschema>=4.0.0->apache-airflow~=2.5.0) (0.30.2)\n", - "Requirement already satisfied: rpds-py>=0.7.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from jsonschema>=4.0.0->apache-airflow~=2.5.0) (0.10.6)\n", - "Requirement already satisfied: uc-micro-py in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from linkify-it-py>=2.0.0->apache-airflow~=2.5.0) (1.0.2)\n", - "Requirement already satisfied: mdurl~=0.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from markdown-it-py>=2.1.0->apache-airflow~=2.5.0) (0.1.2)\n", - "Requirement already satisfied: pytzdata>=2020.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from pendulum>=2.0->apache-airflow~=2.5.0) (2020.1)\n", - "Requirement already satisfied: setuptools>=62.4.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from python-daemon>=3.0.0->apache-airflow~=2.5.0) (69.0.2)\n", - "Requirement already satisfied: docutils in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from python-daemon>=3.0.0->apache-airflow~=2.5.0) (0.20.1)\n", - "Requirement already satisfied: six>=1.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from python-dateutil>=2.3->apache-airflow~=2.5.0) (1.16.0)\n", - "Requirement already satisfied: text-unidecode>=1.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from python-slugify>=5.0->apache-airflow~=2.5.0) (1.3)\n", - "Requirement already satisfied: greenlet!=0.4.17 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from sqlalchemy<2.0,>=1.4->apache-airflow~=2.5.0) (3.0.0)\n", - "Requirement already satisfied: sqlparse>=0.4.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow-providers-common-sql->apache-airflow~=2.5.0) (0.4.4)\n", - "Requirement already satisfied: requests-toolbelt in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow-providers-http->apache-airflow~=2.5.0) (0.10.1)\n", - "Requirement already satisfied: aiohttp in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow-providers-http->apache-airflow~=2.5.0) (3.8.6)\n", - "Requirement already satisfied: asgiref in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from apache-airflow-providers-http->apache-airflow~=2.5.0) (3.7.2)\n", - "Requirement already satisfied: certifi in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpx->apache-airflow~=2.5.0) (2023.7.22)\n", - "Requirement already satisfied: sniffio in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpx->apache-airflow~=2.5.0) (1.3.0)\n", - "Requirement already satisfied: rfc3986[idna2008]<2,>=1.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpx->apache-airflow~=2.5.0) (1.5.0)\n", - "Requirement already satisfied: httpcore<0.17.0,>=0.15.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpx->apache-airflow~=2.5.0) (0.16.3)\n", - "Requirement already satisfied: pycparser in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from cffi>=1.12->cryptography>=0.9.3->apache-airflow~=2.5.0) (2.21)\n", - "Requirement already satisfied: idna>=2.0.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from email-validator<2,>=1.0.5->flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (3.4)\n", - "Requirement already satisfied: dnspython>=1.15.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from email-validator<2,>=1.0.5->flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (2.4.2)\n", - "Requirement already satisfied: Babel>=2.3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from Flask-Babel<3,>=1->flask-appbuilder==4.1.4->apache-airflow~=2.5.0) (2.13.1)\n", - "Requirement already satisfied: h11<0.15,>=0.13 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpcore<0.17.0,>=0.15.0->httpx->apache-airflow~=2.5.0) (0.14.0)\n", - "Requirement already satisfied: anyio<5.0,>=3.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from httpcore<0.17.0,>=0.15.0->httpx->apache-airflow~=2.5.0) (4.0.0)\n", - "Requirement already satisfied: zipp>=0.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from importlib-metadata>=3.6.0->flask<2.3,>=2.2->apache-airflow~=2.5.0) (3.17.0)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from requests<3,>=2.9.1->connexion[flask]>=2.10.0->apache-airflow~=2.5.0) (3.3.1)\n", - "Requirement already satisfied: aiosignal>=1.1.2 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp->apache-airflow-providers-http->apache-airflow~=2.5.0) (1.3.1)\n", - "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp->apache-airflow-providers-http->apache-airflow~=2.5.0) (4.0.3)\n", - "Requirement already satisfied: multidict<7.0,>=4.5 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp->apache-airflow-providers-http->apache-airflow~=2.5.0) (6.0.4)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp->apache-airflow-providers-http->apache-airflow~=2.5.0) (1.4.0)\n", - "Requirement already satisfied: yarl<2.0,>=1.0 in /home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages (from aiohttp->apache-airflow-providers-http->apache-airflow~=2.5.0) (1.9.2)\n", - "Installing collected packages: apache-airflow\n", - " Attempting uninstall: apache-airflow\n", - " Found existing installation: apache-airflow 2.4.3\n", - " Uninstalling apache-airflow-2.4.3:\n", - " Successfully uninstalled apache-airflow-2.4.3\n", - "Successfully installed apache-airflow-2.5.3\n", - "\u001b[33mWARNING: You are using pip version 22.0.4; however, version 23.3.1 is available.\n", - "You should consider upgrading via the '/home/apenner/.pyenv/versions/3.9.13/envs/demo/bin/python -m pip install --upgrade pip' command.\u001b[0m\u001b[33m\n", - "\u001b[0m\u001b[1;35mNumExpr defaulting to 8 threads.\u001b[0m\n", - "\u001b[2;36mProvisioning resources for active stack \u001b[0m\u001b[2;32m'sagemaker-airflow-stack'\u001b[0m\u001b[2;36m.\u001b[0m\n", - "\u001b[1;35mProvisioning resources for stack 'sagemaker-airflow-stack'.\u001b[0m\n", - "\u001b[1;35mReading the config from /home/apenner/.config/zenml/airflow/f3b0bda3-5245-4134-8ad9-6b42affebcf5/airflow.cfg\u001b[0m\n", - "\u001b[1;35mConfigured default timezone Timezone('UTC')\u001b[0m\n", - "\u001b[1;35mResuming provisioned resources for stack sagemaker-airflow-stack.\u001b[0m\n" - ] - } - ], - "source": [ - "!zenml stack set sagemaker-airflow-stack\n", - "!zenml integration install airflow -y\n", - "!pip install apache-airflow-providers-docker apache-airflow~=2.5.0\n", - "!zenml stack up" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "e188c8c5-3e8f-42b2-9f98-380c265cf8ae", - "metadata": {}, "outputs": [ { "name": "stdout", @@ -695,30 +904,13 @@ "text": [ "\u001b[1;35mInitiating a new run for the pipeline: \u001b[0m\u001b[1;36mtraining\u001b[1;35m.\u001b[0m\n", "\u001b[1;35mReloading configuration file /home/apenner/PycharmProjects/zenml-projects/stack-showcase/.zen/config.yaml\u001b[0m\n", - "\u001b[1;35mReusing registered version: \u001b[0m\u001b[1;36m(version: 8)\u001b[1;35m.\u001b[0m\n", - "\u001b[1;35mNew model version \u001b[0m\u001b[1;36m11\u001b[1;35m was created.\u001b[0m\n", + "\u001b[1;35mReusing registered version: \u001b[0m\u001b[1;36m(version: 17)\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mNew model version \u001b[0m\u001b[1;36m12\u001b[1;35m was created.\u001b[0m\n", "\u001b[1;35mBuilding Docker image(s) for pipeline \u001b[0m\u001b[1;36mtraining\u001b[1;35m.\u001b[0m\n", - "\u001b[1;35mBuilding Docker image \u001b[0m\u001b[1;36m715803424590.dkr.ecr.eu-central-1.amazonaws.com/zenml:training-orchestrator\u001b[1;35m.\u001b[0m\n", - "\u001b[1;35m- Including user-defined requirements: \u001b[0m\u001b[1;36mpyarrow\u001b[1;35m\u001b[0m\n", - "\u001b[1;35m- Including integration requirements: \u001b[0m\u001b[1;36mapache-airflow~=2.4.0\u001b[1;35m, \u001b[0m\u001b[1;36maws-profile-manager\u001b[1;35m, \u001b[0m\u001b[1;36mboto3<=1.26.76\u001b[1;35m, \u001b[0m\u001b[1;36mkubernetes\u001b[1;35m, \u001b[0m\u001b[1;36ms3fs>2022.3.0,<=2023.4.0\u001b[1;35m, \u001b[0m\u001b[1;36msagemaker==2.117.0\u001b[1;35m, \u001b[0m\u001b[1;36mscikit-learn<1.3\u001b[1;35m\u001b[0m\n", - "\u001b[33mCould not import Azure service connector: No module named 'azure.identity'.\u001b[0m\n", - "\u001b[1;35mStep 1/10 : FROM zenmldocker/zenml:0.50.0-py3.9\u001b[0m\n", - "\u001b[1;35mStep 2/10 : WORKDIR /app\u001b[0m\n", - "\u001b[1;35mStep 3/10 : COPY .zenml_user_requirements .\u001b[0m\n", - "\u001b[1;35mStep 4/10 : RUN pip install --default-timeout=60 --no-cache-dir -r .zenml_user_requirements\u001b[0m\n", - "\u001b[1;35mStep 5/10 : COPY .zenml_integration_requirements .\u001b[0m\n", - "\u001b[1;35mStep 6/10 : RUN pip install --default-timeout=60 --no-cache-dir -r .zenml_integration_requirements\u001b[0m\n", - "\u001b[1;35mStep 7/10 : ENV ZENML_ENABLE_REPO_INIT_WARNINGS=False\u001b[0m\n", - "\u001b[1;35mStep 8/10 : ENV ZENML_CONFIG_PATH=/app/.zenconfig\u001b[0m\n", - "\u001b[1;35mStep 9/10 : COPY . .\u001b[0m\n", - "\u001b[1;35mStep 10/10 : RUN chmod -R a+rw .\u001b[0m\n", - "\u001b[1;35mFound credentials in shared credentials file: ~/.aws/credentials\u001b[0m\n", - "\u001b[33mAmazon ECR requires you to create a repository before you can push an image to it. ZenML is trying to push the image 715803424590.dkr.ecr.eu-central-1.amazonaws.com/zenml:training-orchestrator but could not find any repositories because your local AWS credentials are not set. We will try to push anyway, but in case it fails you need to create a repository named \u001b[0m\u001b[1;36mzenml\u001b[33m.\u001b[0m\n", - "\u001b[1;35mPushing Docker image \u001b[0m\u001b[1;36m715803424590.dkr.ecr.eu-central-1.amazonaws.com/zenml:training-orchestrator\u001b[1;35m.\u001b[0m\n", - "\u001b[1;35mFinished pushing Docker image.\u001b[0m\n", "\u001b[1;35mBuilding Docker image \u001b[0m\u001b[1;36m715803424590.dkr.ecr.eu-central-1.amazonaws.com/zenml:training-model_trainer-sagemaker_step_operator\u001b[1;35m.\u001b[0m\n", "\u001b[1;35m- Including user-defined requirements: \u001b[0m\u001b[1;36mpyarrow\u001b[1;35m\u001b[0m\n", - "\u001b[1;35m- Including integration requirements: \u001b[0m\u001b[1;36mapache-airflow~=2.4.0\u001b[1;35m, \u001b[0m\u001b[1;36maws-profile-manager\u001b[1;35m, \u001b[0m\u001b[1;36mboto3<=1.26.76\u001b[1;35m, \u001b[0m\u001b[1;36mkubernetes\u001b[1;35m, \u001b[0m\u001b[1;36ms3fs>2022.3.0,<=2023.4.0\u001b[1;35m, \u001b[0m\u001b[1;36msagemaker==2.117.0\u001b[1;35m, \u001b[0m\u001b[1;36mscikit-learn<1.3\u001b[1;35m\u001b[0m\n", + "\u001b[1;35m- Including integration requirements: \u001b[0m\u001b[1;36maws-profile-manager\u001b[1;35m, \u001b[0m\u001b[1;36mboto3<=1.26.76\u001b[1;35m, \u001b[0m\u001b[1;36mkubernetes\u001b[1;35m, \u001b[0m\u001b[1;36mmlflow>=2.1.1,<=2.6.0\u001b[1;35m, \u001b[0m\u001b[1;36mmlserver-mlflow>=1.3.3\u001b[1;35m, \u001b[0m\u001b[1;36mmlserver>=1.3.3\u001b[1;35m, \u001b[0m\u001b[1;36ms3fs>2022.3.0,<=2023.4.0\u001b[1;35m, \u001b[0m\u001b[1;36msagemaker==2.117.0\u001b[1;35m, \u001b[0m\u001b[1;36mscikit-learn<1.3\u001b[1;35m\u001b[0m\n", + "\u001b[33mCould not import Azure service connector: No module named 'azure.identity'.\u001b[0m\n", "\u001b[1;35mStep 1/11 : FROM zenmldocker/zenml:0.50.0-py3.9\u001b[0m\n", "\u001b[1;35mStep 2/11 : WORKDIR /app\u001b[0m\n", "\u001b[1;35mStep 3/11 : COPY .zenml_user_requirements .\u001b[0m\n", @@ -730,29 +922,92 @@ "\u001b[1;35mStep 9/11 : COPY . .\u001b[0m\n", "\u001b[1;35mStep 10/11 : RUN chmod -R a+rw .\u001b[0m\n", "\u001b[1;35mStep 11/11 : ENTRYPOINT $__ZENML_ENTRYPOINT\u001b[0m\n", + "\u001b[1;35mFound credentials in shared credentials file: ~/.aws/credentials\u001b[0m\n", "\u001b[33mAmazon ECR requires you to create a repository before you can push an image to it. ZenML is trying to push the image 715803424590.dkr.ecr.eu-central-1.amazonaws.com/zenml:training-model_trainer-sagemaker_step_operator but could not find any repositories because your local AWS credentials are not set. We will try to push anyway, but in case it fails you need to create a repository named \u001b[0m\u001b[1;36mzenml\u001b[33m.\u001b[0m\n", "\u001b[1;35mPushing Docker image \u001b[0m\u001b[1;36m715803424590.dkr.ecr.eu-central-1.amazonaws.com/zenml:training-model_trainer-sagemaker_step_operator\u001b[1;35m.\u001b[0m\n", "\u001b[1;35mFinished pushing Docker image.\u001b[0m\n", "\u001b[1;35mFinished building Docker image(s).\u001b[0m\n", - "\u001b[1;35mReading the config from /home/apenner/.config/zenml/airflow/f3b0bda3-5245-4134-8ad9-6b42affebcf5/airflow.cfg\u001b[0m\n", - "\u001b[1;35mConfigured default timezone Timezone('UTC')\u001b[0m\n", "\u001b[1;35mExecuting a new run.\u001b[0m\n", "\u001b[1;35mCaching is disabled by default for \u001b[0m\u001b[1;36mtraining\u001b[1;35m.\u001b[0m\n", "\u001b[1;35mUsing a build:\u001b[0m\n", - "\u001b[1;35m Image(s): 715803424590.dkr.ecr.eu-central-1.amazonaws.com/zenml@sha256:609ab7153bb059a2e7eadef380391d45e09768ef1a482ebaf264bac6f20b71d7, 715803424590.dkr.ecr.eu-central-1.amazonaws.com/zenml@sha256:bd4a950a3f8962b2dc3dca017648ba5346958bdb1e89e31a570a6b6196011e41\u001b[0m\n", + "\u001b[1;35m Image(s): 715803424590.dkr.ecr.eu-central-1.amazonaws.com/zenml@sha256:c0ebe059e3074a18ec387ee5ef070fbfa3545216f205801fef97f8832352c1e6\u001b[0m\n", "\u001b[1;35mUsing user: \u001b[0m\u001b[1;36malexej@zenml.io\u001b[1;35m\u001b[0m\n", - "\u001b[1;35mUsing stack: \u001b[0m\u001b[1;36msagemaker-airflow-stack\u001b[1;35m\u001b[0m\n", + "\u001b[1;35mUsing stack: \u001b[0m\u001b[1;36mlocal-sagemaker-step-operator-stack\u001b[1;35m\u001b[0m\n", + "\u001b[1;35m model_registry: \u001b[0m\u001b[1;36mmlflow\u001b[1;35m\u001b[0m\n", "\u001b[1;35m step_operator: \u001b[0m\u001b[1;36msagemaker-eu\u001b[1;35m\u001b[0m\n", + "\u001b[1;35m experiment_tracker: \u001b[0m\u001b[1;36mmlflow\u001b[1;35m\u001b[0m\n", "\u001b[1;35m container_registry: \u001b[0m\u001b[1;36maws-eu\u001b[1;35m\u001b[0m\n", + "\u001b[1;35m orchestrator: \u001b[0m\u001b[1;36mdefault\u001b[1;35m\u001b[0m\n", "\u001b[1;35m image_builder: \u001b[0m\u001b[1;36mlocal\u001b[1;35m\u001b[0m\n", - "\u001b[1;35m orchestrator: \u001b[0m\u001b[1;36mairflow_orchestrator\u001b[1;35m\u001b[0m\n", "\u001b[1;35m artifact_store: \u001b[0m\u001b[1;36ms3-zenfiles\u001b[1;35m\u001b[0m\n", - "\u001b[1;35mWriting DAG definition to \u001b[0m\u001b[1;36m/home/apenner/.config/zenml/airflow/f3b0bda3-5245-4134-8ad9-6b42affebcf5/dags/training_ 761957255a9c2a84186beb62cb17f90.zip\u001b[1;35m.\u001b[0m\n", - "\u001b[33mYour orchestrator 'airflow_orchestrator' is running remotely. Note that the pipeline run will only show up on the ZenML dashboard once the first step has started executing on the remote infrastructure.\u001b[0m\n" + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_loader\u001b[1;35m has started.\u001b[0m\n", + "\u001b[1;35mDataset with 541 records loaded!\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_loader\u001b[1;35m has finished in \u001b[0m\u001b[1;36m33.288s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_splitter\u001b[1;35m has started.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_splitter\u001b[1;35m has finished in \u001b[0m\u001b[1;36m51.470s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_preprocessor\u001b[1;35m has started.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mdata_preprocessor\u001b[1;35m has finished in \u001b[0m\u001b[1;36m1m13s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mCaching \u001b[0m\u001b[1;36mdisabled\u001b[1;35m explicitly for \u001b[0m\u001b[1;36mmodel_trainer\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mmodel_trainer\u001b[1;35m has started.\u001b[0m\n", + "\u001b[1;35mUsing step operator \u001b[0m\u001b[1;36msagemaker-eu\u001b[1;35m to run step \u001b[0m\u001b[1;36mmodel_trainer\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mDefaulting to the only supported framework/algorithm version: latest.\u001b[0m\n", + "\u001b[1;35mIgnoring unnecessary instance type: None.\u001b[0m\n", + "\u001b[1;35mCreating training-job with name: training-model-trainer-vSwZ\u001b[0m\n", + "2023-12-12 09:02:10 Starting - Starting the training job...\n", + "2023-12-12 09:02:25 Starting - Preparing the instances for trainingProfilerReport-1702371727: InProgress\n", + "......\n", + "2023-12-12 09:03:57 Downloading - Downloading input data\n", + "2023-12-12 09:03:57 Training - Downloading the training image..\u001b[34m#033[31mThe ZenML global configuration version (0.51.0) is higher than the version of ZenML currently being used (0.50.0). Read more about this issue and how to solve it here: #033[0m#033[1;36mhttps://docs.zenml.io/user-guide/advanced-guide/environment-management/global-settings-of-zenml#version-mismatch-downgrading#033[31m#033[0m\u001b[0m\n", + "\u001b[34m#033[33mCould not import GCP service connector: No module named 'google.api_core'.#033[0m\u001b[0m\n", + "\u001b[34m#033[33mCould not import Azure service connector: No module named 'azure.identity'.#033[0m\u001b[0m\n", + "\n", + "2023-12-12 09:04:17 Training - Training image download completed. Training in progress.\u001b[34m2023/12/12 09:04:31 WARNING mlflow.utils.git_utils: Failed to import Git (the Git executable is probably not on your PATH), so Git SHA is not available. Error: Failed to initialize: Bad git executable.\u001b[0m\n", + "\u001b[34mThe git executable must be specified in one of the following ways:\n", + " - be included in your $PATH\n", + " - be set via $GIT_PYTHON_GIT_EXECUTABLE\n", + " - explicitly set via git.refresh()\u001b[0m\n", + "\u001b[34mAll git commands will error until this is rectified.\u001b[0m\n", + "\u001b[34mThis initial warning can be silenced or aggravated in the future by setting the\u001b[0m\n", + "\u001b[34m$GIT_PYTHON_REFRESH environment variable. Use one of the following values:\n", + " - quiet|q|silence|s|none|n|0: for no warning or exception\n", + " - warn|w|warning|1: for a printed warning\n", + " - error|e|raise|r|2: for a raised exception\u001b[0m\n", + "\u001b[34mExample:\n", + " export GIT_PYTHON_REFRESH=quiet\u001b[0m\n", + "\u001b[34m#033[1;35mTraining model DecisionTreeClassifier()...#033[0m\u001b[0m\n", + "\u001b[34m/usr/local/lib/python3.9/site-packages/sklearn/utils/validation.py:767: FutureWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", + " if not hasattr(array, \"sparse\") and array.dtypes.apply(is_sparse).any():\u001b[0m\n", + "\u001b[34m/usr/local/lib/python3.9/site-packages/sklearn/utils/validation.py:605: FutureWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", + " if is_sparse(pd_dtype):\u001b[0m\n", + "\u001b[34m/usr/local/lib/python3.9/site-packages/sklearn/utils/validation.py:614: FutureWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", + " if is_sparse(pd_dtype) or not is_extension_array_dtype(pd_dtype):\u001b[0m\n", + "\u001b[34m/usr/local/lib/python3.9/site-packages/sklearn/utils/validation.py:605: FutureWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", + " if is_sparse(pd_dtype):\u001b[0m\n", + "\u001b[34m/usr/local/lib/python3.9/site-packages/sklearn/utils/validation.py:614: FutureWarning: is_sparse is deprecated and will be removed in a future version. Check `isinstance(dtype, pd.SparseDtype)` instead.\n", + " if is_sparse(pd_dtype) or not is_extension_array_dtype(pd_dtype):\u001b[0m\n", + "\u001b[34m/usr/local/lib/python3.9/site-packages/zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py:242: FutureWarning: ``mlflow.gluon.autolog`` is deprecated since 2.5.0. This method will be removed in a future release.\n", + " gluon.autolog(disable=True)\u001b[0m\n", + "\n", + "2023-12-12 09:05:37 Uploading - Uploading generated training model\n", + "2023-12-12 09:05:37 Completed - Training job completed\n", + "Training seconds: 107\n", + "Billable seconds: 107\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mmodel_trainer\u001b[1;35m has finished in \u001b[0m\u001b[1;36m3m56s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mmodel_evaluator\u001b[1;35m has started.\u001b[0m\n", + "\u001b[33mYour artifact was materialized under Python version 'unknown' but you are currently using '3.9.13'. This might cause unexpected behavior since pickle is not reproducible across Python versions. Attempting to load anyway...\u001b[0m\n", + "\u001b[1;35mTrain accuracy=100.00%\u001b[0m\n", + "\u001b[1;35mTest accuracy=93.58%\u001b[0m\n", + "/home/apenner/.pyenv/versions/3.9.13/envs/demo/lib/python3.9/site-packages/zenml/integrations/mlflow/experiment_trackers/mlflow_experiment_tracker.py:242: FutureWarning: ``mlflow.gluon.autolog`` is deprecated since 2.5.0. This method will be removed in a future release.\n", + " gluon.autolog(disable=True)\n", + "\u001b[1;35mImplicitly linking artifact \u001b[0m\u001b[1;36moutput\u001b[1;35m to model \u001b[0m\u001b[1;36mbreast_cancer_classifier\u001b[1;35m version \u001b[0m\u001b[1;36m12\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mStep \u001b[0m\u001b[1;36mmodel_evaluator\u001b[1;35m has finished in \u001b[0m\u001b[1;36m47.132s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mRun \u001b[0m\u001b[1;36mtraining-2023_12_12-08_58_32_180978\u001b[1;35m has finished in \u001b[0m\u001b[1;36m8m32s\u001b[1;35m.\u001b[0m\n", + "\u001b[1;35mDashboard URL: https://1cf18d95-zenml.cloudinfra.zenml.io/workspaces/default/pipelines/9c068ec9-5f73-4ceb-a685-63aff9172da6/runs/2c28d3cb-1746-4920-abdc-a6f00b13bbcf/dag\u001b[0m\n" ] } ], "source": [ + "# Lets run the pipeline\n", "fe_t_configured()" ] }, @@ -763,6 +1018,8 @@ "source": [ "# Switch to full Sagemaker Stack\n", "\n", + "Just one command will allow you to switch the full code execution over to sagemaker. No Sagemaker domain knowledge necessary. No setup of VMs or Kubernetes clusters necessary. No maintenance of any infrastructure either.\n", + "\n", "![Sagemaker local stack](_assets/sagemaker_stack.png)\n" ] }, @@ -773,6 +1030,8 @@ "metadata": {}, "outputs": [], "source": [ + "# Finally, this is all that needs to be done to fully switch the code to be run fully on sagemaker\n", + "\n", "!zenml stack set sagemaker-stack" ] }, diff --git a/stack-showcase/steps/model_evaluator.py b/stack-showcase/steps/model_evaluator.py index 27613641..3dde89ec 100644 --- a/stack-showcase/steps/model_evaluator.py +++ b/stack-showcase/steps/model_evaluator.py @@ -1,14 +1,17 @@ # {% include 'template/license_header' %} import pandas as pd +import mlflow from sklearn.base import ClassifierMixin from zenml import step, log_artifact_metadata +from zenml.client import Client from zenml.logger import get_logger logger = get_logger(__name__) +experiment_tracker = Client().active_stack.experiment_tracker -@step +@step(experiment_tracker=experiment_tracker.name) def model_evaluator( model: ClassifierMixin, dataset_trn: pd.DataFrame, @@ -90,5 +93,7 @@ def model_evaluator( artifact_name="model", ) - ### YOUR CODE ENDS HERE ### + mlflow.log_metric("train_accuracy", float(trn_acc)) + mlflow.log_metric("test_accuracy", float(tst_acc)) + return float(trn_acc) diff --git a/stack-showcase/steps/model_trainer.py b/stack-showcase/steps/model_trainer.py index bd305b2d..62fa0781 100644 --- a/stack-showcase/steps/model_trainer.py +++ b/stack-showcase/steps/model_trainer.py @@ -1,16 +1,19 @@ # {% include 'template/license_header' %} +import mlflow import pandas as pd from sklearn.base import ClassifierMixin from sklearn.tree import DecisionTreeClassifier from typing_extensions import Annotated from zenml import ArtifactConfig, step +from zenml.client import Client from zenml.logger import get_logger logger = get_logger(__name__) +experiment_tracker = Client().active_stack.experiment_tracker -@step(enable_cache=False) +@step(enable_cache=False, experiment_tracker=experiment_tracker.name) def model_trainer( dataset_trn: pd.DataFrame, ) -> Annotated[ClassifierMixin, ArtifactConfig(name="model", is_model_artifact=True)]: @@ -28,9 +31,6 @@ def model_trainer( Returns: The trained model artifact. """ - - ### ADD YOUR OWN CODE HERE - THIS IS JUST AN EXAMPLE ### - # Use the dataset to fetch the target # context = get_step_context() # target = context.inputs["dataset_trn"].run_metadata['target'].value @@ -45,6 +45,7 @@ def model_trainer( dataset_trn.drop(columns=[target]), dataset_trn[target], ) - ### YOUR CODE ENDS HERE ### + + mlflow.sklearn.log_model(model, "decision_tree_classifier") return model