@@ -154,6 +154,95 @@ def advanced_right_sized_model(sagemaker_session, cpu_instance_type):
154
154
)
155
155
156
156
157
+ @pytest .fixture (scope = "module" )
158
+ def default_right_sized_unregistered_model (sagemaker_session , cpu_instance_type ):
159
+ with timeout (minutes = 45 ):
160
+ try :
161
+ ir_job_name = unique_name_from_base ("test-ir-right-size-job-name" )
162
+ model_data = sagemaker_session .upload_data (path = IR_SKLEARN_MODEL )
163
+ payload_data = sagemaker_session .upload_data (path = IR_SKLEARN_PAYLOAD )
164
+
165
+ iam_client = sagemaker_session .boto_session .client ("iam" )
166
+ role_arn = iam_client .get_role (RoleName = "SageMakerRole" )["Role" ]["Arn" ]
167
+
168
+ sklearn_model = SKLearnModel (
169
+ model_data = model_data ,
170
+ role = role_arn ,
171
+ entry_point = IR_SKLEARN_ENTRY_POINT ,
172
+ framework_version = IR_SKLEARN_FRAMEWORK_VERSION ,
173
+ )
174
+
175
+ return (
176
+ sklearn_model .right_size (
177
+ job_name = ir_job_name ,
178
+ sample_payload_url = payload_data ,
179
+ supported_content_types = IR_SKLEARN_CONTENT_TYPE ,
180
+ supported_instance_types = [cpu_instance_type ],
181
+ framework = IR_SKLEARN_FRAMEWORK ,
182
+ log_level = "Quiet" ,
183
+ ),
184
+ ir_job_name ,
185
+ )
186
+ except Exception :
187
+ sagemaker_session .delete_model (
188
+ ModelName = sklearn_model .temp_model_name
189
+ )
190
+
191
+
192
+ @pytest .fixture (scope = "module" )
193
+ def advanced_right_sized_unregistered_model (sagemaker_session , cpu_instance_type ):
194
+ with timeout (minutes = 45 ):
195
+ try :
196
+ model_data = sagemaker_session .upload_data (path = IR_SKLEARN_MODEL )
197
+ payload_data = sagemaker_session .upload_data (path = IR_SKLEARN_PAYLOAD )
198
+
199
+ iam_client = sagemaker_session .boto_session .client ("iam" )
200
+ role_arn = iam_client .get_role (RoleName = "SageMakerRole" )["Role" ]["Arn" ]
201
+
202
+ sklearn_model = SKLearnModel (
203
+ model_data = model_data ,
204
+ role = role_arn ,
205
+ entry_point = IR_SKLEARN_ENTRY_POINT ,
206
+ framework_version = IR_SKLEARN_FRAMEWORK_VERSION ,
207
+ )
208
+
209
+ hyperparameter_ranges = [
210
+ {
211
+ "instance_types" : CategoricalParameter ([cpu_instance_type ]),
212
+ "TEST_PARAM" : CategoricalParameter (
213
+ ["TEST_PARAM_VALUE_1" , "TEST_PARAM_VALUE_2" ]
214
+ ),
215
+ }
216
+ ]
217
+
218
+ phases = [
219
+ Phase (duration_in_seconds = 300 , initial_number_of_users = 2 , spawn_rate = 2 ),
220
+ Phase (duration_in_seconds = 300 , initial_number_of_users = 14 , spawn_rate = 2 ),
221
+ ]
222
+
223
+ model_latency_thresholds = [
224
+ ModelLatencyThreshold (percentile = "P95" , value_in_milliseconds = 100 )
225
+ ]
226
+
227
+ return sklearn_model .right_size (
228
+ sample_payload_url = payload_data ,
229
+ supported_content_types = IR_SKLEARN_CONTENT_TYPE ,
230
+ framework = IR_SKLEARN_FRAMEWORK ,
231
+ job_duration_in_seconds = 3600 ,
232
+ hyperparameter_ranges = hyperparameter_ranges ,
233
+ phases = phases ,
234
+ model_latency_thresholds = model_latency_thresholds ,
235
+ max_invocations = 100 ,
236
+ max_tests = 5 ,
237
+ max_parallel_tests = 5 ,
238
+ log_level = "Quiet" ,
239
+ )
240
+
241
+ except Exception :
242
+ sagemaker_session .delete_model (
243
+ ModelName = sklearn_model .temp_model_name
244
+ )
245
+
157
246
@pytest .mark .slow_test
158
247
def test_default_right_size_and_deploy_registered_model_sklearn (
159
248
default_right_sized_model , sagemaker_session
@@ -175,6 +264,49 @@ def test_default_right_size_and_deploy_registered_model_sklearn(
175
264
predictor .delete_model ()
176
265
predictor .delete_endpoint ()
177
266
267
+ @pytest .mark .slow_test
268
+ def test_default_right_size_and_deploy_unregistered_model_sklearn (
269
+ default_right_sized_unregistered_model , sagemaker_session
270
+ ):
271
+ endpoint_name = unique_name_from_base ("test-ir-right-size-default-unregistered-sklearn" )
272
+
273
+ right_size_model , ir_job_name = default_right_sized_unregistered_model
274
+ with timeout (minutes = 45 ):
275
+ try :
276
+ right_size_model .predictor_cls = SKLearnPredictor
277
+ predictor = right_size_model .deploy (endpoint_name = endpoint_name )
278
+
279
+ payload = pd .read_csv (IR_SKLEARN_DATA , header = None )
280
+
281
+ inference = predictor .predict (payload )
282
+ assert inference is not None
283
+ assert 26 == len (inference )
284
+ finally :
285
+ predictor .delete_model ()
286
+ predictor .delete_endpoint ()
287
+
288
+ @pytest .mark .slow_test
289
+ def test_advanced_right_size_and_deploy_unregistered_model_sklearn (
290
+ advanced_right_sized_unregistered_model , sagemaker_session
291
+ ):
292
+ endpoint_name = unique_name_from_base ("test-ir-right-size-advanced-sklearn" )
293
+
294
+ right_size_model = advanced_right_sized_unregistered_model
295
+ with timeout (minutes = 45 ):
296
+ try :
297
+ right_size_model .predictor_cls = SKLearnPredictor
298
+ predictor = right_size_model .deploy (endpoint_name = endpoint_name )
299
+
300
+ payload = pd .read_csv (IR_SKLEARN_DATA , header = None )
301
+
302
+ inference = predictor .predict (payload )
303
+ assert inference is not None
304
+ assert 26 == len (inference )
305
+ finally :
306
+ predictor .delete_model ()
307
+ predictor .delete_endpoint ()
308
+
309
+
178
310
179
311
@pytest .mark .slow_test
180
312
def test_advanced_right_size_and_deploy_registered_model_sklearn (
0 commit comments