Primeros pasos con el algoritmo de amplitud y profundidad integrado

Con los algoritmos integrados en AI Platform, puedes enviar tus datos de entrenamiento, seleccionar un algoritmo y permitir que en AI Platform Training se manejen el procesamiento previo y el entrenamiento por ti, sin escribir ningún código para una aplicación de entrenamiento.

Descripción general

En este instructivo, entrenas un modelo de algoritmo de amplitud y profundidad sin escribir ningún código. Envías el Conjunto de datos de ingresos del censo a AI Platform para su procesamiento previo y entrenamiento y, luego, implementas el modelo en AI Platform a fin de obtener predicciones. Con el modelo que surge como resultado, se predice la probabilidad de que el ingreso anual de una persona sea mayor que $50,000.

Antes de comenzar

Para completar este instructivo en la línea de comandos, usa Cloud Shell o cualquier entorno en el que esté instalado el SDK de Cloud.

Completa los pasos siguientes para configurar una cuenta de GCP, habilitar las API necesarias y, también, instalar y activar el SDK de Cloud.

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En GCP Console, ve a la página Administrar recursos y selecciona o crea un proyecto.

    Ir a la página Administrar recursos

  3. Asegúrate de tener habilitada la facturación para tu proyecto.

    Aprende a habilitar la facturación

  4. Habilita las AI Platform ("Cloud Machine Learning Engine") y Compute Engine API necesarias.

    Habilita las API

  5. Realiza la instalación y la inicialización del SDK de Cloud.

Configuración

Para usar algoritmos integrados, debes quitar la fila del encabezado de tu archivo CSV y mover los valores de destino a la primera columna. Modificamos el conjunto de datos original del censo para usarlo con este instructivo y lo alojamos en gs://cloud-samples-data/ai-platform/census/algorithms/data/, un depósito público de Cloud Storage.

Console

Antes de comenzar tu trabajo de entrenamiento, debes copiar los datos de nuestro depósito público de Cloud Storage en tu depósito.

Copia los datos de muestra en tu depósito de Cloud Storage

  1. Primero, descarga los datos de entrenamiento y pruebas desde nuestro depósito público de Cloud Storage.

    1. Navega a nuestro depósito público de Cloud Storage:

      Obtén los datos de muestra.

    2. Descarga test.csv y train.csv:

      1. Haz clic en el nombre del archivo.

      2. En la página Detalles del objeto, haz clic en Descargar. Estos archivos se descargan en tu entorno local como ai-platform_census_algorithms_data_test.csv y ai-platform_census_algorithms_data_train.csv, respectivamente.

  2. A continuación, sube los datos de entrenamiento y pruebas a tu depósito de Cloud Storage.

    1. Dirígete a la página del navegador de tu depósito de Cloud Storage. Selecciona tu proyecto de la lista desplegable Seleccionar un proyecto o ábrelo en una pestaña nueva:

      Página del navegador de Cloud Storage

    2. Haz clic en el nombre del depósito que deseas usar o crea uno nuevo si todavía no tienes uno. (Si creas un depósito nuevo, asegúrate de que sea regional y selecciona la misma región en la que estás ejecutando el trabajo de entrenamiento de AI Platform).

    3. (Opcional) Haz clic en Crear carpeta a fin de crear una carpeta para los archivos que subas. Ingresa un nombre para la carpeta (por ejemplo, "datos") y haz clic en Crear. A continuación, navega a la carpeta nueva; para ello, haz clic en el nombre de la carpeta.

    4. Haz clic en Subir archivos para subir los archivos de entrenamiento y prueba, ai-platform_census_algorithms_data_train.csv y ai-platform_census_algorithms_data_test.csv, a tu depósito.

Ahora que los datos están copiados en tu depósito, puedes comenzar un trabajo de entrenamiento; para ello, selecciona el tipo de algoritmo que deseas usar.

Selecciona tu algoritmo

  1. Ve a la página Trabajos de AI Platform en Google Cloud Platform Console:

    Página Trabajos de AI Platform

  2. Haz clic en el botón Trabajo de entrenamiento nuevo. En las opciones que se muestran a continuación, haz clic en Entrenamiento de modelos integrado. Aparece la página Crea un nuevo trabajo de entrenamiento.

  3. La creación de un trabajo de entrenamiento se divide en cuatro pasos. El primero es Algoritmo de entrenamiento. Selecciona Algoritmo de amplitud y profundidad integrado y haz clic en Siguiente.

