Skip to content

Commit ec0c76d

Browse files
authored
Merge branch 'master' into fix/minor-jumpstart-dev-ex-improvements
2 parents 86822d2 + 0e664c8 commit ec0c76d

File tree

308 files changed

+31697
-1180
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

308 files changed

+31697
-1180
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,4 @@ env/
3434
**/_repack_script_launcher.sh
3535
tests/data/**/_repack_model.py
3636
tests/data/experiment/sagemaker-dev-1.0.tar.gz
37+
src/sagemaker/serve/tmp_workspace

CHANGELOG.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,44 @@
11
# Changelog
22

3+
## v2.199.0 (2023-11-30)
4+
5+
### Features
6+
7+
* Update boto3 version to 1.33.3
8+
* Goldfinch InferenceComponent integration
9+
* Add Pipeline step decorator, NotebookJobStep, and scheduler
10+
* ModelBuilder for simplified model testing and deployment
11+
12+
### Bug Fixes and Other Changes
13+
14+
* Skip failing integ tests
15+
* chore: add jumpstart gated model integration tests
16+
* disable integration tests for Inference Component based endpoint for non supported regions
17+
* remove unnecessary whl file - Galactus
18+
* refactor endpoint type enums, comments, docstrings, method names…
19+
* Address SA feedback regarding deployment straight to Endpoint Mode - Galactus
20+
* fix HuggingFace GEN2 model deployment arguments
21+
* when customer role does not have permission to read logs from CW, default to standard logging - Galactus
22+
* Add pagination for ListInferenceComponent API responses, address non-blocking comments
23+
* Create CSVSerializerWrapper - Galactus
24+
* Model builder Final Fixes
25+
* remote function include_local_workdir default value
26+
* use copy instead of move in bootstrap script
27+
* WaiterError on failed pipeline execution. results()
28+
* Add a unit test for consistency between step and remote decorator
29+
* merge WorkdirConfig and custom_filter_filter parameters
30+
* Add back mixed step type integ test
31+
* do not delete temp folder generated by sdist
32+
* make collect_parameters decorator as private
33+
* HMAC signing for ModelBuilder Triton python backend
34+
35+
### Documentation Changes
36+
37+
* update docstring for Generation two endpoint and validation message
38+
* galactus doc updates
39+
* CustomFileFilter doc updates
40+
* NotebookJobSteps class parameter severity update
41+
342
## v2.198.0 (2023-11-27)
443

544
### Features

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
recursive-include src/sagemaker *.py
22

