模型部署(2)【TODO】在线部署

模型在线部署-TensorFlow Serving

TensorFlow Serving 是 TensorFlow 提供的一个高性能、灵活、可扩展的模型服务框架,用于部署和扩展 TensorFlow 模型服务。它支持多种模型格式和多种协议,能够快速部署和扩展模型服务,适用于各种规模和复杂度的深度学习模型。TensorFlow Serving 的主要特点包括:

  1. 支持多种模型格式:TensorFlow Serving 支持多种常见的模型格式,包括 TensorFlow SavedModel 格式、TensorFlow Hub 格式、Session Bundle 格式等,能够适应不同类型和规模的深度学习模型。
  2. 支持多种协议:TensorFlow Serving 支持多种常见的网络协议,包括 gRPC、RESTful API、Apache Kafka、Apache Pulsar 等,能够方便地与其他系统集成,实现模型服务的高效和灵活。
  3. 高性能和高可用性:TensorFlow Serving 提供了多种性能优化和扩展机制,包括模型预热、预加载、多线程和多进程等,能够快速响应请求并保证高可用性。
  4. 易于部署和管理:TensorFlow Serving 提供了多种部署和管理工具,包括 Docker 容器、Kubernetes、Triton Inference Server 等,能够快速部署和管理模型服务,并支持自动化部署和扩展。

通过使用 TensorFlow Serving,用户可以方便地将训练好的 TensorFlow 模型部署到云端或本地服务器上,提供高效、灵活、可扩展的模型服务。TensorFlow Serving 已广泛应用于各种领域,包括计算机视觉、自然语言处理、语音识别等,是深度学习模型部署和推断的重要基础框架之一。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import requests
import numpy as np

# 模型名称和路径
MODEL_NAME = "mnist"
MODEL_BASE_PATH = "./models/mnist"

# 启动 TensorFlow Serving
import subprocess
subprocess.Popen(["tensorflow_model_server",
"--port=8500",
"--rest_api_port=8501",
f"--model_name={MODEL_NAME}",
f"--model_base_path={MODEL_BASE_PATH}"])

# 发送推断请求
data = np.random.rand(1, 28, 28, 1).tolist()
json_data = {"instances": data}

headers = {"content-type": "application/json"}
url = f"http://localhost:8501/v1/models/{MODEL_NAME}:predict"

response = requests.post(url, json=json_data, headers=headers)
print(response.json())