Skip to content

模型服务与部署

模型部署的目标,是把离线模型变成满足延迟、吞吐、可靠性和成本要求的在线能力。模型文件只是其中一部分,前处理、运行时、后处理和资源调度同样决定最终结果。

推理服务链路

text
请求 -> 校验与预处理 -> 排队/批处理 -> 模型推理 -> 后处理 -> 业务响应

需要分别统计每段耗时。只看总延迟,无法判断是图片解码、Tokenization、排队、模型计算还是网络传输成为瓶颈。

在线、批量和端侧推理

方式特点典型场景
在线服务单次或小批请求,重视低延迟对话、推荐、实时识别
离线批量大批数据,重视吞吐和成本全量打标、报表、Embedding 构建
流式推理输入和输出持续到达语音、视频、文本生成
端侧推理在手机、设备或浏览器运行隐私、离线、低网络延迟

模型打包

一个可部署版本至少要绑定:

  • 模型结构和权重。
  • Tokenizer 或图像、音频预处理。
  • 输入输出 schema。
  • 类别映射、阈值和后处理。
  • 运行时与依赖版本。
  • 训练数据、评估报告和已知限制。

只复制权重而遗漏预处理版本,会产生难以察觉的线上偏差。

性能指标

  • 首字或首个结果延迟。
  • 完整请求延迟 P50、P95、P99。
  • 每秒请求数或每秒 Token 数。
  • 并发上限和队列等待。
  • CPU、GPU、显存和内存占用。
  • 冷启动和模型加载时间。

平均延迟不能代表高峰体验,容量规划要看尾延迟和资源饱和点。

批处理与动态批处理

批处理能提高 GPU 利用率,但请求需要等待凑批,会增加延迟。动态批处理在短时间窗口内合并请求,适合吞吐优先的场景。

大模型服务还要考虑不同输入长度和输出长度。把极长请求与短请求放在同一批次,可能造成资源浪费和队首阻塞。

压缩与加速

  • 量化:降低参数和计算精度。
  • 蒸馏:让小模型学习大模型行为。
  • 剪枝:删除不重要结构或权重。
  • 图优化和编译:融合算子、减少数据搬运。
  • KV Cache:复用生成过程中已计算的上下文状态。

优化后必须重新评估准确率、长尾场景和数值稳定性。

发布策略

  1. 离线评估通过后注册模型版本。
  2. 影子流量验证真实输入与资源。
  3. 小流量灰度比较质量和性能。
  4. 逐步扩大流量并设置自动回滚条件。
  5. 保留上一稳定版本和完整配置。

回滚必须包括模型、预处理、阈值和依赖,不能只切换一个权重文件。

降级

模型服务超时或资源不足时,可以:

  • 使用更小模型。
  • 返回缓存或规则结果。
  • 减少检索和上下文长度。
  • 转异步处理。
  • 转人工或明确告知暂不可用。

降级结果也要满足权限和业务底线,不能为了可用性跳过安全检查。

别急,先让缓存热一下。