Skip to content

Commit 3f95c12

Browse files
authored
style: whitespace
1 parent 82329ce commit 3f95c12

File tree

6 files changed

+125
-97
lines changed

6 files changed

+125
-97
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"). You
4+
# may not use this file except in compliance with the License. A copy of
5+
# the License is located at
6+
#
7+
# http://aws.amazon.com/apache2.0/
8+
#
9+
# or in the "license" file accompanying this file. This file is
10+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11+
# ANY KIND, either express or implied. See the License for the specific
12+
# language governing permissions and limitations under the License.
13+
14+
"""
15+
SageMaker Python SDK namespace package.
16+
"""
17+
18+
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"). You
4+
# may not use this file except in compliance with the License. A copy of
5+
# the License is located at
6+
#
7+
# http://aws.amazon.com/apache2.0/
8+
#
9+
# or in the "license" file accompanying this file. This file is
10+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11+
# ANY KIND, either express or implied. See the License for the specific
12+
# language governing permissions and limitations under the License.
13+
14+
"""
15+
Local SageMaker Serve development package.
16+
17+
This __init__.py file is intentionally minimal to avoid conflicts with the existing
18+
sagemaker.serve namespace from the V2 PyPI library that we still depend on.
19+
20+
For imports within this local package, use relative imports:
21+
- from .model import ModelBase, _Model, FrameworkModel, ModelPackage
22+
- from .model_builder import ModelBuilder
23+
24+
Do NOT import these classes in this __init__.py to avoid namespace conflicts.
25+
"""
26+
27+
from __future__ import absolute_import
28+
29+
# Intentionally empty - no imports to avoid conflicts with existing sagemaker.serve
30+
# Use relative imports within the package instead

