楼层: 首页/ 软件技术/ Python 机器学习与深度学习/ 模型部署:ONNX / FastAPI / Docker
15

模型部署:ONNX / FastAPI / Docker

Model Deployment

模型训好只是开始,要让业务能调用才算完事。这一章讲把模型变成 API 的最短路径。

ONNX:跨框架推理

# 1. 从 PyTorch 导出 ONNX dummy = torch.randn(1, 3, 224, 224) torch.onnx.export(model, dummy, "model.onnx", input_names=["input"], output_names=["output"]) # 2. 用 ONNX Runtime 推理(比 PyTorch 快) import onnxruntime as ort sess = ort.InferenceSession("model.onnx") out = sess.run(["output"], {"input": dummy.numpy()})

FastAPI 封装 API

# main.py from fastapi import FastAPI from pydantic import BaseModel import torch app = FastAPI() model = load_model() # 启动时加载一次 model.eval() class Req(BaseModel): features: list[float] @app.post("/predict") def predict(req: Req): x = torch.tensor(req.features).float() with torch.no_grad(): out = model(x) return {"pred": out.argmax().item()} # 启动:uvicorn main:app --host 0.0.0.0 --port 8000

Dockerfile

FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

API 测试

# 启动后用 curl 测试 curl -X POST http://localhost:8000/predict \ -H "Content-Type: application/json" \ -d '{"features": [5.1, 3.5, 1.4, 0.2]}' # 返回 # {"pred": 0} # 浏览器打开 http://localhost:8000/docs 有自动生成的 Swagger 文档

移动端 / 推理加速

方案场景
TensorRTNVIDIA GPU 上极致推理加速。
ONNX Runtime跨平台 CPU/GPU 通用。
TFLite移动端 Android/iOS。
CoreML苹果设备。
TorchServe / Triton生产级模型服务。

上线后要监控什么

监控项说明
数据漂移线上输入分布和训练时不一样(比如用户突然换了)。定期跑 KS 检验 / PSI。
概念漂移标签分布变了(比如欺诈手法变了)。模型会慢慢失效,要定期重训。
推理延迟p99 延迟,超阈值要扩容或优化。
模型版本每次上线记录版本号,出问题能回滚。
业务指标准确率只是技术指标,最终要看业务指标(转化率、GMV、留存)。