亚马逊AWS官方博客

新功能 — 使用 Amazon SageMaker 功能库,存储、发现和共享机器学习功能

今天,我非常高兴地宣布 Amazon SageMaker 功能库,一项 Amazon SageMaker 新功能,它可以使数据科学家和机器学习工程师轻松安全地存储、发现和共享培训和预测工作流程中使用的精选数据。

对于选择正确算法来培训机器学习 (ML) 模型的重要性,经验丰富的从业人员知道提供高质量数据有多么重要。清理数据是很好的第一步,机器学习工作流程通常包括填充缺失值、删除异常值等步骤。然后,他们经常使用被称为“特征工程”的常见技术和难懂的技术进行数据转换。

简而言之,特征工程的目的是转换数据并增加其表现力,以便算法学习得更好。例如,许多列式数据集都包含字符串,例如街道地址。对于大多数机器学习算法来说,字符串毫无意义,需要以数字表示形式进行编码。因此,您可以用 GPS 坐标替换街道地址,这是学习位置概念更具表现力的方式。换句话说,如果数据是新的石油,那么特征工程就是将其转化为高辛烷值喷气燃料的精炼过程,帮助模型获得平流层精度。

事实上,机器学习从业者花费了大量时间来制作特征工程代码、将其应用于初始数据集、在工程数据集上培训模型以及评估模型准确性。鉴于这项工作的实验性质,即使是最小的项目也会多次迭代。相同的特征工程代码通常会反复运行,这会浪费时间和计算资源来重复相同的操作。在大型组织中,这可能导致更大的生产力损失,因为不同团队通常会运行相同作业,甚至由于不了解之前的作业,而编写重复的特征工程代码。

机器学习团队还必须解决另一个难题。由于模型是在工程数据集上培训的,因此必须对发送进行预测的数据应用相同的转换。这通常意味着重写特征工程代码,有时会使用不同的语言,将其集成到预测工作流程中,然后在预测时运行代码。整个过程不仅耗时,还可能导致不一致,因为即使数据转换中最微小的变化,也可能对预测产生很大影响。

为了解决这些问题,机器学习团队有时会构建一个功能库,这是一个中央存储库,他们可以在其中保存和检索培训,并预测工作中使用的工程数据。它与功能库一样有用,但构建和管理自己的功能库需要大量的工程、基础设施和运营工作,从而使实际机器学习工作花费宝贵的时间。客户要求我们提供更好的解决方案,所以我们必须照做。

推出 Amazon SageMaker 功能库
Amazon SageMaker 功能库是一个完全托管的机器学习功能集中式存储库,使您无需管理任何基础设施即可轻松安全地存储和检索功能。它是我们面向机器学习的完全托管服务 Amazon SageMaker 的一部分,并支持所有算法。它还与我们基于 Web 的机器学习开发环境 Amazon SageMaker Studio 集成。

SageMaker 功能库 中存储的要素按组组织,并使用元数据进行标记。因此,您可以快速发现哪些功能可用,以及它们是否适合您的模型。多个团队还可以轻松共享和重复使用各项功能,从而降低开发成本并加速创新。

存储后,您可以在 SageMaker 工作流中检索并使用以下功能:模型培训、批量转换和低延迟实时预测。您不仅可以避免重复工作,还可以构建一致的工作流,使用存储在离线和在线存储中的相同一致功能。

Climate Corporation(以下简称 Climate)是 Bayer 的一家子公司,也是为农场主带来数字创新的行业领导者。Climate 数据与分析副总裁 Daniel McCaffrey 表示:“在 Climate,我们的信念是,为全球农场主提供准确的信息,帮助他们做出数据驱动的决策,从而最大限度地提高他们每一英亩的回报。为了实现这一目标,我们投资了机器学习工具等技术,以便使用称之为功能的可衡量实体构建模型,例如种植者田地的产量。借助 Amazon SageMaker 功能库,我们可以通过中央功能库加速机器学习模型的开发,以便在多个团队中轻松访问和重复使用功能。SageMaker 功能库使用在线存储轻松实时访问各项功能,或者使用离线存储针对不同的用例按计划运行各项功能,从而使我们可以更快地开发机器学习模型。”

