Modelo personalizado alojado para Earth Engine

Para realizar inferencias con un modelo entrenado personalizado con un framework de aprendizaje automático, como TensorFlow o PyTorch, se debe guardar y subir el modelo a Vertex AI, crear un extremo de predicción y, luego, implementar el modelo para entregar tráfico en el extremo creado.

Entrada del modelo

Antes de guardar y subir tu modelo a Vertex AI, debes asegurarte de que acepte datos en un formato de carga útil que admita Earth Engine. Para obtener más detalles, consulta nuestra página de formatos de carga útil.

Artefacto del modelo

El siguiente paso es guardar el modelo en un formato que se pueda alojar en Vertex AI.

TensorFlow

Los modelos basados en TensorFlow se pueden guardar en varios formatos diferentes, pero Vertex AI requiere el formato SavedModel. Los modelos basados en Keras se deben exportar como modelos guardados con tf.keras.Model.export(). Otros modelos de TensorFlow requieren el uso de la función más primitiva tf.saved_model.save(). Consulta la documentación sobre el formato SavedModel para obtener más detalles.

PyTorch

Los modelos de PyTorch tienen una forma un poco diferente de preparar los artefactos del modelo para la entrega de predicciones. Si creas un modelo con entrenamiento personalizado, primero debes guardarlo. Por motivos de rendimiento, se recomienda convertir tu modelo de PyTorch en TorchScript y guardar el archivo del modelo con lo siguiente:

model_scripted = torch.jit.script(model) # Export to TorchScript
model_scripted.save('model.pt') # Save

Una vez que se guarda el archivo del modelo, se debe archivar para que se pueda implementar en Vertex AI. Cuando se usa un contenedor compilado previamente, el modelo debe llamarse "model". Para archivar el modelo, se debe ejecutar torch-model-archiver, incluidos los controladores personalizados y los archivos adicionales que requiera el modelo. Aquí hay un ejemplo de eso:

torch-model-archiver -f \
  --model-name model \
  --version 1.0  \
  --serialized-file $model_file \
  --handler $hander_file \
  --extra-files $index_to_name_file \
  --export-path $model_path

Implementación del modelo en Vertex AI

Una vez que se guarden los archivos del modelo, el siguiente paso es subirlo a Vertex AI. Si el artefacto de tu modelo aún no está en Google Cloud Storage, copia primero el archivo del modelo allí con un comando como gsutil cp $model_path gs://${your-bucket}/models/model.

Una vez que se copie, puedes usar el Model Registry de Vertex AI para subir tu modelo o usar la línea de comandos de gcloud y ejecutar algo como lo siguiente:

gcloud ai models upload \
  --artifact-uri=gs://{your-bucket}/models/model \
  --display-name=${display-name} \
  --container-image-uri=${model-container} \
  --container-grpc-ports=8500

SUGERENCIA: Para obtener un rendimiento óptimo, habilita las predicciones de gRPC con la marca container-grpc-ports. Obtén más información sobre las predicciones de gRPC en nuestra documentación de formatos de carga útil. Esta marca solo se puede especificar con la herramienta de línea de comandos de gcloud.

Administración de extremos de modelos

Una vez que se sube un modelo a Vertex AI, crea un extremo y, luego, impleméntalo a través de la página Predicción en línea. Para ello, crea un extremo nuevo o usa la línea de comandos de gcloud con los comandos endpoints create y endpoints deploy-model. Por ejemplo:

Crea un modelo:

gcloud ai endpoints create \
  --display-name=${endpoint-name}

La implementación de un modelo.

gcloud ai endpoints deploy-model {endpoint-id} \
  --model=${model-id} \
  --traffic-split=0=100 \
  --display-name=${model-display-name} \
  --min-replica-count=${min-replica-count} \
  --max-replica-count=${max-replica-count}

Una vez que se implemente tu modelo, podrás conectarte a él en Earth Engine para realizar inferencias.