ヘルプKaggleにTensorFlowグレートバリアリーフを保護チャレンジに参加

TensorFlowサービング用のSavedModelのSignatureDefs

目的

このドキュメントでは、TensorFlowServingのAPIにマッピングされるSavedModelでのSignatureDefsの使用目的の例を示します。

概要

A SignatureDefはTensorFlowグラフでサポートされている計算の署名を定義します。 SignatureDefsは、入力と出力機能のと構築するときに指定することができます識別するための汎用的なサポートを提供することを目指しSavedModelを

バックグラウンド

TF-輸出業者SessionBundleを使用署名それらを負荷に正確に取得するために名前が付けられ、デフォルトの署名を区別するためにコンセプトが似ているが、必要なユーザーを。以前TF-輸出/ SessionBundleを使用人のために、 Signatures TF-輸出では置き換えられますSignatureDefs SavedModelに。

SignatureDef構造

SignatureDefには、次の仕様が必要です。

  • inputs TensorInfoに文字列のマップとして。
  • outputs TensorInfoに文字列のマップとして。
  • method_name (装填ツール/システムでサポートされているメソッド名に対応)。

注ことTensorInfo自体は名前、DTYPEとテンソルの形状を指定する必要があります。テンソル情報はすでにグラフに存在しますが、ツールはグラフ定義を読まなくても署名検証などを実行できるため、TensorInfoをSignatureDefの一部として明示的に定義しておくと便利です。

ツールやシステム間での再利用と共有を容易にするために、TensorFlowサービングでサポートされるSignatureDefsに関連して一般的に使用される定数を定数として定義します。具体的には:

また、SavedModelは提供utilのを署名-defの構築を支援します。

サンプル構造

TensorFlow Servingは、推論を実行するための高レベルAPIを提供します。これらのAPIを有効にするには、モデルに、入力と出力に使用する正確なTensorFlowノードを定義する1つ以上のSignatureDefを含める必要があります。 TensorFlow Servingが各APIでサポートする特定のSignatureDefの例については、以下を参照してください。

TensorFlowサービングは、(SignatureDefの入力と出力にある)各TensorInfoのキーと、SignatureDefのmethod_nameに依存することに注意してください。 TensorInfoの実際の内容は、グラフに固有のものです。

分類SignatureDef

分類SignatureDefsは、TensorFlowServingのClassificationAPIへの構造化された呼び出しをサポートします。存在しなければならないことは、これらのPRESCRIBE inputs :テンソルと、2つのオプションの出力テンソルがあることclassesscores 、の少なくとも一方が存在しなければなりません。

signature_def: {
  key  : "my_classification_signature"
  value: {
    inputs: {
      key  : "inputs"
      value: {
        name: "tf_example:0"
        dtype: DT_STRING
        tensor_shape: ...
      }
    }
    outputs: {
      key  : "classes"
      value: {
        name: "index_to_string:0"
        dtype: DT_STRING
        tensor_shape: ...
      }
    }
    outputs: {
      key  : "scores"
      value: {
        name: "TopKV2:0"
        dtype: DT_FLOAT
        tensor_shape: ...
      }
    }
    method_name: "tensorflow/serving/classify"
  }
}

SignatureDefを予測する

Predict SignatureDefsは、TensorFlowServingのPredictAPIへの呼び出しをサポートします。これらの署名により、任意の数の入力および出力テンソルを柔軟にサポートできます。以下、例えば、署名my_prediction_signature単一の論理入力テンソル有するimagesあなたのグラフで実際のテンソルにマッピングされx:0

Predict SignatureDefsは、モデル間の移植性を可能にします。あなたはおそらく別の根本的なテンソル名で、異なるSavedModelsに入れ替えることができ、この手段(例えば代わりのx:0 、おそらくあなたはテンソルと新しい代替モデル持っz:0 、あなたのクライアントは、オンライン連続新旧を照会滞在することができますが、)クライアント側の変更なしのこのモデルのバージョン。

Predict SignatureDefsを使用すると、オプションで追加のTensorを出力に追加して、明示的にクエリを実行することもできます。レッツは、以下の出力キーに加えて、と言うscores 、あなたはまた、デバッグや他の目的のためのプーリング層をフェッチしたかったです。その場合、あなたは、単にのようなキーを使用して、追加のテンソルを追加しpoolして、適切な値。

signature_def: {
  key  : "my_prediction_signature"
  value: {
    inputs: {
      key  : "images"
      value: {
        name: "x:0"
        dtype: ...
        tensor_shape: ...
      }
    }
    outputs: {
      key  : "scores"
      value: {
        name: "y:0"
        dtype: ...
        tensor_shape: ...
      }
    }
    method_name: "tensorflow/serving/predict"
  }
}

回帰SignatureDef

Regression SignatureDefsは、TensorFlowServingのRegressionAPIへの構造化された呼び出しをサポートします。正確に一つ存在しなければならないことをこれらのプリスクinputsテンソル、および1つoutputsテンソル。

signature_def: {
  key  : "my_regression_signature"
  value: {
    inputs: {
      key  : "inputs"
      value: {
        name: "x_input_examples_tensor_0"
        dtype: ...
        tensor_shape: ...
      }
    }
    outputs: {
      key  : "outputs"
      value: {
        name: "y_outputs_0"
        dtype: DT_FLOAT
        tensor_shape: ...
      }
    }
    method_name: "tensorflow/serving/regress"
  }
}