公告

Feast 加入 PyTorch 生态系统:连接特征存储和深度学习

PyTorch 彻底改变了我们构建和部署 AI 模型的方式,但将其投入生产环境依然充满挑战。训练环境与生产环境之间的数据不一致是 AI 模型在投产时面临的主要挑战之一,人工智能行业将其称为“训练-服务偏差”(training-serving skew)。即便是最具影响力的模型,如果生产数据与训练时使用的数据不匹配,也会导致失败。

我们非常激动地宣布,Feast——一个用于生产级 AI 的开源特征存储库——已正式加入 PyTorch 生态系统!通过将 Feast 与 PyTorch 社区深度整合,我们将 PyTorch 的卓越建模能力与强大的数据基础设施实践相结合,实现了从模型开发到生产部署的无缝衔接。

要查看 PyTorch 生态系统,请访问 PyTorch 生态图谱,并了解项目如何 加入 PyTorch 生态系统。 

关于 Feast

Feast(Feature Store 的缩写)旨在管理生产级 AI 的数据。它提供了一个统一的 API 来定义、存储和提供数据(即特征),连接了离线(训练)和在线(服务)环境。 

Feast 对 PyTorch 工作流的特别价值在于其消除“训练-服务偏差”的能力——确保生产环境中的模型能够获得与训练时完全相同的特征转换。其核心功能包括:

  • 声明式特征定义 – 定义一次特征,即可在训练和服务中保持一致地使用。
  • 时间点准确性(Point-in-time correctness)  – 通过管理历史特征状态,防止训练过程中的数据泄露。
  • 可插拔架构 – 无需重大变更即可适配现有数据基础设施(支持与 Spark、Snowflake、BigQuery、Ray、Kubernetes 以及云原生存储/服务层的集成)。
  • 低延迟服务 – 预计算的特征存储在数据库中,支持推理时毫秒级的检索。
  • 以 Python 为中心的 API – 与 PyTorch 工作流和 MLOps 流水线无缝集成。

Feast 并非建模库,而是提供了数据基础,确保您的模型在从开发到生产的过程中表现一致。通过加入 PyTorch 生态系统,Feast 进一步坚定了其致力于构建开放、可互操作的 AI 基础设施的承诺,以满足社区的需求。

通过加入 PyTorch 生态系统,Feast 进一步坚定了其致力于构建开放、可互操作的 AI 基础设施的承诺,以满足社区的需求。

实践案例:基于 Feast + PyTorch 的情感分析

了解 Feast 如何与 PyTorch 协作。试试我们的情感分析演示,展示无需配置即可实现的实时特征服务。

您将学到什么:

  • 如何为 PyTorch 模型定义和提供特征
  • 用于模型推理的实时特征检索 
  • 用于训练的“时间点准确”特征工程

本演示展示了如何使用 Hugging Face transformers、合成文本数据和 Feast 特征存储库构建一个完整的情感分析流水线。您将看到 Feast 如何在从训练到实时推理的整个过程中保持特征的一致性——所有过程均在本地使用 SQLite 运行,无需任何基础设施。

第一步:安装与设置

首先,我们将安装 Python 包,启动演示,并使用 Feast CLI 工具 应用元数据。

pip install feast[pytorch]>=0.58.0
feast init pytorch_demo  -t pytorch_nlp

通过运行 feast init,我们初始化了一个包含情感嵌入转换器的模板仓库。目录结构如下:

> tree
.
├── __init__.py
├── feature_repo
│   ├── __init__.py
│   ├── data
│   │   └── sentiment_data.parquet
│   ├── example_repo.py
│   ├── feature_store.yaml
│   ├── static_artifacts.py
│   └── test_workflow.py
└── README.md

以下是每个文件用途的简要说明:

  • README.md – 提供演示项目的详细摘要。

  • feature_repo/__init__.py – 识别 Python 项目所需的文件。

  • feature_repo/data/sentiment_data.parquet – 本演示的示例数据。

  • feature_repo/example_repo.py – 包含所有特征、转换和其他 Feast 对象的声明式代码。

  • feature_repo/static_artifacts.py – Feast 使用此代码在构建时加载小型情感模型,以提高延迟表现。

  • feature_repo/test_workflow.py – 一个贯穿 MLOps 流水线的端到端演示脚本。

sentiment_data.parquet 文件提供了一组带有标签和情感分数的示例数据。该数据的转置子集如下所示:

|                      | 0                    | 1                    |
|:---------------------|:---------------------|:---------------------|
| text_id              | text_0000            | text_0001            |
| user_id              | user_028             | user_059             |
| text_content         | Having an amazing... | Traffic is horrib... |
| sentiment_label      | positive             | negative             |
| sentiment_score      | 0.993                | 0.982                |
| text_length          | 48                   | 59                   |
| word_count           | 9                    | 10                   |
| exclamation_count    | 1                    | 1                    |
| caps_ratio           | 0.021                | 0.017                |
| emoji_count          | 0                    | 0                    |
| event_timestamp      | 2025-12-15 16:38:... | 2025-12-03 15:08:... |
| created              | 2025-12-23 14:40:... | 2025-12-23 14:40:... |
| user_avg_sentiment   | 0.927                | 0.902                |
| user_text_count      | 11                   | 7                    |
| user_avg_text_length | 47.636               | 51.429               |

接下来,我们将切换目录到 feature_repo,在这里我们可以存储所有用于服务应用程序的声明式特征代码。然后,我们将运行 feast apply,它会将声明式代码(实体、特征视图和其他 Feast 特定对象)作为元数据注册到 Feast 特征注册表中,该注册表用于治理、血缘追踪和编目。

cd pytorch_demo/feature_repo
feast apply

输出结果如下所示:

