Skip to content

Commit 334ce76

Browse files
jiapinwakrishna1995
authored andcommitted
Fix formatting and add uts
1 parent ce87772 commit 334ce76

File tree

4 files changed

+58
-21
lines changed

4 files changed

+58
-21
lines changed

src/sagemaker/serve/builder/model_builder.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,6 @@ def _auto_detect_container(self):
294294
"Skipping auto detection as the image uri is provided %s",
295295
self.image_uri,
296296
)
297-
self._is_custom_image_uri = True
298297
return
299298

300299
if self.model:

src/sagemaker/serve/utils/telemetry_logger.py

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
"""Placeholder docstring"""
1414
from __future__ import absolute_import
1515
import logging
16-
from typing import Optional
1716
from time import perf_counter
1817

1918
import requests
@@ -69,6 +68,7 @@ def wrapper(self, *args, **kwargs):
6968
f"&x-modelServer={MODEL_SERVER_TO_CODE[str(self.model_server)]}"
7069
f"&x-imageTag={image_uri_tail}"
7170
f"&x-sdkVersion={SDK_VERSION}"
71+
f"&x-defaultImageUsage={_get_image_uri_option(self.image_uri, self._is_custom_image_uri)}"
7272
)
7373

7474
if self.model_server == ModelServer.DJL_SERVING or self.model_server == ModelServer.TGI:
@@ -77,8 +77,6 @@ def wrapper(self, *args, **kwargs):
7777
if self.sagemaker_session and self.sagemaker_session.endpoint_arn:
7878
extra += f"&x-endpointArn={self.sagemaker_session.endpoint_arn}"
7979

80-
extra += f"&x-defaultImageUsage={_get_image_uri_option(self.image_uri, self._is_custom_image_uri)}"
81-
8280
start_timer = perf_counter()
8381
try:
8482
response = func(self, *args, **kwargs)
@@ -95,10 +93,10 @@ def wrapper(self, *args, **kwargs):
9593
extra,
9694
)
9795
except (
98-
ModelBuilderException,
99-
exceptions.CapacityError,
100-
exceptions.UnexpectedStatusException,
101-
exceptions.AsyncInferenceError,
96+
ModelBuilderException,
97+
exceptions.CapacityError,
98+
exceptions.UnexpectedStatusException,
99+
exceptions.AsyncInferenceError,
102100
) as e:
103101
stop_timer = perf_counter()
104102
elapsed = stop_timer - start_timer
@@ -126,12 +124,12 @@ def wrapper(self, *args, **kwargs):
126124

127125

