Snowflake 特征平台¶
备注
Snowflake 特征平台 API 在 Snowpark ML Python 包 (snowflake-ml-python) v1.5.0 及更高版本中提供。
Snowflake 特征平台可让数据科学家和 ML 工程师在 Snowflake 中创建、维护和使用 ML 特征,以在数据科学和 ML 工作负载中使用。
一般来说,特征 是用作机器学习模型输入的数据元素。数据集中的许多列(例如温度或出勤率)都可按原样用作特征。在其他情况下,可以通过预处理和转换使列更有利于训练。例如,您可以从时间戳派生出周几的特征,以允许模型检测每周的模式。其他常见的特征转换涉及聚合、区分或时移数据。特征工程 是确定模型需要哪些特征并定义如何从原始数据中获取这些特征的过程。
特征平台 可让您在中央存储库中标准化常用的特征转换,从而实现重复使用,帮助减少重复的数据和工作量,并提高生产效率。它还可以通过在新的源数据上更新特征来帮助维护特征,始终在单一事实来源中提供正确、一致且新鲜的特征。通过在从原始数据中提取特征的过程中保持一致性,特征平台还有助于提高 ML 生产管道的稳健性。
Snowflake 特征平台旨在使数据科学和机器学习工作负载中特征的创建、存储和管理特征变得更简单、更高效。Snowflake 特征平台本地托管在 Snowflake 内部,具有以下优势:
您的数据始终安全,完全在您的控制和管理之下,并且永远不会离开 Snowflake。
Snowsight 特征平台 UI 支持您轻松搜索和发现特征。
使用细粒度的 基于角色的访问控制 来管理访问。
Snowflake 特征平台的主要优势包括以下支持:
批处理和流式处理数据,并在新数据到达时进行高效的自动更新
使用 ASOF JOIN 对特征进行回填和时间点校正
使用 Python 或 SQL 编写的特征转换
使用 Snowflake 管理的特征视图自动更新和刷新源数据中的特征值
能够将用户管理的特征管道与 dbt (https://www.getdbt.com/) 等外部工具一起使用
Snowflake 特征平台与 Snowflake 模型注册表 及其他 Snowflake ML 特征完全集成,以用于端到端生产 ML。
能够通过 ML Lineage 追踪从源到特征、到数据集再到训练模型的数据流。通过使模型能够在推理时自动检索正确的特征值,因此用户无需提供所有特征输入,这也有助于简化推理。使用功能存储库时会自动创建 ML Lineage。
下图展示了 Snowflake 特征平台是如何融入机器学习管道的:
可以从表或视图或流式处理数据源中批量获取原始数据。
然后,原始数据由数据工程师定义的特征进行转换,从而生成特征表。
该特征表可用于生成用于在 Snowpark ML 中训练模型的训练数据集,或丰富模型用于预测的测试数据。
它是如何工作的?¶
备注
Snowflake 中的特征平台只是一种架构。您可以创建一个新架构以用作特征平台,或者使用一个现有的架构。
特征平台包含 特征视图。特征视图可封装 Python 或 SQL 管道,用于将原始数据转换成一个或多个相关特征。特征视图中定义的所有特征都会同时从源数据刷新。
小技巧
可访问多个特征平台的用户可以将多个特征平台中的特征视图结合起来,以创建训练和推理数据集。
Snowflake 特征平台支持两种特征视图:
Snowflake 管理:Snowflake 特征平台会按照您指定的计划逐步、高效地为您刷新特征视图中的特征。
外部:特征平台之外的一些其他流程会维护特征视图中的特征。此类型的特征视图旨在与以下工具一起使用:dbt (https://www.getdbt.com/)。
在特征平台中,特征视图根据其适用的 实体 来组织。实体是一个更高层次的抽象概念,代表了特征的主题内容。例如,在一个电影流媒体服务的特征平台中,主要实体可能是用户和电影。原始电影数据和用户活动数据可以转换为有用的特征(例如每部电影的观看时间和用户会话时长),并且包含这些特征的特征视图可用相关实体进行标记。
后端数据模型¶
特征平台对象是作为 Snowflake 对象来实现的。因此,所有特征平台对象都受 Snowflake 访问控制规则的约束。
特征平台对象 |
Snowflake 对象 |
|---|---|
特征平台 |
|
特征视图 |
|
实体 |
|
特征 |
动态表或视图中的列 |
特征视图的属性(例如名称和实体)是作为动态表或视图上的标签来实现的。
您可使用 SQL 查询或操作 Snowflake 对象。通过 SQL 所做的更改会反映在 Python API 中,反之亦然。
小技巧
Snowflake 特征平台的所有对象都存储在该特征平台的架构中。要完全删除一个特征平台,请确保该架构不包含任何其他资源,然后 删除架构。
开始使用¶
备注
Snowflake 特征平台 Python API 是 Snowpark ML Python 包 snowflake-ml-python 的一部分。您可以在您首选的 Python IDE 或者 Snowsight 工作表或笔记本的本地系统中使用它。有关详细信息,请参阅 适用于 Snowflake ML 的 Python APIs。
Begin your journey with Introduction to the Snowflake Feature Store (https://quickstarts.snowflake.com/guide/intro-to-feature-store/) for an introduction to Snowflake Feature Store concepts. Then follow up with additional Snowflake quickstarts (https://quickstarts.snowflake.com), including:
Develop and Manage ML Models with the Snowflake Feature Store and Model Registry (https://quickstarts.snowflake.com/guide/develop-and-manage-ml-models-with-feature-store-and-model-registry/). This is an end-to-end ML development cycle demo with the Feature Store and the Model Registry.
Getting Started with the Snowflake Feature Store API (https://quickstarts.snowflake.com/guide/overview-of-feature-store-api/). This is an overview of Feature Store Python APIs.
Advanced Guide to the Snowflake Feature Store (https://quickstarts.snowflake.com/guide/advanced_guide_to_snowflake_feature_store/). This is a more advanced example of Feature Store and pipelines.
Getting Started with Snowflake Feature Store and dbt (https://quickstarts.snowflake.com/guide/getting-started-with-feature-store-and-dbt/). This demonstrates how to register features from DBT pipeline into Snowflake Feature Store.
有关特定类型的特征转换的示例,请参阅 常见特征和查询模式。
备注
这些 Quickstarts 仅作为示例展示。按照示例操作可能需要对非 Snowflake 拥有或提供的第三方数据、产品或服务具有额外权利。Snowflake 不保证这些示例的准确性。