En esta página, se describe cómo usar la Vertex AI para exportar el modelo tabular de AutoML a Cloud Storage, descargar el modelo en un servidor local o en un servidor alojado por otro proveedor de servicios en la nube y, luego, usar Docker para crear el modelo. disponible para las predicciones.
Para obtener información sobre cómo exportar modelos de Edge de imágenes y videos, consulta Exporta modelos de AutoML Edge.
Después de exportar el modelo tabular, si deseas importarlo de nuevo a Vertex AI, consulta Importa modelos a Vertex AI.
Limitaciones
Exportar los modelos tabulares de AutoML tiene las siguientes limitaciones:
Solo puedes exportar modelos de clasificación tabular y de regresión de AutoML. No se admite la exportación de modelos de previsión tabular de AutoML.
Vertex Explainable AI no está disponible con modelos tabulares exportados. Si necesitas usar Vertex Explainable AI, debes entregar predicciones de un modelo alojado por Vertex AI.
El modelo tabular exportado solo puede ejecutarse en las CPU de arquitectura x86 que admitan conjuntos de instrucciones de Advanced Vector Extensions (AVX).
Proceso de exportación
Los pasos para exportar tu modelo son los siguientes:
- Configura el entorno.
- Exportar el modelo
- Extrae y ejecuta el servidor de modelos.
- Solicitar predicciones
Antes de comenzar
Antes de completar esta tarea, debes realizar las siguientes tareas:
- Configura tu proyecto como se describe en Configura el entorno en la nube.
- Entrenar el modelo que deseas descargar
- Instalar y, luego, inicializar la Google Cloud CLI en el servidor que usarás para ejecutar el modelo exportado
- Instalar Docker en tu servidor
Exporta el modelo
Console
En la sección Vertex AI de la consola de Google Cloud, vaya a la página Modelos.
Haz clic en el modelo tabular que deseas exportar para abrir su página de detalles.
Haz clic en Exportar en la barra de botones para exportar tu modelo.
Selecciona o crea una carpeta de Cloud Storage en la ubicación deseada.
El bucket debe cumplir con los requisitos del bucket .
No puedes exportar un modelo a un bucket de nivel superior. Debes usar al menos un nivel de carpeta.
Para obtener mejores resultados, crea una carpeta nueva y vacía. Copiarás todo el contenido de la carpeta en un paso posterior.
Haz clic en Exportar.
En la siguiente sección, descargarás el modelo exportado a tu servidor.
REST
Usa el método models.export para exportar un modelo a Cloud Storage.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Tu región.
- PROJECT: El ID del proyecto.
- MODEL_ID: El ID del modelo que deseas exportar.
-
GCS_DESTINATION: tu carpeta de destino en Cloud Storage. Por ejemplo,
gs://export-bucket/exports
No puedes exportar un modelo a un bucket de nivel superior. Debes usar al menos un nivel de carpeta.
La carpeta debe cumplir con los requisitos del bucket.
Para obtener mejores resultados, crea una carpeta nueva. Copiarás todo el contenido de la carpeta en un paso posterior.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export
Cuerpo JSON de la solicitud:
{ "outputConfig": { "exportFormatId": "tf-saved-model", "artifactDestination": { "outputUriPrefix": "GCS_DESTINATION" } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/models/MODEL_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.ExportModelOperationMetadata", "genericMetadata": { "createTime": "2020-10-12T20:53:40.130785Z", "updateTime": "2020-10-12T20:53:40.130785Z" }, "outputInfo": { "artifactOutputUri": "gs://OUTPUT_BUCKET/model-MODEL_ID/EXPORT_FORMAT/YYYY-MM-DDThh:mm:ss.sssZ" } } }
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.
Obtén el estado de una operación de exportación
Algunas solicitudes inician operaciones de larga duración que requieren tiempo para completarse. Estas solicitudes devuelven un nombre de operación que puedes usar para ver el estado de la operación o cancelarla. Vertex AI proporciona métodos auxiliares para hacer llamadas en operaciones de larga duración. Para obtener más información, consulta Trabaja con operaciones de larga duración.
Extrae y ejecuta el servidor de modelos
En esta tarea, descargarás el modelo exportado de Cloud Storage y, luego, iniciarás el contenedor de Docker, de modo que el modelo esté listo para recibir solicitudes de predicción.
Para extraer y ejecutar el servidor de modelos, haz lo siguiente:
En la máquina donde vas a ejecutar el modelo, cambia el directorio donde deseas guardar el modelo exportado.
Descarga el modelo exportado:
gcloud storage cp <var>gcs-destination</var> . --recursive
En el ejemplo anterior, gcs-destination es la ruta de acceso a la ubicación del modelo exportado en Cloud Storage.
El modelo se copia en tu directorio actual, en la siguiente ruta:
./model-<model-id>/tf-saved-model/<export-timestamp>
La ruta de acceso puede contener
tf-saved-model
ocustom-trained
.Cambia el nombre del directorio para que se quite la marca de tiempo.
mv model-<model-id>/tf-saved-model/<export-timestamp> model-<model-id>/tf-saved-model/<new-dir-name>
La marca de tiempo hace que el directorio no sea válido para Docker.
Extrae la imagen de Docker del servidor de modelos
sudo docker pull MODEL_SERVER_IMAGE
La imagen del servidor de modelos que se extraerá se encuentra en el archivo
environment.json
en el directorio del modelo exportado. Debería tener la siguiente ruta:./model-<model-id>/tf-saved-model/<new-dir-name>/environment.json
Si no hay un archivo environment.json, usa lo siguiente:
MULTI_REGION-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server-v1
Reemplaza
MULTI_REGION
porus
,europe
oasia
para seleccionar el repositorio de Docker desde el que deseas extraer la imagen de Docker. Cada repositorio proporciona la misma imagen de Docker, pero elegir la multirregión de Artifact Registry más cercana a la máquina en la que ejecutas Docker puede reducir la latencia.Inicia el contenedor de Docker con el nombre del directorio que acabas de crear:
docker run -v `pwd`/model-<model-id>/tf-saved-model/<new-dir-name>:/models/default -p 8080:8080 -it MODEL_SERVER_IMAGE
Puedes detener el servidor de modelo en cualquier momento con Ctrl-C
.
Actualiza el contenedor de Docker del servidor de modelo
Debido a que descargas el contenedor de Docker del servidor de modelos cuando exportas el modelo, debes actualizar explícitamente el servidor de modelos para obtener actualizaciones y correcciones de errores. Debes actualizar el servidor del modelo de forma periódica mediante el siguiente comando:
docker pull MODEL_SERVER_IMAGE
Asegúrate de que el URI de la imagen de Docker coincida con el de la imagen de Docker que extrajiste antes.
Obtén predicciones a partir del modelo exportado
El servidor de modelos en el contenedor de imágenes de Vertex AI controla las solicitudes de predicción y muestra resultados de predicciones.
La predicción por lotes no está disponible para los modelos exportados.
Formato de datos de predicción
Proporciona los datos (campo payload
) para tu solicitud de predicción en el siguiente formato JSON:
{ "instances": [ { "column_name_1": value, "column_name_2": value, … } , … ] }
En el siguiente ejemplo, se muestra una solicitud con tres columnas: una columna categórica, un arreglo numérico y una estructura. La solicitud incluye dos filas.
{ "instances": [ { "categorical_col": "mouse", "num_array_col": [ 1, 2, 3 ], "struct_col": { "foo": "piano", "bar": "2019-05-17T23:56:09.05Z" } }, { "categorical_col": "dog", "num_array_col": [ 5, 6, 7 ], "struct_col": { "foo": "guitar", "bar": "2019-06-17T23:56:09.05Z" } } ] }
Realiza la solicitud de predicción
Coloca los datos de tu solicitud en un archivo de texto, por ejemplo:
tmp/request.json
.La cantidad de filas de datos en la solicitud de predicción, que se denomina tamaño del minilote, afecta la latencia de predicción y la capacidad de procesamiento. Cuanto mayor sea el tamaño del minilote, mayor será la latencia y la capacidad de procesamiento. Para reducir la latencia, usa un tamaño del minilote más pequeño. Para aumentar la capacidad de procesamiento, aumenta el tamaño del minilote. Los tamaños de minilotes más comunes son 1, 32, 64, 128, 256, 512 y 1,024.
Solicita la predicción:
curl -X POST --data @/tmp/request.json http://localhost:8080/predict
Formato de los resultados de la predicción
El formato de los resultados depende del objetivo de tu modelo.
Resultados del modelo de clasificación
Los resultados de la predicción de los modelos de clasificación (binarios y de varias clases) muestran una puntuación de probabilidad para cada valor potencial de la columna objetivo. Debes determinar cómo quieres usar las puntuaciones. Por ejemplo, para obtener una clasificación binaria a partir de las puntuaciones proporcionadas, debes identificar un valor de umbral. Si hay dos clases, “A” y “B”, debes clasificar el ejemplo como “A” si la puntuación de “A” es mayor que el umbral elegido, y “B” en el caso opuesto. En el caso de los conjuntos de datos desequilibrados, el umbral podría aproximarse al 100% o al 0%.
La carga útil de los resultados de un modelo de clasificación es similar a este ejemplo:
{ "predictions": [ { "scores": [ 0.539999994635582, 0.2599999845027924, 0.2000000208627896 ], "classes": [ "apple", "orange", "grape" ] }, { "scores": [ 0.23999999463558197, 0.35999998450279236, 0.40000002086278963 ], "classes": [ "apple", "orange", "grape" ] } ] }
Resultados del modelo de regresión
Se muestra un valor previsto para cada fila válida de la solicitud de predicción. No se muestran intervalos de predicción para los modelos exportados.
La carga útil de los resultados de un modelo de regresión es similar a este ejemplo:
{ "predictions": [ { "value": -304.3663330078125, "lower_bound": -56.32196807861328, "upper_bound": 126.51904296875 }, { "value": -112.3663330078125, "lower_bound": 16.32196807861328, "upper_bound": 255.51904296875 } ] }
¿Qué sigue?
- Obtén información sobre cómo volver a importar tu modelo tabular exportado a Vertex AI.