From 98719d7eebce75d1b2c271fe3eca004cd518b518 Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Mon, 9 Jun 2025 22:21:22 -0700 Subject: [PATCH 01/13] Add numpy 2.0 support --- pyproject.toml | 2 +- requirements/extras/scipy_requirements.txt | 2 +- requirements/extras/test_requirements.txt | 6 +++--- src/sagemaker/serve/utils/conda_in_process.yml | 4 ++-- tests/data/remote_function/requirements.txt | 2 +- .../serve_resources/mlflow/pytorch/conda.yaml | 10 +++++----- .../mlflow/pytorch/requirements.txt | 4 ++-- .../mlflow/tensorflow/conda.yaml | 8 ++++---- .../mlflow/tensorflow/requirements.txt | 4 ++-- .../serve_resources/mlflow/xgboost/conda.yaml | 12 ++++++------ .../mlflow/xgboost/requirements.txt | 10 +++++----- tests/data/workflow/requirements.txt | 2 +- tests/unit/sagemaker/jumpstart/constants.py | 18 +++++++++--------- .../serve/detector/test_dependency_manager.py | 4 ++-- 14 files changed, 44 insertions(+), 44 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 918e874b57..002202bad8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "google-pasta", "importlib-metadata>=1.4.0,<7.0", "jsonschema", - "numpy==1.26.4", + "numpy>=2.0.0,<2.3.0", "omegaconf>=2.2,<3", "packaging>=23.0,<25", "pandas", diff --git a/requirements/extras/scipy_requirements.txt b/requirements/extras/scipy_requirements.txt index 44ce1d9331..f89caf8c2b 100644 --- a/requirements/extras/scipy_requirements.txt +++ b/requirements/extras/scipy_requirements.txt @@ -1 +1 @@ -scipy==1.11.3 +scipy==1.13.0 diff --git a/requirements/extras/test_requirements.txt b/requirements/extras/test_requirements.txt index 04d6c0522a..57d67d1751 100644 --- a/requirements/extras/test_requirements.txt +++ b/requirements/extras/test_requirements.txt @@ -1,5 +1,5 @@ tox==3.24.5 -numpy==1.26.4 +numpy>=2.0.0, <2.3.0 build[virtualenv]==1.2.1 flake8==7.1.2 pytest==6.2.5 @@ -23,8 +23,8 @@ requests==2.32.2 sagemaker-experiments==0.1.35 Jinja2==3.1.6 pyvis==0.2.1 -pandas==1.4.4 -scikit-learn==1.3.0 +pandas==2.2.3 +scikit-learn==1.6.1 cloudpickle==2.2.1 jsonpickle<4.0.0 PyYAML>=6.0.1 diff --git a/src/sagemaker/serve/utils/conda_in_process.yml b/src/sagemaker/serve/utils/conda_in_process.yml index d51754ec5a..a7cb79ac13 100644 --- a/src/sagemaker/serve/utils/conda_in_process.yml +++ b/src/sagemaker/serve/utils/conda_in_process.yml @@ -12,7 +12,7 @@ dependencies: - boto3>=1.34.142,<2.0 - cloudpickle==2.2.1 - google-pasta - - numpy==1.26.4 + - numpy>=2.0.0,<2.3.0 - protobuf>=3.12,<5.0 - smdebug_rulesconfig==1.0.1 - importlib-metadata>=1.4.0,<7.0 @@ -64,7 +64,7 @@ dependencies: - multiprocess>=0.70.14 - networkx>=3.1 - packaging>=23.1 - - pandas>=1.5.3 + - pandas==2.2.3 - pathos>=0.3.0 - pillow>=9.5.0 - platformdirs>=3.2.0 diff --git a/tests/data/remote_function/requirements.txt b/tests/data/remote_function/requirements.txt index 44ce1d9331..f89caf8c2b 100644 --- a/tests/data/remote_function/requirements.txt +++ b/tests/data/remote_function/requirements.txt @@ -1 +1 @@ -scipy==1.11.3 +scipy==1.13.0 diff --git a/tests/data/serve_resources/mlflow/pytorch/conda.yaml b/tests/data/serve_resources/mlflow/pytorch/conda.yaml index b740d25b70..99c215b58a 100644 --- a/tests/data/serve_resources/mlflow/pytorch/conda.yaml +++ b/tests/data/serve_resources/mlflow/pytorch/conda.yaml @@ -2,23 +2,23 @@ channels: - conda-forge dependencies: - python=3.10.13 -- pip<=23.3.1 +- pip<=24.3 - pip: - - mlflow==2.10.2 + - mlflow>=2.16.1 - astunparse==1.6.3 - cffi==1.16.0 - cloudpickle==2.2.1 - defusedxml==0.7.1 - dill==0.3.9 - gmpy2==2.1.2 - - numpy==1.26.4 + - numpy>=2.0.0,<2.3.0 - opt-einsum==3.3.0 - packaging==24.0 - - pandas==2.2.1 + - pandas==2.2.3 - pyyaml==6.0.1 - requests==2.31.0 - torch>=2.6.0 - torchvision>=0.17.0 - tqdm==4.66.2 - - scikit-learn==1.3.2 + - scikit-learn==1.6.1 name: mlflow-env diff --git a/tests/data/serve_resources/mlflow/pytorch/requirements.txt b/tests/data/serve_resources/mlflow/pytorch/requirements.txt index a3eb04ed4f..d41500d826 100644 --- a/tests/data/serve_resources/mlflow/pytorch/requirements.txt +++ b/tests/data/serve_resources/mlflow/pytorch/requirements.txt @@ -5,10 +5,10 @@ cloudpickle==2.2.1 defusedxml==0.7.1 dill==0.3.9 gmpy2==2.1.2 -numpy==1.26.4 +numpy>=2.0.0,<2.3.0 opt-einsum==3.3.0 packaging>=23.0,<25 -pandas==2.2.1 +pandas==2.2.3 pyyaml==6.0.1 requests==2.32.2 torch>=2.6.0 diff --git a/tests/data/serve_resources/mlflow/tensorflow/conda.yaml b/tests/data/serve_resources/mlflow/tensorflow/conda.yaml index 90d8c300a0..bed6a78250 100644 --- a/tests/data/serve_resources/mlflow/tensorflow/conda.yaml +++ b/tests/data/serve_resources/mlflow/tensorflow/conda.yaml @@ -2,10 +2,10 @@ channels: - conda-forge dependencies: - python=3.10.13 -- pip<=23.3.1 +- pip<=24.3 - pip: - - mlflow==2.11.1 + - mlflow>=2.16.1 - cloudpickle==2.2.1 - - numpy==1.26.4 - - tensorflow==2.16.1 + - numpy>=1.26.4 + - tensorflow==2.18.0 name: mlflow-env diff --git a/tests/data/serve_resources/mlflow/tensorflow/requirements.txt b/tests/data/serve_resources/mlflow/tensorflow/requirements.txt index 9b64992ac8..bc2b89978a 100644 --- a/tests/data/serve_resources/mlflow/tensorflow/requirements.txt +++ b/tests/data/serve_resources/mlflow/tensorflow/requirements.txt @@ -1,4 +1,4 @@ mlflow==2.20.3 cloudpickle==2.2.1 -numpy==1.26.4 -tensorflow==2.16.1 +numpy>=1.26.4 +tensorflow==2.18.0 diff --git a/tests/data/serve_resources/mlflow/xgboost/conda.yaml b/tests/data/serve_resources/mlflow/xgboost/conda.yaml index 44ca3c4c2e..42a521ca87 100644 --- a/tests/data/serve_resources/mlflow/xgboost/conda.yaml +++ b/tests/data/serve_resources/mlflow/xgboost/conda.yaml @@ -2,14 +2,14 @@ channels: - conda-forge dependencies: - python=3.10.13 -- pip<=23.3.1 +- pip<=24.3 - pip: - - mlflow==2.11.1 + - mlflow>=2.16.1 - lz4==4.3.2 - - numpy==1.26.4 - - pandas==2.2.1 + - numpy>=2.0.0 + - pandas==2.2.3 - psutil==5.9.8 - - scikit-learn==1.3.2 - - scipy==1.11.3 + - scikit-learn==1.6.1 + - scipy==1.13.0 - xgboost==1.7.1 name: mlflow-env diff --git a/tests/data/serve_resources/mlflow/xgboost/requirements.txt b/tests/data/serve_resources/mlflow/xgboost/requirements.txt index 30fc49cc97..ed9154e18f 100644 --- a/tests/data/serve_resources/mlflow/xgboost/requirements.txt +++ b/tests/data/serve_resources/mlflow/xgboost/requirements.txt @@ -1,8 +1,8 @@ -mlflow==2.13.2 +mlflow>=2.16.1 lz4==4.3.2 -numpy==1.26.4 -pandas==2.0.3 +numpy>=2.0.0 +pandas==2.2.3 psutil==5.9.8 -scikit-learn==1.5.1 -scipy==1.11.3 +scikit-learn==1.6.1 +scipy==1.13.0 xgboost==1.7.1 diff --git a/tests/data/workflow/requirements.txt b/tests/data/workflow/requirements.txt index 44ce1d9331..a9ced4b12d 100644 --- a/tests/data/workflow/requirements.txt +++ b/tests/data/workflow/requirements.txt @@ -1 +1 @@ -scipy==1.11.3 +scipy==1.13.0 \ No newline at end of file diff --git a/tests/unit/sagemaker/jumpstart/constants.py b/tests/unit/sagemaker/jumpstart/constants.py index ae02c597da..c55fe17e1f 100644 --- a/tests/unit/sagemaker/jumpstart/constants.py +++ b/tests/unit/sagemaker/jumpstart/constants.py @@ -5361,7 +5361,7 @@ "safetensors==0.3.1", "sagemaker_jumpstart_huggingface_script_utilities==1.1.3", "sagemaker_jumpstart_script_utilities==1.1.9", - "scipy==1.11.1", + "scipy==1.13.0", "termcolor==2.3.0", "texttable==1.6.7", "tokenize-rt==5.1.0", @@ -7870,7 +7870,7 @@ "safetensors==0.3.1", "sagemaker_jumpstart_huggingface_script_utilities==1.1.3", "sagemaker_jumpstart_script_utilities==1.1.9", - "scipy==1.11.1", + "scipy==1.13.0", "termcolor==2.3.0", "texttable==1.6.7", "tokenize-rt==5.1.0", @@ -8346,7 +8346,7 @@ "safetensors==0.3.1", "sagemaker_jumpstart_huggingface_script_utilities==1.1.3", "sagemaker_jumpstart_script_utilities==1.1.9", - "scipy==1.11.1", + "scipy==1.13.0", "termcolor==2.3.0", "texttable==1.6.7", "tokenize-rt==5.1.0", @@ -12095,7 +12095,7 @@ "inference_vulnerabilities": [], "training_vulnerable": False, "training_dependencies": [ - "numpy==1.23.1", + "numpy>=2.0.0", "opencv_python==4.7.0.68", "sagemaker_jumpstart_prepack_script_utilities==1.0.0", ], @@ -14360,10 +14360,10 @@ "jmespath==1.0.1", "jsonschema==4.17.3", "multiprocess==0.70.14", - "numpy==1.26.4", + "numpy>=2.0.0", "oscrypto==1.3.0", "packaging==23.1", - "pandas==2.0.2", + "pandas==2.2.3", "pathos==0.3.0", "pkgutil-resolve-name==1.3.10", "platformdirs==3.8.0", @@ -14884,10 +14884,10 @@ "jmespath==1.0.1", "jsonschema==4.17.3", "multiprocess==0.70.14", - "numpy==1.24.3", + "numpy>=2.0.0", "oscrypto==1.3.0", "packaging==23.1", - "pandas==2.0.2", + "pandas==2.2.3", "pathos==0.3.0", "pkgutil-resolve-name==1.3.10", "platformdirs==3.8.0", @@ -17400,7 +17400,7 @@ "safetensors==0.3.1", "sagemaker_jumpstart_huggingface_script_utilities==1.1.4", "sagemaker_jumpstart_script_utilities==1.1.9", - "scipy==1.11.1", + "scipy==1.13.0", "termcolor==2.3.0", "texttable==1.6.7", "tokenize-rt==5.1.0", diff --git a/tests/unit/sagemaker/serve/detector/test_dependency_manager.py b/tests/unit/sagemaker/serve/detector/test_dependency_manager.py index 52e9822e57..bf418b44c2 100644 --- a/tests/unit/sagemaker/serve/detector/test_dependency_manager.py +++ b/tests/unit/sagemaker/serve/detector/test_dependency_manager.py @@ -21,7 +21,7 @@ DEPENDENCY_LIST = [ "requests==2.26.0", - "numpy==1.26.4", + "numpy>=2.0.0", "pandas<=1.3.3", "matplotlib<3.5.0", "scikit-learn>0.24.1", @@ -34,7 +34,7 @@ EXPECTED_DEPENDENCY_MAP = { "requests": "==2.26.0", - "numpy": "==1.26.4", + "numpy": ">=2.0.0", "pandas": "<=1.3.3", "matplotlib": "<3.5.0", "scikit-learn": ">0.24.1", From 4cd69461a685c22f91c7094545516c77cfe255c3 Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Wed, 11 Jun 2025 14:50:37 -0700 Subject: [PATCH 02/13] Add numpy 2.0 support --- tests/data/remote_function/old_deps_requirements.txt | 3 ++- tests/unit/sagemaker/jumpstart/constants.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/data/remote_function/old_deps_requirements.txt b/tests/data/remote_function/old_deps_requirements.txt index d3bddebad1..20a3810607 100644 --- a/tests/data/remote_function/old_deps_requirements.txt +++ b/tests/data/remote_function/old_deps_requirements.txt @@ -1 +1,2 @@ -pandas==1.3.4 +numpy>=1.23.2 +pandas>=2.0.0 diff --git a/tests/unit/sagemaker/jumpstart/constants.py b/tests/unit/sagemaker/jumpstart/constants.py index c55fe17e1f..90d2e7717e 100644 --- a/tests/unit/sagemaker/jumpstart/constants.py +++ b/tests/unit/sagemaker/jumpstart/constants.py @@ -5361,7 +5361,7 @@ "safetensors==0.3.1", "sagemaker_jumpstart_huggingface_script_utilities==1.1.3", "sagemaker_jumpstart_script_utilities==1.1.9", - "scipy==1.13.0", + "scipy==1.13.0", "termcolor==2.3.0", "texttable==1.6.7", "tokenize-rt==5.1.0", From 2a3376205ca7fa52e8e5a489c3b9320729b45352 Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Wed, 11 Jun 2025 22:53:23 -0700 Subject: [PATCH 03/13] Add numpy 2.0 support --- tests/data/remote_function/old_deps_requirements.txt | 3 +-- tests/data/serve_resources/mlflow/tensorflow/conda.yaml | 2 +- tests/data/serve_resources/mlflow/tensorflow/requirements.txt | 2 +- tests/data/workflow/requirements.txt | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/data/remote_function/old_deps_requirements.txt b/tests/data/remote_function/old_deps_requirements.txt index 20a3810607..d3bddebad1 100644 --- a/tests/data/remote_function/old_deps_requirements.txt +++ b/tests/data/remote_function/old_deps_requirements.txt @@ -1,2 +1 @@ -numpy>=1.23.2 -pandas>=2.0.0 +pandas==1.3.4 diff --git a/tests/data/serve_resources/mlflow/tensorflow/conda.yaml b/tests/data/serve_resources/mlflow/tensorflow/conda.yaml index bed6a78250..1207a858e5 100644 --- a/tests/data/serve_resources/mlflow/tensorflow/conda.yaml +++ b/tests/data/serve_resources/mlflow/tensorflow/conda.yaml @@ -5,7 +5,7 @@ dependencies: - pip<=24.3 - pip: - mlflow>=2.16.1 - - cloudpickle==2.2.1 + - cloudpickle>=2.2.1 - numpy>=1.26.4 - tensorflow==2.18.0 name: mlflow-env diff --git a/tests/data/serve_resources/mlflow/tensorflow/requirements.txt b/tests/data/serve_resources/mlflow/tensorflow/requirements.txt index bc2b89978a..7ce8c725f8 100644 --- a/tests/data/serve_resources/mlflow/tensorflow/requirements.txt +++ b/tests/data/serve_resources/mlflow/tensorflow/requirements.txt @@ -1,4 +1,4 @@ mlflow==2.20.3 -cloudpickle==2.2.1 +cloudpickle>=2.2.1 numpy>=1.26.4 tensorflow==2.18.0 diff --git a/tests/data/workflow/requirements.txt b/tests/data/workflow/requirements.txt index a9ced4b12d..f89caf8c2b 100644 --- a/tests/data/workflow/requirements.txt +++ b/tests/data/workflow/requirements.txt @@ -1 +1 @@ -scipy==1.13.0 \ No newline at end of file +scipy==1.13.0 From 572c1aab1c10b499dedbd4559a0355d4f24d4ddb Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Thu, 12 Jun 2025 11:10:30 -0700 Subject: [PATCH 04/13] Add numpy 2.0 support --- requirements/extras/test_requirements.txt | 2 +- tests/data/serve_resources/mlflow/xgboost/conda.yaml | 4 ++-- tests/data/serve_resources/mlflow/xgboost/requirements.txt | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/requirements/extras/test_requirements.txt b/requirements/extras/test_requirements.txt index 57d67d1751..b08b911413 100644 --- a/requirements/extras/test_requirements.txt +++ b/requirements/extras/test_requirements.txt @@ -29,7 +29,7 @@ cloudpickle==2.2.1 jsonpickle<4.0.0 PyYAML>=6.0.1 # TODO find workaround -xgboost>=1.6.2,<=1.7.6 +xgboost>=1.6.2,<=2.1.0 pillow>=10.0.1,<=11 opentelemetry-proto==1.27.0 protobuf==4.25.5 diff --git a/tests/data/serve_resources/mlflow/xgboost/conda.yaml b/tests/data/serve_resources/mlflow/xgboost/conda.yaml index 42a521ca87..e2a1fe78fc 100644 --- a/tests/data/serve_resources/mlflow/xgboost/conda.yaml +++ b/tests/data/serve_resources/mlflow/xgboost/conda.yaml @@ -6,10 +6,10 @@ dependencies: - pip: - mlflow>=2.16.1 - lz4==4.3.2 - - numpy>=2.0.0 + - numpy>=1.26.4 - pandas==2.2.3 - psutil==5.9.8 - scikit-learn==1.6.1 - scipy==1.13.0 - - xgboost==1.7.1 + - xgboost==2.1.0 name: mlflow-env diff --git a/tests/data/serve_resources/mlflow/xgboost/requirements.txt b/tests/data/serve_resources/mlflow/xgboost/requirements.txt index ed9154e18f..23693ca909 100644 --- a/tests/data/serve_resources/mlflow/xgboost/requirements.txt +++ b/tests/data/serve_resources/mlflow/xgboost/requirements.txt @@ -1,8 +1,8 @@ mlflow>=2.16.1 lz4==4.3.2 -numpy>=2.0.0 +numpy>=1.26.4 pandas==2.2.3 psutil==5.9.8 scikit-learn==1.6.1 scipy==1.13.0 -xgboost==1.7.1 +xgboost==2.1.0 From fac5a6a74de72945d828ad8bd535a6d243423a5f Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Thu, 12 Jun 2025 14:19:32 -0700 Subject: [PATCH 05/13] Add numpy 2.0 support --- pyproject.toml | 2 +- requirements/extras/test_requirements.txt | 2 +- tests/data/serve_resources/mlflow/xgboost/conda.yaml | 2 +- tests/data/serve_resources/mlflow/xgboost/requirements.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 002202bad8..1067126248 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "google-pasta", "importlib-metadata>=1.4.0,<7.0", "jsonschema", - "numpy>=2.0.0,<2.3.0", + "numpy>=1.26.4,<2.3.0", "omegaconf>=2.2,<3", "packaging>=23.0,<25", "pandas", diff --git a/requirements/extras/test_requirements.txt b/requirements/extras/test_requirements.txt index b08b911413..57d67d1751 100644 --- a/requirements/extras/test_requirements.txt +++ b/requirements/extras/test_requirements.txt @@ -29,7 +29,7 @@ cloudpickle==2.2.1 jsonpickle<4.0.0 PyYAML>=6.0.1 # TODO find workaround -xgboost>=1.6.2,<=2.1.0 +xgboost>=1.6.2,<=1.7.6 pillow>=10.0.1,<=11 opentelemetry-proto==1.27.0 protobuf==4.25.5 diff --git a/tests/data/serve_resources/mlflow/xgboost/conda.yaml b/tests/data/serve_resources/mlflow/xgboost/conda.yaml index e2a1fe78fc..5fc090f1c6 100644 --- a/tests/data/serve_resources/mlflow/xgboost/conda.yaml +++ b/tests/data/serve_resources/mlflow/xgboost/conda.yaml @@ -11,5 +11,5 @@ dependencies: - psutil==5.9.8 - scikit-learn==1.6.1 - scipy==1.13.0 - - xgboost==2.1.0 + - xgboost==1.7.1 name: mlflow-env diff --git a/tests/data/serve_resources/mlflow/xgboost/requirements.txt b/tests/data/serve_resources/mlflow/xgboost/requirements.txt index 23693ca909..74f21cf543 100644 --- a/tests/data/serve_resources/mlflow/xgboost/requirements.txt +++ b/tests/data/serve_resources/mlflow/xgboost/requirements.txt @@ -5,4 +5,4 @@ pandas==2.2.3 psutil==5.9.8 scikit-learn==1.6.1 scipy==1.13.0 -xgboost==2.1.0 +xgboost==1.7.1 From 410e6a21d12217534a957aa4715a445da268df4c Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Thu, 11 Sep 2025 07:37:19 -0700 Subject: [PATCH 06/13] Fix incompatible_dependecies test --- tests/data/remote_function/old_deps_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/data/remote_function/old_deps_requirements.txt b/tests/data/remote_function/old_deps_requirements.txt index d3bddebad1..a1e6c0bf85 100644 --- a/tests/data/remote_function/old_deps_requirements.txt +++ b/tests/data/remote_function/old_deps_requirements.txt @@ -1 +1 @@ -pandas==1.3.4 +pandas==2.2.3 From ebf56b9b3c70746c162005f21f6a2e5681ef1720 Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Thu, 11 Sep 2025 12:17:40 -0700 Subject: [PATCH 07/13] Fix incompatible_dependecies test --- tests/data/remote_function/old_deps_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/data/remote_function/old_deps_requirements.txt b/tests/data/remote_function/old_deps_requirements.txt index a1e6c0bf85..d3bddebad1 100644 --- a/tests/data/remote_function/old_deps_requirements.txt +++ b/tests/data/remote_function/old_deps_requirements.txt @@ -1 +1 @@ -pandas==2.2.3 +pandas==1.3.4 From a19f57e02b5bbc68ce4003936effae3ca32d5460 Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Thu, 11 Sep 2025 17:13:28 -0700 Subject: [PATCH 08/13] Fix incompatible_dependecies test --- tests/integ/sagemaker/remote_function/test_decorator.py | 7 ++++++- .../serve/test_serve_mlflow_tensorflow_flavor_happy.py | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/integ/sagemaker/remote_function/test_decorator.py b/tests/integ/sagemaker/remote_function/test_decorator.py index fa55d7dfa7..018b380c83 100644 --- a/tests/integ/sagemaker/remote_function/test_decorator.py +++ b/tests/integ/sagemaker/remote_function/test_decorator.py @@ -315,6 +315,10 @@ def divide(x, y): divide(10, 2) +@pytest.mark.skipif( + np.__version__ >= "2.0", + reason="Test only valid for numpy < 2.0 due to serialization compatibility changes", +) def test_with_incompatible_dependencies( sagemaker_session, dummy_container_without_error, cpu_instance_type ): @@ -323,7 +327,8 @@ def test_with_incompatible_dependencies( It is currently working with python 3.8+. However, running it with older versions or versions in the future may require changes to 'old_deps_requirements.txt' to fulfill testing scenario. - + + NOTE: Skipped for numpy >= 2.0 as serialization compatibility improved. """ dependencies_path = os.path.join(DATA_DIR, "remote_function", "old_deps_requirements.txt") diff --git a/tests/integ/sagemaker/serve/test_serve_mlflow_tensorflow_flavor_happy.py b/tests/integ/sagemaker/serve/test_serve_mlflow_tensorflow_flavor_happy.py index c25cbd7e18..9b7e31d604 100644 --- a/tests/integ/sagemaker/serve/test_serve_mlflow_tensorflow_flavor_happy.py +++ b/tests/integ/sagemaker/serve/test_serve_mlflow_tensorflow_flavor_happy.py @@ -107,6 +107,10 @@ def tensorflow_schema_builder(custom_request_translator, custom_response_transla PYTHON_VERSION_IS_NOT_310, reason="The goal of these test are to test the serving components of our feature", ) +@pytest.mark.skipif( + np.__version__ >= "2.0", + reason="TensorFlow serving container not yet compatible with numpy 2.0 serialization", +) def test_happy_tensorflow_sagemaker_endpoint_with_tensorflow_serving( sagemaker_session, tensorflow_schema_builder, From 82c687f96d027a6c1740897289b7949ec1161dff Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Fri, 12 Sep 2025 09:46:37 -0700 Subject: [PATCH 09/13] Fix incompatible_dependecies test --- tests/integ/sagemaker/remote_function/test_decorator.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/integ/sagemaker/remote_function/test_decorator.py b/tests/integ/sagemaker/remote_function/test_decorator.py index 018b380c83..5666f62ea3 100644 --- a/tests/integ/sagemaker/remote_function/test_decorator.py +++ b/tests/integ/sagemaker/remote_function/test_decorator.py @@ -20,6 +20,7 @@ import logging import random import string +import numpy as np import pandas as pd import subprocess import shlex @@ -327,7 +328,7 @@ def test_with_incompatible_dependencies( It is currently working with python 3.8+. However, running it with older versions or versions in the future may require changes to 'old_deps_requirements.txt' to fulfill testing scenario. - + NOTE: Skipped for numpy >= 2.0 as serialization compatibility improved. """ From 5d26314ac87fe7b08f232fdf7f79cdb3f8fe8683 Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Fri, 12 Sep 2025 12:56:11 -0700 Subject: [PATCH 10/13] Fix incompatible_dependecies test --- requirements/extras/test_requirements.txt | 2 +- src/sagemaker/serve/utils/conda_in_process.yml | 2 +- tests/data/serve_resources/mlflow/pytorch/conda.yaml | 2 +- tests/data/serve_resources/mlflow/pytorch/requirements.txt | 2 +- tests/data/serve_resources/mlflow/xgboost/conda.yaml | 2 +- tests/data/serve_resources/mlflow/xgboost/requirements.txt | 2 +- tests/unit/sagemaker/jumpstart/constants.py | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/requirements/extras/test_requirements.txt b/requirements/extras/test_requirements.txt index af09be67fd..a28bde1798 100644 --- a/requirements/extras/test_requirements.txt +++ b/requirements/extras/test_requirements.txt @@ -23,7 +23,7 @@ requests==2.32.2 sagemaker-experiments==0.1.35 Jinja2==3.1.6 pyvis==0.2.1 -pandas==2.2.3 +pandas>=2.3.0 scikit-learn==1.6.1 cloudpickle==2.2.1 jsonpickle<4.0.0 diff --git a/src/sagemaker/serve/utils/conda_in_process.yml b/src/sagemaker/serve/utils/conda_in_process.yml index a7cb79ac13..f32446d972 100644 --- a/src/sagemaker/serve/utils/conda_in_process.yml +++ b/src/sagemaker/serve/utils/conda_in_process.yml @@ -64,7 +64,7 @@ dependencies: - multiprocess>=0.70.14 - networkx>=3.1 - packaging>=23.1 - - pandas==2.2.3 + - pandas>=2.3.0 - pathos>=0.3.0 - pillow>=9.5.0 - platformdirs>=3.2.0 diff --git a/tests/data/serve_resources/mlflow/pytorch/conda.yaml b/tests/data/serve_resources/mlflow/pytorch/conda.yaml index 99c215b58a..f909a05da5 100644 --- a/tests/data/serve_resources/mlflow/pytorch/conda.yaml +++ b/tests/data/serve_resources/mlflow/pytorch/conda.yaml @@ -14,7 +14,7 @@ dependencies: - numpy>=2.0.0,<2.3.0 - opt-einsum==3.3.0 - packaging==24.0 - - pandas==2.2.3 + - pandas>=2.3.0 - pyyaml==6.0.1 - requests==2.31.0 - torch>=2.6.0 diff --git a/tests/data/serve_resources/mlflow/pytorch/requirements.txt b/tests/data/serve_resources/mlflow/pytorch/requirements.txt index 30f61badf4..6f8516a74e 100644 --- a/tests/data/serve_resources/mlflow/pytorch/requirements.txt +++ b/tests/data/serve_resources/mlflow/pytorch/requirements.txt @@ -8,7 +8,7 @@ gmpy2==2.1.2 numpy>=2.0.0,<2.3.0 opt-einsum==3.3.0 packaging>=23.0,<25 -pandas==2.2.3 +pandas>=2.3.0 pyyaml==6.0.1 requests==2.32.4 torch>=2.6.0 diff --git a/tests/data/serve_resources/mlflow/xgboost/conda.yaml b/tests/data/serve_resources/mlflow/xgboost/conda.yaml index 5fc090f1c6..c8f822fd78 100644 --- a/tests/data/serve_resources/mlflow/xgboost/conda.yaml +++ b/tests/data/serve_resources/mlflow/xgboost/conda.yaml @@ -7,7 +7,7 @@ dependencies: - mlflow>=2.16.1 - lz4==4.3.2 - numpy>=1.26.4 - - pandas==2.2.3 + - pandas>=2.3.0 - psutil==5.9.8 - scikit-learn==1.6.1 - scipy==1.13.0 diff --git a/tests/data/serve_resources/mlflow/xgboost/requirements.txt b/tests/data/serve_resources/mlflow/xgboost/requirements.txt index 9625f2e591..9e65ca87f0 100644 --- a/tests/data/serve_resources/mlflow/xgboost/requirements.txt +++ b/tests/data/serve_resources/mlflow/xgboost/requirements.txt @@ -1,7 +1,7 @@ mlflow==3.1.0 lz4==4.3.2 numpy>=1.26.4 -pandas==2.2.3 +pandas>=2.3.0 psutil==5.9.8 scikit-learn==1.6.1 scipy==1.13.0 diff --git a/tests/unit/sagemaker/jumpstart/constants.py b/tests/unit/sagemaker/jumpstart/constants.py index 90d2e7717e..1c4c5dfd87 100644 --- a/tests/unit/sagemaker/jumpstart/constants.py +++ b/tests/unit/sagemaker/jumpstart/constants.py @@ -14363,7 +14363,7 @@ "numpy>=2.0.0", "oscrypto==1.3.0", "packaging==23.1", - "pandas==2.2.3", + "pandas>=2.3.0", "pathos==0.3.0", "pkgutil-resolve-name==1.3.10", "platformdirs==3.8.0", @@ -14887,7 +14887,7 @@ "numpy>=2.0.0", "oscrypto==1.3.0", "packaging==23.1", - "pandas==2.2.3", + "pandas>=2.3.0", "pathos==0.3.0", "pkgutil-resolve-name==1.3.10", "platformdirs==3.8.0", From afbf206c89e00d852510c6d20b45cbf96d4a1c7d Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Sat, 27 Sep 2025 23:15:56 -0700 Subject: [PATCH 11/13] update tensorflow artifacts --- .../serve_resources/mlflow/tensorflow/MLmodel | 19 +++++++++--------- .../mlflow/tensorflow/conda.yaml | 4 ++-- .../mlflow/tensorflow/data/keras_module.txt | 1 + .../mlflow/tensorflow/data/model.keras | Bin 0 -> 21882 bytes .../mlflow/tensorflow/data/save_format.txt | 1 + .../mlflow/tensorflow/python_env.yaml | 2 +- .../mlflow/tensorflow/registered_model_meta | 2 -- .../mlflow/tensorflow/requirements.txt | 2 +- .../mlflow/tensorflow/tf2model/fingerprint.pb | 1 - .../mlflow/tensorflow/tf2model/saved_model.pb | Bin 22966 -> 0 bytes .../variables/variables.data-00000-of-00001 | Bin 553 -> 0 bytes .../tf2model/variables/variables.index | Bin 248 -> 0 bytes 12 files changed, 16 insertions(+), 16 deletions(-) create mode 100644 tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt create mode 100644 tests/data/serve_resources/mlflow/tensorflow/data/model.keras create mode 100644 tests/data/serve_resources/mlflow/tensorflow/data/save_format.txt delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/registered_model_meta delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/tf2model/fingerprint.pb delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/tf2model/saved_model.pb delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/tf2model/variables/variables.data-00000-of-00001 delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/tf2model/variables/variables.index diff --git a/tests/data/serve_resources/mlflow/tensorflow/MLmodel b/tests/data/serve_resources/mlflow/tensorflow/MLmodel index f00412149d..e236bb21b0 100644 --- a/tests/data/serve_resources/mlflow/tensorflow/MLmodel +++ b/tests/data/serve_resources/mlflow/tensorflow/MLmodel @@ -1,17 +1,18 @@ -artifact_path: model flavors: python_function: + data: data env: conda: conda.yaml virtualenv: python_env.yaml loader_module: mlflow.tensorflow - python_version: 3.10.13 + python_version: 3.10.14 tensorflow: code: null - model_type: tf2-module - saved_model_dir: tf2model -mlflow_version: 2.11.1 -model_size_bytes: 23823 -model_uuid: 40d2323944294fce898d8693455f60e8 -run_id: 592132312fb84935b201de2c027c54c6 -utc_time_created: '2024-04-01 19:47:15.396517' + data: data + keras_version: 2.18.0 + model_type: keras + save_format: tf +mlflow_version: 2.20.3 +model_size_bytes: 21900 +model_uuid: 20cdcbfcb0394f2e905a317861d3b770 +utc_time_created: '2025-09-28 05:15:53.761200' diff --git a/tests/data/serve_resources/mlflow/tensorflow/conda.yaml b/tests/data/serve_resources/mlflow/tensorflow/conda.yaml index 1207a858e5..2cd041915d 100644 --- a/tests/data/serve_resources/mlflow/tensorflow/conda.yaml +++ b/tests/data/serve_resources/mlflow/tensorflow/conda.yaml @@ -1,8 +1,8 @@ channels: - conda-forge dependencies: -- python=3.10.13 -- pip<=24.3 +- python=3.10.14 +- pip<=23.0.1 - pip: - mlflow>=2.16.1 - cloudpickle>=2.2.1 diff --git a/tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt b/tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt new file mode 100644 index 0000000000..2c73dfd27e --- /dev/null +++ b/tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt @@ -0,0 +1 @@ +tensorflow.keras \ No newline at end of file diff --git a/tests/data/serve_resources/mlflow/tensorflow/data/model.keras b/tests/data/serve_resources/mlflow/tensorflow/data/model.keras new file mode 100644 index 0000000000000000000000000000000000000000..514487c4c29ce9004b72464f8b8740bc32bba2d3 GIT binary patch literal 21882 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 w-ym(Tx)j`^Upf=2.2.1 numpy>=1.26.4 -tensorflow==2.18.0 +tensorflow==2.18.0 \ No newline at end of file diff --git a/tests/data/serve_resources/mlflow/tensorflow/tf2model/fingerprint.pb b/tests/data/serve_resources/mlflow/tensorflow/tf2model/fingerprint.pb deleted file mode 100644 index ba1e240ba5..0000000000 --- a/tests/data/serve_resources/mlflow/tensorflow/tf2model/fingerprint.pb +++ /dev/null @@ -1 +0,0 @@ -ďn/ ʢ(32 \ No newline at end of file diff --git a/tests/data/serve_resources/mlflow/tensorflow/tf2model/saved_model.pb b/tests/data/serve_resources/mlflow/tensorflow/tf2model/saved_model.pb deleted file mode 100644 index e48f2b59cc1ac074b08eeba09a7114d70023e2e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22966 zcmeG^TWlOzR(-qr<>U9Y6L+o?$LVCUo}MJ`E<1_S?2cnQ$~3ny-DRgI z?e3-@juVhz_hU3<7qk*WXcr-b#m8!-WmmI8!>}t@5ZYfPeh?BL2&CZy5JJEQ64G$) zt#@@*bvw=s$tW{&x*oUAJ@?#m&ppqZBJ>A8B=9f8^v{Rk3dEO6rMogs0NKrub^iMZ ze;NKh#^1~_z=yHcqq78uMzSsLf{^ZEH#_ut?FI1QC2r9 z+O0YrfK)?k*4mAtmL8`=5Z_TNZ7mZoaafr_&@Xh*83sf6x?ECQn$o#9M0Xt#*aeOEu`W!9N**WW7-< zwTm1;W&-+K4Yk^=*P5E5+Jkbx*l@gqw^=`Hnfil=CXLSn0-mRyj`XAU6n z4gva>*4WbS$}9J^;)8mvTx~V!1dJ7}TczI6Hp{zOGo7S|ftIvpt6WuE>? zWG>EG35eaS-KxV|5WB4wA0Qtk1Rph#x><75JwpRPZc+({Izw{AF<+Tsh^f2frg+Dq z=?JVq|Luxe)b8WBv_>aedDwFt;yPFAKP*;=rU_hzA;p7Y&hNFs#FmGaL1 z)}KWps6pQ<&Rng5Q;n>f&?gnAbOZ+U6`@qsZ86E?Fd_z_sMV6vtdxuVDI0~P-mWPp z#L{eL(qLRssFa(n8NOg& zVEk9(%Pwf8z5&B)_ti#8D_ukG_Mwi>uxS(HXl?hfcran09SHP^dI7}R#PVjG!D;Vj^MiJb6V!N22t2<76c zwx#V}YgZ~L6^r*dQH2ae{z9JAC3YGzIQw*8=_Qw9#5(=Bc6Yv89{kWLl!1cj*Fh2kG4#qo0 zQnl1_RdaQkIRgEhWwer5X-<4_B|%BsXm54C@dy|c6$k@qtp8+A!myC72(+Z_@TE!z z1Ow@FCwK_wAQNwDjU6qUkk92WoXg9Hcl3+1xwBj6H;R`^@`VfYmx>F7{{FiJs>Uu# z_02Sko35hIjlSnLX$lgB7>%Y<*?x0>j^;@Ayt&DqSi6)iH;cg|NX52WJDYbU>d zIr|6SSp1dpx3B#1M`thp&QN;!Cm;XkU*g;*SNN{24VqdS0QEY6x7LP*&w1EaWPLn?K3~0b<+!{O6MI;Ne?puwK|2bz)=eV z-?wHxo0n%ZW7d~}7&@5*euDs*@Nvd_8semDh=bxIp+72l&mhOlK|&$L85I9WcGA7_ z2B-r8D8rPEju>mV0Xx3VPIYkV064pL4IS03QN9ql5>(PQ)pn(&>{6$Ok(Ab&cAjx=p3?`Ift-|;8@{Xo#t5tPNYbfPXlj6RZJ=sC0Q5Y^DXE^AT zJq1i@AO|b8YUL4L=~jlKZyhN8V=OAgvKKsi+i7|Vk|3?zzB5Aj#TW4+CiiEPxik4Q z@|n5okp=Q~63L$Bo94{wX*i`I$W5)GRf}kqpmn3R+6_&4*ih?rL^+?olv}t21Gt!(|v%eiPh2S@0%kRcgNg7%HS`4m2A4mT4ki!RPLZpBWd$=86T%)KC-(6aLb7}d;Rpsu|jXPJJ%aLUS z(z6d|&n>O5ufDl_XZ`Bhth>GF`3il#1CAw$Oeh=Opj<$_`z^fjX2873HS2q+(rfY~9PZb^vC64LFtC);bB zY^PUGLB@}4D5$xiDk!&bfxgp(5BuOp1SVaL4Z$T^<#IHReyKE}Ihfj3Tifl55d1ra zo2gc}qL@&xq-V!C_2PEs=^*Qq`P}O&shun zUr?_y)dl-~=^N}zw)aU#i;-P+%ooFg@Rs1VljMFSuFMB(Hq%_GVw>PYfR6Em(YBW@ zj<6y~NNB3NAK8eGeZlaZ6>^MqPQ(5O^K-V*Zd&gwiGT}_og@iX{im~sJa#;)F^mwl z>hKs^zC$)*cnAu*S%ssB-{bBpoBAPLv0F|}f{oqlBmg^n&v%xy;~i=fNa@ z=ocV-DWqUBpihaCUHJDdvTF`4%a^i?n`sX1gRs&;WY_09*!&QT6-Hgw!KW(3D$hcQ z^*pMt_9V@EGNA&*+LxYEto738b1dJoUio$eCOX;bMHF<`QP5q39yzRw#QVuG{FL;h z+M(IVJ?B;+iJnDeOaurWnwxp4j*@0h0YV3 zRPyX^2pnED11Gc2NJ)U%9=vf&P63z9J~A!$`f?S`Ywj$SmV2;%%{F1S?ebA&<&CQ= zKYRPun>W{mp?z!l`qhSMlw;Fl9DbpQ0!VnDb=$!eN9krra!i*v$iTbmpvQg`b zjal6njEGnv=k3nYqSGDyqT7l0$^MA=1j9SHl7+1Y)~T#{5jhRh%6+xT{by~pA~d%~ zt%Baix>iMVrdY;^L3D=rD~3*nCG0Bzrf!HPe<(fjUNm~3$NLzI?p%Ph7mC}BIg$<+RO)DlC>r#5PH7Ha!2VUBpWcpmFQ z!^JRNIw(thm{va3%hK*{u-rA=7X=WBPXYN) zpC;0bxsZaWqI;91%qE~K-ht6$cf8|Miyf2bQ^$=?@c_v2)nmai4cuax3KH@M<*AWu zIw1OH={QX1C3}u~^0izC3Hi?St|zfOL3EuN_X*42*PTT8I!up?yC?iU?^Li^`d$DP z0yM*C=Gb2GYK1c7!m={->?q@3p*^DhDDOY%qHq)g@aZ6J4&TN@-k!z)e+Gm2{todJ zP4LWw3v-3jm=w^xUA{1l4)&uE?BGaY3(}><8fvGvVBc9T;j;V3eehSLw=@h>i1*u~ zT8MF5I1@T)%j!;-lS7cpmLSJ{zyvU-Zwuz_{Qd;`KRk`NM9J?XByD+_w=ZS;a?ZY- z|7;}W^dM9(=Gg;Zr%n&z^`-a<(nA8%7e0CMwUF;kd|kZs{EDydO~L!ot{Eh>!&yED zCq#BzsVoXtideW(tBNP42i(VH{+jVo9@EW(KC|Q+)zgS}WIg_?%wwXq)0uwWaHjhd zk?axln`825M^()pK?iC_R_Pu|^QV~4>GQ!M;}!ogeIl55{Sf@K%6*@@e9Ue?ST@N0 zg+YBQ5gp^l_nLEs+1Ybh_KWTW>0Y5ZTm{@UrWZQV!R3CDwiiE#nd&Xn`8>(cPX&F_ zgie=71aweZ+ID?bbn!JTmocg(j9+%lFFoH@Er&#YwtYWhnk@=m%e}nyUu?`SII`pqoASlaem`bY!+O{w+U&1Uis&_SpOrv!6D?j*1jwhcj+L!e zMPa~<1{;^2=y^z#`JJd$dT5j&GUl1Jf?2PJ?yaLfB)6sx-7fz4+b!&PQ{L~P9fV>c z8QRvRylioxaG_uL`db7}cUJe#`jqxkQ8XJ$rsO@H5?-uPrt=+`n7*Q9NVyncSWoVw zD^j0lY_>PlZJIj+SY9j-L|b;>AwlOI`>C@>47+wB>_wxiTD0cq>Aa&So5|+w0lRZX zgQKnACN3wMAEJS32OHP*5%=a3ve#kisqcQ}zXQ8sx91(P+w;~i_Yu3rN>q3HDb~B_ zv0FWQ+c`mgoG0f3b;bZ)QqKCTe||clJRhRl1Zq7z8P=Dq)ccY02wPkUuM*HWYm5_)c`zk?K4vipbzGt)c~Z8Gt0d@n=2XfUG7jkqmATF=u(ZUWa9F`ZN{B$S| zt)z&$Z_HCJSCv|wpD>~uE!o$x`b<>PnoY{pa*H>4g`Nz01^Ty)+ogYqz8+5*I-VGX zM}?7HI)|Nm&toX$MhFWzaDgsB$~X-rN6!RSMGG+Q^9UHz^TjvuFsxal-&s6}sZ=hu z3O`MQa^R}{%u!VAw=_I?rd-sk;A$Ih^HY(q4gwD|D1_DXclmbefbahc56y8L5g`9< zmt?CC2z-;gFX3@C{rtS3rN-787WCn9RpP`Wn);4}6_#(~91cPf!(IFsBz`ai9*Kl* z#m0k&;${d^#yK1M%Ta&_5BXsbqPg@PDMGO#Qh(%XNTFY?R%`ssA}oBQ(tA=QdwNeg z2`8RJr)UUwq{(CFFyV~vIS83UFle2%fIMF}CWsZ%m_cFHCZ~yP9ccixFoN$Qu4n%p zMWXKe`~vw&G&t`lpUZ{3%;!U1VuDL>i8huwqSy5~n^I&LoGzPycw-*`fj9O65O`xB z00BRY9_0Lopb=XZ=J_pz>g0`H9QEdr;}E&=r)*q z#))ZEto{9nj>9g|VT+&MB$RP*;f9X<|50+{$npG!aO~0W37fa)9D8&* zy};O`Y<`ZhKYkqx@`PLR?eW&;xph2a=z)GvD;`OpR$Fl5dY_pzG1t9`+`UQOzX|>2 z;Qfu~hkuzShDQ>~QOf4_q#V4uCt=ObljsSqX@;r{!1asFu_sYxWhGL#>WE2&Uk>h^ zFa0mjXd=l@>`7BFu_uiKeG(n!9dl(uoW6huk&14{pG5I|MI%2^l$}m@fsRWv47#u! zf}y9oK*yyM23`16f}zI{dNqVH$lA9AWwLwH=U{qI!j$VL(KM$_$8i8Dvzsn6@w>fl tL`{n!7WSm`Ani#JIQO3P8obK;?};@sv+qe~AnPzWrk+G69k*US`9G+vekT9` diff --git a/tests/data/serve_resources/mlflow/tensorflow/tf2model/variables/variables.data-00000-of-00001 b/tests/data/serve_resources/mlflow/tensorflow/tf2model/variables/variables.data-00000-of-00001 deleted file mode 100644 index 575da962826e4f881fc73e05a9254344f10756b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmccPY-iu6ec0A&OZ?vTu~oL8*rwPjZ(!PY*qd|TKUE z6k^TIPf5+;;^JTuV#~`f%8jo8vYDamN-iD_79o!K_~gW#ocMSyJ`PqPuHww}yu^~y zqSRt7CJsg}1uj+&HX+7xAjK}km;}_pfzSa~!KB5&1;YGX+#H-j>?K8s$*J)MKml|PN#L}D+poEK%9T#7iW00q#laFhBn4?dqs}M(6Vo_#dQckLr z64=T5<@$P#At6DYPN5;L!TPAG!S)hmN)jPc%z&=uhPxWb;el}sfgD~K#|X&bgK><3 rez4=><=_|MOinBSg;l%(kSl=T8Une32(Af`D}>;hQb9i~)N#-N7x;xN diff --git a/tests/data/serve_resources/mlflow/tensorflow/tf2model/variables/variables.index b/tests/data/serve_resources/mlflow/tensorflow/tf2model/variables/variables.index deleted file mode 100644 index 57646ac3509ce55f5f5e1f7c8f4e8570badfe5d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmZQzVB=tvV&Y(Akl~AW_HcFf4)FK%3vqPvagFzP@^W0aL$2G3pX$@GUqWY0?UC3iR<^5EobD| T!pIL&h989gZs=Aib-xV&T!t}k From cf1db86ea98444dda26ca000eb71a3d065adf9fa Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Sat, 27 Sep 2025 23:26:04 -0700 Subject: [PATCH 12/13] update tensorflow artifacts --- .../serve_resources/mlflow/tensorflow/MLmodel | 18 ------------------ .../mlflow/tensorflow/conda.yaml | 11 ----------- .../mlflow/tensorflow/data/keras_module.txt | 1 - .../mlflow/tensorflow/data/model.keras | Bin 21882 -> 0 bytes .../mlflow/tensorflow/data/save_format.txt | 1 - .../mlflow/tensorflow/python_env.yaml | 7 ------- .../mlflow/tensorflow/requirements.txt | 4 ---- tests/integ/sagemaker/serve/constants.py | 2 +- ...st_serve_mlflow_tensorflow_flavor_happy.py | 5 +---- 9 files changed, 2 insertions(+), 47 deletions(-) delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/MLmodel delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/conda.yaml delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/data/model.keras delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/data/save_format.txt delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/python_env.yaml delete mode 100644 tests/data/serve_resources/mlflow/tensorflow/requirements.txt diff --git a/tests/data/serve_resources/mlflow/tensorflow/MLmodel b/tests/data/serve_resources/mlflow/tensorflow/MLmodel deleted file mode 100644 index e236bb21b0..0000000000 --- a/tests/data/serve_resources/mlflow/tensorflow/MLmodel +++ /dev/null @@ -1,18 +0,0 @@ -flavors: - python_function: - data: data - env: - conda: conda.yaml - virtualenv: python_env.yaml - loader_module: mlflow.tensorflow - python_version: 3.10.14 - tensorflow: - code: null - data: data - keras_version: 2.18.0 - model_type: keras - save_format: tf -mlflow_version: 2.20.3 -model_size_bytes: 21900 -model_uuid: 20cdcbfcb0394f2e905a317861d3b770 -utc_time_created: '2025-09-28 05:15:53.761200' diff --git a/tests/data/serve_resources/mlflow/tensorflow/conda.yaml b/tests/data/serve_resources/mlflow/tensorflow/conda.yaml deleted file mode 100644 index 2cd041915d..0000000000 --- a/tests/data/serve_resources/mlflow/tensorflow/conda.yaml +++ /dev/null @@ -1,11 +0,0 @@ -channels: -- conda-forge -dependencies: -- python=3.10.14 -- pip<=23.0.1 -- pip: - - mlflow>=2.16.1 - - cloudpickle>=2.2.1 - - numpy>=1.26.4 - - tensorflow==2.18.0 -name: mlflow-env diff --git a/tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt b/tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt deleted file mode 100644 index 2c73dfd27e..0000000000 --- a/tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt +++ /dev/null @@ -1 +0,0 @@ -tensorflow.keras \ No newline at end of file diff --git a/tests/data/serve_resources/mlflow/tensorflow/data/model.keras b/tests/data/serve_resources/mlflow/tensorflow/data/model.keras deleted file mode 100644 index 514487c4c29ce9004b72464f8b8740bc32bba2d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21882 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 w-ym(Tx)j`^Upf=2.2.1 -numpy>=1.26.4 -tensorflow==2.18.0 \ No newline at end of file diff --git a/tests/integ/sagemaker/serve/constants.py b/tests/integ/sagemaker/serve/constants.py index 3f25f6a575..6f084668fd 100644 --- a/tests/integ/sagemaker/serve/constants.py +++ b/tests/integ/sagemaker/serve/constants.py @@ -20,7 +20,7 @@ SERVE_IN_PROCESS_TIMEOUT = 5 SERVE_MODEL_PACKAGE_TIMEOUT = 10 SERVE_LOCAL_CONTAINER_TIMEOUT = 10 -SERVE_SAGEMAKER_ENDPOINT_TIMEOUT = 15 +SERVE_SAGEMAKER_ENDPOINT_TIMEOUT = 50 SERVE_SAVE_TIMEOUT = 2 PYTHON_VERSION_IS_NOT_38 = platform.python_version_tuple()[1] != "8" diff --git a/tests/integ/sagemaker/serve/test_serve_mlflow_tensorflow_flavor_happy.py b/tests/integ/sagemaker/serve/test_serve_mlflow_tensorflow_flavor_happy.py index 9b7e31d604..d7ff4317d8 100644 --- a/tests/integ/sagemaker/serve/test_serve_mlflow_tensorflow_flavor_happy.py +++ b/tests/integ/sagemaker/serve/test_serve_mlflow_tensorflow_flavor_happy.py @@ -107,10 +107,7 @@ def tensorflow_schema_builder(custom_request_translator, custom_response_transla PYTHON_VERSION_IS_NOT_310, reason="The goal of these test are to test the serving components of our feature", ) -@pytest.mark.skipif( - np.__version__ >= "2.0", - reason="TensorFlow serving container not yet compatible with numpy 2.0 serialization", -) + def test_happy_tensorflow_sagemaker_endpoint_with_tensorflow_serving( sagemaker_session, tensorflow_schema_builder, From f85147c60420f982d24cf985b62b73780b1b80a8 Mon Sep 17 00:00:00 2001 From: Roja Reddy Sareddy Date: Sun, 28 Sep 2025 08:14:48 -0700 Subject: [PATCH 13/13] update tensorflow artifacts --- .../serve_resources/mlflow/tensorflow/MLmodel | 18 ++++++++++++++++++ .../mlflow/tensorflow/conda.yaml | 11 +++++++++++ .../mlflow/tensorflow/data/keras_module.txt | 1 + .../mlflow/tensorflow/data/model.keras | Bin 0 -> 21882 bytes .../mlflow/tensorflow/data/save_format.txt | 1 + .../mlflow/tensorflow/python_env.yaml | 7 +++++++ .../mlflow/tensorflow/requirements.txt | 4 ++++ 7 files changed, 42 insertions(+) create mode 100644 tests/data/serve_resources/mlflow/tensorflow/MLmodel create mode 100644 tests/data/serve_resources/mlflow/tensorflow/conda.yaml create mode 100644 tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt create mode 100644 tests/data/serve_resources/mlflow/tensorflow/data/model.keras create mode 100644 tests/data/serve_resources/mlflow/tensorflow/data/save_format.txt create mode 100644 tests/data/serve_resources/mlflow/tensorflow/python_env.yaml create mode 100644 tests/data/serve_resources/mlflow/tensorflow/requirements.txt diff --git a/tests/data/serve_resources/mlflow/tensorflow/MLmodel b/tests/data/serve_resources/mlflow/tensorflow/MLmodel new file mode 100644 index 0000000000..e236bb21b0 --- /dev/null +++ b/tests/data/serve_resources/mlflow/tensorflow/MLmodel @@ -0,0 +1,18 @@ +flavors: + python_function: + data: data + env: + conda: conda.yaml + virtualenv: python_env.yaml + loader_module: mlflow.tensorflow + python_version: 3.10.14 + tensorflow: + code: null + data: data + keras_version: 2.18.0 + model_type: keras + save_format: tf +mlflow_version: 2.20.3 +model_size_bytes: 21900 +model_uuid: 20cdcbfcb0394f2e905a317861d3b770 +utc_time_created: '2025-09-28 05:15:53.761200' diff --git a/tests/data/serve_resources/mlflow/tensorflow/conda.yaml b/tests/data/serve_resources/mlflow/tensorflow/conda.yaml new file mode 100644 index 0000000000..2cd041915d --- /dev/null +++ b/tests/data/serve_resources/mlflow/tensorflow/conda.yaml @@ -0,0 +1,11 @@ +channels: +- conda-forge +dependencies: +- python=3.10.14 +- pip<=23.0.1 +- pip: + - mlflow>=2.16.1 + - cloudpickle>=2.2.1 + - numpy>=1.26.4 + - tensorflow==2.18.0 +name: mlflow-env diff --git a/tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt b/tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt new file mode 100644 index 0000000000..2c73dfd27e --- /dev/null +++ b/tests/data/serve_resources/mlflow/tensorflow/data/keras_module.txt @@ -0,0 +1 @@ +tensorflow.keras \ No newline at end of file diff --git a/tests/data/serve_resources/mlflow/tensorflow/data/model.keras b/tests/data/serve_resources/mlflow/tensorflow/data/model.keras new file mode 100644 index 0000000000000000000000000000000000000000..514487c4c29ce9004b72464f8b8740bc32bba2d3 GIT binary patch literal 21882 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 w-ym(Tx)j`^Upf=2.2.1 +numpy>=1.26.4 +tensorflow==2.18.0 \ No newline at end of file