Skip to content

Commit ae8ac1d

Browse files
authored
Merge branch 'master' into master
2 parents e0b2961 + 8b206ba commit ae8ac1d

Some content is hidden

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

53 files changed

+2672
-325
lines changed

CHANGELOG.md

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

3+
## v2.205.0 (2024-01-25)
4+
5+
### Features
6+
7+
* Support selective pipeline execution for function step
8+
9+
### Bug Fixes and Other Changes
10+
11+
* remove fastapi and uvicorn dependencies
12+
* Support using PipelineDefinitionConfig in local mode
13+
* update get_execution_role_arn from metadata file if present
14+
* update image_uri_configs 01-24-2024 06:17:33 PST
15+
* Add validation for empty ParameterString value in start local pipeline
16+
17+
## v2.204.0 (2024-01-23)
18+
19+
### Features
20+
21+
* add throughput management support for feature group
22+
* Support custom repack model settings
23+
* parallelize notebook search utils, add new operators
24+
25+
### Bug Fixes and Other Changes
26+
27+
* Enable galactus integ tests
28+
* JumpStart - TLV region launch
29+
* add warning message for job-prefixed pipeline steps when no job name is provided
30+
* TGI NeuronX
31+
* Updates for DJL 0.26.0 release
32+
* update sphinx version
33+
* Add PyTorch 2.1.0 SM Training DLC to UNSUPPORTED_DLC_IMAGE_FOR_SM_PARALLELISM list
34+
* Huggingface glue failing tests
35+
* change ConditionNot incorrect property Expression to Condition
36+
337
## v2.203.1 (2024-01-09)
438

539
### Bug Fixes and Other Changes

VERSION

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

doc/api/prep_data/feature_store.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,14 @@ Inputs
7575
:members:
7676
:show-inheritance:
7777

78+
.. autoclass:: sagemaker.feature_store.inputs.ThroughputConfig
79+
:members:
80+
:show-inheritance:
81+
82+
.. autoclass:: sagemaker.feature_store.inputs.ThroughputConfigUpdate
83+
:members:
84+
:show-inheritance:
85+
7886
.. autoclass:: sagemaker.feature_store.inputs.OnlineStoreConfig
7987
:members:
8088
:show-inheritance:
@@ -99,6 +107,10 @@ Inputs
99107
:members:
100108
:show-inheritance:
101109

110+
.. autoclass:: sagemaker.feature_store.inputs.ThroughputModeEnum
111+
:members:
112+
:show-inheritance:
113+
102114
.. autoclass:: sagemaker.feature_store.inputs.ResourceEnum
103115
:members:
104116
:show-inheritance:

doc/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
sphinx==3.4.3
1+
sphinx==5.1.1
22
sphinx-rtd-theme==0.5.0
33
docutils==0.15.2
44
packaging==20.9

setup.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ def read_requirements(filename):
6565
"platformdirs",
6666
"tblib>=1.7.0,<3",
6767
"urllib3<1.27",
68-
"uvicorn==0.22.0",
69-
"fastapi==0.95.2",
7068
"requests",
7169
"docker",
7270
"tqdm",

src/sagemaker/feature_store/feature_group.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@
6464
TtlDuration,
6565
OnlineStoreConfigUpdate,
6666
OnlineStoreStorageTypeEnum,
67+
ThroughputConfig,
68+
ThroughputConfigUpdate,
6769
)
6870
from sagemaker.utils import resolve_value_from_config, format_tags, Tags
6971

