Vertex AI Workbench: Image-Klassifizierungsmodell mit Lerntransfer und Notebook-Executor erstellen

1. Übersicht

In diesem Lab erfahren Sie, wie Sie mit Vertex AI Workbench Notebook-Ausführungen konfigurieren und starten.

Lerninhalte

Die folgenden Themen werden behandelt:

  • Parameter in einem Notebook verwenden
  • Notebook-Ausführungen über die Vertex AI Workbench-UI konfigurieren und starten

Die Gesamtkosten für die Ausführung dieses Labs in Google Cloud betragen etwa 2$.

2. Einführung in Vertex AI

In diesem Lab wird das neueste KI-Produkt von Google Cloud verwendet. Vertex AI vereint die ML-Angebote von Google Cloud in einer nahtlosen Entwicklungsumgebung. Bisher musste auf mit AutoML trainierte und benutzerdefinierte Modelle über verschiedene Dienste zugegriffen werden. Das neue Angebot kombiniert diese und weitere, neue Produkte zu einer einzigen API. Sie können auch vorhandene Projekte zu Vertex AI migrieren. Wenn Sie Feedback haben, lesen Sie die Supportseite.

Vertex AI umfasst viele verschiedene Produkte zur Unterstützung von End-to-End-ML-Workflows. In diesem Lab konzentrieren wir uns auf Vertex AI Workbench.

Mit Vertex AI Workbench können Nutzer schnell End-to-End-Notebook-basierte Workflows erstellen. Dazu ist eine enge Integration mit Datendiensten wie Dataproc, Dataflow, BigQuery und Dataplex sowie mit Vertex AI erforderlich. Data Scientists können sich mit GCP-Datendiensten verbinden, Datasets analysieren, mit verschiedenen Modellierungstechniken experimentieren, trainierte Modelle in der Produktion bereitstellen und MLOps über den gesamten Modelllebenszyklus hinweg verwalten.

3. Anwendungsfallübersicht

In diesem Lab verwenden Sie Transfer Learning, um ein Bildklassifizierungsmodell für das DeepWeeds-Dataset aus TensorFlow Datasets zu trainieren. Mit TensorFlow Hub experimentieren Sie mit Featurevektoren, die aus verschiedenen Modellarchitekturen wie ResNet50, Inception und MobileNet extrahiert wurden. Alle wurden mit dem ImageNet-Benchmark-Dataset vortrainiert. Über den Notebook-Executor in der Vertex AI Workbench-UI starten Sie Jobs in Vertex AI Training, die diese vortrainierten Modelle verwenden und die letzte Ebene neu trainieren, um die Klassen aus dem DeepWeeds-Dataset zu erkennen.

4. Umgebung einrichten

Für dieses Codelab benötigen Sie ein Google Cloud-Projekt mit aktivierter Abrechnung. Eine Anleitung zum Erstellen eines Projekts finden Sie hier.

Schritt 1: Compute Engine API aktivieren

Rufen Sie Compute Engine auf und wählen Sie Aktivieren aus, falls die API noch nicht aktiviert ist.

Schritt 2: Vertex AI API aktivieren

Rufen Sie den Bereich „Vertex AI“ in der Cloud Console auf und klicken Sie auf **Vertex AI API aktivieren**.

Vertex AI-Dashboard

Schritt 3: Vertex AI Workbench-Instanz erstellen

Klicken Sie im Bereich „Vertex AI“ der Cloud Console auf „Workbench“:

Vertex AI-Menü

Aktivieren Sie die Notebooks API, falls sie noch nicht aktiviert ist.

Notebook_api

Klicken Sie nach der Aktivierung auf VERWALTETE NOTEBOOKS:

Notebooks_UI

Wählen Sie dann NEUES NOTEBOOK aus.

new_notebook

Geben Sie Ihrem Notebook einen Namen und klicken Sie dann auf Erweiterte Einstellungen.

create_notebook

Aktivieren Sie unter „Erweiterte Einstellungen“ das Herunterfahren bei Inaktivität und legen Sie die Anzahl der Minuten auf 60 fest. Das bedeutet, dass Ihr Notebook automatisch heruntergefahren wird, wenn es nicht verwendet wird, damit keine unnötigen Kosten entstehen.

