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

Vertex AI Workbench:
tworzenie modelu klasyfikacji obrazów z użyciem uczenia przenoszonego i wykonawcy notatnika

Informacje o tym ćwiczeniu (w Codelabs)

subjectOstatnia aktualizacja: maj 23, 2022
account_circleAutorzy: Nikita Namjoshi

1. Omówienie

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

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 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 chcesz podzielić się opinią, 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, oraz 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 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 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 notebook automatycznie się wyłączy, gdy nie będzie używany, dzięki czemu nie poniesiesz 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 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 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 przeprowadź wstępne przetwarzanie zbioru danych

Najpierw zainstaluj wersję nocną 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łu na zbiory do trenowania i walidacji. 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 treningowych i weryfikacyjnych możesz tworzyć 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 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 dodawania metadanych do notatek. 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 ukończyć model, owiń warstwę ekstraktora cech w modelu tf.keras.Sequential i dodaj pełną warstwę połączeń na potrzeby 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. Wykonywanie notatnika

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