33
include src/sagemaker/image_uri_config/*.json
4+
include src/sagemaker/serve/requirements.txt
45
recursive-include requirements *
56

67
include VERSION

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.198.1.dev0
1+
2.199.1.dev0

doc/api/inference/model_builder.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
Model Builder
2+
-------------
3+
4+
This module contains classes related to Amazon Sagemaker Model Builder
5+
6+
.. autoclass:: sagemaker.serve.builder.model_builder.ModelBuilder
7+
8+
.. automethod:: sagemaker.serve.builder.model_builder.ModelBuilder.build
9+
10+
.. automethod:: sagemaker.serve.builder.model_builder.ModelBuilder.save
11+
12+
.. autoclass:: sagemaker.serve.spec.inference_spec.InferenceSpec
13+
14+
.. autoclass:: sagemaker.serve.builder.schema_builder.SchemaBuilder
15+
16+
.. autoclass:: sagemaker.serve.marshalling.custom_payload_translator.CustomPayloadTranslator

doc/overview.rst

Lines changed: 354 additions & 0 deletions
Large diffs are not rendered by default.

doc/remote_function/sagemaker.remote_function.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,10 @@ Future
2424
.. automethod:: sagemaker.remote_function.client.list_futures
2525

2626
.. automethod:: sagemaker.remote_function.client.get_future
27+
28+
29+
CustomFileFilter
30+
----------------
31+
32+
.. autoclass:: sagemaker.remote_function.custom_file_filter.CustomFileFilter
33+

doc/workflows/pipelines/sagemaker.workflow.pipelines.rst

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ Pipeline Context
9696
.. autoclass:: sagemaker.workflow.pipeline_context.LocalPipelineSession
9797
:members:
9898

99+
Pipeline Schedule
100+
-----------------
101+
102+
.. autoclass:: sagemaker.workflow.triggers.PipelineSchedule
99103

100104
Parallelism Configuration
101105
-------------------------
@@ -120,7 +124,6 @@ Selective Execution Config
120124

121125
.. autoclass:: sagemaker.workflow.selective_execution_config.SelectiveExecutionConfig
122126

123-
124127
Properties
125128
----------
126129

@@ -162,6 +165,8 @@ Steps
162165

163166
.. autoclass:: sagemaker.workflow.steps.ProcessingStep
164167

168+
.. autoclass:: sagemaker.workflow.notebook_job_step.NotebookJobStep
169+
165170
.. autoclass:: sagemaker.workflow.steps.CreateModelStep
166171

167172
.. autoclass:: sagemaker.workflow.callback_step.CallbackStep
@@ -185,3 +190,14 @@ Steps
185190
.. autoclass:: sagemaker.workflow.emr_step.EMRStep
186191

187192
.. autoclass:: sagemaker.workflow.automl_step.AutoMLStep
193+
194+
@step decorator
195+
---------------
196+
197+
.. automethod:: sagemaker.workflow.function_step.step
198+
199+
.. autoclass:: sagemaker.workflow.function_step.DelayedReturn
200+
201+
.. autoclass:: sagemaker.workflow.step_outputs.StepOutput
202+
203+
.. autofunction:: sagemaker.workflow.step_outputs.get_step

inference-experience-dev-tester.sh

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
trap "exit" INT
2+
3+
eval "$(conda shell.zsh hook)"
4+
5+
conda activate $1
6+
7+
echo Installing tox if necessary
8+
pip install --upgrade tox
9+
10+
echo Running unit testing in Python3.8 Conda Environement
11+
12+
if "$4";
13+
then
14+
echo Clearing .tox cache for Python3.8
15+
rm -r .tox/py38
16+
fi
17+
18+
tox -e py38 -- tests/unit/sagemaker/serve/.
19+
20+
if "$3";
21+
then
22+
echo Running Python3.8 Integration Tests
23+
tox -e py38 -- tests/integ/sagemaker/serve/.
24+
fi
25+
26+
conda deactivate
27+
28+
conda activate $2
29+
30+
echo Installing tox if necessary
31+
pip install --upgrade tox
32+
33+
echo Running unit testing in Python3.10 Conda Environment
34+
35+
if "$4";
36+
then
37+
echo Clearing .tox cache for Python3.10
38+
rm -r .tox/py10
39+
fi
40+
41+
tox -e py310 -- tests/unit/sagemaker/serve/.
42+
43+
if "$3";
44+
then
45+
echo Running Python3.10 Integration Tests
46+
tox -e py310 -- tests/integ/sagemaker/serve/.
47+
fi
48+
49+
conda deactivate
50+
51+
echo Coverage report after testing:
52+
53+
coverage report -i --fail-under=75 --include "*/serve/*" --omit '*in_process*,*interceptors*,*__init__*,*build_model*,*function_pointers*'

requirements/extras/test_requirements.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,13 @@ docker>=5.0.2,<7.0.0
2929
PyYAML==6.0
3030
pyspark==3.3.1
3131
sagemaker-feature-store-pyspark-3.3
32+
# TODO find workaround
33+
xgboost>=1.6.2,<=1.7.6
34+
pillow>=9.5.0,<=10.0.0
35+
transformers==4.32.0
36+
sentencepiece==0.1.99
37+
# https://github.com/triton-inference-server/server/issues/6246
38+
tritonclient[http]<2.37.0
39+
onnx==1.14.1
40+
# tf2onnx==1.15.1
41+
nbformat>=5.9,<6

setup.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import os
1717
from glob import glob
18+
import sys
1819

1920
from setuptools import find_packages, setup
2021

@@ -48,7 +49,7 @@ def read_requirements(filename):
4849
# Declare minimal set for installation
4950
required_packages = [
5051
"attrs>=23.1.0,<24",
51-
"boto3>=1.29.6,<2.0",
52+
"boto3>=1.33.3,<2.0",
5253
"cloudpickle==2.2.1",
5354
"google-pasta",
5455
"numpy>=1.9.0,<2.0",
@@ -63,6 +64,13 @@ def read_requirements(filename):
6364
"jsonschema",
6465
"platformdirs",
6566
"tblib==1.7.0",
67+
"urllib3<1.27",
68+
"uvicorn==0.22.0",
69+
"fastapi==0.95.2",
70+
"requests",
71+
"docker",
72+
"tqdm",
73+
"psutil",
6674
]
6775

6876
# Specific use case dependencies
@@ -77,14 +85,29 @@ def read_requirements(filename):
7785
# Meta dependency groups
7886
extras["all"] = [item for group in extras.values() for item in group]
7987
# Tests specific dependencies (do not need to be included in 'all')
80-
extras["test"] = (read_requirements("requirements/extras/test_requirements.txt"),)
88+
test_dependencies = read_requirements("requirements/extras/test_requirements.txt")
89+
# remove torch and torchvision if python version is not 3.10
90+
if sys.version_info.minor != 10:
91+
test_dependencies = [
92+
module
93+
for module in test_dependencies
94+
if not (
95+
module.startswith("transformers")
96+
or module.startswith("sentencepiece")
97+
or module.startswith("torch")
98+
or module.startswith("torchvision")
99+
)
100+
]
101+
102+
extras["test"] = (test_dependencies,)
81103

82104
setup(
83105
name="sagemaker",
84106
version=read_version(),
85107
description="Open source library for training and deploying models on Amazon SageMaker.",
86108
packages=find_packages("src"),
87109
package_dir={"": "src"},
110+
package_data={"": ["*.whl"]},
88111
py_modules=[os.path.splitext(os.path.basename(path))[0] for path in glob("src/*.py")],
89112
include_package_data=True,
90113
long_description=read("README.rst"),
@@ -110,4 +133,7 @@ def read_requirements(filename):
110133
"sagemaker-upgrade-v2=sagemaker.cli.compatibility.v2.sagemaker_upgrade_v2:main",
111134
]
112135
},
136+
scripts=[
137+
"src/sagemaker/serve/model_server/triton/pack_conda_env.sh",
138+
],
113139
)

src/sagemaker/amazon/factorization_machines.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,7 @@ def __init__(
293293
sagemaker_session=None,
294294
serializer=RecordSerializer(),
295295
deserializer=RecordDeserializer(),
296+
component_name=None,
296297
):
297298
"""Initialization for FactorizationMachinesPredictor class.
298299
@@ -307,12 +308,15 @@ def __init__(
307308
serializes input data to x-recordio-protobuf format.
308309
deserializer (sagemaker.deserializers.BaseDeserializer): Optional.
309310
Default parses responses from x-recordio-protobuf format.
311+
component_name (str): Optional. Name of the Amazon SageMaker inference
312+
component corresponding the predictor.
310313
"""
311314
super(FactorizationMachinesPredictor, self).__init__(
312315
endpoint_name,
313316
sagemaker_session,
314317
serializer=serializer,
315318
deserializer=deserializer,
319+
component_name=component_name,
316320
)
317321

318322

src/sagemaker/amazon/ipinsights.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ def __init__(
196196
sagemaker_session=None,
197197
serializer=CSVSerializer(),
198198
deserializer=JSONDeserializer(),
199+
component_name=None,
199200
):
200201
"""Creates object to be used to get dot product of entity nad IP address.
201202
@@ -210,12 +211,15 @@ def __init__(
210211
serializes input data to text/csv.
211212
deserializer (callable): Optional. Default parses JSON responses
212213
using ``json.load(...)``.
214+
component_name (str): Optional. Name of the Amazon SageMaker inference
215+
component corresponding the predictor.
213216
"""
214217
super(IPInsightsPredictor, self).__init__(
215218
endpoint_name,
216219
sagemaker_session,
217220
serializer=serializer,
218221
deserializer=deserializer,
222+
component_name=component_name,
219223
)
220224

221225

src/sagemaker/amazon/kmeans.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ def __init__(
222222
sagemaker_session=None,
223223
serializer=RecordSerializer(),
224224
deserializer=RecordDeserializer(),
225+
component_name=None,
225226
):
226227
"""Initialization for KMeansPredictor class.
227228
@@ -236,12 +237,15 @@ def __init__(
236237
serializes input data to x-recordio-protobuf format.
237238
deserializer (sagemaker.deserializers.BaseDeserializer): Optional.
238239
Default parses responses from x-recordio-protobuf format.
240+
component_name (str): Optional. Name of the Amazon SageMaker inference
241+
component corresponding to the predictor.
239242
"""
240243
super(KMeansPredictor, self).__init__(
241244
endpoint_name,
242245
sagemaker_session,
243246
serializer=serializer,
244247
deserializer=deserializer,
248+
component_name=component_name,
245249
)
246250

247251

src/sagemaker/amazon/knn.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ def __init__(
213213
sagemaker_session=None,
214214
serializer=RecordSerializer(),
215215
deserializer=RecordDeserializer(),
216+
component_name=None,
216217
):
217218
"""Function to initialize KNNPredictor.
218219
@@ -227,12 +228,15 @@ def __init__(
227228
serializes input data to x-recordio-protobuf format.
228229
deserializer (sagemaker.deserializers.BaseDeserializer): Optional.
229230
Default parses responses from x-recordio-protobuf format.
231+
component_name (str): Optional. Name of the Amazon SageMaker inference
232+
component corresponding to the predictor.
230233
"""
231234
super(KNNPredictor, self).__init__(
232235
endpoint_name,
233236
sagemaker_session,
234237
serializer=serializer,
235238
deserializer=deserializer,
239+
component_name=component_name,
236240
)
237241

238242

src/sagemaker/amazon/lda.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ def __init__(
197197
sagemaker_session=None,
198198
serializer=RecordSerializer(),
199199
deserializer=RecordDeserializer(),
200+
component_name=None,
200201
):
201202
"""Creates "LDAPredictor" object to be used for transforming input vectors.
202203
@@ -211,12 +212,15 @@ def __init__(
211212
serializes input data to x-recordio-protobuf format.
212213
deserializer (sagemaker.deserializers.BaseDeserializer): Optional.
213214
Default parses responses from x-recordio-protobuf format.
215+
component_name (str): Optional. Name of the Amazon SageMaker inference
216+
component corresponding to the predictor.
214217
"""
215218
super(LDAPredictor, self).__init__(
216219
endpoint_name,
217220
sagemaker_session,
218221
serializer=serializer,
219222
deserializer=deserializer,
223+
component_name=component_name,
220224
)
221225

222226

0 commit comments

Comments
 (0)