AI 基建
0%
第零部分 · 入门定位 · 第 4 章

此前的那套基础设施

作者Changkun Ou
阅读时长约 13 分钟

本书要拆解的生成式技术栈,并不是第一套 AI 基础设施。在语言模型写出第一段话之前的十五年里,机器学习早已在行星尺度上驱动着世界的推荐流、搜索结果与广告竞价,而且有自己的硬件机群、自己的服务层,以及一套用代价换来的运维纪律。本章把这位「老住户」摆到本书主题旁边,向它提出三个问题:生成式技术栈从它那里继承了什么?哪些东西没能复用,为什么?两套技术栈如今又在哪里合流?读完本章,读者就能把全书的主题放进「AI 早已是基础设施」这个背景里,也能认出后面各部分里哪些「新」问题,其实是换了名字的老问题。

规模最大、却很少被叫作 AI 的系统

先看这位老住户的体量,因为体量本身就说明,「AI 基础设施」这个词直到最近究竟指什么。2020 年,也就是语言模型大规模建设开始之前,Facebook 报告推荐模型占其生产数据中心 AI 推理周期的 79% (Gupta et al. 2020),配套研究则显示它们占训练周期的比例超过一半 (Acun et al. 2021)。也就是说,当时地球上最大的 AI 机群跑的既不是聊天机器人,也不是图像生成器,而是每天几十亿次地决定一个人接下来会看到什么。

做这个决定的系统有一个经典形态,由 YouTube 2016 年对其推荐系统的描述固定进了业界词汇 (Covington et al. 2016)。语料库太大,不可能为每次请求给所有条目打分,于是工作分成两级。第一级是廉价的候选生成,把数百万条目收窄到几百个还算可信的候选;第二级是昂贵的排序,对这几百个仔细打分,排出最终呈现的一屏。两级依赖同一个原语:嵌入(embedding),一个学出来的向量,用它表示用户或条目,使几何上的接近代表行为上的亲和。打分用点积,检索用最近邻,两级漏斗就把一个不可能完成的打分问题拆成了两个付得起的。

funnels cluster_rec 推荐漏斗(2016) cluster_rag RAG 漏斗(2024) R1 语料库 约 10⁹ 个条目 R2 候选生成 双塔嵌入 + ANN R1->R2 R3 排序模型 对约 10² 个候选打分 R2->R3 R4 一屏结果 R3->R4 G1 语料库 文档切块 G2 检索 嵌入 + ANN 索引 G1->G2 G3 重排 + 生成 模型处理 top-k G2->G3 G4 一个答案 G3->G4
图 4.1. 2016 年的推荐漏斗与 2024 年的检索增强生成漏斗。形状原封不动地保留了下来:廉价的嵌入级收窄庞大语料,昂贵的一级处理幸存者。变化的只是最后一级,从给条目打分变成了生成文本。

漏斗只是这位老住户成熟度的一半,另一半在运维上。Google 2013 年那篇关于广告点击率预测系统的报告,今天读来像一篇恰好装着模型的系统论文:数十亿稀疏特征上的在线学习当然在,但校准、特征生命周期管理、内存核算、盯着模型漂移的仪表盘也都在 (McMahan et al. 2013)。如今被打包成 MLOps 出售的那套纪律,早在这个词传到生成式技术栈的十年前,就已经在这些系统的一线实践里磨出来了。

老住户的历史里有一段插曲值得复述,因为整本书都会反复遇到它的教训。2006 年,Netflix 悬赏一百万美元,奖励能把其评分预测器精度提高百分之十的团队,随后三年的竞赛把该领域的很大一部分注意力拉进了推荐研究。获胜方案是几百个模型混合而成的集成。Netflix 从未部署它。公司工程师后来写道,测得的精度收益抵不上把它搬进生产环境所需的工程投入,何况业务重心当时已经从预测评分转向了排序用户真正会看的内容;最终上线的只有早期里程碑中的两个组件算法 (Amatriain and Basilico 2012)。一个离线指标被优化到了极致,产品却不需要它。基准测试奖励的数字与部署需要的行为之间的这道裂缝,会作为 第 47 章 及其后各章的中心主题在本书里反复出现。

深度学习必须先胜过的主力

