2. 特征服务概念:什么是特征服务、特征存储的兴起、特征服务在MLOps中的定位

2.1 什么是特征服务

特征服务(Feature Service)是机器学习生产化过程中,将离线/实时计算好的特征值,以低延迟、高可用的方式提供给模型在线推理(Inference)的中间层组件。它解决了传统“训练-推理”特征不一致(Training-Serving Skew)的核心痛点。

核心职责: 特征服务不是特征计算引擎,而是特征的“分发与缓存层”。它负责将特征存储(Feature Store)中的特征数据,通过标准 API(通常为 gRPC / REST)暴露给线上模型服务。

特征服务的关键能力包括:

  • 低延迟查询: 通常要求 P99 < 10ms,支撑高并发实时风控决策。
  • 特征一致性保障: 确保训练时使用的特征逻辑与线上推理时完全一致。
  • 时间点正确性(Point-in-Time Correctness): 避免未来数据泄露,保证回测与实盘特征对齐。
  • 特征版本管理: 支持特征回溯、回滚与 A/B 实验。
维度 传统特征传递方式 特征服务方式
数据来源 直接读离线表或 Kafka 统一从 Feature Store 读取
延迟要求 分钟级 ~ 小时级 毫秒级(在线)
一致性 容易产生偏差 强一致(训练/推理同源)
复用性 每个模型独立开发 特征一次注册,多处复用
特征服务在推理链路中的位置 离线数据源 实时数据源 特征计算引擎 特征存储 特征服务 模型推理 特征服务是连接特征存储与模型推理的桥梁,负责在线场景下的特征获取、缓存与路由 典型实现:Feast Serving、Tecton、自研 gRPC 服务

2.2 特征存储(Feature Store)的兴起

特征存储(Feature Store)是专为机器学习设计的特征管理平台,它统一了特征的定义、计算、存储、共享和监控。其兴起主要源于以下行业痛点:

  1. 特征重复建设: 不同团队重复开发相似特征,浪费计算与存储资源。
  2. 训练/推理不一致: 离线特征与在线特征逻辑不同,导致模型上线后效果衰减。
  3. 特征发现困难: 缺乏统一的特征目录,新项目难以复用已有特征。
  4. 时间点回溯复杂: 回测时需要精确的历史特征快照,手工处理极易出错。
行业趋势: 据 Gartner 预测,到 2026 年超过 60% 的企业级 ML 平台将集成 Feature Store 能力。在金融风控领域,特征存储已成为压力测试平台的基础设施标配。

特征存储的核心组件通常包括:

组件 功能描述 金融场景示例
特征注册中心 定义特征元数据(名称、类型、来源、版本) “近30天逾期次数”特征定义
离线存储 存储历史特征数据,支持大规模回溯 Parquet 格式存储 3 年历史特征
在线存储 低延迟 KV 存储,支撑实时推理 Redis / HBase 存储最新特征值
特征计算引擎 离线批处理 + 实时流处理 Spark 批处理 + Flink 流处理
特征监控 检测特征漂移、缺失率、延迟 PSI 监控、特征新鲜度告警
特征存储(Feature Store)核心架构 特征注册中心 离线存储 在线存储 特征计算引擎 特征监控 离线存储用于训练与回测,在线存储用于实时推理,两者通过特征注册中心保持元数据一致 特征计算引擎(Spark/Flink)负责将原始数据转化为特征值并写入双存储

2.3 特征服务在 MLOps 中的定位

在 MLOps 全生命周期中,特征服务处于“特征工程”与“模型部署”的衔接层。它向上承接特征存储,向下支撑模型推理服务,是 MLOps 闭环中不可或缺的在线组件。

特征服务在 MLOps 中的具体定位体现在以下三个层面:

  • 数据层(Data Layer): 作为特征数据的统一出口,屏蔽底层离线/在线存储差异,提供标准化的特征查询接口。
  • 治理层(Governance Layer): 实施特征访问控制、版本管理、血缘追踪,满足金融合规与审计要求。
  • 运维层(Operations Layer): 提供特征延迟、QPS、错误率等监控指标,支持自动扩缩容与故障切换。
金融风控特别关注: 在压力测试场景中,特征服务必须支持“时间旅行”(Time Travel)查询,即能够获取任意历史时间点的特征快照,用于回测不同压力情景下的模型表现。Flink 的 CDC 与状态后端机制为此提供了天然支撑。

下表对比了特征服务在 MLOps 不同阶段的作用:

MLOps 阶段 特征服务角色 关键能力
特征开发 特征注册与验证 特征 Schema 校验、单元测试
模型训练 提供训练数据集 时间点正确性、特征回溯
模型评估 提供离线特征 批量查询、特征一致性比对
模型部署 在线特征服务 低延迟查询、缓存、限流
模型监控 特征漂移检测 实时特征统计、PSI 计算
特征服务在 MLOps 中的定位 数据源 特征工程 特征存储 特征服务 统一特征查询 缓存 / 限流 / 监控 模型训练 模型部署 模型监控 特征服务是 MLOps 中连接特征工程与模型推理的关键中间层 在金融压力测试中,它需要同时支持离线回测与在线实时推理两种模式

2.4 金融压力测试场景下的特征服务要求

金融压力测试对特征服务提出了比通用场景更严苛的要求:

  • 高并发与低延迟: 压力测试通常需要模拟大量并发用户请求,特征服务必须支持万级 QPS 且 P99 延迟 < 5ms。
  • 多时间窗口回溯: 需要同时查询多个历史时间点的特征快照,用于对比不同压力情景下的模型输出。
  • 特征血缘追踪: 每个特征值必须可追溯至原始数据源,满足监管审计要求。
  • 弹性扩缩容: 压力测试期间流量波动剧烈,特征服务需支持按需扩缩容,避免资源浪费。
Flink 在其中的价值: Flink 的实时计算能力可用于构建特征服务的实时特征更新管道,确保在线存储中的特征值始终是最新的。同时,Flink 的状态后端(如 RocksDB)可以存储大量历史特征状态,支持时间旅行查询。
// 特征服务查询接口示例(gRPC Proto)
service FeatureService {
  // 实时特征查询
  rpc GetOnlineFeatures(GetOnlineFeaturesRequest) returns (GetOnlineFeaturesResponse);

  // 历史特征回溯(压力测试场景)
  rpc GetHistoricalFeatures(GetHistoricalFeaturesRequest) returns (GetHistoricalFeaturesResponse);
}

message GetHistoricalFeaturesRequest {
  repeated string feature_names = 1;
  repeated string entity_keys = 2;
  // 时间点列表,用于压力测试多时间窗口回溯
  repeated int64 timestamps = 3;
}