Skip to content

Commit 9a6869e

Browse files
authored
fix: construct correct code path and correctly tar up contents (#84)
1 parent 0981118 commit 9a6869e

File tree

11 files changed

+26
-49
lines changed

11 files changed

+26
-49
lines changed

buildspec.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ version: 0.2
22

33
env:
44
variables:
5-
FRAMEWORK_VERSION: '1.5.0'
5+
FRAMEWORK_VERSION: '1.6.0'
66
EIA_FRAMEWORK_VERSION: '1.3.1'
77
CPU_INSTANCE_TYPE: 'ml.c4.xlarge'
88
GPU_INSTANCE_TYPE: 'ml.p2.8xlarge'

src/sagemaker_pytorch_serving_container/torchserve.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
DEFAULT_TS_MODEL_DIRECTORY = os.path.join(os.getcwd(), ".sagemaker", "ts", "models")
4444
DEFAULT_TS_MODEL_NAME = "model"
4545
DEFAULT_TS_MODEL_SERIALIZED_FILE = "model.pth"
46+
DEFAULT_TS_CODE_DIR = "code"
4647
DEFAULT_HANDLER_SERVICE = "sagemaker_pytorch_serving_container.handler_service"
4748

4849
ENABLE_MULTI_MODEL = os.getenv("SAGEMAKER_MULTI_MODEL", "false") == "true"
@@ -121,7 +122,7 @@ def _adapt_to_ts_format(handler_service):
121122
"--export-path",
122123
DEFAULT_TS_MODEL_DIRECTORY,
123124
"--extra-files",
124-
os.path.join(environment.model_dir, environment.Environment().module_name + ".py"),
125+
os.path.join(environment.model_dir, DEFAULT_TS_CODE_DIR, environment.Environment().module_name + ".py"),
125126
"--version",
126127
"1",
127128
]
Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,6 @@
11
ARG region
2-
FROM 763104351884.dkr.ecr.$region.amazonaws.com/pytorch-inference:1.5.0-cpu-py3
3-
4-
ARG TS_VERSION=0.1.1
5-
RUN apt-get update \
6-
&& apt-get install -y --no-install-recommends software-properties-common \
7-
&& add-apt-repository ppa:openjdk-r/ppa \
8-
&& apt-get update \
9-
&& apt-get install -y --no-install-recommends openjdk-11-jdk
10-
11-
RUN pip install torchserve==$TS_VERSION \
12-
&& pip install torch-model-archiver==$TS_VERSION
13-
14-
RUN pip uninstall torch \
15-
&& pip uninstall torchvision \
16-
&& pip install torch=1.6.0 \
17-
&& pip install torchvision=0.7.0
2+
FROM 763104351884.dkr.ecr.$region.amazonaws.com/pytorch-inference:1.6.0-cpu-py3
183

194
COPY dist/sagemaker_pytorch_inference-*.tar.gz /sagemaker_pytorch_inference.tar.gz
205
RUN pip install --upgrade --no-cache-dir /sagemaker_pytorch_inference.tar.gz && \
216
rm /sagemaker_pytorch_inference.tar.gz
22-
23-
CMD ["torchserve", "--start", "--ts-config", "/home/model-server/config.properties", "--model-store", "/home/model-server/"]
Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,6 @@
11
ARG region
2-
FROM 763104351884.dkr.ecr.$region.amazonaws.com/pytorch-inference:1.5.0-cpu-py3
3-
4-
ARG TS_VERSION=0.1.1
5-
RUN apt-get update \
6-
&& apt-get install -y --no-install-recommends software-properties-common \
7-
&& add-apt-repository ppa:openjdk-r/ppa \
8-
&& apt-get update \
9-
&& apt-get install -y --no-install-recommends openjdk-11-jdk
10-
11-
RUN pip install torchserve==$TS_VERSION \
12-
&& pip install torch-model-archiver==$TS_VERSION
13-
14-
RUN pip uninstall torch \
15-
&& pip uninstall torchvision \
16-
&& pip install torch=1.6.0 \
17-
&& pip install torchvision=0.7.0
2+
FROM 763104351884.dkr.ecr.$region.amazonaws.com/pytorch-inference:1.6.0-gpu-py3
183

194
COPY dist/sagemaker_pytorch_inference-*.tar.gz /sagemaker_pytorch_inference.tar.gz
205
RUN pip install --upgrade --no-cache-dir /sagemaker_pytorch_inference.tar.gz && \
216
rm /sagemaker_pytorch_inference.tar.gz
22-
23-
CMD ["torchserve", "--start", "--ts-config", "/home/model-server/config.properties", "--model-store", "/home/model-server/"]

