📜  Python - 使用 TensorFlow Serving 进行模型部署(1)

📅  最后修改于: 2023-12-03 14:45:53.521000             🧑  作者: Mango

Python - 使用 TensorFlow Serving 进行模型部署

TensorFlow Serving 是一个用于部署 TensorFlow 模型的高性能、可扩展的系统。它提供了一个 TensorFlow 模型服务器,用于移动设备、Web 应用程序、以及其他的机器学习服务。使用 TensorFlow Serving,您可以轻松地部署模型,并使用 REST API 或 gRPC 进行模型预测。

准备工作

要使用 TensorFlow Serving,需要先安装它。您可以通过以下命令在 Ubuntu 或 macOS 上安装 TensorFlow Serving:

$ echo "deb [arch=amd64] http://storage.googleapis.com/tensorflow-serving-apt stable tensorflow-model-server tensorflow-model-server-universal" | sudo tee /etc/apt/sources.list.d/tensorflow-serving.list && 
curl https://storage.googleapis.com/tensorflow-serving-apt/tensorflow-serving.release.pub.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install tensorflow-model-server

Windows 用户需要从源代码中构建 TensorFlow Serving。

安装 TensorFlow Serving 后,您需要导出已经训练好的 TensorFlow 模型。例如,您可以使用 TensorFlow 的 SavedModel 格式进行导出:

import tensorflow as tf

# 定义模型
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(10, input_shape=(None, 5), activation='relu'),
    tf.keras.layers.Dense(1)
])

# 编译模型
model.compile(optimizer='adam', loss='mse')

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

# 导出模型
tf.saved_model.save(model, '/tmp/model/1')

注意,需要将模型导出到 TensorFlow Serving 预定的目录。例如,在上面的代码示例中,模型将保存到 /tmp/model/1 目录下。1 表示版本号,您可以根据需要修改。

部署模型

一旦模型已经导出,您就可以使用 TensorFlow Serving 部署它了。使用下面的命令启动 TensorFlow Serving:

$ tensorflow_model_server --port=8500 --rest_api_port=8501 --model_name=my_model --model_base_path=/tmp/model

这条命令将启动一个名为 my_model 的模型,监听端口 85008501,并从 /tmp/model 目录加载模型。

接下来,您可以使用任何支持 REST API 或 gRPC 的客户端与 TensorFlow Serving 交互。例如,如果您使用 Python 编写客户端代码,可以使用 TensorFlow 的 Request 类发送 REST API 请求并解析响应:

import requests
import json

data = {'instances': [[1, 2, 3, 4, 5], [2, 3, 4, 5, 6]]}
headers = {'Content-type': 'application/json'}
url = 'http://localhost:8501/v1/models/my_model:predict'
res = requests.post(url, data=json.dumps(data), headers=headers)
print(res.json())

这个例子中,我们向 http://localhost:8501/v1/models/my_model:predict 发送了一个 POST 请求,请求的数据是一个包含两个实例的列表 [[1, 2, 3, 4, 5], [2, 3, 4, 5, 6]]。服务器返回了一个 JSON 对象,包含模型对每个实例的预测结果。

总结

TensorFlow Serving 是一个功能强大、可扩展的系统,可以帮助你部署 TensorFlow 模型,并使用 REST API 或 gRPC 进行模型预测。本文介绍了如何在 Python 中使用 TensorFlow Serving 部署模型,并使用 REST API 进行预测。如果您有任何问题或建议,请随时在评论区留言。