什么是托管特征存储?

使用托管功能存储可以独立开发和生产功能。 提供功能集规范,系统处理服务、保护和监视功能。 此方法消除了设置和管理基础特征工程管道的复杂性和负担。

该功能存储跨机器学习生命周期集成,使你能够更快地试验和交付模型、提高模型可靠性以及降低运营成本。

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

什么是功能?

特征是模型的输入数据。 在企业数据驱动的用例中,功能通常通过简单的聚合、窗口聚合、行级转换和类似的作来转换历史数据。 例如,考虑一个客户流失机器学习模型。 模型输入可能包括客户交互数据,例如 7day_transactions_sum (过去七天内的交易数)或 7day_complaints_sum (过去七天内的投诉数)。 这两个聚合函数计算过去七天数据中的值。

特征存储解决的问题

若要更好地了解托管功能存储,请先了解功能存储解决的问题:

  • 搜索和重用功能 - 搜索和重用团队创建的功能,以避免冗余工作并提供一致的预测。

  • 使用转换创建功能 - 使用转换功能创建新特征,以敏捷、动态的方式满足特征工程要求。

  • 实现特征工程管道 - 系统能够实现并管理转换和实现特征工程管道所需的具体化过程,从而解放团队的运营负担。

  • 保持联机/脱机一致性 - 对训练数据生成和推理使用相同的功能管道来提供联机/脱机一致性,并避免训练/服务倾斜。

共享托管特征存储

展示如何在多个用户和工作区之间共享特征存储的图示。

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

特征存储概述

Azure 机器学习的概念体系结构关系图。

您需要为托管特征存储提供特征集规范,系统将负责特征的服务、保护和监控。 特征集规范包含特征定义和可选的转换逻辑。 还可以以声明方式提供具体化设置,以具体化到脱机存储(ADLS 第 2 代)。 系统负责生成并管理底层特征具体化管道。 使用功能目录搜索、共享和重用功能。 使用服务 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 - 特征存储、特征集和实体的基于角色的访问控制
  • 跨功能存储进行查询 - 为用户创建具有不同访问权限的多个功能存储,同时允许跨多个功能存储进行查询(例如,生成训练数据)

后续步骤