Tujuan
Dokumen ini memberikan contoh penggunaan SignatureDefs yang dimaksudkan di SavedModel yang dipetakan ke API TensorFlow Serving.
Ringkasan
SignatureDef mendefinisikan tanda tangan komputasi yang didukung dalam grafik TensorFlow. SignatureDefs bertujuan untuk memberikan dukungan umum untuk mengidentifikasi input dan output suatu fungsi dan dapat ditentukan saat membuat SavedModel .
Latar belakang
TF-Exporter dan SessionBundle menggunakan Tanda Tangan yang memiliki konsep serupa tetapi mengharuskan pengguna untuk membedakan antara tanda tangan bernama dan tanda tangan default agar tanda tangan tersebut dapat diambil dengan benar saat dimuat. Bagi yang sebelumnya menggunakan TF-Exporter/SessionBundle, Signatures
di TF-Exporter akan digantikan oleh SignatureDefs
di SavedModel.
Struktur SignatureDef
SignatureDef memerlukan spesifikasi:
-
inputs
sebagai peta string ke TensorInfo. -
outputs
sebagai peta string ke TensorInfo. -
method_name
(yang sesuai dengan nama metode yang didukung di alat/sistem pemuatan).
Perhatikan bahwa TensorInfo sendiri memerlukan spesifikasi nama, tipe d, 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 SignatureDefs yang akan didukung di TensorFlow Serving didefinisikan sebagai konstanta. Secara khusus:
Selain itu, SavedModel menyediakan utilitas untuk membantu membangun definisi tanda tangan.
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 spesifik yang didukung TensorFlow Serving untuk setiap API.
Perhatikan bahwa Penyajian TensorFlow bergantung pada kunci setiap TensorInfo (dalam input dan output SignatureDef), serta nama_metode SignatureDef. Konten TensorInfo sebenarnya khusus untuk grafik Anda.
Klasifikasi Tanda TanganDef
Classification SignatureDefs mendukung panggilan terstruktur ke API Klasifikasi TensorFlow Serving. Ini menetapkan bahwa harus ada Tensor inputs
, dan ada dua Tensor keluaran opsional: classes
dan scores
, setidaknya satu di antaranya harus ada.
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 SignatureDef
Predict SignatureDefs mendukung panggilan ke Predict API TensorFlow Serving. Tanda tangan ini memungkinkan Anda secara fleksibel mendukung banyak Tensor masukan dan keluaran. Untuk contoh di bawah, tanda tangan my_prediction_signature
memiliki satu input logis images
Tensor yang dipetakan ke Tensor sebenarnya dalam grafik Anda x:0
.
Predict SignatureDefs memungkinkan portabilitas di seluruh model. Ini berarti Anda dapat menukar SavedModel yang berbeda, mungkin dengan nama Tensor dasar yang berbeda (misalnya, alih-alih x:0
, mungkin Anda memiliki model alternatif baru dengan Tensor z:0
), sementara klien Anda dapat tetap online terus menanyakan model lama dan baru versi model ini tanpa perubahan di sisi klien.
Predict SignatureDefs juga memungkinkan Anda menambahkan Tensor tambahan opsional ke output, yang dapat Anda kueri secara eksplisit. Katakanlah selain kunci keluaran di bawah scores
, Anda juga ingin mengambil lapisan pengumpulan untuk debugging atau tujuan lainnya. Dalam hal ini, Anda cukup menambahkan Tensor tambahan dengan pool
seperti kunci 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. Ini menetapkan bahwa harus ada tepat satu Tensor inputs
, dan satu Tensor 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"
}
}