En esta página, se explica cómo implementar tu modelo en AI Platform Prediction para obtener predicciones.
Para implementar el modelo entrenado en AI Platform Prediction, debes realizar las siguientes acciones:
- Sube tu modelo guardado a un bucket de Cloud Storage.
- Crea un recurso de modelo de AI Platform Prediction.
- Crea un recurso de la versión de AI Platform Prediction y especifica la ruta de acceso de Cloud Storage al modelo guardado.
Antes de comenzar
Entrena tu modelo de aprendizaje automático y sigue la guía para exportar modelos destinados a la predicción a fin de crear artefactos de modelo que puedan implementarse en AI Platform Prediction.
Almacena el modelo en Cloud Storage
En general, es más fácil usar un bucket de Cloud Storage dedicado en el mismo proyecto que usas para AI Platform Prediction.
Si usas un bucket en un proyecto diferente, debes asegurarte de que la cuenta de servicio de AI Platform Prediction pueda acceder al modelo en Cloud Storage. Sin los permisos correspondientes, la solicitud para crear una versión del modelo en AI Platform Prediction fallará. Obtén más información sobre cómo otorgar permisos para el almacenamiento.
Configura tu bucket de Cloud Storage
En esta sección se muestra cómo crear un bucket nuevo. Puedes usar un bucket existente, pero debe estar en la misma región en la que planeas ejecutar los trabajos de AI Platform. Además, si no forma parte del proyecto que usas para ejecutar AI Platform Prediction, debes otorgar acceso a las cuentas de servicio de AI Platform Prediction de forma explícita.
-
Especifica un nombre para el bucket nuevo. El nombre debe ser único en todos los depósitos en Cloud Storage.
BUCKET_NAME="YOUR_BUCKET_NAME"
Por ejemplo, usa el nombre de tu proyecto con
-aiplatform
agregado:PROJECT_ID=$(gcloud config list project --format "value(core.project)") BUCKET_NAME=${PROJECT_ID}-aiplatform
-
Comprueba el nombre del bucket que creaste.
echo $BUCKET_NAME
-
Selecciona una región para tu depósito y establece una variable de entorno
REGION
.Usa la misma región en la que planeas ejecutar trabajos de AI Platform Prediction. Consulta las regiones disponibles para los servicios de AI Platform Prediction.
Por ejemplo, con el siguiente código, se crea una
REGION
y se la configura comous-central1
:REGION=us-central1
-
Crea el bucket nuevo:
gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION
Sube el modelo exportado a Cloud Storage
En los ejemplos siguientes, se muestra cómo subir diferentes tipos de artefactos de modelo a un directorio de modelos en Cloud Storage:
Modelo guardado de TensorFlow
SAVED_MODEL_DIR=$(ls ./YOUR_EXPORT_DIR_BASE | tail -1)
gcloud storage cp $SAVED_MODEL_DIR gs://YOUR_BUCKET --recursive
Cuando exportas un modelo guardado de tf.keras
o de un estimador de TensorFlow, se almacena como un subdirectorio con marca de tiempo de un directorio de exportación base que elijas, como YOUR_EXPORT_DIR_BASE/1487877383942
.
En este ejemplo, se muestra cómo subir el directorio con la marca de tiempo más reciente.
Si creaste tu modelo guardado de una manera distinta, este puede encontrarse en una ubicación diferente en tu sistema de archivos local.
Archivo de modelo scikit-learn o XGBoost
En función de cómo hayas exportado tu modelo entrenado, sube el archivo model.joblib
, model.pkl
o model.bst
.
En el ejemplo siguiente, se muestra cómo subir un archivo exportado mediante sklearn.externals.joblib
:
gcloud storage cp ./model.joblib gs://YOUR_BUCKET/model.joblib
En el ejemplo siguiente, se muestra cómo subir un archivo exportado mediante el módulo pickle
de Python:
gcloud storage cp ./model.pkl gs://YOUR_BUCKET/model.pkl
En el siguiente ejemplo, se muestra cómo subir un archivo exportado mediante el método save_model
de xgboost.Booster
:
gcloud storage cp ./model.bst gs://YOUR_BUCKET/model.bst
Si implementas una rutina de predicción personalizada (Beta), sube también cualquier artefacto de modelo adicional a tu directorio de modelos.
El tamaño total del archivo de tu directorio de modelos debe ser de hasta 500 MB si usas un tipo de máquina heredada (MLS1) o de hasta 10 GB si usas un tipo de máquina (N1) de Compute Engine. Obtén más información sobre tipos de máquinas para la predicción en línea.
Cuando crees versiones posteriores de tu modelo, coloca cada una en su propio directorio por separado dentro de tu bucket de Cloud Storage para organizarlas.
Sube código personalizado
Si implementas una canalización de scikit-learn con código personalizado o una rutina de predicción personalizada, también debes subir el paquete de distribución de fuente que contiene tu código personalizado. Por ejemplo, consigna lo siguiente:
gcloud storage cp dist/my_custom_code-0.1.tar.gz gs://YOUR_BUCKET/my_custom_code-0.1.tar.gz
Puedes subir este tarball al mismo directorio de Cloud Storage que tu archivo de modelo, pero no es necesario que lo hagas. De hecho, mantenerlos separados puede proporcionar una mejor organización, especialmente si implementas muchas versiones de tu modelo y código.
Prueba el modelo con predicciones locales
Puedes usar el comando de gcloud ai-platform local predict
para probar cómo en tu modelo se entregan predicciones antes de que lo implementes en AI Platform Prediction. Con el comando se usan dependencias en tu entorno local para realizar predicciones y mostrar resultados en el mismo formato que se emplea con gcloud ai-platform predict
a fin de realizar predicciones en línea. La prueba local de las predicciones puede ayudarte a descubrir errores antes de incurrir en costos por las solicitudes de predicción en línea.
Para el argumento --model-dir
, especifica un directorio que contenga tu modelo de aprendizaje automático exportado, ya sea en tu máquina local o en Cloud Storage. Para el argumento --framework
, especifica tensorflow
, scikit-learn
o xgboost
. No puedes usar el comando de gcloud ai-platform local predict
con una rutina de predicción personalizada.
En el siguiente ejemplo, se muestra cómo realizar predicciones locales:
gcloud ai-platform local predict --model-dir LOCAL_OR_CLOUD_STORAGE_PATH_TO_MODEL_DIRECTORY/ \
--json-instances LOCAL_PATH_TO_PREDICTION_INPUT.JSON \
--framework NAME_OF_FRAMEWORK
Implementa modelos y versiones
AI Platform Prediction organiza los modelos entrenados mediante recursos de modelo y versión. Un modelo de AI Platform Prediction es un contenedor para las versiones del modelo de aprendizaje automático.
Para implementar un modelo, crea un recurso del modelo en AI Platform Prediction, crea una versión de ese modelo y, luego, vincula la versión con el archivo del modelo almacenado en Cloud Storage.
Crea un recurso de modelo
En AI Platform Prediction, se usan recursos de modelo para organizar diferentes versiones del modelo.
Debes decidir en este momento si deseas que las versiones que pertenecen a este modelo usen un extremo regional o el extremo global. Para la mayoría de los casos, elige un extremo regional. Si necesitas una funcionalidad que solo esté disponible en los tipos de máquina heredadas (MLS1), usa el extremo global.
También debes decidir en este momento si deseas que las versiones que corresponden a este modelo exporten los registros cuando entreguen predicciones. En los siguientes ejemplos, no se habilita el registro. Aprende cómo habilitar el registro.
Console
Abre la página Modelos de AI Platform Prediction en la consola de Google Cloud:
Haz clic en el botón Modelo nuevo en la parte superior de la página Modelos. Esto te llevará a la página Crear modelo.
Ingresa un nombre único para tu modelo en el campo Nombre del modelo.
Cuando se selecciona la casilla de verificación Usar extremos regionales, AI Platform Prediction usa un extremo regional. Si prefieres usar el extremo global, desmarca la casilla de verificación Usar extremos regionales.
En la lista desplegable Región, selecciona una ubicación para tus nodos de predicción. Las regiones disponibles dependen de si usas un extremo regional o el global.
Haz clic en Crear.
Verifica que regresaste a la página Modelos y que el modelo nuevo aparezca en la lista.
gcloud
Extremo regional
Ejecuta el siguiente comando:
gcloud ai-platform models create MODEL_NAME \
--region=REGION
Reemplaza lo siguiente:
- MODEL_NAME: Es el nombre que elijas para tu modelo.
- REGION: la región del extremo regional en la que deseas que se ejecuten los nodos de predicción. Debe ser una región que admita los tipos de máquina (N1) de Compute Engine.
Si no especificas la marca --region
, la CLI de gcloud te pedirá que selecciones un extremo regional (o que uses us-central
en el extremo global).
Como alternativa, puedes establecer la propiedad ai_platform/region
en una región específica a fin de asegurarte de que la CLI de gcloud siempre use el extremo regional correspondiente para AI Platform Prediction, incluso cuando no se especifica la marca --region
. (Esta configuración no se aplica a los comandos del grupo de comandos gcloud ai-platform operations
).
Extremo global
Ejecuta el siguiente comando:
gcloud ai-platform models create MODEL_NAME \
--regions=REGION
Reemplaza lo siguiente:
- MODEL_NAME: Es el nombre que elijas para tu modelo.
- REGION: la región del extremo global en la que deseas que se ejecuten los nodos de predicción. Debe ser una región que admita tipos de máquina heredadas (MLS1).
Si no especificas la marca --regions
, la CLI de gcloud te pedirá que selecciones un extremo regional (o que uses us-central1
en el extremo global).
API de REST
Extremo regional
Para darle formato a tu solicitud, coloca el objeto del modelo en el cuerpo de la solicitud. Como mínimo, especifica el nombre de tu modelo; para ello, reemplaza MODEL_NAME en la siguiente muestra:
{ "name": "MODEL_NAME" }
Realiza una llamada a la API de REST a la siguiente URL y reemplaza PROJECT_ID por tu ID del proyecto de Google Cloud:
POST https://REGION-ml.googleapis.com/v1/projects/PROJECT_ID/models/
Reemplaza lo siguiente:
REGION: la región del extremo regional en la que se implementará tu modelo. Debe ser una región que admita los tipos de máquina (N1) de Compute Engine.
PROJECT_ID es el ID del proyecto de Google Cloud.
Por ejemplo, puedes realizar la siguiente solicitud con el comando
curl
. Este comando autoriza la solicitud mediante las credenciales asociadas a la instalación de Google Cloud CLI.curl -X POST -H "Content-Type: application/json" \ -d '{"name": "MODEL_NAME"}' \ -H "Authorization: Bearer `gcloud auth print-access-token`" \ "https://REGION-ml.googleapis.com/v1/projects/PROJECT_ID/models"
La API muestra una respuesta similar a la que se ve a continuación:
{ "name": "projects/PROJECT_ID/models/MODEL_NAME", "regions": [ "REGION" ] }
Extremo global
Para darle formato a tu solicitud, coloca el objeto del modelo en el cuerpo de la solicitud. Como mínimo, especifica el nombre de tu modelo. Para esto, reemplaza MODEL_NAME en la siguiente muestra y especifica una región mediante el reemplazo de REGION por una región que admita los tipos de máquinas heredadas (MLS1):
{ "name": "MODEL_NAME", "regions": ["REGION"] }
Realiza una llamada a la API de REST a la siguiente URL y reemplaza PROJECT_ID por tu ID del proyecto de Google Cloud:
POST https://ml.googleapis.com/v1/projects/PROJECT_ID/models/
Por ejemplo, puedes realizar la siguiente solicitud con el comando
curl
. Este comando autoriza la solicitud mediante las credenciales asociadas a la instalación de Google Cloud CLI.curl -X POST -H "Content-Type: application/json" \ -d '{"name": "MODEL_NAME", "regions": ["REGION"]}' \ -H "Authorization: Bearer `gcloud auth print-access-token`" \ "https://ml.googleapis.com/v1/projects/PROJECT_ID/models"
La API muestra una respuesta similar a la que se ve a continuación:
{ "name": "projects/PROJECT_ID/models/MODEL_NAME", "regions": [ "REGION" ] }
Consulta la API del modelo de AI Platform Prediction para obtener más detalles.
Crea una versión de modelo
Ahora estás listo para crear una versión del modelo con el modelo entrenado que subiste antes a Cloud Storage. Cuando creas una versión, puedes especificar una serie de parámetros. En la siguiente lista, se describen parámetros comunes; algunos de ellos son obligatorios:
name
: Debe ser único en el modelo de AI Platform Prediction.deploymentUri
: Es la ruta de acceso a tu directorio de modelos en Cloud Storage.- Si implementas un modelo de TensorFlow, este es un directorio de modelos guardados.
- Si implementas un modelo scikit-learn o XGBoost, este es el directorio que contiene tu archivo
model.joblib
,model.pkl
omodel.bst
. - Si estás implementando una rutina de predicción personalizada, este es el directorio que contiene todos los artefactos de tu modelo. El tamaño total de este directorio debe ser de 500 MB o menos.
framework
:TENSORFLOW
,SCIKIT_LEARN
oXGBOOST
. Omite este parámetro si implementas una rutina de predicción personalizada.runtimeVersion
: Es una versión del entorno de ejecución basada en las dependencias que se necesitan en el modelo. Si implementas un modelo de scikit-learn, un modelo de XGBoost o una rutina de predicción personalizada, esta debe ser al menos 1.4. Si planeas usar la versión del modelo para la predicción por lotes, debes usar la versión 2.1 o anterior del entorno de ejecución.packageUris
(opcional): Es una lista de rutas de acceso a tus paquetes de distribución de código personalizado (archivos.tar.gz
) en Cloud Storage. Solo proporciona este parámetro si implementas una canalización de scikit-learn con código personalizado (Beta) o una rutina de predicción personalizada (Beta).predictionClass
(opcional): Es el nombre de tu clase de Predictor en formatomodule_name.class_name
. Solo proporciona este parámetro si implementas una rutina de predicción personalizada (Beta).serviceAccount
(opcional): Puedes especificar una cuenta de servicio para que la use la versión del modelo si accede a los recursos de Google Cloud durante la entrega de predicciones. Obtén más información para especificar una cuenta de servicio. Solo proporciona este parámetro si usas un contenedor personalizado o una rutina de predicción personalizada.pythonVersion
: Debe establecerse en “3.5” (en las versiones del entorno de ejecución abarcadas desde la 1.4 hasta la 1.14) o “3.7” (en las versiones 1.15 y posteriores) para que sea compatible con archivos de modelos exportados mediante Python 3. También se puede establecer en “2.7” si se usa con la versión 1.15 o con versiones anteriores del entorno de ejecución.machineType
(opcional): Es el tipo de máquina virtual que se usa en AI Platform Prediction para los nodos que entregan predicciones. Obtén más información sobre los tipos de máquinas. Si no está configurado, el valor predeterminado esn1-standard-2
en extremos regionales ymls1-c1-m2
en el extremo global.
Obtén más información sobre cada uno de estos parámetros y sobre otros parámetros menos comunes en la referencia de la API para el recurso de la versión.
Además, si creaste el modelo en un extremo regional, asegúrate de crear la versión en el mismo extremo regional.
Console
Abre la página Modelos de AI Platform Prediction en la consola de Google Cloud:
En la página Modelos, selecciona el nombre del recurso de modelo que quieres usar para crear tu versión. Esto te llevará a la página Detalles del modelo.
Haz clic en el botón Nueva versión en la parte superior de la página Detalles del modelo. Esto te lleva a la página Crear versión.
Ingresa el nombre de la versión en el campo Nombre. De forma opcional, ingresa una descripción para tu versión en el campo Descripción.
Ingresa la siguiente información sobre cómo entrenaste tu modelo en los cuadros desplegables correspondientes:
- Selecciona la versión de Python que usaste para entrenar el modelo.
- Selecciona el marco de trabajo y la versión del marco de trabajo. Si implementas una rutina de predicción personalizada (Beta), selecciona “Rutina de predicción personalizada (BETA)” para en Framework.
- Selecciona la Versión de entorno de ejecución del AA. Obtén más información sobre las versiones del entorno de ejecución de AI Platform Prediction.
Selecciona un tipo de máquina para ejecutar la predicción en línea.
En el campo URI del modelo, ingresa la ubicación del depósito de Cloud Storage en la que subiste tu archivo de modelo. Puedes usar el botón Explorar para buscar la ruta de acceso correcta.
Asegúrate de especificar la ruta de acceso al directorio que contiene el archivo, no la ruta de acceso al archivo de modelo. Por ejemplo, usa
gs://your_bucket_name/model-dir/
en lugar degs://your_bucket_name/model-dir/saved_model.pb
ogs://your_bucket_name/model-dir/model.pkl
.Si implementas una canalización de scikit-learn con código personalizado (Beta) o una rutina de predicción personalizada (Beta), proporciona la ruta de acceso de Cloud Storage a cualquier paquete de código personalizado (
.tar.gz
) en Código personalizado y dependencias. Si implementas una rutina de predicción personalizada, ingresa el nombre de tu clase de Predictor en el campo Clase Prediction.Selecciona una opción de escalamiento para la implementación de la predicción en línea de la siguiente manera:
Si seleccionas "Ajuste de escala automático", se muestra el campo opcional Cantidad mínima de nodos. Puedes ingresar el número mínimo de nodos que se ejecutarán en todo momento, cuando el servicio se haya reducido.
Si seleccionas “Ajuste de escala manual” debes ingresar la cantidad de nodos que deseas que se ejecuten en todo momento.
Obtén información sobre cómo las opciones de escalamiento difieren según el tipo de máquina.
Obtén más información sobre los precios de los costos de predicción.
Para terminar de crear tu versión modelo, haz clic en Guardar.
gcloud
Establece variables de entorno para almacenar la ruta al directorio de Cloud Storage en el que se encuentra el objeto binario del modelo, el nombre del modelo, el nombre de la versión y el framework que hayas elegido.
Cuando creas una versión con la CLI de gcloud, puedes proporcionar el nombre del framework en letras mayúsculas con guiones bajos (por ejemplo,
SCIKIT_LEARN
) o en minúsculas con guiones (por ejemplo,scikit-learn
). Ambas opciones conducen a un comportamiento idéntico.Reemplaza
[VALUES_IN_BRACKETS]
por los valores adecuados:MODEL_DIR="gs://your_bucket_name/" VERSION_NAME="[YOUR-VERSION-NAME]" MODEL_NAME="[YOUR-MODEL-NAME]" FRAMEWORK="[YOUR-FRAMEWORK_NAME]"
Para una canalización de scikit-learn con código personalizado (Beta), configura una variable adicional con la ruta de acceso al archivo comprimido del código personalizado:
MODEL_DIR="gs://your_bucket_name/" VERSION_NAME="[YOUR-VERSION-NAME]" MODEL_NAME="[YOUR-MODEL-NAME]" FRAMEWORK="scikit-learn" CUSTOM_CODE_PATH="gs://your_bucket_name/my_custom_code-0.1.tar.gz"
Para una rutina de predicción personalizada (Beta), omite la variable
FRAMEWORK
y configura variables adicionales con la ruta de acceso al archivo comprimido del código personalizado y el nombre de tu clase de Predictor:MODEL_DIR="gs://your_bucket_name/" VERSION_NAME="[YOUR-VERSION-NAME]" MODEL_NAME="[YOUR-MODEL-NAME]" CUSTOM_CODE_PATH="gs://your_bucket_name/my_custom_code-0.1.tar.gz" PREDICTOR_CLASS="[MODULE_NAME].[CLASS_NAME]"
Crea la versión:
gcloud ai-platform versions create $VERSION_NAME \ --model=$MODEL_NAME \ --origin=$MODEL_DIR \ --runtime-version=2.11 \ --framework=$FRAMEWORK \ --python-version=3.7 \ --region=REGION \ --machine-type=MACHINE_TYPE
Reemplaza lo siguiente:
REGION: la región del extremo regional en la que creaste el modelo. Si creaste el modelo en el extremo global, omite la marca
--region
.MACHINE_TYPE: Un tipo de máquina que determina los recursos de procesamiento disponibles para tus nodos de predicción.
Para una canalización de scikit-learn con código personalizado (beta), usa el componente
gcloud beta
y asegúrate de configurar la marca--package-uris
. Para implementar código personalizado, tu modelo debe usar el extremo global.gcloud components install beta gcloud beta ai-platform versions create $VERSION_NAME \ --model=$MODEL_NAME \ --origin=$MODEL_DIR \ --runtime-version=2.11 \ --framework=$FRAMEWORK \ --python-version=3.7 \ --machine-type=mls1-c1-m2 \ --package-uris=$CUSTOM_CODE_PATH
Para una rutina de predicción personalizada (beta), usa el componente
gcloud beta
, omite la marca--framework
y configura las marcas--package-uris
y--prediction-class
: Para implementar código personalizado, tu modelo debe usar el extremo global.gcloud components install beta gcloud beta ai-platform versions create $VERSION_NAME \ --model=$MODEL_NAME \ --origin=$MODEL_DIR \ --runtime-version=2.11 \ --python-version=3.7 \ --machine-type=mls1-c1-m2 \ --package-uris=$CUSTOM_CODE_PATH \ --prediction-class=$PREDICTOR_CLASS
La creación de la versión toma unos minutos. Cuando esté lista, verás el siguiente resultado:
Creating version (this might take a few minutes)......done.
Obtén información sobre tu versión nueva:
gcloud ai-platform versions describe $VERSION_NAME \ --model=$MODEL_NAME
Deberías ver un resultado similar a este:
createTime: '2018-02-28T16:30:45Z' deploymentUri: gs://your_bucket_name framework: [YOUR-FRAMEWORK-NAME] machineType: mls1-c1-m2 name: projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME] pythonVersion: '3.7' runtimeVersion: '2.11' state: READY
API de REST
Dale formato al cuerpo de tu solicitud para que contenga el objeto de la versión. En este ejemplo, se especifican los valores de
name
,deploymentUri
,runtimeVersion
,framework
ymachineType
de la versión. Reemplaza[VALUES_IN_BRACKETS]
por los valores adecuados siguientes:{ "name": "[YOUR-VERSION-NAME]", "deploymentUri": "gs://your_bucket_name/", "runtimeVersion": "2.11", "framework": "[YOUR_FRAMEWORK_NAME]", "pythonVersion": "3.7", "machineType": "[YOUR_MACHINE_TYPE]" }
Haz una llamada a la API de REST en la ruta de acceso y reemplaza
[VALUES_IN_BRACKETS]
por los siguientes valores adecuados:POST https://REGION-ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions
Reemplaza REGION por la región del extremo regional en la quecreaste tu modelo. Si creaste el modelo en el extremo global, usa
ml.googleapis.com
.Por ejemplo, puedes realizar la siguiente solicitud con el comando
curl
:curl -X POST -H "Content-Type: application/json" \ -d '{"name": "[YOUR-VERSION-NAME]", "deploymentUri": "gs://your_bucket_name/", "runtimeVersion": "2.11", "framework": "[YOUR_FRAMEWORK_NAME]", "pythonVersion": "3.7", "machineType": "[YOUR_MACHINE_TYPE]"}' \ -H "Authorization: Bearer `gcloud auth print-access-token`" \ "https://REGION-ml.googleapis.com/v1/projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions"
La creación de la versión toma unos minutos. Cuando esté lista, debes ver un resultado similar a esto:
{ "name": "projects/[YOUR-PROJECT-ID]/operations/create_[YOUR-MODEL-NAME]_[YOUR-VERSION-NAME]-[TIMESTAMP]", "metadata": { "@type": "type.googleapis.com/google.cloud.ml.v1.OperationMetadata", "createTime": "2018-07-07T02:51:50Z", "operationType": "CREATE_VERSION", "modelName": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]", "version": { "name": "projects/[YOUR-PROJECT-ID]/models/[YOUR-MODEL-NAME]/versions/[YOUR-VERSION-NAME]", "deploymentUri": "gs://your_bucket_name", "createTime": "2018-07-07T02:51:49Z", "runtimeVersion": "2.11", "framework": "[YOUR_FRAMEWORK_NAME]", "machineType": "[YOUR_MACHINE_TYPE]", "pythonVersion": "3.7" } } }