第 2 章 配置功能存储
作为集群管理员,您可以在 Red Hat OpenShift AI Operator 配置中作为组件安装和管理 Feature Store。
2.1. 设置功能存储 复制链接链接已复制到粘贴板!
作为集群管理员,您必须完成以下任务来设置 Feature Store :
- 启用 Feature Store 组件。
- 创建数据科学项目并添加 Feature Store 实例。
- 初始化功能存储实例。
- 设置功能存储,以便 ML 工程师和数据科学家可以推送和检索用于模型培训和认证的功能。
2.1.1. 开始前 复制链接链接已复制到粘贴板!
在机器学习工作流中实施 Feature Store 前,您必须有以下信息:
- 与您的数据和用例相关的知识
您必须知道您的用例和原始底层数据,以便您可以识别您要定义为功能的属性或属性。例如,如果您正在开发检测可能的信用卡欺诈事务的机器学习(ML)模型,您可以识别购买历史记录、事务位置、事务频率或信用限制等数据。
使用 Feature Store 时,您可以将每个属性定义为一个功能。您要将一个概念化链接或关系共享在一起的功能分组在一起,以定义实体。您可以定义映射到用例域的实体。并非所有功能都必须在实体中。
- 对您的数据源的知识
您必须知道要在 ML 工作流中使用的原始数据的来源。当您在线配置 Feature Store 在线和离线存储和功能 registry 时,您必须指定与数据源兼容的环境。另外,在定义功能时,您必须为功能指定数据源。
功能存储使用时间序列数据模型来代表数据。此数据模型用于解释数据源中的功能数据,以便构建培训数据集或将功能集中到在线存储中。
您可以连接到以下类型的数据源:
- 批处理数据源
- 以离散块或批处理方式收集和处理数据的方法,而不是持续流传输数据。这种方法通常用于大型数据集,或者在实时处理不重要时。在数据处理上下文中,批处理数据源定义与 data-at-rest 源的连接,允许您批量访问和处理数据。批处理数据源的示例包括数据仓库(如 BigQuery、Snowflake 和 Redshift)或数据 lakes (如 S3 和 GCS)。通常,在配置 Feature Store 离线存储时,您可以定义批处理数据源。
- 流数据源
- 持续流动或向在线实时处理发送的数据来源。功能存储没有原生流集成,但它有助于推送源,允许您将功能推送到 Feature Store 中。您可以将 Feature Store 用于培训或批量评分(离线)、实时功能服务(在线)或两者。通常,在配置 Feature online Store 在线存储时,您可以定义流数据源。
您可以将以下数据源与 Feature Store 搭配使用:
在线存储的数据源
- SQLite
- Snowflake
- Redis
- Dragonfly
- IKV
- Datastore(数据存储)
- DynamoDB
- bigtable
- PostgreSQL
- Cassandra + Astra DB
- Couchbase
- MySQL
- Hazelcast
- ScyllaDB
- 远程
- SingleStore
有关如何配置这些在线存储的详情,请查看 在线存储的 Feast 参考文档。
离线存储的数据源
- Dask
- Snowflake
- BigQuery
- redshift
- DuckDB
离线存储是处理存储在数据源中的历史时间序列功能值的接口。每个离线存储实施都设计为仅与相应的数据源一起使用。
离线存储可用于以下目的:
- 从时间序列功能构建培训数据集。
- 将(加载)功能放入在线存储中,以便在生产设置中低延迟提供这些功能。
一次只能使用单个离线存储。离线存储并不适用于所有数据源;例如,BigQuery 离线存储无法用于查询基于文件的数据源。
有关如何配置这些离线存储的详情,请查看 Feast 参考文档以了解离线存储。
功能 registry 的数据源
- Local
- S3
- GCS
- SQL
- Snowflake
有关如何配置这些 registry 选项的详情,请查看 registry 的 Feast 参考文档。
2.1.2. 启用功能存储组件 复制链接链接已复制到粘贴板!
要允许机构的 ML 工程师和数据科学家处理机器学习功能,您必须在 Red Hat OpenShift AI 中启用 Feature Store 组件。
先决条件
- 具有集群管理员特权。
- 已安装 OpenShift AI。
流程
-
在 OpenShift 控制台中,点 Operators
Installed Operators。 - 点 Red Hat OpenShift AI Operator。
- 点 Data Science Cluster 选项卡。
- 点默认实例名称(如 default-dsc)打开实例详情页面。
- 点 YAML 标签。
编辑
spec:components部分。对于feastoperator组件,将managementState字段设置为Managed:spec: components: feastoperator: managementState: Managedspec: components: feastoperator: managementState: ManagedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 点击 Save。
验证
检查 feast-operator-controller-manager-<pod-id > pod 的状态:
-
点 Workloads
Deployments。 - 从 Project 列表中,选择 redhat-ods-applications。
- 搜索 feast-operator-controller-manager 部署。
- 单击 feast-operator-controller-manager 部署名称,以打开部署详情页面。
- 点 Pods 选项卡。
- 查看 pod 状态。
当 feast-operator-controller-manager-<pod-id > pod 的状态为 Running 时,Feature Store 会被启用。
下一步
- 在数据科学项目中创建功能存储实例。
2.1.3. 在数据科学项目中创建功能存储实例 复制链接链接已复制到粘贴板!
您可以通过在 OpenShift 控制台中创建自定义资源定义(CRD),将 Feature Store 实例添加到数据科学项目中。
以下示例显示了 Feature Store CR YAML 文件的最低要求:
先决条件
- 具有集群管理员特权。
- 您已启用了 Feature Store 组件,如 启用 Feature Store 组件 中所述。
您已为在线存储、离线存储和 registry 设置了数据库基础架构。
有关设置和运行 PostgreSQL 的示例(用于 registry)和 Redis (用于在线存储),请参阅 Feature Store Operator 快速启动示例: https://github.com/feast-dev/feast/tree/stable/examples/operator-quickstart。
-
您已创建了数据科学项目,如创建 数据科学项目 中所述。在以下步骤中,
my-ds-project是数据科学项目的名称。
流程
-
在 OpenShift 控制台中,点 Quick Create (
)图标,然后点 Import YAML 选项。
- 验证您的数据科学项目是否为所选项目。
复制以下代码并将其粘贴到 YAML 编辑器中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.feastProjectDir引用位于 credit Store 教程的 Git 存储库中的 Feature Store 项目。-
(可选)更改 Feature Store 实例的
metadata.name。 -
(可选)编辑
feastProject,这是组织您的 Feature Store 实例的命名空间。请注意,此项目不是 OpenShift AI 数据科学项目。 - 点 Create。
当您在 OpenShift 中创建 Feature Store CR 时,Feature Store 会启动远程在线功能服务器,并使用本地供应商配置默认 registry 和离线存储。
提供程序 是一种可自定义接口,提供默认功能存储组件,如 registry、离线存储和在线存储,以特定环境为目标,确保这些组件可以无缝协同工作。本地供应商使用以下默认设置:
- registry: SQL registry 或本地文件
- 离线存储: 排除文件
- 在线存储: SQLite
验证
-
在 OpenShift 控制台中,选择 Workloads
Pods。 - 确保选择了您的数据科学项目(如 my-ds-project)。
-
找到具有
feast-前缀的 pod,后跟您在 CRD 配置中指定的metadata.name,如sample-git。 - 验证容器集状态为 Running。
-
单击
feastpod,然后选择 Pod details。 - 向下滚动以查看在线容器。此容器是在线服务器的部署。它使功能服务器 REST API 在 OpenShift 集群中可用。
- 向上滚动,然后单击 Terminal。
运行以下命令验证
feastCLI 是否已正确安装:feast --help
$ feast --helpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看 Feature Store 项目的文件,请输入以下命令:
ls -la
$ ls -laCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您应该看到类似如下的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要查看
feature_store.yaml配置文件,请输入以下命令:cat feature_store.yaml
$ cat feature_store.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您应该看到类似如下的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
feature_store.yaml 文件定义以下组件:
- project - Feature Store 实例的命名空间。请注意,此项目指的是功能项目,而不是 OpenShift AI 数据科学项目。
- Provider - Feature Store 部署并运行的环境。
- registry - 功能 registry 的位置。
- online_store - 在线存储的位置。
-
auth - 身份验证和授权类型(
no_auth、kubernetes或oidc) - entity_key_serialization_version - 指定在将数据写入在线存储时使用的序列化方案。
注意: 尽管 feature_store.yaml 文件中不包含 offline_store 位置,但 Feature Store 实例使用基于 DASK 文件的离线存储。在 feature_store.yaml 文件中,registry 类型是 file,但它使用一个简单的 SQLite 数据库。
后续步骤
- 另外,您可以通过编辑 Feature Store CR 的 YAML 配置来自定义离线存储、在线存储或 registry 的默认配置,如 自定义 Feature Store 配置 中所述。
-
为您的 ML 工程师和数据科学家提供数据科学项目的访问权限,以便他们可以创建工作台。并为他们提供
feature_store.yaml文件的副本,以便他们可以将其添加到其工作台 IDE 中,如 Jupyter。
2.1.4. 添加功能定义和初始化您的功能存储实例 复制链接链接已复制到粘贴板!
初始化 Feature Store 实例,以使用它。
当您初始化 Feature Store 实例时,Feature Store 可以完成以下任务:
扫描功能存储库中的 Python 文件,并找到所有功能存储对象定义,如功能视图、实体和数据源。
注: Feature Store 以递归方式读取所有 Python 文件,包括子目录,即使它们不包含功能定义。有关识别 Python 文件的详情,如您希望 Feature Store 忽略的必要脚本,请参阅 指定要忽略的文件。
- 通过检查功能视图中功能的唯一性来验证您的功能定义。
- 将对象的元数据同步到功能 registry。如果 registry 不存在,则 Feature Store 会创建一个。默认 registry 是磁盘上的一个简单 Protobuf 二进制文件(本地或在对象存储中)。
创建或更新所有必要的功能存储基础架构。Feature Store 所创建的确切基础架构取决于您在
feature_store.yaml中设置的供应商配置。例如,当您将local指定为供应商时,Feature Store 会在本地集群中创建基础架构。注: 当您使用云供应商时,如 Google Cloud Platform 或 Amazon Web Service,
feast apply命令会创建可能会为您的组织带来成本的云基础架构。
先决条件
- 您的团队的 ML 工程师为您提供了一个定义功能的 Python 文件。有关如何定义功能的更多信息,请参阅 定义功能。
- 如果要将功能 registry 存储在云存储或数据库中,已为功能 registry 配置存储。例如,如果供应商是 GCP,已为功能 registry 创建 Cloud Storage 存储桶。
-
在 OpenShift 中具有
cluster-admin角色。 - 您已在数据科学项目中创建了一个 Feature Store 实例。
流程
-
在 OpenShift 控制台中,选择 Workloads
Pods。 - 确保您的数据科学项目是当前项目。
-
单击
feastpod,然后选择 Pod details。 - 向下滚动以查看在线容器。此容器是在线服务器的部署,其使功能服务器 REST API 在 OpenShift 集群中可用。
- 向上滚动,然后单击 Terminal。
-
将功能定义(
.py)文件复制到您的 Feature Store 目录中。 要创建功能 registry 并在 registry 中添加功能定义,请运行以下命令:
feast apply
feast applyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
您应该看到类似如下的输出,表明功能定义文件中的功能已成功添加到 registry 中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在 OpenShift 控制台中,选择 Workloads
Deployments 来查看部署 pod。
2.1.4.1. 指定要忽略的文件 复制链接链接已复制到粘贴板!
当您运行 feast apply 命令时,Feature Store 会递归读取所有 Python 文件,包括子目录中的 Python 文件,即使 Python 文件不包含功能定义。
如果您在 registry 文件夹中有 Python 文件,如必需脚本,您希望 Feature Store 在运行 feast apply 命令时忽略,您应该创建一个 .feastignore 文件,并将路径列表添加到您希望 Feature Store 忽略的所有文件。
.feastignore 文件示例
2.1.5. 在基于 Web 的 UI 中查看功能存储对象 复制链接链接已复制到粘贴板!
您可以使用 Feature Store Web UI 来查看所有注册的功能、数据源、实体和功能服务。
先决条件
- 您可以访问 OpenShift 控制台。
- 已安装 OpenShift 命令行界面(CLI)。请参阅安装 OpenShift CLI。
- 您已启用了 Feature Store 组件,如 启用 Feature Store 组件 中所述。
- 您已创建了 Feature Store CRD,如在 数据科学项目中创建 Feature Store 实例 中所述。
流程
-
在 OpenShift 控制台中,选择 Administration
CustomResourceDefinitions。 - 要过滤列表,请在 Search by Name 字段中输入 feature。
- 点 FeatureStore CRD,然后点 Instances。
- 单击与您在创建 Feature Store 实例时指定的元数据名称对应的实例名称。
编辑 YAML,在
spec部分包含对services.ui的引用,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 单击 Save,然后单击 Reload。
Feature Store Operator 为基于 Web 的功能存储 UI 启动容器,并创建提供 URL 的 OpenShift 路由,以便您可以访问它。
-
在 OpenShift 控制台中,选择 Workloads
Pods。 请确定您的项目(如
my-ds-project)已选中。您应该会看到基于 Web 的 UI 的部署。请注意,OpenShift 在运行时默认启用 TLS。
使用 Feature Store 实例中的对象填充基于 Web 的 UI:
-
在 OpenShift 控制台中,选择 Workloads
Pods。 -
请确定您的项目(如
my-ds-project)已选中。 -
单击
feastpod,然后选择 Pod details。 - 点 Terminal。
要更新 Feature Store 实例,请输入以下命令:
feast apply
feast applyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在 OpenShift 控制台中,选择 Workloads
要查找 Feature Store UI 的 URL,请在 OpenShift 控制台中点 Networking
Routes。 在 Feature Store UI 所在的行中,如
feast-sample-ui,URL 位于 Location 列中。- 点 URL 链接,在默认 Web 浏览器中打开它。
验证
此时会显示 Feature Store Web UI,并显示项目中的功能对象,如下图所示:
图 2.1. 功能存储 Web UI