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

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

使用 Amazon Feature Store 创建、存储和共享 SageMaker 功能

机器学习 (ML) 开发过程包括提取原始数据,将其转换为特征(机器学习模型的有意义的输入),然后以可用的方式存储这些特征,用于数据探索、机器学习训练和机器学习推理。Amazon F SageMaker eature Store 简化了您创建、存储、共享和管理功能的方式。这是通过提供 feature store 选项并减少重复的数据处理和策划工作来实现的。

除其他外,借助功能商店,您可以:

  • 简化功能处理、存储、检索和共享功能,以便跨账户或在组织中进行机器学习开发。

  • 跟踪您的特征处理代码开发情况,将特征处理器应用于原始数据,并以一致的方式将您的功能摄取到功能商店中。这样可以减少训练服务偏差,这是机器学习中常见的问题,其中训练和服务期间的表现差异会影响机器学习模型的准确性。

  • 将您的功能和相关元数据存储在功能组中,以便可以轻松发现和重复使用功能。功能组是可变的,可以在创建后对其架构进行演变。

  • 创建功能组,将其配置为包括在线或离线商店,或两者兼而有之,以管理您的功能并自动存储机器学习任务的功能。

    • 在线商店仅保留您的功能的最新记录。这主要用于支持需要低毫秒延迟读取和高吞吐量写入的实时预测。

    • 离线商店将您要素的所有记录作为历史数据库保存。这主要用于数据探索、模型训练和批量预测。

下图显示了如何使用功能存储作为机器学习管道的一部分。读入原始数据后,您可以使用 Feature Store 将原始数据转换为要素并将其提取到您的功能组中。这些功能可以通过直播或批量提取到功能组的在线和离线商店。然后可以将这些功能用于数据探索、模型训练以及实时或批量推理。

该图显示了 Feature Store 在您的机器学习管道中的位置。在此图表中,管道包括将您的原始数据处理为要素,然后将其存储到功能存储中,然后您可以在其中提供要素。读入原始数据后,你可以使用 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 创作功能,在功能商店中创建功能组,并使用 SageMaker 处理作业和使用从 Data Wrangler 导出的笔记本进行批量摄取功能。此模式允许批量摄取到离线存储。如果将特征组配置为可供在线和离线使用,则它还支持将数据摄取到在线存储。 

创建特征组

要将特征摄取到 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 格式存储在离线存储中,以优化存储和查询访问。

您可以在控制台中使用 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