Skip to content

Commit 6e19e89

Browse files
author
Chuyang Deng
committed
fix: add v2 warning messages
1 parent eda0029 commit 6e19e89

18 files changed

+158
-8
lines changed

src/sagemaker/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"""Placeholder docstring"""
1414
from __future__ import absolute_import
1515

16+
import logging
1617
import importlib_metadata
1718

1819
from sagemaker import estimator, parameter, tuner # noqa: F401
@@ -61,3 +62,9 @@
6162
from sagemaker.automl.candidate_estimator import CandidateEstimator, CandidateStep # noqa: F401
6263

6364
__version__ = importlib_metadata.version("sagemaker")
65+
66+
logging.getLogger("sagemaker").warning(
67+
"SageMaker Python SDK v2 will no longer support Python 2. "
68+
"Please see https://github.com/aws/sagemaker-python-sdk/issues/1459 "
69+
"for more information"
70+
)

src/sagemaker/amazon/amazon_estimator.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,11 @@ def get_image_uri(region_name, repo_name, repo_version=1):
616616
repo_name:
617617
repo_version:
618618
"""
619+
logger.warning(
620+
"'get_image_uri' method will be deprecated in favor of 'ImageURIProvider' class "
621+
"in SageMaker Python SDK v2."
622+
)
623+
619624
if repo_name == "xgboost":
620625
if not _is_latest_xgboost_version(repo_version):
621626
logging.warning(

src/sagemaker/amazon/kmeans.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
"""Placeholder docstring"""
1414
from __future__ import absolute_import
1515

16+
import logging
17+
1618
from sagemaker.amazon.amazon_estimator import AmazonAlgorithmEstimatorBase, registry
1719
from sagemaker.amazon.common import numpy_to_record_serializer, record_deserializer
1820
from sagemaker.amazon.hyperparameter import Hyperparameter as hp # noqa
@@ -23,6 +25,9 @@
2325
from sagemaker.vpc_utils import VPC_CONFIG_DEFAULT
2426

2527

28+
logger = logging.getLogger("sagemaker")
29+
30+
2631
class KMeans(AmazonAlgorithmEstimatorBase):
2732
"""Placeholder docstring"""
2833

@@ -154,6 +159,12 @@ def __init__(
154159
self.center_factor = center_factor
155160
self.eval_metrics = eval_metrics
156161

162+
if eval_metrics is not None:
163+
logger.warning(
164+
"Parameter 'eval_metrics' hyperparameter will be deprecated for 1P estimators "
165+
"in SageMaker Python SDK v2."
166+
)
167+
157168
def create_model(self, vpc_config_override=VPC_CONFIG_DEFAULT, **kwargs):
158169
"""Return a :class:`~sagemaker.amazon.kmeans.KMeansModel` referencing
159170
the latest s3 model data produced by this Estimator.

src/sagemaker/amazon/randomcutforest.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
"""Placeholder docstring"""
1414
from __future__ import absolute_import
1515

16+
import logging
17+
1618
from sagemaker.amazon.amazon_estimator import AmazonAlgorithmEstimatorBase, registry
1719
from sagemaker.amazon.common import numpy_to_record_serializer, record_deserializer
1820
from sagemaker.amazon.hyperparameter import Hyperparameter as hp # noqa
@@ -23,6 +25,9 @@
2325
from sagemaker.vpc_utils import VPC_CONFIG_DEFAULT
2426

2527

28+
logger = logging.getLogger("sagemaker")
29+
30+
2631
class RandomCutForest(AmazonAlgorithmEstimatorBase):
2732
"""Placeholder docstring"""
2833