全球领先的寻找和管理高质量家庭护理的平台 Care.com 也在使用 Amazon SageMaker 功能库。这就是 Care.com 数据科学经理 Clemens Tummelthammer 告诉我们的:“一个供需平衡的强大护理行业,对于从个体家庭到全国国内生产总值的经济增长都至关重要。我们对 Amazon SageMaker 功能库和 Amazon SageMaker 管道感到兴奋,因为我们相信,它们将通过使用一组一致的精选数据,帮助我们在数据科学和开发团队中更好地实现扩展,我们可以使用这些数据构建从数据准备到部署的可扩展端到端机器学习模型管道。借助 Amazon SageMaker 新公布的功能,我们可以加快针对不同应用程序的机器学习模型的开发和部署,通过更快的实时推荐帮助客户作出更明智的决策。

现在,让我们看看如何开始使用。

使用 Amazon SageMaker 功能库和检索功能
在数据上运行特征工程代码后,您可以通过将设计的功能分组到功能组中,在 SageMaker 功能库中组织和存储这些功能。功能组是记录的集合,类似于表中的行。每条记录都有一个唯一标识符,并保存原始数据源中其中一个数据实例的工程功能值。或者,您可以选择使用自己的 AWS Key Management Service (KMS) 密钥加密静态数据,该密钥对每个功能组都是唯一的。

如何定义功能组取决于您。例如,您可以为每个数据源(CSV 文件、数据库表等)创建一个数据源,然后使用方便的唯一列作为记录标识符(主键、客户 ID、事务 ID 等)。

确定您的小组后,您应该为每个小组重复以下步骤:

  1. 使用记录中每个功能的名称和类型(分数积分字符串)创建功能定义。
  2. 使用 create_feature_group() API 创建每个功能组:
    sm_feature_store.create_feature_group (
         # 功能组的名称
         FeatureGroupName=my_feature_group_name,
         # 充当记录标识符的列的名称
         RecordIdentifierName=record_identifier_name,
         # 作为功能时间戳的列操作的名称
         EventTimeFeatureName = event_time_feature_name,
         # 功能名称和类型列表
         FeatureDefinitions=my_feature_definitions,
         # 离线功能存储的 S3 位置
         OnlineStoreConfig=online_store_config,
         # 或者,启用在线功能库
         OfflineStoreConfig=offline_store_config,
         # 一个 IAM 角色
         RoleArn=role
    )
  3. 在每个功能组中,使用 put_record() API 存储包含功能名称/功能值对集合的记录:
    sm_feature_store.put_record(
       FeatureGroupName=feature_group_name,
       Record=record,
       EventTime=event_time
    )

    为了加快摄取速度,您可以创建多个线程并行化此操作。

此时,Amazon SageMaker 功能库 中将提供各种功能。借助此离线库,您可以使用Amazon AthenaAWS GlueAmazon EMR 等服务来构建培训数据集:获取S3 中对应的 JSON 对象,选择所需的功能,然后按照 ML 算法所期望的格式将它们保存在 S3 中。从那时起,SageMaker 就像往常一样!

此外,您可以使用 get_record() API 访问存储在线库中的单个记录、传递组名称和要访问记录的唯一标识符,如下所示:

record = sm_feature_store.get_record(
    FeatureGroupName=my_feature_group_name,
    RecordIdentifierValue={"IntegralValue": 5962}
)

Amazon SageMaker 功能库旨在快速高效地访问实时推断,15 千字节有效负载的 P95 延迟低于 10 ms。这样就可以在预测时查询工程特征,并将上游应用程序发送的原始功能替换为用于培训模型的完全相同功能。通过设计消除了功能不一致问题,让您可以专注于构建最佳模型而不是追逐错误。

最后,由于SageMaker 功能库包含功能创建时间戳,因此您可以在特定时间点检索功能的状态。

由于 Amazo SageMaker 功能库SageMaker Studio 集成,我可以在那里看到我的两个功能组。

SageMaker 截图

右键单击“Open feature group detail”(打开功能组详细信息),打开身份功能组。

SageMaker 截图

我可以看到功能定义。

SageMaker 截图

最后,我可以为离线库生成查询,可以将这些查询添加到 Amazon SageMaker Data Wrangler 工作流程中,以便在培训之前加载功能。

SageMaker 截图

如何开始使用 Amazon SageMaker 功能库
如您所见,SageMaker 功能库使您可以轻松存储、检索和共享培训和预测工作流程所需的功能。

SageMaker 功能库在所有提供 SageMaker 的区域都可用。定价基于功能读取和写入以及存储的数据总量。

以下是示例笔记本,可以帮助您立即开始使用。立即试用,并向我们提供反馈。我们始终期待您的反馈,您可通过一贯的 AWS Support 联系人向我们提供反馈,也可在针对 SageMaker 在 AWS 论坛上提出反馈。

– Julien