Created entity text
Created entity user
Created feature view text_features
Created feature view user_stats
Created on demand feature view sentiment_prediction
Created feature service sentiment_analysis_v1
Created feature service sentiment_analysis_v2 

注册元数据后,我们可以获取示例数据并将其上传到“在线”数据库中,以供生产使用。

第二步:将数据加载到在线数据库

我们可以使用 Feast CLI 工具将数据上传到在线数据库,该工具支持通过 materialize-incremental 命令进行本地文件上传。在此演示中,我们使用 SQLite,但 Feast 支持多种生产级企业数据库。

feast materialize-incremental $(date -u +"%Y-%m-%dT%H:%M:%S")

第三步:启动并测试 REST API 

再次使用 Feast CLI 工具,我们可以启动 特征服务器,它公开了 REST API 端点,允许其他服务安全地访问我们在在线数据库中上传的数据。

feast serve --host 0.0.0.0 --port 6566

我们可以在另一个终端会话中发送 curl 请求:

curl -X POST \
  "https://:6566/get-online-features" \
  -H "Content-Type: application/json" \
  -d '{
    "features": [
      "sentiment_prediction:predicted_sentiment",
      "sentiment_prediction:sentiment_confidence",
      "sentiment_prediction:positive_prob"
    ],
    "entities": {
      "input_text": ["I love this amazing product!", "This service is terrible"],
      "model_name": ["cardiffnlp/twitter-roberta-base-sentiment-latest", "cardiffnlp/twitter-roberta-base-sentiment-latest"]
    }
  }' | jq


您将看到一个结构良好的 JSON 数据,其中包含了我们的特征数据,包括通过 Feast 动态转换(即“按需”)的数据!这些数据可用于各种应用,特别是那些运行推荐引擎、计分模型、RAG 应用和其他 AI 用例的场景。

第四步:渲染 UI 以查看数据血缘

最后,我们可以在本地启动 UI,以优雅地呈现注册表中的元数据。Feast UI 是一个编目工具,旨在集中管理特征,以促进跨团队协作并减少重复开发。

您可以通过 Feast CLI 运行 UI,并导航至血缘页面查看丰富的可视化信息。

feast ui

Feast 血缘 UI 示例

除了演示之外,Feast 还支持其他功能,助力 AI/ML 团队发布生产级 AI 应用。

计算引擎与训练数据集准备

在特征开发和迭代(即训练数据集准备)过程中,用户通常需要运行批处理作业来回填历史数据。Feast 支持时间点连接,以确保特征准确性并避免将未来特征信息泄漏到训练数据中。为此,Feast 使用了一个 计算引擎 抽象层,支持多个提供商(本地、Spark、Snowflake、Lambda、Flink 和 Ray)。这种灵活性允许我们的终端用户利用开源的最佳实践,同时提供简单的 SDK 来规避常见挑战。

用于可观测性的 OpenTelemetry

Feast 支持 OpenTelemetry,并为您的特征服务基础设施提供全面的监控和可观测性。

治理所需的授权/RBAC 与权限管理

Feast 支持 OIDC 身份验证和 Kubernetes RBAC,以实现强大的基于角色的访问控制。此外,Feast 还支持一套 权限系统,允许为在线存储、离线存储和注册表配置精细的权限策略。

Feast 如何增强 PyTorch 体验

将 Feast 集成到 PyTorch 生态系统中,为构建生产级 AI 系统的从业者解锁了几个关键优势:

  • 消除训练-服务偏差 – 这是生产中模型性能下降的首要原因。Feast 确保您的模型在训练和推理期间接收到完全相同的特征转换,从而大规模维持模型准确性。
  • 加速模型部署 – 存储在优化数据库中的预计算特征支持毫秒级延迟的实时数据服务。在推理时无需等待特征计算。
  • 实现跨团队特征复用 – 集中化的特征定义避免了重复劳动。当一个团队为推荐模型创建用户行为特征时,其他团队可以直接将其重用于反欺诈或个性化模型。
  • 赋能高级 AI 工作流 – Feast 的向量存储能力与 PyTorch 相结合,实现了复杂的检索增强生成(RAG)流水线,即检索文档嵌入并用于增强大语言模型的响应。
  • 提供生产级治理 – 内置的血缘追踪、访问控制和监控功能,确保您的 PyTorch 模型满足企业对于数据治理和合规性的要求。

经社区验证的大规模应用

受到 NVIDIA、Shopify 等组织,以及其他在电子商务到金融服务等各行业构建生产级 PyTorch 系统的公司的信赖。

实际影响

Feast 已在各行业获得广泛应用,助力初创公司和大型企业驱动 AI 应用。考虑以下用例:

  • 实时个性化:电子商务平台利用 Feast 向 PyTorch 推荐模型提供最新的用户行为特征,实现具有毫秒级响应速度的个性化产品推荐。
  • 金融 AI:信贷审批系统利用 Feast 的“时间点准确性”,确保用于反欺诈的 PyTorch 模型不会使用未来信息进行训练,从而保持模型准确性和监管合规性。
  • RAG 应用:各组织将 Feast 与基于 PyTorch 的语言模型结合以实施检索增强生成,从向量存储中检索相关文档,并用于提供上下文相关的响应。

行动号召

如果您正在使用 PyTorch(或正在探索模型部署或 RAG 工作流),我们诚邀您从今天开始探索 Feast。

准备好用 Feast 为您的 PyTorch 工作流注入活力了吗?安装带有 PyTorch 支持的 Feast。

pip install feast[pytorch]>=0.58.0

结论

Feast 加入 PyTorch 生态系统标志着在提升生产级 AI 的易用性方面迈出了重要的一步。通过将 PyTorch 的建模能力与 Feast 强大的数据管理相结合,开发人员现在能够充满信心地构建从原型到生产的端到端 AI 系统。