对固有印象的第二个纠正是:这位老住户从来不是清一色的神经网络。无论当时还是现在,生产环境中相当大一部分机器学习跑在梯度提升决策树(gradient-boosted decision trees,GBDT)上。这种集成方法按顺序构建数百棵浅决策树,每一棵都专门去纠正前面那些树的残余误差。它的旗舰实现 XGBoost 很能说明实践中真正取胜的是什么:论文的大部分篇幅花在系统问题上,缓存感知的布局、稀疏处理、核外计算,并顺带提到 2015 年公开的 29 个 Kaggle 冠军方案中有 17 个用了它 (Chen and Guestrin 2016)。它专攻排序的前辈 LambdaMART,则撑起了网页搜索相关性排序整整十年 (Burges 2010)。

树模型并不是等深度学习到来的临时占位者。Airbnb 用提升树模型替换手写的搜索打分函数时,公司把收益描述为其历史上最大的单次订房量提升之一;而随后从树迁移到神经网络的尝试失败了两次才成功,并且成功的前提是团队不再逐个特征地跟树较劲 (Haldar et al. 2019)。这个模式有经过测量的解释。2022 年一项严谨的基准测试发现,在典型的表格数据上,也就是多数生产模型消费的行列式业务记录上,树集成仍然胜过深度网络,并把优势归因于归纳偏置:树对无信息特征不敏感,又恰好拟合表格目标真实具有的那种陡峭、轴对齐的模式 (Grinsztajn et al. 2022)。即便在这里,前沿也在移动,而且方向眼熟:TabPFN,一个在数百万合成表格任务上预训练的 Transformer,把整张训练表当作上下文读入,如今在小数据集上胜过精调的树集成 (Hollmann et al. 2025)。不过这个结果只在大约一万行以内成立。经营性经济里那些高吞吐的排序、反欺诈与信贷表格,在本书写作之时仍是树模型的领地。

这一节要说的是范围问题。「AI 作为基础设施」并非始于 Transformer,也不终于 Transformer 的边界。经济中有一个正常运转的层面跑在本书不会拆解的模型上。本书要拆解的对象就在那个层面旁边,向它借用模式,并正在缓慢地与它合并。

新技术栈继承了什么

有三条继承线从老住户通向后面的各部分,现在把它们点出来,读者读到后面的章节时就不会误以为一切都是凭空发明。

第一条是检索。漏斗的候选生成级发展成了一套精确的配方:训练两座嵌入塔,一座编码查询、一座编码条目,使点积排序表现良好;纠正在自家日志流量上训练带来的偏差 (Yi et al. 2019);再把条目嵌入放进近似最近邻(approximate nearest neighbor,ANN)结构里,这种数据结构用精确性换取次线性的查找速度,配套的库与图索引都是为十亿级目录建造的 (Johnson et al. 2019; Malkov and Yashunin 2018)。Facebook 2020 年对其搜索引擎中嵌入检索的记述,事后看就像一张清单,列着检索增强生成团队四年后将要重新发现的每一项:稠密加关键词的混合检索、难负例挖掘、索引召回与排序质量之间的张力 (Huang et al. 2020)。HNSW,今天多数向量数据库内部的那个图索引,比任何人说出「向量数据库」早发表了八年。所以当 第 44 章第 45 章 为语言模型展开这套机制时,它们是在延续一条生产系统的谱系,而不是开创一条。

下面的可运行单元把整条检索继承线压缩进十几行代码:把用户与条目的交互矩阵分解成两座嵌入塔,然后用一次矩阵与向量的乘法加一次 argsort 来服务一个用户。正因为服务这一步几乎不花钱,十亿条目的目录,以及如今百万切块的文档库,才能做到交互式检索。

import numpy as np
rng = np.random.default_rng(0)
n_users, n_items, d = 200, 1000, 16
U0, V0 = rng.normal(size=(n_users, d)), rng.normal(size=(n_items, d))
liked = (U0 @ V0.T + rng.normal(scale=2.0, size=(n_users, n_items))) > 2.0   # 合成的点击数据
U, V = rng.normal(scale=0.1, size=(n_users, d)), rng.normal(scale=0.1, size=(n_items, d))
for _ in range(300):                          # 双塔,逻辑损失,朴素 SGD
    err = liked - 1 / (1 + np.exp(-(U @ V.T)))
    U, V = U + 0.5 * err @ V / n_items, V + 0.5 * err.T @ U / n_users
