美文网首页TensorFlow
TensorFlow Servering C/S通信约束

TensorFlow Servering C/S通信约束

作者: EddyLiu2017 | 来源:发表于2018-09-21 18:02 被阅读75次

    TensorFlow Serving以Server方式提供模型能力服务,作为服务的使用者(Client)可以通过gRPC和RESTfull API两种方式来获取模型能力。虽然TensorFlow对C/S的通信约束做了说明,但感觉介绍的并不是特别的清晰易用,需要自己根据使用示例,并结合文档进行梳理和总结。

    官方参考示例

    在文档中提到了两个参考示例,一个用于gRPC通信约束测试,一个用于RESTfull API通信约束测试。

    1. gRPC示例

    示例使用说明:https://www.tensorflow.org/serving/serving_basic

    2. RESTfull API示例

    示例使用说明:https://www.tensorflow.org/serving/api_rest

    示例代码分析

    虽然官网提供了两个示例,但实际上RESTfull API的示例过于简单,并且做了封装,实际的参考价值不大。下面主要结合gRPC的示例代码进行分析。

    客户端同服务端进行通信交互的核心是几个标识,我们分别介绍下。

    1. 模型标识

    指定要使用哪一个模型。
    参考mnist_client.py


    模型标识

    模型标识在Serving的模型保存输出代码中并没有显示的声明。模型标识实际上是在指定模型输出路径,和设置TF Serving "target"时指定的。


    设置模型标识 设置模型标识
    参考:https://www.tensorflow.org/serving/serving_basic

    2. 签名标识

    可以粗糙的理解为,用来指定需要调用模型中的哪个方法。
    官网定义(参考:https://www.tensorflow.org/serving/signature_defs

    签名标识

    参考mnist_client.py


    签名标识

    签名标识在Serving的模型保存输出代码中设置,
    参考minist_save_model.py


    签名标识

    3. 输入标识

    设置输入,传入待处理的数据。
    官网定义(参考:https://www.tensorflow.org/serving/signature_defs

    输入标识
    参考minist_save_model.py
    输入标识
    参考mnist_client.py
    输入标识

    4. 输出标识

    设置哪些数据作为返回值,只在Serving中进行设置,Client获取的返回值中,能够获取对应的标识。
    官网定义(参考:https://www.tensorflow.org/serving/signature_defs

    输出标识
    参考minist_save_model.py
    输出标识
    参考mnist_client.py
    输出标识

    总结

    客户端向服务端发起请求时,指定了模型标识、签名标识、输入标识(包含数据),便可以从服务端获取处理结果,结果中包含输出标识。
    gRPC和RESTfull API在通信约束上是一致的。

    相关文章

      网友评论

        本文标题:TensorFlow Servering C/S通信约束

        本文链接:https://www.haomeiwen.com/subject/wgvnnftx.html