Objektif
Dokumen ini memberikan contoh penggunaan SignatureDefs yang dimaksudkan di SavedModel yang dipetakan ke API TensorFlow Serving.
Ringkasan
Sebuah SignatureDef mendefinisikan tanda tangan dari perhitungan didukung dalam grafik TensorFlow. SignatureDefs bertujuan untuk memberikan dukungan generik untuk mengidentifikasi input dan output dari fungsi dan dapat ditentukan ketika membangun sebuah SavedModel .
Latar belakang
TF-Eksportir dan SessionBundle digunakan Signatures yang mirip dalam konsep namun pengguna diperlukan untuk membedakan antara nama dan standar tanda tangan agar mereka yang akan diambil dengan benar pada beban. Bagi mereka yang sebelumnya menggunakan TF-Eksportir / SessionBundle, Signatures
di TF-Eksportir akan digantikan oleh SignatureDefs
di SavedModel.
Struktur SignatureDef
SignatureDef memerlukan spesifikasi:
-
inputs
sebagai peta string untuk TensorInfo. -
outputs
sebagai peta string untuk TensorInfo. -
method_name
(yang sesuai dengan nama metode didukung dalam pemuatan alat / sistem).
Perhatikan bahwa TensorInfo itu sendiri membutuhkan spesifikasi nama, dtype dan bentuk tensor. Meskipun informasi tensor sudah ada dalam grafik, akan berguna jika TensorInfo didefinisikan secara eksplisit sebagai bagian dari SignatureDef karena alat kemudian dapat melakukan validasi tanda tangan, dll. tanpa harus membaca definisi grafik.
Konstanta dan utilitas terkait
Untuk kemudahan penggunaan kembali dan berbagi di seluruh alat dan sistem, konstanta yang umum digunakan terkait dengan SignatureDefs yang akan didukung di TensorFlow Serving didefinisikan sebagai konstanta. Secara khusus:
Selain itu, SavedModel menyediakan util untuk membantu membangun tanda tangan-def.
Struktur sampel
TensorFlow Serving menyediakan API tingkat tinggi untuk melakukan inferensi. Untuk mengaktifkan API ini, model harus menyertakan satu atau beberapa SignatureDefs yang menentukan node TensorFlow yang tepat untuk digunakan sebagai input dan output. Lihat di bawah untuk contoh SignatureDefs tertentu yang didukung TensorFlow Serving untuk setiap API.
Perhatikan bahwa TensorFlow Serving bergantung pada kunci setiap TensorInfo (di input dan output SignatureDef), serta nama_metode SignatureDef. Isi sebenarnya dari TensorInfo khusus untuk grafik Anda.
Tanda Tangan KlasifikasiDef
Classification SignatureDefs mendukung panggilan terstruktur ke Classification API TensorFlow Serving. Meresepkan ini yang harus ada inputs
Tensor, dan bahwa ada dua pilihan output yang Tensors: classes
dan scores
, setidaknya satu dari yang harus hadir.
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"
}
}
Prediksi Tanda TanganDef
Predict SignatureDefs mendukung panggilan ke Predict API TensorFlow Serving. Tanda tangan ini memungkinkan Anda untuk secara fleksibel mendukung banyak Tensor input dan output. Untuk contoh di bawah, tanda tangan my_prediction_signature
memiliki satu masukan logis Tensor images
yang dipetakan ke Tensor yang sebenarnya dalam grafik Anda x:0
.
Predict SignatureDefs memungkinkan portabilitas di seluruh model. Ini berarti bahwa Anda dapat swap di SavedModels yang berbeda, mungkin dengan nama yang mendasari Tensor berbeda (misalnya bukan x:0
mungkin Anda memiliki model alternatif baru dengan Tensor z:0
), sedangkan klien Anda dapat tetap online terus menerus query lama dan baru versi model ini tanpa perubahan sisi klien.
Predict SignatureDefs juga memungkinkan Anda untuk menambahkan Tensor tambahan opsional ke output, yang dapat Anda kueri secara eksplisit. Katakanlah bahwa selain kunci keluaran bawah dari scores
, Anda juga ingin mengambil lapisan pooling untuk debugging atau tujuan lain. Dalam hal ini, Anda hanya akan menambahkan Tensor tambahan kunci seperti pool
dan nilai yang sesuai.
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"
}
}
Tanda Tangan RegresiDef
Regression SignatureDefs mendukung panggilan terstruktur ke Regression API TensorFlow Serving. Meresepkan ini bahwa harus ada tepat satu inputs
Tensor, dan satu outputs
Tensor.
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"
}
}