gcloud

Configura las variables del entorno para el ID de tu proyecto, tu depósito de Cloud Storage, la ruta de Cloud Storage a los datos de entrenamiento y la selección del algoritmo.

Los algoritmos integrados de AI Platform se encuentran en contenedores de Docker alojados en Container Registry.

PROJECT_ID="[YOUR-PROJECT-ID]"
BUCKET_NAME="[YOUR-BUCKET-NAME]"
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION

# Copy the training data into your Cloud Storage bucket, and set the path
# to your copy of the training data.
TRAINING_DATA_SOURCE="gs://cloud-samples-data/ai-platform/census/algorithms/data/train.csv"
TRAINING_DATA_PATH="gs://$BUCKET_NAME/algorithms-demo/data/train.csv"
gsutil cp $TRAINING_DATA_SOURCE $TRAINING_DATA_PATH

# Specify the Docker container URI specific to the algorithm.
IMAGE_URI="gcr.io/cloud-ml-algos/wide_deep_learner_cpu:latest"

Envía un trabajo de entrenamiento

Para enviar un trabajo, debes especificar algunos argumentos básicos del entrenamiento y algunos argumentos básicos relacionados con el algoritmo de amplitud y profundidad.

Argumentos generales para el trabajo de entrenamiento:

Argumentos del trabajo de entrenamiento
Argumento Descripción
job-id ID único para el trabajo de entrenamiento. Puedes usarlo para encontrar registros sobre el estado de tu trabajo de entrenamiento una vez que lo hayas enviado
job-dir La ruta de acceso de Cloud Storage en que AI Platform guarda los archivos de entrenamiento tras completar un trabajo de entrenamiento correctamente
scale-tier Especifica los tipos de máquina para el entrenamiento. Usa BASIC para seleccionar una configuración de una sola máquina.
master-image-uri El URI de Container Registry usado para especificar qué contenedor de Docker se usará en el trabajo de entrenamiento. Usa el contenedor para el algoritmo de amplitud y profundidad integrado definido anteriormente como IMAGE_URI
region Especifica la región disponible en la que se ejecuta tu trabajo de entrenamiento. Para este instructivo, puedes usar la región us-central1.

Argumentos específicos del algoritmo de amplitud y profundidad integrado:

Argumentos del algoritmo
Argumento Descripción
preprocess Argumento booleano que indica si en AI Platform se deben o no procesar previamente los datos.
model_type Indica el tipo de modelo que se entrenará: clasificación o regresión.
training_data_path Ubicación en Cloud Storage de los datos de entrenamiento, que debe ser un archivo CSV
learning_rate La tasa de aprendizaje usada por el optimizador lineal
max_steps Cantidad de pasos para ejecutar el entrenamiento
batch_size Cantidad de ejemplos para utilizar por paso de entrenamiento
dnn_learning_rate Tasa de aprendizaje que se utilizará en la parte de DNN del modelo
dnn_dropout Probabilidad de retirados
hidden_units Una string separada por comas que representa el número de unidades ocultas en cada capa
use_wide Si se configura, las columnas categóricas se usarán en la parte ancha del modelo de DNN.
embed_categories Si se configura, las columnas categóricas se usarán incrustadas y se utilizarán en la parte amplia del modelo.

Para obtener una lista detallada de todas las marcas de algoritmos de amplitud y profundidad, consulta la referencia del algoritmo de amplitud y profundidad integrado.

