Skip to content

Commit 38c49bd

Browse files
committed
Merge branch 'dev' of https://github.com/aws/sagemaker-python-sdk into dev
2 parents 4a1c4df + b9f90dc commit 38c49bd

Some content is hidden

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

65 files changed

+4667
-199
lines changed

CHANGELOG.md

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

3+
## v2.77.1 (2022-02-25)
4+
5+
### Bug Fixes and Other Changes
6+
7+
* jumpstart model table
8+
9+
## v2.77.0 (2022-02-22)
10+
11+
### Features
12+
13+
* override jumpstart content bucket
14+
* jumpstart model id suggestions
15+
* adding customer metadata support to registermodel step
16+
17+
### Bug Fixes and Other Changes
18+
19+
* Improve Pipeline workflow unit test branch coverage
20+
* update lineage_trial_compoment get pipeline execution arn
21+
* Add lineage doc
22+
* Support primitive types for left value of ConditionSteps
23+
24+
## v2.76.0 (2022-02-17)
25+
26+
### Features
27+
28+
* Add FailStep Support for Sagemaker Pipeline
29+
30+
### Bug Fixes and Other Changes
31+
32+
* use recommended inference image uri from Neo API
33+
* pin test dependencies
34+
* Add exception in test_action
35+
* Update Static Endpoint
36+
* Add CMH to the non-P3 list
37+
38+
### Documentation Changes
39+
40+
* Support for generation of Jumpstart model table on build
41+
42+
## v2.75.1 (2022-02-08)
43+
44+
### Bug Fixes and Other Changes
45+
46+
* Add CMH to the non-P3 list
47+
348
## v2.75.0 (2022-02-05)
449

550
### Features

VERSION

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

doc/conf.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515

1616
import pkg_resources
1717
from datetime import datetime
18+
import sys
19+
import os
20+
21+
sys.path.append(os.path.join(os.path.dirname(__file__), "."))
22+
from doc_utils.jumpstart_doc_utils import create_jumpstart_model_table # noqa: E402
1823

1924
project = "sagemaker"
2025
version = pkg_resources.require(project)[0].version
@@ -71,6 +76,12 @@
7176
# For Adobe Analytics
7277
html_js_files = [
7378
"https://a0.awsstatic.com/s_code/js/3.0/awshome_s_code.js",
79+
"https://cdn.datatables.net/1.10.23/js/jquery.dataTables.min.js",
80+
"js/datatable.js",
81+
]
82+
83+
html_css_files = [
84+
"https://cdn.datatables.net/1.10.23/css/jquery.dataTables.min.css",
7485
]
7586

7687
html_context = {"css_files": ["_static/theme_overrides.css"]}
@@ -83,3 +94,7 @@
8394

8495
# autosectionlabel
8596
autosectionlabel_prefix_document = True
97+
98+
99+
def setup(app):
100+
create_jumpstart_model_table()

doc/doc_utils/__init__.py

Whitespace-only changes.

doc/doc_utils/jumpstart.rst

Whitespace-only changes.

