Skip to content

MLOps 与模型部署

本页速览 模型训练出来只是开始——上线、监控、再训练才是生产级 ML 的主战场。本文讲清 MLOps 全貌:实验管理、模型注册、部署方式、推理服务、监控漂移、再训练闭环,以及"为什么很多模型死于上线后没人管"。

MLOps 与模型部署 ​

概念定义:让模型活在生产环境 ​

**MLOps(Machine Learning Operations)**是把机器学习系统从"实验室的 notebook"变成"生产环境稳定运行的服务"的全部工程实践——类比 DevOps 之于软件开发,但多了数据和模型两个版本化对象。

一个残酷的行业共识:大多数 ML 项目死于上线之后,而不是训练之前。模型上线只是开始:数据会漂移、特征会失效、依赖会升级、流量会变化——没有 MLOps 支撑的模型,三个月后基本沦为"僵尸服务"(还在响应,但效果早已不是当初验证的样子)。

开发期:  数据 → 特征 → 训练 → 评估 → 注册
生产期:  服务 → 监控 → 漂移检测 → 再训练 → 更新(闭环)

一、MLOps 的四大支柱 ​

1. 实验管理:每场实验都可复现 ​

训练实验必须有完整记录,否则"上次那个最好的模型用了什么配置"无从回答。要记录:

  • 代码版本(Git commit)、数据版本(见数据与数据工程);
  • 超参数、随机种子、训练/验证指标曲线;
  • 产物(权重文件、tokenizer、评估报告)。

工具:MLflow(开源事实标准)、Weights & Biases、Neptune。最小可用方案:一个命名规范的实验目录 + 记录文件(experiments/2024-01-01_lr1e-3_seed42/),也比什么都不记强。

2. 模型注册与版本管理 ​

模型版本化:每个候选模型有唯一版本号、状态(staging/production)、元数据(训练数据、指标、审批人)。上线流程:候选模型 → 离线评估 → 人工审批 → 灰度 → 全量。

工具:MLflow Model Registry、SageMaker Model Registry。核心价值:可回滚——线上模型出问题时能秒级回退到上一版本。

3. 管道编排(Pipeline) ​

训练管道自动化:数据校验 → 特征计算 → 训练 → 评估 → 注册,每一步可重跑、可审计。工具:Airflow、Kubeflow Pipelines、Metaflow、Prefect。

关键实践:数据与模型双重校验——管道入口检查数据 schema(列是否齐、类型是否对、分布是否异常),不满足就报警而不是闷头训练。

4. 部署与推理服务 ​

模型上线服务的方式(见下文"部署方式"),以及配套的容量规划(QPS、延迟、GPU 资源)、弹性伸缩、故障转移。

二、部署方式选型 ​

方式特点适用
在线 API(在线推理)实时、毫秒级响应推荐、风控、搜索、对话
批处理(离线推理)每天/每小时跑一遍,结果入库日报、画像更新、离线打分
流式推理事件驱动、秒级实时风控、监控告警
嵌入式/边缘模型进 App/设备移动端、IoT、离线可用

在线推理的常见实现:FastAPI/Flask 包模型 → Docker → 部署到 K8s/Serverless(KServe、SageMaker、阿里云 PAI、火山方舟等)。模型服务化要点:

  • 预处理与后处理要封装进服务(与训练时一致,否则特征不一致);
  • 输入校验、超时、限流、重试;
  • 模型加载管理(模型放内存/显存,避免每次请求重新加载)。

三、性能与成本优化 ​

模型上线后,推理成本与延迟是持续账单:

技术原理收益
量化(Quantization)FP32→FP16/INT8,权重用更低位表示显存/内存减半+,速度提升
蒸馏(Distillation)大模型教小模型小模型接近大模型效果
剪枝(Pruning)砍掉不重要的权重/层模型变小变快
缓存相同输入的输出缓存高频重复查询直接命中
批推理(Batching)多请求合并一次前向GPU 利用率大幅提升
ONNX/TensorRT推理引擎优化速度提升数倍

工程顺序:先量化(最省事)→ 需要再蒸馏/剪枝 → 需要再上推理引擎。大模型时代还有 KV Cache、投机采样(speculative decoding)、vLLM 等推理优化,见大语言模型(LLM)。

四、监控:模型会"过期" ​

监控是 MLOps 与 DevOps 最大的不同——代码不会自己变,但数据和规律会。监控三件事:

1. 数据漂移(Data Drift) ​

输入特征分布变化:用户的年龄分布变了、新品类上线了。检测方法:

  • PSI(群体稳定性指数):比较特征分布(训练 vs 近期线上)的偏移量,PSI>0.2 触发告警;
  • KS 检验:两分布是否显著不同;
  • 逐特征监控 + 整体监控(embedding 分布)。

2. 概念漂移(Concept Drift) ​

x→y 的关系变了:同样的特征组合,规律变了(疫情期间"特征→流失"关系失效、政策变化改变风控逻辑)。检测:真实标签延迟到达后,持续对比模型预测与真实结果(如点击率、转化率)。

3. 系统健康 ​

推理延迟、错误率、QPS、GPU 利用率——常规服务监控即可。

告警后的动作:再训练 ​

触发条件动作
定时(每天/每周)定期重训(最省心,模型持续跟上数据)
漂移检测超阈值按需重训(省资源,响应快)
线上指标退化立即重训 + 回滚上一版本

再训练闭环的核心纪律:线上监控指标与训练评估指标打通——如果离线 AUC 没变但线上转化掉了,先查特征一致性(训练/线上口径差异),这是最常见的原因。

五、MLOps 成熟度阶梯 ​

阶段特征工具
L0(手工)notebook 训练,手动部署,无监控无
L1(脚本化)训练脚本化 + 版本控制,定时批处理Git、cron
L2(自动化)管道编排 + 实验管理 + 模型注册MLflow、Airflow
L3(平台化)特征存储 + 自动再训练 + 全链路监控Feast、Kubeflow、SageMaker

给团队的建议:不要一步到位上全套平台——先保证"实验可复现 + 模型可回滚 + 监控有告警"这三条底线,再逐步升级。工具是次要的,流程是主要的。

从第一天就养成三个习惯

  1. 实验必记录:每次训练存下代码/数据/超参/指标;
  2. 模型必留版本:上线前注册,出事能回滚;
  3. 上线必带监控:没有监控的模型部署 = 裸奔。 这三个习惯零成本,却决定了你的模型能不能活过三个月。

六、权衡与取舍 ​

  • 在线 vs 批处理:延迟敏感(推荐、风控)在线;对时效不敏感(画像、报表)批处理省 90% 成本;
  • 模型精度 vs 推理成本:大模型精度高但贵——量化 + 蒸馏 + 缓存组合拳,按业务预算选档;
  • 自动化 vs 可控性:自动再训练效率高但可能被"脏数据"带偏(再训练前先做数据校验);关键业务保留人工审批;
  • 自建 vs 平台:云平台(SageMaker、Azure ML、火山方舟)上手快,自建(K8s + KServe)灵活但维护重——团队规模小优先平台。

延伸阅读 ​

参考资料 ​