TensorFlow Serving | 快速入门篇

作者: Anoyi

2020-11-24 10:35

简介

TensorFlow Serving 是针对机器学习模型灵活且高性能的服务系统,专为生产环境而生。它处理机器学习的推理方面,在训练和管理生命周期之后进行建模,并通过高性能的参考计数查找表为客户提供版本化的访问。 TensorFlow Serving 提供与 TensorFlow 模型的现成集成,但可以轻松扩展,以便服务于其他类型的模型和数据。

特性如下:

  • 可以同时服务多个模型或相同模型的多个版本
  • 同时支持 gRPC 和 HTTP
  • 允许部署新模型版本,而无需更改任何客户端代码
  • 支持金丝雀发布和 A/B 测试
  • 高性能、低消耗,最小化推理时间
  • 内置调度程序,能分批处理各个推理请求,以便在 GPU 上联合执行,并具有可配置的延迟控制
  • 支持多种可服务项:Tensorflow modelsembeddingsvocabulariesfeature transformations 以及其非 Tensorflow 的机器学习模型

快速入门

1、获取测试代码

git clone https://github.com/tensorflow/serving

2、使用 Docker 启动 Serving

# 指定模型路径
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"

# 运行容器
docker run -d \
  -p 8500:8500 \
  -p 8501:8501 \
  -v "$TESTDATA/saved_model_half_plus_two_cpu:/models/model" \
  tensorflow/serving

3、使用 HTTP 请求测试接口

# 请求
curl -d '{"instances": [1.0, 2.0, 5.0]}' -X POST http://127.0.0.1:8501/v1/models/model:predict

# 响应 => { "predictions": [2.5, 3.0, 4.5] }

4、使用 GRPC 测试接口

import grpc
import tensorflow as tf
from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_service_pb2_grpc

MAX_MESSAGE_LENGTH = 100 * 1024 * 1024
OPTIONS = [('grpc.max_message_length', MAX_MESSAGE_LENGTH), ('grpc.max_receive_message_length', MAX_MESSAGE_LENGTH)]

channel = grpc.insecure_channel('127.0.0.1:8500', options=OPTIONS)
stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)

request = predict_pb2.PredictRequest()
request.model_spec.name = 'model'
request.model_spec.signature_name = 'serving_default'

request.inputs['x'].CopyFrom(tf.make_tensor_proto([1.0, 2.0, 5.0]))
predictions = stub.Predict(request, 300.0)

print(predictions.outputs['y'].float_val)

使用 Docker 运行 Serving 时,默认情况下 model_name 值为 modelmodel_base_path 值为 /models/model

参考资料

看法

看法

昵称
邮箱