doc/doc_utils/jumpstart_doc_utils.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License"). You
4+
# may not use this file except in compliance with the License. A copy of
5+
# the License is located at
6+
#
7+
# http://aws.amazon.com/apache2.0/
8+
#
9+
# or in the "license" file accompanying this file. This file is
10+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11+
# ANY KIND, either express or implied. See the License for the specific
12+
# language governing permissions and limitations under the License.
13+
from __future__ import absolute_import
14+
from urllib import request
15+
import json
16+
from packaging.version import Version
17+
18+
JUMPSTART_REGION = "eu-west-2"
19+
SDK_MANIFEST_FILE = "models_manifest.json"
20+
JUMPSTART_BUCKET_BASE_URL = "https://jumpstart-cache-prod-{}.s3.{}.amazonaws.com".format(
21+
JUMPSTART_REGION, JUMPSTART_REGION
22+
)
23+
24+
25+
def get_jumpstart_sdk_manifest():
26+
url = "{}/{}".format(JUMPSTART_BUCKET_BASE_URL, SDK_MANIFEST_FILE)
27+
with request.urlopen(url) as f:
28+
models_manifest = f.read().decode("utf-8")
29+
return json.loads(models_manifest)
30+
31+
32+
def get_jumpstart_sdk_spec(key):
33+
url = "{}/{}".format(JUMPSTART_BUCKET_BASE_URL, key)
34+
with request.urlopen(url) as f:
35+
model_spec = f.read().decode("utf-8")
36+
return json.loads(model_spec)
37+
38+
39+
def create_jumpstart_model_table():
40+
sdk_manifest = get_jumpstart_sdk_manifest()
41+
sdk_manifest_top_versions_for_models = {}
42+
43+
for model in sdk_manifest:
44+
if model["model_id"] not in sdk_manifest_top_versions_for_models:
45+
sdk_manifest_top_versions_for_models[model["model_id"]] = model
46+
else:
47+
if Version(
48+
sdk_manifest_top_versions_for_models[model["model_id"]]["version"]
49+
) < Version(model["version"]):
50+
sdk_manifest_top_versions_for_models[model["model_id"]] = model
51+
52+
file_content = []
53+
54+
file_content.append("==================================\n")
55+
file_content.append("JumpStart Available Model Table\n")
56+
file_content.append("==================================\n")
57+
file_content.append(
58+
"""
59+
JumpStart for the SageMaker Python SDK uses model ids and model versions to access the necessary
60+
utilities. This table serves to provide the core material plus some extra information that can be useful
61+
in selecting the correct model id and corresponding parameters.\n
62+
"""
63+
)
64+
file_content.append(
65+
"""
66+
If you want to automatically use the latest version of the model, use "*" for the `model_version` attribute.
67+
We highly suggest pinning an exact model version however.\n
68+
"""
69+
)
70+
file_content.append("\n")
71+
file_content.append(".. list-table:: Available Models\n")
72+
file_content.append(" :widths: 50 20 20 20\n")
73+
file_content.append(" :header-rows: 1\n")
74+
file_content.append(" :class: datatable\n")
75+
file_content.append("\n")
76+
file_content.append(" * - Model ID\n")
77+
file_content.append(" - Fine Tunable?\n")
78+
file_content.append(" - Latest Version\n")
79+
file_content.append(" - Min SDK Version\n")
80+
81+
for model in sdk_manifest_top_versions_for_models.values():
82+
model_spec = get_jumpstart_sdk_spec(model["spec_key"])
83+
file_content.append(" * - {}\n".format(model["model_id"]))
84+
file_content.append(" - {}\n".format(model_spec["training_supported"]))
85+
file_content.append(" - {}\n".format(model["version"]))
86+
file_content.append(" - {}\n".format(model["min_version"]))
87+
88+
f = open("doc_utils/jumpstart.rst", "w")
89+
f.writelines(file_content)

doc/overview.rst

Lines changed: 53 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,11 @@ Here is an example:
577577
Use Prebuilt Models with SageMaker JumpStart
578578
********************************************
579579

580+
.. toctree::
581+
:maxdepth: 2
582+
583+
doc_utils/jumpstart
584+
580585
`Amazon SageMaker JumpStart <https://aws.amazon.com/sagemaker/getting-started/>`__ is a
581586
SageMaker feature that helps users bring machine learning (ML)
582587
applications to market using prebuilt solutions for common use cases,
@@ -628,11 +633,11 @@ the ``model_id`` and ``model_version`` needed to retrieve the URI.
628633

629634
- ``model_id``: A unique identifier for the JumpStart model.
630635
- ``model_version``: The version of the specifications for the
631-
model. To use the latest version, enter ``*``. This is a
636+
model. To use the latest version, enter ``"*"``. This is a
632637
required parameter.
633638
634639
To retrieve a model, first select a ``model id`` and ``version`` from
635-
the Available Models.
640+
the :doc:`available models <./doc_utils/jumpstart>`.
636641

637642
.. code:: python
638643
@@ -652,7 +657,7 @@ Then use those values to retrieve the model as follows.
652657
JumpStart scripts
653658
-----------------
654659