idle_timeout

Sie können alle anderen erweiterten Einstellungen unverändert lassen.

Klicken Sie anschließend auf Erstellen.

Nachdem die Instanz erstellt wurde, klicken Sie auf JupyterLab öffnen.

open_jupyterlab

Wenn Sie eine neue Instanz zum ersten Mal verwenden, werden Sie aufgefordert, sich zu authentifizieren.

Authentifizieren

Vertex AI Workbench verfügt über eine Kompatibilitätsebene für die Berechnung, mit der Sie Kernel für TensorFlow, PySpark, R usw. über eine einzige Notebook-Instanz starten können. Nach der Authentifizierung können Sie im Launcher den Typ des Notebooks auswählen, das Sie verwenden möchten.

Wählen Sie für dieses Lab den TensorFlow 2-Kernel aus.

tf_kernel

5. Trainingscode schreiben

Das DeepWeeds-Dataset besteht aus 17.509 Bildern von acht verschiedenen Unkrautarten,die in Australien heimisch sind. In diesem Abschnitt schreiben Sie den Code, um das DeepWeeds-Dataset vorzuverarbeiten und ein Bildklassifizierungsmodell mit Featurevektoren zu erstellen und zu trainieren, die von TensorFlow Hub heruntergeladen wurden.

Sie müssen die folgenden Code-Snippets in die Zellen Ihres Notebooks kopieren. Das Ausführen der Zellen ist optional.

Schritt 1: Dataset herunterladen und vorverarbeiten

Installieren Sie zuerst die Nightly-Version von TensorFlow Datasets, um sicherzustellen, dass Sie die neueste Version des DeepWeeds-Datasets verwenden.

!pip install tfds-nightly

Importieren Sie dann die erforderlichen Bibliotheken:

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

Laden Sie die Daten aus TensorFlow Datasets herunter und extrahieren Sie die Anzahl der Klassen und die Dataset-Größe.

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

Definieren Sie eine Vorverarbeitungsfunktion, um die Bilddaten um 255 zu skalieren.

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

Das DeepWeeds-Dataset enthält keine Aufteilung in Trainings- und Validierungsdaten. Es enthält nur ein Trainings-Dataset. Im folgenden Code werden 80% dieser Daten für das Training und die restlichen 20% für die Validierung verwendet.

# 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)

Schritt 2: Modell erstellen

Nachdem Sie Trainings- und Validierungs-Datasets erstellt haben, können Sie Ihr Modell erstellen. TensorFlow Hub bietet Featurevektoren, die vortrainierte Modelle ohne die oberste Klassifizierungsebene sind. Sie erstellen einen Feature-Extraktor, indem Sie das vortrainierte Modell mit hub.KerasLayer umschließen. Dadurch wird ein TensorFlow SavedModel als Keras-Ebene umschlossen. Anschließend fügen Sie eine Klassifizierungsebene hinzu und erstellen ein Modell mit der Keras Sequential API.

Definieren Sie zuerst den Parameter feature_extractor_model. Das ist der Name des TensorFlow Hub-Featurevektors, den Sie als Grundlage für Ihr Modell verwenden.

feature_extractor_model = "inception_v3"

Als Nächstes machen Sie diese Zelle zu einer Parameterzelle, mit der Sie zur Laufzeit einen Wert für feature_extractor_model übergeben können.

Wählen Sie zuerst die Zelle aus und klicken Sie im rechten Bereich auf den Attributprüfer.

property_inspector

Mit Tags können Sie Ihrem Notebook auf einfache Weise Metadaten hinzufügen. Geben Sie „parameters“ in das Feld „Tag hinzufügen“ ein und drücken Sie die Eingabetaste. Wenn Sie später die Ausführung konfigurieren, übergeben Sie die verschiedenen Werte, in diesem Fall das TensorFlow Hub-Modell, das Sie testen möchten. Sie müssen das Wort „parameters“ (und kein anderes Wort) eingeben, da der Notebook-Executor so weiß, welche Zellen parametrisiert werden müssen.

add_tag

Sie können den Attributprüfer schließen, indem Sie noch einmal auf das Symbol mit den beiden Zahnrädern klicken.

