20
20
_construct_url ,
21
21
)
22
22
from sagemaker .serve .utils .exceptions import ModelBuilderException , LocalModelOutOfMemoryException
23
+ from sagemaker .serve .utils .types import ImageUriOption
23
24
from sagemaker .user_agent import SDK_VERSION
24
25
25
26
MOCK_SESSION = Mock ()
@@ -71,6 +72,7 @@ def test_capture_telemetry_decorator_djl_success(self, mock_send_telemetry):
71
72
mock_model_builder = ModelBuilderMock ()
72
73
mock_model_builder .serve_settings .telemetry_opt_out = False
73
74
mock_model_builder .image_uri = MOCK_DJL_CONTAINER
75
+ mock_model_builder ._is_custom_image_uri = False
74
76
mock_model_builder .model = MOCK_HUGGINGFACE_ID
75
77
mock_model_builder .mode = Mode .LOCAL_CONTAINER
76
78
mock_model_builder .model_server = ModelServer .DJL_SERVING
@@ -85,6 +87,37 @@ def test_capture_telemetry_decorator_djl_success(self, mock_send_telemetry):
85
87
"&x-modelServer=4"
86
88
"&x-imageTag=djl-inference:0.25.0-deepspeed0.11.0-cu118"
87
89
f"&x-sdkVersion={ SDK_VERSION } "
90
+ f"&x-defaultImageUsage={ ImageUriOption .DEFAULT_IMAGE .value } "
91
+ f"&x-modelName={ MOCK_HUGGINGFACE_ID } "
92
+ f"&x-endpointArn={ MOCK_ENDPOINT_ARN } "
93
+ f"&x-latency={ latency } "
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-defaultImageUsage={ ImageUriOption .CUSTOM_1P_IMAGE .value } "
88
121
f"&x-modelName={ MOCK_HUGGINGFACE_ID } "
89
122
f"&x-endpointArn={ MOCK_ENDPOINT_ARN } "
90
123
f"&x-latency={ latency } "
@@ -99,6 +132,7 @@ def test_capture_telemetry_decorator_tgi_success(self, mock_send_telemetry):
99
132
mock_model_builder = ModelBuilderMock ()
100
133
mock_model_builder .serve_settings .telemetry_opt_out = False
101
134
mock_model_builder .image_uri = MOCK_TGI_CONTAINER
135
+ mock_model_builder ._is_custom_image_uri = False
102
136
mock_model_builder .model = MOCK_HUGGINGFACE_ID
103
137
mock_model_builder .mode = Mode .LOCAL_CONTAINER
104
138
mock_model_builder .model_server = ModelServer .TGI
@@ -113,6 +147,7 @@ def test_capture_telemetry_decorator_tgi_success(self, mock_send_telemetry):
113
147
"&x-modelServer=6"
114
148
"&x-imageTag=huggingface-pytorch-inference:2.0.0-transformers4.28.1-cpu-py310-ubuntu20.04"
115
149
f"&x-sdkVersion={ SDK_VERSION } "
150
+ f"&x-defaultImageUsage={ ImageUriOption .DEFAULT_IMAGE .value } "
116
151
f"&x-modelName={ MOCK_HUGGINGFACE_ID } "
117
152
f"&x-endpointArn={ MOCK_ENDPOINT_ARN } "
118
153
f"&x-latency={ latency } "
@@ -127,6 +162,7 @@ def test_capture_telemetry_decorator_no_call_when_disabled(self, mock_send_telem
127
162
mock_model_builder = ModelBuilderMock ()
128
163
mock_model_builder .serve_settings .telemetry_opt_out = True
129
164
mock_model_builder .image_uri = MOCK_DJL_CONTAINER
165
+ mock_model_builder ._is_custom_image_uri = False
130
166
mock_model_builder .model = MOCK_HUGGINGFACE_ID
131
167
mock_model_builder .model_server = ModelServer .DJL_SERVING
132
168
@@ -139,6 +175,7 @@ def test_capture_telemetry_decorator_handle_exception_success(self, mock_send_te
139
175
mock_model_builder = ModelBuilderMock ()
140
176
mock_model_builder .serve_settings .telemetry_opt_out = False
141
177
mock_model_builder .image_uri = MOCK_DJL_CONTAINER
178
+ mock_model_builder ._is_custom_image_uri = False
142
179
mock_model_builder .model = MOCK_HUGGINGFACE_ID
143
180
mock_model_builder .mode = Mode .LOCAL_CONTAINER
144
181
mock_model_builder .model_server = ModelServer .DJL_SERVING
@@ -158,6 +195,7 @@ def test_capture_telemetry_decorator_handle_exception_success(self, mock_send_te
158
195
"&x-modelServer=4"
159
196
"&x-imageTag=djl-inference:0.25.0-deepspeed0.11.0-cu118"
160
197
f"&x-sdkVersion={ SDK_VERSION } "
198
+ f"&x-defaultImageUsage={ ImageUriOption .DEFAULT_IMAGE .value } "
161
199
f"&x-modelName={ MOCK_HUGGINGFACE_ID } "
162
200
f"&x-endpointArn={ MOCK_ENDPOINT_ARN } "
163
201
f"&x-latency={ latency } "
0 commit comments