请大家看一下以下问题[阿里云机器学习PAI]

请问调用eas的tf模型服务 , 既然有了TFRequest的API ,为什么还有通过pai_tf_predict_proto包传pb格式数据的方式。两种方式使用场景各是什么? 比如一个这样的服务,两种方式都可以请求吗

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 调用EAS的TF模型服务有两种方式,一种是使用TFRequest的API,另一种是通过pai_tf_predict_proto包传PB格式数据的方式。这两种方式的使用场景如下:

    1. 使用TFRequest的API

    当我们需要向TF模型服务发送请求,并得到模型的预测结果时,可以使用TFRequest的API。这种方式可以方便地将输入数据、输出数据和模型服务的地址、超时时间等信息封装到一个请求对象中,通过网络传输到模型服务端。同时,使用TFRequest还可以方便地获取返回结果并进行解析。因此,当我们需要调用TF模型服务进行预测时,可以优先考虑使用TFRequest的API方式。

    1. 通过pai_tf_predict_proto包传PB格式数据的方式

    使用pai_tf_predict_proto包传PB格式数据的方式,是通过将输入数据转换成PB格式,将PB格式数据打包成二进制数组后,传递给模型服务端进行预测。这种方式需要手动将输入数据序列化为PB格式,并将PB格式数据序列化成二进制数组,然后再将数据发送给模型服务端。因此,这种方式的使用场景主要是在需要将PB格式数据传递给其他系统的场景下,例如将PB格式的数据存储到数据库中,或者通过MQ将数据发送给其他系统。在TF模型服务调用方面,这种方式相对繁琐,也相对较少使用,除非有特殊需求才需要使用。

    综上所述,两种方式使用场景不同,TFRequest API 适合于小规模数据和参数的场景,pai_tf_predict_proto 包适合于大规模数据和参数的场景。

  2. TFRequest的API是TensorFlow Serving进行封装后提供的高级别API,可以简化与TensorFlow Serving的交互过程。使用TFRequest的API可以直接将请求的输入数据和输出数据转换为Python的Numpy数组,无需手动进行序列化和反序列化。这种方式适用于请求数据量较小的场景,例如单条或少量数据的推理请求。

    通过pai_tf_predict_proto包传输pb格式数据则是直接将请求数据进行序列化,以二进制形式传输到TensorFlow Serving进行推理,并将推理结果以同样的方式返回。这种方式适用于请求数据量较大的场景,例如批量推理请求。

    两种方式都可以请求。如果数据量较小,可以选择使用TFRequest的API;如果数据量较大,可以选择通过pai_tf_predict_proto包传输pb格式数据。