Todos los productos
Search
Centro de documentos

Platform For AI:Deploy services with TensorFlow Serving images

Última actualización: Sep 09, 2026

TensorFlow Serving es un motor de inference para modelos de aprendizaje profundo. Este motor permite desplegar modelos en formato TensorFlow SavedModel como servicios en línea y admite funciones como el intercambio en caliente y la gestión de versiones. Con la función de despliegue basado en imágenes de Elastic Algorithm Service (EAS), usted puede iniciar rápidamente servicios de inference de TensorFlow Serving.

Requisitos previos

Archivos del modelo

Para desplegar un servicio mediante una imagen de TensorFlow Serving, debe almacenar los archivos del modelo en OSS. La estructura de directorios debe cumplir con los siguientes requisitos:

  • Directorios de versión del modelo: cada modelo debe tener como mínimo un directorio de versión. Los nombres de estos directorios deben ser números enteros que funcionan como números de versión. Un número mayor indica una versión más reciente.

  • Archivos del modelo: cada directorio de versión debe contener los archivos exportados del modelo en formato SavedModel. El servicio carga automáticamente el modelo desde el directorio con el número de versión más alto.

Procedimiento:

  1. Cree un directorio en un bucket de OSS para almacenar sus modelos; por ejemplo, oss://examplebucket/models/tf_serving/. Para obtener más información, consulte Manage directories.

  2. Cargue los archivos del modelo en el directorio que creó en el paso anterior. Para este artículo, puede descargar y usar los archivos de modelo de TensorFlow Serving de ejemplo. La estructura de directorios debe tener el siguiente formato:

    tf_serving 
    ├── modelA
    │   └── 1
    │       ├── saved_model.pb
    │       └── variables
    │           ├── variables.data-00000-of-00001
    │           └── variables.index
    │
    ├── modelB
    │   ├── 1
    │   │   └── ...
    │   └── 2
    │       └── ...
    │
    └── modelC
        ├── 1
        │   └── ...
        ├── 2
        │   └── ...
        └── 3
            └── ...

Archivo de configuración del modelo

Un archivo de configuración le permite ejecutar varios modelos dentro de un solo servicio. Si solo necesita desplegar un servicio con un único modelo, omita esta sección.

Cree un archivo de configuración como se describe a continuación y cárguelo en OSS. Los archivos de ejemplo de la sección Archivos del modelo incluyen un archivo de configuración llamado model_config.pbtxt, el cual puede usar directamente o modificar según sus necesidades. En este ejemplo, el archivo de configuración del modelo se carga en el directorio oss://examplebucket/models/tf_serving/.

El siguiente código muestra un ejemplo del archivo model_config.pbtxt:

model_config_list {
  config {
    name: 'modelA'
    base_path: '/models/modelA/'
    model_platform: 'tensorflow'
    model_version_policy{
        all: {}
    }
  }
  config {
    name: 'modelB'
    base_path: '/models/modelB/'
    model_platform: 'tensorflow'
    model_version_policy{
        specific {
            versions: 1
            versions: 2
        }
    }
    version_labels {
      	key: 'stable'
      	value: 1
    }
    version_labels {
      	key: 'canary'
      	value: 2
    }
  }
  config {
    name: 'modelC'
    base_path: '/models/modelC/'
    model_platform: 'tensorflow'
    model_version_policy{
        latest {
            num_versions: 2
        }
    }
  }
}

La siguiente tabla describe los parámetros clave.

Parámetro

Obligatorio

Descripción

name

No

Nombre del modelo. Se recomienda establecer este parámetro. Si no proporciona un nombre, no podrá llamar al servicio de inference.

base_path

Sí

Ruta al directorio de almacenamiento del modelo en la instancia. El servicio la utiliza para leer los archivos del modelo durante el despliegue. Por ejemplo, si el directorio de montaje es /models y el directorio del modelo que se va a cargar es /models/modelA, establezca este parámetro en /models/modelA.

model_version_policy

No

Política para cargar las versiones del modelo.

  • Si no configura este parámetro, el servicio carga de forma predeterminada la versión más reciente del modelo.

  • all: {}: carga todas las versiones del modelo. En el ejemplo, se cargan todas las versiones de modelA.

  • latest{}: en el ejemplo, modelC se configura con num_versions: 2, lo que carga las dos versiones más recientes: 2 y 3.

  • specific: {}: carga las versiones especificadas. En el ejemplo, se cargan las versiones 1 y 2 de modelB.

version_labels

No

Configure etiquetas personalizadas para una versión del modelo. Si no configura version_labels, solo podrá distinguir las versiones del modelo por sus números de versión. La ruta de solicitud es: /v1/models/<model name>/versions/<version number>:predict.

Si establece version_labels, puede solicitar /v1/models/<model name>/labels/<version label>:predict para dirigirse a un número de versión específico mediante su etiqueta.

