From ed90bc4f6128c834b0bf3222ae771a011d4f44b2 Mon Sep 17 00:00:00 2001 From: Dima Drogovoz Date: Wed, 27 Aug 2025 13:09:26 +0100 Subject: [PATCH] add pvc mount --- .../helm-chart/ai-starter-kit/files/ray.ipynb | 615 ++++++++++++++---- .../helm-chart/ai-starter-kit/values-gke.yaml | 40 +- 2 files changed, 518 insertions(+), 137 deletions(-) diff --git a/ai/ai-starter-kit/helm-chart/ai-starter-kit/files/ray.ipynb b/ai/ai-starter-kit/helm-chart/ai-starter-kit/files/ray.ipynb index 8915e534..dae93a35 100644 --- a/ai/ai-starter-kit/helm-chart/ai-starter-kit/files/ray.ipynb +++ b/ai/ai-starter-kit/helm-chart/ai-starter-kit/files/ray.ipynb @@ -17,13 +17,18 @@ "output_type": "stream", "text": [ "Defaulting to user installation because normal site-packages is not writeable\n", - "Requirement already satisfied: ray==2.41.0 in ./models-cache/lib/python3.11/site-packages (2.41.0)\n", - "Requirement already satisfied: click>=7.0 in ./models-cache/lib/python3.11/site-packages (from ray==2.41.0) (8.2.1)\n", - "Requirement already satisfied: filelock in ./models-cache/lib/python3.11/site-packages (from ray==2.41.0) (3.19.1)\n", + "Collecting ray==2.41.0\n", + " Downloading ray-2.41.0-cp311-cp311-manylinux2014_x86_64.whl.metadata (18 kB)\n", + "Collecting click>=7.0 (from ray==2.41.0)\n", + " Downloading click-8.2.1-py3-none-any.whl.metadata (2.5 kB)\n", + "Collecting filelock (from ray==2.41.0)\n", + " Downloading filelock-3.19.1-py3-none-any.whl.metadata (2.1 kB)\n", "Requirement already satisfied: jsonschema in /opt/bitnami/miniconda/lib/python3.11/site-packages (from ray==2.41.0) (4.22.0)\n", - "Requirement already satisfied: msgpack<2.0.0,>=1.0.0 in ./models-cache/lib/python3.11/site-packages (from ray==2.41.0) (1.1.1)\n", + "Collecting msgpack<2.0.0,>=1.0.0 (from ray==2.41.0)\n", + " Downloading msgpack-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (8.4 kB)\n", "Requirement already satisfied: packaging in /opt/bitnami/miniconda/lib/python3.11/site-packages (from ray==2.41.0) (23.2)\n", - "Requirement already satisfied: protobuf!=3.19.5,>=3.15.3 in ./models-cache/lib/python3.11/site-packages (from ray==2.41.0) (6.32.0)\n", + "Collecting protobuf!=3.19.5,>=3.15.3 (from ray==2.41.0)\n", + " Downloading protobuf-6.32.0-cp39-abi3-manylinux2014_x86_64.whl.metadata (593 bytes)\n", "Requirement already satisfied: pyyaml in /opt/bitnami/miniconda/lib/python3.11/site-packages (from ray==2.41.0) (6.0.1)\n", "Requirement already satisfied: aiosignal in /opt/bitnami/miniconda/lib/python3.11/site-packages (from ray==2.41.0) (1.3.1)\n", "Requirement already satisfied: frozenlist in /opt/bitnami/miniconda/lib/python3.11/site-packages (from ray==2.41.0) (1.4.1)\n", @@ -35,7 +40,20 @@ "Requirement already satisfied: charset-normalizer<4,>=2 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from requests->ray==2.41.0) (2.0.4)\n", "Requirement already satisfied: idna<4,>=2.5 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from requests->ray==2.41.0) (3.7)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from requests->ray==2.41.0) (2.1.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from requests->ray==2.41.0) (2024.2.2)\n" + "Requirement already satisfied: certifi>=2017.4.17 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from requests->ray==2.41.0) (2024.2.2)\n", + "Downloading ray-2.41.0-cp311-cp311-manylinux2014_x86_64.whl (67.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m67.3/67.3 MB\u001b[0m \u001b[31m25.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading click-8.2.1-py3-none-any.whl (102 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m102.2/102.2 kB\u001b[0m \u001b[31m11.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading msgpack-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (429 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m430.0/430.0 kB\u001b[0m \u001b[31m41.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading protobuf-6.32.0-cp39-abi3-manylinux2014_x86_64.whl (322 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m322.0/322.0 kB\u001b[0m \u001b[31m33.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading filelock-3.19.1-py3-none-any.whl (15 kB)\n", + "Installing collected packages: protobuf, msgpack, filelock, click, ray\n", + "\u001b[33m WARNING: The scripts ray, rllib, serve and tune are installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0mSuccessfully installed click-8.2.1 filelock-3.19.1 msgpack-1.1.1 protobuf-6.32.0 ray-2.41.0\n" ] } ], @@ -60,72 +78,121 @@ "output_type": "stream", "text": [ "Defaulting to user installation because normal site-packages is not writeable\n", - "Requirement already satisfied: numpy in ./models-cache/lib/python3.11/site-packages (2.3.2)\n", - "Requirement already satisfied: mlflow in ./models-cache/lib/python3.11/site-packages (3.3.1)\n", - "Requirement already satisfied: tensorflow in ./models-cache/lib/python3.11/site-packages (2.20.0)\n", + "Collecting numpy\n", + " Downloading numpy-2.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (62 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.1/62.1 kB\u001b[0m \u001b[31m3.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting mlflow\n", + " Downloading mlflow-3.3.1-py3-none-any.whl.metadata (30 kB)\n", + "Collecting tensorflow\n", + " Downloading tensorflow-2.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.5 kB)\n", "Requirement already satisfied: ray[client,default,serve] in ./models-cache/lib/python3.11/site-packages (2.41.0)\n", - "Requirement already satisfied: mlflow-skinny==3.3.1 in ./models-cache/lib/python3.11/site-packages (from mlflow) (3.3.1)\n", - "Requirement already satisfied: mlflow-tracing==3.3.1 in ./models-cache/lib/python3.11/site-packages (from mlflow) (3.3.1)\n", - "Requirement already satisfied: Flask<4 in ./models-cache/lib/python3.11/site-packages (from mlflow) (3.1.2)\n", + "Collecting mlflow-skinny==3.3.1 (from mlflow)\n", + " Downloading mlflow_skinny-3.3.1-py3-none-any.whl.metadata (31 kB)\n", + "Collecting mlflow-tracing==3.3.1 (from mlflow)\n", + " Downloading mlflow_tracing-3.3.1-py3-none-any.whl.metadata (19 kB)\n", + "Collecting Flask<4 (from mlflow)\n", + " Downloading flask-3.1.2-py3-none-any.whl.metadata (3.2 kB)\n", "Requirement already satisfied: alembic!=1.10.0,<2 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from mlflow) (1.13.1)\n", - "Requirement already satisfied: cryptography<46,>=43.0.0 in ./models-cache/lib/python3.11/site-packages (from mlflow) (45.0.6)\n", + "Collecting cryptography<46,>=43.0.0 (from mlflow)\n", + " Downloading cryptography-45.0.6-cp311-abi3-manylinux_2_34_x86_64.whl.metadata (5.7 kB)\n", "Requirement already satisfied: docker<8,>=4.0.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from mlflow) (7.1.0)\n", - "Requirement already satisfied: graphene<4 in ./models-cache/lib/python3.11/site-packages (from mlflow) (3.4.3)\n", - "Requirement already satisfied: gunicorn<24 in ./models-cache/lib/python3.11/site-packages (from mlflow) (23.0.0)\n", - "Requirement already satisfied: matplotlib<4 in ./models-cache/lib/python3.11/site-packages (from mlflow) (3.10.5)\n", - "Requirement already satisfied: pandas<3 in ./models-cache/lib/python3.11/site-packages (from mlflow) (2.3.2)\n", - "Requirement already satisfied: pyarrow<22,>=4.0.0 in ./models-cache/lib/python3.11/site-packages (from mlflow) (21.0.0)\n", - "Requirement already satisfied: scikit-learn<2 in ./models-cache/lib/python3.11/site-packages (from mlflow) (1.7.1)\n", - "Requirement already satisfied: scipy<2 in ./models-cache/lib/python3.11/site-packages (from mlflow) (1.16.1)\n", - "Requirement already satisfied: sqlalchemy<3,>=1.4.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from mlflow) (2.0.30)\n", - "Requirement already satisfied: cachetools<7,>=5.0.0 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (5.5.2)\n", + "Collecting graphene<4 (from mlflow)\n", + " Downloading graphene-3.4.3-py2.py3-none-any.whl.metadata (6.9 kB)\n", + "Collecting gunicorn<24 (from mlflow)\n", + " Downloading gunicorn-23.0.0-py3-none-any.whl.metadata (4.4 kB)\n", + "Collecting matplotlib<4 (from mlflow)\n", + " Downloading matplotlib-3.10.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (11 kB)\n", + "Collecting pandas<3 (from mlflow)\n", + " Downloading pandas-2.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (91 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m91.2/91.2 kB\u001b[0m \u001b[31m12.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting pyarrow<22,>=4.0.0 (from mlflow)\n", + " Downloading pyarrow-21.0.0-cp311-cp311-manylinux_2_28_x86_64.whl.metadata (3.3 kB)\n", + "Collecting scikit-learn<2 (from mlflow)\n", + " Downloading scikit_learn-1.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (11 kB)\n", + "Collecting scipy<2 (from mlflow)\n", + " Downloading scipy-1.16.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (61 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.0/62.0 kB\u001b[0m \u001b[31m8.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: sqlalchemy<3,>=1.4.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from mlflow) (2.0.30)\n", + "Collecting cachetools<7,>=5.0.0 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading cachetools-6.2.0-py3-none-any.whl.metadata (5.4 kB)\n", "Requirement already satisfied: click<9,>=7.0 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (8.2.1)\n", - "Requirement already satisfied: cloudpickle<4 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (3.1.1)\n", - "Requirement already satisfied: databricks-sdk<1,>=0.20.0 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (0.64.0)\n", - "Requirement already satisfied: fastapi<1 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (0.116.1)\n", - "Requirement already satisfied: gitpython<4,>=3.1.9 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (3.1.45)\n", - "Requirement already satisfied: importlib_metadata!=4.7.0,<9,>=3.7.0 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (8.7.0)\n", - "Requirement already satisfied: opentelemetry-api<3,>=1.9.0 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (1.36.0)\n", - "Requirement already satisfied: opentelemetry-sdk<3,>=1.9.0 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (1.36.0)\n", + "Collecting cloudpickle<4 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading cloudpickle-3.1.1-py3-none-any.whl.metadata (7.1 kB)\n", + "Collecting databricks-sdk<1,>=0.20.0 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading databricks_sdk-0.64.0-py3-none-any.whl.metadata (39 kB)\n", + "Collecting fastapi<1 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading fastapi-0.116.1-py3-none-any.whl.metadata (28 kB)\n", + "Collecting gitpython<4,>=3.1.9 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading gitpython-3.1.45-py3-none-any.whl.metadata (13 kB)\n", + "Collecting importlib_metadata!=4.7.0,<9,>=3.7.0 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading importlib_metadata-8.7.0-py3-none-any.whl.metadata (4.8 kB)\n", + "Collecting opentelemetry-api<3,>=1.9.0 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading opentelemetry_api-1.36.0-py3-none-any.whl.metadata (1.5 kB)\n", + "Collecting opentelemetry-sdk<3,>=1.9.0 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading opentelemetry_sdk-1.36.0-py3-none-any.whl.metadata (1.5 kB)\n", "Requirement already satisfied: packaging<26 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (23.2)\n", "Requirement already satisfied: protobuf<7,>=3.12.0 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (6.32.0)\n", "Requirement already satisfied: pydantic<3,>=1.10.8 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (2.7.3)\n", "Requirement already satisfied: pyyaml<7,>=5.1 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (6.0.1)\n", "Requirement already satisfied: requests<3,>=2.17.3 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (2.31.0)\n", - "Requirement already satisfied: sqlparse<1,>=0.4.0 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (0.5.3)\n", + "Collecting sqlparse<1,>=0.4.0 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading sqlparse-0.5.3-py3-none-any.whl.metadata (3.9 kB)\n", "Requirement already satisfied: typing-extensions<5,>=4.0.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (4.12.2)\n", - "Requirement already satisfied: uvicorn<1 in ./models-cache/lib/python3.11/site-packages (from mlflow-skinny==3.3.1->mlflow) (0.35.0)\n", - "Requirement already satisfied: absl-py>=1.0.0 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (2.3.1)\n", - "Requirement already satisfied: astunparse>=1.6.0 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (1.6.3)\n", - "Requirement already satisfied: flatbuffers>=24.3.25 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (25.2.10)\n", - "Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (0.6.0)\n", - "Requirement already satisfied: google_pasta>=0.1.1 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (0.2.0)\n", - "Requirement already satisfied: libclang>=13.0.0 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (18.1.1)\n", - "Requirement already satisfied: opt_einsum>=2.3.2 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (3.4.0)\n", + "Collecting uvicorn<1 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading uvicorn-0.35.0-py3-none-any.whl.metadata (6.5 kB)\n", + "Collecting absl-py>=1.0.0 (from tensorflow)\n", + " Downloading absl_py-2.3.1-py3-none-any.whl.metadata (3.3 kB)\n", + "Collecting astunparse>=1.6.0 (from tensorflow)\n", + " Downloading astunparse-1.6.3-py2.py3-none-any.whl.metadata (4.4 kB)\n", + "Collecting flatbuffers>=24.3.25 (from tensorflow)\n", + " Downloading flatbuffers-25.2.10-py2.py3-none-any.whl.metadata (875 bytes)\n", + "Collecting gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 (from tensorflow)\n", + " Downloading gast-0.6.0-py3-none-any.whl.metadata (1.3 kB)\n", + "Collecting google_pasta>=0.1.1 (from tensorflow)\n", + " Downloading google_pasta-0.2.0-py3-none-any.whl.metadata (814 bytes)\n", + "Collecting libclang>=13.0.0 (from tensorflow)\n", + " Downloading libclang-18.1.1-py2.py3-none-manylinux2010_x86_64.whl.metadata (5.2 kB)\n", + "Collecting opt_einsum>=2.3.2 (from tensorflow)\n", + " Downloading opt_einsum-3.4.0-py3-none-any.whl.metadata (6.3 kB)\n", "Requirement already satisfied: setuptools in /opt/bitnami/miniconda/lib/python3.11/site-packages (from tensorflow) (69.5.1)\n", "Requirement already satisfied: six>=1.12.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from tensorflow) (1.16.0)\n", - "Requirement already satisfied: termcolor>=1.1.0 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (3.1.0)\n", - "Requirement already satisfied: wrapt>=1.11.0 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (1.17.3)\n", - "Requirement already satisfied: grpcio<2.0,>=1.24.3 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (1.74.0)\n", - "Requirement already satisfied: tensorboard~=2.20.0 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (2.20.0)\n", - "Requirement already satisfied: keras>=3.10.0 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (3.11.3)\n", - "Requirement already satisfied: h5py>=3.11.0 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (3.14.0)\n", - "Requirement already satisfied: ml_dtypes<1.0.0,>=0.5.1 in ./models-cache/lib/python3.11/site-packages (from tensorflow) (0.5.3)\n", + "Collecting termcolor>=1.1.0 (from tensorflow)\n", + " Downloading termcolor-3.1.0-py3-none-any.whl.metadata (6.4 kB)\n", + "Collecting wrapt>=1.11.0 (from tensorflow)\n", + " Downloading wrapt-1.17.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (6.4 kB)\n", + "Collecting grpcio<2.0,>=1.24.3 (from tensorflow)\n", + " Downloading grpcio-1.74.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.8 kB)\n", + "Collecting tensorboard~=2.20.0 (from tensorflow)\n", + " Downloading tensorboard-2.20.0-py3-none-any.whl.metadata (1.8 kB)\n", + "Collecting keras>=3.10.0 (from tensorflow)\n", + " Downloading keras-3.11.3-py3-none-any.whl.metadata (5.9 kB)\n", + "Collecting h5py>=3.11.0 (from tensorflow)\n", + " Downloading h5py-3.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.7 kB)\n", + "Collecting ml_dtypes<1.0.0,>=0.5.1 (from tensorflow)\n", + " Downloading ml_dtypes-0.5.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (8.9 kB)\n", "Requirement already satisfied: filelock in ./models-cache/lib/python3.11/site-packages (from ray[client,default,serve]) (3.19.1)\n", "Requirement already satisfied: jsonschema in /opt/bitnami/miniconda/lib/python3.11/site-packages (from ray[client,default,serve]) (4.22.0)\n", "Requirement already satisfied: msgpack<2.0.0,>=1.0.0 in ./models-cache/lib/python3.11/site-packages (from ray[client,default,serve]) (1.1.1)\n", "Requirement already satisfied: aiosignal in /opt/bitnami/miniconda/lib/python3.11/site-packages (from ray[client,default,serve]) (1.3.1)\n", "Requirement already satisfied: frozenlist in /opt/bitnami/miniconda/lib/python3.11/site-packages (from ray[client,default,serve]) (1.4.1)\n", "Requirement already satisfied: aiohttp>=3.7 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from ray[client,default,serve]) (3.9.5)\n", - "Requirement already satisfied: aiohttp-cors in ./models-cache/lib/python3.11/site-packages (from ray[client,default,serve]) (0.8.1)\n", - "Requirement already satisfied: colorful in ./models-cache/lib/python3.11/site-packages (from ray[client,default,serve]) (0.5.7)\n", - "Requirement already satisfied: opencensus in ./models-cache/lib/python3.11/site-packages (from ray[client,default,serve]) (0.11.4)\n", + "Collecting aiohttp-cors (from ray[client,default,serve])\n", + " Downloading aiohttp_cors-0.8.1-py3-none-any.whl.metadata (20 kB)\n", + "Collecting colorful (from ray[client,default,serve])\n", + " Downloading colorful-0.5.7-py2.py3-none-any.whl.metadata (16 kB)\n", + "Collecting opencensus (from ray[client,default,serve])\n", + " Downloading opencensus-0.11.4-py2.py3-none-any.whl.metadata (12 kB)\n", "Requirement already satisfied: prometheus-client>=0.7.1 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from ray[client,default,serve]) (0.20.0)\n", - "Requirement already satisfied: smart-open in ./models-cache/lib/python3.11/site-packages (from ray[client,default,serve]) (7.3.0.post1)\n", - "Requirement already satisfied: virtualenv!=20.21.1,>=20.0.24 in ./models-cache/lib/python3.11/site-packages (from ray[client,default,serve]) (20.34.0)\n", - "Requirement already satisfied: py-spy>=0.2.0 in ./models-cache/lib/python3.11/site-packages (from ray[client,default,serve]) (0.4.1)\n", - "Requirement already satisfied: starlette in ./models-cache/lib/python3.11/site-packages (from ray[client,default,serve]) (0.47.2)\n", - "Requirement already satisfied: watchfiles in ./models-cache/lib/python3.11/site-packages (from ray[client,default,serve]) (1.1.0)\n", + "Collecting smart-open (from ray[client,default,serve])\n", + " Downloading smart_open-7.3.0.post1-py3-none-any.whl.metadata (24 kB)\n", + "Collecting virtualenv!=20.21.1,>=20.0.24 (from ray[client,default,serve])\n", + " Downloading virtualenv-20.34.0-py3-none-any.whl.metadata (4.6 kB)\n", + "Collecting py-spy>=0.2.0 (from ray[client,default,serve])\n", + " Downloading py_spy-0.4.1-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl.metadata (510 bytes)\n", + "Collecting starlette (from ray[client,default,serve])\n", + " Downloading starlette-0.47.3-py3-none-any.whl.metadata (6.2 kB)\n", + "Collecting watchfiles (from ray[client,default,serve])\n", + " Downloading watchfiles-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.9 kB)\n", "Requirement already satisfied: attrs>=17.3.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from aiohttp>=3.7->ray[client,default,serve]) (23.2.0)\n", "Requirement already satisfied: multidict<7.0,>=4.5 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from aiohttp>=3.7->ray[client,default,serve]) (6.0.5)\n", "Requirement already satisfied: yarl<2.0,>=1.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from aiohttp>=3.7->ray[client,default,serve]) (1.9.4)\n", @@ -133,63 +200,295 @@ "Requirement already satisfied: wheel<1.0,>=0.23.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from astunparse>=1.6.0->tensorflow) (0.43.0)\n", "Requirement already satisfied: cffi>=1.14 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from cryptography<46,>=43.0.0->mlflow) (1.16.0)\n", "Requirement already satisfied: urllib3>=1.26.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from docker<8,>=4.0.0->mlflow) (2.1.0)\n", - "Requirement already satisfied: blinker>=1.9.0 in ./models-cache/lib/python3.11/site-packages (from Flask<4->mlflow) (1.9.0)\n", - "Requirement already satisfied: itsdangerous>=2.2.0 in ./models-cache/lib/python3.11/site-packages (from Flask<4->mlflow) (2.2.0)\n", + "Collecting blinker>=1.9.0 (from Flask<4->mlflow)\n", + " Downloading blinker-1.9.0-py3-none-any.whl.metadata (1.6 kB)\n", + "Collecting itsdangerous>=2.2.0 (from Flask<4->mlflow)\n", + " Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)\n", "Requirement already satisfied: jinja2>=3.1.2 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from Flask<4->mlflow) (3.1.4)\n", "Requirement already satisfied: markupsafe>=2.1.1 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from Flask<4->mlflow) (2.1.5)\n", - "Requirement already satisfied: werkzeug>=3.1.0 in ./models-cache/lib/python3.11/site-packages (from Flask<4->mlflow) (3.1.3)\n", - "Requirement already satisfied: graphql-core<3.3,>=3.1 in ./models-cache/lib/python3.11/site-packages (from graphene<4->mlflow) (3.2.6)\n", - "Requirement already satisfied: graphql-relay<3.3,>=3.1 in ./models-cache/lib/python3.11/site-packages (from graphene<4->mlflow) (3.2.0)\n", + "Collecting werkzeug>=3.1.0 (from Flask<4->mlflow)\n", + " Downloading werkzeug-3.1.3-py3-none-any.whl.metadata (3.7 kB)\n", + "Collecting graphql-core<3.3,>=3.1 (from graphene<4->mlflow)\n", + " Downloading graphql_core-3.2.6-py3-none-any.whl.metadata (11 kB)\n", + "Collecting graphql-relay<3.3,>=3.1 (from graphene<4->mlflow)\n", + " Downloading graphql_relay-3.2.0-py3-none-any.whl.metadata (12 kB)\n", "Requirement already satisfied: python-dateutil<3,>=2.7.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from graphene<4->mlflow) (2.9.0.post0)\n", - "Requirement already satisfied: rich in ./models-cache/lib/python3.11/site-packages (from keras>=3.10.0->tensorflow) (14.1.0)\n", - "Requirement already satisfied: namex in ./models-cache/lib/python3.11/site-packages (from keras>=3.10.0->tensorflow) (0.1.0)\n", - "Requirement already satisfied: optree in ./models-cache/lib/python3.11/site-packages (from keras>=3.10.0->tensorflow) (0.17.0)\n", - "Requirement already satisfied: contourpy>=1.0.1 in ./models-cache/lib/python3.11/site-packages (from matplotlib<4->mlflow) (1.3.3)\n", - "Requirement already satisfied: cycler>=0.10 in ./models-cache/lib/python3.11/site-packages (from matplotlib<4->mlflow) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in ./models-cache/lib/python3.11/site-packages (from matplotlib<4->mlflow) (4.59.1)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in ./models-cache/lib/python3.11/site-packages (from matplotlib<4->mlflow) (1.4.9)\n", - "Requirement already satisfied: pillow>=8 in ./models-cache/lib/python3.11/site-packages (from matplotlib<4->mlflow) (11.3.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in ./models-cache/lib/python3.11/site-packages (from matplotlib<4->mlflow) (3.2.3)\n", - "Requirement already satisfied: pytz>=2020.1 in ./models-cache/lib/python3.11/site-packages (from pandas<3->mlflow) (2025.2)\n", - "Requirement already satisfied: tzdata>=2022.7 in ./models-cache/lib/python3.11/site-packages (from pandas<3->mlflow) (2025.2)\n", + "Collecting rich (from keras>=3.10.0->tensorflow)\n", + " Downloading rich-14.1.0-py3-none-any.whl.metadata (18 kB)\n", + "Collecting namex (from keras>=3.10.0->tensorflow)\n", + " Downloading namex-0.1.0-py3-none-any.whl.metadata (322 bytes)\n", + "Collecting optree (from keras>=3.10.0->tensorflow)\n", + " Downloading optree-0.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (33 kB)\n", + "Collecting contourpy>=1.0.1 (from matplotlib<4->mlflow)\n", + " Downloading contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (5.5 kB)\n", + "Collecting cycler>=0.10 (from matplotlib<4->mlflow)\n", + " Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)\n", + "Collecting fonttools>=4.22.0 (from matplotlib<4->mlflow)\n", + " Downloading fonttools-4.59.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (108 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m108.9/108.9 kB\u001b[0m \u001b[31m11.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting kiwisolver>=1.3.1 (from matplotlib<4->mlflow)\n", + " Downloading kiwisolver-1.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (6.3 kB)\n", + "Collecting pillow>=8 (from matplotlib<4->mlflow)\n", + " Downloading pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (9.0 kB)\n", + "Collecting pyparsing>=2.3.1 (from matplotlib<4->mlflow)\n", + " Downloading pyparsing-3.2.3-py3-none-any.whl.metadata (5.0 kB)\n", + "Collecting pytz>=2020.1 (from pandas<3->mlflow)\n", + " Downloading pytz-2025.2-py2.py3-none-any.whl.metadata (22 kB)\n", + "Collecting tzdata>=2022.7 (from pandas<3->mlflow)\n", + " Downloading tzdata-2025.2-py2.py3-none-any.whl.metadata (1.4 kB)\n", "Requirement already satisfied: annotated-types>=0.4.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from pydantic<3,>=1.10.8->mlflow-skinny==3.3.1->mlflow) (0.7.0)\n", "Requirement already satisfied: pydantic-core==2.18.4 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from pydantic<3,>=1.10.8->mlflow-skinny==3.3.1->mlflow) (2.18.4)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from requests<3,>=2.17.3->mlflow-skinny==3.3.1->mlflow) (2.0.4)\n", "Requirement already satisfied: idna<4,>=2.5 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from requests<3,>=2.17.3->mlflow-skinny==3.3.1->mlflow) (3.7)\n", "Requirement already satisfied: certifi>=2017.4.17 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from requests<3,>=2.17.3->mlflow-skinny==3.3.1->mlflow) (2024.2.2)\n", - "Requirement already satisfied: joblib>=1.2.0 in ./models-cache/lib/python3.11/site-packages (from scikit-learn<2->mlflow) (1.5.1)\n", - "Requirement already satisfied: threadpoolctl>=3.1.0 in ./models-cache/lib/python3.11/site-packages (from scikit-learn<2->mlflow) (3.6.0)\n", + "Collecting joblib>=1.2.0 (from scikit-learn<2->mlflow)\n", + " Downloading joblib-1.5.1-py3-none-any.whl.metadata (5.6 kB)\n", + "Collecting threadpoolctl>=3.1.0 (from scikit-learn<2->mlflow)\n", + " Downloading threadpoolctl-3.6.0-py3-none-any.whl.metadata (13 kB)\n", "Requirement already satisfied: greenlet!=0.4.17 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from sqlalchemy<3,>=1.4.0->mlflow) (3.0.3)\n", "Requirement already satisfied: anyio<5,>=3.6.2 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from starlette->ray[client,default,serve]) (4.4.0)\n", - "Requirement already satisfied: markdown>=2.6.8 in ./models-cache/lib/python3.11/site-packages (from tensorboard~=2.20.0->tensorflow) (3.8.2)\n", - "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in ./models-cache/lib/python3.11/site-packages (from tensorboard~=2.20.0->tensorflow) (0.7.2)\n", - "Requirement already satisfied: distlib<1,>=0.3.7 in ./models-cache/lib/python3.11/site-packages (from virtualenv!=20.21.1,>=20.0.24->ray[client,default,serve]) (0.4.0)\n", + "Collecting markdown>=2.6.8 (from tensorboard~=2.20.0->tensorflow)\n", + " Downloading markdown-3.8.2-py3-none-any.whl.metadata (5.1 kB)\n", + "Collecting tensorboard-data-server<0.8.0,>=0.7.0 (from tensorboard~=2.20.0->tensorflow)\n", + " Downloading tensorboard_data_server-0.7.2-py3-none-manylinux_2_31_x86_64.whl.metadata (1.1 kB)\n", + "Collecting distlib<1,>=0.3.7 (from virtualenv!=20.21.1,>=20.0.24->ray[client,default,serve])\n", + " Downloading distlib-0.4.0-py2.py3-none-any.whl.metadata (5.2 kB)\n", "Requirement already satisfied: platformdirs<5,>=3.9.1 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from virtualenv!=20.21.1,>=20.0.24->ray[client,default,serve]) (3.10.0)\n", "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from jsonschema->ray[client,default,serve]) (2023.12.1)\n", "Requirement already satisfied: referencing>=0.28.4 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from jsonschema->ray[client,default,serve]) (0.35.1)\n", "Requirement already satisfied: rpds-py>=0.7.1 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from jsonschema->ray[client,default,serve]) (0.18.1)\n", - "Requirement already satisfied: opencensus-context>=0.1.3 in ./models-cache/lib/python3.11/site-packages (from opencensus->ray[client,default,serve]) (0.1.3)\n", - "Requirement already satisfied: google-api-core<3.0.0,>=1.0.0 in ./models-cache/lib/python3.11/site-packages (from opencensus->ray[client,default,serve]) (2.25.1)\n", + "Collecting opencensus-context>=0.1.3 (from opencensus->ray[client,default,serve])\n", + " Downloading opencensus_context-0.1.3-py2.py3-none-any.whl.metadata (3.3 kB)\n", + "Collecting google-api-core<3.0.0,>=1.0.0 (from opencensus->ray[client,default,serve])\n", + " Downloading google_api_core-2.25.1-py3-none-any.whl.metadata (3.0 kB)\n", "Requirement already satisfied: h11>=0.8 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from uvicorn[standard]; extra == \"serve\"->ray[client,default,serve]) (0.14.0)\n", - "Requirement already satisfied: httptools>=0.6.3 in ./models-cache/lib/python3.11/site-packages (from uvicorn[standard]; extra == \"serve\"->ray[client,default,serve]) (0.6.4)\n", - "Requirement already satisfied: python-dotenv>=0.13 in ./models-cache/lib/python3.11/site-packages (from uvicorn[standard]; extra == \"serve\"->ray[client,default,serve]) (1.1.1)\n", - "Requirement already satisfied: uvloop>=0.15.1 in ./models-cache/lib/python3.11/site-packages (from uvicorn[standard]; extra == \"serve\"->ray[client,default,serve]) (0.21.0)\n", - "Requirement already satisfied: websockets>=10.4 in ./models-cache/lib/python3.11/site-packages (from uvicorn[standard]; extra == \"serve\"->ray[client,default,serve]) (15.0.1)\n", + "Collecting httptools>=0.6.3 (from uvicorn[standard]; extra == \"serve\"->ray[client,default,serve])\n", + " Downloading httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.6 kB)\n", + "Collecting python-dotenv>=0.13 (from uvicorn[standard]; extra == \"serve\"->ray[client,default,serve])\n", + " Downloading python_dotenv-1.1.1-py3-none-any.whl.metadata (24 kB)\n", + "Collecting uvloop>=0.15.1 (from uvicorn[standard]; extra == \"serve\"->ray[client,default,serve])\n", + " Downloading uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.9 kB)\n", + "Collecting websockets>=10.4 (from uvicorn[standard]; extra == \"serve\"->ray[client,default,serve])\n", + " Downloading websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.8 kB)\n", "Requirement already satisfied: sniffio>=1.1 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from anyio<5,>=3.6.2->starlette->ray[client,default,serve]) (1.3.1)\n", "Requirement already satisfied: pycparser in /opt/bitnami/miniconda/lib/python3.11/site-packages (from cffi>=1.14->cryptography<46,>=43.0.0->mlflow) (2.21)\n", - "Requirement already satisfied: google-auth~=2.0 in ./models-cache/lib/python3.11/site-packages (from databricks-sdk<1,>=0.20.0->mlflow-skinny==3.3.1->mlflow) (2.40.3)\n", - "Requirement already satisfied: gitdb<5,>=4.0.1 in ./models-cache/lib/python3.11/site-packages (from gitpython<4,>=3.1.9->mlflow-skinny==3.3.1->mlflow) (4.0.12)\n", - "Requirement already satisfied: googleapis-common-protos<2.0.0,>=1.56.2 in ./models-cache/lib/python3.11/site-packages (from google-api-core<3.0.0,>=1.0.0->opencensus->ray[client,default,serve]) (1.70.0)\n", - "Requirement already satisfied: proto-plus<2.0.0,>=1.22.3 in ./models-cache/lib/python3.11/site-packages (from google-api-core<3.0.0,>=1.0.0->opencensus->ray[client,default,serve]) (1.26.1)\n", - "Requirement already satisfied: zipp>=3.20 in ./models-cache/lib/python3.11/site-packages (from importlib_metadata!=4.7.0,<9,>=3.7.0->mlflow-skinny==3.3.1->mlflow) (3.23.0)\n", - "Requirement already satisfied: opentelemetry-semantic-conventions==0.57b0 in ./models-cache/lib/python3.11/site-packages (from opentelemetry-sdk<3,>=1.9.0->mlflow-skinny==3.3.1->mlflow) (0.57b0)\n", - "Requirement already satisfied: markdown-it-py>=2.2.0 in ./models-cache/lib/python3.11/site-packages (from rich->keras>=3.10.0->tensorflow) (4.0.0)\n", + "Collecting google-auth~=2.0 (from databricks-sdk<1,>=0.20.0->mlflow-skinny==3.3.1->mlflow)\n", + " Downloading google_auth-2.40.3-py2.py3-none-any.whl.metadata (6.2 kB)\n", + "Collecting gitdb<5,>=4.0.1 (from gitpython<4,>=3.1.9->mlflow-skinny==3.3.1->mlflow)\n", + " Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)\n", + "Collecting googleapis-common-protos<2.0.0,>=1.56.2 (from google-api-core<3.0.0,>=1.0.0->opencensus->ray[client,default,serve])\n", + " Downloading googleapis_common_protos-1.70.0-py3-none-any.whl.metadata (9.3 kB)\n", + "Collecting proto-plus<2.0.0,>=1.22.3 (from google-api-core<3.0.0,>=1.0.0->opencensus->ray[client,default,serve])\n", + " Downloading proto_plus-1.26.1-py3-none-any.whl.metadata (2.2 kB)\n", + "Collecting zipp>=3.20 (from importlib_metadata!=4.7.0,<9,>=3.7.0->mlflow-skinny==3.3.1->mlflow)\n", + " Downloading zipp-3.23.0-py3-none-any.whl.metadata (3.6 kB)\n", + "Collecting opentelemetry-semantic-conventions==0.57b0 (from opentelemetry-sdk<3,>=1.9.0->mlflow-skinny==3.3.1->mlflow)\n", + " Downloading opentelemetry_semantic_conventions-0.57b0-py3-none-any.whl.metadata (2.4 kB)\n", + "Collecting markdown-it-py>=2.2.0 (from rich->keras>=3.10.0->tensorflow)\n", + " Downloading markdown_it_py-4.0.0-py3-none-any.whl.metadata (7.3 kB)\n", "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /opt/bitnami/miniconda/lib/python3.11/site-packages (from rich->keras>=3.10.0->tensorflow) (2.18.0)\n", - "Requirement already satisfied: smmap<6,>=3.0.1 in ./models-cache/lib/python3.11/site-packages (from gitdb<5,>=4.0.1->gitpython<4,>=3.1.9->mlflow-skinny==3.3.1->mlflow) (5.0.2)\n", - "Requirement already satisfied: pyasn1-modules>=0.2.1 in ./models-cache/lib/python3.11/site-packages (from google-auth~=2.0->databricks-sdk<1,>=0.20.0->mlflow-skinny==3.3.1->mlflow) (0.4.2)\n", - "Requirement already satisfied: rsa<5,>=3.1.4 in ./models-cache/lib/python3.11/site-packages (from google-auth~=2.0->databricks-sdk<1,>=0.20.0->mlflow-skinny==3.3.1->mlflow) (4.9.1)\n", - "Requirement already satisfied: mdurl~=0.1 in ./models-cache/lib/python3.11/site-packages (from markdown-it-py>=2.2.0->rich->keras>=3.10.0->tensorflow) (0.1.2)\n", - "Requirement already satisfied: pyasn1<0.7.0,>=0.6.1 in ./models-cache/lib/python3.11/site-packages (from pyasn1-modules>=0.2.1->google-auth~=2.0->databricks-sdk<1,>=0.20.0->mlflow-skinny==3.3.1->mlflow) (0.6.1)\n" + "Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython<4,>=3.1.9->mlflow-skinny==3.3.1->mlflow)\n", + " Downloading smmap-5.0.2-py3-none-any.whl.metadata (4.3 kB)\n", + "Collecting cachetools<7,>=5.0.0 (from mlflow-skinny==3.3.1->mlflow)\n", + " Downloading cachetools-5.5.2-py3-none-any.whl.metadata (5.4 kB)\n", + "Collecting pyasn1-modules>=0.2.1 (from google-auth~=2.0->databricks-sdk<1,>=0.20.0->mlflow-skinny==3.3.1->mlflow)\n", + " Downloading pyasn1_modules-0.4.2-py3-none-any.whl.metadata (3.5 kB)\n", + "Collecting rsa<5,>=3.1.4 (from google-auth~=2.0->databricks-sdk<1,>=0.20.0->mlflow-skinny==3.3.1->mlflow)\n", + " Downloading rsa-4.9.1-py3-none-any.whl.metadata (5.6 kB)\n", + "Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich->keras>=3.10.0->tensorflow)\n", + " Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)\n", + "Collecting pyasn1<0.7.0,>=0.6.1 (from pyasn1-modules>=0.2.1->google-auth~=2.0->databricks-sdk<1,>=0.20.0->mlflow-skinny==3.3.1->mlflow)\n", + " Downloading pyasn1-0.6.1-py3-none-any.whl.metadata (8.4 kB)\n", + "Downloading numpy-2.3.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (16.9 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m16.9/16.9 MB\u001b[0m \u001b[31m119.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading mlflow-3.3.1-py3-none-any.whl (26.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m26.4/26.4 MB\u001b[0m \u001b[31m87.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading mlflow_skinny-3.3.1-py3-none-any.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m104.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading mlflow_tracing-3.3.1-py3-none-any.whl (1.1 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.1/1.1 MB\u001b[0m \u001b[31m67.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading tensorflow-2.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (620.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m620.6/620.6 MB\u001b[0m \u001b[31m2.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading absl_py-2.3.1-py3-none-any.whl (135 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m135.8/135.8 kB\u001b[0m \u001b[31m16.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading astunparse-1.6.3-py2.py3-none-any.whl (12 kB)\n", + "Downloading cryptography-45.0.6-cp311-abi3-manylinux_2_34_x86_64.whl (4.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.5/4.5 MB\u001b[0m \u001b[31m121.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading fastapi-0.116.1-py3-none-any.whl (95 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m95.6/95.6 kB\u001b[0m \u001b[31m10.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading flask-3.1.2-py3-none-any.whl (103 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m103.3/103.3 kB\u001b[0m \u001b[31m12.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading flatbuffers-25.2.10-py2.py3-none-any.whl (30 kB)\n", + "Downloading gast-0.6.0-py3-none-any.whl (21 kB)\n", + "Downloading google_pasta-0.2.0-py3-none-any.whl (57 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m57.5/57.5 kB\u001b[0m \u001b[31m7.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading graphene-3.4.3-py2.py3-none-any.whl (114 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m114.9/114.9 kB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading grpcio-1.74.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.2 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.2/6.2 MB\u001b[0m \u001b[31m114.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", + "\u001b[?25hDownloading gunicorn-23.0.0-py3-none-any.whl (85 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m85.0/85.0 kB\u001b[0m \u001b[31m11.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading h5py-3.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.5/4.5 MB\u001b[0m \u001b[31m128.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading keras-3.11.3-py3-none-any.whl (1.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.4/1.4 MB\u001b[0m \u001b[31m81.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading libclang-18.1.1-py2.py3-none-manylinux2010_x86_64.whl (24.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24.5/24.5 MB\u001b[0m \u001b[31m102.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading matplotlib-3.10.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (8.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m8.7/8.7 MB\u001b[0m \u001b[31m133.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", + "\u001b[?25hDownloading ml_dtypes-0.5.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (4.9 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.9/4.9 MB\u001b[0m \u001b[31m108.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading opt_einsum-3.4.0-py3-none-any.whl (71 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m71.9/71.9 kB\u001b[0m \u001b[31m10.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading pandas-2.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.4/12.4 MB\u001b[0m \u001b[31m138.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m0:01\u001b[0m\n", + "\u001b[?25hDownloading py_spy-0.4.1-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (2.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.8/2.8 MB\u001b[0m \u001b[31m116.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading pyarrow-21.0.0-cp311-cp311-manylinux_2_28_x86_64.whl (42.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.8/42.8 MB\u001b[0m \u001b[31m44.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading scikit_learn-1.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (9.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.7/9.7 MB\u001b[0m \u001b[31m144.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", + "\u001b[?25hDownloading scipy-1.16.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (35.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m35.4/35.4 MB\u001b[0m \u001b[31m56.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading starlette-0.47.3-py3-none-any.whl (72 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m73.0/73.0 kB\u001b[0m \u001b[31m10.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading tensorboard-2.20.0-py3-none-any.whl (5.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.5/5.5 MB\u001b[0m \u001b[31m121.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading termcolor-3.1.0-py3-none-any.whl (7.7 kB)\n", + "Downloading virtualenv-20.34.0-py3-none-any.whl (6.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.0/6.0 MB\u001b[0m \u001b[31m125.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading wrapt-1.17.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (82 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m82.4/82.4 kB\u001b[0m \u001b[31m11.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading aiohttp_cors-0.8.1-py3-none-any.whl (25 kB)\n", + "Downloading colorful-0.5.7-py2.py3-none-any.whl (201 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m201.5/201.5 kB\u001b[0m \u001b[31m24.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading opencensus-0.11.4-py2.py3-none-any.whl (128 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m128.2/128.2 kB\u001b[0m \u001b[31m18.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading smart_open-7.3.0.post1-py3-none-any.whl (61 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m61.9/61.9 kB\u001b[0m \u001b[31m9.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading watchfiles-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (453 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m453.1/453.1 kB\u001b[0m \u001b[31m49.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading blinker-1.9.0-py3-none-any.whl (8.5 kB)\n", + "Downloading cloudpickle-3.1.1-py3-none-any.whl (20 kB)\n", + "Downloading contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (355 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m355.2/355.2 kB\u001b[0m \u001b[31m40.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading cycler-0.12.1-py3-none-any.whl (8.3 kB)\n", + "Downloading databricks_sdk-0.64.0-py3-none-any.whl (703 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m703.4/703.4 kB\u001b[0m \u001b[31m52.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading distlib-0.4.0-py2.py3-none-any.whl (469 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m469.0/469.0 kB\u001b[0m \u001b[31m44.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading fonttools-4.59.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (5.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.0/5.0 MB\u001b[0m \u001b[31m118.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading gitpython-3.1.45-py3-none-any.whl (208 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m208.2/208.2 kB\u001b[0m \u001b[31m25.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading google_api_core-2.25.1-py3-none-any.whl (160 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m160.8/160.8 kB\u001b[0m \u001b[31m21.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading graphql_core-3.2.6-py3-none-any.whl (203 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m203.4/203.4 kB\u001b[0m \u001b[31m28.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading graphql_relay-3.2.0-py3-none-any.whl (16 kB)\n", + "Downloading httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (459 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m459.8/459.8 kB\u001b[0m \u001b[31m44.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading importlib_metadata-8.7.0-py3-none-any.whl (27 kB)\n", + "Downloading itsdangerous-2.2.0-py3-none-any.whl (16 kB)\n", + "Downloading joblib-1.5.1-py3-none-any.whl (307 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m307.7/307.7 kB\u001b[0m \u001b[31m33.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading kiwisolver-1.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.4/1.4 MB\u001b[0m \u001b[31m80.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading markdown-3.8.2-py3-none-any.whl (106 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m106.8/106.8 kB\u001b[0m \u001b[31m14.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading opencensus_context-0.1.3-py2.py3-none-any.whl (5.1 kB)\n", + "Downloading opentelemetry_api-1.36.0-py3-none-any.whl (65 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m65.6/65.6 kB\u001b[0m \u001b[31m8.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading opentelemetry_sdk-1.36.0-py3-none-any.whl (119 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m120.0/120.0 kB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading opentelemetry_semantic_conventions-0.57b0-py3-none-any.whl (201 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m201.6/201.6 kB\u001b[0m \u001b[31m23.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (6.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.6/6.6 MB\u001b[0m \u001b[31m136.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading pyparsing-3.2.3-py3-none-any.whl (111 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m111.1/111.1 kB\u001b[0m \u001b[31m14.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading python_dotenv-1.1.1-py3-none-any.whl (20 kB)\n", + "Downloading pytz-2025.2-py2.py3-none-any.whl (509 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m509.2/509.2 kB\u001b[0m \u001b[31m52.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading sqlparse-0.5.3-py3-none-any.whl (44 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m6.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading tensorboard_data_server-0.7.2-py3-none-manylinux_2_31_x86_64.whl (6.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.6/6.6 MB\u001b[0m \u001b[31m133.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m\n", + "\u001b[?25hDownloading threadpoolctl-3.6.0-py3-none-any.whl (18 kB)\n", + "Downloading tzdata-2025.2-py2.py3-none-any.whl (347 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m347.8/347.8 kB\u001b[0m \u001b[31m40.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading uvicorn-0.35.0-py3-none-any.whl (66 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m66.4/66.4 kB\u001b[0m \u001b[31m9.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.0/4.0 MB\u001b[0m \u001b[31m135.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m182.3/182.3 kB\u001b[0m \u001b[31m24.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading werkzeug-3.1.3-py3-none-any.whl (224 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m224.5/224.5 kB\u001b[0m \u001b[31m29.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading namex-0.1.0-py3-none-any.whl (5.9 kB)\n", + "Downloading optree-0.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (402 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m402.0/402.0 kB\u001b[0m \u001b[31m43.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading rich-14.1.0-py3-none-any.whl (243 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m243.4/243.4 kB\u001b[0m \u001b[31m31.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading gitdb-4.0.12-py3-none-any.whl (62 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.8/62.8 kB\u001b[0m \u001b[31m8.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading google_auth-2.40.3-py2.py3-none-any.whl (216 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m216.1/216.1 kB\u001b[0m \u001b[31m25.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading cachetools-5.5.2-py3-none-any.whl (10 kB)\n", + "Downloading googleapis_common_protos-1.70.0-py3-none-any.whl (294 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m294.5/294.5 kB\u001b[0m \u001b[31m39.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading markdown_it_py-4.0.0-py3-none-any.whl (87 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m87.3/87.3 kB\u001b[0m \u001b[31m12.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading proto_plus-1.26.1-py3-none-any.whl (50 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.2/50.2 kB\u001b[0m \u001b[31m7.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading zipp-3.23.0-py3-none-any.whl (10 kB)\n", + "Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)\n", + "Downloading pyasn1_modules-0.4.2-py3-none-any.whl (181 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m181.3/181.3 kB\u001b[0m \u001b[31m23.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading rsa-4.9.1-py3-none-any.whl (34 kB)\n", + "Downloading smmap-5.0.2-py3-none-any.whl (24 kB)\n", + "Downloading pyasn1-0.6.1-py3-none-any.whl (83 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m83.1/83.1 kB\u001b[0m \u001b[31m10.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: pytz, py-spy, opencensus-context, namex, libclang, flatbuffers, distlib, colorful, zipp, wrapt, werkzeug, websockets, virtualenv, uvloop, uvicorn, tzdata, threadpoolctl, termcolor, tensorboard-data-server, sqlparse, smmap, python-dotenv, pyparsing, pyasn1, pyarrow, proto-plus, pillow, optree, opt_einsum, numpy, mdurl, markdown, kiwisolver, joblib, itsdangerous, httptools, gunicorn, grpcio, graphql-core, googleapis-common-protos, google_pasta, gast, fonttools, cycler, cloudpickle, cachetools, blinker, astunparse, absl-py, watchfiles, tensorboard, starlette, smart-open, scipy, rsa, pyasn1-modules, pandas, ml_dtypes, markdown-it-py, importlib_metadata, h5py, graphql-relay, gitdb, Flask, cryptography, contourpy, scikit-learn, rich, opentelemetry-api, matplotlib, graphene, google-auth, gitpython, fastapi, aiohttp-cors, opentelemetry-semantic-conventions, keras, google-api-core, databricks-sdk, tensorflow, opentelemetry-sdk, opencensus, mlflow-tracing, mlflow-skinny, mlflow\n", + "\u001b[33m WARNING: The script websockets is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script virtualenv is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script uvicorn is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script sqlformat is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script dotenv is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The scripts f2py and numpy-config are installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script markdown_py is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script gunicorn is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The scripts fonttools, pyftmerge, pyftsubset and ttx are installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script watchfiles is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script tensorboard is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The scripts pyrsa-decrypt, pyrsa-encrypt, pyrsa-keygen, pyrsa-priv2pub, pyrsa-sign and pyrsa-verify are installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script markdown-it is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script flask is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script fastapi is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The scripts import_pb_to_tensorboard, saved_model_cli, tensorboard, tf_upgrade_v2, tflite_convert and toco are installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script mlflow is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[33m WARNING: The script mlflow is installed in '/tmp/models-cache/bin' which is not on PATH.\n", + " Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\u001b[0m\u001b[33m\n", + "\u001b[0m\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", + "pyopenssl 24.1.0 requires cryptography<43,>=41.0.5, but you have cryptography 45.0.6 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed Flask-3.1.2 absl-py-2.3.1 aiohttp-cors-0.8.1 astunparse-1.6.3 blinker-1.9.0 cachetools-5.5.2 cloudpickle-3.1.1 colorful-0.5.7 contourpy-1.3.3 cryptography-45.0.6 cycler-0.12.1 databricks-sdk-0.64.0 distlib-0.4.0 fastapi-0.116.1 flatbuffers-25.2.10 fonttools-4.59.1 gast-0.6.0 gitdb-4.0.12 gitpython-3.1.45 google-api-core-2.25.1 google-auth-2.40.3 google_pasta-0.2.0 googleapis-common-protos-1.70.0 graphene-3.4.3 graphql-core-3.2.6 graphql-relay-3.2.0 grpcio-1.74.0 gunicorn-23.0.0 h5py-3.14.0 httptools-0.6.4 importlib_metadata-8.7.0 itsdangerous-2.2.0 joblib-1.5.1 keras-3.11.3 kiwisolver-1.4.9 libclang-18.1.1 markdown-3.8.2 markdown-it-py-4.0.0 matplotlib-3.10.5 mdurl-0.1.2 ml_dtypes-0.5.3 mlflow-3.3.1 mlflow-skinny-3.3.1 mlflow-tracing-3.3.1 namex-0.1.0 numpy-2.3.2 opencensus-0.11.4 opencensus-context-0.1.3 opentelemetry-api-1.36.0 opentelemetry-sdk-1.36.0 opentelemetry-semantic-conventions-0.57b0 opt_einsum-3.4.0 optree-0.17.0 pandas-2.3.2 pillow-11.3.0 proto-plus-1.26.1 py-spy-0.4.1 pyarrow-21.0.0 pyasn1-0.6.1 pyasn1-modules-0.4.2 pyparsing-3.2.3 python-dotenv-1.1.1 pytz-2025.2 rich-14.1.0 rsa-4.9.1 scikit-learn-1.7.1 scipy-1.16.1 smart-open-7.3.0.post1 smmap-5.0.2 sqlparse-0.5.3 starlette-0.47.3 tensorboard-2.20.0 tensorboard-data-server-0.7.2 tensorflow-2.20.0 termcolor-3.1.0 threadpoolctl-3.6.0 tzdata-2025.2 uvicorn-0.35.0 uvloop-0.21.0 virtualenv-20.34.0 watchfiles-1.1.0 websockets-15.0.1 werkzeug-3.1.3 wrapt-1.17.3 zipp-3.23.0\n" ] } ], @@ -199,7 +498,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "id": "e8deec5c-6239-4087-8a4d-27c091e9fc3c", "metadata": { "tags": [] @@ -209,9 +508,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "2025/08/25 15:31:13 INFO mlflow.tracking.fluent: Experiment with name 'Diabetes_Prediction_TensorFlow' does not exist. Creating a new experiment.\n", - "2025/08/25 15:31:13 WARNING mlflow.tracking.context.registry: Encountered unexpected error during resolving tags: 'getpwuid(): uid not found: 1001'\n", - "2025/08/25 15:31:14 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.\n", + "2025-08-27 12:00:23.577265: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used.\n", + "2025-08-27 12:00:23.626853: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", + "To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2025-08-27 12:00:25.157402: I external/local_xla/xla/tsl/cuda/cudart_stub.cc:31] Could not find cuda drivers on your machine, GPU will not be used.\n", + "2025/08/27 12:00:27 INFO mlflow.tracking.fluent: Experiment with name 'Diabetes_Prediction_TensorFlow' does not exist. Creating a new experiment.\n", + "2025/08/27 12:00:27 WARNING mlflow.tracking.context.registry: Encountered unexpected error during resolving tags: 'getpwuid(): uid not found: 1001'\n", + "2025/08/27 12:00:27 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.\n", "The 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", @@ -229,14 +532,15 @@ " export GIT_PYTHON_REFRESH=quiet\n", "\n", "/tmp/models-cache/lib/python3.11/site-packages/keras/src/layers/core/dense.py:92: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", - " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n" + " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n", + "2025-08-27 12:00:29.352582: E external/local_xla/xla/stream_executor/cuda/cuda_platform.cc:51] failed call to cuInit: INTERNAL: CUDA error: Failed call to cuInit: UNKNOWN ERROR (303)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "🏃 View run industrious-mare-919 at: http://ai-starter-kit-mlflow:5000/#/experiments/1/runs/b4024c97d9bd4a058ae7f005bf520d60\n", + "🏃 View run classy-wren-479 at: http://ai-starter-kit-mlflow:5000/#/experiments/1/runs/7ca28b8521a049dc8a014d4235909db3\n", "🧪 View experiment at: http://ai-starter-kit-mlflow:5000/#/experiments/1\n" ] } @@ -311,7 +615,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "id": "556ae0b2-6fa6-4271-9e7d-553cd7056aab", "metadata": { "tags": [] @@ -321,61 +625,78 @@ "name": "stderr", "output_type": "stream", "text": [ - "2025-08-25 15:31:54,495\tINFO worker.py:1514 -- Using address ray://ai-starter-kit-kuberay-head-svc:10001 set in the environment variable RAY_ADDRESS\n", - "2025-08-25 15:31:54,496\tINFO client_builder.py:244 -- Passing the following kwargs to ray.init() on the server: log_to_driver\n", - "2025-08-25 15:31:56,843\tWARNING utils.py:1591 -- Python patch version mismatch: The cluster was started with:\n", + "/opt/bitnami/miniconda/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n", + "2025-08-27 12:00:35,162\tINFO util.py:154 -- Missing packages: ['ipywidgets']. Run `pip install -U ipywidgets`, then restart the notebook server for rich notebook output.\n", + "2025-08-27 12:00:35,747\tINFO worker.py:1514 -- Using address ray://ai-starter-kit-kuberay-head-svc:10001 set in the environment variable RAY_ADDRESS\n", + "2025-08-27 12:00:35,748\tINFO client_builder.py:244 -- Passing the following kwargs to ray.init() on the server: log_to_driver\n", + "SIGTERM handler is not set because current thread is not the main thread.\n", + "2025-08-27 12:00:40,043\tWARNING utils.py:1591 -- Python patch version mismatch: The cluster was started with:\n", " Ray: 2.41.0\n", " Python: 3.11.11\n", "This process on Ray Client was started with:\n", " Ray: 2.41.0\n", " Python: 3.11.9\n", "\n", - "\u001b[36m(ProxyActor pid=1468)\u001b[0m INFO 2025-08-25 08:31:59,214 proxy 10.244.0.10 -- Proxy starting on node 81c358455800f2bdc4877c485050214e6401aeba80d5f886b0b5c76b (HTTP port: 8000).\n", - "INFO 2025-08-25 15:31:59,273 serve 33 -- Started Serve in namespace \"serve\".\n", - "\u001b[36m(ProxyActor pid=1468)\u001b[0m INFO 2025-08-25 08:31:59,263 proxy 10.244.0.10 -- Got updated endpoints: {}.\n", - "\u001b[36m(ServeController pid=1467)\u001b[0m INFO 2025-08-25 08:31:59,381 controller 1467 -- Deploying new version of Deployment(name='TensorFlowMLflowDeployment', app='default') (initial target replicas: 1).\n", - "\u001b[36m(ProxyActor pid=1468)\u001b[0m INFO 2025-08-25 08:31:59,382 proxy 10.244.0.10 -- Got updated endpoints: {Deployment(name='TensorFlowMLflowDeployment', app='default'): EndpointInfo(route='/predict', app_is_cross_language=False)}.\n", - "\u001b[36m(ServeController pid=1467)\u001b[0m INFO 2025-08-25 08:31:59,485 controller 1467 -- Adding 1 replica to Deployment(name='TensorFlowMLflowDeployment', app='default').\n" + "\u001b[36m(ProxyActor pid=2818, ip=10.23.2.212)\u001b[0m INFO 2025-08-27 05:00:48,855 proxy 10.23.2.212 -- Proxy starting on node 08fb6ed7e6841998dfb9cc9f99c999cd4317663f09d65db617dbd3dc (HTTP port: 8000).\n", + "\u001b[36m(ProxyActor pid=2818)\u001b[0m INFO 2025-08-27 05:00:48,855 proxy 10.23.2.212 -- Proxy starting on node 08fb6ed7e6841998dfb9cc9f99c999cd4317663f09d65db617dbd3dc (HTTP port: 8000).\n", + "INFO 2025-08-27 12:00:49,116 serve 124 -- Started Serve in namespace \"serve\".\n", + "\u001b[36m(ProxyActor pid=2818, ip=10.23.2.212)\u001b[0m INFO 2025-08-27 05:00:49,087 proxy 10.23.2.212 -- Got updated endpoints: {}.\n", + "\u001b[36m(ProxyActor pid=2818)\u001b[0m INFO 2025-08-27 05:00:49,087 proxy 10.23.2.212 -- Got updated endpoints: {}.\n", + "\u001b[36m(ServeController pid=2739, ip=10.23.2.212)\u001b[0m INFO 2025-08-27 05:00:49,258 controller 2739 -- Deploying new version of Deployment(name='TensorFlowMLflowDeployment', app='default') (initial target replicas: 1).\n", + "\u001b[36m(ServeController pid=2739)\u001b[0m INFO 2025-08-27 05:00:49,258 controller 2739 -- Deploying new version of Deployment(name='TensorFlowMLflowDeployment', app='default') (initial target replicas: 1).\n", + "\u001b[36m(ProxyActor pid=2818, ip=10.23.2.212)\u001b[0m INFO 2025-08-27 05:00:49,262 proxy 10.23.2.212 -- Got updated endpoints: {Deployment(name='TensorFlowMLflowDeployment', app='default'): EndpointInfo(route='/predict', app_is_cross_language=False)}.\n", + "\u001b[36m(ProxyActor pid=2818)\u001b[0m INFO 2025-08-27 05:00:49,262 proxy 10.23.2.212 -- Got updated endpoints: {Deployment(name='TensorFlowMLflowDeployment', app='default'): EndpointInfo(route='/predict', app_is_cross_language=False)}.\n", + "\u001b[36m(ServeController pid=2739, ip=10.23.2.212)\u001b[0m INFO 2025-08-27 05:00:49,363 controller 2739 -- Adding 1 replica to Deployment(name='TensorFlowMLflowDeployment', app='default').\n", + "\u001b[36m(ServeController pid=2739)\u001b[0m INFO 2025-08-27 05:00:49,363 controller 2739 -- Adding 1 replica to Deployment(name='TensorFlowMLflowDeployment', app='default').\n", + "\u001b[36m(ServeController pid=2739, ip=10.23.2.212)\u001b[0m WARNING 2025-08-27 05:01:19,429 controller 2739 -- Deployment 'TensorFlowMLflowDeployment' in application 'default' has 1 replicas that have taken more than 30s to be scheduled. This may be due to waiting for the cluster to auto-scale or for a runtime environment to be installed. Resources required for each replica: {\"CPU\": 1}, total resources available: {\"CPU\": 7.0}. Use `ray status` for more details.\n", + "\u001b[36m(ServeController pid=2739)\u001b[0m WARNING 2025-08-27 05:01:19,429 controller 2739 -- Deployment 'TensorFlowMLflowDeployment' in application 'default' has 1 replicas that have taken more than 30s to be scheduled. This may be due to waiting for the cluster to auto-scale or for a runtime environment to be installed. Resources required for each replica: {\"CPU\": 1}, total resources available: {\"CPU\": 7.0}. Use `ray status` for more details.\n", + "\u001b[36m(ServeController pid=2739, ip=10.23.2.212)\u001b[0m WARNING 2025-08-27 05:01:49,531 controller 2739 -- Deployment 'TensorFlowMLflowDeployment' in application 'default' has 1 replicas that have taken more than 30s to be scheduled. This may be due to waiting for the cluster to auto-scale or for a runtime environment to be installed. Resources required for each replica: {\"CPU\": 1}, total resources available: {\"CPU\": 7.0}. Use `ray status` for more details.\n", + "\u001b[36m(ServeController pid=2739)\u001b[0m WARNING 2025-08-27 05:01:49,531 controller 2739 -- Deployment 'TensorFlowMLflowDeployment' in application 'default' has 1 replicas that have taken more than 30s to be scheduled. This may be due to waiting for the cluster to auto-scale or for a runtime environment to be installed. Resources required for each replica: {\"CPU\": 1}, total resources available: {\"CPU\": 7.0}. Use `ray status` for more details.\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265, ip=10.23.2.212)\u001b[0m 2025-08-27 05:02:02.743930: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265, ip=10.23.2.212)\u001b[0m To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265)\u001b[0m 2025-08-27 05:02:02.743930: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265)\u001b[0m To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265)\u001b[0m 2025-08-27 05:02:07.748054: E external/local_xla/xla/stream_executor/cuda/cuda_platform.cc:51] failed call to cuInit: INTERNAL: CUDA error: Failed call to cuInit: UNKNOWN ERROR (303)\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265, ip=10.23.2.212)\u001b[0m 2025-08-27 05:02:07.748054: E external/local_xla/xla/stream_executor/cuda/cuda_platform.cc:51] failed call to cuInit: INTERNAL: CUDA error: Failed call to cuInit: UNKNOWN ERROR (303)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=1892)\u001b[0m Loading model...\n", - "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=1892)\u001b[0m Model loaded successfully.\n" + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265)\u001b[0m Loading model...\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265)\u001b[0m Model loaded successfully.\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265, ip=10.23.2.212)\u001b[0m Loading model...\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265, ip=10.23.2.212)\u001b[0m Model loaded successfully.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO 2025-08-25 15:32:27,755 serve 33 -- Application 'default' is ready at http://127.0.0.1:8000/predict.\n", - "INFO 2025-08-25 15:32:27,763 serve 33 -- Deployed app 'default' successfully.\n" - ] - }, - { - "data": { - "text/plain": [ - "DeploymentHandle(deployment='TensorFlowMLflowDeployment')" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=1892)\u001b[0m INFO 2025-08-25 08:32:31,791 default_TensorFlowMLflowDeployment hxdk1mul 2fb49464-68f5-4bb3-a884-f57f44ab36f1 -- POST /predict 200 118.2ms\n" + "INFO 2025-08-27 12:02:08,716 serve 124 -- Application 'default' is ready at http://127.0.0.1:8000/predict.\n", + "INFO 2025-08-27 12:02:08,718 serve 124 -- Deployed app 'default' successfully.\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265)\u001b[0m INFO 2025-08-27 05:02:08,967 default_TensorFlowMLflowDeployment 0zpbmyix 63d6b1b4-67f7-4a5c-ad92-6d7989e3cf5a -- CALL __call__ OK 150.7ms\n", + "\u001b[36m(ServeReplica:default:TensorFlowMLflowDeployment pid=2265, ip=10.23.2.212)\u001b[0m INFO 2025-08-27 05:02:08,967 default_TensorFlowMLflowDeployment 0zpbmyix 63d6b1b4-67f7-4a5c-ad92-6d7989e3cf5a -- CALL __call__ OK 150.7ms\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 50ms/step\n" + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 85ms/step\n", + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 85ms/step3.2.212)\u001b[0m \n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[36m(ProxyActor pid=1775)\u001b[0m INFO 2025-08-27 05:02:09,833 proxy 10.23.2.213 -- Proxy starting on node 45179940bb5a43115519b525607191a8f1a059b70c5c61c14cee8a0f (HTTP port: 8000).\n", + "\u001b[36m(ProxyActor pid=1775, ip=10.23.2.212)\u001b[0m INFO 2025-08-27 05:02:09,833 proxy 10.23.2.213 -- Proxy starting on node 45179940bb5a43115519b525607191a8f1a059b70c5c61c14cee8a0f (HTTP port: 8000).\n", + "\u001b[36m(ProxyActor pid=1775)\u001b[0m INFO 2025-08-27 05:02:09,992 proxy 10.23.2.213 -- Got updated endpoints: {Deployment(name='TensorFlowMLflowDeployment', app='default'): EndpointInfo(route='/predict', app_is_cross_language=False)}.\n", + "\u001b[36m(ProxyActor pid=1775, ip=10.23.2.212)\u001b[0m INFO 2025-08-27 05:02:09,992 proxy 10.23.2.213 -- Got updated endpoints: {Deployment(name='TensorFlowMLflowDeployment', app='default'): EndpointInfo(route='/predict', app_is_cross_language=False)}.\n" ] } ], @@ -403,9 +724,12 @@ " self.model = model\n", " print(\"Model loaded successfully.\")\n", "\n", - " async def __call__(self, request: Request) -> Dict:\n", + " async def __call__(self, input_data) -> Dict:\n", " try:\n", - " data = await request.json()\n", + " if isinstance(input_data, Request):\n", + " data = await input_data.json()\n", + " else:\n", + " data = input_data\n", " features = data.get(\"features\", None)\n", " if features is None:\n", " return {\"error\": \"Missing 'features' in request\"}\n", @@ -421,7 +745,32 @@ "\n", "# Bind and deploy\n", "app = TensorFlowMLflowDeployment.bind()\n", - "serve.run(app, route_prefix=\"/predict\")\n" + "handle = serve.run(app, route_prefix=\"/predict\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "e264af73-6634-412b-9cbc-86b79c18e775", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'prediction': [179.46218872070312]}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "json_data = {\"features\": [0.0380759, 0.0506801, 0.0616962, 0.0218724, -0.0442235, -0.0348208, -0.0434008, -0.00259226, 0.0199084, -0.0176461]}\n", + "response = handle.remote(json_data)\n", + "await response" ] } ], diff --git a/ai/ai-starter-kit/helm-chart/ai-starter-kit/values-gke.yaml b/ai/ai-starter-kit/helm-chart/ai-starter-kit/values-gke.yaml index b4df470c..a641cc45 100644 --- a/ai/ai-starter-kit/helm-chart/ai-starter-kit/values-gke.yaml +++ b/ai/ai-starter-kit/helm-chart/ai-starter-kit/values-gke.yaml @@ -31,19 +31,22 @@ jupyterhub: value: /tmp/models-cache - name: PYTHONUNBUFFERED value: "1" + # - name: PYTHONPATH + # value: "/tmp/models-cache" command: - /bin/sh - -c - | set -e pip install --user --no-cache-dir -r /tmp/requirements.txt - pip install --user mlflow numpy tensorflow python /tmp/download_models.py volumeMounts: - name: requirements-txt mountPath: /tmp/requirements.txt subPath: requirements.txt readOnly: true + # - name: models-cache + # mountPath: /tmp/models-cache - name: hf-download-script mountPath: /tmp/download_models.py subPath: download_models.py @@ -64,6 +67,9 @@ jupyterhub: - name: requirements-txt configMap: name: "{{ .Release.Name }}-requirements-txt" + # - name: models-cache + # persistentVolumeClaim: + # claimName: "{{ .Release.Name }}-models-cache-pvc" - name: hf-download-script configMap: name: "{{ .Release.Name }}-hf-download-script" @@ -81,6 +87,8 @@ jupyterhub: - name: requirements-txt mountPath: /tmp/requirements.txt subPath: requirements.txt + # - name: models-cache + # mountPath: /tmp/models-cache - name: hf-download-script mountPath: /tmp/download_models.py subPath: download_models.py @@ -124,6 +132,12 @@ jupyterhub: ray-cluster: image: tag: 2.41.0-py311-gpu + common: + containerEnv: + - name: PYTHONPATH + value: "/mnt/ray-storage/libraries" + - name: TMPDIR + value: "/mnt/ray-storage/temp" head: serviceType: ClusterIP resources: @@ -135,6 +149,15 @@ ray-cluster: cpu: "4" memory: "8G" ephemeral-storage: 10Gi + volumes: + - name: ray-pvc-storage + persistentVolumeClaim: + claimName: "ai-starter-kit-models-cache-pvc" # this value should'n be hardcoded. The actual value should be: {{ .Release.Name }}-models-cache-pvc + volumeMounts: + - name: ray-pvc-storage + mountPath: /mnt/ray-storage + podSecurityContext: + fsGroup: 1000 worker: resources: requests: @@ -145,6 +168,15 @@ ray-cluster: cpu: "4" memory: "8G" ephemeral-storage: 10Gi + volumes: + - name: ray-pvc-storage + persistentVolumeClaim: + claimName: "ai-starter-kit-models-cache-pvc" # this value should'n be hardcoded. The actual value should be: {{ .Release.Name }}-models-cache-pvc + volumeMounts: + - name: ray-pvc-storage + mountPath: /mnt/ray-storage + podSecurityContext: + fsGroup: 1000 huggingface: # Provide your Hugging Face token here to download gated or private models. @@ -152,15 +184,15 @@ huggingface: # --set huggingface.token=hf_... token: "" -modelsCachePvc: # check this out for GKE - enabled: false +modelsCachePvc: + enabled: true # To use the default StorageClass, set storageClassName to null or omit it. # To use a specific StorageClass (e.g. "standard-rwo" on GKE), provide its name. # To create a PVC that doesn't request any StorageClass, set it to an empty string (""). storageClassName: "standard-rwo" accessModes: - ReadWriteOnce - size: 10Gi + size: 100Gi localPersistence: # For local development with minikube, this allows persisting the models-cache