@@ -319,7 +319,7 @@ def setUp(self):
319319 @patch ('sagemaker.core.jumpstart.factory.utils.get_init_kwargs' )
320320 @patch ('sagemaker.serve.model_builder.ModelBuilder._prepare_for_mode' )
321321 def test_build_for_jumpstart_unsupported_image_raises (self , mock_prepare , mock_get_kwargs ):
322- """Test that unsupported JumpStart image raises error."""
322+ """Test that unsupported JumpStart image in LOCAL_CONTAINER mode raises error."""
323323 mock_init_kwargs = Mock ()
324324 mock_init_kwargs .image_uri = "unsupported-image:latest"
325325 mock_init_kwargs .env = {}
@@ -329,27 +329,58 @@ def test_build_for_jumpstart_unsupported_image_raises(self, mock_prepare, mock_g
329329 model = "some-model-id" ,
330330 role_arn = MOCK_ROLE_ARN ,
331331 sagemaker_session = self .mock_session ,
332- mode = Mode .SAGEMAKER_ENDPOINT
332+ mode = Mode .LOCAL_CONTAINER
333333 )
334334 builder ._optimizing = False
335335
336336 with self .assertRaises (ValueError ) as context :
337337 builder ._build_for_jumpstart ()
338338
339- self .assertIn ("Unsupported JumpStart image URI" , str (context .exception ))
339+ self .assertIn ("Local container mode is not yet supported" , str (context .exception ))
340+ self .assertIn ("Mode.SAGEMAKER_ENDPOINT" , str (context .exception ))
341+
342+ @patch ('sagemaker.core.jumpstart.factory.utils.get_init_kwargs' )
343+ @patch ('sagemaker.serve.model_builder.ModelBuilder._create_model' )
344+ @patch ('sagemaker.serve.model_builder.ModelBuilder._prepare_for_mode' )
345+ def test_build_for_jumpstart_unknown_image_endpoint_uses_default (self , mock_prepare , mock_create , mock_get_kwargs ):
346+ """Test that unknown image in endpoint mode passes through without error."""
347+ mock_init_kwargs = Mock ()
348+ mock_init_kwargs .image_uri = "763104351884.dkr.ecr.us-east-1.amazonaws.com/vllm:0.17-gpu-py312-cu129-ubuntu22.04-sagemaker-v1"
349+ mock_init_kwargs .env = {}
350+ mock_init_kwargs .model_data = "s3://jumpstart-cache/models/vllm/model.tar.gz"
351+ mock_get_kwargs .return_value = mock_init_kwargs
352+
353+ mock_model = Mock (spec = Model )
354+ mock_create .return_value = mock_model
355+
356+ builder = ModelBuilder (
357+ model = "huggingface-vlm-qwen3-5-4b" ,
358+ role_arn = MOCK_ROLE_ARN ,
359+ sagemaker_session = self .mock_session ,
360+ mode = Mode .SAGEMAKER_ENDPOINT
361+ )
362+ builder ._optimizing = False
363+
364+ result = builder ._build_for_jumpstart ()
365+
366+ self .assertEqual (result , mock_model )
367+ self .assertIsNone (builder .model_server )
368+ self .assertEqual (builder .s3_upload_path , "s3://jumpstart-cache/models/vllm/model.tar.gz" )
369+ mock_create .assert_called_once ()
340370
341371 @patch ('sagemaker.core.jumpstart.factory.utils.get_init_kwargs' )
342- @patch ('sagemaker.serve.model_builder.ModelBuilder._build_for_djl_jumpstart ' )
372+ @patch ('sagemaker.serve.model_builder.ModelBuilder._create_model ' )
343373 @patch ('sagemaker.serve.model_builder.ModelBuilder._prepare_for_mode' )
344- def test_build_for_jumpstart_routes_to_djl (self , mock_prepare , mock_build_djl , mock_get_kwargs ):
374+ def test_build_for_jumpstart_routes_to_djl (self , mock_prepare , mock_create , mock_get_kwargs ):
345375 """Test JumpStart routing to DJL builder."""
346376 mock_init_kwargs = Mock ()
347377 mock_init_kwargs .image_uri = "763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.21.0-deepspeed0.8.0-cu117"
348378 mock_init_kwargs .env = {}
379+ mock_init_kwargs .model_data = "s3://jumpstart-cache/models/djl/model.tar.gz"
349380 mock_get_kwargs .return_value = mock_init_kwargs
350381
351382 mock_model = Mock (spec = Model )
352- mock_build_djl .return_value = mock_model
383+ mock_create .return_value = mock_model
353384
354385 builder = ModelBuilder (
355386 model = "huggingface-llm-falcon-7b" ,
@@ -363,20 +394,21 @@ def test_build_for_jumpstart_routes_to_djl(self, mock_prepare, mock_build_djl, m
363394
364395 self .assertEqual (result , mock_model )
365396 self .assertEqual (builder .model_server , ModelServer .DJL_SERVING )
366- mock_build_djl .assert_called_once ()
397+ mock_create .assert_called_once ()
367398
368399 @patch ('sagemaker.core.jumpstart.factory.utils.get_init_kwargs' )
369- @patch ('sagemaker.serve.model_builder.ModelBuilder._build_for_djl_jumpstart ' )
400+ @patch ('sagemaker.serve.model_builder.ModelBuilder._create_model ' )
370401 @patch ('sagemaker.serve.model_builder.ModelBuilder._prepare_for_mode' )
371- def test_build_for_jumpstart_passes_config_name (self , mock_prepare , mock_build_djl , mock_get_kwargs ):
402+ def test_build_for_jumpstart_passes_config_name (self , mock_prepare , mock_create , mock_get_kwargs ):
372403 """Test that config_name is forwarded to get_init_kwargs."""
373404 mock_init_kwargs = Mock ()
374405 mock_init_kwargs .image_uri = "763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:0.21.0-deepspeed0.8.0-cu117"
375406 mock_init_kwargs .env = {}
407+ mock_init_kwargs .model_data = "s3://jumpstart-cache/models/djl/model.tar.gz"
376408 mock_get_kwargs .return_value = mock_init_kwargs
377409
378410 mock_model = Mock (spec = Model )
379- mock_build_djl .return_value = mock_model
411+ mock_create .return_value = mock_model
380412
381413 builder = ModelBuilder (
382414 model = "meta-textgeneration-llama-3-3-70b-instruct" ,
@@ -394,17 +426,18 @@ def test_build_for_jumpstart_passes_config_name(self, mock_prepare, mock_build_d
394426 self .assertEqual (call_kwargs .kwargs .get ("config_name" ) or call_kwargs [1 ].get ("config_name" ), "lmi-optimized" )
395427
396428 @patch ('sagemaker.core.jumpstart.factory.utils.get_init_kwargs' )
397- @patch ('sagemaker.serve.model_builder.ModelBuilder._build_for_tgi_jumpstart ' )
429+ @patch ('sagemaker.serve.model_builder.ModelBuilder._create_model ' )
398430 @patch ('sagemaker.serve.model_builder.ModelBuilder._prepare_for_mode' )
399- def test_build_for_jumpstart_routes_to_tgi (self , mock_prepare , mock_build_tgi , mock_get_kwargs ):
431+ def test_build_for_jumpstart_routes_to_tgi (self , mock_prepare , mock_create , mock_get_kwargs ):
400432 """Test JumpStart routing to TGI builder."""
401433 mock_init_kwargs = Mock ()
402434 mock_init_kwargs .image_uri = "763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-tgi-inference:2.0.1-tgi0.9.3-gpu-py39-cu118-ubuntu20.04"
403435 mock_init_kwargs .env = {}
436+ mock_init_kwargs .model_data = "s3://jumpstart-cache/models/tgi/model.tar.gz"
404437 mock_get_kwargs .return_value = mock_init_kwargs
405438
406439 mock_model = Mock (spec = Model )
407- mock_build_tgi .return_value = mock_model
440+ mock_create .return_value = mock_model
408441
409442 builder = ModelBuilder (
410443 model = "huggingface-llm-mistral-7b" ,
@@ -418,20 +451,21 @@ def test_build_for_jumpstart_routes_to_tgi(self, mock_prepare, mock_build_tgi, m
418451
419452 self .assertEqual (result , mock_model )
420453 self .assertEqual (builder .model_server , ModelServer .TGI )
421- mock_build_tgi .assert_called_once ()
454+ mock_create .assert_called_once ()
422455
423456 @patch ('sagemaker.core.jumpstart.factory.utils.get_init_kwargs' )
424- @patch ('sagemaker.serve.model_builder.ModelBuilder._build_for_mms_jumpstart ' )
457+ @patch ('sagemaker.serve.model_builder.ModelBuilder._create_model ' )
425458 @patch ('sagemaker.serve.model_builder.ModelBuilder._prepare_for_mode' )
426- def test_build_for_jumpstart_routes_to_mms (self , mock_prepare , mock_build_mms , mock_get_kwargs ):
459+ def test_build_for_jumpstart_routes_to_mms (self , mock_prepare , mock_create , mock_get_kwargs ):
427460 """Test JumpStart routing to MMS builder."""
428461 mock_init_kwargs = Mock ()
429462 mock_init_kwargs .image_uri = "763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-inference:1.13.1-transformers4.26.0-gpu-py39-cu117-ubuntu20.04"
430463 mock_init_kwargs .env = {}
464+ mock_init_kwargs .model_data = "s3://jumpstart-cache/models/mms/model.tar.gz"
431465 mock_get_kwargs .return_value = mock_init_kwargs
432466
433467 mock_model = Mock (spec = Model )
434- mock_build_mms .return_value = mock_model
468+ mock_create .return_value = mock_model
435469
436470 builder = ModelBuilder (
437471 model = "pytorch-ic-mobilenet-v2" ,
@@ -445,7 +479,7 @@ def test_build_for_jumpstart_routes_to_mms(self, mock_prepare, mock_build_mms, m
445479
446480 self .assertEqual (result , mock_model )
447481 self .assertEqual (builder .model_server , ModelServer .MMS )
448- mock_build_mms .assert_called_once ()
482+ mock_create .assert_called_once ()
449483
450484
451485class TestDeployWrappers (unittest .TestCase ):
0 commit comments