Nota

De forma predeterminada, las etiquetas solo se pueden asignar a versiones del modelo que ya se hayan cargado correctamente e iniciado como servicios. Para preasignar etiquetas a versiones que aún no se han cargado, debe configurar el parámetro de inicio --allow_version_labels_for_unavailable_models=true en Command to Run. El despliegue basado en escenarios no admite configurar Command to Run; seleccione el despliegue personalizado en su lugar.

Desplegar el servicio

Puede desplegar una imagen de TensorFlow Serving de las siguientes maneras:

  • Despliegue basado en escenarios: ideal para escenarios de despliegue básicos. Le permite desplegar un servicio de inference de TensorFlow Serving con solo configurar unos pocos parámetros.

  • Despliegue personalizado: le ofrece flexibilidad para ajustar más opciones de configuración, como modificar el puerto o configurar el intervalo de sondeo del archivo del modelo.

Importante

Los servicios de inference de TensorFlow Serving admiten los puertos 8501 y 8500.

  • 8501: admite solicitudes HTTP. En este puerto se inicia un servicio HTTP o REST.

  • 8500: admite solicitudes gRPC. En este puerto se inicia un servicio gRPC.

El método de despliegue basado en escenarios usa el puerto 8501 de forma predeterminada y no se puede cambiar. Para usar el puerto 8500, debe utilizar el método de despliegue personalizado.

Basado en escenarios

Procedimiento:

  1. Inicie sesión en la PAI console. Seleccione una región en la parte superior de la página. Luego, seleccione el espacio de trabajo deseado y haga clic en Enter Elastic Algorithm Service (EAS).

  2. En la página Elastic Algorithm Service (EAS), haga clic en Deploy Service. En la sección Scenario-based Model Deployment, haga clic en Tensorflow Serving Deployment.

  3. En la página Tensorflow Serving Deployment, configure los parámetros. La siguiente tabla describe los parámetros clave. Para obtener información sobre otros parámetros, consulte custom deployment.

    Parámetro

    Descripción

    Deployment Method

    Se admiten los siguientes dos métodos de despliegue:

    • Standard Model Deployment: se utiliza para desplegar un servicio con un solo modelo.

    • Configuration File Deployment: se utiliza para desplegar un servicio con varios modelos.

    Model Settings

    Si selecciona Standard Model Deployment en Deployment Method, debe configurar la ruta de OSS para el archivo del modelo.

    Si selecciona Configuration File Deployment en Deployment Method, debe configurar los siguientes parámetros:

    • OSS: seleccione la ruta de OSS donde se encuentran los archivos del modelo.

    • Mount Path: ruta de la instancia de servicio donde se montan los archivos del modelo.

    • Configuration File: seleccione la ruta de OSS donde se encuentra el archivo de configuración del modelo.

    La siguiente tabla muestra ejemplos de configuración.

    Parámetro

    Ejemplo con un solo modelo

    Ejemplo con varios modelos

    Service Name

    modela_scene

    multi_scene

    Deployment Method

    Seleccione Standard Model Deployment.

    Seleccione Configuration File Deployment.

    Model Settings

    OSS: oss://examplebucket/models/tf_serving/modelA/.

    • OSS: oss://examplebucket/models/tf_serving/.

    • Mount Path: /models

    • Configuration File: oss://examplebucket/models/tf_serving/model_config.pbtxt

  4. Una vez configurados los parámetros, haga clic en Deploy.

Personalizado

