Vertex AI Workbench: Compila un modelo de clasificación de imágenes con aprendizaje por transferencia y el ejecutor de notebooks

1. Resumen

En este lab, aprenderá a configurar e iniciar ejecuciones de notebooks con Vertex AI Workbench.

Qué aprenderá

Obtendrás información sobre cómo hacer las siguientes acciones:

  • Usa parámetros en un notebook
  • Configurar e iniciar ejecuciones de notebooks desde la IU de Vertex AI Workbench

El costo total de la ejecución de este lab en Google Cloud es de aproximadamente $2.

2. Introducción a Vertex AI

En este lab, se utiliza la oferta de productos de IA más reciente de Google Cloud. Vertex AI integra las ofertas de AA de Google Cloud en una experiencia de desarrollo fluida. Anteriormente, se podía acceder a los modelos personalizados y a los entrenados con AutoML mediante servicios independientes. La nueva oferta combina ambos en una sola API, junto con otros productos nuevos. También puede migrar proyectos existentes a Vertex AI. Para enviarnos comentarios, visite la página de asistencia.

Vertex AI incluye muchos productos distintos para respaldar flujos de trabajo de AA de extremo a extremo. Este lab se centrará en Vertex AI Workbench.

Vertex AI Workbench ayuda a los usuarios a compilar rápidamente flujos de trabajo de extremo a extremo basados en notebooks mediante una integración profunda con servicios de datos (como Dataproc, Dataflow, BigQuery y Dataplex) y Vertex AI. Permite que los científicos de datos se conecten a servicios de datos de GCP, analicen conjuntos de datos, experimenten con diferentes técnicas de modelado, implementen modelos entrenados en la producción y administren las MLOps durante el ciclo de vida del modelo.

3. Descripción general de casos de uso

En este lab, utilizará el aprendizaje por transferencia para entrenar un modelo de clasificación de imágenes en el conjunto de datos DeepWeeds de TensorFlow Datasets. UsarásTensorFlow Hub para experimentar con vectores de atributos extraídos de diferentes arquitecturas de modelos, comoResNet50, El origen yMobileNet, todos previamente entrenados en elConjunto de datos de comparativas de ImageNet , Cuando aproveche el ejecutor de notebooks a través de la IU de Vertex AI Workbench, iniciará trabajos en el entrenamiento de Vertex AI que usen estos modelos previamente entrenados y volverá a entrenar la última capa para que reconozca las clases del conjunto de datos DeepWeeds.

4. Configure el entorno

Para ejecutar este codelab, necesitarás un proyecto de Google Cloud Platform con la facturación habilitada. Para crear un proyecto, sigue estas instrucciones.

Paso 1: Habilita la API de Compute Engine

Ve a Compute Engine y selecciona Habilitar si aún no está habilitado.

Paso 2: Habilita la API de Vertex AI

Navegue hasta la sección de Vertex AI en Cloud Console y haga clic en Habilitar API de Vertex AI.

Panel de Vertex AI

Paso 3: Crea una instancia de Vertex AI Workbench

En la sección de Vertex AI de Cloud Console, haga clic en Workbench:

Menú de Vertex AI

Habilita la API de Notebooks si aún no lo está.

Notebook_api

Una vez habilitada, haga clic en NOTED NOTEBOOK:

IU_de Notebooks

Luego, selecciona NUEVO NOTEBOOK.

new_notebook

Asigne un nombre a su notebook y, luego, haga clic en Configuración avanzada.

crear_notebook

En Configuración avanzada, habilita el cierre inactivo y establece la cantidad de minutos en 60. Esto significa que el notebook se cerrará automáticamente cuando no esté en uso para que no se generen costos innecesarios.

idle_timeout

Puede dejar el resto de la configuración avanzada tal como está.

Luego, haga clic en Crear.

Una vez que se haya creado la instancia, selecciona Abrir JupyterLab.

open_jupyterlab

La primera vez que uses una instancia nueva, se te solicitará que te autentiques.

