81TensorFlow 2 模型部署方法实践--TensorFlow Serving 部署模型

如题所述

第1个回答  2022-06-21

TensorFlow Serving 是一个针对机器学习模型的灵活、高性能的服务系统,专为生产环境而设计。本节实验将使用 TensorFlow Serving 部署 MobileNetV2 模型,并通过两种方法访问 TensorFlow Serving 服务进行图像识别。

在这里我们通过 Docker 来安装 TensorFlow Serving,这也是最便捷的安装方式。Docker 在实验楼环境中已配置,可以直接从镜像仓库中拉取 TensorFlow Serving。在 WebIDE 终端输入:

首先,我们使用 TensorFlow 的官方例子 half_plus_two_cpu 来运行 TensorFlow Serving。

接下来启动 Docker 服务。

docker run 参数解释如下:
-t 为容器重新分配一个伪输入终端。
--rm 容器退出时,自动清理容器内部的文件系统。
-p 指定要映射的 IP 和端口,在这里是容器端口 8501 绑定主机端口 8501,用于 REST 服务。
-v 将宿主机的 $TESTDATA/saved_model_half_plus_two_cpu 目录挂载到容器的 /models/half_plus_two 目录,在这里容器目录必须使用绝对路径。
-e 用于传递环境变量,将 half_plus_two 赋值给 MODEL_NAME 。

通过上述配置,就可以访问正确的地址与端口来使用模型了。

通过上面的例子,我们已经学会了如何用 Docker 开启 TensorFlow Serving 服务。接下来,我们将用上一节实验中 Saved Model 格式的 MobileNetV2 模型来进行部署,同时开启 REST API 和 gRPC 服务端口。
REST API 与 gRPC
通过 HTTP 发送 JSON,就是所谓的 REST API。而 gRPC 是由 Google 主导开发的 RPC 框架,使用 HTTP/2 协议并用 ProtoBuf 作为序列化工具。

解压完成后就可以开启 TensorFlow Serving 服务了,在这里我们需要同时开启 REST API 与 gRPC 服务端口。

接下来我们配置 Python 环境来使用 TensorFlow Serving 服务,首先新建一个终端,进行虚拟环境的配置。

进入虚拟环境,安装需要的库。

在桌面创建文件 rest.py,我们将在此文件中实现 REST API 访问服务,先导入需要的库。

然后导入图片,缩放到224×224的大小,对图片进行预处理,打包成 JSON 格式。

最后将数据用 POST 方法发送到 REST API,获得结果并打印。

在终端运行 python rest.py,可以看到预测结果被正确地返回了。

在配置 gRPC 连接的时候,需要提前知道模型结构的信息,在这里可以使用 saved_model_cli 命令来进行查看。

在输出信息中,13 行的 signature_def['serving_default']: 和 15 行的 inputs['input_1'] tensor_info: 是我们需要的模型信息。
在桌面创建文件 gRPC.py,我们将在此文件中实现 gRPC 访问服务,先导入需要的库。

接着配置 gRPC 进行连接。

然后导入图片,缩放到224×224 的大小,对图片进行预处理,转换为 TensorProto 格式。

在配置 gRPC,处理图片完成后,就可以进行预测了。注意,每次只支持传入一条数据进行预测,传入数据时要注意数据格式和模型定义时的格式一致。

在终端运行 python gRPC.py,可以看到返回的预测结果,预测结果格式封装如下:

相似回答