将 Feature Store 与 SDK Python 配合使用 (Boto3) - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

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

使用 Feature Store 之前,您通常会加载数据集、运行转换并设置特征以供摄取。这个过程有很多变化,并且高度依赖于您的数据。以下主题中的示例代码分别参考功能商店简介使用 Amazon F SageMaker eature Store 进行欺诈检测示例笔记本。两者都使用 AWS SDK for Python (Boto3)。有关更多功能商店示例和资源,请参阅Amazon SageMaker 功能商店资源

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

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

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

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

  • AWS Glue (默认)

  • Apache Iceberg

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

重要

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

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