Vertex AI Workbench: tworzenie modelu klasyfikacji obrazów z użyciem systemów uczących się i wykonawcy notatnika

1. Omówienie

W tym module dowiesz się, jak skonfigurować i uruchamiać wykonania notatników przy użyciu Vertex AI Workbench.

Czego się nauczysz

Poznasz takie zagadnienia jak:

  • Używanie parametrów w notatniku
  • Skonfiguruj i uruchamiaj wykonania notatników z poziomu interfejsu użytkownika Vertex AI Workbench

Całkowity koszt uruchomienia tego modułu w Google Cloud wynosi około 2 USD.

2. Wprowadzenie do Vertex AI

W tym module wykorzystano najnowszą ofertę usług AI dostępną w Google Cloud. Vertex AI integruje ofertę systemów uczących się z całego Google Cloud, tworząc bezproblemowe środowisko programistyczne. Wcześniej modele wytrenowane z użyciem AutoML i modele niestandardowe były dostępne w oddzielnych usługach. Nowa oferta jest łączona w 1 interfejs API wraz z innymi nowymi usługami. Możesz też przenieść istniejące projekty do Vertex AI. Jeśli masz jakieś uwagi, odwiedź stronę pomocy.

Vertex AI obejmuje wiele różnych usług, które obsługują kompleksowe przepływy pracy ML. W tym module skupimy się na usłudze Vertex AI Workbench.

Vertex AI Workbench pomaga użytkownikom szybko tworzyć kompleksowe przepływy pracy oparte na notatnikach przez ścisłą integrację z usługami danych (takimi jak Dataproc, Dataflow, BigQuery i Dataplex) oraz Vertex AI. Umożliwia badaczom danych łączenie się z usługami danych GCP, analizowanie zbiorów danych, eksperymentowanie z różnymi technikami modelowania, wdrażanie wytrenowanych modeli w środowisku produkcyjnym i zarządzanie MLOps w całym cyklu życia modelu.

3. Omówienie przypadku użycia

W tym module nauczysz się, jak wytrenować model klasyfikacji obrazów w zbiorze danych DeepWeeds ze zbiorów danych TensorFlow. Wykorzystasz TensorFlow Hub do eksperymentowania z wektorami cech wyodrębnionymi z różnych architektur modeli, takich jak ResNet50, Inception i MobileNet. Wszystkie te są wstępnie wytrenowane na zbiorze danych porównawczym ImageNet. Wykorzystując wykonawcę notatnika za pomocą interfejsu użytkownika Vertex AI Workbench, uruchomisz zadania w Vertex AI Training, które korzystają z tych już wytrenowanych modeli, i ponownie wytrenujesz ostatnią warstwę, aby rozpoznawała klasy ze zbioru danych DeepWeeds.

4. Konfigurowanie środowiska

Aby uruchomić to ćwiczenia z programowania, musisz mieć projekt Google Cloud Platform z włączonymi płatnościami. Aby utworzyć projekt, postępuj zgodnie z tymi instrukcjami.

Krok 1. Włącz Compute Engine API

Przejdź do Compute Engine i wybierz opcję Włącz, jeśli nie jest jeszcze włączona.

Krok 2. Włącz interfejs Vertex AI API

Przejdź do sekcji Vertex AI w konsoli Cloud i kliknij Włącz interfejs Vertex AI API.

Panel Vertex AI

Krok 3. Utwórz instancję Vertex AI Workbench

W sekcji Vertex AI w konsoli Cloud kliknij Workbench:

Menu Vertex AI

Włącz Notebooks API, jeśli nie jest jeszcze włączone.

Notebook_api

Po włączeniu kliknij ZARZĄDZANE NOTATKI:

Notebooks_UI

Następnie wybierz NOWY NOTATNIK.

new_notebook

Nadaj notatnikowi nazwę i kliknij Ustawienia zaawansowane.

create_notebook

