从Jupyter Notebook到全局API
把模型跑通在Notebook里很容易,但要把一个
下一篇
模型在 Notebook 里满分,上线就崩:聊聊 ML 生产环境的坑 →
.pkl 或 .h5 文件变成一个能给外部调用的生产级API,这中间的坑足够让很多开发者崩溃。传统的部署路径得搞服务器、配环境、写Docker、弄K8s,没个几天时间根本搞不定。其实现在走 Serverless 路线可以快得多,基本只要模型训练好了,10分钟内就能上线。
为什么建议尝试 Serverless 部署?
对比传统的虚拟主机或容器集群,Serverless 的核心优势在于:
- 成本极低: 按请求量计费,没流量时基本零成本,适合非高频调用的模型。
- 自动扩缩容: 流量突然暴涨时不需要手动加机器,云平台自动搞定。
- 抛弃运维: 不需要关心操作系统补丁、网络配置或负载均衡。
快速部署实操流程
在开始之前,确保你手里已经有了训练好的模型文件(如 my_model.pkl)以及安装好了 Docker 和相应的云平台 CLI(本文以 Google Cloud Run 为例)。
一、准备依赖环境(预计 2 分钟)
建立一个项目文件夹,把模型文件丢进去。然后创建一个 requirements.txt,把所有必要的库写清楚,版本号必须跟训练时一致,否则加载模型必报错。
fastapi
uvicorn
scikit-learn==1.3.0
pandas二、编写 API 接口(预计 3 分钟)
用 FastAPI 快速封装一个接口。代码逻辑很简单:启动时加载模型,接收请求,返回预测结果。
from fastapi import FastAPI
import joblib
import pandas as pd
app = FastAPI()
model = joblib.load("my_model.pkl")
@app.post("/predict")
async def predict(data: dict):
df = pd.DataFrame([data])
prediction = model.predict(df)
return {"result": prediction.tolist()}三、容器化与部署(预计 5 分钟)
编写 Dockerfile,将代码和环境打包。
FROM python:3.9-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD exec uvicorn main:app --host 0.0.0.0 --port $PORT最后通过命令行直接推送到云端(以 gcloud 为例):
gcloud run deploy ml-service --source .部署完成后,云平台会直接给你一个 HTTPS 的全局访问地址。这种工作流省去了大量繁琐的 MLOps 配置,对于独立开发者或者快速验证原型的团队来说,是目前最高效的方案。