655-
To adapt JumpStart models for the SageMaker Python SDK, a custom
660+
To adapt JumpStart models for SageMaker, a custom
656661
script is needed to perform training or inference. JumpStart
657662
maintains a suite of scripts used for each of the models in the
658663
JumpStart S3 bucket, which can be accessed using the SageMaker Python
@@ -741,6 +746,7 @@ see `Model <https://sagemaker.readthedocs.io/en/stable/api/inference/model.html
741746
.. code:: python
742747
743748
from sagemaker.model import Model
749+
from sagemaker.predictor import Predictor
744750
from sagemaker.session import Session
745751
746752
# Create the SageMaker model instance
@@ -750,6 +756,7 @@ see `Model <https://sagemaker.readthedocs.io/en/stable/api/inference/model.html
750756
   source_dir=script_uri,
751757
   entry_point="inference.py",
752758
   role=Session().get_caller_identity_arn(),
759+
   predictor_cls=Predictor,
753760
)
754761
755762
Save the output from deploying the model to a variable named
@@ -761,15 +768,12 @@ Deployment may take about 5 minutes.
761768

762769
.. code:: python
763770
764-
from sagemaker.predictor import Predictor
765-
766771
predictor = model.deploy(
767772
   initial_instance_count=instance_count,
768773
   instance_type=instance_type,
769-
   predictor_cls=Predictor
770774
)
771775
772-
Because ``catboost`` relies on the PyTorch Deep Learning Containers
776+
Because ``catboost`` and ``lightgbm`` rely on the PyTorch Deep Learning Containers
773777
image, the corresponding Models and Endpoints display the “pytorch”
774778
prefix when viewed in the AWS console. To verify that these models
775779
were created successfully with your desired base model, refer to
@@ -780,7 +784,7 @@ Perform Inference
780784
781785
Finally, use the ``predictor`` instance to query your endpoint. For
782786
``catboost-classification-model``, for example, the predictor accepts
783-
a string. For more information about how to use the predictor, see
787+
a csv. For more information about how to use the predictor, see
784788
the
785789
`Appendix <https://sagemaker.readthedocs.io/en/stable/overview.html#appendix>`__.
786790

@@ -807,9 +811,8 @@ using “training” as the model scope. Use the utility functions to
807811
retrieve the URI of each of the three components you need to
808812
continue. The HuggingFace model in this example requires a GPU
809813
instance, so use the ``ml.p3.2xlarge`` instance type. For a complete
810-
list of available SageMaker instance types , see `Available SageMaker
811-
Studio Instance
812-
Types <https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-available-instance-types.html>`__.
814+
list of available SageMaker instance types, see the `SageMaker On-Demand Pricing
815+
Table <https://aws.amazon.com/sagemaker/pricing/#On-Demand_Pricing>`__ and select 'Training'.
813816

814817
.. code:: python
815818
@@ -970,45 +973,45 @@ ContentType of ``application/list-text``.
970973

971974
.. container::
972975

