【问题标题】:Java Tensorflow Serving Prediction Client Too SlowJava TensorFlow Serving Prediction Client 太慢了
【发布时间】:2018-02-05 15:09:58
【问题描述】:

我创建了一个tensorflow 对象检测模型并使用tensorflow serving 为它提供服务。我创建了一个 python 客户端来测试服务模型,并且需要大约 40 毫秒的时间来接收所有预测。

t1 = datetime.datetime.now()
result = stub.Predict(request, 60.0)  # 60 secs timeout
t2 = datetime.datetime.now()
print ((t2 - t1).microseconds / 1000)

现在,我的问题是,当我在 java 上执行相同操作时,会花费 450 到 500 毫秒的太多时间(大约 10 次)。

ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 9000)
        .usePlaintext(true)
        .build();
PredictionServiceGrpc.PredictionServiceBlockingStub stub = PredictionServiceGrpc.newBlockingStub(channel);

......

Instant pre = Instant.now();
Predict.PredictResponse response = stub.predict(request);
Instant curr = Instant.now();
System.out.println("time " + ChronoUnit.MILLIS.between(pre,curr));

【问题讨论】:

  • Java 作为一门语言最初非常慢。只有在它“热身”之后,它才会变得非常快。如果这是您程序中的第一个 gRPC 调用,我很容易相信它和您提到的一样慢,因为这样 Java 就不会“温暖”。后续调用应该更快,最终(在 JIT 编译足够之后)我希望它们比 Python 更快。

标签: tensorflow object-detection grpc tensorflow-serving


【解决方案1】:

真正的问题是,

我通过网络发送所有图像像素(这是个坏主意)。现在,将输入更改为编码图像会更快。

【讨论】:

    猜你喜欢
    • 2020-09-18
    • 2019-07-10
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多