AI News HubLIVE
站內改寫5 分鐘閱讀

利用Amazon SageMaker Feature Store新功能加速ML特徵管道

Amazon SageMaker Feature Store釋出了三項新功能:原生AWS Lake Formation整合、額外的Apache Iceberg表屬性以及SageMaker Python SDK v3支援,以簡化機器學習特徵管道的安全治理和成本最佳化。

來源AWS Machine Learning Blog作者: Dhaval Shah

Amazon SageMaker Feature Store是一個完全託管的專門儲存庫,用於儲存、共享和管理機器學習模型的特徵。現在,它新增了對Apache Iceberg表格式、流式攝入、可擴充套件批次攝入以及透過AWS Lake Formation進行細粒度訪問控制的支援。

隨著組織將機器學習平臺從實驗階段擴充套件到生產環境,兩個操作挑戰始終浮現:一是保護敏感特徵資料的訪問,而不為每個新特徵組引入手動開銷;二是在高頻率流式工作負載生成不斷增長的Apache Iceberg後設資料時,保持儲存成本可預測。例如,一個零售分析團隊發現,他們的基於Iceberg的離線儲存在不到一年內積累了超過50 TB的後設資料檔案,導致了大量且意外的Amazon S3費用。同時,跨行業的基礎設施團隊告訴我們,他們需要在特徵資料上實現Lake Formation強制訪問控制,該控制應在建立特徵組時自動生效,而不是事後需要透過重複手動配置。

今天,我們宣佈SageMaker Python SDK v3.8.0中的三項新功能,以應對這些挑戰:

原生AWS Lake Formation整合 – 在建立特徵組時或為現有特徵組註冊離線儲存與Lake Formation,以強制執行列級、行級和單元格級訪問控制。無需手動設定Lake Formation。

額外的Apache Iceberg表屬性 – 在建立特徵組時或對現有特徵組控制後設資料保留和快照生命週期策略,以防止後設資料累積並降低儲存成本。

SageMaker Python SDK v3中的Feature Store支援 – 現代化的SDK v3.8.0將這些新功能以及全套Feature Store功能整合到一個模組化、更快、更輕量的包中。

本文將逐一介紹每項功能,並提供程式碼示例供您入門。有關完整的端到端演練,請參閱SageMaker Python SDK儲存庫中隨附的Lake Formation治理和Iceberg表屬性筆記。

先決條件

要遵循本文中的示例,您需要:

一個具有建立Amazon SageMaker AI資源許可權的AWS賬戶。

一個具有訪問Amazon S3、AWS Glue和AWS Lake Formation許可權的Amazon SageMaker AI執行角色。

SageMaker Python SDK v3.8.0或更高版本。您可以使用以下命令安裝SageMaker:pip install --upgrade "sagemaker>=3.8.0"

對於Lake Formation整合:賬戶中至少配置一個資料湖管理員。Feature Store在啟用訪問控制之前會驗證這一點。

一個用於離線儲存資料的現有Amazon S3儲存桶。

解決方案概述

這些功能透過SDK v3中FeatureGroupManager.create()和FeatureGroupManager.update()呼叫的新引數提供。LakeFormationConfig觸發自動訪問控制設定,IcebergProperties配置後設資料生命週期。兩者均可在建立特徵組時設定,或應用於現有特徵組。

SageMaker Python SDK v3中的Feature Store

SageMaker Python SDK v3.8.0(釋出於2026年4月16日)是本文所述功能的基礎。現代化的SDK引入了模組化架構、改進的效能,並移除了遺留的硬依賴(如PyTorch)。這些變更帶來了更快的安裝速度和更小的環境。

以下是SDK v3中可用的Feature Store功能:

特徵組生命週期管理:建立、描述、更新、刪除和列出特徵組。

記錄操作:PutRecord、GetRecord和BatchGetRecord。

訓練資料集提取:用於構建訓練資料集的點時間正確查詢。

DataFrame攝入:支援從Pandas和Spark DataFrame透過FeatureGroupManager.ingest()進行攝入。

