Comienza a usar el algoritmo integrado BERT

En este instructivo, se muestra cómo entrenar el modelo Representaciones de codificador bidireccional de transformadores (BERT) en AI Platform Training.

BERT es un método que permite realizar un entrenamiento previo de representaciones lingüísticas. El entrenamiento previo se refiere a la manera en que BERT se entrena primero en una gran fuente de texto, como Wikipedia. A continuación, puedes aplicar los resultados del entrenamiento a otras tareas de procesamiento de lenguaje natural (PLN), como respuesta a preguntas y análisis de opiniones. Con BERT y AI Platform Training, puedes entrenar una variedad de modelos de PLN en alrededor de 30 minutos.

Para obtener más información sobre BERT, consulta los siguientes recursos:

Objetivos

  • Crea un bucket de Cloud Storage para almacenar el resultado de tu modelo.
  • Ejecutar el trabajo de entrenamiento
  • Verificar los resultados de salida

Antes de comenzar este instructivo, verifica que tu proyecto de Google Cloud esté configurado correctamente.

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Prepara los datos

En este instructivo, no se requerirá un procesamiento previo ni la descarga de datos. Todos los datos y los puntos de control del modelo necesarios están disponibles en depósitos de almacenamiento público. Si te interesa ese proceso, consulta el instructivo de Cloud TPU, que abarca la creación de este conjunto de datos desde la línea de comandos.

Envía un trabajo de entrenamiento

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

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 buscar registros del estado de tu trabajo de entrenamiento una vez que lo hayas enviado.
job-dir Es la ruta de acceso de Cloud Storage en la que AI Platform Training guarda los archivos de entrenamiento tras completar un trabajo de entrenamiento de forma correcta.
scale-tier Especifica los tipos de máquinas 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 integrado BERT 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 entrenamiento del algoritmo integrado BERT con el conjunto de datos proporcionado:

Argumentos del algoritmo
Argumento Valor Descripción
mode train_and_eval Indica si el modelo se entrenará de forma precisa o no, o si se exportará o no.
train_dataset_path gs://cloud-tpu-checkpoints/bert/classification/mnli_train.tf_record La ruta de acceso de Cloud Storage donde se almacenan los datos de entrenamiento.
eval_dataset_path gs://cloud-tpu-checkpoints/bert/classification/mnli_eval.tf_record Ruta de acceso de Cloud Storage donde se almacenan los datos de evaluación.
input_meta_data_path gs://cloud-tpu-checkpoints/bert/classification/mnli_meta_data Ruta de acceso de Cloud Storage donde se almacena el esquema de entrada.
bert_config_file gs://cloud-tpu-checkpoints/bert/keras_bert/uncased_L-24_H-1024_A-16/bert_config.json Ruta de acceso de Cloud Storage donde se almacena el archivo de configuración de BERT.
init_checkpoint gs://cloud-tpu-checkpoints/bert/keras_bert/uncased_L-24_H-1024_A-16/bert_model.ckpt Punto de control inicial para la optimización (generalmente, un modelo BERT previamente entrenado).
train_batch_size 32 Tamaño del lote para el entrenamiento.
eval_batch_size 32 Tamaño del lote para la evaluación.
learning_rate 2e-5 Tasa de aprendizaje que usa el optimizador Adam.
num_train_epochs 1 Cantidad de ciclos de entrenamiento que se ejecutarán (solo disponible en modo train_and_eval).
steps_per_loop 1000 La cantidad de pasos por bucle en modo de grafo.

Para obtener una lista detallada de todas las otras marcas de algoritmos BERT, consulta la referencia del algoritmo BERT integrado.

Ejecuta el trabajo de entrenamiento

  1. Navega a la página AI Platform > Trabajos:

Página AI Platform > Trabajos

  1. En la parte superior de la página, haz clic en el botón “Trabajo de entrenamiento nuevo” y selecciona “Entrenamiento de algoritmos integrados”.

  2. Selecciona BERT como tu algoritmo de entrenamiento

  3. Usa el botón Examinar para marcar los conjuntos de datos de entrenamiento y evaluación de tu depósito de Cloud Storage y elige el directorio de salida.

  4. En la página siguiente, usa los valores de argumento anteriores para configurar el trabajo de entrenamiento.

  5. Asigna un nombre al trabajo de entrenamiento y usa el tipo de máquina BASIC_TPU.

  6. Haz clic en "Enviar" para iniciar tu trabajo.

Conoce tu directorio de trabajos

Después de completar con éxito un trabajo de entrenamiento, AI Platform Training crea un modelo entrenado en el bucket de Cloud Storage, junto con otros artefactos. Encontrarás la siguiente estructura de directorio dentro de tu JOB_DIR:

  • model/ (un directorio de modelo guardado de TensorFlow)
    • saved_model.pb
    • assets/
    • variables/
  • summaries/ (registro de entrenamiento y evaluación)
    • eval/
    • train/
  • varios archivos de punto de control (creados y usados durante el entrenamiento)
    • checkpoint
    • ctl_checkpoint-1.data-00000-of-00002
    • ctl_checkpoint-1.index

Confirma que la estructura de directorio en JOB_DIR coincida con la estructura descrita en la lista anterior:

gcloud storage ls -a $JOB_DIR/*

Implementa el modelo entrenado

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 de modelo en AI Platform Prediction, crea una versión de ese modelo y, luego, usa el modelo y la versión para solicitar predicciones en línea.

Obtén más información sobre cómo implementar modelos en AI Platform Prediction.

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.

  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 modelo nuevo” y, luego, ingresa un nombre de modelo. 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.

  6. En la página Detalles del modelo, se muestra el nombre de tu versión. La versión lleva unos minutos en crearse. Cuando la versión esté lista, se mostrará un ícono de marca de verificación junto al nombre de la versión.

  7. Haz clic en el nombre de la versión (v1) para navegar a la página Detalles de la versión. En el siguiente paso de este instructivo, enviarás una solicitud de predicción.

Obtén predicciones en línea

Cuando solicitas predicciones, debes formatear los datos de entrada como JSON de la manera que el modelo prevé. Los modelos actuales de BERT no procesan previamente las entradas de forma automática.

Console

  1. En la página Detalles de la versión de v1, la versión que acabas de crear, puedes enviar una solicitud de predicción de muestra.

    Selecciona la pestaña Probar y usar.

  2. Copia la siguiente muestra en el campo de entrada:

      {
        "instances": [
          {
            "input_mask": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            "input_type_ids":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            "input_word_ids": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
            }
          ]
        }
    
  3. Haga clic en Test.

    Espera un momento. Se debería mostrar un vector de predicción.

¿Qué sigue?

En este instructivo, entrenaste el modelo BERT mediante un conjunto de datos de muestra. En la mayoría de los casos, los resultados de esta capacitación no se pueden usar para inferencias. Para usar un modelo de inferencia, puedes entrenar los datos en un conjunto de datos disponible públicamente o en tu propio conjunto de datos. Los modelos entrenados en Cloud TPU requieren que los conjuntos de datos tengan el formato TFRecord.

Puedes usar la muestra de la herramienta de conversión de conjuntos de datos para convertir un conjunto de datos de clasificación de imágenes en formato TFRecord. Si no usas un modelo de clasificación de imágenes, deberás convertir tú mismo el conjunto de datos en formato TFRecord. Para obtener más información, consulta TFRecord y tf.Example.