La predicción en línea de AI Platform Prediction es un servicio optimizado para ejecutar los 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.
Obtén más información sobre la predicción en línea frente a la predicción por lotes o consulta una descripción general de los conceptos de predicción.
Antes de comenzar
Para solicitar predicciones, primero debes realizar las siguientes acciones:
Exporta tu modelo entrenado como uno o más artefactos de modelo que se pueden implementar en AI Platform Prediction.
Implementa tu modelo entrenado en AI Platform Prediction; para ello, crea un recurso del modelo y una versión.
Regiones
La predicción en línea está disponible en ciertas regiones. Además, hay diferentes tipos de máquina disponibles en cada región. Para conocer la disponibilidad de la predicción en línea en cada región, consulta la guía de regiones.
Crea 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 |
Versión | La versión de Python que se usa |
Versión | 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
Cuando creas una versión, puedes elegir qué tipo de máquina virtual usará AI Platform Prediction para los nodos de predicción en línea. Obtén más información sobre los tipos de máquinas.
Solicita registros para solicitudes de predicción en línea
El servicio de predicción de AI Platform Prediction no proporciona información registrada sobre las solicitudes de forma predeterminada, ya que los registros generan costos. La predicción en línea a una tasa alta de consultas por segundo (QPS) puede generar una cantidad considerable de registros, que están sujetos a los precios de Cloud Logging o los precios de BigQuery.
Si deseas habilitar el registro de predicción en línea, debes configurarlo cuando creas un recurso modelo o cuando creas un recurso de versión modelo, según el tipo de registro que desees permitir. Existen tres tipos de registro, que puedes habilitar de forma independiente:
Registro de acceso, que registra información como la marca de tiempo y la latencia de las solicitudes a Cloud Logging.
Puedes habilitar el registro de acceso cuando creas un recurso de modelo.
Registro de la consola, que registra las transmisiones
stderr
ystdout
de tus nodos de predicción en Cloud Logging y puede ser útil para la depuración. Este tipo de registro se encuentra en vista previa para los tipos de máquinas (N1) de Compute Engine y en fase de disponibilidad general para los tipos de máquinas heredadas (MLS1).Puedes habilitar el registro de la consola cuando creas un recurso del modelo.
Registro de solicitud-respuesta, que registra una muestra de solicitudes de predicción en línea y respuestas a una tabla de BigQuery. Este tipo de registro está en versión Beta.
Para habilitar el registro de solicitudes y respuestas, crea un recurso de versión de modelo y, luego, actualiza esa versión.
gcloud
Para habilitar el registro de acceso, incluye la marca --enable-logging
cuando crees tu modelo con el comando de gcloud ai-platform models create
. Por ejemplo:
gcloud ai-platform models create MODEL_NAME \
--region=us-central1 \
--enable-logging
Para habilitar el registro de la consola (vista previa), usa el componente gcloud beta
y agrega la marca --enable-console-logging
. Por ejemplo:
gcloud components install beta
gcloud beta ai-platform models create MODEL_NAME \
--region=us-central1 \
--enable-console-logging
En este momento, no puedes habilitar el registro de solicitudes y respuestas (beta) con la CLI de gcloud. Solo puedes habilitar este tipo de registro cuando envías una solicitud projects.models.versions.patch
a la API de REST.
API de REST
Para habilitar el registro de acceso, configura onlinePredictionLogging
en True
en el recurso Modelo cuando creas tu modelo con projects.models.create
.
Para habilitar el registro de la consola (beta), establece el campo onlinePredictionConsoleLogging
en True
en el recurso Modelo.
Registro de solicitud-respuesta
A diferencia de los otros tipos de registros, no puedes habilitar el registro de solicitud-respuesta cuando creas un modelo. En cambio, puedes habilitarlo mediante el método projects.models.versions.patch
en una versión de modelo existente. (Primero debes crear la versión del modelo con la consola de Google Cloud, gcloud CLI o la API de REST).
Para habilitar el registro de solicitud-respuesta, completa el campo requestLoggingConfig
del recurso Versión con las siguientes entradas:
samplingPercentage
: Un número entre 0 y 1 que define la fracción de solicitudes que se registrará. Por ejemplo, establece este valor en1
para registrar todas las solicitudes o en0.1
a fin de registrar el 10% de las solicitudes.bigqueryTableName
: Es el nombre completamente calificado (PROJECT_ID.DATASET_NAME.TABLE_NAME) de la tabla de BigQuery en la que deseas registrar solicitudes y respuestas. La tabla ya debe existir con el siguiente esquema:Nombre del campo Tipo Modo model STRING OBLIGATORIO model_version STRING OBLIGATORIO time TIMESTAMP OBLIGATORIO raw_data STRING OBLIGATORIO raw_prediction STRING ACEPTA VALOR NULL groundtruth STRING ACEPTA VALOR NULL Aprende a crear una tabla de BigQuery.
Inspecciona modelos con la Herramienta What-If
Puedes usar la Herramienta What-If (WIT) en los entornos de notebooks para inspeccionar los modelos de AI Platform Prediction mediante un panel interactivo. La Herramienta What-If se integra a TensorBoard, JupyterHub y notebooks de Jupyter y de Colab. También está preinstalada en instancias de TensorFlow de Notebooks administradas por el usuario de Vertex AI Workbench.
Aprende a usar la Herramienta What-If con AI Platform.
Dale formato a tu entrada para la predicción en línea
Dales formato a tus instancias como strings JSON
El formato básico de la predicción en línea es una lista de instancias de datos. Pueden ser listas sin formato de valores o miembros de un objeto JSON, según cómo configuraste las entradas en la aplicación de entrenamiento. Los modelos de TensorFlow y las rutinas de predicción personalizadas pueden aceptar entradas más complejas, mientras que la mayoría de los modelos de scikit-learn y XGBoost esperan una lista de números como entrada.
En este ejemplo, se muestra un tensor de entrada y una clave de instancia para un modelo de TensorFlow:
{"values": [1, 2, 3, 4], "key": 1}
La composición de la string JSON puede ser compleja, siempre y cuando siga estas reglas:
El nivel superior de los datos de instancia debe ser un objeto JSON: un diccionario de pares clave-valor.
Los valores individuales en un objeto de instancia pueden ser strings, números o listas. No puedes incorporar objetos JSON.
Las listas deben contener solo elementos del mismo tipo (incluidas otras listas). No puedes mezclar valores numéricos y strings.
Pasa 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
Puedes dar formato a tu entrada de dos maneras diferentes, según cómo planees enviar tu solicitud de predicción. Te recomendamos que uses la marca --json-request
del comando gcloud ai-platform predict
. Como alternativa, puedes usar la marca --json-instances
con datos JSON delimitados por saltos de línea.
Para la solicitud JSON
Convierte cada instancia en un array JSON y proporciona el array como el campo instances
de un archivo JSON. Por ejemplo:
instances.json
{"instances": [
{"values": [1, 2, 3, 4], "key": 1},
{"values": [5, 6, 7, 8], "key": 2}
]}
Para las instancias JSON
Asegúrate de que tu archivo de entrada sea un archivo JSON delimitado por saltos de línea, con cada instancia en forma de objeto JSON, una instancia por línea. Por ejemplo:
instances.jsonl
{"values": [1, 2, 3, 4], "key": 1}
{"values": [5, 6, 7, 8], "key": 2}
API de REST
Convierte cada instancia en un array JSON y proporciona el array como el campo instances
de un objeto JSON. Por ejemplo:
{"instances": [
{"values": [1, 2, 3, 4], "key": 1},
{"values": [5, 6, 7, 8], "key": 2}
]}
Datos binarios en la entrada de predicción
No es posible darles a los datos binarios el formato de strings codificadas en UTF-8 que admite JSON. Si tienes datos binarios en tus entradas, debes usar la codificación base64 para representarlos. Se requiere el siguiente formato especial:
La string codificada debe tener el formato de un objeto JSON con una sola clave llamada
b64
. En el siguiente ejemplo de Python 2.7, se codifica un búfer de datos JPEG sin procesar mediante la biblioteca en base64 para crear una instancia:{"image_bytes": {"b64": base64.b64encode(jpeg_data)}}
En Python 3, la codificación en base64 genera una secuencia de bytes. Debes convertir esto en una string para que pueda serializarse con JSON.
{'image_bytes': {'b64': base64.b64encode(jpeg_data).decode()}}
En tu código de modelo TensorFlow, debes asignar los alias de los tensores de entrada y salida binarios de modo que finalicen con “_bytes”.
Solicita predicciones
Envía tus instancias de datos de entrada como una string JSON en una solicitud de predict para 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 la solicitud de predicción.
gcloud
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]"
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-request=$INPUT_DATA_FILE \ --region=REGION
Reemplaza REGION por la región del extremo regional en la quecreaste tu modelo. Si creaste el modelo en el extremo global, omite la marca
--region
.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 la API de Google para Python a fin de llamar a la API de AI Platform Training y de Prediction sin construir solicitudes HTTP de forma manual. Antes de ejecutar la siguiente muestra de código, debes configurar la autenticación.
Java
Puedes usar la biblioteca cliente de las API de Google para Java a fin de llamar a la API AI Platform Training and Prediction sin construir solicitudes HTTP de forma manual. Antes de ejecutar el siguiente ejemplo de código, debes configurar la autenticación.
Solución de problemas de la predicción en línea
Los errores comunes en la predicción en línea incluyen los siguientes:
- Errores por falta de memoria
- Formato incorrecto de los datos de entrada
- Una solicitud de predicción en línea individual no debe contener más de 1.5 MB de datos. Las solicitudes creadas mediante la CLI de gcloud no pueden controlar más de 100 instancias por archivo. Si deseas obtener predicciones para más instancias al mismo tiempo, usa la predicción por lotes.
Si es posible, reduce el tamaño del modelo antes de implementarlo en AI Platform Prediction para la predicción.
Ve más detalles en Solución de problemas de la predicción en línea.
¿Qué sigue?
- Usa la predicción por lotes para obtener inferencias de forma asíncrona.
- Obtén más información sobre el proceso de predicción.
- Soluciona los problemas que surgen cuando solicitas predicciones en línea.