我很难为 tensorflow 模型提供服务,我已经使用 tensorflow 的对象检测 API 从预训练模型训练了该模型。我已经用model_main.py脚本训练了一个模型 (Resnet101),性能似乎可以用于生产。因此,我创建了一个运行 tensorflow-serve 的 docker 容器。我设法为在训练过程结束时创建的模型提供服务。我猜这个功能是新的,但似乎model_main.py脚本servable在训练结束时创建了一个。(我在“train_dir”中找到了一个名为“export”的新文件夹,其中包含 asaved_model.pb和 thevariables variables.data-00000-of-00001和variables.index)。但是,我已经设法为这个模型提供服务,输出形式tensorflow_model_server如下所示:2018-08-29 07:47:50.268810: I tensorflow_serving/core/loader_harness.cc:86] Successfully loaded servable version {name: my_model version: 123}2018-08-29 07:47:50.271480: I tensorflow_serving/model_servers/main.cc:327] Running ModelServer at 0.0.0.0:8500 ...所以服务似乎有效。问题是,我正在努力使用 python 客户端连接到服务器。我修改了 tensorflow serve inception 示例附带的客户端文件,如下所示:from __future__ import print_function# This is a placeholder for a Google-internal import.import grpcimport tensorflow as tffrom tensorflow_serving.apis import predict_pb2from tensorflow_serving.apis import prediction_service_pb2_grpctf.app.flags.DEFINE_string('server', 'localhost:9000', 'PredictionService host:port')tf.app.flags.DEFINE_string('image', '', 'path to image in JPEG format')FLAGS = tf.app.flags.FLAGSdef main(_): channel = grpc.insecure_channel(FLAGS.server) stub = prediction_service_pb2_grpc.PredictionServiceStub(channel) # Send request with open(FLAGS.image, 'rb') as f: # See prediction_service.proto for gRPC request/response details. data = f.read()如果我使用正确设置的端口运行此脚本,则会从模型服务器内部收到错误消息:2018-08-29 08:32:48.426016: W external/org_tensorflow/tensorflow/core/framework/op_kernel.cc:1275] OP_REQUIRES failed at example_parsing_ops.cc:240 : Invalid argument: Could not parse example input, value: '����客户端返回一些随机的二进制字符串。但显然存在连接并且请求到达服务器。在我看来,客户的请求有问题,但我不知道如何正确设置。我没有找到有关默认签名密钥的任何信息,该model_main.py脚本用于导出经过训练的模型并尝试使用训练检查点创建新的可服务对象,但修改后的exporter.py脚本失败。在这种情况下,有人知道如何正确设置客户的请求吗?
添加回答
举报
0/150
提交
取消