TensorFlow Sunumu için SavedModel'de SignatureDef'ler

Amaç

Bu belge, TensorFlow Serving'in API'leriyle eşleşen SavedModel'de SignatureDefs'in kullanım amacına ilişkin örnekler sağlar.

genel bakış

Bir SignatureDef bir TensorFlow grafikte desteklenmiş bir hesaplama imzasını tanımlar. SignatureDefs girdi ve bir fonksiyonun çıkışlarını tespit etmek jenerik destek sağlamayı amaçlıyoruz ve bir oluştururken belirtilebilir SavedModel .

Arka plan

TF-İhracatçı ve SessionBundle kullanılan İmzalar onları bir yük üzerine doğru alınmak üzere sırayla adlandırılmış ve varsayılan imzalar birbirinden ayırt etmek fikriyle benzerdir ancak gerekli kullanıcıları. Daha önce TF-İhracatçı / SessionBundle kullanılan olanlar için Signatures TF-Aktarıcı'da ile değiştirilecektir SignatureDefs SavedModel içinde.

İmzaDef Yapısı

Bir SignatureDef aşağıdakilerin belirtilmesini gerektirir:

  • inputs TensorInfo için dizesinin bir harita olarak.
  • outputs TensorInfo için dizesinin bir harita olarak.
  • method_name (ki yükleme aracı / sisteminde desteklenen bir yöntem adı uygundur).

Not bu TensorInfo kendisi adı d_type ve tensör şeklin özellikleri gerektirir. Tensör bilgisi grafikte zaten mevcut olsa da, araçlar daha sonra grafik tanımını okumak zorunda kalmadan imza doğrulama vb.

Araçlar ve sistemler arasında yeniden kullanım ve paylaşım kolaylığı için, TensorFlow Hizmetinde desteklenecek olan SignatureDef'lerle ilgili yaygın olarak kullanılan sabitler sabitler olarak tanımlanır. özellikle:

Buna ek olarak, SavedModel bir sağlar util yardım sürüme imza-def.

Örnek yapılar

TensorFlow Serving, çıkarım yapmak için yüksek seviyeli API'ler sağlar. Bu API'leri etkinleştirmek için modeller, giriş ve çıkış için kullanılacak tam TensorFlow düğümlerini tanımlayan bir veya daha fazla SignatureDef içermelidir. TensorFlow Serving'in her API için desteklediği belirli SignatureDef örnekleri için aşağıya bakın.

TensorFlow Sunmasının her TensorInfo'nun (SignatureDef'in giriş ve çıkışlarında) anahtarlarına ve ayrıca SignatureDef'in method_name'sine bağlı olduğunu unutmayın. TensorInfo'nun gerçek içeriği grafiğinize özeldir.

Sınıflandırma İmzaDef

Sınıflandırma SignatureDefs, TensorFlow Serving'in Sınıflandırma API'sine yapılandırılmış çağrıları destekler. Bir olması gerektiğini bu reçete inputs : iki isteğe bağlı çıkış Tensörleri vardır tensör ve bu classes ve scores mevcut olmalıdır, en az bir tanesi.

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"
  }
}

İmzayı Tahmin EtDef

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 izin verir. Aşağıdaki örnek için imza my_prediction_signature tek bir mantıksal giriş tensör sahiptir images grafiğinizdeki gerçek Tensörün eşlenir x:0 .

Predict SignatureDefs, modeller arasında taşınabilirlik sağlar. Muhtemelen farklı altta yatan tensör adlarla, değişik SavedModels içinde takas olabilir Bu araçlar (örn yerine x:0 belki bir tensör ile yeni bir alternatif modeli var z:0 müşterileriniz çevrimiçi sürekli eski ve yeni sorgulama kalabilirler ederken,) istemci tarafı değişiklikleri olmadan bu modelin 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. Diyelim aşağıda çıkış tuşuna ek olarak söylemek scores , ayrıca ayıklama veya başka amaçlarla bir havuzlama tabakasını alıp istedi. Bu durumda, sadece böyle bir anahtarla ek Tensörü eklersiniz pool ve uygun değerle.

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

Regresyon SignatureDefs, TensorFlow Serving'in Regresyon API'sine yapılandırılmış çağrıları destekler. Tam olarak bir olması gerektiğini bu reçete inputs tensör ve bir outputs tensör.

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"
  }
}