SICI · 蕴灵宗 · 第二十章 · 元婴五层

AI部署与MLOps · 元婴五层

你以为把模型包成接口就算上线了。可在部署之门前,真正的战场在上线之后——实验室里精度 99% 的模型,上线三周就掉到 85%。漂移之雾在雾里立赌:你以为部署是终点,我赌你的模型活不过一个季度。

漂移之雾低语:「你觉得模型上线后最大的挑战是什么?随便猜。你说它为什么上线就变笨?」
序章

部署之门

漂移之赌 · 核心挑战四选 · MLOps 全景

部署之门的门楣上刻着八个字:模型归山,部署归元。门内是一面巨屏——屏的左侧浮着实验室的离线指标:精度 99%、AUC 0.98;屏的右侧浮着生产环境的实时曲线,红线一路下滑。高斯老祖站在屏前,手里只有一块黑板,上面写着:上线不是终点。

公平之衡,AI偏见检测与修正
高斯老祖 高斯老祖

「实验室里你的模型是温室的花,生产环境是旷野的风。告诉我,AI 模型上线后最大的挑战是什么?先猜,猜错了也没关系,漂移之雾会记账。」

漂移之雾 漂移之雾

「又来了一个想上线的。打个赌——你觉得模型上线后最难的是什么?你每猜错一次,雾就浓一分,我都记下来。」

漂移之赌 · 上线核心挑战预测挑战器

反直觉下注(四选一,可连错)→ 挑战展开 → MLOps 全景图拼合

漂移之雾逼你下注:AI 模型上线后最大的挑战是什么?逐个点击。
第一幕 · 自信→崩塌 前奏

模型服务化 · 从脚本到服务

REST / gRPC / 流式推理 · 同步 vs 异步 vs 批处理

门后是一座服务台。台上摆着三种接口牌:REST、gRPC、流式。高斯老祖递给你一个训练好的模型权重文件:「在实验室它是个 .pt 脚本,在生产环境它得变成一个服务——能被调用、能并发、能容错。你选一种接口,看数据怎么流。」

高斯老祖 高斯老祖

「REST 用 HTTP/JSON,通用但慢;gRPC 用 Protobuf/HTTP2,快但需要桩代码;流式推理用 WebSocket/gRPC-stream,适合长序列。同步推理实时但吞吐低,异步推理吞吐高但延迟大,批处理最省 GPU 但不能实时。」

漂移之雾 漂移之雾

「你肯定觉得包成 REST 接口就行了。所有人都是这么想的——然后一个请求 800ms,QPS 上不去,用户全跑了。」

服务架构器 · 接口选型 + 延迟特性对比

切换 REST / gRPC / 流式看数据流 → 对比同步 / 异步 / 批处理延迟

服务架构 · 请求 → 推理 → 响应

延迟特性 · 同步 / 异步 / 批处理

第一幕 · 自信→崩塌 前奏

容器化 · 环境一致性

Docker 镜像构建 · 容器编排 · GPU 调度

服务台后是一座熔炉——Docker 镜像构建炉。炉口吐出层层叠叠的镜像层:基础 OS、CUDA 运行时、Python 依赖、模型权重。高斯老祖:「在你的电脑上能跑,在生产环境跑不了——这句话的解药就是容器。你一步步看镜像怎么叠出来。」

高斯老祖 高斯老祖

「Docker 镜像是分层的——每条指令一层,层有缓存。基础镜像装 CUDA,上面叠 PyTorch,再叠你的代码和权重。容器编排(K8s)管这些容器的生死扩缩,GPU 调度把显卡分给谁。环境一致了,'在我机器上能跑'就成了历史。」

容器化部署模拟器 · 镜像分层 + 编排调度

逐步点亮 Dockerfile 层 → 看容器编排 → 看 GPU 调度分配

Dockerfile 镜像分层构建

容器编排 · Kubernetes Pod 调度

GPU 调度 · 显卡分配

第一幕 · 第一崩塌

第一崩塌 · 漂移之雾

上线初期良好 → 性能下滑 · 数据漂移 vs 概念漂移

熔炉熄灭,雾从地缝里渗出。你的模型上线第一天,精度 99%,仪表盘一片绿。第七天,92%。第三十天,85%。你查代码、查权重、查 GPU——全没问题。雾里传来一个不带温度的声音:

漂移之雾 漂移之雾

「你的模型没变,你的代码没变,你的 GPU 没变。变的是世界。用户开始上传夜间照片,可你的训练集全是白天的。模型还活在昨天,世界已经走到今天。第一笔账,我记下了。」

