Skip to content

feature: Add ModelDataSource and SourceUri support for model package. #4492

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

mrudulmn
Copy link
Contributor

@mrudulmn mrudulmn commented Mar 11, 2024

Issue #, if available:

Description of changes:

  • Supporting Model Data Source and Source Uri parameter for model package and register steps. Involves:
    • Adding source_uri to register step of Model class and other children classes.
    • Removal of existing checks for disallowing dict form for model data when registering/ creating model package, instead disallow only if it is un-versioned model package. Also disallow source uri usage if un-versioned.
    • when source_uri and containers are specified during registration:
      • if source_uri is not a model package or model arn:
        • first make model package with inference spec derived from containers and then update the model package with source_uri. This is done since the base sdk disallows providing source uri and inference spec simultaneously while creating model package.
      • if source_uri is a model package or model arn
        • Ignore containers/inference spec passed as these are supposed to be auto populated by model registry from the source uri and also passing source uri and inference spec simultaneously is not allowed in the base sdk.
  • Add support to allow Inference spec to be added later for model packages.
  • Add support to allow source uri to be added later for model packages.

Testing done:

  • Ran unit tests and added additional ones as well.
  • Ran additionally added integ tests.

Merge Checklist

Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your pull request.

General

  • I have read the CONTRIBUTING doc
  • I certify that the changes I am introducing will be backward compatible, and I have discussed concerns about this, if any, with the Python SDK team
  • I used the commit message format described in CONTRIBUTING
  • I have passed the region in to all S3 and STS clients that I've initialized as part of this change.
  • I have updated any necessary documentation, including READMEs and API docs (if appropriate)

Tests

  • I have added tests that prove my fix is effective or that my feature works (if appropriate)
  • I have added unit and/or integration tests as appropriate to ensure backward compatibility of the changes
  • I have checked that my tests are not configured for a specific region or account (if appropriate)
  • I have used unique_name_from_base to create resource names in integ tests (if appropriate)

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Comment on lines 2256 to 2257
if containers is not None and image_uris is not None:
raise ValueError("Cannot have both containers and image_uris.")
if containers is None and image_uris is None:
raise ValueError("Should have either containers or image_uris for inference.")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can have it as
(containers is not None) ^ (image_uris is None):

raise ValueError("Should have either containers or image_uris for inference.")

Comment on lines +4137 to +4145
del request["SourceUri"]
model_package = self.sagemaker_client.create_model_package(**request)
update_source_uri_args = {
"ModelPackageArn": model_package.get("ModelPackageArn"),
"SourceUri": request_source_uri,
}
return self.sagemaker_client.update_model_package(**update_source_uri_args)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add comment in code why doing create and then update? I myself bit confused. I believe it is for the case where model(inference spec is present) we would first go with inference spec during create and then add sourceUri

Comment on lines 4130 to 4132
if re.match(MODEL_PACKAGE_ARN_PATTERN, request["SourceUri"]) or re.match(
MODEL_ARN_PATTERN, request["SourceUri"]
):
if "InferenceSpecification" in request:
del request["InferenceSpecification"]
return self.sagemaker_client.create_model_package(**request)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe you are doing this when source uri is model package or model then remove inference spec and only include sourceuri for auto-population. Can we add comment for the same.
Also instead of if condition lets add a utility function to see if sourceUri can be auto-populated. As of now it would be restricted to model package and model arn but in future more arns we can auto-populate if possible.

@mrudulmn mrudulmn force-pushed the feature-model-package-modeldatasource-sourceuri branch from dfc030d to 5c4d134 Compare March 12, 2024 13:24
@mrudulmn mrudulmn force-pushed the feature-model-package-modeldatasource-sourceuri branch from 5c4d134 to 8fc2251 Compare March 12, 2024 13:25
@mrudulmn mrudulmn marked this pull request as ready for review March 12, 2024 13:33
@mrudulmn mrudulmn requested a review from a team as a code owner March 12, 2024 13:33
@mrudulmn mrudulmn requested review from liujiaorr and removed request for a team March 12, 2024 13:33
Copy link

