Vertex AI Workbench: создание модели классификации изображений с помощью трансферного обучения и исполнителя блокнотов.

1. Обзор

В этой лабораторной работе вы узнаете, как настраивать и запускать выполнение блокнотов с помощью Vertex AI Workbench.

Чему вы научитесь

Вы научитесь:

  • Использование параметров в блокноте
  • Настраивайте и запускайте выполнение блокнотов из пользовательского интерфейса Vertex AI Workbench.

Общая стоимость запуска этой лабораторной работы в Google Cloud составляет около 2 долларов .

2. Введение в Vertex AI

В этой лабораторной работе используется новейший продукт для искусственного интеллекта, доступный в Google Cloud. Vertex AI интегрирует предложения машинного обучения в Google Cloud в единый процесс разработки. Ранее модели, обученные с помощью AutoML, и пользовательские модели были доступны через отдельные сервисы. Новое предложение объединяет оба варианта в единый API, а также включает другие новые продукты. Вы также можете перенести существующие проекты в Vertex AI. Если у вас есть какие-либо замечания, пожалуйста, посетите страницу поддержки .

Vertex AI включает в себя множество различных продуктов для поддержки комплексных рабочих процессов машинного обучения. В этой лабораторной работе мы сосредоточимся на Vertex AI Workbench .

Vertex AI Workbench помогает пользователям быстро создавать комплексные рабочие процессы на основе блокнотов благодаря глубокой интеграции с сервисами данных (такими как Dataproc, Dataflow, BigQuery и Dataplex) и Vertex AI. Он позволяет специалистам по обработке данных подключаться к сервисам данных GCP, анализировать наборы данных, экспериментировать с различными методами моделирования, развертывать обученные модели в производственной среде и управлять операциями MLOps на протяжении всего жизненного цикла модели.

3. Обзор вариантов использования

В этой лабораторной работе вы будете использовать трансферное обучение для обучения модели классификации изображений на наборе данных DeepWeeds из TensorFlow Datasets . Вы будете использовать TensorFlow Hub для экспериментов с векторами признаков, извлеченными из различных архитектур моделей, таких как ResNet50 , Inception и MobileNet , предварительно обученных на эталонном наборе данных ImageNet . Используя исполнитель блокнотов через пользовательский интерфейс Vertex AI Workbench, вы будете запускать задания в Vertex AI Training, которые используют эти предварительно обученные модели и переобучают последний слой для распознавания классов из набора данных DeepWeeds.

4. Настройте свою среду.

Для выполнения этого практического задания вам потребуется проект Google Cloud Platform с включенной функцией оплаты. Чтобы создать проект, следуйте инструкциям здесь .

Шаг 1: Включите API Compute Engine.

Перейдите в раздел Compute Engine и выберите «Включить», если эта функция еще не включена.

Шаг 2: Включите API Vertex AI

Перейдите в раздел Vertex AI в вашей облачной консоли и нажмите «Включить API Vertex AI» .

Панель мониторинга Vertex AI

Шаг 3: Создайте экземпляр Vertex AI Workbench.

В разделе Vertex AI вашей облачной консоли нажмите на Workbench:

Меню Vertex AI

Включите API для блокнотов, если он еще не включен.

Notebook_api

После включения нажмите «УПРАВЛЯЕМЫЕ ЗАПИСНЫЕ КНИЖКИ» :

Notebooks_UI

Затем выберите «Создать новый блокнот» .

новый_ноутбук

Присвойте своему блокноту имя, а затем нажмите «Дополнительные настройки» .

создать_блокнот

В разделе «Дополнительные настройки» включите функцию автоматического выключения в режиме ожидания и установите количество минут равным 60. Это означает, что ваш ноутбук будет автоматически выключаться, когда не используется, чтобы избежать лишних расходов.

idle_timeout

Все остальные расширенные настройки можно оставить без изменений.

Далее нажмите «Создать» .

После создания экземпляра выберите «Открыть JupyterLab» .

open_jupyterlab

При первом использовании нового экземпляра вам будет предложено пройти аутентификацию.

аутентифицировать

Vertex AI Workbench имеет слой совместимости вычислительных ресурсов, который позволяет запускать ядра для TensorFlow, PySpark, R и т.д. из одного экземпляра ноутбука. После аутентификации вы сможете выбрать тип ноутбука, который хотите использовать, в меню запуска.

Для выполнения этой лабораторной работы выберите ядро ​​TensorFlow 2.

tf_kernel

5. Напишите код для обучения.

Набор данных DeepWeeds состоит из 17 509 изображений восьми различных видов сорняков, произрастающих в Австралии. В этом разделе вы напишете код для предварительной обработки набора данных DeepWeeds, а также для построения и обучения модели классификации изображений с использованием векторов признаков, загруженных из TensorFlow Hub.

Вам потребуется скопировать следующие фрагменты кода в ячейки вашего блокнота. Выполнение этих ячеек необязательно.

Шаг 1: Загрузка и предварительная обработка набора данных.

Сначала установите ночную версию наборов данных TensorFlow, чтобы убедиться, что мы используем последнюю версию набора данных DeepWeeds.

!pip install tfds-nightly

Затем импортируйте необходимые библиотеки:

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

Загрузите данные из TensorFlow Datasets и извлеките количество классов и размер набора данных.

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

