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
  • Konfigurowanie i uruchamianie wykonania notatnika z poziomu interfejsu Vertex AI Workbench

Łączny koszt wykonania tego ćwiczenia 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 rozwiązania ML w Google Cloud, zapewniając bezproblemowe środowisko programistyczne. Wcześniej modele wytrenowane za pomocą AutoML i modele niestandardowe były dostępne za pomocą oddzielnych usług. Nowa oferta łączy oba te interfejsy API 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 zawiera wiele różnych usług, które obsługują kompleksowe przepływy pracy związane z systemami uczącymi się. 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 on badaczom danych nawiązywanie połączeń z usługami danych GCP, analizowanie zbiorów danych, eksperymentowanie z różnymi technikami modelowania, wdrażanie wytrenowanych modeli w produkcji oraz zarządzanie MLOps w trakcie 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. Korzystając z TensorFlow Hub, możesz eksperymentować z wektorami cech wyodrębnionymi z różnych architektur modeli, takich jak ResNet50, InceptionMobileNet, które zostały wstępnie wytrenowane na podstawie zbioru danych 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, oraz ponownie wytrenujesz ostatnią warstwę, aby rozpoznawała klasy ze zbioru danych DeepWeeds.

4. Konfigurowanie środowiska

Aby uruchomić to ćwiczenie, musisz mieć projekt Google Cloud Platform z włączonym rozliczeniem. Aby utworzyć projekt, postępuj zgodnie z tymi instrukcjami.

Krok 1. Włącz interfejs 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 interfejs Notebooks API, jeśli nie jest jeszcze włączony.

Notebook_api

Po włączeniu tej opcji kliknij ZARZĄDZANE NOTATKI:

Notebooks_UI

Następnie wybierz NOWY NOTATNIK.

new_notebook

Nadaj zeszytowi nazwę, a następnie 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

Gdy po raz pierwszy użyjesz nowego wystąpienia, pojawi się prośba 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 zawiera 17 509 obrazów przedstawiających 8 gatunków chwastów występujących w Australii. W tej sekcji napiszesz kod do wstępnego przetwarzania zbioru danych DeepWeeds oraz utworzysz i wytrenujesz model klasyfikacji obrazów za pomocą 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 o 255.

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żej zamieszczonym kodzie 80% tych danych będzie używane do trenowania, a pozostałe 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, czyli nazwę wektora cech TensorFlow Hub, który będzie podstawą Twojego modelu.

feature_extractor_model = "inception_v3"

Następnie uczynisz tę komórkę komórką parametru, co pozwoli Ci przekazać wartość parametru feature_extractor_model w czasie wykonywania.

Najpierw wybierz komórkę, a potem w panelu po prawej stronie kliknij narzędzie do inspekcji właściwości.

property_inspector

Tagi to prosty sposób na dodawanie metadanych do notatnika. Wpisz „parametry” w polu Dodaj tag i naciśnij klawisz 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 „parameters” (a nie żadne inne), ponieważ w ten sposób wykonawca notebooka wie, które komórki mają być parametryzowane.

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 zamrozić zmienne, dzięki czemu proces uczenia będzie modyfikował tylko nową warstwę klasyfikatora, którą dodasz na wierzchu.

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

Aby utworzyć model, owiń warstwę ekstraktora cech w modelu tf.keras.Sequential i dodaj pełną warstwę połączeń na potrzeby klasyfikacji. Liczba jednostek w tym elemencie 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ę Wykonawca.

wykonawca

Krok 1. Skonfiguruj zadanie trenowania

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

executor_config

Ustaw typ maszyny na 4 procesory, 15 GB pamięci RAM.

Dodaj 1 GPU NVIDIA.

Ustaw środowisko na TensorFlow Enterprise 2.6 (GPU).

Wybierz Jednorazowe wykonanie.

Krok 2. Skonfiguruj parametry

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

advanced_options

Możesz pozostawić zaznaczone pole Użyj domyślnego konta usługi.

Następnie kliknij PRZEŚLIJ.

Krok 3. Sprawdź wyniki

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

executions_UI

Jeśli klikniesz nazwę wykonania, otworzy się zadanie trenowania Vertex AI, w którym jest wykonywany Twój notebook.

vertex_training

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

view_result

W notatniku wyjściowym zobaczysz, że wartość feature_extractor_model została zastąpiona wartością przekazaną w czasie wykonywania.

param_cells

🎉 Gratulacje! 🎉

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

  • Używanie parametrów w notatniku
  • Konfigurowanie i uruchamianie wykonania notatnika z poziomu interfejsu Vertex AI Workbench

Więcej informacji o różnych elementach 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ąć zeszyt, kliknij przycisk Usuń.

usuń

Aby usunąć zasobnik Cloud Storage, w menu nawigacyjnym konsoli Cloud przejdź do usługi Storage, wybierz zasobnik i kliknij Usuń:

Usuwanie miejsca na dane