MLOps Academy · 课时

提供生产模型服务

将处于目标阶段的模型加载到您的 FastAPI 服务中

第 3 / 4 课13 个步骤

提供生产模型服务 是 CoddyKit 上的免费 MLOps Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 MLOps Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 MLOps Academy 课程共包含 4 节课。

从注册表到 API

已发布的模型现在位于注册表中。接下来,将它加载到 FastAPI 服务中,让真实请求能够获得预测。🌐

通过别名引用

构建一个指向 champion 别名的模型 URI。您的代码不会硬编码版本,因此模型发布可以直接生效。

MODEL_URI = "models:/churn-classifier@champion"

加载模型

使用 mlflow.pyfunc.load_model 将生产模型加载到内存中,作为可调用的 Python 对象。

import mlflow.pyfunc

model = mlflow.pyfunc.load_model(MODEL_URI)

在启动时只加载一次

加载过程较慢,因此应在应用启动时执行一次,而不是每次请求都执行。使用 FastAPI 的 lifespan 处理器,在流量到达前完成加载。

from contextlib import asynccontextmanager

@asynccontextmanager
async def lifespan(app):
    app.state.model = mlflow.pyfunc.load_model(MODEL_URI)
    yield

创建应用

将 lifespan 接入您的 FastAPI 实例。从这里开始,已加载的模型会存放在 app.state 中,并由每个请求共享。

from fastapi import FastAPI

app = FastAPI(lifespan=lifespan)

验证输入

为请求正文定义一个 Pydantic 模型,这样格式错误的输入就会在到达模型之前被拒绝。

from pydantic import BaseModel

class Features(BaseModel):
    tenure: int
    monthly_charges: float

编写预测端点

将经过验证的输入转换为一行数据并调用模型。predict 方法会返回预测结果,您再将其作为 JSON 发回。

@app.post("/predict")
def predict(f: Features):
    pred = app.state.model.predict([[f.tenure, f.monthly_charges]])
    return {"prediction": int(pred[0])}

添加健康检查

一个简单的 /health 路由可以让编排器知道服务已经启动,并且模型已完成加载,然后它们才会转发流量。

@app.get("/health")
def health():
    return {"status": "ok"}

运行服务器

使用 uvicorn 启动服务,您的模型就会通过 HTTP 提供服务。任何能够发送 JSON 的客户端现在都可以获取预测结果。

uvicorn serve:app --host 0.0.0.0 --port 8000

快速检查

为什么要在 lifespan 处理器中加载模型,而不是在 predict 函数内部加载?

更新线上模型

要发布新模型,请重新指向 champion 别名,然后重启服务。服务会在启动时自动加载新版本。

处处使用相同的模型

由于服务会从注册表获取模型,开发、预发布和生产环境都可以通过别名加载完全相同的构件。无需复制粘贴权重。

回顾:提供生产模型服务

您在启动时加载了 champion,验证了输入,公开了 /predict 和 /health,并使用 uvicorn 运行服务。现在,您的模型已经成为一个线上服务。✅

免费开始

用 AI 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「提供生产模型服务」课时是免费的吗?

是的 — 「提供生产模型服务」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 MLOps Academy 课程的其余内容,请升级到 CoddyKit PRO。 MLOps Academy 课程共包含 4 节课。

「提供生产模型服务」这节课中我会学到什么?

将处于目标阶段的模型加载到您的 FastAPI 服务中 你通过在浏览器中直接运行的动手代码来练习 MLOps Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 MLOps Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 MLOps Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「提供生产模型服务」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 MLOps Academy 课中编写并运行代码吗?

能。每节 MLOps Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 训练模型并记录到注册表
  2. 将最佳模型推向生产环境
  3. 提供生产模型服务
  4. 跟踪一次预测请求的完整往返
← 返回 MLOps Academy