u = 7
scores = U[u] @ V.T                           # 检索:一次矩阵-向量乘法
top10 = np.argsort(scores)[::-1][:10]         # ……外加一次 argsort
print("该用户 top-10 中的命中率:", liked[u, top10].mean())
print("随机条目的命中率:        ", liked[u].mean().round(3))

第二条是运维外壳。老住户很早就学到,模型只是系统图里的小方块,包围它的数据管道、配置与反馈回路的失效模式比模型本身的更糟 (Sculley et al. 2015)。从这个教训里长出了特征存储(feature store):一种把每个输入特征只计算一次、再把完全相同的值同时供给训练与生产的服务。之所以需要它,是因为训练与生产悄悄分道扬镳,即训练/服务偏斜(training/serving skew),是「模型评估很好、上线表现很糟」最常见的原因之一 (Hermann and Del Balso 2017)。同样从这个教训里长出来的还有服务层本身:版本化的模型在一次原子指针切换后面加载、请求批处理、金丝雀式发布 (Olston et al. 2017)。读到 第 89 章第 46 章 的读者会看到这两个模式换了个场景重现:提示词与上下文管道就是新的特征管道,而它在评估与生产之间的漂移,恰恰是特征存储当年为之而建的那种。

第三条是度量,而且在这里老住户仍然领先。二十年的高流量 A/B 测试沉淀出一套关于总体评估准则、护栏指标与严谨方差核算的纪律,至今仍是判断「一个改动有没有帮助」的参照标准 (Kohavi et al. 2020)。它最深刻的一课与时间尺度有关。Google 在 2015 年证明,优化短期点击率会悄悄教会用户忽略广告,被最大化的指标其实是在向未来借债;解法是去度量用户的长期习得,并主动让出短期收入 (Hohnhold et al. 2015)。十年之后,一个在点赞反馈上调出来的对话助手变得一味迎合,最终不得不回滚,厂商的事后分析承认自己「过于看重短期反馈」(OpenAI 2025)。偏好训练的模型为何会滑向谄媚,第 19 章 会给出精确解释 (Sharma et al. 2024);但这种失败的形状,一个廉价的代理指标被优化到伤害用户,老住户十年前就记录在案了。新技术栈正带着一个更大的模型把这一课重新学一遍。

没能迁移过来的部分

继承了这么多,读者可能会以为生成式技术栈把老住户的服务层也直接搬了过来。它搬不动,而原因正好是一堂「工作负载形态决定基础设施」的课。

从计算上看,一个生产推荐模型把 Transformer 的成本结构整个翻转了过来。Meta 的深度学习推荐模型由可达 TB 级的嵌入表主导,每个请求从中随机取出几百行,缝在上面的稠密算术很小 (Naumov et al. 2019)。真正吃紧的资源是内存容量与随机查找速率,而不是算术。语言模型的推理恰好相反:几乎所有成本都是稠密矩阵算术,而且每生成一个词元,都要把模型权重与这场对话的KV 缓存(key-value cache)重新从显存里流过一遍 (Pope et al. 2022)。一个是附带一点数学的稀疏查找机器,另一个是背着带宽难题的稠密数学机器。

有无状态这条线,把两个服务层分得同样干净。推荐请求是无状态的:用户状态住在特征存储里,负载均衡器后面的任何副本都能服务任何请求,老住户的整套服务模式都倚仗这份自由。而一次进行中的生成是有状态的,因为 KV 缓存随着词元逐个累积在加速器上;这正是 LLM 服务不得不发明请求级内存管理、分页与连续批处理,而不能借用无状态服务层的原因 (Kwon et al. 2023)。延迟预算也翻转了:推荐系统每个请求花一笔固定的打分成本,把预算投在漏斗宽度上;生成则是开放式的,按输出词元计价,还拆成 第 31 章 将要解剖的首词元时间与逐词元节奏。

下层约束

一支机群用什么硅片建成,就带着它当初为哪种工作负载购置的印记。推荐时代的推理机群按稀疏嵌入表的内存容量与查找吞吐来配置 (Gupta et al. 2020);自回归解码却把显存带宽耗尽,同时让那套查找机制闲置 (Pope et al. 2022)。正是下面这一层的错配,使生成式建设潮无法跑在上一个 AI 时代已经付过钱的数据中心里,也是 第 62 章 将要描述的加速器把 HBM 带宽当作决定性指标的原因。硬件的资源配比,决定了上面建得起哪一种服务层。

