跳转至

推理服务

部署不是“把模型跑起来”这么简单,更关键的是可观测性与稳定性。

1. 服务化形态

  • 同步 HTTP:简单易接入,适合低延迟在线推理。
  • 异步队列:适合高耗时任务(如长文本生成)。
  • 批处理离线:适合日报/周报类周期任务。

2. FastAPI 最小推理服务

from fastapi import FastAPI
from pydantic import BaseModel
import torch

app = FastAPI()
model = torch.jit.load("model.ts", map_location="cpu")
model.eval()

class Req(BaseModel):
    features: list[float]

@app.post("/predict")
def predict(req: Req):
    x = torch.tensor([req.features], dtype=torch.float32)
    with torch.no_grad():
        y = model(x)
    return {"score": float(y.squeeze().item())}

3. 必做工程项

  • 超时与重试策略:避免请求堆积。
  • 模型版本管理:支持灰度与回滚。
  • 监控指标:QPS、P95/P99 延迟、错误率、资源占用。
  • 输入校验:限制长度、范围、防止脏数据攻击。

4. 常见线上问题

  • 训练/推理预处理不一致。
  • 批大小变化导致延迟突增。
  • 热点请求引发 OOM。
  • 单机无熔断,故障级联扩散。