El servicio de entrenamiento de AI Platform Training administra los recursos de procesamiento en la nube para entrenar los modelos. En esta página, se describe el proceso para entrenar un modelo de XGBoost mediante AI Platform Training.
En este instructivo, se entrena un modelo simple para predecir el nivel de ingresos de una persona en función del conjunto de datos de ingresos del censo. Debes crear una aplicación de entrenamiento de manera local, subirla a Cloud Storage y enviar un trabajo de entrenamiento. El servicio de entrenamiento de AI Platform Training escribe el resultado en tu depósito de Cloud Storage y crea registros en Logging.
Este contenido también está disponible en GitHub como un notebook de Jupyter.
Cómo entrenar tu modelo en AI Platform Training
Puedes entrenar el modelo en AI Platform Training en tres pasos:
- Crea tu archivo de modelo de Python.
- Agrega un código para descargar los datos desde Cloud Storage de modo que AI Platform Training pueda usarlos.
- Agrega un código para exportar y guardar el modelo en Cloud Storage después de que AI Platform Training finalice el entrenamiento del modelo.
- Prepara un paquete de aplicación de entrenamiento.
- Envía el trabajo de entrenamiento.
Antes de comenzar
Completa los siguientes pasos para configurar una cuenta de GCP, activar la API de AI Platform Training y, además, instalar y activar el SDK de Cloud.
Configura el proyecto de GCP
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Configura el entorno
Elige una de las siguientes opciones para configurar tu entorno de manera local en macOS o en un entorno remoto en Cloud Shell.
Si eres usuario de macOS, te recomendamos que configures tu entorno mediante el uso de la pestaña MACOS a continuación. Cloud Shell, que se muestra en la pestaña CLOUD SHELL, está disponible en macOS, Linux y Windows. Cloud Shell proporciona una forma rápida de probar AI Platform Training, pero no es conveniente para el trabajo de desarrollo continuo.
macOS
-
Verifica la instalación de Python
Confirma que tienes Python instalado y, si es necesario, instálalo.python -V
-
Verifica la instalación de
pip
pip
es el administrador de paquetes de Python y se incluye en sus versiones actuales. Para verificar si ya tienespip
instalado, ejecuta el comandopip --version
. De lo contrario, consulta cómo instalarpip
.Puedes actualizar
pip
con el siguiente comando:pip install -U pip
Consulta la documentación de pip para obtener más detalles.
-
Instala
virtualenv
virtualenv
es una herramienta que sirve para crear entornos de Python aislados. Para verificar si ya tienesvirtualenv
instalado, ejecuta el comandovirtualenv --version
. De lo contrario, instalavirtualenv
con el comando siguiente:pip install --user --upgrade virtualenv
Si deseas crear un entorno de desarrollo aislado para esta guía, crea un entorno virtual nuevo en
virtualenv
. Por ejemplo, el siguiente comando activa un entorno llamadoaip-env
:virtualenv aip-env source aip-env/bin/activate
-
A los fines de este instructivo, ejecuta el resto de los comandos dentro de tu entorno virtual.
Obtén más información sobre el uso devirtualenv
. Para salir devirtualenv
, ejecutadeactivate
.
Cloud Shell
-
Abre la consola de Google Cloud.
-
Haz clic en el botón Activar Cloud Shell en la parte superior de la ventana de la consola.
Se abrirá una sesión de Cloud Shell dentro de un marco nuevo en la parte inferior de la consola y, en ella, se mostrará una ventana de la línea de comandos. La sesión de Shell puede tardar unos segundos en inicializar.
Tu sesión de Cloud Shell está lista para usarse.
-
Configura la herramienta de línea de comandos de
gcloud
a fin de usar el proyecto seleccionado.gcloud config set project [selected-project-id]
donde
[selected-project-id]
es el ID del proyecto. (omite los corchetes).
Instala frameworks
macOS
En el entorno virtual, ejecuta el siguiente comando para instalar las versiones de scikit-learn, XGBoost y Pandas que se usan en la versión 2.11 del entorno de ejecución de AI Platform Training:
(aip-env)$ pip install scikit-learn==1.0.2 xgboost==1.6.2 pandas==1.3.5
Cuando proporcionas los números de versión en el comando anterior, garantizas que las dependencias del entorno virtual coincidan con las de la versión del entorno de ejecución. Esto ayuda a evitar comportamientos inesperados cuando el código se ejecuta en AI Platform Training.
Para obtener más detalles, información de solución de problemas y opciones de instalación, consulta las instrucciones de instalación de cada framework:
Cloud Shell
Ejecuta el siguiente comando para instalar scikit-learn, XGBoost y Pandas:
pip install --user scikit-learn xgboost pandas
Para obtener más detalles, opciones de instalación y también información que te ayude a solucionar problemas, consulta las instrucciones de instalación para cada marco de trabajo:
Configura tu bucket de Cloud Storage
Necesitarás un bucket de Cloud Storage para almacenar el código de entrenamiento y las dependencias. A los fines de este instructivo, es más fácil usar un bucket dedicado de Cloud Storage en el mismo proyecto que usas para AI Platform Training.
Si usas un bucket en un proyecto diferente, debes asegurarte de que la cuenta de servicio de AI Platform Training pueda acceder al código de entrenamiento y a las dependencias en Cloud Storage. Sin los permisos adecuados, el trabajo de entrenamiento fallará. Consulta cómo otorgar permisos para el almacenamiento.
Asegúrate de usar o configurar un bucket en la misma región que usas para ejecutar tus trabajos de entrenamiento. Consulta las regiones disponibles para los servicios de AI Platform Training.
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 es parte del proyecto que usas para ejecutar AI Platform Training, debes otorgar acceso a las cuentas de servicio de AI Platform Training 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 los trabajos de AI Platform Training. Consulta las regiones disponibles para los servicios de AI Platform Training.
Por ejemplo, con el código siguiente, 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
Acerca de los datos
UC Irvine Machine Learning Repository aloja el Conjunto de datos de ingresos del censo que se usa en esta muestra para el entrenamiento.
Los datos del censo son cortesía de Lichman, M. (2013). UCI Machine Learning Repositoryhttp://archive.ics.uci.edu/ml. Irvine, CA: University of California, School of Information and Computer Science. Este conjunto de datos está disponible públicamente para que cualquiera lo use según los siguientes términos proporcionados por la fuente del conjunto de datos: http://archive.ics.uci.edu/ml, y se proporciona "TAL CUAL", sin ninguna garantía, expresa o implícita de Google. Google renuncia a toda responsabilidad por cualquier daño, directo o indirecto, que resulte del uso del conjunto de datos.
Para tu comodidad, alojamos los datos en un depósito público de Cloud Storage, gs://cloud-samples-data/ai-platform/sklearn/census_data/
, que puedes descargar en tu archivo de entrenamiento de Python.
Crea tu archivo de modelo de Python
Puedes encontrar todo el código de entrenamiento para esta sección en GitHub: train.py
.
En el resto de esta sección, se proporciona una explicación de lo que hace el código de entrenamiento.
Configuración
Importa las siguientes bibliotecas desde Python, la CLI de Google Cloud, XGBoost y scikit-learn. Configura una variable para el nombre de tu bucket de Cloud Storage.
import xgboost as xgb
import pandas as pd
from sklearn.preprocessing import LabelEncoder
import subprocess
from google.cloud import storage
# Fill in your Cloud Storage bucket name
BUCKET_ID = <YOUR_BUCKET_NAME>
Descarga los datos desde Cloud Storage
Durante el proceso de desarrollo típico, subes tus propios datos a Cloud Storage para que AI Platform Training pueda acceder a ellos. Los datos de este instructivo están alojados en un depósito público: gs://cloud-samples-data/ai-platform/sklearn/census_data/
.
El siguiente código descarga el conjunto de datos de entrenamiento adult.data
. (Los datos de evaluación están disponibles en adult.test
, pero no se usan en este instructivo).
Agrega el código del modelo
El código de entrenamiento de modelos lleva a cabo algunos pasos básicos:
- Define y carga datos
- Convertir funciones categóricas en funciones numéricas.
- Extraer funciones numéricas con una canalización de scikit-learn.
- Exporta y guarda el modelo en Cloud Storage
Define y carga datos
Convierte atributos categóricos en atributos numéricos
Entrena, exporta y guarda el modelo en Cloud Storage
Si el bucket de Cloud Storage está en el mismo proyecto que usas para AI Platform Training, este servicio puede leer y escribir en el bucket. Si no es así, debes asegurarte de que el proyecto que usas para ejecutar AI Platform Training pueda acceder al bucket de Cloud Storage. Consulta cómo otorgar permisos para el almacenamiento.
Asegúrate de asignarle los nombres model.pkl
, model.joblib
o model.bst
al archivo del modelo si deseas usarlo a fin de solicitar predicciones en línea mediante AI Platform Prediction.
Verifica la carga del archivo de modelo en Cloud Storage (opcional)
En la línea de comandos, visualiza los contenidos de la carpeta del modelo de destino para verificar que tu archivo de modelo se haya subido a Cloud Storage. Configura una variable de entorno (BUCKET_ID
) para el nombre de tu depósito, si aún no lo has hecho.
gcloud storage ls gs://$BUCKET_ID/census_*
El resultado debería ser similar al ejemplo siguiente:
gs://[YOUR-PROJECT-ID]/census_[DATE]_[TIME]/model.bst
Crea un paquete de aplicación de entrenamiento
La forma más fácil (y recomendada) de crear un paquete de aplicación de entrenamiento usa gcloud
para empaquetar y subir la aplicación cuando envías tu trabajo de entrenamiento. Este método te permite crear una estructura de archivos muy simple con solo dos archivos. Para este instructivo, la estructura del archivo de tu paquete de aplicación de entrenamiento debe ser similar a la siguiente:
census_training/
__init__.py
train.py
Crea un directorio de manera local:
mkdir census_training
Crea un archivo en blanco llamado
__init__.py
:touch census_training/__init__.py
Guarda tu código de entrenamiento en un archivo de Python, y guarda ese archivo en tu directorio
census_training
. Consulta el código de ejemplo paratrain.py
. Puedes usarcURL
para descargar y guardar el archivo:curl https://raw.githubusercontent.com/GoogleCloudPlatform/cloudml-samples/master/xgboost/notebooks/census_training/train.py > census_training/train.py
Obtén más información sobre cómo empaquetar una aplicación de entrenamiento.
Envía el trabajo de entrenamiento
En esta sección, usarás gcloud ai-platform jobs submit training
para enviar tu trabajo de entrenamiento.
Especifica los parámetros del trabajo de entrenamiento
Configura las siguientes variables de entorno para cada parámetro en tu solicitud de trabajo de entrenamiento:
PROJECT_ID
: Usa el PROJECT_ID que coincida con tu proyecto de Google Cloud.BUCKET_ID
: Es el nombre de tu depósito de Cloud Storage.JOB_NAME
: es un nombre para el trabajo (combinaciones de mayúsculas y minúsculas, números y guiones bajos únicamente, que comience con una letra). En este caso, escensus_training_$(date +"%Y%m%d_%H%M%S")
.JOB_DIR
: es la ruta a una ubicación de Cloud Storage para tus archivos de salida del trabajo de entrenamiento. Por ejemplo,gs://$BUCKET_ID/xgboost_job_dir
.TRAINING_PACKAGE_PATH
: Es la ruta de acceso local al directorio raíz de tu aplicación de entrenamiento. En este caso, es./census_training/
.MAIN_TRAINER_MODULE
: especifica qué archivo debe ejecutar el servicio de entrenamiento de AI Platform Training. Tiene el formato[YOUR_FOLDER_NAME.YOUR_PYTHON_FILE_NAME]
. En este caso, escensus_training.train
.REGION
: Es el nombre de la región que usas para ejecutar el trabajo de entrenamiento. Usa una de las regiones disponibles para el servicio de capacitación de AI Platform Training. Asegúrate de que el bucket de Cloud Storage esté en la misma región. En este instructivo, se usaus-central1
.RUNTIME_VERSION
: Debes especificar una versión del entorno de ejecución de AI Platform Training que sea compatible con scikit-learn. En este ejemplo, es2.11
.PYTHON_VERSION
: Es la versión de Python que se usa para el trabajo. Para este instructivo, especifica Python 3.7.SCALE_TIER
: una especificación del clúster predefinida para que las máquinas ejecuten tu trabajo de entrenamiento. En este caso, esBASIC
. También puedes usar niveles de escala personalizados a fin de definir tu propia configuración del clúster para el entrenamiento.
Para tu comodidad, las variables de entorno en este instructivo se encuentran a continuación.
Reemplaza [VALUES-IN-BRACKETS]
por los valores adecuados como se muestra a continuación:
PROJECT_ID=[YOUR-PROJECT-ID]
BUCKET_ID=[YOUR-BUCKET-ID]
JOB_NAME=census_training_$(date +"%Y%m%d_%H%M%S")
JOB_DIR=gs://$BUCKET_ID/xgboost_job_dir
TRAINING_PACKAGE_PATH="[YOUR-LOCAL-PATH-TO-TRAINING-PACKAGE]/census_training/"
MAIN_TRAINER_MODULE=census_training.train
REGION=us-central1
RUNTIME_VERSION=2.11
PYTHON_VERSION=3.7
SCALE_TIER=BASIC
Envía la solicitud:
gcloud ai-platform jobs submit training $JOB_NAME \
--job-dir $JOB_DIR \
--package-path $TRAINING_PACKAGE_PATH \
--module-name $MAIN_TRAINER_MODULE \
--region $REGION \
--runtime-version=$RUNTIME_VERSION \
--python-version=$PYTHON_VERSION \
--scale-tier $SCALE_TIER
Deberías ver un resultado similar al siguiente:
Job [census_training_[DATE]_[TIME]] submitted successfully. Your job is still active. You may view the status of your job with the command $ gcloud ai-platform jobs describe census_training_20180718_160825 or continue streaming the logs with the command $ gcloud ai-platform jobs stream-logs census_training_[DATE]_[TIME] jobId: census_training_[DATE]_[TIME] state: QUEUED
Visualiza los registros de entrenamiento (opcional)
AI Platform Training captura todas las transmisiones stdout
y stderr
, además de las instrucciones de registro. Estos registros se almacenan en Logging y son visibles durante la ejecución y después de ella.
Para visualizar los registros de tu trabajo de entrenamiento:
Console
Abre la página Trabajos de AI Platform Training.
Selecciona el nombre del trabajo de entrenamiento para inspeccionar. Esto te lleva a la página Detalles del trabajo de tu trabajo de entrenamiento seleccionado.
Dentro de los detalles del trabajo, selecciona el vínculo Ver registros. Esto te lleva a la página de Logging donde puedes buscar y filtrar los registros para tu trabajo de entrenamiento seleccionado.
gcloud
Puedes ver los registros en tu terminal con gcloud ai-platform jobs stream-logs
.
gcloud ai-platform jobs stream-logs $JOB_NAME
¿Qué sigue?
- Obtén predicciones en línea con XGBoost en AI Platform Training.
- Descubre cómo usar niveles de escala personalizados a fin de definir tu configuración del clúster para el entrenamiento.