sagemaker-serve/src/sagemaker/serve/model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@
5656
from sagemaker.serverless import ServerlessInferenceConfig
5757
from sagemaker.session import (get_add_model_package_inference_args,
5858
get_update_model_package_inference_args)
59-
from sagemaker_core.helper.session_helper import Session
6059
from sagemaker.transformer import Transformer
6160
from sagemaker.utils import (Tags, _resolve_routing_config, _validate_new_tags,
6261
format_tags, remove_tag_with_key,
@@ -68,6 +67,7 @@
6867
from sagemaker.workflow.entities import PipelineVariable
6968
from sagemaker.workflow.pipeline_context import (PipelineSession,
7069
runnable_by_pipeline)
70+
from sagemaker_core.helper.session_helper import Session
7171

7272
# Setting LOGGER for backward compatibility, in case users import it...
7373
logger = LOGGER = logging.getLogger("sagemaker")

sagemaker-serve/src/sagemaker/serve/model_builder.py

Lines changed: 63 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -15,116 +15,94 @@
1515

1616
import importlib.util
1717
import json
18-
import uuid
19-
from typing import Any, Type, List, Dict, Optional, Union
20-
from dataclasses import dataclass, field
2118
import logging
2219
import os
2320
import re
24-
21+
import uuid
22+
from dataclasses import dataclass, field
2523
from pathlib import Path
24+
from typing import Any, Dict, List, Optional, Type, Union
2625

2726
from botocore.exceptions import ClientError
28-
from sagemaker_core.main.resources import TrainingJob
29-
30-
from sagemaker.transformer import Transformer
27+
from sagemaker import Session
3128
from sagemaker.async_inference import AsyncInferenceConfig
32-
from sagemaker.batch_inference.batch_transform_inference_config import BatchTransformInferenceConfig
29+
from sagemaker.base_predictor import PredictorBase
30+
from sagemaker.batch_inference.batch_transform_inference_config import \
31+
BatchTransformInferenceConfig
3332
from sagemaker.compute_resource_requirements import ResourceRequirements
34-
from sagemaker.enums import Tag, EndpointType
33+
from sagemaker.deserializers import JSONDeserializer, TorchTensorDeserializer
34+
from sagemaker.enums import EndpointType, Tag
3535
from sagemaker.estimator import Estimator
36+
from sagemaker.huggingface.llm_utils import (
37+
download_huggingface_model_metadata, get_huggingface_model_metadata)
3638
from sagemaker.jumpstart.accessors import JumpStartS3PayloadAccessor
39+
from sagemaker.jumpstart.model import JumpStartModel
3740
from sagemaker.jumpstart.utils import get_jumpstart_content_bucket
38-
from sagemaker.s3 import S3Downloader
39-
from sagemaker import Session
4041
from sagemaker.model import Model
41-
from sagemaker.jumpstart.model import JumpStartModel
42-
from sagemaker.base_predictor import PredictorBase
42+
from sagemaker.modules import logger
43+
from sagemaker.modules.train import ModelTrainer
44+
from sagemaker.predictor import Predictor
45+
from sagemaker.s3 import S3Downloader
4346
from sagemaker.serializers import NumpySerializer, TorchTensorSerializer
44-
from sagemaker.deserializers import JSONDeserializer, TorchTensorDeserializer
47+
from sagemaker.serve.builder.djl_builder import DJL
48+
from sagemaker.serve.builder.jumpstart_builder import JumpStart
4549
from sagemaker.serve.builder.schema_builder import SchemaBuilder
46-
from sagemaker.serve.builder.tf_serving_builder import TensorflowServing
47-
from sagemaker.serve.mode.function_pointers import Mode
48-
from sagemaker.serve.mode.sagemaker_endpoint_mode import SageMakerEndpointMode
49-
from sagemaker.serve.mode.local_container_mode import LocalContainerMode
50-
from sagemaker.serve.mode.in_process_mode import InProcessMode
51-
from sagemaker.serve.detector.pickler import save_pkl, save_xgboost
5250
from sagemaker.serve.builder.serve_settings import _ServeSettings
53-
from sagemaker.serve.builder.djl_builder import DJL
5451
from sagemaker.serve.builder.tei_builder import TEI
52+
from sagemaker.serve.builder.tf_serving_builder import TensorflowServing
5553
from sagemaker.serve.builder.tgi_builder import TGI
56-
from sagemaker.serve.builder.jumpstart_builder import JumpStart
5754
from sagemaker.serve.builder.transformers_builder import Transformers
58-
from sagemaker.predictor import Predictor
55+
from sagemaker.serve.detector.image_detector import (
56+
_detect_framework_and_version, _get_model_base, auto_detect_container)
57+
from sagemaker.serve.detector.pickler import save_pkl, save_xgboost
58+
from sagemaker.serve.mode.function_pointers import Mode
59+
from sagemaker.serve.mode.in_process_mode import InProcessMode
60+
from sagemaker.serve.mode.local_container_mode import LocalContainerMode
61+
from sagemaker.serve.mode.sagemaker_endpoint_mode import SageMakerEndpointMode
5962
from sagemaker.serve.model_format.mlflow.constants import (
60-
MLFLOW_MODEL_PATH,
61-
MLFLOW_TRACKING_ARN,
62-
MLFLOW_RUN_ID_REGEX,
63-
MLFLOW_REGISTRY_PATH_REGEX,
64-
MODEL_PACKAGE_ARN_REGEX,
65-
MLFLOW_METADATA_FILE,
66-
MLFLOW_PIP_DEPENDENCY_FILE,
67-
)
63+
MLFLOW_METADATA_FILE, MLFLOW_MODEL_PATH, MLFLOW_PIP_DEPENDENCY_FILE,
64+
MLFLOW_REGISTRY_PATH_REGEX, MLFLOW_RUN_ID_REGEX, MLFLOW_TRACKING_ARN,
65+
MODEL_PACKAGE_ARN_REGEX)
6866
from sagemaker.serve.model_format.mlflow.utils import (
69-
_get_default_model_server_for_mlflow,
70-
_download_s3_artifacts,
71-
_select_container_for_mlflow_model,
72-
_generate_mlflow_artifact_path,
73-
_get_all_flavor_metadata,
74-
_get_deployment_flavor,
75-
_validate_input_for_mlflow,
76-
_copy_directory_contents,
77-
)
78-
from sagemaker.serve.save_retrive.version_1_0_0.metadata.metadata import Metadata
67+
_copy_directory_contents, _download_s3_artifacts,
68+
_generate_mlflow_artifact_path, _get_all_flavor_metadata,
69+
_get_default_model_server_for_mlflow, _get_deployment_flavor,
70+
_select_container_for_mlflow_model, _validate_input_for_mlflow)
71+
from sagemaker.serve.model_server.smd.prepare import prepare_for_smd
72+
from sagemaker.serve.model_server.torchserve.prepare import \
73+
prepare_for_torchserve
74+
from sagemaker.serve.model_server.triton.triton_builder import Triton
75+
from sagemaker.serve.save_retrive.version_1_0_0.metadata.metadata import (
76+
Metadata, get_metadata)
77+
from sagemaker.serve.save_retrive.version_1_0_0.save.save_handler import \
78+
SaveHandler
79+
from sagemaker.serve.spec.inference_base import (AsyncCustomOrchestrator,
80+
CustomOrchestrator)
7981
from sagemaker.serve.spec.inference_spec import InferenceSpec
80-
from sagemaker.serve.spec.inference_base import CustomOrchestrator, AsyncCustomOrchestrator
8182
from sagemaker.serve.utils import task
8283
from sagemaker.serve.utils.exceptions import TaskNotFoundException
83-
from sagemaker.serve.utils.lineage_utils import _maintain_lineage_tracking_for_mlflow_model
84-
from sagemaker.serve.utils.optimize_utils import (
85-
_generate_optimized_model,
86-
_generate_model_source,
87-
_extract_optimization_config_and_env,
88-
_is_s3_uri,
89-
_custom_speculative_decoding,
90-
_extract_speculative_draft_model_provider,
91-
_jumpstart_speculative_decoding,
92-
)
93-
from sagemaker.serve.utils.predictors import (
94-
_get_local_mode_predictor,
95-
_get_in_process_mode_predictor,
96-
)
9784
from sagemaker.serve.utils.hardware_detector import (
98-
_get_gpu_info,
99-
_get_gpu_info_fallback,
100-
_total_inference_model_size_mib,
101-
)
102-
from sagemaker.serve.detector.image_detector import (
103-
auto_detect_container,
104-
_detect_framework_and_version,
105-
_get_model_base,
106-
)
107-
from sagemaker.serve.model_server.torchserve.prepare import prepare_for_torchserve
108-
from sagemaker.serve.model_server.smd.prepare import prepare_for_smd
109-
from sagemaker.serve.model_server.triton.triton_builder import Triton
85+
_get_gpu_info, _get_gpu_info_fallback, _total_inference_model_size_mib)
86+
from sagemaker.serve.utils.lineage_utils import \
87+
_maintain_lineage_tracking_for_mlflow_model
88+
from sagemaker.serve.utils.optimize_utils import (
89+
_custom_speculative_decoding, _extract_optimization_config_and_env,
90+
_extract_speculative_draft_model_provider, _generate_model_source,
91+
_generate_optimized_model, _is_s3_uri, _jumpstart_speculative_decoding)
92+
from sagemaker.serve.utils.predictors import (_get_in_process_mode_predictor,
93+
_get_local_mode_predictor)
11094
from sagemaker.serve.utils.telemetry_logger import _capture_telemetry
111-
from sagemaker.serve.utils.types import ModelServer, ModelHub
95+
from sagemaker.serve.utils.types import ModelHub, ModelServer
96+
from sagemaker.serve.validations.check_image_and_hardware_type import \
97+
validate_image_uri_and_hardware
11298
from sagemaker.serve.validations.check_image_uri import is_1p_image_uri
113-
from sagemaker.serve.save_retrive.version_1_0_0.save.save_handler import SaveHandler
114-
from sagemaker.serve.save_retrive.version_1_0_0.metadata.metadata import get_metadata
115-
from sagemaker.serve.validations.check_image_and_hardware_type import (
116-
validate_image_uri_and_hardware,
117-
)
99+
from sagemaker.serve.validations.optimization import \
100+
_validate_optimization_configuration
118101
from sagemaker.serverless import ServerlessInferenceConfig
102+
from sagemaker.transformer import Transformer
119103
from sagemaker.utils import Tags, unique_name_from_base
120104
from sagemaker.workflow.entities import PipelineVariable
121-
from sagemaker.huggingface.llm_utils import (
122-
get_huggingface_model_metadata,
123-
download_huggingface_model_metadata,
124-
)
125-
from sagemaker.serve.validations.optimization import _validate_optimization_configuration
126-
from sagemaker.modules.train import ModelTrainer
127-
from sagemaker.modules import logger
105+
from sagemaker_core.main.resources import TrainingJob
128106