@@ -119,6 +124,12 @@ def __init__(
119124
self.num_trees = num_trees
120125
self.eval_metrics = eval_metrics
121126

127+
if eval_metrics is not None:
128+
logger.warning(
129+
"Parameter 'eval_metrics' hyperparameter will be deprecated for 1P estimators "
130+
"in SageMaker Python SDK v2."
131+
)
132+
122133
def create_model(self, vpc_config_override=VPC_CONFIG_DEFAULT, **kwargs):
123134
"""Return a :class:`~sagemaker.amazon.RandomCutForestModel` referencing
124135
the latest s3 model data produced by this Estimator.

src/sagemaker/estimator.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,6 +1273,9 @@ def __init__(
12731273
https://docs.aws.amazon.com/sagemaker/latest/dg/API_AlgorithmSpecification.html#SageMaker-Type-AlgorithmSpecification-EnableSageMakerMetricsTimeSeries
12741274
(default: ``None``).
12751275
"""
1276+
warnings.warn(
1277+
"Parameter 'image_name' will be renamed to 'image_uri' in SageMaker Python SDK v2."
1278+
)
12761279
self.image_name = image_name
12771280
self.hyperparam_dict = hyperparameters.copy() if hyperparameters else {}
12781281
super(Estimator, self).__init__(
@@ -1635,6 +1638,10 @@ def __init__(
16351638
self.container_log_level = container_log_level
16361639
self.code_location = code_location
16371640
self.image_name = image_name
1641+
if image_name is not None:
1642+
warnings.warn(
1643+
"Parameter 'image_name' will be renamed to 'image_uri' in SageMaker Python SDK v2."
1644+
)
16381645

16391646
self.uploaded_code = None
16401647

src/sagemaker/fw_utils.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@
3434
instantiated with positional or keyword arguments.
3535
"""
3636

37-
EMPTY_FRAMEWORK_VERSION_WARNING = "No framework_version specified, defaulting to version {}."
37+
EMPTY_FRAMEWORK_VERSION_WARNING = (
38+
"No framework_version specified, defaulting to version {}. "
39+
"framework_version will be required in SageMaker Python SDK v2."
40+
)
3841
LATER_FRAMEWORK_VERSION_WARNING = (
3942
"This is not the latest supported version. "
4043
"If you would like to use version {latest}, "
@@ -52,6 +55,10 @@
5255
"fully leverage all GPU cores; the parameter server will be configured to run "
5356
"only one worker per host regardless of the number of GPUs."
5457
)
58+
PARAMETER_V2_RENAME_WARNING = (
59+
"Parameter {v1_parameter_name} will be renamed to {v2_parameter_name} "
60+
"in SageMaker Python SDK v2."
61+
)
5562

5663

5764
EMPTY_FRAMEWORK_VERSION_ERROR = (
@@ -253,6 +260,11 @@ def create_image_uri(
253260
Returns:
254261
str: The appropriate image URI based on the given parameters.
255262
"""
263+
logger.warning(
264+
"'create_image_uri' will be deprecated in favor of 'ImageURIProvider' class "
265+
"in SageMaker Python SDK v2."
266+
)
267+
256268
optimized_families = optimized_families or []
257269

258270
if py_version and py_version not in VALID_PY_VERSIONS:
@@ -647,6 +659,17 @@ def python_deprecation_warning(framework, latest_supported_version):
647659
)
648660

649661

662+
def parameter_v2_rename_warning(v1_parameter_name, v2_parameter_name):
663+
"""
664+
Args:
665+
v1_parameter_name:
666+
v2_parameter_name:
667+
"""
668+
return PARAMETER_V2_RENAME_WARNING.format(
669+
v1_parameter_name=v1_parameter_name, v2_parameter_name=v2_parameter_name
670+
)
671+
672+
650673
def _region_supports_debugger(region_name):
651674
"""Returns boolean indicating whether the region supports Amazon SageMaker Debugger.
652675

src/sagemaker/inputs.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,13 @@
1313
"""Amazon SageMaker channel configurations for S3 data sources and file system data sources"""
1414
from __future__ import absolute_import, print_function
1515

16+
import logging
17+
1618
FILE_SYSTEM_TYPES = ["FSxLustre", "EFS"]
1719
FILE_SYSTEM_ACCESS_MODES = ["ro", "rw"]
1820

21+
logger = logging.getLogger("sagemaker")
22+
1923

2024
class s3_input(object):
2125
"""Amazon SageMaker channel configurations for S3 data sources.
@@ -76,6 +80,9 @@ def __init__(
7680
this channel. See the SageMaker API documentation for more info:
7781
https://docs.aws.amazon.com/sagemaker/latest/dg/API_ShuffleConfig.html
7882
"""
83+
logger.warning(
84+
"'s3_input' class will be renamed to 'TrainingInput' in SageMaker Python SDK v2."
85+
)
7986

8087
self.config = {
8188
"DataSource": {"S3DataSource": {"S3DataType": s3_data_type, "S3Uri": s3_data}}

src/sagemaker/model.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ def __init__(
108108
model_kms_key (str): KMS key ARN used to encrypt the repacked
109109
model archive file if the model is repacked
110110
"""
111+
LOGGER.warning(
112+
"Parameter 'image' will be renamed to 'image_uri' in SageMaker Python SDK v2."
113+
)
114+
111115
self.model_data = model_data
112116
self.image = image
113117
self.role = role

src/sagemaker/mxnet/estimator.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
framework_version_from_tag,
2222
empty_framework_version_warning,
2323
python_deprecation_warning,
24+
parameter_v2_rename_warning,
2425
is_version_equal_or_higher,
2526
warn_if_parameter_server_with_multi_gpu,
2627
)
@@ -128,6 +129,7 @@ def __init__(
128129
)
129130

130131
if distributions is not None:
132+
logger.warning(parameter_v2_rename_warning("distributions", "distribution"))
131133
train_instance_type = kwargs.get("train_instance_type")
132134
warn_if_parameter_server_with_multi_gpu(
133135
training_instance_type=train_instance_type, distributions=distributions

src/sagemaker/s3.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,27 @@
1313
"""This module contains Enums and helper methods related to S3."""
1414
from __future__ import print_function, absolute_import
1515

16+
import logging
1617
import os
1718

1819
from six.moves.urllib.parse import urlparse
1920
from sagemaker.session import Session
2021

22+
logger = logging.getLogger("sagemaker")
23+
24+
SESSION_V2_RENAME_MESSAGE = (
25+
"Parameter 'session' will be renamed to 'sagemaker_session' in SageMaker Python SDK v2."
26+
)
27+
28+
29+
def _session_v2_rename_warning(session):
30+
"""
31+
Args:
32+
session (sagemaker.session.Session):
33+
"""
34+
if session is not None:
35+
logger.warning(SESSION_V2_RENAME_MESSAGE)
36+
2137

2238
def parse_s3_url(url):
2339
"""Returns an (s3 bucket, key name/prefix) tuple from a url with an s3
@@ -54,6 +70,7 @@ def upload(local_path, desired_s3_uri, kms_key=None, session=None):
5470
The S3 uri of the uploaded file(s).
5571
5672
"""
73+
_session_v2_rename_warning(session)
5774
sagemaker_session = session or Session()
5875
bucket, key_prefix = parse_s3_url(url=desired_s3_uri)
5976
if kms_key is not None:
@@ -80,6 +97,7 @@ def upload_string_as_file_body(body, desired_s3_uri=None, kms_key=None, session=
8097
str: The S3 uri of the uploaded file(s).
8198
8299
"""
100+
_session_v2_rename_warning(session)
83101
sagemaker_session = session or Session()
84102
bucket, key = parse_s3_url(desired_s3_uri)
85103

@@ -107,6 +125,7 @@ def download(s3_uri, local_path, kms_key=None, session=None):
107125
using the default AWS configuration chain.
108126
109127
"""
128+
_session_v2_rename_warning(session)
110129
sagemaker_session = session or Session()
111130
bucket, key_prefix = parse_s3_url(url=s3_uri)
112131
if kms_key is not None:
@@ -131,6 +150,7 @@ def read_file(s3_uri, session=None):
131150
str: The body of the file.
132151
133152
"""
153+
_session_v2_rename_warning(session)
134154
sagemaker_session = session or Session()
135155
bucket, key_prefix = parse_s3_url(url=s3_uri)
136156

@@ -149,6 +169,7 @@ def list(s3_uri, session=None):
149169
[str]: The list of S3 URIs in the given S3 base uri.
150170
151171
"""
172+
_session_v2_rename_warning(session)
152173
sagemaker_session = session or Session()
153174
bucket, key_prefix = parse_s3_url(url=s3_uri)
154175

src/sagemaker/session.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,11 @@ def upload_data(self, path, bucket=None, key_prefix="data", extra_args=None):
181181
``s3://{bucket name}/{key_prefix}``.
182182
"""
183183
# Generate a tuple for each file that we want to upload of the form (local_path, s3_key).
184+
LOGGER.warning(
185+
"'upload_data' method will be deprecated in favor of 'S3Uploader' class "
186+
"in SageMaker Python SDK v2."
187+
)
188+
184189
files = []
185190
key_suffix = None
186191
if os.path.isdir(path):
@@ -230,6 +235,11 @@ def upload_string_as_file_body(self, body, bucket, key, kms_key=None):
230235
str: The S3 URI of the uploaded file.
231236
The URI format is: ``s3://{bucket name}/{key}``.
232237
"""
238+
LOGGER.warning(
239+
"'upload_string_as_file_body' method will be deprecated in favor of 'S3Uploader' class "
240+
"in SageMaker Python SDK v2."
241+
)
242+
233243
if self.s3_resource is None:
234244
s3 = self.boto_session.resource("s3", region_name=self.boto_region_name)
235245
else:
@@ -3311,6 +3321,11 @@ def get_execution_role(sagemaker_session=None):
33113321
Returns:
33123322
(str): The role ARN
33133323
"""
3324+
LOGGER.warning(
3325+
"'get_execution_role' will be renamed to 'notebook_execution_role' "
3326+
"in SageMaker Python SDK v2."
3327+
)
3328+
33143329
if not sagemaker_session:
33153330
sagemaker_session = Session()
33163331
arn = sagemaker_session.get_caller_identity_arn()

src/sagemaker/tensorflow/estimator.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ def __init__(
311311
)
312312

313313
if distributions is not None:
314+
logger.warning(fw.parameter_v2_rename_warning("distribution", distributions))
314315
train_instance_type = kwargs.get("train_instance_type")
315316
fw.warn_if_parameter_server_with_multi_gpu(
316317
training_instance_type=train_instance_type, distributions=distributions
@@ -385,7 +386,9 @@ def _validate_args(
385386

386387
if (not self._script_mode_enabled()) and self._only_script_mode_supported():
387388
logger.warning(
388-
"Legacy mode is deprecated in versions 1.13 and higher. Using script mode instead."
389+
"Legacy mode is deprecated in versions 1.13 and higher. Using script mode instead. "
390+
"Legacy mode and its training parameters will be deprecated in "
391+
"SageMaker Python SDK v2. Please use TF 1.13 or higher and script mode."
389392
)
390393
self.script_mode = True
391394

tests/unit/test_amazon_estimator.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,3 +486,12 @@ def test_is_latest_xgboost_version():
486486
assert _is_latest_xgboost_version("0.90-1-cpu-py3") is False
487487

488488
assert _is_latest_xgboost_version(XGBOOST_LATEST_VERSION) is True
489+
490+
491+
def test_get_image_uri_warn(caplog):
492+
warning_message = (
493+
"'get_image_uri' method will be deprecated in favor of 'ImageURIProvider' class "
494+
"in SageMaker Python SDK v2."
495+
)
496+
get_image_uri("us-west-2", "kmeans", "latest")
497+
assert warning_message in caplog.text

tests/unit/test_inputs.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from sagemaker.inputs import FileSystemInput
1919

2020

21-
def test_s3_input_all_defaults():
21+
def test_s3_input_all_defaults(caplog):
2222
prefix = "pre"
2323
actual = s3_input(s3_data=prefix)
2424
expected = {
@@ -32,6 +32,11 @@ def test_s3_input_all_defaults():
3232
}
3333
assert actual.config == expected
3434

35+
warning_message = (
36+
"'s3_input' class will be renamed to 'TrainingInput' in SageMaker Python SDK v2."
37+
)
38+
assert warning_message in caplog.text
39+
3540

3641
def test_s3_input_all_arguments():
3742
prefix = "pre"

tests/unit/test_kmeans.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def test_init_required_named(sagemaker_session):
8282
assert kmeans.k == ALL_REQ_ARGS["k"]
8383

8484

85-
def test_all_hyperparameters(sagemaker_session):
85+
def test_all_hyperparameters(sagemaker_session, caplog):
8686
kmeans = KMeans(
8787
sagemaker_session=sagemaker_session,
8888
init_method="random",
@@ -110,6 +110,12 @@ def test_all_hyperparameters(sagemaker_session):
110110
force_dense="True",
111111
)
112112

113+
warning_message = (
114+
"Parameter 'eval_metrics' hyperparameter will be deprecated for 1P estimators "
115+
"in SageMaker Python SDK v2."
116+
)
117+
assert warning_message in caplog.text
118+
113119

114120
def test_image(sagemaker_session):
115121
kmeans = KMeans(sagemaker_session=sagemaker_session, **ALL_REQ_ARGS)

0 commit comments

Comments
 (0)