TensorFlow Serving
TensorFlow Serving 是一个灵活的、高性能的机器学习模型服务系统,专为生产环境设计。它处理机器学习的推理部分,管理模型在训练后的生命周期,通过一个高性能的引用计数查找表为客户端提供版本化访问。TensorFlow Serving 提供了与 TensorFlow 模型的开箱即用集成,但也可以轻松扩展以服务于其他类型的模型和数据。
一些功能亮点:
- 可以同时服务多个模型或同一模型的多个版本
- 提供 gRPC 和 HTTP 推理端点
- 允许在不更改客户端代码的情况下部署新模型版本
- 支持金丝雀发布新版本和 A/B 测试实验模型
- 由于高效、低开销的实现,对推理时间的延迟影响最小
- 提供一个调度器,将单个推理请求分组成批次,在 GPU 上共同执行,并具备可配置的延迟控制
- 支持多种可服务对象:Tensorflow 模型、嵌入、词汇表、特征转换,甚至是基于非 Tensorflow 的机器学习模型
60 秒内服务一个 Tensorflow 模型
# 下载 TensorFlow Serving Docker 镜像和仓库
docker pull tensorflow/serving
git clone https://github.com/tensorflow/serving
# 演示模型的位置
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"
# 启动 TensorFlow Serving 容器并打开 REST API 端口
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 &
# 使用 predict API 查询模型
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] }
端到端训练和服务教程
请参考 Tensorflow 官方文档网站上的完整教程,了解如何训练和服务一个 Tensorflow 模型。
文档
设置
使用 TensorFlow Serving 最简单直接的方法是使用 Docker 镜像。除非您有特定需求无法通过容器运行解决,我们强烈推荐这种方式。
- 使用 Docker 安装 Tensorflow Serving (推荐)
- 不使用 Docker 安装 Tensorflow Serving (不推荐)
- 使用 Docker 从源码构建 Tensorflow Serving
- 在 Kubernetes 上部署 Tensorflow Serving
使用
导出您的 Tensorflow 模型
要服务一个 Tensorflow 模型,只需从您的 Tensorflow 程序中导出一个 SavedModel。 SavedModel 是一种与语言无关的、可恢复的、封闭的序列化格式,能够让更高级别的系统和工具生成、使用和转换 TensorFlow 模型。
请参考 Tensorflow 文档,了解有关如何导出 SavedModels 的详细说明。
配置和使用 Tensorflow Serving
- 遵循教程服务 Tensorflow 模型
- 配置 Tensorflow Serving 以适应您的服务用例
- 阅读性能指南,了解如何使用 TensorBoard 对推理请求进行分析和优化
- 阅读REST API 指南或 gRPC API 定义
- 如果由于图的延迟初始化导致初始推理请求变慢,请使用 SavedModel 预热
- 如果遇到与模型签名相关的问题,请阅读 SignatureDef 文档
- 如果使用具有自定义操作的模型,请了解如何服务带有自定义操作的模型
扩展
Tensorflow Serving 的架构高度模块化。您可以单独使用某些部分(例如批处理调度)和/或扩展它以服务新的用例。
- 确保您熟悉构建 Tensorflow Serving
- 了解 Tensorflow Serving 的架构
- 探索 Tensorflow Serving C++ API 参考文档
- 创建一种新类型的可服务对象
- 创建可服务对象版本的自定义来源
贡献
如果您想为 TensorFlow Serving 做贡献,请务必阅读 贡献指南。
更多信息
有关更多信息,请参考官方 TensorFlow 网站。