创建、存储和与亚马逊共享功能 SageMaker 功能商店 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建、存储和与亚马逊共享功能 SageMaker 功能商店

机器学习 (ML) 开发过程通常从提取数据信号开始,也称为功能从数据到训练机器学习模型。亚马逊 SageMaker 功能存储使数据科学家、机器学习工程师和全科医生能够轻松创建、共享和管理机器学习 (ML) 开发的功能。功能商店通过减少将原始数据转换为训练 ML 算法的功能所需的重复性数据处理和策划工作来加速此过程。

此外,只编写一次数据的处理逻辑,生成的要素用于训练和推理,从而减少了训练服务偏差。要素存储是要素和相关元数据的集中式存储,因此可以轻松发现和重复使用要素。您可以创建在线或离线商店。在线商店用于低延迟的实时推理用例,离线商店用于训练和批量推断。 

下图演示了如何使用亚马逊。 SageMaker 作为机器学习管道的一部分的功能商店。首先,你读取原始数据并处理它。您可以通过流式传输到在线和离线商店,或者直接将数据批量提取到离线商店。你先创建FeatureGroup然后将其配置为在线或离线商店,或者两者兼而有。然后,你可以将数据提取到FeatureGroup然后将其存放在你的商店里。 一个FeatureGroup是一组功能,通过要素存储中的架构定义来描述记录。

在线商店主要用于支持需要低毫秒延迟读取和高吞吐量写入的实时预测。线下商店主要用于批量预测和模型训练。离线商店是仅限追加的商店,可用于存储和访问历史要素数据。离线商店可以帮助您存储和提供用于探索和模型训练的功能。在线商店仅保留最新的功能数据。要素组定义在创建之后是不可变的。

如何运作功能商店

在功能商店中,要素存储在名为功能组。 您可以将要素组可视化为表格,其中每列都是要素,每行都有唯一标识符。原则上,功能组由特定于每个要素的功能和值组成。一个Record是与唯一对应的要素的值的集合RecordIdentifier. 总而言之,FeatureGroup是在你的FeatureStore描述Record

您可以在以下模式下使用功能商店: 

  • 在线— 在联机模式下,以低延迟(毫秒)读取功能进行读取,并用于高吞吐量预测。此模式要求将功能组存储在在线商店中。 

  • 离线— 在离线模式下,将大量数据流传送到离线商店,该商店可用于训练和批量推理。此模式要求将功能组存储在离线商店中。离线商店使用 S3 存储桶进行存储,还可以使用 Athena 查询获取数据。 

  • 线上和离线— 这包括在线和离线模式。

您可以通过两种方式将数据提取到功能商店中的要素组:流式传输或批量。当您通过流媒体提取数据时,通过调用同步功能商店将记录集合推送到功能商店PutRecordAPI 调用。此 API 使您能够在功能商店中维护最新的功能值,并在检测到更新后立即推送新功能值。

或者,功能商店可以批量处理和提取数据。您可以使用亚马逊创作功能 SageMaker Data Wrangler,在功能商店中创建要素组,然后使用 SageMaker 使用从 Data Wrangler 导出的笔记本处理作业。此模式允许批量提取到离线商店。如果功能组配置为在线和离线使用,它还支持对在线商店进行摄入。 

创建功能组

要将要素摄录到要素存储中,必须首先为属于该要素组的所有要素定义要素组和要素定义(要素名称和数据类型)。创建之后,要素组是不可变的。要素组名称在Amazon地区和Amazonaccount. 创建要素组时,还可以为要素组创建元数据,例如简短描述、存储配置、识别每条记录的功能和事件时间,以及用于存储作者、数据源、版本等信息的标签。

重要

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

查找、发现和共享功能

在 feature store 中创建功能组后,该功能商店的其他授权用户可以共享和发现该功能组。用户可以浏览功能商店中所有功能组的列表,或通过按要素组名称、描述、记录标识符名称、创建日期和标签进行搜索来发现现有功能组。 

在线商店中存储的功能的实时推断 

借助功能商店,您可以使用来自流媒体源的数据(来自另一个应用程序的干净流数据)实时丰富在线商店中存储的功能,并以低毫秒的延迟提供功能以实时推断。 

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

模型训练和 Batch 推断的离线商店

功能商店为 S3 存储桶中的功能值提供离线存储空间。使用基于事件时间的前缀方案将您的数据存储在 S3 存储桶中。 离线商店是一个仅追加商店,使功能商店能够维护所有功能值的历史记录。数据以 Pincia 格式存储在离线商店中,以便优化存储和查询访问。

您可以使用亚马逊的 Data Wrangler 查询、探索和可视化功能 SageMaker 工作室。  功能商店支持组合数据以生成、训练、验证和测试数据集,并允许您在不同的时间点提取数据。

功能数据摄取

可以创建要素生成管道来处理大批量(100 万行或更多数据)或小批处理,并将要素数据写入离线或在线商店。流媒体源(例如适用于 Apache Kafka 的亚马逊托管流媒体或 Amazon Kinesis)也可用作数据源,从中提取功能并直接馈送到在线商店以进行培训、推理或功能创建。 

你可以通过调用同步将记录推送到功能商店PutRecordAPI 调用。由于这是同步 API 调用,因此它允许在单个 API 调用中推送小批量更新。这使您能够保持功能值的高新鲜度,并在检测到更新后立即发布值。这些也称为流媒体功能

当要素数据被摄取和更新时,要素商店将在离线商店中存储所有要素的历史数据。对于批量提取,您可以从 S3 存储桶中提取功能值或使用 Athena 进行查询。您还可以使用 Data Wrangler 处理和设计新功能,然后可以导出到选定的 S3 存储桶以供功能商店访问。对于批量摄取,您可以配置处理作业以批量将数据提取到功能存储中,也可以使用 Athena 从 S3 存储桶中提取功能值。 

移除Record从你的在线商店中,使用DeleteRecordAPI 调用。这也会将删除的记录添加到离线商店。