autenticar

Vertex AI Workbench tiene una capa de compatibilidad de procesamiento que te permite iniciar kernels para TensorFlow, PySpark, R, etc., desde una sola instancia de notebook. Después de la autenticación, podrás seleccionar el tipo de notebook que desees usar en el selector.

Para este lab, seleccione el kernel de TensorFlow 2.

tf_kernel

5. Escribir código de entrenamiento

El conjunto de datos de DeepWeeds consta de 17,509 imágenes que capturan ocho especies de hierbas nativas de Australia. En esta sección, escribirás el código para preprocesar el conjunto de datos de DeepWeeds y compilar y entrenar un modelo de clasificación de imágenes usando vectores de atributos descargados de TensorFlow Hub.

Deberá copiar los siguientes fragmentos de código en las celdas de su notebook. La ejecución de las celdas es opcional.

Paso 1: Descarga y procesa de forma previa el conjunto de datos

Primero, importa las bibliotecas necesarias:

import tensorflow as tf
import tensorflow_datasets as tfds
import tensorflow_hub as hub

Descarga los datos de los conjuntos de datos de TensorFlow y extrae la cantidad de clases y el tamaño del conjunto de datos.

data, info = tfds.load(name='deep_weeds', as_supervised=True, with_info=True)
NUM_CLASSES = info.features['label'].num_classes
DATASET_SIZE = info.splits['train'].num_examples

Define una función de procesamiento previo para escalar los datos de la imagen en 255.

def preprocess_data(image, label):
  image = tf.image.resize(image, (300,300))
  return tf.cast(image, tf.float32) / 255., label

El conjunto de datos de DeepWeeds no incluye divisiones de entrenamiento y validación. Solo viene con un conjunto de datos de entrenamiento. En el siguiente código, usará el 80% de esos datos para entrenamiento y el 20% restante para validación.

# Create train/validation splits

# Shuffle dataset
dataset = data['train'].shuffle(1000)

train_split = 0.8
val_split = 0.2
train_size = int(train_split * DATASET_SIZE)
val_size = int(val_split * DATASET_SIZE)

train_data = dataset.take(train_size)
train_data  = train_data.map(preprocess_data)
train_data  = train_data.batch(64)

validation_data = dataset.skip(train_size)
validation_data  = validation_data.map(preprocess_data)
validation_data  = validation_data.batch(64)

Paso 2: Crea el modelo

Ahora que ya creaste conjuntos de datos de entrenamiento y validación, estás listo para compilar tu modelo. TensorFlow Hub proporciona vectores de atributos, que son modelos previamente entrenados sin la capa de clasificación superior. Para crear un extractor de atributos, une el modelo previamente entrenado con hub.KerasLayer, que une un modelo guardado de TensorFlow como una capa de Keras. Luego, agregarás una capa de clasificación y crearás un modelo con la API secuencial de Keras.

Primero, define el parámetro feature_extractor_model, que es el nombre del vector de atributos de TensorFlow Hub que usarás como base para tu modelo.

feature_extractor_model = "inception_v3"

A continuación, convertirás esta celda en una de parámetros, lo que te permitirá pasar un valor para feature_extractor_model durante el tiempo de ejecución.

Primero, seleccione la celda y haga clic en el inspector de propiedades, en el panel derecho.

Property_inspector

Las etiquetas son una forma sencilla de agregar metadatos a tu notebook. Escriba "parameters" en el cuadro Agregar etiqueta y presione Intro. Más adelante, cuando configures la ejecución, pasarás los diferentes valores, en este caso, el modelo de TensorFlow Hub que quieras probar. Tenga en cuenta que debe escribir la palabra "parámetros" (y no cualquier otra palabra), ya que es la forma en que el ejecutor de notebooks sabe qué celdas parametrizar.

Agregar etiqueta

Para cerrar el inspector de propiedades, vuelve a hacer clic en el ícono de ajustes dobles.

