-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
With the sunsetting of Python 2 earlier this year, we’re taking this opportunity to work on v2.0.0 and include some breaking changes that we have been considering. Our approach is that this isn’t meant to be a revolutionary overhaul. We don’t plan on rewriting everything entirely, and intend to keep the core experience largely the same as it was before. While we do have an opportunity to make breaking changes here, I do want to make sure each breaking change is meaningful, and not simply creating a different user experience for the sake of doing so.
I realize the following lists might look like a lot, but I did attempt to keep the list of changes relatively short. There are always going to be lots of changes we wish we could make to the Python SDK, but there are two categories of changes I deliberately excluded: (1) smaller improvements that can be done without incurring a breaking change and (2) bigger improvements/features that deserve their own dedicated planning.
6/4/20 edit: Due to how things have been going (and resourcing), some items have been deprioritized. I've also edited the timeline.
7/10/20 edit: Updated the timeline and added one item due to some changes in team planning.
7/28/20 edit: Updated last two dates in timeline.
Timeline
We are targeting the second half of July for a release, with release candidates starting at the end of May. More concrete dates to come as we get further along in implementation.
Timeframe | Milestone |
---|---|
5/8/20 | create branch for v2 development |
5/18/20 | start including warnings in v1 for upcoming changes |
mid June | start releasing release candidates |
7/29/20 | last v1 release. After this, merges to master are limited to critical/urgent changes. |
8/3/20 | v2.0.0 release |
Major Changes
Description | Issue |
---|---|
Deprecate Python 2 support for the Python SDK | #1461 |
Deprecate TensorFlow "legacy mode" (in favor of "script mode") | #1462 |
Require framework_version for frameworks. For frameworks with multiple Python versions supported, require py_version . |
#1465 |
Create new resources each time with deploy() and transformer() |
#1470 |
Create a single module for generating image URIs | #1464 |
Separate the functionality of printing logs from attach() |
#1405 |
Session |
|
Create a script for upgrading from v1 to v2 code | #1478 |
Move SerDe to dedicated modules | #1694 |
Smaller Changes
Description | Issue |
---|---|
Remove scipy from required dependencies |
#1471 |
Rename unclear/inconsistent names | #1473 |
**kwargs |
|
Deprecate CLI | #1476 |
Deprecate unused parameters | #1475 |
Other Possibilities
This is the shortlist of items that almost made the cut. Some may end up being included, time permitting.
- Allow framework entry points to not be in the top-level directory of
source_dir
(breaking: preserve script path when S3 source_dir is provided #941) - Revisit how hyperparameters are encoded (Hyperparameter values forcefully converted to strings, thus unable to pass a list #613)
- Introduce KMS support for
Session.default_bucket()
and use that for frameworksourcedir.tar.gz
files (No KMS Key support #1124) - Default
wait=True
for HyperparameterTuning and Transform Jobs - Match some of
ScriptProcessor
's interface to be more like framework estimators, e.g.source_dir
/code_location
(Please add support forrequirements.txt
in ScriptProcessor similar to other "Script Mode" parts of the SageMaker Python SDK #1248)
Project Board
https://github.com/aws/sagemaker-python-sdk/projects/1