Skip to content

Commit 58bb868

Browse files
authored
Merge branch 'master' into fix-log-message
2 parents 6e772df + 4b34fbd commit 58bb868

File tree

10 files changed

+57
-12
lines changed

10 files changed

+57
-12
lines changed

CHANGELOG.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ CHANGELOG
1212
* enhancement: Local Mode: support optional input channels
1313
* build: added pylint
1414
* build: upgrade docker-compose to 1.23
15+
* enhancement: Frameworks: update warning for not setting framework_version as we aren't planning a breaking change anymore
1516
* enhancement: Session: remove hardcoded 'training' from job status error message
1617

1718
1.14.1

src/sagemaker/chainer/estimator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def __init__(self, entry_point, use_mpi=None, num_processes=None, process_slots_
8282
**kwargs: Additional kwargs passed to the :class:`~sagemaker.estimator.Framework` constructor.
8383
"""
8484
if framework_version is None:
85-
logger.warning(empty_framework_version_warning(CHAINER_VERSION))
85+
logger.warning(empty_framework_version_warning(CHAINER_VERSION, CHAINER_VERSION))
8686
self.framework_version = framework_version or CHAINER_VERSION
8787

8888
super(Chainer, self).__init__(entry_point, source_dir, hyperparameters,

src/sagemaker/fw_utils.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
instantiated with positional or keyword arguments.
2727
"""
2828

29-
EMPTY_FRAMEWORK_VERSION_WARNING = 'In an upcoming version of the SageMaker Python SDK, ' \
30-
'framework_version will be required to create an estimator. ' \
31-
'Please add framework_version={} to your constructor to avoid ' \
32-
'an error in the future.'
29+
EMPTY_FRAMEWORK_VERSION_WARNING = 'No framework_version specified, defaulting to version {}.'
30+
LATER_FRAMEWORK_VERSION_WARNING = 'This is not the latest supported version. ' \
31+
'If you would like to use version {latest}, ' \
32+
'please add framework_version={latest} to your constructor.'
3333

3434
VALID_PY_VERSIONS = ['py2', 'py3']
3535

@@ -232,5 +232,8 @@ def model_code_key_prefix(code_location_key_prefix, model_name, image):
232232
return '/'.join(filter(None, [code_location_key_prefix, model_name or training_job_name]))
233233

234234

235-
def empty_framework_version_warning(default_version):
236-
return EMPTY_FRAMEWORK_VERSION_WARNING.format(default_version)
235+
def empty_framework_version_warning(default_version, latest_version):
236+
msgs = [EMPTY_FRAMEWORK_VERSION_WARNING.format(default_version)]
237+
if default_version != latest_version:
238+
msgs.append(LATER_FRAMEWORK_VERSION_WARNING.format(latest=latest_version))
239+
return ' '.join(msgs)

src/sagemaker/mxnet/estimator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class MXNet(Framework):
3131

3232
_LOWEST_SCRIPT_MODE_VERSION = ['1', '3']
3333
LAUNCH_PS_ENV_NAME = 'sagemaker_parameter_server_enabled'
34+
LATEST_VERSION = '1.3'
3435

3536
def __init__(self, entry_point, source_dir=None, hyperparameters=None, py_version='py2',
3637
framework_version=None, image_name=None, distributions=None, **kwargs):
@@ -72,7 +73,7 @@ def __init__(self, entry_point, source_dir=None, hyperparameters=None, py_versio
7273
**kwargs: Additional kwargs passed to the :class:`~sagemaker.estimator.Framework` constructor.
7374
"""
7475
if framework_version is None:
75-
logger.warning(empty_framework_version_warning(MXNET_VERSION))
76+
logger.warning(empty_framework_version_warning(MXNET_VERSION, self.LATEST_VERSION))
7677
self.framework_version = framework_version or MXNET_VERSION
7778

7879
super(MXNet, self).__init__(entry_point, source_dir, hyperparameters,

src/sagemaker/pytorch/estimator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def __init__(self, entry_point, source_dir=None, hyperparameters=None, py_versio
6767
**kwargs: Additional kwargs passed to the :class:`~sagemaker.estimator.Framework` constructor.
6868
"""
6969
if framework_version is None:
70-
logger.warning(empty_framework_version_warning(PYTORCH_VERSION))
70+
logger.warning(empty_framework_version_warning(PYTORCH_VERSION, PYTORCH_VERSION))
7171
self.framework_version = framework_version or PYTORCH_VERSION
7272

7373
super(PyTorch, self).__init__(entry_point, source_dir, hyperparameters, image_name=image_name, **kwargs)

src/sagemaker/tensorflow/estimator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@ class TensorFlow(Framework):
164164
__framework_name__ = 'tensorflow'
165165

166166
def __init__(self, training_steps=None, evaluation_steps=None, checkpoint_path=None,
167-
py_version='py2',
168-
framework_version=None, requirements_file='', image_name=None, **kwargs):
167+
py_version='py2', framework_version=None, requirements_file='', image_name=None,
168+
**kwargs):
169169
"""Initialize an ``TensorFlow`` estimator.
170170
Args:
171171
training_steps (int): Perform this many steps of training. `None`, the default means train forever.
@@ -188,7 +188,7 @@ def __init__(self, training_steps=None, evaluation_steps=None, checkpoint_path=N
188188
**kwargs: Additional kwargs passed to the Framework constructor.
189189
"""
190190
if framework_version is None:
191-
LOGGER.warning(empty_framework_version_warning(TF_VERSION))
191+
LOGGER.warning(empty_framework_version_warning(TF_VERSION, TF_VERSION))
192192
self.framework_version = framework_version or TF_VERSION
193193

194194
super(TensorFlow, self).__init__(image_name=image_name, **kwargs)

tests/unit/test_chainer.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,3 +459,13 @@ def test_attach_custom_image(sagemaker_session):
459459
estimator = Chainer.attach(training_job_name='neo', sagemaker_session=sagemaker_session)
460460
assert estimator.image_name == training_image
461461
assert estimator.train_image() == training_image
462+
463+
464+
@patch('sagemaker.chainer.estimator.empty_framework_version_warning')
465+
def test_empty_framework_version(warning, sagemaker_session):
466+
estimator = Chainer(entry_point=SCRIPT_PATH, role=ROLE, sagemaker_session=sagemaker_session,
467+
train_instance_count=INSTANCE_COUNT, train_instance_type=INSTANCE_TYPE,
468+
framework_version=None)
469+
470+
assert estimator.framework_version == defaults.CHAINER_VERSION
471+
warning.assert_called_with(defaults.CHAINER_VERSION, defaults.CHAINER_VERSION)

tests/unit/test_mxnet.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,3 +395,13 @@ def test_estimator_wrong_version_launch_parameter_server(sagemaker_session):
395395
train_instance_count=INSTANCE_COUNT, train_instance_type=INSTANCE_TYPE,
396396
distributions=LAUNCH_PS_DISTRIBUTIONS_DICT, framework_version='1.2.1')
397397
assert 'The distributions option is valid for only versions 1.3 and higher' in str(e)
398+
399+
400+
@patch('sagemaker.mxnet.estimator.empty_framework_version_warning')
401+
def test_empty_framework_version(warning, sagemaker_session):
402+
mx = MXNet(entry_point=SCRIPT_PATH, role=ROLE, sagemaker_session=sagemaker_session,
403+
train_instance_count=INSTANCE_COUNT, train_instance_type=INSTANCE_TYPE,
404+
framework_version=None)
405+
406+
assert mx.framework_version == defaults.MXNET_VERSION
407+
warning.assert_called_with(defaults.MXNET_VERSION, mx.LATEST_VERSION)

tests/unit/test_pytorch.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,3 +362,13 @@ def test_attach_custom_image(sagemaker_session):
362362
assert estimator.latest_training_job.job_name == 'neo'
363363
assert estimator.image_name == training_image
364364
assert estimator.train_image() == training_image
365+
366+
367+
@patch('sagemaker.pytorch.estimator.empty_framework_version_warning')
368+
def test_empty_framework_version(warning, sagemaker_session):
369+
estimator = PyTorch(entry_point=SCRIPT_PATH, role=ROLE, sagemaker_session=sagemaker_session,
370+
train_instance_count=INSTANCE_COUNT, train_instance_type=INSTANCE_TYPE,
371+
framework_version=None)
372+
373+
assert estimator.framework_version == defaults.PYTORCH_VERSION
374+
warning.assert_called_with(defaults.PYTORCH_VERSION, defaults.PYTORCH_VERSION)

tests/unit/test_tf_estimator.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,3 +634,13 @@ def test_attach_custom_image(sagemaker_session):
634634
estimator = TensorFlow.attach(training_job_name='neo', sagemaker_session=sagemaker_session)
635635
assert estimator.image_name == training_image
636636
assert estimator.train_image() == training_image
637+
638+
639+
@patch('sagemaker.tensorflow.estimator.empty_framework_version_warning')
640+
def test_empty_framework_version(warning, sagemaker_session):
641+
estimator = TensorFlow(entry_point=SCRIPT_PATH, role=ROLE, sagemaker_session=sagemaker_session,
642+
train_instance_count=INSTANCE_COUNT, train_instance_type=INSTANCE_TYPE,
643+
framework_version=None)
644+
645+
assert estimator.framework_version == defaults.TF_VERSION
646+
warning.assert_called_with(defaults.TF_VERSION, defaults.TF_VERSION)

0 commit comments

Comments
 (0)