两条技术栈的合流

如今两条技术栈正从两个方向流向彼此,这恰好是最有力的证据,说明它们本来就是同一个领域的两种负载形态。

生成式技术正在进入推荐。Google 的 TIGER 把检索本身改写成了生成:把每个条目的内容嵌入量化成一段叫语义 ID(semantic ID)的短代码,再训练一个序列模型直接产出下一个条目的代码,于是近似最近邻索引被吸收进了模型权重 (Rajput et al. 2023)。Meta 把这套配方推到了生产规模,报告万亿参数的生成式推荐模型在在线实验中以两位数优势击败其经典技术栈;更重要的是,质量随训练算力呈幂律提升,正是 第 5 章 用来支起全书的那种缩放行为 (Zhai et al. 2024)。老住户把漏斗借给了生成式技术栈,如今又反过来借走了对方的训练配方。

流量也在反向流动,而且捎带着警告。推荐研究多年前就记录过:在自己上一版策略产生的流量上训练的系统会滑向同质化,这条反馈回路该领域已学会检测与抑制 (Chaney et al. 2018);它的生成式对应物,即模型在越来越多由模型写成的网络上训练,还是一个开放问题,第 70 章 面对它时,手上积累的教训要少得多。还有一个论断悬在第三部分所有偏好优化章节的头顶:以互动率为目标的推荐系统,是第一个在行星尺度上部署的错位优化目标 (Stray et al. 2021)。把一个强大的优化器对准「人类满意度」的廉价代理指标,这个实验是老住户先做的,样本量是整个文明。

争议所在

生成式推荐会不会让漏斗退役,是一场进行中的争论。Meta 的生产数据主张一个序列模型可以取代「先检索后排序」的级联,并继承 LLM 式的缩放 (Zhai et al. 2024)。怀疑一方则认为,漏斗的存在有一个任何架构都消除不了的理由:在信息流刷新的量级上,用昂贵模型给所有东西打分是付不起的,所以廉价的收窄级总会被重新发明出来,不在模型外面,就在模型里面。对齐类比的旁边还有一场平行争论:一方把互动率优化读作偏好调优必须研读的第一则警示案例 (Stray et al. 2021),另一方则认为对话反馈与互动指标差别足够大,这个类比误导多于启发。无论站哪边,生产证据都还只有几年而已。

本章划定的边界

本章把全书的范围声明定了下来。接下来要讲的是一个生成式能力的生命周期:算力变成基座模型,基座模型变成被调校的行为,行为变成一个被服务、被评估、被治理的系统。排序、推荐与表格预测这套老基础设施不在这个生命周期里,本书也不会复述它的手册。从这里往后,它会以本章里的三种面目出现:一个被继承模式的出处,隔壁那支机群的运营者,以及一个已经为某条教训付过学费、而生成式技术栈正要再买一次的领域。后面的章节遇到这些时刻时,检索漏斗在 第 44 章,部署闸门在 第 89 章,代理指标漂移在 第 53 章,都会往回指,而不是假装从零开始。按本书反复使用的那套尺度来评判,老住户的地位并不均衡:效率上成熟,度量的可信度上远远领先,如今则在引进能力。生成式技术栈恰好是它的镜像,而本书余下的篇幅,讲的就是补齐这道差距要付出什么。

