利用Amazon SageMaker Feature Store新功能加速ML特征管道
Amazon SageMaker Feature Store发布了三项新功能:原生AWS Lake Formation集成、额外的Apache Iceberg表属性以及SageMaker Python SDK v3支持,以简化机器学习特征管道的安全治理和成本优化。
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平台的同时降低成本并提高安全合规性。