W sekcji Ustawienia zaawansowane włącz wyłączanie w trybie bezczynności i ustaw liczbę minut na 60. Oznacza to, że Twój notatnik automatycznie wyłączy się, gdy nie będzie używany, aby nie ponosić niepotrzebnych kosztów.

idle_timeout

Inne ustawienia zaawansowane możesz pozostawić bez zmian.

Następnie kliknij Utwórz.

Po utworzeniu instancji wybierz Otwórz JupyterLab.

open_jupyterlab

Przy pierwszym użyciu nowej instancji zobaczysz prośbę o uwierzytelnienie.

uwierzytelnij

Vertex AI Workbench ma warstwę zgodności obliczeniowej, która umożliwia uruchamianie jąder dla TensorFlow, PySpark, R itp. z poziomu jednej instancji notatnika. Po uwierzytelnieniu możesz wybrać w programie uruchamiającym typ notatnika, którego chcesz użyć.

Na potrzeby tego modułu wybierz jądro TensorFlow 2.

tf_kernel

5. Pisanie kodu trenowania

Zbiór danych DeepWeeds składa się z 17 509 zdjęć przedstawiających osiem różnych gatunków chwastów występujących w Australii. W tej sekcji napiszesz kod do wstępnego przetwarzania zbioru danych DeepWeeds oraz tworzenia i trenowania modelu klasyfikacji obrazów przy użyciu wektorów cech pobranych z TensorFlow Hub.

Musisz skopiować te fragmenty kodu do komórek w notatniku. Wykonywanie komórek jest opcjonalne.

Krok 1. Pobierz i wstępnie przetwórz zbiór danych

Najpierw zainstaluj nocną wersję zbiorów danych TensorFlow, aby mieć pewność, że pobieramy najnowszą wersję zbioru danych DeepWeeds.

!pip install tfds-nightly

Następnie zaimportuj potrzebne biblioteki:

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

Pobierz dane ze zbiorów danych TensorFlow i wyodrębnij liczbę klas oraz rozmiar zbioru danych.

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

Zdefiniuj funkcję wstępnego przetwarzania, aby skalować dane obrazu do 255 pikseli.

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

Zbiór danych DeepWeeds nie zawiera podziałów na trenowanie i weryfikację. Zawiera tylko zbiór danych treningowych. W poniższym kodzie użyjesz 80% tych danych do trenowania, a pozostałych 20% do walidacji.

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

Krok 2. Utwórz model

Po utworzeniu zbiorów danych do trenowania i walidacji możesz utworzyć model. TensorFlow Hub udostępnia wektory cech, czyli już wytrenowane modele bez najwyższej warstwy klasyfikacji. Aby utworzyć ekstraktor cech, opakuj już wytrenowany model za pomocą funkcji hub.KerasLayer, która opakuje TensorFlow SavedModel jako warstwę Keras. Następnie dodaj warstwę klasyfikacji i utwórz model za pomocą interfejsu Keras Sequential API.

Najpierw zdefiniuj parametr feature_extractor_model, który jest nazwą wektora cech TensorFlow Hub, którego użyjesz jako podstawy dla modelu.

feature_extractor_model = "inception_v3"

Następnie przypisz do tej komórki komórkę z parametrami, co pozwoli Ci na przekazanie wartości w polu feature_extractor_model w czasie działania.

Najpierw zaznacz komórkę i kliknij inspektora właściwości w prawym panelu.

property_inspector

Tagi to prosty sposób na dodawanie metadanych do notatnika. Wpisz „parametry” w polu Dodaj tag i naciśnij Enter. Później podczas konfigurowania wykonania przekażesz różne wartości, w tym przypadku model TensorFlow Hub, który chcesz przetestować. Pamiętaj, że musisz wpisać słowo „parametry” (i nie żadne inne słowo), ponieważ dzięki temu wykonawca notatnika wie, które komórki mają być dopasowywane do parametrów.

