Tensorflow服务:Large模式,protobuf的错误
我努力使服务与Tensorflow服务大(1.2 GB的大小)模式,但我得到一个:Tensorflow服务:Large模式,protobuf的错误
2017-12-02 21:55:57.711317: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:236] Loading SavedModel from: ... [libprotobuf ERROR external/protobuf_archive/src/google/protobuf/io/coded_stream.cc:193] A protocol message was rejected because it was too big (more than 1073741824 bytes). To increase the limit (or to disable these warnings), see CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.
2017-12-02 21:55:58.563507: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:284] Loading SavedModel: fail. Took 852178 microseconds.
2017-12-02 21:55:58.563567: E tensorflow_serving/util/retrier.cc:38] Loading servable: {name: 2 version: 2} failed: Data loss: Can't parse .../saved_model.pb as binary proto
我通过一些相关问题阅读在几年前的Github上,但最终它变成了无关的,因为Serving正在使用C++版本的protobuf。几乎没有关于使用Serving部署大型模型的信息,所以任何信息都足够了。
Tensorflow服务被编译在主机上,因此是模型,但使用python3(我不知道是否有什么关系的话)。 有没有快速解决这个问题,或者我需要挖掘Serving C++源代码并增加消息的大小?每个请求
编辑的评论:
我根据官方教程保存模型。模型如此之大的原因是我有一个嵌入层保存。这里是保存代码反正:
export_path = 'model/1' builder = saved_model_builder.SavedModelBuilder(export_path)
signature = predict_signature_def(inputs={'input': input},
outputs={'sent': output})
builder.add_meta_graph_and_variables(sess=session,
tags=[tag_constants.SERVING],
signature_def_map={'predict': signature})
builder.save()
该模型是由编译TF从GitHub Ubuntu的16.04主机上的服务阅读。
回答:
希望它可以帮助别人,但我“发现”的解决方案。
主要的问题是显而易见的;他是一个NLP模型,因此它有一个很大的词汇。留下图表定义中的词汇会使metagraphdef膨胀,而protobuf在面对这样一个大的协议时会出错。
该解决方案把字典中assets_collection。几乎没有文件证明您实际需要做的事情,但在官方回购中查看saved_model_test.py值得一看。
至于利用与Tensorflow服务的资产,人们必须创建一个自定义可服务的,作为Creating a new kind of servable官方文档中描述。无法提供具体的例子,因为我暂时只是将模型容器化了。
如果任何人有实例,或者有更好的策略,当谈到NLP模型的部署,我会很乐意进一步的讨论。
以上是 Tensorflow服务:Large模式,protobuf的错误 的全部内容, 来源链接: utcz.com/qa/258118.html