模型托管 gRPC 服务调用
关于 caicloud.clever.serving.client.GRPCClient 类
TaaS 平台的本地开发包 caicloud.tensorflow 提供 caicloud.clever.serving.client.GRPCClient
类用于调用模型托管 Serving 的 gRPC 服务。
GRPCClient
类提供了下面两个方法:
__init__(endpoint)
:创建一个 gRPC client 请求对象。
参数
endpoint
为托管模型 Serving 的 gRPC 服务地址。call_predict(inputs, output_filter=None)
:执行 gRPC 请求,执行托管模型的预测方法。
参数
inputs
为输入 tensor 别名到实际输入值的字典;参数
output_filter
用于过滤托管模型计算的输出 tensor,默认为None
,表示计算所有输出 tensor。返回最终托管模型计算的输出 tensor 别名到实际输出值的字典。
如果没有安装 caicloud.tensorflow,先运行下面命令进行安装,
$ sudo pip install caicloud.tensorflow
mnist-serving 的 gRPC client
MNIST 样例任务得到的模型的输入和输出分别是:
- 输入:名称 image,接收 mnist 数据集一张 28*28 图片的像素值。
- 输出:名称 logits,对输入图片分析得到的该图片分别属于哪个数字的概率。
于是,访问模型托管 mnist-serving 的 gRPC client 代码如下:
import tensorflow as tf
from caicloud.clever.serving.client import grpc_client as serving_grpc_client
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets as input_data
client = serving_grpc_client.GRPCClient('192.168.16.42:31372')
# loading mnist data
print("Loading mnist data...")
mnist = input_data("/tmp/mnist-data", one_hot=True)
# prepare request input data
input_data = mnist.test.images[0]
input_data_shape = [1, mnist.test.images[0].size]
inputs = {
'image': tf.contrib.util.make_tensor_proto(input_data, shape=input_data_shape),
}
# call client.call_predict() to do predict.
outputs = client.call_predict(inputs)
# get output: logits
result = tf.contrib.util.make_ndarray(outputs["logits"])
print('logits: {0}'.format(result))
将该代码保存到文件 grpc_client.py 文件,然后运行,
bash-3.2$ python grpc_client.py
Loading mnist data...
Extracting /tmp/mnist-data/train-images-idx3-ubyte.gz
Extracting /tmp/mnist-data/train-labels-idx1-ubyte.gz
Extracting /tmp/mnist-data/t10k-images-idx3-ubyte.gz
Extracting /tmp/mnist-data/t10k-labels-idx1-ubyte.gz
logits: [[-0.37270582 -7.31677485 -0.04589005 2.54814148 -2.60255098 -1.18702579
-5.90019894 8.67759323 -0.52831918 2.18874288]]
更多使用细节可以参考 caicloud/tensorflow-tutorial 中提供的三个样例代码。