add_tag

Aby zamknąć inspektora nieruchomości, ponownie kliknij ikonę podwójnego koła zębatego.

Utwórz nową komórkę i zdefiniuj tf_hub_uri, w którym użyjesz interpolacji ciągów znaków, by zastąpić nazwę wytrenowanego modelu, którego chcesz używać jako modelu podstawowego do konkretnego wykonania notatnika. Domyślną wartością ustawienia feature_extractor_model jest "inception_v3", ale inne prawidłowe wartości to "resnet_v2_50" lub "mobilenet_v1_100_224". Dodatkowe opcje znajdziesz w katalogu TensorFlow Hub.

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

Następnie utwórz ekstraktor cech za pomocą narzędzia hub.KerasLayer i przekazuj w nim zdefiniowane powyżej pole tf_hub_uri. Ustaw argument trainable=False, aby zablokować zmienne tak, aby trenowanie zmieniało tylko nową warstwę klasyfikatorów, którą dodasz na górze.

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

Aby zakończyć model, opakuj warstwę wyodrębniania cech do modelu tf.keras.Sequential i dodaj w pełni połączoną warstwę do klasyfikacji. Liczba jednostek w tym nagłówku klasyfikacji powinna być równa liczbie klas w zbiorze danych:

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

Na koniec skompiluj i dopasuj model.

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. Wykonaj notatnik

U góry notatnika kliknij ikonę wykonawcy.

wykonawca

Krok 1. Skonfiguruj zadanie trenowania

Nazwij wykonanie i udostępnij zasobnik na dane w swoim projekcie.

executor_config

Ustaw typ maszyny na 4 CPU, 15 GB RAM.

Dodaj 1 GPU NVIDIA.

Ustaw środowisko na TensorFlow Enterprise 2.6 (GPU).

Wybierz Wykonanie jednorazowe.

Krok 2. Skonfiguruj parametry

Kliknij menu OPCJE ZAAWANSOWANE, aby ustawić parametr. W polu wpisz feature_extractor_model=resnet_v2_50. Spowoduje to zastąpienie wartości inception_v3, domyślnej wartości ustawionej dla tego parametru w notatniku, wartością resnet_v2_50.

advanced_options

Pole Użyj domyślnego konta usługi możesz pozostawić zaznaczone.

Następnie kliknij PRZEŚLIJ.

Krok 3. Sprawdź wyniki

Na karcie Uruchomienia w interfejsie konsoli możesz sprawdzić stan wykonywania notatnika.

executions_UI

Jeśli klikniesz nazwę wykonania, przejdziesz do zadania Vertex AI Training, w którym działa Twój notatnik.

vertex_training

Po zakończeniu zadania możesz wyświetlić notatnik wyjściowy, klikając WYŚWIETL WYNIK.

view_result

W notatniku wyjściowym zobaczysz, że wartość parametru feature_extractor_model została zastąpiona wartością podaną w czasie działania.

param_cells

🎉 Gratulacje! 🎉

Już wiesz, jak używać Vertex AI Workbench do:

  • Używanie parametrów w notatniku
  • Skonfiguruj i uruchamiaj wykonania notatników z poziomu interfejsu użytkownika Vertex AI Workbench

Więcej informacji o różnych częściach Vertex AI znajdziesz w dokumentacji.

7. Czyszczenie

Domyślnie zarządzane notatniki wyłączają się automatycznie po 180 minutach braku aktywności. Jeśli chcesz ręcznie wyłączyć instancję, kliknij przycisk Zatrzymaj w sekcji Vertex AI Workbench w konsoli. Jeśli chcesz całkowicie usunąć notatnik, kliknij przycisk Usuń.

usuń

Aby usunąć zasobnik na dane, w menu nawigacyjnym w konsoli Google Cloud otwórz Cloud Storage, wybierz swój zasobnik i kliknij Usuń:

Usuń miejsce na dane