tensorflowモデル導入シリーズ--TensorFlow Services導入(コード付)


サマリ


この文書では、汎用モデルのTensorFlowサービス導入を実現するためのシリーズブログtensorflowモデル導入シリーズの一部です.この文書では、tensorFlowサービングを使用してtensorflowモデル推論サーバを導入することを主に実現します.tensorflowモデルのサーバ側での計算スキームを実現し、関連するサンプルソースコードを提供します.関連ソースはリンクを参照

引用する


本稿では、汎用モデルの独立したシンプルなサーバ導入を実現するために、シリーズブログtensorflowモデルの導入シリーズの一部です.この文書では、tensorFlowサービングを使用してtensorflowモデル推論サーバを導入することを主に実現します.サーバ側でtensorflowモデルを計算する簡単なスキームを実現し、このスキームはBSとCSアーキテクチャに適用され、導入とメンテナンスが容易である.前のブログではflaskを利用して簡単なモデルサービスを構築することを説明したが、モデルはオブジェクトをインスタンス化しただけで、同時アクセスの場合、臨界領域の問題がある.TensorFlow Servicesはこの問題をうまく解決した.

テーマ


前述の博文tensorflowモデル導入シリーズ--独立した単純サーバ導入はtensorflowをサーバ上で簡単に導入する方法について説明したが、モデルは1つのオブジェクトのみをインスタンス化し、同時アクセスの場合、臨界領域の問題がある.本明細書で説明するTensorFlowサービングモデルの導入は、この問題をうまく解決しています.もちろん、TensorFlow Servicesは強力なツールであり、モデルの導入には小さな機能しか使用されていません.本稿のトピックはモデルの導入にあるため、他の面ではあまり紹介されていません.

TensorFlow Servicesの紹介


TensorFlow Servicesはgoogleが公式に発表した生産用の機械学習コンポーネントの一つです.彼はモデルバージョン制御(ロールバックオプションを含むモデル更新を実現するために使用される)と複数のモデル(A/Bテストによる実験を実現するために使用される)をサポートするとともに、同時モデルがハードウェアアクセラレータ(GPUとTPU)上でより低い遅延でより高いスループットを実現できることを確保することができる.

インストール


サービス側のインストールには、次の3つの方法があります.
  • dockerミラー
  • をダウンロード
  • コマンドラインインストール(ubuntu)
    ソースの追加
    echo "deb [arch=amd64] http://storage.googleapis.com/tensorflow-serving-apt stable tensorflow-model-server tensorflow-model-server-universal" | sudo tee /etc/apt/sources.list.d/tensorflow-serving.list && \curl https://storage.googleapis.com/tensorflow-serving-apt/tensorflow-serving.release.pub.gpg | sudo apt-key add -
    apt-get update
    

    取付apt-get install tensorflow-model-server
  • ソースコードインストールhttps://github.com/tensorflow/serving.git
  • モデル配置


    モデル変換

  • 変換.次はkerasモデルに対する変換コードです.pbモデルでは、まず手動で入出力op名を決定する必要があります.モデルファイルから入出力op名を取得するには、ブログtensorflowモデル導入シリーズを参照してください.単機python導入
    model = keras.models.load_model('../model/saved_keras/save.h5')
    
    tf.saved_model.simple_save(
        keras.backend.get_session(),
        export_path,
        inputs={'input_image': model.input},
        outputs={t.name:t for t in model.outputs})
    
  • テスト.コマンドsaved_model_cli show --dir ./export/1 --allでは、入出力署名が予想される
  • であるかどうかを確認できます.

    モデル配置


    モデルの準備ができたら、次のコマンドを使用してサービスを導入できます.
    tensorflow_model_server \
    	--rest_api_port=8501 \
    	--model_name=saved_model \
    	--model_base_path=/..../model_deployment/tensorflow_serving/export/
    

    クライアントテスト


    サービス側が正常に起動すると、クライアントを使用してテストできます.TensorFlow Serviceのリクエストと返信はjson形式で、リクエストアドレスはhttp://host:port/v1/models/${MODEL_NAME}です.
    予測インタフェースの要求フォーマットは
    {
      // (Optional) Serving signature to use.
      // If unspecifed default serving signature is used.
      "signature_name": <string>,
    
      // Input Tensors in row ("instances") or columnar ("inputs") format.
      // A request can have either of them but NOT both.
      "instances": <value>|<(nested)list>|<list-of-objects>
      "inputs": <value>|<(nested)list>|<object>
    }
    

    返信形式は次のとおりです.
    {
      "predictions": <value>|<(nested)list>|<list-of-objects>
    }
    

    サンプルコード

  • モデル変換コード
  • サービス起動スクリプト
  • クライアントサンプルコード
  • ふろく


    リファレンス

  • TensorFlow Service公式ドキュメント
  • 公式コードおよび例