延伸阅读

  • Amatriain & Basilico, “Netflix Recommendations: Beyond the 5 Stars (Part 1)” (价值百万美元的模型集成为何从未上线), 2012. netflixtechblog.com
    Netflix 工程师亲述 Netflix Prize 的生产后续:获胜集成模型中只有两个组件算法真正上线,因为离线精度收益不抵工程成本,且产品重心已从评分预测转向排序。
  • Sculley et al., “Hidden Technical Debt in Machine Learning Systems” (模型只是系统图里的小方块), 2015. papers.nips.cc
    这篇 NeurIPS 2015 论文指出,真实机器学习系统因边界侵蚀、纠缠、隐藏反馈回路和数据依赖等特有反模式而积累大量隐性技术债务。
  • McMahan et al., “Ad Click Prediction: a View from the Trenches” (比「MLOps」一词早十年的工程实践), 2013. research.google
    Google 生产环境广告点击率预测系统的报告:数十亿稀疏特征上的 FTRL 在线学习,以及支撑其运行的校准、特征管理与监控纪律。
  • Covington et al., “Deep Neural Networks for YouTube Recommendations” (经典的两阶段漏斗), 2016. dl.acm.org
    确立业界两阶段术语的论文:候选生成网络从数百万条目中检索出数百条,排序网络再对幸存者打分,是 RAG 中「先检索后重排」的直接结构祖先。
  • Cheng et al., “Wide & Deep Learning for Recommender Systems” (记忆与泛化并举,部署于 Google Play), 2016. arXiv:1606.07792
    将负责记忆的宽线性模型与负责泛化的深度网络联合训练,并报告了部署到 Google Play 应用推荐后的在线 A/B 收益。
  • Chen & Guestrin, “XGBoost: A Scalable Tree Boosting System” (支撑表格数据十年胜绩的系统论文), 2016. arXiv:1603.02754
    大规模梯度提升树的系统设计:缓存感知布局、稀疏处理与核外计算;论文自述 2015 年公开的 29 个 Kaggle 冠军方案中有 17 个使用了它。
  • Grinsztajn et al., “Why do tree-based models still outperform deep learning on typical tabular data?” (赢在归纳偏置,而非调参功夫), 2022. arXiv:2207.08815
    一项严谨的基准测试,表明树集成在中等规模表格数据上仍是最优,并将优势归因于归纳偏置:对无信息特征的鲁棒性,以及对非平滑、轴对齐目标函数的适配。
  • Hollmann et al., “Accurate predictions on small data with a tabular foundation model” (基础模型配方抵达表格数据), 2025. nature.com
    TabPFN 是在数百万合成表格任务上预训练的 Transformer,把整张训练表作为上下文读入,在约一万样本以内的数据集上数秒内胜过精调的树集成。
  • Naumov et al., “Deep Learning Recommendation Model for Personalization and Recommendation Systems” (与 Gupta et al.(2020)的数据中心数据对照阅读), 2019. arXiv:1906.00091
    Meta 的参考推荐架构:TB 级稀疏嵌入表加上一个小型稠密网络,是大模型时代之前主导 AI 数据中心的工作负载形态。
  • Huang et al., “Embedding-based Retrieval in Facebook Search” (RAG 团队后来重新发现的生产检索手册), 2020. arXiv:2006.11632
    嵌入检索的完整生产配方:双塔模型、ANN 索引、稠密与关键词混合检索、难负例挖掘,比 RAG 热潮重新发现这些要点早了四年。
  • Malkov & Yashunin, “Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs” (多数向量数据库内部的索引,问世早了许多年), 2018. arXiv:1603.09320
    HNSW 提出了一种基于多层邻近图的近似最近邻搜索索引,实现对数复杂度的分层可导航小世界图结构。
  • Kohavi, Ron; Tang, Diane; Xu, Ya. Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing (生成式技术栈尚未重建的度量纪律). Cambridge University Press, 2020. experimentguide.com
    大规模在线对照实验的权威参考,浓缩自 Microsoft、Google 与 LinkedIn 每年数万次实验的经验;建议先读总体评估准则与长期指标两章。
  • Rajput et al., “Recommender Systems with Generative Retrieval” (TIGER:检索变成解码), 2023. arXiv:2305.05065
    TIGER 将每个条目的内容嵌入量化为语义 ID,并训练序列模型直接生成下一个条目的 ID,把检索索引折叠进模型权重。
  • Zhai et al., “Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations” (推荐系统技术栈采纳 LLM 缩放配方), 2024. arXiv:2402.17152
    Meta 的 HSTU 把排序与检索重构为序列转导,部署了万亿参数的生成式推荐模型,在线 A/B 提升达两位数,并报告质量随训练算力呈幂律缩放。
  • Stray et al., “What are you optimizing for? Aligning Recommender Systems with Human Values” (第一个行星尺度上错位的优化目标), 2021. arXiv:2107.10939
    把以互动率为目标的推荐系统视为已在行星尺度上部署的对齐问题,并综述了让其对准人类价值而非点击代理指标的具体干预手段。

评论

登录后评论