129107
# Any new server type should be added here
130108
supported_model_servers = {
@@ -1176,9 +1154,10 @@ def _get_smd_image_uri(self, processing_unit: str = None) -> str:
11761154
Returns:
11771155
str: SMD Inference Image URI.
11781156
"""
1179-
from sagemaker import image_uris
11801157
import sys
11811158

1159+
from sagemaker import image_uris
1160+
11821161
self.sagemaker_session = self.sagemaker_session or Session()
11831162
from packaging.version import Version
11841163

@@ -1469,7 +1448,8 @@ def _hf_schema_builder_init(self, model_task: str):
14691448
sample_inputs, sample_outputs = task.retrieve_local_schemas(model_task)
14701449
except ValueError:
14711450
# samples could not be loaded locally, try to fetch remote hf schema
1472-
from sagemaker_schema_inference_artifacts.huggingface import remote_schema_retriever
1451+
from sagemaker_schema_inference_artifacts.huggingface import \
1452+
remote_schema_retriever
14731453

14741454
if model_task in ("text-to-image", "automatic-speech-recognition"):
14751455
logger.warning(

sagemaker-serve/tests/unit/test_model.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
# Import the module directly with a different name to avoid conflicts
2424
import importlib.util
25+
2526
spec = importlib.util.spec_from_file_location(
2627
"local_model",
2728
_src_dir / "sagemaker" / "serve" / "model.py"

sagemaker-serve/tests/unit/test_model_builder.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,21 @@
1212
# language governing permissions and limitations under the License.
1313
from __future__ import absolute_import
1414

15-
from unittest.mock import MagicMock, patch, Mock, mock_open, ANY
16-
1715
import unittest
18-
from pathlib import Path
1916
from copy import deepcopy
17+
from pathlib import Path
18+
from unittest.mock import ANY, MagicMock, Mock, mock_open, patch
2019

2120
import deepdiff
2221
import pytest
22+
from sagemaker.async_inference.async_inference_config import \
23+
AsyncInferenceConfig
24+
from sagemaker.batch_inference.batch_transform_inference_config import \
25+
BatchTransformInferenceConfig
26+
from sagemaker.compute_resource_requirements.resource_requirements import \
27+
ResourceRequirements
2328
from sagemaker.enums import EndpointType
24-
25-
from sagemaker.async_inference.async_inference_config import AsyncInferenceConfig
26-
from sagemaker.batch_inference.batch_transform_inference_config import BatchTransformInferenceConfig
27-
28-
from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements
29-
30-
from sagemaker.serverless.serverless_inference_config import ServerlessInferenceConfig
31-
3229
from sagemaker.model import Model
33-
3430
from sagemaker.serve import SchemaBuilder
3531
from sagemaker.serve.builder.model_builder import ModelBuilder
3632
from sagemaker.serve.mode.function_pointers import Mode
@@ -39,7 +35,10 @@
3935
from sagemaker.serve.utils.exceptions import TaskNotFoundException
4036
from sagemaker.serve.utils.predictors import TensorflowServingLocalPredictor
4137
from sagemaker.serve.utils.types import ModelServer
42-
from sagemaker.serve.validations.optimization import _validate_optimization_configuration
38+
from sagemaker.serve.validations.optimization import \
39+
_validate_optimization_configuration
40+
from sagemaker.serverless.serverless_inference_config import \
41+
ServerlessInferenceConfig
4342

4443
schema_builder = MagicMock()
4544
mock_inference_spec = Mock()

0 commit comments

Comments
 (0)