From 68af7debf215dd8aa7b30a566544e95682716447 Mon Sep 17 00:00:00 2001 From: Deng Date: Tue, 31 Mar 2020 13:15:08 -0700 Subject: [PATCH 1/2] fix: add model_dir to python path at service initialization --- .../default_handler_service.py | 12 ++++++++++++ test/container/mxnet/Dockerfile | 5 ++++- .../mxnet/sagemaker_inference.tar.gz | Bin 18017 -> 17953 bytes .../mxnet/sagemaker_mxnet_inference.tar.gz | Bin 14683 -> 14542 bytes test/unit/test_default_handler_service.py | 12 ++++++++++-- 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/sagemaker_inference/default_handler_service.py b/src/sagemaker_inference/default_handler_service.py index 83fd446..ca4e9ae 100644 --- a/src/sagemaker_inference/default_handler_service.py +++ b/src/sagemaker_inference/default_handler_service.py @@ -13,8 +13,12 @@ """This module contains functionality for the default handler service.""" from __future__ import absolute_import +import os + from sagemaker_inference.transformer import Transformer +PYTHON_PATH_ENV = "PYTHONPATH" + class DefaultHandlerService(object): """Default handler service that is executed by the model server. @@ -51,4 +55,12 @@ def initialize(self, context): """ properties = context.system_properties model_dir = properties.get("model_dir") + + # add model_dir/code to python path + code_dir_path = "{}:".format(model_dir + "/code") + if PYTHON_PATH_ENV in os.environ: + os.environ[PYTHON_PATH_ENV] = code_dir_path + os.environ[PYTHON_PATH_ENV] + else: + os.environ[PYTHON_PATH_ENV] = code_dir_path + self._service.validate_and_initialize(model_dir=model_dir) diff --git a/test/container/mxnet/Dockerfile b/test/container/mxnet/Dockerfile index df9b16a..72db452 100644 --- a/test/container/mxnet/Dockerfile +++ b/test/container/mxnet/Dockerfile @@ -111,7 +111,10 @@ RUN useradd -m model-server \ COPY mxnet/mms_entrypoint.py /usr/local/bin/dockerd_entrypoint.py COPY mxnet/config.properties /home/model-server -COPY mxnet/inference.py /opt/ml/models/code/inference.py + +# TEST: model_dir -> /opt/ml/models//inference.py +COPY mxnet/inference.py /opt/ml/models/resnet_18/code/inference.py +COPY mxnet/inference.py /opt/ml/models/resnet_152/code/inference.py RUN chmod +x /usr/local/bin/dockerd_entrypoint.py diff --git a/test/container/mxnet/sagemaker_inference.tar.gz b/test/container/mxnet/sagemaker_inference.tar.gz index 3614eb5257bcb8064b6a7b59fcec84b48aa73e65..ccdd66a35de89b0d950ae1851d5d4c69381a24b9 100644 GIT binary patch delta 17383 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 delta 17484 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 bmY?Nk`B{FJpXKK>{``Mj|LqO{xB>wH9B(FF diff --git a/test/container/mxnet/sagemaker_mxnet_inference.tar.gz b/test/container/mxnet/sagemaker_mxnet_inference.tar.gz index 0d836f07cf6813008ded6d1eb564fe2f02e147d7..8b462fc6501afc3c4842d2d7d9dd81f63a36604a 100644 GIT binary patch literal 14542 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 literal 14683 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 Date: Tue, 31 Mar 2020 14:18:08 -0700 Subject: [PATCH 2/2] fix import order --- test/unit/test_default_handler_service.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/test/unit/test_default_handler_service.py b/test/unit/test_default_handler_service.py index 3ff8d5c..a6d2ba8 100644 --- a/test/unit/test_default_handler_service.py +++ b/test/unit/test_default_handler_service.py @@ -10,7 +10,7 @@ # 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. -from mock import Mock, patch, MagicMock +from mock import MagicMock, Mock, patch from sagemaker_inference.default_handler_service import DefaultHandlerService from sagemaker_inference.transformer import Transformer @@ -48,9 +48,7 @@ def test_handle(): def test_initialize(): transformer = Mock() - properties = { - 'model_dir': '/opt/ml/models/model-name' - } + properties = {"model_dir": "/opt/ml/models/model-name"} def getitem(key): return properties[key]