Crea una celda nueva y define el tf_hub_uri, en el que usarás la interpolación de strings para sustituir el nombre del modelo previamente entrenado que deseas usar como modelo base para una ejecución específica de tu notebook. De forma predeterminada, configuraste feature_extractor_model en "inception_v3", pero otros valores válidos son "resnet_v2_50" o "mobilenet_v1_100_224". Puedes explorar las opciones adicionales en el catálogo de TensorFlow Hub.

tf_hub_uri = f"https://tfhub.dev/google/imagenet/{feature_extractor_model}/feature_vector/5"

A continuación, crea el extractor de atributos con hub.KerasLayer y pasa el tf_hub_uri que definiste antes. Configura el argumento trainable=False para inmovilizar las variables, de modo que el entrenamiento solo modifique la nueva capa del clasificador que agregarás.

feature_extractor_layer = hub.KerasLayer(
    tf_hub_uri,
    trainable=False)

Para completar el modelo, une la capa del extractor de atributos en un modelo tf.keras.Sequential y agrega una capa completamente conectada para la clasificación. La cantidad de unidades de este encabezado de clasificación debe ser igual a la cantidad de clases del conjunto de datos:

model = tf.keras.Sequential([
  feature_extractor_layer,
  tf.keras.layers.Dense(units=NUM_CLASSES)
])

Por último, compila y ajusta el modelo.

model.compile(
  optimizer=tf.keras.optimizers.Adam(),
  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
  metrics=['acc'])

model.fit(train_data, validation_data=validation_data, epochs=20)

6. Ejecutar notebook

Haga clic en el ícono de Ejecutor en la parte superior del notebook.

ejecutor

Paso 1: Configura el trabajo de entrenamiento

Asigna un nombre a la ejecución y proporciona un bucket de almacenamiento para tu proyecto.

configuración_ejecutor

Establece el tipo de máquina en 4 CPU, 15 GB de RAM.

Además, agrega 1 GPU NVIDIA.

Establece el entorno en TensorFlow Enterprise 2.6 (GPU).

Elige Ejecución única.

Paso 2: Configure los parámetros

Haz clic en el menú desplegable OPCIONES AVANZADAS para establecer el parámetro. En el cuadro, escribe feature_extractor_model=resnet_v2_50. Esto anulará inception_v3, el valor predeterminado que estableciste para este parámetro en el notebook, con resnet_v2_50.

Opciones avanzadas

Puedes marcar la casilla Usar cuenta de servicio predeterminada.

Luego, haga clic en ENVIAR.

Paso 3: Examina los resultados

En la pestaña Executions de la IU de Console, podrá ver el estado de su ejecución.

IU de ejecuciones

Si hace clic en el nombre de la ejecución, se lo redireccionará al trabajo de entrenamiento de Vertex AI, en el que se ejecuta su notebook.

entrenamiento de vértices

Cuando se complete su trabajo, podrá ver el notebook de salida si hace clic en VIEW RESULT.

vista_resultado

En el notebook de salida, verás que se reemplazó el valor de feature_extractor_model por el valor que pasaste durante el tiempo de ejecución.

celdas de parámetros

🎉 ¡Felicitaciones! 🎉

Aprendiste a usar Vertex AI Workbench para hacer lo siguiente:

  • Usa parámetros en un notebook
  • Configurar e iniciar ejecuciones de notebooks desde la IU de Vertex AI Workbench

Para obtener más información sobre las diferentes partes de Vertex AI, consulte la documentación.

7. Limpieza

De forma predeterminada, los notebooks administrados se cierran automáticamente después de 180 minutos de inactividad. Si desea cerrar la instancia de forma manual, haga clic en el botón Detener en la sección Vertex AI Workbench de la consola. Si deseas borrar el notebook por completo, haz clic en el botón Borrar.

borrar

Para borrar el bucket de Storage, en el menú de navegación de Cloud Console, navegue a Storage, seleccione su bucket y haga clic en Borrar:

Borrar almacenamiento