什么是托管特征存储?

在我们对托管特征存储的愿景中,我们希望使机器学习专业人员能够独立开发特征并将其生产化。 你可以提供特征集规范,然后让系统处理特征的提供、保护和监视。 这样,你就不必承受底层特征工程管道设置和管理的开销了。

由于在整个机器学习生命周期中集成了我们的特征存储,你可以更快地试验和交付模型,提高模型的可靠性并降低运营成本。 机器学习体验的重新定义提供了这些优势。

有关特征存储中的顶级实体(包括特征集规范)的详细信息,请参阅了解托管特征存储中的顶级实体

什么是功能?

特征用作模型的输入数据。 对于企业环境中的数据驱动用例,特征通常会转换历史数据(简单聚合、窗口聚合、行级转换等)。 例如,考虑一个客户流失机器学习模型。 模型输入可以包括客户交互数据,如 7day_transactions_sum(过去 7 天内的交易数量)或 7day_complaints_sum(过去 7 天内的投诉数量)。 这两个聚合函数都是针对前 7 天的数据计算的。

特征存储解决的问题

若要更好地了解托管特征存储,应首先了解特征存储可以解决的问题。

  • 特征存储允许你搜索和重复使用团队创建的特征,以避免多余的工作并提供一致的预测。

  • 可以创建具有转换能力的新特征,以敏捷、动态的方式满足特征工程需求。

  • 该系统可操作并管理转换和具体化所需的特征工程管道,从而使你的团队从操作方面解放出来。

  • 可以将最初用于训练数据生成的相同特征管道用于推理方面的新用途,以提供联机/脱机一致性并避免训练/服务偏差。

共享托管特征存储

Diagram that shows how you can share a feature store among multiple users and workspaces

特征存储是一种可供多个项目工作区使用的新式工作区。 除 Azure 机器学习以外,还可以使用基于 Spark 的环境中的功能,例如 Azure Databricks。 还可以执行特征的本地开发和测试。

特征存储概述

Diagram depicting a conceptual architecture of Azure Machine Learning

对于托管特征存储,你可以提供特征集规范。 然后,系统会处理特征的提供、保护和监视。 特征集规范包含特征定义和可选的转换逻辑。 还可以以声明方式提供具体化设置,以具体化到脱机存储(ADLS 第 2 代)。 系统负责生成并管理底层特征具体化管道。 可以使用特征目录来搜索、共享和重复使用特征。 通过 serving API,用户可以查找特征以生成用于训练和推理的数据。 该服务 API 可以直接从源或从脱机具体化存储中提取数据,用于训练/批量推理。 该系统还提供用于监视特征实体化作业的功能。

使用 Azure 机器学习托管特征存储的好处

  • 提高模型交付的敏捷性(从原型设计到实施):
    • 发现特征并重复使用,而不是从头开始创建特征
    • 有了转换支持,通过使用特征检索规范作为 MLOPS 流中的连接组织,可以更快地进行新特征的本地开发/测试试验
    • 声明式具体化和回填
    • 预构建构造:特征检索组件和特征检索规范
  • 提高 ML 模型的可靠性
    • 特征定义在不同业务部门/组织之间保持一致
    • 特征集是版本化且不可变的:较新版本的模型可以使用较新版本的特征,而不会中断较旧版本的模型的服务
    • 监视特征集具体化
    • 实体化可避免训练/供给偏差
    • 特征检索支持时间点临时连接(也称为时间旅行),以避免数据泄漏。
  • 降低成本
    • 重复使用组织中其他人创建的特征
    • 具体化和监视是由系统管理的,可降低工程成本

发现和管理特征

托管特征存储提供了下列功能用于特征发现和管理:

  • 搜索和重复使用特征 - 你可以跨特征存储搜索和重复使用特征
  • 版本化支持 - 特征集是版本化且不可变的,这让你可以独立管理特征集生命周期。 可以部署具有不同特征版本的新模型版本,并避免旧模型版本的服务中断
  • 在特征存储级别查看成本 - 与特征存储使用情况相关的主要成本涉及托管的 Spark 具体化作业。 可以在特征存储级别查看此成本
  • 特征集使用 - 你可以查看使用特征集的已注册模型的列表。

特征转换

特征转换涉及用于提高模型性能的数据集特征修改。 转换代码(在特征规范中定义)处理特征转换。 为了更快地进行试验,转换代码针对源数据执行计算,并允许在本地开发和测试转换。

托管特征存储提供以下特征转换功能:

  • 支持自定义转换 - 可以编写 Spark 转换器来开发具有自定义转换的特征,例如基于窗口的聚合
  • 支持预先计算的特征 - 可以将预先计算的特征放入特征存储中,然后便可提供它们而无需编写代码
  • 本地开发和测试 - 使用 Spark 环境,可以完全在本地开发和测试特征集

特征具体化

具体化涉及给定特征窗口的特征值的计算,以及在具体化存储中持久保留这些值。 现在,出于训练和推理目的,可以更快更可靠地检索特征数据。

  • 托管特征实体化管道 - 你以声明方式指定具体化计划,然后系统处理计划、预计算以及将值具体化到具体化存储中。
  • 回填支持 - 可以为给定的特征窗口执行特征集的按需具体化
  • 对具体化的托管 Spark 支持 - Azure 机器学习托管 Spark(在无服务器计算实例中)运行具体化作业。 有了它,你便无需设置和管理 Spark 基础结构。

注意

目前支持脱机存储 (ADLS Gen2) 和联机存储 (Redis) 具体化。

特征检索

Azure 机器学习包含用于处理脱机特征检索的内置组件。 有了它,便可以在 Azure 机器学习管道作业的训练和批量推理步骤中使用特征。

托管特征存储提供以下特征检索功能:

  • 声明式训练数据生成 - 使用内置的特征检索组件,可以在管道中生成训练数据,而无需编写任何代码
  • 声明式批量推理数据生成 - 使用相同的内置特征检索组件,可以生成批量推理数据
  • 编程特征检索 - 还可以使用 Python SDK get_offline_features() 来生成训练/推理数据

监视

托管特征存储提供以下监视功能:

  • 具体化作业的状态 - 可以使用 UI、CLI 或 SDK 查看具体化作业的状态
  • 具体化作业的通知 - 可以在具体化作业的不同状态下设置电子邮件通知

安全性

托管特征存储提供以下安全功能:

  • RBAC - 对特征存储、特征集和实体进行基于角色的访问控制。
  • 跨特征存储查询 - 可以为用户创建具有不同访问权限的多个特征存储,但允许跨多个特征存储进行查询(例如,生成训练数据)

后续步骤