128126
def _send_telemetry(
129-
status: str,
130-
mode: int,
131-
session: Session,
132-
failure_reason: str = None,
133-
failure_type: str = None,
134-
extra_info: str = None,
127+
status: str,
128+
mode: int,
129+
session: Session,
130+
failure_reason: str = None,
131+
failure_type: str = None,
132+
extra_info: str = None,
135133
) -> None:
136134
"""Make GET request to an empty object in S3 bucket"""
137135
try:
@@ -153,13 +151,13 @@ def _send_telemetry(
153151

154152

155153
def _construct_url(
156-
accountId: str,
157-
mode: str,
158-
status: str,
159-
failure_reason: str,
160-
failure_type: str,
161-
extra_info: str,
162-
region: str,
154+
accountId: str,
155+
mode: str,
156+
status: str,
157+
failure_reason: str,
158+
failure_type: str,
159+
extra_info: str,
160+
region: str,
163161
) -> str:
164162
"""Placeholder docstring"""
165163

tests/unit/sagemaker/serve/builder/test_transformers_builder.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import unittest
1717
from sagemaker.serve.builder.model_builder import ModelBuilder
1818
from sagemaker.serve.mode.function_pointers import Mode
19+
from tests.unit.sagemaker.serve.constants import MOCK_VPC_CONFIG
1920

2021
from sagemaker.serve.utils.predictors import TransformersLocalModePredictor
2122

@@ -74,6 +75,7 @@ def test_build_deploy_for_transformers_local_container_and_remote_container(
7475
model=mock_model_id,
7576
schema_builder=mock_schema_builder,
7677
mode=Mode.LOCAL_CONTAINER,
78+
vpc_config=MOCK_VPC_CONFIG,
7779
)
7880

7981
builder._prepare_for_mode = MagicMock()
@@ -85,6 +87,7 @@ def test_build_deploy_for_transformers_local_container_and_remote_container(
8587
builder.modes[str(Mode.LOCAL_CONTAINER)] = MagicMock()
8688
predictor = model.deploy(model_data_download_timeout=1800)
8789

90+
assert model.vpc_config == MOCK_VPC_CONFIG
8891
assert builder.env_vars["MODEL_LOADING_TIMEOUT"] == "1800"
8992
assert isinstance(predictor, TransformersLocalModePredictor)
9093

tests/unit/sagemaker/serve/utils/test_telemetry_logger.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
_construct_url,
2121
)
2222
from sagemaker.serve.utils.exceptions import ModelBuilderException, LocalModelOutOfMemoryException
23+
from sagemaker.serve.utils.types import ImageUriOption
2324
from sagemaker.user_agent import SDK_VERSION
2425

2526
MOCK_SESSION = Mock()
@@ -71,6 +72,7 @@ def test_capture_telemetry_decorator_djl_success(self, mock_send_telemetry):
7172
mock_model_builder = ModelBuilderMock()
7273
mock_model_builder.serve_settings.telemetry_opt_out = False
7374
mock_model_builder.image_uri = MOCK_DJL_CONTAINER
75+
mock_model_builder._is_custom_image_uri = False
7476
mock_model_builder.model = MOCK_HUGGINGFACE_ID
7577
mock_model_builder.mode = Mode.LOCAL_CONTAINER
7678
mock_model_builder.model_server = ModelServer.DJL_SERVING
@@ -88,6 +90,37 @@ def test_capture_telemetry_decorator_djl_success(self, mock_send_telemetry):
8890
f"&x-modelName={MOCK_HUGGINGFACE_ID}"
8991
f"&x-endpointArn={MOCK_ENDPOINT_ARN}"
9092
f"&x-latency={latency}"
93+
f"&x-defaultImageUsage={ImageUriOption.DEFAULT_IMAGE.value}"
94+
)
95+
96+
mock_send_telemetry.assert_called_once_with(
97+
"1", 2, MOCK_SESSION, None, None, expected_extra_str
98+
)
99+
100+
@patch("sagemaker.serve.utils.telemetry_logger._send_telemetry")
101+
def test_capture_telemetry_decorator_djl_success_with_custom_image(self, mock_send_telemetry):
102+
mock_model_builder = ModelBuilderMock()
103+
mock_model_builder.serve_settings.telemetry_opt_out = False
104+
mock_model_builder.image_uri = MOCK_DJL_CONTAINER
105+
mock_model_builder._is_custom_image_uri = True
106+
mock_model_builder.model = MOCK_HUGGINGFACE_ID
107+
mock_model_builder.mode = Mode.LOCAL_CONTAINER
108+
mock_model_builder.model_server = ModelServer.DJL_SERVING
109+
mock_model_builder.sagemaker_session.endpoint_arn = MOCK_ENDPOINT_ARN
110+
111+
mock_model_builder.mock_deploy()
112+
113+
args = mock_send_telemetry.call_args.args
114+
latency = str(args[5]).split("latency=")[1]
115+
expected_extra_str = (
116+
f"{MOCK_FUNC_NAME}"
117+
"&x-modelServer=4"
118+
"&x-imageTag=djl-inference:0.25.0-deepspeed0.11.0-cu118"
119+
f"&x-sdkVersion={SDK_VERSION}"
120+
f"&x-modelName={MOCK_HUGGINGFACE_ID}"
121+
f"&x-endpointArn={MOCK_ENDPOINT_ARN}"
122+
f"&x-latency={latency}"
123+
f"&x-defaultImageUsage={ImageUriOption.CUSTOM_1P_IMAGE.value}"
91124
)
92125

93126
mock_send_telemetry.assert_called_once_with(
@@ -99,6 +132,7 @@ def test_capture_telemetry_decorator_tgi_success(self, mock_send_telemetry):
99132
mock_model_builder = ModelBuilderMock()
100133
mock_model_builder.serve_settings.telemetry_opt_out = False
101134
mock_model_builder.image_uri = MOCK_TGI_CONTAINER
135+
mock_model_builder._is_custom_image_uri = False
102136
mock_model_builder.model = MOCK_HUGGINGFACE_ID
103137
mock_model_builder.mode = Mode.LOCAL_CONTAINER
104138
mock_model_builder.model_server = ModelServer.TGI
@@ -116,6 +150,7 @@ def test_capture_telemetry_decorator_tgi_success(self, mock_send_telemetry):
116150
f"&x-modelName={MOCK_HUGGINGFACE_ID}"
117151
f"&x-endpointArn={MOCK_ENDPOINT_ARN}"
118152
f"&x-latency={latency}"
153+
f"&x-defaultImageUsage={ImageUriOption.DEFAULT_IMAGE.value}"
119154
)
120155

121156
mock_send_telemetry.assert_called_once_with(
@@ -139,6 +174,7 @@ def test_capture_telemetry_decorator_handle_exception_success(self, mock_send_te
139174
mock_model_builder = ModelBuilderMock()
140175
mock_model_builder.serve_settings.telemetry_opt_out = False
141176
mock_model_builder.image_uri = MOCK_DJL_CONTAINER
177+
mock_model_builder._is_custom_image_uri = False
142178
mock_model_builder.model = MOCK_HUGGINGFACE_ID
143179
mock_model_builder.mode = Mode.LOCAL_CONTAINER
144180
mock_model_builder.model_server = ModelServer.DJL_SERVING
@@ -161,6 +197,7 @@ def test_capture_telemetry_decorator_handle_exception_success(self, mock_send_te
161197
f"&x-modelName={MOCK_HUGGINGFACE_ID}"
162198
f"&x-endpointArn={MOCK_ENDPOINT_ARN}"
163199
f"&x-latency={latency}"
200+
f"&x-defaultImageUsage={ImageUriOption.DEFAULT_IMAGE.value}"
164201
)
165202

166203
mock_send_telemetry.assert_called_once_with(

0 commit comments

Comments
 (0)