test/integration/__init__.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,36 +23,41 @@
2323
cpu_sub_dir = 'model_cpu'
2424
gpu_sub_dir = 'model_gpu'
2525
eia_sub_dir = 'model_eia'
26+
code_sub_dir = 'code'
2627

2728
model_cpu_dir = os.path.join(mnist_path, cpu_sub_dir)
28-
mnist_cpu_script = os.path.join(model_cpu_dir, 'mnist.py')
29+
mnist_cpu_script = os.path.join(model_cpu_dir, code_sub_dir, 'mnist.py')
2930
model_cpu_tar = file_utils.make_tarfile(mnist_cpu_script,
3031
os.path.join(model_cpu_dir, "model.pth"),
31-
model_cpu_dir)
32+
model_cpu_dir,
33+
script_path="code")
3234

3335
model_cpu_1d_dir = os.path.join(model_cpu_dir, '1d')
34-
mnist_1d_script = os.path.join(model_cpu_1d_dir, 'mnist_1d.py')
36+
mnist_1d_script = os.path.join(model_cpu_1d_dir, code_sub_dir, 'mnist_1d.py')
3537
model_cpu_1d_tar = file_utils.make_tarfile(mnist_1d_script,
3638
os.path.join(model_cpu_1d_dir, "model.pth"),
37-
model_cpu_1d_dir)
39+
model_cpu_1d_dir,
40+
script_path="code")
3841

3942
model_gpu_dir = os.path.join(mnist_path, gpu_sub_dir)
40-
mnist_gpu_script = os.path.join(model_gpu_dir, 'mnist.py')
43+
mnist_gpu_script = os.path.join(model_gpu_dir, code_sub_dir, 'mnist.py')
4144
model_gpu_tar = file_utils.make_tarfile(mnist_gpu_script,
4245
os.path.join(model_gpu_dir, "model.pth"),
43-
model_gpu_dir)
46+
model_gpu_dir,
47+
script_path="code")
4448

4549
model_eia_dir = os.path.join(mnist_path, eia_sub_dir)
4650
mnist_eia_script = os.path.join(model_eia_dir, 'mnist.py')
4751
model_eia_tar = file_utils.make_tarfile(mnist_eia_script,
4852
os.path.join(model_eia_dir, "model.pth"),
4953
model_eia_dir)
5054

51-
call_model_fn_once_script = os.path.join(model_cpu_dir, 'call_model_fn_once.py')
55+
call_model_fn_once_script = os.path.join(model_cpu_dir, code_sub_dir, 'call_model_fn_once.py')
5256
call_model_fn_once_tar = file_utils.make_tarfile(call_model_fn_once_script,
5357
os.path.join(model_cpu_dir, "model.pth"),
5458
model_cpu_dir,
55-
"model_call_model_fn_once.tar.gz")
59+
"model_call_model_fn_once.tar.gz",
60+
script_path="code")
5661

5762
ROLE = 'dummy/unused-role'
5863
DEFAULT_TIMEOUT = 20

test/unit/test_model_server.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ def test_adapt_to_ts_format(path_exists, make_dir, subprocess_check_call, set_py
150150
"--export-path",
151151
torchserve.DEFAULT_TS_MODEL_DIRECTORY,
152152
"--extra-files",
153-
os.path.join(environment.model_dir, environment.Environment().module_name + ".py"),
153+
os.path.join(environment.model_dir,
154+
torchserve.DEFAULT_TS_CODE_DIR,
155+
environment.Environment().module_name + ".py"),
154156
"--version",
155157
"1",
156158
]

test/utils/file_utils.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616
import tarfile
1717

1818

19-
def make_tarfile(script, model, output_path, filename="model.tar.gz"):
19+
def make_tarfile(script, model, output_path, filename="model.tar.gz", script_path=None):
2020
output_filename = os.path.join(output_path, filename)
2121
with tarfile.open(output_filename, "w:gz") as tar:
22-
tar.add(script, arcname=os.path.basename(script))
22+
if(script_path):
23+
tar.add(script, arcname=os.path.join(script_path, os.path.basename(script)))
24+
else:
25+
tar.add(script, arcname=os.path.basename(script))
2326
tar.add(model, arcname=os.path.basename(model))
2427
return output_filename

0 commit comments

Comments
 (0)