TensorFlow Serving 简要了解_v1

简介

TensorFlow Serving 是一个灵活高效的机器学习服务系统,适用于部署机器学习模型,灵活、性能高、可用于生产环境。Serving 即当对机器学习模型进行训练之后,对模型进行应用。

TF Serving 可抽象为一些组件构成,每个组件实现了不同的 API 任务,其中最重要的是 Servable, Loader, Source, 和 Manager,组件之间的交互如下图。

上图对应的流程大致如下:

假设当前系统中有模型 M1 正在运行,而我们又训练好了模型 M2,右下方的 Source API 通过文件系统插件(橙黄色模块,用于检测文件系统,观察模型的新版本)得知 M2 的存在,Source 会发出(emit) M2 加载程序(loader),加载程序并不会直接加载模型 M2,它会记录元数据,估算 RAM 需求及模型所需要的其他资源。然后 loader 被发送给管理者(Manager),管理者估算服务器的状态,有多少可用 RAM 及其他资源(GPU,TPU),然后在有足够资源且安全的情况下才会加载 M2。但之后不会立即卸载模型 M1,只有当所有对 M1 的请求结束之后,才会卸载 M1。

特点

TensorFlow Serving可以轻松部署新算法和实验,同时保持相同的服务器架构和API,它具有以下特性:

  • 支持模型版本控制和回滚
  • 支持并发,实现高吞吐量
  • 开箱即用,并且可定制化
  • 支持多模型服务,最大支持 2GB 的模型(因为使用的 protobuf 有 32 位的限制)
  • 支持批处理
  • 支持热更新
  • 支持分布式模型

示例

TF Serving 安装与测试

TensorFlow Serving 可通过 3 种方式进行安装:Docker,二进制或者源码编译。这里介绍最简单、最直接的方法:Docker 安装。其他方式可参考文章。

  1. 准备 TF Serving 的 Docker 环境
docker pull tensorflow/serving
  1. 下载官方示例代码
mkdir -p /tmp/tfserving
cd /tmp/tfserving
git clone https://github.com/tensorflow/serving
  1. Docker 运行 TensorFlow Serving 实例。使用 docker 命令启动服务(以 REST API 方式,端口:8501)
TESTDATA="/tmp/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 '&'
  1. 客户端验证
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] }

ONNX

对于 Pytorch 模型,可以考虑使用 ONNX。

资源

  • TF Serving 官方文档
  • B 站搬运的视频:Tensorflow Serving 从研发到生产

你可能感兴趣的:(tensorflow,人工智能)