高级 #ml#mlops#deployment

MLOps 与模型部署

MLOps 把机器学习模型从"实验"变成"产品"——数据管理、实验追踪、模型部署、监控、持续迭代。和 DevOps 类似但增加了数据、模型版本管理等 ML 特有挑战

🧪 在笔记本里跑的模型——和线上不是一回事

你在 Jupyter Notebook 里调了一个模型——准确率 95%。你很高兴,把 notebook 发给同事——“部署一下”。

然后问题来了:

  • 训练环境(Python 3.10 + PyTorch 2.0)线上没有
  • 训练数据在那个 CSV 文件里,线上数据从 API 来——格式不同
  • 模型推理速度太慢——线上需要 10ms 以内
  • 线上数据分布变了——模型准确率降到 70%

MLOps 就是解决这些问题的方法论——把 ML 模型从”实验”变成”可靠的产品”。

💡 MLOps = DevOps + ML 特有挑战

DevOps 已有的:CI/CD、容器化、监控 ML 特有的:数据版本管理、模型版本管理、实验追踪、特征存储、模型漂移检测


🔧 MLOps 的核心组件

环节工具解决的问题
实验追踪MLflow、Weights & Biases”之前那个 95% 的模型用了什么参数?“
数据版本管理DVC(Data Version Control)“训练数据是哪一版的?“
模型注册MLflow Model Registry管理模型版本、审批流程
特征存储Feast、Tecton训练和线上用同一套特征
模型部署TensorFlow Serving、TorchServe模型→API 服务
监控Prometheus + Grafana、Evidently模型准确率下降报警
# MLflow——实验追踪
import mlflow

mlflow.set_experiment("房价预测")

with mlflow.start_run():
    # 记录参数
    mlflow.log_param("learning_rate", 0.01)
    mlflow.log_param("model_type", "random_forest")
    mlflow.log_param("n_estimators", 100)
    
    # 训练模型
    model = train_model()
    
    # 记录指标
    mlflow.log_metric("val_mae", 5.2)
    mlflow.log_metric("val_rmse", 7.8)
    
    # 保存模型
    mlflow.sklearn.log_model(model, "model")

📦 模型部署方式

方式适用场景延迟例子
在线推理(REST API)实时预测(推荐、检测)TensorFlow Serving
批量推理(Batch)大规模离线预测Spark 批处理
边缘设备手机、IoT极低TensorFlow Lite
浏览器端Web 应用本地TensorFlow.js
# 用 FastAPI 部署模型
from fastapi import FastAPI
import joblib

app = FastAPI()
model = joblib.load("model.pkl")  # 加载模型

@app.post("/predict")
async def predict(features: dict):
    X = preprocess(features)
    pred = model.predict(X)
    return {"prediction": pred.tolist()}

🔄 模型漂移——部署后不是终点

模型部署后最大的问题:数据分布会变

# 概念漂移(Concept Drift):
# 2023 年训练的用户行为模型——2024 年用户习惯变了
# → 模型准确率从 90% 降到 70%

# 应对:持续监控 → 触发重新训练 → 自动部署新模型

MLOps 的最终目标是 ML 的 CI/CD——数据变了→自动重新训练→自动验证→自动部署。


📝 小结

概念一句话
MLOps把 ML 从实验变成可靠产品的工程实践
实验追踪记录每次训练的参数、指标、代码版本
模型部署在线 API、批量推理、边缘设备
模型漂移线上数据分布变化导致性能下降——需重新训练
特征存储统一线上线下特征——保证训练和推理一致

为什么先学这个? 有了 MLOps,模型才能真正落地。最后看 ML 的社会影响——AI 伦理与公平性