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 网站: https://feast.dev Feast
- 阅读文档: https://docs.feast.dev docs.feast.dev
- 查看 GitHub 仓库: https://github.com/feast-dev/feast GitHub
- 加入我们的社区:无论您是想添加新的连接器、改进文档,还是将 Feast 集成到您的 PyTorch 技术栈中——我们都欢迎您的贡献。
准备好用 Feast 为您的 PyTorch 工作流注入活力了吗?安装带有 PyTorch 支持的 Feast。
pip install feast[pytorch]>=0.58.0
结论
Feast 加入 PyTorch 生态系统标志着在提升生产级 AI 的易用性方面迈出了重要的一步。通过将 PyTorch 的建模能力与 Feast 强大的数据管理相结合,开发人员现在能够充满信心地构建从原型到生产的端到端 AI 系统。