3

私はTensorflowサービングで大きな(1.2ギガバイトの大きさ)のモデルを提供するためにしようとしていますが、私は取得しています:サービングTensorflow:大モデル、いる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がprotobufのC++版を使用しているので、それは無関係になった。サービングを使用して大規模なモデルを導入することに関する情報はほとんどないので、どんな情報でも十分です。

Tensorflow Servingはホストマシン上でコンパイルされていました。モデルもpython3を使用していました(まったく何かと関係があるのだろうと思います)。 これに対応するためのクイックフィックスはありますか、またはServing C++ソースを掘り下げてメッセージのサイズを増やす必要がありますか?コメントでリクエストあたり

編集:

私は公式のチュートリアルに従ってモデルを保存します。モデルがとても大きい理由は、埋め込みレイヤーを保存していることです。モデルは、Ubuntuの16.04ホスト上のGitHubからサービングコンパイルTFによって読み取られる

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

:ここでは、とにかく節約コードです。

+0

モデルの書き方と読み方を入力することはできますか? –

+0

@DenizBeker投稿を更新しました – clstl

答えて

2

誰かを助けてくれることを願っていますが、解決策を見つけました。

大きな問題は明らかでした。彼はNLPモデルなので、それに沿って大きなボキャブラリーがあります。グラフ定義にボキャブラリを残しておくと、metagraphdefが肥大化し、protobufはそのような大きなプロトコルに直面したときにエラーを出しています。

解決策は、辞書をassets_collectionに入れることです。あなたが実際にしなければならないことに関する資料はほとんどありませんが、公式レポでsaved_model_test.pyを見ることは価値があります。

Tensorflow Servingで資産を利用するには、Creating a new kind of servableの公式ドキュメントに記載されているように、カスタムServableを作成する必要があります。具体的な例を提示することはできません。なぜなら、当面はモデルを単純にコンテナ化したからです。

誰かが例を持っているか、NLPモデルのデプロイメントに関してより良い戦略を持っている人は、さらに詳しく話し合うことができます。

関連する問題