Console

  1. Deja Habilitar el procesamiento previo automático de los datos marcado.

  2. Para Ruta de acceso a los datos de entrenamiento, haz clic en Explorar. En el panel derecho, haz clic en el nombre del depósito en el que subiste los datos de entrenamiento y navega hasta tu archivo ai-platform_census_algorithms_data_train.csv.

  3. Deja los campos Datos de validación y Datos de prueba con su configuración predeterminada.

  4. En Directorio de salida, ingresa la ruta de acceso a tu depósito de Cloud Storage en el que deseas que se almacenen los resultados de tu trabajo de entrenamiento con AI Platform. Puedes rellenar la ruta de acceso de tu depósito de Cloud Storage directamente o hacer clic en el botón Explorar para seleccionarlo.

    A fin de mantener el orden, crea un directorio nuevo dentro de tu depósito de Cloud Storage para este trabajo de entrenamiento. Puedes hacerlo desde el panel Explorar.

    Haz clic en Siguiente.

  5. Para Tipo de modelo, selecciona Clasificación.

  6. Para Tipo de modelo, selecciona Clasificación.

  7. Deja todos los otros campos con su configuración predeterminada y, a continuación, haz clic en Siguiente.

  8. En la página Configuración del trabajo, haz lo siguiente:

    1. Ingresa un ID de trabajo único (como "wide_deep_example").
    2. Ingresa una región disponible (como "us-central1").
    3. Selecciona "Básico" para el nivel de escalamiento .

    Haz clic en Listo a fin de enviar el trabajo de entrenamiento.

gcloud

  1. Antes de usar gcloud a fin de enviar el trabajo, configura todos los argumentos para el trabajo de entrenamiento y el algoritmo como se muestra a continuación:

    DATASET_NAME="census"
    ALGORITHM="wide_deep"
    MODEL_TYPE="classification"
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    
    # Give a unique name to your training job.
    DATE="$(date '+%Y%m%d_%H%M%S')"
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    # Make sure you have access to this Cloud Storage bucket.
    JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
    
  2. Envía el trabajo:

    gcloud ai-platform jobs submit training $JOB_ID \
      --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
      -- \
      --preprocess --model_type=$MODEL_TYPE --batch_size=250 --learning_rate=0.1 \
      --dnn_learning_rate=0.005 --dnn_dropout=0.1 --hidden_units=10,10,10 \
      --use_wide --embed_categories \
      --max_steps=1000 --training_data_path=$TRAINING_DATA_PATH
    

  3. Una vez que se haya enviado correctamente el trabajo, puedes ver los registros mediante los comandos de gcloud siguientes:

    gcloud ai-platform jobs describe $JOB_ID
    gcloud ai-platform jobs stream-logs $JOB_ID
    

Conoce el directorio de tu trabajo

Una vez que tu trabajo de entrenamiento se completa correctamente, con AI Platform se crea un modelo entrenado en tu depósito de Cloud Storage, junto con otros artefactos. Puedes encontrar la estructura de directorio siguiente dentro de tu JOB_DIR:

  • model/ (un directorio de modelos guardados de TensorFlow que también contiene un archivo deployment_config.yaml)
    • saved_model.pb
    • deployment_config.yaml
  • artifacts/
    • metadata.json
  • processed_data/
    • training.csv
    • validation.csv
    • test.csv

Confirma que la estructura de tu directorio en JOB_DIR coincida con la siguiente:

