什么是特征存储?
本页介绍什么是特征存储,它提供哪些优势,以及 Databricks 特征存储的特定优势。
特征存储是一个集中式存储库,使数据科学家能够查找和共享特征,并确保用于计算特征值的相同代码用于模型训练和推理。
机器学习使用现有数据生成模型以预测将来的结果。 几乎所有情况下,原始数据都需要预处理和转换,然后才能用于生成模型。 此过程称为特征工程,此过程的输出称为特征 - 模型的构建基块。
开发特征非常复杂且耗时。 另一个复杂因素是,对于机器学习,需要对模型训练执行特征计算,然后在使用模型进行预测时再次执行。 这些实现不能由同一团队或使用相同的代码环境来完成,这可能会导致延迟和错误。 此外,组织中的不同团队通常具有类似的特征需求,但可能不知道其他团队所做的工作。 特征存储旨在解决这些问题。
为何使用 Databricks 特征存储?
Databricks 特征存储与其他 Azure Databricks 组件完全集成。
- 可发现性。 可从 Databricks 工作区访问特征存储 UI,可让你浏览和搜索现有特征。
- 世系。 在 Azure Databricks 中创建功能表时,保存和访问用于创建功能表的数据源。 对于特征表中的每个特征,还可以访问使用该特征的模型、笔记本、作业和终结点。
- 与模型评分和服务集成。 使用特征存储中的特征训练模型时,模型将与特征元数据一起打包。 使用模型进行批量评分或联机推理时,它会自动从特征存储中检索特征。 调用方无需了解这些特征或包括逻辑即可查找或联接特征以对新数据进行评分。 这使得模型部署和更新变得更容易。
- 时间点查找。 特征存储支持需要时间点正确性的时序和基于事件的用例。
Unity Catalog 中的特征工程
借助 Databricks Runtime 13.2 及更高版本,如果为 Unity 目录启用了工作区,Unity 目录将成为功能存储区。 可以使用 Unity Catalog 中任何带有主键的增量表或增量实时表作为用于模型训练或推理的特征表。 Unity 目录提供功能发现、治理、世系和跨工作区访问。
Databricks 功能存储的工作原理是什么?
使用特征存储的典型机器学习工作流遵循以下路径:
编写代码以将原始数据转换为特征,并创建一个包含所需特征的 Spark 数据帧。
对于启用 Unity Catalog 的工作区,将数据帧写入为 Unity Catalog 中的特征表。 如果没有启用 Unity Catalog 的工作区,将数据帧写入为工作区特征存储中的特征表。
使用特征存储中的特征训练模型。 执行此操作时,模型会存储用于训练的特征规范。 当模型用于推理时,它自动从相应的特征表中联接特征。
在模型注册表中注册模型。
然后,可以使用该模型对新数据进行预测。
对于批处理用例,模型自动从特征存储中检索所需的特征。
对于实时服务用例,将功能发布到联机存储。
在推理时,模型从联机存储中读取预先计算的特征,并将其与客户端请求中提供的数据联接到模型服务终结点。
开始使用特征存储
请参阅以下文章以开始使用特征存储:
尝试其中一个说明特征存储功能的示例笔记本。
请参阅关于特征存储 Python API 的参考资料。
了解如何使用特征存储训练模型。
了解 工作区功能存储。
使用时序特征表和时间点查找,以检索在特定时间之前用于对模型进行训练或评分的最新特征值。
了解如何 将特征发布到在线存储,以实现实时服务和自动特征查找。
了解功能服务,它使 Databricks 平台中的特性可在低延迟下供 Databricks 外部部署的模型或应用程序使用。
在 Unity Catalog 中使用功能工程时,Unity Catalog 负责跨工作区共享特征表,而你使用 Unity Catalog 特权来控制对特征表的访问。 以下链接仅适用于工作区功能存储:
支持的数据类型
Unity 目录和工作区特征存储中的特征工程支持以下 PySpark 数据类型:
IntegerType
FloatType
BooleanType
StringType
DoubleType
LongType
TimestampType
DateType
ShortType
ArrayType
BinaryType
[1]DecimalType
[1]MapType
[1]
[1] Unity 目录的所有特征工程版本和工作区功能存储 v0.3.5 或更高版本中支持 BinaryType
、DecimalType
和 MapType
。
上面列出的数据类型支持机器学习应用程序中常见的特征类型。 例如:
- 可以将稠密矢量、张量和嵌入存储为
ArrayType
。 - 可以将稀疏矢量、张量和嵌入存储为
MapType
。 - 可以将文本存储为
StringType
。
发布到在线商店时,ArrayType
和 MapType
特征以 JSON 格式存储。
特征存储 UI 显示有关特征数据类型的元数据:
详细信息
有关使用特征存储的最佳做法的详细信息,请下载特征存储综合指南。