![](https://img.haomeiwen.com/i3424642/8f1ddfbde8257dec.png)
简介
TensorFlow Serving 是针对机器学习模型灵活且高性能的服务系统,专为生产环境而生。它处理机器学习的推理方面,在训练和管理生命周期之后进行建模,并通过高性能的参考计数查找表为客户提供版本化的访问。 TensorFlow Serving 提供与 TensorFlow 模型的现成集成,但可以轻松扩展,以便服务于其他类型的模型和数据。
特性如下:
- 可以同时服务多个模型或相同模型的多个版本
- 同时支持 gRPC 和 HTTP
- 允许部署新模型版本,而无需更改任何客户端代码
- 支持金丝雀发布和 A/B 测试
- 高性能、低消耗,最小化推理时间
- 内置调度程序,能分批处理各个推理请求,以便在 GPU 上联合执行,并具有可配置的延迟控制
- 支持多种可服务项:
Tensorflow models
、embeddings
、vocabularies
、feature 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
值为 model
,model_base_path
值为 /models/model
。
网友评论