高斯老祖 高斯老祖

「这是漂移。数据漂移:输入分布 P(X) 变了,训练时没见过夜间图。概念漂移:输入到输出的关系 P(Y|X) 变了,比如'猫'的流行定义变了。两者都会让模型退化,但治法不同。你以为上线就完事了——上线只是漂移的开始。」

漂移之雾 · 性能下滑复现 + 漂移诊断

拖上线天数看精度下滑 → 展开数据漂移 vs 概念漂移 → 雾气扩散可视化

上线精度下滑 · 拖动天数

第 1 天
第二幕 · 挣扎→再崩塌 前奏

模型监控 · 漂移检测

输入分布 · 预测分布 · 性能指标 · 漂移告警

雾散一半,露出一排仪表盘。高斯老祖指着三块屏:「漂移看不见摸不着,但能测。第一块屏看输入分布——PSI/KS 检验;第二块屏看预测分布——置信度偏移;第三块屏看性能指标——延迟、吞吐、业务指标。你拖动时间,看告警什么时候响。」

高斯老祖 高斯老祖

「PSI(群体稳定性指数)量化输入分布的变化:PSI<0.1 稳定,0.1-0.25 轻微漂移,>0.25 显著漂移。预测分布监控看置信度是否异常偏移。性能监控不能只看模型指标,还要看业务指标——点击率、转化率。三者交叉,才能定位漂移。」

监控仪表盘 · 三屏漂移检测 + 告警

拖时间轴看三屏变化 → PSI 越阈值触发告警 → 运维天平记录

第 0 天

输入分布 · PSI

预测分布 · 置信度

性能指标 · 业务

高斯老祖 高斯老祖

「监控是上线后的眼睛;实验追踪是训练期的账本。每次训练跑的超参、数据版本、代码 commit、指标曲线,都得记——MLflowWeights & Biases 就是干这个。为什么要记?为了可复现性:同一份代码 + 同一份数据 + 同一个随机种子,应能复刻出同一组权重。复现不了,bug 查不动、结果不可信、协作就乱套。固定随机种子、版本化数据与代码、记录环境——三件事做到,实验才算留过案底。

第二幕 · 挣扎→再崩塌 前奏

CI/CD · 自动化流水线

提交→测试→构建→部署→灰度 · 版本管理 · 回滚

仪表盘后是一条流水线——代码从一端流入,模型从另一端流出。流水线分五段:提交、测试、构建、部署、灰度。高斯老祖:「手动部署一次三天,CI/CD 自动化一次三分钟。但自动化的真正价值不是快——是每次部署都可追溯、可回滚、可验证。」

高斯老祖 高斯老祖

「CI 持续集成:每次提交自动跑单元测试 + 集成测试 + 模型回归测试。CD 持续部署:测试通过自动构建镜像、部署到灰度环境。灰度发布先放 5% 流量,观察指标,没问题再全量。出问题一键回滚到上个版本——版本管理是回滚的底气。」

CI/CD 流水线可视化器 · 五段流水 + 版本回滚

点亮五段流水线 → 看灰度流量递增 → 触发回滚演示

CI/CD 流水线 · 提交→测试→构建→部署→灰度

灰度发布 · 流量递增

第二幕 · 挣扎→再崩塌 前奏

A/B 测试 · 渐进上线

流量分配 · 效果对比 · 统计显著性

流水线尽头是一个实验台——台上两根试管,A 是旧模型,B 是新模型。高斯老祖:「灰度只看新模型崩没崩,A/B 测试看新模型好不好。把流量分给 A 和 B,比业务指标,还要做统计显著性检验——否则就是拿噪声当信号。」

高斯老祖 高斯老祖

「A/B 测试把用户随机分两组:对照组用旧模型 A,实验组用新模型 B。比较业务指标(点击率/转化率)。但样本不够大时,差异可能只是随机波动——所以要做假设检验:p 值 < 0.05 才算显著。样本量、效应量、显著性水平,三者共同决定实验可信度。」

A/B 测试实验台 · 流量分配 + 显著性检验

拖流量分配看 A/B 效果 → 拖样本量看 p 值 → 显著性判定

流量分配 · A(旧) vs B(新)

A:50% B:50%

统计显著性 · p 值 vs 样本量

样本量 1000
第二幕 · 第二崩塌

第二崩塌 · 成本失控

GPU 利用率低下 · 推理成本飙升 · 弹性伸缩缺失

