1. Übersicht
In diesem Lab lernen Sie, wie Sie Notebookausführungen mit Vertex AI Workbench konfigurieren und starten.
Lerninhalte
Die folgenden Themen werden behandelt:
- Parameter in einem Notebook verwenden
- Notebookausführungen über die Vertex AI Workbench-UI konfigurieren und starten
Die Gesamtkosten für das Lab in Google Cloud belaufen sich auf 2$.
2. Einführung in Vertex AI
In diesem Lab wird das neueste KI-Produktangebot von Google Cloud verwendet. Vertex AI integriert die ML-Angebote in Google Cloud für eine nahtlose Entwicklung. Bisher konnten auf mit AutoML trainierte Modelle und benutzerdefinierte Modelle über separate Dienste zugegriffen werden. Das neue Angebot kombiniert beide zusammen mit anderen neuen Produkten in einer einzigen API. Sie können auch vorhandene Projekte zu Vertex AI migrieren. Wenn du Feedback hast, sieh auf der Supportseite nach.
Vertex AI enthält viele verschiedene Produkte zur Unterstützung von End-to-End-ML-Workflows. In diesem Lab liegt der Schwerpunkt auf Vertex AI Workbench.
Mit Vertex AI Workbench können Nutzer schnell End-to-End-Notebook-basierte Workflows erstellen, da sie tief in Datendienste wie Dataproc, Dataflow, BigQuery und Dataplex sowie Vertex AI eingebunden sind. Damit können Data Scientists eine Verbindung zu GCP-Datendiensten herstellen, Datensätze analysieren, mit verschiedenen Modellierungstechniken experimentieren, trainierte Modelle in der Produktion bereitstellen und MLOps während des gesamten Modelllebenszyklus verwalten.
3. Anwendungsfall – Übersicht
In diesem Lab nutzen Sie Lerntransfers, um ein Bildklassifizierungsmodell mit dem DeepWeeds-Dataset aus TensorFlow-Datasets zu trainieren. Sie verwenden TensorFlow Hub, um mit Feature-Vektoren zu experimentieren, die aus verschiedenen Modellarchitekturen wie ResNet50, Inception und MobileNet extrahiert wurden. Diese Modelle wurden alle auf dem ImageNet-Benchmark-Dataset vortrainiert. Wenn Sie den Notebook-Executor über die Vertex AI Workbench-UI nutzen, starten Sie Jobs in Vertex AI Training, die diese vortrainierten Modelle verwenden, und trainieren die letzte Ebene noch einmal, um die Klassen aus dem DeepWeeds-Dataset zu erkennen.
4. Umgebung einrichten
Sie benötigen ein Google Cloud Platform-Projekt mit aktivierter Abrechnung, um dieses Codelab auszuführen. Eine Anleitung zum Erstellen eines Projekts finden Sie hier.
Schritt 1: Compute Engine API aktivieren
Gehen Sie zu Compute Engine und wählen Sie Aktivieren aus, falls dies noch nicht geschehen ist.
Schritt 2: Vertex AI API aktivieren
Rufen Sie in der Cloud Console den Bereich Vertex AI auf und klicken Sie auf Vertex AI API aktivieren.
Schritt 3: Vertex AI Workbench-Instanz erstellen
Klicken Sie im Bereich Vertex AI der Cloud Console auf Workbench:
Aktivieren Sie die Notebooks API, falls sie noch nicht aktiviert ist.
Klicken Sie nach der Aktivierung auf VERWALTETE NOTEBOOKS:
Wählen Sie dann NEUES NOTIZBUCH aus.
Geben Sie Ihrem Notebook einen Namen und klicken Sie auf Erweiterte Einstellungen.
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 bei Nichtgebrauch automatisch heruntergefahren wird, sodass Ihnen keine unnötigen Kosten entstehen.
Alle anderen erweiterten Einstellungen können Sie unverändert lassen.
Klicken Sie dann auf Erstellen.
Wählen Sie nach dem Erstellen der Instanz JupyterLab öffnen aus.
Wenn Sie eine neue Instanz zum ersten Mal verwenden, werden Sie zur Authentifizierung aufgefordert.
Vertex AI Workbench bietet eine Computing-Kompatibilitätsebene, mit der Sie Kernel für TensorFlow, PySpark, R usw. über eine einzige Notebookinstanz starten können. Nach der Authentifizierung können Sie im Launcher den Notebooktyp auswählen, den Sie verwenden möchten.
Wählen Sie für dieses Lab den TensorFlow 2-Kernel aus.
5. Trainingscode schreiben
Das DeepWeeds-Dataset besteht aus 17.509 Bildern, die acht verschiedene, in Australien heimische Unkrautarten abbilden. In diesem Abschnitt schreiben Sie den Code, um den DeepWeeds-Datensatz vorzuverarbeiten und ein Bildklassifizierungsmodell mithilfe von Featurevektoren zu erstellen und zu trainieren, die aus TensorFlow Hub heruntergeladen wurden.
Sie müssen die folgenden Code-Snippets in die Zellen Ihres Notebooks kopieren. Die Ausführung der Zellen ist optional.
Schritt 1: Dataset herunterladen und vorverarbeiten
Installieren Sie zuerst die nächtliche Version der TensorFlow-Datasets, damit wir die neueste Version des DeepWeeds-Datasets abrufen können.
!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
Der DeepWeeds-Dataset enthält keine Trainings-/Validierungsaufteilungen. Es ist nur mit einem Trainingsdatensatz ausgestattet. Im folgenden Code verwenden Sie 80% dieser Daten für das Training und die restlichen 20% für die Validierung.
# 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 Feature-Vektoren, also vortrainierte Modelle ohne die oberste Klassifizierungsschicht. Sie erstellen einen Feature-Extractor, indem Sie das vortrainierte Modell in hub.KerasLayer
einbetten, das ein TensorFlow SavedModel als Keras-Ebene umschließt. 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-Ebenenvektors, den Sie als Grundlage für Ihr Modell verwenden.
feature_extractor_model = "inception_v3"
Als Nächstes machen Sie diese Zelle zu einer Parameterzelle, damit Sie bei der Laufzeit einen Wert für feature_extractor_model
übergeben können.
Wählen Sie zuerst die Zelle aus und klicken Sie im rechten Steuerfeld auf das Property Inspector (Eigenschafteninspektor).
Mithilfe von Tags können Sie Ihrem Notebook ganz einfach Metadaten hinzufügen. Geben Sie „parameters“ in das Feld „Tag hinzufügen“ ein und drücken Sie die Eingabetaste. Später, wenn Sie die Ausführung konfigurieren, geben Sie die verschiedenen Werte ein, in diesem Fall das TensorFlow Hub-Modell, das Sie testen möchten. Sie müssen das Wort „Parameter“ eingeben und kein anderes Wort, da der Notebook-Ausführer so weiß, welche Zellen parametrisiert werden sollen.
Sie können den Property Inspector schließen, indem Sie erneut auf das doppelte Zahnradsymbol klicken.
Erstellen Sie eine neue Zelle und definieren Sie die tf_hub_uri
. Verwenden Sie dabei die Stringinterpolation, um den Namen des vorab trainierten Modells einzusetzen, das Sie als Basismodell für eine bestimmte Ausführung Ihres Notebooks verwenden möchten. Standardmäßig ist für feature_extractor_model
der Wert "inception_v3"
festgelegt. Andere gültige Werte sind jedoch "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-Extractor mit hub.KerasLayer
und geben Sie die oben definierte tf_hub_uri
ein. Legen Sie das Argument trainable=False
so fest, dass die Variablen fixiert werden, sodass beim Training nur die neue Klassifikatorebene geändert wird, die Sie oben hinzufügen.
feature_extractor_layer = hub.KerasLayer(
tf_hub_uri,
trainable=False)
Um das Modell fertigzustellen, verpacken Sie die Ebene für die Feature-Extraktion in ein tf.keras.Sequential
-Modell und fügen Sie eine vollverbundene Schicht 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 passen Sie das Modell an.
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.
Schritt 1: Trainingsjob konfigurieren
Geben Sie der Ausführung einen Namen und geben Sie einen Storage-Bucket in Ihrem Projekt an.
Legen Sie als Maschinentyp 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 feature_extractor_model=resnet_v2_50
in das Feld ein. Dadurch wird der Standardwert, den Sie für diesen Parameter im Notebook festgelegt haben, inception_v3
mit resnet_v2_50
überschrieben.
Sie können das Kästchen Standarddienstkonto verwenden angeklickt lassen.
Klicken Sie dann auf SENDEN.
Schritt 3: Ergebnisse prüfen
Auf dem Tab „Ausführungen“ in der Console-UI können Sie den Status Ihrer Notebook-Ausführung sehen.
Wenn Sie auf den Ausführungsnamen klicken, werden Sie zum Vertex AI Training-Job weitergeleitet, in dem Ihr Notebook ausgeführt wird.
Wenn der Job abgeschlossen ist, können Sie das Ausgabe-Notebook aufrufen, indem Sie auf ERGEBNIS ANSEHEN klicken.
Im Ausgabenotebook sehen Sie, dass der Wert für feature_extractor_model
durch den Wert überschrieben wurde, den Sie zur Laufzeit übergeben haben.
🎉 Glückwunsch! 🎉
Sie haben gelernt, wie Sie mit Vertex AI Workbench:
- Parameter in einem Notebook verwenden
- Notebookausführungen über die Vertex AI Workbench-UI konfigurieren und starten
Weitere Informationen zu den verschiedenen Teilen von Vertex AI finden Sie in der Dokumentation.
7. Bereinigen
Verwaltete Notebooks werden standardmäßig nach 180 Minuten Inaktivität automatisch heruntergefahren. Wenn Sie die Instanz manuell herunterfahren möchten, klicken Sie in der Console im Bereich „Vertex AI Workbench“ auf die Schaltfläche „Beenden“. Wenn Sie das Notizbuch vollständig löschen möchten, klicken Sie auf Löschen.
Wenn Sie den Storage-Bucket löschen möchten, gehen Sie im Navigationsmenü der Cloud Console zu „Storage“, wählen Sie den Bucket aus und klicken Sie auf „Löschen“: