使用 Amazon SageMaker Feature Store 创建、存储和共享特征 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon SageMaker Feature Store 创建、存储和共享特征

机器学习 (ML) 开发过程通常始于从数据中提取数据信号(也称为特征),以训练机器学习模型。利用 Amazon SageMaker Feature Store,数据科学家、机器学习工程师和普通从业人员可以轻松创建、共享和管理用于机器学习开发的特征。Feature Store 可以减少将原始数据转换为特征(用于训练机器学习算法)所需的重复性数据处理和整理工作,从而加快这一过程。

此外,您只需编写一次数据处理逻辑,生成的特征便可同时用于训练和推理,从而减少训练服务的偏斜。Feature Store 是特征和相关元数据的集中式存储,您可以在这里轻松发现和重复使用特征。可以创建在线存储,也可以创建离线存储。在线存储用于低延迟实时推理使用案例,离线存储用于训练和批量推理。 

下图显示了如何使用 Feature Store 作为机器学习管道的一部分。首先,读取原始数据并对其进行处理。您可以通过流式传输到在线和离线存储,或者直接批量传输到离线存储来摄取数据。首先创建 FeatureGroup 并将其配置为在线存储和/或离线存储。然后,可以将数据摄取到您的 FeatureGroup 并将其存储在您的存储中。FeatureGroup 是一组通过 Feature Store 中的架构定义的特征,用于描述记录。

在线存储主要用于支持需要低毫秒延迟读取和高吞吐量写入的实时预测。离线存储主要用于批量预测和模型训练。离线存储是一种仅附加存储,可用于存储和访问历史特征数据。离线存储可帮助您存储和提供用于探索和模型训练的特征。在线存储仅保留最新的特征数据。特征组是可变的,可在创建后使其架构发生演变。

Feature Store 工作原理

在 Feature Store 中,特征存储在名为特征组 的集合中。您可以将特征组可视化为表格,其中每列都是一个特征,每行都有唯一标识符。原则上,特征组由特征和每个特征的特定值组成。Record 是与唯一 RecordIdentifier 对应的特征的值集合。总而言之,FeatureGroupFeatureStore 中定义的用来描述 Record 的一组特征。 

您可以在以下模式下使用 Feature Store: 

  • 在线 - 在在线模式下,以低延迟(毫秒)读取特征并用于高吞吐量预测。此模式要求将特征组存储到在线存储中。 

  • 离线 - 在离线模式下,大量数据流被馈送到离线存储,可用于训练和批量推理。此模式要求将特征组存储到离线存储中。离线存储使用您的 S3 存储桶进行存储,也可以使用 Athena 查询来获取数据。 

  • 在线和离线 - 这包括在线和离线两种模式。

您可以通过两种方式将数据摄取到 Feature Store 中的特征组:流式传输或批量处理。通过流式传输摄取数据时,通过调用同步 PutRecord API 调用,将一组记录推送到 Feature Store。利用此 API,您可以在 Feature Store 中维护最新的特征值,并在检测到更新后立即推送新的特征值。

或者,Feature Store 可以批量处理和摄取数据。您可以使用 Amazon SageMaker Data Wrangler 创作特征,在 Feature Store 中创建特征组,以及借助从 Data Wrangler 导出的笔记本使用 SageMaker Processing 作业批量摄取特征。此模式允许批量摄取到离线存储。如果将特征组配置为可供在线和离线使用,则它还支持将数据摄取到在线存储。 

创建特征组

要将特征摄取到 Feature Store 中,必须先定义特征组以及属于该特征组的所有特征的特征定义(特征名称和数据类型)。创建后的特征组是可变的,可使其架构发生演变。特征组名称在 Amazon Web Services 区域 和 Amazon Web Services 账户 中是唯一的。创建特征组时,您还可以为特征组创建元数据,例如简短描述、存储配置、用于标识每条记录的特征,以及事件时间,还有用于存储作者、数据源、版本等信息的标签。

重要

FeatureGroup 名称或相关元数据(例如描述或标签)不应包含任何个人身份信息 (PII) 或机密信息。

查找、发现和共享特征

在 Feature Store 中创建特征组后,Feature Store 的其他授权用户可以共享和发现该特征组。用户可以浏览 Feature Store 中所有特征组的列表,也可以通过按特征组名称、描述、记录标识符名称、创建日期和标签进行搜索来发现现有的特征组。 

对存储到在线存储中的特征进行实时推理 

借助 Feature Store,您可以使用来自流式传输源的数据(来自其他应用程序的干净流数据)实时丰富存储到在线存储中的特征,并以低毫秒延迟提供这些特征以进行实时推理。 

您还可以通过查询客户端应用程序中的两个不同 FeatureGroups,跨不同 FeatureGroups 执行联接,以进行实时推理。 

用于模型训练和批量推理的离线存储

Feature Store 为 S3 存储桶中的特征值提供离线存储。您的数据使用基于事件时间的前缀方案存储在 S3 存储桶中。离线存储是一种仅附加存储,使 Feature Store 能够维护所有特征值的历史记录。数据以 Parquet 格式存储在离线存储中,以优化存储和查询访问。

您可以使用 Amazon SageMaker Studio 中的 Data Wrangler 查询、浏览和可视化特征。  Feature Store 支持合并数据以生成、训练、验证和测试数据集,并允许您提取不同时间点的数据。

特征数据摄取

可以创建特征生成管道来处理大批量(100 万行或更多)或小批量数据,并将特征数据写入离线或在线存储。诸如 Amazon Managed Streaming for Apache Kafka 或 Amazon Kinesis 之类的流式传输源也可用作数据源,可以从中提取特征并直接馈送到在线存储以进行训练、推理或特征创建。 

您可以通过调用同步 PutRecord API 调用,将记录推送到 Feature Store。由于这是同步 API 调用,因此可以在一次 API 调用中推送小批量更新。这样就能保持特征值的高新鲜度,并在检测到更新时立即发布值。这些也称为流式处理特征。 

摄取和更新特征数据后,Feature Store 会将所有特征的历史数据存储到离线存储中。对于批量摄取,您可以从 S3 存储桶中提取特征值或使用 Athena 进行查询。您还可以使用 Data Wrangler 来处理和设计新特征,然后将这些特征导出到选定 S3 存储桶,以供 Feature Store 访问。对于批量摄取,您可以配置处理作业以将数据批量摄取到 Feature Store,也可以使用 Athena 从 S3 存储桶中提取特征值。 

要从在线存储中删除 Record,请使用 DeleteRecord API 调用。这也会将已删除的记录添加到离线存储。

Feature Store 中的故障恢复能力

Feature Store 分布在多个可用区 (AZ) 上。AZ 是 Amazon Web Services 区域中的隔离位置。如果某些 AZ 出现故障,Feature Store 可以使用其他 AZ。有关 AZ 的更多信息,请参阅 Amazon SageMaker 中的弹性