codecov bot commented Mar 12, 2024

Codecov Report

Attention: Patch coverage is 90.32258% with 6 lines in your changes are missing coverage. Please review.

Project coverage is 87.27%. Comparing base (8b206ba) to head (de650fa).
Report is 73 commits behind head on master.

Files Patch % Lines
src/sagemaker/session.py 86.84% 5 Missing ⚠️
src/sagemaker/model.py 94.44% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4492      +/-   ##
==========================================
+ Coverage   86.94%   87.27%   +0.32%     
==========================================
  Files        1203      388     -815     
  Lines      107211    36420   -70791     
==========================================
- Hits        93211    31784   -61427     
+ Misses      14000     4636    -9364     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor

@liujiaorr liujiaorr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/Bot run all

@mufaddal-rohawala
Copy link
Member

AWS CodeBuild CI Report

  • CodeBuild project: sagemaker-python-sdk-local-mode-tests
  • Commit ID: de650fa
  • Result: FAILED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

@mufaddal-rohawala
Copy link
Member

AWS CodeBuild CI Report

  • CodeBuild project: sagemaker-python-sdk-pr
  • Commit ID: de650fa
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

@mufaddal-rohawala
Copy link
Member

AWS CodeBuild CI Report

  • CodeBuild project: sagemaker-python-sdk-notebook-tests
  • Commit ID: de650fa
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

@liujiaorr liujiaorr merged commit b51a613 into aws:master Mar 12, 2024
@mufaddal-rohawala
Copy link
Member

AWS CodeBuild CI Report

  • CodeBuild project: sagemaker-python-sdk-slow-tests
  • Commit ID: de650fa
  • Result: FAILED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

bencrabtree pushed a commit to bencrabtree/sagemaker-python-sdk that referenced this pull request Mar 13, 2024
benieric added a commit that referenced this pull request Mar 15, 2024
* prepare release v2.210.0

* update development version to v2.210.1.dev0

