在生产环境中使用 Snowflake 在线特征平台¶
Snowflake ML 特征平台有助于在整个特征工程过程中管理特征。
对于需要低延迟推理的在线应用程序,请使用在线特征平台来提供特征。
以下章节将介绍在 Python 应用程序中检索功能的生产过程。这些章节包含执行以下操作的代码示例:
将鸢尾花数据集加载到 Snowflake 中
定义与 Snowflake 的连接
创建特征平台和特征视图
检索特征和特征值
从模型生成预测
代码示例是用 Python 编写的。要为用其他语言编写的应用程序完成此工作流程,请使用特定于该语言的 Snowflake 驱动程序。有关更多信息,请参阅 驱动程序。
先决条件¶
要在 Snowflake 中运行在线 ML 特征检索,您需要以下内容:
已加载到 Snowflake 中的数据
Snowflake 特征平台
特征视图
为每个特征视图启用在线特征服务
您可以使用自己的 Snowflake 特征平台中的特征,但如果您还没有特征平台,则可以使用以下代码将鸢尾花数据集加载到 Snowflake 中。
在环境中拥有数据后,您可以创建特征平台。以下代码为鸢尾花数据集中的不同样本创建特征平台及 id_entity 实体。
备注
Snowflake ML 特征平台具有实体的概念。实体是在特征视图之间组织特征的密钥。有关实体的更多信息,请参阅 使用实体。
创建特征平台后,定义特征视图。以下代码定义了鸢尾花数据集中的萼片和花瓣特征视图。
检索特征值¶
注册特征视图并为每个特征视图启用在线特征服务后,您可以将每个特征视图的特征值提供给应用程序。
要检索特征值,请执行以下操作:
设置与 Snowflake 的连接
创建在应用程序启动时初始化的会话和 Snowflake 特征平台对象
从特征视图中检索特征
创建预测端点并从该端点获取预测
重要
您必须将 snowflake-ml-python>=1.18.0 安装到应用程序的环境中,才能使用特征平台 API。
要从应用程序连接到 Snowflake,必须设置 编程访问令牌 (PAT) 或 密钥对身份验证 作为身份验证方法。
配置客户端¶
初始化应用程序时,必须连接到 Snowflake ML 特征平台 API 并创建所需的特征平台 Python 对象。
使用以下部分配置客户端与 Snowflake ML 特征平台 API 的连接。
配置编程访问令牌 (PAT)¶
在以下代码中指定以下连接参数,以从应用程序连接到 Snowflake:
schema– Snowflake 特征平台的名称database– 包含架构或特征平台的数据库role– 从特征平台读取数据所需的角色。有关更多信息,请参阅 提供创建和提供在线特征的访问权限。password– 您的 PAT。
在以下代码中指定以下连接参数,以从应用程序连接到 Snowflake:
schema– Snowflake 特征平台的名称database– 包含架构或特征平台的数据库role– 从特征平台读取数据所需的角色。有关更多信息,请参阅 创建和提供在线特征。private_key_file– 私钥文件private_key_file_pwd– 私钥文件的密码
创建会话和特征平台对象
定义连接参数后,创建应用程序用于连接到 Snowflake 的会话和特征平台对象。
以下代码:
创建 Snowflake 会话,即应用程序用于与 Snowflake 通信的客户端。
配置线程池执行器以启用特征检索并行性。
列出我们从特征平台中检索的特征。
初始化特征平台阅读器客户端。此对象包装 Snowflake 会话。这是应用程序与特征平台交互的主要方式。
初始化您定义的特征视图。您可以用自己的特征替换这些特征。
检索服务路径上的在线特征¶
定义应用程序的初始化方式后,您可以创建预测端点。
您可以通过不同的方式来定义应用程序处理请求的方式。以下 Python 代码:
定义应用程序中的预测端点
从 JSON 请求中获取密钥
使用密钥从特征视图中检索特征值
将这些特征值传递给模型
从模型中获取预测
返回响应中的预测
前面的代码调用了一个假设的 run_inference 函数。无论模型是远程托管还是在应用程序内存中,您自己的推理函数都可以从模型中获取预测。
前面代码中的预测端点接受一个密钥并返回该密钥的预测。您的数据可能有多个密钥来描述单个样本的特征。前面的代码只是一个示例,您可以根据自己的用例进行调整。