2015年,谷歌内部有个团队每天花70%的时间在干同一件事:找数据。不是训练模型,不是调参数,就是找半年前写好的特征工程代码,然后发现同事早就改过三版了。
这个场景后来被写成一篇论文,标题很学术:《TFX: A TensorFlow-Based Production-Scale Machine Learning Platform》。但论文里藏了个脚注——他们建了个叫"特征存储"(Feature Store)的东西,专门解决"特征重复造轮子"的问题。
8年后,这套系统成了机器学习基础设施里最沉默的组件。沉默到大多数从业者甚至不知道它该存在。
01 | 特征工程:机器学习最昂贵的"手工活"
先解释一个反直觉的事实。业界有个估算:数据科学家80%的时间花在数据准备上,其中大部分又是特征工程。特征是什么?简单说,就是把原始数据(用户点击、交易记录、传感器读数)转换成模型能吃的数字。
举个例子。预测用户会不会买某款耳机,原始数据是"用户A在页面停留了47秒"。特征工程要把它变成:"过去7天浏览同类商品的次数""当前页面与购物车的距离""该用户历史转化率分位数"——三列数字,三个不同的SQL查询,三个不同的时序窗口。
这套活儿有两个致命痛点。
第一,线上和线下要一致。训练模型用历史数据(批处理),预测时用实时数据(流处理)。同一个"过去7天点击次数",批处理算一遍,流处理再算一遍,代码路径不同,结果小数点后第三位对不上,模型直接崩。
第二,团队之间重复造轮子。支付团队的"用户活跃度"和推荐团队的"用户活跃度",名字一样,定义差了一个"是否排除退款订单"。两个团队各自维护,各自踩坑,各自在凌晨三点被告警叫醒。
2017年,Uber的机器学习平台团队统计过:全公司有超过10000个特征在跑,其中30%是重复或近似的定义。他们花了18个月清理,清理完发现又长了8000个新的。
02 | 特征存储:不是数据库,是"特征版本的Git"
特征存储(Feature Store)的解法,是把特征当成代码来管。
核心能力就三条。第一,统一计算层。同一个特征定义,自动翻译成批处理(Spark/Flink)和实时服务(Redis/Cassandra)两套实现,保证线上线下的数值一致。第二,版本和血缘。谁改了定义、什么时候改的、影响了哪些模型,全链路可追溯。第三,跨团队共享。特征注册成服务,其他团队直接调用,不用知道底层是Hive表还是Kafka流。
这听起来像数据仓库?区别很微妙。数据仓库存的是原始数据,特征存储存的是"业务语义化的计算结果"。数据仓库的表结构变一次,下游全崩;特征存储的接口保持稳定,底层实现可以换。
2019年,Netflix开源了他们的特征存储工具Feast。文档第一页写了句话:「我们的推荐模型有数千个特征,其中40%是跨团队复用的。」这句话背后是个组织变革——特征从"个人资产"变成"公共基础设施"。
国内跟进的速度更快。2020年,字节跳动的火山引擎、蚂蚁的KubeWharf、美团的MLX,几乎同时上线特征存储模块。不是跟风,是规模逼的。字节内部一个推荐场景,特征更新频率从小时级压到分钟级,没有统一存储层,工程师得住在机房。
03 | 沉默的真相:为什么从业者"感觉不到"它存在
特征存储的尴尬在于,它解决的是"没有它会很痛"的问题,而不是"有了它会很爽"的问题。
对比就很明显。模型训练框架(PyTorch、JAX)天天发论文,因为"快了多少倍"容易量化。MLOps工具链(Weights & Biases、MLflow)融资故事好讲,因为"实验管理"看得见摸得着。特征存储呢?它的价值是"减少了多少线上事故""节省了多少重复开发",这两个指标很难写进PPT。
更深层的原因是组织惯性。很多公司的机器学习团队,数据工程和算法工程是分开的。数据工程管ETL,算法工程管模型,中间的特征层没人认领。特征存储要落地,得先打破这个分工,让"特征即服务"成为共识。
2022年,Gartner把特征存储列入"数据管理技术成熟度曲线"的"萌芽期"。同期,数据编织(Data Fabric)、数据网格(Data Mesh)这些概念炒得火热。特征存储的供应商(Tecton、Feast、Hopsworks)集体选择了低调——他们的大客户名单里,金融和零售占了一大半,这些行业不爱声张自己的基础设施。
一个细节:Tecton的官网案例页,客户logo打了码,描述写成"某全球前十零售商"。不是不想炫耀,是合同里签了保密条款。特征存储太靠近业务核心,知道"某电商的实时特征延迟压到50毫秒",约等于知道它的推荐系统架构。
04 | 2024年的拐点:实时化和大模型带来的新压力
两件事正在改变特征存储的处境。
第一是实时推荐的普及。抖音、淘宝首页的"猜你喜欢",特征延迟从小时级→分钟级→秒级→毫秒级,每压一个数量级,架构复杂度翻倍。没有特征存储的统一调度,流处理和批处理的代码会分裂成两个完全不同的系统,维护成本指数级上升。
第二是大模型的"特征回潮"。GPT-4这类模型似乎减少了对人工特征的依赖,但落地到推荐、广告、风控这些场景,企业发现还是要喂结构化特征。大模型负责理解语义,传统模型负责记忆用户行为,两者的特征存储需求反而叠加了。
Feast的GitHub仓库有个有趣的数据:2023年贡献者数量翻倍,但issue里最高频的关键词是"文档不足"。这说明什么?用的人多了,但上手门槛还在。特征存储的抽象层设计,需要同时理解数据工程、流计算和机器学习,这种复合人才本身就很稀缺。
国内厂商的路径更务实。火山引擎把特征存储和推荐系统打包成"增长套件",客户不用理解概念,直接买效果。蚂蚁的KubeWharf开源了特征存储的存储引擎,但计算层绑定内部的Ray集群——开放一部分,锁定一部分,典型的云厂商策略。
一个产品经理的观察:特征存储的采购决策,往往不是技术负责人拍板,是风控负责人或增长负责人。他们算的是账——线上事故一次损失多少,重复开发一个特征人力成本多少。这个账算清楚,技术选型反而简单了。
2024年初,Tecton完成了C轮融资,估值未披露。同期,Feast的母公司Tecton和Hopsworks开始争夺"实时特征存储"的定义权。这个细分领域的战争,比特征存储本身热闹得多。
特征存储会不会成为像数据库一样的基础设施?取决于机器学习工程化的深度。如果模型上线还是"手工作坊"模式,特征存储就是可选组件;如果模型成为像软件一样持续交付的产品,特征存储就是必选项。
你现在用的推荐系统,背后有多少特征在实时计算?这个数,连很多从业者都答不上来。
热门跟贴