Amaç
Bu belge, TensorFlow Serving'in API'leriyle eşlenen SavedModel'deki SignatureDef'lerin amaçlanan kullanımına ilişkin örnekler sağlar.
Genel Bakış
SignatureDef, TensorFlow grafiğinde desteklenen bir hesaplamanın imzasını tanımlar. SignatureDef'ler, bir fonksiyonun giriş ve çıkışlarını tanımlamak için genel destek sağlamayı amaçlar ve SavedModel oluşturulurken belirtilebilir.
Arka plan
TF-Exporter ve SessionBundle, kavram olarak benzer olan ancak yükleme sırasında doğru şekilde alınabilmeleri için kullanıcıların adlandırılmış imzalar ile varsayılan imzalar arasında ayrım yapmasını gerektiren İmzalar kullandı. Daha önce TF-Exporter/SessionBundle kullanmış olanlar için TF-Exporter'daki Signatures
, SavedModel'deki SignatureDefs
ile değiştirilecektir.
SignatureDef Yapısı
SignatureDef aşağıdakilerin belirtilmesini gerektirir:
- TensorInfo'ya dize haritası olarak
inputs
. - TensorInfo'ya bir dize haritası olarak
outputs
. -
method_name
(yükleme aracında/sistemde desteklenen bir yöntem adına karşılık gelir).
TensorInfo'nun kendisinin ad, dtype ve tensör şeklinin belirtilmesini gerektirdiğini unutmayın. Tensör bilgisi grafikte zaten mevcut olsa da, araçlar daha sonra grafik tanımını okumak zorunda kalmadan imza doğrulama vb. gerçekleştirebileceğinden, TensorInfo'nun SignatureDef'in bir parçası olarak açıkça tanımlanması yararlı olacaktır.
İlgili sabitler ve araçlar
Araçlar ve sistemler arasında yeniden kullanım ve paylaşım kolaylığı sağlamak amacıyla TensorFlow Serving'de desteklenecek SignatureDef'lerle ilgili yaygın olarak kullanılan sabitler, sabitler olarak tanımlanır. Özellikle:
Ek olarak SavedModel, bir imza-def oluşturmaya yardımcı olacak bir araç sağlar.
Örnek yapılar
TensorFlow Serving, çıkarım gerçekleştirmek için yüksek düzeyde API'ler sağlar. Bu API'leri etkinleştirmek için modellerin, giriş ve çıkış için kullanılacak tam TensorFlow düğümlerini tanımlayan bir veya daha fazla SignatureDef içermesi gerekir. TensorFlow Serving'in her API için desteklediği belirli SignatureDef örnekleri için aşağıya bakın.
TensorFlow Sunumunun, her TensorInfo'nun anahtarlarına (SignatureDef'in giriş ve çıkışlarında) ve SignatureDef'in method_name'ine bağlı olduğunu unutmayın. TensorInfo'nun gerçek içeriği grafiğinize özeldir.
Sınıflandırma İmzaDef
Classification SignatureDefs, TensorFlow Serving'in Sınıflandırma API'sine yapılan yapılandırılmış çağrıları destekler. Bunlar, bir inputs
Tensörü olması gerektiğini ve iki isteğe bağlı çıkış Tensörü olduğunu belirtir: classes
ve scores
; bunlardan en az birinin mevcut olması gerekir.
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'i tahmin et
Predict SignatureDefs, TensorFlow Serving'in Predict API'sine yapılan çağrıları destekler. Bu imzalar, isteğe bağlı olarak birçok giriş ve çıkış Tensörünü esnek bir şekilde desteklemenize olanak tanır. Aşağıdaki örnekte, my_prediction_signature
imzası, grafiğinizdeki x:0
gerçek Tensör ile eşlenen tek bir mantıksal giriş Tensör images
sahiptir.
Predict SignatureDef'ler modeller arasında taşınabilirliğe olanak tanır. Bu, müşterileriniz sürekli olarak eski ve yeniyi sorgulayarak çevrimiçi kalabilirken, muhtemelen farklı temel Tensor adlarıyla (örneğin, x:0
yerine belki Tensor z:0
içeren yeni bir alternatif modeliniz var) farklı SavedModels'ı değiştirebileceğiniz anlamına gelir. Bu modelin istemci tarafında değişiklik yapılmayan sürümleri.
Predict SignatureDefs ayrıca çıktılara açıkça sorgulayabileceğiniz isteğe bağlı ek Tensörler eklemenize de olanak tanır. scores
altındaki çıktı anahtarına ek olarak, hata ayıklama veya başka amaçlar için bir havuzlama katmanı da getirmek istediğinizi varsayalım. Bu durumda, pool
gibi bir anahtara ve uygun değere sahip ek bir Tensör eklemeniz yeterlidir.
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"
}
}
Regresyon İmzasıDef
Regression SignatureDefs, TensorFlow Serving'in Regression API'sine yapılan yapılandırılmış çağrıları destekler. Bunlar, tam olarak bir inputs
Tensörü ve bir outputs
Tensörü olması gerektiğini belirtir.
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"
}
}