From 0f97542b54897a1807fcfedb3eb82dc57fdc6517 Mon Sep 17 00:00:00 2001 From: Basssem Halim Date: Mon, 11 May 2026 15:26:37 -0700 Subject: [PATCH 1/2] docs(ml_ops): Add Feature Store reference to Implement MLOps page Add FeatureStore documentation including: - Feature Store bullet in Key MLOps Features section - FeatureGroupManager example with LakeFormationConfig and IcebergProperties - Base FeatureGroup resource usage example - V2-to-V3 migration table entry for FeatureGroup - Feature Store entry in V3 Package Structure table --- docs/ml_ops/index.rst | 74 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/docs/ml_ops/index.rst b/docs/ml_ops/index.rst index e6e4d1b6ca..dd52baea60 100644 --- a/docs/ml_ops/index.rst +++ b/docs/ml_ops/index.rst @@ -162,6 +162,7 @@ Key MLOps Features * **Model Performance Tracking** - Real-time monitoring of model accuracy, latency, and business metrics with alerting * **Bias Detection and Fairness** - Built-in bias detection across protected attributes with automated reporting and remediation * **Automated Retraining** - Trigger-based model retraining based on performance degradation or data drift detection +* **Feature Store** - Centralized repository for storing, sharing, and managing ML features with support for both online and offline stores Supported MLOps Scenarios ------------------------- @@ -477,6 +478,75 @@ Train with MLflow metric tracking and deploy from the MLflow model registry. +Feature Store +-------------- + + +Create and manage feature groups for storing, retrieving, and sharing ML features across teams and models. + +**FeatureGroupManager with Lake Formation and Iceberg configuration:** + +.. code-block:: python + + from sagemaker.mlops.feature_store import FeatureGroupManager, FeatureDefinition, FeatureTypeEnum + from sagemaker.mlops.feature_store.feature_group_manager import LakeFormationConfig, IcebergProperties + from sagemaker.core.shapes import OnlineStoreConfig, OfflineStoreConfig, S3StorageConfig + + # Define features + feature_definitions = [ + FeatureDefinition(feature_name="customer_id", feature_type=FeatureTypeEnum.STRING), + FeatureDefinition(feature_name="purchase_count", feature_type=FeatureTypeEnum.INTEGRAL), + FeatureDefinition(feature_name="avg_order_value", feature_type=FeatureTypeEnum.FRACTIONAL), + FeatureDefinition(feature_name="event_time", feature_type=FeatureTypeEnum.STRING), + ] + + # Configure Lake Formation for fine-grained access control + lake_formation_config = LakeFormationConfig( + enabled=True, + hybrid_access_mode_enabled=True, + acknowledge_risk=True, + ) + + # Configure Iceberg table properties + iceberg_properties = IcebergProperties( + properties={ + "write.target-file-size-bytes": "536870912", + "history.expire.min-snapshots-to-keep": "3", + } + ) + + # Create feature group with Lake Formation and Iceberg configs + feature_group = FeatureGroupManager.create( + feature_group_name="customer-features", + record_identifier_feature_name="customer_id", + event_time_feature_name="event_time", + feature_definitions=feature_definitions, + online_store_config=OnlineStoreConfig(enable_online_store=True), + offline_store_config=OfflineStoreConfig( + s3_storage_config=S3StorageConfig(s3_uri="s3://bucket/feature-store/"), + table_format="Iceberg", + ), + role_arn=role, + lake_formation_config=lake_formation_config, + iceberg_properties=iceberg_properties, + ) + +**Using the base FeatureGroup resource:** + +.. code-block:: python + + from sagemaker.core.resources import FeatureGroup + + # Retrieve an existing feature group + feature_group = FeatureGroup.get(feature_group_name="customer-features") + + # List feature groups + feature_groups = FeatureGroup.get_all() + for fg in feature_groups: + print(f"{fg.feature_group_name}: {fg.feature_group_status}") + + + Migration from V2 ------------------ @@ -524,6 +594,8 @@ MLOps Classes and Imports - ``sagemaker.core.workflow.pipeline_context.PipelineSession`` * - ``sagemaker.lineage.context.Context`` - ``sagemaker.core.lineage.context.Context`` + * - ``sagemaker.feature_store.feature_group.FeatureGroup`` + - ``sagemaker.mlops.feature_store.FeatureGroupManager`` V3 Package Structure @@ -543,7 +615,7 @@ V3 Package Structure * - ``sagemaker-serve`` - ModelBuilder (build, register, deploy) * - ``sagemaker-mlops`` - - Pipeline, ProcessingStep, TrainingStep, ModelStep, TuningStep, EMRServerlessStep, CacheConfig + - Pipeline, ProcessingStep, TrainingStep, ModelStep, TuningStep, EMRServerlessStep, CacheConfig, Feature Store (FeatureGroupManager, FeatureDefinition, DatasetBuilder) Explore comprehensive MLOps examples: From ac8781741a6d1ac7642d9ed9a482be4b0540ceca Mon Sep 17 00:00:00 2001 From: Basssem Halim Date: Mon, 11 May 2026 15:53:39 -0700 Subject: [PATCH 2/2] moving fs notebook to subdir --- ...3-feature-store-iceberg-properties-example.ipynb | 0 .../cross-account-feature-group-lakeformation-1.png | Bin .../imgs/fs-lf-cross-account1.png | Bin .../imgs/lakeformation-flow.png | Bin ...feature-store-lake-formation-cross-account.ipynb | 0 .../v3-feature-store-lake-formation.ipynb | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename v3-examples/ml-ops-examples/{ => v3-feature-store-examples/iceberg-metadata-management}/v3-feature-store-iceberg-properties-example.ipynb (100%) rename v3-examples/ml-ops-examples/v3-feature-store-examples/{ => lake-formation}/imgs/cross-account-feature-group-lakeformation-1.png (100%) rename v3-examples/ml-ops-examples/v3-feature-store-examples/{ => lake-formation}/imgs/fs-lf-cross-account1.png (100%) rename v3-examples/ml-ops-examples/v3-feature-store-examples/{ => lake-formation}/imgs/lakeformation-flow.png (100%) rename v3-examples/ml-ops-examples/v3-feature-store-examples/{ => lake-formation}/v3-feature-store-lake-formation-cross-account.ipynb (100%) rename v3-examples/ml-ops-examples/v3-feature-store-examples/{ => lake-formation}/v3-feature-store-lake-formation.ipynb (100%) diff --git a/v3-examples/ml-ops-examples/v3-feature-store-iceberg-properties-example.ipynb b/v3-examples/ml-ops-examples/v3-feature-store-examples/iceberg-metadata-management/v3-feature-store-iceberg-properties-example.ipynb similarity index 100% rename from v3-examples/ml-ops-examples/v3-feature-store-iceberg-properties-example.ipynb rename to v3-examples/ml-ops-examples/v3-feature-store-examples/iceberg-metadata-management/v3-feature-store-iceberg-properties-example.ipynb diff --git a/v3-examples/ml-ops-examples/v3-feature-store-examples/imgs/cross-account-feature-group-lakeformation-1.png b/v3-examples/ml-ops-examples/v3-feature-store-examples/lake-formation/imgs/cross-account-feature-group-lakeformation-1.png similarity index 100% rename from v3-examples/ml-ops-examples/v3-feature-store-examples/imgs/cross-account-feature-group-lakeformation-1.png rename to v3-examples/ml-ops-examples/v3-feature-store-examples/lake-formation/imgs/cross-account-feature-group-lakeformation-1.png diff --git a/v3-examples/ml-ops-examples/v3-feature-store-examples/imgs/fs-lf-cross-account1.png b/v3-examples/ml-ops-examples/v3-feature-store-examples/lake-formation/imgs/fs-lf-cross-account1.png similarity index 100% rename from v3-examples/ml-ops-examples/v3-feature-store-examples/imgs/fs-lf-cross-account1.png rename to v3-examples/ml-ops-examples/v3-feature-store-examples/lake-formation/imgs/fs-lf-cross-account1.png diff --git a/v3-examples/ml-ops-examples/v3-feature-store-examples/imgs/lakeformation-flow.png b/v3-examples/ml-ops-examples/v3-feature-store-examples/lake-formation/imgs/lakeformation-flow.png similarity index 100% rename from v3-examples/ml-ops-examples/v3-feature-store-examples/imgs/lakeformation-flow.png rename to v3-examples/ml-ops-examples/v3-feature-store-examples/lake-formation/imgs/lakeformation-flow.png diff --git a/v3-examples/ml-ops-examples/v3-feature-store-examples/v3-feature-store-lake-formation-cross-account.ipynb b/v3-examples/ml-ops-examples/v3-feature-store-examples/lake-formation/v3-feature-store-lake-formation-cross-account.ipynb similarity index 100% rename from v3-examples/ml-ops-examples/v3-feature-store-examples/v3-feature-store-lake-formation-cross-account.ipynb rename to v3-examples/ml-ops-examples/v3-feature-store-examples/lake-formation/v3-feature-store-lake-formation-cross-account.ipynb diff --git a/v3-examples/ml-ops-examples/v3-feature-store-examples/v3-feature-store-lake-formation.ipynb b/v3-examples/ml-ops-examples/v3-feature-store-examples/lake-formation/v3-feature-store-lake-formation.ipynb similarity index 100% rename from v3-examples/ml-ops-examples/v3-feature-store-examples/v3-feature-store-lake-formation.ipynb rename to v3-examples/ml-ops-examples/v3-feature-store-examples/lake-formation/v3-feature-store-lake-formation.ipynb