gsutil ls -a $JOB_DIR/*

Implementa el modelo entrenado

AI Platform organiza tus modelos entrenados mediante los recursos de modelo y versión. Un modelo de AI Platform es un contenedor para las versiones de tu modelo de aprendizaje automático.

Para implementar un modelo, crea un recurso de modelo en AI Platform, crea una versión de ese modelo y usa el modelo y la versión para solicitar predicciones en línea.

Para obtener más información sobre cómo implementar modelos en AI Platform, consulta Implementar modelos de TensorFlow.

Console

  1. En la página Trabajos puedes encontrar una lista de todos tus trabajos de entrenamiento. Haz clic en el nombre del trabajo de entrenamiento que acabas de enviar ("wide_deep_example" o el nombre del trabajo que usaste).

  2. En la página Detalles del trabajo puedes ver el progreso general de tu trabajo, o haz clic en Ver registros para obtener una vista más detallada de su progreso.

  3. Cuando el trabajo se haya completado correctamente, aparecerá el botón Implementar modelo en la parte superior. Haz clic en Implementar modelo.

  4. Selecciona Implementar como nuevo modelo y, a continuación, ingresa un nombre de modelo, como "wide_deep_model". Luego, haz clic en Confirmar.

  5. En la página Crear versión, ingresa un nombre de versión, como "v1", y deja todos los otros campos con su configuración predeterminada. Haz clic en Guardar.

gcloud

El proceso de entrenamiento con el algoritmo de amplitud y profundidad integrado genera un archivo, deployment_config.yaml, que facilita la implementación de tu modelo en AI Platform para realizar predicciones.

  1. Copia el archivo en tu directorio local y visualiza su contenido de la manera siguiente:

    gsutil cp $JOB_DIR/model/deployment_config.yaml .
    cat deployment_config.yaml
    

    Tu archivo deployment_config.yaml debería ser similar al siguiente:

    deploymentUri: gs://[BUCKET_NAME]/algorithms_training/census_wide_deep_classification/model
    framework: TENSORFLOW
    labels:
      global_step: '1000'
      job_id: census_wide_deep_classification_20190227060114
      accuracy: '86'
    runtimeVersion: '1.12'
    
  2. Crea el modelo y la versión en AI Platform de la manera siguiente:

    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    gcloud ai-platform models create $MODEL_NAME --regions $REGION
    
    # Create a model and a version using the file above.
    VERSION_NAME="v_${DATE}"
    
    gcloud ai-platform versions create $VERSION_NAME \
      --model $MODEL_NAME \
      --config deployment_config.yaml
    

    La versión tarda unos minutos en crearse.

Obtén predicciones en línea

Cuando solicitas predicciones, debes asegurarte de que tus datos de entrada tengan el mismo formato que los de entrenamiento. Antes del entrenamiento, en AI Platform se procesan previamente tus datos mediante su transformación en el corpus que se muestra en metadata.json.

Con el modelo de TensorFlow Estimator, se aplica un procesamiento previo similar a tus datos de entrada antes de realizar las predicciones.

  1. Descarga los archivos de artefactos de entrenamiento y revisa metadata.json con el comando siguiente:

    gsutil cp $JOB_DIR/artifacts/* .
    
    # Let's look at the metadata.json file
    head metadata.json
    
  2. Prepara la entrada de predicción para una instancia de datos. Ten en cuenta que debes proporcionar cada instancia de datos como un objeto JSON con los campos siguientes:

    • csv_row, una string que contiene una fila de características separadas por comas en el mismo formato que las instancias usadas durante el entrenamiento
    • key, un identificador de string que es único para cada instancia. Esto actúa como una clave de instancia que aparece como parte del resultado de la predicción, por lo que puedes hacer coincidir cada predicción con la instancia de entrada correspondiente

      Esto es necesario para la predicción por lotes, ya que esta predicción procesa la entrada y guarda el resultado en un orden impredecible.

      Para la predicción en línea, que produce resultados en el mismo orden que la entrada que proporcionas, las claves de instancia son menos cruciales. En este ejemplo, solo se realizan predicciones en una instancia, por lo que el valor de la clave de instancia no es importante.

    Para enviar una solicitud de predicción en línea mediante la herramienta de línea de comandos de gcloud, como en este ejemplo, escribe cada instancia en una fila en un archivo JSON delimitado por saltos de línea.

    Ejecuta los comandos siguientes en tu terminal a fin de crear entradas para una sola instancia que puedas enviar a AI Platform Prediction, como se muestra a continuación:

     # A sample record from census dataset. Ground truth is >50K
    RAW_DATA_POINT='44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States'
    
     # Create a prediction request file
    echo "{\"csv_row\": \"$RAW_DATA_POINT\", \"key\": \"dummy-key\"}" > sample_input.json
    
    # Check the prediction request file.
    cat sample_input.json
    
  3. Envía la solicitud de predicción de la manera siguiente:

    gcloud ai-platform predict \
      --model $MODEL_NAME \
      --version $VERSION_NAME \
      --json-instances sample_input.json
    

Lo más probable es que el resultado de la predicción incluya la clase >50K', lo que indica que con el modelo implementado se predice que la persona cuya información proporcionaste gana un salario superior a $50,000. (Dado que el entrenamiento no es determinista, tu modelo puede diferir).

Acerca de los datos

El Conjunto de datos de ingresos del censo que se usa en esta muestra para el entrenamiento está alojado en el UC Irvine Machine Learning Repository.

Datos del censo, 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.

Pasos siguientes

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.