新的離線儲存引數:IcebergProperties和LakeFormationConfig在建立和更新工作流中完全受支援。

Feature Store API表面與SDK v2一致,因此現有程式碼只需少量更改即可工作。有關SDK其他區域的重大變更詳見SDK v3變更日誌。

SDK v3快速入門

以下是使用新Lake Formation和Iceberg引數建立特徵組的方法:

fg = FeatureGroupManager.create(
    feature_group_name="my-features",
    record_identifier_feature_name="user_id",
    event_time_feature_name="event_time",
    feature_definitions=df,
    role_arn=role,
    online_store_config={"EnableOnlineStore": True},
    offline_store_config=OfflineStoreConfig(
        s3_storage_config=S3StorageConfig(s3_uri=f"s3://{bucket}/feature-store/"),
        table_format="Iceberg",
    ),
    lake_formation_config=LakeFormationConfig(
        enabled=True,
        hybrid_access_mode_enabled=True,
        acknowledge_risk=True,
    ),
    iceberg_properties=IcebergProperties(
        properties={
            "write.metadata.delete-after-commit.enabled": "true",
            "write.metadata.previous-versions-max": "10",
        }
    ),
)

透過原生Lake Formation整合治理您的離線儲存

以前,在Feature Store資料上配置AWS Lake Formation需要多個手動步驟:註冊S3位置、撤銷IAMAllowedPrincipals組、為每個特徵組配置資料過濾器。這一過程耗時、易錯,並且每個新特徵組都必須重複。金融服務、醫療保健和其他受監管行業中需要列級、行級和單元格級訪問控制的組織尤其感到繁瑣。

現在,您可以在建立特徵組時透過向FeatureGroupManager.create()傳遞LakeFormationConfig來啟用離線儲存的Lake Formation訪問控制。您也可以使用FeatureGroupManager.enable_lake_formation()在現有特徵組上啟用它。啟用此配置時,Feature Store會自動執行以下操作:

將S3資料位置新增到Lake Formation。離線儲存S3字首被註冊為Lake Formation管理的資料湖位置。受信任的分析服務(Amazon Athena、AWS Glue、Amazon EMR、Amazon Redshift Spectrum)隨後從Lake Formation獲取臨時憑證以查詢資料。

停用混合訪問模式(可選)。當您設定hybrid_access_mode_enabled=False時,SDK會撤銷AWS Glue表上的IAMAllowedPrincipal授權,因此訪問必須僅透過Lake Formation的許可權模型。當hybrid_access_mode_enabled=True時,AWS身份和訪問管理(IAM)策略和Lake Formation許可權共存,這對於逐步遷移很有用。有關更多資訊,請參閱混合訪問模式。

提供推薦的S3拒絕策略。對於需要端到端治理的客戶,SDK在啟用後以警告訊息形式記錄推薦的儲存桶策略。請稽核此策略並將其應用於您的Amazon S3儲存桶,以阻止未授權主體直接讀取S3,從而關閉可能繞過Lake Formation的最後路徑。

這是一個按特徵組選擇加入的設定。如果省略它,行為不變,現有特徵組繼續使用基於IAM的訪問。

程式碼示例

以下程式碼建立了一個啟用Lake Formation訪問控制的新特徵組。有關其他配置選項,請參閱使用Feature Groups啟用Lake Formation。

fg = FeatureGroupManager.create(
    feature_group_name="governed-customer-features",
    record_identifier_feature_name="customer_id",
    event_time_feature_name="event_time",
    feature_definitions=customer_df,
    role_arn=role,
    online_store_config={"EnableOnlineStore": True},
    offline_store_config=OfflineStoreConfig(
        s3_storage_config=S3StorageConfig(s3_uri=f"s3://{bucket}/feature-store/"),
        table_format="Iceberg",
    ),
    lake_formation_config=LakeFormationConfig(
        enabled=True,
        hybrid_access_mode_enabled=True,
        acknowledge_risk=True,
    ),
)

