模型托管 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 中提供的三个样例代码。

results matching ""

    No results matching ""