使用托管功能存储可以独立开发和生产功能。 提供功能集规范,系统处理服务、保护和监视功能。 此方法消除了设置和管理基础特征工程管道的复杂性和负担。
该功能存储跨机器学习生命周期集成,使你能够更快地试验和交付模型、提高模型可靠性以及降低运营成本。
有关功能存储中顶级实体的详细信息,包括功能集规范,请参阅 了解托管功能存储中的顶级实体。
什么是功能?
特征是模型的输入数据。 在企业数据驱动的用例中,功能通常通过简单的聚合、窗口聚合、行级转换和类似的作来转换历史数据。 例如,考虑一个客户流失机器学习模型。 模型输入可能包括客户交互数据,例如 7day_transactions_sum (过去七天内的交易数)或 7day_complaints_sum (过去七天内的投诉数)。 这两个聚合函数计算过去七天数据中的值。
特征存储解决的问题
若要更好地了解托管功能存储,请先了解功能存储解决的问题:
搜索和重用功能 - 搜索和重用团队创建的功能,以避免冗余工作并提供一致的预测。
使用转换创建功能 - 使用转换功能创建新特征,以敏捷、动态的方式满足特征工程要求。
实现特征工程管道 - 系统能够实现并管理转换和实现特征工程管道所需的具体化过程,从而解放团队的运营负担。
保持联机/脱机一致性 - 对训练数据生成和推理使用相同的功能管道来提供联机/脱机一致性,并避免训练/服务倾斜。
共享托管特征存储
Feature store是一个可以被多个项目工作区使用的工作区类型。 除 Azure 机器学习以外,还可以使用基于 Spark 的环境中的功能,例如 Azure Databricks。 还可以执行特征的本地开发和测试。
特征存储概述
您需要为托管特征存储提供特征集规范,系统将负责特征的服务、保护和监控。 特征集规范包含特征定义和可选的转换逻辑。 还可以以声明方式提供具体化设置,以具体化到脱机存储(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 - 特征存储、特征集和实体的基于角色的访问控制
- 跨功能存储进行查询 - 为用户创建具有不同访问权限的多个功能存储,同时允许跨多个功能存储进行查询(例如,生成训练数据)