要在現有特徵組上啟用Lake Formation:

fg = FeatureGroupManager.get(
    feature_group_name="existing-feature-group",
)
fg.enable_lake_formation(
    hybrid_access_mode_enabled=True,
    acknowledge_risk=True,
)

配置特徵組後,使用Lake Formation控制台或API授予細粒度許可權。您可以授予資料科學團隊僅訪問customer_id、credit_score和region列的SELECT許可權(列級過濾)。您還可以將分析師限制為region = 'us-east-1'的行(行級過濾),或結合兩者實現單元格級訪問控制。

關鍵注意事項

線上儲存不受影響。Lake Formation訪問控制僅適用於離線儲存。線上儲存繼續使用基於IAM的授權,因此即時推理延遲不變。

同時適用於AWS Glue和Iceberg表格式。無論離線儲存使用哪種表格式,Lake Formation訪問控制的應用方式相同。

跨賬戶相容。如果您使用AWS Resource Access Manager (AWS RAM) 跨賬戶共享Feature Store表,Lake Formation授權將繼續與現有跨賬戶共享模式協同工作。注意:當表格式為Iceberg時,您必須為跨賬戶訪問停用混合訪問模式。

先決條件:資料湖管理員。系統在啟用訪問控制之前會驗證您的賬戶中是否至少配置了一個資料湖管理員。如果不存在,建立呼叫會立即返回描述性錯誤,而不是非同步失敗。

有關更多資訊,請參閱使用Feature Groups啟用Lake Formation。

使用額外的Iceberg表屬性管理您的離線儲存

Amazon SageMaker Feature Store支援Apache Iceberg作為離線儲存的表格式,這透過壓縮提高了查詢效能並支援記錄級操作。本節介紹了讓您控制Iceberg後設資料生命週期的新引數。

對於高頻率寫入的工作負載(例如每幾秒攝入記錄的流式特徵管道),Iceberg後設資料檔案會隨著每次提交而累積。如果沒有生命週期控制,這些後設資料可能呈指數級增長。一位擁有超過40個流式特徵組的客戶發現,他們的S3儲存桶在不到一年內從幾個GB增長到超過50 TB的後設資料。Feature Store以高頻率(提交間隔少於10分鐘)提交到離線儲存,每次提交都會產生新的後設資料檔案。沒有預設寫入屬性來限制快照或後設資料檔案保留,後設資料就會無限制積累。他們透過Amazon Athena嘗試的清理操作(OPTIMIZE和VACUUM)在超過50 TB的表上超時。最終不得不依賴昂貴的Amazon EMR Serverless Spark作業,並完全重寫他們的表。

解決方案

現在,您可以在建立Iceberg格式的特徵組時傳遞IcebergProperties配置。這些屬性應用於底層Iceberg表,從一開始就讓您控制後設資料生命週期。您還可以使用FeatureGroupManager.update()更新現有特徵組的Iceberg屬性。

支援的屬性示例:

| 屬性 | 預設值 | 描述 | |------|--------|------| | write.metadata.delete-after-commit.enabled | false | 每次提交後刪除最舊的跟蹤後設資料檔案 | | write.metadata.previous-versions-max | 100 | 要跟蹤的先前版本後設資料檔案的最大數量 | | history.expire.max-snapshot-age-ms | 432000000 (5天) | 過期時快照的最大保留時間 | | history.expire.min-snapshots-to-keep | 1 | 過期時要保留的最少快照數量 | | write.target-file-size-bytes | 536870912 (512 MB) | 生成資料檔案的目標大小 | | write.parquet.row-group-size-bytes | 134217728 (128 MB) | Parquet行組大小 | | read.split.target-size | 134217728 (128 MB) | 合併資料輸入分片時的目標大小 |

有關支援的屬性完整列表,請參閱[已截斷]。

總之,這些新功能使Amazon SageMaker Feature Store更加強大和易於管理,幫助組織在擴充套件ML平臺的同時降低成本並提高安全合規性。