将 Feature Store 与 SDK for Python (Boto3) 结合使用 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将 Feature Store 与 SDK for Python (Boto3) 结合使用

特征组是 Feature Store 的主要资源,其中包含存储在 Amazon SageMaker Feature Store 中的机器学习 (ML) 数据和元数据。特征组是特征和记录的逻辑分组。特征组的定义由其在线和离线存储的配置以及用于描述记录值的特征定义列表组成。特征定义必须包括记录标识符名称和事件时间名称。有关 Feature Store 概念的更多信息,请参阅 Feature Store 概念

使用 Feature Store 之前,您通常会加载数据集、运行转换并设置特征以供摄取。这个过程有很多变化,并且高度依赖于您的数据。以下主题中的示例代码分别参考 Feature Store 简介利用 Amazon SageMaker Feature Store 进行欺诈检测示例笔记本。两者都使用 Amazon SDK for Python (Boto3)。我们建议您在 Amazon SageMaker Studio 中克隆并运行这些笔记本。

Feature Store 支持以下特征类型:StringFractional(IEEE 64 位浮点值)和 Integral(Int64 - 64 位有符号整数值)。默认类型设置为 String。这意味着,如果数据集内的某列不是 floatlong 特征类型,则该列在 Feature Store 中默认设置为 String

您可以使用架构来描述数据的列和数据类型。您将此架构传递到 FeatureDefinitions,这是 FeatureGroup 的必需参数。您可以使用 SDK for Python (Boto3),在使用 load_feature_definitions 函数时,该 SDK 可以自动检测数据类型。

添加一个具有已存在记录 ID 的新特征记录时的默认行为如下所示。在离线存储中,将附加新记录。在在线存储中,如果新记录的事件时间小于现有事件时间,则不会发生任何事情,但如果新记录的事件时间大于或等于现有事件时间,则该记录将被覆盖。

创建新特征组时,可以选择以下表格式之一:

  • Amazon Glue(默认)

  • Apache Iceberg

摄取数据(尤其在流式处理时)可能会导致大量小文件存入离线存储。由于所需的文件操作次数较多,这可能会对查询性能产生负面影响。为避免潜在的性能问题,请在创建新特征组时使用 Apache Iceberg 表格式。使用 Iceberg 可以将分区中的小数据文件压缩成较少的大文件,从而显著加快查询速度。此压缩操作是并发的,不会影响特征组上正在进行的读取和写入操作。如果您在创建新特征组时选择 Iceberg 选项,Amazon SageMaker Feature Store 将使用 Parquet 文件格式创建 Iceberg 表,并将这些表注册到 Amazon Glue Data Catalog。

重要

请注意,对于 Iceberg 表格式的特征组,必须指定 String 作为事件时间值。如果指定任何其他类型,则无法成功创建特征组。

在下文中,我们列出了一些可用的 Feature Store 托管资源。