blog.dopana

Back

TensorFlow Serving 是 Google 面向生产环境的灵活、高性能机器学习模型服务系统。它承担 ML 的推理侧:接收训练好的模型、管理其生命周期,并通过高性能的引用计数查找表向客户端提供带版本访问的预测。

它解决什么问题#

生产环境中服务 ML 模型比看起来更难:

  • 如何不丢请求、不破坏客户端地更新模型?
  • 如何在同一 GPU 上运行多个模型 / 版本?
  • 如何批处理请求让 GPU 保持忙碌?
  • 如何金丝雀 / A-B 安全地测试新模型?

TensorFlow Serving 开箱即用地回答了所有问题。

核心功能#

功能作用
版本化模型同时服务多个版本
零停机更新无需改动客户端即可部署新版本
金丝雀 & A/B 测试向实验版本导流
GPU 批处理将请求分组为批次并带延迟控制
gRPC + REST两种接口开箱即用
多 servableTF 模型、嵌入、词表、特征变换
低开销给推理增加极小的延迟

架构#

  • ModelServer —— 服务二进制
  • SavedModel —— 它消费的序列化模型格式
  • 版本管理器 —— 加载/卸载版本,支持回滚
  • 批处理调度器 —— 为 GPU 效率将推理请求分组

REST API 端点#

GET  /v1/models/{model}                          # 状态
GET  /v1/models/{model}/versions/{v}/metadata    # 元数据
POST /v1/models/{model}:predict                  # 预测
POST /v1/models/{model}:classify                 # 分类
POST /v1/models/{model}:regress                  # 回归
text

请求为 JSON;二进制数据(图像)用 Base64 编码。

60 秒部署模型#

# 拉取镜像并克隆演示模型
docker pull tensorflow/serving
git clone https://github.com/tensorflow/serving

TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"

# 启动服务器
docker run -t --rm -p 8501:8501 \
    -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \
    -e MODEL_NAME=half_plus_two \
    tensorflow/serving
bash
# 预测
curl -d '{"instances": [1.0, 2.0, 5.0]}' \
    -X POST http://localhost:8501/v1/models/half_plus_two:predict
# 返回 => { "predictions": [2.5, 3.0, 4.5] }
bash

导出 SavedModel#

import tensorflow as tf
from tensorflow import keras

model = keras.Sequential([keras.layers.Dense(1, input_shape=(1,))])
model.compile(optimizer="sgd", loss="mse")

# 训练...
model.fit(x_train, y_train, epochs=10)

# 为 TensorFlow Serving 导出
model.export("models/regressor/1")   # 版本目录 "1"
python

版本管理:每个 SavedModel 放在带编号的目录中——放入新目录即瞬间部署新版本。

GPU 批处理#

调度器将单个请求分组为批次供 GPU 联合执行:

--enable_batching=true
--batching_parameters_file=config.json
text

可配置批次大小、超时和填充。这对小请求为主的工作负载显著提升吞吐。

TFX —— 生产管道#

TensorFlow Serving 是 TFX(TensorFlow Extended)的最后阶段——Google 的端到端生产 ML 管道:

阶段组件
数据验证Data Validation(schema、异常)
变换Transform(特征工程)
训练Trainer(TF + Keras)
评估Evaluator(指标、公平性)
服务TensorFlow Serving / Model Server

替代方案#

系统最擅长
TF ServingGoogle 规模 TF 模型、版本化服务
Triton Inference Server多框架 GPU 服务(行业标准)
TorchServePyTorch 原生服务
ONNX Runtime跨框架 CPU/GPU/移动端
vLLM基于 PagedAttention 的 LLM 服务

结论#

TensorFlow Serving 依然是 TensorFlow 模型最成熟的生产模型服务器——Google 级的版本管理、批处理、金丝雀/A-B 测试,且延迟开销极小。如果你的技术栈是 TensorFlow(或 Keras),它是默认选择;异构团队则用 Triton 作为多框架替代。配合 TFX,就能获得从训练到车队长廊级服务的完整路径。

参考资料#