Определите функцию предварительной обработки для масштабирования данных изображения в 255 раз.

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

В наборе данных DeepWeeds нет разделения на обучающую и валидационную выборки. Он содержит только обучающий набор данных. В приведенном ниже коде вы будете использовать 80% этих данных для обучения, а оставшиеся 20% — для валидации.

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

Шаг 2: Создание модели

Теперь, когда вы создали обучающие и проверочные наборы данных, вы готовы построить свою модель. TensorFlow Hub предоставляет векторы признаков, которые представляют собой предварительно обученные модели без верхнего слоя классификации. Вы создадите экстрактор признаков, обернув предварительно обученную модель с помощью hub.KerasLayer , который оборачивает TensorFlow SavedModel в качестве слоя Keras. Затем вы добавите слой классификации и создадите модель с помощью API Keras Sequential.

Сначала определите параметр feature_extractor_model , который представляет собой имя вектора признаков TensorFlow Hub, который вы будете использовать в качестве основы для вашей модели.

feature_extractor_model = "inception_v3"

Далее вы сделаете эту ячейку ячейкой параметров, что позволит вам передавать значение для feature_extractor_model во время выполнения.

Сначала выберите ячейку и нажмите на значок инспектора свойств на правой панели.

инспектор недвижимости

Теги — это простой способ добавить метаданные в ваш блокнот. Введите «parameters» в поле «Добавить тег» и нажмите Enter. Позже, при настройке выполнения, вы передадите различные значения, в данном случае модель TensorFlow Hub, которую хотите протестировать. Обратите внимание, что вы должны ввести слово «parameters» (а не любое другое слово), поскольку именно так исполнитель блокнота узнает, какие ячейки нужно параметризовать.

add_tag

Закрыть окно проверки недвижимости можно, снова нажав на значок с двумя шестереночными цифрами.

Создайте новую ячейку и определите tf_hub_uri , где вы будете использовать строковую интерполяцию для подстановки имени предварительно обученной модели, которую вы хотите использовать в качестве базовой модели для конкретного выполнения вашего ноутбука. По умолчанию вы установили feature_extractor_model в значение "inception_v3" , но допустимыми значениями могут быть и "resnet_v2_50" или "mobilenet_v1_100_224" . Вы можете изучить дополнительные параметры в каталоге TensorFlow Hub .

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

Далее создайте экстрактор признаков, используя hub.KerasLayer и передав в него определенный выше tf_hub_uri . Установите аргумент trainable=False чтобы зафиксировать переменные, и обучение будет изменять только новый слой классификатора, который вы добавите сверху.

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

Для завершения модели оберните слой извлечения признаков в модель tf.keras.Sequential и добавьте полносвязный слой для классификации. Количество нейронов в этом классификационном слое должно быть равно количеству классов в наборе данных:

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

Наконец, скомпилируйте и подгоните модель.

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. Запустить блокнот

Нажмите на значок «Исполнитель» в верхней части блокнота.

исполнитель

Шаг 1: Настройка задания обучения

Присвойте исполняемому файлу имя и укажите хранилище данных в вашем проекте.

executor_config

Установите тип машины на 4 процессора, 15 ГБ оперативной памяти .

И добавьте 1 графический процессор NVIDIA .

Установите среду на TensorFlow Enterprise 2.6 (GPU).

Выберите «Одноразовое исполнение».

Шаг 2: Настройка параметров

Щелкните раскрывающийся список «РАСШИРЕННЫЕ ПАРАМЕТРЫ» , чтобы задать параметр. В поле введите feature_extractor_model=resnet_v2_50 . Это заменит значение inception_v3 , установленное вами по умолчанию для этого параметра в блокноте, на resnet_v2_50 .

расширенные_опции

Вы можете оставить флажок « Использовать учетную запись службы по умолчанию» установленным.

Затем нажмите ОТПРАВИТЬ

Шаг 3: Анализ результатов

На вкладке «Выполнения» в интерфейсе консоли вы сможете увидеть статус выполнения вашего блокнота.

executions_UI

Если вы щёлкнете по названию выполнения, вы перейдёте к заданию обучения Vertex AI, в котором запущен ваш ноутбук.

вершинное_обучение

После завершения работы вы сможете просмотреть итоговый блокнот, нажав кнопку «ПОСМОТРЕТЬ РЕЗУЛЬТАТ» .

view_result

В итоговом блокноте вы увидите, что значение параметра feature_extractor_model было перезаписано значением, переданным вами во время выполнения.

param_cells

🎉 Поздравляем! 🎉

Вы научились использовать Vertex AI Workbench для:

  • Использование параметров в блокноте
  • Настраивайте и запускайте выполнение блокнотов из пользовательского интерфейса Vertex AI Workbench.

Чтобы узнать больше о различных компонентах Vertex AI, ознакомьтесь с документацией .

7. Уборка

По умолчанию управляемые ноутбуки автоматически завершают работу через 180 минут бездействия. Если вы хотите вручную остановить экземпляр, нажмите кнопку «Стоп» в разделе Vertex AI Workbench в консоли. Если вы хотите полностью удалить ноутбук, нажмите кнопку «Удалить».

удалить

Чтобы удалить сегмент хранилища, воспользуйтесь меню навигации в облачной консоли, перейдите в раздел «Хранилище», выберите свой сегмент и нажмите «Удалить».

Удалить хранилище