Procedimiento:

  1. Inicie sesión en la PAI console. Seleccione una región en la parte superior de la página. Luego, seleccione el espacio de trabajo deseado y haga clic en Enter Elastic Algorithm Service (EAS).

  2. Haga clic en Deploy Service. En la sección Inference Service, haga clic en Custom Deployment dentro de la sección Custom Model Deployment.

  3. En la página Custom Deployment, configure los parámetros. La siguiente tabla describe los parámetros clave. Para obtener información sobre otros parámetros, consulte custom deployment.

    Parámetro

    Descripción

    Image Configuration

    En la lista Alibaba Cloud Image, seleccione tensorflow-serving y la versión de imagen correspondiente. Se recomienda seleccionar la versión más reciente.

    Nota

    Si el servicio requiere una GPU, la versión de la imagen debe terminar con -gpu; por ejemplo, x.xx.x-gpu.

    Model Settings

    Existen diversas formas de configurar los archivos del modelo. Este ejemplo utiliza el tipo OSS.

    • Uri: seleccione la ruta de OSS para los archivos del modelo.

    • Mount Path: ruta de la instancia de servicio donde se montan los archivos del modelo.

    Command to Run

    Cuando selecciona la imagen tensorflow-serving, se carga automáticamente el comando /usr/bin/tf_serving_entrypoint.sh. A continuación se describen los demás parámetros de inicio de tensorflow-serving que debe configurar.

    Parámetros de inicio para el despliegue de un solo modelo:

    • --model_name: nombre del modelo que se utiliza en la URL de las solicitudes al servicio. Si no lo especifica, el nombre predeterminado es 'model'.

    • --model_base_path: especifica la ruta del directorio de almacenamiento del modelo en la instancia. Si no configura este parámetro, la ruta predeterminada es /models/model.

    Parámetros de inicio para el despliegue de varios modelos:

    • --model_config_file: obligatorio. Especifica el archivo de configuración del modelo.

    • --model_config_file_poll_wait_seconds: opcional. Si desea modificar el contenido del archivo de configuración del modelo después de que se inicie el servicio, configure un intervalo de sondeo en segundos. El servicio leerá el contenido del archivo con esa periodicidad. Por ejemplo, --model_config_file_poll_wait_seconds=30 significa que el servicio lee el archivo de configuración cada 30 segundos.

      Nota

      Cuando el servicio de inference lee un nuevo archivo de configuración del modelo, solo procesa el contenido de ese nuevo archivo. Por ejemplo, si el archivo antiguo contenía el modelo A y el nuevo elimina el modelo A pero añade la configuración del modelo B, el servicio descarga el modelo A y carga el modelo B.

    • --allow_version_labels_for_unavailable_models: opcional. El valor predeterminado es false. Si desea asignar etiquetas por adelantado a versiones del modelo que aún no están disponibles, establezca este parámetro en true. Por ejemplo, --allow_version_labels_for_unavailable_models=true.

    La siguiente tabla muestra ejemplos de configuración.

    Parámetro

    Ejemplo con un solo modelo

    Ejemplo con varios modelos

    Deployment Method

    Seleccione Image-based Deployment.

    Image Configuration

    Seleccione Alibaba Cloud Image: tensorflow-serving > tensorflow-serving:2.14.1.

    Model Settings

    Establezca el tipo de modelo en OSS.

    • Uri: oss://examplebucket/models/tf_serving/.

    • Mount Path: establézcalo en /models.

    Command to Run

    /usr/bin/tf_serving_entrypoint.sh --model_name=modelA --model_base_path=/models/modelA

    /usr/bin/tf_serving_entrypoint.sh --model_config_file=/models/model_config.pbtxt --model_config_file_poll_wait_seconds=30 --allow_version_labels_for_unavailable_models=true

    De forma predeterminada, el servicio escucha en el puerto 8501 las solicitudes HTTP/REST. Para habilitar las solicitudes gRPC, siga estos pasos:

    • En la sección Environment Information, cambie Port Number a 8500.

    • En la sección Environment Information, active el interruptor Enable gRPC.

    • En la sección Service Configurations, añada la siguiente configuración:

      "networking": {
          "path": "/"
      }
  4. Haga clic en Deploy.

Enviar solicitudes al servicio

Según el número de puerto que haya configurado durante el despliegue, el servicio admite los protocolos de solicitud HTTP y gRPC. Los siguientes ejemplos utilizan modelA.

  1. Prepare los datos de prueba.

    modelA es un modelo de clasificación de imágenes entrenado con el conjunto de datos Fashion-MNIST, compuesto por imágenes en escala de grises de 28x28. El modelo devuelve la probabilidad de que una muestra pertenezca a una de 10 clases. Para las pruebas, se utiliza [[[[1.0]] * 28] * 28] como dato de prueba en las solicitudes al servicio modelA.

  2. Ejemplos de solicitudes

    Solicitudes HTTP

    Cuando el número de puerto se configura en 8501, el servicio admite solicitudes HTTP. La siguiente tabla resume las rutas de solicitud HTTP para los despliegues de uno y de varios modelos.

    Un solo modelo

    Varios modelos

    Formato de ruta: <service_url>/v1/models/<model_name>:predict

    Donde:

    • En el despliegue basado en escenarios, <model_name> no se puede personalizar y su valor predeterminado es model.

    • En el despliegue personalizado, <model_name> es el nombre del modelo configurado en el campo Command to Run. Si no lo configura, el valor predeterminado es model.

    Las solicitudes se pueden enviar con o sin especificar una versión del modelo. Los formatos de ruta son los siguientes:

    • Sin especificar una versión (se carga la versión más reciente de forma predeterminada):

      <service_url>/v1/models/<model_name>:predict

    • Al especificar una versión del modelo:

      /v1/models//versions/:predict

    • Si se establece version_labels:

      <service_url>/v1/models/<model_name>/labels/<version label>:predict

    Aquí, <model_name> es el nombre del modelo configurado en el archivo de configuración del modelo.

    En la ruta, <service_url> es el endpoint del servicio. Puede encontrarlo si hace clic en Invocation Information en la columna Service Type del servicio deseado, dentro de la página Elastic Algorithm Service (EAS). Cuando utiliza la función de depuración en línea de la consola, esta parte de la ruta se completa automáticamente.

    Para un despliegue basado en escenarios de un solo modelo, como modelA, la ruta de solicitud HTTP es: <service_url>/v1/models/model:predict.

    En las siguientes secciones se detalla cómo enviar solicitudes al servicio mediante la función de depuración en línea de la consola y con código Python.

    Depuración en línea

    Una vez desplegado el servicio, haga clic en Online Debugging en la columna Actions del servicio. En la sección Request Parameter Online Tuning, <service_url> ya está completo. Añada la ruta /v1/models/model:predict a la URL y configure los datos de solicitud del servicio en Body:

    {"signature_name": "serving_default", "instances": [[[[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0]], [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0],-1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0],-1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0],-1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.e-01]]]}

    Una vez configurados los parámetros, haga clic en Send Request. El resultado es similar al siguiente.

    Status Code: 200
    Connection: Keep-Alive
    Content-Length: 158
    Content-Type: application/json
    Date: Fri, 08 Nov 2024 02:28:08 GMT
    Body: {
        "predictions": [[-9.40927601, -5.41267443, -15.9157038, -15.7119455, -16.194952, -42.5621414, -7.23207045, -43.1042442, 4.25585461, -31.3991375]
        ]
    }

    Enviar una solicitud HTTP con código Python

    A continuación se muestra un ejemplo de código Python:

    from urllib import request
    import json
    # Replace <service_url> and <test-token> with your service endpoint and token.
    # To obtain them, click Invocation Information for your inference service and then go to the Public Endpoint Invocation tab.
    service_url = '<service_url>'
    token = '<test-token>'
    # For a scenario-specific single-model deployment, set this to "model". For other cases, refer to the path description table above.
    model_name = "model"
    url = "{}/v1/models/{}:predict".format(service_url, model_name)
    # Create an HTTP request.
    req = request.Request(url, method="POST")
    req.add_header('authorization', token)
    data = {
        'signature_name': 'serving_default',
        'instances': [[[[1.0]] * 28] * 28]
    }
    # Send the request.
    response = request.urlopen(req, data=json.dumps(data).encode('utf-8')).read()
    # Check the response.
    response = json.loads(response)
    print(response)

    Solicitudes gRPC

    Después de configurar el número de puerto en 8500 y añadir las configuraciones de gRPC, el servicio admite el envío de solicitudes gRPC. A continuación se muestra un ejemplo de código Python:

    import grpc
    import tensorflow as tf
    from tensorflow_serving.apis import predict_pb2
    from tensorflow_serving.apis import prediction_service_pb2_grpc
    from tensorflow.core.framework import tensor_shape_pb2
    # The service endpoint. For the format, see the description of the host parameter below.
    host = "tf-serving-multi-grpc-test.166233998075****.cn-hangzhou.pai-eas.aliyuncs.com:80"
    # Replace <test-token> with the service token. You can view the token on the Invocation Information page.
    token = "<test-token>"
    # The model name. See the description of the name parameter below.
    name = "<model_name>"
    signature_name = "serving_default"
    # The model version number. You can send requests to only one model version at a time.
    version = "<version_num>"
    # Create a gRPC request.
    request = predict_pb2.PredictRequest()
    request.model_spec.name = name
    request.model_spec.signature_name = signature_name
    request.model_spec.version.value = version
    request.inputs["keras_tensor"].CopyFrom(tf.make_tensor_proto([[[[1.0]] * 28] * 28]))
    # Request the service.
    channel = grpc.insecure_channel(host)
    stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)
    metadata = (("authorization", token),)
    response, _ = stub.Predict.with_call(request, metadata=metadata)
    print(response)

    Los parámetros clave se describen a continuación:

    Parámetro

    Descripción

    host

    Establezca este parámetro en el endpoint del servicio. Omita http:// del endpoint y añada :80 al final. En la página Elastic Algorithm Service (EAS), haga clic en Invocation Information en la columna Service Type del servicio correspondiente para consultar el endpoint.

    name

    • Para solicitudes gRPC a un solo modelo:

      • Despliegue basado en escenarios: establézcalo en model.

      • Despliegue personalizado: establézcalo en el nombre del modelo configurado en Command to Run. Si no configura ningún nombre, el valor predeterminado es model.

    • Para solicitudes gRPC a varios modelos:

      Establézcalo en el nombre del modelo configurado en el archivo de configuración del modelo.

    version

    Establézcalo en el número de versión del modelo. Solo puede enviar solicitudes a una versión del modelo a la vez.

    metadata

    Establézcalo en el token del servicio. Puede consultar el token en la página Invocation Information.

Documentos relacionados