{“错误”:“服务签名名称:在签名定义中找不到“serving_default””}

问题描述 投票:0回答:3

我使用GCP(谷歌云平台)来训练我的模型,我可以导出导出的模型。我使用了该模型并使用了服务 1.8 CPU 的 Tensorflow 的本地 docker 映像,我得到以下结果作为 REST 后调用的输出 { “错误”:“服务签名名称:\“serving_default\”在签名定义中找不到” }

model google-cloud-platform predict tensorflow-serving
3个回答
3
投票

使用

SavedModelCLI
命令查看模型的 SignatureDefs,如下所示:

saved_model_cli show --dir /usr/local/google/home/abc/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_three/00000123

它应该显示如下所示的内容:

signature_def['Classify']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['inputs'] tensor_info:
        dtype: DT_STRING
        shape: unknown_rank
        name: tf_example:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['outputs'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 1)
        name: y2:0
  Method name is: tensorflow/serving/regress

signature_def['serving_default']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['x'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 1)
        name: x:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['y'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 1)
        name: y:0
  Method name is: tensorflow/serving/predict

检查您是否可以在上述签名定义中看到名为

serving_default
的签名。

根据我的理解,最有可能的是该签名丢失,因此导致错误。


0
投票

您如何导出模型? 看来您已经识别了自定义签名,但没有识别默认值。只需将“serving_default”更改为您的签名即可。


0
投票

您可以在部署之前将serving_default签名添加到导出的模型中

@tf.function(input_signature=[tf.TensorSpec([None], tf.string)])
def serving_fn(bytes_inputs):
    # Decode base64 image
    decoded_images = tf.map_fn(
        tf.io.decode_base64,
        bytes_inputs,
        dtype=tf.string
    )
    # Convert to float32 tensor
    images = tf.map_fn(
        tf.io.decode_image,
        decoded_images,
        dtype=tf.uint8
    )
    images = tf.cast(images, tf.float32)
    
    # Make prediction
    predictions = model(images)
    return predictions

# Save model with serving signature
tf.saved_model.save(model, 
                   export_dir,
                   signatures={
                       "serving_default": serving_fn
                   })

或者,如果您使用的是 vertex AI,则可以使用 https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.endpoints/rawPredict

© www.soinside.com 2019 - 2024. All rights reserved.