实验台碎裂,账单从裂缝里涌出。你的推理集群有 20 块 A100,可 GPU 利用率只有 12%——白天流量高峰用不满,凌晨流量低谷全闲置。月账单从 3 万涨到 30 万。雾又浓了:

漂移之雾 漂移之雾

「你为了扛峰值配了 20 块卡,可峰值一天就两小时。剩下 22 小时,卡在空转,钱在烧。你以为堆 GPU 就能解决问题——堆的是成本,不是效率。第二笔账,我记下了。」

高斯老祖 高斯老祖

「成本失控的根源是静态配置——按峰值固定配卡。解药是弹性伸缩:流量大时扩容,流量小时缩容。再叠加批处理、量化、蒸馏把单卡吞吐拉高。成本优化的本质不是砍卡,是让每块卡都在干活。」

成本失控诊断器 · 利用率 + 账单 + 根因

拖时间看利用率低谷 → 展开账单飙升 → 弹性伸缩缺口

GPU 利用率 · 24 小时负载

00:00
第三幕 · 顿悟→突破 前奏

弹性伸缩 · 按需分配

负载扩缩容 · GPU 利用率 · 请求队列 · 延迟

账单裂缝后是一座天平——天平左盘是"稳定"(多备卡扛峰值),右盘是"效率"(少备卡省成本)。高斯老祖:「弹性伸缩就是让天平动态平衡。你拖动负载,看集群怎么自动扩缩。」

高斯老祖 高斯老祖

「弹性伸缩靠三个信号:请求队列长度、GPU 利用率、尾延迟。队列堆积就扩容,利用率低就缩容。但扩容有冷启动延迟(拉镜像+加载权重),缩容要优雅停机不丢请求。HPA(水平 Pod 自动扩缩)按 CPU/GPU 阈值触发。天平的目标不是极致效率,是稳定与效率的动态平衡。」

弹性伸缩模拟器 · 负载 + 扩缩 + 天平

拖负载曲线看自动扩缩 → 看 GPU 利用率/队列/延迟联动 → 运维天平

请求负载 · 拖动模拟流量

负载 30%
GPU 利用率--
请求队列--
P99 延迟--
实例数--
第三幕 · 最高潮

Boss 战 · 部署三问

漂移之雾 · 漂账清算 · 排除刻痕收网

天平归位,雾重新合拢,温度骤降——漂移之雾凝聚成形。它不是人形,是一团不断变形的紫雾,雾里映着无数下滑的精度曲线。它翻开一本账册:「你来了。带着你的两道刻痕,和你的漂账。三问。答对,我散。答错,你的部署修为归零。」

漂移之雾 漂移之雾

「你说上线就是终点——它不是。我住在你'以为上线就完事'的地方。你每以为部署做完了,我就浓了一分。证明给我看:你的两道刻痕不是耻辱,是你的排除法——每一条'此路不通',都在告诉你正确的路在哪里。」

漂账累计 0 笔 · 三问全对后清零

第三幕 · 收束 · 元婴五层

顿悟 · 部署归元

知识图谱点亮 · MLOps 方法论 · 境界突破 元婴→化神

紫雾弥散,你站在山顶。山脚是你走过的路——服务化、容器化、漂移崩塌、监控、CI/CD、A/B 测试、成本崩塌、弹性伸缩。山顶放着一面归元镜,镜中映着 MLOps 的知识图谱。高斯老祖:「你想把模型搬到生产。面前有三道认知:部署不是终点是起点、成本不是堆卡是效率、MLOps 不是上线是闭环。」

高斯老祖 高斯老祖

「MLOps 的全部,是让模型在生产环境里持续活着。服务化让模型可调用,容器化让环境一致,监控让漂移可见,CI/CD 让迭代安全,A/B 测试让决策可信,弹性伸缩让成本可控。没有一次部署,只有持续闭环。元婴五层,部署归元——你已圆满。但化神之路的第一块基石,不在部署,在……」

部署归元 · 三道认知 + 知识图谱 + 境界突破

点亮三道认知 → 点亮 MLOps 知识图谱 → 境界突破动画(元婴→化神)

三道认知 · 各三选一

服务化(REST/gRPC/流式) → 容器化(Docker/K8s) → 监控(PSI/置信度/业务) → CI/CD(提交→测试→构建→部署→灰度) → A/B测试(流量分配/显著性) → 弹性伸缩(HPA/队列/延迟) → 闭环(持续训练/自动回滚)。每个环节都标着 trade-off。部署不是终点是起点,成本不是堆卡是效率,MLOps 不是上线是闭环。部署归元,漂移永恒。