Appearance
模型服务与部署
模型部署的目标,是把离线模型变成满足延迟、吞吐、可靠性和成本要求的在线能力。模型文件只是其中一部分,前处理、运行时、后处理和资源调度同样决定最终结果。
推理服务链路
text
请求 -> 校验与预处理 -> 排队/批处理 -> 模型推理 -> 后处理 -> 业务响应需要分别统计每段耗时。只看总延迟,无法判断是图片解码、Tokenization、排队、模型计算还是网络传输成为瓶颈。
在线、批量和端侧推理
| 方式 | 特点 | 典型场景 |
|---|---|---|
| 在线服务 | 单次或小批请求,重视低延迟 | 对话、推荐、实时识别 |
| 离线批量 | 大批数据,重视吞吐和成本 | 全量打标、报表、Embedding 构建 |
| 流式推理 | 输入和输出持续到达 | 语音、视频、文本生成 |
| 端侧推理 | 在手机、设备或浏览器运行 | 隐私、离线、低网络延迟 |
模型打包
一个可部署版本至少要绑定:
- 模型结构和权重。
- Tokenizer 或图像、音频预处理。
- 输入输出 schema。
- 类别映射、阈值和后处理。
- 运行时与依赖版本。
- 训练数据、评估报告和已知限制。
只复制权重而遗漏预处理版本,会产生难以察觉的线上偏差。
性能指标
- 首字或首个结果延迟。
- 完整请求延迟 P50、P95、P99。
- 每秒请求数或每秒 Token 数。
- 并发上限和队列等待。
- CPU、GPU、显存和内存占用。
- 冷启动和模型加载时间。
平均延迟不能代表高峰体验,容量规划要看尾延迟和资源饱和点。
批处理与动态批处理
批处理能提高 GPU 利用率,但请求需要等待凑批,会增加延迟。动态批处理在短时间窗口内合并请求,适合吞吐优先的场景。
大模型服务还要考虑不同输入长度和输出长度。把极长请求与短请求放在同一批次,可能造成资源浪费和队首阻塞。
压缩与加速
- 量化:降低参数和计算精度。
- 蒸馏:让小模型学习大模型行为。
- 剪枝:删除不重要结构或权重。
- 图优化和编译:融合算子、减少数据搬运。
- KV Cache:复用生成过程中已计算的上下文状态。
优化后必须重新评估准确率、长尾场景和数值稳定性。
发布策略
- 离线评估通过后注册模型版本。
- 影子流量验证真实输入与资源。
- 小流量灰度比较质量和性能。
- 逐步扩大流量并设置自动回滚条件。
- 保留上一稳定版本和完整配置。
回滚必须包括模型、预处理、阈值和依赖,不能只切换一个权重文件。
降级
模型服务超时或资源不足时,可以:
- 使用更小模型。
- 返回缓存或规则结果。
- 减少检索和上下文长度。
- 转异步处理。
- 转人工或明确告知暂不可用。
降级结果也要满足权限和业务底线,不能为了可用性跳过安全检查。
