【问题标题】:Docker Tensorflow-Serving Predictions too largeDocker TensorFlow-Serving 预测太大
【发布时间】:2019-07-10 18:03:43
【问题描述】:

我正在尝试使用 Docker + tensorflow-serving 为我的模型提供服务。但是,由于使用迭代器服务模型的限制(使用
make_initializable_iterator() ),我不得不拆分我的模型。

我正在使用 grpc 与 docker 上的模型进行交互。问题是我预测的张量大约是 10MB,序列化大约是 4.1MB。我得到的错误是:

"grpc_message":"Received message larger than max (9830491 vs. 4194304)"

有没有办法将我的预测写入磁盘而不是在 grpc 响应中传输它们?输出文件是 32 通道张量,因此在使用 tf.io.write_file 保存到磁盘之前,我无法将其解码为 png。

谢谢!

【问题讨论】:

    标签: docker grpc tensorflow-serving


    【解决方案1】:

    gRPC 中的默认消息长度为 4MB,但我们可以在您的 gRPC 客户端和 python 中的服务器请求中扩展大小,如下所示。您无需流式传输即可发送和接收大型消息

    request = grpc.insecure_channel('localhost:6060', 
    options=[('grpc.max_send_message_length', MAX_MESSAGE_LENGTH), 
    ('grpc.max_receive_message_length', MAX_MESSAGE_LENGTH)])
    

    在 GO 语言中,我们有引用 URL 的函数

    https://godoc.org/google.golang.org/grpc#MaxMsgSizehttps://godoc.org/google.golang.org/grpc#WithMaxMsgSize

    【讨论】:

      【解决方案2】:

      在gRPC Client Request中使用C++设置Messages大小为Unlimited的代码如下所示:

      grpc::ChannelArguments ch_args;
      ch_args.SetMaxReceiveMessageSize(-1);
      std::shared_ptr<grpc::Channel> ch = grpc::CreateCustomChannel("localhost:6060", grpc::InsecureChannelCredentials(), ch_args);
      

      【讨论】:

        猜你喜欢
        • 2018-02-05
        • 1970-01-01
        • 2018-09-11
        • 2021-11-22
        • 1970-01-01
        • 1970-01-01
        • 2018-05-16
        • 2020-05-19
        • 2019-04-27
        相关资源
        最近更新 更多