Erstellen Sie eine neue Zelle und definieren Sie die tf_hub_uri. Hier verwenden Sie Stringinterpolation, um den Namen des vortrainierten Modells zu ersetzen, das Sie als Basismodell für eine bestimmte Ausführung Ihres Notebooks verwenden möchten. Standardmäßig ist feature_extractor_model auf "inception_v3" festgelegt. Andere gültige Werte sind "resnet_v2_50" oder "mobilenet_v1_100_224". Weitere Optionen finden Sie im TensorFlow Hub-Katalog.

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

Erstellen Sie als Nächstes den Feature-Extraktor mit hub.KerasLayer und übergeben Sie die tf_hub_uri, die Sie oben definiert haben. Legen Sie das Argument trainable=False fest, um die Variablen einzufrieren, sodass beim Training nur die neue Klassifizierungsebene geändert wird, die Sie oben hinzufügen.

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

Um das Modell zu vervollständigen, umschließen Sie die Feature-Extraktor-Ebene mit einem tf.keras.Sequential-Modell und fügen Sie eine vollständig verbundene Ebene für die Klassifizierung hinzu. Die Anzahl der Einheiten in diesem Klassifizierungskopf sollte der Anzahl der Klassen im Dataset entsprechen:

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

Kompilieren und trainieren Sie das Modell.

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=3)

6. Notebook ausführen

Klicken Sie oben im Notebook auf das Symbol Executor.

executor

Schritt 1: Trainingsjob konfigurieren

Geben Sie Ihrer Ausführung einen Namen und geben Sie einen Storage-Bucket in Ihrem Projekt an.

executor_config

Legen Sie den Maschinentyp auf 4 CPUs, 15 GB RAM fest.

Fügen Sie 1 NVIDIA-GPU hinzu.

Legen Sie die Umgebung auf TensorFlow Enterprise 2.6 (GPU) fest.

Wählen Sie „Einmalige Ausführung“ aus.

Schritt 2: Parameter konfigurieren

Klicken Sie auf das Drop-down-Menü ERWEITERTE OPTIONEN , um den Parameter festzulegen. Geben Sie im Feld feature_extractor_model=resnet_v2_50 ein. Dadurch wird inception_v3, der Standardwert, den Sie für diesen Parameter im Notebook festgelegt haben, mit resnet_v2_50 überschrieben.

advanced_options

Das Kästchen Standarddienstkonto verwenden kann aktiviert bleiben.

Klicken Sie dann auf SENDEN.

Schritt 3: Ergebnisse prüfen

Auf dem Tab „Ausführungen“ in der Console-UI sehen Sie den Status der Notebook-Ausführung.

executions_UI

Wenn Sie auf den Namen der Ausführung klicken, gelangen Sie zum Vertex AI Training-Job, in dem Ihr Notebook ausgeführt wird.

vertex_training

Wenn der Job abgeschlossen ist, können Sie das Ausgabenotebook aufrufen, indem Sie auf ERGEBNIS ANZEIGEN klicken.

view_result

Im Ausgabenotebook sehen Sie, dass der Wert für feature_extractor_model mit dem Wert überschrieben wurde, den Sie zur Laufzeit übergeben haben.

param_cells

🎉 Das wars! 🎉

Sie haben gelernt, wie Sie Vertex AI Workbench für folgende Aufgaben verwenden:

  • Parameter in einem Notebook verwenden
  • Notebook-Ausführungen über die Vertex AI Workbench-UI konfigurieren und starten

Weitere Informationen zu den verschiedenen Bereichen von Vertex AI finden Sie in der Dokumentation.

7. Bereinigen

Standardmäßig werden verwaltete Notebooks nach 180 Minuten Inaktivität automatisch heruntergefahren. Wenn Sie die Instanz manuell herunterfahren möchten, klicken Sie im Bereich „Vertex AI Workbench“ der Console auf die Schaltfläche „Beenden“. Wenn Sie das Notebook vollständig löschen möchten, klicken Sie auf die Schaltfläche „Löschen“.

Löschen

Wenn Sie den Storage-Bucket löschen möchten, rufen Sie in der Cloud Console über das Navigationsmenü „Storage“ auf, wählen Sie den Bucket aus und klicken Sie auf „Löschen“:

Speicher löschen