From a32893ba49e2e505b697e9e129a8393d67238149 Mon Sep 17 00:00:00 2001 From: Deng Date: Wed, 4 Mar 2020 15:16:58 -0800 Subject: [PATCH 01/10] feature: pytorch 1.3.1 eia --- src/sagemaker/fw_utils.py | 13 ++++++++- src/sagemaker/pytorch/README.rst | 2 ++ tests/data/pytorch_eia/mnist.py | 13 +++++++++ tests/data/pytorch_eia/model_mnist.tar.gz | Bin 0 -> 131616 bytes tests/integ/test_pytorch_train.py | 33 ++++++++++++++++++++++ tests/unit/test_fw_utils.py | 31 ++++++++++++++++++++ tests/unit/test_pytorch.py | 4 +-- 7 files changed, 93 insertions(+), 3 deletions(-) create mode 100644 tests/data/pytorch_eia/mnist.py create mode 100644 tests/data/pytorch_eia/model_mnist.tar.gz diff --git a/src/sagemaker/fw_utils.py b/src/sagemaker/fw_utils.py index e43d8a59ed..04dca6fe84 100644 --- a/src/sagemaker/fw_utils.py +++ b/src/sagemaker/fw_utils.py @@ -53,7 +53,14 @@ ) VALID_PY_VERSIONS = ["py2", "py3"] -VALID_EIA_FRAMEWORKS = ["tensorflow", "tensorflow-serving", "mxnet", "mxnet-serving"] +VALID_EIA_FRAMEWORKS = [ + "tensorflow", + "tensorflow-serving", + "mxnet", + "mxnet-serving", + "pytorch", + "pytorch-serving", +] VALID_ACCOUNTS_BY_REGION = {"us-gov-west-1": "246785580436", "us-iso-east-1": "744548109606"} ASIMOV_VALID_ACCOUNTS_BY_REGION = {"us-iso-east-1": "886529160074"} OPT_IN_ACCOUNTS_BY_REGION = {"ap-east-1": "057415533634", "me-south-1": "724002660598"} @@ -71,6 +78,7 @@ "mxnet-serving-eia": "mxnet-inference-eia", "pytorch": "pytorch-training", "pytorch-serving": "pytorch-inference", + "pytorch-serving-eia": "pytorch-inference-eia", } MERGED_FRAMEWORKS_LOWEST_VERSIONS = { @@ -82,6 +90,7 @@ "mxnet-serving-eia": [1, 4, 1], "pytorch": [1, 2, 0], "pytorch-serving": [1, 2, 0], + "pytorch-serving-eia": {"py3": [1, 3, 1]}, } DEBUGGER_UNSUPPORTED_REGIONS = ["us-gov-west-1", "us-iso-east-1"] @@ -117,6 +126,8 @@ def _is_dlc_version(framework, framework_version, py_version): """ lowest_version_list = MERGED_FRAMEWORKS_LOWEST_VERSIONS.get(framework) if isinstance(lowest_version_list, dict): + if py_version not in lowest_version_list: + raise ValueError("{} is not supported in {}.".format(framework, py_version)) lowest_version_list = lowest_version_list[py_version] if lowest_version_list: diff --git a/src/sagemaker/pytorch/README.rst b/src/sagemaker/pytorch/README.rst index 0122a2dd3c..73dfe5a6eb 100644 --- a/src/sagemaker/pytorch/README.rst +++ b/src/sagemaker/pytorch/README.rst @@ -6,6 +6,8 @@ With PyTorch Estimators and Models, you can train and host PyTorch models on Ama Supported versions of PyTorch: ``0.4.0``, ``1.0.0``, ``1.1.0``, ``1.2.0``, ``1.3.1``, ``1.4.0``. +Supported versions of TensorFlow for Elastic Inference: ``1.3.1``. + We recommend that you use the latest supported version, because that's where we focus most of our development efforts. You can visit the PyTorch repository at https://github.com/pytorch/pytorch. diff --git a/tests/data/pytorch_eia/mnist.py b/tests/data/pytorch_eia/mnist.py new file mode 100644 index 0000000000..7925955718 --- /dev/null +++ b/tests/data/pytorch_eia/mnist.py @@ -0,0 +1,13 @@ +# Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +# This file is intentionally left blank to invoke default model_fn and predict_fn diff --git a/tests/data/pytorch_eia/model_mnist.tar.gz b/tests/data/pytorch_eia/model_mnist.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..b42d7bc89ec07f38f77ba3f8a6b78b4ea74455aa GIT binary patch literal 131616 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 z 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

9*_eZqSxV&XpVL*MkppnGM2 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 mqIm%wzdIqh#WJdQp(r97!EVfwOfDX47 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 Date: Wed, 4 Mar 2020 15:20:43 -0800 Subject: [PATCH 02/10] update pytorch unit test --- tests/unit/test_pytorch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/test_pytorch.py b/tests/unit/test_pytorch.py index 0e1d977898..c7c9a69d87 100644 --- a/tests/unit/test_pytorch.py +++ b/tests/unit/test_pytorch.py @@ -348,7 +348,7 @@ def test_model_image_accelerator(sagemaker_session): model = PyTorchModel( MODEL_DATA, role=ROLE, entry_point=SCRIPT_PATH, sagemaker_session=sagemaker_session ) - predictor = model.deploy(1, CPU) + predictor = model.deploy(1, CPU, accelerator_type=ACCELERATOR_TYPE) assert isinstance(predictor, PyTorchPredictor) From acb6c5d2aac5bbc9843d7a2dd059237da7a2ed87 Mon Sep 17 00:00:00 2001 From: Deng Date: Wed, 4 Mar 2020 15:26:22 -0800 Subject: [PATCH 03/10] update doc --- README.rst | 6 ++++-- src/sagemaker/pytorch/model.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 2d29592b3a..15ca25e7fd 100644 --- a/README.rst +++ b/README.rst @@ -176,7 +176,7 @@ TensorFlow SageMaker Estimators By using TensorFlow SageMaker Estimators, you can train and host TensorFlow models on Amazon SageMaker. -Supported versions of TensorFlow: ``1.4.1``, ``1.5.0``, ``1.6.0``, ``1.7.0``, ``1.8.0``, ``1.9.0``, ``1.10.0``, ``1.11.0``, ``1.12.0``, ``1.13.1``, ``1.14.0``, ``1.15.0``, ``2.0.0``. +Supported versions of TensorFlow: ``1.4.1``, ``1.5.0``, ``1.6.0``, ``1.7.0``, ``1.8.0``, ``1.9.0``, ``1.10.0``, ``1.11.0``, ``1.12.0``, ``1.13.1``, ``1.14.0``, ``1.15.0``, ``1.15.2``, ``2.0.0``, ``2.0.1``, ``2.1.0``. Supported versions of TensorFlow for Elastic Inference: ``1.11.0``, ``1.12.0``, ``1.13.1``, ``1.14.0``. @@ -208,7 +208,9 @@ PyTorch SageMaker Estimators With PyTorch SageMaker Estimators, you can train and host PyTorch models on Amazon SageMaker. -Supported versions of PyTorch: ``0.4.0``, ``1.0.0``, ``1.1.0``, ``1.2.0``, ``1.3.1``. +Supported versions of PyTorch: ``0.4.0``, ``1.0.0``, ``1.1.0``, ``1.2.0``, ``1.3.1``, ``1.4.0``. + +Supported versions of TensorFlow for Elastic Inference: ``1.3.1``. We recommend that you use the latest supported version, because that's where we focus most of our development efforts. diff --git a/src/sagemaker/pytorch/model.py b/src/sagemaker/pytorch/model.py index 89177fb67c..8fc9cd2d30 100644 --- a/src/sagemaker/pytorch/model.py +++ b/src/sagemaker/pytorch/model.py @@ -169,7 +169,7 @@ def serving_image_uri(self, region_name, instance_type, accelerator_type=None): (cpu/gpu/family-specific optimized). accelerator_type (str): The Elastic Inference accelerator type to deploy to the instance for loading and making inferences to the - model. Currently unsupported with PyTorch. + model. Currently supported with PyTorch 1.3.1 Python 3. Returns: str: The appropriate image URI based on the given parameters. From e847e693c0d03f5623649883da9c56916d768f7c Mon Sep 17 00:00:00 2001 From: Deng Date: Wed, 4 Mar 2020 15:55:57 -0800 Subject: [PATCH 04/10] fix black erroe --- tests/integ/test_pytorch_train.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/integ/test_pytorch_train.py b/tests/integ/test_pytorch_train.py index 377c805484..ef6c8c7e1b 100644 --- a/tests/integ/test_pytorch_train.py +++ b/tests/integ/test_pytorch_train.py @@ -119,10 +119,7 @@ def test_deploy_model(pytorch_training_job, sagemaker_session, cpu_instance_type assert output.shape == (batch_size, 10) -@pytest.mark.skipif( - PYTHON_VERSION == "py2", - reason="PyTorch EIA does not support Python 2.", -) +@pytest.mark.skipif(PYTHON_VERSION == "py2", reason="PyTorch EIA does not support Python 2.") def test_deploy_model_with_accelerator(sagemaker_session, cpu_instance_type): endpoint_name = "test-pytorch-deploy-eia-{}".format(sagemaker_timestamp()) model_data = sagemaker_session.upload_data(path=EIA_MODEL) From 88ea0035d4273140cfef3d34dc14b87e8194ee28 Mon Sep 17 00:00:00 2001 From: Deng Date: Thu, 5 Mar 2020 11:29:16 -0800 Subject: [PATCH 05/10] update docstring --- src/sagemaker/pytorch/model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sagemaker/pytorch/model.py b/src/sagemaker/pytorch/model.py index 8fc9cd2d30..cdc5543000 100644 --- a/src/sagemaker/pytorch/model.py +++ b/src/sagemaker/pytorch/model.py @@ -136,7 +136,7 @@ def prepare_container_def(self, instance_type, accelerator_type=None): For example, 'ml.p2.xlarge'. accelerator_type (str): The Elastic Inference accelerator type to deploy to the instance for loading and making inferences to the - model. Currently unsupported with PyTorch. + model. Currently supported with PyTorch 1.3.1 Python 3. Returns: dict[str, str]: A container definition object usable with the From adbf8dbb9f29ee968bb8a8f819dad20545736ea5 Mon Sep 17 00:00:00 2001 From: Deng Date: Thu, 5 Mar 2020 12:01:29 -0800 Subject: [PATCH 06/10] add readthedocs example --- README.rst | 2 +- doc/using_pytorch.rst | 15 +++++++++++++++ src/sagemaker/pytorch/README.rst | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 15ca25e7fd..3c3ad85a72 100644 --- a/README.rst +++ b/README.rst @@ -210,7 +210,7 @@ With PyTorch SageMaker Estimators, you can train and host PyTorch models on Amaz Supported versions of PyTorch: ``0.4.0``, ``1.0.0``, ``1.1.0``, ``1.2.0``, ``1.3.1``, ``1.4.0``. -Supported versions of TensorFlow for Elastic Inference: ``1.3.1``. +Supported versions of PyTorch for Elastic Inference: ``1.3.1``. We recommend that you use the latest supported version, because that's where we focus most of our development efforts. diff --git a/doc/using_pytorch.rst b/doc/using_pytorch.rst index 2eda812ae0..dd5474569b 100644 --- a/doc/using_pytorch.rst +++ b/doc/using_pytorch.rst @@ -6,6 +6,8 @@ With PyTorch Estimators and Models, you can train and host PyTorch models on Ama Supported versions of PyTorch: ``0.4.0``, ``1.0.0``, ``1.1.0``, ``1.2.0``, ``1.3.1``. +Supported versions of PyTorch for Elastic Inference: ``1.3.1``. + We recommend that you use the latest supported version, because that's where we focus most of our development efforts. You can visit the PyTorch repository at https://github.com/pytorch/pytorch. @@ -250,6 +252,14 @@ You use the SageMaker PyTorch model server to host your PyTorch model when you c Estimator. The model server runs inside a SageMaker Endpoint, which your call to ``deploy`` creates. You can access the name of the Endpoint by the ``name`` property on the returned ``Predictor``. +PyTorch on Amazon SageMaker has support for `Elastic Inference `_, which allows for inference acceleration to a hosted endpoint for a fraction of the cost of using a full GPU instance. +In order to attach an Elastic Inference accelerator to your endpoint provide the accelerator type to ``accelerator_type`` to your ``deploy`` call. + +.. code:: python + + predictor = pytorch_estimator.deploy(instance_type='ml.m4.xlarge', + initial_instance_count=1, + accelerator_type='ml.eia1.medium') The SageMaker PyTorch Model Server ================================== @@ -291,6 +301,11 @@ It loads the model parameters from a ``model.pth`` file in the SageMaker model d model.load_state_dict(torch.load(f)) return model +However, if you are using PyTorch Elastic Inference, you do not have to provide a ``model_fn`` since the PyTorch serving +container has a default one for you. But please note that if you are utilizing the default ``model_fn``, please save +yor parameter file as ``model.pt`` instead of ``model.pth``. For more information on inference script, please refer to: +`SageMaker PyTorch Default Inference Handler `_. + Serve a PyTorch Model --------------------- diff --git a/src/sagemaker/pytorch/README.rst b/src/sagemaker/pytorch/README.rst index 73dfe5a6eb..dbf536f968 100644 --- a/src/sagemaker/pytorch/README.rst +++ b/src/sagemaker/pytorch/README.rst @@ -6,7 +6,7 @@ With PyTorch Estimators and Models, you can train and host PyTorch models on Ama Supported versions of PyTorch: ``0.4.0``, ``1.0.0``, ``1.1.0``, ``1.2.0``, ``1.3.1``, ``1.4.0``. -Supported versions of TensorFlow for Elastic Inference: ``1.3.1``. +Supported versions of PyTorch for Elastic Inference: ``1.3.1``. We recommend that you use the latest supported version, because that's where we focus most of our development efforts. From c0cc779985d72c2cd748e0c585bc20979ac33422 Mon Sep 17 00:00:00 2001 From: Deng Date: Fri, 6 Mar 2020 12:29:14 -0800 Subject: [PATCH 07/10] address comments: accelerator_type, script name, framework and python version check --- doc/using_pytorch.rst | 2 +- src/sagemaker/fw_utils.py | 5 +---- src/sagemaker/pytorch/model.py | 7 +++++-- .../{mnist.py => empty_inference_script.py} | 0 tests/integ/test_pytorch_train.py | 2 +- tests/unit/test_fw_utils.py | 14 -------------- tests/unit/test_pytorch.py | 14 ++++++++++++++ 7 files changed, 22 insertions(+), 22 deletions(-) rename tests/data/pytorch_eia/{mnist.py => empty_inference_script.py} (100%) diff --git a/doc/using_pytorch.rst b/doc/using_pytorch.rst index dd5474569b..b8b6f0a54f 100644 --- a/doc/using_pytorch.rst +++ b/doc/using_pytorch.rst @@ -259,7 +259,7 @@ In order to attach an Elastic Inference accelerator to your endpoint provide the predictor = pytorch_estimator.deploy(instance_type='ml.m4.xlarge', initial_instance_count=1, - accelerator_type='ml.eia1.medium') + accelerator_type='ml.eia2.medium') The SageMaker PyTorch Model Server ================================== diff --git a/src/sagemaker/fw_utils.py b/src/sagemaker/fw_utils.py index 04dca6fe84..e77716e1d2 100644 --- a/src/sagemaker/fw_utils.py +++ b/src/sagemaker/fw_utils.py @@ -58,7 +58,6 @@ "tensorflow-serving", "mxnet", "mxnet-serving", - "pytorch", "pytorch-serving", ] VALID_ACCOUNTS_BY_REGION = {"us-gov-west-1": "246785580436", "us-iso-east-1": "744548109606"} @@ -90,7 +89,7 @@ "mxnet-serving-eia": [1, 4, 1], "pytorch": [1, 2, 0], "pytorch-serving": [1, 2, 0], - "pytorch-serving-eia": {"py3": [1, 3, 1]}, + "pytorch-serving-eia": [1, 3, 1], } DEBUGGER_UNSUPPORTED_REGIONS = ["us-gov-west-1", "us-iso-east-1"] @@ -126,8 +125,6 @@ def _is_dlc_version(framework, framework_version, py_version): """ lowest_version_list = MERGED_FRAMEWORKS_LOWEST_VERSIONS.get(framework) if isinstance(lowest_version_list, dict): - if py_version not in lowest_version_list: - raise ValueError("{} is not supported in {}.".format(framework, py_version)) lowest_version_list = lowest_version_list[py_version] if lowest_version_list: diff --git a/src/sagemaker/pytorch/model.py b/src/sagemaker/pytorch/model.py index cdc5543000..d7198ef63a 100644 --- a/src/sagemaker/pytorch/model.py +++ b/src/sagemaker/pytorch/model.py @@ -136,12 +136,15 @@ def prepare_container_def(self, instance_type, accelerator_type=None): For example, 'ml.p2.xlarge'. accelerator_type (str): The Elastic Inference accelerator type to deploy to the instance for loading and making inferences to the - model. Currently supported with PyTorch 1.3.1 Python 3. + model. Returns: dict[str, str]: A container definition object usable with the CreateModel API. """ + if accelerator_type and self.py_version == "py2": + raise ValueError("PyTorch EIA is not supported in Python 2.") + deploy_image = self.image if not deploy_image: region_name = self.sagemaker_session.boto_session.region_name @@ -169,7 +172,7 @@ def serving_image_uri(self, region_name, instance_type, accelerator_type=None): (cpu/gpu/family-specific optimized). accelerator_type (str): The Elastic Inference accelerator type to deploy to the instance for loading and making inferences to the - model. Currently supported with PyTorch 1.3.1 Python 3. + model. Returns: str: The appropriate image URI based on the given parameters. diff --git a/tests/data/pytorch_eia/mnist.py b/tests/data/pytorch_eia/empty_inference_script.py similarity index 100% rename from tests/data/pytorch_eia/mnist.py rename to tests/data/pytorch_eia/empty_inference_script.py diff --git a/tests/integ/test_pytorch_train.py b/tests/integ/test_pytorch_train.py index ef6c8c7e1b..131c7928b4 100644 --- a/tests/integ/test_pytorch_train.py +++ b/tests/integ/test_pytorch_train.py @@ -29,7 +29,7 @@ EIA_DIR = os.path.join(DATA_DIR, "pytorch_eia") EIA_MODEL = os.path.join(EIA_DIR, "model_mnist.tar.gz") -EIA_SCRIPT = os.path.join(EIA_DIR, "mnist.py") +EIA_SCRIPT = os.path.join(EIA_DIR, "empty_inference_script.py") @pytest.fixture(scope="module", name="pytorch_training_job") diff --git a/tests/unit/test_fw_utils.py b/tests/unit/test_fw_utils.py index 77bece6bca..b2c4f7f99b 100644 --- a/tests/unit/test_fw_utils.py +++ b/tests/unit/test_fw_utils.py @@ -328,20 +328,6 @@ def test_pytorch_eia_images(): ) -def test_pytorch_eia_py2_error(): - error_message = "pytorch-serving-eia is not supported in py2." - with pytest.raises(ValueError) as error: - fw_utils.create_image_uri( - "us-east-1", - "pytorch-serving", - "ml.c4.2xlarge", - "1.3.1", - "py2", - accelerator_type="ml.eia1.large", - ) - assert error_message in str(error) - - def test_create_image_uri_override_account(): image_uri = fw_utils.create_image_uri( "us-west-1", MOCK_FRAMEWORK, "ml.p3.2xlarge", "1.0rc", "py3", account="fake" diff --git a/tests/unit/test_pytorch.py b/tests/unit/test_pytorch.py index c7c9a69d87..c082b0d316 100644 --- a/tests/unit/test_pytorch.py +++ b/tests/unit/test_pytorch.py @@ -352,6 +352,20 @@ def test_model_image_accelerator(sagemaker_session): assert isinstance(predictor, PyTorchPredictor) +@patch("sagemaker.fw_utils.tar_and_upload_dir", MagicMock()) +def test_model_image_accelerator(sagemaker_session): + with pytest.raises(ValueError) as error: + model = PyTorchModel( + MODEL_DATA, + role=ROLE, + entry_point=SCRIPT_PATH, + sagemaker_session=sagemaker_session, + py_version="py2", + ) + model.deploy(1, CPU, accelerator_type=ACCELERATOR_TYPE) + assert "PyTorch EIA is not supported in Python 2." in str(error) + + def test_train_image_default(sagemaker_session): pytorch = PyTorch( entry_point=SCRIPT_PATH, From 089ccd9414da454133748c1cebf0c6d6f54bc275 Mon Sep 17 00:00:00 2001 From: Deng Date: Fri, 6 Mar 2020 13:31:12 -0800 Subject: [PATCH 08/10] address comments --- src/sagemaker/fw_utils.py | 2 +- tests/unit/test_pytorch.py | 10 +--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/sagemaker/fw_utils.py b/src/sagemaker/fw_utils.py index e77716e1d2..2bb3c8ad0b 100644 --- a/src/sagemaker/fw_utils.py +++ b/src/sagemaker/fw_utils.py @@ -281,7 +281,7 @@ def _accelerator_type_valid_for_framework( if framework not in VALID_EIA_FRAMEWORKS: raise ValueError( "{} is not supported with Amazon Elastic Inference. Currently only " - "Python-based TensorFlow and MXNet are supported.".format(framework) + "Python-based TensorFlow, MXNet, PyTorch are supported.".format(framework) ) if optimized_families: diff --git a/tests/unit/test_pytorch.py b/tests/unit/test_pytorch.py index c082b0d316..51b7698425 100644 --- a/tests/unit/test_pytorch.py +++ b/tests/unit/test_pytorch.py @@ -343,15 +343,6 @@ def test_non_mms_model(repack_model, sagemaker_session): repack_model.assert_not_called() -@patch("sagemaker.fw_utils.tar_and_upload_dir", MagicMock()) -def test_model_image_accelerator(sagemaker_session): - model = PyTorchModel( - MODEL_DATA, role=ROLE, entry_point=SCRIPT_PATH, sagemaker_session=sagemaker_session - ) - predictor = model.deploy(1, CPU, accelerator_type=ACCELERATOR_TYPE) - assert isinstance(predictor, PyTorchPredictor) - - @patch("sagemaker.fw_utils.tar_and_upload_dir", MagicMock()) def test_model_image_accelerator(sagemaker_session): with pytest.raises(ValueError) as error: @@ -360,6 +351,7 @@ def test_model_image_accelerator(sagemaker_session): role=ROLE, entry_point=SCRIPT_PATH, sagemaker_session=sagemaker_session, + framework_version="1.3.1", py_version="py2", ) model.deploy(1, CPU, accelerator_type=ACCELERATOR_TYPE) From e96e6299183dd6e4bb6c1bb154ae996227ad57c9 Mon Sep 17 00:00:00 2001 From: Deng Date: Fri, 6 Mar 2020 13:46:05 -0800 Subject: [PATCH 09/10] change eia test instance type --- tests/integ/test_pytorch_train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integ/test_pytorch_train.py b/tests/integ/test_pytorch_train.py index 131c7928b4..c1164e13e7 100644 --- a/tests/integ/test_pytorch_train.py +++ b/tests/integ/test_pytorch_train.py @@ -134,7 +134,7 @@ def test_deploy_model_with_accelerator(sagemaker_session, cpu_instance_type): predictor = pytorch.deploy( initial_instance_count=1, instance_type=cpu_instance_type, - accelerator_type="ml.eia1.large", + accelerator_type="ml.eia2.medium", endpoint_name=endpoint_name, ) From 11512158def24c74811c31f992dc6b798aa9d12a Mon Sep 17 00:00:00 2001 From: Deng Date: Fri, 6 Mar 2020 15:07:26 -0800 Subject: [PATCH 10/10] check framework and py version in accelerator validate method --- src/sagemaker/fw_utils.py | 10 +++++++++- src/sagemaker/pytorch/model.py | 3 --- tests/unit/test_fw_utils.py | 14 ++++++++++++++ tests/unit/test_pytorch.py | 4 +++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/sagemaker/fw_utils.py b/src/sagemaker/fw_utils.py index 2bb3c8ad0b..fec2a9d281 100644 --- a/src/sagemaker/fw_utils.py +++ b/src/sagemaker/fw_utils.py @@ -60,6 +60,7 @@ "mxnet-serving", "pytorch-serving", ] +PY2_RESTRICTED_EIA_FRAMEWORKS = ["pytorch-serving"] VALID_ACCOUNTS_BY_REGION = {"us-gov-west-1": "246785580436", "us-iso-east-1": "744548109606"} ASIMOV_VALID_ACCOUNTS_BY_REGION = {"us-iso-east-1": "886529160074"} OPT_IN_ACCOUNTS_BY_REGION = {"ap-east-1": "057415533634", "me-south-1": "724002660598"} @@ -215,6 +216,7 @@ def create_image_uri( if _accelerator_type_valid_for_framework( framework=framework, + py_version=py_version, accelerator_type=accelerator_type, optimized_families=optimized_families, ): @@ -267,17 +269,23 @@ def create_image_uri( def _accelerator_type_valid_for_framework( - framework, accelerator_type=None, optimized_families=None + framework, py_version, accelerator_type=None, optimized_families=None ): """ Args: framework: + py_version: accelerator_type: optimized_families: """ if accelerator_type is None: return False + if py_version == "py2" and framework in PY2_RESTRICTED_EIA_FRAMEWORKS: + raise ValueError( + "{} is not supported with Amazon Elastic Inference in Python 2.".format(framework) + ) + if framework not in VALID_EIA_FRAMEWORKS: raise ValueError( "{} is not supported with Amazon Elastic Inference. Currently only " diff --git a/src/sagemaker/pytorch/model.py b/src/sagemaker/pytorch/model.py index d7198ef63a..947aca205a 100644 --- a/src/sagemaker/pytorch/model.py +++ b/src/sagemaker/pytorch/model.py @@ -142,9 +142,6 @@ def prepare_container_def(self, instance_type, accelerator_type=None): dict[str, str]: A container definition object usable with the CreateModel API. """ - if accelerator_type and self.py_version == "py2": - raise ValueError("PyTorch EIA is not supported in Python 2.") - deploy_image = self.image if not deploy_image: region_name = self.sagemaker_session.boto_session.region_name diff --git a/tests/unit/test_fw_utils.py b/tests/unit/test_fw_utils.py index b2c4f7f99b..e77ac65794 100644 --- a/tests/unit/test_fw_utils.py +++ b/tests/unit/test_fw_utils.py @@ -328,6 +328,20 @@ def test_pytorch_eia_images(): ) +def test_pytorch_eia_py2_error(): + error_message = "pytorch-serving is not supported with Amazon Elastic Inference in Python 2." + with pytest.raises(ValueError) as error: + fw_utils.create_image_uri( + "us-east-1", + "pytorch-serving", + "ml.c4.2xlarge", + "1.3.1", + "py2", + accelerator_type="ml.eia1.large", + ) + assert error_message in str(error) + + def test_create_image_uri_override_account(): image_uri = fw_utils.create_image_uri( "us-west-1", MOCK_FRAMEWORK, "ml.p3.2xlarge", "1.0rc", "py3", account="fake" diff --git a/tests/unit/test_pytorch.py b/tests/unit/test_pytorch.py index 51b7698425..3c0e7059c0 100644 --- a/tests/unit/test_pytorch.py +++ b/tests/unit/test_pytorch.py @@ -355,7 +355,9 @@ def test_model_image_accelerator(sagemaker_session): py_version="py2", ) model.deploy(1, CPU, accelerator_type=ACCELERATOR_TYPE) - assert "PyTorch EIA is not supported in Python 2." in str(error) + assert "pytorch-serving is not supported with Amazon Elastic Inference in Python 2." in str( + error + ) def test_train_image_default(sagemaker_session):