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

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

通过 Amazon SageMaker 功能商店创建、存储和共享功能

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

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

下图显示了如何使用 Amazon SageMaker 功能商店作为机器学习管道的一部分。首先,读取原始数据并进行处理。您可以通过流式传输到在线和离线商店,或批量直接将数据传输到离线商店。您首先创建FeatureGroup并将其配置为在线或离线商店,或同时将其配置为两者。然后,您可以将数据引入到FeatureGroup并将其存储在您的商店中。 AFeatureGroup是通过要素存储中的方案定义的一组要素,用于描述记录。

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

要素存储的工作原理

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

可以在以下模式下使用要素存储: 

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

  • 离线— 在离线模式下,大量数据流被送入离线存储,可用于训练和批量推理。此模式要求将要素组存储在离线存储中。脱机存储使用 S3 存储桶进行存储,还可以使用 Athena 查询获取数据。 

  • 在线和离线— 这包括联机和脱机模式。

您可以通过两种方式将数据引入到要素存储中的要素组中:流式处理或分批处理。通过流式传输数据时,记录集合将通过调用同步PutRecordAPI 调用。通过此 API,您可以在要素存储中维护最新的要素值,并在检测到更新时立即推送新的要素值。

或者,要素存储可以批量处理和提取数据。您可以使用 Amazon SageMaker 数据牧师创作要素,在要素存储中创建要素组,并使用 SageMaker 处理作业与从数据牧师导出的笔记本电脑一起批量提取要素。此模式允许批量接收到脱机存储。如果要素组配置为联机和离线使用,则它还支持引入到在线商店。 

创建功能组

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

重要

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

查找、发现和共享功能

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

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

通过 Feature Store,您可以使用来自流源的数据(清理来自另一个应用程序的流数据)实时丰富存储在在线商店中的功能,并以低毫秒延迟提供实时推断的功能。 

您还可以在不同的FeatureGroups通过查询两个不同的FeatureGroups在客户端应用程序中。 

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

功能存储为 S3 存储桶中的功能值提供离线存储。您的数据使用基于事件时间的前缀方案存储在 S3 存储桶中。 离线存储是一个仅追加存储,使 “要素存储” 能够维护所有要素值的历史记录。数据以镶木地板格式存储在脱机存储中,以优化存储和查询访问。

您可以使用 Amazon SageMaker er 工作室中的数据工作人员查询、探索和可视化功能。  功能存储支持合并数据以生成、训练、验证和测试数据集,并允许您在不同时间点提取数据。

功能数据摄取

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

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

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