2017-08-28 6 views
1

tensorflowオブジェクト検出モデルを作成し、tensorflowサービングを使用して配信しました。私はサービングモデルをテストするためにPythonクライアントを作成しました。そして、それはすべての予測を受け取るのに約40msの時間がかかります。 Java Tensorflow Serving Prediction Clientが遅すぎる

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)); 

誰でも問題の解決に手伝ってもらえますか?ありがとうございました。

+1

言語としてのJavaは、最初は非常に遅いです。それは非常に速くなる "ウォームアップ"後にのみです。これがあなたのプログラムの最初のgRPC呼び出しであれば、Javaが "暖かい"ではないので、あなたが言及するほど遅いと簡単に信じています。その後の呼び出しは速くなければなりません.JITが十分にコンパイルした後には、Pythonよりも高速になると思います。 –

答えて

0

実際の問題は、私は(悪い考えであった)、ネットワーク上のすべての画像ピクセルを送った

、ということでした。さて、入力をエンコードされた画像に変更することで、より速くなりました。