From 5e9cb95d3029a97dada734b70cc96f4a314d5e69 Mon Sep 17 00:00:00 2001 From: Joseph Zhang Date: Wed, 23 Jul 2025 15:53:12 -0700 Subject: [PATCH 1/2] Directly use customer-provided endpoint name for deployment in ModelBuilder. --- src/sagemaker/serve/builder/model_builder.py | 4 +--- tests/integ/sagemaker/serve/test_base_model_builder_deploy.py | 4 ++-- .../test_serve_model_builder_inference_component_happy.py | 3 ++- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/sagemaker/serve/builder/model_builder.py b/src/sagemaker/serve/builder/model_builder.py index ed5455daec..3c19e4aa43 100644 --- a/src/sagemaker/serve/builder/model_builder.py +++ b/src/sagemaker/serve/builder/model_builder.py @@ -116,7 +116,7 @@ validate_image_uri_and_hardware, ) from sagemaker.serverless import ServerlessInferenceConfig -from sagemaker.utils import Tags, unique_name_from_base +from sagemaker.utils import Tags from sagemaker.workflow.entities import PipelineVariable from sagemaker.huggingface.llm_utils import ( get_huggingface_model_metadata, @@ -1983,8 +1983,6 @@ def deploy( """ if not hasattr(self, "built_model") and not hasattr(self, "_deployables"): raise ValueError("Model needs to be built before deploying") - if not update_endpoint: - endpoint_name = unique_name_from_base(endpoint_name) if not hasattr(self, "_deployables"): if not inference_config: # Real-time Deployment diff --git a/tests/integ/sagemaker/serve/test_base_model_builder_deploy.py b/tests/integ/sagemaker/serve/test_base_model_builder_deploy.py index 80f9c50e4b..a0de64225d 100644 --- a/tests/integ/sagemaker/serve/test_base_model_builder_deploy.py +++ b/tests/integ/sagemaker/serve/test_base_model_builder_deploy.py @@ -185,7 +185,7 @@ def invoke(self, input_object: object, model: object): def test_real_time_deployment(xgboost_model_builder): real_time_predictor = xgboost_model_builder.deploy( - endpoint_name="test", initial_instance_count=1 + endpoint_name=f"test-{uuid.uuid1().hex}", initial_instance_count=1 ) assert real_time_predictor is not None @@ -198,7 +198,7 @@ def test_real_time_deployment(xgboost_model_builder): def test_serverless_deployment(xgboost_model_builder): serverless_predictor = xgboost_model_builder.deploy( - endpoint_name="test1", inference_config=ServerlessInferenceConfig() + endpoint_name=f"test1-{uuid.uuid1().hex}", inference_config=ServerlessInferenceConfig() ) assert serverless_predictor is not None diff --git a/tests/integ/sagemaker/serve/test_serve_model_builder_inference_component_happy.py b/tests/integ/sagemaker/serve/test_serve_model_builder_inference_component_happy.py index b72b84aeac..7191de4e7d 100644 --- a/tests/integ/sagemaker/serve/test_serve_model_builder_inference_component_happy.py +++ b/tests/integ/sagemaker/serve/test_serve_model_builder_inference_component_happy.py @@ -14,6 +14,7 @@ import pytest import tests.integ +import uuid from botocore.exceptions import ClientError from sagemaker.predictor import Predictor @@ -88,7 +89,7 @@ def test_model_builder_ic_sagemaker_endpoint( with timeout(minutes=SERVE_SAGEMAKER_ENDPOINT_TIMEOUT): try: logger.info("Deploying and predicting in SAGEMAKER_ENDPOINT mode...") - endpoint_name = "llama-ic-endpoint-name" + endpoint_name = f"llama-ic-endpoint-name-{uuid.uuid1().hex}" predictors = chain.deploy( instance_type=INSTANCE_TYPE, initial_instance_count=1, From b89cac8ad4371cbe739197dde3ceac8617d36e0f Mon Sep 17 00:00:00 2001 From: Joseph Zhang Date: Mon, 28 Jul 2025 14:28:19 -0400 Subject: [PATCH 2/2] Fix ModelBuilder UTs after removing unique_name_from_base import. --- tests/unit/sagemaker/serve/builder/test_model_builder.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/unit/sagemaker/serve/builder/test_model_builder.py b/tests/unit/sagemaker/serve/builder/test_model_builder.py index de4304d63d..8ae6072ee5 100644 --- a/tests/unit/sagemaker/serve/builder/test_model_builder.py +++ b/tests/unit/sagemaker/serve/builder/test_model_builder.py @@ -4241,9 +4241,7 @@ def test_neuron_configurations_rule_set(self): "Batch", ], ) -@patch("sagemaker.serve.builder.model_builder.unique_name_from_base") -def test_deploy(mock_unique_name_from_base, test_case): - mock_unique_name_from_base.return_value = "test" +def test_deploy(test_case): model: Model = MagicMock() model_builder = ModelBuilder( model="meta-llama/Meta-Llama-3-8B-Instruct",