@@ -541,6 +543,7 @@ def create(
541543
tags: Optional[Tags] = None,
542544
table_format: TableFormatEnum = None,
543545
online_store_storage_type: OnlineStoreStorageTypeEnum = None,
546+
throughput_config: ThroughputConfig = None,
544547
) -> Dict[str, Any]:
545548
"""Create a SageMaker FeatureStore FeatureGroup.
546549
@@ -570,6 +573,8 @@ def create(
570573
table_format (TableFormatEnum): format of the offline store table (default: None).
571574
online_store_storage_type (OnlineStoreStorageTypeEnum): storage type for the
572575
online store (default: None).
576+
throughput_config (ThroughputConfig): throughput configuration of the
577+
feature group (default: None).
573578
574579
Returns:
575580
Response dict from service.
@@ -618,6 +623,9 @@ def create(
618623
)
619624
create_feature_store_args.update({"online_store_config": online_store_config.to_dict()})
620625

626+
if throughput_config:
627+
create_feature_store_args.update({"throughput_config": throughput_config.to_dict()})
628+
621629
# offline store configuration
622630
if s3_uri:
623631
s3_storage_config = S3StorageConfig(s3_uri=s3_uri)
@@ -656,17 +664,17 @@ def update(
656664
self,
657665
feature_additions: Sequence[FeatureDefinition] = None,
658666
online_store_config: OnlineStoreConfigUpdate = None,
667+
throughput_config: ThroughputConfigUpdate = None,
659668
) -> Dict[str, Any]:
660669
"""Update a FeatureGroup and add new features from the given feature definitions.
661670
662671
Args:
663672
feature_additions (Sequence[Dict[str, str]): list of feature definitions to be updated.
664673
online_store_config (OnlineStoreConfigUpdate): online store config to be updated.
665-
674+
throughput_config (ThroughputConfigUpdate): target throughput configuration
666675
Returns:
667676
Response dict from service.
668677
"""
669-
670678
if feature_additions is None:
671679
feature_additions_parameter = None
672680
else:
@@ -679,10 +687,15 @@ def update(
679687
else:
680688
online_store_config_parameter = online_store_config.to_dict()
681689

690+
throughput_config_parameter = (
691+
None if throughput_config is None else throughput_config.to_dict()
692+
)
693+
682694
return self.sagemaker_session.update_feature_group(
683695
feature_group_name=self.name,
684696
feature_additions=feature_additions_parameter,
685697
online_store_config=online_store_config_parameter,
698+
throughput_config=throughput_config_parameter,
686699
)
687700

688701
def update_feature_metadata(

src/sagemaker/feature_store/inputs.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,3 +453,79 @@ class ExpirationTimeResponseEnum(Enum):
453453

454454
DISABLED = "Disabled"
455455
ENABLED = "Enabled"
456+
457+
458+
class ThroughputModeEnum(Enum):
459+
"""Enum of throughput modes supported by feature group.
460+
461+
Throughput mode of feature group can be ON_DEMAND or PROVISIONED.
462+
"""
463+
464+
ON_DEMAND = "OnDemand"
465+
PROVISIONED = "Provisioned"
466+
467+
468+
@attr.s
469+
class ThroughputConfig(Config):
470+
"""Throughput configuration of the feature group.
471+
472+
Throughput configuration can be ON_DEMAND, or PROVISIONED with valid values for
473+
read and write capacity units. ON_DEMAND works best for less predictable traffic,
474+
while PROVISIONED works best for consistent and predictable traffic.
475+
476+
Attributes:
477+
mode (ThroughputModeEnum): Throughput mode
478+
provisioned_read_capacity_units (int): For provisioned feature groups, this indicates
479+
the read throughput you are billed for and can consume without throttling.
480+
provisioned_write_capacity_units (int): For provisioned feature groups, this indicates
481+
the write throughput you are billed for and can consume without throttling.
482+
"""
483+
484+
mode: ThroughputModeEnum = attr.ib(default=None)
485+
provisioned_read_capacity_units: int = attr.ib(default=None)
486+
provisioned_write_capacity_units: int = attr.ib(default=None)
487+
488+
def to_dict(self) -> Dict[str, Any]:
489+
"""Construct a dictionary based on the attributes provided.
490+
491+
Returns:
492+
dict represents the attributes.
493+
"""
494+
return Config.construct_dict(
495+
ThroughputMode=self.mode.value if self.mode else None,
496+
ProvisionedReadCapacityUnits=self.provisioned_read_capacity_units,
497+
ProvisionedWriteCapacityUnits=self.provisioned_write_capacity_units,
498+
)
499+
500+
501+
@attr.s
502+
class ThroughputConfigUpdate(Config):
503+
"""Target throughput configuration for the feature group.
504+
505+
Target throughput configuration can be ON_DEMAND, or PROVISIONED with valid values for
506+
read and write capacity units. ON_DEMAND works best for less predictable traffic,
507+
while PROVISIONED works best for consistent and predictable traffic.
508+
509+
Attributes:
510+
mode (ThroughputModeEnum): Target throughput mode
511+
provisioned_read_capacity_units (int): For provisioned feature groups, this indicates
512+
the read throughput you are billed for and can consume without throttling.
513+
provisioned_write_capacity_units (int): For provisioned feature groups, this indicates
514+
the write throughput you are billed for and can consume without throttling.
515+
"""
516+
517+
mode: ThroughputModeEnum = attr.ib(default=None)
518+
provisioned_read_capacity_units: int = attr.ib(default=None)
519+
provisioned_write_capacity_units: int = attr.ib(default=None)
520+
521+
def to_dict(self) -> Dict[str, Any]:
522+
"""Construct a dictionary based on the attributes provided.
523+
524+
Returns:
525+
dict represents the attributes.
526+
"""
527+
return Config.construct_dict(
528+
ThroughputMode=self.mode.value if self.mode else None,
529+
ProvisionedReadCapacityUnits=self.provisioned_read_capacity_units,
530+
ProvisionedWriteCapacityUnits=self.provisioned_write_capacity_units,
531+
)

src/sagemaker/huggingface/llm_utils.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ def get_huggingface_llm_image_uri(
5757
version=version,
5858
image_scope="inference",
5959
)
60+
if backend == "huggingface-neuronx":
61+
return image_uris.retrieve(
62+
"huggingface-llm-neuronx",
63+
region=region,
64+
version=version,
65+
image_scope="inference",
66+
inference_tool="neuronx",
67+
)
6068
if backend == "lmi":
6169
version = version or "0.24.0"
6270
return image_uris.retrieve(framework="djl-deepspeed", region=region, version=version)

src/sagemaker/image_uri_config/djl-deepspeed.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,38 @@
33
"inference"
44
],
55
"versions": {
6+
"0.26.0": {
7+
"registries": {
8+
"af-south-1": "626614931356",
9+
"il-central-1": "780543022126",
10+
"ap-east-1": "871362719292",
11+
"ap-northeast-1": "763104351884",
12+
"ap-northeast-2": "763104351884",
13+
"ap-northeast-3": "364406365360",
14+
"ap-south-1": "763104351884",
15+
"ap-southeast-1": "763104351884",
16+
"ap-southeast-2": "763104351884",
17+
"ap-southeast-3": "907027046896",
18+
"ca-central-1": "763104351884",
19+
"cn-north-1": "727897471807",
20+
"cn-northwest-1": "727897471807",
21+
"eu-central-1": "763104351884",
22+
"eu-north-1": "763104351884",
23+
"eu-west-1": "763104351884",
24+
"eu-west-2": "763104351884",
25+
"eu-west-3": "763104351884",
26+
"eu-south-1": "692866216735",
27+
"me-south-1": "217643126080",
28+
"sa-east-1": "763104351884",
29+
"us-east-1": "763104351884",
30+
"us-east-2": "763104351884",
31+
"us-west-1": "763104351884",
32+
"us-west-2": "763104351884",
33+
"ca-west-1": "204538143572"
34+
},
35+
"repository": "djl-inference",
36+
"tag_prefix": "0.26.0-deepspeed0.12.6-cu121"
37+
},
638
"0.25.0": {
739
"registries": {
840
"af-south-1": "626614931356",

src/sagemaker/image_uri_config/djl-neuronx.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,24 @@
33
"inference"
44
],
55
"versions": {
6+
"0.26.0": {
7+
"registries": {
8+
"ap-northeast-1": "763104351884",
9+
"ap-south-1": "763104351884",
10+
"ap-southeast-1": "763104351884",
11+
"ap-southeast-2": "763104351884",
12+
"eu-central-1": "763104351884",
13+
"eu-west-1": "763104351884",
14+
"eu-west-3": "763104351884",
15+
"sa-east-1": "763104351884",
16+
"us-east-1": "763104351884",
17+
"us-east-2": "763104351884",
18+
"us-west-2": "763104351884",
19+
"ca-west-1": "204538143572"
20+
},
21+
"repository": "djl-inference",
22+
"tag_prefix": "0.26.0-neuronx-sdk2.16.0"
23+
},
624
"0.25.0": {
725
"registries": {
826
"ap-northeast-1": "763104351884",

src/sagemaker/image_uri_config/djl-tensorrtllm.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,38 @@
33
"inference"
44
],
55
"versions": {
6+
"0.26.0": {
7+
"registries": {
8+
"af-south-1": "626614931356",
9+
"il-central-1": "780543022126",
10+
"ap-east-1": "871362719292",
11+
"ap-northeast-1": "763104351884",
12+
"ap-northeast-2": "763104351884",
13+
"ap-northeast-3": "364406365360",
14+
"ap-south-1": "763104351884",
15+
"ap-southeast-1": "763104351884",
16+
"ap-southeast-2": "763104351884",
17+
"ap-southeast-3": "907027046896",
18+
"ca-central-1": "763104351884",
19+
"cn-north-1": "727897471807",
20+
"cn-northwest-1": "727897471807",
21+
"eu-central-1": "763104351884",
22+
"eu-north-1": "763104351884",
23+
"eu-west-1": "763104351884",
24+
"eu-west-2": "763104351884",
25+
"eu-west-3": "763104351884",
26+
"eu-south-1": "692866216735",
27+
"me-south-1": "217643126080",
28+
"sa-east-1": "763104351884",
29+
"us-east-1": "763104351884",
30+
"us-east-2": "763104351884",
31+
"us-west-1": "763104351884",
32+
"us-west-2": "763104351884",
33+
"ca-west-1": "204538143572"
34+
},
35+
"repository": "djl-inference",
36+
"tag_prefix": "0.26.0-tensorrtllm0.7.1-cu122"
37+
},
638
"0.25.0": {
739
"registries": {
840
"af-south-1": "626614931356",

0 commit comments

Comments
 (0)