特征工程和服务

本页介绍适用于已启用 Unity Catalog 的工作区的特征工程和服务功能。 如果你的工作区未启用 Unity Catalog,请参阅工作区特征存储(旧版)

为何使用 Databricks 作为特征存储?

使用 Databricks Data Intelligence 平台时,整个模型训练工作流在单个平台上进行:

  • 用于引入原始数据、创建特征表、训练模型和执行批量推理的数据管道。 当你使用 Unity Catalog 中的特征工程训练和记录模型时,该模型将与特征元数据一起打包。 当你使用该模型进行批量评分或联机推理时,它会自动检索特征值。 调用方无需了解这些特征或包括逻辑即可查找或联接特征以对新数据进行评分。
  • 可一键式使用的并提供毫秒级延迟的模型和特征服务终结点。
  • 数据和模型监视。

此外,该平台还提供以下功能:

  • 特征发现。 可以在 Databricks UI 中浏览和搜索特征。
  • 监管。 特征表、函数和模型均受 Unity Catalog 控制。 当你训练模型时,它会从训练数据继承权限。
  • 世系。 在 Azure Databricks 中创建功能表时,保存和访问用于创建功能表的数据源。 对于特征表中的每个特征,还可以访问使用该特征的模型、笔记本、作业和终结点。
  • 跨工作区访问。 在任何可访问目录的工作区中会自动提供特征表、函数和模型。

要求

  • 必须为 Unity Catalog 启用你的工作区。
  • Unity Catalog 中的特征工程需要 Databricks Runtime 13.3 LTS 或更高版本。

如果你的工作区不满足这些要求,请参阅工作区特征存储(旧版)来了解如何使用工作区特征存储。

Databricks 中的特征工程的工作原理是怎样的?

使用 Databricks 中的特征工程的典型机器学习工作流遵循以下路径:

  1. 编写代码以将原始数据转换为特征,并创建一个包含所需特征的 Spark 数据帧。
  2. 在 Unity Catalog 中创建 Delta 表。 任何具有主键的 Delta 表将自动成为特征表。
  3. 使用特征表训练并记录模型。 执行此操作时,模型会存储用于训练的特征规范。 当模型用于推理时,它自动从相应的特征表中联接特征。
  4. 模型注册表中注册模型。

然后,可以使用该模型对新数据进行预测。 对于批处理用例,模型自动从特征存储中检索所需的特征。

批处理机器学习用例的特征存储工作流。

对于实时服务用例,将功能发布到联机存储

在推理时,模型从联机存储中读取预先计算的特征,并将其与客户端请求中提供的数据联接到模型服务终结点。

提供的机器学习模型的特征存储流。

开始使用特征工程 – 示例笔记本

若要开始,请尝试使用这些示例笔记本。 基本笔记本将逐步引导你创建特征表、使用它来训练模型,然后使用自动特征查找执行批量评分。 它还介绍了特征工程 UI,演示了使用它来搜索特征并了解如何创建和使用特征。

Unity Catalog 示例笔记本中的基本特征工程

获取笔记本

出租车示例笔记本演示了创建特征、更新特征并将特征用于模型训练和批量推理的过程。

Unity Catalog 出租车示例笔记本中的特征工程

获取笔记本

支持的数据类型

Unity Catalog 中的特征工程和工作区特征存储支持以下 PySpark 数据类型

  • IntegerType
  • FloatType
  • BooleanType
  • StringType
  • DoubleType
  • LongType
  • TimestampType
  • DateType
  • ShortType
  • ArrayType
  • BinaryType [1]
  • DecimalType [1]
  • MapType [1]
  • StructType [2]

[1] Unity 目录的所有特征工程版本和工作区功能存储 v0.3.5 或更高版本中支持 BinaryTypeDecimalTypeMapType。 [2] 特征工程 v0.6.0 或更高版本支持 StructType

上面列出的数据类型支持机器学习应用程序中常见的特征类型。 例如:

  • 可以将稠密矢量、张量和嵌入存储为 ArrayType
  • 可以将稀疏矢量、张量和嵌入存储为 MapType
  • 可以将文本存储为 StringType

发布到在线商店时,ArrayTypeMapType 特征以 JSON 格式存储。

特征存储 UI 显示有关特征数据类型的元数据:

复杂数据类型示例

详细信息

有关最佳做法的详细信息,请下载特征存储综合指南