973-
+-----------------------+-----------------------+-----------------------+
974-
| Task | Identifier | ContentType |
975-
+-----------------------+-----------------------+-----------------------+
976-
| Image Classification | ic | "application/x-image" |
977-
+-----------------------+-----------------------+-----------------------+
978-
| Object Detection | od, od1 | "application/x-image" |
979-
+-----------------------+-----------------------+-----------------------+
980-
| Semantic Segmentation | semseg | "application/x-image" |
981-
+-----------------------+-----------------------+-----------------------+
982-
| Instance Segmentation | is | "application/x-image" |
983-
+-----------------------+-----------------------+-----------------------+
984-
| Text Classification | tc | "application/x-text" |
985-
+-----------------------+-----------------------+-----------------------+
986-
| Sentence Pair | spc | "a |
987-
| Classification | | pplication/list-text" |
988-
+-----------------------+-----------------------+-----------------------+
989-
| Extractive Question | eqa | "a |
990-
| Answering | | pplication/list-text" |
991-
+-----------------------+-----------------------+-----------------------+
992-
| Text Generation | textgeneration | "application/x-text" |
993-
+-----------------------+-----------------------+-----------------------+
994-
| Image Classification | icembedding | "application/x-image" |
995-
| Embedding | | |
996-
+-----------------------+-----------------------+-----------------------+
997-
| Text Classification | tcembedding | "application/x-text" |
998-
| Embedding | | |
999-
+-----------------------+-----------------------+-----------------------+
1000-
| Named-entity | ner | "application/x-text" |
1001-
| Recognition | | |
1002-
+-----------------------+-----------------------+-----------------------+
1003-
| Text Summarization | summarization | "application/x-text" |
1004-
+-----------------------+-----------------------+-----------------------+
1005-
| Text Translation | translation | "application/x-text" |
1006-
+-----------------------+-----------------------+-----------------------+
1007-
| Tabular Regression | regression | "text/csv" |
1008-
+-----------------------+-----------------------+-----------------------+
1009-
| Tabular | classification | "text/csv" |
1010-
| Classification | | |
1011-
+-----------------------+-----------------------+-----------------------+
976+
+-----------------------+-----------------------+-------------------------+
977+
| Task | Identifier | ContentType |
978+
+-----------------------+-----------------------+-------------------------+
979+
| Image Classification | ic | "application/x-image" |
980+
+-----------------------+-----------------------+-------------------------+
981+
| Object Detection | od, od1 | "application/x-image" |
982+
+-----------------------+-----------------------+-------------------------+
983+
| Semantic Segmentation | semseg | "application/x-image" |
984+
+-----------------------+-----------------------+-------------------------+
985+
| Instance Segmentation | is | "application/x-image" |
986+
+-----------------------+-----------------------+-------------------------+
987+
| Text Classification | tc | "application/x-text" |
988+
+-----------------------+-----------------------+-------------------------+
989+
| Sentence Pair | spc | "application/list-text" |
990+
| Classification | | |
991+
+-----------------------+-----------------------+-------------------------+
992+
| Extractive Question | eqa | "application/list-text" |
993+
| Answering | | |
994+
+-----------------------+-----------------------+-------------------------+
995+
| Text Generation | textgeneration | "application/x-text" |
996+
+-----------------------+-----------------------+-------------------------+
997+
| Image Classification | icembedding | "application/x-image" |
998+
| Embedding | | |
999+
+-----------------------+-----------------------+-------------------------+
1000+
| Text Classification | tcembedding | "application/x-text" |
1001+
| Embedding | | |
1002+
+-----------------------+-----------------------+-------------------------+
1003+
| Named-entity | ner | "application/x-text" |
1004+
| Recognition | | |
1005+
+-----------------------+-----------------------+-------------------------+
1006+
| Text Summarization | summarization | "application/x-text" |
1007+
+-----------------------+-----------------------+-------------------------+
1008+
| Text Translation | translation | "application/x-text" |
1009+
+-----------------------+-----------------------+-------------------------+
1010+
| Tabular Regression | regression | "text/csv" |
1011+
+-----------------------+-----------------------+-------------------------+
1012+
| Tabular | classification | "text/csv" |
1013+
| Classification | | |
1014+
+-----------------------+-----------------------+-------------------------+
10121015

10131016
********************************
10141017
SageMaker Automatic Model Tuning

doc/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
sphinx==3.1.1
22
sphinx-rtd-theme==0.5.0
33
docutils==0.15.2
4+
packaging==20.9

doc/workflows/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ The SageMaker Python SDK supports managed training and inference for a variety o
1010
airflow/index
1111
step_functions/index
1212
pipelines/index
13+
lineage/index

doc/workflows/lineage/index.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
###################
2+
SageMaker Lineage
3+
###################
4+
Amazon SageMaker ML Lineage Tracking creates and stores information about the steps of a machine learning (ML) workflow from data preparation to model deployment. With the tracking information, you can reproduce the workflow steps, track model and dataset lineage, and establish model governance and audit standards.
5+
6+
SageMaker APIs for creating and managing SageMaker Lineage.
7+
8+
.. toctree::
9+
:maxdepth: 2
10+
11+
sagemaker.lineage

0 commit comments

Comments
 (0)