* feat: Add new Triton DLC URIs (#4432)

* Add new Triton DLC URIs

* Update according to black and pylint

* feat: Support selective pipeline execution between function step and regular step (#4392)

* feat: Add AutoMLV2 support (#4461)

* Add AutoMLV2 support

* Improvements of the integration tests

---------

Co-authored-by: Anton Repushko <[email protected]>

* feature: Add TensorFlow 2.14 image configs (#4446)

* fix: remove enable_network_isolation from the python doc (#4465)

Co-authored-by: Rohan Gujarathi <[email protected]>

* doc: Add doc for new feature processor APIs and classes (#4250)

* fix: properly close sagemaker config file after loading config (#4457)

Closes #4456

* feat: instance specific jumpstart host requirements (#4397)

* feat: instance specific jumpstart host requirements

* chore: add js support for copies resource requirement, enforce coupling with ResourceRequirements class

* fix: typing

* fix: pylint

* change: Bump Apache Airflow version to 2.8.2 (#4470)

* Update tox.ini

* Update test_requirements.txt

* fix: make sure gpus are found in local_gpu run (#4384)

* fix: make sure gpus are found in local_gpu run

* fix: black formatting

* fix: adjust unit test

* feat: pin dll version to support python3.11 to the sdk (#4472)

Co-authored-by: Ashwin Krishna <[email protected]>

* fix: Skip No Canvas regions for test_deploy_best_candidate (#4477)

* prepare release v2.211.0

* update development version to v2.211.1.dev0

* change: Enhance model builder selection logic to include model size (#4429)

* change: Enhance model builder selection logic to include model size

* Fix conflicts

* Address PR comments

* fix formatting

* fix formatting of test

* Fix token in tasks.json

* Increase coverage for tests

* fix formatting

* Fix requirements

* Import code instead of importing accelerate

* Fix formatting

* Setup dependencies

* change: Upgrade smp to version 2.2 (#4479)

* upgrading smp to version 2.2

* fixing linting issue

* fixing syntax error with multiline if statement

* upgrading smp to version 2.2

* fixing linting issue

* fixing syntax error with multiline if statement

* fixing formatting

---------

Co-authored-by: Andrew Tian <[email protected]>

* feat: Update SM Python SDK for PT 2.2.0 SM DLC (#4481)

* update pt2.2 sm training dlc pysdk

* update pt2.2 sm inference dlc pysdk and region list

* fix: Create custom tarfile extractall util to fix backward compatibility issue (#4476)

* fix: Create custom tarfile extractall util to fix backward compatibility issue

* Address review comments

* fix logger.error statements

* prepare release v2.212.0

* update development version to v2.212.1.dev0

* change: Update tblib constraint (#4452)

* fix: make unit tests compatible with pytest-xdist (#4486)

* fix: make unit tests compatible with pytest-xdist

* fix failing test

* feature: Add overriding logic in ModelBuilder when task is provided (#4460)

* feat: Add Optional task to Model

* Revert "feat: Add Optional task to Model"

This reverts commit fd3e86b.

* Add override logic in ModelBuilder with task provided

* Adjusted formatting

* Add extra unit tests for invalid inputs

* Address PR comments

* Add more test inputs to integration test

* Add model_metadata field to ModelBuilder

* Update doc

* Update doc

* Adjust formatting

---------

Co-authored-by: Samrudhi Sharma <[email protected]>
Co-authored-by: Xiong Zeng <[email protected]>

* feature: Accept user-defined env variables for the entry-point (#4175)

* fix: Move sagemaker pysdk version check after bootstrap in remote job (#4487)

* change: enable github actions for PRs (#4489)

* change: enable github actions for PRs

* Update codebuild-ci.yml

* trigger on pull_request_target

* add source-version-override

* fix permission

* feature: Add ModelDataSource and SourceUri support for model package and while registering (#4492)

Co-authored-by: Erick Benitez-Ramos <[email protected]>

* feat: support JumpStart proprietary models (#4467)

* feat: add proprietary manifest/specs parsing

add unittests for test_cache

small refactoring

address comments and more unittests

fix linting and fix more tests

fix: pylint

feat: JumpStartModel class for prop models

* remove unused imports and fix docstyle

* fix: remove unused args

* fix: remove unused args

* fix: more unused vars

* fix: slow tests

* fix: unittests

* added more tests to cover some lines

* remove estimator warn check

* chore: address comments re performance

* fix: address comments

* complete list experience and other fixes

* fix: pylint

* add doc utils and fix pylint

* fix: docstyle

* fix: doc

* fix: default payloads

* fix: doc and tags and enums

* fix: jumpstart doc

* rename to open_weights and fix filtering

* update filter name

* doc update

* fix: black

* rename to proprietary model and fix unittests

* address comments

* fix: docstyle and flake8

* address more comments and fix doc

* put back doc utils for future refactoring

* add prop model title in doc

* doc update

---------

Co-authored-by: liujiaor <[email protected]>

* chore: emit warning when no instance specific gated training env var is available, and raise exception when accept_eula flag is not supplied (#4485)

* fix: raise exception when no instance specific gated training env var available

* chore: raise client exception if accept_eula flag is not set for gated models

* chore: address flake8 errors

* chore: emit warning when instance type is chosen with no gated training artifacts

* change: bump jinja2 to 3.1.3 in doc/requirments.txt (#4421) (#4423)

* change: bump jinja2 to 3.1.3 in doc/requirments.txt (#4421)

* change: bump jinja2 to 3.1.3 in doc/requirments.txt

* Update requirements.txt

* feature: TGI 1.4.0 (#4424)

* documentation: fix the ClarifyCheckStep documentation to mention PDP (#4259)

* documentation: fix the ClarifyCheckStep documentation to mention PDP support

* fix: break the lines to meet pylint requirement

---------

Co-authored-by: Shing Lyu <[email protected]>

* documentation: Explain the ClarifyCheckStep and QualityCheckStep parameters (#4261)

* documentation: explain the ClarifyCheckStep and QualityCheckStep parameters

* fix: remove trailing space

---------

Co-authored-by: Shing Lyu <[email protected]>

* feat: Telemetry metrics (#4414)

* Emit additional telemetry metrics

* Fix unit tests

* Emit endpoint failure to telemetry

* Address PR Comments

* Emit latency in telemetry

* Address PR Comments

* Addressed PR Comments

* Address PR Comments

* Fix tests

* Fix integ tests

---------

Co-authored-by: Jonathan Makunga <[email protected]>
Co-authored-by: Erick Benitez-Ramos <[email protected]>

* documentation: change order of pipelines topics (#4427)

* prepare release v2.208.0

* update development version to v2.208.1.dev0

* feature: AutoGluon 1.0.0 image_uris update (#4426)

---------

Co-authored-by: Erick Benitez-Ramos <[email protected]>
Co-authored-by: Jinyoung Lim <[email protected]>
Co-authored-by: Shing Lyu <[email protected]>
Co-authored-by: Shing Lyu <[email protected]>
Co-authored-by: Jonathan Makunga <[email protected]>
Co-authored-by: Jonathan Makunga <[email protected]>
Co-authored-by: stacicho <[email protected]>
Co-authored-by: ci <ci>
Co-authored-by: tonyhu <[email protected]>

* feat: add hub and hubcontent support in retrieval function for jumpstart model cache (#4438)

* feat: jsch jumpstart estimator support (#4439)

* Master jumpstart curated hub (#4464)

* add hub_arn support for accept_types, content_types, serializers, deserializers, and predictor (#4463)

* feature: JumpStart CuratedHub class creation and function definitions (#4448)

* MultiPartCopy with Sync Algorithm (#4475)

* first pass at sync function with util classes

* adding tests and update clases

* linting

* file generator class inheritance

* lint

* multipart copy and algorithm updates

* modularize sync

* reformatting folders

* testing for sync

* do not tolerate vulnerable

* remove prints

* handle multithreading progress bar

* update tests

* optimize function and add hub bucket prefix

* docstrings and linting

* rebase with master

* bad rebase

* trying to fix codecov

* uncomment codebuild-ci

---------

Co-authored-by: ci <ci>
Co-authored-by: Nikhil Kulkarni <[email protected]>
Co-authored-by: qidewenwhen <[email protected]>
Co-authored-by: Anton Repushko <[email protected]>
Co-authored-by: Anton Repushko <[email protected]>
Co-authored-by: Sai Parthasarathy Miduthuri <[email protected]>
Co-authored-by: Rohan Gujarathi <[email protected]>
Co-authored-by: Rohan Gujarathi <[email protected]>
Co-authored-by: cansun <[email protected]>
Co-authored-by: Justin <[email protected]>
Co-authored-by: evakravi <[email protected]>
Co-authored-by: Kalyani Nikure <[email protected]>
Co-authored-by: gv <[email protected]>
Co-authored-by: akrishna1995 <[email protected]>
Co-authored-by: Ashwin Krishna <[email protected]>
Co-authored-by: Samrudhi Sharma <[email protected]>
Co-authored-by: adtian2 <[email protected]>
Co-authored-by: Andrew Tian <[email protected]>
Co-authored-by: Sirut Buasai <[email protected]>
Co-authored-by: Danny Bushkanets <[email protected]>
Co-authored-by: Erick Benitez-Ramos <[email protected]>
Co-authored-by: xiongz945 <[email protected]>
Co-authored-by: Samrudhi Sharma <[email protected]>
Co-authored-by: Xiong Zeng <[email protected]>
Co-authored-by: martinRenou <[email protected]>
Co-authored-by: mrudulmn <[email protected]>
Co-authored-by: Haotian An <[email protected]>
Co-authored-by: liujiaor <[email protected]>
Co-authored-by: Jinyoung Lim <[email protected]>
Co-authored-by: Shing Lyu <[email protected]>
Co-authored-by: Shing Lyu <[email protected]>
Co-authored-by: Jonathan Makunga <[email protected]>
Co-authored-by: Jonathan Makunga <[email protected]>
Co-authored-by: stacicho <[email protected]>
Co-authored-by: tonyhu <[email protected]>
benieric added a commit that referenced this pull request Mar 19, 2024
* fix: make sure gpus are found in local_gpu run (#4384)

* fix: make sure gpus are found in local_gpu run

* fix: black formatting

* fix: adjust unit test

* feat: pin dll version to support python3.11 to the sdk (#4472)

Co-authored-by: Ashwin Krishna <[email protected]>

* fix: Skip No Canvas regions for test_deploy_best_candidate (#4477)

* prepare release v2.211.0

* update development version to v2.211.1.dev0

* change: Enhance model builder selection logic to include model size (#4429)

* change: Enhance model builder selection logic to include model size

* Fix conflicts

* Address PR comments

* fix formatting

* fix formatting of test

* Fix token in tasks.json

* Increase coverage for tests

* fix formatting

* Fix requirements

* Import code instead of importing accelerate

* Fix formatting

* Setup dependencies

* change: Upgrade smp to version 2.2 (#4479)

* upgrading smp to version 2.2

* fixing linting issue

* fixing syntax error with multiline if statement

* upgrading smp to version 2.2

* fixing linting issue

* fixing syntax error with multiline if statement

* fixing formatting

---------

Co-authored-by: Andrew Tian <[email protected]>

* feat: Update SM Python SDK for PT 2.2.0 SM DLC (#4481)

* update pt2.2 sm training dlc pysdk

* update pt2.2 sm inference dlc pysdk and region list

* fix: Create custom tarfile extractall util to fix backward compatibility issue (#4476)

* fix: Create custom tarfile extractall util to fix backward compatibility issue

* Address review comments

* fix logger.error statements

* prepare release v2.212.0

* update development version to v2.212.1.dev0

* change: Update tblib constraint (#4452)

* fix: make unit tests compatible with pytest-xdist (#4486)

* fix: make unit tests compatible with pytest-xdist

* fix failing test

* feature: Add overriding logic in ModelBuilder when task is provided (#4460)

* feat: Add Optional task to Model

* Revert "feat: Add Optional task to Model"

This reverts commit fd3e86b.

* Add override logic in ModelBuilder with task provided

* Adjusted formatting

* Add extra unit tests for invalid inputs

* Address PR comments

* Add more test inputs to integration test

* Add model_metadata field to ModelBuilder

* Update doc

* Update doc

* Adjust formatting

---------

Co-authored-by: Samrudhi Sharma <[email protected]>
Co-authored-by: Xiong Zeng <[email protected]>

* feature: Accept user-defined env variables for the entry-point (#4175)

* fix: Move sagemaker pysdk version check after bootstrap in remote job (#4487)

* change: enable github actions for PRs (#4489)

* change: enable github actions for PRs

* Update codebuild-ci.yml

* trigger on pull_request_target

* add source-version-override

* fix permission

* feature: Add ModelDataSource and SourceUri support for model package and while registering (#4492)

Co-authored-by: Erick Benitez-Ramos <[email protected]>

* feat: support JumpStart proprietary models (#4467)

* feat: add proprietary manifest/specs parsing

add unittests for test_cache

small refactoring

address comments and more unittests

fix linting and fix more tests

fix: pylint

feat: JumpStartModel class for prop models

* remove unused imports and fix docstyle

* fix: remove unused args

* fix: remove unused args

* fix: more unused vars

* fix: slow tests

* fix: unittests

* added more tests to cover some lines

* remove estimator warn check

* chore: address comments re performance

* fix: address comments

* complete list experience and other fixes

* fix: pylint

* add doc utils and fix pylint

* fix: docstyle

* fix: doc

* fix: default payloads

* fix: doc and tags and enums

* fix: jumpstart doc

* rename to open_weights and fix filtering

* update filter name

* doc update

* fix: black

* rename to proprietary model and fix unittests

* address comments

* fix: docstyle and flake8

* address more comments and fix doc

* put back doc utils for future refactoring

* add prop model title in doc

* doc update

---------

Co-authored-by: liujiaor <[email protected]>

* chore: emit warning when no instance specific gated training env var is available, and raise exception when accept_eula flag is not supplied (#4485)

* fix: raise exception when no instance specific gated training env var available

* chore: raise client exception if accept_eula flag is not set for gated models

* chore: address flake8 errors

* chore: emit warning when instance type is chosen with no gated training artifacts

* fix: sagemaker session region not being used (#4469)

* fix: sagemaker session region not being used

* chore: add unit tests

* fix: remove all JUMPSTART_DEFAULT_REGION_NAME default arguments

* chore: use get_region_fallback throughout

* chore: remove unnecessary if statement

* chore: remove unnecessary if statement (2)

---------

Co-authored-by: Erick Benitez-Ramos <[email protected]>

* fix: add PT 2.2 support for smdistributed, pytorchddp, and torch_distributed distributions (#4480)

* Add support for smdistributed, pytorchddp, torch_distributed for PT 2.2

* formatting

* formatting

---------

Co-authored-by: liujiaor <[email protected]>

* change: split coverage out from testenv in tox.ini (#4495)

Co-authored-by: Ashwin Krishna <[email protected]>

* change: add ci-health checks (#4493)

* feat: tgi optimum 0.0.19, 0.0.20 releases (#4496)

* feature: Add support for Streaming Inference (#4497)

* feature: Add support for Streaming Inference

* fix: codestyle-docs-test

* fix: codestyle-docs-test

* Add AutoML -> AutoMLV2 mapper (#4500)

Co-authored-by: liujiaor <[email protected]>

* Skip of tests which are long running and causing the ResourceLimitInUse exception (#4504)

* Improvement of the tuner documentation (#4506)

* prepare release v2.213.0

* update development version to v2.213.1.dev0

* fix:urge customers to install latest version (#4507)

* fix: list jumpstart models with invalid version strings (#4511)

* fix: list jumpstart models with invalid versions

* docstyle

* docstyle

* pylint

* add more test

* fix

* fix: skip failing pt test (#4512)

* fix: skip failing pt test

* black-format

---------

Co-authored-by: gv <[email protected]>
Co-authored-by: akrishna1995 <[email protected]>
Co-authored-by: Ashwin Krishna <[email protected]>
Co-authored-by: Kalyani Nikure <[email protected]>
Co-authored-by: ci <ci>
Co-authored-by: Samrudhi Sharma <[email protected]>
Co-authored-by: adtian2 <[email protected]>
Co-authored-by: Andrew Tian <[email protected]>
Co-authored-by: Sirut Buasai <[email protected]>
Co-authored-by: Danny Bushkanets <[email protected]>
Co-authored-by: xiongz945 <[email protected]>
Co-authored-by: Samrudhi Sharma <[email protected]>
Co-authored-by: Xiong Zeng <[email protected]>
Co-authored-by: martinRenou <[email protected]>
Co-authored-by: qidewenwhen <[email protected]>
Co-authored-by: mrudulmn <[email protected]>
Co-authored-by: Haotian An <[email protected]>
Co-authored-by: liujiaor <[email protected]>
Co-authored-by: evakravi <[email protected]>
Co-authored-by: ruhanprasad <[email protected]>
Co-authored-by: Mufaddal Rohawala <[email protected]>
Co-authored-by: Anton Repushko <[email protected]>
malav-shastri pushed a commit to malav-shastri/sagemaker-python-sdk that referenced this pull request Jun 20, 2024
…and while registering (aws#4492)

Co-authored-by: Erick Benitez-Ramos <[email protected]>
jiapinw pushed a commit to jiapinw/sagemaker-python-sdk that referenced this pull request Jun 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants