Cómo obtener predicciones en línea

La predicción en línea de AI Platform es un servicio optimizado para ejecutar tus datos mediante modelos alojados con la menor latencia posible. Envía lotes pequeños de datos al servicio y tus predicciones se mostrarán en la respuesta.

Antes de comenzar

Para solicitar predicciones, primero debes realizar las siguientes acciones:

Regiones

La predicción en línea de AI Platform se encuentra actualmente disponible en las siguientes regiones:

  • us-central1
  • us-east1
  • us-east4
  • asia-northeast1
  • europe-west1

A fin de comprender totalmente las regiones disponibles para los servicios de entrenamiento y predicción de AI Platform, consulta la guía de regiones.

Cómo crear modelos y versiones

Toma las siguientes decisiones importantes sobre cómo ejecutar la predicción en línea cuando crees el modelo y los recursos de la versión:

Recurso creado Decisión especificada en la creación de recursos
Model Región en la que se ejecutan las predicciones
Model Habilita el registro de predicciones en línea
Version Versión del entorno de ejecución que se usa
Version La versión de Python que se usa
Version Tipo de máquina que se usa para la predicción en línea

No puedes actualizar los parámetros de configuración enumerados anteriormente después de la creación inicial del modelo o la versión. Si tienes que cambiar estos parámetros de configuración, crea un modelo nuevo o recurso de la versión con la configuración nueva y vuelve a implementar tu modelo.

Tipos de máquinas disponibles para la predicción en línea

La predicción en línea admite actualmente CPU de un núcleo y de cuatro núcleos. Si te interesa unirte a los programas Alfa para otro hardware, comunícate con el equipo de comentarios de AI Platform.

Nombre Núcleos RAM (GB)
mls1-c1-m2 (predeterminado) 1 2
mls1-c4-m2 (Beta) 4 2

Para utilizar CPU de cuatro núcleos en la predicción en línea, especifica el tipo de máquina mls1-c4-m2 cuando creas tu versión del modelo de AI Platform.

gcloud

Para especificar la CPU de cuatro núcleos, utiliza el componente de gcloud beta y agrega la siguiente marca opcional a tu comando: --machine-type "mls1-c4-m2". Por ejemplo:

  gcloud components install beta

  gcloud beta ai-platform versions create "[YOUR_VERSION_NAME]" \
      --model "[YOUR_MODEL_NAME]" \
      --origin "[YOUR_GCS_PATH_TO_MODEL_DIRECTORY]" \
      --runtime-version "1.13" \
      --python-version "3.5" \
      --machine-type "mls1-c4-m2"

Python

En este ejemplo, se utiliza la biblioteca cliente de las API de Google para Python. Consulta las instrucciones completas sobre cómo crear una versión del modelo.

Para especificar la CPU de cuatro núcleos, agrega la siguiente entrada opcional a la requestDict que pasas a la solicitud de creación de la versión: 'machineType': 'mls1-c4-m2'. Por ejemplo:

   requestDict = {'name': '[YOUR_VERSION_NAME]',
      'description': '[YOUR_VERSION_DESCRIPTION]',
      'deploymentUri': '[YOUR_GCS_PATH_TO_MODEL_DIRECTORY]',
      'runtimeVersion': '1.13',
      'pythonVersion': '3.5',
      'machineType': 'mls1-c4-m2'}

Consulta la información sobre los precios de estos tipos de máquina.

Solicita registros para solicitudes de predicción en línea

El servicio de predicción de AI Platform no proporciona información registrada sobre las solicitudes según la configuración predeterminada, debido a que los registros generan un costo. La predicción en línea a una frecuencia alta de consultas por segundo (QPS) puede producir una cantidad substancial de registros, que están sujetos a la política de precios de Stackdriver.

A fin de aceptar el registro de predicciones en línea, puedes configurar tu modelo para generar registros cuando crees el recurso del modelo. Hay dos tipos de registro que puedes habilitar de forma independiente:

  • Registro de acceso, que contiene información como la marca de tiempo y la latencia para cada solicitud.

  • Registro de transmisión, que contiene las transmisiones stderr y stdout de tus nodos de predicción, y puede ser útil para la depuración. Este tipo de registro está en versión Beta.

gcloud

Para habilitar el registro de acceso, incluye la marca --enable-logging cuando crees tu modelo con el comando gcloud ai-platform models create. Por ejemplo:

gcloud ai-platform models create model_name \
  --regions us-central1 \
  --enable-logging

Para habilitar el registro de transmisión (Beta), utiliza el componente gcloud beta y, además, incluye la marca --enable-console-logging. Por ejemplo:

gcloud components install beta

gcloud beta ai-platform models create model_name \
  --regions us-central1 \
  --enable-console-logging

API de REST

Para habilitar el registro de acceso, configura onlinePredictionLogging en True en el recurso Model cuando creas tu modelo con projects.models.create.

Para habilitar el registro de transmisión (Beta), configura el campo en onlinePredictionConsoleLogging en True en el recurso Model.

Cómo dar formato a las entradas para la predicción en línea

Cómo dar formato de listas a las instancias

El formato básico para la predicción en línea es una lista de listas sencillas que representan una instancia de datos.

Si tu versión del modelo es una rutina de predicción personalizada (Beta), puedes proporcionar entradas de predicción con el tipo de datos JSON que tu Predictor espera.

Asegúrate de que la dimensión de tus instancias de entrada coincida con lo que tu modelo espera. Por ejemplo, si tu modelo requiere cuatro características, la longitud de cada instancia de entrada debe ser 4.

Pasa las instancias de entrada para la predicción en línea como el cuerpo del mensaje de la llamada projects.predict. Obtén más información sobre los requisitos de formato del cuerpo de la solicitud.

gcloud

  1. Asegúrate de que tu archivo de entrada sea un archivo de texto con cada instancia en forma de objeto JSON, una instancia por línea.

    [1, 2, 3, 4]
    [5, 6, 7, 8]
    

API de REST

  1. Haz que cada instancia sea un artículo en una lista y nombra instances al miembro de la lista.

    {
      "instances": [
        [1, 2, 3, 4],
        [5, 6, 7, 8]
      ]
    }
    

Solicita predicciones

Envía tus instancias de datos de entrada en una solicitud de predicción a fin de solicitar una predicción en línea. Para dar formato al cuerpo de la solicitud y la respuesta, consulta los detalles de la solicitud de predicción.

Si no especificas una versión del modelo, se usa la versión predeterminada del modelo en tu solicitud de predicción.

gcloud

  1. Crea variables de entorno para conservar los parámetros, incluido un valor de la versión si decides especificar una versión de modelo en particular:

    MODEL_NAME="[YOUR-MODEL-NAME]"
    INPUT_DATA_FILE="instances.json"
    VERSION_NAME="[YOUR-VERSION-NAME]"
    
  2. Usa gcloud ai-platform predict para enviar instancias a un modelo implementado. Ten en cuenta que --version es opcional.

    gcloud ai-platform predict --model $MODEL_NAME  \
                       --version $VERSION_NAME \
                       --json-instances $INPUT_DATA_FILE
    
  3. La herramienta gcloud analiza la respuesta y después imprime las predicciones en tu terminal en un formato legible. Puedes especificar un formato de salida diferente, como JSON o CSV, si usas la marca --format con tu comando predict. Ver formatos de salida disponibles.

Python

Puedes usar la biblioteca cliente de las API de Google para Python a fin de llamar a la API de entrenamiento y predicción de AI Platform sin construir solicitudes HTTP de forma manual. Antes de ejecutar la siguiente muestra de código, debes configurar la autenticación.

import googleapiclient.discovery

def predict_json(project, model, instances, version=None):
    """Send json data to a deployed model for prediction.
    Args:
        project (str): project where the AI Platform Model is deployed.
        model (str): model name.
        instances ([[float]]): List of input instances, where each input
           instance is a list of floats.
        version: str, version of the model to target.
    Returns:
        Mapping[str: any]: dictionary of prediction results defined by the
            model.
    """
    # Create the AI Platform service object.
    # To authenticate set the environment variable
    # GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
    service = googleapiclient.discovery.build('ml', 'v1')
    name = 'projects/{}/models/{}'.format(project, model)

    if version is not None:
        name += '/versions/{}'.format(version)

    response = service.projects().predict(
        name=name,
        body={'instances': instances}
    ).execute()

    if 'error' in response:
        raise RuntimeError(response['error'])

    return response['predictions']

Pasos siguientes

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

AI Platform para scikit-learn y XGBoost