12
12
# language governing permissions and limitations under the License.
13
13
from __future__ import absolute_import
14
14
15
- from pathlib import PosixPath
16
- import platform
17
15
from unittest import TestCase
18
16
from unittest .mock import Mock , patch
19
17
20
- import numpy as np
21
-
22
18
from sagemaker .serve .model_server .multi_model_server .prepare import _create_dir_structure
23
19
24
- from sagemaker .serve .model_server .multi_model_server .server import (
25
- LocalMultiModelServer ,
26
- )
27
-
28
- CPU_TF_IMAGE = "763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-inference:2.0.0-transformers4.28.1-cpu-py310-ubuntu20.04"
29
- MODEL_PATH = "model_path"
30
- MODEL_REPO = f"{ MODEL_PATH } /1"
31
- ENV_VAR = {"KEY" : "VALUE" }
32
- PAYLOAD = np .random .rand (3 , 4 ).astype (dtype = np .float32 )
33
- DTYPE = "TYPE_FP32"
34
- SECRET_KEY = "secret_key"
35
- INFER_RESPONSE = {"outputs" : [{"name" : "output_name" }]}
36
-
37
20
38
21
class MultiModelServerPrepareTests (TestCase ):
39
- def test_start_invoke_destroy_local_multi_model_server (self ):
40
- mock_container = Mock ()
41
- mock_docker_client = Mock ()
42
- mock_docker_client .containers .run .return_value = mock_container
43
-
44
- local_multi_model_server = LocalMultiModelServer ()
45
- mock_schema_builder = Mock ()
46
- mock_schema_builder .input_serializer .serialize .return_value = PAYLOAD
47
- local_multi_model_server .schema_builder = mock_schema_builder
48
-
49
- local_multi_model_server ._start_serving (
50
- client = mock_docker_client ,
51
- model_path = MODEL_PATH ,
52
- secret_key = SECRET_KEY ,
53
- env_vars = ENV_VAR ,
54
- image = CPU_TF_IMAGE ,
55
- )
56
-
57
- mock_docker_client .containers .run .assert_called_once_with (
58
- CPU_TF_IMAGE ,
59
- "serve" ,
60
- detach = True ,
61
- auto_remove = True ,
62
- network_mode = "host" ,
63
- volumes = {PosixPath ("model_path" ): {"bind" : "/opt/ml/model" , "mode" : "rw" }},
64
- environment = {
65
- "SAGEMAKER_SUBMIT_DIRECTORY" : "/opt/ml/model/code" ,
66
- "SAGEMAKER_PROGRAM" : "inference.py" ,
67
- "SAGEMAKER_SERVE_SECRET_KEY" : "secret_key" ,
68
- "LOCAL_PYTHON" : platform .python_version (),
69
- "KEY" : "VALUE" ,
70
- },
71
- )
72
-
73
22
@patch ("sagemaker.serve.model_server.multi_model_server.prepare._check_disk_space" )
74
23
@patch ("sagemaker.serve.model_server.multi_model_server.prepare._check_docker_disk_usage" )
75
24
@patch ("sagemaker.serve.model_server.multi_model_server.prepare.Path" )
@@ -102,3 +51,4 @@ def test_create_dir_structure_invalid_path(self, mock_path):
102
51
_create_dir_structure (mock_model_path )
103
52
104
53
self .assertEquals ("model_dir is not a valid directory" , str (context .exception ))
54
+
0 commit comments